diff options
author | Malcrom <malcromdev@gmail.com> | 2013-06-13 17:28:43 -0230 |
---|---|---|
committer | Malcrom <malcromdev@gmail.com> | 2013-06-13 17:28:43 -0230 |
commit | 8031aa4d40cae61c64477492c396d92b911d65b5 (patch) | |
tree | 988828ad363806677ed375cc86d770a53b731dff /src | |
parent | 1c9a3d562120039c9fe96d35a63ade8ee9cb1266 (diff) |
Scripting: Update Lake Frog Script to use Events.
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/zone_grizzly_hills.cpp | 81 |
1 files changed, 39 insertions, 42 deletions
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 3d65ced5736..7858520e2c6 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -717,6 +717,15 @@ enum LakeFrog SAY_MAIDEN_1 = 1 }; +enum LakeFrogEvents +{ + EVENT_SCRIPT_1 = 1, + EVENT_SCRIPT_2 = 2, + EVENT_SCRIPT_3 = 3, + EVENT_SCRIPT_4 = 4, + EVENT_SCRIPT_5 = 5 +}; + class npc_lake_frog : public CreatureScript { public: @@ -730,7 +739,6 @@ class npc_lake_frog : public CreatureScript { _following = false; _runningScript = false; - _phase = 0; if (me->GetEntry() == NPC_LAKE_FROG_QUEST) me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); } @@ -739,48 +747,38 @@ class npc_lake_frog : public CreatureScript { if (_following) if (!me->HasAura(SPELL_FROG_LOVE)) - me->DespawnOrUnsummon(0); + me->DespawnOrUnsummon(1000); + + _events.Update(diff); - if (_runningScript) + while (uint32 eventId = _events.ExecuteEvent()) { - if (_scriptTimer <= diff) + switch (eventId) { - switch (_phase) - { - case 0: - DoCast(me, SPELL_MAIDEN_OF_ASHWOOD_LAKE_TRANSFORM); - me->SetEntry(33220); - _scriptTimer = 2000; - ++_phase; - break; - case 1: - Talk(SAY_MAIDEN_0); - _scriptTimer = 3000; - ++_phase; - break; - case 2: - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - _scriptTimer = 25000; - ++_phase; - break; - case 3: - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - _scriptTimer = 2000; - ++_phase; - break; - case 4: - Talk(SAY_MAIDEN_1); - _scriptTimer = 4000; - ++_phase; - break; - case 5: - _runningScript = false; - me->DespawnOrUnsummon(0); - break; - } + case EVENT_SCRIPT_1: + DoCast(me, SPELL_MAIDEN_OF_ASHWOOD_LAKE_TRANSFORM); + me->SetEntry(33220); + _events.ScheduleEvent(EVENT_SCRIPT_2, 2000); + break; + case EVENT_SCRIPT_2: + Talk(SAY_MAIDEN_0); + _events.ScheduleEvent(EVENT_SCRIPT_3, 3000); + break; + case EVENT_SCRIPT_3: + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + _events.ScheduleEvent(EVENT_SCRIPT_4, 25000); + break; + case EVENT_SCRIPT_4: + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + _events.ScheduleEvent(EVENT_SCRIPT_5, 2000); + break; + case EVENT_SCRIPT_5: + Talk(SAY_MAIDEN_1); + me->DespawnOrUnsummon(4000); + break; + default: + break; } - else if (_scriptTimer) - _scriptTimer -= diff; } } @@ -808,7 +806,7 @@ class npc_lake_frog : public CreatureScript me->GetMotionMaster()->MoveIdle(); me->SetFacingToObject(player); _runningScript = true; - _scriptTimer = 2000; + _events.ScheduleEvent(EVENT_SCRIPT_1, 2000); } } } @@ -820,10 +818,9 @@ class npc_lake_frog : public CreatureScript } private: + EventMap _events; bool _following; bool _runningScript; - uint32 _scriptTimer; - uint8 _phase; }; CreatureAI* GetAI(Creature* creature) const |