diff options
Diffstat (limited to 'src')
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(); |