diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 71a98ebc3..8bbba6845 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1574,6 +1574,7 @@ void Spell::SetTargetMap(SpellEffectIndex effIndex, uint32 targetMode, UnitList& case 59870: // Glare of the Tribunal (h) (Halls of Stone) case 64218: // Overcharge case 68950: // Fear + case 68912: // Wailing Souls (FoS) case 69048: // Mirrored Soul (FoS) unMaxTargets = 1; break; diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 92c57623f..5d811a2f2 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2141,6 +2141,15 @@ void Aura::HandleAuraDummy(bool apply, bool Real) if (target->GetTypeId() == TYPEID_PLAYER) ((Player*)target)->removeSpell(63680); return; + case 68912: // Wailing Souls + if (Unit* caster = GetCaster()) + { + caster->SetTargetGuid(target->GetObjectGuid()); + + // TODO - this is confusing, it seems the boss should channel this aura, and start casting the next spell + caster->CastSpell(caster, 68899, false); + } + return; case 71342: // Big Love Rocket Spell::SelectMountByAreaAndSkill(target, GetSpellProto(), 71344, 71345, 71346, 71347, 0); return; @@ -7854,6 +7863,20 @@ void Aura::PeriodicDummyTick() target->CastSpell(target, 62593, true); return; } + case 68875: // Wailing Souls + case 68876: // Wailing Souls + { + // Sweep around + float newAngle = target->GetOrientation() + (spell->Id == 68875 ? 0.09f : 2*M_PI_F - 0.09f); + if (newAngle > 2*M_PI_F) + newAngle -= 2*M_PI_F; + + target->SetFacingTo(newAngle); + + // Should actually be SMSG_SPELL_START, too + target->CastSpell(target, 68873, true); + return; + } // Exist more after, need add later default: break; diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index dc2da07e7..ca52868ec 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -7309,6 +7309,12 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx) if (unitTarget) unitTarget->CastSpell(unitTarget, m_spellInfo->CalculateSimpleValue(eff_idx), true); return; + case 68871: // Wailing Souls + // Left or Right direction? + m_caster->CastSpell(m_caster, urand(0, 1) ? 68875 : 68876, false); + // Clear TargetGuid for sweeping + m_caster->SetTargetGuid(ObjectGuid()); + return; case 69048: // Mirrored Soul { if (!unitTarget) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 983b1d631..c3f8af134 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 "11791" + #define REVISION_NR "11792" #endif // __REVISION_NR_H__