Skip to main content

Sgwormwood carrat

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

Overview

This stategraph defines the behavior and animation flow for the Carrat character (Wormwood’s companion). It implements a state machine that manages idle looping, movement transitions (walk/run), pickup/give actions, death, and stun recovery. It integrates with common state handlers and leverages the locomotor and lootdropper components to handle movement control and loot dropping during death.

Usage example

The stategraph is applied automatically when the Carrat prefab is constructed and does not require manual instantiation. It is referenced as "wormwood_carrat" in the stategraph registry and activated when an entity with this stategraph enters its first state.

Dependencies & tags

Components used: locomotor, lootdropper
Tags: idle, canrotate, busy, stunned, moving, running, debris (via CommonStates.AddWalkStates, CommonStates.AddRunStates, etc.), and burnt (inherited from loot logic).

Properties

No public properties are defined in this stategraph.

Main functions

This is a declarative stategraph definition returning StateGraph. It does not expose callable functions directly. Core state behavior is defined in the states table:

  • State: "idle"

    • Description: Default state where Carrat remains stationary and plays idle animations. After a short timeout, it transitions to "idle2" or repeats "idle".
    • Key behavior: Sets physics to stopped, plays animation "idle1" in a loop, schedules timeout (1–2 seconds).
    • Transition: ontimeout"idle" or "idle2" based on math.random().
  • State: "idle2"

    • Description: A secondary idle animation state that plays "idle2" once, then returns to "idle".
    • Key behavior: Plays "idle2" animation once, schedules sound event at 10 frames.
    • Transition: animover"idle".
  • State: "pickup"

    • Description: Performs pickup or trap-check actions (buffered by PerformBufferedAction).
    • Key behavior: Sets physics inactive, plays "eat_pre" once, triggers PerformBufferedAction() at frame 9.
    • Transition: animover"idle".
    • Tags: "busy".
  • State: "give"

    • Description: Performs give/drop actions (e.g., from ACTIONS.GIVE, ACTIONS.DROP, ACTIONS.GIVEALLTOPLAYER).
    • Key behavior: Sets physics inactive, plays "lose_small_pre" once, triggers PerformBufferedAction() at frame 7.
    • Transition: animover"idle".
    • Tags: "busy".
  • State: "stunned"

    • Description: Handles stun effects (e.g., from stun bombs).
    • Key behavior: Plays "stunned_loop" animation, schedules timeout (±2 seconds around 6 seconds), plays sound unless suppressed.
    • Transition: ontimeout"idle" with animation "stunned_pst".
    • Tags: "busy", "stunned".
  • State: "death"

    • Description: Handles Carrat’s death sequence.
    • Key behavior: Calls locomotor:StopMoving(), plays "death" animation, removes physics colliders, and triggers lootdropper:DropLoot() at position. Plays death sound immediately.
    • Tags: "busy".
  • Common states (via CommonStates):

    • AddSleepExStates, AddFrozenStates, AddElectrocuteStates, AddHitState, AddSinkAndWashAshoreStates, AddVoidFallStates: Include states like "sleep", "frozen", "electrocute", "hit", "sink", "voidfall" with appropriate physics, animation, and event handling.
    • AddWalkStates, AddRunStates: Define "walk_start", "walking", "walk_stop", "run_start", "running", "run_stop" with footstep sounds.

Events & listeners

  • Listens to:

    • "locomote" — handles transitions between walking/running/idle via locomotor:WantsToMoveForward() and WantsToRun().
    • "animover" — transitions from action states (pickup, give) back to "idle".
    • "stunbomb" — transitions to "stunned".
    • Common handlers: "onsleep", "onwake", "onfreeze", "onelectrocute", "onattacked", "ondeath", "onsink", "onfallinvoid".
  • Pushes:

    • No explicit events are pushed by this stategraph itself. Event propagation occurs via common handlers and entity-level event handling.