aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortartalo <none@none>2009-10-27 13:11:33 +0100
committertartalo <none@none>2009-10-27 13:11:33 +0100
commitaa0cd71e20d7095add7d373bd544222392fddb47 (patch)
tree353d2f7e76ae0682b89855257d8b7999487974ee /src
parentd583e8da7266b24dd5cd7996dc4575d3ffe02350 (diff)
Deadmines: Clean up + Code relocation
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/CMakeLists.txt1
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.cpp177
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.h25
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/deadmines/instance_deadmines.cpp188
-rw-r--r--src/bindings/scripts/system/ScriptLoader.cpp6
5 files changed, 211 insertions, 186 deletions
diff --git a/src/bindings/scripts/CMakeLists.txt b/src/bindings/scripts/CMakeLists.txt
index a8e758c14fa..420dfb2e30c 100644
--- a/src/bindings/scripts/CMakeLists.txt
+++ b/src/bindings/scripts/CMakeLists.txt
@@ -56,6 +56,7 @@ SET(trinityscript_LIB_SRCS
scripts/eastern_kingdoms/blackwing_lair/instance_blackwing_lair.cpp
scripts/eastern_kingdoms/deadmines/deadmines.h
scripts/eastern_kingdoms/deadmines/deadmines.cpp
+ scripts/eastern_kingdoms/deadmines/instance_deadmines.cpp
scripts/eastern_kingdoms/karazhan/boss_curator.cpp
scripts/eastern_kingdoms/karazhan/boss_maiden_of_virtue.cpp
scripts/eastern_kingdoms/karazhan/boss_midnight.cpp
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.cpp
index 3a082588c09..1e44bef76be 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.cpp
@@ -25,171 +25,6 @@ EndScriptData */
#include "deadmines.h"
#include "Spell.h"
-#define SOUND_CANNONFIRE 1400
-#define SOUND_DESTROYDOOR 3079
-#define SAY_MR_SMITE_ALARM1 "You there, check out that noise!"
-#define SOUND_MR_SMITE_ALARM1 5775
-#define SAY_MR_SMITE_ALARM2 "We're under attack! A vast, ye swabs! Repel the invaders!"
-#define SOUND_MR_SMITE_ALARM2 5777
-
-#define GO_IRONCLAD_DOOR 16397
-#define GO_DEFIAS_CANNON 16398
-#define GO_DOOR_LEVER 101833
-
-#define CANNON_BLAST_TIMER 3000
-#define PIRATES_DELAY_TIMER 1000
-
-struct TRINITY_DLL_DECL instance_deadmines : public ScriptedInstance
-{
- instance_deadmines(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
-
- GameObject* IronCladDoor;
- GameObject* DefiasCannon;
- GameObject* DoorLever;
- Creature* DefiasPirate1;
- Creature* DefiasPirate2;
- Creature* DefiasCompanion;
- uint32 State;
- uint32 CannonBlast_Timer;
- uint32 PiratesDelay_Timer;
-
- void Initialize()
- {
- IronCladDoor = NULL;
- DefiasCannon = NULL;
- DoorLever = NULL;
- State = CANNON_NOT_USED;
- }
-
- virtual void Update(uint32 diff)
- {
- if (!IronCladDoor || !DefiasCannon || !DoorLever)
- return;
-
- switch(State)
- {
- case CANNON_GUNPOWDER_USED:
- CannonBlast_Timer = CANNON_BLAST_TIMER;
- // it's a hack - Mr. Smite should do that but his too far away
- IronCladDoor->SetName("Mr. Smite");
- IronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, 0);
- DoPlaySound(IronCladDoor, SOUND_MR_SMITE_ALARM1);
- State=CANNON_BLAST_INITIATED;
- break;
- case CANNON_BLAST_INITIATED:
- PiratesDelay_Timer = PIRATES_DELAY_TIMER;
- if (CannonBlast_Timer<diff)
- {
- SummonCreatures();
- ShootCannon();
- BlastOutDoor();
- LeverStucked();
- IronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, 0);
- DoPlaySound(IronCladDoor, 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()
- {
- DefiasPirate1 = IronCladDoor->SummonCreature(657,IronCladDoor->GetPositionX() - 2,IronCladDoor->GetPositionY()-7,IronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- DefiasPirate2 = IronCladDoor->SummonCreature(657,IronCladDoor->GetPositionX() + 3,IronCladDoor->GetPositionY()-6,IronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- DefiasCompanion = IronCladDoor->SummonCreature(3450,IronCladDoor->GetPositionX() + 2,IronCladDoor->GetPositionY()-6,IronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- }
-
- void MoveCreaturesInside()
- {
- if (!DefiasPirate1 || !DefiasPirate2 || !DefiasCompanion)
- return;
-
- MoveCreatureInside(DefiasPirate1);
- MoveCreatureInside(DefiasPirate2);
- MoveCreatureInside(DefiasCompanion);
- }
-
- void MoveCreatureInside(Creature* pCreature)
- {
- pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
- pCreature->GetMotionMaster()->MovePoint(0, -102.7,-655.9, pCreature->GetPositionZ());
- }
-
- void ShootCannon()
- {
- DefiasCannon->SetGoState(GO_STATE_ACTIVE);
- DoPlaySound(DefiasCannon, SOUND_CANNONFIRE);
- }
-
- void BlastOutDoor()
- {
- IronCladDoor->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
- DoPlaySound(IronCladDoor, SOUND_DESTROYDOOR);
- }
-
- void LeverStucked()
- {
- DoorLever->SetUInt32Value(GAMEOBJECT_FLAGS, 4);
- }
-
- void OnGameObjectCreate(GameObject* pGo, bool add)
- {
- switch(pGo->GetEntry())
- {
- case GO_IRONCLAD_DOOR:
- IronCladDoor = pGo;
- break;
- case GO_DEFIAS_CANNON:
- DefiasCannon = pGo;
- break;
- case GO_DOOR_LEVER:
- DoorLever = pGo;
- break;
- }
- }
-
- void SetData(uint32 type, uint32 data)
- {
- if (type == EVENT_STATE)
- {
- if (DefiasCannon && IronCladDoor)
- State=data;
- }
- }
-
- uint32 GetData(uint32 type)
- {
- if (type == EVENT_STATE)
- return State;
- 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);
- }
-};
-
/*#####
# item_Defias_Gunpowder
#####*/
@@ -215,20 +50,10 @@ bool ItemUse_item_defias_gunpowder(Player* pPlayer, Item* _Item, SpellCastTarget
return true;
}
-InstanceData* GetInstanceData_instance_deadmines(Map* pMap)
-{
- return new instance_deadmines(pMap);
-}
-
-void AddSC_instance_deadmines()
+void AddSC_deadmines()
{
Script *newscript;
newscript = new Script;
- newscript->Name = "instance_deadmines";
- newscript->GetInstanceData = &GetInstanceData_instance_deadmines;
- newscript->RegisterSelf();
-
- newscript = new Script;
newscript->Name = "item_defias_gunpowder";
newscript->pItemUse = &ItemUse_item_defias_gunpowder;
newscript->RegisterSelf();
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.h b/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.h
index 9b535a9fd80..13d256ecde3 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.h
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/deadmines.h
@@ -3,12 +3,25 @@
#include "precompiled.h"
-#define CANNON_NOT_USED 1
-#define CANNON_GUNPOWDER_USED 2
-#define CANNON_BLAST_INITIATED 3
-#define PIRATES_ATTACK 4
-#define EVENT_DONE 5
+enum CannonState
+{
+ CANNON_NOT_USED,
+ CANNON_GUNPOWDER_USED,
+ CANNON_BLAST_INITIATED,
+ PIRATES_ATTACK,
+ EVENT_DONE
+};
-#define EVENT_STATE 1
+enum Data
+{
+ EVENT_STATE
+};
+
+enum GameObjects
+{
+ GO_IRONCLAD_DOOR = 16397,
+ GO_DEFIAS_CANNON = 16398,
+ GO_DOOR_LEVER = 101833
+};
#endif
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/instance_deadmines.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/instance_deadmines.cpp
index 35bd4cb34b5..e7525d56493 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/instance_deadmines.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/deadmines/instance_deadmines.cpp
@@ -16,8 +16,192 @@
/* ScriptData
SDName: Instance_Deadmines
-SD%Complete: 0
-SDComment: Placeholder
+SD%Complete: 100
+SDComment:
SDCategory: Deadmines
EndScriptData */
+#include "precompiled.h"
+#include "deadmines.h"
+
+enum Sounds
+{
+ SOUND_CANNONFIRE = 1400,
+ SOUND_DESTROYDOOR = 3079,
+ SOUND_MR_SMITE_ALARM1 = 5775,
+ SOUND_MR_SMITE_ALARM2 = 5777
+};
+
+#define SAY_MR_SMITE_ALARM1 "You there, check out that noise!"
+#define SAY_MR_SMITE_ALARM2 "We're under attack! A vast, ye swabs! Repel the invaders!"
+
+enum Misc
+{
+ DATA_CANNON_BLAST_TIMER = 3000,
+ DATA_PIRATES_DELAY_TIMER = 1000
+};
+
+struct TRINITY_DLL_DECL instance_deadmines : public ScriptedInstance
+{
+ instance_deadmines(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
+
+ GameObject* IronCladDoor;
+ GameObject* DefiasCannon;
+ GameObject* DoorLever;
+ Creature* DefiasPirate1;
+ Creature* DefiasPirate2;
+ Creature* DefiasCompanion;
+ uint32 State;
+ uint32 CannonBlast_Timer;
+ uint32 PiratesDelay_Timer;
+
+ void Initialize()
+ {
+ IronCladDoor = NULL;
+ DefiasCannon = NULL;
+ DoorLever = NULL;
+ State = CANNON_NOT_USED;
+ }
+
+ virtual void Update(uint32 diff)
+ {
+ if (!IronCladDoor || !DefiasCannon || !DoorLever)
+ 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
+ IronCladDoor->SetName("Mr. Smite");
+ IronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, 0);
+ DoPlaySound(IronCladDoor, 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();
+ IronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, 0);
+ DoPlaySound(IronCladDoor, 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()
+ {
+ DefiasPirate1 = IronCladDoor->SummonCreature(657,IronCladDoor->GetPositionX() - 2,IronCladDoor->GetPositionY()-7,IronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
+ DefiasPirate2 = IronCladDoor->SummonCreature(657,IronCladDoor->GetPositionX() + 3,IronCladDoor->GetPositionY()-6,IronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
+ DefiasCompanion = IronCladDoor->SummonCreature(3450,IronCladDoor->GetPositionX() + 2,IronCladDoor->GetPositionY()-6,IronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
+ }
+
+ void MoveCreaturesInside()
+ {
+ if (!DefiasPirate1 || !DefiasPirate2 || !DefiasCompanion)
+ return;
+
+ MoveCreatureInside(DefiasPirate1);
+ MoveCreatureInside(DefiasPirate2);
+ MoveCreatureInside(DefiasCompanion);
+ }
+
+ void MoveCreatureInside(Creature* pCreature)
+ {
+ pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
+ pCreature->GetMotionMaster()->MovePoint(0, -102.7,-655.9, pCreature->GetPositionZ());
+ }
+
+ void ShootCannon()
+ {
+ DefiasCannon->SetGoState(GO_STATE_ACTIVE);
+ DoPlaySound(DefiasCannon, SOUND_CANNONFIRE);
+ }
+
+ void BlastOutDoor()
+ {
+ IronCladDoor->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
+ DoPlaySound(IronCladDoor, SOUND_DESTROYDOOR);
+ }
+
+ void LeverStucked()
+ {
+ DoorLever->SetUInt32Value(GAMEOBJECT_FLAGS, 4);
+ }
+
+ void OnGameObjectCreate(GameObject* pGo, bool add)
+ {
+ switch(pGo->GetEntry())
+ {
+ case GO_IRONCLAD_DOOR:
+ IronCladDoor = pGo;
+ break;
+ case GO_DEFIAS_CANNON:
+ DefiasCannon = pGo;
+ break;
+ case GO_DOOR_LEVER:
+ DoorLever = pGo;
+ break;
+ }
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ if (type == EVENT_STATE)
+ {
+ if (DefiasCannon && IronCladDoor)
+ State=data;
+ }
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ if (type == EVENT_STATE)
+ return State;
+ 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();
+}
diff --git a/src/bindings/scripts/system/ScriptLoader.cpp b/src/bindings/scripts/system/ScriptLoader.cpp
index e902c4ee8e6..cd3e1d8dc80 100644
--- a/src/bindings/scripts/system/ScriptLoader.cpp
+++ b/src/bindings/scripts/system/ScriptLoader.cpp
@@ -59,7 +59,8 @@ extern void AddSC_boss_flamegor();
extern void AddSC_boss_chromaggus();
extern void AddSC_boss_nefarian();
extern void AddSC_boss_victor_nefarius();
-extern void AddSC_instance_deadmines(); //Deadmines
+extern void AddSC_deadmines(); //Deadmines
+extern void AddSC_instance_deadmines();
extern void AddSC_boss_attumen(); //Karazhan
extern void AddSC_boss_curator();
extern void AddSC_boss_maiden_of_virtue();
@@ -501,7 +502,8 @@ void AddScripts()
AddSC_boss_chromaggus();
AddSC_boss_nefarian();
AddSC_boss_victor_nefarius();
- AddSC_instance_deadmines(); //Deadmines
+ AddSC_deadmines(); //Deadmines
+ AddSC_instance_deadmines();
AddSC_boss_attumen(); //Karazhan
AddSC_boss_curator();
AddSC_boss_maiden_of_virtue();