diff options
author | w1sht0l1v3 <w1sht0l1v3@gmail.com> | 2013-02-15 16:36:01 +0200 |
---|---|---|
committer | w1sht0l1v3 <w1sht0l1v3@gmail.com> | 2013-02-15 16:36:01 +0200 |
commit | 1ce1ec0775bc70688289192ef7d4822c70bf78c7 (patch) | |
tree | c8dc0f20afedae3ea9f1297fc1f312d79ab7e2d7 | |
parent | 7d881a073961887d446d4430905f315b52928bb1 (diff) |
Scripts/TheStormPeaks: Cosmetic changes.
-rw-r--r-- | src/server/scripts/Northrend/zone_storm_peaks.cpp | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index f977e788eee..d9528446bcf 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -357,11 +357,17 @@ public: enum FreedProtoDrake { NPC_DRAKE = 29709, + AREA_VALLEY_OF_ANCIENT_WINTERS = 4437, + TEXT_EMOTE = 0, + SPELL_KILL_CREDIT_PRISONER = 55144, SPELL_SUMMON_LIBERATED = 55073, - SPELL_KILL_CREDIT_DRAKE = 55143 + SPELL_KILL_CREDIT_DRAKE = 55143, + + EVENT_CHECK_AREA = 1, + EVENT_REACHED_HOME = 2, }; class npc_freed_protodrake : public CreatureScript @@ -373,13 +379,11 @@ public: { npc_freed_protodrakeAI(Creature* creature) : VehicleAI(creature) {} - bool autoMove; - uint16 CheckTimer; + EventMap events; void Reset() { - autoMove = false; - CheckTimer = 5000; + events.ScheduleEvent(EVENT_CHECK_AREA, 5000); } void MovementInform(uint32 type, uint32 id) @@ -389,34 +393,16 @@ public: if (id == 15) // drake reached village - { - // get player that rides drake (from seat 0) - Unit* player = me->GetVehicleKit()->GetPassenger(0); - if (player && player->GetTypeId() == TYPEID_PLAYER) - { - // for each prisoner on drake, give credit - for (uint8 i = 1; i < 4; ++i) - if (Unit* prisoner = me->GetVehicleKit()->GetPassenger(i)) - { - if (prisoner->GetTypeId() != TYPEID_UNIT) - return; - prisoner->CastSpell(player, SPELL_KILL_CREDIT_PRISONER, true); - prisoner->CastSpell(prisoner, SPELL_SUMMON_LIBERATED, true); - prisoner->ExitVehicle(); - } - me->CastSpell(me, SPELL_KILL_CREDIT_DRAKE, true); - player->ExitVehicle(); - } - } + events.ScheduleEvent(EVENT_REACHED_HOME, 2000); } void UpdateAI(const uint32 diff) { - if (!autoMove) + events.Update(diff); + + switch (events.ExecuteEvent()) { - if (CheckTimer < diff) - { - CheckTimer = 5000; + case EVENT_CHECK_AREA: if (me->GetAreaId() == AREA_VALLEY_OF_ANCIENT_WINTERS) { if (Vehicle* vehicle = me->GetVehicleKit()) @@ -424,12 +410,29 @@ public: { Talk(TEXT_EMOTE, passenger->GetGUID()); me->GetMotionMaster()->MovePath(NPC_DRAKE, false); - autoMove = true; } } - } - else - CheckTimer -= diff; + else + events.ScheduleEvent(EVENT_CHECK_AREA, 5000); + break; + case EVENT_REACHED_HOME: + Unit* player = me->GetVehicleKit()->GetPassenger(0); + if (player && player->GetTypeId() == TYPEID_PLAYER) + { + // for each prisoner on drake, give credit + for (uint8 i = 1; i < 4; ++i) + if (Unit* prisoner = me->GetVehicleKit()->GetPassenger(i)) + { + if (prisoner->GetTypeId() != TYPEID_UNIT) + return; + prisoner->CastSpell(player, SPELL_KILL_CREDIT_PRISONER, true); + prisoner->CastSpell(prisoner, SPELL_SUMMON_LIBERATED, true); + prisoner->ExitVehicle(); + } + me->CastSpell(me, SPELL_KILL_CREDIT_DRAKE, true); + player->ExitVehicle(); + } + break; } } }; |