diff options
Diffstat (limited to 'src/server/scripts/EasternKingdoms/ScarletMonastery')
| -rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp | 48 | ||||
| -rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h | 6 |
2 files changed, 32 insertions, 22 deletions
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 338b93d96e1..d27c334a0de 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -23,6 +23,7 @@ SDCategory: Scarlet Monastery EndScriptData */ #include "ScriptMgr.h" +#include "GameObjectAI.h" #include "GameObject.h" #include "Group.h" #include "InstanceScript.h" @@ -880,32 +881,41 @@ enum LooselyTurnedSoil class go_loosely_turned_soil : public GameObjectScript { -public: - go_loosely_turned_soil() : GameObjectScript("go_loosely_turned_soil") { } + public: + go_loosely_turned_soil() : GameObjectScript("go_loosely_turned_soil") { } - bool OnGossipHello(Player* player, GameObject* /*go*/) override - { - if (InstanceScript* instance = player->GetInstanceScript()) - if (instance->GetBossState(DATA_HORSEMAN_EVENT) == IN_PROGRESS || player->GetQuestStatus(QUEST_CALL_THE_HEADLESS_HORSEMAN) != QUEST_STATUS_COMPLETE) - return true; + struct go_loosely_turned_soilAI : public GameObjectAI + { + go_loosely_turned_soilAI(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { } - return false; - } + InstanceScript* instance; + + bool GossipHello(Player* player, bool /*reportUse*/) override + { + if (instance->GetBossState(DATA_HORSEMAN_EVENT) == IN_PROGRESS || player->GetQuestStatus(QUEST_CALL_THE_HEADLESS_HORSEMAN) != QUEST_STATUS_COMPLETE) + return true; - bool OnQuestReward(Player* player, GameObject* go, Quest const* /*quest*/, uint32 /*opt*/) override - { - if (InstanceScript* instance = go->GetInstanceScript()) - if (instance->GetBossState(DATA_HORSEMAN_EVENT) == IN_PROGRESS) return false; + } - player->AreaExploredOrEventHappens(11405); - if (Creature* horseman = go->SummonCreature(HH_MOUNTED, FlightPoint[20], TEMPSUMMON_MANUAL_DESPAWN, 0)) + void QuestReward(Player* player, Quest const* /*quest*/, uint32 /*opt*/) override + { + if (instance->GetBossState(DATA_HORSEMAN_EVENT) == IN_PROGRESS) + return; + + player->AreaExploredOrEventHappens(11405); + if (Creature* horseman = me->SummonCreature(HH_MOUNTED, FlightPoint[20], TEMPSUMMON_MANUAL_DESPAWN, 0)) + { + ENSURE_AI(boss_headless_horseman::boss_headless_horsemanAI, horseman->AI())->PlayerGUID = player->GetGUID(); + ENSURE_AI(boss_headless_horseman::boss_headless_horsemanAI, horseman->AI())->FlyMode(); + } + } + }; + + GameObjectAI* GetAI(GameObject* go) const override { - ENSURE_AI(boss_headless_horseman::boss_headless_horsemanAI, horseman->AI())->PlayerGUID = player->GetGUID(); - ENSURE_AI(boss_headless_horseman::boss_headless_horsemanAI, horseman->AI())->FlyMode(); + return GetScarletMonasteryAI<go_loosely_turned_soilAI>(go); } - return true; - } }; void npc_head::npc_headAI::Disappear() diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h index 39fac73d489..c1ba06d446b 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h @@ -62,10 +62,10 @@ enum SMGameObjectIds GO_PUMPKIN_SHRINE = 186267 }; -template<typename AI> -inline AI* GetScarletMonasteryAI(Creature* creature) +template<class AI, class T> +inline AI* GetScarletMonasteryAI(T* obj) { - return GetInstanceAI<AI>(creature, SMScriptName); + return GetInstanceAI<AI>(obj, SMScriptName); } #endif // SCARLET_M_ |
