mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
Various Cleanups (game S)
This commit is contained in:
parent
865f7d7428
commit
08fd085549
18 changed files with 3168 additions and 3146 deletions
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
bool Player::UpdateStats(Stats stat)
|
||||
{
|
||||
if(stat > STAT_SPIRIT)
|
||||
if (stat > STAT_SPIRIT)
|
||||
return false;
|
||||
|
||||
// value = ((base_value * base_pct) + total_value) * total_pct
|
||||
|
|
@ -39,14 +39,14 @@ bool Player::UpdateStats(Stats stat)
|
|||
|
||||
SetStat(stat, int32(value));
|
||||
|
||||
if(stat == STAT_STAMINA || stat == STAT_INTELLECT)
|
||||
if (stat == STAT_STAMINA || stat == STAT_INTELLECT)
|
||||
{
|
||||
Pet *pet = GetPet();
|
||||
if(pet)
|
||||
Pet* pet = GetPet();
|
||||
if (pet)
|
||||
pet->UpdateStats(stat);
|
||||
}
|
||||
|
||||
switch(stat)
|
||||
switch (stat)
|
||||
{
|
||||
case STAT_STRENGTH:
|
||||
UpdateShieldBlockValue();
|
||||
|
|
@ -79,7 +79,7 @@ bool Player::UpdateStats(Stats stat)
|
|||
// Update ratings in exist SPELL_AURA_MOD_RATING_FROM_STAT and only depends from stat
|
||||
uint32 mask = 0;
|
||||
AuraList const& modRatingFromStat = GetAurasByType(SPELL_AURA_MOD_RATING_FROM_STAT);
|
||||
for(AuraList::const_iterator i = modRatingFromStat.begin();i != modRatingFromStat.end(); ++i)
|
||||
for (AuraList::const_iterator i = modRatingFromStat.begin(); i != modRatingFromStat.end(); ++i)
|
||||
if (Stats((*i)->GetMiscBValue()) == stat)
|
||||
mask |= (*i)->GetMiscValue();
|
||||
if (mask)
|
||||
|
|
@ -97,7 +97,7 @@ void Player::ApplySpellPowerBonus(int32 amount, bool apply)
|
|||
|
||||
// For speed just update for client
|
||||
ApplyModUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply);
|
||||
for(int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
|
||||
for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
|
||||
ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS+i, amount, apply);;
|
||||
}
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ void Player::UpdateSpellDamageAndHealingBonus()
|
|||
// Get healing bonus for all schools
|
||||
SetStatInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, SpellBaseHealingBonusDone(SPELL_SCHOOL_MASK_ALL));
|
||||
// Get damage bonus for all schools
|
||||
for(int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
|
||||
for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
|
||||
SetStatInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS+i, SpellBaseDamageBonusDone(SpellSchoolMask(1 << i)));
|
||||
}
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ bool Player::UpdateAllStats()
|
|||
UpdateAttackPowerAndDamage(true);
|
||||
UpdateMaxHealth();
|
||||
|
||||
for(int i = POWER_MANA; i < MAX_POWERS; ++i)
|
||||
for (int i = POWER_MANA; i < MAX_POWERS; ++i)
|
||||
UpdateMaxPower(Powers(i));
|
||||
|
||||
UpdateAllRatings();
|
||||
|
|
@ -146,13 +146,13 @@ bool Player::UpdateAllStats()
|
|||
|
||||
void Player::UpdateResistances(uint32 school)
|
||||
{
|
||||
if(school > SPELL_SCHOOL_NORMAL)
|
||||
if (school > SPELL_SCHOOL_NORMAL)
|
||||
{
|
||||
float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school));
|
||||
SetResistance(SpellSchools(school), int32(value));
|
||||
|
||||
Pet *pet = GetPet();
|
||||
if(pet)
|
||||
Pet* pet = GetPet();
|
||||
if (pet)
|
||||
pet->UpdateResistances(school);
|
||||
}
|
||||
else
|
||||
|
|
@ -171,10 +171,10 @@ void Player::UpdateArmor()
|
|||
|
||||
//add dynamic flat mods
|
||||
AuraList const& mResbyIntellect = GetAurasByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT);
|
||||
for(AuraList::const_iterator i = mResbyIntellect.begin();i != mResbyIntellect.end(); ++i)
|
||||
for (AuraList::const_iterator i = mResbyIntellect.begin(); i != mResbyIntellect.end(); ++i)
|
||||
{
|
||||
Modifier* mod = (*i)->GetModifier();
|
||||
if(mod->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL)
|
||||
if (mod->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL)
|
||||
value += int32(GetStat(Stats((*i)->GetMiscBValue())) * mod->m_amount / 100.0f);
|
||||
}
|
||||
|
||||
|
|
@ -182,8 +182,8 @@ void Player::UpdateArmor()
|
|||
|
||||
SetArmor(int32(value));
|
||||
|
||||
Pet *pet = GetPet();
|
||||
if(pet)
|
||||
Pet* pet = GetPet();
|
||||
if (pet)
|
||||
pet->UpdateArmor();
|
||||
|
||||
UpdateAttackPowerAndDamage(); // armor dependent auras update for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR
|
||||
|
|
@ -244,7 +244,7 @@ void Player::ApplyFeralAPBonus(int32 amount, bool apply)
|
|||
UpdateAttackPowerAndDamage();
|
||||
}
|
||||
|
||||
void Player::UpdateAttackPowerAndDamage(bool ranged )
|
||||
void Player::UpdateAttackPowerAndDamage(bool ranged)
|
||||
{
|
||||
float val2 = 0.0f;
|
||||
float level = float(getLevel());
|
||||
|
|
@ -255,19 +255,19 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
uint16 index_mod = UNIT_FIELD_ATTACK_POWER_MODS;
|
||||
uint16 index_mult = UNIT_FIELD_ATTACK_POWER_MULTIPLIER;
|
||||
|
||||
if(ranged)
|
||||
if (ranged)
|
||||
{
|
||||
index = UNIT_FIELD_RANGED_ATTACK_POWER;
|
||||
index_mod = UNIT_FIELD_RANGED_ATTACK_POWER_MODS;
|
||||
index_mult = UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER;
|
||||
|
||||
switch(getClass())
|
||||
switch (getClass())
|
||||
{
|
||||
case CLASS_HUNTER: val2 = level * 2.0f + GetStat(STAT_AGILITY) - 10.0f; break;
|
||||
case CLASS_ROGUE: val2 = level + GetStat(STAT_AGILITY) - 10.0f; break;
|
||||
case CLASS_WARRIOR:val2 = level + GetStat(STAT_AGILITY) - 10.0f; break;
|
||||
case CLASS_DRUID:
|
||||
switch(GetShapeshiftForm())
|
||||
switch (GetShapeshiftForm())
|
||||
{
|
||||
case FORM_CAT:
|
||||
case FORM_BEAR:
|
||||
|
|
@ -282,7 +282,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
}
|
||||
else
|
||||
{
|
||||
switch(getClass())
|
||||
switch (getClass())
|
||||
{
|
||||
case CLASS_WARRIOR: val2 = level*3.0f + GetStat(STAT_STRENGTH)*2.0f - 20.0f; break;
|
||||
case CLASS_PALADIN: val2 = level*3.0f + GetStat(STAT_STRENGTH)*2.0f - 20.0f; break;
|
||||
|
|
@ -296,7 +296,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
//Check if Predatory Strikes is skilled
|
||||
float mLevelBonus = 0.0f;
|
||||
float mBonusWeaponAtt = 0.0f;
|
||||
switch(form)
|
||||
switch (form)
|
||||
{
|
||||
case FORM_CAT:
|
||||
case FORM_BEAR:
|
||||
|
|
@ -304,9 +304,9 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
case FORM_MOONKIN:
|
||||
{
|
||||
Unit::AuraList const& mDummy = GetAurasByType(SPELL_AURA_DUMMY);
|
||||
for(Unit::AuraList::const_iterator itr = mDummy.begin(); itr != mDummy.end(); ++itr)
|
||||
for (Unit::AuraList::const_iterator itr = mDummy.begin(); itr != mDummy.end(); ++itr)
|
||||
{
|
||||
if((*itr)->GetSpellProto()->SpellIconID != 1563)
|
||||
if ((*itr)->GetSpellProto()->SpellIconID != 1563)
|
||||
continue;
|
||||
|
||||
// Predatory Strikes (effect 0)
|
||||
|
|
@ -324,7 +324,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
default: break;
|
||||
}
|
||||
|
||||
switch(form)
|
||||
switch (form)
|
||||
{
|
||||
case FORM_CAT:
|
||||
val2 = GetStat(STAT_STRENGTH)*2.0f + GetStat(STAT_AGILITY) - 20.0f + mLevelBonus + m_baseFeralAP + mBonusWeaponAtt; break;
|
||||
|
|
@ -350,23 +350,23 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
float attPowerMod = GetModifierValue(unitMod, TOTAL_VALUE);
|
||||
|
||||
//add dynamic flat mods
|
||||
if( ranged )
|
||||
if (ranged)
|
||||
{
|
||||
if ((getClassMask() & CLASSMASK_WAND_USERS)==0)
|
||||
{
|
||||
AuraList const& mRAPbyStat = GetAurasByType(SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT);
|
||||
for(AuraList::const_iterator i = mRAPbyStat.begin();i != mRAPbyStat.end(); ++i)
|
||||
for (AuraList::const_iterator i = mRAPbyStat.begin(); i != mRAPbyStat.end(); ++i)
|
||||
attPowerMod += int32(GetStat(Stats((*i)->GetModifier()->m_miscvalue)) * (*i)->GetModifier()->m_amount / 100.0f);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AuraList const& mAPbyStat = GetAurasByType(SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT);
|
||||
for(AuraList::const_iterator i = mAPbyStat.begin();i != mAPbyStat.end(); ++i)
|
||||
for (AuraList::const_iterator i = mAPbyStat.begin(); i != mAPbyStat.end(); ++i)
|
||||
attPowerMod += int32(GetStat(Stats((*i)->GetModifier()->m_miscvalue)) * (*i)->GetModifier()->m_amount / 100.0f);
|
||||
|
||||
AuraList const& mAPbyArmor = GetAurasByType(SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR);
|
||||
for(AuraList::const_iterator iter = mAPbyArmor.begin(); iter != mAPbyArmor.end(); ++iter)
|
||||
for (AuraList::const_iterator iter = mAPbyArmor.begin(); iter != mAPbyArmor.end(); ++iter)
|
||||
// always: ((*i)->GetModifier()->m_miscvalue == 1 == SPELL_SCHOOL_MASK_NORMAL)
|
||||
attPowerMod += int32(GetArmor() / (*iter)->GetModifier()->m_amount);
|
||||
}
|
||||
|
|
@ -378,18 +378,18 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
SetFloatValue(index_mult, attPowerMultiplier); //UNIT_FIELD_(RANGED)_ATTACK_POWER_MULTIPLIER field
|
||||
|
||||
//automatically update weapon damage after attack power modification
|
||||
if(ranged)
|
||||
if (ranged)
|
||||
{
|
||||
UpdateDamagePhysical(RANGED_ATTACK);
|
||||
|
||||
Pet *pet = GetPet(); //update pet's AP
|
||||
if(pet)
|
||||
Pet* pet = GetPet(); //update pet's AP
|
||||
if (pet)
|
||||
pet->UpdateAttackPowerAndDamage();
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateDamagePhysical(BASE_ATTACK);
|
||||
if(CanDualWield() && haveOffhandWeapon()) //allow update offhand damage only if player knows DualWield Spec and has equipped offhand weapon
|
||||
if (CanDualWield() && haveOffhandWeapon()) //allow update offhand damage only if player knows DualWield Spec and has equipped offhand weapon
|
||||
UpdateDamagePhysical(OFF_ATTACK);
|
||||
}
|
||||
}
|
||||
|
|
@ -404,7 +404,7 @@ void Player::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, fl
|
|||
UnitMods unitMod;
|
||||
UnitMods attPower;
|
||||
|
||||
switch(attType)
|
||||
switch (attType)
|
||||
{
|
||||
case BASE_ATTACK:
|
||||
default:
|
||||
|
|
@ -462,7 +462,7 @@ void Player::UpdateDamagePhysical(WeaponAttackType attType)
|
|||
|
||||
CalculateMinMaxDamage(attType,false,mindamage,maxdamage);
|
||||
|
||||
switch(attType)
|
||||
switch (attType)
|
||||
{
|
||||
case BASE_ATTACK:
|
||||
default:
|
||||
|
|
@ -491,7 +491,7 @@ void Player::UpdateBlockPercentage()
|
|||
{
|
||||
// No block
|
||||
float value = 0.0f;
|
||||
if(CanBlock())
|
||||
if (CanBlock())
|
||||
{
|
||||
// Base value
|
||||
value = 5.0f;
|
||||
|
|
@ -512,7 +512,7 @@ void Player::UpdateCritPercentage(WeaponAttackType attType)
|
|||
uint16 index;
|
||||
CombatRating cr;
|
||||
|
||||
switch(attType)
|
||||
switch (attType)
|
||||
{
|
||||
case OFF_ATTACK:
|
||||
modGroup = OFFHAND_CRIT_PERCENTAGE;
|
||||
|
|
@ -571,17 +571,17 @@ void Player::UpdateParryPercentage()
|
|||
{
|
||||
const float parry_cap[MAX_CLASSES] =
|
||||
{
|
||||
47.003525f, // Warrior
|
||||
47.003525f, // Paladin
|
||||
47.003525f, // Warrior
|
||||
47.003525f, // Paladin
|
||||
145.560408f, // Hunter
|
||||
145.560408f, // Rogue
|
||||
0.0f, // Priest
|
||||
47.003525f, // DK
|
||||
0.0f, // Priest
|
||||
47.003525f, // DK
|
||||
145.560408f, // Shaman
|
||||
0.0f, // Mage
|
||||
0.0f, // Warlock
|
||||
0.0f, // ??
|
||||
0.0f // Druid
|
||||
0.0f, // Mage
|
||||
0.0f, // Warlock
|
||||
0.0f, // ??
|
||||
0.0f // Druid
|
||||
};
|
||||
|
||||
// No parry
|
||||
|
|
@ -600,7 +600,7 @@ void Player::UpdateParryPercentage()
|
|||
nondiminishing += GetTotalAuraModifier(SPELL_AURA_MOD_PARRY_PERCENT);
|
||||
// apply diminishing formula to diminishing parry chance
|
||||
value = nondiminishing + diminishing * parry_cap[pclass] /
|
||||
(diminishing + parry_cap[pclass] * m_diminishing_k[pclass]);
|
||||
(diminishing + parry_cap[pclass] * m_diminishing_k[pclass]);
|
||||
value = value < 0.0f ? 0.0f : value;
|
||||
}
|
||||
SetStatFloatValue(PLAYER_PARRY_PERCENTAGE, value);
|
||||
|
|
@ -610,16 +610,16 @@ void Player::UpdateDodgePercentage()
|
|||
{
|
||||
const float dodge_cap[MAX_CLASSES] =
|
||||
{
|
||||
88.129021f, // Warrior
|
||||
88.129021f, // Paladin
|
||||
88.129021f, // Warrior
|
||||
88.129021f, // Paladin
|
||||
145.560408f, // Hunter
|
||||
145.560408f, // Rogue
|
||||
150.375940f, // Priest
|
||||
88.129021f, // DK
|
||||
88.129021f, // DK
|
||||
145.560408f, // Shaman
|
||||
150.375940f, // Mage
|
||||
150.375940f, // Warlock
|
||||
0.0f, // ??
|
||||
0.0f, // ??
|
||||
116.890707f // Druid
|
||||
};
|
||||
|
||||
|
|
@ -644,7 +644,7 @@ void Player::UpdateDodgePercentage()
|
|||
void Player::UpdateSpellCritChance(uint32 school)
|
||||
{
|
||||
// For normal school set zero crit chance
|
||||
if(school == SPELL_SCHOOL_NORMAL)
|
||||
if (school == SPELL_SCHOOL_NORMAL)
|
||||
{
|
||||
SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, 0.0f);
|
||||
return;
|
||||
|
|
@ -692,28 +692,28 @@ void Player::UpdateAllSpellCritChances()
|
|||
|
||||
void Player::UpdateExpertise(WeaponAttackType attack)
|
||||
{
|
||||
if(attack==RANGED_ATTACK)
|
||||
if (attack==RANGED_ATTACK)
|
||||
return;
|
||||
|
||||
int32 expertise = int32(GetRatingBonusValue(CR_EXPERTISE));
|
||||
|
||||
Item *weapon = GetWeaponForAttack(attack);
|
||||
Item* weapon = GetWeaponForAttack(attack);
|
||||
|
||||
AuraList const& expAuras = GetAurasByType(SPELL_AURA_MOD_EXPERTISE);
|
||||
for(AuraList::const_iterator itr = expAuras.begin(); itr != expAuras.end(); ++itr)
|
||||
for (AuraList::const_iterator itr = expAuras.begin(); itr != expAuras.end(); ++itr)
|
||||
{
|
||||
// item neutral spell
|
||||
if((*itr)->GetSpellProto()->EquippedItemClass == -1)
|
||||
if ((*itr)->GetSpellProto()->EquippedItemClass == -1)
|
||||
expertise += (*itr)->GetModifier()->m_amount;
|
||||
// item dependent spell
|
||||
else if(weapon && weapon->IsFitToSpellRequirements((*itr)->GetSpellProto()))
|
||||
else if (weapon && weapon->IsFitToSpellRequirements((*itr)->GetSpellProto()))
|
||||
expertise += (*itr)->GetModifier()->m_amount;
|
||||
}
|
||||
|
||||
if(expertise < 0)
|
||||
if (expertise < 0)
|
||||
expertise = 0;
|
||||
|
||||
switch(attack)
|
||||
switch (attack)
|
||||
{
|
||||
case BASE_ATTACK: SetUInt32Value(PLAYER_EXPERTISE, expertise); break;
|
||||
case OFF_ATTACK: SetUInt32Value(PLAYER_OFFHAND_EXPERTISE, expertise); break;
|
||||
|
|
@ -726,20 +726,20 @@ void Player::UpdateArmorPenetration()
|
|||
m_armorPenetrationPct = GetRatingBonusValue(CR_ARMOR_PENETRATION);
|
||||
|
||||
AuraList const& armorAuras = GetAurasByType(SPELL_AURA_MOD_TARGET_ARMOR_PCT);
|
||||
for(AuraList::const_iterator itr = armorAuras.begin(); itr != armorAuras.end(); ++itr)
|
||||
for (AuraList::const_iterator itr = armorAuras.begin(); itr != armorAuras.end(); ++itr)
|
||||
{
|
||||
// affects all weapons
|
||||
if((*itr)->GetSpellProto()->EquippedItemClass == -1)
|
||||
if ((*itr)->GetSpellProto()->EquippedItemClass == -1)
|
||||
{
|
||||
m_armorPenetrationPct += (*itr)->GetModifier()->m_amount;
|
||||
continue;
|
||||
}
|
||||
|
||||
// dependent on weapon class
|
||||
for(uint8 i = 0; i < MAX_ATTACK; ++i)
|
||||
for (uint8 i = 0; i < MAX_ATTACK; ++i)
|
||||
{
|
||||
Item *weapon = GetWeaponForAttack(WeaponAttackType(i));
|
||||
if(weapon && weapon->IsFitToSpellRequirements((*itr)->GetSpellProto()))
|
||||
Item* weapon = GetWeaponForAttack(WeaponAttackType(i));
|
||||
if (weapon && weapon->IsFitToSpellRequirements((*itr)->GetSpellProto()))
|
||||
{
|
||||
m_armorPenetrationPct += (*itr)->GetModifier()->m_amount;
|
||||
break;
|
||||
|
|
@ -767,7 +767,7 @@ void Player::UpdateManaRegen()
|
|||
|
||||
// Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura
|
||||
AuraList const& regenAura = GetAurasByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT);
|
||||
for(AuraList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i)
|
||||
for (AuraList::const_iterator i = regenAura.begin(); i != regenAura.end(); ++i)
|
||||
{
|
||||
Modifier* mod = (*i)->GetModifier();
|
||||
power_regen_mp5 += GetStat(Stats(mod->m_miscvalue)) * mod->m_amount / 500.0f;
|
||||
|
|
@ -822,10 +822,10 @@ bool Creature::UpdateAllStats()
|
|||
UpdateMaxHealth();
|
||||
UpdateAttackPowerAndDamage();
|
||||
|
||||
for(int i = POWER_MANA; i < MAX_POWERS; ++i)
|
||||
for (int i = POWER_MANA; i < MAX_POWERS; ++i)
|
||||
UpdateMaxPower(Powers(i));
|
||||
|
||||
for(int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i)
|
||||
for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i)
|
||||
UpdateResistances(i);
|
||||
|
||||
return true;
|
||||
|
|
@ -833,7 +833,7 @@ bool Creature::UpdateAllStats()
|
|||
|
||||
void Creature::UpdateResistances(uint32 school)
|
||||
{
|
||||
if(school > SPELL_SCHOOL_NORMAL)
|
||||
if (school > SPELL_SCHOOL_NORMAL)
|
||||
{
|
||||
float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school));
|
||||
SetResistance(SpellSchools(school), int32(value));
|
||||
|
|
@ -926,28 +926,28 @@ void Creature::UpdateDamagePhysical(WeaponAttackType attType)
|
|||
|
||||
bool Pet::UpdateStats(Stats stat)
|
||||
{
|
||||
if(stat > STAT_SPIRIT)
|
||||
if (stat > STAT_SPIRIT)
|
||||
return false;
|
||||
|
||||
// value = ((base_value * base_pct) + total_value) * total_pct
|
||||
float value = GetTotalStatValue(stat);
|
||||
|
||||
Unit *owner = GetOwner();
|
||||
if ( stat == STAT_STAMINA )
|
||||
Unit* owner = GetOwner();
|
||||
if (stat == STAT_STAMINA)
|
||||
{
|
||||
if(owner)
|
||||
if (owner)
|
||||
value += float(owner->GetStat(stat)) * 0.3f;
|
||||
}
|
||||
//warlock's and mage's pets gain 30% of owner's intellect
|
||||
else if ( stat == STAT_INTELLECT && getPetType() == SUMMON_PET )
|
||||
//warlock's and mage's pets gain 30% of owner's intellect
|
||||
else if (stat == STAT_INTELLECT && getPetType() == SUMMON_PET)
|
||||
{
|
||||
if(owner && (owner->getClass() == CLASS_WARLOCK || owner->getClass() == CLASS_MAGE) )
|
||||
if (owner && (owner->getClass() == CLASS_WARLOCK || owner->getClass() == CLASS_MAGE))
|
||||
value += float(owner->GetStat(stat)) * 0.3f;
|
||||
}
|
||||
|
||||
SetStat(stat, int32(value));
|
||||
|
||||
switch(stat)
|
||||
switch (stat)
|
||||
{
|
||||
case STAT_STRENGTH: UpdateAttackPowerAndDamage(); break;
|
||||
case STAT_AGILITY: UpdateArmor(); break;
|
||||
|
|
@ -966,7 +966,7 @@ bool Pet::UpdateAllStats()
|
|||
for (int i = STAT_STRENGTH; i < MAX_STATS; ++i)
|
||||
UpdateStats(Stats(i));
|
||||
|
||||
for(int i = POWER_MANA; i < MAX_POWERS; ++i)
|
||||
for (int i = POWER_MANA; i < MAX_POWERS; ++i)
|
||||
UpdateMaxPower(Powers(i));
|
||||
|
||||
for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i)
|
||||
|
|
@ -977,13 +977,13 @@ bool Pet::UpdateAllStats()
|
|||
|
||||
void Pet::UpdateResistances(uint32 school)
|
||||
{
|
||||
if(school > SPELL_SCHOOL_NORMAL)
|
||||
if (school > SPELL_SCHOOL_NORMAL)
|
||||
{
|
||||
float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school));
|
||||
|
||||
Unit *owner = GetOwner();
|
||||
Unit* owner = GetOwner();
|
||||
// hunter and warlock pets gain 40% of owner's resistance
|
||||
if(owner && (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)))
|
||||
if (owner && (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)))
|
||||
value += float(owner->GetResistance(SpellSchools(school))) * 0.4f;
|
||||
|
||||
SetResistance(SpellSchools(school), int32(value));
|
||||
|
|
@ -998,9 +998,9 @@ void Pet::UpdateArmor()
|
|||
float bonus_armor = 0.0f;
|
||||
UnitMods unitMod = UNIT_MOD_ARMOR;
|
||||
|
||||
Unit *owner = GetOwner();
|
||||
Unit* owner = GetOwner();
|
||||
// hunter and warlock pets gain 35% of owner's armor value
|
||||
if(owner && (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)))
|
||||
if (owner && (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)))
|
||||
bonus_armor = 0.35f * float(owner->GetArmor());
|
||||
|
||||
value = GetModifierValue(unitMod, BASE_VALUE);
|
||||
|
|
@ -1041,44 +1041,44 @@ void Pet::UpdateMaxPower(Powers power)
|
|||
|
||||
void Pet::UpdateAttackPowerAndDamage(bool ranged)
|
||||
{
|
||||
if(ranged)
|
||||
if (ranged)
|
||||
return;
|
||||
|
||||
float val = 0.0f;
|
||||
float bonusAP = 0.0f;
|
||||
UnitMods unitMod = UNIT_MOD_ATTACK_POWER;
|
||||
|
||||
if(GetEntry() == 416) // imp's attack power
|
||||
if (GetEntry() == 416) // imp's attack power
|
||||
val = GetStat(STAT_STRENGTH) - 10.0f;
|
||||
else
|
||||
val = 2 * GetStat(STAT_STRENGTH) - 20.0f;
|
||||
|
||||
Unit* owner = GetOwner();
|
||||
if( owner && owner->GetTypeId()==TYPEID_PLAYER)
|
||||
if (owner && owner->GetTypeId()==TYPEID_PLAYER)
|
||||
{
|
||||
if(getPetType() == HUNTER_PET) //hunter pets benefit from owner's attack power
|
||||
if (getPetType() == HUNTER_PET) //hunter pets benefit from owner's attack power
|
||||
{
|
||||
bonusAP = owner->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.22f;
|
||||
SetBonusDamage( int32(owner->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.1287f));
|
||||
SetBonusDamage(int32(owner->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.1287f));
|
||||
}
|
||||
//demons benefit from warlocks shadow or fire damage
|
||||
else if(getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)
|
||||
else if (getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)
|
||||
{
|
||||
int32 fire = int32(owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE)) - owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE);
|
||||
int32 shadow = int32(owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW)) - owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW);
|
||||
int32 maximum = (fire > shadow) ? fire : shadow;
|
||||
if(maximum < 0)
|
||||
if (maximum < 0)
|
||||
maximum = 0;
|
||||
SetBonusDamage( int32(maximum * 0.15f));
|
||||
SetBonusDamage(int32(maximum * 0.15f));
|
||||
bonusAP = maximum * 0.57f;
|
||||
}
|
||||
//water elementals benefit from mage's frost damage
|
||||
else if(getPetType() == SUMMON_PET && owner->getClass() == CLASS_MAGE)
|
||||
else if (getPetType() == SUMMON_PET && owner->getClass() == CLASS_MAGE)
|
||||
{
|
||||
int32 frost = int32(owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST)) - owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FROST);
|
||||
if(frost < 0)
|
||||
if (frost < 0)
|
||||
frost = 0;
|
||||
SetBonusDamage( int32(frost * 0.4f));
|
||||
SetBonusDamage(int32(frost * 0.4f));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1102,7 +1102,7 @@ void Pet::UpdateAttackPowerAndDamage(bool ranged)
|
|||
|
||||
void Pet::UpdateDamagePhysical(WeaponAttackType attType)
|
||||
{
|
||||
if(attType > BASE_ATTACK)
|
||||
if (attType > BASE_ATTACK)
|
||||
return;
|
||||
|
||||
UnitMods unitMod = UNIT_MOD_DAMAGE_MAINHAND;
|
||||
|
|
@ -1123,7 +1123,7 @@ void Pet::UpdateDamagePhysical(WeaponAttackType attType)
|
|||
// Pet's base damage changes depending on happiness
|
||||
if (getPetType() == HUNTER_PET && attType == BASE_ATTACK)
|
||||
{
|
||||
switch(GetHappinessState())
|
||||
switch (GetHappinessState())
|
||||
{
|
||||
case HAPPY:
|
||||
// 125% of normal damage
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue