Skip to main content

Sgcatcoon

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

Overview​

SGcatcoon is the state graph controlling the behavior and animations of the Catcoon entity. It defines states for movement (idle, walk_*), interaction (gohome, hairball, pawground), combat (pounceattack, pounceplay, attack), and event responses (e.g., raining triggers gohome_raining). It integrates closely with the combat, locomotor, health, and follower components to handle attacks, movement, and interaction with leaders/gifts.

Usage example​

This state graph is automatically applied to the Catcoon prefab during entity creation. Modders typically do not instantiate it directly but may extend or override states using CommonStates helper functions.

-- Example: Modder adds a custom state after Catcoon is constructed
inst:ListenForEvent("hairball", function(inst) print("Catcoon is about to vomit!") end, inst)

Dependencies & tags​

Components used: combat, locomotor, health, follower, inventoryitem, weighable, unwrappable
Tags: idle, canrotate, moving, busy, hairball, jumping, attack

Properties​

No public properties are initialized directly in this file. State memory (e.g., inst.target, inst.numretches, inst.hairballfollowup) is stored on inst as instance variables.

Main functions​

State{name = "gohome_raining", ...}​

  • Description: Initiates a rain-specific homing animation sequence. Stops physics and plays taunt animations.
  • Parameters: None (state constructor).
  • Returns: Nothing (part of state definition).

State{name = "hairball", ...}​

  • Description: Manages the hairball vomiting sequence: spawns the vomit item, adjusts its position/orientation, applies leader overrides, and optionally picks it back up.
  • Parameters: None (state constructor).
  • Returns: Nothing (part of state definition).
  • Error states: Vomit spawning can fail silently if inst:PickRandomGift(...) returns nil.

State{name = "pounceattack", ...}​

  • Description: Handles a jumping melee attack. Applies motor velocity override, triggers combat DoAttack, and conditionally plays hiss post-attack if target is a smallcreature.
  • Parameters: Accepts target passed to state via GoToState("pounceattack", target).
  • Returns: Nothing (part of state definition).

State{name = "pounceplay", ...}​

  • Description: Handles a non-lethal pounce interaction (e.g., with toys or birds). May trigger a successful attack depending on target tags, distance, and chance.
  • Parameters: Accepts target passed to state.
  • Returns: Nothing (part of state definition).
  • Error states: Attack success depends on RNG and distance checks; may complete without DoAttack if thresholds aren't met.

Events & listeners​

  • Listens to: doattack, animover, animqueueover, animqueueover, death, freeze, electrocute, attacked, sleep, locomote, hop, sink, fallinvoid, corpsechomped, and common handlers from commonstates.lua.
  • Pushes: Events via inst:PushEvent("wrappeditem", ...), threatnear, and internal state transitions via sg:GoToState(...).