diff options
17 files changed, 50 insertions, 648 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp index dd49f01624b..9c9dfe38349 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp @@ -579,105 +579,6 @@ enum DughalQuests #define SAY_DUGHAL_FREE "Thank you, $N! I'm free!!!" #define GOSSIP_DUGHAL "You're free, Dughal! Get out of here!" -/* -class npc_dughal_stormwing : public CreatureScript -{ -public: - npc_dughal_stormwing() : CreatureScript("npc_dughal_stormwing") { } - - CreatureAI* GetAI(Creature* creature) const override - { - npc_dughal_stormwingAI* dughal_stormwingAI = new npc_dughal_stormwingAI(creature); - - dughal_stormwingAI->AddWaypoint(0, 280.42f, -82.86f, -77.12f, 0); - dughal_stormwingAI->AddWaypoint(1, 287.64f, -87.01f, -76.79f, 0); - dughal_stormwingAI->AddWaypoint(2, 354.63f, -64.95f, -67.53f, 0); - - return dughal_stormwingAI; - } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override - { - player->PlayerTalkClass->ClearMenus(); - if (action == GOSSIP_ACTION_INFO_DEF + 1) - { - player->CLOSE_GOSSIP_MENU(); - CAST_AI(npc_escort::npc_escortAI, (creature->AI()))->Start(false, true, player->GetGUID()); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_IN_PROGRESS); - } - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) override - { - if (player->GetQuestStatus(QUEST_JAIL_BREAK) == QUEST_STATUS_INCOMPLETE && instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS) - { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUGHAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - player->SEND_GOSSIP_MENU(2846, creature->GetGUID()); - } - return true; - } - - struct npc_dughal_stormwingAI : public npc_escortAI - { - npc_dughal_stormwingAI(Creature* creature) : npc_escortAI(creature) { } - - void WaypointReached(uint32 waypointId) override - { - switch (waypointId) - { - case 0: - me->Say(SAY_DUGHAL_FREE, LANG_UNIVERSAL, PlayerGUID); - break; - case 1: - instance->SetData(DATA_DUGHAL, ENCOUNTER_STATE_OBJECTIVE_COMPLETED); - break; - case 2: - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - instance->SetData(DATA_DUGHAL, ENCOUNTER_STATE_ENDED); - break; - } - } - - void EnterCombat(Unit* who) override { } - void Reset() override { } - - void JustDied(Unit* killer) override - { - if (IsBeingEscorted && killer == me) - { - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - instance->SetData(DATA_DUGHAL, ENCOUNTER_STATE_ENDED); - } - } - - void UpdateAI(uint32 diff) override - { - if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) return; - if ((instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_FAILED || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_ENDED)&& instance->GetData(DATA_DUGHAL) == ENCOUNTER_STATE_ENDED) - { - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } - else - { - me->SetVisible(true); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } - npc_escortAI::UpdateAI(diff); - } - }; -}; - - */ - // npc_marshal_windsor #define SAY_WINDSOR_AGGRO1 "You locked up the wrong Marshal. Prepare to be destroyed!" #define SAY_WINDSOR_AGGRO2 "I bet you're sorry now, aren't you !?!!" @@ -694,168 +595,6 @@ enum MarshalWindsor NPC_REGINALD_WINDSOR = 9682 }; -/* -Player* playerStart; -class npc_marshal_windsor : public CreatureScript -{ -public: - npc_marshal_windsor() : CreatureScript("npc_marshal_windsor") { } - - CreatureAI* GetAI(Creature* creature) const override - { - npc_marshal_windsorAI* marshal_windsorAI = new npc_marshal_windsorAI(creature); - - marshal_windsorAI->AddWaypoint(0, 316.336f, -225.528f, -77.7258f, 7000); - marshal_windsorAI->AddWaypoint(1, 316.336f, -225.528f, -77.7258f, 2000); - marshal_windsorAI->AddWaypoint(2, 322.96f, -207.13f, -77.87f, 0); - marshal_windsorAI->AddWaypoint(3, 281.05f, -172.16f, -75.12f, 0); - marshal_windsorAI->AddWaypoint(4, 272.19f, -139.14f, -70.61f, 0); - marshal_windsorAI->AddWaypoint(5, 283.62f, -116.09f, -70.21f, 0); - marshal_windsorAI->AddWaypoint(6, 296.18f, -94.30f, -74.08f, 0); - marshal_windsorAI->AddWaypoint(7, 294.57f, -93.11f, -74.08f, 0); - marshal_windsorAI->AddWaypoint(8, 314.31f, -74.31f, -76.09f, 0); - marshal_windsorAI->AddWaypoint(9, 360.22f, -62.93f, -66.77f, 0); - marshal_windsorAI->AddWaypoint(10, 383.38f, -69.40f, -63.25f, 0); - marshal_windsorAI->AddWaypoint(11, 389.99f, -67.86f, -62.57f, 0); - marshal_windsorAI->AddWaypoint(12, 400.98f, -72.01f, -62.31f, 0); - marshal_windsorAI->AddWaypoint(13, 404.22f, -62.30f, -63.50f, 2300); - marshal_windsorAI->AddWaypoint(14, 404.22f, -62.30f, -63.50f, 1500); - marshal_windsorAI->AddWaypoint(15, 407.65f, -51.86f, -63.96f, 0); - marshal_windsorAI->AddWaypoint(16, 403.61f, -51.71f, -63.92f, 1000); - marshal_windsorAI->AddWaypoint(17, 403.61f, -51.71f, -63.92f, 2000); - marshal_windsorAI->AddWaypoint(18, 403.61f, -51.71f, -63.92f, 1000); - marshal_windsorAI->AddWaypoint(19, 403.61f, -51.71f, -63.92f, 0); - - return marshal_windsorAI; - } - - bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) override - { - if (quest->GetQuestId() == 4322) - { - PlayerStart = player; - if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) - { - CAST_AI(npc_escort::npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID()); - instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_IN_PROGRESS); - creature->setFaction(11); - } - } - return false; - } - - struct npc_marshal_windsorAI : public npc_escortAI - { - npc_marshal_windsorAI(Creature* creature) : npc_escortAI(creature) - { - instance = creature->GetInstanceScript(); - } - - void WaypointReached(uint32 waypointId) override - { - switch (waypointId) - { - case 1: - me->Say(SAY_WINDSOR_1, LANG_UNIVERSAL, PlayerGUID); - break; - case 7: - me->HandleEmoteCommand(EMOTE_STATE_POINT); - me->Say(SAY_WINDSOR_4_1, LANG_UNIVERSAL, PlayerGUID); - IsOnHold = true; - break; - case 10: - me->setFaction(534); - break; - case 12: - me->Say(SAY_WINDSOR_6, LANG_UNIVERSAL, PlayerGUID); - instance->SetData(DATA_SUPPLY_ROOM, ENCOUNTER_STATE_IN_PROGRESS); - break; - case 13: - me->HandleEmoteCommand(EMOTE_STATE_USESTANDING);//EMOTE_STATE_WORK - break; - case 14: - instance->SetData(DATA_GATE_SR, 0); - me->setFaction(11); - break; - case 16: - me->Say(SAY_WINDSOR_9, LANG_UNIVERSAL, PlayerGUID); - break; - case 17: - me->HandleEmoteCommand(EMOTE_STATE_USESTANDING);//EMOTE_STATE_WORK - break; - case 18: - instance->SetData(DATA_GATE_SC, 0); - break; - case 19: - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - me->SummonCreature(NPC_REGINALD_WINDSOR, 403.61f, -51.71f, -63.92f, 3.600434f, TEMPSUMMON_DEAD_DESPAWN, 0); - instance->SetData(DATA_SUPPLY_ROOM, ENCOUNTER_STATE_ENDED); - break; - } - } - - void EnterCombat(Unit* who) override - { - switch (urand(0, 2)) - { - case 0: - me->Say(SAY_WINDSOR_AGGRO1, LANG_UNIVERSAL, PlayerGUID); - break; - case 1: - me->Say(SAY_WINDSOR_AGGRO2, LANG_UNIVERSAL, PlayerGUID); - break; - case 2: - me->Say(SAY_WINDSOR_AGGRO3, LANG_UNIVERSAL, PlayerGUID); - break; - } - } - - void Reset() override { } - - void JustDied(Unit* slayer) override - { - instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_FAILED); - } - - void UpdateAI(uint32 diff) override - { - if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) - return; - - if (instance->GetData(DATA_DUGHAL) == ENCOUNTER_STATE_OBJECTIVE_COMPLETED) - SetEscortPaused(false); - - if (!instance->GetData(DATA_GATE_D) && instance->GetData(DATA_DUGHAL) == ENCOUNTER_STATE_NOT_STARTED) - { - me->Say(SAY_WINDSOR_4_2, LANG_UNIVERSAL, PlayerGUID); - instance->SetData(DATA_DUGHAL, ENCOUNTER_STATE_BEFORE_START); - } - if (instance->GetData(DATA_DUGHAL) == ENCOUNTER_STATE_OBJECTIVE_COMPLETED) - { - me->Say(SAY_WINDSOR_4_3, LANG_UNIVERSAL, PlayerGUID); - instance->SetData(DATA_DUGHAL, ENCOUNTER_STATE_ENDED); - } - if ((instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_FAILED || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_ENDED)&& instance->GetData(DATA_SUPPLY_ROOM) == ENCOUNTER_STATE_ENDED) - { - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } - else - { - me->SetVisible(true); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } - npc_escortAI::UpdateAI(diff); - } - }; -}; - - */ - // npc_marshal_reginald_windsor #define SAY_REGINALD_WINDSOR_0_1 "Can you feel the power, $N??? It's time to ROCK!" #define SAY_REGINALD_WINDSOR_0_2 "Now we just have to free Tobias and we can get out of here. This way!" @@ -878,320 +617,6 @@ enum MarshalReginaldWindor NPC_CREST_KILLER = 9680 }; -/* -int wp = 0; -class npc_marshal_reginald_windsor : public CreatureScript -{ -public: - npc_marshal_reginald_windsor() : CreatureScript("npc_marshal_reginald_windsor") { } - - CreatureAI* GetAI(Creature* creature) const override - { - npc_marshal_reginald_windsorAI* marshal_reginald_windsorAI = new npc_marshal_reginald_windsorAI(creature); - - marshal_reginald_windsorAI->AddWaypoint(0, 403.61f, -52.71f, -63.92f, 4000); - marshal_reginald_windsorAI->AddWaypoint(1, 403.61f, -52.71f, -63.92f, 4000); - marshal_reginald_windsorAI->AddWaypoint(2, 406.33f, -54.87f, -63.95f, 0); - marshal_reginald_windsorAI->AddWaypoint(3, 407.99f, -73.91f, -62.26f, 0); - marshal_reginald_windsorAI->AddWaypoint(4, 557.03f, -119.71f, -61.83f, 0); - marshal_reginald_windsorAI->AddWaypoint(5, 573.40f, -124.39f, -65.07f, 0); - marshal_reginald_windsorAI->AddWaypoint(6, 593.91f, -130.29f, -69.25f, 0); - marshal_reginald_windsorAI->AddWaypoint(7, 593.21f, -132.16f, -69.25f, 0); - marshal_reginald_windsorAI->AddWaypoint(8, 593.21f, -132.16f, -69.25f, 3000); - marshal_reginald_windsorAI->AddWaypoint(9, 622.81f, -135.55f, -71.92f, 0); - marshal_reginald_windsorAI->AddWaypoint(10, 634.68f, -151.29f, -70.32f, 0); - marshal_reginald_windsorAI->AddWaypoint(11, 635.06f, -153.25f, -70.32f, 0); - marshal_reginald_windsorAI->AddWaypoint(12, 635.06f, -153.25f, -70.32f, 3000); - marshal_reginald_windsorAI->AddWaypoint(13, 635.06f, -153.25f, -70.32f, 1500); - marshal_reginald_windsorAI->AddWaypoint(14, 655.25f, -172.39f, -73.72f, 0); - marshal_reginald_windsorAI->AddWaypoint(15, 654.79f, -226.30f, -83.06f, 0); - marshal_reginald_windsorAI->AddWaypoint(16, 622.85f, -268.85f, -83.96f, 0); - marshal_reginald_windsorAI->AddWaypoint(17, 579.45f, -275.56f, -80.44f, 0); - marshal_reginald_windsorAI->AddWaypoint(18, 561.19f, -266.85f, -75.59f, 0); - marshal_reginald_windsorAI->AddWaypoint(19, 547.91f, -253.92f, -70.34f, 0); - marshal_reginald_windsorAI->AddWaypoint(20, 549.20f, -252.40f, -70.34f, 0); - marshal_reginald_windsorAI->AddWaypoint(21, 549.20f, -252.40f, -70.34f, 4000); - marshal_reginald_windsorAI->AddWaypoint(22, 555.33f, -269.16f, -74.40f, 0); - marshal_reginald_windsorAI->AddWaypoint(23, 554.31f, -270.88f, -74.40f, 0); - marshal_reginald_windsorAI->AddWaypoint(24, 554.31f, -270.88f, -74.40f, 4000); - marshal_reginald_windsorAI->AddWaypoint(25, 536.10f, -249.60f, -67.47f, 0); - marshal_reginald_windsorAI->AddWaypoint(26, 520.94f, -216.65f, -59.28f, 0); - marshal_reginald_windsorAI->AddWaypoint(27, 505.99f, -148.74f, -62.17f, 0); - marshal_reginald_windsorAI->AddWaypoint(28, 484.21f, -56.24f, -62.43f, 0); - marshal_reginald_windsorAI->AddWaypoint(29, 470.39f, -6.01f, -70.10f, 0); - marshal_reginald_windsorAI->AddWaypoint(30, 451.27f, 30.85f, -70.07f, 0); - marshal_reginald_windsorAI->AddWaypoint(31, 452.45f, 29.85f, -70.37f, 1500); - marshal_reginald_windsorAI->AddWaypoint(32, 452.45f, 29.85f, -70.37f, 7000); - marshal_reginald_windsorAI->AddWaypoint(33, 452.45f, 29.85f, -70.37f, 10000); - marshal_reginald_windsorAI->AddWaypoint(34, 451.27f, 31.85f, -70.07f, 0); - - return marshal_reginald_windsorAI; - } - - struct npc_marshal_reginald_windsorAI : public npc_escortAI - { - npc_marshal_reginald_windsorAI(Creature* creature) : npc_escortAI(creature) - { - } - - void WaypointReached(uint32 waypointId) override - { - wp = waypointId; - switch (waypointId) - { - case 0: - me->setFaction(11); - me->Say(SAY_REGINALD_WINDSOR_0_1, LANG_UNIVERSAL, PlayerGUID); - break; - case 1: - me->Say(SAY_REGINALD_WINDSOR_0_2, LANG_UNIVERSAL, PlayerGUID); - break; - case 7: - me->HandleEmoteCommand(EMOTE_STATE_POINT); - me->Say(SAY_REGINALD_WINDSOR_5_1, LANG_UNIVERSAL, PlayerGUID); - IsOnHold=true; - break; - case 8: - me->Say(SAY_REGINALD_WINDSOR_5_2, LANG_UNIVERSAL, PlayerGUID); - break; - case 11: - me->HandleEmoteCommand(EMOTE_STATE_POINT); - me->Say(SAY_REGINALD_WINDSOR_7_1, LANG_UNIVERSAL, PlayerGUID); - IsOnHold=true; - break; - case 12: - me->Say(SAY_REGINALD_WINDSOR_7_2, LANG_UNIVERSAL, PlayerGUID); - break; - case 13: - me->Say(SAY_REGINALD_WINDSOR_7_3, LANG_UNIVERSAL, PlayerGUID); - break; - case 20: - me->HandleEmoteCommand(EMOTE_STATE_POINT); - me->Say(SAY_REGINALD_WINDSOR_13_1, LANG_UNIVERSAL, PlayerGUID); - IsOnHold=true; - break; - case 21: - me->Say(SAY_REGINALD_WINDSOR_13_3, LANG_UNIVERSAL, PlayerGUID); - break; - case 23: - me->HandleEmoteCommand(EMOTE_STATE_POINT); - me->Say(SAY_REGINALD_WINDSOR_14_1, LANG_UNIVERSAL, PlayerGUID); - IsOnHold=true; - break; - case 24: - me->Say(SAY_REGINALD_WINDSOR_14_2, LANG_UNIVERSAL, PlayerGUID); - break; - case 31: - me->Say(SAY_REGINALD_WINDSOR_20_1, LANG_UNIVERSAL, PlayerGUID); - break; - case 32: - me->Say(SAY_REGINALD_WINDSOR_20_2, LANG_UNIVERSAL, PlayerGUID); - PlayerStart->GroupEventHappens(QUEST_JAIL_BREAK, me); - instance->SetData(DATA_SHILL, ENCOUNTER_STATE_ENDED); - break; - } - } - - void MoveInLineOfSight(Unit* who) override - - { - if (HasEscortState(STATE_ESCORT_ESCORTING)) - return; - - if (Player* player = who->ToPlayer()) - { - if (player->GetQuestStatus(4322) == QUEST_STATUS_INCOMPLETE) - { - float Radius = 10.0f; - if (me->IsWithinDistInMap(who, Radius)) - { - SetEscortPaused(false); - Start(true, false, who->GetGUID()); - } - } - } - } - - void EnterCombat(Unit* who) override - { - switch (urand(0, 2)) - { - case 0: - me->Say(SAY_WINDSOR_AGGRO1, LANG_UNIVERSAL, PlayerGUID); - break; - case 1: - me->Say(SAY_WINDSOR_AGGRO2, LANG_UNIVERSAL, PlayerGUID); - break; - case 2: - me->Say(SAY_WINDSOR_AGGRO3, LANG_UNIVERSAL, PlayerGUID); - break; - } - } - void Reset() override { } - - void JustDied(Unit* slayer) override - { - instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_FAILED); - } - - void UpdateAI(uint32 diff) override - { - if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) - return; - - if (wp == 7) - { - if (!instance->GetData(DATA_GATE_J) && instance->GetData(DATA_JAZ) == ENCOUNTER_STATE_NOT_STARTED) - { - instance->SetData(DATA_NPC_JAZ, 1); - instance->SetData(DATA_JAZ, ENCOUNTER_STATE_IN_PROGRESS); - } - if (instance->GetData(DATA_NPC_JAZ) && instance->GetData(DATA_NPC_OGRABISI) && instance->GetData(DATA_JAZ) == ENCOUNTER_STATE_IN_PROGRESS) - { - SetEscortPaused(false); - instance->SetData(DATA_JAZ, ENCOUNTER_STATE_ENDED); - } - } - else if (wp == 11) - { - if (!instance->GetData(DATA_GATE_S) && instance->GetData(DATA_SHILL) == ENCOUNTER_STATE_NOT_STARTED) - { - instance->SetData(DATA_NPC_SHILL, 1); - instance->SetData(DATA_SHILL, ENCOUNTER_STATE_IN_PROGRESS); - } - if (instance->GetData(DATA_NPC_SHILL) && instance->GetData(DATA_SHILL) == ENCOUNTER_STATE_IN_PROGRESS) - { - instance->SetData(DATA_SHILL, ENCOUNTER_STATE_ENDED); - SetEscortPaused(false); - } - } - else if (wp == 20) - { - if (!instance->GetData(DATA_GATE_C) && instance->GetData(DATA_CREST) == ENCOUNTER_STATE_NOT_STARTED) - { - instance->SetData(DATA_NPC_CREST, 1); - me->Say(SAY_REGINALD_WINDSOR_13_2, LANG_UNIVERSAL, PlayerGUID); - instance->SetData(DATA_CREST, ENCOUNTER_STATE_IN_PROGRESS); - } - if (instance->GetData(DATA_NPC_CREST) && instance->GetData(DATA_CREST) == ENCOUNTER_STATE_IN_PROGRESS) - { - SetEscortPaused(false); - instance->SetData(DATA_CREST, ENCOUNTER_STATE_ENDED); - } - } - if (instance->GetData(DATA_TOBIAS) == ENCOUNTER_STATE_OBJECTIVE_COMPLETED) SetEscortPaused(false); - npc_escortAI::UpdateAI(diff); - } - }; -}; -*/ - -// npc_tobias_seecher -#define SAY_TOBIAS_FREE "Thank you! I will run for safety immediately!" - -/* -class npc_tobias_seecher : public CreatureScript -{ -public: - npc_tobias_seecher() : CreatureScript("npc_tobias_seecher") { } - - CreatureAI* GetAI(Creature* creature) const override - { - npc_tobias_seecherAI* tobias_seecherAI = new npc_tobias_seecherAI(creature); - - tobias_seecherAI->AddWaypoint(0, 549.21f, -281.07f, -75.27f); - tobias_seecherAI->AddWaypoint(1, 554.39f, -267.39f, -73.68f); - tobias_seecherAI->AddWaypoint(2, 533.59f, -249.38f, -67.04f); - tobias_seecherAI->AddWaypoint(3, 519.44f, -217.02f, -59.34f); - tobias_seecherAI->AddWaypoint(4, 506.55f, -153.49f, -62.34f); - - return tobias_seecherAI; - } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override - { - player->PlayerTalkClass->ClearMenus(); - if (action == GOSSIP_ACTION_INFO_DEF + 1) - { - player->CLOSE_GOSSIP_MENU(); - CAST_AI(npc_escort::npc_escortAI, (creature->AI()))->Start(false, true, player->GetGUID()); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - instance->SetData(DATA_TOBIAS, ENCOUNTER_STATE_IN_PROGRESS); - } - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) override - { - if (player->GetQuestStatus(QUEST_JAIL_BREAK) == QUEST_STATUS_INCOMPLETE && instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS) - { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Get out of here, Tobias, you're free!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - player->SEND_GOSSIP_MENU(2847, creature->GetGUID()); - } - return true; - } - - struct npc_tobias_seecherAI : public npc_escortAI - { - npc_tobias_seecherAI(Creature* creature) : npc_escortAI(creature) { } - - void EnterCombat(Unit* who) override { } - void Reset() override { } - - void JustDied(Unit* killer) override - { - if (IsBeingEscorted && killer == me) - { - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - instance->SetData(DATA_TOBIAS, ENCOUNTER_STATE_ENDED); - } - } - - void WaypointReached(uint32 waypointId) override - { - switch (waypointId) - { - case 0: - me->Say(SAY_TOBIAS_FREE, LANG_UNIVERSAL, PlayerGUID); - break; - case 2: - instance->SetData(DATA_TOBIAS, ENCOUNTER_STATE_OBJECTIVE_COMPLETED); - break; - case 4: - me->SetVisible(false); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - instance->SetData(DATA_TOBIAS, ENCOUNTER_STATE_ENDED); - break; - } - } - - void UpdateAI(uint32 diff) override - { - if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) - return; - - if ((instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_FAILED || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_ENDED)&& instance->GetData(DATA_TOBIAS) == ENCOUNTER_STATE_ENDED) - { - me->SetVisible(false); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } - else - { - me->SetVisible(true); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } - npc_escortAI::UpdateAI(diff); - } - }; -}; - -*/ - // npc_rocknot enum RocknotSays { @@ -1349,10 +774,4 @@ void AddSC_blackrock_depths() new npc_kharan_mighthammer(); new npc_lokhtos_darkbargainer(); new npc_rocknot(); - // Fix us - /*new npc_dughal_stormwing(); - new npc_tobias_seecher(); - new npc_marshal_windsor(); - new npc_marshal_reginald_windsor(); - */ } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index 5b338dd8860..f967bd6a217 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -536,8 +536,7 @@ public: void SpawnEyeTentacle(float x, float y) { - Creature* Spawned; - Spawned = DoSpawnCreature(NPC_EYE_TENTACLE, x, y, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 500); + Creature* Spawned = DoSpawnCreature(NPC_EYE_TENTACLE, x, y, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 500); if (Spawned && Spawned->AI()) if (Unit* target = SelectRandomNotStomach()) Spawned->AI()->AttackStart(target); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 65ffb7fd696..b39ce0307a5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -559,8 +559,7 @@ public: if (ArcaneBurst_Timer <= diff) { - Unit* mvic; - if ((mvic=SelectTarget(SELECT_TARGET_NEAREST, 0, NOMINAL_MELEE_RANGE, true)) != NULL) + if (Unit* mvic = SelectTarget(SELECT_TARGET_NEAREST, 0, NOMINAL_MELEE_RANGE, true)) { DoCast(mvic, SPELL_ARCANEBURST); ArcaneBurst_Timer = 5000; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index 758b4d25c43..f50a26eae23 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -664,10 +664,9 @@ struct boss_faction_championsAI : public BossAI { std::list<HostileReference*> const& tList = me->getThreatManager().getThreatList(); std::list<HostileReference*>::const_iterator iter; - Unit* target; for (iter = tList.begin(); iter!=tList.end(); ++iter) { - target = ObjectAccessor::GetUnit(*me, (*iter)->getUnitGuid()); + Unit* target = ObjectAccessor::GetUnit(*me, (*iter)->getUnitGuid()); if (target && target->getPowerType() == POWER_MANA) return target; } @@ -679,10 +678,9 @@ struct boss_faction_championsAI : public BossAI std::list<HostileReference*> const& tList = me->getThreatManager().getThreatList(); std::list<HostileReference*>::const_iterator iter; uint32 count = 0; - Unit* target; for (iter = tList.begin(); iter != tList.end(); ++iter) { - target = ObjectAccessor::GetUnit(*me, (*iter)->getUnitGuid()); + Unit* target = ObjectAccessor::GetUnit(*me, (*iter)->getUnitGuid()); if (target && me->GetDistance2d(target) < distance) ++count; } diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index fd0fff44f66..c19af1cf79d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -137,9 +137,8 @@ class boss_ick : public CreatureScript struct boss_ickAI : public BossAI { - boss_ickAI(Creature* creature) : BossAI(creature, DATA_ICK), _vehicle(creature->GetVehicleKit()) + boss_ickAI(Creature* creature) : BossAI(creature, DATA_ICK) { - ASSERT(_vehicle); _tempThreat = 0; } @@ -177,7 +176,8 @@ class boss_ick : public CreatureScript { if (Creature* krick = GetKrick()) { - _vehicle->RemoveAllPassengers(); + if (Vehicle* _vehicle = me->GetVehicleKit()) + _vehicle->RemoveAllPassengers(); if (krick->AI()) krick->AI()->DoAction(ACTION_OUTRO); } @@ -268,7 +268,6 @@ class boss_ick : public CreatureScript } private: - Vehicle* _vehicle; float _tempThreat; }; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index 3384b562860..3e56f9a1753 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -290,9 +290,8 @@ class boss_rimefang : public CreatureScript struct boss_rimefangAI : public ScriptedAI { - boss_rimefangAI(Creature* creature) : ScriptedAI(creature), _vehicle(creature->GetVehicleKit()) + boss_rimefangAI(Creature* creature) : ScriptedAI(creature) { - ASSERT(_vehicle); Initialize(); } @@ -314,7 +313,8 @@ class boss_rimefang : public CreatureScript void JustReachedHome() override { - _vehicle->InstallAllAccessories(false); + if (Vehicle* _vehicle = me->GetVehicleKit()) + _vehicle->InstallAllAccessories(false); } void DoAction(int32 actionId) override @@ -376,7 +376,6 @@ class boss_rimefang : public CreatureScript } private: - Vehicle* _vehicle; ObjectGuid _hoarfrostTargetGUID; EventMap _events; uint8 _currentWaypoint; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index 79f9a6e7c61..f3b70f069c4 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -110,9 +110,8 @@ class npc_iceborn_protodrake : public CreatureScript struct npc_iceborn_protodrakeAI: public ScriptedAI { - npc_iceborn_protodrakeAI(Creature* creature) : ScriptedAI(creature), _vehicle(creature->GetVehicleKit()) + npc_iceborn_protodrakeAI(Creature* creature) : ScriptedAI(creature) { - ASSERT(_vehicle); Initialize(); } @@ -128,7 +127,8 @@ class npc_iceborn_protodrake : public CreatureScript void EnterCombat(Unit* /*who*/) override { - _vehicle->RemoveAllPassengers(); + if (Vehicle* _vehicle = me->GetVehicleKit()) + _vehicle->RemoveAllPassengers(); } void UpdateAI(uint32 diff) override @@ -148,7 +148,6 @@ class npc_iceborn_protodrake : public CreatureScript } private: - Vehicle* _vehicle; uint32 _frostBreathCooldown; }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 07816ebbe39..6c512546a24 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -432,20 +432,21 @@ class StartMovementEvent : public BasicEvent { public: StartMovementEvent(Creature* summoner, Creature* owner) - : _summoner(summoner), _owner(owner) + : _summonerGuid(summoner->GetGUID()), _owner(owner) { } bool Execute(uint64 /*time*/, uint32 /*diff*/) { _owner->SetReactState(REACT_AGGRESSIVE); - if (Unit* target = _summoner->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(_summoner))) - _owner->AI()->AttackStart(target); + if (Creature* _summoner = ObjectAccessor::GetCreature(*_owner, _summonerGuid)) + if (Unit* target = _summoner->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(_summoner))) + _owner->AI()->AttackStart(target); return true; } private: - Creature* _summoner; + ObjectGuid _summonerGuid; Creature* _owner; }; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index 2c9d88eac8a..495cf85b759 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -117,14 +117,12 @@ class boss_keristrasza : public CreatureScript ContainmentSphereGUIDs[1] = instance->GetGuidData(ORMOROKS_CONTAINMET_SPHERE); ContainmentSphereGUIDs[2] = instance->GetGuidData(TELESTRAS_CONTAINMET_SPHERE); - GameObject* ContainmentSpheres[DATA_CONTAINMENT_SPHERES]; - for (uint8 i = 0; i < DATA_CONTAINMENT_SPHERES; ++i) { - ContainmentSpheres[i] = ObjectAccessor::GetGameObject(*me, ContainmentSphereGUIDs[i]); - if (!ContainmentSpheres[i]) + GameObject* ContainmentSphere = ObjectAccessor::GetGameObject(*me, ContainmentSphereGUIDs[i]); + if (!ContainmentSphere) return false; - if (ContainmentSpheres[i]->GetGoState() != GO_STATE_ACTIVE) + if (ContainmentSphere->GetGoState() != GO_STATE_ACTIVE) return false; } if (remove_prison) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index a04c809f893..61d64413178 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -224,7 +224,7 @@ class boss_flame_leviathan : public CreatureScript struct boss_flame_leviathanAI : public BossAI { - boss_flame_leviathanAI(Creature* creature) : BossAI(creature, BOSS_LEVIATHAN), vehicle(creature->GetVehicleKit()) + boss_flame_leviathanAI(Creature* creature) : BossAI(creature, BOSS_LEVIATHAN) { Initialize(); } @@ -244,7 +244,6 @@ class boss_flame_leviathan : public CreatureScript void InitializeAI() override { - ASSERT(vehicle); if (!me->isDead()) Reset(); @@ -256,7 +255,6 @@ class boss_flame_leviathan : public CreatureScript me->SetReactState(REACT_PASSIVE); } - Vehicle* vehicle; uint8 ActiveTowersCount; uint8 Shutdown; bool ActiveTowers; @@ -339,7 +337,7 @@ class boss_flame_leviathan : public CreatureScript void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override { if (spell->Id == SPELL_START_THE_ENGINE) - vehicle->InstallAllAccessories(false); + ASSERT_NOTNULL(me->GetVehicleKit())->InstallAllAccessories(false); if (spell->Id == SPELL_ELECTROSHOCK) me->InterruptSpell(CURRENT_CHANNELED_SPELL); @@ -584,16 +582,14 @@ class boss_flame_leviathan_seat : public CreatureScript struct boss_flame_leviathan_seatAI : public ScriptedAI { - boss_flame_leviathan_seatAI(Creature* creature) : ScriptedAI(creature), vehicle(creature->GetVehicleKit()) + boss_flame_leviathan_seatAI(Creature* creature) : ScriptedAI(creature) { - ASSERT(vehicle); me->SetReactState(REACT_PASSIVE); me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); instance = creature->GetInstanceScript(); } InstanceScript* instance; - Vehicle* vehicle; void PassengerBoarded(Unit* who, int8 seatId, bool apply) override { @@ -628,7 +624,7 @@ class boss_flame_leviathan_seat : public CreatureScript if (apply) return; - if (Unit* device = vehicle->GetPassenger(SEAT_DEVICE)) + if (Unit* device = ASSERT_NOTNULL(me->GetVehicleKit())->GetPassenger(SEAT_DEVICE)) { device->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); device->SetUInt32Value(UNIT_FIELD_FLAGS, 0); // unselectable diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 05bdb568a2e..818bb0041a9 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -611,17 +611,16 @@ class boss_freya : public CreatureScript me->DespawnOrUnsummon(7500); me->CastSpell(me, SPELL_KNOCK_ON_WOOD_CREDIT, true); - Creature* Elder[3]; for (uint8 n = 0; n < 3; ++n) { - Elder[n] = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_BRIGHTLEAF + n)); - if (Elder[n] && Elder[n]->IsAlive()) + Creature* Elder = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_BRIGHTLEAF + n)); + if (Elder && Elder->IsAlive()) { - Elder[n]->RemoveAllAuras(); - Elder[n]->AttackStop(); - Elder[n]->CombatStop(true); - Elder[n]->DeleteThreatList(); - Elder[n]->GetAI()->DoAction(ACTION_ELDER_FREYA_KILLED); + Elder->RemoveAllAuras(); + Elder->AttackStop(); + Elder->CombatStop(true); + Elder->DeleteThreatList(); + Elder->GetAI()->DoAction(ACTION_ELDER_FREYA_KILLED); } } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index d0b87f728c5..a04b53ac495 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -117,10 +117,9 @@ class boss_ignis : public CreatureScript struct boss_ignis_AI : public BossAI { - boss_ignis_AI(Creature* creature) : BossAI(creature, BOSS_IGNIS), _vehicle(me->GetVehicleKit()) + boss_ignis_AI(Creature* creature) : BossAI(creature, BOSS_IGNIS) { Initialize(); - ASSERT(_vehicle); } void Initialize() @@ -133,7 +132,7 @@ class boss_ignis : public CreatureScript void Reset() override { _Reset(); - if (_vehicle) + if (Vehicle* _vehicle = me->GetVehicleKit()) _vehicle->RemoveAllPassengers(); instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_IGNIS_START_EVENT); @@ -284,7 +283,6 @@ class boss_ignis : public CreatureScript private: ObjectGuid _slagPotGUID; - Vehicle* _vehicle; time_t _firstConstructKill; bool _shattered; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index eb9e310b840..92c7d18a065 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -100,11 +100,9 @@ class boss_kologarn : public CreatureScript struct boss_kologarnAI : public BossAI { - boss_kologarnAI(Creature* creature) : BossAI(creature, BOSS_KOLOGARN), vehicle(creature->GetVehicleKit()), + boss_kologarnAI(Creature* creature) : BossAI(creature, BOSS_KOLOGARN), left(false), right(false) { - ASSERT(vehicle); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); @@ -113,7 +111,6 @@ class boss_kologarn : public CreatureScript Reset(); } - Vehicle* vehicle; bool left, right; ObjectGuid eyebeamTarget; @@ -128,9 +125,10 @@ class boss_kologarn : public CreatureScript events.ScheduleEvent(EVENT_FOCUSED_EYEBEAM, 21000); events.ScheduleEvent(EVENT_ENRAGE, 600000); - for (uint8 i = 0; i < 2; ++i) - if (Unit* arm = vehicle->GetPassenger(i)) - arm->ToCreature()->SetInCombatWithZone(); + if (Vehicle* vehicle = me->GetVehicleKit()) + for (uint8 i = 0; i < 2; ++i) + if (Unit* arm = vehicle->GetPassenger(i)) + arm->ToCreature()->SetInCombatWithZone(); _EnterCombat(); } @@ -283,7 +281,7 @@ class boss_kologarn : public CreatureScript case EVENT_RESPAWN_LEFT_ARM: case EVENT_RESPAWN_RIGHT_ARM: { - if (vehicle) + if (Vehicle* vehicle = me->GetVehicleKit()) { int8 seat = eventId == EVENT_RESPAWN_LEFT_ARM ? 0 : 1; uint32 entry = eventId == EVENT_RESPAWN_LEFT_ARM ? NPC_LEFT_ARM : NPC_RIGHT_ARM; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index d0e4b7be63b..48f28077e00 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -401,20 +401,21 @@ class StartAttackEvent : public BasicEvent { public: StartAttackEvent(Creature* summoner, Creature* owner) - : _summoner(summoner), _owner(owner) + : _summonerGuid(summoner->GetGUID()), _owner(owner) { } bool Execute(uint64 /*time*/, uint32 /*diff*/) { _owner->SetReactState(REACT_AGGRESSIVE); - if (Unit* target = _summoner->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 300.0f)) - _owner->AI()->AttackStart(target); + if (Creature* _summoner = ObjectAccessor::GetCreature(*_owner, _summonerGuid)) + if (Unit* target = _summoner->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 300.0f)) + _owner->AI()->AttackStart(target); return true; } private: - Creature* _summoner; + ObjectGuid _summonerGuid; Creature* _owner; }; diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index d5d9f8ae77e..25bf4826000 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -381,7 +381,7 @@ class npc_hyldsmeet_protodrake : public CreatureScript class npc_hyldsmeet_protodrakeAI : public CreatureAI { public: - npc_hyldsmeet_protodrakeAI(Creature* creature) : CreatureAI(creature), _accessoryRespawnTimer(0), _vehicleKit(creature->GetVehicleKit()) { } + npc_hyldsmeet_protodrakeAI(Creature* creature) : CreatureAI(creature), _accessoryRespawnTimer(0) { } void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) override { @@ -396,6 +396,7 @@ class npc_hyldsmeet_protodrake : public CreatureScript { //! We need to manually reinstall accessories because the vehicle itself is friendly to players, //! so EnterEvadeMode is never triggered. The accessory on the other hand is hostile and killable. + Vehicle* _vehicleKit = me->GetVehicleKit(); if (_accessoryRespawnTimer && _accessoryRespawnTimer <= diff && _vehicleKit) { _vehicleKit->InstallAllAccessories(true); @@ -407,7 +408,6 @@ class npc_hyldsmeet_protodrake : public CreatureScript private: uint32 _accessoryRespawnTimer; - Vehicle* _vehicleKit; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp index b76712fc541..a8d65cc096d 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp @@ -219,12 +219,12 @@ public: if (WateryGrave_Timer <= diff) { //Teleport 4 players under the waterfalls - Unit* target; GuidSet targets; GuidSet::const_iterator itr; for (uint8 i = 0; i < 4; ++i) { counter = 0; + Unit* target; do { target = SelectTarget(SELECT_TARGET_RANDOM, 1, 50, true); //target players only @@ -257,12 +257,12 @@ public: //WateryGlobules_Timer if (WateryGlobules_Timer <= diff) { - Unit* pGlobuleTarget; GuidSet globules; GuidSet::const_iterator itr; for (uint8 g = 0; g < 4; g++) //one unit can't cast more than one spell per update, so some players have to cast for us XD { counter = 0; + Unit* pGlobuleTarget; do { pGlobuleTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 50, true); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index f5583c0bc53..e0a703d7b31 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -689,10 +689,9 @@ class boss_kaelthas : public CreatureScript //Respawn advisors Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - Creature* Advisor; for (uint8 i = 0; i < MAX_ADVISORS; ++i) { - Advisor = ObjectAccessor::GetCreature(*me, m_auiAdvisorGuid[i]); + Creature* Advisor = ObjectAccessor::GetCreature(*me, m_auiAdvisorGuid[i]); if (!Advisor) TC_LOG_ERROR("scripts", "SD2: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i); |