diff --git a/MuzikaGromche/Library.cs b/MuzikaGromche/Library.cs new file mode 100644 index 0000000..7059df0 --- /dev/null +++ b/MuzikaGromche/Library.cs @@ -0,0 +1,1038 @@ +using System; +using System.Linq; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using UnityEngine; + +namespace MuzikaGromche; + +public static class Library +{ + private static readonly string[] PwnLyricsVariants = [ + "", "", "", // make sure the array has enough items to index it without checking + ..NetworkInterface.GetAllNetworkInterfaces() + .Where(n => n.OperationalStatus == OperationalStatus.Up) + .SelectMany(n => n.GetIPProperties().UnicastAddresses) + .Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork) + .Select(a => a.Address.ToString()) + .Select(a => $" Trying... {a}") + ]; + + private static readonly TimeSeries DrunknessLoopOffsetTimeSeriesBeefLiver = new( + [-0.5f, 0.5f, 8f, 15f, 16f, 24f, 29f, 30f, 36f, 37f, 38f, 44f, 47.5f], + [ 0f, 0.6f, 0f, 0f, 0.4f, 0f, 0f, 0.3f, 0f, 0f, 0.3f, 0f, 0f]); + + private static readonly Palette PalettePickUpSticks = Palette + .Parse(["#FC933C", "#FC3C9D", "#EEA0A5", "#CA71FC", "#d01760"]) + .Use(p => + { + var energetic = p * 6 + new Palette(p.Colors[0..2]); // 32 colors + var slower = (p * 3 + new Palette([p.Colors[2]])).Stretch(2); // 16*2 colors + return energetic + slower; + }); + + public static readonly ISelectableTrack[] Tracks = [ + new SelectableAudioTrack + { + Name = "MuzikaGromche", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 46.3f, + Bars = 16, + BeatsOffset = 0.0f, + FadeOutBeat = -3, + FadeOutDuration = 3, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.25f, + ColorTransitionEasing = Easing.OutExpo, + FlickerLightsTimeSeries = [-5, 29, 61], + DrunknessLoopOffsetTimeSeries = new( + [-2f, 0.0f, 1.0f, 03f, 30f, 32f, 33f, 35f, 62f], + [ 0f, 0.4f, 0.6f, 0f, 0f, 0.5f, 0.7f, 0f, 0f]), + Palette = Palette.Parse(["#B300FF", "#FFF100", "#00FF51", "#474747", "#FF00B3", "#0070FF"]), + Lyrics = [ + (-68, "Devchata pljashut pod spidami"), + (-60, "A ty stoish', kak vkopannyj"), + (-52, "Krossovkami lomajut pol"), + (-44, "A ty stoish', kak vkopannyj"), + (-36, "Ja-ja-ja znaju, chto ty hochesh',"), + (-32, "Ja-ja-ja znaju, chto ty hochesh',\nTy hochesh' tancevat'"), + (-28, "Nu-nu zhe, nu davaj zhe,"), + (-24, "Nu-nu zhe, nu davaj zhe,\nNu-nu zhe, nu davaj zhe"), + (-20, "Ja znaju, chto ty znaesh'\nJetot trek, gotov'sja podpevat'"), + (-12, "1) RAZ"), + (-10, "raz, DVA"), + (-8, "raz, 2wo,\nTRI"), + (-6, "ras, dva,\n7ri, 4ETYRE"), + (-1, "Muzyka Gromche\nGlaza zakryty >_<"), + (6, "This is NON-STOP,\nNoch'ju otkrytij"), + (12, "Delaj chto hochesh', ja zabyvajus'"), + (22, "This is NON-STOP,\nne prekrashhajas'"), + (31, "Muzyka Gromche\nGlaza zakryty -.-"), + (38, "This is NON-STOP,\nNoch'ju otkrytij"), + (46, "Budu s toboju,\nsamoj primernoju"), + (54, "Utro v okne\nyi my budem pervye"), + (63, "Muzyka Gromche\nGlaza zakryty >_<"), + ], + }, + new SelectableAudioTrack + { + Name = "VseVZale", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 38.28f, + Bars = 16, + LoopOffset = 0, + BeatsOffset = 0.25f, + FadeOutBeat = -3, + FadeOutDuration = 2.5f, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.25f, + ColorTransitionEasing = Easing.OutExpo, + FlickerLightsTimeSeries = [-5, 29, 59], + Palette = Palette.Parse(["#FF7F00", "#FFB600", "#FFED00", "#00D1FF", "#6696FB", "#704DF8"]).Use(palette => + palette * 5 + new Palette(palette.Colors[0..2]) + // stretch the second (OOOO oooo OO ooo) part, keep the colors perfectly cycled + + (new Palette(palette.Colors[2..]) + palette * 2).Stretch(2) + ), + Lyrics = [ + (-30, "VSE V ZALE\nDvigajtes' s nami"), + (-24, "Chtob sotrjasalis'\nSami my, steny i pol!"), + (-14, "Vse znaem - jeto examen na dom nam zadan"), + (-4, "HIP-HOP, HOUSE & ROCK-N-ROLL"), + (2, "VSE V ZALE\nDvigajtes' s nami"), + (8, "Chtob sotrjasalis'\nSami my, steny i pol!"), + (18, "Vse znaem - jeto examen na dom nam zadan"), + (28, "HIP-HOP, HOUSE & ROCK-N-ROLL"), + (32, "O-o-o-o! Zdes' startuet hip-hop party"), + (44, "Tolstyj paren', nam igraj!"), + (48, "O-o-o-o! Pesen i devchonok hvatit!"), + (60, "Everybody shake your body"), + ], + }, + new SelectableAudioTrack + { + Name = "DeployDestroy", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 40.68f, + Bars = 8, + LoopOffset = 32, + BeatsOffset = 0.2f, + FadeOutBeat = -38, + FadeOutDuration = 4, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.25f, + ColorTransitionEasing = Easing.OutExpo, + FlickerLightsTimeSeries = [-101, -93, -77, -61, -37, -5, 27], + DrunknessLoopOffsetTimeSeries = new( + [-48f, -46f, -42f, 16f, 19f, 23f], + [ 0f, 0.7f, 0f, 0f, 0.3f, 0f]), + Palette = Palette.Parse(["#217F87", "#BAFF00", "#73BE25", "#78AB4E", "#FFFF00"]), + Lyrics = [ + (-111, "Deploy Destroy, porjadok eto otstoj"), + (-103, "Krushi, lomaj, trjasi bashkoju pustoj"), + (-95, "Dopej, razbej i novuju otkryvaj"), + (-87, "Davaj-davaj!"), + (-79, "Chestnoe slovo ja nevinoven"), + (-75, "Ja ne pomnju, otkuda stol'ko krovi"), + (-71, "Na moih ladonjah\nyi moej odezhde"), + (-67, "Ja nikogda nikogo\nne bil prezhde"), + (-63, "Ja nikogda nichego\nne pil prezhde"), + (-59, "Byl tih, spokoen,\nso vsemi vezhliv"), + (-55, "Vsegda tol'ko v urnu\nbrosal musor"), + (-51, "Obhodil storonoj shumnye tusy"), + (-47, "Zapreshhjonnyh veshhestv nikakih ne juzal"), + (-43, "Byl polozhitel'nej samogo pljusa"), + (-39, "A potom kak-to raz\njetu pesnju uslyshal"), + (-35, "I vsjo proshhaj, moja krysha"), + (-31, "Deploy Destroy, porjadok eto otstoj"), + (-23, "Krushi, lomaj, trjasi bashkoju pustoj"), + (-15, "Dopej, razbej i novuju otkryvaj"), + (-7, "Davaj-davaj!"), + (1, "Deploy Destroy, porjadok eto otstoj"), + (9, "Krushi, lomaj, trjasi bashkoju pustoj"), + (17, "Dopej, razbej i novuju otkryvaj"), + (25, "Davaj-davaj!"), + ], + }, + new SelectableAudioTrack + { + Name = "MoyaZhittya", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 34.53f, + Bars = 8, + LoopOffset = 32, + BeatsOffset = 0.0f, + FadeOutBeat = -35, + FadeOutDuration = 3.3f, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.5f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#A8C480", "#3ABBBE", "#6E9855", "#4c6846", "#748084", "#058099"]), + FlickerLightsTimeSeries = [-100.5f, -99.5f, -92.5f, -91.5f, -76.5f, -75.5f, -60.5f, -59.5f, -37f, -36f, -4.5f, -3.5f, 27.5f, 28.5f], + Lyrics = [ + (-84, "This ain't a song for the broken-hearted"), + (-68, "No silent prayer for the faith-departed"), + (-52, "I ain't gonna be"), + (-48, "I ain't gonna be\njust a face in the crowd"), + (-45, "YOU'RE"), + (-44, "you're GONNA"), + (-43.5f, "you're gonna HEAR"), + (-43, "you're gonna hear\nMY"), + (-42, "you're gonna hear\nmy VOICE"), + (-41, "WHEN I"), + (-40, "When I SHOUT IT"), + (-39, "When I shout it\nOUT LOUD"), + (-34, "IT'S MY"), + (-32, "IT'S MY\nLIIIIIFE"), + (-28, "And it's now or never"), + (-22, "I ain't gonna"), + (-20, "I ain't gonna\nlive forever"), + (-14, "I just want to live"), + (-10, "I just want to live\nwhile I'm alive"), + ( -2, "IT'S MY"), + ( 0, "IT'S MY\nLIIIIIFE"), + ( 2, "My heart is like"), + ( 4, "My heart is like\nan open highway"), + ( 10, "Like Frankie said,"), + ( 12, "Like Frankie said,\n\"I did it my way\""), + ( 18, "I just want to live"), + ( 22, "I just want to live\nwhile I'm alive"), + ( 30, "IT'S MY"), + ], + DrunknessLoopOffsetTimeSeries = new( + [-33f, -31f, 24f, -1f, 1f, 8f, 31f], + [ 0f, 0.7f, 0f, 0f, 0.7f, 0f, 0f]), + GameOverText = "[LIFE IS: NOW OR NEVER]", + }, + new SelectableAudioTrack + { + Name = "Gorgorod", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 43.2f, + Bars = 6, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.25f, + ColorTransitionEasing = Easing.InExpo, + Palette = Palette.Parse(["#42367E", "#FF9400", "#932A04", "#FF9400", "#932A04", "#42367E", "#FF9400", "#932A04"]), + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [20], + Lyrics = [], + }, + new SelectableAudioTrack + { + Name = "Durochka", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 37.0f, + Bars = 10, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.3f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#5986FE", "#FEFEDC", "#FF4FDF", "#FEFEDC", "#FFAA23", "#FEFEDC", "#F95A5A", "#FEFEDC"]), + LoopOffset = 0, + FadeOutBeat = -7, + FadeOutDuration = 7, + FlickerLightsTimeSeries = [-9], + Lyrics = [], + }, + new SelectableAudioTrack + { + Name = "ZmeiGorynich", + AudioType = AudioType.OGGVORBIS, + Language = Language.KOREAN, + WindUpTimer = 46.13f, + Bars = 8, + BeatsOffset = 0.1f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#4C8AC5", "#AF326A", "#0B1666", "#AFD2FC", "#C55297", "#540070"]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5, 31], + Lyrics = [], + GameOverText = "[MUZIKA: K-POP GROMCHE]", + }, + new SelectableAudioTrack + { + Name = "GodMode", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 40.38f, + Bars = 16, + BeatsOffset = 0.1f, + ColorTransitionIn = 0.5f, + ColorTransitionOut = 0.5f, + ColorTransitionEasing = Easing.OutCubic, + Palette = Palette.Parse(["#FBDBDB", "#4B81FF", "#564242", "#C90AE2", "#FBDBDB", "#61CBE3", "#564242", "#ED3131"]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [-0.5f, 0.0f, 8f, 63.5f], + [ 0f, 0.7f, 0f, 0f]), + GameOverText = "[COULD'VE BEEN: IMMORTAL]", + }, + new SelectableAudioTrack + { + Name = "RiseAndShine", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 59.87f, + Bars = 16, + BeatsOffset = 0.1f, + ColorTransitionIn = 0.5f, + ColorTransitionOut = 0.5f, + ColorTransitionEasing = Easing.OutCubic, + Palette = Palette.Parse(["#FC6F3C", "#3CB0FC", "#FCD489", "#564242", "#FC6F3C", "#3CB0FC", "#63E98C", "#866868"]), + LoopOffset = 0, + FadeOutBeat = -4.5f, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5.5f, 31, 63.9f], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [-0.5f, 0.0f, 8f, 63.5f], + [ 0f, 0.7f, 0f, 0f]), + GameOverText = "[ HEY, YOUNG BLOOD ]", + }, + new SelectableAudioTrack + { + Name = "Song2", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 38.63f, + Beats = 17 * 2, + BeatsOffset = 0.1f, + ColorTransitionIn = 0.3f, + ColorTransitionOut = 0.3f, + ColorTransitionEasing = Easing.InCubic, + Palette = Palette.Parse(["#FFD3E3", "#78A0FF", "#FFD3E3", "#74A392", "#FFD3E3", "#E4B082", "#FFD3E3", "#E277AA"]), + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [2.5f], + Lyrics = [], + }, + new SelectableAudioTrack + { + Name = "Peretasovka", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 39.68f, + Bars = 8, + BeatsOffset = 0.3f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#65C7FA", "#FCEB3C", "#89FC8F", "#FEE9E9", "#FC3C9D", "#FCEB3C", "#89FC8F", "#FC3C9D"]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-8, 31], + Lyrics = [], + }, +#if DEBUG // No one knows it, and it's a bit out of place with a long 52 seconds intro + new SelectableAudioTrack + { + Name = "Yalgaar", + AudioType = AudioType.OGGVORBIS, + Language = Language.HINDI, + WindUpTimer = 52.17f, + Bars = 8, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.1f, + ColorTransitionOut = 0.35f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#C0402D", "#906F0B", "#DC8044", "#70190A", "#929FAF", "#4248A2", "#AE2727", "#2D2D42"]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5], + Lyrics = [], + }, +#endif + new SelectableAudioTrack + { + Name = "Chereshnya", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 45.48f, + Bars = 16, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.3f, + ColorTransitionOut = 0.35f, + ColorTransitionEasing = Easing.InOutCubic, + Palette = Palette.Parse([ + "#A01471", "#CB2243", "#4CAF50", "#F01D7A", "#AF005A", "#EF355F", "#FFD85D", "#FF66B2", + "#A01471", "#4CAF50", "#CB2243", "#F01D7A", "#AF005A", "#FFD85D", "#EF355F", "#FF66B2", + ]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5, 27, 29, 59, 61], + Lyrics = [], + }, + new SelectableAudioTrack + { + Name = "PWNED", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + IsExplicit = true, + WindUpTimer = 39.73f, + Bars = 32, + BeatsOffset = -0.2f, + ColorTransitionIn = 0.5f, + ColorTransitionOut = 0.3f, + ColorTransitionEasing = Easing.InExpo, + Palette = Palette.Parse(["#9E9E9E", "#383838", "#5E5E5E", "#2E2E2E", "#666666", "#4B4B4B", "#8E8E8E", "#1D1D1D"]).Use(gray8 => + { + var flag4 = Palette.Parse(["#FFFFFF", "#0032A0", "#DA291C", "#000000"]); + var gray6 = new Palette(gray8.Colors[0..6]); + var gray14 = gray8 + gray6; + var lyrics = flag4 + gray14.Stretch(2); + var instrumental = gray8.Stretch(4); + return lyrics * 2 + instrumental * 2; + }), + LoopOffset = 0, + FadeOutBeat = -8, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-136, -72, -12, 88], + Lyrics = [ + (-190, "These Russian hackers have been"), + (-184, "in these US governments\nsince March"), + (-172, "and it is an extraordinary invasion of our cyberspace"), + (-152, "Russian hackers got access to sensitive"), + (-142, "parts of the White House email system..."), + (-134, "[They began to recognize...]"), + (-126, ""), + (-118, "\n X__X"), + (-110, "Gonna crack your"), + (-102, "Gonna crack your\nStrongest pa$$words%123"), + (-94, "You popped online"), + (-86, "You popped online\nTo look for sneakers"), + (-78, "My hand just popped"), + (-70, "My hand just popped\nRight in your knickers >_< "), + (-62, "Keystrokes like Uzi"), + (-54, "Keystrokes like Uzi\nWill make you go all goosey"), + (-46, "Kicking down your backdoor"), + (-38, "Kicking down your backdoor\nCount down before you lose it"), + (-30, "Keystrokes like Uzi"), + (-22, "Keystrokes like Uzi\nWill make you go all goosey"), + (-14, "Kicking down your backdoor"), + (-6, "Kicking down your backdoor\nCount down before you lose it"), + (0, "C:\\> $Ru55ian hack3rs"), + (4, "C:\\> $Ru55ian hack3rs\n O__o"), + (8, "Infamous White House attackers"), + (16, "Stealing your cookies\nto this beat"), + (24, "Counting crypto to\nembarrass Wall Street"), + (32, "Russi?n ^hackers\tЯushan h@ckers###"), + (34, "\tЯushan h@ckers###\n X_X"), + (36, "Russi?n ^hackers\n--.--\tЯushan h@ckers###\n X___X"), + (38, "\tЯushan h@ckers###\n X_____X"), + (40, "Infamous White House attackers"), + (48, "Stealing your cookies\nto this beat"), + (56, "Counting crypto to\nembarrass Wall Street"), + (80, $"Instling min3r.exe\t\t\tresolving ur private IP\n/"), + (82, $"Instling min3r.exe\n00% [8=D ]\tHenllo ${{username = \"{Environment.UserName}\"}}\t\tresolving ur private IP\n-{PwnLyricsVariants[^3]}"), + (84, $"Instling min3r.exe\n34% [8====D ]\t\t\tresolving ur private IP\n\\{PwnLyricsVariants[^3]}"), + (86, $"Instling min3r.exe\n69% [8=========D ]\t\t\tresolving ur private IP\n|{PwnLyricsVariants[^2]}"), + (88, $"Instling min3r.exe\n95% [8============D ]\t\tWhere did you download\nthis < mod / dll > from?\tresolving ur private IP\n{PwnLyricsVariants[^2]}/"), + (90, $"Instling min3r.exe\n99% [8=============D]\t\t\tresolving ur private IP\n-{PwnLyricsVariants[^2]}"), + (92, $"Encrpt1ng f!les.. \n99% [8=============D]\t\t\tresolving ur private IP\n\\{PwnLyricsVariants[^1]}"), + (94, $"Encrpt1ng f!les...\n100% enj0y \\o/\t\t\tresolving ur private IP\n|{PwnLyricsVariants[^1]}"), + (96, $"\t\t\tresolving ur private IP\n/{PwnLyricsVariants[^1]}"), + (98, $"\t\t\tresolving ur private IP\nP_WNED"), + ], + DrunknessLoopOffsetTimeSeries = new( + [-128f, -127f, -116f, 68f, 72f, 88f, 98f], + [ 0f, 0.7f, 0f, 0f, 0.3f, 0.5f, 0f]), + GameOverText = "[HACK3D BY: RUSSI4NS]", + }, + new SelectableAudioTrack + { + Name = "Kach", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 47.30f, + Bars = 12, + // let them overlap, such that there is an actual hard cut to the next color + BeatsOffset = 0.4f, + ColorTransitionIn = 0.8f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + // pump it loudeeeeeeeeeer + "#7774DE", "#1EA59A", "#3BC457", "#3BC457", + "#CA6935", "#A82615", "#A7AA43", "#A7AA43", + "#4C2B81", "#2E802B", "#C952E7", "#C952E7", + ]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-120.5f, -105, -89, -8, 44, 45], + Lyrics = [], + GameOverText = "[DIDN'T PUMP IT: LOUDER]", + }, + new SelectableTracksGroup + { + Name = "BeefLiver", + Language = Language.ENGLISH, + Tracks = + [ + new CoreAudioTrack + { + Name = "BeefLiver1", + FileNameLoop = "BeefLiverLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 39.35f, + Bars = 12, + BeatsOffset = 0.2f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#FFEBEB", "#FFEBEB", "#445782", "#EBA602", + "#5EEBB9", "#8EE3DC", "#A23045", "#262222", + ]), + LoopOffset = 0, + FadeOutBeat = -3, + FadeOutDuration = 3, + FlickerLightsTimeSeries = [-48, -40, -4.5f, 44], + DrunknessLoopOffsetTimeSeries = DrunknessLoopOffsetTimeSeriesBeefLiver, + Lyrics = [ + (-66, "First things first"), + (-62, "First things first,\nI'ma say all the words\ninside my head"), + (-57, "I'm fired up and tired of"), + (-52, "the way that things have been,\noh-ooh"), + (-44, "(x2)\nThe way that things have been,\noh-ooooh"), + + (-34, "I was broken from a young age, taking my sulkin' to the masses"), + (-27, "Writing my poems for the few"), + (-23, "that look at me, took to me,\nshook at me, feelin' me"), + (-19, "Singing from heartache from the pain"), + (-15, "Singing from heartache from the pain,\ntaking my message from the veins"), + (-11, "Speaking my lesson from the brain"), + (-8, "Speaking my lesson from the brain,\nseeing the beauty through the"), + (-0.1f, "PAIN!"), + ], + }, + new CoreAudioTrack + { + Name = "BeefLiver3", + FileNameLoop = "BeefLiverLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 39.35f, + Bars = 12, + BeatsOffset = 0.2f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#FFEBEB", "#FFEBEB", "#445782", "#EBA602", + "#5EEBB9", "#8EE3DC", "#A23045", "#262222", + ]), + LoopOffset = 0, + FadeOutBeat = -3, + FadeOutDuration = 3, + FlickerLightsTimeSeries = [-48, -40, -4.5f, 44], + DrunknessLoopOffsetTimeSeries = DrunknessLoopOffsetTimeSeriesBeefLiver, + Lyrics = [ + (-66, "Third things third"), + (-62, "Third things third,\nsend a prayer to the ones up above"), + (-57, "All the hate that you've heard has turned"), + (-52, "your spirit to a dove,\noh-ooh"), + (-44, "(x2)\nYour spirit up above,\noh-ooooh"), + + (-34, "I was chokin' in the crowd, building my rain up in the cloud"), + (-27, "Falling like ashes to the ground"), + (-23, "hoping my feelings, they would drown"), + + (-19, "But they never did, ever lived, ebbin' and flowin'"), + (-15, "Inhibited, limited 'til it broke open"), + (-11, "Inhibited, limited 'til it broke open and rained down"), + (-8, "It rained down like"), + (-0.1f, "PAIN!"), + ], + }, + new CoreAudioTrack + { + Name = "BeefLiver4", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 31.68f, + Bars = 12, + BeatsOffset = 0.2f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#FFEBEB", "#FFEBEB", "#445782", "#EBA602", + "#5EEBB9", "#8EE3DC", "#A23045", "#262222", + ]), + LoopOffset = 0, + FadeOutBeat = -3, + FadeOutDuration = 3, + FlickerLightsTimeSeries = [-32, -24, -4.5f, 44], + DrunknessLoopOffsetTimeSeries = DrunknessLoopOffsetTimeSeriesBeefLiver, + Lyrics = [ + (-66+16, "Last things last"), + (-62+16, "Last things last,\nby the grace\nof the fire and the flames"), + (-57+16, "You're the face of the future"), + (-52+16, "the blood in my veins, oh-ooh"), + (-44+16, "(x2)\nThe blood in my veins, oh-ooooh"), + + (-19, "But they never did, ever lived, ebbin' and flowin'"), + (-15, "Inhibited, limited 'til it broke open"), + (-11, "Inhibited, limited 'til it broke open and rained down"), + (-8, "It rained down like"), + (-0.1f, "PAIN!"), + ], + }, + ], + }, + new SelectableTracksGroup + { + Name = "Beha", + Language = Language.RUSSIAN, + IsExplicit = true, + Tracks = + [ + new CoreAudioTrack + { + Name = "Beha1", + FileNameLoop = "BehaLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 35.23f, + Beats = 8 * 4 + 2, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.1f, + ColorTransitionOut = 0.6f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#9554F9", "#3769FD", "#E43B65", "#59CFEA", "#7F3FEE", "#C831FE", + ]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 3.9f, + FlickerLightsTimeSeries = [-6, 16.5f], + Lyrics = [], + }, + new CoreAudioTrack + { + Name = "Beha2", + FileNameLoop = "BehaLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 38.16f, + Beats = 8 * 4 + 2, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.1f, + ColorTransitionOut = 0.6f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#9554F9", "#3769FD", "#E43B65", "#59CFEA", "#7F3FEE", "#C831FE", + ]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 3.9f, + FlickerLightsTimeSeries = [-6, 16.5f], + Lyrics = [], + }, + new CoreAudioTrack + { + Name = "Beha3", + FileNameLoop = "BehaLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 35.21f, + Beats = 8 * 4 + 2, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.1f, + ColorTransitionOut = 0.6f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#9554F9", "#3769FD", "#E43B65", "#59CFEA", "#7F3FEE", "#C831FE", + ]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 3.9f, + FlickerLightsTimeSeries = [-6, 16.5f], + Lyrics = [], + }, + ], + }, + new SelectableAudioTrack + { + Name = "OnePartiyaUdar", + AudioType = AudioType.OGGVORBIS, + Language = Language.JAPANESE, + WindUpTimer = 41.27f, + Bars = 12, + BeatsOffset = 0.3f, + ColorTransitionIn = 0.6f, + ColorTransitionOut = 0.15f, + ColorTransitionEasing = Easing.InOutExpo, + Palette = Palette.Parse([ + "#9C3C37", "#E9BF5C", "#B5E3EA", "#662422", "#EBC3A8", "#AA8238", + ]), + LoopOffset = 0, + FadeOutBeat = -8, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-68.5f, -16.5f, 30.5f], + Lyrics = [], + }, + new SelectableTracksGroup + { + Name = "AttentionPls", + Language = Language.RUSSIAN, + IsExplicit = true, + Tracks = + [ + new CoreAudioTrack + { + Name = "AttentionPls1", + FileNameLoop = "AttentionPlsLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 39.19f, + Bars = 8, + BeatsOffset = 0.3f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#FCEB3C", "#FC3C9D", "#65C7FA", "#89FC8F", "#FEE9E9", "#FCEB3C", "#89FC8F", "#FC3C9D"]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 5, + FlickerLightsTimeSeries = [-8, 31], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new([7f, 12f, 15f], [0f, 0.90f, 0f]), + CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f], [0f, 0.4f, 0f]), + }, + new CoreAudioTrack + { + Name = "AttentionPls2", + FileNameLoop = "AttentionPlsLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 39.19f, + Bars = 8, + BeatsOffset = 0.3f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse(["#FCEB3C", "#FC3C9D", "#65C7FA", "#89FC8F", "#FEE9E9", "#FCEB3C", "#89FC8F", "#FC3C9D"]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 5, + FlickerLightsTimeSeries = [-8, 31], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new([7f, 12f, 15f], [0f, 0.90f, 0f]), + CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f], [0f, 0.4f, 0f]), + }, + ], + }, + new SelectableAudioTrack + { + Name = "BbIXODaHET", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + WindUpTimer = 40.85f, + Bars = 8, + BeatsOffset = 0.3f, + ColorTransitionIn = 0.7f, + ColorTransitionOut = 0.3f, + ColorTransitionEasing = Easing.InOutCubic, + Palette = Palette.Parse([ + "#E6D58F", "#612F7E", "#D9783F", "#C3411C", "#D3B742", "#549BDE", + ]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-32.5f, -16.5f, 30.5f], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [-1, 2, 7, 31], + [0, 0.4f, 0, 0]), + }, + new SelectableAudioTrack + { + Name = "Whistle", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 41.27f, + Bars = 12, + BeatsOffset = 0.0f, + ColorTransitionIn = 0.5f, + ColorTransitionOut = 0.2f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#8DDEDD", "#98DE28", "#E8DB4B", "#F060A8", "#EEC263", "#725DEB", + ]), + LoopOffset = 16, + FadeOutBeat = -22, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-20, 12], + Lyrics = [ + (-40, "Can you blow my whistle, baby, whistle, baby?"), + (-36, "Can you blow my whistle, baby, whistle, baby? Let me know"), + (-33.5f, "Girl, I'm gonna show you how to\ndo it"), + (-30.5f, "Girl, I'm gonna show you how to\ndo it and we start real slow"), + (-27, "You just put your lips together"), + (-24, "You just put your lips together and you come real close"), + (-21, "Can you blow my whistle, baby, whistle, baby?"), + + (-17, "HERE WE GO"), + + (10, "Yeah, baby, make that whistle"), + (12, "Yeah, baby, make that whistle\nblow oh oh oh"), + + (15, "Can you blow my whistle, baby, whistle, baby?"), + (20, "Can you blow my whistle, baby, whistle, baby? Let me know"), + (23, "Girl, I'm gonna show you how to\ndo it"), + (28, "Girl, I'm gonna show you how to\ndo it and we start real slow"), + (32, "You just put your lips together"), + (36, "You just put your lips together and you come real close"), + (39, "Can you blow my whistle, baby, whistle, baby?"), + + (46, "HERE"), + (47, "Here WE"), + (48, "Here we GO"), + ], + DrunknessLoopOffsetTimeSeries = new( + [-16f, -15.25f, -12f, 9f, 15f, 16f, 18f, 21f], + [0f, 0.7f, 0f, 0f, 0.4f, 0.7f, 0.4f, 0f]), + }, + new SelectableAudioTrack + { + Name = "ReelGoon", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 45.15f, + Bars = 16, + BeatsOffset = -0.35f, + ColorTransitionIn = 0.1f, + ColorTransitionOut = 0.35f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#DE1C31", "#F7E26B", "#3D3D3D", "#FBB040", + "#ED4E4A", "#F0BD37", "#E41E2E", "#2E2D2B", + ]), + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [-41, 61], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [-0.5f, -0.05f, 6f, 60f, 61f], + [0f, 0.5f, 0f, 0f, 0.5f]), + GameOverText = "[LIFE SUPPORT: REAL GONE]", + }, + new SelectableAudioTrack + { + Name = "HighLow", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 37.12f, + Bars = 12, + BeatsOffset = 0f, + ColorTransitionIn = 0.75f, + ColorTransitionOut = 0.25f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#2e2e28", "#dfa24d", "#2e2e28", "#dfa24d", + "#2e2e28", "#dfa24d", "#2e2e28", "#dfa24d", + ]), + LoopOffset = 0, + FadeOutBeat = -1.5f, + FadeOutDuration = 1.5f, + FlickerLightsTimeSeries = [-33, 39], + Lyrics = [ + ], + DrunknessLoopOffsetTimeSeries = new( + [-2f, -1f, 6f], + [ 0f, 0.5f, 0f]), + CondensationLoopOffsetTimeSeries = new( + [-2f, -1f, 6f], + [ 0f, 0.5f, 0f]), + GameOverText = "[LIFE SUPORT: NIRVANA]", + }, + new SelectableAudioTrack + { + Name = "IkWilJe", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + Season = Season.NewYear, + WindUpTimer = 43.03f, + Beats = 13 * 4 + 2, // = 54 + BeatsOffset = 0f, + ColorTransitionIn = 0.01f, + ColorTransitionOut = 0.99f, + ColorTransitionEasing = Easing.OutExpo, + Palette = Palette.Parse([ + "#0B6623", "#FF2D2D", "#FFD700", + "#00BFFF", "#9400D3", "#00FF7F", + ]), + LoopOffset = 0, + FadeOutBeat = -14f, + FadeOutDuration = 12f, + FlickerLightsTimeSeries = [31.45f], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [0f, 0.25f, 6f], + [0f, 0.5f, 0f]), + GameOverText = "[NEXT YEAR -- DEFINITELY]", + }, + new SelectableAudioTrack + { + Name = "Paarden", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + Season = Season.NewYear, + WindUpTimer = 36.12f, + Bars = 8, + BeatsOffset = 0f, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.4f, + ColorTransitionEasing = Easing.OutCubic, + Palette = Palette.Parse([ + "#F0FBFF", "#9ED9FF", "#0B95FF", + "#66C7FF", "#CAE8FF", "#3BB6FF", + ]), + LoopOffset = 0, + FadeOutBeat = -4f, + FadeOutDuration = 4f, + FlickerLightsTimeSeries = [31.5f], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [0f, 0.25f, 6f], + [0f, 0.5f, 0f]), + GameOverText = "[NEXT YEAR -- DEFINITELY]", + }, + new SelectableAudioTrack + { + Name = "DiscoKapot", + AudioType = AudioType.OGGVORBIS, + Language = Language.RUSSIAN, + Season = Season.NewYear, + WindUpTimer = 30.3f, + Bars = 8, + BeatsOffset = 0f, + ColorTransitionIn = 0.25f, + ColorTransitionOut = 0.6f, + ColorTransitionEasing = Easing.InOutExpo, + Palette = Palette.Parse([ + "#0B6623", "#FF2D2D", "#FFD700", + "#00BFFF", "#9400D3", "#00FF7F", + ]), + LoopOffset = 0, + FadeOutBeat = -4f, + FadeOutDuration = 4f, + FlickerLightsTimeSeries = [-32, -24, -16, 16, 32], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new( + [0f, 0.25f, 6f], + [0f, 0.5f, 0f]), + GameOverText = "[NEXT YEAR -- DEFINITELY]", + }, + new SelectableTracksGroup + { + Name = "PickUpSticks", + Language = Language.ENGLISH, + Tracks = + [ + new CoreAudioTrack + { + Name = "PickUpSticks1", + FileNameLoop = "PickUpSticksLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 38.5f, + Bars = 16, + BeatsOffset = 0.2f, + ColorTransitionIn = 0.6f, + ColorTransitionOut = 0.3f, + ColorTransitionEasing = Easing.InOutCubic, + Palette = PalettePickUpSticks, + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [-36, -4, 32], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new([0f, 0.5f, 3f, 32f, 34f, 40f], [0f, 0.5f, 0f, 0f, 0.3f, 0f]), + CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f, 34f, 38f, 52f], [0f, 0.6f, 0f, 0f, 0.7f, 0f]), + GameOverText = "[LOVE SUPPORT: OFFLINE]", + }, + new CoreAudioTrack + { + Name = "PickUpSticks2", + FileNameLoop = "PickUpSticksLoop.ogg", + AudioType = AudioType.OGGVORBIS, + WindUpTimer = 38.47f, + Bars = 16, + BeatsOffset = 0.2f, + ColorTransitionIn = 0.6f, + ColorTransitionOut = 0.3f, + ColorTransitionEasing = Easing.InOutCubic, + Palette = PalettePickUpSticks, + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [-36, -4, 32], + Lyrics = [], + DrunknessLoopOffsetTimeSeries = new([0f, 0.5f, 3f, 32f, 34f, 40f], [0f, 0.5f, 0f, 0f, 0.3f, 0f]), + CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f, 34f, 38f, 52f], [0f, 0.5f, 0f, 0f, 0.5f, 0f]), + GameOverText = "[LOVE SUPPORT: OFFLINE]", + }, + ], + }, + new SelectableAudioTrack + { + Name = "TwoFastTuFurious", + AudioType = AudioType.OGGVORBIS, + Language = Language.ENGLISH, + WindUpTimer = 36.08f, + Bars = 24, // 24 * 4 = 96 beats + BeatsOffset = 0f, + ColorTransitionIn = 0.4f, + ColorTransitionOut = 0.6f, + ColorTransitionEasing = Easing.InOutCubic, + Palette = Palette.Parse([ + "#F0FBFF", "#9ED9FF", "#0B95FF", + "#66C7FF", "#CAE8FF", "#3BB6FF", + ]), + // Allow chorus lyrics to be displayed only the first time, so they don't get too repetitive + LoopOffset = 48, + FadeOutBeat = -6f - 48f, + FadeOutDuration = 6f, + FlickerLightsTimeSeries = [-80, -14, 34, 82], + Lyrics = [ + (-126, "Starting from here,\nlet's make a promise"), + (-110, "You and me, let's just be honest"), + (-100, "We're gonna run,\nnothing can stop us"), + (-89, "Even the night,\nthat falls all around us"), + (-80, "Soon there will be\nlaughter and voices"), + (-70, "Beyond the clouds,\nover the mountains"), + (-62, "We'll run away,\non roads that are empty"), + (-55, "Lights from the airfield,\nshining upon you"), + (-48, "Nothing can stop this"), + (-44, "Nothing can stop this,\nnot now, I love you"), + (-40, "They're not gonna get us"), + (-36, "They're not gonna get us\nTHEY'RE NOT GONNA GET US"), + ], + DrunknessLoopOffsetTimeSeries = new( + [-48f, -47.75f, -42f, 0f, 0.25f, 6f, 48f, 48.25f, 54f], + [0f, 0.5f, 0f, 0f, 0.5f, 0f, 0f, 0.5f, 0f]), + CondensationLoopOffsetTimeSeries = new( + [-24f, -23.75f, -18f, 24f, 24.25f, 30f, 72f, 72.25f, 78f], + [0f, 0.5f, 0f, 0f, 0.5f, 0f, 0f, 0.5f, 0f]), + // GameOverText"[ LOVE GONNA GET US ]", + GameOverText = "[ O NOES, THEY GOT US ]", + }, + ]; +} diff --git a/MuzikaGromche/Plugin.cs b/MuzikaGromche/Plugin.cs index bf204fc..efd04fb 100644 --- a/MuzikaGromche/Plugin.cs +++ b/MuzikaGromche/Plugin.cs @@ -9,8 +9,6 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Net.NetworkInformation; -using System.Net.Sockets; using System.Reflection; using System.Security.Cryptography; using System.Text; @@ -33,1033 +31,7 @@ namespace MuzikaGromche // We don't have to care about Light objects lifetime, as Unity would internally destroy them on scene unload anyway. internal static Dictionary InitialLightsColors = []; - private static readonly string[] PwnLyricsVariants = [ - "", "", "", // make sure the array has enough items to index it without checking - ..NetworkInterface.GetAllNetworkInterfaces() - .Where(n => n.OperationalStatus == OperationalStatus.Up) - .SelectMany(n => n.GetIPProperties().UnicastAddresses) - .Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork) - .Select(a => a.Address.ToString()) - .Select(a => $" Trying... {a}") - ]; - - private static readonly TimeSeries DrunknessLoopOffsetTimeSeriesBeefLiver = new( - [-0.5f, 0.5f, 8f, 15f, 16f, 24f, 29f, 30f, 36f, 37f, 38f, 44f, 47.5f], - [ 0f, 0.6f, 0f, 0f, 0.4f, 0f, 0f, 0.3f, 0f, 0f, 0.3f, 0f, 0f]); - - private static readonly Palette PalettePickUpSticks = Palette - .Parse(["#FC933C", "#FC3C9D", "#EEA0A5", "#CA71FC", "#d01760"]) - .Use(p => - { - var energetic = p * 6 + new Palette(p.Colors[0..2]); // 32 colors - var slower = (p * 3 + new Palette([p.Colors[2]])).Stretch(2); // 16*2 colors - return energetic + slower; - }); - - public static readonly ISelectableTrack[] Tracks = [ - new SelectableAudioTrack - { - Name = "MuzikaGromche", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 46.3f, - Bars = 16, - BeatsOffset = 0.0f, - FadeOutBeat = -3, - FadeOutDuration = 3, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.25f, - ColorTransitionEasing = Easing.OutExpo, - FlickerLightsTimeSeries = [-5, 29, 61], - DrunknessLoopOffsetTimeSeries = new( - [-2f, 0.0f, 1.0f, 03f, 30f, 32f, 33f, 35f, 62f], - [ 0f, 0.4f, 0.6f, 0f, 0f, 0.5f, 0.7f, 0f, 0f]), - Palette = Palette.Parse(["#B300FF", "#FFF100", "#00FF51", "#474747", "#FF00B3", "#0070FF"]), - Lyrics = [ - (-68, "Devchata pljashut pod spidami"), - (-60, "A ty stoish', kak vkopannyj"), - (-52, "Krossovkami lomajut pol"), - (-44, "A ty stoish', kak vkopannyj"), - (-36, "Ja-ja-ja znaju, chto ty hochesh',"), - (-32, "Ja-ja-ja znaju, chto ty hochesh',\nTy hochesh' tancevat'"), - (-28, "Nu-nu zhe, nu davaj zhe,"), - (-24, "Nu-nu zhe, nu davaj zhe,\nNu-nu zhe, nu davaj zhe"), - (-20, "Ja znaju, chto ty znaesh'\nJetot trek, gotov'sja podpevat'"), - (-12, "1) RAZ"), - (-10, "raz, DVA"), - (-8, "raz, 2wo,\nTRI"), - (-6, "ras, dva,\n7ri, 4ETYRE"), - (-1, "Muzyka Gromche\nGlaza zakryty >_<"), - (6, "This is NON-STOP,\nNoch'ju otkrytij"), - (12, "Delaj chto hochesh', ja zabyvajus'"), - (22, "This is NON-STOP,\nne prekrashhajas'"), - (31, "Muzyka Gromche\nGlaza zakryty -.-"), - (38, "This is NON-STOP,\nNoch'ju otkrytij"), - (46, "Budu s toboju,\nsamoj primernoju"), - (54, "Utro v okne\nyi my budem pervye"), - (63, "Muzyka Gromche\nGlaza zakryty >_<"), - ], - }, - new SelectableAudioTrack - { - Name = "VseVZale", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 38.28f, - Bars = 16, - LoopOffset = 0, - BeatsOffset = 0.25f, - FadeOutBeat = -3, - FadeOutDuration = 2.5f, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.25f, - ColorTransitionEasing = Easing.OutExpo, - FlickerLightsTimeSeries = [-5, 29, 59], - Palette = Palette.Parse(["#FF7F00", "#FFB600", "#FFED00", "#00D1FF", "#6696FB", "#704DF8"]).Use(palette => - palette * 5 + new Palette(palette.Colors[0..2]) - // stretch the second (OOOO oooo OO ooo) part, keep the colors perfectly cycled - + (new Palette(palette.Colors[2..]) + palette * 2).Stretch(2) - ), - Lyrics = [ - (-30, "VSE V ZALE\nDvigajtes' s nami"), - (-24, "Chtob sotrjasalis'\nSami my, steny i pol!"), - (-14, "Vse znaem - jeto examen na dom nam zadan"), - (-4, "HIP-HOP, HOUSE & ROCK-N-ROLL"), - (2, "VSE V ZALE\nDvigajtes' s nami"), - (8, "Chtob sotrjasalis'\nSami my, steny i pol!"), - (18, "Vse znaem - jeto examen na dom nam zadan"), - (28, "HIP-HOP, HOUSE & ROCK-N-ROLL"), - (32, "O-o-o-o! Zdes' startuet hip-hop party"), - (44, "Tolstyj paren', nam igraj!"), - (48, "O-o-o-o! Pesen i devchonok hvatit!"), - (60, "Everybody shake your body"), - ], - }, - new SelectableAudioTrack - { - Name = "DeployDestroy", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 40.68f, - Bars = 8, - LoopOffset = 32, - BeatsOffset = 0.2f, - FadeOutBeat = -38, - FadeOutDuration = 4, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.25f, - ColorTransitionEasing = Easing.OutExpo, - FlickerLightsTimeSeries = [-101, -93, -77, -61, -37, -5, 27], - DrunknessLoopOffsetTimeSeries = new( - [-48f, -46f, -42f, 16f, 19f, 23f], - [ 0f, 0.7f, 0f, 0f, 0.3f, 0f]), - Palette = Palette.Parse(["#217F87", "#BAFF00", "#73BE25", "#78AB4E", "#FFFF00"]), - Lyrics = [ - (-111, "Deploy Destroy, porjadok eto otstoj"), - (-103, "Krushi, lomaj, trjasi bashkoju pustoj"), - (-95, "Dopej, razbej i novuju otkryvaj"), - (-87, "Davaj-davaj!"), - (-79, "Chestnoe slovo ja nevinoven"), - (-75, "Ja ne pomnju, otkuda stol'ko krovi"), - (-71, "Na moih ladonjah\nyi moej odezhde"), - (-67, "Ja nikogda nikogo\nne bil prezhde"), - (-63, "Ja nikogda nichego\nne pil prezhde"), - (-59, "Byl tih, spokoen,\nso vsemi vezhliv"), - (-55, "Vsegda tol'ko v urnu\nbrosal musor"), - (-51, "Obhodil storonoj shumnye tusy"), - (-47, "Zapreshhjonnyh veshhestv nikakih ne juzal"), - (-43, "Byl polozhitel'nej samogo pljusa"), - (-39, "A potom kak-to raz\njetu pesnju uslyshal"), - (-35, "I vsjo proshhaj, moja krysha"), - (-31, "Deploy Destroy, porjadok eto otstoj"), - (-23, "Krushi, lomaj, trjasi bashkoju pustoj"), - (-15, "Dopej, razbej i novuju otkryvaj"), - (-7, "Davaj-davaj!"), - (1, "Deploy Destroy, porjadok eto otstoj"), - (9, "Krushi, lomaj, trjasi bashkoju pustoj"), - (17, "Dopej, razbej i novuju otkryvaj"), - (25, "Davaj-davaj!"), - ], - }, - new SelectableAudioTrack - { - Name = "MoyaZhittya", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 34.53f, - Bars = 8, - LoopOffset = 32, - BeatsOffset = 0.0f, - FadeOutBeat = -35, - FadeOutDuration = 3.3f, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.5f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#A8C480", "#3ABBBE", "#6E9855", "#4c6846", "#748084", "#058099"]), - FlickerLightsTimeSeries = [-100.5f, -99.5f, -92.5f, -91.5f, -76.5f, -75.5f, -60.5f, -59.5f, -37f, -36f, -4.5f, -3.5f, 27.5f, 28.5f], - Lyrics = [ - (-84, "This ain't a song for the broken-hearted"), - (-68, "No silent prayer for the faith-departed"), - (-52, "I ain't gonna be"), - (-48, "I ain't gonna be\njust a face in the crowd"), - (-45, "YOU'RE"), - (-44, "you're GONNA"), - (-43.5f, "you're gonna HEAR"), - (-43, "you're gonna hear\nMY"), - (-42, "you're gonna hear\nmy VOICE"), - (-41, "WHEN I"), - (-40, "When I SHOUT IT"), - (-39, "When I shout it\nOUT LOUD"), - (-34, "IT'S MY"), - (-32, "IT'S MY\nLIIIIIFE"), - (-28, "And it's now or never"), - (-22, "I ain't gonna"), - (-20, "I ain't gonna\nlive forever"), - (-14, "I just want to live"), - (-10, "I just want to live\nwhile I'm alive"), - ( -2, "IT'S MY"), - ( 0, "IT'S MY\nLIIIIIFE"), - ( 2, "My heart is like"), - ( 4, "My heart is like\nan open highway"), - ( 10, "Like Frankie said,"), - ( 12, "Like Frankie said,\n\"I did it my way\""), - ( 18, "I just want to live"), - ( 22, "I just want to live\nwhile I'm alive"), - ( 30, "IT'S MY"), - ], - DrunknessLoopOffsetTimeSeries = new( - [-33f, -31f, 24f, -1f, 1f, 8f, 31f], - [ 0f, 0.7f, 0f, 0f, 0.7f, 0f, 0f]), - GameOverText = "[LIFE IS: NOW OR NEVER]", - }, - new SelectableAudioTrack - { - Name = "Gorgorod", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 43.2f, - Bars = 6, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.25f, - ColorTransitionEasing = Easing.InExpo, - Palette = Palette.Parse(["#42367E", "#FF9400", "#932A04", "#FF9400", "#932A04", "#42367E", "#FF9400", "#932A04"]), - LoopOffset = 0, - FadeOutBeat = -2, - FadeOutDuration = 2, - FlickerLightsTimeSeries = [20], - Lyrics = [], - }, - new SelectableAudioTrack - { - Name = "Durochka", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 37.0f, - Bars = 10, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.3f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#5986FE", "#FEFEDC", "#FF4FDF", "#FEFEDC", "#FFAA23", "#FEFEDC", "#F95A5A", "#FEFEDC"]), - LoopOffset = 0, - FadeOutBeat = -7, - FadeOutDuration = 7, - FlickerLightsTimeSeries = [-9], - Lyrics = [], - }, - new SelectableAudioTrack - { - Name = "ZmeiGorynich", - AudioType = AudioType.OGGVORBIS, - Language = Language.KOREAN, - WindUpTimer = 46.13f, - Bars = 8, - BeatsOffset = 0.1f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#4C8AC5", "#AF326A", "#0B1666", "#AFD2FC", "#C55297", "#540070"]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 4, - FlickerLightsTimeSeries = [-5, 31], - Lyrics = [], - GameOverText = "[MUZIKA: K-POP GROMCHE]", - }, - new SelectableAudioTrack - { - Name = "GodMode", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 40.38f, - Bars = 16, - BeatsOffset = 0.1f, - ColorTransitionIn = 0.5f, - ColorTransitionOut = 0.5f, - ColorTransitionEasing = Easing.OutCubic, - Palette = Palette.Parse(["#FBDBDB", "#4B81FF", "#564242", "#C90AE2", "#FBDBDB", "#61CBE3", "#564242", "#ED3131"]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 4, - FlickerLightsTimeSeries = [-5], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [-0.5f, 0.0f, 8f, 63.5f], - [ 0f, 0.7f, 0f, 0f]), - GameOverText = "[COULD'VE BEEN: IMMORTAL]", - }, - new SelectableAudioTrack - { - Name = "RiseAndShine", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 59.87f, - Bars = 16, - BeatsOffset = 0.1f, - ColorTransitionIn = 0.5f, - ColorTransitionOut = 0.5f, - ColorTransitionEasing = Easing.OutCubic, - Palette = Palette.Parse(["#FC6F3C", "#3CB0FC", "#FCD489", "#564242", "#FC6F3C", "#3CB0FC", "#63E98C", "#866868"]), - LoopOffset = 0, - FadeOutBeat = -4.5f, - FadeOutDuration = 4, - FlickerLightsTimeSeries = [-5.5f, 31, 63.9f], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [-0.5f, 0.0f, 8f, 63.5f], - [ 0f, 0.7f, 0f, 0f]), - GameOverText = "[ HEY, YOUNG BLOOD ]", - }, - new SelectableAudioTrack - { - Name = "Song2", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 38.63f, - Beats = 17 * 2, - BeatsOffset = 0.1f, - ColorTransitionIn = 0.3f, - ColorTransitionOut = 0.3f, - ColorTransitionEasing = Easing.InCubic, - Palette = Palette.Parse(["#FFD3E3", "#78A0FF", "#FFD3E3", "#74A392", "#FFD3E3", "#E4B082", "#FFD3E3", "#E277AA"]), - LoopOffset = 0, - FadeOutBeat = -2, - FadeOutDuration = 2, - FlickerLightsTimeSeries = [2.5f], - Lyrics = [], - }, - new SelectableAudioTrack - { - Name = "Peretasovka", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 39.68f, - Bars = 8, - BeatsOffset = 0.3f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#65C7FA", "#FCEB3C", "#89FC8F", "#FEE9E9", "#FC3C9D", "#FCEB3C", "#89FC8F", "#FC3C9D"]), - LoopOffset = 0, - FadeOutBeat = -6, - FadeOutDuration = 4, - FlickerLightsTimeSeries = [-8, 31], - Lyrics = [], - }, -#if DEBUG // No one knows it, and it's a bit out of place with a long 52 seconds intro - new SelectableAudioTrack - { - Name = "Yalgaar", - AudioType = AudioType.OGGVORBIS, - Language = Language.HINDI, - WindUpTimer = 52.17f, - Bars = 8, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.1f, - ColorTransitionOut = 0.35f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#C0402D", "#906F0B", "#DC8044", "#70190A", "#929FAF", "#4248A2", "#AE2727", "#2D2D42"]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 4, - FlickerLightsTimeSeries = [-5], - Lyrics = [], - }, -#endif - new SelectableAudioTrack - { - Name = "Chereshnya", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 45.48f, - Bars = 16, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.3f, - ColorTransitionOut = 0.35f, - ColorTransitionEasing = Easing.InOutCubic, - Palette = Palette.Parse([ - "#A01471", "#CB2243", "#4CAF50", "#F01D7A", "#AF005A", "#EF355F", "#FFD85D", "#FF66B2", - "#A01471", "#4CAF50", "#CB2243", "#F01D7A", "#AF005A", "#FFD85D", "#EF355F", "#FF66B2", - ]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 4, - FlickerLightsTimeSeries = [-5, 27, 29, 59, 61], - Lyrics = [], - }, - new SelectableAudioTrack - { - Name = "PWNED", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - IsExplicit = true, - WindUpTimer = 39.73f, - Bars = 32, - BeatsOffset = -0.2f, - ColorTransitionIn = 0.5f, - ColorTransitionOut = 0.3f, - ColorTransitionEasing = Easing.InExpo, - Palette = Palette.Parse(["#9E9E9E", "#383838", "#5E5E5E", "#2E2E2E", "#666666", "#4B4B4B", "#8E8E8E", "#1D1D1D"]).Use(gray8 => - { - var flag4 = Palette.Parse(["#FFFFFF", "#0032A0", "#DA291C", "#000000"]); - var gray6 = new Palette(gray8.Colors[0..6]); - var gray14 = gray8 + gray6; - var lyrics = flag4 + gray14.Stretch(2); - var instrumental = gray8.Stretch(4); - return lyrics * 2 + instrumental * 2; - }), - LoopOffset = 0, - FadeOutBeat = -8, - FadeOutDuration = 6, - FlickerLightsTimeSeries = [-136, -72, -12, 88], - Lyrics = [ - (-190, "These Russian hackers have been"), - (-184, "in these US governments\nsince March"), - (-172, "and it is an extraordinary invasion of our cyberspace"), - (-152, "Russian hackers got access to sensitive"), - (-142, "parts of the White House email system..."), - (-134, "[They began to recognize...]"), - (-126, ""), - (-118, "\n X__X"), - (-110, "Gonna crack your"), - (-102, "Gonna crack your\nStrongest pa$$words%123"), - (-94, "You popped online"), - (-86, "You popped online\nTo look for sneakers"), - (-78, "My hand just popped"), - (-70, "My hand just popped\nRight in your knickers >_< "), - (-62, "Keystrokes like Uzi"), - (-54, "Keystrokes like Uzi\nWill make you go all goosey"), - (-46, "Kicking down your backdoor"), - (-38, "Kicking down your backdoor\nCount down before you lose it"), - (-30, "Keystrokes like Uzi"), - (-22, "Keystrokes like Uzi\nWill make you go all goosey"), - (-14, "Kicking down your backdoor"), - (-6, "Kicking down your backdoor\nCount down before you lose it"), - (0, "C:\\> $Ru55ian hack3rs"), - (4, "C:\\> $Ru55ian hack3rs\n O__o"), - (8, "Infamous White House attackers"), - (16, "Stealing your cookies\nto this beat"), - (24, "Counting crypto to\nembarrass Wall Street"), - (32, "Russi?n ^hackers\tЯushan h@ckers###"), - (34, "\tЯushan h@ckers###\n X_X"), - (36, "Russi?n ^hackers\n--.--\tЯushan h@ckers###\n X___X"), - (38, "\tЯushan h@ckers###\n X_____X"), - (40, "Infamous White House attackers"), - (48, "Stealing your cookies\nto this beat"), - (56, "Counting crypto to\nembarrass Wall Street"), - (80, $"Instling min3r.exe\t\t\tresolving ur private IP\n/"), - (82, $"Instling min3r.exe\n00% [8=D ]\tHenllo ${{username = \"{Environment.UserName}\"}}\t\tresolving ur private IP\n-{PwnLyricsVariants[^3]}"), - (84, $"Instling min3r.exe\n34% [8====D ]\t\t\tresolving ur private IP\n\\{PwnLyricsVariants[^3]}"), - (86, $"Instling min3r.exe\n69% [8=========D ]\t\t\tresolving ur private IP\n|{PwnLyricsVariants[^2]}"), - (88, $"Instling min3r.exe\n95% [8============D ]\t\tWhere did you download\nthis < mod / dll > from?\tresolving ur private IP\n{PwnLyricsVariants[^2]}/"), - (90, $"Instling min3r.exe\n99% [8=============D]\t\t\tresolving ur private IP\n-{PwnLyricsVariants[^2]}"), - (92, $"Encrpt1ng f!les.. \n99% [8=============D]\t\t\tresolving ur private IP\n\\{PwnLyricsVariants[^1]}"), - (94, $"Encrpt1ng f!les...\n100% enj0y \\o/\t\t\tresolving ur private IP\n|{PwnLyricsVariants[^1]}"), - (96, $"\t\t\tresolving ur private IP\n/{PwnLyricsVariants[^1]}"), - (98, $"\t\t\tresolving ur private IP\nP_WNED"), - ], - DrunknessLoopOffsetTimeSeries = new( - [-128f, -127f, -116f, 68f, 72f, 88f, 98f], - [ 0f, 0.7f, 0f, 0f, 0.3f, 0.5f, 0f]), - GameOverText = "[HACK3D BY: RUSSI4NS]", - }, - new SelectableAudioTrack - { - Name = "Kach", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 47.30f, - Bars = 12, - // let them overlap, such that there is an actual hard cut to the next color - BeatsOffset = 0.4f, - ColorTransitionIn = 0.8f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - // pump it loudeeeeeeeeeer - "#7774DE", "#1EA59A", "#3BC457", "#3BC457", - "#CA6935", "#A82615", "#A7AA43", "#A7AA43", - "#4C2B81", "#2E802B", "#C952E7", "#C952E7", - ]), - LoopOffset = 0, - FadeOutBeat = -6, - FadeOutDuration = 6, - FlickerLightsTimeSeries = [-120.5f, -105, -89, -8, 44, 45], - Lyrics = [], - GameOverText = "[DIDN'T PUMP IT: LOUDER]", - }, - new SelectableTracksGroup - { - Name = "BeefLiver", - Language = Language.ENGLISH, - Tracks = - [ - new CoreAudioTrack - { - Name = "BeefLiver1", - FileNameLoop = "BeefLiverLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 39.35f, - Bars = 12, - BeatsOffset = 0.2f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#FFEBEB", "#FFEBEB", "#445782", "#EBA602", - "#5EEBB9", "#8EE3DC", "#A23045", "#262222", - ]), - LoopOffset = 0, - FadeOutBeat = -3, - FadeOutDuration = 3, - FlickerLightsTimeSeries = [-48, -40, -4.5f, 44], - DrunknessLoopOffsetTimeSeries = DrunknessLoopOffsetTimeSeriesBeefLiver, - Lyrics = [ - (-66, "First things first"), - (-62, "First things first,\nI'ma say all the words\ninside my head"), - (-57, "I'm fired up and tired of"), - (-52, "the way that things have been,\noh-ooh"), - (-44, "(x2)\nThe way that things have been,\noh-ooooh"), - - (-34, "I was broken from a young age, taking my sulkin' to the masses"), - (-27, "Writing my poems for the few"), - (-23, "that look at me, took to me,\nshook at me, feelin' me"), - (-19, "Singing from heartache from the pain"), - (-15, "Singing from heartache from the pain,\ntaking my message from the veins"), - (-11, "Speaking my lesson from the brain"), - (-8, "Speaking my lesson from the brain,\nseeing the beauty through the"), - (-0.1f, "PAIN!"), - ], - }, - new CoreAudioTrack - { - Name = "BeefLiver3", - FileNameLoop = "BeefLiverLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 39.35f, - Bars = 12, - BeatsOffset = 0.2f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#FFEBEB", "#FFEBEB", "#445782", "#EBA602", - "#5EEBB9", "#8EE3DC", "#A23045", "#262222", - ]), - LoopOffset = 0, - FadeOutBeat = -3, - FadeOutDuration = 3, - FlickerLightsTimeSeries = [-48, -40, -4.5f, 44], - DrunknessLoopOffsetTimeSeries = DrunknessLoopOffsetTimeSeriesBeefLiver, - Lyrics = [ - (-66, "Third things third"), - (-62, "Third things third,\nsend a prayer to the ones up above"), - (-57, "All the hate that you've heard has turned"), - (-52, "your spirit to a dove,\noh-ooh"), - (-44, "(x2)\nYour spirit up above,\noh-ooooh"), - - (-34, "I was chokin' in the crowd, building my rain up in the cloud"), - (-27, "Falling like ashes to the ground"), - (-23, "hoping my feelings, they would drown"), - - (-19, "But they never did, ever lived, ebbin' and flowin'"), - (-15, "Inhibited, limited 'til it broke open"), - (-11, "Inhibited, limited 'til it broke open and rained down"), - (-8, "It rained down like"), - (-0.1f, "PAIN!"), - ], - }, - new CoreAudioTrack - { - Name = "BeefLiver4", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 31.68f, - Bars = 12, - BeatsOffset = 0.2f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#FFEBEB", "#FFEBEB", "#445782", "#EBA602", - "#5EEBB9", "#8EE3DC", "#A23045", "#262222", - ]), - LoopOffset = 0, - FadeOutBeat = -3, - FadeOutDuration = 3, - FlickerLightsTimeSeries = [-32, -24, -4.5f, 44], - DrunknessLoopOffsetTimeSeries = DrunknessLoopOffsetTimeSeriesBeefLiver, - Lyrics = [ - (-66+16, "Last things last"), - (-62+16, "Last things last,\nby the grace\nof the fire and the flames"), - (-57+16, "You're the face of the future"), - (-52+16, "the blood in my veins, oh-ooh"), - (-44+16, "(x2)\nThe blood in my veins, oh-ooooh"), - - (-19, "But they never did, ever lived, ebbin' and flowin'"), - (-15, "Inhibited, limited 'til it broke open"), - (-11, "Inhibited, limited 'til it broke open and rained down"), - (-8, "It rained down like"), - (-0.1f, "PAIN!"), - ], - }, - ], - }, - new SelectableTracksGroup - { - Name = "Beha", - Language = Language.RUSSIAN, - IsExplicit = true, - Tracks = - [ - new CoreAudioTrack - { - Name = "Beha1", - FileNameLoop = "BehaLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 35.23f, - Beats = 8 * 4 + 2, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.1f, - ColorTransitionOut = 0.6f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#9554F9", "#3769FD", "#E43B65", "#59CFEA", "#7F3FEE", "#C831FE", - ]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 3.9f, - FlickerLightsTimeSeries = [-6, 16.5f], - Lyrics = [], - }, - new CoreAudioTrack - { - Name = "Beha2", - FileNameLoop = "BehaLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 38.16f, - Beats = 8 * 4 + 2, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.1f, - ColorTransitionOut = 0.6f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#9554F9", "#3769FD", "#E43B65", "#59CFEA", "#7F3FEE", "#C831FE", - ]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 3.9f, - FlickerLightsTimeSeries = [-6, 16.5f], - Lyrics = [], - }, - new CoreAudioTrack - { - Name = "Beha3", - FileNameLoop = "BehaLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 35.21f, - Beats = 8 * 4 + 2, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.1f, - ColorTransitionOut = 0.6f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#9554F9", "#3769FD", "#E43B65", "#59CFEA", "#7F3FEE", "#C831FE", - ]), - LoopOffset = 0, - FadeOutBeat = -4, - FadeOutDuration = 3.9f, - FlickerLightsTimeSeries = [-6, 16.5f], - Lyrics = [], - }, - ], - }, - new SelectableAudioTrack - { - Name = "OnePartiyaUdar", - AudioType = AudioType.OGGVORBIS, - Language = Language.JAPANESE, - WindUpTimer = 41.27f, - Bars = 12, - BeatsOffset = 0.3f, - ColorTransitionIn = 0.6f, - ColorTransitionOut = 0.15f, - ColorTransitionEasing = Easing.InOutExpo, - Palette = Palette.Parse([ - "#9C3C37", "#E9BF5C", "#B5E3EA", "#662422", "#EBC3A8", "#AA8238", - ]), - LoopOffset = 0, - FadeOutBeat = -8, - FadeOutDuration = 6, - FlickerLightsTimeSeries = [-68.5f, -16.5f, 30.5f], - Lyrics = [], - }, - new SelectableTracksGroup - { - Name = "AttentionPls", - Language = Language.RUSSIAN, - IsExplicit = true, - Tracks = - [ - new CoreAudioTrack - { - Name = "AttentionPls1", - FileNameLoop = "AttentionPlsLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 39.19f, - Bars = 8, - BeatsOffset = 0.3f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#FCEB3C", "#FC3C9D", "#65C7FA", "#89FC8F", "#FEE9E9", "#FCEB3C", "#89FC8F", "#FC3C9D"]), - LoopOffset = 0, - FadeOutBeat = -6, - FadeOutDuration = 5, - FlickerLightsTimeSeries = [-8, 31], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new([7f, 12f, 15f], [0f, 0.90f, 0f]), - CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f], [0f, 0.4f, 0f]), - }, - new CoreAudioTrack - { - Name = "AttentionPls2", - FileNameLoop = "AttentionPlsLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 39.19f, - Bars = 8, - BeatsOffset = 0.3f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse(["#FCEB3C", "#FC3C9D", "#65C7FA", "#89FC8F", "#FEE9E9", "#FCEB3C", "#89FC8F", "#FC3C9D"]), - LoopOffset = 0, - FadeOutBeat = -6, - FadeOutDuration = 5, - FlickerLightsTimeSeries = [-8, 31], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new([7f, 12f, 15f], [0f, 0.90f, 0f]), - CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f], [0f, 0.4f, 0f]), - }, - ], - }, - new SelectableAudioTrack - { - Name = "BbIXODaHET", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - WindUpTimer = 40.85f, - Bars = 8, - BeatsOffset = 0.3f, - ColorTransitionIn = 0.7f, - ColorTransitionOut = 0.3f, - ColorTransitionEasing = Easing.InOutCubic, - Palette = Palette.Parse([ - "#E6D58F", "#612F7E", "#D9783F", "#C3411C", "#D3B742", "#549BDE", - ]), - LoopOffset = 0, - FadeOutBeat = -6, - FadeOutDuration = 6, - FlickerLightsTimeSeries = [-32.5f, -16.5f, 30.5f], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [-1, 2, 7, 31], - [0, 0.4f, 0, 0]), - }, - new SelectableAudioTrack - { - Name = "Whistle", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 41.27f, - Bars = 12, - BeatsOffset = 0.0f, - ColorTransitionIn = 0.5f, - ColorTransitionOut = 0.2f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#8DDEDD", "#98DE28", "#E8DB4B", "#F060A8", "#EEC263", "#725DEB", - ]), - LoopOffset = 16, - FadeOutBeat = -22, - FadeOutDuration = 6, - FlickerLightsTimeSeries = [-20, 12], - Lyrics = [ - (-40, "Can you blow my whistle, baby, whistle, baby?"), - (-36, "Can you blow my whistle, baby, whistle, baby? Let me know"), - (-33.5f, "Girl, I'm gonna show you how to\ndo it"), - (-30.5f, "Girl, I'm gonna show you how to\ndo it and we start real slow"), - (-27, "You just put your lips together"), - (-24, "You just put your lips together and you come real close"), - (-21, "Can you blow my whistle, baby, whistle, baby?"), - - (-17, "HERE WE GO"), - - (10, "Yeah, baby, make that whistle"), - (12, "Yeah, baby, make that whistle\nblow oh oh oh"), - - (15, "Can you blow my whistle, baby, whistle, baby?"), - (20, "Can you blow my whistle, baby, whistle, baby? Let me know"), - (23, "Girl, I'm gonna show you how to\ndo it"), - (28, "Girl, I'm gonna show you how to\ndo it and we start real slow"), - (32, "You just put your lips together"), - (36, "You just put your lips together and you come real close"), - (39, "Can you blow my whistle, baby, whistle, baby?"), - - (46, "HERE"), - (47, "Here WE"), - (48, "Here we GO"), - ], - DrunknessLoopOffsetTimeSeries = new( - [-16f, -15.25f, -12f, 9f, 15f, 16f, 18f, 21f], - [0f, 0.7f, 0f, 0f, 0.4f, 0.7f, 0.4f, 0f]), - }, - new SelectableAudioTrack - { - Name = "ReelGoon", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 45.15f, - Bars = 16, - BeatsOffset = -0.35f, - ColorTransitionIn = 0.1f, - ColorTransitionOut = 0.35f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#DE1C31", "#F7E26B", "#3D3D3D", "#FBB040", - "#ED4E4A", "#F0BD37", "#E41E2E", "#2E2D2B", - ]), - LoopOffset = 0, - FadeOutBeat = -2, - FadeOutDuration = 2, - FlickerLightsTimeSeries = [-41, 61], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [-0.5f, -0.05f, 6f, 60f, 61f], - [0f, 0.5f, 0f, 0f, 0.5f]), - GameOverText = "[LIFE SUPPORT: REAL GONE]", - }, - new SelectableAudioTrack - { - Name = "HighLow", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 37.12f, - Bars = 12, - BeatsOffset = 0f, - ColorTransitionIn = 0.75f, - ColorTransitionOut = 0.25f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#2e2e28", "#dfa24d", "#2e2e28", "#dfa24d", - "#2e2e28", "#dfa24d", "#2e2e28", "#dfa24d", - ]), - LoopOffset = 0, - FadeOutBeat = -1.5f, - FadeOutDuration = 1.5f, - FlickerLightsTimeSeries = [-33, 39], - Lyrics = [ - ], - DrunknessLoopOffsetTimeSeries = new( - [-2f, -1f, 6f], - [ 0f, 0.5f, 0f]), - CondensationLoopOffsetTimeSeries = new( - [-2f, -1f, 6f], - [ 0f, 0.5f, 0f]), - GameOverText = "[LIFE SUPORT: NIRVANA]", - }, - new SelectableAudioTrack - { - Name = "IkWilJe", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - Season = Season.NewYear, - WindUpTimer = 43.03f, - Beats = 13 * 4 + 2, // = 54 - BeatsOffset = 0f, - ColorTransitionIn = 0.01f, - ColorTransitionOut = 0.99f, - ColorTransitionEasing = Easing.OutExpo, - Palette = Palette.Parse([ - "#0B6623", "#FF2D2D", "#FFD700", - "#00BFFF", "#9400D3", "#00FF7F", - ]), - LoopOffset = 0, - FadeOutBeat = -14f, - FadeOutDuration = 12f, - FlickerLightsTimeSeries = [31.45f], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [0f, 0.25f, 6f], - [0f, 0.5f, 0f]), - GameOverText = "[NEXT YEAR -- DEFINITELY]", - }, - new SelectableAudioTrack - { - Name = "Paarden", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - Season = Season.NewYear, - WindUpTimer = 36.12f, - Bars = 8, - BeatsOffset = 0f, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.4f, - ColorTransitionEasing = Easing.OutCubic, - Palette = Palette.Parse([ - "#F0FBFF", "#9ED9FF", "#0B95FF", - "#66C7FF", "#CAE8FF", "#3BB6FF", - ]), - LoopOffset = 0, - FadeOutBeat = -4f, - FadeOutDuration = 4f, - FlickerLightsTimeSeries = [31.5f], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [0f, 0.25f, 6f], - [0f, 0.5f, 0f]), - GameOverText = "[NEXT YEAR -- DEFINITELY]", - }, - new SelectableAudioTrack - { - Name = "DiscoKapot", - AudioType = AudioType.OGGVORBIS, - Language = Language.RUSSIAN, - Season = Season.NewYear, - WindUpTimer = 30.3f, - Bars = 8, - BeatsOffset = 0f, - ColorTransitionIn = 0.25f, - ColorTransitionOut = 0.6f, - ColorTransitionEasing = Easing.InOutExpo, - Palette = Palette.Parse([ - "#0B6623", "#FF2D2D", "#FFD700", - "#00BFFF", "#9400D3", "#00FF7F", - ]), - LoopOffset = 0, - FadeOutBeat = -4f, - FadeOutDuration = 4f, - FlickerLightsTimeSeries = [-32, -24, -16, 16, 32], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new( - [0f, 0.25f, 6f], - [0f, 0.5f, 0f]), - GameOverText = "[NEXT YEAR -- DEFINITELY]", - }, - new SelectableTracksGroup - { - Name = "PickUpSticks", - Language = Language.ENGLISH, - Tracks = - [ - new CoreAudioTrack - { - Name = "PickUpSticks1", - FileNameLoop = "PickUpSticksLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 38.5f, - Bars = 16, - BeatsOffset = 0.2f, - ColorTransitionIn = 0.6f, - ColorTransitionOut = 0.3f, - ColorTransitionEasing = Easing.InOutCubic, - Palette = PalettePickUpSticks, - LoopOffset = 0, - FadeOutBeat = -2, - FadeOutDuration = 2, - FlickerLightsTimeSeries = [-36, -4, 32], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new([0f, 0.5f, 3f, 32f, 34f, 40f], [0f, 0.5f, 0f, 0f, 0.3f, 0f]), - CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f, 34f, 38f, 52f], [0f, 0.6f, 0f, 0f, 0.7f, 0f]), - GameOverText = "[LOVE SUPPORT: OFFLINE]", - }, - new CoreAudioTrack - { - Name = "PickUpSticks2", - FileNameLoop = "PickUpSticksLoop.ogg", - AudioType = AudioType.OGGVORBIS, - WindUpTimer = 38.47f, - Bars = 16, - BeatsOffset = 0.2f, - ColorTransitionIn = 0.6f, - ColorTransitionOut = 0.3f, - ColorTransitionEasing = Easing.InOutCubic, - Palette = PalettePickUpSticks, - LoopOffset = 0, - FadeOutBeat = -2, - FadeOutDuration = 2, - FlickerLightsTimeSeries = [-36, -4, 32], - Lyrics = [], - DrunknessLoopOffsetTimeSeries = new([0f, 0.5f, 3f, 32f, 34f, 40f], [0f, 0.5f, 0f, 0f, 0.3f, 0f]), - CondensationLoopOffsetTimeSeries = new([23f, 28f, 31f, 34f, 38f, 52f], [0f, 0.5f, 0f, 0f, 0.5f, 0f]), - GameOverText = "[LOVE SUPPORT: OFFLINE]", - }, - ], - }, - new SelectableAudioTrack - { - Name = "TwoFastTuFurious", - AudioType = AudioType.OGGVORBIS, - Language = Language.ENGLISH, - WindUpTimer = 36.08f, - Bars = 24, // 24 * 4 = 96 beats - BeatsOffset = 0f, - ColorTransitionIn = 0.4f, - ColorTransitionOut = 0.6f, - ColorTransitionEasing = Easing.InOutCubic, - Palette = Palette.Parse([ - "#F0FBFF", "#9ED9FF", "#0B95FF", - "#66C7FF", "#CAE8FF", "#3BB6FF", - ]), - // Allow chorus lyrics to be displayed only the first time, so they don't get too repetitive - LoopOffset = 48, - FadeOutBeat = -6f - 48f, - FadeOutDuration = 6f, - FlickerLightsTimeSeries = [-80, -14, 34, 82], - Lyrics = [ - (-126, "Starting from here,\nlet's make a promise"), - (-110, "You and me, let's just be honest"), - (-100, "We're gonna run,\nnothing can stop us"), - (-89, "Even the night,\nthat falls all around us"), - (-80, "Soon there will be\nlaughter and voices"), - (-70, "Beyond the clouds,\nover the mountains"), - (-62, "We'll run away,\non roads that are empty"), - (-55, "Lights from the airfield,\nshining upon you"), - (-48, "Nothing can stop this"), - (-44, "Nothing can stop this,\nnot now, I love you"), - (-40, "They're not gonna get us"), - (-36, "They're not gonna get us\nTHEY'RE NOT GONNA GET US"), - ], - DrunknessLoopOffsetTimeSeries = new( - [-48f, -47.75f, -42f, 0f, 0.25f, 6f, 48f, 48.25f, 54f], - [0f, 0.5f, 0f, 0f, 0.5f, 0f, 0f, 0.5f, 0f]), - CondensationLoopOffsetTimeSeries = new( - [-24f, -23.75f, -18f, 24f, 24.25f, 30f, 72f, 72.25f, 78f], - [0f, 0.5f, 0f, 0f, 0.5f, 0f, 0f, 0.5f, 0f]), - // GameOverText"[ LOVE GONNA GET US ]", - GameOverText = "[ O NOES, THEY GOT US ]", - }, - ]; + public static ISelectableTrack[] Tracks => Library.Tracks; private static int GetCurrentSeed() {