aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms/Stratholme
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/EasternKingdoms/Stratholme')
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp62
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/stratholme.h6
2 files changed, 38 insertions, 30 deletions
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp
index ec82afb6cab..5c0881958ce 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp
@@ -30,6 +30,7 @@ npc_spectral_ghostly_citizen
EndContentData */
#include "ScriptMgr.h"
+#include "GameObjectAI.h"
#include "GameObject.h"
#include "Group.h"
#include "InstanceScript.h"
@@ -46,41 +47,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 GetStratholmeAI<go_gauntlet_gateAI>(go);
+ }
};
/*######
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h
index 8c3d50e0eef..f3f5121bb5a 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h
+++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h
@@ -83,10 +83,10 @@ enum STRSpellIds
SPELL_BARON_ULTIMATUM = 27861
};
-template<typename AI>
-inline AI* GetStratholmeAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetStratholmeAI(T* obj)
{
- return GetInstanceAI<AI>(creature, StratholmeScriptName);
+ return GetInstanceAI<AI>(obj, StratholmeScriptName);
}
#endif