Credits : slp13at420

This is an external mod dependent on my VIP Engine:
This requires you have installed my VIP Engine Found Here -> VIP Engine

search your source for these files to edit:
src/server/game/entities/Unit/Statsystem.cpp
src/server/game/enteties/Player/Player.cpp

add if not already added at top with #includes:
Code:

#include "Grumboz_VIP_Core.h"



Armor Mod
src/server/game/entities/Unit/Statsystem.cpp

at top with #includes
Code:

#include "Grumboz_VIP_Core.h"
line 249 inside void Player::UpdateArmor()
Code:

    float VIP_OFFSET = VIP::GetVIPOFFSET();
    uint32 acctId = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acctId);
    float MOD = (Pvip * VIP_OFFSET);
line 271 inside void Player::UpdateArmor()
replace SetArmor(uint32)value) with:

Code:

    uint32 THP = (uint32)value * MOD;
    int32 HPMOD = (int32)value + THP;

    SetArmor(HPMOD);



Health Mod
src/server/game/entities/Unit/Statsystem.cpp

at top with #includes
Code:

#include "Grumboz_VIP_Core.h"
#include "WorldSession.h"
line 302
replace void Player::UpdateMaxHealth()
Code:

void Player::UpdateMaxHealth()
{
    float VIP_OFFSET = VIP::GetVIPOFFSET();
    uint32 acctId = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acctId);
    float MOD = (Pvip * VIP_OFFSET);

    UnitMods unitMod = UNIT_MOD_HEALTH;

    float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreateHealth();
    value *= GetModifierValue(unitMod, BASE_PCT);
    value += GetModifierValue(unitMod, TOTAL_VALUE) + GetHealthBonusFromStamina();
    value *= GetModifierValue(unitMod, TOTAL_PCT);

    float THP = (uint32)value * MOD;
    float HPMOD = (uint32)value + THP;

    SetMaxHealth(uint32(HPMOD));
}



Item Stat Mod
src/server/game/enteties/Player/Player.cpp

inside void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply, bool only_level_scale /*= false*/)

line 7820
Code:

    float VIP_OFFSET = VIP::GetVIPOFFSET();
    uint32 acctId = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acctId);
    float MOD = (Pvip * VIP_OFFSET);
inside switch (statType)

use + (val * MOD) for increasing stats like
Code:

            case ITEM_MOD_MANA:
                HandleStatModifier(UNIT_MOD_MANA, BASE_VALUE, float(val + (val * MOD)), apply);
                break;
use - (val * MOD) for x taken ratings like
Code:

           case ITEM_MOD_HIT_TAKEN_RATING:
                ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val - (val * MOD)), apply);
                ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val - (val * MOD)), apply);
                ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val - (val * MOD)), apply);
                break;





Talent Mod
src/server/game/entities/Player.cpp

inside void Player::InitTalentForLevel()

line 3144
Code:
 

    uint32 acct_id = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acct_id);
    uint8 VIP_TP_BONUS = VIP::GetTALENTBONUS();
    uint8 TPMOD = (Pvip * VIP_TP_BONUS);
line 3157 replace if (m_usedTalentCount > (talentPointsForLevel)
Code:
 

        if (m_usedTalentCount > (talentPointsForLevel + TPMOD))
line 3171 replace SetFreeTalentPoints(talentPointsForLevel - m_usedTalentCount);
Code:
 

            SetFreeTalentPoints((talentPointsForLevel + TPMOD) - m_usedTalentCount);
inside bool Player::resetTalents(bool no_cost)
line 4393
Code:
 

    uint32 acct_id = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acct_id);
    uint8 VIP_TP_BONUS = VIP::GetTALENTBONUS();
    uint8 TPMOD = (Pvip * VIP_TP_BONUS);
inside if (m_usedTalentCount == 0)
line 4410
Code:
 

        SetFreeTalentPoints(talentPointsForLevel + TPMOD);
line 4472 replace SetFreeTalentPoints(talentPointsForLevel);
Code:
 

    SetFreeTalentPoints(talentPointsForLevel + TPMOD);



Weapon Dmg Mod
/src/server/game/enteties/Player/
player.cpp

inside _ApplyWeaponDamage()

line 8117
Code:

    float VIP_OFFSET = VIP::GetVIPOFFSET();
    uint32 acctId = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acctId);
    float MOD = (Pvip * VIP_OFFSET);
line 8133 replace minDamage and maxDamage
Code:

    float minDamage = proto->Damage[0].DamageMin + (proto->Damage[0].DamageMin / MOD);
    float maxDamage = proto->Damage[0].DamageMax + (proto->Damage[0].DamageMax / MOD);
-----------------------------------------------------

/src/server/game/enteties/Unit/StatSystem.cpp

void Player::CalculateMinMaxDamage line 534
Code:

    float VIP_OFFSET = VIP::GetVIPOFFSET();
    uint32 acctId = GetSession()->GetAccountId();
    uint8 Pvip = VIP::GetVIP(acctId);
    float MOD = (Pvip * VIP_OFFSET);
line 556
Code:

    float weaponMinDamage = GetWeaponDamageRange(attType, MINDAMAGE) + (GetWeaponDamageRange(attType, MINDAMAGE) / MOD);
    float weaponMaxDamage = GetWeaponDamageRange(attType, MAXDAMAGE) + (GetWeaponDamageRange(attType, MAXDAMAGE) / MOD);



› See More: [VIP][MOD] Player Stat rates