aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2013_06_13_04_world_sai.sql1
-rw-r--r--sql/updates/world/2013_06_13_05_world_sai.sql1
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp82
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