{ "(method 0 actor-link-info)": [ "new", "Create an `actor-link-info` which caches the `next` and `prev` lookups, \nallowing fast iteration through an actor list." ], "(method 0 align-control)": [ "new", "Construct a new `align-control` for the given process." ], "(method 0 joint-anim-frame)": [ "new", "Allocate `joint-anim-frame` with enough room for `matrix-count`, including the two built-in align, prejoint matrices." ], "(method 0 string)": [ "new", "Create a new string which can hold `len` characters, not including null terminator.\nCopies from `copy-from` if provided, picking the maximum size between `len` and `copy-from`." ], "(method 10 actor-link-info)": [ "actor-count-before", "Return the index of this actor" ], "(method 10 align-control)": [ "align!", "Adjust the `root` of the given `proces-drawable` based on the animation of the `align` matrix.\nThe scale factors are multipliers for velocity and typically `1`." ], "(method 10 baby-spider-spawn-params)": [ "set-delay!", "Set the automatic death delay" ], "(method 10 cam-index)": [ "point->parameter", "Project a world point onto the index and return its normalized 0..1 position along it." ], "(method 10 cavecrystal-light-control)": [ "light-intensity-at", "return the max distance-attenuated crystal light intensity at probe-pos (w = radius), clamped to 2.0" ], "(method 10 effect-control)": [ "do-effect", "Dispatch a single named effect: send event, spawn particles/part-trackers, play sounds, or trigger death." ], "(method 10 rigid-body)": [ "integrate!", "advance the simulation by dt: update momentum, velocity, position and rotation from force/torque" ], "(method 10 swamp-blimp-oscillator)": [ "update!", "step the 3D spring oscillator one frame toward target+offset (vel clamp + damping)" ], "(method 10 swamp-rope-oscillator)": [ "update!", "step the 1D spring oscillator one frame toward target+offset (vel clamp + damping)" ], "(method 10 tippy)": [ "update-tip!", "Damped tip/wobble: lean proc's quat toward target-pos (or decay when #f); #t while moving." ], "(method 10 torus)": [ "prim-overlaps?", "#t if the prim's world-sphere overlaps the torus tube; writes the closest-axis delta into out-delta." ], "(method 10 tracking-spline)": [ "reset!", "Clear the breadcrumb trail to a single point and rebuild the free-list chain over all 32 slots." ], "(method 10 vehicle-controller)": [ "record-turning-sample!", "measure the turn rate at one speed index and store its radius and throttle" ], "(method 10 water-control)": [ "update-water-state!", "Per-frame: update water heights and drive swim/wade/under-water flags, splash/drip particles." ], "(method 11 actor-link-info)": [ "link-to-next-and-prev-actor", "Look up the previous and next actors in the list and cache them in this `actor-link-info`." ], "(method 11 align-control)": [ "align-with-external-travel!", "This method is intended to take an animation of walking or travel and re-align it to point in a different\ndirection, for example, to steer a creature along a path. The vertical movement is taken directly from\nthe animation's `align` matrix, but the horizontal xz movement is set from the `xz-travel` vector, a per-\nframe position increment. The speed is limited to the speed of the original animation. The velocity scale\nfactors apply to the original animation (either y velocity, or the xz limit derived from the animation)" ], "(method 11 effect-control)": [ "do-effect-for-surface", "Resolve a surface-dependent footstep/poof effect (sound or particle group) from the pat material." ], "(method 11 nav-control)": [ "navigate!", "top-level per-frame nav update: relocalize, gather spheres, compute travel, fire events" ], "(method 11 torus)": [ "target-overlaps?", "#t if any of *target*'s collide prims overlaps the torus tube; writes the hit delta into out-delta." ], "(method 11 twister)": [ "update-twist!", "seek last joint toward target, then propagate twist down chain clamped by each joint's max-dry" ], "(method 11 vehicle-controller)": [ "dump-tables", "print the calibrated turning-radius and throttle-control tables as source to the console" ], "(method 11 vol-control)": [ "should-display?", "returns truthy if this volume's debug marks should be displayed" ], "(method 12 actor-link-info)": [ "get-next", "Return the next actor in the list, or #f." ], "(method 12 align-control)": [ "first-transform", "Get the most recent `align` matrix as a transform." ], "(method 12 cavecrystal-light-control)": [ "prune-dead-lights!", "once per frame: init the crystal array, or prune crystals whose source process is gone" ], "(method 12 effect-control)": [ "play-effect-sound", "Build a sound-spec from effect-param res data and play it at the effect joint." ], "(method 12 nav-control)": [ "find-gap-landing", "find the non-gap poly across a gap and where to jump to (fills nav-gap-info)" ], "(method 12 path-control)": [ "get-tangent-at-vertex!", "Store in `ret` the normalized tangent (direction) of the path at vertex index `idx`." ], "(method 12 torus)": [ "random-surface-point", "generate a random point on the torus surface into out-point and return it." ], "(method 12 tracking-spline)": [ "print-all-points", "Print every used point of the spline (walks the linked list to the terminator)." ], "(method 12 twister)": [ "apply-twist-to-bones!", "apply each joint's twist (ry) to the matching bone transforms about the process root" ], "(method 12 vehicle-controller)": [ "set-dest-point!", "set the destination path point and build the steering arc-circle from cur-pos" ], "(method 12 wobbler)": [ "tilt-quaternion!", "set out-quat to a tilt leaning in the wobble direction, angle scaled by wobble offset magnitude over height" ], "(method 13 actor-link-info)": [ "get-prev", "Return the previous actor in the list, or #f" ], "(method 13 align-control)": [ "snd-transform", "Get the previous `align` matrix as a transform." ], "(method 13 nav-control)": [ "compute-travel", "path-following: build this frame's travel toward a destination along the route" ], "(method 13 rigid-body)": [ "apply-force-at-point!", "add a world-space force applied at a world point, accumulating force and torque" ], "(method 13 tracking-spline)": [ "delete-point!", "Remove the breadcrumb after the given index, return its slot to the free-list, and re-stitch the segment." ], "(method 14 actor-link-info)": [ "get-next-process", "Get the process of the next entity. If there is no next entity, or that entity is not spawned, return #f." ], "(method 14 collide-edge-work)": [ "nearest-grab-edge-dist", "Find the grabbable edge on the given tri prim closest to test-pt; store the closest point in out-pt and return that distance." ], "(method 14 collide-mesh)": [ "transform-verts-1-matrix!", "Transform all verts by one matrix, writing float+int copies to output (unused/vestigial dead code)." ], "(method 14 effect-control)": [ "play-effects-from-res-lump", "Walk effect-name tags and run do-effect for each one inside the frame window." ], "(method 14 level-hint)": [ "print-text", "Display hint text on screen." ], "(method 14 path-control)": [ "get-tangent-at-percent!", "Store in `ret` the normalized path tangent at the given fraction `percent` (0..1) along the path." ], "(method 14 rigid-body)": [ "apply-local-force-at-local-point!", "apply a force given in body-local space at a body-local point" ], "(method 14 snow-ball)": [ "compute-junction-times!", "Fill the junction array with enter/exit times a roller will reach along the path." ], "(method 14 tracking-spline)": [ "advance-used-point!", "Move the live-trail head forward to the sampler cursor, freeing every breadcrumb passed and updating summed-len." ], "(method 14 vehicle-controller)": [ "compute-target-point", "find the tangent target point on the steering circle for the boat at from-pos" ], "(method 15 actor-link-info)": [ "get-prev-process", "Get the process of the previous entity. If there is no previous entity, or that entity is not spawned, return #f." ], "(method 15 collide-mesh)": [ "transform-verts-2-matrix!", "Transform all verts by two matrices (float via mat1, int/ftoi via mat2) to output (unused/vestigial dead code)." ], "(method 15 rigid-body)": [ "apply-force!", "add a world-space force at the center of mass (no torque contribution)" ], "(method 15 snow-ball)": [ "junctions-clear?", "#t if the proposed junction times don't conflict with any active roller's junctions." ], "(method 15 tracking-spline)": [ "prune-most-collinear!", "Find the interior breadcrumb on the straightest stretch and delete it to free a slot with minimal shape change." ], "(method 15 vehicle-controller)": [ "drive!", "per-frame auto-pilot update: advance the path and set throttle and steering for the boat" ], "(method 15 water-control)": [ "enter-water!", "On first contact with water: set touch-water flag, record entry pos/time, spawn entry splash." ], "(method 16 actor-link-info)": [ "apply-function-forward", "Apply `func` to each actor in the list after this one, stopping when the function returns a truthy value." ], "(method 16 nav-control)": [ "find-poly-fast-from-world", "find-poly-fast for a world-space point (converts to mesh-local)" ], "(method 16 nav-mesh)": [ "clip-travel-vector-to-mesh", "ray-walk & clip a travel vector so it stays on the mesh (slide or stop)" ], "(method 16 rigid-body)": [ "apply-force-at-point-clamped!", "like apply-force-at-point! but clamp the torque lever arm to max-arm" ], "(method 16 seagullflock)": [ "heading-to-target", "Return the heading angle from the given bird toward the flock's current path target." ], "(method 16 tracking-spline)": [ "prune-shallow-points!", "Delete interior breadcrumbs whose length-weighted straightness falls under the budget." ], "(method 16 vehicle-controller)": [ "debug-draw", "draw the path, the current steering circle, and the target point for debugging" ], "(method 16 water-control)": [ "exit-water!", "On leaving water: clear touch-water flag and stop the bob/smush." ], "(method 17 actor-link-info)": [ "apply-function-reverse", "Apply `func` to each entity-actor in the list before this one, stopping when the function returns a truthy value." ], "(method 17 drawable-ambient)": [ "collect-ambients", "Call this function on the first `drawable-ambient` in an `(inline-array drawable-ambient)` to collect\na list of all ambients that overlap the `collection-range` sphere.\nThis is a clever trick to avoid virtual dispatch per-element." ], "(method 17 drawable-inline-array-ambient)": [ "collect-ambients", "Collect all ambients intersecting the given sphere into the list." ], "(method 17 drawable-tree-ambient)": [ "collect-ambients", "Collect all ambients overlapping the given sphere in this tree into the given list." ], "(method 17 rigid-body)": [ "velocity-at-point", "compute the world velocity at a given world point (linear + angular contribution)" ], "(method 17 tracking-spline)": [ "add-point!", "Append a breadcrumb to the tail if far enough from the last; optionally prune and recycle a slot." ], "(method 18 actor-link-info)": [ "apply-all", "Apply `func` to all actors in the list, starting at the beginning of the list.\n`this` doesn't have to be the first actor in the list. Stops when `func` returns a non-truthy value." ], "(method 18 drawable-ambient)": [ "execute-ambient", "Run the logic for this ambient." ], "(method 18 nav-mesh)": [ "build-route-table-recursive", "flood-fill that records reachable polys into the route table" ], "(method 18 rigid-body)": [ "get-origin-position", "compute the body's render origin (position minus the rotated cm-offset joint) into out-position" ], "(method 18 tracking-spline)": [ "accumulate-sample!", "Walk arc-length forward from the sampler cursor and ADD the resulting trail position into the output vector." ], "(method 19 actor-link-info)": [ "send-to-all", "Send a 0-parameter message to all actors in the list,\neven if the provided actor-link-info isn't from the first actor" ], "(method 19 nav-control)": [ "steer-toward-point", "turn-rate-limited heading toward a goal, validating the step stays on mesh" ], "(method 19 path-control)": [ "get-closest-vertex-index-to-target", "Return the `vertex-index.interp` position on the path closest (in XZ) to the player's target." ], "(method 19 tracking-spline)": [ "sample-point!", "Reset the output then sample the single trail position arc-length forward from the sampler cursor." ], "(method 20 actor-link-info)": [ "send-to-all-after", "`send-event!` with a 0 parameter message to all actors after the given actor." ], "(method 20 balloonlurker-pilot)": [ "init-collision!", "create and configure the moving collide-shape (single sphere prim) for the pilot" ], "(method 20 baseplat)": [ "spawn-part!", "spawn the platform's particle group at root trans if part is set" ], "(method 20 blue-eco-charger)": [ "target-near-with-blue-eco?", "true if target is within range and currently has blue eco" ], "(method 20 blue-eco-charger-orb)": [ "randomize-target-orbit-rotv!", "pick a new random per-axis target orbit angular velocity, scaled by open-level" ], "(method 20 bully)": [ "update-spin-velocity!", "set travel velocity from heading/speed, bounce off walls/mesh boundaries, apply gravity" ], "(method 20 cave-trap)": [ "try-spawn-baby-spider", "Pick the best nearby alt-actor vent/egg and spawn a baby-spider there." ], "(method 20 caveelevator)": [ "update-bounce!", "once per frame, apply the smush bounce offset to the elevator's y position" ], "(method 20 citb-sagecage)": [ "init-collision!", "Build and attach the cage's moving collide-shape (root prim sphere)." ], "(method 20 dark-crystal)": [ "damage-target-in-blast-radius!", "if the player is within the danger radius with clear line of sight, deal an attack to them" ], "(method 20 driller-lurker)": [ "update-movement-and-drill!", "Per-frame: advance along path, face/aim, spin drill, manage drill sound and neck look-at." ], "(method 20 drop-plat)": [ "setup-collision!", "build the moving collide-shape (single sphere mesh prim, rider) and install it as root" ], "(method 20 exit-chamber)": [ "bob-on-waves!", "bob the chamber's y position sinusoidally around its original trans, scaled by wave-scale" ], "(method 20 flutflutegg)": [ "apply-hit-impulse!", "apply a velocity + x/y wobble impulse to the egg when hit, rate-limited to once per 0.5s" ], "(method 20 flying-lurker)": [ "update-shadow!", "probe ground below the lurker, set shadow planes, and grow draw-bounds to fit shadow" ], "(method 20 gnawer)": [ "copy-segment-from-prev!", "Copy the previous segment's world-pos and orient-mat into this segment." ], "(method 20 joint-exploder)": [ "add-joint!", "Push the joint at joint-idx onto the head of the list's doubly-linked list." ], "(method 20 junglesnake)": [ "update-tracking-and-twist!", "seek body yaw toward player and propagate twist down the joints" ], "(method 20 lurkerworm)": [ "aim-at-target!", "Each frame, sway the worm body toward the player and seek the head-tilt to the vertical angle to target." ], "(method 20 mother-spider)": [ "find-baby-spawn-spot?", "pick a nav-mesh spot near the spider for a baby/egg, return its ground pos and normal" ], "(method 20 orbit-plat-bottom)": [ "point-jet-streak!", "aim/scale the jet-streak particle along the line from from-point to to-point" ], "(method 20 path-control)": [ "get-closest-percent-to-target", "Return the fraction (0..1) along the path of the point closest to the player's target." ], "(method 20 puffer)": [ "travel-to-point!", "Navigate toward dest, steering around mesh boundaries/nav spheres and updating travel/facing." ], "(method 20 ram)": [ "spawn-wall-hit-particles!", "spawn the wall-impact dust burst in front of the ram on slam" ], "(method 20 rigid-body)": [ "print-force-torque", "print only the current force and torque vectors" ], "(method 20 snow-gears)": [ "spawn-drip-particles", "Spawn the dripping-water particle group above the gears each frame while running." ], "(method 20 steam-cap)": [ "shove-target-off!", "If the player is riding/near the rising cap, shove them off." ], "(method 20 sunken-pipegame)": [ "build-completed-challenges-mask", "return a 3-bit mask of which pipe prizes are already collected/done" ], "(method 20 sunkenfisha)": [ "reverse-path-direction!", "flip path-dir, reset speed, pick new target speed/turn-time and adjust offset" ], "(method 20 swamp-bat-slave)": [ "get-path-position", "current position along the path curve (sync phase scaled by path-point-count)" ], "(method 20 swamp-rat-nest-dummy)": [ "init-collision-and-skeleton!", "Build this subtype's collide-shape and initialize its skeleton." ], "(method 20 swamp-rope)": [ "still-tethered?", "#t while the rope's other entity exists and its task still needs a reminder" ], "(method 20 tracking-spline)": [ "apply-trail-correction!", "Nudge the proposed camera move sideways toward the breadcrumb trail (rubber-band corner-hugging)." ], "(method 20 whirlpool)": [ "swirl-target!", "pull and spin the player toward the whirlpool center when within range" ], "(method 20 yeti)": [ "find-slave-spawn-point!", "Search path curve points for a spot far from existing slaves/target; write spawn pos and facing dir to outputs. Returns #t if found." ], "(method 21 actor-link-info)": [ "send-to-all-before", "`send-event!` with a 0 parameter message to all actors before the given actor." ], "(method 21 balloonlurker-pilot)": [ "init-skeleton!", "initialize the pilot's skeleton and set its render origin joint" ], "(method 21 baseplat)": [ "init-platform!", "mark skeleton inited, snapshot root trans into basetrans, clear bouncing" ], "(method 21 blue-eco-charger)": [ "notify-master!", "tell the master exit-chamber this charger turned on (1) or off (2), with its charger-id" ], "(method 21 caveelevator)": [ "update-draw-bounds!", "set draw bounds offset from root to joint 3 with radius 17408" ], "(method 21 citb-base-plat)": [ "setup-collision!", "build the moving collide-shape (ground-object prim) and install it as root" ], "(method 21 citb-disc)": [ "init-skel!", "init the disc skeleton (base stub; overridden per variant)" ], "(method 21 citb-generator)": [ "setup!", "init skeleton/lods, mushroom config, particles and ambient sound" ], "(method 21 citb-sagecage)": [ "init-cage!", "Init skeleton, bar particle positions, ambient sound and bar/clone state." ], "(method 21 dark-crystal)": [ "record-destroyed-and-all-done?", "mark this crystal destroyed in the task reminder; return #t if it was the last of the six" ], "(method 21 drop-plat)": [ "init-skeleton-and-spin!", "init the skeleton for this color variant and pick a random tumble spin axis/speed" ], "(method 21 exit-chamber)": [ "compute-item-placements!", "fill exit-chamber-items with door/button/fcell positions and quats from the chamber bone" ], "(method 21 final-door)": [ "setup-skeleton!", "Initialize the door's skeleton with the subtype-specific skeleton group." ], "(method 21 gnawer)": [ "place-segment-along-route!", "Position one segment at route distance, set its orient-mat, and grow the bounding box." ], "(method 21 helix-water)": [ "consume-next-alt-actor!", "As the water rises, kill/disable the next alt-actor once the water level reaches it." ], "(method 21 joint-exploder)": [ "grow-bbox!", "Expand the list's bounding box to contain the joint's current position and previous position." ], "(method 21 junglesnake)": [ "init-tilt-joints!", "initialize the 3 head tilt-joints and flag the head twist/tilt joints" ], "(method 21 mother-spider)": [ "hit-from-dir!", "push swing toward hit-dir; if do-damage?, spin/detach legs and report if fully damaged" ], "(method 21 nav-control)": [ "find-poly-fast-at", "find-poly-fast for a world-space point (identical to method 16)" ], "(method 21 puffer)": [ "setup-collision!", "Build the puffer's moving collide-shape with head/mouth/tail prim spheres." ], "(method 21 ram)": [ "spawn-wheel-puffs!", "spawn dust puffs at both sides of both rear wheels during the slam" ], "(method 21 rigid-body)": [ "update-matrix!", "rebuild the orientation matrix from rotation and refresh the world origin" ], "(method 21 steam-cap)": [ "update-motion!", "Per-frame: drive the 3 control points up/down by phase, spawn steam/sound, orient root." ], "(method 21 sunken-pipegame)": [ "set-actor-pause!", "set/clear the actor-pause process-mask on self and all child processes" ], "(method 21 sunkenfisha)": [ "get-path-point-with-offset", "world point on path at u, plus trans-offset and tangent-aligned local-offset" ], "(method 21 swamp-rat-nest-dummy)": [ "init-spawn-joints!", "Fill this subtype's spawn-joint array and particle/death config; return particle spawn joint." ], "(method 21 tracking-spline)": [ "follow-update!", "Per-frame trail follower: rate-govern crawl speed/sample width, box-average, rubber-band correct, write the smoothed position." ], "(method 22 actor-link-info)": [ "send-to-next-and-prev", "Send a 0-parameter message to the next and previous actor." ], "(method 22 baseplat)": [ "bounce!", "start a smush bounce, set bouncing, and wake the platform from sleep" ], "(method 22 citb-base-plat)": [ "setup-skeleton!", "initialize the skeleton/skelgroup for this platform" ], "(method 22 gnawer)": [ "update-segments!", "Place all segments along the route at the given distance; return #t when at the destination." ], "(method 22 joint-exploder)": [ "collide-joints!", "Probe each joint in the list against background collision and bounce it off any surface it hits." ], "(method 22 junglesnake)": [ "init-twist-joints!", "initialize the 24 body twist-joints with joint indices, base yaw, and drag deltas" ], "(method 22 mistycannon)": [ "fire!", "Fire the cannon: compute launch velocity from aim, spawn the missile, and reset aim." ], "(method 22 mother-spider)": [ "aim-thread-segment!", "build orthonormal basis in mat with z-axis pointing from mat's origin toward target-pos" ], "(method 22 nav-control)": [ "point-on-mesh-below?", "is the world point on the mesh and below origin-y + y-tolerance?" ], "(method 22 puffer)": [ "buddy-nearby?", "True if this puffer's buddy process is alive and within xz patrol distance." ], "(method 22 ram)": [ "complete-ram-task!", "mark this ram complete, update reminder tasks, return whether to give the fuel cell" ], "(method 22 rigid-body)": [ "reset!", "reset the body to the given position/rotation, clearing momentum, velocity and inertia state" ], "(method 22 rigid-body-platform)": [ "float-height-at", "Return the height (w component) the platform should float to at the given position/time. Base rigid-body-platform samples the water/ocean surface plus float-height-offset; citb-chain-plat returns a bobbing offset above its original anchor height." ], "(method 22 seagull)": [ "set-glide-sink-velocity!", "Set a fixed downward velocity used while soaring/gliding." ], "(method 22 snow-ball-roller)": [ "attack-target!", "Bounce the ball up and shove the given process away with an attack event." ], "(method 22 sunken-pipegame)": [ "set-active-prize-collision!", "enable (restore) or disable (clear) collision on the currently-playing prize" ], "(method 22 sunkenfisha)": [ "dummy-update!", "empty per-frame/update stub (does nothing on the base type)" ], "(method 22 tracking-spline)": [ "trim-to-length!", "If the live trail exceeds the max length, advance the head to drop the oldest breadcrumbs until it fits." ], "(method 22 water-vol)": [ "setup-water!", "Initialize this water volume: base water-vol is a stub; water-anim sets up the skeleton/animation and ambient sound, and level subtypes add ripple/tint configuration." ], "(method 23 actor-link-info)": [ "send-to-next", "Send a 0-parameter message to the next actor if it is alive." ], "(method 23 driller-lurker)": [ "update-player-path-u", "Project the player onto the lurker's path and cache/return the player's path-u (once per frame)." ], "(method 23 exit-chamber)": [ "reposition-items!", "update bounds and move door/button/player (and fcell if move-fcell-too?) to follow the chamber" ], "(method 23 gnawer)": [ "hide!", "Hide the gnawer, disable its collision, and park all segments at the post." ], "(method 23 joint-exploder)": [ "init-joints!", "Initialize every exploder joint's matrices and launch velocity, then seed the first list with all joints." ], "(method 23 junglesnake)": [ "enable-lethal!", "make the snake lethal by clearing the head prim's solid action" ], "(method 23 mistycannon)": [ "spawn-muzzle-part!", "Update muzzle-flash particle angles from aim and spawn them for 3s after firing." ], "(method 23 mother-spider)": [ "update-physics!", "advance thread distance, swing position/velocity (with wall bounce) and spin, then set trans/quat" ], "(method 23 nav-control)": [ "check-vector-collision-with-nav-spheres", "nearest forward sphere hit along a travel direction" ], "(method 23 nav-mesh)": [ "clip-travel-to-poly", "clip a travel vector to a single poly's edges, recording the exit neighbor" ], "(method 23 puffer)": [ "pick-patrol-point!", "Choose a new patrol dest-pos; if away-from-buddy, pick the path point facing away from the buddy." ], "(method 23 rigid-body-platform)": [ "accumulate-forces!", "For one physics tick: update each control point's world position/velocity, accumulate buoyancy+drag forces, then apply gravity and player forces to the rigid body. Subclass overrides call the parent and then add a centering/tether pull toward an anchor." ], "(method 23 sunkenfisha)": [ "update-facing-rotation!", "smooth facing-rot toward velocity pitch/yaw and write root quat" ], "(method 23 tracking-spline)": [ "debug-draw", "Draw debug viz of the spline: crosses at endpoint samples, lines between points, output velocity." ], "(method 24 actor-link-info)": [ "send-to-prev", "Send a 0-parameter message to the actor before this actor." ], "(method 24 baseplat)": [ "setup-collision!", "build the moving collide-shape and install it as root" ], "(method 24 citb-base-plat)": [ "go-initial-state!", "enter the platform's starting state (idle by default)" ], "(method 24 driller-lurker)": [ "in-attack-range?", "#t when the player is close enough (or near the same path position) for the lurker to attack." ], "(method 24 eco-door)": [ "setup-collision!", "build the door collide-shape and install it as root" ], "(method 24 exit-chamber)": [ "spawn-water-drips!", "launch water-drip particles at a random point on a ring (radius) around the chamber's top bone" ], "(method 24 gnawer)": [ "pick-route!", "Pick a random far-apart src/dest path point pair and compute the run route." ], "(method 24 joint-exploder)": [ "kill-joint!", "Unlink the joint from the list and collapse its matrix onto the root, returning the next joint index." ], "(method 24 junglesnake)": [ "disable-lethal!", "make the snake non-lethal by restoring solid action and pushing the player away" ], "(method 24 nav-control)": [ "clip-travel-to-mesh", "wrapper: clip this nav-control's travel vector to the mesh" ], "(method 24 projectile)": [ "spawn-particles", "Per-frame update: spawn fly particles at the world sphere, reposition the track sound, and draw a ground shadow." ], "(method 24 puffer)": [ "point-reachable?", "True if point is inside the nav mesh and below the puffer's notice ceiling." ], "(method 24 rigid-body-platform)": [ "apply-buoyancy-and-drag!", "for one submerged control point, apply buoyancy and drag forces to the body" ], "(method 24 seagull)": [ "steer-toward-target!", "Turn toward the flock target, mark waterfall arrival, and update angletan and target-dist." ], "(method 24 sunkenfisha)": [ "update-local-path-offset!", "drift local-path-offset toward target, re-randomizing target when reached" ], "(method 25 actor-link-info)": [ "actor-count", "Count the total number of actors in an actor list given any actor in the list." ], "(method 25 baseplat)": [ "setup-part!", "create the launch-control for the platform's particle group and store it in part" ], "(method 25 driller-lurker)": [ "should-start-chase?", "#t when the player is within detection range (and roughly in front), so the lurker should begin chasing." ], "(method 25 eco-door)": [ "setup-skel-and-params!", "init skeleton, open/close distances and movement speed" ], "(method 25 gnawer)": [ "take-damage!", "Lose up to 3 hit-points, spawn falling segments, speed up; return #t when dead." ], "(method 25 joint-exploder)": [ "integrate-joints!", "Step every joint in the list (gravity, rotation, translation) and kill any that fall out of bounds." ], "(method 25 projectile)": [ "go-moving!", "Launch the projectile by entering the projectile-moving state." ], "(method 25 puffer)": [ "should-attack-target?", "True if the target is attackable, in range/height, and closer than the buddy." ], "(method 25 rigid-body-platform)": [ "apply-player-force!", "if the player is impacting/riding, apply the accumulated player force to the body" ], "(method 25 seagull)": [ "turn-toward-heading!", "Bank tilt and rotate heading one step toward the given target heading angle." ], "(method 25 sunkenfisha)": [ "advance-along-path!", "seek path-speed to target and advance path-u, reversing at the path ends" ], "(method 25 water-vol)": [ "setup-from-res!", "Pre-skeleton setup hook: apply res-lump look/trans-offset/rotoffset to root (base no-op)." ], "(method 26 basebutton)": [ "setup-skel-and-anim!", "initialize the button's skeleton and pose its anim channel to the up/down (pressed/unpressed) frame" ], "(method 26 baseplat)": [ "configure-options!", "post-init tweaks (masks, scale, distances, res-lump options)" ], "(method 26 driller-lurker)": [ "lost-player?", "#t when the player is out of chase range (too far/wrong height), so the lurker should give up and patrol." ], "(method 26 eco-door)": [ "update-locked!", "set the locked flag from the state-actor's completion status and the door flags" ], "(method 26 gnawer)": [ "unhide!", "Un-hide the gnawer, restore collision, and re-enable the joint callback." ], "(method 26 joint-exploder)": [ "remove-joint!", "Unlink the joint at joint-idx from the doubly-linked list, returning the next joint index." ], "(method 26 nav-control)": [ "post-relocalize-hook", "empty hook called at the end of relocalize (overridden by subclasses)" ], "(method 26 projectile)": [ "init-proj-collision!", "Build the projectile's collide-shape-moving + sphere prim, install it as root, and set the process collide masks." ], "(method 26 puffer)": [ "update-anim!", "Drive the inflate/deflate look and animation channel based on sync phase and attacking state." ], "(method 26 rigid-body-platform)": [ "apply-gravity!", "apply the downward gravity force to the body's center of mass" ], "(method 26 seagull)": [ "teleport-near-target!", "Move the bird most of the way to a random point near the flock target and clear the teleport flag." ], "(method 26 sunkenfisha)": [ "setup-collision-and-skel!", "build root/trsqv and init skeleton with a random fish color variant" ], "(method 26 trsqv)": [ "set-and-limit-velocity", "Set the `transv` to the given velocity, limited to a magnitude of `limit`." ], "(method 27 basebutton)": [ "setup-collision!", "build the button's moving collide-shape, install it as root, and return it" ], "(method 27 battlecontroller)": [ "setup-paths-and-params!", "read entity res-lump to init fact, spawner paths, creature types, pickups and battle params" ], "(method 27 driller-lurker)": [ "spawn-drill-debris", "Spawn the drilling-debris particle group just ahead of the drill bit joint." ], "(method 27 entity-actor)": [ "next-actor", "Get the next actor from an entity-actor that is in a linked list of actors." ], "(method 27 gnawer)": [ "maybe-pick-green-eco-pickup!", "Based on death-count and target health, maybe mark one pickup slot as green eco." ], "(method 27 joint-exploder)": [ "split-list!", "Split the list in half along the given axis at its bbox midpoint, moving one half into a free list and returning it." ], "(method 27 mother-spider)": [ "unused-hook-27", "empty/unused virtual-method slot (never called, does nothing)" ], "(method 27 nav-control)": [ "relocalize-in-mesh!", "update current-poly by ray-walking from prev-pos to the body's new position" ], "(method 27 orbit-plat)": [ "reset-step!", "advance the platform one frame back toward its home position, coordinating orbit/reset with the partner" ], "(method 27 plat-button)": [ "pose-skeleton!", "pose the skeleton to the start or end anim frame based on activation, then post" ], "(method 27 projectile)": [ "init-proj-settings!", "Set up the mother-spider projectile: parts, speed/turn/tween, attack-mode, target at the player, and fire/track sounds." ], "(method 27 puffer)": [ "update-vertical-velocity!", "Update vertical velocity to chase target height (attack) or bob between patrol bounds." ], "(method 27 rigid-body-platform)": [ "apply-restoring-force!", "Apply a horizontal restoring force pulling the rigid body back toward target-pos when it has drifted past a threshold distance from its anchor." ], "(method 27 seagull)": [ "integrate-with-air-bounds!", "Integrate motion this frame, skipping collision while inside the seagull air boxes and colliding with background otherwise." ], "(method 27 square-platform)": [ "spawn-water-crossing-effects!", "spawn splash/bubble particles as the platform crosses the water surface (rising? selects breach vs submerge effects)" ], "(method 27 sunkenfisha)": [ "setup-path-and-params!", "read res-lump params and init path, offsets, speeds and initial facing" ], "(method 27 wedge-plat)": [ "update-tip-state?", "orbit/rotate the platform around the master's angle; return #t when at the tipping orientation" ], "(method 28 entity-actor)": [ "prev-actor", "Get the previous actor from an entity-actor that is in a linked list" ], "(method 28 entity-ambient)": [ "birth-ambient!", "\"Birth\" the ambient. This simply resolves data from res-lumps into the runtime formats, looking up names,\nsetting up callback functions, etc." ], "(method 28 gnawer)": [ "pick-random-free-bit", "Return a random bit (as mask) in [0,num-bits) that is not set in used-mask, else 0." ], "(method 28 joint-exploder)": [ "subdivide-list!", "Recursively split the list along whichever axis exceeds the size threshold until each sub-list is small enough." ], "(method 28 mother-spider)": [ "unused-hook-28", "empty/unused virtual-method slot (never called, returns 0)" ], "(method 28 nav-control)": [ "gather-nav-spheres!", "rebuild this frame's obstacle-sphere list for the steering planner" ], "(method 28 orbit-plat)": [ "reset-timeout?", "#t once timeout elapsed and the player is gone/far/below, so the platform should reset" ], "(method 28 plat)": [ "reset-timeout?", "slot for \"should this still platform give up and return home?\"; only overridden by orbit-plat" ], "(method 28 plat-button)": [ "setup-collision!", "build the moving collide-shape prim-group and install as root" ], "(method 28 projectile)": [ "update-target!", "Per-frame homing: refresh the target point at the player (leading by their velocity) unless they are invulnerable." ], "(method 28 puffer)": [ "update-shadow!", "Probe the ground below the puffer and configure shadow clip planes (or hide shadow)." ], "(method 28 rigid-body-platform)": [ "simulate!", "detect riders, sample player velocity, and run the fixed-timestep physics simulation loop" ], "(method 28 ropebridge)": [ "ropebridge-stub-28", "empty/unused ropebridge-specific method slot; returns 0 and does nothing" ], "(method 29 basebutton)": [ "notify-event!", "send an event message to the notify-actor, or to all linked buttons if none" ], "(method 29 gnawer)": [ "compute-pickup-position!", "For a path point, compute the pickup spawn position and an outward/upward jump vector." ], "(method 29 mother-spider)": [ "update!", "once-per-frame update: run physics, body scale, leg-socket particles, optional shadow and neck-track" ], "(method 29 rigid-body-platform)": [ "setup-from-constants!", "initialize the platform and its rigid body from the given constants table" ], "(method 30 gnawer)": [ "claim-nearest-pickup!", "Clear the money-mask bit of the pickup point nearest the picker, returning the updated mask." ], "(method 30 nav-control)": [ "find-deepest-sphere-along-ray", "return the avoidance sphere the ray overlaps most (or #f)" ], "(method 30 puffer)": [ "set-small-mouth-collision!", "Switch to cprims-type 1: small (deflated) mouth collision sphere." ], "(method 30 rigid-body-platform)": [ "init-collision!", "Create and configure the moving collide-shape (sphere prim, riders, collide kinds/actions) for the platform and install it as root-overlay." ], "(method 31 assistant-lavatube-end)": [ "get-art-elem", "Get default art-element, typically idle animation." ], "(method 31 plat-button)": [ "setup-skeleton!", "initialize the exit-plat skeleton/skelgroup" ], "(method 31 puffer)": [ "set-large-mouth-collision!", "Switch to cprims-type 2: large (inflated/attack) mouth collision sphere." ], "(method 31 rigid-body-platform)": [ "init-platform!", "Per-subclass platform initialization: set up constants, place the control points (typically around a circle) and initialize instance state. citb-chain-plat also inits the skeleton and caches its original transform; ogre-plat resets active/triggered state." ], "(method 32 assistant-lavatube-end)": [ "play-anim!", "Play the animation as needed. If `actually-play?` is `#f`, just returns the animation for pre-loading or\nsimilar." ], "(method 32 nav-control)": [ "avoid-spheres", "tangent-bug steering: deflect travel around avoidance spheres (#t if deflected)" ], "(method 32 plat-button)": [ "go-initial-state!", "start raised if activated, else enter the idle state" ], "(method 32 rigid-body-platform)": [ "sync-on-state!", "match this platform's lit state and on-visual to the master's puzzle state, playing on/off sfx" ], "(method 33 nav-control)": [ "avoid-spheres-and-detect-blocked", "run avoid-spheres, then flag/fire blocked if travel shrinks" ], "(method 33 process-taskable)": [ "prefetch-play-anim!", "Low-priority spool-push of the play-anim so it is loaded before it is needed." ], "(method 33 rigid-body-platform)": [ "notify-master-ridden!", "tell the qbert-plat-master that the player just stepped onto this platform" ], "(method 34 rigid-body-platform)": [ "go-initial-state", "Enter the platform's initial state. Base rigid-body-platform always goes to rigid-body-platform-idle; ogre-step enters -float if already active, otherwise -idle." ], "(method 35 nav-control)": [ "avoid-spheres-world", "like avoid-spheres but takes a world-space start point (converts to local)" ], "(method 37 nav-enemy)": [ "turn-toward-travel!", "Seek facing toward target point or travel heading; spin in place when not orienting." ], "(method 38 nav-enemy)": [ "integrate-and-collide!", "Move the spider by transv, always snapping to background ground (move-to-ground override)." ], "(method 38 process-taskable)": [ "goto-post-anim-state!", "After play-anim, branch on task status: query for reminders, replay for reward, else default." ], "(method 39 assistant-lavatube-end)": [ "should-display?", "Should this character appear?" ], "(method 39 babak-with-cannon)": [ "common-post", "Load spooled animations for the babak." ], "(method 4 string)": [ "length", "Get the length of a string, like `strlen`." ], "(method 40 nav-enemy)": [ "update-nav-target!", "Point nav-control at our current nav target-pos so it recomputes the travel vector." ], "(method 40 process-taskable)": [ "init-as-taskable!", "Build collision/skeleton and set all taskable defaults from the entity, joints, and collision sphere." ], "(method 41 nav-enemy)": [ "compute-travel-velocity!", "Turn the nav travel direction into collide-info transv, applying momentum/accel (or align) and gravity." ], "(method 42 process-taskable)": [ "goto-initial-state!", "Enter idle or hidden depending on whether the sage should display." ], "(method 43 process-taskable)": [ "try-play-ambient-chatter", "Occasionally play a random welding ambient line when the player is nearby." ], "(method 44 baby-spider)": [ "touch-handler", "Handle incoming touch: send an attack to the incoming process and go victory if we won." ], "(method 45 blue-sagecage)": [ "update-beam-direction!", "Push the sage's rot-y/rot-x into the beam particle init-specs (base citb-sage just records spawn-pos).", "annotation" ], "(method 45 citb-sage)": [ "update-beam-direction!", "Push the sage's rot-y/rot-x into the beam particle init-specs (base citb-sage just records spawn-pos).", "annotation" ], "(method 45 green-sagecage)": [ "update-beam-direction!", "Push the sage's rot-y/rot-x into the beam particle init-specs (base citb-sage just records spawn-pos).", "annotation" ], "(method 45 red-sagecage)": [ "update-beam-direction!", "Push the sage's rot-y/rot-x into the beam particle init-specs (base citb-sage just records spawn-pos).", "annotation" ], "(method 45 sage)": [ "reminder-due?", "True when a closed task's reminder is still unseen, or the reminder played and the player has moved far away.", "annotation" ], "(method 45 sage-bluehut)": [ "should-play-reminder?", "True when a reminder line is due (a need-reminder task is closed or the player wandered far after reminder-played).", "annotation" ], "(method 45 sage-finalboss)": [ "update-beam-direction!", "override: spawn the assistant manipy on the finalboss level and set it up as a clone-anim blend-shape", "annotation" ], "(method 45 yellow-sagecage)": [ "update-beam-direction!", "Push the sage's rot-y/rot-x into the beam particle init-specs (base citb-sage just records spawn-pos).", "annotation" ], "(method 46 process-taskable)": [ "update-music-and-flava!", "Add/remove sound-flava and music settings based on the player's proximity." ], "(method 47 assistant-bluehut)": [ "target-above-threshold?", "Determine if we should prompt for interaction - mainly checks to see if target is closer to us\nor the sage." ], "(method 48 assistant-levitator)": [ "draw-npc-shadow", "Calculate the plane and angle for shadow drawing." ], "(method 48 citb-bunny)": [ "setup-enemy!", "Post-init hook: build skeleton, apply nav-enemy-info defaults, set defense/retreat from entity mode, and configure neck/attack/patrol fields.", "replace" ], "(method 48 nav-enemy)": [ "setup-enemy!", "Per-subclass post-init hook called from init-from-entity! after collision/entity setup: initialize the skeleton, nav-enemy-info defaults, particle/joint controls and enemy-specific state. Empty stub on the nav-enemy base." ], "(method 5 string)": [ "asize-of", "Get the size in bytes of this object." ], "(method 50 nav-enemy)": [ "jump-dest-blocked?", "Test whether a jump destination lies inside any nav-mesh sphere relative to our origin, i.e. the jump is blocked." ], "(method 50 process-taskable)": [ "target-far-away?", "True when the player (or camera) is far enough that the NPC can leave the hidden-other state." ], "(method 51 baby-spider)": [ "randomize-wiggle!", "Randomize the chase wiggle rate, amplitude and target-speed for variety.", "annotation" ], "(method 51 double-lurker)": [ "split-collision!", "Reconfigure collide prims for the lone bottom lurker: clear the shoulder prims and turn indestructible body prims into touch prims.", "annotation" ], "(method 51 double-lurker-top)": [ "enable-collision!", "Re-enable the top lurker's collision and nav: restore collide-with, set navf0, sync nav-control.", "annotation" ], "(method 51 green-eco-lurker)": [ "appear-dest-valid?", "#t if candidate-point is far enough from the player and not blocked by the nav mesh (usable appear destination)", "replace" ], "(method 51 ice-cube)": [ "snap-point-to-ground", "Y-probe down from in-point to the background ground, writing the ground point to out-point; #f if no valid ground (or lava)." ], "(method 51 muse)": [ "spawn-sparkle-particles!", "Emit sparkle particles at two random body joints each frame for the muse's glow effect.", "annotation" ], "(method 51 ram-boss)": [ "turn-needed-to-throw?", "#t if the boss must keep turning before throwing; if within ~60deg, nudges throw-dir and returns #f (ready)." ], "(method 51 snow-bunny)": [ "probe-ground-below?", "y-probe for background ground under in-point, write the snapped point to out-point; #f if none/bad pat", "replace" ], "(method 52 assistant-levitator)": [ "setup-shadow-settings!", "Set shadow clipping planes as an optimization to reduce shading when drawing shadow geometry." ], "(method 52 baby-spider)": [ "wiggle-nav-target!", "Offset the nav target side-to-side around base-pos via a sine wiggle, giving the chase a weaving path.", "annotation" ], "(method 52 double-lurker)": [ "find-knockback-fall-dest?", "Compute where the top lurker should fall when hit: a far-enough nav point with valid ground below; #t and writes the point if found.", "annotation" ], "(method 52 green-eco-lurker)": [ "pick-appear-dest?", "scan the path vertices in random order for a valid appear spot, writing it to out-point; #t if found", "annotation" ], "(method 52 ice-cube)": [ "valid-appear-point?", "True if candidate-pt is a good place to surface: in the right distance band from the player, not jump-blocked, and on-screen.", "annotation" ], "(method 52 process-taskable)": [ "setup-shadow-settings!", "configure the NPC's shadow-control top/bottom clip planes (subtypes offset them by the actor's height)" ], "(method 52 ram-boss)": [ "enable-ground-combat-collision!", "Resize the body prims and arm the shield prim as a solid attacking surface for ground combat." ], "(method 52 snow-bunny)": [ "setup-chase-hop?", "compute the next chase-hop nav target toward the player (or a jump-event); #f if no valid hop", "replace" ], "(method 53 baby-spider)": [ "dead-if-not-visible?", "Refresh last-visible-time while on-screen; return #t once off-screen long enough to die.", "annotation" ], "(method 53 double-lurker)": [ "find-free-path-point?", "Scan path vertices (from a random start) for one not blocked by a nav-sphere; writes it to out-point, returns #t if a free spot was found." ], "(method 53 green-eco-lurker)": [ "update-appear-shadow!", "while visible at full LOD enable the shadow and clamp its top/bottom planes around the appear-dest height, else hide it", "annotation" ], "(method 53 ice-cube)": [ "pick-appear-point-and-facing", "Search path points for a valid appear spot; write its ground position to out-pos and the facing dir (toward player) to out-dir." ], "(method 53 ram-boss)": [ "disarm-shield-collision!", "switch body prims to 'touch offense and disable the shield prim (used when the shield is knocked off)", "annotation" ], "(method 53 snow-bunny)": [ "pick-patrol-hop-dest?", "choose a far-enough, on-ground path vertex as the next patrol destination; #t if one was found", "annotation" ], "(method 54 ice-cube)": [ "pick-charge-target-point!", "Scan path points for one far enough away with valid ground, store it in target-pt; #t on success.", "annotation" ], "(method 54 ram-boss)": [ "get-throw-point!", "Compute the world-space muzzle point (offset from joint 18) where the bolus projectile is launched, storing it in out-point and returning it. Uses the original base slot signature (_type_ vector) symbol (shared with ice-cube).", "annotation" ], "(method 54 snow-bunny)": [ "setup-patrol-hop?", "Compute the next patrol-hop nav target toward final-dest (or a queued jump-event); return #f if no valid hop. Distinct :replace'd slot (signature (_type_) symbol).", "replace" ], "(method 55 ram-boss)": [ "line-of-sight-to-target?", "probe from the boss's eye to the player; #t if the line of sight is clear", "annotation" ], "(method 55 snow-bunny)": [ "setup-retreat-hop?", "pick the best hop fleeing away from the player (tries two angles); #f if none works", "annotation" ], "(method 57 nav-enemy)": [ "set-spikes-retracted-collision!", "Switch collision prims to the small \"spikes retracted\" (harmless) shape (cprims-type 1)." ], "(method 57 ram-boss)": [ "target-pitch-interp", "Return a 0..1 up/forward defend-anim blend factor from the pitch angle to the player, smoothed with prev-interp." ], "(method 57 snow-bunny)": [ "should-defend?", "#t when the dangerous player is close enough and fast-approaching that the bunny must defend", "replace" ], "(method 58 collide-shape-moving)": [ "integrate-and-revert-if-blocked!", "Integrate by velocity (no ground snap); if we end up overlapping another shape, snap back to the previous position. Returns #t if blocked." ], "(method 58 ice-cube)": [ "set-spikes-extended-collision!", "ice-cube override: switch collision prims to the large \"spikes extended\" (dangerous) shape (cprims-type 2).", "annotation" ], "(method 58 snow-bunny)": [ "update-nondangerous-time!", "refresh the timestamp of when the player was last not dangerous", "annotation" ], "(method 59 nav-enemy)": [ "go-initial-state!", "Pick babak's starting state: fuel-cell if carrying a collected power cell, wait-for-cue if flagged, else idle." ], "(method 60 citb-bunny)": [ "setup-skeleton!", "build the citb-bunny skeleton from its skelgroup and set the origin joint", "annotation" ], "(method 60 ice-cube)": [ "seek-heading-to-target?", "Optionally refresh target-pt to the player, turn toward it, return whether we are now roughly facing it.", "annotation" ], "(method 60 snow-bunny)": [ "setup-skeleton!", "build the bunny skeleton from its skelgroup and set the origin joint", "replace" ], "(method 76 snow-bunny)": [ "set-shadow-airborne!", "lower the shadow's bottom-plane when the bunny is airborne so its shadow projects further" ], "(method 9 actor-link-info)": [ "get-matching-actor-type-mask", "Given any actor in a list of actors, return a bitmask of all actors in the list where bit-i is set to 1 if \nentity-actor i is exactly type `matching-type`. In other words, test bit `i` of the mask to see if actor\n`i` is of the given type." ], "(method 9 align-control)": [ "compute-alignment!", "Compare the previous and current animation data to compute the change in the animated `align` matrix.\nThis change in the `align` matrix corresponds to a shift that should be applied to a `process-drawable`'s\n`root` transform - animating the `align` matrix allows artists to move the actual process in the world.\nThis function only computes and stores the `delta` and deals with edge cases when switching animations,\nit does not modify the `process-drawable`'s position." ], "(method 9 baby-spider-spawn-params)": [ "init!", "Set up spider parameters." ], "(method 9 cam-index)": [ "setup-from-entity!", "Read the two endpoint vectors (from res data or curve ends) into the index and precompute its spherical/radial/linear parameterization." ], "(method 9 cavecrystal-light-control)": [ "set-crystal-light!", "set/clear crystal light slot's intensity, source handle and position; update active list and palette fade" ], "(method 9 draw-control)": [ "get-skeleton-origin", "Get the position of the 0th bone." ], "(method 9 edge-grab-info)": [ "update-and-validate!", "Re-track a held edge to its (possibly moving) actor and re-check the grab is still valid; #f to drop it." ], "(method 9 effect-control)": [ "update-effects", "Advance the active anim channel and fire any effect tags crossed this frame." ], "(method 9 rigid-body)": [ "set-mass-and-box-inertia!", "set the mass and compute the box inertial tensor (and its inverse) from dimensions" ], "(method 9 swamp-bat-idle-path)": [ "eval-point!", "write to out-pos the point on the idle ellipse at the given parametric angle (turns)" ], "(method 9 torus)": [ "debug-draw", "draw the torus as camera-line wireframe rings in the given color." ], "(method 9 tracking-spline)": [ "validate!", "Consistency check: recount the used and free chains and correct the counters if the lists are corrupt." ], "(method 9 twister)": [ "set-max-dry-range!", "set the per-frame max twist (max-dry) for joints start-joint..end-joint" ], "(method 9 water-control)": [ "water-control-init-extra!", "Unused stub hook for extra water-control init; empty in all versions." ], "actor-link-dead-hook": [ "actor-link-dead-hook", "Callback for checking to see if all actors in an actor list are dead.\nThis can be used as a callback for `apply-all` or similar.\nIt sets `ret` to `#t` if all actors are dead, otherwise it sets `ret` to `#f` and short circuits." ], "actor-link-subtask-complete-hook": [ "actor-link-subtask-complete-hook", "Callback for checking to see if all actors in an actor list are complete. \nThis can be used as a callback for `apply-all` or similar.\nIt sets `ret` to `#t` if all actors are complete, otherwise it sets `ret` to `#f` and short circuits." ], "alt-actor-list-subtask-incomplete-count": [ "alt-actor-list-subtask-incomplete-count", "Get the number of actors in this `alt-actor` list on this process which do not have the `complete` bit set\nin their permanent status." ], "ambient-hint-init-by-other": [ "ambient-hint-init-by-other", "Initialize a `level-hint` to play a hint from an ambient." ], "ambient-hint-spawn": [ "ambient-hint-spawn", "Spawn an ambient hint if it is appropriate to do so." ], "ambient-type-dark": [ "ambient-type-dark", "Run a \"dark\" ambient, which sets `*target*`'s `secondary-interp` to 1.0 when inside a volume." ], "ambient-type-error": [ "ambient-type-error", "Draw 3D debug text for a broken ambient." ], "ambient-type-hint": [ "ambient-type-hint", "Spawn an ambient hint." ], "ambient-type-light": [ "ambient-type-light", "useless \"light\" ambient. Checks if `pos` is within the volume, but has no effect." ], "ambient-type-music": [ "ambient-type-music", "Ambient to set music or flava." ], "ambient-type-ocean-near-off": [ "ambient-type-ocean-near-off", "Set `*ocean-near-off*`." ], "ambient-type-ocean-off": [ "ambient-type-ocean-off", "Set `*ocean-off*` to `#t` when this ambient runs, no volume check." ], "ambient-type-poi": [ "ambient-type-poi", "Unused \"point of interest\" ambient, which at some point would display text when approaching named location." ], "ambient-type-sound": [ "ambient-type-sound", "Start an ambient sound if it is appropriate to do so." ], "ambient-type-sound-loop": [ "ambient-type-sound-loop", "Play an ambient looping sound." ], "ambient-type-weather-off": [ "ambient-type-weather-off", "Check if `pos` is in a volume, if so set `*weather-off*` to `#t`." ], "aphid-init-by-other": [ "aphid-init-by-other", "Initialize an `aphid` and enter chase state." ], "aphid-invulnerable": [ "aphid-invulnerable", "Make aphid invulnerable." ], "aphid-vulnerable": [ "aphid-vulnerable", "remove invulnerability" ], "append-character-to-string": [ "append-character-to-string", "Append a single character to string." ], "assistant-levitator-blue-glow": [ "assistant-levitator-blue-glow", "Spawn particles" ], "babak-with-cannon-compute-cannon-dir": [ "babak-with-cannon-compute-cannon-dir", "Get the direction the cannon is pointing, as a unit vector." ], "babak-with-cannon-compute-ride-point": [ "babak-with-cannon-compute-ride-point", "Compute the ride point, a point local to the cannon where the babak should go." ], "babak-with-cannon-ride-cannon-post": [ "babak-with-cannon-ride-cannon-post", "Move the babak to ride the cannon at the right angle and position." ], "baby-spider-default-event-handler": [ "baby-spider-default-event-handler", "Override of event handler that sends us to victory on `'victory`" ], "can-grab-display?": [ "can-grab-display?", "Can this process draw its hint text or similar to the screen?\nOnce it returns #t, it will become the exclusive process to draw to the screen for 0.1 seconds." ], "cat-string<-string": [ "cat-string<-string", "Append b to a, no length checks." ], "cat-string<-string_to_charp": [ "cat-string<-string_to_charp", "Append b to a, using chars of b up to and including `end-ptr`, or the end of b, whichever is first." ], "catn-string<-charp": [ "catn-string<-charp", "Append `len` chars of `b` to `a`" ], "change-brother": [ "change-brother", "Unused and wrong.\nSeems like this assumes a process stores a `process-tree` reference directly, not `(poitner process-tree)`" ], "change-to-last-brother": [ "change-to-last-brother", "Move this process to the last spot in its list of brothers" ], "charp-basename": [ "charp-basename", "Like basename in C" ], "charp<-string": [ "charp<-string", "Copy a GOAL string into a C string." ], "check-drop-level-assistant": [ "check-drop-level-assistant", "Check if the particle hits the surface height stored in `user-float`: if so, chance to play drip sound,\nthen spawn a splash particle." ], "check-drop-level-assistant-bluehut": [ "check-drop-level-assistant-bluehut", "Check if particle has dropped past the threshold stored in `user-float`. If so, chance to play splash,\nand draw a splash particle." ], "clear": [ "clear", "Make string empty" ], "copy-charp<-charp": [ "copy-charp<-charp", "C string copy." ], "copy-string<-string": [ "copy-string<-string", "Copy data from `src` to `dst`, no length checks." ], "copyn-string<-charp": [ "copyn-string<-charp", "Copy `len` characters from a C-string to a GOAL string, inserting a null character." ], "entity-actor-count": [ "entity-actor-count", "Get the number of actors stored in `lump[name]`" ], "entity-actor-lookup": [ "entity-actor-lookup", "Get an `entity-actor` from a lump by name and index, return #f if invalid.\nThe lump can contain either an actor name or aid." ], "forward-down->inv-matrix": [ "forward-down->inv-matrix", "Create transformation matrix where `fwd` is forward and `dn` is down. If these are not perpendicular, `fwd`\ndetermines the pitch of the frame." ], "forward-down-nopitch->inv-matrix": [ "forward-down-nopitch->inv-matrix", "Create transformation matrix where `fwd` is forward and `dn` is down. If these are not perpendicular, `dn`\ndetermines the pitch of the frame." ], "forward-up->quaternion": [ "forward-up->quaternion", "Create the inverse transform for a coordinate frame where `fwd` is forward and `up` is up.\nUses the pitch of `fwd` to determine pitch when axes aren't perpendicular." ], "forward-up-nopitch->inv-matrix": [ "forward-up-nopitch->inv-matrix", "Create the inverse transform for a coordinate frame where `fwd` is forward and `up` is up.\nUses the pitch of `up` to determine pitch when axes aren't perpendicular." ], "forward-up-nopitch->quaternion": [ "forward-up-nopitch->quaternion", "Create the inverse transform for a coordinate frame where `fwd` is forward and `up` is up.\nUses the pitch of `up` to determine pitch when axes aren't perpendicular." ], "handle->process-safe": [ "handle->process-safe", "Strange unused implementation of `handle->process`." ], "kill-current-level-hint": [ "kill-current-level-hint", "Send `kill-event` to the current hint if it is one of the `allowed-modes` and not one of the `forbidden-modes`.\nPutting `'()` for mode will disable that filter." ], "level-hint-displayed?": [ "level-hint-displayed?", "Is there a currently displayed level hint that shouldn't be interrupted?" ], "level-hint-init-by-other": [ "level-hint-init-by-other", "Initialize a level hint, looking up the sound and mode." ], "level-hint-process-cmd": [ "level-hint-process-cmd", "Iterate through the `cmd-array`, executing commands and return the position of the next command to run,\nor `-1` if the command is a condition that is not met." ], "level-hint-spawn": [ "level-hint-spawn", "Try to spawn a level hint if it is appropriate to do so." ], "level-hint-surpress!": [ "level-hint-surpress!", "Suppress hints from playing by setting the last play time to now." ], "level-hint-task-process": [ "level-hint-task-process", "If this entity's hint can be played, run its command array. This can mutate game state and check conditions.\nIf all conditions pass, return the text-id. Otherwise, return -1." ], "matrix->quaternion": [ "matrix->quaternion", "Convert rotation matrix to quaternion." ], "matrix-from-two-vectors!": [ "matrix-from-two-vectors!", "Create a rotation matrix representing the rotation between two vectors." ], "matrix-from-two-vectors-max-angle!": [ "matrix-from-two-vectors-max-angle!", "Create a rotation matrix representing the rotation between two vectors, allowing at most a rotation of\n`max-rot` degrees." ], "matrix-from-two-vectors-max-angle-partial!": [ "matrix-from-two-vectors-max-angle-partial!", "Create a rotation matrix representing fraction `frac` of the rotation between `a` and `b`, limited to\n`max-rot` degrees." ], "matrix-from-two-vectors-partial-linear!": [ "matrix-from-two-vectors-partial-linear!", "Create a rotation matrix representing fraction `frac` of the rotation from `a` to `b`." ], "matrix-remove-z-rot": [ "matrix-remove-z-rot", "Remove z rotation (roll) from a matrix. Not sure how this works, it's unused and I think it could be wrong." ], "matrix-rot-diff!": [ "matrix-rot-diff!", "Get the rotation between two matrices, in degrees. Returns the rotation axis in `axis`." ], "matrix-with-scale->quaternion": [ "matrix-with-scale->quaternion", "Convert a matrix which contains scaling in addition to rotation to a quaternion." ], "name=": [ "name=", "Are `a` and `b` the same name? This works for strings and symbols." ], "normal-of-plane": [ "normal-of-plane", "Compute normal of plane given three points on it." ], "point-in-air-box-area?": [ "point-in-air-box-area?", "Check if point `x, z` (relative to air-box origin) is within the projected area of the air-box. Effectively doesn't check height." ], "point-in-air-box?": [ "point-in-air-box?", "Is `pt` inside the `air-box`? The `air-box` is a box that is axis-aligned on the y (vertical) axis." ], "point-in-air?": [ "point-in-air?", "Check if `pt` is in any of the boxes." ], "point-in-plane-<-point+normal!": [ "point-in-plane-<-point+normal!", "Given a plane's normal and `p0` a point on the plane, generate a second point on the plane.\nThe generated point is somewhat arbitrary - it is spaced out by 1 meter on the two axes that are least\nparallel to the plane's normal (avoiding numerical issues)" ], "points-in-air?": [ "points-in-air?", "Are both `p1` and `p2` inside any of the boxes?" ], "quaterion<-rotate-y-vector": [ "quaterion<-rotate-y-vector", "Create a quaternion representing only the yaw of the given vector." ], "quaternion*!": [ "quaternion*!", "Real quaternion multiplication." ], "quaternion+!": [ "quaternion+!", "Add quaternions as vectors." ], "quaternion-!": [ "quaternion-!", "Subtract quaternions as vectors." ], "quaternion->matrix": [ "quaternion->matrix", "Convert quaternion to rotation matrix." ], "quaternion-axis-angle!": [ "quaternion-axis-angle!", "Construct a quaternion from a normalized axis and angle." ], "quaternion-conjugate!": [ "quaternion-conjugate!", "Set `dst` to the quaternion conjugate (invert i,j, k). This represents the inverse rotation." ], "quaternion-copy!": [ "quaternion-copy!", "Copy a quaternion." ], "quaternion-delta-y": [ "quaternion-delta-y", "Difference in yaw between two quaternions." ], "quaternion-dot": [ "quaternion-dot", "Treat quaternions as vectors and take the dot product." ], "quaternion-exp!": [ "quaternion-exp!", "Inverse of quaternion-log!" ], "quaternion-float*!": [ "quaternion-float*!", "Multiply all components by `x`" ], "quaternion-float/!": [ "quaternion-float/!", "Divide each element in the quaternion by `x`." ], "quaternion-from-two-vectors!": [ "quaternion-from-two-vectors!", "Create a quaternion representing the rotation between two vectors." ], "quaternion-from-two-vectors-max-angle!": [ "quaternion-from-two-vectors-max-angle!", "Create a quaternion representing the rotation between two vectors, allowing at most a rotation of `max-rot`\ndegrees." ], "quaternion-i!": [ "quaternion-i!", "Create unit `i` quaternion." ], "quaternion-identity!": [ "quaternion-identity!", "Set quaternion to represent an identity rotation (no rotation)" ], "quaternion-inverse!": [ "quaternion-inverse!", "Return `q^-1` such that `q * q^-1 = identity`, even if `q` isn't normalized.\nIf `q` is normalized, it's faster to use `quaternion-conjugate`" ], "quaternion-j!": [ "quaternion-j!", "Create unit `j` quaternion." ], "quaternion-k!": [ "quaternion-k!", "Create unit `k` quaternion." ], "quaternion-left-mult-matrix!": [ "quaternion-left-mult-matrix!", "Place quaternion coefficients into a matrix such that the product of `right-mult` and `left-mult` are\nan equivalent rotation matrix. This method is not used, `quaternion->matrix` is faster." ], "quaternion-log!": [ "quaternion-log!", "Get the logarithm of a quaternion. This is unused, but is effectively the rotation vector." ], "quaternion-negate!": [ "quaternion-negate!", "Flip the sign of all quaternion components." ], "quaternion-norm": [ "quaternion-norm", "Get the norm of a quaternion." ], "quaternion-norm2": [ "quaternion-norm2", "Get the squared norm of a quaternion." ], "quaternion-normalize!": [ "quaternion-normalize!", "normalize quaternion in place." ], "quaternion-pseudo-slerp!": [ "quaternion-pseudo-slerp!", "Simpler quaternion interpolation by interpolating coefficients and normalizing.\nThis handles the \"opposite sign\" issue correctly, but is still poorly behaved for far-away rotations." ], "quaternion-right-mult-matrix!": [ "quaternion-right-mult-matrix!", "Place quaternion coefficients into a matrix such that the product of `right-mult` and `left-mult` are\nan equivalent rotation matrix. This method is not used, `quaternion->matrix` is faster." ], "quaternion-rotate-local-x!": [ "quaternion-rotate-local-x!", "Rotate existing quaternion along local x-axis." ], "quaternion-rotate-local-y!": [ "quaternion-rotate-local-y!", "Rotate existing quaternion along local y-axis." ], "quaternion-rotate-local-z!": [ "quaternion-rotate-local-z!", "Rotate existing quaternion along local z-axis." ], "quaternion-rotate-x!": [ "quaternion-rotate-x!", "Rotate existing quaternion along world x-axis." ], "quaternion-rotate-y!": [ "quaternion-rotate-y!", "Rotate existing quaternion along world y-axis." ], "quaternion-rotate-y-to-vector!": [ "quaternion-rotate-y-to-vector!", "Rotate along world y axis so local z axis points to match another vector. Max rotation of `max-rot`." ], "quaternion-rotate-z!": [ "quaternion-rotate-z!", "Rotate existing quaternion along world z-axis." ], "quaternion-seek": [ "quaternion-seek", "Unused function to seek toward an orientation." ], "quaternion-set!": [ "quaternion-set!", "Set quaternion components." ], "quaternion-validate": [ "quaternion-validate", "Verify quaternion has valid norm, print an error if not." ], "quaternion-vector-angle!": [ "quaternion-vector-angle!", "Construct a quaternion from a normalized axis and angle." ], "quaternion-vector-len": [ "quaternion-vector-len", "Assuming quaternion is normalized, get the length of the xyz part." ], "quaternion-vector-y-angle": [ "quaternion-vector-y-angle", "Angle between quaternion and axis in the xz plane." ], "quaternion-xz-angle": [ "quaternion-xz-angle", "Calculate the \"yaw\" of the quaternion. This is particularly inefficient." ], "quaternion-y-angle": [ "quaternion-y-angle", "Get the y rotation angle of a quaternion - not very efficient." ], "quaternion-zero!": [ "quaternion-zero!", "Set all components to zero." ], "quaternion-zxy!": [ "quaternion-zxy!", "Make a quaternion from a sequence of z, x, y axis rotations." ], "set-eul!": [ "set-eul!", "Set euler angles and a flag (as a float)." ], "string->int": [ "string->int", "String to int. Supports binary, hex, and decimal, and negatives." ], "string-charp=": [ "string-charp=", "Is the GOAL string `str` equal to the C-string `charp`?" ], "string-get-arg!!": [ "string-get-arg!!", "Get the first argument from a whitespace separated list of arguments.\nThe arguments can optionally be in quotes.\nSucks up the argument and whitespace, leaving the rest." ], "string-get-flag!!": [ "string-get-flag!!", "If argument is `first-flag`, result is `#t`. If argument is `second-flag`, result is `#f`. Otherwise,\nleave `result` unset and return #f." ], "string-get-float!!": [ "string-get-float!!", "Get a float from a list of arguments." ], "string-get-int32!!": [ "string-get-int32!!", "Get an int32 from a list of arguments." ], "string-skip-to-char": [ "string-skip-to-char", "Return pointer to first instance of char in C string, or to the null terminator if it doesn't occur." ], "string-skip-whitespace": [ "string-skip-whitespace", "Skip over spaces, tabs, newline, and carriage return." ], "string-strip-leading-whitespace!": [ "string-strip-leading-whitespace!", "Remove whitespace at the start of a string." ], "string-strip-trailing-whitespace!": [ "string-strip-trailing-whitespace!", "Remove whitespace at the end of a string." ], "string-strip-whitespace!": [ "string-strip-whitespace!", "Remove whitespace at the beginning and end of a string." ], "string-suck-up!": [ "string-suck-up!", "Remove characters between the start of string and location. The original char at location is the first." ], "string<-charp": [ "string<-charp", "Copy all chars from a C string to GOAL string." ], "string<=?": [ "string<=?", "In dictionary order, is a <= b?" ], "string=?": [ "string>=?", "In dictionary order, is a >= b?" ], "string>?": [ "string>?", "In dictionary order, is a > b?" ], "vector-3pt-cross!": [ "vector-3pt-cross!", "Cross product of (2 - 1) and (3 - 1), giving a vector in the direction of the plane normal, but not\nmagnitude of 1." ], "vector-angle<-quaternion!": [ "vector-angle<-quaternion!", "Convert quaternion into axis-angle with normalized axis and angle in radians in `w`." ], "vector-deg-seek": [ "vector-deg-seek", "Move `vec1` toward `vec0` by rotating it by at most `max-rot` degrees." ], "vector-deg-slerp": [ "vector-deg-slerp", "Spherical linear interpolation of orientations represented as the z-axis of two frames." ], "vector-line-distance": [ "vector-line-distance", "Compute the distance between `query` and the closest point on the infinite line containing `p0` and `p1`." ], "vector-line-distance-point!": [ "vector-line-distance-point!", "Compute the distance between `query` and the closest point on the infinite line containing `p0` and `p1`.\nReturn the point in `ret`." ], "vector-orient-by-quat!": [ "vector-orient-by-quat!", "Rotate a vector by a quaternion." ], "vector-rotate-y!": [ "vector-rotate-y!", "Rotate a vector along the y-axis, not very efficient." ], "vector-vector-deg-slerp!": [ "vector-vector-deg-slerp!", "Spherical linear interpolation of coordinate frames produced by `(forward-up vec up)`." ], "vector-x-angle": [ "vector-x-angle", "Get the pitch angle of a vector." ], "vector-x-quaternion!": [ "vector-x-quaternion!", "Get the first row of the rotation matrix for this quaternion - the direction of the x axis." ], "vector-y-angle": [ "vector-y-angle", "Get the yaw angle of a vector." ], "vector-y-quaternion!": [ "vector-y-quaternion!", "Get the second row of the rotation matrix for this quaternion - the direction of the y axis." ], "vector-z-quaternion!": [ "vector-z-quaternion!", "Get the third row of the rotation matrix for this quaternion - the direction of the z axis." ] }