Index: binaries/data/mods/public/gui/common/music.js =================================================================== --- binaries/data/mods/public/gui/common/music.js +++ binaries/data/mods/public/gui/common/music.js @@ -24,7 +24,8 @@ "PEACE": "peace", "BATTLE": "battle", "VICTORY": "victory", - "DEFEAT": "defeat" + "DEFEAT": "defeat", + "CUSTOM": "custom" }; this.resetTracks(); @@ -35,7 +36,8 @@ "PEACE": 2, "BATTLE": 3, "VICTORY": 4, - "DEFEAT": 5 + "DEFEAT": 5, + "CUSTOM": 6 }; this.musicGain = 0.3; @@ -63,15 +65,23 @@ ], "BATTLE": ["Taiko_1.ogg", "Taiko_2.ogg"], "VICTORY": ["You_are_Victorious!.ogg"], - "DEFEAT": ["Dried_Tears.ogg"] + "DEFEAT": ["Dried_Tears.ogg"], + "CUSTOM": [] }; }; // "reference" refers to this instance of Music (needed if called from the timer) Music.prototype.setState = function(state) { + + if (this.reference.currentState == this.reference.states.CUSTOM) + return; + this.reference.currentState = state; this.updateState(); + + + }; Music.prototype.updateState = function() @@ -106,6 +116,10 @@ this.startPlayList(shuffleArray(this.tracks.DEFEAT), 2.0, true); break; + case this.states.CUSTOM: + this.startPlayList(shuffleArray(this.tracks.CUSTOM), 2.0, true); + break; + default: warn(sprintf("%(functionName)s: Unknown music state: %(state)s", { "functionName": "Music.updateState()", "state": this.currentState })); break; Index: binaries/data/mods/public/gui/credits/texts/programming.json =================================================================== --- binaries/data/mods/public/gui/credits/texts/programming.json +++ binaries/data/mods/public/gui/credits/texts/programming.json @@ -167,6 +167,7 @@ {"nick": "Pendingchaos"}, {"nick": "PeteVasi", "name": "Pete Vasiliauskas"}, {"nick": "pilino1234"}, + {"nick": "Pingvin Betyar", "name": "Schronk Tamás"}, {"nick": "Polakrity"}, {"nick": "Poya", "name": "Poya Manouchehri"}, {"name": "Quentin Pradet"}, Index: binaries/data/mods/public/gui/session/messages.js =================================================================== --- binaries/data/mods/public/gui/session/messages.js +++ binaries/data/mods/public/gui/session/messages.js @@ -453,6 +453,10 @@ // Allow gaia in selection when gathering g_Selection.reset(); g_Selection.addList(selection, false, cmd.type == "gather"); + }, + "playCustomTracks": function (notification, player) { + global.music.storeTracks(notification.tracks) + global.music.setState(global.music.states.CUSTOM); } }; Index: binaries/data/mods/public/simulation/data/cheats/retroMe.json =================================================================== --- binaries/data/mods/public/simulation/data/cheats/retroMe.json +++ binaries/data/mods/public/simulation/data/cheats/retroMe.json @@ -0,0 +1,10 @@ +{ + "Name": "retro me", + "Data": { + "Action": "retroMe", + "Templates": [{ + "Type": "custom", + "File": "0_8Bit_Bonus_Track.ogg" + }] + } +} Index: binaries/data/mods/public/simulation/helpers/Cheat.js =================================================================== --- binaries/data/mods/public/simulation/helpers/Cheat.js +++ binaries/data/mods/public/simulation/helpers/Cheat.js @@ -158,6 +158,14 @@ for (let i=0; i<2; ++i) Cheat({ "player": input.player, "action": "changephase", "selected": input.selected }); return; + case "retroMe": + cmpGuiInterface.PushNotification({ + "type": "playCustomTracks", + "players": [input.player], + "tracks": input.templates + }); + return; + default: warn("Cheat '" + input.action + "' is not implemented"); return;