diff options
3 files changed, 29 insertions, 3 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 61d9478760a..b725f43e3a5 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4377,6 +4377,10 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->EffectImplicitTargetA[0] = TARGET_DEST_DEST; ++count; break; + case 71159: // Awaken Plagued Zombies + spellInfo->DurationIndex = 21; + ++count; + break; // THIS IS HERE BECAUSE COOLDOWN ON CREATURE PROCS IS NOT IMPLEMENTED case 71604: // Mutated Strength (Professor Putricide) case 72673: // Mutated Strength (Professor Putricide) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 33f52773ade..2275bbe3bdc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -346,7 +346,7 @@ class npc_precious_icc : public CreatureScript struct npc_precious_iccAI : public ScriptedAI { - npc_precious_iccAI(Creature* creature) : ScriptedAI(creature) + npc_precious_iccAI(Creature* creature) : ScriptedAI(creature), _summons(me) { _instance = creature->GetInstanceScript(); } @@ -357,6 +357,24 @@ class npc_precious_icc : public CreatureScript _events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000)); _events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(3000, 7000)); _events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, urand(20000, 22000)); + _summons.DespawnAll(); + } + + void JustSummoned(Creature* summon) + { + _summons.Summon(summon); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + summon->AI()->AttackStart(target); + } + + void SummonedCreatureDespawn(Creature* summon) + { + _summons.Despawn(summon); + } + + void JustDied(Unit* /*killer*/) + { + _summons.DespawnAll(); } void UpdateAI(const uint32 diff) @@ -404,6 +422,7 @@ class npc_precious_icc : public CreatureScript private: EventMap _events; + SummonList _summons; InstanceScript* _instance; }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp index 9132031b89d..3dd1e7f13b7 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp @@ -45,7 +45,7 @@ class icecrown_citadel_teleport : public GameObjectScript player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to Sindragosa's Lair", GOSSIP_SENDER_ICC_PORT, SINDRAGOSA_S_LAIR_TELEPORT); } - player->SEND_GOSSIP_MENU(player->GetGossipTextId(go->GetGOInfo()->GetGossipMenuId()), go->GetGUID()); + player->SEND_GOSSIP_MENU(player->GetGossipTextId(go), go->GetGUID()); return true; } @@ -78,7 +78,10 @@ class at_frozen_throne_teleport : public AreaTriggerScript bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) { if (InstanceScript* instance = player->GetInstanceScript()) - if (instance->GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE && instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE && instance->GetBossState(DATA_SINDRAGOSA) == DONE) + if (instance->GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE && + instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE && + instance->GetBossState(DATA_SINDRAGOSA) == DONE && + instance->GetBossState(DATA_THE_LICH_KING) != IN_PROGRESS) player->CastSpell(player, FROZEN_THRONE_TELEPORT, true); return true; |