Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
ExplosiveSprayPaint
Adds a configurable chance for spray paint cans to rupture explosively when shaken.
By dontbotherme
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
GlowInTheDarkPaintto toggle between bright unlit paint splats and lit paint splats. - Added
EnableFunnyExplosionPhysicsto 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
AddSprayPaintLocaland 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
TreatSprayUseAsShakeis 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
TreatSprayUseAsShakecompatibility 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.