Skip to main content

Stalker

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

Overview

The stalker prefab defines the behavior and functionality of the Stalker boss entity, supporting three variants: cave, forest, and atrium. It coordinates core combat systems—including target tracking, ability cooldowns, and summoning mechanics—with environment-specific logic such as bloom generation, music triggers, and Atrium-specific health management. It relies heavily on the combat, grouptargeter, timer, commander, and health components to manage boss phases, ability usage, minions, and channelers.

Usage example

-- Create a cave Stalker instance
local stalker = SpawnPrefab("stalker")
stalker.Transform:SetPosition(x, y, z)

-- Start blooming (forest variant only)
if stalker.foreststalker then
stalker.components.stalker.StartBlooming()
end

-- Trigger mind control ability (atrium variant)
if stalker.atriumstalker then
stalker.MindControl(stalker)
end

-- Check if the Stalker is shielded (atrium)
if stalker._hasshield:value() then
print("Stalker is shielded")
end

Dependencies & tags

Components used:
combat, grouptargeter, timer, health, healthtrigger, locomotor, lootdropper, sanityaura, inspectable, drownable, explosiveresist, epicscare, talker, focalpoint, entitytracker, commander, charliecutscene

Tags added:
-通用: epic, monster, hostile, scarytoprey, largecreature, stalker, fossil, shadow_aligned

  • Atrium-specific: noepicmusic
  • Forest-specific: smallepic

Properties

PropertyTypeDefault ValueDescription
atriumstalkerbooleanfalseIndicates if the instance is the Atrium variant.
foreststalkerbooleanfalseIndicates if the instance is the Forest variant.
canfightbooleantrueWhether the Stalker can engage in combat (applies only to cave/atrium variants).
engagedboolean or nilnilTracks whether the Stalker is currently using snare ability.
hasshieldbooleanfalseIndicates if the Atrium Stalker currently has a shield (active when channelers exist).
_camerafocusnet_boolnilNetworked flag for camera focus behavior in Atrium variant.
_musicnet_tinybyte1Current music level (1=ambient, 2=alert, 3=attack).
_playingmusicbooleanfalseLocal client-side flag indicating if music is currently playing.
_bloomingbooleanfalseFor forest variant: whether bloom generation is active.
recentlychargedtable{}Tracks entities recently damaged by the Stalker’s charge.

Main functions

RetargetFn(inst)

  • Description: Determines the new combat target. Prefers players within aggro range but excludes those near a shadow lure unless forced. Also checks for hostile creatures with valid combat state. Cave Stalker uses a more aggressive retarget strategy.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: {target: Entity?, force: true} — a target entity or nil, always with force=true.
  • Error states: Returns nil when no valid targets are within range.

AtriumRetargetFn(inst)

  • Description: Atrium-specific retarget logic. Prioritizes players near the stargate (GATE_RANGE = 7) and ignores shadow lures (ignorelure=true).
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: {target: Entity?, force: true} — same signature as RetargetFn.
  • Error states: Returns nil if no targets are near the gate and within range.

KeepTargetFn(inst, target)

  • Description: Verifies if the current target should remain the focus. A player loses priority if near a shadow lure and hasn’t attacked recently (ignored for Atrium).
  • Parameters:
    • inst (Entity) - the Stalker instance.
    • target (Entity) - the proposed target.
  • Returns: true if the target is still valid, false otherwise.

AtriumKeepTargetFn(inst, target)

  • Description: Atrium-specific target validation. A target is valid only if it is in the Atrium arena (or the Stalker is out of the Atrium).
  • Parameters:
    • inst (Entity) - the Stalker instance.
    • target (Entity) - the proposed target.
  • Returns: true if the target is in valid range (Atrium), false otherwise.

OnAttacked(inst, data)

  • Description: Reacts to incoming attacks. Immediately switches aggro to the attacker if the current target is out of attack range or the attacker is a player who hasn’t attacked recently.
  • Parameters:
    • inst (Entity) - the Stalker instance.
    • data (table) - event data containing attacker.

SpawnSnares(inst, targets)

  • Description: Deploys a snare of fossil spikes around target locations, trying up to three passes with decreasing radii to avoid overlap. Resets snare cooldown upon success.
  • Parameters:
    • inst (Entity) - the Stalker instance.
    • targets (table) - list of target entities.
  • Returns: nil — ability effect is immediate.
  • Error states: Early exit when SNARE_MAX_TARGETS is reached or overlap persists.

SpawnChannelers(inst)

  • Description: Spawns shadow channelers in a circular pattern around the stargate, adding them as soldiers to the Stalker’s command group. Resets channeler cooldown.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

DespawnChannelers(inst)

  • Description: Cancels active spawning, and kills all channelers immediately.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

OnSoldiersChanged(inst)

  • Description: Updates the shield state based on soldier count. When channelers drop to zero, hasshield is set to false and the channeler cooldown timer starts.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

SpawnMinions(inst, count)

  • Description: Spawns stalker minions in a ring formation around the stargate. Can be called with a specific count for respawn/rejoin logic.
  • Parameters:
    • inst (Entity) - the Stalker instance.
    • count (number?) - number of minions to spawn (nil uses default from tuning).
  • Returns: nil.

EatMinions(inst)

  • Description: Consumes up to three nearby minions, healing the Stalker by TUNING.STALKER_FEAST_HEALING per minion.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: number — the number of minions consumed.

SpawnSpikes(inst)

  • Description: Atrium ability that spawns a spiraling set of fossil spikes (fossilspike2) with synchronized flame sounds.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

MindControl(inst)

  • Description: Atrium ability that applies the mindcontroller debuff to sane players within range whose sanity is below threshold.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: number — count of players affected.

AtriumLootFn(lootdropper)

  • Description: Dynamically configures loot table based on whether the Atrium Stalker decayed due to leaving the arena.
  • Parameters: lootdropper (LootDropper) — the component reference.
  • Returns: nil.

CheckAtriumDecay(inst)

  • Description: Determines if the Stalker died outside the Atrium arena (triggering decay state).
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: booleantrue if decayed, false otherwise.

StartBlooming(inst)

  • Description (forest variant): Begins periodic bloom generation and trail effects.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

StopBlooming(inst)

  • Description (forest variant): Stops bloom and trail effects and cancels related tasks.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

OnIsNight(inst, isnight)

  • Description (forest variant): Schedules or cancels decay based on day/night cycle.
  • Parameters:
    • inst (Entity) - the Stalker instance.
    • isnight (boolean) - current world night state.
  • Returns: nil.

OnDecay(inst)

  • Description (forest variant): Initiates death and sets special loot (shadowheart only) if the Stalker decays due to daylight.
  • Parameters: inst (Entity) - the Stalker instance.
  • Returns: nil.

Events & listeners

  • Listens to:

    • ontalk → triggers ambient talking sounds.
    • donetalking → stops talking sound and cancels talk task.
    • attacked → handles aggro switching and player hit tracking.
    • newcombattarget → engages snare cooldown and Roar (atrium only).
    • soldierschanged → updates shield state (atrium).
    • miniondeath → resets minion cooldown (atrium).
    • death → handles Atrium death logic and tracking attackers (atrium).
    • onremove, onEntitySleep, onEntityWake → manages timers and blooming state (atrium/forest).
    • musicdirty, camerafocusdirty → updates camera/music state on client (atrium).
  • Pushes:

    • roar — fired when engaging snare (atrium variant).
    • healthdelta — via health component when damage is applied.
    • snared — fired on player hit by snare.
    • triggeredevent — music and event triggers (e.g., "stalker" level change).