Skip to main content

Lunarfissureburning

Based on game build 714014 | Last updated: 2026-03-03

Overview

LunarFissureBurning is a component attached to entities (typically bosses like Alter Guardian in Phase 4) to simulate the lunar burn effect when standing over a fissure. It periodically inflicts damage to both the entity and its mount (if any), registers the burn with the health component, manages visual FX via colouradder and a particle FX prefab, and tracks state transitions (active burn → cooldown → removal). It integrates closely with health, rider, grogginess, combat, and colouradder components, and uses utility functions from WagBossUtil.

Usage example

-- Typically added automatically during boss Phase 4 logic:
local inst = CreateEntity()
inst:AddComponent("lunarfissureburning")
-- The component begins updating automatically in its constructor.
-- It will apply damage while the entity is over a fissure and stop after 1 second in limbo or off-fissure.

Dependencies & tags

Components used: health, rider, grogginess, combat, colouradder, transform Tags: Does not add or remove tags directly.

Properties

PropertyTypeDefault ValueDescription
cleartimenumber or nil0Accumulates delta time while off-fissure; if it exceeds 1, the component removes itself. When nil, the entity is actively burning.
fxPrefabInstance or nilnilReference to the alterguardian_lunar_fissure_burn_fx prefab instance, if spawned.

Main functions

OnRemoveFromEntity()

  • Description: Cleanup function called when the component is removed from its entity. Unregisters the lunar burn source from health (if active) and destroys the FX prefab.
  • Parameters: None.
  • Returns: Nothing.

SetFxEnabled(enable)

  • Description: Toggles the visual FX (show/hide) and adjusts the FX size based on the entity’s (or its mount’s) physical radius and tags. Also manages colour addition/removal through colouradder.
  • Parameters: enable (boolean) – whether to enable (true) or disable (false) the FX.
  • Returns: Nothing.

OnUpdate(dt)

  • Description: Called every frame. Determines if the entity is currently over a fissure using WagBossUtil. If over a fissure, it applies damage every tick and pulses damage at a reduced interval (lastlunarburnpulsetick). Also maximizes grogginess. If not over a fissure, it enters a 1-second cooldown (via cleartime), then removes itself if no longer relevant.
  • Parameters: dt (number) – delta time since last frame.
  • Returns: Nothing.
  • Error states: Skips damage if the entity is in limbo, has the notarget tag, has state tags like "flight"/"invisible"/"noattack", is dead, or its combat component reports it cannot be attacked.

Events & listeners

  • Listens to: None directly (uses inst:StartUpdatingComponent(self) to schedule OnUpdate).
  • Pushes: None directly; damage-related events (healthdelta, startlunarburn, stoplunarburn) are pushed via the health component when DoDelta, RegisterLunarBurnSource, and UnregisterLunarBurnSource are called.