diff --git a/src/game/Player.cpp b/src/game/Player.cpp index e6fd665d1..8f61a741d 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -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; diff --git a/src/game/SpellAuraDefines.h b/src/game/SpellAuraDefines.h index 1e7d7b508..3ccdb1ee6 100644 --- a/src/game/SpellAuraDefines.h +++ b/src/game/SpellAuraDefines.h @@ -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 }; diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 6cca33c1a..8015555f8 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -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 diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index dd1b9456f..4f99256a0 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8664" + #define REVISION_NR "8665" #endif // __REVISION_NR_H__