Skip to main content

Sgsharkboi Water

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

Overview

This stategraph (SGsharkboi_water) defines the swimming and movement state machine for a shark-like entity. It integrates with the locomotor component to respond to movement commands and drive state transitions between idle, walk, run, and their transition states (_start/_stop). It manages animation playback, sound effects (via splash/jump_small), and periodic wake particle effects (wake_small) during running.

The stategraph listens to the locomote event — dispatched by the locomotor component — and evaluates movement flags (WantsToMoveForward, WantsToRun) to transition appropriately between states. It also uses soft-stop logic (with the softstop state tag) to allow rotation while stopping.

Usage example

local inst = CreateEntity()
-- Assume inst is configured with a Transform, AnimState, and LocoMotor components
inst.StateGraph = inst:AddStateGraph("sharkboi_water", true)
inst.sg:GoToState("idle")
-- Movement is triggered externally via the locomotor component:
inst.components.locomotor:WalkForward(true)

Dependencies & tags

Components used: locomotor — accessed via inst.components.locomotor to query movement flags, control velocity, stop, and set pusheventwithdirection. Tags: States emit and consume the following state tags: idle, moving, running, canrotate, softstop. States walk_start, walk, run_start, and run add moving/softstop or running as appropriate; transitions preserve or clear these based on context.

Properties

No public properties are initialized in this stategraph. State memory (inst.sg.statemem) is used internally for transient values like stop, speedmult, and waketask.

Main functions

Stategraphs in DST do not expose public methods. Functions are defined locally (e.g., PlaySwimstep, DoWakeFX) and referenced in state handlers. No callable API methods exist for external modders.

Events & listeners

  • Listens to: locomote — triggers state re-evaluation based on movement intent (WantsToMoveForward, WantsToRun), soft-stop handling, and transitions between walk/run/idle states.
  • Pushes: None — this stategraph does not fire custom events.
  • Internal event usage: animover (via FrameEvent) drives transitions from transition states (walk_start, walk_stop, run_stop) to stable states or idle.
  • Timeout handling: States walk and run use ontimeout to loop their animations or requeue with persisted tasks (e.g., wake effect tasks).