Pelf

Pelf sindragosa 1 (lich king)

May 1st, 2012
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
  2. index 6039ace..84c9d98 100644
  3. --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
  4. +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
  5. @@ -1537,6 +1537,63 @@ class achievement_all_you_can_eat : public AchievementCriteriaScript
  6.          }
  7.  };
  8.  
  9. +class FrostBombTargetSelector
  10. +{
  11. +    public:
  12. +        FrostBombTargetSelector(Unit* caster, std::list<Creature*> const& collisionList) : _caster(caster), _collisionList(collisionList) { }
  13. +
  14. +        bool operator()(Unit* unit)
  15. +        {
  16. +            if (unit->HasAura(SPELL_ICE_TOMB_DAMAGE))
  17. +                return true;
  18. +
  19. +            for (std::list<Creature*>::const_iterator itr = _collisionList.begin(); itr != _collisionList.end(); ++itr)
  20. +                if ((*itr)->IsInBetween(_caster, unit))
  21. +                    return true;
  22. +
  23. +            return false;
  24. +        }
  25. +
  26. +    private:
  27. +        Unit* _caster;
  28. +        std::list<Creature*> const& _collisionList;
  29. +};
  30. +
  31. +class spell_sindragosa_collision_filter : public SpellScriptLoader
  32. +{
  33. +    public:
  34. +        spell_sindragosa_collision_filter() : SpellScriptLoader("spell_sindragosa_collision_filter") { }
  35. +
  36. +        class spell_sindragosa_collision_filter_SpellScript : public SpellScript
  37. +        {
  38. +            PrepareSpellScript(spell_sindragosa_collision_filter_SpellScript);
  39. +
  40. +            bool Validate(SpellEntry const* /*spell*/)
  41. +            {
  42. +                if (!sSpellStore.LookupEntry(SPELL_ICE_TOMB_DAMAGE))
  43. +                    return false;
  44. +                return true;
  45. +            }
  46. +
  47. +            void FilterTargets(std::list<Unit*>& unitList)
  48. +            {
  49. +                std::list<Creature*> tombs;
  50. +                GetCreatureListWithEntryInGrid(tombs, GetCaster(), NPC_ICE_TOMB, 200.0f);
  51. +                unitList.remove_if(FrostBombTargetSelector(GetCaster(), tombs));
  52. +            }
  53. +
  54. +            void Register()
  55. +            {
  56. +                OnUnitTargetSelect += SpellUnitTargetFn(spell_sindragosa_collision_filter_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
  57. +            }
  58. +        };
  59. +
  60. +        SpellScript* GetSpellScript() const
  61. +        {
  62. +            return new spell_sindragosa_collision_filter_SpellScript();
  63. +        }
  64. +};
  65. +
  66.  void AddSC_boss_sindragosa()
  67.  {
  68.      new boss_sindragosa();
  69. @@ -1557,5 +1614,6 @@ void AddSC_boss_sindragosa()
  70.      new spell_trigger_spell_from_caster("spell_sindragosa_ice_tomb", SPELL_ICE_TOMB_DUMMY);
  71.      new spell_trigger_spell_from_caster("spell_sindragosa_ice_tomb_dummy", SPELL_FROST_BEACON);
  72.      new at_sindragosa_lair();
  73. +   new spell_sindragosa_collision_filter();
  74.      new achievement_all_you_can_eat();
  75.  }
Advertisement
Add Comment
Please, Sign In to add comment