1
0
Fork 0

Compare commits

...

5 Commits

Author SHA1 Message Date
ivan tkachenko f790decc4d Release v1337.9001.1 2025-11-01 23:37:35 +02:00
ivan tkachenko 5a8f0201a3 Tweak color visual effects and lyrics for MoyaZhittya and other tracks 2025-11-01 23:37:34 +02:00
ivan tkachenko 825355dd54 Raise the default audio volume, add a configuration slider 2025-11-01 23:37:34 +02:00
ivan tkachenko c62535841a Shuffle README content, add link to mod's Discord thread 2025-11-01 18:20:41 +02:00
ivan tkachenko b0d96ff67e Bump version 2025-11-01 18:20:41 +02:00
5 changed files with 113 additions and 36 deletions

View File

@ -1,5 +1,10 @@
# Changelog
## MuzikaGromche 1337.9001.1 - v73 Music louder Edition
- Raised the default audio volume, and added a configuration slider.
- Tweaked color palette, lyrics and visual effects for MoyaZhittya and some other tracks.
## MuzikaGromche 1337.9001.0 - v73 Music quieter Edition
- Updated netcode-patch to support Lethal Company v73.

View File

@ -8,7 +8,7 @@
<AssemblyName>Ratijas.MuzikaGromche</AssemblyName>
<Product>Muzika Gromche</Product>
<Description>Add some content to your inverse teleporter experience on Titan!</Description>
<Version>1337.9001.0</Version>
<Version>1337.9001.1</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>

View File

@ -42,6 +42,10 @@ namespace MuzikaGromche
.Select(a => $" Trying... {a}")
];
private static readonly TimeSeries<float> 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]);
public static readonly ISelectableTrack[] Tracks = [
new SelectableAudioTrack
{
@ -179,9 +183,9 @@ namespace MuzikaGromche
FadeOutBeat = -35,
FadeOutDuration = 3.3f,
ColorTransitionIn = 0.25f,
ColorTransitionOut = 0.25f,
ColorTransitionOut = 0.5f,
ColorTransitionEasing = Easing.OutExpo,
Palette = Palette.Parse(["#A3A3A3", "#BE3D39", "#5CBC69", "#BE3D39", "#BABC5C", "#BE3D39", "#5C96BC", "#BE3D39"]),
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"),
@ -213,6 +217,10 @@ namespace MuzikaGromche
( 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
{
@ -267,7 +275,7 @@ namespace MuzikaGromche
FadeOutDuration = 4,
FlickerLightsTimeSeries = [-5, 31],
Lyrics = [],
GameOverText = "[MUZIKA GROMCHE: K-POP]",
GameOverText = "[MUZIKA: K-POP GROMCHE]",
},
new SelectableAudioTrack
{
@ -286,6 +294,9 @@ namespace MuzikaGromche
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
@ -305,6 +316,9 @@ namespace MuzikaGromche
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
@ -453,6 +467,9 @@ namespace MuzikaGromche
(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
@ -505,7 +522,23 @@ namespace MuzikaGromche
FadeOutBeat = -3,
FadeOutDuration = 3,
FlickerLightsTimeSeries = [-48, -40, -4.5f, 44],
Lyrics = [],
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
{
@ -526,7 +559,24 @@ namespace MuzikaGromche
FadeOutBeat = -3,
FadeOutDuration = 3,
FlickerLightsTimeSeries = [-48, -40, -4.5f, 44],
Lyrics = [],
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
{
@ -546,7 +596,20 @@ namespace MuzikaGromche
FadeOutBeat = -3,
FadeOutDuration = 3,
FlickerLightsTimeSeries = [-32, -24, -4.5f, 44],
Lyrics = [],
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!"),
],
},
],
},
@ -782,6 +845,7 @@ namespace MuzikaGromche
DrunknessLoopOffsetTimeSeries = new(
[-0.5f, -0.05f, 6f, 60f, 61f],
[0f, 0.5f, 0f, 0f, 0.5f]),
GameOverText = "[LIFE SUPPORT: REAL GONE]",
},
];
@ -2177,10 +2241,13 @@ namespace MuzikaGromche
public static bool ExtrapolateTime { get; private set; } = true;
public static bool ShouldSkipWindingPhase { get; private set; } = false;
// Audio files are normalized to target -14 LUFS, which is too loud to communicate. Reduce by another -12 dB down to about -26 LUFS.
public static float DefaultVolume = 0.25f;
#if DEBUG
// Audio files are normalized to target -14 LUFS, which is too loud to communicate. Reduce by another -9 dB down to about -23 LUFS.
private const float VolumeDefault = 0.35f;
private const float VolumeMin = 0.2f;
private const float VolumeMax = 0.5f;
// Ranges from quiet 0.20 (-14 dB) to loud 0.5 (-6 dB)
public static ConfigEntry<float> Volume { get; private set; } = null!;
#if DEBUG
// Latest set track, used for loading palette and timings.
private static IAudioTrack? CurrentTrack = null;
// All per-track values that can be overridden
@ -2231,6 +2298,10 @@ namespace MuzikaGromche
new ConfigDescription("Display lyrics in the HUD tooltip when you hear the music."));
LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(DisplayLyrics, requiresRestart: false));
Volume = configFile.Bind("General", "Volume", VolumeDefault,
new ConfigDescription("Volume of music played by this mod.", new AcceptableValueRange<float>(VolumeMin, VolumeMax)));
LethalConfigManager.AddConfigItem(new FloatSliderConfigItem(Volume, requiresRestart: false));
AudioOffset = configFile.Bind("General", "Audio Offset", 0f, new ConfigDescription(
"Adjust audio offset (in seconds).\n\nIf you are playing with Bluetooth headphones and experiencing a visual desync, try setting this to about negative 0.2.\n\nIf your video output has high latency (like a long HDMI cable etc.), try positive values instead.",
new AcceptableValueRange<float>(-0.5f, 0.5f)));
@ -2249,7 +2320,6 @@ namespace MuzikaGromche
SetupEntriesForScreenFilters(configFile);
SetupEntriesForExtrapolation(configFile);
SetupEntriesToSkipWinding(configFile);
SetupEntriesForVolume(configFile);
SetupEntriesForPaletteOverride(configFile);
SetupEntriesForTimingsOverride(configFile);
#endif
@ -2333,13 +2403,6 @@ namespace MuzikaGromche
}
}
private void SetupEntriesForVolume(ConfigFile configFile)
{
Volume = configFile.Bind("General", "Volume", DefaultVolume,
new ConfigDescription("Volume of the music played by this mod.", new AcceptableValueRange<float>(0f, 1f)));
LethalConfigManager.AddConfigItem(new FloatSliderConfigItem(Volume, requiresRestart: false));
}
private void SetupEntriesForPaletteOverride(ConfigFile configFile)
{
const string section = "Palette";
@ -2714,25 +2777,33 @@ namespace MuzikaGromche
IntroAudioSource.maxDistance = Plugin.AudioMaxDistance;
IntroAudioSource.dopplerLevel = 0;
IntroAudioSource.loop = false;
IntroAudioSource.volume = Config.DefaultVolume;
IntroAudioSource.volume = Config.Volume.Value;
LoopAudioSource = loopAudioGameObject.GetComponent<AudioSource>();
LoopAudioSource.maxDistance = Plugin.AudioMaxDistance;
LoopAudioSource.dopplerLevel = 0;
LoopAudioSource.loop = true;
LoopAudioSource.volume = Config.DefaultVolume;
LoopAudioSource.volume = Config.Volume.Value;
Config.Volume.SettingChanged += UpdateVolume;
Debug.Log($"{nameof(MuzikaGromche)} {nameof(MuzikaGromcheJesterNetworkBehaviour)} Patched JesterEnemy");
}
}
#if DEBUG
void Update()
public override void OnDestroy()
{
IntroAudioSource.volume = Config.Volume.Value;
LoopAudioSource.volume = Config.Volume.Value;
Config.Volume.SettingChanged -= UpdateVolume;
}
private void UpdateVolume(object sender, EventArgs e)
{
if (IntroAudioSource != null && LoopAudioSource != null)
{
IntroAudioSource.volume = Config.Volume.Value;
LoopAudioSource.volume = Config.Volume.Value;
}
}
#endif
public override void OnNetworkSpawn()
{

View File

@ -2,10 +2,9 @@
_Add some content to your Inverse teleporter experience on Titan!<sup>1</sup>_
Muzika Gromche literally means "crank music louder".
This mod replaces Jester's winding up and chasing sounds with a whole library of timed to the beat and seamlessly looped popular energetic songs, combined with various visual effects.
Muzika Gromche literally means _"crank music louder"_. This mod replaces Jester's winding up and chasing sounds with **a whole library** of timed to the beat and **seamlessly looped** popular energetic songs, combined with various **visual effects**. Song choice is random each day but **synchronized** with clients: everyone in the lobby will wibe to the same tunes.
If a picture is worth a thousand words, a demo video is priceless. Check out what Muzika Gromche does:
A demo video is worth a thousand words. Check out what Muzika Gromche does:
[![Thumbnail for MuzikaGromche demo](https://ratijas.me/share/public/LC/MuzikaGromche/video/demo/thumb-360.jpg)](https://ratijas.me/share/public/LC/MuzikaGromche/video/demo/MuzikaGromche-demo.mp4)
@ -24,23 +23,23 @@ Muzika Gromche v1337.9001.0 has been updated to work with Lethal Company v73. Pr
## Playlist
Music track names are codenamed, and by default have equal chance of being selected. In the Lethal Config menu tracks are grouped by language, where the whole group can be quickly toggled ON or OFF at once. For example, you might want to toggle Russian or Hindi tracks OFF if you don't speak those languages.
English playlist features artists such as **Imagine Dragons, Fall Out Boy, Bon Jovi, Black Eyed Peas, LMFAO** (Party Rock Anthem / Every day I'm shufflin'), **CYBEЯIA** / "Cyberia" (Russian Hackers), and of course **Whistle** by Joel Merry / Flo Rida.
English playlist features artists such as Imagine Dragons, Fall Out Boy, Bon Jovi, Black Eyed Peas, LMFAO (Party Rock Anthem / Every day I'm shufflin'), CYBEЯIA / "Cyberia" (Russian Hackers), and of course Whistle by Joel Merry / Flo Rida.
Russian playlist includes **Би-2, Витас, ГлюкoZa** (Глюкоза) & **Ленинград, Дискотека Авария, Noize MC, Oxxxymiron, Сплин, Пошлая Молли.**
Russian playlist includes Би-2, Витас, ГлюкoZa (Глюкоза) & Ленинград, Дискотека Авария, Noize MC, Oxxxymiron, Сплин, Пошлая Молли.
There are also a K-pop track by aespa, an anime opening from One Punch Man, and an Indian banger by CarryMinati & Wily Frenzy.
There are also a K-pop track by **aespa**, an anime opening from **One Punch Man,** and an Indian banger by **CarryMinati & Wily Frenzy.**
## Configuration
Configuration integrates with [`LethalConfig`] mod.
If you are just trying out this mod for the first time, or want to experience it more often, consider leaving the "Override Spawn Rates" config entry ON. Otherwise it might take a frustratingly long time to find out what you need to find out.
Consider leaving the **Override Spawn Rates** config entry ON: it makes Jester progressively more likely to spawn afternoon.
Music track names are codenamed, and by default have equal chance of being selected. In the Lethal Config menu tracks are **grouped by language**, where the whole **group can be quickly toggled** ON or OFF at once. For example, you might want to toggle Russian or Hindi tracks OFF if you don't speak those languages.
Track selection options are only configurable by the host player.
Any player can change their personal preferences locally.
Any player can change the following personal preferences locally.
- Audio Offset: If you are playing with a Bluetooth headset, adjust Audio Offset to -0.2 seconds.
- Display Lyrics toggle: Shows lyrics in a popup whenever player hears music.
@ -51,6 +50,8 @@ Any player can change their personal preferences locally.
- [Just Nothing](https://t.me/REALJUSTNOTHING): Visual artist; contributed palettes, timings and animation curves.
- [WaterGun](https://www.youtube.com/channel/UCCxCFfmrnqkFZ8i9FsXBJVA): Created [`V70PoweredLights_Fix`] mod, patched certain tiles with amazing lightshow.
See also [mod's release thread](https://discord.com/channels/1168655651455639582/1433881654866477318) at [Lethal Company Modding](https://discord.gg/XeyYqRdRGC) Discord server (in case the invite link expires, there should be a fresh one at [lethal.wiki](https://lethal.wiki/)).
---
1. Actually not limited to Inverse teleporter or Titan.

View File

@ -1,6 +1,6 @@
{
"name": "MuzikaGromche",
"version_number": "1337.9001.0",
"version_number": "1337.9001.1",
"author": "Ratijas",
"description": "Add some content to your inverse teleporter experience on Titan!",
"website_url": "https://git.vilunov.me/ratijas/muzika-gromche",