diff options
| -rw-r--r-- | sql/updates/world/2013_06_13_04_world_sai.sql | 1 | ||||
| -rw-r--r-- | sql/updates/world/2013_06_13_05_world_sai.sql | 1 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/zone_grizzly_hills.cpp | 82 |
3 files changed, 42 insertions, 42 deletions
diff --git a/sql/updates/world/2013_06_13_04_world_sai.sql b/sql/updates/world/2013_06_13_04_world_sai.sql new file mode 100644 index 00000000000..d3279d691c2 --- /dev/null +++ b/sql/updates/world/2013_06_13_04_world_sai.sql @@ -0,0 +1 @@ +UPDATE `smart_scripts` SET `event_flags`=7 WHERE `entryorguid`=19507 AND `source_type`=0 AND `id`=2; diff --git a/sql/updates/world/2013_06_13_05_world_sai.sql b/sql/updates/world/2013_06_13_05_world_sai.sql new file mode 100644 index 00000000000..8f510380a95 --- /dev/null +++ b/sql/updates/world/2013_06_13_05_world_sai.sql @@ -0,0 +1 @@ +UPDATE `smart_scripts` SET `event_flags`=4 WHERE `entryorguid`=19507 AND `source_type`=0 AND `id`=1; diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 3d65ced5736..0f3a312c1bc 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -711,12 +711,22 @@ enum LakeFrog // Creature NPC_LAKE_FROG = 33211, NPC_LAKE_FROG_QUEST = 33224, + NPC_MAIDEN_OF_ASHWOOD_LAKE = 33220, // Text SAY_MAIDEN_0 = 0, 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 +740,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 +748,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(NPC_MAIDEN_OF_ASHWOOD_LAKE); + _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 +807,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 +819,9 @@ class npc_lake_frog : public CreatureScript } private: + EventMap _events; bool _following; bool _runningScript; - uint32 _scriptTimer; - uint8 _phase; }; CreatureAI* GetAI(Creature* creature) const |
