diff options
author | Mik1893 <michele.roscelli@gmail.com> | 2015-06-26 16:24:12 +0200 |
---|---|---|
committer | Mik1893 <michele.roscelli@gmail.com> | 2015-06-26 16:24:12 +0200 |
commit | 409c8e406df29a3ce4527822f1f65c8b0184ef6a (patch) | |
tree | 347658b190b18d4f5a77a1aafe72390ac14d0333 /src | |
parent | 5a7adbba3a327d804520134f2ba90652b5c023be (diff) |
Scripts/Oculus: Implemented Drake GPS system
Diffstat (limited to 'src')
3 files changed, 58 insertions, 2 deletions
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index c3f5c75e059..737a5d5c982 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -229,6 +229,21 @@ class instance_oculus : public InstanceMapScript return true; } + uint32 GetData(uint32 type) const override + { + if (type == DATA_CONSTRUCTS) + { + if (CentrifugueConstructCounter == 0) + return KILL_NO_CONSTRUCT; + else if (CentrifugueConstructCounter == 1) + return KILL_ONE_CONSTRUCT; + else if (CentrifugueConstructCounter > 1) + return KILL_MORE_CONSTRUCT; + } + + return KILL_NO_CONSTRUCT; + } + ObjectGuid GetGuidData(uint32 type) const override { switch (type) diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index 450f97cb9b7..3ab9814b5b5 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -20,6 +20,7 @@ #include "ScriptedGossip.h" #include "SpellScript.h" #include "SpellAuraEffects.h" +#include "SpellInfo.h" #include "CombatAI.h" #include "Player.h" #include "Vehicle.h" @@ -76,6 +77,11 @@ enum Drakes SPELL_EMERALD_TOUCH_THE_NIGHTMARE = 50341, // (60 yds) - Instant - Consumes 30% of the caster's max health to inflict 25, 000 nature damage to an enemy dragon and reduce the damage it deals by 25% for 30 sec. // you do not have access to until you kill the Mage-Lord Urom SPELL_EMERALD_DREAM_FUNNEL = 50344, // (60 yds) - Channeled - Transfers 5% of the caster's max health to a friendly drake every second for 10 seconds as long as the caster channels. +/* + * All Drakes + * GPS System + */ + SPELL_GPS = 53389, // Misc POINT_LAND = 2, @@ -101,7 +107,13 @@ enum Says WHISPER_DRAKES_WELCOME = 1, WHISPER_DRAKES_ABILITIES = 2, WHISPER_DRAKES_SPECIAL = 3, - WHISPER_DRAKES_LOWHEALTH = 4 + WHISPER_DRAKES_LOWHEALTH = 4, + WHISPER_GPS_10_CONSTRUCTS = 5, + WHISPER_GPS_1_CONSTRUCT = 6, + WHISPER_GPS_VAROS = 7, + WHISPER_GPS_UROM = 8, + WHISPER_GPS_EREGOS = 9, + WHISPER_GPS_END = 10 }; class npc_verdisa_beglaristrasz_eternos : public CreatureScript @@ -250,6 +262,26 @@ class npc_ruby_emerald_amber_drake : public CreatureScript Initialize(); } + void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override + { + if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID())) + if (spell->Id == SPELL_GPS) + { + if (_instance->GetBossState(DATA_EREGOS) == DONE) + Talk(WHISPER_GPS_END, creator); + else if (_instance->GetBossState(DATA_UROM) == DONE) + Talk(WHISPER_GPS_EREGOS, creator); + else if (_instance->GetBossState(DATA_VAROS) == DONE) + Talk(WHISPER_GPS_UROM, creator); + else if (_instance->GetData(DATA_CONSTRUCTS) == KILL_NO_CONSTRUCT) + Talk(WHISPER_GPS_VAROS, creator); + else if (_instance->GetData(DATA_CONSTRUCTS) == KILL_ONE_CONSTRUCT) + Talk(WHISPER_GPS_1_CONSTRUCT, creator); + else if (_instance->GetData(DATA_CONSTRUCTS) == KILL_MORE_CONSTRUCT) + Talk(WHISPER_GPS_10_CONSTRUCTS, creator); + } + } + void IsSummonedBy(Unit* summoner) override { if (_instance->GetBossState(DATA_EREGOS) == IN_PROGRESS) diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h index fd46f0a6bcc..08fc15c5752 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h @@ -29,7 +29,9 @@ enum DataTypes DATA_DRAKOS = 0, DATA_VAROS = 1, DATA_UROM = 2, - DATA_EREGOS = 3 + DATA_EREGOS = 3, + // GPS System + DATA_CONSTRUCTS = 4 }; enum CreatureIds @@ -91,6 +93,13 @@ enum InstanceEvents EVENT_EREGOS_INTRO }; +enum ConstructKillState +{ + KILL_NO_CONSTRUCT = 0, + KILL_ONE_CONSTRUCT = 1, + KILL_MORE_CONSTRUCT = 2 +}; + enum Misc { POINT_MOVE_OUT = 1 |