From a6ffb3d7be9bc2a01e4e3fa06e586ecc09982f25 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 16 Feb 2011 19:10:08 +0100 Subject: Scripts/Icecrown Citadel: Corrected line of sight checks for Sindragosa's Ice Tombs Closes #628 --- .../Northrend/IcecrownCitadel/boss_sindragosa.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 8cbfbd895c5..66e5d9264b4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -1166,14 +1166,14 @@ class spell_sindragosa_ice_tomb : public SpellScriptLoader class FrostBombTargetSelector { public: - FrostBombTargetSelector(Unit* _caster, std::list const& _collisionList) : caster(_caster), collisionList(_collisionList) { } + FrostBombTargetSelector(Unit* _caster, std::list const& _collisionList) : caster(_caster), collisionList(_collisionList) { } bool operator()(Unit* unit) { if (unit->HasAura(SPELL_ICE_TOMB_DAMAGE)) return true; - for (std::list::const_iterator itr = collisionList.begin(); itr != collisionList.end(); ++itr) + for (std::list::const_iterator itr = collisionList.begin(); itr != collisionList.end(); ++itr) if ((*itr)->IsInBetween(caster, unit)) return true; @@ -1181,7 +1181,7 @@ class FrostBombTargetSelector } Unit* caster; - std::list const& collisionList; + std::list const& collisionList; }; class spell_sindragosa_collision_filter : public SpellScriptLoader @@ -1193,13 +1193,17 @@ class spell_sindragosa_collision_filter : public SpellScriptLoader { PrepareSpellScript(spell_sindragosa_collision_filter_SpellScript); - void FilterTargets(std::list& unitList) + bool Validate(SpellEntry const* /*spell*/) { - std::list tombs; - for (std::list::const_iterator itr = unitList.begin(); itr != unitList.end(); ++itr) - if ((*itr)->HasAura(SPELL_ICE_TOMB_DAMAGE)) - tombs.push_back(*itr); + if (!sSpellStore.LookupEntry(SPELL_ICE_TOMB_DAMAGE)) + return false; + return true; + } + void FilterTargets(std::list& unitList) + { + std::list tombs; + GetCreatureListWithEntryInGrid(tombs, GetCaster(), NPC_ICE_TOMB, 200.0f); unitList.remove_if(FrostBombTargetSelector(GetCaster(), tombs)); } -- cgit v1.2.3