Commit Graph

160 Commits

Author SHA1 Message Date
ivan tkachenko b99e4c1e2c Select new random track groups every time 2026-04-06 07:50:05 +03:00
ivan tkachenko dfefc06abf Add tracks count getter to ISelectableTrack 2026-04-06 07:50:05 +03:00
ivan tkachenko 702eb9fccd Port to modern [Rpc] attribute
Method ChooseTrackServerRpc should never have been an RPC. Server will
invoke it when it's the right time. And only server was calling it
anyway.
2026-04-06 07:50:04 +03:00
ivan tkachenko 7fb63e4718 Bump version of dependency WaterGun-V70PoweredLights_Fix to 1.2.1
Version 1.2.1 correctly applies animators patches, so this mod doesn't
have to include a copy anymore.
2026-04-05 23:33:06 +03:00
ivan tkachenko 98244dd3f1 Implement a better way to disable tracks while keeping them in JSON 2026-03-07 01:33:38 +02:00
ivan tkachenko f20a500992 Show Artist & Song metadata in config 2026-01-23 14:34:37 +02:00
ivan tkachenko 6a71ed578b Include Artist & Song metadata in the track info 2026-01-23 14:19:34 +02:00
ivan tkachenko 4cc187b525 Split audio tracks metadata into a separate file 2026-01-23 01:52:23 +02:00
ivan tkachenko ecee2a25e2 Reorder [General] config section alphabetically
As a side-effect, this conveniently places the most important option
OverrideSpawnRates at the top.
2026-01-23 00:13:02 +02:00
ivan tkachenko af38056d11 Merge Config.DisplayLyrics and ReduceVFXIntensity
Both are responsible for some sort of VFX. Make the number of options
less overwhelming by merging the two into one.
2026-01-23 00:08:17 +02:00
ivan tkachenko 567597e353 Remove Config.ExtrapolateTime even from Debug build
Just always do it, there is no reason not to.

And maybe try dspTime to replace the whole extrapolation technique.
2026-01-22 23:47:00 +02:00
ivan tkachenko ee2b1574d0 Hide AudioOffset from Lethal Config
It is a niche option, and having two sliders next to each other might be
overwhelming for players.
2026-01-22 23:43:02 +02:00
ivan tkachenko 4e9ba0928f Disable track Yalgaar in release builds
Still will be available in a web player.
2026-01-22 23:38:56 +02:00
ivan tkachenko 6a5cc637ac Rewrite client-side vanilla-compat mode
Amends b8ef4d7937

Networking and playback are fixed, but client-side vanilla-compat mode
can never work as intended, because timers are actually client-side and
not synchronized at all. No matter what your local timer is set to, the
host gets to decide when to pop Jester at a completely random for your
client moment. There can be no meaningful prediction whatsoever.
2026-01-22 23:38:56 +02:00
ivan tkachenko a2cf66476c Deduplicate logs to avoid spamming console with errors each frame 2026-01-20 01:48:39 +02:00
ivan tkachenko a254188f0c Stop farAudio (popGoesTheWeaselTheme) in the only place where it matters 2026-01-17 19:40:42 +02:00
ivan tkachenko 3041d9f73c Merge EnemyAI.OnDestroy patch with cleanups into existing Behaviour
That Harmony patch predated MuzikaGromcheJesterNetworkBehaviour, but
there is no need to have as a separate class, especially not with the
subclass check hack.
2026-01-16 19:38:43 +02:00
ivan tkachenko b8ef4d7937 Implement client-side playback with Vanilla Compat Mode 2026-01-13 21:43:52 +02:00
ivan tkachenko ffa2e952c9 Add new track TwoFastTuFurious 2026-01-13 04:57:49 +02:00
ivan tkachenko 3f06cc9aa6 Add new track PickUpSticks 2026-01-12 03:20:03 +02:00
ivan tkachenko a4cee92d00 Load audio clips on demand, implement cache
Reduces cold-boot memory usage by 400 MB for the current playlist of
58 audio files (27.8 MB).
2026-01-11 16:06:45 +02:00
ivan tkachenko f83f2a72ba Mark AudioClip as nullable 2026-01-11 03:17:49 +02:00
ivan tkachenko afb3e34e71 Implement seasonal content framework
to ensure that New Year's songs won't play in summer.
2026-01-11 02:53:53 +02:00
ivan tkachenko ebd7811b12 Avoid null dereference while reading seed in orbit 2026-01-11 02:13:19 +02:00
ivan tkachenko a64d671527 Add Config.ReduceVFXIntensity option 2026-01-11 00:12:21 +02:00
ivan tkachenko 7eaa5fce75 Add new track DiscoKapot 2026-01-10 23:47:39 +02:00
ivan tkachenko da86ca6a2d Add new track Paarden 2026-01-10 22:51:56 +02:00
ivan tkachenko c4c1919df6 Adjust lyrics for PWNED 2026-01-10 21:10:08 +02:00
ivan tkachenko 869d982b1e Remaster recently added track IkWilJe, rework visual effects 2026-01-10 21:07:15 +02:00
ivan tkachenko 56cea50a65 add new track IkWilJe 2025-12-30 23:39:01 +02:00
ivan tkachenko c1d91839e4 add new track HighLow 2025-12-30 22:25:50 +02:00
ivan tkachenko 76189c6ad2 Update BepInEx.PluginInfoProps to version 2.x
2.x implements better namespacing.
2025-12-30 22:25:49 +02:00
ivan tkachenko a4ca1c86ec Save Harmony own instance in private static
That's how other mods do it. Might be useful to reload patches.
2025-12-19 23:40:46 +02:00
ivan tkachenko 38c9472cb1 Port logging to BepInEx ManualLogSource
- pros: free namespace by default
- cons: Debug level has to be enabled manually in BepInEx.cfg,
  specifically in the section named [Logging.Console]
2025-12-19 23:39:28 +02:00
ivan tkachenko 8a24448cb6 Consistent ordering of Easing functions in C# 2025-12-06 23:26:08 +02:00
ivan tkachenko a74bbfaee2 Add JSON exporter to debug builds 2025-11-23 15:56:58 +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 049a14e440 Use requiresRestart: false directly, remove Default() options factory
Now, without an additional CanModifyCallback setup, Default is just a
pointless overhead.
2025-10-15 15:55:29 +03:00
ivan tkachenko 1ec8275831 Drop restrictions on when/whether host/clients can modify config
Lethal Config does not refresh that state reliably, it has only caused
bugs and annoyances so far. If someone wants to change the track mid-day,
there is a small chance to desync though.
2025-10-15 15:49:53 +03:00
ivan tkachenko 9efe6adaf3 Add a new track ReelGoon 2025-10-14 19:00:11 +03:00
ivan tkachenko a5b117e26d Add a new track Whistle 2025-10-14 17:48:37 +03:00
ivan tkachenko 01332ab77f Add a new track BbIXODaHET 2025-10-14 17:48:37 +03:00
ivan tkachenko 7aa3570b33 Fix internal representation of track AttentionPls
Members of track group were never intended to be Selectable.
2025-10-14 17:48:36 +03:00
ivan tkachenko e7866fda55 Fix division erroneously rounding to integers
This fixes LoopOffset which is a non-integer factor or Beats.
2025-10-14 17:48:36 +03:00
ivan tkachenko cd9e0a7a10 Compensate for loudness level -14 LUFS of audio files 2025-10-14 17:48:36 +03:00
ivan tkachenko 8223425b19 Remaster all tracks to target consistent loudness level of -14 LUFS
Add multiple intros for BeefLiver.
2025-10-14 16:53:11 +03:00
ivan tkachenko aea755361b Added new track AttentionPls, implement HUD effects as a time series / timeline 2025-09-26 18:07:11 +03:00
ivan tkachenko e67c72951e Override DeathScreen / GameOver text, add support for per-track strings
Custom message is shown only if the player dies to a Jester.
2025-09-22 03:01:41 +03:00
ivan tkachenko 99babe8bdf Substitute placeholder nulls with per-light initial color for transitions
Fade out and first color transitions used to assume white as a default
color, which is not always the case e.g. in Mineshaft tunnel tiles. Use
nullable from/to/color fields, and substitute them with per-light
initial color data in a new virtual method that calculates colors.
2025-08-25 01:29:39 +03:00