diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-12-29 20:25:01 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-12-29 20:25:01 +0100 |
commit | 14c48272fbdf29075152471f2bd8dfb2eac2e548 (patch) | |
tree | e3d06021e420df694c9f2a74b3e0b1b99933d26f | |
parent | ade34a7f484dfcc7e41eddfd1014e7728c8dc2c1 (diff) |
Core/Spells: Added missing changes for ade34a7f484dfcc7e41eddfd1014e7728c8dc2c1
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index bc768ab550b..e10fa03c953 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -62,6 +62,7 @@ #include "PhasingHandler.h" #include "Player.h" #include "ReputationMgr.h" +#include "RestMgr.h" #include "SceneObject.h" #include "ScriptMgr.h" #include "SharedDefines.h" @@ -321,8 +322,8 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //233 SPELL_EFFECT_RANDOMIZE_FOLLOWER_ABILITIES &Spell::EffectNULL, //234 SPELL_EFFECT_234 &Spell::EffectUnused, //235 SPELL_EFFECT_235 - &Spell::EffectNULL, //236 SPELL_EFFECT_GIVE_EXPERIENCE - &Spell::EffectNULL, //237 SPELL_EFFECT_GIVE_RESTED_EXPERIENCE_BONUS + &Spell::EffectGiveExperience, //236 SPELL_EFFECT_GIVE_EXPERIENCE + &Spell::EffectGiveRestedExperience, //237 SPELL_EFFECT_GIVE_RESTED_EXPERIENCE_BONUS &Spell::EffectNULL, //238 SPELL_EFFECT_INCREASE_SKILL &Spell::EffectNULL, //239 SPELL_EFFECT_END_GARRISON_BUILDING_CONSTRUCTION &Spell::EffectGiveArtifactPower, //240 SPELL_EFFECT_GIVE_ARTIFACT_POWER @@ -5342,6 +5343,32 @@ void Spell::EffectGrantBattlePetLevel() playerCaster->GetSession()->GetBattlePetMgr()->GrantBattlePetLevel(unitTarget->GetBattlePetCompanionGUID(), damage); } +void Spell::EffectGiveExperience() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* playerTarget = Object::ToPlayer(unitTarget); + if (!playerTarget) + return; + + uint32 xp = Quest::XPValue(playerTarget, effectInfo->MiscValue, effectInfo->MiscValueB); + playerTarget->GiveXP(xp, nullptr); +} + +void Spell::EffectGiveRestedExperience() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* playerTarget = Object::ToPlayer(unitTarget); + if (!playerTarget) + return; + + // effect value is number of resting hours + playerTarget->GetRestMgr().AddRestBonus(REST_TYPE_XP, damage * HOUR * playerTarget->GetRestMgr().CalcExtraPerSec(REST_TYPE_XP, 0.125f)); +} + void Spell::EffectHealBattlePetPct() { if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) |