From 5af8cf6f3d99f9e82361b269f69da886e68c7246 Mon Sep 17 00:00:00 2001 From: megamage Date: Mon, 1 Dec 2008 18:32:00 -0600 Subject: *Added: Deadmines Cannon Event. By netoya. --HG-- branch : trunk --- src/bindings/scripts/Makefile.am | 1 + src/bindings/scripts/ScriptMgr.cpp | 4 + src/bindings/scripts/VC71/71ScriptDev2.vcproj | 4 + src/bindings/scripts/VC80/80ScriptDev2.vcproj | 4 + src/bindings/scripts/VC90/90ScriptDev2.vcproj | 4 + .../scripts/scripts/zone/deadmines/deadmines.cpp | 206 +++++++++++++++++++++ .../scripts/scripts/zone/deadmines/def_deadmines.h | 13 ++ 7 files changed, 236 insertions(+) create mode 100644 src/bindings/scripts/scripts/zone/deadmines/def_deadmines.h (limited to 'src') diff --git a/src/bindings/scripts/Makefile.am b/src/bindings/scripts/Makefile.am index 2ff24f21015..b691b0cbdc2 100644 --- a/src/bindings/scripts/Makefile.am +++ b/src/bindings/scripts/Makefile.am @@ -173,6 +173,7 @@ scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp \ scripts/zone/coilfang_resevoir/underbog/boss_hungarfen.cpp \ scripts/zone/darkshore/darkshore.cpp \ scripts/zone/deadmines/deadmines.cpp \ +scripts/zone/deadmines/def_deadmines.h \ scripts/zone/dun_morogh/dun_morogh.cpp \ scripts/zone/dustwallow_marsh/dustwallow_marsh.cpp \ scripts/zone/eastern_plaguelands/eastern_plaguelands.cpp \ diff --git a/src/bindings/scripts/ScriptMgr.cpp b/src/bindings/scripts/ScriptMgr.cpp index 00b2e6ada47..344a865b7dd 100644 --- a/src/bindings/scripts/ScriptMgr.cpp +++ b/src/bindings/scripts/ScriptMgr.cpp @@ -253,6 +253,8 @@ extern void AddSC_boss_hungarfen(); //Darkshore //Darnassus //Deadmines +extern void AddSC_instance_deadmines(); + //Deadwind pass //Desolace //Dire Maul @@ -1441,6 +1443,8 @@ void ScriptsInit() //Darkshore //Darnassus //Deadmines + AddSC_instance_deadmines(); + //Deadwind pass //Desolace //Dire Maul diff --git a/src/bindings/scripts/VC71/71ScriptDev2.vcproj b/src/bindings/scripts/VC71/71ScriptDev2.vcproj index 82b575861b5..8cb81e141a3 100644 --- a/src/bindings/scripts/VC71/71ScriptDev2.vcproj +++ b/src/bindings/scripts/VC71/71ScriptDev2.vcproj @@ -309,6 +309,10 @@ RelativePath="..\scripts\zone\deadmines\deadmines.cpp" > + + + + + + SetName("Mr. Smite"); + IronCladDoor->Yell(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_TimerYell(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_TimerSummonCreature(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() + { + MoveCreatureInside(DefiasPirate1); + MoveCreatureInside(DefiasPirate2); + MoveCreatureInside(DefiasCompanion); + } + + void MoveCreatureInside(Creature *creature) + { + creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); + creature->GetMotionMaster()->MovePoint(0, -102.7,-655.9, creature->GetPositionZ()); + } + + void ShootCannon() + { + DefiasCannon->SetUInt32Value(GAMEOBJECT_STATE, 0); + DoPlaySound(DefiasCannon, SOUND_CANNONFIRE); + } + + void BlastOutDoor() + { + IronCladDoor->SetUInt32Value(GAMEOBJECT_STATE, 2); + DoPlaySound(IronCladDoor, SOUND_DESTROYDOOR); + } + + void LeverStucked() + { + DoorLever->SetUInt32Value(GAMEOBJECT_FLAGS, 4); + } + + void OnObjectCreate(GameObject *go) + { + switch(go->GetEntry()) + { + case GO_IRONCLAD_DOOR: + IronCladDoor = go; + break; + case GO_DEFIAS_CANNON: + DefiasCannon = go; + break; + case GO_DOOR_LEVER: + DoorLever = go; + 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 +#####*/ + +bool ItemUse_item_defias_gunpowder(Player *player, Item* _Item, SpellCastTargets const& targets) +{ + ScriptedInstance *pInstance = (player->GetInstanceData()) ? ((ScriptedInstance*)player->GetInstanceData()) : NULL; + + if(!pInstance) + { + player->GetSession()->SendNotification("Instance script not initialized"); + return true; + } + if (pInstance->GetData(EVENT_STATE)!=CANNON_NOT_USED) + return false; + if(targets.getGOTarget() && targets.getGOTarget()->GetTypeId()==TYPEID_GAMEOBJECT && + targets.getGOTarget()->GetEntry() == GO_DEFIAS_CANNON) + { + pInstance->SetData(EVENT_STATE, CANNON_GUNPOWDER_USED); + } + + player->DestroyItemCount(_Item->GetEntry(), 1, true); + return true; +} + +InstanceData* GetInstanceData_instance_deadmines(Map* map) +{ + return new instance_deadmines(map); +} + +void AddSC_instance_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/zone/deadmines/def_deadmines.h b/src/bindings/scripts/scripts/zone/deadmines/def_deadmines.h new file mode 100644 index 00000000000..73b95a30bd3 --- /dev/null +++ b/src/bindings/scripts/scripts/zone/deadmines/def_deadmines.h @@ -0,0 +1,13 @@ +#ifndef DEF_DEADMINES_H +#define DEF_DEADMINES_H + +#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 + +#define EVENT_STATE 1 +#endif -- cgit v1.2.3