forked from nikita/muzika-gromche
Compare commits
16 Commits
835d69d2d0
...
cbf1c14e01
| Author | SHA1 | Date |
|---|---|---|
|
|
cbf1c14e01 | |
|
|
5258b806d4 | |
|
|
4cc187b525 | |
|
|
ecee2a25e2 | |
|
|
af38056d11 | |
|
|
567597e353 | |
|
|
ee2b1574d0 | |
|
|
02903ba537 | |
|
|
b0d5922c3c | |
|
|
4e9ba0928f | |
|
|
6a5cc637ac | |
|
|
a2cf66476c | |
|
|
a254188f0c | |
|
|
3041d9f73c | |
|
|
908ddeb862 | |
|
|
3835e84450 |
|
|
@ -6,3 +6,10 @@ csharp_style_prefer_primary_constructors = false
|
|||
|
||||
# IDE0305: Simplify collection initialization
|
||||
dotnet_style_prefer_collection_expression = never
|
||||
|
||||
# IDE0031: Use null propagation
|
||||
# Unity overrides equality operator, so gameObject == null also accounts for internal state of the backing C++ object
|
||||
# Read more:
|
||||
# - https://blog.lslabs.dev/posts/null_check_equality_unity
|
||||
# - https://blog.lslabs.dev/posts/unity_script_duality
|
||||
dotnet_style_null_propagation = false
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -1,5 +1,13 @@
|
|||
# Changelog
|
||||
|
||||
## MuzikaGromche 1337.9001.68 - LocalHost hotfix
|
||||
|
||||
- Fixed occasionally broken playback of v1337.9001.67, sorry about that.
|
||||
- Turns out, client-side vanilla-compat mode can never be perfectly timed, so don't expect much without a modded host.
|
||||
- Removed an existing track Yalgaar.
|
||||
- Merged two config options into one: Reduce Visual Effects & Display Lyrics.
|
||||
- Added a new track Arcane.
|
||||
|
||||
## MuzikaGromche 1337.9001.67 - LocalHost Edition
|
||||
|
||||
- Added a new track TwoFastTuFurious (from the same artist as PickUpSticks), thematic to the upcoming Valentine's Day.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
using BepInEx.Logging;
|
||||
|
||||
namespace MuzikaGromche;
|
||||
|
||||
#if DEBUG
|
||||
|
||||
// A logger with an API similar to ManualLogSource.
|
||||
// This logger caches last posted messagee and uses it to deduplicate subsequent messages.
|
||||
// Use Clear() to forget deduplicated message.
|
||||
internal class DedupManualLogSource
|
||||
{
|
||||
public ManualLogSource Source;
|
||||
|
||||
object? lastData = null;
|
||||
|
||||
public DedupManualLogSource(ManualLogSource source)
|
||||
{
|
||||
Source = source;
|
||||
}
|
||||
|
||||
public void Log(LogLevel level, object data)
|
||||
{
|
||||
if (lastData != data)
|
||||
{
|
||||
lastData = data;
|
||||
Source.Log(level, data);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogFatal(object data)
|
||||
{
|
||||
Log(LogLevel.Fatal, data);
|
||||
}
|
||||
|
||||
public void LogError(object data)
|
||||
{
|
||||
Log(LogLevel.Error, data);
|
||||
}
|
||||
|
||||
public void LogWarning(object data)
|
||||
{
|
||||
Log(LogLevel.Warning, data);
|
||||
}
|
||||
|
||||
public void LogMessage(object data)
|
||||
{
|
||||
Log(LogLevel.Message, data);
|
||||
}
|
||||
|
||||
public void LogInfo(object data)
|
||||
{
|
||||
Log(LogLevel.Info, data);
|
||||
}
|
||||
|
||||
public void LogDebug(object data)
|
||||
{
|
||||
Log(LogLevel.Debug, data);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
lastData = null;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -50,37 +50,10 @@ namespace MuzikaGromche
|
|||
];
|
||||
|
||||
Patches = [.. patchDescriptors.Select(d =>
|
||||
new TilePatch(d.TileName, HotFixPrefab(d.PrefabPath, assetBundle.LoadAsset<GameObject>(d.PrefabPath)))
|
||||
new TilePatch(d.TileName, assetBundle.LoadAsset<GameObject>(d.PrefabPath))
|
||||
)];
|
||||
}
|
||||
|
||||
static GameObject HotFixPrefab(string PrefabPath, GameObject gameObject)
|
||||
{
|
||||
// beacause I can't be bothered to reassemble the asset bundle
|
||||
if (PrefabPath == "Assets/LethalCompany/Mods/MuzikaGromche/DiscoBallContainerFactory.prefab")
|
||||
{
|
||||
void RemoveGameObject(string gameObjectPath)
|
||||
{
|
||||
var transform = gameObject.transform.Find(gameObjectPath);
|
||||
if (transform != null)
|
||||
{
|
||||
UnityEngine.Object.Destroy(transform.gameObject);
|
||||
}
|
||||
}
|
||||
RemoveGameObject("DiscoBallProp1");
|
||||
RemoveGameObject("DiscoBallProp2");
|
||||
|
||||
var discoBall = gameObject.transform.Find("DiscoBallProp3");
|
||||
if (discoBall != null)
|
||||
{
|
||||
var position = discoBall.position;
|
||||
position.y -= 5f;
|
||||
discoBall.position = position;
|
||||
}
|
||||
}
|
||||
return gameObject;
|
||||
}
|
||||
|
||||
internal static void Patch(Tile tile)
|
||||
{
|
||||
var query = from patch in Patches
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -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.67</Version>
|
||||
<Version>1337.9001.68</Version>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -115,9 +115,10 @@ namespace MuzikaGromche
|
|||
]),
|
||||
new("GarageTile", [
|
||||
new("HangingLEDBarLight (3)", LEDHangingLight),
|
||||
new("HangingLEDBarLight (4)", LEDHangingLight,
|
||||
new("HangingLEDBarLight (4)", LEDHangingLight),
|
||||
// This HangingLEDBarLight's IndirectLight is wrongly named, so animator couldn't find it
|
||||
ManualPatch: RenameGameObjectPatch("IndirectLight (1)", "IndirectLight")),
|
||||
// renamed by WaterGun-V70PoweredLights_Fix-1.1.0
|
||||
// ManualPatch: RenameGameObjectPatch("IndirectLight (1)", "IndirectLight")),
|
||||
]),
|
||||
new("PoolTile", [
|
||||
new("PoolLights/HangingLEDBarLight", LEDHangingLight),
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -19,7 +19,7 @@ All tracks are available on the web player: [ratijas.me/muzika-gromche](https://
|
|||
Muzika Gromche is compatible with *Almost Vanilla™* gameplay and [*High Quota Mindset*](https://youtu.be/18RUCgQldGg?t=2553). It slightly changes Jester's wind-up timers to pop up on the drop, so won't be compatible with leaderboards. If you are a streamer™, be aware that it does play *copyrighted content.*
|
||||
|
||||
- **Modded host is compatible** with vanilla clients, but if a selected track's wind-up timer differs significantly from the vanilla value, vanilla clients may observe Jester pop early or hear its theme restart from the beginning.
|
||||
- **Modded client is compatible** with vanilla host: the client will locally select the track whose wind-up timer most closely matches vanilla value, but it will never play tracks whose timer fall far outside of vanilla range.
|
||||
- **Modded client is compatible** with vanilla host: the client will locally select the track whose wind-up timer most closely matches vanilla value, but it will never play tracks whose timer fall far outside of vanilla range. It is impossible to time the drop perfectly, because clients don't know timer values of host.
|
||||
|
||||
Muzika Gromche v1337.9001.0 has been updated to work with Lethal Company v73. Previous versions of Muzika Gromche work with all Lethal Company versions from all the way back to v40 and up to v72.
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ English playlist features artists such as **Imagine Dragons, Fall Out Boy, Bon J
|
|||
|
||||
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**, and an anime opening from **One Punch Man.**
|
||||
|
||||
Seasonal New Year's songs:
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ Configuration integrates with [`LethalConfig`] mod.
|
|||
|
||||
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.
|
||||
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 Japanese tracks OFF if you don't speak those languages.
|
||||
|
||||
Track selection options are only configurable by the host player.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "MuzikaGromche",
|
||||
"version_number": "1337.9001.67",
|
||||
"version_number": "1337.9001.68",
|
||||
"author": "Ratijas",
|
||||
"description": "Add some content to your inverse teleporter experience on Titan!",
|
||||
"website_url": "https://git.vilunov.me/ratijas/muzika-gromche",
|
||||
|
|
|
|||
Loading…
Reference in New Issue