Moonstorm Ground Lightning Fx
Based on game build 714014 | Last updated: 2026-03-06
Overview
moonstorm_ground_lightning_fx is a visual effect prefab used to simulate lightning striking the ground during a moonstorm event. It spawns a static animation with sound, applies specific rendering properties (e.g., color tint, layering, bloom), and has a built-in delay that may trigger a secondary lightning effect nearby—dependent on player proximity and map node constraints. It is designed as a one-shot effect and does not persist across game sessions.
Usage example
This prefab is not meant to be manually instantiated by modders. It is spawned internally by the moonstorms component when a moonstorm occurs.
-- Not applicable for external use; spawned via internal logic in moonstorms.lua
Dependencies & tags
Components used: None directly. Interacts with TheWorld.Map and TheWorld.net.components.moonstorms (via _moonstorm_nodes).
Tags: Adds fx, NOCLICK.
Properties
No public properties. All state is held internally and transiently (e.g., inst.anglemod, set on the entity only when spawned programmatically during checkspawn).
Main functions
fn(pondtype)
- Description: Constructor function for the prefab. Initializes the entity with transform, animation, and sound components; plays a lightning strike animation; sets rendering properties; and schedules a delayed
checkspawncall. Thepondtypeargument is accepted but unused. - Parameters:
pondtype(any) – argument required by prefab signature, but not used. - Returns:
inst(entity) – a fully configured entity instance ready for spawning. - Error states: None documented; silently exits early in
checkspawnifThePlayerisnil.
Events & listeners
- Listens to:
animover– removes the effect entity once its animation completes. - Pushes: None.
Notes
- The effect uses two possible animations:
"strike"or"strike2", selected randomly. - It includes a 13-frame delay (≈0.217 seconds) before attempting to spawn a secondary lightning effect via
checkspawn. - The spawn logic for a follow-up effect checks:
- The player is within 30 world units (squared distance < 900).
- The ground point is valid (
IsVisualGroundAtPoint). - The target map node is in the active
_moonstorm_nodeslist (frommoonstormscomponent).
- The effect does not persist (
inst.persists = false).