dontbotherme-ExplosiveSprayPaint icon

ExplosiveSprayPaint

Adds a configurable chance for spray paint cans to rupture explosively when shaken.

CHANGELOG

Changelog

1.1.5

  • Cleaned public README build instructions to remove local machine/profile paths.
  • Refreshed the release package with the new Thunderstore icon.

1.1.4

  • Added GlowInTheDarkPaint to toggle between bright unlit paint splats and lit paint splats.
  • Added EnableFunnyExplosionPhysics to restore the high-force v1.0.8 launch behavior on purpose.

1.1.3

  • Paint color resolution now follows the selected spray can material index more closely.
  • Explosion splats prefer the selected spray particle material before falling back to the vanilla decal material.
  • Added debug logging that reports which material or texture supplied the synchronized paint color.

1.1.2

  • Paint raycasts now reject players, grabbable items, enemies, triggers, disabled colliders, and invisible utility colliders.
  • Paint splats are parented to the hit surface while preserving world placement.
  • Paint diagnostics now include rejected hit count.

1.1.1

  • Fixed fallback paint splats rendering as solid white squares by using generated transparent splat textures.
  • Removed custom fallback HDRP DecalProjector usage that produced instancing errors.
  • Fixed spray can color lookup to use sprayCanMatsIndex.
  • Fallback splat textures are cleaned up with their temporary GameObjects.

1.1.0

  • Paint spawning now logs explosion paint parameters, raycast attempts/hits, vanilla placements, and visible fallback splats.
  • Paint placement first tries Lethal Company's internal AddSprayPaintLocal and always creates visible surface splats as a fallback.
  • Removed explosion triggers from normal spray-use paths; spraying paint is safe, shaking is risky.
  • Host rejects rupture attempts while the can is actively spraying.
  • Spray audio, particles, and state flags are stopped before ruptured can cleanup.

1.0.9

  • Greatly reduced vanilla explosion physics force and extra player knockback.
  • Removed duplicate host-side client explosion playback that could double-apply local force/effects.
  • Added configurable paint splatter radius, lifetime, and low-force explosion tuning.
  • Reworked paint splatter placement with floor, wall, and angled-surface raycasts.
  • Added visible fallback HDRP decals/quads when the vanilla spray paint prefab cannot be used.
  • Explosion messages now synchronize blast radius, physics force, paint radius, and paint count from the host.

1.0.8

  • Prevents early plugin component destruction from removing Harmony patches and watcher hooks.
  • Adds a PlayerControllerB update-loop patch to keep the runtime watcher ticking even if the plugin component is destroyed.

1.0.7

  • Moved the runtime watcher off a temporary GameObject that was being disabled immediately after startup.
  • The watcher now runs from the plugin's own update loop and keeps its Unity-log fallback subscription alive.

1.0.6

  • Added a Unity log fallback detector for vanilla spray/shake log messages in stubborn mod profiles.
  • Runtime watcher now finds the local held spray can by scanning active spray paint items, not only currentlyHeldObjectServer.
  • Host now plays the local client-side explosion effect directly as well as broadcasting it.

1.0.5

  • Added a runtime watcher fallback that tracks the local held spray can directly.
  • The watcher triggers the same host-authoritative explosion flow when the shake meter increases.
  • When TreatSprayUseAsShake is enabled, the watcher also treats spray-start transitions as test triggers.

1.0.4

  • Fixed manual Harmony patch argument order so postfixes are no longer registered as transpilers.

1.0.3

  • Switched spray paint hooks from attribute discovery to explicit manual Harmony patching.
  • Added startup patch verification logs for each hooked spray paint method.
  • Added startup logging of loaded config values.

1.0.2

  • Added a fallback detector that watches the spray can's internal shake meter increasing.
  • Added optional TreatSprayUseAsShake compatibility config for profiles where the shake input is remapped or unavailable.
  • Added debug logging when spray paint items initialize.

1.0.1

  • Replaced strict ownership check with a more compatible local-holder check.
  • Added optional debug logging for shake detection, host roll decisions, and explosion broadcast flow.

1.0.0

  • Initial release.
  • Adds host-authoritative spray paint shake explosions.
  • Adds catastrophic rupture chance, configurable damage/radius/paint count, HUD tip, particles, screen shake, and multiplayer broadcast effects.