Skip to main content

Cave Banana Tree

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

Overview

This file defines three prefabs—cave_banana_tree, cave_banana_stump, and cave_banana_burnt—that model the lifecycle of a cave banana tree. It handles gameplay states such as banana growth/health, chopping, burning, regrowth, and persistence across saves. The prefabs use multiple components (pickable, workable, burnable, lootdropper) to support player interaction and integration with DST’s world systems (e.g., regrowth manager, save/load, fire propagation).

Usage example

-- Example: create and customize a new cave banana tree
local inst = Prefab("cave_banana_tree")
inst:AddComponent("inspectable") -- not required but commonly used
inst.components.pickable:SetUp("cave_banana", TUNING.CAVE_BANANA_GROW_TIME * 2) -- double regen time
inst.components.workable:SetWorkLeft(5) -- requires more hits to chop

Dependencies & tags

Components used:
pickable, workable, burnable, lootdropper, inspectable, animstate, transform, soundemitter, minimapentity, network
Tags added: plant (on all three prefabs); stump (only on stump prefab)

Properties

No public properties are directly exposed by this file’s prefabs. State is managed internally via component properties (e.g., pickable.canbepicked, workable.workleft) and instance variables (e.g., no_banana on burnt tree).

Main functions

The following functions are internal callbacks used by component events and are not intended for direct modder invocation, but they are critical to the prefab’s behavior.

tree_chopped(inst, worker)

  • Description: Called after the tree finishes being chopped. Handles loot drops, visual changes, stump placement, and transition to the stump prefab.
  • Parameters:
    inst (Entity) — the tree entity being chopped
    worker (Entity or nil) — the entity performing the action; may be a ghost
  • Returns: Nothing.
  • Error states: If worker is a ghost (playerghost tag), axe sound is suppressed.

tree_chop(inst, worker)

  • Description: Called on each chopping tick to animate and play sound.
  • Parameters:
    inst (Entity)
    worker (Entity or nil)
  • Returns: Nothing.
  • Error states: Same ghost-sound behavior as tree_chopped.

tree_startburn(inst)

  • Description: Runs when the tree catches fire. Disables interactions.
  • Parameters:
    inst (Entity) — the tree
  • Returns: Nothing.

tree_burnt(inst)

  • Description: Runs when the tree finishes burning. Spawns cave_banana_burnt at the same location and removes the original tree.
  • Parameters:
    inst (Entity)
  • Returns: Nothing.

tree_onsave(inst, data) and tree_onload(inst, data)

  • Description: Save/load hooks for persistence. Records burning state and banana availability in save data.
  • Parameters:
    inst (Entity)
    data (table) — save/load table
  • Returns: Nothing.

stump_dug(inst)

  • Description: Handles dig action on the stump, drops a log, and removes the stump.
  • Parameters:
    inst (Entity)
  • Returns: Nothing.

stump_burnt(inst)

  • Description: Converts stump to ash when burnt.
  • Parameters:
    inst (Entity)
  • Returns: Nothing.

burnt_chopped(inst)

  • Description: Finalizes chopped burnt tree: drops charcoal, removes itself after a delay.
  • Parameters:
    inst (Entity)
  • Returns: Nothing.
  • Error states: Sets persists = false so the burnt tree does not save.

Events & listeners

  • Listens to:
    animover (on tree) — triggers setupstump to spawn and place the stump after fall animation finishes.
  • Pushes:
    None directly, but uses component events (e.g., burnable’s onignite, onburnt) and workable callbacks to drive state changes.