diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp | 49 | 
1 files changed, 23 insertions, 26 deletions
| diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index bd9dcdabb4d..92b831f6773 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -603,6 +603,7 @@ class npc_ice_tomb : public CreatureScript                      _trappedPlayerGUID.Clear();                      player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_DAMAGE);                      player->RemoveAurasDueToSpell(SPELL_ASPHYXIATION); +                    player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_UNTARGETABLE);                  }              } @@ -1283,9 +1284,9 @@ class spell_sindragosa_ice_tomb : public SpellScriptLoader      public:          spell_sindragosa_ice_tomb() : SpellScriptLoader("spell_sindragosa_ice_tomb_trap") { } -        class spell_sindragosa_ice_tomb_SpellScript : public SpellScript +        class spell_sindragosa_ice_tomb_AuraScript : public AuraScript          { -            PrepareSpellScript(spell_sindragosa_ice_tomb_SpellScript); +            PrepareAuraScript(spell_sindragosa_ice_tomb_AuraScript);              bool Validate(SpellInfo const* /*spell*/) override              { @@ -1296,46 +1297,42 @@ class spell_sindragosa_ice_tomb : public SpellScriptLoader                  return true;              } -            void SummonTomb() +            void PeriodicTick(AuraEffect const* aurEff)              { -                Position pos = GetHitUnit()->GetPosition(); -                if (TempSummon* summon = GetCaster()->SummonCreature(NPC_ICE_TOMB, pos)) +                PreventDefaultAction(); + +                if (aurEff->GetTickNumber() == 1)                  { -                    summon->AI()->SetGUID(GetHitUnit()->GetGUID(), DATA_TRAPPED_PLAYER); -                    if (GameObject* go = summon->SummonGameObject(GO_ICE_BLOCK, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0)) +                    if (Unit* caster = GetCaster())                      { -                        go->SetSpellId(SPELL_ICE_TOMB_DAMAGE); -                        summon->AddGameObject(go); +                        Position pos = GetTarget()->GetPosition(); + +                        if (TempSummon* summon = caster->SummonCreature(NPC_ICE_TOMB, pos)) +                        { +                            summon->AI()->SetGUID(GetTarget()->GetGUID(), DATA_TRAPPED_PLAYER); +                            GetTarget()->CastSpell(GetTarget(), SPELL_ICE_TOMB_UNTARGETABLE); +                            if (GameObject* go = summon->SummonGameObject(GO_ICE_BLOCK, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0)) +                            { +                                go->SetSpellId(SPELL_ICE_TOMB_DAMAGE); +                                summon->AddGameObject(go); +                            } +                        }                      }                  }              } -            void Register() override -            { -                AfterHit += SpellHitFn(spell_sindragosa_ice_tomb_SpellScript::SummonTomb); -            } -        }; - -        class spell_sindragosa_ice_tomb_AuraScript : public AuraScript -        { -            PrepareAuraScript(spell_sindragosa_ice_tomb_AuraScript); - -            void PeriodicTick(AuraEffect const* /*aurEff*/) +            void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)              { -                PreventDefaultAction(); +                GetTarget()->RemoveAurasDueToSpell(SPELL_ICE_TOMB_UNTARGETABLE);              }              void Register() override              {                  OnEffectPeriodic += AuraEffectPeriodicFn(spell_sindragosa_ice_tomb_AuraScript::PeriodicTick, EFFECT_2, SPELL_AURA_PERIODIC_TRIGGER_SPELL); +                AfterEffectRemove += AuraEffectRemoveFn(spell_sindragosa_ice_tomb_AuraScript::HandleRemove, EFFECT_2, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);              }          }; -        SpellScript* GetSpellScript() const override -        { -            return new spell_sindragosa_ice_tomb_SpellScript(); -        } -          AuraScript* GetAuraScript() const override          {              return new spell_sindragosa_ice_tomb_AuraScript(); | 
