diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c1e1c9b52..8c805432d 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3981,6 +3981,32 @@ void Spell::EffectTeleportUnits(SpellEffectEntry const* effect) // TODO - Use if (!unitTarget || unitTarget->IsTaxiFlying()) return; + switch (m_spellInfo->Id) + { + case 48129: // Scroll of Recall + case 60320: // Scroll of Recall II + case 60321: // Scroll of Recall III + { + uint32 failAtLevel = 0; + switch (m_spellInfo->Id) + { + case 48129: failAtLevel = 40; break; + case 60320: failAtLevel = 70; break; + case 60321: failAtLevel = 80; break; + } + + if (unitTarget->getLevel() > failAtLevel && unitTarget->GetTypeId() == TYPEID_PLAYER) + { + unitTarget->CastSpell(unitTarget, 60444, true); + // TODO: Unclear use of probably related spell 60322 + uint32 spellId = (((Player*)unitTarget)->GetTeam() == ALLIANCE ? 60323 : 60328) + urand(0, 7); + unitTarget->CastSpell(unitTarget, spellId, true); + return; + } + break; + } + } + // Target dependend on TargetB, if there is none provided, decide dependend on A uint32 targetType = effect->EffectImplicitTargetB; if (!targetType) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 958d2e040..6067f9874 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 "12666" + #define REVISION_NR "12667" #endif // __REVISION_NR_H__