Sgcaveventmite
Based on game build 714014 | Last updated: 2026-03-08
Overview
SGcaveventmite is the stategraph responsible for governing the behavior of the cave ventmite entity. It implements state transitions for common actions such as moving, idle periods, eating, attacking, and using a shield (vent phase). It integrates with multiple components—freezable, burnable, temperature, locomotor, combat, lootdropper, health, planarentity, timer—to produce core behaviors: blowing heat to thaw or warm targets, spawning miasma clouds when active, and toggling physics/shield states during vent phases. It inherits shared states for sleeping, freezing, electrocution, sinking, and void fall via CommonStates.Add*.
Usage example
local inst = CreateEntity()
inst:AddTag("caveventmite")
inst:AddComponent("health")
inst:AddComponent("freezable")
inst:AddComponent("locomotor")
inst:AddComponent("combat")
inst:AddComponent("lootdropper")
inst:AddComponent("planarentity")
inst:AddComponent("temperature")
inst:AddComponent("timer")
inst:AddStateGraph("caveventmite", "SGcaveventmite")
inst.sg:GoToState("idle")
Dependencies & tags
Components used: health, freezable, locomotor, combat, lootdropper, planarentity, temperature, timer
Tags: Adds and checks state tags including busy, moving, idle, attack, shield, vent, shield_end, noelectrocute, noattack, waking, caninterrupt, canrotate, blowing, hit, shield_hit, electrocute, freeze, sleep, sink, voidfall, death. Also uses NO_TAGS and BLOW_ONEOF_TAGS internally for entity filtering.
Properties
No public properties exposed. Internal state is maintained via inst.sg.statemem, component fields, and local variables within functions.
Main functions
GetHeatRate(inst)
- Description: Calculates the heat rate applied by the ventmite's blow based on ambient temperature and wetness; used by
DoBlowUpdate. - Parameters:
inst(entity instance) — the ventmite entity. - Returns: number — multiplicative heat rate adjusted for environmental conditions.
DoBlowUpdate(inst, dt)
- Description: Core update function applied during
blowingstates. Iterates over nearby entities within range and applies heating or thawing effects based on theirfreezable,burnable, andtemperaturecomponents. - Parameters:
inst(entity instance) — the ventmite entity performing the blow.dt(number) — delta time for frame rate–independent updates.
- Returns: Nothing.
- Error states: No-op if
inst.sg.statemem.blowingis nil or not true.
CheckSpawnMiasma(inst)
- Description: Spawns a
miasma_cloudprefab at the ventmite’s position if none exists nearby and the entity has theplanarentitycomponent. - Parameters:
inst(entity instance). - Returns: Nothing.
Events & listeners
- Listens to:
attacked— triggers hit, shield_hit, or interruption logic depending on state tags and health.doattack— chooses betweenblow_attackor regularattackbased on cooldown and state.locomote— transitions betweenpremoving,moving, andidlestates based on movement intent.spawn— entersspawnstate on entity activation if conditions allow.entershield/exitshield— entersshield_pre/shield_endstates to toggle vent shield physics.- Common stategraph events:
hop,sleep,freeze,electrocute,sink,fallinvoid,death— viaCommonHandlers.
- Pushes: None directly; relies on the StateGraph engine to handle transitions and external event handling.