mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
[7099] Implement some item/enchants mods from 303:
ITEM_MOD_ATTACK_POWER ITEM_MOD_RANGED_ATTACK_POWER ITEM_MOD_FERAL_ATTACK_POWER ITEM_MOD_SPELL_HEALING_DONE ITEM_MOD_SPELL_DAMAGE_DONE ITEM_MOD_MANA_REGENERATION ITEM_MOD_SPELL_POWER Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
parent
cfde5746cb
commit
4add3d2128
5 changed files with 104 additions and 5 deletions
|
|
@ -91,6 +91,21 @@ bool Player::UpdateStats(Stats stat)
|
|||
return true;
|
||||
}
|
||||
|
||||
void Player::ApplySpellDamageBonus(int32 amount, bool apply)
|
||||
{
|
||||
m_baseSpellDamage+=apply?amount:-amount;
|
||||
// For speed just update for client
|
||||
ApplyModUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply);
|
||||
}
|
||||
|
||||
void Player::ApplySpellHealingBonus(int32 amount, bool apply)
|
||||
{
|
||||
m_baseSpellHealing+=apply?amount:-amount;
|
||||
// For speed just update for client
|
||||
for(int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; i++)
|
||||
ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS+i, amount, apply);;
|
||||
}
|
||||
|
||||
void Player::UpdateSpellDamageAndHealingBonus()
|
||||
{
|
||||
// Magic damage modifiers implemented in Unit::SpellDamageBonus
|
||||
|
|
@ -221,6 +236,12 @@ void Player::UpdateMaxPower(Powers power)
|
|||
SetMaxPower(power, uint32(value));
|
||||
}
|
||||
|
||||
void Player::ApplyFeralAPBonus(int32 amount, bool apply)
|
||||
{
|
||||
m_baseFeralAP+= apply ? amount:-amount;
|
||||
UpdateAttackPowerAndDamage();
|
||||
}
|
||||
|
||||
void Player::UpdateAttackPowerAndDamage(bool ranged )
|
||||
{
|
||||
float val2 = 0.0f;
|
||||
|
|
@ -295,12 +316,12 @@ void Player::UpdateAttackPowerAndDamage(bool ranged )
|
|||
switch(m_form)
|
||||
{
|
||||
case FORM_CAT:
|
||||
val2 = getLevel()*(mLevelMult+2.0f) + GetStat(STAT_STRENGTH)*2.0f + GetStat(STAT_AGILITY) - 20.0f; break;
|
||||
val2 = getLevel()*(mLevelMult+2.0f) + GetStat(STAT_STRENGTH)*2.0f + GetStat(STAT_AGILITY) - 20.0f + m_baseFeralAP; break;
|
||||
case FORM_BEAR:
|
||||
case FORM_DIREBEAR:
|
||||
val2 = getLevel()*(mLevelMult+3.0f) + GetStat(STAT_STRENGTH)*2.0f - 20.0f; break;
|
||||
val2 = getLevel()*(mLevelMult+3.0f) + GetStat(STAT_STRENGTH)*2.0f - 20.0f + m_baseFeralAP; break;
|
||||
case FORM_MOONKIN:
|
||||
val2 = getLevel()*(mLevelMult+1.5f) + GetStat(STAT_STRENGTH)*2.0f - 20.0f; break;
|
||||
val2 = getLevel()*(mLevelMult+1.5f) + GetStat(STAT_STRENGTH)*2.0f - 20.0f + m_baseFeralAP; break;
|
||||
default:
|
||||
val2 = GetStat(STAT_STRENGTH)*2.0f - 20.0f; break;
|
||||
}
|
||||
|
|
@ -625,6 +646,12 @@ void Player::UpdateExpertise(WeaponAttackType attack)
|
|||
}
|
||||
}
|
||||
|
||||
void Player::ApplyManaRegenBonus(int32 amount, bool apply)
|
||||
{
|
||||
m_baseManaRegen+= apply ? amount : -amount;
|
||||
UpdateManaRegen();
|
||||
}
|
||||
|
||||
void Player::UpdateManaRegen()
|
||||
{
|
||||
float Intellect = GetStat(STAT_INTELLECT);
|
||||
|
|
@ -634,7 +661,7 @@ void Player::UpdateManaRegen()
|
|||
power_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA);
|
||||
|
||||
// Mana regen from SPELL_AURA_MOD_POWER_REGEN aura
|
||||
float power_regen_mp5 = GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) / 5.0f;
|
||||
float power_regen_mp5 = (GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) + m_baseManaRegen) / 5.0f;
|
||||
|
||||
// Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura
|
||||
AuraList const& regenAura = GetAurasByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue