extends Node ## Stateless façade (autoload `Gore`) for spawning persistent blood splats. Callers just say ## Gore.splat(pos, dir, size) at each wound; this routes to the level's BloodDecals pool ## (group &"blood_decals"), which the game shell rebuilds into LevelRoot on every load so the ## stains die with the level. No-ops when there's no pool (menus, headless tests without a ## level) or when the player has turned gore off — so the gate lives in one place. func splat(world_pos: Vector3, dir: Vector3 = Vector3.ZERO, size: float = 0.6) -> void: if not Settings.gore: return var pool := get_tree().get_first_node_in_group(&"blood_decals") if pool == null: return pool.call(&"splat", world_pos, dir, size * DP.f("blood_scale"))