bool Player::UpdateAllStats() { for (int8 i = STAT_STRENGTH; i < MAX_STATS; ++i) { float value = GetTotalStatValue(Stats(i)); SetStat(Stats(i), int32(value)); } UpdateArmor(); // calls UpdateAttackPowerAndDamage() in UpdateArmor for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR UpdateAttackPowerAndDamage(true); UpdateMaxHealth(); for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); UpdateAllRatings(); UpdateAllCritPercentages(); UpdateAllSpellCritChances(); UpdateBlockPercentage(); UpdateParryPercentage(); UpdateDodgePercentage(); UpdateSpellDamageAndHealingBonus(); UpdateManaRegen(); UpdateExpertise(BASE_ATTACK); UpdateExpertise(OFF_ATTACK); RecalculateRating(CR_ARMOR_PENETRATION); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); return true; }
void Player::UpdateMasteryPercentage() { // No mastery float value = 0.0f; if (CanMastery() && getLevel() >= 80) { // Mastery from SPELL_AURA_MASTERY aura value += GetTotalAuraModifier(SPELL_AURA_MASTERY); // Mastery from rating value += GetRatingBonusValue(CR_MASTERY); value = value < 0.0f ? 0.0f : value; } SetFloatValue(PLAYER_MASTERY, value); // Custom MoP Script // 76671 - Mastery : Divine Bulwark - Update Block Percentage // 76857 - Mastery : Critical Block - Update Block Percentage if (HasAura(76671) || HasAura(76857)) UpdateBlockPercentage(); // 77494 - Mastery : Nature's Guardian - Update Armor if (HasAura(77494)) UpdateArmor(); }
void Player::UpdateDefenseBonusesMod() { UpdateBlockPercentage(); UpdateParryPercentage(); UpdateDodgePercentage(); }
bool Player::UpdateAllStats() { for (int8 i = STAT_STRENGTH; i < MAX_STATS; ++i) { float value = GetTotalStatValue(Stats(i)); SetStat(Stats(i), int32(value)); } UpdateArmor(); // calls UpdateAttackPowerAndDamage() in UpdateArmor for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR UpdateAttackPowerAndDamage(true); UpdateMaxHealth(); for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); // Custom MoP script // Jab Override Driver if (GetTypeId() == TYPEID_PLAYER && getClass() == CLASS_MONK) { Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND); if (mainItem && mainItem->GetTemplate()->Class == ITEM_CLASS_WEAPON && !HasAura(125660)) { RemoveAura(108561); // 2H Staff Override RemoveAura(115697); // 2H Polearm Override RemoveAura(115689); // D/W Axes RemoveAura(115694); // D/W Maces RemoveAura(115696); // D/W Swords switch (mainItem->GetTemplate()->SubClass) { case ITEM_SUBCLASS_WEAPON_STAFF: CastSpell(this, 108561, true); break; case ITEM_SUBCLASS_WEAPON_POLEARM: CastSpell(this, 115697, true); break; case ITEM_SUBCLASS_WEAPON_AXE: CastSpell(this, 115689, true); break; case ITEM_SUBCLASS_WEAPON_MACE: CastSpell(this, 115694, true); break; case ITEM_SUBCLASS_WEAPON_SWORD: CastSpell(this, 115696, true); break; default: break; } } else if (HasAura(125660)) { RemoveAura(108561); // 2H Staff Override RemoveAura(115697); // 2H Polearm Override RemoveAura(115689); // D/W Axes RemoveAura(115694); // D/W Maces RemoveAura(115696); // D/W Swords } } // Way of the Monk - 120277 if (GetTypeId() == TYPEID_PLAYER) { if (getClass() == CLASS_MONK && HasAura(120277)) { RemoveAurasDueToSpell(120275); RemoveAurasDueToSpell(108977); uint32 trigger = 0; if (IsTwoHandUsed()) { trigger = 120275; } else { Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND); Item* offItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); if (mainItem && mainItem->GetTemplate()->Class == ITEM_CLASS_WEAPON && offItem && offItem->GetTemplate()->Class == ITEM_CLASS_WEAPON) trigger = 108977; } if (trigger) CastSpell(this, trigger, true); } } // Assassin's Resolve - 84601 if (GetTypeId() == TYPEID_PLAYER) { if (getClass() == CLASS_ROGUE && ToPlayer()->GetSpecializationId(ToPlayer()->GetActiveSpec()) == SPEC_ROGUE_ASSASSINATION) { Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND); Item* offItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); if (((mainItem && mainItem->GetTemplate()->SubClass == ITEM_SUBCLASS_WEAPON_DAGGER) || (offItem && offItem->GetTemplate()->SubClass == ITEM_SUBCLASS_WEAPON_DAGGER))) { if (HasAura(84601)) RemoveAura(84601); CastSpell(this, 84601, true); } else RemoveAura(84601); } } UpdateAllRatings(); UpdateAllCritPercentages(); UpdateAllSpellCritChances(); UpdateBlockPercentage(); UpdateParryPercentage(); UpdateDodgePercentage(); UpdateSpellDamageAndHealingBonus(); UpdateManaRegen(); UpdateExpertise(BASE_ATTACK); UpdateExpertise(OFF_ATTACK); UpdateExpertise(RANGED_ATTACK); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); return true; }
bool Player::UpdateAllStats() { for (int8 i = STAT_STRENGTH; i < MAX_STATS; ++i) { float value = GetTotalStatValue(Stats(i)); SetStat(Stats(i), int32(value)); } UpdateArmor(); // calls UpdateAttackPowerAndDamage() in UpdateArmor for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR UpdateAttackPowerAndDamage(true); UpdateMaxHealth(); for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); // Custom MoP script // Jab Override Driver if (GetTypeId() == TYPEID_PLAYER && getClass() == CLASS_MONK) { Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND); if (mainItem && mainItem->GetTemplate()->Class == ITEM_CLASS_WEAPON && !HasAura(125660)) { RemoveAura(108561); // 2H Staff Override RemoveAura(115697); // 2H Polearm Override RemoveAura(115689); // D/W Axes RemoveAura(115694); // D/W Maces RemoveAura(115696); // D/W Swords switch (mainItem->GetTemplate()->SubClass) { case ITEM_SUBCLASS_WEAPON_STAFF: CastSpell(this, 108561, true); break; case ITEM_SUBCLASS_WEAPON_POLEARM: CastSpell(this, 115697, true); break; case ITEM_SUBCLASS_WEAPON_AXE: CastSpell(this, 115689, true); break; case ITEM_SUBCLASS_WEAPON_MACE: CastSpell(this, 115694, true); break; case ITEM_SUBCLASS_WEAPON_SWORD: CastSpell(this, 115696, true); break; default: break; } } else if (HasAura(125660)) { RemoveAura(108561); // 2H Staff Override RemoveAura(115697); // 2H Polearm Override RemoveAura(115689); // D/W Axes RemoveAura(115694); // D/W Maces RemoveAura(115696); // D/W Swords } } UpdateAllRatings(); UpdateAllCritPercentages(); UpdateAllSpellCritChances(); UpdateBlockPercentage(); UpdateParryPercentage(); UpdateDodgePercentage(); UpdateSpellDamageAndHealingBonus(); UpdateManaRegen(); UpdateExpertise(BASE_ATTACK); UpdateExpertise(OFF_ATTACK); UpdateExpertise(RANGED_ATTACK); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); return true; }