diff options
Diffstat (limited to 'src/server/scripts/EasternKingdoms/Stratholme')
| -rw-r--r-- | src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp index 3ccf0e3dd19..c67a1c2b4bb 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp @@ -32,6 +32,7 @@ EndContentData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "GameObjectAI.h" #include "stratholme.h" #include "Group.h" #include "Player.h" @@ -43,41 +44,48 @@ EndContentData */ class go_gauntlet_gate : public GameObjectScript { -public: - go_gauntlet_gate() : GameObjectScript("go_gauntlet_gate") { } - - bool OnGossipHello(Player* player, GameObject* go) override - { - InstanceScript* instance = go->GetInstanceScript(); + public: + go_gauntlet_gate() : GameObjectScript("go_gauntlet_gate") { } - if (!instance) - return false; + struct go_gauntlet_gateAI : public GameObjectAI + { + go_gauntlet_gateAI(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { } - if (instance->GetData(TYPE_BARON_RUN) != NOT_STARTED) - return false; + InstanceScript* instance; - if (Group* group = player->GetGroup()) - { - for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) + bool GossipHello(Player* player, bool /*reportUse*/) override { - Player* pGroupie = itr->GetSource(); - if (!pGroupie || !pGroupie->IsInMap(player)) - continue; - - if (pGroupie->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE && - !pGroupie->HasAura(SPELL_BARON_ULTIMATUM) && - pGroupie->GetMap() == go->GetMap()) - pGroupie->CastSpell(pGroupie, SPELL_BARON_ULTIMATUM, true); - } - } else if (player->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE && + if (instance->GetData(TYPE_BARON_RUN) != NOT_STARTED) + return false; + + if (Group* group = player->GetGroup()) + { + for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) + { + Player* pGroupie = itr->GetSource(); + if (!pGroupie || !pGroupie->IsInMap(player)) + continue; + + if (pGroupie->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE && + !pGroupie->HasAura(SPELL_BARON_ULTIMATUM) && + pGroupie->GetMap() == me->GetMap()) + pGroupie->CastSpell(pGroupie, SPELL_BARON_ULTIMATUM, true); + } + } + else if (player->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE && !player->HasAura(SPELL_BARON_ULTIMATUM) && - player->GetMap() == go->GetMap()) + player->GetMap() == me->GetMap()) player->CastSpell(player, SPELL_BARON_ULTIMATUM, true); - instance->SetData(TYPE_BARON_RUN, IN_PROGRESS); - return false; - } + instance->SetData(TYPE_BARON_RUN, IN_PROGRESS); + return false; + } + }; + GameObjectAI* GetAI(GameObject* go) const override + { + return GetInstanceAI<go_gauntlet_gateAI>(go); + } }; /*###### |
