SkyFire_548 icon indicating copy to clipboard operation
SkyFire_548 copied to clipboard

Combat Rating: PvP Power

Open AriDEV opened this issue 9 years ago • 10 comments
trafficstars

Damage:

  • 1% extra damage requires 400 PvP Power.

Healing:

  • PvP Power's bonus to healing is based on class and specialization:
    • Healing specializations receive a 100% bonus to healing from PvP Power.
    • Damage specializations for druids, monks, paladins, priests, and shaman receive a 70% bonus to healing from PvP Power.
    • All other specializations and classes (including tanking) receive a 40% bonus to healing from PvP Power.

AriDEV avatar Feb 25 '16 03:02 AriDEV

void Player::UpdatePvPPower()
{
    float PowerPct = GetRatingBonusValue(CR_PVP_POWER);
    uint16 DamagePct, HealPct = 0;

    switch (GetSpecializationId(GetActiveSpec())) // can be little different on SF
    {
        case SPEC_MAGE_ARCANE:
        case SPEC_MAGE_FIRE:
        case SPEC_MAGE_FROST:
        case SPEC_WARRIOR_ARMS:
        case SPEC_WARRIOR_FURY:
        case SPEC_MONK_BREWMASTER:
            DamagePct = 100;
            HealPct = 40;
            break;
        case SPEC_SHAMAN_ELEMENTAL:
        case SPEC_SHAMAN_ENHANCEMENT:
        case SPEC_PRIEST_SHADOW:
        case SPEC_MONK_WINDWALKER:
            DamagePct = 100;
            HealPct = 70;
            break;
        case SPEC_PALADIN_HOLY:
        case SPEC_DRUID_RESTORATION:
        case SPEC_MONK_MISTWEAVER:
            HealPct = 100;
            break;
        default:
            break;
    }

    SetFloatValue(PLAYER_PVP_POWER_DAMAGE, CalculatePct(PowerPct, DamagePct));
    SetFloatValue(PLAYER_PVP_POWER_HEALING, CalculatePct(PowerPct, HealPct));
}

like this ( add other specs to enum, this is just for right tooltip update ); should be called at Player::UpdateRating(***);

and i think u understand how to add same to damage/heal/absorb functions

soulfrost avatar Feb 25 '16 18:02 soulfrost

Player.h

void UpdateRating(CombatRating cr);
void UpdateAllRatings();
void UpdateMastery();
+ void UpdatePVPPower(int32 amount);

Player.cpp

        case CR_ARMOR_PENETRATION:
            if (affectStats)
                UpdateArmorPenetration(amount);
            break;
        case CR_MASTERY:
            UpdateMastery();
       + case CR_PVP_POWER:
            +UpdatePVPPower(amount);
            +break;

StatSystem.cpp

void Player::UpdatePVPPower(int32 amount)
{
    SetStatFloatValue(PLAYER_FIELD_PVP_POWER_DAMAGE, GetUInt32Value(PLAYER_FIELD_COMBAT_RATINGS + CR_PVP_POWER) * GetRatingMultiplier(CR_PVP_POWER));
    SetStatFloatValue(PLAYER_FIELD_PVP_POWER_HEALING, (GetUInt32Value(PLAYER_FIELD_COMBAT_RATINGS + CR_PVP_POWER) * GetRatingMultiplier(CR_PVP_POWER)) / 2);
}

const float m_diminishing_k[MAX_CLASSES] =
{
    0.9560f,  // Warrior
    0.9560f,  // Paladin
    0.9880f,  // Hunter
    0.9880f,  // Rogue
    0.9830f,  // Priest
    0.9560f,  // DK
    0.9880f,  // Shaman
    0.9830f,  // Mage
    0.9830f,  // Warlock
    0.9880f,  // Monk
    0.9720f   // Druid
};

PVP Power

JustZerooo avatar Feb 25 '16 19:02 JustZerooo

rofl, u are not understain code which u are copypasted again,

void Player::UpdatePVPPower(int32 amount)
{
    SetStatFloatValue(PLAYER_FIELD_PVP_POWER_DAMAGE, GetUInt32Value(PLAYER_FIELD_COMBAT_RATINGS + CR_PVP_POWER) * GetRatingMultiplier(CR_PVP_POWER));
    SetStatFloatValue(PLAYER_FIELD_PVP_POWER_HEALING, (GetUInt32Value(PLAYER_FIELD_COMBAT_RATINGS + CR_PVP_POWER) * GetRatingMultiplier(CR_PVP_POWER)) / 2);
}

WRONG; read this again

Healing specializations receive a 100% bonus to healing from PvP Power.
Damage specializations for druids, monks, paladins, priests, and shaman receive a 70% bonus to healing from PvP Power.
All other specializations and classes (including tanking) receive a 40% bonus to healing from PvP Power.

and... this was copypasterd from https://github.com/Palabola/TrinityCore-MOP-5.1.0 (called like SkyMist emu)

soulfrost avatar Feb 25 '16 19:02 soulfrost

Omg are you fucking retartd ?! I using a PRIVATE Non Public Core ! No one has Access to this Core !

Trololol... Look for MantidCore !

JustZerooo avatar Feb 25 '16 20:02 JustZerooo

code which u ling are copypasted from SkyMist emu (maybe from this emu fork which was renamed :D ), but anyway like u said above - u had just copypasted and dont understand how it works and how it should work ( like was on retail )

soulfrost avatar Feb 25 '16 20:02 soulfrost

bla bla bla bla bla bla bvlaaaa

so many bullshit ...

JustZerooo avatar Feb 25 '16 21:02 JustZerooo

@to ur "new" screen

retail data:
Damage specializations for druids, monks, paladins, priests, and shaman receive a 70% bonus to healing from PvP Power.

on ur screen i can see total value 9.22% and heal value 4.61% , heal value seems 9.22 / 4.61 = 50%, but it should be 70%

why u are so stupid and dont agree with mine code which working for ~3 years like it should?

or u are "TRUE MAN" who can just make wrong hacks? ahahaha

soulfrost avatar Feb 25 '16 21:02 soulfrost

@soulfrost looks legit, but i think healing specs also should have damagepct and not only healing or what u think ?

and then we still miss the calculation only i think to apply the % to the damage/heal as u mentioned

AriDEV avatar Feb 25 '16 21:02 AriDEV

@Arcidev http://wow.gamepedia.com/PvP_Power (also cant find it on other source) there's no information about this, but we dint get any repots for wrong pvpPower scaling on diffrent spec groups - so, seems like healers should not get any damage bonus from it

for applying to damage/heal/absorb calcs can be used function with this code

if (taget->GetTypeId() == TYPEID_PLAYER)
    AddPct(damage_or_absorb_or_heal_value, player->GetFloatValue(isHeal ? PLAYER_PVP_POWER_HEALING: PLAYER_PVP_POWER_DAMAGE);

at this functions

MeleeDamageBonusDone
CalcAbsorb
SpellDamageBonusDone
SpellHealingBonusDone

soulfrost avatar Feb 25 '16 21:02 soulfrost

ok healers dont get any damage bonus, they get only heal bonus.

AriDEV avatar Feb 25 '16 21:02 AriDEV