aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKittnz <frederik156@hotmail.com>2016-10-08 15:43:13 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-09-05 11:05:51 +0200
commit8fb07040acb59825797d19881f91eed2b1364474 (patch)
tree949f6d9fe2b180505e0af2fa9cdfbde1a87e7e14
parentc06d6b290eba7daf43c98f0b574f665dbee2fa02 (diff)
Core/Event: Add Darkmoon Fair Music during the event
(cherry picked from commit e3560f3f518ee8a76921b4922292805c03871d4a)
-rw-r--r--sql/updates/world/master/2017_09_05_03_world_2016_10_08_02_world_335.sql2
-rw-r--r--src/server/scripts/World/go_scripts.cpp57
2 files changed, 59 insertions, 0 deletions
diff --git a/sql/updates/world/master/2017_09_05_03_world_2016_10_08_02_world_335.sql b/sql/updates/world/master/2017_09_05_03_world_2016_10_08_02_world_335.sql
new file mode 100644
index 00000000000..7cdf4474281
--- /dev/null
+++ b/sql/updates/world/master/2017_09_05_03_world_2016_10_08_02_world_335.sql
@@ -0,0 +1,2 @@
+-- Update Darkmoon Faire Music Doodad script
+UPDATE `gameobject_template` SET `ScriptName`='go_darkmoon_faire_music' WHERE `entry`=180335;
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index 8f708dd96bc..92a840de7e5 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -1397,6 +1397,62 @@ public:
}
};
+/*####
+## go_darkmoon_faire_music
+####*/
+
+enum DarkmoonFaireMusic
+{
+ MUSIC_DARKMOON_FAIRE_MUSIC = 8440
+};
+
+enum DarkmoonFaireMusicEvents
+{
+ EVENT_DFM_START_MUSIC = 1
+};
+
+class go_darkmoon_faire_music : public GameObjectScript
+{
+public:
+ go_darkmoon_faire_music() : GameObjectScript("go_darkmoon_faire_music") { }
+
+ struct go_darkmoon_faire_musicAI : public GameObjectAI
+ {
+ uint32 rnd;
+
+ go_darkmoon_faire_musicAI(GameObject* go) : GameObjectAI(go)
+ {
+ _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 1000);
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_DFM_START_MUSIC:
+ if (!IsHolidayActive(HOLIDAY_DARKMOON_FAIRE_ELWYNN) || !IsHolidayActive(HOLIDAY_DARKMOON_FAIRE_THUNDER) || !IsHolidayActive(HOLIDAY_DARKMOON_FAIRE_SHATTRATH))
+ break;
+ go->PlayDirectMusic(MUSIC_DARKMOON_FAIRE_MUSIC);
+ _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ private:
+ EventMap _events;
+ };
+
+ GameObjectAI* GetAI(GameObject* go) const override
+ {
+ return new go_darkmoon_faire_musicAI(go);
+ }
+};
+
void AddSC_go_scripts()
{
new go_cat_figurine();
@@ -1436,4 +1492,5 @@ void AddSC_go_scripts()
new go_toy_train_set();
new go_brewfest_music();
new go_midsummer_music();
+ new go_darkmoon_faire_music();
}