aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp402
-rw-r--r--src/server/scripts/World/areatrigger_scripts.cpp293
2 files changed, 374 insertions, 321 deletions
diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
index fd648beedc5..f45aab5bb05 100644
--- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
+++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
@@ -43,216 +43,222 @@ enum Misc
DATA_PIRATES_DELAY_TIMER = 1000
};
-struct instance_deadmines : public ScriptedInstance
+class instance_deadmines : public InstanceMapScript
{
- instance_deadmines(Map* pMap) : ScriptedInstance(pMap) { Initialize(); };
-
- uint64 FactoryDoorGUID;
- uint64 IronCladDoorGUID;
- uint64 DefiasCannonGUID;
- uint64 DoorLeverGUID;
- uint64 DefiasPirate1GUID;
- uint64 DefiasPirate2GUID;
- uint64 DefiasCompanionGUID;
-
- uint32 State;
- uint32 CannonBlast_Timer;
- uint32 PiratesDelay_Timer;
- uint64 uiSmiteChestGUID;
-
- void Initialize()
- {
- FactoryDoorGUID = 0;
- IronCladDoorGUID = 0;
- DefiasCannonGUID = 0;
- DoorLeverGUID = 0;
- DefiasPirate1GUID = 0;
- DefiasPirate2GUID = 0;
- DefiasCompanionGUID = 0;
-
- State = CANNON_NOT_USED;
- uiSmiteChestGUID = 0;
- }
-
- virtual void Update(uint32 diff)
- {
- if (!IronCladDoorGUID || !DefiasCannonGUID || !DoorLeverGUID)
- return;
-
- GameObject *pIronCladDoor = instance->GetGameObject(IronCladDoorGUID);
- if (!pIronCladDoor)
- return;
-
- switch (State)
- {
- case CANNON_GUNPOWDER_USED:
- CannonBlast_Timer = DATA_CANNON_BLAST_TIMER;
- // it's a hack - Mr. Smite should do that but his too far away
- pIronCladDoor->SetName("Mr. Smite");
- pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, 0);
- DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM1);
- State = CANNON_BLAST_INITIATED;
- break;
- case CANNON_BLAST_INITIATED:
- PiratesDelay_Timer = DATA_PIRATES_DELAY_TIMER;
- if (CannonBlast_Timer <= diff)
- {
- SummonCreatures();
- ShootCannon();
- BlastOutDoor();
- LeverStucked();
- pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, 0);
- DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM2);
- State = PIRATES_ATTACK;
- } else CannonBlast_Timer -= diff;
- break;
- case PIRATES_ATTACK:
- if (PiratesDelay_Timer <= diff)
- {
- MoveCreaturesInside();
- State = EVENT_DONE;
- } else PiratesDelay_Timer -= diff;
- break;
- }
- }
-
- void SummonCreatures()
- {
- if (GameObject *pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
- {
- Creature *DefiasPirate1 = pIronCladDoor->SummonCreature(657,pIronCladDoor->GetPositionX() - 2,pIronCladDoor->GetPositionY()-7,pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- Creature *DefiasPirate2 = pIronCladDoor->SummonCreature(657,pIronCladDoor->GetPositionX() + 3,pIronCladDoor->GetPositionY()-6,pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- Creature *DefiasCompanion = pIronCladDoor->SummonCreature(3450,pIronCladDoor->GetPositionX() + 2,pIronCladDoor->GetPositionY()-6,pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
-
- DefiasPirate1GUID = DefiasPirate1->GetGUID();
- DefiasPirate2GUID = DefiasPirate2->GetGUID();
- DefiasCompanionGUID = DefiasCompanion->GetGUID();
- }
- }
-
- void MoveCreaturesInside()
- {
- if (!DefiasPirate1GUID || !DefiasPirate2GUID || !DefiasCompanionGUID)
- return;
-
- Creature *pDefiasPirate1 = instance->GetCreature(DefiasPirate1GUID);
- Creature *pDefiasPirate2 = instance->GetCreature(DefiasPirate2GUID);
- Creature *pDefiasCompanion = instance->GetCreature(DefiasCompanionGUID);
- if (!pDefiasPirate1 || !pDefiasPirate2 || !pDefiasCompanion)
- return;
-
- MoveCreatureInside(pDefiasPirate1);
- MoveCreatureInside(pDefiasPirate2);
- MoveCreatureInside(pDefiasCompanion);
- }
-
- void MoveCreatureInside(Creature* pCreature)
- {
- pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
- pCreature->GetMotionMaster()->MovePoint(0, -102.7,-655.9, pCreature->GetPositionZ());
- }
-
- void ShootCannon()
- {
- if (GameObject *pDefiasCannon = instance->GetGameObject(DefiasCannonGUID))
- {
- pDefiasCannon->SetGoState(GO_STATE_ACTIVE);
- DoPlaySound(pDefiasCannon, SOUND_CANNONFIRE);
- }
- }
-
- void BlastOutDoor()
- {
- if (GameObject *pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
- {
- pIronCladDoor->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
- DoPlaySound(pIronCladDoor, SOUND_DESTROYDOOR);
- }
- }
-
- void LeverStucked()
- {
- if (GameObject *pDoorLever = instance->GetGameObject(DoorLeverGUID))
- pDoorLever->SetUInt32Value(GAMEOBJECT_FLAGS, 4);
- }
-
- void OnGameObjectCreate(GameObject* pGo, bool /*add*/)
- {
- switch(pGo->GetEntry())
- {
- case GO_FACTORY_DOOR: FactoryDoorGUID = pGo->GetGUID(); break;
- case GO_IRONCLAD_DOOR: IronCladDoorGUID = pGo->GetGUID(); break;
- case GO_DEFIAS_CANNON: DefiasCannonGUID = pGo->GetGUID(); break;
- case GO_DOOR_LEVER: DoorLeverGUID = pGo->GetGUID(); break;
- case GO_MR_SMITE_CHEST: uiSmiteChestGUID = pGo->GetGUID(); break;
- }
- }
+ public:
- void SetData(uint32 type, uint32 data)
- {
- switch (type)
+ instance_deadmines()
+ : InstanceMapScript("instance_deadmines");
{
- case EVENT_STATE:
- if (DefiasCannonGUID && IronCladDoorGUID)
- State=data;
- break;
- case EVENT_RHAHKZOR:
- if (data == DONE)
- if (GameObject* pGo = instance->GetGameObject(FactoryDoorGUID))
- pGo->SetGoState(GO_STATE_ACTIVE);
- break;
}
- }
- uint32 GetData(uint32 type)
- {
- switch (type)
+ struct instance_deadmines_InstanceMapScript : public ScriptedInstance
{
- case EVENT_STATE:
- return State;
- }
+ instance_deadmines_InstanceMapScript(Map* pMap) : ScriptedInstance(pMap) { Initialize(); };
+
+ uint64 FactoryDoorGUID;
+ uint64 IronCladDoorGUID;
+ uint64 DefiasCannonGUID;
+ uint64 DoorLeverGUID;
+ uint64 DefiasPirate1GUID;
+ uint64 DefiasPirate2GUID;
+ uint64 DefiasCompanionGUID;
+
+ uint32 State;
+ uint32 CannonBlast_Timer;
+ uint32 PiratesDelay_Timer;
+ uint64 uiSmiteChestGUID;
+
+ void Initialize()
+ {
+ FactoryDoorGUID = 0;
+ IronCladDoorGUID = 0;
+ DefiasCannonGUID = 0;
+ DoorLeverGUID = 0;
+ DefiasPirate1GUID = 0;
+ DefiasPirate2GUID = 0;
+ DefiasCompanionGUID = 0;
+
+ State = CANNON_NOT_USED;
+ uiSmiteChestGUID = 0;
+ }
+
+ virtual void Update(uint32 diff)
+ {
+ if (!IronCladDoorGUID || !DefiasCannonGUID || !DoorLeverGUID)
+ return;
+
+ GameObject *pIronCladDoor = instance->GetGameObject(IronCladDoorGUID);
+ if (!pIronCladDoor)
+ return;
+
+ switch (State)
+ {
+ case CANNON_GUNPOWDER_USED:
+ CannonBlast_Timer = DATA_CANNON_BLAST_TIMER;
+ // it's a hack - Mr. Smite should do that but his too far away
+ pIronCladDoor->SetName("Mr. Smite");
+ pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, 0);
+ DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM1);
+ State = CANNON_BLAST_INITIATED;
+ break;
+ case CANNON_BLAST_INITIATED:
+ PiratesDelay_Timer = DATA_PIRATES_DELAY_TIMER;
+ if (CannonBlast_Timer <= diff)
+ {
+ SummonCreatures();
+ ShootCannon();
+ BlastOutDoor();
+ LeverStucked();
+ pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, 0);
+ DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM2);
+ State = PIRATES_ATTACK;
+ } else CannonBlast_Timer -= diff;
+ break;
+ case PIRATES_ATTACK:
+ if (PiratesDelay_Timer <= diff)
+ {
+ MoveCreaturesInside();
+ State = EVENT_DONE;
+ } else PiratesDelay_Timer -= diff;
+ break;
+ }
+ }
+
+ void SummonCreatures()
+ {
+ if (GameObject *pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
+ {
+ Creature *DefiasPirate1 = pIronCladDoor->SummonCreature(657,pIronCladDoor->GetPositionX() - 2,pIronCladDoor->GetPositionY()-7,pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
+ Creature *DefiasPirate2 = pIronCladDoor->SummonCreature(657,pIronCladDoor->GetPositionX() + 3,pIronCladDoor->GetPositionY()-6,pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
+ Creature *DefiasCompanion = pIronCladDoor->SummonCreature(3450,pIronCladDoor->GetPositionX() + 2,pIronCladDoor->GetPositionY()-6,pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
+
+ DefiasPirate1GUID = DefiasPirate1->GetGUID();
+ DefiasPirate2GUID = DefiasPirate2->GetGUID();
+ DefiasCompanionGUID = DefiasCompanion->GetGUID();
+ }
+ }
+
+ void MoveCreaturesInside()
+ {
+ if (!DefiasPirate1GUID || !DefiasPirate2GUID || !DefiasCompanionGUID)
+ return;
+
+ Creature *pDefiasPirate1 = instance->GetCreature(DefiasPirate1GUID);
+ Creature *pDefiasPirate2 = instance->GetCreature(DefiasPirate2GUID);
+ Creature *pDefiasCompanion = instance->GetCreature(DefiasCompanionGUID);
+ if (!pDefiasPirate1 || !pDefiasPirate2 || !pDefiasCompanion)
+ return;
+
+ MoveCreatureInside(pDefiasPirate1);
+ MoveCreatureInside(pDefiasPirate2);
+ MoveCreatureInside(pDefiasCompanion);
+ }
+
+ void MoveCreatureInside(Creature* pCreature)
+ {
+ pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ pCreature->GetMotionMaster()->MovePoint(0, -102.7,-655.9, pCreature->GetPositionZ());
+ }
+
+ void ShootCannon()
+ {
+ if (GameObject *pDefiasCannon = instance->GetGameObject(DefiasCannonGUID))
+ {
+ pDefiasCannon->SetGoState(GO_STATE_ACTIVE);
+ DoPlaySound(pDefiasCannon, SOUND_CANNONFIRE);
+ }
+ }
+
+ void BlastOutDoor()
+ {
+ if (GameObject *pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
+ {
+ pIronCladDoor->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
+ DoPlaySound(pIronCladDoor, SOUND_DESTROYDOOR);
+ }
+ }
+
+ void LeverStucked()
+ {
+ if (GameObject *pDoorLever = instance->GetGameObject(DoorLeverGUID))
+ pDoorLever->SetUInt32Value(GAMEOBJECT_FLAGS, 4);
+ }
+
+ void OnGameObjectCreate(GameObject* pGo, bool /*add*/)
+ {
+ switch(pGo->GetEntry())
+ {
+ case GO_FACTORY_DOOR: FactoryDoorGUID = pGo->GetGUID(); break;
+ case GO_IRONCLAD_DOOR: IronCladDoorGUID = pGo->GetGUID(); break;
+ case GO_DEFIAS_CANNON: DefiasCannonGUID = pGo->GetGUID(); break;
+ case GO_DOOR_LEVER: DoorLeverGUID = pGo->GetGUID(); break;
+ case GO_MR_SMITE_CHEST: uiSmiteChestGUID = pGo->GetGUID(); break;
+ }
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ switch (type)
+ {
+ case EVENT_STATE:
+ if (DefiasCannonGUID && IronCladDoorGUID)
+ State=data;
+ break;
+ case EVENT_RHAHKZOR:
+ if (data == DONE)
+ if (GameObject* pGo = instance->GetGameObject(FactoryDoorGUID))
+ pGo->SetGoState(GO_STATE_ACTIVE);
+ break;
+ }
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ switch (type)
+ {
+ case EVENT_STATE:
+ return State;
+ }
- return 0;
- }
+ return 0;
+ }
- uint64 GetData64(uint32 data)
- {
- switch (data)
+ uint64 GetData64(uint32 data)
+ {
+ switch (data)
+ {
+ case DATA_SMITE_CHEST:
+ return uiSmiteChestGUID;
+ }
+
+ return 0;
+ }
+
+ void DoPlaySound(GameObject* unit, uint32 sound)
+ {
+ WorldPacket data(4);
+ data.SetOpcode(SMSG_PLAY_SOUND);
+ data << uint32(sound);
+ unit->SendMessageToSet(&data,false);
+ }
+
+ void DoPlaySoundCreature(Unit* unit, uint32 sound)
+ {
+ WorldPacket data(4);
+ data.SetOpcode(SMSG_PLAY_SOUND);
+ data << uint32(sound);
+ unit->SendMessageToSet(&data,false);
+ }
+ };
+
+ InstanceData* OnGetInstanceData(InstanceMap* map)
{
- case DATA_SMITE_CHEST:
- return uiSmiteChestGUID;
+ return new instance_deadmines_InstanceMapScript(pMap);
}
-
- return 0;
- }
-
- void DoPlaySound(GameObject* unit, uint32 sound)
- {
- WorldPacket data(4);
- data.SetOpcode(SMSG_PLAY_SOUND);
- data << uint32(sound);
- unit->SendMessageToSet(&data,false);
- }
-
- void DoPlaySoundCreature(Unit* unit, uint32 sound)
- {
- WorldPacket data(4);
- data.SetOpcode(SMSG_PLAY_SOUND);
- data << uint32(sound);
- unit->SendMessageToSet(&data,false);
- }
};
-InstanceData* GetInstanceData_instance_deadmines(Map* pMap)
-{
- return new instance_deadmines(pMap);
-}
-
void AddSC_instance_deadmines()
{
- Script *newscript;
- newscript = new Script;
- newscript->Name = "instance_deadmines";
- newscript->GetInstanceData = &GetInstanceData_instance_deadmines;
- newscript->RegisterSelf();
+ new instance_deadmines();
}
diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp
index 3d6f1a4e8d6..14628cd67c2 100644
--- a/src/server/scripts/World/areatrigger_scripts.cpp
+++ b/src/server/scripts/World/areatrigger_scripts.cpp
@@ -55,17 +55,27 @@ enum eAldurtharGate
NPC_NORTHWEST_GATE = 32199
};
-bool AreaTrigger_at_aldurthar_gate(Player* pPlayer, const AreaTriggerEntry* pAt)
+class AreaTrigger_at_aldurthar_gate : public AreaTriggerScript
{
- switch(pAt->id)
- {
- case TRIGGER_SOUTH: pPlayer->KilledMonsterCredit(NPC_SOUTH_GATE, 0); break;
- case TRIGGER_CENTRAL: pPlayer->KilledMonsterCredit(NPC_CENTRAL_GATE, 0); break;
- case TRIGGER_NORTH: pPlayer->KilledMonsterCredit(NPC_NORTH_GATE, 0); break;
- case TRIGGER_NORTHWEST: pPlayer->KilledMonsterCredit(NPC_NORTHWEST_GATE, 0); break;
- }
- return true;
-}
+ public:
+
+ AreaTrigger_at_aldurthar_gate()
+ : AreaTriggerScript("at_aldurthar_gate")
+ {
+ }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ switch(trigger->id)
+ {
+ case TRIGGER_SOUTH: player->KilledMonsterCredit(NPC_SOUTH_GATE, 0); break;
+ case TRIGGER_CENTRAL: player->KilledMonsterCredit(NPC_CENTRAL_GATE, 0); break;
+ case TRIGGER_NORTH: player->KilledMonsterCredit(NPC_NORTH_GATE, 0); break;
+ case TRIGGER_NORTHWEST: player->KilledMonsterCredit(NPC_NORTHWEST_GATE, 0); break;
+ }
+ return true;
+ }
+};
/*######
## at_coilfang_waterfall
@@ -76,14 +86,24 @@ enum eCoilfangGOs
GO_COILFANG_WATERFALL = 184212
};
-bool AreaTrigger_at_coilfang_waterfall(Player *pPlayer, const AreaTriggerEntry * /*pAt*/)
+class AreaTrigger_at_coilfang_waterfall : public AreaTriggerScript
{
- if (GameObject* pGo = GetClosestGameObjectWithEntry(pPlayer, GO_COILFANG_WATERFALL, 35.0f))
- if (pGo->getLootState() == GO_READY)
- pGo->UseDoorOrButton();
+ public:
- return false;
-}
+ AreaTrigger_at_coilfang_waterfall()
+ : AreaTriggerScript("at_coilfang_waterfall")
+ {
+ }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (GameObject* pGo = GetClosestGameObjectWithEntry(player, GO_COILFANG_WATERFALL, 35.0f))
+ if (pGo->getLootState() == GO_READY)
+ pGo->UseDoorOrButton();
+
+ return false;
+ }
+};
/*#####
## at_legion_teleporter
@@ -98,26 +118,36 @@ enum eLegionTeleporter
QUEST_GAINING_ACCESS_H = 10604
};
-bool AreaTrigger_at_legion_teleporter(Player *pPlayer, const AreaTriggerEntry * /*pAt*/)
+class AreaTrigger_at_legion_teleporter : public AreaTriggerScript
{
- if (pPlayer->isAlive() && !pPlayer->isInCombat())
- {
- if (pPlayer->GetTeam() == ALLIANCE && pPlayer->GetQuestRewardStatus(QUEST_GAINING_ACCESS_A))
+ public:
+
+ AreaTrigger_at_legion_teleporter()
+ : AreaTriggerScript("at_legion_teleporter")
{
- pPlayer->CastSpell(pPlayer, SPELL_TELE_A_TO, false);
- return true;
}
- if (pPlayer->GetTeam() == HORDE && pPlayer->GetQuestRewardStatus(QUEST_GAINING_ACCESS_H))
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
{
- pPlayer->CastSpell(pPlayer, SPELL_TELE_H_TO, false);
- return true;
+ if (player->isAlive() && !player->isInCombat())
+ {
+ if (player->GetTeam() == ALLIANCE && player->GetQuestRewardStatus(QUEST_GAINING_ACCESS_A))
+ {
+ player->CastSpell(player, SPELL_TELE_A_TO, false);
+ return true;
+ }
+
+ if (player->GetTeam() == HORDE && player->GetQuestRewardStatus(QUEST_GAINING_ACCESS_H))
+ {
+ player->CastSpell(player, SPELL_TELE_H_TO, false);
+ return true;
+ }
+
+ return false;
+ }
+ return false;
}
-
- return false;
- }
- return false;
-}
+};
enum eRavenholdt
{
@@ -125,13 +155,23 @@ enum eRavenholdt
NPC_RAVENHOLDT = 13936
};
-bool AreaTrigger_at_ravenholdt(Player* pPlayer, const AreaTriggerEntry* /*pAt*/)
+class AreaTrigger_at_ravenholdt : public AreaTriggerScript
{
- if (pPlayer->GetQuestStatus(QUEST_MANOR_RAVENHOLDT) == QUEST_STATUS_INCOMPLETE)
- pPlayer->KilledMonsterCredit(NPC_RAVENHOLDT, 0);
+ public:
- return false;
-}
+ AreaTrigger_at_ravenholdt()
+ : AreaTriggerScript("at_ravenholdt")
+ {
+ }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (player->GetQuestStatus(QUEST_MANOR_RAVENHOLDT) == QUEST_STATUS_INCOMPLETE)
+ player->KilledMonsterCredit(NPC_RAVENHOLDT, 0);
+
+ return false;
+ }
+};
/*######
## at_warsong_farms
@@ -150,19 +190,29 @@ enum eWarsongFarms
AT_TORP_FARM = 4872
};
-bool AreaTrigger_at_warsong_farms(Player* pPlayer, const AreaTriggerEntry* pAt)
+class AreaTrigger_at_warsong_farms : public AreaTriggerScript
{
- if (!pPlayer->isDead() && pPlayer->GetQuestStatus(QUEST_THE_WARSONG_FARMS) == QUEST_STATUS_INCOMPLETE)
- {
- switch(pAt->id)
+ public:
+
+ AreaTrigger_at_warsong_farms()
+ : AreaTriggerScript("at_warsong_farms")
{
- case AT_SLAUGHTERHOUSE: pPlayer->KilledMonsterCredit(NPC_CREDIT_SLAUGHTERHOUSE, 0); break;
- case AT_GRAINERY: pPlayer->KilledMonsterCredit(NPC_CREDIT_GRAINERY, 0); break;
- case AT_TORP_FARM: pPlayer->KilledMonsterCredit(NPC_CREDIT_TORP_FARM, 0); break;
}
- }
- return true;
- }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (!player->isDead() && player->GetQuestStatus(QUEST_THE_WARSONG_FARMS) == QUEST_STATUS_INCOMPLETE)
+ {
+ switch(trigger->id)
+ {
+ case AT_SLAUGHTERHOUSE: player->KilledMonsterCredit(NPC_CREDIT_SLAUGHTERHOUSE, 0); break;
+ case AT_GRAINERY: player->KilledMonsterCredit(NPC_CREDIT_GRAINERY, 0); break;
+ case AT_TORP_FARM: player->KilledMonsterCredit(NPC_CREDIT_TORP_FARM, 0); break;
+ }
+ }
+ return true;
+ }
+};
/*######
## at_stormwright_shelf
@@ -175,13 +225,23 @@ enum eStormwrightShelf
SPELL_CREATE_TRUE_POWER_OF_THE_TEMPEST = 53067
};
-bool AreaTrigger_at_stormwright_shelf(Player* pPlayer, const AreaTriggerEntry* /*pAt*/)
+class AreaTrigger_at_stormwright_shelf : public AreaTriggerScript
{
- if (!pPlayer->isDead() && pPlayer->GetQuestStatus(QUEST_STRENGTH_OF_THE_TEMPEST) == QUEST_STATUS_INCOMPLETE)
- pPlayer->CastSpell(pPlayer, SPELL_CREATE_TRUE_POWER_OF_THE_TEMPEST, false);
+ public:
- return true;
-}
+ AreaTrigger_at_stormwright_shelf()
+ : AreaTriggerScript("at_stormwright_shelf")
+ {
+ }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (!player->isDead() && player->GetQuestStatus(QUEST_STRENGTH_OF_THE_TEMPEST) == QUEST_STATUS_INCOMPLETE)
+ player->CastSpell(player, SPELL_CREATE_TRUE_POWER_OF_THE_TEMPEST, false);
+
+ return true;
+ }
+};
/*######
## at_scent_larkorwi
@@ -193,16 +253,26 @@ enum eScentLarkorwi
NPC_LARKORWI_MATE = 9683
};
-bool AreaTrigger_at_scent_larkorwi(Player* pPlayer, const AreaTriggerEntry* /*pAt*/)
+class AreaTrigger_at_scent_larkorwi : public AreaTriggerScript
{
- if (!pPlayer->isDead() && pPlayer->GetQuestStatus(QUEST_SCENT_OF_LARKORWI) == QUEST_STATUS_INCOMPLETE)
- {
- if (!pPlayer->FindNearestCreature(NPC_LARKORWI_MATE,15))
- pPlayer->SummonCreature(NPC_LARKORWI_MATE, pPlayer->GetPositionX()+5, pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 3.3, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 100000);
- }
+ public:
- return false;
-}
+ AreaTrigger_at_scent_larkorwi()
+ : AreaTriggerScript("at_scent_larkorwi")
+ {
+ }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (!player->isDead() && player->GetQuestStatus(QUEST_SCENT_OF_LARKORWI) == QUEST_STATUS_INCOMPLETE)
+ {
+ if (!player->FindNearestCreature(NPC_LARKORWI_MATE,15))
+ player->SummonCreature(NPC_LARKORWI_MATE, player->GetPositionX()+5, player->GetPositionY(), player->GetPositionZ(), 3.3, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 100000);
+ }
+
+ return false;
+ }
+};
/*#####
## at_last_rites
@@ -213,75 +283,52 @@ enum eAtLastRites
QUEST_LAST_RITES = 12019
};
-bool AreaTrigger_at_last_rites(Player* pPlayer, const AreaTriggerEntry* pAt)
+class AreaTrigger_at_last_rites : public AreaTriggerScript
{
- if (pPlayer->GetQuestStatus(QUEST_LAST_RITES) != QUEST_STATUS_INCOMPLETE)
- return false;
-
- WorldLocation pPosition;
-
- switch(pAt->id)
- {
- case 5332:
- case 5338:
- pPosition = WorldLocation(571,3733.68,3563.25,290.812,3.665192);
- break;
- case 5334:
- pPosition = WorldLocation(571,3802.38,3585.95,49.5765,0);
- break;
- case 5340:
- pPosition = WorldLocation(571,3687.91,3577.28,473.342,0);
- break;
- default:
- return false;
- }
+ public:
- pPlayer->TeleportTo(pPosition);
+ AreaTrigger_at_last_rites()
+ : AreaTriggerScript("at_last_rites")
+ {
+ }
- return false;
-}
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (player->GetQuestStatus(QUEST_LAST_RITES) != QUEST_STATUS_INCOMPLETE)
+ return false;
+
+ WorldLocation pPosition;
+
+ switch(trigger->id)
+ {
+ case 5332:
+ case 5338:
+ pPosition = WorldLocation(571,3733.68,3563.25,290.812,3.665192);
+ break;
+ case 5334:
+ pPosition = WorldLocation(571,3802.38,3585.95,49.5765,0);
+ break;
+ case 5340:
+ pPosition = WorldLocation(571,3687.91,3577.28,473.342,0);
+ break;
+ default:
+ return false;
+ }
+
+ player->TeleportTo(pPosition);
+
+ return false;
+ }
+};
void AddSC_areatrigger_scripts()
{
- Script* newscript;
-
- newscript = new Script;
- newscript->Name = "at_aldurthar_gate";
- newscript->pAreaTrigger = &AreaTrigger_at_aldurthar_gate;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_coilfang_waterfall";
- newscript->pAreaTrigger = &AreaTrigger_at_coilfang_waterfall;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_legion_teleporter";
- newscript->pAreaTrigger = &AreaTrigger_at_legion_teleporter;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_ravenholdt";
- newscript->pAreaTrigger = &AreaTrigger_at_ravenholdt;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_warsong_farms";
- newscript->pAreaTrigger = &AreaTrigger_at_warsong_farms;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_stormwright_shelf";
- newscript->pAreaTrigger = &AreaTrigger_at_stormwright_shelf;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_scent_larkorwi";
- newscript->pAreaTrigger = &AreaTrigger_at_scent_larkorwi;
- newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name = "at_last_rites";
- newscript->pAreaTrigger = &AreaTrigger_at_last_rites;
- newscript->RegisterSelf();
+ new AreaTrigger_at_aldurthar_gate();
+ new AreaTrigger_at_coilfang_waterfall();
+ new AreaTrigger_at_legion_teleporter();
+ new AreaTrigger_at_ravenholdt();
+ new AreaTrigger_at_warsong_farms();
+ new AreaTrigger_at_stormwright_shelf();
+ new AreaTrigger_at_scent_larkorwi();
+ new AreaTrigger_at_last_rites();
}