Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. //----- (0000000000AE6F58) ----------------------------------------------------
  2. void __fastcall CParserForPCParam::yyaction(CParserForPCParam *this, int action)
  3. {
  4.   int edx8; // edx
  5.   int edx9; // edx
  6.   int v5; // edx
  7.   int v6; // edx
  8.   int v7; // edx
  9.   wchar_t *v8; // rdx
  10.   int v9; // edx
  11.   int v10; // edx
  12.   int v11; // edx
  13.   int v12; // edx
  14.   int v13; // edx
  15.   int v14; // edx
  16.   std::vector<double,std::xallocator<double> > *p_DoubleVector; // rcx
  17.   _QWORD *v16; // rax
  18.   _QWORD *v17; // rcx
  19.   __int64 v18; // rdx
  20.   _QWORD *v19; // rax
  21.   _QWORD *yyvalptr; // rcx
  22.   int yytop; // edx
  23.   _QWORD *yyattributestackptr; // r8
  24.   __int64 v23; // r15
  25.   long double *Myfirst; // rax
  26.   long double *v25; // rax
  27.   long double *v26; // rax
  28.   wchar_t *v27; // rax
  29.   int v28; // edx
  30.   int v29; // edx
  31.   int v30; // edx
  32.   int v31; // edx
  33.   int v32; // edx
  34.   int v33; // edx
  35.   int v34; // edx
  36.   int v35; // edx
  37.   int v36; // edx
  38.   int v37; // edx
  39.   int v38; // edx
  40.   int v39; // edx
  41.   int v40; // edx
  42.   int v41; // edx
  43.   int v42; // edx
  44.   int v43; // edx
  45.   int v44; // edx
  46.   wchar_t *v45; // rdx
  47.   int v46; // edx
  48.   int v47; // edx
  49.   int v48; // edx
  50.   int v49; // edx
  51.   int v50; // edx
  52.   double v51; // xmm2_8
  53.   MoveModeEnum v52; // edx
  54.   PCParamFieldByLevel v53; // r8d
  55.   __int64 v54; // rcx
  56.   int v55; // eax
  57.   PCParamFieldByLevel v56; // r8d
  58.   PCParamFieldByLevel v57; // r9d
  59.   int v58; // edx
  60.   int v59; // edx
  61.   int v60; // edx
  62.   int v61; // edx
  63.   int v62; // edx
  64.   int v63; // edx
  65.   int v64; // ecx
  66.   double *v65; // rbx
  67.   long double v66; // xmm0_8
  68.   MoveModeEnum v67; // edx
  69.   int v68; // ecx
  70.   double *v69; // rbx
  71.   long double v70; // xmm0_8
  72.   MoveModeEnum v71; // edx
  73.   int v72; // edx
  74.   int v73; // edx
  75.   int v74; // edx
  76.   int v75; // edx
  77.   int v76; // edx
  78.   int v77; // ecx
  79.   double *v78; // rbx
  80.   long double v79; // xmm0_8
  81.   MoveModeEnum v80; // edx
  82.   __int64 field; // [rsp+20h] [rbp-88h]
  83.   __int64 value_8; // [rsp+30h] [rbp-78h]
  84.   __int64 v3; // [rsp+38h] [rbp-70h]
  85.   __int64 v4; // [rsp+40h] [rbp-68h]
  86.   __int64 v4_8; // [rsp+48h] [rbp-60h]
  87.   SRCToSexRaceClass v86; // [rsp+78h] [rbp-30h]
  88.   SRCToSexRaceClass v87; // [rsp+78h] [rbp-30h]
  89.  
  90.   if ( action <= 30 )
  91.   {
  92.     if ( action == 30 )
  93.     {
  94.       v8 = (wchar_t *)L"men_bonus";
  95.       goto LABEL_21;
  96.     }
  97.     if ( action > 15 )
  98.     {
  99.       if ( action <= 23 )
  100.       {
  101.         if ( action == 23 )
  102.         {
  103.           v8 = (wchar_t *)L"pc_breath_bonus_table";
  104.           goto LABEL_21;
  105.         }
  106.         v28 = action - 16;
  107.         if ( !v28 )
  108.         {
  109.           v8 = (wchar_t *)L"base_attack_type";
  110.           goto LABEL_21;
  111.         }
  112.         v29 = v28 - 1;
  113.         if ( !v29 )
  114.         {
  115.           v8 = (wchar_t *)L"base_attack_speed";
  116.           goto LABEL_21;
  117.         }
  118.         v30 = v29 - 1;
  119.         if ( !v30 )
  120.         {
  121.           v8 = (wchar_t *)L"base_magic_attack";
  122.           goto LABEL_21;
  123.         }
  124.         v31 = v30 - 1;
  125.         if ( !v31 )
  126.         {
  127.           v8 = (wchar_t *)L"base_can_penetrate";
  128.           goto LABEL_21;
  129.         }
  130.         v32 = v31 - 1;
  131.         if ( !v32 )
  132.         {
  133.           v8 = (wchar_t *)L"base_attack_range";
  134.           goto LABEL_21;
  135.         }
  136.         v33 = v32 - 1;
  137.         if ( !v33 )
  138.         {
  139.           v8 = (wchar_t *)L"base_rand_dam";
  140.           goto LABEL_21;
  141.         }
  142.         if ( v33 == 1 )
  143.         {
  144.           v8 = (wchar_t *)L"org_jump";
  145.           goto LABEL_21;
  146.         }
  147.         return;
  148.       }
  149.       v34 = action - 24;
  150.       if ( v34 )
  151.       {
  152.         v35 = v34 - 1;
  153.         if ( v35 )
  154.         {
  155.           v36 = v35 - 1;
  156.           if ( !v36 )
  157.           {
  158.             v8 = (wchar_t *)L"level_bonus";
  159.             goto LABEL_21;
  160.           }
  161.           v37 = v36 - 1;
  162.           if ( !v37 )
  163.           {
  164.             v8 = (wchar_t *)L"str_bonus";
  165.             goto LABEL_21;
  166.           }
  167.           v38 = v37 - 1;
  168.           if ( !v38 )
  169.           {
  170.             v8 = (wchar_t *)L"int_bonus";
  171.             goto LABEL_21;
  172.           }
  173.           if ( v38 == 1 )
  174.           {
  175.             v8 = (wchar_t *)L"con_bonus";
  176.             goto LABEL_21;
  177.           }
  178.         }
  179.         else
  180.         {
  181.           v87 = _srcTable[*((_QWORD *)this->yyattributestackptr + this->yytop - 2)];
  182.           if ( !wcscmp(this->parsing_context, L"base_physical_attack") )
  183.           {
  184.             CPCParamDB::SetValueBySRC(
  185.               &g_PCParamDB,
  186.               v87.sex,
  187.               v87.race,
  188.               v87.cls,
  189.               PC_BASE_PATTACK,
  190.               (int)*((double *)this->yyattributestackptr + this->yytop));
  191.           }
  192.           else if ( !wcscmp(this->parsing_context, L"base_critical") )
  193.           {
  194.             CPCParamDB::SetValueBySRC(
  195.               &g_PCParamDB,
  196.               v87.sex,
  197.               v87.race,
  198.               v87.cls,
  199.               PC_BASE_CRITICAL,
  200.               (int)*((double *)this->yyattributestackptr + this->yytop));
  201.           }
  202.           else if ( !wcscmp(this->parsing_context, L"base_attack_type") )
  203.           {
  204.             CPCParamDB::SetValueBySRC(
  205.               &g_PCParamDB,
  206.               v87.sex,
  207.               v87.race,
  208.               v87.cls,
  209.               PC_BASE_ATTACK_TYPE,
  210.               (int)*((double *)this->yyattributestackptr + this->yytop));
  211.           }
  212.           else if ( !wcscmp(this->parsing_context, L"base_attack_speed") )
  213.           {
  214.             CPCParamDB::SetValueBySRC(
  215.               &g_PCParamDB,
  216.               v87.sex,
  217.               v87.race,
  218.               v87.cls,
  219.               PC_BASE_ATTACK_SPEED,
  220.               (int)*((double *)this->yyattributestackptr + this->yytop));
  221.           }
  222.           else if ( !wcscmp(this->parsing_context, L"base_defend") )
  223.           {
  224.             CPCParamDB::SetValueBySRC(
  225.               &g_PCParamDB,
  226.               v87.sex,
  227.               v87.race,
  228.               v87.cls,
  229.               PC_BASE_PDEFEND,
  230.               (int)*((double *)this->yyattributestackptr + this->yytop));
  231.           }
  232.           else if ( !wcscmp(this->parsing_context, L"base_magic_attack") )
  233.           {
  234.             CPCParamDB::SetValueBySRC(
  235.               &g_PCParamDB,
  236.               v87.sex,
  237.               v87.race,
  238.               v87.cls,
  239.               PC_BASE_MATTACK,
  240.               (int)*((double *)this->yyattributestackptr + this->yytop));
  241.           }
  242.           else if ( !wcscmp(this->parsing_context, L"base_magic_defend") )
  243.           {
  244.             CPCParamDB::SetValueBySRC(
  245.               &g_PCParamDB,
  246.               v87.sex,
  247.               v87.race,
  248.               v87.cls,
  249.               PC_BASE_MDEFEND,
  250.               (int)*((double *)this->yyattributestackptr + this->yytop));
  251.           }
  252.           else if ( !wcscmp(this->parsing_context, L"base_can_penetrate") )
  253.           {
  254.             CPCParamDB::SetValueBySRC(
  255.               &g_PCParamDB,
  256.               v87.sex,
  257.               v87.race,
  258.               v87.cls,
  259.               PC_BASE_CAN_PENETRATE,
  260.               (int)*((double *)this->yyattributestackptr + this->yytop));
  261.           }
  262.           else if ( !wcscmp(this->parsing_context, L"base_attack_range") )
  263.           {
  264.             CPCParamDB::SetValueBySRC(
  265.               &g_PCParamDB,
  266.               v87.sex,
  267.               v87.race,
  268.               v87.cls,
  269.               PC_BASE_ATTACK_RANGE,
  270.               (int)*((double *)this->yyattributestackptr + this->yytop));
  271.           }
  272.           else if ( !wcscmp(this->parsing_context, L"base_rand_dam") )
  273.           {
  274.             CPCParamDB::SetValueBySRC(
  275.               &g_PCParamDB,
  276.               v87.sex,
  277.               v87.race,
  278.               v87.cls,
  279.               PC_BASE_RAND_DAM,
  280.               (int)*((double *)this->yyattributestackptr + this->yytop));
  281.           }
  282.           else if ( !wcscmp(this->parsing_context, L"org_jump") )
  283.           {
  284.             CPCParamDB::SetValueBySRC(
  285.               &g_PCParamDB,
  286.               v87.sex,
  287.               v87.race,
  288.               v87.cls,
  289.               PC_ORG_JUMP,
  290.               (int)*((double *)this->yyattributestackptr + this->yytop));
  291.           }
  292.           else if ( !wcscmp(this->parsing_context, L"pc_breath_bonus_table") )
  293.           {
  294.             CPCParamDB::SetValueBySRC(
  295.               &g_PCParamDB,
  296.               v87.sex,
  297.               v87.race,
  298.               v87.cls,
  299.               PC_BREATH_BONUS,
  300.               (int)*((double *)this->yyattributestackptr + this->yytop));
  301.           }
  302.           else if ( !wcscmp(this->parsing_context, L"pc_safe_fall_height_table") )
  303.           {
  304.             CPCParamDB::SetValueBySRC(
  305.               &g_PCParamDB,
  306.               v87.sex,
  307.               v87.race,
  308.               v87.cls,
  309.               PC_SAFE_FALL_HEIGHT,
  310.               (int)*((double *)this->yyattributestackptr + this->yytop));
  311.           }
  312.           else
  313.           {
  314.             CLog::Add(
  315.               &Log,
  316.               LOG_ERROR,
  317.               (wchar_t *)L"[%s][%d] Invalide parsing_context[%s]",
  318.               L"pc_param_yacc.y",
  319.               637,
  320.               this->parsing_context);
  321.           }
  322.         }
  323.         return;
  324.       }
  325.       v27 = (wchar_t *)L"pc_safe_fall_height_table";
  326.     }
  327.     else
  328.     {
  329.       if ( action == 15 )
  330.       {
  331.         v8 = (wchar_t *)L"base_critical";
  332.         goto LABEL_21;
  333.       }
  334.       if ( action <= 7 )
  335.       {
  336.         if ( action == 7 )
  337.         {
  338.           v8 = (wchar_t *)L"base_defend";
  339.         }
  340.         else if ( action )
  341.         {
  342.           edx8 = action - 1;
  343.           if ( edx8 )
  344.           {
  345.             edx9 = edx8 - 1;
  346.             if ( edx9 )
  347.             {
  348.               v5 = edx9 - 1;
  349.               if ( v5 )
  350.               {
  351.                 v6 = v5 - 1;
  352.                 if ( v6 )
  353.                 {
  354.                   v7 = v6 - 1;
  355.                   if ( v7 )
  356.                   {
  357.                     if ( v7 != 1 )
  358.                       return;
  359.                     v8 = (wchar_t *)L"org_cp_regen";
  360.                   }
  361.                   else
  362.                   {
  363.                     v8 = (wchar_t *)L"org_mp_regen";
  364.                   }
  365.                 }
  366.                 else
  367.                 {
  368.                   v8 = (wchar_t *)L"org_hp_regen";
  369.                 }
  370.               }
  371.               else
  372.               {
  373.                 v8 = (wchar_t *)L"base_damage_range";
  374.               }
  375.             }
  376.             else
  377.             {
  378.               v8 = (wchar_t *)L"initial_highest_attribute";
  379.             }
  380.           }
  381.           else
  382.           {
  383.             v8 = (wchar_t *)L"initial_lowest_attribute";
  384.           }
  385.         }
  386.         else
  387.         {
  388.           v8 = (wchar_t *)L"initial_default_attribute";
  389.         }
  390.         goto LABEL_21;
  391.       }
  392.       v9 = action - 8;
  393.       if ( !v9 )
  394.       {
  395.         v8 = (wchar_t *)L"base_magic_defend";
  396.         goto LABEL_21;
  397.       }
  398.       v10 = v9 - 1;
  399.       if ( v10 )
  400.       {
  401.         v11 = v10 - 1;
  402.         if ( v11 )
  403.         {
  404.           v12 = v11 - 1;
  405.           if ( !v12 )
  406.           {
  407.             yytop = this->yytop;
  408.             yyattributestackptr = this->yyattributestackptr;
  409.             v23 = yyattributestackptr[yytop - 1];
  410.             v86 = _srcTable[yyattributestackptr[yytop - 4]];
  411.             if ( !wcscmp(this->parsing_context, L"initial_default_attribute") )
  412.             {
  413.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 6 )
  414.                 CLog::Add(
  415.                   &Log,
  416.                   LOG_ERROR,
  417.                   (wchar_t *)L"%s line[%d], initial_default_attribute int counter is different",
  418.                   g_DataScriptFile_106[56],
  419.                   this->m_lexer.line);
  420.               CPCParamDB::SetValueBySRC(
  421.                 &g_PCParamDB,
  422.                 v86.sex,
  423.                 v86.race,
  424.                 v86.cls,
  425.                 PC_INT_DEFAULT,
  426.                 (int)*this->DoubleVector._Mypair._Myval2._Myfirst);
  427.               CPCParamDB::SetValueBySRC(
  428.                 &g_PCParamDB,
  429.                 v86.sex,
  430.                 v86.race,
  431.                 v86.cls,
  432.                 PC_STR_DEFAULT,
  433.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 1));
  434.               CPCParamDB::SetValueBySRC(
  435.                 &g_PCParamDB,
  436.                 v86.sex,
  437.                 v86.race,
  438.                 v86.cls,
  439.                 PC_CON_DEFAULT,
  440.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 2));
  441.               CPCParamDB::SetValueBySRC(
  442.                 &g_PCParamDB,
  443.                 v86.sex,
  444.                 v86.race,
  445.                 v86.cls,
  446.                 PC_MEN_DEFAULT,
  447.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 3));
  448.               CPCParamDB::SetValueBySRC(
  449.                 &g_PCParamDB,
  450.                 v86.sex,
  451.                 v86.race,
  452.                 v86.cls,
  453.                 PC_DEX_DEFAULT,
  454.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 4));
  455.               CPCParamDB::SetValueBySRC(
  456.                 &g_PCParamDB,
  457.                 v86.sex,
  458.                 v86.race,
  459.                 v86.cls,
  460.                 PC_WIT_DEFAULT,
  461.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 5));
  462.             }
  463.             else if ( !wcscmp(this->parsing_context, L"initial_lowest_attribute") )
  464.             {
  465.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 6 )
  466.                 CLog::Add(
  467.                   &Log,
  468.                   LOG_ERROR,
  469.                   (wchar_t *)L"%s line[%d], initial_lowest_attribute int counter is different",
  470.                   g_DataScriptFile_106[56],
  471.                   this->m_lexer.line);
  472.               CPCParamDB::SetValueBySRC(
  473.                 &g_PCParamDB,
  474.                 v86.sex,
  475.                 v86.race,
  476.                 v86.cls,
  477.                 PC_INT_MIN,
  478.                 (int)*this->DoubleVector._Mypair._Myval2._Myfirst);
  479.               CPCParamDB::SetValueBySRC(
  480.                 &g_PCParamDB,
  481.                 v86.sex,
  482.                 v86.race,
  483.                 v86.cls,
  484.                 PC_STR_MIN,
  485.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 1));
  486.               CPCParamDB::SetValueBySRC(
  487.                 &g_PCParamDB,
  488.                 v86.sex,
  489.                 v86.race,
  490.                 v86.cls,
  491.                 PC_CON_MIN,
  492.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 2));
  493.               CPCParamDB::SetValueBySRC(
  494.                 &g_PCParamDB,
  495.                 v86.sex,
  496.                 v86.race,
  497.                 v86.cls,
  498.                 PC_MEN_MIN,
  499.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 3));
  500.               CPCParamDB::SetValueBySRC(
  501.                 &g_PCParamDB,
  502.                 v86.sex,
  503.                 v86.race,
  504.                 v86.cls,
  505.                 PC_DEX_MIN,
  506.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 4));
  507.               CPCParamDB::SetValueBySRC(
  508.                 &g_PCParamDB,
  509.                 v86.sex,
  510.                 v86.race,
  511.                 v86.cls,
  512.                 PC_WIT_MIN,
  513.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 5));
  514.             }
  515.             else if ( !wcscmp(this->parsing_context, L"initial_highest_attribute") )
  516.             {
  517.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 6 )
  518.                 CLog::Add(
  519.                   &Log,
  520.                   LOG_ERROR,
  521.                   (wchar_t *)L"%s line[%d], initial_highest_attribute int counter is different",
  522.                   g_DataScriptFile_106[56],
  523.                   this->m_lexer.line);
  524.               CPCParamDB::SetValueBySRC(
  525.                 &g_PCParamDB,
  526.                 v86.sex,
  527.                 v86.race,
  528.                 v86.cls,
  529.                 PC_INT_MAX,
  530.                 (int)*this->DoubleVector._Mypair._Myval2._Myfirst);
  531.               CPCParamDB::SetValueBySRC(
  532.                 &g_PCParamDB,
  533.                 v86.sex,
  534.                 v86.race,
  535.                 v86.cls,
  536.                 PC_STR_MAX,
  537.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 1));
  538.               CPCParamDB::SetValueBySRC(
  539.                 &g_PCParamDB,
  540.                 v86.sex,
  541.                 v86.race,
  542.                 v86.cls,
  543.                 PC_CON_MAX,
  544.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 2));
  545.               CPCParamDB::SetValueBySRC(
  546.                 &g_PCParamDB,
  547.                 v86.sex,
  548.                 v86.race,
  549.                 v86.cls,
  550.                 PC_MEN_MAX,
  551.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 3));
  552.               CPCParamDB::SetValueBySRC(
  553.                 &g_PCParamDB,
  554.                 v86.sex,
  555.                 v86.race,
  556.                 v86.cls,
  557.                 PC_DEX_MAX,
  558.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 4));
  559.               CPCParamDB::SetValueBySRC(
  560.                 &g_PCParamDB,
  561.                 v86.sex,
  562.                 v86.race,
  563.                 v86.cls,
  564.                 PC_WIT_MAX,
  565.                 (int)*((double *)this->DoubleVector._Mypair._Myval2._Myfirst + 5));
  566.             }
  567.             else if ( !wcscmp(this->parsing_context, L"base_damage_range") )
  568.             {
  569.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 4 )
  570.                 CLog::Add(
  571.                   &Log,
  572.                   LOG_ERROR,
  573.                   (wchar_t *)L"%s line[%d], base_damage_range int counter is different",
  574.                   g_DataScriptFile_106[56],
  575.                   this->m_lexer.line);
  576.               Myfirst = this->DoubleVector._Mypair._Myval2._Myfirst;
  577.               LODWORD(v4) = (int)Myfirst[3];
  578.               LODWORD(v3) = (int)Myfirst[2];
  579.               LODWORD(value_8) = (int)Myfirst[1];
  580.               LODWORD(field) = 27;
  581.               CPCParamDB::SetValueBySRC(
  582.                 &g_PCParamDB,
  583.                 v86.sex,
  584.                 v86.race,
  585.                 v86.cls,
  586.                 field,
  587.                 (int)*Myfirst,
  588.                 value_8,
  589.                 v3,
  590.                 v4,
  591.                 v4_8);
  592.             }
  593.             else if ( !wcscmp(this->parsing_context, L"org_hp_regen") )
  594.             {
  595.               if ( (unsigned __int64)(this->DoubleVector._Mypair._Myval2._Mylast
  596.                                     - this->DoubleVector._Mypair._Myval2._Myfirst) > 0x79 )
  597.                 CLog::Add(
  598.                   &Log,
  599.                   LOG_ERROR,
  600.                   (wchar_t *)L"%s line[%d], org_hp_regen int counter is different",
  601.                   g_DataScriptFile_106[56],
  602.                   this->m_lexer.line);
  603.               LODWORD(field) = 29;
  604.               CPCParamDB::SetValueBySRC(
  605.                 &g_PCParamDB,
  606.                 v86.sex,
  607.                 v86.race,
  608.                 v86.cls,
  609.                 field,
  610.                 *((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 1));
  611.             }
  612.             else if ( !wcscmp(this->parsing_context, L"org_cp_regen") )
  613.             {
  614.               if ( (unsigned __int64)(this->DoubleVector._Mypair._Myval2._Mylast
  615.                                     - this->DoubleVector._Mypair._Myval2._Myfirst) > 0x79 )
  616.                 CLog::Add(
  617.                   &Log,
  618.                   LOG_ERROR,
  619.                   (wchar_t *)L"%s line[%d], org_cp_regen int counter is different",
  620.                   g_DataScriptFile_106[56],
  621.                   this->m_lexer.line);
  622.               LODWORD(field) = 31;
  623.               CPCParamDB::SetValueBySRC(
  624.                 &g_PCParamDB,
  625.                 v86.sex,
  626.                 v86.race,
  627.                 v86.cls,
  628.                 field,
  629.                 *((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 1));
  630.             }
  631.             else if ( !wcscmp(this->parsing_context, L"org_mp_regen") )
  632.             {
  633.               if ( (unsigned __int64)(this->DoubleVector._Mypair._Myval2._Mylast
  634.                                     - this->DoubleVector._Mypair._Myval2._Myfirst) > 0x79 )
  635.                 CLog::Add(
  636.                   &Log,
  637.                   LOG_ERROR,
  638.                   (wchar_t *)L"%s line[%d], org_mp_regen int counter is different",
  639.                   g_DataScriptFile_106[56],
  640.                   this->m_lexer.line);
  641.               LODWORD(field) = 30;
  642.               CPCParamDB::SetValueBySRC(
  643.                 &g_PCParamDB,
  644.                 v86.sex,
  645.                 v86.race,
  646.                 v86.cls,
  647.                 field,
  648.                 *((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 1));
  649.             }
  650.             else if ( !wcscmp(this->parsing_context, L"moving_speed") )
  651.             {
  652.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 8 )
  653.                 CLog::Add(
  654.                   &Log,
  655.                   LOG_ERROR,
  656.                   (wchar_t *)L"%s line[%d], moving_speed int counter is different",
  657.                   g_DataScriptFile_106[56],
  658.                   this->m_lexer.line);
  659.               v25 = this->DoubleVector._Mypair._Myval2._Myfirst;
  660.               LODWORD(v4_8) = (int)v25[4];
  661.               LODWORD(v4) = (int)v25[3];
  662.               LODWORD(v3) = (int)v25[2];
  663.               LODWORD(value_8) = (int)v25[1];
  664.               LODWORD(field) = 32;
  665.               CPCParamDB::SetValueBySRC(
  666.                 &g_PCParamDB,
  667.                 v86.sex,
  668.                 v86.race,
  669.                 v86.cls,
  670.                 field,
  671.                 (int)*v25,
  672.                 value_8,
  673.                 v3,
  674.                 v4,
  675.                 v4_8,
  676.                 (int)v25[5],
  677.                 (int)v25[6],
  678.                 (int)v25[7]);
  679.             }
  680.             else if ( !wcscmp(this->parsing_context, L"pc_collision_box_table") )
  681.             {
  682.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 2 )
  683.                 CLog::Add(
  684.                   &Log,
  685.                   LOG_ERROR,
  686.                   (wchar_t *)L"%s line[%d], pc_collision_box_table int counter is different",
  687.                   g_DataScriptFile_106[56],
  688.                   this->m_lexer.line);
  689.               CPCParamDB::SetValueBySRC(
  690.                 &g_PCParamDB,
  691.                 v86.sex,
  692.                 v86.race,
  693.                 v86.cls,
  694.                 PC_COLLISION_BOX,
  695.                 *this->DoubleVector._Mypair._Myval2._Myfirst,
  696.                 this->DoubleVector._Mypair._Myval2._Myfirst[1]);
  697.             }
  698.             else if ( !wcscmp(this->parsing_context, L"base_defend") )
  699.             {
  700.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 7 )
  701.                 CLog::Add(
  702.                   &Log,
  703.                   LOG_ERROR,
  704.                   (wchar_t *)L"%s line[%d], org_hp_regen int counter is different",
  705.                   g_DataScriptFile_106[56],
  706.                   this->m_lexer.line);
  707.               v26 = this->DoubleVector._Mypair._Myval2._Myfirst;
  708.               CPCParamDB::SetValueBySRC(
  709.                 &g_PCParamDB,
  710.                 v86.sex,
  711.                 v86.race,
  712.                 v86.cls,
  713.                 PC_BASE_PDEFEND,
  714.                 *v26,
  715.                 v26[1],
  716.                 v26[2],
  717.                 v26[3],
  718.                 v26[4],
  719.                 v26[5],
  720.                 v26[6]);
  721.             }
  722.             else if ( !wcscmp(this->parsing_context, L"base_magic_defend") )
  723.             {
  724.               if ( this->DoubleVector._Mypair._Myval2._Mylast - this->DoubleVector._Mypair._Myval2._Myfirst != 5 )
  725.                 CLog::Add(
  726.                   &Log,
  727.                   LOG_ERROR,
  728.                   (wchar_t *)L"%s line[%d], org_hp_regen int counter is different",
  729.                   g_DataScriptFile_106[56],
  730.                   this->m_lexer.line);
  731.               CPCParamDB::SetValueBySRC(
  732.                 &g_PCParamDB,
  733.                 v86.sex,
  734.                 v86.race,
  735.                 v86.cls,
  736.                 PC_BASE_MDEFEND,
  737.                 *this->DoubleVector._Mypair._Myval2._Myfirst,
  738.                 this->DoubleVector._Mypair._Myval2._Myfirst[1],
  739.                 this->DoubleVector._Mypair._Myval2._Myfirst[2],
  740.                 this->DoubleVector._Mypair._Myval2._Myfirst[3],
  741.                 this->DoubleVector._Mypair._Myval2._Myfirst[4],
  742.                 0.0,
  743.                 0.0);
  744.             }
  745.             else
  746.             {
  747.               CLog::Add(
  748.                 &Log,
  749.                 LOG_ERROR,
  750.                 (wchar_t *)L"[%s][%d] Invalide parsing_context[%s]",
  751.                 L"pc_param_yacc.y",
  752.                 452,
  753.                 this->parsing_context);
  754.             }
  755.             if ( v23 )
  756.             {
  757.               if ( *(_QWORD *)v23 )
  758.               {
  759.                 Memory::Free(&g_Memory, *(void **)v23, 1);
  760.                 *(_QWORD *)v23 = 0i64;
  761.                 *(_QWORD *)(v23 + 8) = 0i64;
  762.                 *(_QWORD *)(v23 + 16) = 0i64;
  763.               }
  764.               operator delete((void *)v23, 0x18ui64);
  765.             }
  766.             return;
  767.           }
  768.           v13 = v12 - 1;
  769.           if ( v13 )
  770.           {
  771.             v14 = v13 - 1;
  772.             if ( v14 )
  773.             {
  774.               if ( v14 == 1 )
  775.               {
  776.                 v8 = (wchar_t *)L"base_physical_attack";
  777. LABEL_21:
  778.                 this->parsing_context = v8;
  779.                 return;
  780.               }
  781.             }
  782.             else
  783.             {
  784.               p_DoubleVector = &this->DoubleVector;
  785.               p_DoubleVector->_Mypair._Myval2._Mylast = p_DoubleVector->_Mypair._Myval2._Myfirst;
  786.               std::vector<double,std::xallocator<double>>::push_back(
  787.                 p_DoubleVector,
  788.                 (long double *)this->yyattributestackptr + this->yytop);
  789.               v16 = operator new(0x18ui64);
  790.               v17 = v16;
  791.               if ( v16 )
  792.               {
  793.                 *v16 = 0i64;
  794.                 v16[1] = 0i64;
  795.                 v16[2] = 0i64;
  796.               }
  797.               else
  798.               {
  799.                 v17 = 0i64;
  800.               }
  801.               *(_QWORD *)this->yyvalptr = v17;
  802.               std::vector<double,std::xallocator<double>>::push_back(
  803.                 *(std::vector<double,std::xallocator<double> > **)this->yyvalptr,
  804.                 (long double *)this->yyattributestackptr + this->yytop);
  805.             }
  806.             return;
  807.           }
  808.           std::vector<double,std::xallocator<double>>::push_back(
  809.             &this->DoubleVector,
  810.             (long double *)this->yyattributestackptr + this->yytop);
  811.           std::vector<double,std::xallocator<double>>::push_back(
  812.             *((std::vector<double,std::xallocator<double> > **)this->yyattributestackptr + this->yytop - 2),
  813.             (long double *)this->yyattributestackptr + this->yytop);
  814.           v18 = this->yytop - 2;
  815.           v19 = this->yyattributestackptr;
  816.           yyvalptr = this->yyvalptr;
  817. LABEL_36:
  818.           *yyvalptr = v19[v18];
  819.           return;
  820.         }
  821.         v27 = (wchar_t *)L"pc_collision_box_table";
  822.       }
  823.       else
  824.       {
  825.         v27 = (wchar_t *)L"moving_speed";
  826.       }
  827.     }
  828. LABEL_91:
  829.     this->parsing_context = v27;
  830.     return;
  831.   }
  832.   if ( action > 45 )
  833.   {
  834.     if ( action > 53 )
  835.     {
  836.       v72 = action - 54;
  837.       if ( v72 )
  838.       {
  839.         v73 = v72 - 1;
  840.         if ( v73 )
  841.         {
  842.           v74 = v73 - 1;
  843.           if ( v74 )
  844.           {
  845.             v75 = v74 - 1;
  846.             if ( v75 )
  847.             {
  848.               v76 = v75 - 23;
  849.               if ( !v76 )
  850.               {
  851.                 *(double *)this->yyvalptr = (double)(int)*((_QWORD *)this->yyattributestackptr + this->yytop);
  852.                 return;
  853.               }
  854.               if ( v76 != 1 )
  855.                 return;
  856.               v18 = this->yytop;
  857.               v19 = this->yyattributestackptr;
  858.               yyvalptr = this->yyvalptr;
  859.               goto LABEL_36;
  860.             }
  861.             v77 = this->yytop;
  862.             v78 = (double *)this->yyattributestackptr;
  863.             v79 = v78[v77 - 1];
  864.             v80 = MVMD_RUN;
  865.           }
  866.           else
  867.           {
  868.             v77 = this->yytop;
  869.             v78 = (double *)this->yyattributestackptr;
  870.             v79 = v78[v77 - 1];
  871.             v80 = MVMD_WALK;
  872.           }
  873.         }
  874.         else
  875.         {
  876.           v77 = this->yytop;
  877.           v78 = (double *)this->yyattributestackptr;
  878.           v79 = v78[v77 - 1];
  879.           v80 = MVMD_STAND;
  880.         }
  881.       }
  882.       else
  883.       {
  884.         v77 = this->yytop;
  885.         v78 = (double *)this->yyattributestackptr;
  886.         v79 = v78[v77 - 1];
  887.         v80 = MVMD_SIT;
  888.       }
  889.       CPCParamDB::SetRegenMoveModeCPBonus(
  890.         &g_PCParamDB,
  891.         v80,
  892.         v78[v77 - 11],
  893.         v78[v77 - 9],
  894.         v78[v77 - 7],
  895.         v78[v77 - 5],
  896.         v78[v77 - 3],
  897.         v79);
  898.       return;
  899.     }
  900.     if ( action != 53 )
  901.     {
  902.       v58 = action - 46;
  903.       if ( v58 )
  904.       {
  905.         v59 = v58 - 1;
  906.         if ( v59 )
  907.         {
  908.           v60 = v59 - 1;
  909.           if ( v60 )
  910.           {
  911.             v61 = v60 - 1;
  912.             if ( v61 )
  913.             {
  914.               v62 = v61 - 1;
  915.               if ( v62 )
  916.               {
  917.                 v63 = v62 - 1;
  918.                 if ( v63 )
  919.                 {
  920.                   if ( v63 != 1 )
  921.                     return;
  922.                   v64 = this->yytop;
  923.                   v65 = (double *)this->yyattributestackptr;
  924.                   v66 = v65[v64 - 1];
  925.                   v67 = MVMD_WALK;
  926.                 }
  927.                 else
  928.                 {
  929.                   v64 = this->yytop;
  930.                   v65 = (double *)this->yyattributestackptr;
  931.                   v66 = v65[v64 - 1];
  932.                   v67 = MVMD_STAND;
  933.                 }
  934.               }
  935.               else
  936.               {
  937.                 v64 = this->yytop;
  938.                 v65 = (double *)this->yyattributestackptr;
  939.                 v66 = v65[v64 - 1];
  940.                 v67 = MVMD_SIT;
  941.               }
  942.               goto LABEL_227;
  943.             }
  944.             v68 = this->yytop;
  945.             v69 = (double *)this->yyattributestackptr;
  946.             v70 = v69[v68 - 1];
  947.             v71 = MVMD_RUN;
  948.           }
  949.           else
  950.           {
  951.             v68 = this->yytop;
  952.             v69 = (double *)this->yyattributestackptr;
  953.             v70 = v69[v68 - 1];
  954.             v71 = MVMD_WALK;
  955.           }
  956.         }
  957.         else
  958.         {
  959.           v68 = this->yytop;
  960.           v69 = (double *)this->yyattributestackptr;
  961.           v70 = v69[v68 - 1];
  962.           v71 = MVMD_STAND;
  963.         }
  964.       }
  965.       else
  966.       {
  967.         v68 = this->yytop;
  968.         v69 = (double *)this->yyattributestackptr;
  969.         v70 = v69[v68 - 1];
  970.         v71 = MVMD_SIT;
  971.       }
  972.       CPCParamDB::SetRegenMoveModeHPBonus(
  973.         &g_PCParamDB,
  974.         v71,
  975.         v69[v68 - 11],
  976.         v69[v68 - 9],
  977.         v69[v68 - 7],
  978.         v69[v68 - 5],
  979.         v69[v68 - 3],
  980.         v70);
  981.       return;
  982.     }
  983.     v64 = this->yytop;
  984.     v65 = (double *)this->yyattributestackptr;
  985.     v66 = v65[v64 - 1];
  986.     v67 = MVMD_RUN;
  987. LABEL_227:
  988.     CPCParamDB::SetRegenMoveModeMPBonus(
  989.       &g_PCParamDB,
  990.       v67,
  991.       v65[v64 - 11],
  992.       v65[v64 - 9],
  993.       v65[v64 - 7],
  994.       v65[v64 - 5],
  995.       v65[v64 - 3],
  996.       v66);
  997.     return;
  998.   }
  999.   if ( action == 45 )
  1000.   {
  1001.     v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
  1002.     v52 = MVMD_RUN;
  1003. LABEL_180:
  1004.     CPCParamDB::SetRegenMoveModeBonus(&g_PCParamDB, v52, v51 / 100.0);
  1005.     return;
  1006.   }
  1007.   if ( action <= 38 )
  1008.   {
  1009.     if ( action == 38 )
  1010.     {
  1011.       v8 = (wchar_t *)L"pc_karma_increase_table";
  1012.       goto LABEL_21;
  1013.     }
  1014.     v39 = action - 31;
  1015.     if ( !v39 )
  1016.     {
  1017.       v8 = (wchar_t *)L"dex_bonus";
  1018.       goto LABEL_21;
  1019.     }
  1020.     v40 = v39 - 1;
  1021.     if ( !v40 )
  1022.     {
  1023.       v8 = (wchar_t *)L"wit_bonus";
  1024.       goto LABEL_21;
  1025.     }
  1026.     v41 = v40 - 1;
  1027.     if ( !v41 )
  1028.     {
  1029.       v8 = (wchar_t *)L"luc_bonus";
  1030.       goto LABEL_21;
  1031.     }
  1032.     v42 = v41 - 1;
  1033.     if ( !v42 )
  1034.     {
  1035.       v8 = (wchar_t *)L"cha_bonus";
  1036.       goto LABEL_21;
  1037.     }
  1038.     v43 = v42 - 1;
  1039.     if ( v43 )
  1040.     {
  1041.       v44 = v43 - 1;
  1042.       if ( v44 )
  1043.       {
  1044.         if ( v44 != 1 )
  1045.           return;
  1046.         v45 = (wchar_t *)L"cp_table";
  1047.       }
  1048.       else
  1049.       {
  1050.         v45 = (wchar_t *)L"mp_table";
  1051.       }
  1052.     }
  1053.     else
  1054.     {
  1055.       v45 = (wchar_t *)L"hp_table";
  1056.     }
  1057.     this->parsing_class = *((_DWORD *)this->yyattributestackptr + 2 * this->yytop);
  1058.     this->parsing_context = v45;
  1059.     return;
  1060.   }
  1061.   v46 = action - 39;
  1062.   if ( !v46 )
  1063.   {
  1064.     v27 = (wchar_t *)L"pc_standard_exp_by_level_table";
  1065.     goto LABEL_91;
  1066.   }
  1067.   v47 = v46 - 1;
  1068.   if ( !v47 )
  1069.   {
  1070.     if ( !wcscmp(this->parsing_context, L"level_bonus") )
  1071.     {
  1072.       v54 = this->yytop;
  1073.       v55 = v54 - 2;
  1074.       v56 = PC_LEVEL_BONUS;
  1075.       goto LABEL_209;
  1076.     }
  1077.     if ( !wcscmp(this->parsing_context, L"hp_table") )
  1078.     {
  1079.       v57 = PC_ORG_HP;
  1080.     }
  1081.     else if ( !wcscmp(this->parsing_context, L"mp_table") )
  1082.     {
  1083.       v57 = PC_ORG_MP;
  1084.     }
  1085.     else
  1086.     {
  1087.       if ( wcscmp(this->parsing_context, L"cp_table") )
  1088.       {
  1089.         if ( wcscmp(this->parsing_context, L"pc_karma_increase_table") )
  1090.         {
  1091.           if ( !wcscmp(this->parsing_context, L"pc_standard_exp_by_level_table") )
  1092.             CPCParamDB::SetStandardExpByLevel(
  1093.               &g_PCParamDB,
  1094.               *((_DWORD *)this->yyattributestackptr + 2 * this->yytop - 4),
  1095.               PC_STANDARD_EXP_BY_LEV,
  1096.               (unsigned int)(int)*((double *)this->yyattributestackptr + this->yytop));
  1097.           else
  1098.             CLog::Add(&Log, LOG_ERROR, (wchar_t *)L"Invalide parsing_context[%s]", this->parsing_context);
  1099.           return;
  1100.         }
  1101.         v54 = this->yytop;
  1102.         v55 = v54 - 2;
  1103.         v56 = PC_KARMA_INCREASE;
  1104. LABEL_209:
  1105.         CPCParamDB::SetValueByLevel(
  1106.           &g_PCParamDB,
  1107.           *((_DWORD *)this->yyattributestackptr + 2 * v55),
  1108.           v56,
  1109.           *((long double *)this->yyattributestackptr + v54));
  1110.         return;
  1111.       }
  1112.       v57 = PC_ORG_CP;
  1113.     }
  1114.     CPCParamDB::SetValueByLevelClass(
  1115.       &g_PCParamDB,
  1116.       *((_DWORD *)this->yyattributestackptr + 2 * this->yytop - 4),
  1117.       (ClassType)this->parsing_class,
  1118.       v57,
  1119.       *((long double *)this->yyattributestackptr + this->yytop));
  1120.     return;
  1121.   }
  1122.   v48 = v47 - 1;
  1123.   if ( v48 )
  1124.   {
  1125.     v49 = v48 - 1;
  1126.     if ( v49 )
  1127.     {
  1128.       v50 = v49 - 1;
  1129.       if ( v50 )
  1130.       {
  1131.         if ( v50 != 1 )
  1132.           return;
  1133.         v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
  1134.         v52 = MVMD_WALK;
  1135.       }
  1136.       else
  1137.       {
  1138.         v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
  1139.         v52 = MVMD_STAND;
  1140.       }
  1141.     }
  1142.     else
  1143.     {
  1144.       v51 = (double)(int)(*((_QWORD *)this->yyattributestackptr + this->yytop) + 100);
  1145.       v52 = MVMD_SIT;
  1146.     }
  1147.     goto LABEL_180;
  1148.   }
  1149.   if ( !wcscmp(this->parsing_context, L"str_bonus") )
  1150.   {
  1151.     v53 = PC_STR_BONUS;
  1152.   }
  1153.   else if ( !wcscmp(this->parsing_context, L"int_bonus") )
  1154.   {
  1155.     v53 = PC_INT_BONUS;
  1156.   }
  1157.   else if ( !wcscmp(this->parsing_context, L"con_bonus") )
  1158.   {
  1159.     v53 = PC_CON_BONUS;
  1160.   }
  1161.   else if ( !wcscmp(this->parsing_context, L"men_bonus") )
  1162.   {
  1163.     v53 = PC_MEN_BONUS;
  1164.   }
  1165.   else if ( !wcscmp(this->parsing_context, L"dex_bonus") )
  1166.   {
  1167.     v53 = PC_DEX_BONUS;
  1168.   }
  1169.   else if ( !wcscmp(this->parsing_context, L"wit_bonus") )
  1170.   {
  1171.     v53 = PC_WIT_BONUS;
  1172.   }
  1173.   else if ( !wcscmp(this->parsing_context, L"luc_bonus") )
  1174.   {
  1175.     v53 = PC_LUC_BONUS;
  1176.   }
  1177.   else
  1178.   {
  1179.     if ( wcscmp(this->parsing_context, L"cha_bonus") )
  1180.       return;
  1181.     v53 = PC_CHA_BONUS;
  1182.   }
  1183.   CPCParamDB::SetValueByLevel(
  1184.     &g_PCParamDB,
  1185.     *((_DWORD *)this->yyattributestackptr + 2 * this->yytop - 4),
  1186.     v53,
  1187.     (int)*((double *)this->yyattributestackptr + this->yytop));
  1188. }