Advertisement
nirn

Untitled

Sep 21st, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.67 KB | None | 0 0
  1. //Calculation of skills parameters buffs/debuffs etc.
  2. int(__thiscall* CSkillManager__CalAffect)(void * tThis, unsigned int dwCasterId, unsigned __int16 wKind, unsigned int *pdwParams, int bAdd) = (int(__thiscall*)(void * tThis, unsigned int dwCasterId, unsigned __int16 wKind, unsigned int *pdwParams, int bAdd))(0x004A7F20);
  3. int __fastcall dCSkillManager__CalAffect(void * This, void* notUsed, unsigned int dwCasterId, unsigned __int16 wKind, unsigned int *pdwParams, int bAdd)
  4. {
  5.     CSkillManager * skillMgr = (CSkillManager*)This;
  6.     switch (wKind)
  7.     {
  8.         //RUMIR
  9.     case Skillidx::RUMIR_CASUAL_LOOP:
  10.     {
  11.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_CASUAL_LOOP_CRIT_HEAL_RATE, pdwParams[0], bAdd);
  12.         break;
  13.     }
  14.     case Skillidx::RUMIR_VINE_PROTECTION:
  15.     {
  16.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_RUMIR_VINE_DECREASE_DAMAGE, pdwParams[1], bAdd);
  17.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_RUMIR_VINE_STUN_CHANCE, pdwParams[0], bAdd);
  18.  
  19.         break;
  20.     }
  21.     case Skillidx::RUMIR_REVIVE_FORCE:
  22.     {
  23.         if (bAdd)
  24.         {
  25.             skillMgr->_option.SetOption(Skillabilityoptiontype::SAOT_REVIVE_FORCE_RATE, pdwParams[0]);
  26.         }
  27.         else
  28.         {
  29.             skillMgr->_option.SetOption(Skillabilityoptiontype::SAOT_REVIVE_FORCE_RATE, 0);
  30.         }
  31.         break;
  32.     }
  33.     case Skillidx::RUMIR_GROWTH_ACCELERATION:
  34.     {
  35.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_ATTACK_SPEED_RATE, pdwParams[1], bAdd);
  36.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, pdwParams[0], bAdd);
  37.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MISSILE_ATTACK_RATE, pdwParams[0], bAdd);
  38.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_ATTACK_FORCE_RATE, pdwParams[0], bAdd);
  39.         break;
  40.     }
  41.     case Skillidx::RUMIR_BLESSED_CROWN:
  42.     {
  43.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MENTALITY_RATE, pdwParams[0], bAdd);
  44.         break;
  45.     }
  46.     case Skillidx::RUMIR_SEQUOIAS_FAVOR:
  47.     {
  48.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_HEALTH_RATE_NO_LIFE_ADD, pdwParams[0], bAdd);
  49.         break;
  50.     }
  51.     case Skillidx::RUMIR_PRISM_SPHERE:
  52.     {
  53.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MULTI_ATTACK_COUNT_BY_DESTROY, pdwParams[2], bAdd);
  54.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MULTI_ATTACK_RANGE_BY_DESTROY, 2000, bAdd);
  55.         break;
  56.     }
  57.     case Skillidx::RUMIR_ARRENDAL_MASTERY:
  58.     {
  59.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_ATTACK_BY_PSYCHE, pdwParams[0], bAdd);
  60.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_HEAL_RECOVERY_RATE, pdwParams[1], bAdd);
  61.         break;
  62.     }
  63.     case Skillidx::RUMIR_TRINITY_FORCE:
  64.     {
  65.         std::shared_ptr<PlayerExtensions> extsn = MapUtil::getPlayerExtension(skillMgr->_biotic->_iD.id);
  66.         if (extsn)
  67.         {
  68.             extsn->SetValues(PExtensionEnums::TRINITY_FORCE_BOOSTER_PTS, pdwParams[4], bAdd);
  69.  
  70.         }
  71.         break;
  72.     }
  73.     /*NOIR BUFFS
  74.     *
  75.     *
  76.     */
  77.     case Skillidx::NOIR_WINDY_CHAIN:
  78.     {
  79.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MOVE_SPEED_RATE, -static_cast<signed int>(pdwParams[2]), bAdd);
  80.         break;
  81.     }
  82.     case Skillidx::NOIR_DISTORTION_CLAW_GRAVITY:
  83.     {
  84.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MOVE_SPEED_RATE, -static_cast<signed int>(pdwParams[0]), bAdd);
  85.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_ATTACK_SPEED_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  86.         break;
  87.     }
  88.     case Skillidx::NOIR_DISTORTION_CLAW_CHAOS:
  89.     {
  90.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, -static_cast<signed int>(pdwParams[2]), bAdd);
  91.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MISSILE_ATTACK_RATE, -static_cast<signed int>(pdwParams[2]), bAdd);
  92.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_ATTACK_FORCE_RATE, -static_cast<signed int>(pdwParams[2]), bAdd);
  93.         break;
  94.     }
  95.     case Skillidx::NOIR_TRINITY_FORCE:
  96.     {
  97.         std::shared_ptr<PlayerExtensions> extsn = MapUtil::getPlayerExtension(skillMgr->_biotic->_iD.id);
  98.         if (extsn)
  99.         {
  100.             extsn->SetValues(PExtensionEnums::TRINITY_FORCE_BOOSTER_PTS, pdwParams[4], bAdd);
  101.             //skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_REDUCED_DAMAGE_RATE_BY_EQUALITY, pdwParams[1], bAdd);
  102.             //skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_PROBABILITY, 1000000, bAdd);
  103.             //skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_RANGE, pdwParams[3], bAdd);
  104.         }
  105.         break;
  106.     }
  107.     case Skillidx::NOIR_DISTORTION_CLAW_REVERSE:
  108.     {
  109.         std::shared_ptr<PlayerExtensions> extsn = MapUtil::getPlayerExtension(skillMgr->_biotic->_iD.id);
  110.         if (extsn)
  111.         {
  112.             extsn->SetValues(PExtensionEnums::REVERSE_CLAW_BOOST_DAMAGE, pdwParams[1], bAdd);
  113.         }
  114.         break;
  115.     }
  116.     case Skillidx::NOIR_DIMENSIONAL_COAT:
  117.     {
  118.         std::shared_ptr<PlayerExtensions> extsn = MapUtil::getPlayerExtension(skillMgr->_biotic->_iD.id);
  119.         if (extsn)
  120.         {
  121.             extsn->SetValues(PExtensionEnums::DIMENSIONAL_COAT_TP_BOOSTER_PTS, pdwParams[4], bAdd);
  122.             extsn->SetValues(PExtensionEnums::DIMENSIONAL_COAT_HEAL_RATE, pdwParams[0], bAdd);
  123.         }
  124.         break;
  125.     }
  126.     case Skillidx::NOIR_ARRENDAL_MASTERY:
  127.     {
  128.         //skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_BY_STRENGTH, pdwParams[0], bAdd);
  129.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, pdwParams[0], bAdd);
  130.         break;
  131.     }
  132.     case Skillidx::NOIR_DARK_ASSIMILATION:
  133.     {
  134.         //skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, pdwParams[0], bAdd);
  135.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_ATTACK_SPEED_RATE, pdwParams[0], bAdd);
  136.         break;
  137.     }
  138.     case Skillidx::NOIR_SPIRIT_CONCENTRATION:
  139.     {
  140.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_STRENGTH_RATE, pdwParams[0], bAdd);
  141.         break;
  142.     }
  143.     case Skillidx::TR_TUNE_OF_LIFE:
  144.     {
  145.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, pdwParams[0], bAdd);
  146.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MISSILE_ATTACK_RATE, pdwParams[0], bAdd);
  147.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_ATTACK_FORCE_RATE, pdwParams[0], bAdd);
  148.         break;
  149.     }
  150.     case Skillidx::TR_DORMANT_POWER:
  151.     {
  152.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAX_LIFE_ADD_TRINITY_BY_SKILL_POINT, pdwParams[0], bAdd);
  153.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAX_MANA_ADD_TRINITY_BY_SKILL_POINT, pdwParams[1], bAdd);
  154.         break;
  155.     }
  156.     /*TRINITY
  157.     *END
  158.     *
  159.     */
  160.  
  161.     case Skillidx::SCOUT_HERO_SKILL_TEMP_1:
  162.     {
  163.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MULTI_ATTACK_FORCE_RATE_BY_DESTROY, *pdwParams, bAdd);
  164.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MULTI_ATTACK_COUNT_BY_DESTROY, pdwParams[2], bAdd);
  165.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MULTI_ATTACK_RANGE_BY_DESTROY, 2000, bAdd);
  166.         break;
  167.     }
  168.     case Skillidx::PREDATOR_HERO_SKILL_TEMP_1:
  169.     {
  170.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_REDUCED_DAMAGE_RATE_BY_EQUALITY, pdwParams[1], bAdd);
  171.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_PROBABILITY, *pdwParams, bAdd);
  172.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_RANGE, pdwParams[3], bAdd);
  173.         break;
  174.     }
  175.     case Skillidx::BERSERKER_HERO_SKILL_TEMP_1:
  176.     {
  177.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_REDUCED_DAMAGE_RATE_BY_EQUALITY, pdwParams[1], bAdd);
  178.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_PROBABILITY, *pdwParams, bAdd);
  179.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_RANGE, pdwParams[3], bAdd);
  180.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_TOTAL_DEFENCE_RATE, pdwParams[4], bAdd);
  181.         break;
  182.     }
  183.     case Skillidx::GUARDIAN_HERO_SKILL_TEMP_2:
  184.     {
  185.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, *pdwParams, bAdd);
  186.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_ATTACK_SPEED_RATE, pdwParams[1], bAdd);
  187.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MOVE_SPEED_RATE, pdwParams[2], bAdd);
  188.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_LIFE_DRAIN_RATE, pdwParams[3], bAdd);
  189.         break;
  190.     }
  191.     case Skillidx::GUARDIAN_HERO_SKILL_TEMP_1:
  192.     {
  193.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_REDUCED_DAMAGE_RATE_BY_EQUALITY, pdwParams[1], bAdd);
  194.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_PROBABILITY, *pdwParams, bAdd);
  195.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_WIDE_ATTACK_RANGE, pdwParams[3], bAdd);
  196.         break;
  197.     }
  198.     case Skillidx::WIZARD_HERO_SKILL_TEMP_1:
  199.     {
  200.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MENTALITY_RATE, *pdwParams, bAdd);
  201.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_ATTACK_SPEED_RATE, pdwParams[1], bAdd);
  202.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MOVE_SPEED_RATE, pdwParams[2], bAdd);
  203.         break;
  204.     }
  205.     case Skillidx::AVENGER_HERO_SKILL_TEMP_1:
  206.     {
  207.         skillMgr->_biotic->_skillSlot._orderSwingCount = 0;
  208.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_PARRY_RATE, pdwParams[1], bAdd);
  209.         break;
  210.     }
  211.     case Skillidx::SAVAGE_HERO_SKILL_TEMP_1:
  212.     {
  213.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  214.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MISSILE_ATTACK_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  215.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_ATTACK_FORCE_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  216.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_DEFENCE_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  217.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_PHYSICS_DEFENCE_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  218.         break;
  219.     }
  220.     case Skillidx::WARLOCK_HERO_SKILL_TEMP_1:
  221.     {
  222.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MELEE_ATTACK_RATE, -static_cast<signed int>(pdwParams[4]), bAdd);
  223.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MISSILE_ATTACK_RATE, -static_cast<signed int>(pdwParams[4]), bAdd);
  224.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MAGIC_ATTACK_FORCE_RATE, -static_cast<signed int>(pdwParams[4]), bAdd);
  225.         break;
  226.     }
  227.     case Skillidx::TEMPLER_HERO_SKILL_TEMP_1:
  228.     {
  229.         skillMgr->_option.CalOption(Skillabilityoptiontype::SAOT_MOVE_SPEED_RATE, -static_cast<signed int>(pdwParams[1]), bAdd);
  230.         break;
  231.     }
  232.     default:
  233.     {
  234.         return CSkillManager__CalAffect(This, dwCasterId, wKind, pdwParams, bAdd);
  235.     }
  236.     }
  237.     CPlayer * player = (CPlayer *)___RTDynamicCast(skillMgr->_biotic, 0, (void *)0x786588, (void *)0x7865B8, 0);
  238.     if (player)
  239.         player->CalAllAbility();
  240.     else
  241.     {
  242.         Monster * monsta = (Monster *)___RTDynamicCast(skillMgr->_biotic, 0, (void *)0x786588, (void *)0x00786EB0, 0);
  243.         if (monsta) {
  244.             monsta->CalAllAbility();
  245.         }
  246.  
  247.     }
  248.     return 1;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement