From ff3928ca6dbd8ae361cad1c9d2fe5e4ae0a89284 Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sat, 5 Jan 2013 20:30:57 +0100 Subject: Core: Fix warnings --- .../Scholomance/boss_kirtonos_the_herald.cpp | 41 ++++++++++------------ 1 file changed, 18 insertions(+), 23 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index 091c9fd1f91..bf42fb0324b 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -142,12 +142,7 @@ class boss_kirtonos_the_herald : public CreatureScript me->DespawnOrUnsummon(5000); } - void DamageTaken(Unit* /*killer*/, uint32 &damage) - { - - } - - void IsSummonedBy(Unit* summoner) + void IsSummonedBy(Unit* /*summoner*/) { me->SetDisableGravity(true); me->SetReactState(REACT_PASSIVE); @@ -227,7 +222,7 @@ class boss_kirtonos_the_herald : public CreatureScript _introTimer -= diff; } - if (!UpdateVictim()) + if (!UpdateVictim()) return; events.Update(diff); @@ -241,27 +236,27 @@ class boss_kirtonos_the_herald : public CreatureScript { case EVENT_SWOOP: DoCast(me, SPELL_SWOOP); - events.ScheduleEvent(EVENT_SWOOP, urand(15000, 15000)); + events.ScheduleEvent(EVENT_SWOOP, 15000); break; case EVENT_WING_FLAP: DoCast(me, SPELL_WING_FLAP); - events.ScheduleEvent(EVENT_WING_FLAP, urand(13000, 13000)); + events.ScheduleEvent(EVENT_WING_FLAP, 13000); break; case EVENT_PIERCE_ARMOR: DoCastVictim(SPELL_PIERCE_ARMOR, true); - events.ScheduleEvent(EVENT_PIERCE_ARMOR, urand(12000, 12000)); + events.ScheduleEvent(EVENT_PIERCE_ARMOR, 12000); break; case EVENT_DISARM: DoCastVictim(SPELL_DISARM, true); - events.ScheduleEvent(EVENT_DISARM, urand(11000, 11000)); + events.ScheduleEvent(EVENT_DISARM, 11000); break; case EVENT_SHADOW_BOLT: DoCastVictim(SPELL_SHADOW_BOLT, true); - events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(42000, 42000)); + events.ScheduleEvent(EVENT_SHADOW_BOLT, 42000); break; case EVENT_CURSE_OF_TONGUES: DoCastVictim(SPELL_CURSE_OF_TONGUES, true); - events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, urand(35000, 35000)); + events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 35000); break; case EVENT_DONINATE_MIND: DoCastVictim(SPELL_DONINATE_MIND, true); @@ -312,16 +307,16 @@ enum Brazier_Of_The_Herald class go_brazier_of_the_herald : public GameObjectScript { -public: - go_brazier_of_the_herald() : GameObjectScript("go_brazier_of_the_herald") { } - - bool OnGossipHello(Player* player, GameObject* go) - { - go->UseDoorOrButton(); - go->PlayDirectSound(SOUND_SCREECH,0); - player->SummonCreature(NPC_KIRTONOS, 315.028f, 70.53845f, 102.1496f, 0.3859715f, TEMPSUMMON_DEAD_DESPAWN, 900000); - return true; - } + public: + go_brazier_of_the_herald() : GameObjectScript("go_brazier_of_the_herald") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + go->UseDoorOrButton(); + go->PlayDirectSound(SOUND_SCREECH, 0); + player->SummonCreature(NPC_KIRTONOS, 315.028f, 70.53845f, 102.1496f, 0.3859715f, TEMPSUMMON_DEAD_DESPAWN, 900000); + return true; + } }; void AddSC_boss_kirtonos_the_herald() -- cgit v1.2.3 From 385940aeea09d120d86009dad358f0aef3bc124b Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 5 Jan 2013 18:10:14 -0330 Subject: Core/Scripting: Fix typo --- .../EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index bf42fb0324b..4488f270741 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -38,7 +38,7 @@ enum Spells SPELL_SHADOW_BOLT = 17228, SPELL_CURSE_OF_TONGUES = 12889, - SPELL_DONINATE_MIND = 14515 + SPELL_DOMINATE_MIND = 14515 }; enum Events @@ -55,7 +55,7 @@ enum Events EVENT_DISARM = 10, EVENT_SHADOW_BOLT = 11, EVENT_CURSE_OF_TONGUES = 12, - EVENT_DONINATE_MIND = 13, + EVENT_DOMINATE_MIND = 13, EVENT_KIRTONOS_TRANSFORM = 14 }; @@ -113,7 +113,7 @@ class boss_kirtonos_the_herald : public CreatureScript events.ScheduleEvent(EVENT_DISARM, urand(22000, 22000)); events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(42000, 42000)); events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, urand(53000, 53000)); - events.ScheduleEvent(EVENT_DONINATE_MIND, urand(34000, 48000)); + events.ScheduleEvent(EVENT_DOMINATE_MIND, urand(34000, 48000)); events.ScheduleEvent(EVENT_KIRTONOS_TRANSFORM, urand(20000, 20000)); _EnterCombat(); } @@ -258,9 +258,9 @@ class boss_kirtonos_the_herald : public CreatureScript DoCastVictim(SPELL_CURSE_OF_TONGUES, true); events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 35000); break; - case EVENT_DONINATE_MIND: - DoCastVictim(SPELL_DONINATE_MIND, true); - events.ScheduleEvent(EVENT_DONINATE_MIND, urand(44000, 48000)); + case EVENT_DOMINATE_MIND: + DoCastVictim(SPELL_DOMINATE_MIND, true); + events.ScheduleEvent(EVENT_DOMINATE_MIND, urand(44000, 48000)); break; case EVENT_KIRTONOS_TRANSFORM: if (me->HasAura(SPELL_KIRTONOS_TRANSFORM)) -- cgit v1.2.3 From ed83397a67106a545d5e6cd6fdfd5c0557515bdd Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 5 Jan 2013 20:15:46 -0330 Subject: Core/Scripts: Some cleanup of Zul'aman Instance script. Gong event in progress and will allow doors to open. --- .../EasternKingdoms/ZulAman/instance_zulaman.cpp | 120 ++++++++------ .../scripts/EasternKingdoms/ZulAman/zulaman.cpp | 177 ++++++++++++++++++++- .../scripts/EasternKingdoms/ZulAman/zulaman.h | 49 ++++-- 3 files changed, 290 insertions(+), 56 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 372811b8a8c..26dada0a2fb 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -29,13 +29,15 @@ EndScriptData */ #include "Player.h" #include "TemporarySummon.h" -#define MAX_ENCOUNTER 6 -#define RAND_VENDOR 2 +enum Misc +{ + MAX_ENCOUNTER = 6, + RAND_VENDOR = 2, + WORLDSTATE_SHOW_TIMER = 3104, + WORLDSTATE_TIME_TO_SACRIFICE = 3106 + +}; -//187021 //Harkor's Satchel -//186648 //Tanzar's Trunk -//186672 //Ashli's Bag -//186667 //Kraz's Package // Chests spawn at bear/eagle/dragonhawk/lynx bosses // The loots depend on how many bosses have been killed, but not the entries of the chests // But we cannot add loots to gameobject, so we have to use the fixed loot_template @@ -51,7 +53,6 @@ static SHostageInfo HostageInfo[] = {23999, 187021, 400, 1414, 74.36f, 3.3f}, // eagle {24001, 186672, -35, 1134, 18.71f, 1.9f}, // dragonhawk {24024, 186667, 413, 1117, 6.32f, 3.1f} // lynx - }; class instance_zulaman : public InstanceMapScript @@ -70,9 +71,11 @@ class instance_zulaman : public InstanceMapScript uint64 TanzarsTrunkGUID; uint64 AshlisBagGUID; uint64 KrazsPackageGUID; + uint64 StrangeGongGUID; uint64 HexLordGateGUID; uint64 ZulJinGateGUID; + uint64 MassiveGateGUID; uint64 AkilzonDoorGUID; uint64 ZulJinDoorGUID; uint64 HalazziDoorGUID; @@ -93,9 +96,10 @@ class instance_zulaman : public InstanceMapScript TanzarsTrunkGUID = 0; AshlisBagGUID = 0; KrazsPackageGUID = 0; - + StrangeGongGUID = 0; HexLordGateGUID = 0; ZulJinGateGUID = 0; + MassiveGateGUID = 0; AkilzonDoorGUID = 0; HalazziDoorGUID = 0; ZulJinDoorGUID = 0; @@ -122,11 +126,14 @@ class instance_zulaman : public InstanceMapScript { switch (creature->GetEntry()) { - case 23578://janalai - case 23863://zuljin - case 24239://hexlord - case 23577://halazzi - case 23576://nalorakk + case NPC_HARRISON_JONES: + if (m_auiEncounter[0]) + creature->SetVisible(false); + case NPC_JANALAI: + case NPC_ZULJIN: + case NPC_HEXLORD: + case NPC_HALAZZI: + case NPC_NALORAKK: default: break; } } @@ -135,18 +142,19 @@ class instance_zulaman : public InstanceMapScript { switch (go->GetEntry()) { - case 186303: HalazziDoorGUID = go->GetGUID(); break; - case 186304: ZulJinGateGUID = go->GetGUID(); break; - case 186305: HexLordGateGUID = go->GetGUID(); break; - case 186858: AkilzonDoorGUID = go->GetGUID(); break; - case 186859: ZulJinDoorGUID = go->GetGUID(); break; - - case 187021: HarkorsSatchelGUID = go->GetGUID(); break; - case 186648: TanzarsTrunkGUID = go->GetGUID(); break; - case 186672: AshlisBagGUID = go->GetGUID(); break; - case 186667: KrazsPackageGUID = go->GetGUID(); break; + case GO_DOOR_HALAZZI: HalazziDoorGUID = go->GetGUID(); break; + case GO_GATE_ZULJIN: ZulJinGateGUID = go->GetGUID(); break; + case GO_GATE_HEXLORD: HexLordGateGUID = go->GetGUID(); break; + case GO_MASSIVE_GATE: MassiveGateGUID = go->GetGUID(); break; + case GO_DOOR_AKILZON: AkilzonDoorGUID = go->GetGUID(); break; + case GO_DOOR_ZULJIN: ZulJinDoorGUID = go->GetGUID(); break; + + case GO_HARKORS_SATCHEL: HarkorsSatchelGUID = go->GetGUID(); break; + case GO_TANZARS_TRUNK: TanzarsTrunkGUID = go->GetGUID(); break; + case GO_ASHLIS_BAG: AshlisBagGUID = go->GetGUID(); break; + case GO_KRAZS_PACKAGE: KrazsPackageGUID = go->GetGUID(); break; + case GO_STRANGE_GONG: StrangeGongGUID = go->GetGUID(); break; default: break; - } CheckInstanceStatus(); } @@ -173,10 +181,10 @@ class instance_zulaman : public InstanceMapScript void CheckInstanceStatus() { - if (BossKilled >= 4) + if (BossKilled >= DATA_HALAZZIEVENT) HandleGameObject(HexLordGateGUID, true); - if (BossKilled >= 5) + if (BossKilled >= DATA_HEXLORDEVENT) HandleGameObject(ZulJinGateGUID, true); } @@ -214,49 +222,56 @@ class instance_zulaman : public InstanceMapScript { switch (type) { - case DATA_NALORAKKEVENT: + case DATA_GONGEVENT: m_auiEncounter[0] = data; if (data == DONE) + { + + } + break; + case DATA_NALORAKKEVENT: + m_auiEncounter[1] = data; + if (data == DONE) { if (QuestMinute) { QuestMinute += 15; - DoUpdateWorldState(3106, QuestMinute); + DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, QuestMinute); } SummonHostage(0); } break; case DATA_AKILZONEVENT: - m_auiEncounter[1] = data; + m_auiEncounter[2] = data; HandleGameObject(AkilzonDoorGUID, data != IN_PROGRESS); if (data == DONE) { if (QuestMinute) { QuestMinute += 10; - DoUpdateWorldState(3106, QuestMinute); + DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, QuestMinute); } SummonHostage(1); } break; case DATA_JANALAIEVENT: - m_auiEncounter[2] = data; + m_auiEncounter[3] = data; if (data == DONE) SummonHostage(2); break; case DATA_HALAZZIEVENT: - m_auiEncounter[3] = data; + m_auiEncounter[4] = data; HandleGameObject(HalazziDoorGUID, data != IN_PROGRESS); if (data == DONE) SummonHostage(3); break; case DATA_HEXLORDEVENT: - m_auiEncounter[4] = data; + m_auiEncounter[5] = data; if (data == IN_PROGRESS) HandleGameObject(HexLordGateGUID, false); else if (data == NOT_STARTED) CheckInstanceStatus(); break; case DATA_ZULJINEVENT: - m_auiEncounter[5] = data; + m_auiEncounter[6] = data; HandleGameObject(ZulJinDoorGUID, data != IN_PROGRESS); break; case DATA_CHESTLOOTED: @@ -274,10 +289,10 @@ class instance_zulaman : public InstanceMapScript if (data == DONE) { ++BossKilled; - if (QuestMinute && BossKilled >= 4) + if (QuestMinute && BossKilled >= DATA_HALAZZIEVENT) { QuestMinute = 0; - DoUpdateWorldState(3104, 0); + DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0); } CheckInstanceStatus(); SaveToDB(); @@ -288,12 +303,13 @@ class instance_zulaman : public InstanceMapScript { switch (type) { - case DATA_NALORAKKEVENT: return m_auiEncounter[0]; - case DATA_AKILZONEVENT: return m_auiEncounter[1]; - case DATA_JANALAIEVENT: return m_auiEncounter[2]; - case DATA_HALAZZIEVENT: return m_auiEncounter[3]; - case DATA_HEXLORDEVENT: return m_auiEncounter[4]; - case DATA_ZULJINEVENT: return m_auiEncounter[5]; + case DATA_GONGEVENT: return m_auiEncounter[0]; + case DATA_NALORAKKEVENT: return m_auiEncounter[1]; + case DATA_AKILZONEVENT: return m_auiEncounter[2]; + case DATA_JANALAIEVENT: return m_auiEncounter[3]; + case DATA_HALAZZIEVENT: return m_auiEncounter[4]; + case DATA_HEXLORDEVENT: return m_auiEncounter[5]; + case DATA_ZULJINEVENT: return m_auiEncounter[6]; case DATA_CHESTLOOTED: return ChestLooted; case TYPE_RAND_VENDOR_1: return RandVendor[0]; case TYPE_RAND_VENDOR_2: return RandVendor[1]; @@ -312,13 +328,27 @@ class instance_zulaman : public InstanceMapScript QuestTimer += 60000; if (QuestMinute) { - DoUpdateWorldState(3104, 1); - DoUpdateWorldState(3106, QuestMinute); - } else DoUpdateWorldState(3104, 0); + DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1); + DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, QuestMinute); + } else DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0); } QuestTimer -= diff; } } + + uint64 GetData64(uint32 type) const + { + switch (type) + { + case GO_STRANGE_GONG: + return StrangeGongGUID; + case GO_MASSIVE_GATE: + return MassiveGateGUID; + } + + return 0; + } + }; InstanceScript* GetInstanceScript(InstanceMap* map) const diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 660f144c2dd..0f06da53ad6 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -199,9 +199,184 @@ class npc_zulaman_hostage : public CreatureScript } }; +/*###### +## npc_harrison_jones +######*/ + +enum Says +{ + SAY_HARRISON_0 = 0, + SAY_HARRISON_1 = 1, + SAY_HARRISON_2 = 2, + SAY_HARRISON_3 = 3 +}; + +enum Spells +{ + SPELL_BANGING_THE_GONG = 45225, + SPELL_STEALTH = 34189 +}; + +enum Events +{ + GONG_EVENT_1 = 1, + GONG_EVENT_2 = 2, + GONG_EVENT_3 = 3, + GONG_EVENT_4 = 4, + GONG_EVENT_5 = 5, + GONG_EVENT_6 = 6, + GONG_EVENT_7 = 7, + GONG_EVENT_8 = 8, + GONG_EVENT_9 = 9 +}; + +enum Entrys +{ + NPC_HARRISON_JONES_2 = 24375 +}; + +enum Waypoints +{ + HARRISON_MOVE_1 = 861770, + HARRISON_MOVE_2 = 861771, + HARRISON_MOVE_3 = 861772 +}; + +class npc_harrison_jones : public CreatureScript +{ + public: + + npc_harrison_jones() + : CreatureScript("npc_harrison_jones") + { + } + + struct npc_harrison_jonesAI : public ScriptedAI + { + npc_harrison_jonesAI(Creature* creature) : ScriptedAI(creature) + { + instance = creature->GetInstanceScript(); + } + + InstanceScript* instance; + + uint8 _gongEvent; + uint32 _gongTimer; + + void Reset() + { + _gongEvent = 0; + _gongTimer = 0; + } + + void EnterCombat(Unit* /*who*/) {} + + void sGossipSelect(Player* player, uint32 sender, uint32 action) + { + if (me->GetCreatureTemplate()->GossipMenuId == sender && !action) + { + player->CLOSE_GOSSIP_MENU(); + me->SetInFront(player); + me->SendMovementFlagUpdate(true); + _gongEvent = GONG_EVENT_1; + _gongTimer = 1; + } + } + + void UpdateAI(uint32 const diff) + { + if (_gongEvent) + { + if (_gongTimer <= diff) + { + switch (_gongEvent) + { + case GONG_EVENT_1: + Talk(SAY_HARRISON_0); + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + _gongTimer = 4000; + _gongEvent = GONG_EVENT_2; + break; + case GONG_EVENT_2: + me->GetMotionMaster()->MovePath(HARRISON_MOVE_1,false); + _gongTimer = 12000; + _gongEvent = GONG_EVENT_3; + break; + case GONG_EVENT_3: + Talk(SAY_HARRISON_1); + _gongTimer = 5000; + _gongEvent = GONG_EVENT_4; + break; + case GONG_EVENT_4: + DoCast(me, SPELL_BANGING_THE_GONG); + if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) + gong->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); + _gongTimer = 120000; + _gongEvent = GONG_EVENT_5; + break; + case GONG_EVENT_5: + if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) + gong->SetFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); + + // Remove Aura 45222 from all players + + if (instance) + instance->SetData(DATA_GONGEVENT, DONE); // This is temp + + if (instance->GetData(DATA_GONGEVENT) == DONE) + { + me->GetMotionMaster()->MovePath(HARRISON_MOVE_2,false); + _gongTimer = 5000; + _gongEvent = 6; + } + else + { + _gongTimer = 0; // Add reset at end + _gongEvent = 0; // Add reset at end + } + break; + case GONG_EVENT_6: + me->SetEntry(24375); + Talk(SAY_HARRISON_2); + _gongTimer = 14000; + _gongEvent = 7; + break; + case GONG_EVENT_7: + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); + Talk(SAY_HARRISON_2); + _gongTimer = 7000; + _gongEvent = 8; + break; + case GONG_EVENT_8: + if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_MASSIVE_GATE))) + gate->SetGoState(GO_STATE_ACTIVE); + _gongTimer = 1000; + _gongEvent = 9; + case GONG_EVENT_9: + DoCast(me, SPELL_STEALTH); + me->GetMotionMaster()->MovePath(HARRISON_MOVE_3,false); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); + _gongTimer = 0; + _gongEvent = 0; + break; + } + } + else + _gongTimer -= diff; + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_harrison_jonesAI(creature); + } +}; + + void AddSC_zulaman() { new npc_forest_frog(); new npc_zulaman_hostage(); + new npc_harrison_jones(); } - diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index 7227dfaedf4..33d609c1739 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -19,15 +19,44 @@ #ifndef DEF_ZULAMAN_H #define DEF_ZULAMAN_H -#define DATA_NALORAKKEVENT 1 -#define DATA_AKILZONEVENT 2 -#define DATA_JANALAIEVENT 3 -#define DATA_HALAZZIEVENT 4 -#define DATA_HEXLORDEVENT 5 -#define DATA_ZULJINEVENT 6 -#define DATA_CHESTLOOTED 7 -#define TYPE_RAND_VENDOR_1 8 -#define TYPE_RAND_VENDOR_2 9 +enum DataTypes +{ + DATA_GONGEVENT = 1, + DATA_NALORAKKEVENT = 2, + DATA_AKILZONEVENT = 3, + DATA_JANALAIEVENT = 4, + DATA_HALAZZIEVENT = 5, + DATA_HEXLORDEVENT = 6, + DATA_ZULJINEVENT = 7, + DATA_CHESTLOOTED = 8, + TYPE_RAND_VENDOR_1 = 9, + TYPE_RAND_VENDOR_2 = 10 +}; -#endif +enum CreatureIds +{ + NPC_HARRISON_JONES = 24358, + NPC_JANALAI = 23578, + NPC_ZULJIN = 23863, + NPC_HEXLORD = 24239, + NPC_HALAZZI = 23577, + NPC_NALORAKK = 23576 +}; + +enum GameobjectIds +{ + GO_DOOR_HALAZZI = 186303, + GO_GATE_ZULJIN = 186304, + GO_GATE_HEXLORD = 186305, + GO_MASSIVE_GATE = 186728, + GO_DOOR_AKILZON = 186858, + GO_DOOR_ZULJIN = 186859, + GO_HARKORS_SATCHEL = 187021, + GO_TANZARS_TRUNK = 186648, + GO_ASHLIS_BAG = 186672, + GO_KRAZS_PACKAGE = 186667, + GO_STRANGE_GONG = 187359 +}; + +#endif -- cgit v1.2.3 From 82d45595073728089550c086e76670675745ed15 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 01:05:25 -0330 Subject: Core/Script: Update Gong Event --- .../EasternKingdoms/ZulAman/instance_zulaman.cpp | 32 ++++++++++------------ .../scripts/EasternKingdoms/ZulAman/zulaman.cpp | 26 +++++++++++++----- .../scripts/EasternKingdoms/ZulAman/zulaman.h | 20 +++++++------- 3 files changed, 44 insertions(+), 34 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 26dada0a2fb..1441d70a128 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -31,7 +31,7 @@ EndScriptData */ enum Misc { - MAX_ENCOUNTER = 6, + MAX_ENCOUNTER = 7, RAND_VENDOR = 2, WORLDSTATE_SHOW_TIMER = 3104, WORLDSTATE_TIME_TO_SACRIFICE = 3106 @@ -127,8 +127,8 @@ class instance_zulaman : public InstanceMapScript switch (creature->GetEntry()) { case NPC_HARRISON_JONES: - if (m_auiEncounter[0]) - creature->SetVisible(false); + if ((DATA_GONGEVENT) == DONE) + creature->RemoveFromWorld(); case NPC_JANALAI: case NPC_ZULJIN: case NPC_HEXLORD: @@ -181,10 +181,10 @@ class instance_zulaman : public InstanceMapScript void CheckInstanceStatus() { - if (BossKilled >= DATA_HALAZZIEVENT) + if (BossKilled >= DATA_HALAZZIEVENT-1) HandleGameObject(HexLordGateGUID, true); - if (BossKilled >= DATA_HEXLORDEVENT) + if (BossKilled >= DATA_HEXLORDEVENT-1) HandleGameObject(ZulJinGateGUID, true); } @@ -223,14 +223,11 @@ class instance_zulaman : public InstanceMapScript switch (type) { case DATA_GONGEVENT: - m_auiEncounter[0] = data; - if (data == DONE) - { - - } + m_auiEncounter[DATA_GONGEVENT] = data; + HandleGameObject(MassiveGateGUID, data == DONE); break; case DATA_NALORAKKEVENT: - m_auiEncounter[1] = data; + m_auiEncounter[DATA_NALORAKKEVENT] = data; if (data == DONE) { if (QuestMinute) @@ -242,7 +239,7 @@ class instance_zulaman : public InstanceMapScript } break; case DATA_AKILZONEVENT: - m_auiEncounter[2] = data; + m_auiEncounter[DATA_AKILZONEVENT] = data; HandleGameObject(AkilzonDoorGUID, data != IN_PROGRESS); if (data == DONE) { @@ -255,23 +252,24 @@ class instance_zulaman : public InstanceMapScript } break; case DATA_JANALAIEVENT: - m_auiEncounter[3] = data; - if (data == DONE) SummonHostage(2); + m_auiEncounter[DATA_JANALAIEVENT] = data; + if (data == DONE) + SummonHostage(2); break; case DATA_HALAZZIEVENT: - m_auiEncounter[4] = data; + m_auiEncounter[DATA_HALAZZIEVENT] = data; HandleGameObject(HalazziDoorGUID, data != IN_PROGRESS); if (data == DONE) SummonHostage(3); break; case DATA_HEXLORDEVENT: - m_auiEncounter[5] = data; + m_auiEncounter[DATA_HEXLORDEVENT] = data; if (data == IN_PROGRESS) HandleGameObject(HexLordGateGUID, false); else if (data == NOT_STARTED) CheckInstanceStatus(); break; case DATA_ZULJINEVENT: - m_auiEncounter[6] = data; + m_auiEncounter[DATA_ZULJINEVENT] = data; HandleGameObject(ZulJinDoorGUID, data != IN_PROGRESS); break; case DATA_CHESTLOOTED: diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 0f06da53ad6..e8b6d7b6349 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -227,7 +227,8 @@ enum Events GONG_EVENT_6 = 6, GONG_EVENT_7 = 7, GONG_EVENT_8 = 8, - GONG_EVENT_9 = 9 + GONG_EVENT_9 = 9, + GONG_EVENT_10 = 10 }; enum Entrys @@ -278,6 +279,7 @@ class npc_harrison_jones : public CreatureScript player->CLOSE_GOSSIP_MENU(); me->SetInFront(player); me->SendMovementFlagUpdate(true); + instance->SetData(DATA_GONGEVENT, IN_PROGRESS); _gongEvent = GONG_EVENT_1; _gongTimer = 1; } @@ -303,12 +305,14 @@ class npc_harrison_jones : public CreatureScript _gongEvent = GONG_EVENT_3; break; case GONG_EVENT_3: + me->SetFacingTo(6.235659f); Talk(SAY_HARRISON_1); - _gongTimer = 5000; + DoCast(me, SPELL_BANGING_THE_GONG); + me->SetSheath(SHEATH_STATE_MELEE); + _gongTimer = 4000; _gongEvent = GONG_EVENT_4; break; case GONG_EVENT_4: - DoCast(me, SPELL_BANGING_THE_GONG); if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) gong->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); _gongTimer = 120000; @@ -317,14 +321,12 @@ class npc_harrison_jones : public CreatureScript case GONG_EVENT_5: if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) gong->SetFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); - - // Remove Aura 45222 from all players - if (instance) instance->SetData(DATA_GONGEVENT, DONE); // This is temp if (instance->GetData(DATA_GONGEVENT) == DONE) { + // Save all players to instance me->GetMotionMaster()->MovePath(HARRISON_MOVE_2,false); _gongTimer = 5000; _gongEvent = 6; @@ -336,7 +338,7 @@ class npc_harrison_jones : public CreatureScript } break; case GONG_EVENT_6: - me->SetEntry(24375); + me->SetEntry(NPC_HARRISON_JONES_2); Talk(SAY_HARRISON_2); _gongTimer = 14000; _gongEvent = 7; @@ -348,14 +350,24 @@ class npc_harrison_jones : public CreatureScript _gongEvent = 8; break; case GONG_EVENT_8: + // entry 23597 guid 86194 UNIT_VIRTUAL_ITEM_SLOT_ID: 13631 if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_MASSIVE_GATE))) gate->SetGoState(GO_STATE_ACTIVE); _gongTimer = 1000; _gongEvent = 9; case GONG_EVENT_9: DoCast(me, SPELL_STEALTH); + me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0)); me->GetMotionMaster()->MovePath(HARRISON_MOVE_3,false); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); + _gongTimer = 1000; + _gongEvent = 10; + case GONG_EVENT_10: + // move 23597 guid 86194 + // path 138.2242 Y: 1586.994 Z: 43.5488 + // path 131.8407 Y: 1590.247 Z: 43.61384 + // Reach end of path turnto 2.024582 cast Spell ID: 43647 on self hits 24358 UNIT_VIRTUAL_ITEM_SLOT_ID: 33979 + // wait 2 sec say text 0 _gongTimer = 0; _gongEvent = 0; break; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index 33d609c1739..5b5e6faef83 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -21,16 +21,16 @@ enum DataTypes { - DATA_GONGEVENT = 1, - DATA_NALORAKKEVENT = 2, - DATA_AKILZONEVENT = 3, - DATA_JANALAIEVENT = 4, - DATA_HALAZZIEVENT = 5, - DATA_HEXLORDEVENT = 6, - DATA_ZULJINEVENT = 7, - DATA_CHESTLOOTED = 8, - TYPE_RAND_VENDOR_1 = 9, - TYPE_RAND_VENDOR_2 = 10 + DATA_GONGEVENT = 0, + DATA_NALORAKKEVENT = 1, + DATA_AKILZONEVENT = 2, + DATA_JANALAIEVENT = 3, + DATA_HALAZZIEVENT = 4, + DATA_HEXLORDEVENT = 5, + DATA_ZULJINEVENT = 6, + DATA_CHESTLOOTED = 7, + TYPE_RAND_VENDOR_1 = 8, + TYPE_RAND_VENDOR_2 = 9 }; enum CreatureIds -- cgit v1.2.3 From 90c182dce4f0cbed4f51e26993bb2b67ae1a82ab Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 01:08:25 -0330 Subject: Core/Scripting: Fix silly error --- src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 1441d70a128..c39f67303fd 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -181,10 +181,10 @@ class instance_zulaman : public InstanceMapScript void CheckInstanceStatus() { - if (BossKilled >= DATA_HALAZZIEVENT-1) + if (BossKilled >= DATA_HALAZZIEVENT) HandleGameObject(HexLordGateGUID, true); - if (BossKilled >= DATA_HEXLORDEVENT-1) + if (BossKilled >= DATA_HEXLORDEVENT) HandleGameObject(ZulJinGateGUID, true); } -- cgit v1.2.3 From 8361931b37b08aae221870db5374979d8e5d7f51 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 12:04:02 -0330 Subject: Core/Scripting: Move Kirtonos pathing to db looks smoother. --- .../world/2013_01_06_01_world_waypoints.sql | 18 ++++++++ .../Scholomance/boss_kirtonos_the_herald.cpp | 51 +++++----------------- 2 files changed, 30 insertions(+), 39 deletions(-) create mode 100644 sql/updates/world/2013_01_06_01_world_waypoints.sql (limited to 'src/server/scripts/EasternKingdoms') diff --git a/sql/updates/world/2013_01_06_01_world_waypoints.sql b/sql/updates/world/2013_01_06_01_world_waypoints.sql new file mode 100644 index 00000000000..a460d33b086 --- /dev/null +++ b/sql/updates/world/2013_01_06_01_world_waypoints.sql @@ -0,0 +1,18 @@ +-- Pathing for Kirtonos the Herald Entry: 10506 +SET @PATH := 105061; +DELETE FROM `waypoint_data` WHERE `id`IN (@PATH,@PATH+1,@PATH+2); +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,316.7087,71.26834,104.5843,0,0,0,100,0), +(@PATH,2,321.1605,72.80973,104.6676,0,0,0,100,0), +(@PATH,3,332.3713,77.98991,105.8621,0,0,0,100,0), +(@PATH,4,333.3254,86.60159,106.6399,0,0,0,100,0), +(@PATH,5,334.1263,101.6836,106.8343,0,0,0,100,0), +(@PATH,6,331.0458,114.5935,106.3621,0,0,0,100,0), +(@PATH,7,329.5439,126.7019,106.1399,0,0,0,100,0), +(@PATH,8,335.2471,136.546,105.7232,0,0,0,100,0), +(@PATH,9,343.21,139.9459,107.6399,0,0,0,100,0), +(@PATH,10,364.3288,140.9012,109.9454,0,0,0,100,0), +(@PATH,11,362.676,115.6384,110.3065,0,0,0,100,0), +(@PATH,12,341.7896,91.9439,107.1676,0,0,0,100,0), +(@PATH,13,313.4945,93.45945,104.0565,0,0,0,100,0), +(@PATH,14,306.3839,93.61675,104.0565,0,0,0,100,0); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index 4488f270741..15c7a10a125 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -33,9 +33,7 @@ enum Spells SPELL_WING_FLAP = 12882, SPELL_PIERCE_ARMOR = 6016, SPELL_DISARM = 8379, - SPELL_KIRTONOS_TRANSFORM = 16467, - SPELL_SHADOW_BOLT = 17228, SPELL_CURSE_OF_TONGUES = 12889, SPELL_DOMINATE_MIND = 14515 @@ -59,33 +57,11 @@ enum Events EVENT_KIRTONOS_TRANSFORM = 14 }; -enum Points -{ - MAX_KIRTONOS_WAYPOINTS_INTRO = 14, - POINT_KIRTONOS_LAND = 14 -}; - enum Misc { - WEAPON_KIRTONOS_STAFF = 11365 -}; - -Position const kirtonosIntroWaypoint[MAX_KIRTONOS_WAYPOINTS_INTRO] = -{ - {316.7087f, 71.26834f, 104.5843f, 0.0f}, - {321.1605f, 72.80973f, 104.6676f, 0.0f}, - {332.3713f, 77.98991f, 105.8621f, 0.0f}, - {333.3254f, 86.60159f, 106.6399f, 0.0f}, - {334.1263f, 101.6836f, 106.8343f, 0.0f}, - {331.0458f, 114.5935f, 106.3621f, 0.0f}, - {329.5439f, 126.7019f, 106.1399f, 0.0f}, - {335.2471f, 136.5460f, 105.7232f, 0.0f}, - {343.2100f, 139.9459f, 107.6399f, 0.0f}, - {364.3288f, 140.9012f, 109.9454f, 0.0f}, - {362.6760f, 115.6384f, 110.3065f, 0.0f}, - {341.7896f, 91.94390f, 107.1676f, 0.0f}, - {313.4945f, 93.45945f, 104.0565f, 0.0f}, - {306.3839f, 93.61675f, 104.0565f, 0.0f}, + WEAPON_KIRTONOS_STAFF = 11365, + POINT_KIRTONOS_LAND = 13, + KIRTONOS_PATH = 105061 }; class boss_kirtonos_the_herald : public CreatureScript @@ -158,12 +134,13 @@ class boss_kirtonos_the_herald : public CreatureScript BossAI::JustSummoned(summon); } - void MovementInform(uint32 movementType, uint32 pointId) + void MovementInform(uint32 type, uint32 id) { - if (movementType != POINT_MOTION_TYPE) - return; - - _currentPoint = pointId + 1; + if (type == WAYPOINT_MOTION_TYPE && id == POINT_KIRTONOS_LAND) + { + _introTimer = 1500; + _introEvent = INTRO_2; + } } void UpdateAI(uint32 const diff) @@ -175,13 +152,8 @@ class boss_kirtonos_the_herald : public CreatureScript switch (_introEvent) { case INTRO_1: - if (_currentPoint < POINT_KIRTONOS_LAND) - me->GetMotionMaster()->MovePoint(_currentPoint, kirtonosIntroWaypoint[_currentPoint]); - else - { - _introTimer = 1000; - _introEvent = INTRO_2; - } + me->GetMotionMaster()->MovePath(KIRTONOS_PATH,false); + _introEvent = 0; break; case INTRO_2: me->SetWalk(true); @@ -199,6 +171,7 @@ class boss_kirtonos_the_herald : public CreatureScript case INTRO_4: if (GameObject* brazier = me->GetMap()->GetGameObject(instance->GetData64(GO_BRAZIER_OF_THE_HERALD))) brazier->SetGoState(GO_STATE_READY); + me->SetWalk(true); me->SetDisableGravity(false); DoCast(me, SPELL_KIRTONOS_TRANSFORM); _introTimer = 1000; -- cgit v1.2.3 From 3710ca5faf1682beb062956ce95bea8cc7b432a9 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 12:38:26 -0330 Subject: Core/Scripting: Small fix to Zul'Aman script Thanks joschiwald. --- src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index c39f67303fd..39b2fbce6b0 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -127,7 +127,7 @@ class instance_zulaman : public InstanceMapScript switch (creature->GetEntry()) { case NPC_HARRISON_JONES: - if ((DATA_GONGEVENT) == DONE) + if (m_auiEncounter[DATA_GONGEVENT] == DONE) creature->RemoveFromWorld(); case NPC_JANALAI: case NPC_ZULJIN: -- cgit v1.2.3 From 832cd198ca757e2cd0d125fc8c6d7f2646d0c00a Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 22:39:41 -0330 Subject: Core/scripting: More updates for gong event. Almost complete. --- sql/updates/world/2013_01_06_04_world_misc.sql | 34 ++++ .../EasternKingdoms/ZulAman/instance_zulaman.cpp | 33 ++-- .../scripts/EasternKingdoms/ZulAman/zulaman.cpp | 218 +++++++++++++++------ .../scripts/EasternKingdoms/ZulAman/zulaman.h | 1 - 4 files changed, 217 insertions(+), 69 deletions(-) create mode 100644 sql/updates/world/2013_01_06_04_world_misc.sql (limited to 'src/server/scripts/EasternKingdoms') diff --git a/sql/updates/world/2013_01_06_04_world_misc.sql b/sql/updates/world/2013_01_06_04_world_misc.sql new file mode 100644 index 00000000000..fb1e256fa1b --- /dev/null +++ b/sql/updates/world/2013_01_06_04_world_misc.sql @@ -0,0 +1,34 @@ +-- Spell condition for Cosmetic - Spear Throw +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=43647; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13,1,43647,0,0,31,0,3,24375,0,0,0,0, '', 'Cosmetic - Spear Throw - Harrison Jones'); + +-- Text for Harrison Jones from sniff +DELETE FROM `creature_text` WHERE `entry` IN (24358,24375); +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(24358,0,0, 'Suit yourself. At least five of you must assist me if we''re to get inside. Follow me....',14,0,100,1,0,0, 'Harrison Jones - Gong Event Say 0'), +(24358,1,0, 'According to my calculations, if enough of us bang the gong at once the seal on these doors will break and we can enter.',14,0,100,1,0,0, 'Harrison Jones - Gong Event Say 1'), +(24375,0,0, 'I''ve researched this site extensively and I won''t allow any dim-witted treasure hunters to swoop in and steal what belongs in a museum. I''ll lead this charge...',14,0,100,0,0,0, 'Harrison Jones - Gong Event Say 2'), +(24375,1,0, 'In fact, it would be best if you just stay here. You''d only get in my way....',14,0,100,0,0,0, 'Harrison Jones - Gong Event Say 3'); + +-- Add spell script for banging the gong +DELETE FROM `spell_script_names` WHERE `spell_id`=45226; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(45226, 'spell_banging_the_gong'); + +-- Remove creature from db +DELETE FROM `creature` WHERE id=24358; +DELETE FROM `creature_addon` WHERE guid=86177; +UPDATE `creature_template` SET `equipment_id`=0 WHERE `entry`=24358; + +-- Pathing for Harrison Jones Entry: 24358 +SET @NPC := 86044; +SET @PATH := @NPC * 10; +DELETE FROM `waypoint_data` WHERE `id`IN (861770,861771,861772); +DELETE FROM `waypoint_data` WHERE `id`IN (@PATH,@PATH+1,@PATH+2); +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,131.8243,1642.853,42.0216,0,0,0,100,0), +(@PATH+1,1,121.897,1639.106,42.19081,0,0,0,100,0), +(@PATH+1,2,120.8522,1637.931,42.37172,0,0,0,100,0), +(@PATH+1,3,120.7898,1609.063,43.49005,0,0,0,100,0), +(@PATH+2,1,120.6967,1603.713,43.4503,0,0,0,100,0); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 39b2fbce6b0..80f38dbd7cf 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -35,7 +35,6 @@ enum Misc RAND_VENDOR = 2, WORLDSTATE_SHOW_TIMER = 3104, WORLDSTATE_TIME_TO_SACRIFICE = 3106 - }; // Chests spawn at bear/eagle/dragonhawk/lynx bosses @@ -55,6 +54,8 @@ static SHostageInfo HostageInfo[] = {24024, 186667, 413, 1117, 6.32f, 3.1f} // lynx }; +Position const HarrisonJonesLoc = {120.687f, 1674.0f, 42.0217f, 1.59044f}; + class instance_zulaman : public InstanceMapScript { public: @@ -105,12 +106,15 @@ class instance_zulaman : public InstanceMapScript ZulJinDoorGUID = 0; QuestTimer = 0; - QuestMinute = 21; + QuestMinute = 0; BossKilled = 0; ChestLooted = 0; for (uint8 i = 0; i < RAND_VENDOR; ++i) RandVendor[i] = NOT_STARTED; + + m_auiEncounter[DATA_GONGEVENT] = NOT_STARTED; + instance->SummonCreature(NPC_HARRISON_JONES, HarrisonJonesLoc); } bool IsEncounterInProgress() const @@ -126,9 +130,6 @@ class instance_zulaman : public InstanceMapScript { switch (creature->GetEntry()) { - case NPC_HARRISON_JONES: - if (m_auiEncounter[DATA_GONGEVENT] == DONE) - creature->RemoveFromWorld(); case NPC_JANALAI: case NPC_ZULJIN: case NPC_HEXLORD: @@ -181,6 +182,9 @@ class instance_zulaman : public InstanceMapScript void CheckInstanceStatus() { + if (m_auiEncounter[DATA_GONGEVENT] == DONE) + HandleGameObject(MassiveGateGUID, true); + if (BossKilled >= DATA_HALAZZIEVENT) HandleGameObject(HexLordGateGUID, true); @@ -224,7 +228,10 @@ class instance_zulaman : public InstanceMapScript { case DATA_GONGEVENT: m_auiEncounter[DATA_GONGEVENT] = data; - HandleGameObject(MassiveGateGUID, data == DONE); + if (data == SPECIAL) + SaveToDB(); + if (data == DONE) + QuestMinute = 21; break; case DATA_NALORAKKEVENT: m_auiEncounter[DATA_NALORAKKEVENT] = data; @@ -301,13 +308,13 @@ class instance_zulaman : public InstanceMapScript { switch (type) { - case DATA_GONGEVENT: return m_auiEncounter[0]; - case DATA_NALORAKKEVENT: return m_auiEncounter[1]; - case DATA_AKILZONEVENT: return m_auiEncounter[2]; - case DATA_JANALAIEVENT: return m_auiEncounter[3]; - case DATA_HALAZZIEVENT: return m_auiEncounter[4]; - case DATA_HEXLORDEVENT: return m_auiEncounter[5]; - case DATA_ZULJINEVENT: return m_auiEncounter[6]; + case DATA_GONGEVENT: return m_auiEncounter[DATA_GONGEVENT]; + case DATA_NALORAKKEVENT: return m_auiEncounter[DATA_NALORAKKEVENT]; + case DATA_AKILZONEVENT: return m_auiEncounter[DATA_AKILZONEVENT]; + case DATA_JANALAIEVENT: return m_auiEncounter[DATA_JANALAIEVENT]; + case DATA_HALAZZIEVENT: return m_auiEncounter[DATA_HALAZZIEVENT]; + case DATA_HEXLORDEVENT: return m_auiEncounter[DATA_HEXLORDEVENT]; + case DATA_ZULJINEVENT: return m_auiEncounter[DATA_ZULJINEVENT]; case DATA_CHESTLOOTED: return ChestLooted; case TYPE_RAND_VENDOR_1: return RandVendor[0]; case TYPE_RAND_VENDOR_2: return RandVendor[1]; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index e8b6d7b6349..6962e599279 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -207,14 +207,15 @@ enum Says { SAY_HARRISON_0 = 0, SAY_HARRISON_1 = 1, - SAY_HARRISON_2 = 2, - SAY_HARRISON_3 = 3 + SAY_HARRISON_2 = 0, + SAY_HARRISON_3 = 1 }; enum Spells { SPELL_BANGING_THE_GONG = 45225, - SPELL_STEALTH = 34189 + SPELL_STEALTH = 34189, + SPELL_COSMETIC_SPEAR_THROW = 43647 }; enum Events @@ -228,21 +229,40 @@ enum Events GONG_EVENT_7 = 7, GONG_EVENT_8 = 8, GONG_EVENT_9 = 9, - GONG_EVENT_10 = 10 + GONG_EVENT_10 = 10, + GONG_EVENT_11 = 11, + GONG_EVENT_12 = 12 }; -enum Entrys +enum Waypoints { - NPC_HARRISON_JONES_2 = 24375 + HARRISON_MOVE_1 = 860440, + HARRISON_MOVE_2 = 860441, + HARRISON_MOVE_3 = 860442 }; -enum Waypoints +enum DisplayIds +{ + MODEL_HARRISON_JONES_0 = 22340, + MODEL_HARRISON_JONES_1 = 22354, + MODEL_HARRISON_JONES_2 = 22347 +}; + +enum EntryIds +{ + NPC_HARRISON_JONES_1 = 24375, + NPC_HARRISON_JONES_2 = 24365, + NPC_AMANISHI_GUARDIAN = 23597, +}; + +enum Weapons { - HARRISON_MOVE_1 = 861770, - HARRISON_MOVE_2 = 861771, - HARRISON_MOVE_3 = 861772 + WEAPON_MACE = 5301, + WEAPON_SPEAR = 13631 }; +Position const AmanishiGuardianLoc = {120.687f, 1674.0f, 42.0217f, 1.59044f}; + class npc_harrison_jones : public CreatureScript { public: @@ -263,11 +283,13 @@ class npc_harrison_jones : public CreatureScript uint8 _gongEvent; uint32 _gongTimer; + uint64 uiTargetGUID; void Reset() { _gongEvent = 0; _gongTimer = 0; + uiTargetGUID = 0; } void EnterCombat(Unit* /*who*/) {} @@ -279,12 +301,29 @@ class npc_harrison_jones : public CreatureScript player->CLOSE_GOSSIP_MENU(); me->SetInFront(player); me->SendMovementFlagUpdate(true); + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Talk(SAY_HARRISON_0); instance->SetData(DATA_GONGEVENT, IN_PROGRESS); _gongEvent = GONG_EVENT_1; - _gongTimer = 1; + _gongTimer = 4000; } } + void SpellHit(Unit*, const SpellInfo* spell) + { + if (spell->Id == SPELL_COSMETIC_SPEAR_THROW) + { + me->RemoveAllAuras(); + me->SetEntry(NPC_HARRISON_JONES_2); + me->SetDisplayId(MODEL_HARRISON_JONES_2); + me->SetTarget(0); + me->SetByteValue(UNIT_FIELD_BYTES_1,0,UNIT_STAND_STATE_DEAD); + me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD); + if (instance) + instance->SetData(DATA_GONGEVENT, DONE); + } + } + void UpdateAI(uint32 const diff) { if (_gongEvent) @@ -294,80 +333,120 @@ class npc_harrison_jones : public CreatureScript switch (_gongEvent) { case GONG_EVENT_1: - Talk(SAY_HARRISON_0); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - _gongTimer = 4000; - _gongEvent = GONG_EVENT_2; - break; - case GONG_EVENT_2: me->GetMotionMaster()->MovePath(HARRISON_MOVE_1,false); _gongTimer = 12000; - _gongEvent = GONG_EVENT_3; + _gongEvent = GONG_EVENT_2; break; - case GONG_EVENT_3: + case GONG_EVENT_2: me->SetFacingTo(6.235659f); Talk(SAY_HARRISON_1); DoCast(me, SPELL_BANGING_THE_GONG); + me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_MACE)); me->SetSheath(SHEATH_STATE_MELEE); _gongTimer = 4000; - _gongEvent = GONG_EVENT_4; + _gongEvent = GONG_EVENT_3; break; - case GONG_EVENT_4: + case GONG_EVENT_3: if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) gong->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); - _gongTimer = 120000; - _gongEvent = GONG_EVENT_5; + _gongTimer = 105000; + _gongEvent = GONG_EVENT_4; break; - case GONG_EVENT_5: + case GONG_EVENT_4: + me->RemoveAura(SPELL_BANGING_THE_GONG); if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) gong->SetFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); + + // trigger or gong will need to be scripted to set SPECIAL if enough players click gong. + // This is temp workaround. if (instance) - instance->SetData(DATA_GONGEVENT, DONE); // This is temp + instance->SetData(DATA_GONGEVENT, SPECIAL); // to be removed. - if (instance->GetData(DATA_GONGEVENT) == DONE) + if (instance->GetData(DATA_GONGEVENT) == SPECIAL) { - // Save all players to instance + // Players are Now Saved to instance at SPECIAL (Player should be notified?) me->GetMotionMaster()->MovePath(HARRISON_MOVE_2,false); _gongTimer = 5000; - _gongEvent = 6; + _gongEvent = 5; } else { - _gongTimer = 0; // Add reset at end - _gongEvent = 0; // Add reset at end + _gongTimer = 1000; + _gongEvent = 10; } break; + case GONG_EVENT_5: + me->SetEntry(NPC_HARRISON_JONES_1); + me->SetDisplayId(MODEL_HARRISON_JONES_1); + Talk(SAY_HARRISON_2); + _gongTimer = 14000; + _gongEvent = 6; + break; case GONG_EVENT_6: - me->SetEntry(NPC_HARRISON_JONES_2); - Talk(SAY_HARRISON_2); - _gongTimer = 14000; - _gongEvent = 7; + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); + Talk(SAY_HARRISON_3); + _gongTimer = 7000; + _gongEvent = 7; break; case GONG_EVENT_7: - me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); - Talk(SAY_HARRISON_2); - _gongTimer = 7000; - _gongEvent = 8; - break; + if (!uiTargetGUID) + { + std::list targetList; + GetCreatureListWithEntryInGrid(targetList, me, NPC_AMANISHI_GUARDIAN, 26.0f); + if (!targetList.empty()) + { + for (std::list::const_iterator itr = targetList.begin(); itr != targetList.end(); ++itr) + { + if (Creature* ptarget = *itr) + { + if (ptarget->GetPositionX() > 120) + { + ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR)); + //ptarget-> setdata for sai (I don't know how to do yet and answers are hard to get) + } + } + } + } + } + + if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_MASSIVE_GATE))) + gate->SetGoState(GO_STATE_ACTIVE); + _gongTimer = 1000; + _gongEvent = 8; case GONG_EVENT_8: - // entry 23597 guid 86194 UNIT_VIRTUAL_ITEM_SLOT_ID: 13631 - if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_MASSIVE_GATE))) - gate->SetGoState(GO_STATE_ACTIVE); - _gongTimer = 1000; - _gongEvent = 9; + DoCast(me, SPELL_STEALTH); + me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0)); + me->GetMotionMaster()->MovePath(HARRISON_MOVE_3,false); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); + _gongTimer = 100; + _gongEvent = 9; case GONG_EVENT_9: - DoCast(me, SPELL_STEALTH); - me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0)); - me->GetMotionMaster()->MovePath(HARRISON_MOVE_3,false); - me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); - _gongTimer = 1000; - _gongEvent = 10; + // If player in 10.0f range + // Send setdata to SAI for previous target + // SAI BELOW + // move 23597, guid 86194 to be deleted + // path 138.2242 Y: 1586.994 Z: 43.5488 + // path 131.8407 Y: 1590.247 Z: 43.61384 + // Reach end of path turnto 2.024582 cast Spell ID: 43647 on self hits 24365 update UNIT_VIRTUAL_ITEM_SLOT_ID: 33979 + // wait 2 sec say text 0 + // Set below after complete above + _gongTimer = 0; + _gongEvent = 0; + break; case GONG_EVENT_10: - // move 23597 guid 86194 - // path 138.2242 Y: 1586.994 Z: 43.5488 - // path 131.8407 Y: 1590.247 Z: 43.61384 - // Reach end of path turnto 2.024582 cast Spell ID: 43647 on self hits 24358 UNIT_VIRTUAL_ITEM_SLOT_ID: 33979 - // wait 2 sec say text 0 + me->GetMotionMaster()->MovePoint(0, 120.687f, 1674.0f, 42.0217f); + _gongTimer = 12000; + _gongEvent = 11; + break; + case GONG_EVENT_11: + me->SetFacingTo(1.59044f); + _gongTimer = 6000; + _gongEvent = 12; + break; + case GONG_EVENT_12: + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + if (instance) + instance->SetData(DATA_GONGEVENT, NOT_STARTED); _gongTimer = 0; _gongEvent = 0; break; @@ -385,10 +464,39 @@ class npc_harrison_jones : public CreatureScript } }; +class spell_banging_the_gong : public SpellScriptLoader +{ + public: + spell_banging_the_gong() : SpellScriptLoader("spell_banging_the_gong") { } + + class spell_banging_the_gong_SpellScript : public SpellScript + { + PrepareSpellScript(spell_banging_the_gong_SpellScript); + + void Activate(SpellEffIndex index) + { + PreventHitDefaultEffect(index); + + GetHitGObj()->SendCustomAnim(0); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_banging_the_gong_SpellScript::Activate, EFFECT_1, SPELL_EFFECT_ACTIVATE_OBJECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_banging_the_gong_SpellScript(); + } +}; + void AddSC_zulaman() { new npc_forest_frog(); new npc_zulaman_hostage(); new npc_harrison_jones(); + new spell_banging_the_gong(); } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index 5b5e6faef83..c3386f8c996 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -51,7 +51,6 @@ enum GameobjectIds GO_MASSIVE_GATE = 186728, GO_DOOR_AKILZON = 186858, GO_DOOR_ZULJIN = 186859, - GO_HARKORS_SATCHEL = 187021, GO_TANZARS_TRUNK = 186648, GO_ASHLIS_BAG = 186672, -- cgit v1.2.3 From 14feb316e17d4fc3d21ac6d041c9992802ea102a Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 22:58:58 -0330 Subject: Core/scripting: Update zulaman script --- src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 6962e599279..70e25ddf263 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -402,7 +402,7 @@ class npc_harrison_jones : public CreatureScript if (ptarget->GetPositionX() > 120) { ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR)); - //ptarget-> setdata for sai (I don't know how to do yet and answers are hard to get) + ptarget->AI()->SetData(0,1); } } } -- cgit v1.2.3 From c3166b8608d69dececb2d2ae34c6ada4322fa722 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 6 Jan 2013 23:16:06 -0330 Subject: Core/scripting: Fix zulaman.cpp --- src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server/scripts/EasternKingdoms') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 70e25ddf263..d140c349a4b 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -33,6 +33,7 @@ EndContentData */ #include "zulaman.h" #include "Player.h" #include "SpellInfo.h" +#include "SpellScript.h" /*###### ## npc_forest_frog @@ -476,7 +477,6 @@ class spell_banging_the_gong : public SpellScriptLoader void Activate(SpellEffIndex index) { PreventHitDefaultEffect(index); - GetHitGObj()->SendCustomAnim(0); } -- cgit v1.2.3