Core/Event: Add Midsummer Music during the event

(cherry picked from commit 19f8acdb61)
This commit is contained in:
Kittnz
2016-10-08 15:38:17 +02:00
committed by joschiwald
parent 37d6c2bfff
commit c06d6b290e
2 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
-- Update Midsummer Music Doodad script
UPDATE `gameobject_template` SET `ScriptName`='go_midsummer_music' WHERE `entry`=188174;

View File

@@ -1324,6 +1324,79 @@ public:
}
};
/*####
## go_midsummer_music
####*/
enum MidsummerMusic
{
EVENTMIDSUMMERFIREFESTIVAL_A = 12319, // 1.08 min
EVENTMIDSUMMERFIREFESTIVAL_H = 12325, // 1.12 min
};
enum MidsummerMusicEvents
{
EVENT_MM_START_MUSIC = 1
};
class go_midsummer_music : public GameObjectScript
{
public:
go_midsummer_music() : GameObjectScript("go_midsummer_music") { }
struct go_midsummer_musicAI : public GameObjectAI
{
go_midsummer_musicAI(GameObject* go) : GameObjectAI(go)
{
_events.ScheduleEvent(EVENT_MM_START_MUSIC, 1000);
}
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_MM_START_MUSIC:
{
if (!IsHolidayActive(HOLIDAY_FIRE_FESTIVAL))
break;
Map::PlayerList const &players = go->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
if (Player* player = itr->GetSource())
{
if (player->GetTeamId() == TEAM_HORDE)
{
go->PlayDirectMusic(EVENTMIDSUMMERFIREFESTIVAL_H, player);
}
else
{
go->PlayDirectMusic(EVENTMIDSUMMERFIREFESTIVAL_A, player);
}
}
}
_events.ScheduleEvent(EVENT_MM_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_midsummer_musicAI(go);
}
};
void AddSC_go_scripts()
{
new go_cat_figurine();
@@ -1362,4 +1435,5 @@ void AddSC_go_scripts()
new go_midsummer_ribbon_pole();
new go_toy_train_set();
new go_brewfest_music();
new go_midsummer_music();
}