Advertisement
slp13at420

Grumboz_VIP_Engine Player Stats

Mar 1st, 2016
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 22.93 KB | None | 0 0
  1. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  2. index 7b3df51..d74a694 100644
  3. -- a/src/server/game/Entities/Player/Player.cpp
  4. ++ b/src/server/game/Entities/Player/Player.cpp
  5. @@ -2839,7 +2839,12 @@ void Player::GiveLevel(uint8 level)
  6.  
  7. void Player::InitTalentForLevel()
  8. {
  9.     uint8 level = getLevel();
  10.     uint32 acct_id = GetSession()->GetAccountId();
  11.     uint8 Pvip = VIP::GetPlayerVIP(acct_id);
  12.     uint8 VIP_TP_BONUS = VIP::GetTALENTBONUS();
  13.     uint8 TPMOD = (Pvip * VIP_TP_BONUS);
  14.    
  15.     uint8 level = getLevel();
  16.     // talents base at level diff (talents = level - 9 but some can be used already)
  17.     if (level < 10)
  18.     {
  19. @@ -2861,8 +2866,8 @@ void Player::InitTalentForLevel()
  20.         uint32 talentPointsForLevel = CalculateTalentsPoints();
  21.  
  22.         // if used more that have then reset
  23.         if (m_usedTalentCount > talentPointsForLevel)
  24.         {
  25.         if (m_usedTalentCount >(talentPointsForLevel + TPMOD))
  26.         {
  27.             if (!GetSession()->HasPermission(rbac::RBAC_PERM_SKIP_CHECK_MORE_TALENTS_THAN_ALLOWED))
  28.                 ResetTalents(true);
  29.             else
  30. @@ -2870,8 +2875,8 @@ void Player::InitTalentForLevel()
  31.         }
  32.         // else update amount of free points
  33.         else
  34.             SetFreeTalentPoints(talentPointsForLevel - m_usedTalentCount);
  35.     }
  36.             SetFreeTalentPoints((talentPointsForLevel + TPMOD) - m_usedTalentCount);
  37.     }
  38.  
  39.     if (!GetSession()->PlayerLoading())
  40.         SendTalentsInfoData(false);                         // update at client
  41. @@ -3916,7 +3921,13 @@ uint32 Player::ResetTalentsCost() const
  42.  
  43. bool Player::ResetTalents(bool no_cost)
  44. {
  45.     sScriptMgr->OnPlayerTalentsReset(this, no_cost);
  46.     sScriptMgr->OnPlayerTalentsReset(this, no_cost);
  47.  
  48.     uint32 acct_id = GetSession()->GetAccountId();
  49.     uint8 Pvip = VIP::GetPlayerVIP(acct_id);
  50.     uint8 VIP_TP_BONUS = VIP::GetTALENTBONUS();
  51.     uint8 TPMOD = (Pvip * VIP_TP_BONUS);
  52.    
  53.  
  54.     // not need after this call
  55.     if (HasAtLoginFlag(AT_LOGIN_RESET_TALENTS))
  56. @@ -3926,8 +3937,8 @@ bool Player::ResetTalents(bool no_cost)
  57.  
  58.     if (m_usedTalentCount == 0)
  59.     {
  60.         SetFreeTalentPoints(talentPointsForLevel);
  61.         return false;
  62.         SetFreeTalentPoints(talentPointsForLevel + TPMOD);
  63.         return false;
  64.     }
  65.  
  66.     uint32 cost = 0;
  67. @@ -3988,7 +3999,7 @@ bool Player::ResetTalents(bool no_cost)
  68.     _SaveSpells(trans);
  69.     CharacterDatabase.CommitTransaction(trans);
  70.  
  71.     SetFreeTalentPoints(talentPointsForLevel);
  72.     SetFreeTalentPoints(talentPointsForLevel + TPMOD);
  73.  
  74.     if (!no_cost)
  75.     {
  76. @@ -6428,7 +6439,14 @@ void Player::SendMovieStart(uint32 MovieId)
  77.  
  78. void Player::CheckAreaExploreAndOutdoor()
  79. {
  80.     if (!IsAlive())
  81.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  82.     uint32 acctId = GetSession()->GetAccountId();
  83.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  84.     float MOD = (Pvip * VIP_OFFSET);
  85.     float rate = sWorld->getRate(RATE_XP_EXPLORE);
  86.     rate = rate + (rate * MOD);
  87.    
  88.     if (!IsAlive())
  89.         return;
  90.  
  91.     if (IsInFlight())
  92. @@ -6481,7 +6499,7 @@ void Player::CheckAreaExploreAndOutdoor()
  93.                 uint32 XP = 0;
  94.                 if (diff < -5)
  95.                 {
  96.                     XP = uint32(sObjectMgr->GetBaseXP(getLevel()+5)*sWorld->getRate(RATE_XP_EXPLORE));
  97.                     XP = uint32(sObjectMgr->GetBaseXP(getLevel() + 5) * rate);
  98.                 }
  99.                 else if (diff > 5)
  100.                 {
  101. @@ -6489,11 +6507,11 @@ void Player::CheckAreaExploreAndOutdoor()
  102.                     if (exploration_percent < 0)
  103.                         exploration_percent = 0;
  104.  
  105.                     XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level)*exploration_percent/100*sWorld->getRate(RATE_XP_EXPLORE));
  106.                     XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level)*exploration_percent / 100 * rate);
  107.                 }
  108.                 else
  109.                 {
  110.                     XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level)*sWorld->getRate(RATE_XP_EXPLORE));
  111.                     XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level) * rate);
  112.                 }
  113.  
  114.                 GiveXP(XP, NULL);
  115. @@ -7373,7 +7391,12 @@ void Player::_ApplyItemMods(Item* item, uint8 slot, bool apply)
  116.  
  117. void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply, bool only_level_scale /*= false*/)
  118. {
  119.     if (slot >= INVENTORY_SLOT_BAG_END || !proto)
  120.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  121.     uint32 acctId = GetSession()->GetAccountId();
  122.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  123.     float MOD = (Pvip * VIP_OFFSET);
  124.    
  125.     if (slot >= INVENTORY_SLOT_BAG_END || !proto)
  126.         return;
  127.  
  128.     ScalingStatDistributionEntry const* ssd = proto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(proto->ScalingStatDistribution) : NULL;
  129. @@ -7415,148 +7438,148 @@ void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply
  130.         switch (statType)
  131.         {
  132.             case ITEM_MOD_MANA:
  133.                 HandleStatModifier(UNIT_MOD_MANA, BASE_VALUE, float(val), apply);
  134.                 HandleStatModifier(UNIT_MOD_MANA, BASE_VALUE, float(val + (val * MOD)), apply);
  135.                 break;
  136.             case ITEM_MOD_HEALTH:                           // modify HP
  137.                 HandleStatModifier(UNIT_MOD_HEALTH, BASE_VALUE, float(val), apply);
  138.                 HandleStatModifier(UNIT_MOD_HEALTH, BASE_VALUE, float(val + (val * MOD)), apply);
  139.                 break;
  140.             case ITEM_MOD_AGILITY:                          // modify agility
  141.                 HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
  142.                 HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val + (val * MOD)), apply);
  143.                 ApplyStatBuffMod(STAT_AGILITY, float(val), apply);
  144.                 break;
  145.             case ITEM_MOD_STRENGTH:                         //modify strength
  146.                 HandleStatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
  147.                 HandleStatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val + (val * MOD)), apply);
  148.                 ApplyStatBuffMod(STAT_STRENGTH, float(val), apply);
  149.                 break;
  150.             case ITEM_MOD_INTELLECT:                        //modify intellect
  151.                 HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
  152.                 HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val + (val * MOD)), apply);
  153.                 ApplyStatBuffMod(STAT_INTELLECT, float(val), apply);
  154.                 break;
  155.             case ITEM_MOD_SPIRIT:                           //modify spirit
  156.                 HandleStatModifier(UNIT_MOD_STAT_SPIRIT, BASE_VALUE, float(val), apply);
  157.                 HandleStatModifier(UNIT_MOD_STAT_SPIRIT, BASE_VALUE, float(val + (val * MOD)), apply);
  158.                 ApplyStatBuffMod(STAT_SPIRIT, float(val), apply);
  159.                 break;
  160.             case ITEM_MOD_STAMINA:                          //modify stamina
  161.                 HandleStatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val), apply);
  162.                 HandleStatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val + (val * MOD)), apply);
  163.                 ApplyStatBuffMod(STAT_STAMINA, float(val), apply);
  164.                 break;
  165.             case ITEM_MOD_DEFENSE_SKILL_RATING:
  166.                 ApplyRatingMod(CR_DEFENSE_SKILL, int32(val), apply);
  167.                 ApplyRatingMod(CR_DEFENSE_SKILL, int32(val + (val * MOD)), apply);
  168.                 break;
  169.             case ITEM_MOD_DODGE_RATING:
  170.                 ApplyRatingMod(CR_DODGE, int32(val), apply);
  171.                 ApplyRatingMod(CR_DODGE, int32(val + (val * MOD)), apply);
  172.                 break;
  173.             case ITEM_MOD_PARRY_RATING:
  174.                 ApplyRatingMod(CR_PARRY, int32(val), apply);
  175.                 ApplyRatingMod(CR_PARRY, int32(val + (val * MOD)), apply);
  176.                 break;
  177.             case ITEM_MOD_BLOCK_RATING:
  178.                 ApplyRatingMod(CR_BLOCK, int32(val), apply);
  179.                 ApplyRatingMod(CR_BLOCK, int32(val + (val * MOD)), apply);
  180.                 break;
  181.             case ITEM_MOD_HIT_MELEE_RATING:
  182.                 ApplyRatingMod(CR_HIT_MELEE, int32(val), apply);
  183.                 ApplyRatingMod(CR_HIT_MELEE, int32(val + (val * MOD)), apply);
  184.                 break;
  185.             case ITEM_MOD_HIT_RANGED_RATING:
  186.                 ApplyRatingMod(CR_HIT_RANGED, int32(val), apply);
  187.                 ApplyRatingMod(CR_HIT_RANGED, int32(val + (val * MOD)), apply);
  188.                 break;
  189.             case ITEM_MOD_HIT_SPELL_RATING:
  190.                 ApplyRatingMod(CR_HIT_SPELL, int32(val), apply);
  191.                 ApplyRatingMod(CR_HIT_SPELL, int32(val + (val * MOD)), apply);
  192.                 break;
  193.             case ITEM_MOD_CRIT_MELEE_RATING:
  194.                 ApplyRatingMod(CR_CRIT_MELEE, int32(val), apply);
  195.                 ApplyRatingMod(CR_CRIT_MELEE, int32(val + (val * MOD)), apply);
  196.                 break;
  197.             case ITEM_MOD_CRIT_RANGED_RATING:
  198.                 ApplyRatingMod(CR_CRIT_RANGED, int32(val), apply);
  199.                 ApplyRatingMod(CR_CRIT_RANGED, int32(val + (val * MOD)), apply);
  200.                 break;
  201.             case ITEM_MOD_CRIT_SPELL_RATING:
  202.                 ApplyRatingMod(CR_CRIT_SPELL, int32(val), apply);
  203.                 ApplyRatingMod(CR_CRIT_SPELL, int32(val + (val * MOD)), apply);
  204.                 break;
  205.             case ITEM_MOD_HIT_TAKEN_MELEE_RATING:
  206.                 ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val), apply);
  207.                 ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val + (val * MOD)), apply);
  208.                 break;
  209.             case ITEM_MOD_HIT_TAKEN_RANGED_RATING:
  210.                 ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val), apply);
  211.                 ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val + (val * MOD)), apply);
  212.                 break;
  213.             case ITEM_MOD_HIT_TAKEN_SPELL_RATING:
  214.                 ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val), apply);
  215.                 ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val + (val * MOD)), apply);
  216.                 break;
  217.             case ITEM_MOD_CRIT_TAKEN_MELEE_RATING:
  218.                 ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val), apply);
  219.                 ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val + (val * MOD)), apply);
  220.                 break;
  221.             case ITEM_MOD_CRIT_TAKEN_RANGED_RATING:
  222.                 ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val), apply);
  223.                 ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val + (val * MOD)), apply);
  224.                 break;
  225.             case ITEM_MOD_CRIT_TAKEN_SPELL_RATING:
  226.                 ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply);
  227.                 ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val + (val * MOD)), apply);
  228.                 break;
  229.             case ITEM_MOD_HASTE_MELEE_RATING:
  230.                 ApplyRatingMod(CR_HASTE_MELEE, int32(val), apply);
  231.                 ApplyRatingMod(CR_HASTE_MELEE, int32(val + (val * MOD)), apply);
  232.                 break;
  233.             case ITEM_MOD_HASTE_RANGED_RATING:
  234.                 ApplyRatingMod(CR_HASTE_RANGED, int32(val), apply);
  235.                 ApplyRatingMod(CR_HASTE_RANGED, int32(val + (val * MOD)), apply);
  236.                 break;
  237.             case ITEM_MOD_HASTE_SPELL_RATING:
  238.                 ApplyRatingMod(CR_HASTE_SPELL, int32(val), apply);
  239.                 ApplyRatingMod(CR_HASTE_SPELL, int32(val + (val * MOD)), apply);
  240.                 break;
  241.             case ITEM_MOD_HIT_RATING:
  242.                 ApplyRatingMod(CR_HIT_MELEE, int32(val), apply);
  243.                 ApplyRatingMod(CR_HIT_RANGED, int32(val), apply);
  244.                 ApplyRatingMod(CR_HIT_SPELL, int32(val), apply);
  245.                 ApplyRatingMod(CR_HIT_MELEE, int32(val + (val * MOD)), apply);
  246.                 ApplyRatingMod(CR_HIT_RANGED, int32(val + (val * MOD)), apply);
  247.                 ApplyRatingMod(CR_HIT_SPELL, int32(val + (val * MOD)), apply);
  248.                 break;
  249.             case ITEM_MOD_CRIT_RATING:
  250.                 ApplyRatingMod(CR_CRIT_MELEE, int32(val), apply);
  251.                 ApplyRatingMod(CR_CRIT_RANGED, int32(val), apply);
  252.                 ApplyRatingMod(CR_CRIT_SPELL, int32(val), apply);
  253.                 ApplyRatingMod(CR_CRIT_MELEE, int32(val + (val * MOD)), apply);
  254.                 ApplyRatingMod(CR_CRIT_RANGED, int32(val + (val * MOD)), apply);
  255.                 ApplyRatingMod(CR_CRIT_SPELL, int32(val + (val * MOD)), apply);
  256.                 break;
  257.             case ITEM_MOD_HIT_TAKEN_RATING:
  258.                 ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val), apply);
  259.                 ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val), apply);
  260.                 ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val), apply);
  261.                 ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val + (val * MOD)), apply);
  262.                 ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val + (val * MOD)), apply);
  263.                 ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val + (val * MOD)), apply);
  264.                 break;
  265.             case ITEM_MOD_CRIT_TAKEN_RATING:
  266.                 ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val), apply);
  267.                 ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val), apply);
  268.                 ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply);
  269.                 ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val + (val * MOD)), apply);
  270.                 ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val + (val * MOD)), apply);
  271.                 ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val + (val * MOD)), apply);
  272.                 break;
  273.             case ITEM_MOD_RESILIENCE_RATING:
  274.                 ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val), apply);
  275.                 ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val), apply);
  276.                 ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply);
  277.                 ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val + (val * MOD)), apply);
  278.                 ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val + (val * MOD)), apply);
  279.                 ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val + (val * MOD)), apply);
  280.                 break;
  281.             case ITEM_MOD_HASTE_RATING:
  282.                 ApplyRatingMod(CR_HASTE_MELEE, int32(val), apply);
  283.                 ApplyRatingMod(CR_HASTE_RANGED, int32(val), apply);
  284.                 ApplyRatingMod(CR_HASTE_SPELL, int32(val), apply);
  285.                 ApplyRatingMod(CR_HASTE_MELEE, int32(val), apply);
  286.                 ApplyRatingMod(CR_HASTE_RANGED, int32(val), apply);
  287.                 ApplyRatingMod(CR_HASTE_SPELL, int32(val), apply);
  288.                 break;
  289.             case ITEM_MOD_EXPERTISE_RATING:
  290.                 ApplyRatingMod(CR_EXPERTISE, int32(val), apply);
  291.                 ApplyRatingMod(CR_EXPERTISE, int32(val + (val * MOD)), apply);
  292.                 break;
  293.             case ITEM_MOD_ATTACK_POWER:
  294.                 HandleStatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_VALUE, float(val), apply);
  295.                 HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val), apply);
  296.                 HandleStatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_VALUE, float(val + (val * MOD)), apply);
  297.                 HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val + (val * MOD)), apply);
  298.                 break;
  299.             case ITEM_MOD_RANGED_ATTACK_POWER:
  300.                 HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val), apply);
  301.                 HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val + (val * MOD)), apply);
  302.                 break;
  303. //            case ITEM_MOD_FERAL_ATTACK_POWER:
  304. //                ApplyFeralAPBonus(int32(val), apply);
  305. //                break;
  306.             case ITEM_MOD_MANA_REGENERATION:
  307.                 ApplyManaRegenBonus(int32(val), apply);
  308.                 ApplyManaRegenBonus(int32(val + (val * MOD)), apply);
  309.                 break;
  310.             case ITEM_MOD_ARMOR_PENETRATION_RATING:
  311.                 ApplyRatingMod(CR_ARMOR_PENETRATION, int32(val), apply);
  312.                 ApplyRatingMod(CR_ARMOR_PENETRATION, int32(val + (val * MOD)), apply);
  313.                 break;
  314.             case ITEM_MOD_SPELL_POWER:
  315.                 ApplySpellPowerBonus(int32(val), apply);
  316.                 ApplySpellPowerBonus(int32(val + (val * MOD)), apply);
  317.                 break;
  318.             case ITEM_MOD_HEALTH_REGEN:
  319.                 ApplyHealthRegenBonus(int32(val), apply);
  320.                 ApplyHealthRegenBonus(int32(val + (val * MOD)), apply);
  321.                 break;
  322.             case ITEM_MOD_SPELL_PENETRATION:
  323.                 ApplySpellPenetrationBonus(val, apply);
  324.                 ApplySpellPenetrationBonus(val + (val * MOD), apply);
  325.                 break;
  326.             case ITEM_MOD_BLOCK_VALUE:
  327.                 HandleBaseModValue(SHIELD_BLOCK_VALUE, FLAT_MOD, float(val), apply);
  328.                 HandleBaseModValue(SHIELD_BLOCK_VALUE, FLAT_MOD, float(val + (val * MOD)), apply);
  329.                 break;
  330.             // deprecated item mods
  331.             case ITEM_MOD_SPELL_HEALING_DONE:
  332. @@ -7660,7 +7683,12 @@ void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply
  333.  
  334. void Player::_ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, ScalingStatValuesEntry const* ssv, bool apply)
  335. {
  336.     WeaponAttackType attType = BASE_ATTACK;
  337.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  338.     uint32 acctId = GetSession()->GetAccountId();
  339.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  340.     float MOD = (Pvip * VIP_OFFSET);
  341.    
  342.     WeaponAttackType attType = BASE_ATTACK;
  343.     float damage = 0.0f;
  344.  
  345.     if (slot == EQUIPMENT_SLOT_RANGED && (
  346. @@ -7674,8 +7702,8 @@ void Player::_ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, ScalingSt
  347.         attType = OFF_ATTACK;
  348.     }
  349.  
  350.     float minDamage = proto->Damage[0].DamageMin;
  351.     float maxDamage = proto->Damage[0].DamageMax;
  352.     float minDamage = proto->Damage[0].DamageMin + (proto->Damage[0].DamageMin / MOD);
  353.     float maxDamage = proto->Damage[0].DamageMax + (proto->Damage[0].DamageMax / MOD);
  354.  
  355.     // If set dpsMod in ScalingStatValue use it for min (70% from average), max (130% from average) damage
  356.     if (ssv)
  357. @@ -8337,7 +8365,14 @@ void Player::SendLootRelease(ObjectGuid guid)
  358.  
  359. void Player::SendLoot(ObjectGuid guid, LootType loot_type)
  360. {
  361.     if (ObjectGuid lguid = GetLootGUID())
  362.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  363.     uint32 acctId = GetSession()->GetAccountId();
  364.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  365.     float MOD = (Pvip * VIP_OFFSET);
  366.     float rate = sWorld->getRate(RATE_DROP_MONEY);
  367.     rate = MOD + rate;
  368.    
  369.     if (ObjectGuid lguid = GetLootGUID())
  370.         m_session->DoLootRelease(lguid);
  371.  
  372.     Loot* loot = 0;
  373. @@ -8474,7 +8509,10 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type)
  374.                     loot->FillLoot(item->GetEntry(), LootTemplates_Milling, this, true);
  375.                     break;
  376.                 default:
  377.                     loot->generateMoneyLoot(item->GetTemplate()->MinMoneyLoot, item->GetTemplate()->MaxMoneyLoot);
  378.                     uint32 pGoldMin = item->GetTemplate()->MinMoneyLoot + (item->GetTemplate()->MinMoneyLoot * MOD);
  379.                     uint32 pGoldMax = item->GetTemplate()->MaxMoneyLoot + (item->GetTemplate()->MaxMoneyLoot * MOD);
  380.  
  381.                     loot->generateMoneyLoot(pGoldMin, pGoldMax);
  382.                     loot->FillLoot(item->GetEntry(), LootTemplates_Item, this, true, loot->gold != 0);
  383.  
  384.                     // Force save the loot and money items that were just rolled
  385. @@ -8508,7 +8546,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type)
  386.                     loot->FillLoot(1, LootTemplates_Creature, this, true);
  387.             // It may need a better formula
  388.             // Now it works like this: lvl10: ~6copper, lvl70: ~9silver
  389.             bones->loot.gold = uint32(urand(50, 150) * 0.016f * std::pow(float(pLevel) / 5.76f, 2.5f) * sWorld->getRate(RATE_DROP_MONEY));
  390.             bones->loot.gold = uint32(urand(50, 150) * 0.016f * std::pow(float(pLevel) / 5.76f, 2.5f) * rate);
  391.         }
  392.  
  393.         if (bones->lootRecipient != this)
  394. @@ -8550,7 +8588,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type)
  395.                     // Generate extra money for pick pocket loot
  396.                     const uint32 a = urand(0, creature->getLevel() / 2);
  397.                     const uint32 b = urand(0, getLevel() / 2);
  398.                     loot->gold = uint32(10 * (a + b) * sWorld->getRate(RATE_DROP_MONEY));
  399.                     loot->gold = uint32(10 * (a + b) * rate);
  400.                     permission = OWNER_PERMISSION;
  401.                 }
  402.                 else
  403. diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
  404. index a8e13a9..384caf6 100644
  405. -- a/src/server/game/Entities/Unit/StatSystem.cpp
  406. ++ b/src/server/game/Entities/Unit/StatSystem.cpp
  407. @@ -20,6 +20,8 @@
  408. #include "Player.h"
  409. #include "Pet.h"
  410. #include "Creature.h"
  411. #include "Grumboz_VIP_Core.h"
  412. #include "WorldSession.h"
  413. #include "SharedDefines.h"
  414. #include "SpellAuras.h"
  415. #include "SpellAuraEffects.h"
  416. @@ -242,7 +244,12 @@ void Player::UpdateResistances(uint32 school)
  417.  
  418. void Player::UpdateArmor()
  419. {
  420.     UnitMods unitMod = UNIT_MOD_ARMOR;
  421.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  422.     uint32 acctId = GetSession()->GetAccountId();
  423.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  424.     float MOD = (Pvip * VIP_OFFSET);
  425.    
  426.     UnitMods unitMod = UNIT_MOD_ARMOR;
  427.  
  428.     float value = GetModifierValue(unitMod, BASE_VALUE);    // base armor (from items)
  429.     value *= GetModifierValue(unitMod, BASE_PCT);           // armor percent from items
  430. @@ -259,7 +266,10 @@ void Player::UpdateArmor()
  431.  
  432.     value *= GetModifierValue(unitMod, TOTAL_PCT);
  433.  
  434.     SetArmor(int32(value));
  435.     uint32 THP = (uint32)value * MOD;
  436.     int32 HPMOD = (int32)value + THP;
  437.  
  438.     SetArmor(HPMOD);
  439.  
  440.     Pet* pet = GetPet();
  441.     if (pet)
  442. @@ -289,14 +299,22 @@ float Player::GetManaBonusFromIntellect()
  443.  
  444. void Player::UpdateMaxHealth()
  445. {
  446.     UnitMods unitMod = UNIT_MOD_HEALTH;
  447.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  448.     uint32 acctId = GetSession()->GetAccountId();
  449.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  450.     float MOD = (Pvip * VIP_OFFSET);
  451.  
  452.     float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreateHealth();
  453.     value *= GetModifierValue(unitMod, BASE_PCT);
  454.     value += GetModifierValue(unitMod, TOTAL_VALUE) + GetHealthBonusFromStamina();
  455.     value *= GetModifierValue(unitMod, TOTAL_PCT);
  456.     UnitMods unitMod = UNIT_MOD_HEALTH;
  457.  
  458.     SetMaxHealth((uint32)value);
  459.     float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreateHealth();
  460.     value *= GetModifierValue(unitMod, BASE_PCT);
  461.     value += GetModifierValue(unitMod, TOTAL_VALUE) + GetHealthBonusFromStamina();
  462.     value *= GetModifierValue(unitMod, TOTAL_PCT);
  463.  
  464.     float THP = (uint32)value * MOD;
  465.     float HPMOD = (uint32)value + THP;
  466.  
  467.     SetMaxHealth(uint32(HPMOD));
  468. }
  469.  
  470. void Player::UpdateMaxPower(Powers power)
  471. @@ -514,7 +532,12 @@ void Player::UpdateShieldBlockValue()
  472.  
  473. void Player::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage)
  474. {
  475.     UnitMods unitMod;
  476.     float VIP_OFFSET = VIP::GetVIPOFFSET();
  477.     uint32 acctId = GetSession()->GetAccountId();
  478.     uint8 Pvip = VIP::GetPlayerVIP(acctId);
  479.     float MOD = (Pvip * VIP_OFFSET);
  480.    
  481.     UnitMods unitMod;
  482.  
  483.     switch (attType)
  484.     {
  485. @@ -537,8 +560,8 @@ void Player::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bo
  486.     float totalValue = GetModifierValue(unitMod, TOTAL_VALUE);
  487.     float totalPct   = addTotalPct ? GetModifierValue(unitMod, TOTAL_PCT) : 1.0f;
  488.  
  489.     float weaponMinDamage = GetWeaponDamageRange(attType, MINDAMAGE);
  490.     float weaponMaxDamage = GetWeaponDamageRange(attType, MAXDAMAGE);
  491.     float weaponMinDamage = GetWeaponDamageRange(attType, MINDAMAGE) + (GetWeaponDamageRange(attType, MINDAMAGE) / MOD);
  492.     float weaponMaxDamage = GetWeaponDamageRange(attType, MAXDAMAGE) + (GetWeaponDamageRange(attType, MAXDAMAGE) / MOD);
  493.  
  494.     if (IsInFeralForm()) // check if player is druid and in cat or bear forms
  495.     {
  496. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement