Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. void __fastcall User::ValidateParameters(User *this, __int16 vb, bool bEnterWorld)
  2. {
  3.   __int16 v4; // di
  4.   __int16 v6; // si
  5.  
  6.   v4 = vb;
  7.   if ( (vb & 0x2000) != 0 )
  8.   {
  9.     CCreature::ValidateBaseData(this);
  10.     CCreature::ValidateBaseAttributeData(this);
  11.     this->ValidateLevel(this);
  12.     this->ValidateOrgSpeed(this);
  13.     this->ValidateAllOnWeaponArmors(this);
  14.     this->ValidateItemSkills(this);
  15.     this->ValidateSkillList(this);
  16.     CCreature::ValidateSkillMod(this);
  17.     CCreature::ValidateHPMPCP(this, bEnterWorld);
  18.     this->ValidateAllOnSIM(this);
  19. LABEL_29:
  20.     this->ValidateOrgSpeed(this);
  21.     goto LABEL_30;
  22.   }
  23.   if ( (vb & 1) != 0 )
  24.     CCreature::ValidateBaseData(this);
  25.   if ( (v4 & 0x102) != 0 )
  26.     CCreature::ValidateBaseAttributeData(this);
  27.   if ( (v4 & 4) != 0 )
  28.   {
  29.     if ( this->ValidateLevel(this) )
  30.       v4 |= 0x620u;
  31.     else
  32.       v4 |= 0x200u;
  33.   }
  34.   if ( (v4 & 8) != 0 )
  35.     this->ValidateOrgSpeed(this);
  36.   v6 = v4 | 0xA00;
  37.   if ( (v4 & 0x10) == 0 )
  38.     v6 = v4;
  39.   if ( (v6 & 0x20) != 0 )
  40.     this->ValidateAllOnWeaponArmors(this);
  41.   v4 = v6;
  42.   if ( (v6 & 0x40) != 0 && this->ValidateItemSkills(this) )
  43.     v4 = v6 | 0x580;
  44.   if ( (v4 & 0x80u) != 0 )
  45.     this->ValidateSkillList(this);
  46.   if ( (v4 & 0x100) != 0 )
  47.     CCreature::ValidateSkillMod(this);
  48.   if ( (v4 & 0x200) != 0 )
  49.     CCreature::ValidateHPMPCP(this, bEnterWorld);
  50.   if ( (v4 & 0x400) != 0 )
  51.     this->ValidateAllOnSIM(this);
  52.   if ( (v4 & 0x800) != 0 )
  53.     goto LABEL_29;
  54. LABEL_30:
  55.   if ( (v4 & 0x1000) != 0 )
  56.     this->ValidateLevelUP(this);
  57.   this->ParamChanged(this, 16i64);
  58. }
  59. char __fastcall User::ValidateSpeed(User *this)
  60. {
  61.   double v2; // xmm6_8
  62.   CUserRidingInfo *m_pStriderInfo; // rbx
  63.   const PetDataSheet::Record *v5; // rax
  64.   CSharedCreatureData *m_data; // rcx
  65.   double v7; // xmm2_8
  66.   double *v8; // rdx
  67.   double v9; // xmm2_8
  68.  
  69.   v2 = ((double)this->m_data->m_nOrgParam[11]
  70.       * this->m_dGMSpeed
  71.       * this->m_SkillMod.m_Mods[7].m_Per
  72.       * this->m_AreaMod.m_dSpeedModByArea
  73.       + this->m_SkillMod.m_Mods[7].m_Diff)
  74.      * this->m_dSpeedModByWeight;
  75.   if ( ((unsigned __int8 (*)(void))this->IsCameraMode)() )
  76.   {
  77.     CVariableBitSet::SetDoubleValue_IfModifed(
  78.       &this->m_data->m_NeedUpdatePacketBitSet,
  79.       &this->m_data->m_dParam[11],
  80.       400.0,
  81.       0x3Bu);
  82.     return 0;
  83.   }
  84.   if ( this->IsRidingOnGround(this) )
  85.   {
  86.     m_pStriderInfo = this->m_pStriderInfo;
  87.     v5 = CCommonRidingInfo::Record(&m_pStriderInfo->m_commonInfo);
  88.     if ( m_pStriderInfo->m_pRidingInfo->IsHungry(m_pStriderInfo->m_pRidingInfo, v5->m_nHungryLimit) )
  89.       v2 = v2 * 0.5;
  90.     if ( this->m_pStriderInfo->m_commonInfo.m_striderLevel >= this->m_data->m_nLevel + 10 )
  91.       v2 = v2 * 0.5;
  92.   }
  93.   CVariableBitSet::SetDoubleValue_IfModifed(
  94.     &this->m_data->m_NeedUpdatePacketBitSet,
  95.     &this->m_data->m_dParam[11],
  96.     v2,
  97.     0x3Bu);
  98.   this->ValidateGradePenalty(this, SPEED);
  99.   m_data = this->m_data;
  100.   v7 = DOUBLE_1_0;
  101.   v8 = &m_data->m_dParam[11];
  102.   if ( m_data->m_moveType == CMT_FLY )
  103.   {
  104.     if ( *v8 >= 1.0 )
  105.     {
  106.       v9 = DOUBLE_350_0;
  107. LABEL_13:
  108.       v7 = fmin(v9, *v8);
  109.     }
  110.   }
  111.   else if ( *v8 >= 1.0 )
  112.   {
  113.     v9 = DOUBLE_300_0;
  114.     goto LABEL_13;
  115.   }
  116.   CVariableBitSet::SetDoubleValue_IfModifed(&m_data->m_NeedUpdatePacketBitSet, v8, v7, 0x3Bu);
  117.   return 1;
  118. }
  119. char __fastcall User::ValidateOrgSpeed(User *this)
  120. {
  121.   const PetDataSheet::Record *v2; // rax
  122.   int *m_data; // r8
  123.   int v4; // eax
  124.   CNPC *m_pPolymorphNPC; // r9
  125.   int v6; // ebx
  126.  
  127.   if ( this->IsRiding(this) )
  128.   {
  129.     v2 = CCommonRidingInfo::Record(&this->m_pStriderInfo->m_commonInfo);
  130.     this->m_data->m_nOrgParam[11] = v2->mSpeedOnRide[this->m_data->m_MoveMode][this->m_data->m_Environment];
  131.     m_data = (int *)this->m_data;
  132.     v4 = v2->mSpeedOnRide[m_data[148]][m_data[150]];
  133. LABEL_5:
  134.     m_data[3276] = v4;
  135.     goto LABEL_10;
  136.   }
  137.   if ( User::IsTransformedExcept(this, DamageText) )
  138.   {
  139.     this->m_data->m_nOrgParam[11] = (int)this->m_transform->m_commonData->orgSpeed[this->m_data->m_MoveMode][this->m_data->m_Environment];
  140.     m_data = (int *)this->m_data;
  141.     v4 = (int)this->m_transform->m_commonData->orgSpeed[m_data[148]][m_data[150]];
  142.     goto LABEL_5;
  143.   }
  144.   m_pPolymorphNPC = this->m_pPolymorphNPC;
  145.   if ( m_pPolymorphNPC )
  146.   {
  147.     this->m_data->m_nOrgParam[11] = m_pPolymorphNPC->m_pClassConst->m_SpeedByME[this->m_data->m_MoveMode][this->m_data->m_Environment];
  148.     this->m_data->m_nMoveTypeSpeed = m_pPolymorphNPC->m_pClassConst->m_SpeedByME[this->m_data->m_MoveMode][this->m_data->m_Environment];
  149.   }
  150.   else
  151.   {
  152.     this->m_data->m_nOrgParam[11] = (int)CPCParamDB::GetOrgSpeed(
  153.                                            &g_PCParamDB,
  154.                                            this->m_data->m_Sex,
  155.                                            this->m_data->m_nClass,
  156.                                            this->m_data->m_MoveMode,
  157.                                            this->m_data->m_Environment,
  158.                                            this->m_data->m_Race);
  159.     this->m_data->m_nMoveTypeSpeed = (int)CPCParamDB::GetOrgSpeed(
  160.                                             &g_PCParamDB,
  161.                                             this->m_data->m_Sex,
  162.                                             this->m_data->m_nClass,
  163.                                             this->m_data->m_MoveMode,
  164.                                             this->m_data->m_Environment,
  165.                                             this->m_data->m_Race);
  166.   }
  167.   v6 = (int)this->EquipedArmorsValidate(this, SPEED);
  168.   this->m_data->m_nOrgParam[11] += v6 + (int)this->EquipedWeaponValidate(this, SPEED);
  169. LABEL_10:
  170.   this->ValidateSpeed(this);
  171.   return 1;
  172. }
  173. long double __fastcall CCreature::GetMoveModifier(CCreature *this)
  174. {
  175.   CSharedCreatureData *m_data; // rax
  176.  
  177.   m_data = this->m_data;
  178.   if ( m_data->m_nMoveTypeSpeed <= 0 )
  179.     m_data->m_nMoveTypeSpeed = 1;
  180.   return this->m_data->m_dParam[11] / (double)this->m_data->m_nMoveTypeSpeed;
  181. }
  182.  
  183. char __fastcall User::ValidateSpeed(User *this)
  184. {
  185.   double v2; // xmm6_8
  186.   CUserRidingInfo *m_pStriderInfo; // rbx
  187.   const PetDataSheet::Record *v5; // rax
  188.   CSharedCreatureData *m_data; // rcx
  189.   double v7; // xmm2_8
  190.   double *v8; // rdx
  191.   double v9; // xmm2_8
  192.  
  193.   v2 = ((double)this->m_data->m_nOrgParam[11]
  194.       * this->m_dGMSpeed
  195.       * this->m_SkillMod.m_Mods[7].m_Per
  196.       * this->m_AreaMod.m_dSpeedModByArea
  197.       + this->m_SkillMod.m_Mods[7].m_Diff)
  198.      * this->m_dSpeedModByWeight;
  199.   if ( ((unsigned __int8 (*)(void))this->IsCameraMode)() )
  200.   {
  201.     CVariableBitSet::SetDoubleValue_IfModifed(
  202.       &this->m_data->m_NeedUpdatePacketBitSet,
  203.       &this->m_data->m_dParam[11],
  204.       400.0,
  205.       0x3Bu);
  206.     return 0;
  207.   }
  208.   if ( this->IsRidingOnGround(this) )
  209.   {
  210.     m_pStriderInfo = this->m_pStriderInfo;
  211.     v5 = CCommonRidingInfo::Record(&m_pStriderInfo->m_commonInfo);
  212.     if ( m_pStriderInfo->m_pRidingInfo->IsHungry(m_pStriderInfo->m_pRidingInfo, v5->m_nHungryLimit) )
  213.       v2 = v2 * 0.5;
  214.     if ( this->m_pStriderInfo->m_commonInfo.m_striderLevel >= this->m_data->m_nLevel + 10 )
  215.       v2 = v2 * 0.5;
  216.   }
  217.   CVariableBitSet::SetDoubleValue_IfModifed(
  218.     &this->m_data->m_NeedUpdatePacketBitSet,
  219.     &this->m_data->m_dParam[11],
  220.     v2,
  221.     0x3Bu);
  222.   this->ValidateGradePenalty(this, SPEED);
  223.   m_data = this->m_data;
  224.   v7 = DOUBLE_1_0;
  225.   v8 = &m_data->m_dParam[11];
  226.   if ( m_data->m_moveType == CMT_FLY )
  227.   {
  228.     if ( *v8 >= 1.0 )
  229.     {
  230.       v9 = DOUBLE_350_0;
  231. LABEL_13:
  232.       v7 = fmin(v9, *v8);
  233.     }
  234.   }
  235.   else if ( *v8 >= 1.0 )
  236.   {
  237.     v9 = DOUBLE_300_0;
  238.     goto LABEL_13;
  239.   }
  240.   CVariableBitSet::SetDoubleValue_IfModifed(&m_data->m_NeedUpdatePacketBitSet, v8, v7, 0x3Bu);
  241.   return 1;
  242. }