//----- (0000000000AE6F58) ----------------------------------------------------
void __fastcall CParserForPCParam::yyaction(CParserForPCParam *this, int action)
{
int edx8; // edx
int edx9; // edx
int v5; // edx
int v6; // edx
int v7; // edx
wchar_t *v8; // rdx
int v9; // edx
int v10; // edx
int v11; // edx
int v12; // edx
int v13; // edx
int v14; // edx
std::vector<double,std::xallocator<double> > *p_DoubleVector; // rcx
_QWORD *v16; // rax
_QWORD *v17; // rcx
__int64 v18; // rdx
_QWORD *v19; // rax
_QWORD *yyvalptr; // rcx
int yytop; // edx
_QWORD *yyattributestackptr; // r8
__int64 v23; // r15
long double *Myfirst; // rax
long double *v25; // rax
long double *v26; // rax
wchar_t *v27; // rax
int v28; // edx
int v29; // edx
int v30; // edx
int v31; // edx
int v32; // edx
int v33; // edx
int v34; // edx
int v35; // edx
int v36; // edx
int v37; // edx
int v38; // edx
int v39; // edx
int v40; // edx
int v41; // edx
int v42; // edx
int v43; // edx
int v44; // edx
wchar_t *v45; // rdx
int v46; // edx
int v47; // edx
int v48; // edx
int v49; // edx
int v50; // edx
double v51; // xmm2_8
MoveModeEnum v52; // edx
PCParamFieldByLevel v53; // r8d
__int64 v54; // rcx
int v55; // eax
PCParamFieldByLevel v56; // r8d
PCParamFieldByLevel v57; // r9d
int v58; // edx
int v59; // edx
int v60; // edx
int v61; // edx
int v62; // edx
int v63; // edx
int v64; // ecx
double *v65; // rbx
long double v66; // xmm0_8
MoveModeEnum v67; // edx
int v68; // ecx
double *v69; // rbx
long double v70; // xmm0_8
MoveModeEnum v71; // edx
int v72; // edx
int v73; // edx
int v74; // edx
int v75; // edx
int v76; // edx
int v77; // ecx
double *v78; // rbx
long double v79; // xmm0_8
MoveModeEnum v80; // edx
__int64 field; // [rsp+20h] [rbp-88h]
__int64 value_8; // [rsp+30h] [rbp-78h]
__int64 v3; // [rsp+38h] [rbp-70h]
__int64 v4; // [rsp+40h] [rbp-68h]
__int64 v4_8; // [rsp+48h] [rbp-60h]
SRCToSexRaceClass v86; // [rsp+78h] [rbp-30h]
SRCToSexRaceClass v87; // [rsp+78h] [rbp-30h]
if ( action <= 30 )
{
if ( action == 30 )
{
v8 = (wchar_t *)L"men_bonus";
goto LABEL_21;
}
if ( action > 15 )
{
if ( action <= 23 )
{
if ( action == 23 )
{
v8 = (wchar_t *)L"pc_breath_bonus_table";
goto LABEL_21;
}
v28 = action - 16;
if ( !v28 )
{
v8 = (wchar_t *)L"base_attack_type";
goto LABEL_21;
}
v29 = v28 - 1;
if ( !v29 )
{
v8 = (wchar_t *)L"base_attack_speed";
goto LABEL_21;
}
v30 = v29 - 1;
if ( !v30 )
{
v8 = (wchar_t *)L"base_magic_attack";
goto LABEL_21;
}
v31 = v30 - 1;
if ( !v31 )
{
v8 = (wchar_t *)L"base_can_penetrate";
goto LABEL_21;
}
v32 = v31 - 1;
if ( !v32 )
{
v8 = (wchar_t *)L"base_attack_range";
goto LABEL_21;
}
v33 = v32 - 1;
if ( !v33 )
{
v8 = (wchar_t *)L"base_rand_dam";
goto LABEL_21;
}
if ( v33 == 1 )
{
v8 = (wchar_t *)L"org_jump";
goto LABEL_21;
}
return;
}
v34 = action - 24;
if ( v34 )
{
v35 = v34 - 1;
if ( v35 )
{
v36 = v35 - 1;
if ( !v36 )
{
v8 = (wchar_t *)L"level_bonus";
goto LABEL_21;
}
v37 = v36 - 1;
if ( !v37 )
{
v8 = (wchar_t *)L"str_bonus";
goto LABEL_21;
}
v38 = v37 - 1;
if ( !v38 )
{
v8 = (wchar_t *)L"int_bonus";
goto LABEL_21;
}
if ( v38 == 1 )
{
v8 = (wchar_t *)L"con_bonus";
goto LABEL_21;
}
}
else
{
v87 = _srcTable[*((_QWORD *)this->yyattributestackptr + this->yytop - 2)];
if ( !wcscmp(this->parsing_context, L"base_physical_attack") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_PATTACK,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_critical") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_CRITICAL,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_attack_type") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_ATTACK_TYPE,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_attack_speed") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_ATTACK_SPEED,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_defend") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_PDEFEND,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_magic_attack") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_MATTACK,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_magic_defend") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_MDEFEND,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_can_penetrate") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_CAN_PENETRATE,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_attack_range") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_ATTACK_RANGE,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"base_rand_dam") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BASE_RAND_DAM,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"org_jump") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_ORG_JUMP,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"pc_breath_bonus_table") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_BREATH_BONUS,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else if ( !wcscmp(this->parsing_context, L"pc_safe_fall_height_table") )
{
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v87.sex,
v87.race,
v87.cls,
PC_SAFE_FALL_HEIGHT,
(int)*((double *)this->yyattributestackptr + this->yytop));
}
else
{
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"[%s][%d] Invalide parsing_context[%s]",
L"pc_param_yacc.y",
637,
this->parsing_context);
}
}
return;
}
v27 = (wchar_t *)L"pc_safe_fall_height_table";
}
else
{
if ( action == 15 )
{
v8 = (wchar_t *)L"base_critical";
goto LABEL_21;
}
if ( action <= 7 )
{
if ( action == 7 )
{
v8 = (wchar_t *)L"base_defend";
}
else if ( action )
{
edx8 = action - 1;
if ( edx8 )
{
edx9 = edx8 - 1;
if ( edx9 )
{
v5 = edx9 - 1;
if ( v5 )
{
v6 = v5 - 1;
if ( v6 )
{
v7 = v6 - 1;
if ( v7 )
{
if ( v7 != 1 )
return;
v8 = (wchar_t *)L"org_cp_regen";
}
else
{
v8 = (wchar_t *)L"org_mp_regen";
}
}
else
{
v8 = (wchar_t *)L"org_hp_regen";
}
}
else
{
v8 = (wchar_t *)L"base_damage_range";
}
}
else
{
v8 = (wchar_t *)L"initial_highest_attribute";
}
}
else
{
v8 = (wchar_t *)L"initial_lowest_attribute";
}
}
else
{
v8 = (wchar_t *)L"initial_default_attribute";
}
goto LABEL_21;
}
v9 = action - 8;
if ( !v9 )
{
v8 = (wchar_t *)L"base_magic_defend";
goto LABEL_21;
}
v10 = v9 - 1;
if ( v10 )
{
v11 = v10 - 1;
if ( v11 )
{
v12 = v11 - 1;
if ( !v12 )
{
yytop = this->yytop;
yyattributestackptr = this->yyattributestackptr;
v23 = yyattributestackptr[yytop - 1];
v86 = _srcTable[yyattributestackptr[yytop - 4]];
if ( !wcscmp(this->parsing_context, L"initial_default_attribute") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 6 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], initial_default_attribute int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_INT_DEFAULT,
(int)*this->DoubleVector._Mypair._Myval2._Myfirst);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_STR_DEFAULT,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 1));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_CON_DEFAULT,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 2));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_MEN_DEFAULT,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 3));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_DEX_DEFAULT,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 4));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_WIT_DEFAULT,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 5));
}
else if ( !wcscmp(this->parsing_context, L"initial_lowest_attribute") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 6 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], initial_lowest_attribute int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_INT_MIN,
(int)*this->DoubleVector._Mypair._Myval2._Myfirst);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_STR_MIN,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 1));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_CON_MIN,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 2));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_MEN_MIN,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 3));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_DEX_MIN,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 4));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_WIT_MIN,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 5));
}
else if ( !wcscmp(this->parsing_context, L"initial_highest_attribute") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 6 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], initial_highest_attribute int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_INT_MAX,
(int)*this->DoubleVector._Mypair._Myval2._Myfirst);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_STR_MAX,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 1));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_CON_MAX,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 2));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_MEN_MAX,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 3));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_DEX_MAX,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 4));
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_WIT_MAX,
(int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 5));
}
else if ( !wcscmp(this->parsing_context, L"base_damage_range") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 4 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], base_damage_range int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
Myfirst = this->DoubleVector._Mypair._Myval2._Myfirst;
LODWORD(v4) = (int)Myfirst[3];
LODWORD(v3) = (int)Myfirst[2];
LODWORD(value_8) = (int)Myfirst[1];
LODWORD(field) = 27;
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
field,
(int)*Myfirst,
value_8,
v3,
v4,
v4_8);
}
else if ( !wcscmp(this->parsing_context, L"org_hp_regen") )
{
if ( (unsigned __int64)(this->DoubleVector._Mypair._Myval2._Mylast
- this->DoubleVector._Mypair._Myval2._Myfirst) > 0x79 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], org_hp_regen int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
LODWORD(field) = 29;
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
field,
*((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 1));
}
else if ( !wcscmp(this->parsing_context, L"org_cp_regen") )
{
if ( (unsigned __int64)(this->DoubleVector._Mypair._Myval2._Mylast
- this->DoubleVector._Mypair._Myval2._Myfirst) > 0x79 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], org_cp_regen int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
LODWORD(field) = 31;
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
field,
*((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 1));
}
else if ( !wcscmp(this->parsing_context, L"org_mp_regen") )
{
if ( (unsigned __int64)(this->DoubleVector._Mypair._Myval2._Mylast
- this->DoubleVector._Mypair._Myval2._Myfirst) > 0x79 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], org_mp_regen int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
LODWORD(field) = 30;
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
field,
*((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 1));
}
else if ( !wcscmp(this->parsing_context, L"moving_speed") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 8 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], moving_speed int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
v25 = this->DoubleVector._Mypair._Myval2._Myfirst;
LODWORD(v4_8) = (int)v25[4];
LODWORD(v4) = (int)v25[3];
LODWORD(v3) = (int)v25[2];
LODWORD(value_8) = (int)v25[1];
LODWORD(field) = 32;
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
field,
(int)*v25,
value_8,
v3,
v4,
v4_8,
(int)v25[5],
(int)v25[6],
(int)v25[7]);
}
else if ( !wcscmp(this->parsing_context, L"pc_collision_box_table") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 2 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], pc_collision_box_table int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_COLLISION_BOX,
*this->DoubleVector._Mypair._Myval2._Myfirst,
this->DoubleVector._Mypair._Myval2._Myfirst[1]);
}
else if ( !wcscmp(this->parsing_context, L"base_defend") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 7 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], org_hp_regen int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
v26 = this->DoubleVector._Mypair._Myval2._Myfirst;
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_BASE_PDEFEND,
*v26,
v26[1],
v26[2],
v26[3],
v26[4],
v26[5],
v26[6]);
}
else if ( !wcscmp(this->parsing_context, L"base_magic_defend") )
{
if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 5 )
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"%s line[%d], org_hp_regen int counter is different",
g_DataScriptFile_106[56],
this->m_lexer.line);
CPCParamDB::SetValueBySRC(
&g_PCParamDB,
v86.sex,
v86.race,
v86.cls,
PC_BASE_MDEFEND,
*this->DoubleVector._Mypair._Myval2._Myfirst,
this->DoubleVector._Mypair._Myval2._Myfirst[1],
this->DoubleVector._Mypair._Myval2._Myfirst[2],
this->DoubleVector._Mypair._Myval2._Myfirst[3],
this->DoubleVector._Mypair._Myval2._Myfirst[4],
0.0,
0.0);
}
else
{
CLog::Add(
&Log,
LOG_ERROR,
(wchar_t *)L"[%s][%d] Invalide parsing_context[%s]",
L"pc_param_yacc.y",
452,
this->parsing_context);
}
if ( v23 )
{
if ( *(_QWORD *)v23 )
{
Memory::Free(&g_Memory, *(void **)v23, 1);
*(_QWORD *)v23 = 0i64;
*(_QWORD *)(v23 + 8) = 0i64;
*(_QWORD *)(v23 + 16) = 0i64;
}
operator delete((void *)v23, 0x18ui64);
}
return;
}
v13 = v12 - 1;
if ( v13 )
{
v14 = v13 - 1;
if ( v14 )
{
if ( v14 == 1 )
{
v8 = (wchar_t *)L"base_physical_attack";
LABEL_21:
this->parsing_context = v8;
return;
}
}
else
{
p_DoubleVector = &this->DoubleVector;
p_DoubleVector->_Mypair._Myval2._Mylast = p_DoubleVector->_Mypair._Myval2._Myfirst;
std::vector<double,std::xallocator<double>>::push_back(
p_DoubleVector,
(long double *)this->yyattributestackptr + this->yytop);
v16 = operator new(0x18ui64);
v17 = v16;
if ( v16 )
{
*v16 = 0i64;
v16[1] = 0i64;
v16[2] = 0i64;
}
else
{
v17 = 0i64;
}
*(_QWORD *)this->yyvalptr = v17;
std::vector<double,std::xallocator<double>>::push_back(
*(std::vector<double,std::xallocator<double> > **)this->yyvalptr,
(long double *)this->yyattributestackptr + this->yytop);
}
return;
}
std::vector<double,std::xallocator<double>>::push_back(
&this->DoubleVector,
(long double *)this->yyattributestackptr + this->yytop);
std::vector<double,std::xallocator<double>>::push_back(
*((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 2),
(long double *)this->yyattributestackptr + this->yytop);
v18 = this->yytop - 2;
v19 = this->yyattributestackptr;
yyvalptr = this->yyvalptr;
LABEL_36:
*yyvalptr = v19[v18];
return;
}
v27 = (wchar_t *)L"pc_collision_box_table";
}
else
{
v27 = (wchar_t *)L"moving_speed";
}
}
LABEL_91:
this->parsing_context = v27;
return;
}
if ( action > 45 )
{
if ( action > 53 )
{
v72 = action - 54;
if ( v72 )
{
v73 = v72 - 1;
if ( v73 )
{
v74 = v73 - 1;
if ( v74 )
{
v75 = v74 - 1;
if ( v75 )
{
v76 = v75 - 23;
if ( !v76 )
{
*(double *)this->yyvalptr = (double)(int)*((_QWORD *)this->yyattributestackptr + this->yytop);
return;
}
if ( v76 != 1 )
return;
v18 = this->yytop;
v19 = this->yyattributestackptr;
yyvalptr = this->yyvalptr;
goto LABEL_36;
}
v77 = this->yytop;
v78 = (double *)this->yyattributestackptr;
v79 = v78[v77 - 1];
v80 = MVMD_RUN;
}
else
{
v77 = this->yytop;
v78 = (double *)this->yyattributestackptr;
v79 = v78[v77 - 1];
v80 = MVMD_WALK;
}
}
else
{
v77 = this->yytop;
v78 = (double *)this->yyattributestackptr;
v79 = v78[v77 - 1];
v80 = MVMD_STAND;
}
}
else
{
v77 = this->yytop;
v78 = (double *)this->yyattributestackptr;
v79 = v78[v77 - 1];
v80 = MVMD_SIT;
}
CPCParamDB::SetRegenMoveModeCPBonus(
&g_PCParamDB,
v80,
v78[v77 - 11],
v78[v77 - 9],
v78[v77 - 7],
v78[v77 - 5],
v78[v77 - 3],
v79);
return;
}
if ( action != 53 )
{
v58 = action - 46;
if ( v58 )
{
v59 = v58 - 1;
if ( v59 )
{
v60 = v59 - 1;
if ( v60 )
{
v61 = v60 - 1;
if ( v61 )
{
v62 = v61 - 1;
if ( v62 )
{
v63 = v62 - 1;
if ( v63 )
{
if ( v63 != 1 )
return;
v64 = this->yytop;
v65 = (double *)this->yyattributestackptr;
v66 = v65[v64 - 1];
v67 = MVMD_WALK;
}
else
{
v64 = this->yytop;
v65 = (double *)this->yyattributestackptr;
v66 = v65[v64 - 1];
v67 = MVMD_STAND;
}
}
else
{
v64 = this->yytop;
v65 = (double *)this->yyattributestackptr;
v66 = v65[v64 - 1];
v67 = MVMD_SIT;
}
goto LABEL_227;
}
v68 = this->yytop;
v69 = (double *)this->yyattributestackptr;
v70 = v69[v68 - 1];
v71 = MVMD_RUN;
}
else
{
v68 = this->yytop;
v69 = (double *)this->yyattributestackptr;
v70 = v69[v68 - 1];
v71 = MVMD_WALK;
}
}
else
{
v68 = this->yytop;
v69 = (double *)this->yyattributestackptr;
v70 = v69[v68 - 1];
v71 = MVMD_STAND;
}
}
else
{
v68 = this->yytop;
v69 = (double *)this->yyattributestackptr;
v70 = v69[v68 - 1];
v71 = MVMD_SIT;
}
CPCParamDB::SetRegenMoveModeHPBonus(
&g_PCParamDB,
v71,
v69[v68 - 11],
v69[v68 - 9],
v69[v68 - 7],
v69[v68 - 5],
v69[v68 - 3],
v70);
return;
}
v64 = this->yytop;
v65 = (double *)this->yyattributestackptr;
v66 = v65[v64 - 1];
v67 = MVMD_RUN;
LABEL_227:
CPCParamDB::SetRegenMoveModeMPBonus(
&g_PCParamDB,
v67,
v65[v64 - 11],
v65[v64 - 9],
v65[v64 - 7],
v65[v64 - 5],
v65[v64 - 3],
v66);
return;
}
if ( action == 45 )
{
v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
v52 = MVMD_RUN;
LABEL_180:
CPCParamDB::SetRegenMoveModeBonus(&g_PCParamDB, v52, v51 / 100.0);
return;
}
if ( action <= 38 )
{
if ( action == 38 )
{
v8 = (wchar_t *)L"pc_karma_increase_table";
goto LABEL_21;
}
v39 = action - 31;
if ( !v39 )
{
v8 = (wchar_t *)L"dex_bonus";
goto LABEL_21;
}
v40 = v39 - 1;
if ( !v40 )
{
v8 = (wchar_t *)L"wit_bonus";
goto LABEL_21;
}
v41 = v40 - 1;
if ( !v41 )
{
v8 = (wchar_t *)L"luc_bonus";
goto LABEL_21;
}
v42 = v41 - 1;
if ( !v42 )
{
v8 = (wchar_t *)L"cha_bonus";
goto LABEL_21;
}
v43 = v42 - 1;
if ( v43 )
{
v44 = v43 - 1;
if ( v44 )
{
if ( v44 != 1 )
return;
v45 = (wchar_t *)L"cp_table";
}
else
{
v45 = (wchar_t *)L"mp_table";
}
}
else
{
v45 = (wchar_t *)L"hp_table";
}
this->parsing_class = *((_DWORD *)this->yyattributestackptr + 2 * this->yytop);
this->parsing_context = v45;
return;
}
v46 = action - 39;
if ( !v46 )
{
v27 = (wchar_t *)L"pc_standard_exp_by_level_table";
goto LABEL_91;
}
v47 = v46 - 1;
if ( !v47 )
{
if ( !wcscmp(this->parsing_context, L"level_bonus") )
{
v54 = this->yytop;
v55 = v54 - 2;
v56 = PC_LEVEL_BONUS;
goto LABEL_209;
}
if ( !wcscmp(this->parsing_context, L"hp_table") )
{
v57 = PC_ORG_HP;
}
else if ( !wcscmp(this->parsing_context, L"mp_table") )
{
v57 = PC_ORG_MP;
}
else
{
if ( wcscmp(this->parsing_context, L"cp_table") )
{
if ( wcscmp(this->parsing_context, L"pc_karma_increase_table") )
{
if ( !wcscmp(this->parsing_context, L"pc_standard_exp_by_level_table") )
CPCParamDB::SetStandardExpByLevel(
&g_PCParamDB,
*((_DWORD *)this->yyattributestackptr + 2 * this->yytop - 4),
PC_STANDARD_EXP_BY_LEV,
(unsigned int)(int)*((double *)this->yyattributestackptr + this->yytop));
else
CLog::Add(&Log, LOG_ERROR, (wchar_t *)L"Invalide parsing_context[%s]", this->parsing_context);
return;
}
v54 = this->yytop;
v55 = v54 - 2;
v56 = PC_KARMA_INCREASE;
LABEL_209:
CPCParamDB::SetValueByLevel(
&g_PCParamDB,
*((_DWORD *)this->yyattributestackptr + 2 * v55),
v56,
*((long double *)this->yyattributestackptr + v54));
return;
}
v57 = PC_ORG_CP;
}
CPCParamDB::SetValueByLevelClass(
&g_PCParamDB,
*((_DWORD *)this->yyattributestackptr + 2 * this->yytop - 4),
(ClassType)this->parsing_class,
v57,
*((long double *)this->yyattributestackptr + this->yytop));
return;
}
v48 = v47 - 1;
if ( v48 )
{
v49 = v48 - 1;
if ( v49 )
{
v50 = v49 - 1;
if ( v50 )
{
if ( v50 != 1 )
return;
v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
v52 = MVMD_WALK;
}
else
{
v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
v52 = MVMD_STAND;
}
}
else
{
v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
v52 = MVMD_SIT;
}
goto LABEL_180;
}
if ( !wcscmp(this->parsing_context, L"str_bonus") )
{
v53 = PC_STR_BONUS;
}
else if ( !wcscmp(this->parsing_context, L"int_bonus") )
{
v53 = PC_INT_BONUS;
}
else if ( !wcscmp(this->parsing_context, L"con_bonus") )
{
v53 = PC_CON_BONUS;
}
else if ( !wcscmp(this->parsing_context, L"men_bonus") )
{
v53 = PC_MEN_BONUS;
}
else if ( !wcscmp(this->parsing_context, L"dex_bonus") )
{
v53 = PC_DEX_BONUS;
}
else if ( !wcscmp(this->parsing_context, L"wit_bonus") )
{
v53 = PC_WIT_BONUS;
}
else if ( !wcscmp(this->parsing_context, L"luc_bonus") )
{
v53 = PC_LUC_BONUS;
}
else
{
if ( wcscmp(this->parsing_context, L"cha_bonus") )
return;
v53 = PC_CHA_BONUS;
}
CPCParamDB::SetValueByLevel(
&g_PCParamDB,
*((_DWORD *)this->yyattributestackptr + 2 * this->yytop - 4),
v53,
(int)*((double *)this->yyattributestackptr + this->yytop));
}