mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[8665] Correctly implement XP bonus auras.
Signed-off-by: hunuza <hunuza@gmail.com>
This commit is contained in:
parent
c0ffd1b48c
commit
ec10a5bf3c
4 changed files with 39 additions and 28 deletions
|
|
@ -2357,10 +2357,21 @@ void Player::GiveXP(uint32 xp, Unit* victim)
|
|||
if(level >= sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
return;
|
||||
|
||||
// handle SPELL_AURA_MOD_XP_PCT auras
|
||||
Unit::AuraList const& ModXPPctAuras = GetAurasByType(SPELL_AURA_MOD_XP_PCT);
|
||||
for(Unit::AuraList::const_iterator i = ModXPPctAuras.begin();i != ModXPPctAuras.end(); ++i)
|
||||
xp = uint32(xp*(1.0f + (*i)->GetModifier()->m_amount / 100.0f));
|
||||
if(victim)
|
||||
{
|
||||
// handle SPELL_AURA_MOD_KILL_XP_PCT auras
|
||||
Unit::AuraList const& ModXPPctAuras = GetAurasByType(SPELL_AURA_MOD_KILL_XP_PCT);
|
||||
for(Unit::AuraList::const_iterator i = ModXPPctAuras.begin();i != ModXPPctAuras.end(); ++i)
|
||||
xp = uint32(xp*(1.0f + (*i)->GetModifier()->m_amount / 100.0f));
|
||||
}
|
||||
else
|
||||
{
|
||||
// handle SPELL_AURA_MOD_QUEST_XP_PCT auras
|
||||
Unit::AuraList const& ModXPPctAuras = GetAurasByType(SPELL_AURA_MOD_QUEST_XP_PCT);
|
||||
for(Unit::AuraList::const_iterator i = ModXPPctAuras.begin();i != ModXPPctAuras.end(); ++i)
|
||||
xp = uint32(xp*(1.0f + (*i)->GetModifier()->m_amount / 100.0f));
|
||||
}
|
||||
|
||||
|
||||
// XP resting bonus for kill
|
||||
uint32 rested_bonus_xp = victim ? GetXPRestBonus(xp) : 0;
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ enum AuraType
|
|||
SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197,
|
||||
SPELL_AURA_198 = 198, // old SPELL_AURA_MOD_ALL_WEAPON_SKILLS
|
||||
SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT = 199,
|
||||
SPELL_AURA_MOD_XP_PCT = 200,
|
||||
SPELL_AURA_MOD_KILL_XP_PCT = 200,
|
||||
SPELL_AURA_FLY = 201,
|
||||
SPELL_AURA_IGNORE_COMBAT_RESULT = 202,
|
||||
SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203,
|
||||
|
|
@ -329,26 +329,26 @@ enum AuraType
|
|||
SPELL_AURA_284,
|
||||
SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR = 285,
|
||||
SPELL_AURA_ABILITY_PERIODIC_CRIT = 286,
|
||||
SPELL_AURA_DEFLECT_SPELLS,
|
||||
SPELL_AURA_288,
|
||||
SPELL_AURA_289,
|
||||
SPELL_AURA_MOD_ALL_CRIT_CHANCE,
|
||||
SPELL_AURA_291,
|
||||
SPELL_AURA_292,
|
||||
SPELL_AURA_293,
|
||||
SPELL_AURA_294,
|
||||
SPELL_AURA_295,
|
||||
SPELL_AURA_296,
|
||||
SPELL_AURA_297,
|
||||
SPELL_AURA_298,
|
||||
SPELL_AURA_299,
|
||||
SPELL_AURA_300,
|
||||
SPELL_AURA_301,
|
||||
SPELL_AURA_302,
|
||||
SPELL_AURA_303,
|
||||
SPELL_AURA_304,
|
||||
SPELL_AURA_305,
|
||||
SPELL_AURA_306,
|
||||
SPELL_AURA_DEFLECT_SPELLS = 287,
|
||||
SPELL_AURA_288 = 288,
|
||||
SPELL_AURA_289 = 289,
|
||||
SPELL_AURA_MOD_ALL_CRIT_CHANCE = 290,
|
||||
SPELL_AURA_MOD_QUEST_XP_PCT = 291,
|
||||
SPELL_AURA_292 = 292,
|
||||
SPELL_AURA_293 = 293,
|
||||
SPELL_AURA_294 = 294,
|
||||
SPELL_AURA_295 = 295,
|
||||
SPELL_AURA_296 = 296,
|
||||
SPELL_AURA_297 = 297,
|
||||
SPELL_AURA_298 = 298,
|
||||
SPELL_AURA_299 = 299,
|
||||
SPELL_AURA_300 = 300,
|
||||
SPELL_AURA_301 = 301,
|
||||
SPELL_AURA_302 = 302,
|
||||
SPELL_AURA_303 = 303,
|
||||
SPELL_AURA_304 = 304,
|
||||
SPELL_AURA_305 = 305,
|
||||
SPELL_AURA_306 = 306,
|
||||
TOTAL_AURAS = 307
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
|||
&Aura::HandleNoImmediateEffect, //197 SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE implemented in Unit::SpellCriticalBonus Unit::GetUnitCriticalChance
|
||||
&Aura::HandleUnused, //198 unused (3.0.8a-3.2.2a) old SPELL_AURA_MOD_ALL_WEAPON_SKILLS
|
||||
&Aura::HandleNoImmediateEffect, //199 SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT implemented in Unit::MagicSpellHitResult
|
||||
&Aura::HandleNoImmediateEffect, //200 SPELL_AURA_MOD_XP_PCT implemented in Player::GiveXP
|
||||
&Aura::HandleNoImmediateEffect, //200 SPELL_AURA_MOD_KILL_XP_PCT implemented in Player::GiveXP
|
||||
&Aura::HandleAuraAllowFlight, //201 SPELL_AURA_FLY this aura enable flight mode...
|
||||
&Aura::HandleNoImmediateEffect, //202 SPELL_AURA_CANNOT_BE_DODGED implemented in Unit::RollPhysicalOutcomeAgainst
|
||||
&Aura::HandleNoImmediateEffect, //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::SpellCriticalDamageBonus
|
||||
|
|
@ -341,7 +341,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
|||
&Aura::HandleNULL, //288 increase parry/deflect, prevent attack (single spell used 67801)
|
||||
&Aura::HandleUnused, //289 unused (3.2.2a)
|
||||
&Aura::HandleAuraModAllCritChance, //290 SPELL_AURA_MOD_ALL_CRIT_CHANCE
|
||||
&Aura::HandleNULL, //291 1 spell (+pct experience bonus)
|
||||
&Aura::HandleNoImmediateEffect, //291 SPELL_AURA_MOD_QUEST_XP_PCT implemented in Player::GiveXP
|
||||
&Aura::HandleNULL, //292 call stabled pet
|
||||
&Aura::HandleNULL, //293 3 spells
|
||||
&Aura::HandleNULL, //294 2 spells, possible prevent mana regen
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "8664"
|
||||
#define REVISION_NR "8665"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue