Reference
Every constant the game is tuned by, section by section, exactly as written in the source. This is the appendix: the numbers a player actually needs are on the topic pages, in stat blocks read out of the compiled build. What is here is the whole list, values shown as they are written -- so a constant defined in terms of another shows that relationship rather than hiding it behind a number.
Abilities
What every button in the game can be made to do. An item names one of these for its click and one for its hold; nothing else decides what a mouse button does.
| Ability | What the button does | Aimed |
|---|---|---|
| punch | punch | - |
| grab | grab what is ahead, let go to throw it | - |
| swing | swipe | - |
| bash | charge a heavy bash | - |
| cast | charge the spell, let go to cast | aims |
| drink | drink it | - |
| throw | aim, let go to throw it | aims |
| draw | draw, let go to shoot | aims |
| hook | aim, let go to fire the claw; where it bites, it reels you in | aims |
| rope | tie the rope ahead, then throw the free end | - |
| eat | eat it | - |
| guard | raise the shield | - |
Movement and the body
| Constant | Value | |
|---|---|---|
RIDE_HEIGHT | 0.95f | Body origin over the ground: the feet are drawn here, and local_predict's floor is here. |
WALKER_RADIUS | 0.4f | The torso capsule's radius: the disc the prediction pushes out of the arena. |
CAPSULE_LO | -0.10f | The walker capsule's lower sphere center (radius 0.4): its bottom clears the ground by 0.45. |
CAPSULE_HI | 0.55f | |
WALKER_DENSITY | 1380.0f | The short capsule at this density masses what the full-height one did: a ~820 kg wizard, the figure every carry, throw, and bonk was tuned against. |
STEP_HEIGHT | 0.45f | Ground this far above the feet is a step to ride up onto; higher is a wall. |
RIDE_SNAP | 0.30f | Ground this far below the feet still holds the walker down (slopes, the deck's sag). |
RIDE_PROBE | 0.20f | The ray fan's spread about the origin, so a gap between logs is never the ground. |
RIDE_KP | 300.0f | The spring on the ride height, as an acceleration per meter of error... |
RIDE_KD | 25.0f | ...and per m/s of vertical speed. |
SHOVE_RANGE | 3.5f | |
SHOVE_SPEED | 8.0f | |
INVERT_Y | 0 | |
HAND_RADIUS | 0.17f | |
HAND_KP | 520.0f | The mittens' spring, as an acceleration per meter... |
HAND_KD | 46.0f | ...and per m/s relative to the torso: about critically damped, so a turn of the look does not swing them out and back. |
HAND_MAX_ERR | 1.4f | Clamp spring stretch so a trapped hand can't build silly force. |
HAND_LEASH | 2.5f | Past this the hand is lost (tunneled, flung); snap it back home. |
| Constant | Value | |
|---|---|---|
CLIMB_COS | 0.342f | cos 70: a normal this far from up, or past level (an overhang), is a wall to climb; nearer up is ground, or a slope to walk. |
CLIMB_REACH | 0.85f | Torso center to a wall the probes can find (the capsule touches at WALKER_RADIUS). |
CLIMB_HOLD | 0.55f | Where the torso is held off the wall along its normal. |
CLIMB_HOLD_K | 12.0f | The hold, as a velocity per meter of error. |
CLIMB_PROBE_UP | 0.35f | The chest probe, above the torso center... |
CLIMB_PROBE_DOWN | 0.45f | ...and the hip probe, below it: the hold outlives the chest at the top edge. |
CLIMB_INTO | 0.75f | Cos of how squarely a wish (or a flight) must meet a wall to grab it. |
CLIMB_SPEED | 2.2f | Along the wall: slow and deliberate. |
CLIMB_ACCEL | 30.0f | |
CLIMB_JUMP_OFF | 5.0f | Off the wall: out along its normal... |
CLIMB_JUMP_UP | 4.5f | ...and up. |
CLIMB_HOP | 5.5f | A jump into or along the wall: a burst that way... |
CLIMB_HOP_TIME | 0.35f | ...coasting this long before the steer takes back over. |
CLIMB_HOP_COST | 0.12f | Stamina a hop spends. |
CLIMB_REGRAB | 0.4f | Seconds after letting go before a wall can be grabbed again. |
CLIMB_MANTLE_UP | 4.8f | Over the top: the lift... |
CLIMB_MANTLE_FWD | 2.5f | ...and the step onto it. |
STAMINA_CLIMB_DRAIN | 0.14f | Per second of moving on the wall, up or down... |
STAMINA_CLIMB_SIDE_K | 0.5f | ...and across, at this fraction. |
STAMINA_CLING_REGEN | 0.20f | Per second of clinging still. |
STAMINA_SPRINT_DRAIN | 0.05f | Per second of sprinting. |
STAMINA_JUMP_COST | 0.05f | A jump... |
STAMINA_SPRINT_JUMP_COST | 0.15f | ...and one out of a sprint. |
STAMINA_REGEN | 0.20f | Per second off the wall, after... |
STAMINA_REST | 1.0f | ...this long without exertion... |
STAMINA_EMPTY_REST | 2.0f | ...or this long after it ran out... |
STAMINA_GROUND_REST | 0.2f | ...and this long on the ground. |
STAMINA_WINDED | 0.25f | Emptied, nothing strenuous until it is back to this (or to whatever the afflictions leave of the bar). |
STAMINA_MEAL | 0.25f | The bonus a potion puts under the bar. |
| Constant | Value | |
|---|---|---|
DODGE_TIME | 0.55f | How long a roll runs, and how long the wizard is untouchable. |
DODGE_SPEED | 20.0f | The burst it settles onto at once... |
DODGE_SPEED_END | 3.0f | ...easing to this by the end, as the square of what is left. |
DODGE_KICK | 9.0f | The kick off the mark, on top of that burst... |
DODGE_KICK_TIME | 0.13f | ...falling away over this, as the square of what is left of it. |
DODGE_COST | 0.15f | Stamina a roll spends, at the press (a sprint jump's price, on PEAK's bar): the button is not free to mash. |
DODGE_COOLDOWN | 0.2f | Seconds after a roll ends before another can start. |
DODGE_ANSWER | 0.25f | A predicted roll the server has not confirmed by now was refused (local.c): let it go. |
| Constant | Value | |
|---|---|---|
MAX_ROPES | 6 | Ropes hanging in the world at once. |
ROPE_PER_PLAYER | 2 | Ropes one wizard may have hanging; the next replaces their oldest. |
ROPE_LINKS | 10 | Capsule links per rope at most; the drop under the anchor sizes each hang. |
ROPE_LINK_HALF | 0.45f | Half a link, so a full rope runs ROPE_LENGTH... |
ROPE_LENGTH | (ROPE_LINKS * 2.0f * ROPE_LINK_HALF) | ...nine meters. |
ROPE_LINK_RADIUS | 0.04f | |
ROPE_LINK_DENSITY | 600.0f | A couple of kilos a link: heavy enough to hang taut, light enough to whip. |
ROPE_PULL_K | 0.6f | How much of the climber's weight the link under the hand feels. |
ROPE_FLING | 5.0f | The thrown coil's send-off, run down the line. |
ROPE_MIN_HANG | 1.5f | A hang asked for over a shorter drop finds no purchase (rope_hang's floor for anything but a tie)... |
ROPE_TIE_MIN_DROP | 0.4f | ...but a deliberate tie deploys anywhere short of the floor itself: the slack rests on it. |
ROPE_TIE_RANGE | 3.5f | How far ahead the rope item can tie its anchor. |
ROPE_GRAB_REACH | 1.1f | Torso center to the chain's line a hand can catch. |
ROPE_HOLD | 0.5f | Where the torso hangs off the chain. |
ROPE_CLIMB_SPEED | 2.0f | Along the rope, a touch under the wall's. |
ROPE_TOP_STOP | 0.4f | How close to the anchor the climb reaches. |
ROPE_INTO | 0.6f | Cos of how squarely a wish (or a flight) must push at a rope to catch it. |
SND_ROPE | 12.0f | A claw biting home, a rope tied or hung. |
| Constant | Value | |
|---|---|---|
MAX_HOOKS | 4 | Pooled claw shots. |
HOOK_RANGE | 10.0f | All the chain there is: the claw dies at its end, and the reticle's line. |
HOOK_SPEED | 30.0f | The claw's flight. |
HOOK_LIFE | (HOOK_RANGE / HOOK_SPEED) | Seconds of flight the chain allows. |
HOOK_RADIUS | 0.09f | The claw's collision sphere. |
HOOK_DAMAGE | 4.0f | A claw is a tool, not a weapon: a scratch... |
HOOK_KNOCK | 3.0f | ...and a nudge. |
HOOK_COOLDOWN | 0.8f | Between shots. |
HOOK_PULL_SPEED | 15.0f | The reel: meters a second toward the bite. |
HOOK_ARRIVE | 0.9f | Within this of the bite the reel is done. |
HOOK_STANDOFF | 0.45f | The reel aims this far short of the surface, so it lands a body beside the wall and not inside it. |
HOOK_PULL_MAX_T | 1.5f | A reel outlives no packet loss: past this it lets go whatever happened. |
HOOK_STALL_T | 0.30f | Seconds of not closing on the bite (a lip in the way) before the reel gives up. |
HOOK_RETRACT_T | 0.20f | Seconds the claw takes to fly home along the chain (client cosmetic). |
SPRINT_SPEED_K | 1.55f | The sprint, as a multiple of the walk. |
CROUCH_SPEED_K | 0.45f | The crouch (ctrl held, or the pad's L3), as a multiple of the walk; it wins over the sprint. |
| Constant | Value | |
|---|---|---|
SEAT_REACH | 2.4f | Torso center to the log's center: close enough to sit down on. |
SEAT_FRONT | 0.10f | How far toward the fire the sit point sits off the log's middle: over the timber, nudged fireward so the folded legs clear it. The torso capsule (WALKER_RADIUS) overlaps the log at this range and is meant to -- a seated body occupies its seat, and the pin is absolute, so nothing pushes back. |
SEAT_STAND_WISH | 0.35f | A wish this long stands you up: a nudge of the stick is not a decision, a walk is. |
Hands and blows
| Constant | Value | |
|---|---|---|
HAND_HOLD_T | 0.15f | About nine frames at 60 Hz: a click is well under it, and a hold's charge begins that soon after the press. |
GRAVITY_Y | WORLD_GRAVITY_Y | What the prediction integrates by (config.h). |
PUNCH_TIME | 0.34f | |
PUNCH_HIT_T | 0.10f | Impulse fires when the keyframes have the mittens thrust out. |
PUNCH_DAMAGE | 20.0f | What a mitten does to whatever it lands on -- every enemy, and a crate -- through character_blow; another wizard is only shoved. |
WAVE_TIME | 1.3f | |
BONK_MIN_SPEED | 3.5f | Closing speed between two players that counts as a bonk. |
BONK_PUSH | 5.5f | |
BONK_UP | 3.0f | |
BONK_COOLDOWN | 0.6f | |
STAGGER_TIME | 0.5f | |
STAGGER_ACCEL_K | 0.15f | Staggered players barely fight the knockback. |
| Constant | Value | |
|---|---|---|
RAGDOLL_TIME | 2.2f | |
DEATH_TIME | 3.0f | A lethal blow tumbles for this instead: the body rolls and settles where it fell, in view, before whoever owns it takes it away. |
RAGDOLL_KICK | 5.0f | The ball's extra launch along its travel, on top of the real collision. |
RAGDOLL_UP | 4.0f | Lift the ball hands out with that kick. |
RAGDOLL_LIFT | 2.4f | The least lift any ragdolling blow hands out, so the tumble leaves the ground. |
RAGDOLL_SPIN | 7.0f | rad/s of tumble handed to the unlocked capsule. |
KNOCK_UP | 1.5f | Lift handed out with a staggering blow. |
STOIC_KICK_K | 0.06f | What a blow's kick is worth against a character with poise (Character.stoic): the boss barely moves. |
| Constant | Value | |
|---|---|---|
GRAB_RANGE | 2.2f | Torso center to the grab point. |
CARRY_MASS | 1100.0f | Grip strength, in kg of fully controlled load. |
HOVER_KP | 70.0f | Tether spring on the load, as an acceleration toward the hover point. |
HOVER_KD | 13.0f | |
HOVER_MAX_ERR | 1.2f | Clamp the tether stretch so a wedged load can't build silly force. |
HOVER_ANG_DAMP | 5.0f | Angular damping while levitated: props settle instead of spinning. |
HOVER_BOB | 0.05f | Idle float of the hover point, in meters. |
TETHER_BREAK | 3.6f | Torso to load: past this the tether snaps and the load drops. |
THROW_SPEED | 13.0f | Launch speed for a load at or under CARRY_MASS. |
THROW_UP | 0.3f | Added to the aim so a level throw arcs. |
GRABBED_ACCEL_K | 0.06f | Carried players can squirm, not walk. |
GRAB_DROP_GRACE | 0.35f | Seconds a released load stays filtered from its carrier. |
| Constant | Value | |
|---|---|---|
SWORD_HALF | 0.65f | |
SWORD_RADIUS | 0.06f | |
SWORD_DENSITY | 7800.0f | Steel: ~110 kg, so a dropped one skids rather than bounces. |
SWORD_PICKUP_RANGE | 4.0f | Torso center to a point on the sword: close enough to pick up. |
SWORD_FOCUS_R | 0.45f | The crosshair's ray passing within this of a point on the sword: the client's focus (nothing blocks the ray -- it is tested against the pickups alone). |
SWORD_FOCUS_R_LOOSE | 1.1f | The server's check on a request: the client aimed a moment ago, and its intent may have moved on... |
SWORD_PICKUP_SLACK | 1.4f | ...and its torso trails the client's prediction by about a stride at a run. |
SWING_TIME | 0.32f | The whole swing: a few frames of cock, the slash, the recovery. Quick -- a swipe answers the tap, it does not wind up to it. |
SWING_HIT_T | 0.09f | When in the swing the blow lands: a handful of ticks after the press, as the blade crosses dead ahead. |
SWING_REACH | 2.6f | Torso center to a victim's center. |
SWING_HEIGHT | 1.6f | A victim's center this far above or below the torso is out of the sweep. |
SWING_ARC_COS | 0.35f | Cos of the half-arc the blow covers ahead (~70 degrees each way). |
SWING_ARC | 1.4f | Radians the blade sweeps, for the tie-offs. |
SWORD_DAMAGE | 30.0f | |
SWORD_KNOCK | 4.0f | m/s handed to the struck character along the swing. |
SWORD_HIT_COOLDOWN | 0.35f | |
SWORD_SHOVE_SPEED | 6.0f | Props in the arc are batted along at this, heavy ones (past CARRY_MASS) less. |
STAFF_DAMAGE | 12.0f | What a swipe of the staff lands: a quarterstaff's knock, not a blade's. Every staff swings for it; a gear staff's Damage affix comes on top. |
DAGGER_DAMAGE | 16.0f | The rogue's sidearm -- one of a pair, a quick cut from either fist. |
CUDGEL_DAMAGE | 20.0f | The cleric's: an honest iron-shod knock, short of a blade's cut. |
WRENCH_DAMAGE | 14.0f | The artificer's: a tool first, an argument-settler second. |
SICKLE_DAMAGE | 18.0f | The cultist's harvest blade. |
BASH_CHARGE_FULL | 0.8f | Seconds a hold charges a bash for its full strength; a longer hold gains nothing (the swing begins on the release). |
BASH_DAMAGE_K | 2.5f | A full bash lands this many times the swipe's damage (a shorter charge less, down to the swipe's)... |
BASH_KNOCK_K | 2.0f | ...and this many times its knockback; a full one floors the victim. |
BASH_TIME | 0.45f | The whole bash swing, from the raised blade: the chop, the follow-through, the recovery. The charge was the wind-up; the release is quick. |
BASH_HIT_T | 0.12f | When in the bash the blow lands. |
| Constant | Value | |
|---|---|---|
SHIELD_ARC_COS | 0.5f | Cos of the half-arc a raised shield covers ahead (sixty degrees each way): a blow from farther round lands. |
SHIELD_STAMINA_K | 0.025f | Of the 0..1 bar, per point of damage turned: a skeleton's swing costs 0.3, a sword's swipe 0.75. |
SHIELD_KNOCK_K | 0.35f | What is left of a blocked blow's kick: a block still gives a little ground. |
SHIELD_BREAK_STUN | 1.0f | Seconds a guard break staggers the wizard for (and keeps the shield down). |
SHIELD_R | 0.38f | The disc's radius (the look). |
SHIELD_FLASH_T | 0.25f | Seconds the rim flashes after a block (client). |
SHIELD_SFX_CARRY | 22.0f | How far a block's clang carries (sfx.c). |
Status effects and going down
| Constant | Value | |
|---|---|---|
EFFECT_BAR | 100.0f | The bar, in points: the health's scale (MAX_HEALTH) too. |
EFFECT_BAR_MAX | 200.0f | How far past it the afflictions can pile (the dashed outline). |
EFFECT_TICK | 2.5f | The smallest amount that shows. |
EFFECT_SLOW_K | 0.45f | The walk while drowsy, as a multiple of the walk. |
EFFECT_HUNGER_RATE | 0.05f | Points per second, on its own (a tick every fifty seconds). |
EFFECT_MEAL | 25.0f | Hunger a potion takes off. |
EFFECT_WEIGHT_LOAD | 12.0f | Points a load of CARRY_MASS on the tether weighs. |
EFFECT_POISON_DECAY | 0.4f | Points per second, after... |
EFFECT_POISON_REST | 30.0f | ...this long without more poison. |
EFFECT_COLD_RATE | 2.0f | Points per second over the chasm (the wind). |
EFFECT_COLD_DECAY | 1.5f | Points per second on your own, after... |
EFFECT_COLD_REST | 3.0f | ...this long out of the cold... |
EFFECT_HUDDLE_RANGE | 3.2f | ...and as much again per other wizard this close. |
EFFECT_HEAT_BLAST | 20.0f | A fireball's blast, at its center... |
EFFECT_HEAT_SUN | 0.5f | ...and the dunes' sun, points per second. |
EFFECT_HEAT_DECAY | 1.3f | Points per second, after... |
EFFECT_HEAT_REST | 8.0f | ...this long without more heat. |
EFFECT_THORN | 5.0f | Points per spike, and per thorn F pulls out. |
EFFECT_THORNS_FALL | 30.0f | Seconds until the thorns fall out on their own. |
EFFECT_VENOM | 7.5f | A spider's bite: this much poison, and as much drowsy. |
EFFECT_DROWSY_DECAY | 1.5f | Points per second, after... |
EFFECT_DROWSY_REST | 10.0f | ...this long without more. |
EFFECT_CURSE_BALL | 10.0f | The ball's curse, per hit. |
EFFECT_CURE | 2.5f | Points of each curable affliction a heal circle's pulse takes off. |
EFFECT_SPORES_RATE | 1.0f | Points per second in the vault. |
EFFECT_SPORES_DECAY | 0.5f | Points per second, after... |
EFFECT_SPORES_REST | 45.0f | ...this long out of it. |
EFFECT_WRAP | 20.0f | The web a spit lands on you, and the snare a floor web is. |
EFFECT_TEAR | 2.5f | What a jump press tears off either. |
EFFECT_WEB_TEAR | 6.0f | Points per second the web tears on its own (five seconds)... |
EFFECT_SNARE_TEAR | 10.0f | ...and the snare (three)... |
EFFECT_SNARE_POISON | 5.0f | ...which poisons this much a second while it holds. |
EFFECT_PETRIFY_TOUCH | 2.5f | A skeleton's hit: one tick, since it never lifts. |
EFFECT_ARROW_STUCK | 7.5f | An arrow stuck in you... |
EFFECT_ARROW_PULL | 12.5f | ...and the injury pulling it out costs. |
EFFECT_BLESS_TIME | 3.0f | Infinite stamina lingers this long after leaving a heal circle. |
EFFECT_NUMB_AFTER | 2.0f | The bar stays hidden this long after a tumble. |
EFFECT_SHIELD_TIME | 5.0f | Invincible this long after a spawn. |
| Constant | Value | |
|---|---|---|
DOWN_POOL_TIME | 45.0f | The first downing's bleed-out, in seconds... |
DOWN_POOL_STEP | 12.0f | ...how much shorter each one after it is... |
DOWN_POOL_MIN | 12.0f | ...and how short it can get. |
DOWN_CRAWL_K | 0.3f | The crawl, as a multiple of the walk (effect_speed_k, both ends). |
DOWN_REVIVE_RANGE | 2.6f | Rescuer to body: near enough to reach. |
DOWN_REVIVE_TIME | 4.0f | Seconds of holding to fill the bar... |
DOWN_REVIVE_DECAY | 2.0f | ...and to drain a full one with nobody on it. |
DOWN_GIVEUP_TIME | 1.0f | Seconds of holding the use button on your own body before you give up waiting and die where you lie. |
DOWN_FATIGUE | (EFFECT_BAR * 0.5f) | What a revive leaves on the bar: half of it, so half the damage puts them down again... |
DOWN_FATIGUE_TIME | 60.0f | ...and how many seconds it takes to wear off on its own (a heal lifts it early). |
DOWN_HELP_Y | 1.5f | How far over the body the word floats. |
DOWN_PULSE_RATE | 5.0f | Radians per second the outline and the word flash at. |
DOWN_OUTLINE | 0.06f | How far the red silhouette is swelled past the body it marks. |
DOWN_HURT_K | 0.35f | Seconds off the bleed-out per point of damage landed on somebody already down. |
DOWN_HURT_FLASH | 0.7f | Seconds the red silhouette runs over a body a blow just landed on -- the only thing that shows it at all. |
DOWN_HURT_SLACK | 0.5f | Slack on that watch: quantization and packet jitter a client forgives before it calls a falling clock a blow. |
DOWN_DEAD_TIME | 3.0f | Seconds the corpse ragdolls with YOU DIED on its owner's screen before the respawn takes it. |
DOWN_DIED_SIZE | 64.0f | How big YOU DIED sits across the screen. |
DOWN_WORD_SIZE | 52.0f | How big DOWN sits across your own screen while you are on the floor. |
DOWN_NOTE_TIME | 4.5f | Seconds "P3 is down!" stays on everybody else's. |
DOWN_GIVE_DY | 26.0f | The give-up line under the two words on your own screen... |
DOWN_GIVE_BAR_DY | 24.0f | ...the bar filling under that line while the button is held... |
DOWN_GIVE_BAR_W | 180.0f | ...and how wide and how thick it is. |
DOWN_GIVE_BAR_H | 7.0f |
Spells
| Constant | Value | |
|---|---|---|
FIREBALL_RADIUS | 0.22f | The bolt's collision sphere. |
FIREBALL_DENSITY | 40.0f | ~1.8 kg: it stops on what it hits instead of shoving it. |
FIREBALL_SPEED | 22.0f | |
FIREBALL_LIFE | 3.0f | Seconds of flight before it fizzles into a burst anyway. |
FIREBALL_BLAST_RADIUS | 3.2f | Torso centers within this take the blow. |
FIREBALL_DAMAGE | 45.0f | At the center... |
FIREBALL_DAMAGE_MIN | 12.0f | ...fading to this at the rim. |
FIREBALL_KNOCK | 7.0f | m/s away from the burst at the center, half that at the rim. |
FIREBALL_LIFT | 3.5f | |
FIREBALL_RAGDOLL_R | 1.6f | Inside this the blow ragdolls; beyond, it staggers. |
FIREBALL_HIT_COOLDOWN | 0.4f | |
FIREBALL_IMPULSE | 2600.0f | b3World_Explode impulse per unit area on props (a crate takes off at a few m/s). |
FIREBALL_BURST_TIME | 0.25f | Seconds the burst state streams, so every client sees it at least once. |
CAST_CHARGE_FULL | 0.75f | Seconds the button is held for a full-speed bolt; a longer hold gains nothing (the cast begins on the release). |
FIREBALL_SPEED_MIN | 11.0f | The bolt's speed for a tap; the charge runs it up to FIREBALL_SPEED. |
CAST_TIME | 0.55f | The whole cast: the hand comes up, the bolt leaves, the hand settles. |
CAST_RELEASE_T | 0.18f | When in the cast the bolt leaves the hand. |
CAST_COOLDOWN | 0.9f | From one cast to the next. |
| Constant | Value | |
|---|---|---|
MISSILE_DAMAGE | 9.0f | One magic missile's bite: unerring, never a blast. |
MISSILE_KNOCK | 2.0f | |
MISSILE_GAP | 0.12f | Seconds between a volley's bolts. |
MISSILE_HIT_COOLDOWN | 0.1f | Under the gap, so every missile of one volley lands. |
MISSILE_MIN | 2 | A tap's volley... |
MISSILE_MAX | 4 | ...and a full charge's. |
FROST_DAMAGE | 10.0f | |
FROST_CHILL | 18.0f | Points of cold on a struck wizard (effect.c). |
SICKNESS_DAMAGE | 8.0f | |
SICKNESS_POISON | 20.0f | Points of poison on a struck wizard. |
LIGHTNING_DAMAGE | 14.0f | On whoever the bolt struck, and on everyone the arc reaches... |
LIGHTNING_CHAIN_R | 4.0f | ...this close to the strike. |
| Constant | Value | |
|---|---|---|
MAX_HEAL_ZONES | 4 | |
HEAL_CAST_RANGE | 26.0f | How far out an aim may mark the ground. |
HEAL_TARGET_R | 1.1f | How near a character the ray passes to count as aimed at them. |
HEAL_ZONE_RADIUS | 2.6f | The circle on the ground. |
HEAL_ZONE_CEILING | 3.0f | How high over it the circle reaches (and HEAL_ZONE_FLOOR below, for the pit's edge). |
HEAL_ZONE_FLOOR | 1.2f | |
HEAL_ZONE_TIME | 8.0f | Seconds a circle lasts. |
| Constant | Value | |
|---|---|---|
MAX_SUMMON_CIRCLES | 2 | |
SUMMON_ZONE_RADIUS | 2.2f | |
SUMMON_GATHER_TIME | 7.0f | Act one: the circle burns and takes nothing -- pile your combination in. |
SUMMON_FINALE_TIME | 1.5f | Act three: consumed, the circle implodes and manifests as it goes out. |
SUMMON_ZONE_TIME | (SUMMON_GATHER_TIME + SUMMON_FINALE_TIME) | A circle's whole fixed life; the snap's left normalizes by it. |
SUMMON_ZONE_CEILING | 2.2f | The swallow reaches this high over the ground... |
SUMMON_ZONE_FLOOR | 1.2f | ...and this far below (the chasm's lip rule, like heal). |
SUMMON_WIZARD_DWELL | 1.1f | Continuous seconds a wizard must stand inside before the circle takes them: crossing is safe, lingering is a donation. |
SUMMON_VALUE_WIZARD | 12 | Appraisals. A friend is worth the most. Obviously. |
SUMMON_VALUE_LISTENER | 20 | ...except the unkillable thing, whose one death this is. Baiting it onto a circle and holding it there (LISTENER_SACRIFICE_DWELL) outbids everything. |
SUMMON_VALUE_SPIDER | 8 | |
SUMMON_VALUE_PLANT | 7 | |
SUMMON_VALUE_SKELETON | 6 | |
SUMMON_VALUE_THORNBACK | 9 | The wood's five: a beetle's plate is worth something to whatever is on the other side... |
SUMMON_VALUE_BOAR | 7 | ...a boar is meat... |
SUMMON_VALUE_WOLF | 6 | |
SUMMON_VALUE_WISP | 5 | ...and a wisp is barely there at all, which the circle notices. |
SUMMON_VALUE_OOZE | 3 | Per blob, so a big one eaten whole is worth more than a small one -- and splitting one over a circle is a way to feed it. |
SUMMON_VALUE_CAMEL | 10 | The desert's: a camel is a lot of meat and all of it water... |
SUMMON_VALUE_SCORPION | 5 | ...and a scorpion is mostly shell. The worm never rests on a circle and the vulture never lands: neither is on the menu. |
SUMMON_VALUE_SWORD | 3 | |
SUMMON_VALUE_PROP | 1 | |
LISTENER_SACRIFICE_DWELL | 2.0f | Seconds the beast must linger on a circle before it is taken: the bait is the play. |
SUMMON_MIGHTY_HP | 2.2f | A high-value manifest may come out angry: health and blow scale. |
SUMMON_MIGHTY_POWER | 1.6f | |
HEAL_ZONE_RATE | 10.0f | Health per second to everyone standing in it... |
HEAL_PULSE | 0.5f | ...handed out in pulses this far apart. |
HEAL_STEP | 0.35f | The march along the aim looking for the ground, in meters. |
The bow
| Constant | Value | |
|---|---|---|
ARROW_STACK | 99 | How many arrows one quiver slot holds. |
ARROW_START | 30 | The Normal quiver a ranger starts with. |
ARROW_RADIUS | 0.075f | The arrowhead's collision sphere. |
ARROW_DENSITY | 60.0f | ~0.1 kg on the bigger head: it stops on what it hits. |
ARROW_SPEED | 102.0f | At full draw... |
ARROW_SPEED_MIN | 36.0f | ...and for a tap; the draw's charge runs between them. |
ARROW_LIFE | 3.0f | Seconds of flight before it vanishes anyway. |
ARROW_DAMAGE | 25.0f | A NORMAL quiver's arrow. The rest of the types (bow.c): |
ARROW_DAMAGE_BASIC | 4.0f | The quiverless arrow: free and endless, and it stings rather than wounds. |
ARROW_DAMAGE_HEAVY | 60.0f | A heavy arrow hits like a dropped anvil... |
ARROW_KNOCK_HEAVY | 16.0f | ...and throws its victim with it. |
ARROW_DAMAGE_FIRE | 15.0f | A fire arrow's point is the FIRE: the hit itself is modest... |
BURN_TIME | 4.0f | ...but the victim burns this long (character.c; a wizard takes heat, effect.c)... |
BURN_STEP | 0.5f | ...a bite every this often... |
BURN_DPS | 6.0f | ...at this per second. |
ARROW_DAMAGE_BOMB | 20.0f | The bomb arrow's own touch; the BLAST is the payload: |
BOMB_BLAST_RADIUS | 3.5f | Everything this close to the burst... |
BOMB_BLAST_DAMAGE | 35.0f | ...takes up to this, fading with the distance... |
BOMB_BLAST_MIN | 12.0f | ...to this at the rim. |
BOMB_KNOCK | 9.0f | m/s the blast hands whoever it catches. |
BOMB_IMPULSE | 60.0f | The prop shove per area, a fireball-style explosion. |
ARROW_DAMAGE_THUNDER | 18.0f | The thunder arrow's own touch; the CHAIN is the payload: |
THUNDER_RADIUS | 5.0f | Every enemy this close to the strike... |
THUNDER_DAMAGE | 16.0f | ...is shocked for this, however many they are. |
ARROW_KNOCK | 8.0f | m/s handed to the struck character along the flight: a fireball's center, a skeleton reels back a stride. |
ARROW_HIT_COOLDOWN | 0.3f | |
ARROW_PUNCH | 120.0f | Impulse (kg m/s) an arrow lands on what it sticks in: the target swings hard, a crate is shoved off its pile. |
ARROW_BURST_TIME | 0.8f | Seconds a landed arrow stays stuck (the state streams) before its slot is parked. |
BOW_DRAW_FULL | 0.375f | Seconds of draw for full speed -- a quick draw, well under half a second; a longer hold gains nothing. |
BOW_SETTLE_TIME | 0.175f | The mitten's recovery after the release. |
BOW_COOLDOWN | 0.2f | From the release to the next draw: never longer than the draw itself, so a second shot is never a wait. |
Potions and food
| Constant | Value | |
|---|---|---|
POTION_HEAL | 50.0f | Health restored by drinking; a thrown one splashes for half. |
POTION_RADIUS | 0.12f | The flask's collision sphere. |
POTION_DENSITY | 70.0f | ~0.5 kg: it breaks on what it hits instead of shoving it. |
POTION_THROW_SPEED | 15.0f | |
POTION_THROW_UP | 0.30f | Added to the aim so a level throw lobs. |
POTION_SPIN | 7.0f | rad/s of end-over-end tumble on a thrown flask. |
POTION_LIFE | 4.0f | Seconds of flight before it shatters in the air anyway. |
POTION_SPLASH_RADIUS | 2.0f | Torso centers within this of the shatter are splashed. |
POTION_BURST_TIME | 0.25f | Seconds the shatter state streams, so every client sees it at least once. |
DRINK_TIME | 0.9f | The whole drink: the flask comes up, tips, and the hand settles. |
DRINK_HEAL_T | 0.55f | When in the drink the health lands and the flask is gone. |
POTION_THROW_TIME | 0.5f | The whole throw: the wind-up, the lob, the follow-through. |
POTION_RELEASE_T | 0.22f | When in the throw the flask leaves the hand. |
POTION_AIM_KEY | 0.12f | Where in the throw's keyframes the wind-up is (anim.c): the aim holds it, the throw runs on from it at the release. |
HEAL_FLASH_TIME | 0.8f | The green vignette on a health rise. |
| Constant | Value | |
|---|---|---|
MUSHROOM_HEAL | 30.0f | Health restored by eating one: most of a potion's drink... |
MUSHROOM_POISON | 20.0f | ...paid for in points of poison on the lifebar (EFFECT_POISON's own decay wears it off). |
MUSHROOM_TRIP_TIME | 12.0f | Seconds the trip runs per mushroom; another eaten mid-trip starts the clock over. |
MUSHROOM_TRIP_EASE | 2.0f | Seconds the trip takes to come on and to let go (client side: the shader's ramp). |
MUSHROOM_WILD_N | 560 | Mushrooms the forest grows on open ground (forest_view's old cosmetic count: the wood looks the same, every one pickable now). |
MUSHROOM_WILD_MAX | 576 | The placement arrays' cap, and the streamed standing bitmask's size (72 bytes of bits). |
MUSHROOM_CAMP_RING | 6 | The first few grow in a ring just outside the camp's clearing: foraging never starts with a trek. |
MUSHROOM_PICK_RANGE | 3.2f | Torso to mushroom: close enough to pick it. |
MUSHROOM_PICK_SLACK | 1.2f | The server's slack on that reach: its torso trails the client's prediction. |
MUSHROOM_FOCUS_R | 0.55f | How near the crosshair's ray must pass to put one in focus. |
MUSHROOM_SWAY_K | 0.55f | The trip's lean on the walk: this much of a full wish drifted in, so your own stick still wins -- barely. |
MUSHROOM_SWAY_STEP | 0.7f | Seconds between the lean picking a new direction to wander toward (jittered a little)... |
MUSHROOM_SWAY_EASE | 2.5f | ...and how fast it eases there, per second: a stagger, not a twitch. |
MUSHROOM_MUSIC_PITCH | 0.72f | The tape's speed at the trip's deepest (music.c drags the track there and back by the trip level). |
Enemies
| Constant | Value | |
|---|---|---|
SKELETON_HEALTH | 60.0f | |
SKELETON_DENSITY | 485.0f | ~290 kg on the walker capsule: a wizard can carry and throw one. |
SKELETON_WANDER_RADIUS | 5.0f | Wander goals stay this close to the spawn. |
SKELETON_WANDER_SPEED | 1.1f | |
SKELETON_CHASE_SPEED | 2.8f | Well under a running wizard: you can always outrun them. |
SKELETON_ACCEL | 40.0f | |
SKELETON_TURN_RATE | 7.0f | rad/s toward the facing target. |
SKELETON_DETECT_RANGE | 9.0f | A living wizard this close, in line of sight, is noticed. |
SKELETON_LOSE_RANGE | 14.0f | A chased wizard this far away is given up on. |
SKELETON_ALERT_TIME | 1.0f | Seconds of "?" and looking around before the chase. |
SKELETON_ATTACK_RANGE | 1.7f | Torso-to-torso distance that starts a swing. |
SKELETON_ATTACK_TIME | 1.0f | Whole swing: wind-up, the blow, recovery. |
SKELETON_ATTACK_HIT_T | 0.42f | When in the swing the blow lands. |
SKELETON_ATTACK_REACH | 2.4f | The blow connects within this, in front of the skeleton. |
SKELETON_ATTACK_HEIGHT | 1.2f | ...and within this much torso height difference: a wizard up a wall (or on a ledge overhead) is out of a swing's reach, and the skeleton waits below instead. |
SKELETON_DAMAGE | 12.0f | |
SKELETON_KNOCK | 4.0f | m/s handed to the struck wizard. |
SKELETON_HIT_COOLDOWN | 0.25f | Rate limit on punches, slams, and a skeleton's own blows, so one contact cannot land twice. |
SKELETON_SLAM_SPEED | 7.0f | Approach speed that hurts a skeleton on any other impact (thrown crates, walls). |
SKELETON_SLAM_K | 3.0f | Damage per m/s of slam. |
| Constant | Value | |
|---|---|---|
SPIDER_HEALTH | 40.0f | |
SPIDER_RADIUS | 0.32f | |
SPIDER_DENSITY | 290.0f | ~40 kg on the sphere: light, but an arrow's knock does not send it across the room. |
SPIDER_HOLD | 0.42f | Center off the surface along its normal. |
SPIDER_HOLD_K | 14.0f | The hold, as a velocity per meter of error. |
SPIDER_REACH | 1.0f | How far along -normal the surface may be and still be held. |
SPIDER_AHEAD | 0.30f | Past the radius, how far ahead the crawl looks for the next surface (an inside corner). |
SPIDER_CRAWL_SPEED | 2.6f | Along the surface, on the way home. |
SPIDER_CHASE_SPEED | 4.6f | On the floor after a wizard: slower than a run, faster than a webbed one. |
SPIDER_ACCEL | 30.0f | |
SPIDER_DROP_SPEED | 7.0f | Down the strand. |
SPIDER_DETECT_RANGE | 8.0f | A living wizard this close, in line of sight from the lair, is prey. |
SPIDER_LOSE_RANGE | 15.0f | Prey this far away is given up on. |
SPIDER_SPIT_RANGE | 9.0f | Prey within this (and past SPIDER_SPIT_NEAR) gets a web spat at its feet... |
SPIDER_SPIT_NEAR | 1.6f | ...closer than this the spider bites instead. |
SPIDER_SPIT_TIME | 0.55f | The spit: the rear comes up, the glob leaves at SPIDER_SPIT_T, the settle. |
SPIDER_SPIT_T | 0.25f | |
SPIDER_SPIT_COOLDOWN | 3.5f | Between spits at one target. |
SPIDER_BITE_RANGE | 1.35f | Center to center: the lunge. |
SPIDER_BITE_TIME | 0.9f | The whole bite: the rear-up, the lunge, the recovery. |
SPIDER_BITE_T | 0.25f | When in the bite the fangs land. |
SPIDER_BITE_REACH | 1.9f | The fangs connect within this, ahead of the spider. |
SPIDER_DAMAGE | 8.0f | |
SPIDER_KNOCK | 3.0f | m/s handed to the bitten wizard. |
SPIDER_HIT_COOLDOWN | 0.3f | Rate limit on blows to a spider, and its own bites. |
SPIDER_HUNT_TIME | 10.0f | Seconds off the lair before it heads home regardless. |
SPIDER_REST_TIME | 6.0f | Seconds on the lair before it hunts again. |
SPIDER_SLAM_SPEED | 6.0f | Approach speed that hurts a spider on any impact (thrown crates, the ball, a wall). |
SPIDER_SLAM_K | 3.0f | Damage per m/s of slam. |
| Constant | Value | |
|---|---|---|
BAT_HEALTH | 14.0f | |
BAT_RADIUS | 0.26f | |
BAT_DENSITY | 150.0f | A couple of kilos of animal on the sphere. |
BAT_PERCH_DROP | 0.35f | The body hangs this far under the perch anchor. |
BAT_WAKE_RANGE | 7.0f | A living wizard this close, in line of sight from the roost, is prey. |
BAT_LOSE_RANGE | 16.0f | Prey this far away is given up on (never by a burning bat). |
BAT_WAKE_TIME | 0.7f | The unfurl off the perch before the first circle. |
BAT_FLY_SPEED | 5.5f | The hunt's flutter... |
BAT_SWOOP_SPEED | 10.0f | ...and the dart. |
BAT_ACCEL | 28.0f | |
BAT_ORBIT_R | 3.2f | The circle around the prey... |
BAT_ORBIT_H | 1.6f | ...flown this far over their center... |
BAT_ORBIT_RATE | 1.6f | ...advancing this many radians a second. |
BAT_POISE_MIN | 1.2f | The circling patience before it dares a dart, rolled between... |
BAT_POISE_MAX | 3.0f | ...these. |
BAT_SWOOP_RANGE | 6.0f | Prey inside this may be darted at. |
BAT_SWOOP_TIME | 1.4f | A dart that has not connected by now peels off anyway. |
BAT_BITE_REACH | 1.1f | Center to center: the rake connects within this. |
BAT_DAMAGE | 6.0f | |
BAT_KNOCK | 4.0f | m/s handed to the raked wizard. |
BAT_HIT_COOLDOWN | 0.4f | Rate limit on blows to a bat, and its own rakes. |
BAT_RETREAT_TIME | 1.1f | The climb away after a dart, hit or miss. |
BAT_FIRE_R | 1.2f | This close to a standing flame's head catches (the firepit and braziers burn wider). |
BAT_BOLT_R | 2.0f | A fireball's brush: a bolt or its trail passing this close lights the bat without a hit. |
BAT_IGNITE_HEAT | 18.0f | Heat a fire bat's touch puts on a wizard (effect.c)... |
BAT_IGNITE_COOL | 1.0f | ...at most once per this many seconds. |
BAT_LIT_SPEED_K | 1.15f | A burning bat flies a little hotter. |
SND_BAT_SCREECH | 14.0f | The dive's announcement, and the shriek of catching fire. |
| Constant | Value | |
|---|---|---|
MAX_PLANTS | 8 | |
PLANT_HEALTH | 60.0f | |
PLANT_SENSE | 6.0f | It feels footfalls through the soil this far, crouched or not. |
PLANT_REACH | 2.8f | The bite's flat reach: a stride PAST a swipe's (SWING_REACH), so no one pokes it down for free -- killing it means trading through the telegraph. |
PLANT_DAMAGE | 26.0f | |
PLANT_KNOCK | 14.0f | |
PLANT_STRIKE_HIT_T | 0.8f | The rear-back before the snap: the honest telegraph. LONGER than a sword's windup on purpose -- standing in and cutting is a real trade (your blow lands, then its bite), and stepping out is free. |
PLANT_STRIKE_TIME | 1.15f | |
PLANT_GULP_TIME | 1.5f | A landed bite buys the party this long a swallow. |
PLANT_RISE_TIME | 0.5f | |
PLANT_FLINCH_TIME | 0.4f | |
PLANT_DOZE_PATIENCE | 4.0f | Prey out of sense this long: back to sleep. |
PLANT_NOBODY | 1e9f | prey_dist with nobody near. |
| Constant | Value | |
|---|---|---|
MAX_LISTENERS | 1 | |
LISTENER_HEAR_MIN | 0.5f | Arrivals quieter than this never register. |
LISTENER_WAKE_LOUD | 5.0f | What it takes to stir it from the lurk. |
LISTENER_FRENZY_LOUD | 13.0f | Loud AND close: the rush. |
LISTENER_LISTEN_TIME | 2.4f | Patience per listen; silence this long loses it. |
LISTENER_MEMORY | 18.0f | Seconds a heard position stays worth stalking to: it must outlast a cross-dungeon trek, or no hunt ever completes. |
LISTENER_CREEP_SPEED | 2.8f | |
LISTENER_FRENZY_SPEED | 6.8f | |
LISTENER_ACCEL | 30.0f | Velocity steering, like a skeleton's. |
LISTENER_STRIKE_RANGE | 1.7f | Flat reach for the lunge to begin... |
LISTENER_STRIKE_HIT_T | 0.35f | ...the claw lands this far into it... |
LISTENER_STRIKE_TIME | 0.95f | ...and the whole swing. |
LISTENER_DAMAGE | 34.0f | |
LISTENER_KNOCK | 22.0f | A claw LAUNCHES you: the hit is the separation the escape is made of. |
LISTENER_DEAF | 2.5f | Its own strike deafens it: the window to crawl away silent, or run loud. |
LISTENER_STRIKE_FRESH | 1.2f | It lunges at NOISE in reach, never at bodies: silence this old is invisible to it. |
LISTENER_HEALTH | 120.0f | It has blood after all: four sword hits, taken while it claws back. Silence is still the smarter door. |
| Constant | Value | |
|---|---|---|
BOSS_HEALTH | 900.0f | |
BOSS_RADIUS | 1.05f | The capsule: about two and a half wizards across. |
BOSS_CAP_LO | -0.55f | Its lower sphere center... |
BOSS_CAP_HI | 1.45f | ...and its upper: it stands about 4 m tall. |
BOSS_DENSITY | 900.0f | |
BOSS_RIDE | 2.05f | Body origin over the ground, the way RIDE_HEIGHT holds a wizard. |
BOSS_TURN_RATE | 2.2f | rad/s while it is not committed to a swing. |
BOSS_TURN_SLOW | 0.5f | rad/s inside a windup: a rolled-past boss cannot track you. |
BOSS_WALK_SPEED | 4.2f | |
BOSS_CHARGE_SPEED | 13.0f | |
BOSS_ACCEL | 26.0f | |
BOSS_WAKE_RANGE | 26.0f | A living wizard this close, inside the boss room, wakes it. |
BOSS_SWEEP_RANGE | 6.5f | Where it starts a horizontal sweep... |
BOSS_SLAM_RANGE | 9.5f | ...and the overhead slam it closes with from further out. |
BOSS_CHARGE_RANGE | 22.0f | Past the slam, it runs you down. |
BOSS_WINDUP_T | 0.85f | The tell, before every attack (BOSS_WINDUP is the state it is: wire.h). |
BOSS_SWEEP_TIME | 0.55f | The swing itself... |
BOSS_SWEEP_HIT | 0.18f | ...and when in it the arc lands. |
BOSS_SWEEP_ARC | 0.95f | Half the sweep's arc, in radians: a wide cleave in front. |
BOSS_SWEEP_REACH | 7.5f | |
BOSS_SWEEP_DAMAGE | 34.0f | |
BOSS_SLAM_TIME | 0.7f | |
BOSS_SLAM_HIT | 0.24f | |
BOSS_SLAM_RADIUS | 6.0f | The shockwave, from where the blade lands... |
BOSS_SLAM_DAMAGE | 42.0f | ...and what standing in it costs. |
BOSS_CHARGE_TIME | 1.6f | How long a run lasts before it must recover. |
BOSS_CHARGE_DAMAGE | 26.0f | |
BOSS_CHARGE_REACH | 2.6f | Center to center: what the shoulder catches. |
BOSS_RECOVER_T | 1.5f | Rooted, after every attack: the window to punish. Long enough to land a charged bash in. |
BOSS_STALK_MIN | 0.9f | ...and it must walk at you at least this long before it commits again, so the window is a window and not a blink. |
BOSS_RAGE_HEALTH | 0.35f | Below this fraction it stops resting between swings. |
BOSS_RAGE_K | 1.35f | ...and everything it does runs this much faster. |
BOSS_KNOCK | 6.5f | m/s handed to whoever it lands on: a shove across the room's width, not out of the fight. |
BOSS_HIT_COOLDOWN | 0.6f | |
BOSS_DAMAGE_TAKEN | 1.0f | Scale on every blow it takes: the one dial for the fight's length. |
| Constant | Value | |
|---|---|---|
MAX_WEBS | 8 | |
WEB_RADIUS | 1.15f | |
WEB_CEILING | 1.6f | How high over a patch a torso counts as standing on it... |
WEB_FLOOR | 0.5f | ...and how far under (a step down onto it). |
WEB_TIME | 20.0f | Seconds a patch lies there uncaught. |
WEBSHOT_RADIUS | 0.16f | The glob's collision sphere. |
WEBSHOT_DENSITY | 40.0f | ~0.7 kg: it breaks on what it hits instead of shoving it. |
WEBSHOT_SPEED | 14.0f | The spit, flat; the lob adds the rise for the fall over the distance. |
WEBSHOT_LIFE | 3.0f | |
WEBSHOT_BURST_TIME | 0.25f | Seconds the burst state streams, so every client sees it. |
| Constant | Value | |
|---|---|---|
MAX_BREAKABLES | 48 | Pieces standing at once: the pool the furniture roll fills first, plain props past it. |
BREAKABLE_CRATE_HEALTH | 10.0f | |
BREAKABLE_BARREL_HEALTH | 40.0f |
The world
| Constant | Value | |
|---|---|---|
MAX_PLATES | 4 | |
MAX_SPIKEBALLS | 3 | |
MAX_PITS | 2 | |
MAX_PLATFORMS | 2 | |
PRESS_HALF | 0.9f | A plate fills a corridor: 1.8 m of a 2 m clear width. |
PRESS_STAND_Y | 1.7f | A torso no higher than this over the plate is standing on it. |
SPIKEBALL_RADIUS | 0.6f | |
SPIKEBALL_REST_H | 1.1f | The ball's center over the floor, hanging straight down: chest height. |
SPIKEBALL_LATCH | 0.87f | Radians off the vertical the latch holds it at: fifty degrees, the ball's bottom well over a head. |
SPIKEBALL_DAMP | 0.3f | Amplitude decay per second (about fourteen seconds of swinging from the latch). |
SPIKEBALL_STILL | 0.02f | Radians of amplitude that count as hanging still. |
SPIKEBALL_REST_TIME | 3.0f | |
SPIKEBALL_WINCH_TIME | 3.0f | |
SPIKEBALL_HIT_SPEED | 3.0f | Slower than this it is an obstacle, not a blow. |
SPIKEBALL_DAMAGE | 35.0f | |
SPIKEBALL_KNOCK | 8.0f | m/s along the ball's travel... |
SPIKEBALL_LIFT | 4.0f | ...and up, ragdolling. |
SPIKEBALL_COOLDOWN | 0.8f | |
SPIKEPIT_DEPTH | 3.0f | Floor top to pit floor top: a fall, and a climb back out. |
SPIKEPIT_SPIKE_H | 1.0f | The bed's spikes (cosmetic; the bite is by height). |
SPIKEPIT_BITE | 1.3f | A torso lower than this over the pit floor is on the spikes; the platform lifts a wizard off them inside a quarter second. |
SPIKEPIT_DAMAGE | 45.0f | |
SPIKEPIT_LIFT | 3.0f | The hop off each bite. |
SPIKEPIT_COOLDOWN | 2.5f | Between bites on one character: time to grab the wall. |
SPIKEPIT_END | DUNGEON_WALL | Half the thickness of a pit's end walls: a corridor wall's, like its sides, since a wide pit's outer lanes may end against stone where the hall past it runs narrower (dungeon_traps.c), and that stone is one wall from the pit's floor to the ceiling. |
PLATFORM_SPEED | 1.5f | m/s, either way: a pit's depth in two seconds. |
| Constant | Value | |
|---|---|---|
MAX_LEVERS | 4 | |
MAX_SPIKES | 4 | |
MAX_LINKS | 8 | Lever-to-fixture links the level may hold. |
LEVER_REACH | 2.2f | Torso center to the lever's base. |
DOOR_HALF_W | 1.1f | |
DOOR_HALF_H | 1.4f | |
DOOR_THICK | 0.12f | Half the slab's thickness. |
DOOR_RISE | 2.4f | How far up an open door stands: a wizard walks under with room to spare. |
DOOR_SPEED | 2.0f | m/s, either way. |
SPIKE_HALF | 0.9f | |
SPIKE_ARM_TIME | 0.4f | The click before the shot: time to step off. |
SPIKE_OUT_TIME | 0.5f | |
SPIKE_RESET_TIME | 1.2f | |
SPIKE_HEIGHT | 0.6f | The spikes' reach above the grate (cosmetic; the blow is by position). |
SPIKE_DAMAGE | 20.0f | |
SPIKE_LIFT | 5.0f | m/s upward: off the spikes. |
SPIKE_COOLDOWN | 0.5f | The fastest they can land on one character. The biting window is longer than this, so standing through a whole shot takes more than one blow -- raise it to a second and a bit to go back to one. |
SPIKE_BITE | 0.5f | How far out they have to be to draw blood: halfway. What is over them while they are is hurt, rising or sinking -- what the eye sees is what bites. |
| Constant | Value | |
|---|---|---|
FOREST_EXTENT | 144.0f | Half the field: 288 meters of wood, ringed by cliffs no hand can climb. |
FOREST_RIVERS | 2 | One running north-south, one east-west: every way out crosses water. |
FOREST_RIVER_HALF | 3.0f | Half a channel's width... |
FOREST_RIVER_DEPTH | 2.0f | ...and how far down to its bed. The banks are earth, so they climb (climb.c). |
FOREST_STEP | 2.0f | One terrace of earth: a hill's ring, a shelf's rise, a waterfall's drop. Well over STEP_HEIGHT (a cliff is a climb, never a stair), and even with a river bank, so every face in the wood climbs the same. |
FOREST_MAX_LEVEL | 3 | The highest ground stands this many terraces up. |
FOREST_MAX_FALLS | 4 | Waterfall lines over both rivers, at the most (two drops each). |
FOREST_PATH_HALF | 1.7f | Half the width of a dirt track. |
FOREST_CAMP_R | 6.5f | The clearing the camp stands in. |
FOREST_SPAWN_R | 3.2f | The spawn ring around the firepit. |
FOREST_BRANCHES | 4 | Paths out of the camp; the second and fourth fork on the way. |
FOREST_SITES | 6 | ...so this many places to arrive at, two of them gates. |
FOREST_MAX_PATHS | 10 | Segments over all of them. |
FOREST_MAX_TREES | 6000 | The wood, at the most: the statics list is the real ceiling. |
FOREST_TREE_HP | 3 | Chops to fell a trunk (any swing is a chop: forest_chop_segment). |
FOREST_REPLANT_REACH | 2.2f | A stump within this of the wizard takes the interact: the planting. |
SND_CHOP | 14.0f | An axe biting wood carries... |
SND_TREEFALL | 30.0f | ...and a tree coming down carries a good deal farther. |
FOREST_MAX_BRIDGES | 32 | |
FOREST_MAX_BEDS | 640 | |
FOREST_MAX_FIRES | 8 | The campfire, and a brazier on every cairn. |
FOREST_DECK_Y | 0.15f | A bridge deck's middle: it stands ON the ground, never into it... |
FOREST_DECK_HALF_Y | 0.15f | ...so its top is one step up (under STEP_HEIGHT). |
FOREST_DECK_HALF_W | 1.30f | Half the deck's width. |
FOREST_DECK_BANK | 1.60f | How far onto each bank it runs past the water. |
FOREST_GATE_BACK | 3.40f | How far behind its pad a gate's arch stands. |
| Constant | Value | |
|---|---|---|
GATE_RADIUS | 2.2f | The pad, flat on the ground. |
GATE_HEIGHT | 3.2f | How far up the column reaches: what you must stand inside. |
GATE_DWELL | 3.0f | Seconds inside it before the party goes down. |
GATE_DECAY | 1.5f | How fast the charge runs back down outside it. |
| Constant | Value | |
|---|---|---|
PORTAL_RADIUS | 2.0f | The boss pad, flat on the floor. |
PORTAL_HOME_RADIUS | 1.1f | The entrance pad: under the smallest spawn ring (1.4 m -- the minimum room half extent less the ring's inset, dungeon.c), so a party lands around the light and never in it. |
PORTAL_HEIGHT | 3.4f | How far up the column reaches: what you must stand inside. |
PORTAL_DWELL | 3.0f | Seconds inside it before the trip. |
PORTAL_DECAY | 1.5f | How fast the charge runs back down outside it. |
PORTAL_CHEST_BACK | 4.5f | How far behind the chest the boss pad stands. |
| Constant | Value | |
|---|---|---|
CHEST_HALF_X | 0.55f | |
CHEST_HALF_Y | 0.30f | |
CHEST_HALF_Z | 0.36f | |
CHEST_DENSITY | 900.0f | ~510 kg: a wizard can carry one, slowly. |
CHEST_REACH | 2.4f | Torso center to chest center: close enough to work the lid. |
CHEST_LEAVE | 3.2f | Past this the server closes the looker's view. |
CHEST_BOSS | (MAX_CHESTS - 1) | The last chest is the boss's hoard: no body until the boss falls (chest.c)... |
CHEST_BOSS_SCALE | 1.6f | ...and it is this much bigger than an ordinary one, body and look alike. |
| Constant | Value | |
|---|---|---|
DROP_HALF | 0.18f | The body's half side. |
DROP_DENSITY | 300.0f | ~14 kg: it lands and stays put. |
DROP_PICKUP_RANGE | 4.5f | Torso center to the drop: close enough to pick up. |
DROP_FOCUS_R | 0.55f | The crosshair's ray passing within this of it: the client's focus. |
DROP_FOCUS_R_LOOSE | 1.2f | The server's check on a request, with the client's intent a moment old... |
DROP_PICKUP_SLACK | 1.4f | ...and its torso a stride behind the prediction. |
DROP_LIFE | 240.0f | Seconds a drop lies there before it is swept. |
DROP_TOSS | 2.5f | m/s a dropped item leaves the hand at, ahead and a little up. |
DROP_AHEAD | 0.9f | Where it leaves from: this far ahead of the torso. |
The arena's own fixtures
| Constant | Value | |
|---|---|---|
ARENA_EXTENT | 22.0f | |
ARENA_WALL_HALF_H | 4.0f | Walls are centered at this height. |
PILLAR_SPACING | 10.0f | |
PILLAR_HALF | 0.7f | |
PILLAR_HALF_H | 3.0f |
| Constant | Value | |
|---|---|---|
PIT_X | 0.0f | |
PIT_Z | 16.0f | |
PIT_HALF_X | 5.0f | Half the span, along the bridge. |
PIT_HALF_Z | 4.0f | Half the chasm's width, across it. |
PIT_FLOOR_Y | -16.0f | The bottom, where the debris lands. |
PIT_SPIKE_HEIGHT | 1.2f | The bed of spikes on the floor: how far they stand up... |
PIT_SPIKE_BITE | 2.2f | ...and how far over the floor a body is still on them, whatever it landed on. |
LOG_RADIUS | 0.18f | |
LOG_HALF | 1.30f | Half a log's length; logs lie across the deck, along z. |
LOG_DENSITY | 700.0f | Wood: ~200 kg a log, a quarter of a wizard. |
RAIL_Z | (LOG_HALF - 0.20f) | The two ropes run this far out from the deck's center line. |
BRIDGE_SAG | 0.55f | How far the deck's middle hangs below its ends at rest. |
DECK_END_Y | (-LOG_RADIUS + 0.02f) | End log centers: their tops sit flush with the rim. |
STAKE_OUT | 0.9f | Stakes stand this far outside the rim, at the four corners. |
STAKE_RADIUS | 0.13f | |
STAKE_HALF | 0.55f | The stake capsule's half-length. |
STAKE_TOP_Y | 1.15f | Where the rope is tied off. |
ROPE_RADIUS | 0.045f | |
ROPE_CUT_DIST | 0.24f | A moving blade this close to a tie-off severs it. |
ROPE_BURN_RADIUS | 1.8f | A fireball bursting this close to a tie-off burns through it. |
ROPE_ENDS | 4 | The tie-offs: west / east end, south / north side. |
| Constant | Value | |
|---|---|---|
BEAM_HALF | 13.5f | |
PIVOT_Y | 11.95f | Underside of the beam, where the chain hangs from. |
LINK_HALF | 0.47f | Center to joint anchor; links are capsules along their local y. |
LINK_RADIUS | 0.14f | |
LINK_DENSITY | 6.0f | Chunky links keep the ball:link mass ratio solver-friendly. |
BALL_RADIUS | 0.9f | |
BALL_DENSITY | 2.0f | |
TIE_DROP | 1.5f | How far below the pivot the ball hangs while tied up. |
PLATE_X | 0.0f | |
PLATE_Z | 7.5f | |
PLATE_HALF | 1.3f | |
PLATE_HEIGHT | 0.12f | |
BALL_HIT_MIN_SPEED | WORLD_HIT_EVENT_SPEED | The hit-event threshold (config.h) is also what counts as a ball hit. |
BALL_DAMAGE_K | 4.0f | Damage per m/s of approach speed. |
BALL_DAMAGE_MAX | 70.0f | |
BALL_HIT_COOLDOWN | 0.5f | |
MAX_HEALTH | 100.0f | |
HURT_FLASH_TIME | 1.0f |
| Constant | Value | |
|---|---|---|
TRAP_WALL_X | (-ARENA_EXTENT + 0.5f) | The west wall's inner face: where the hole is cut. |
TRAP_Z | 5.0f | The lane, clear of the pillars, the target, and the chasm. |
TRAP_MUZZLE_Y | 1.3f | Where the arrow leaves the hole: chest height once it reaches the plate. |
TRAP_RANGE | 7.0f | Hole to plate: a shot crosses it inside the length of one roll. |
TRAP_PLATE_HALF | 1.1f | The plate's square, half a side. |
TRAP_STAND_Y | 1.7f | A torso no higher than this over the floor is standing on it. |
TRAP_HOUSING_HALF | 1.15f | The stone block the hole is cut through, half a side... |
TRAP_HOUSING_OUT | 0.3f | ...and how far it stands proud of the wall. |
TRAP_HOLE_HALF | 0.3f | The opening in its face. |
TRAP_RESET | 1.5f | After a shot, before the plate arms again: stand on it and it fires on this beat. |
TRAP_ARROW_SPEED | 46.0f | Well under a full draw's: still flat enough over the gap, slow enough to watch cross it. |
| Constant | Value | |
|---|---|---|
TARGET_X | -13.0f | |
TARGET_Z | -5.0f | |
TARGET_BEAM_Y | 2.6f | The beam's center; its underside is where the chains hang from. |
TARGET_BEAM_HALF | 1.2f | Half the beam's length (along z); the posts stand at its ends. |
TARGET_BEAM_R | 0.08f | The beam's half thickness. |
TARGET_RADIUS | 0.55f | |
TARGET_THICK | 0.04f | The disc's half thickness. |
TARGET_DENSITY | 300.0f | ~23 kg: an arrow swings it, a fireball throws it. |
TARGET_LINK_HALF | 0.075f | Center to joint anchor; links are capsules along their local y. |
TARGET_LINK_RADIUS | 0.03f | |
TARGET_LINK_DENSITY | 2000.0f | |
TARGET_HANG | 0.35f | The chains hang this far either side of the disc's center, and meet its rim there. |
TARGET_RINGS | 5 | Rings of the face, the bullseye counted: score 0 is the middle. |
| Constant | Value | |
|---|---|---|
ROCK_X | 15.0f | |
ROCK_Z | -8.0f |
| Constant | Value | |
|---|---|---|
MAX_TORCHES | 64 | |
MAX_LIGHTS | 32 | The lit shader's point light array: the nearest torches, then the fireballs and their bursts. |
TORCH_LIT | 24 | How many torches may light a frame; the rest of the array is the fireballs'. |
TORCH_NEAR | 26.0f | Past this a torch neither lights, spawns particles, nor draws its flame. |
Sound
Everything audible in the game reports itself onto one sound field, and anything with ears asks that field what it heard. In the dungeon both the distance and the bearing run along the carved cells, so sound goes where a walker could go and an ear turns toward the doorway a noise came through -- never through stone.
The SND_* constants below are how far each kind of act carries, in meters. The listener hunts by exactly this table, and so do your own ears: what players hear and what monsters hear is the same physics.
| Constant | Value | |
|---|---|---|
PLAYER_CATEGORY | 0x2ull | |
ENEMY_CATEGORY | 0x4ull | |
FIREBALL_CATEGORY | 0x8ull | |
POTION_CATEGORY | FIREBALL_CATEGORY | Thrown flasks share the bolts' category: every mask that ignores one ignores the other. |
Voice chat
| Constant | Value | |
|---|---|---|
VOICE_RATE | 48000 | |
VOICE_FRAME | 960 | 20 ms. |
VOICE_BITRATE | 24000 | |
VOICE_MAX_PACKET | 400 | Bytes of Opus per frame, worst case. |
VOICE_FULL | 3.0f | A speaker this close is at full volume. |
VOICE_RANGE | 40.0f | A speaker this far is silent. |
VOICE_FADE | 5.0f | The last meters before VOICE_RANGE ease out instead of cutting. |
VOICE_RELAY_MARGIN | 2.0f | The server keeps relaying a little past the range so the fade completes. |
VOICE_PAN_NEAR | 2.0f | Speakers closer than this pull toward the center of the stereo image. |
VOICE_JITTER | (3 * VOICE_FRAME) | 60 ms buffered before a speaker starts playing. |
VOICE_MAX_BUFFER | (12 * VOICE_FRAME) | 240 ms: past this the listener skips ahead. |
VOICE_RING | VOICE_RATE | One second of decoded audio per speaker. |
VOICE_PLC_MAX | 4 | Lost frames concealed by the decoder; a longer gap is a fresh start. |
VOICE_RESYNC_TIME | 1.5f | Silence this long resets a speaker's sequence and buffer. |
VOICE_GATE_RMS | 0.02f | Open mic: transmit while the frame's RMS is above this... |
VOICE_GATE_HANG | 0.4f | ...and for this long after it drops below. |
VOICE_ECHO_GAIN | 0.7f | --voice-echo: your own voice, in the middle of your head. |
VOICE_HUD_HOLD | 0.3f | Seconds a speaker stays listed after their last frame. |
Everything else
Whatever the headings above did not name -- the pool sizes, the collision categories, and any block added to tunables.h since this page was last given a heading of its own. Nothing can fall off the end of the appendix without showing up here.
The bit the climb's probes cast against
| Constant | Value | |
|---|---|---|
CLIMB_CATEGORY | 0x10ull | |
MAX_PROPS | 96 | The crates and balls of the piles: a third of this is built. |
MAX_STATICS | 8192 | The forest's wood is the many now (~6000 trunks on a generous seed at the 288 m extent), then the dungeon's floors, walls, ceilings, and staircases on the 32-cell grid; the arena uses a handful. |
CHAIN_LINKS | 10 | |
CHAIN_BODIES | (CHAIN_LINKS + 1) | Links pivot-to-tip, then the ball. |
SWORD_COUNT | 2 | |
MAX_ENEMIES | 8 | Skeletons: one locked capsule each. |
MAX_FIREBALLS | 16 | Pooled fireball bolts. |
MAX_POTIONS | 8 | Pooled thrown flasks. |
MAX_CHESTS | 3 | Loot chests: one closed, one locked, and the boss's (chest.c). |
BRIDGE_LOGS | 24 | The log bridge's deck. |
MAX_ARROWS | 16 | Pooled arrows. |
TARGET_LINKS | 4 | Links in each of the practice target's two chains... |
TARGET_BODIES | (2 * TARGET_LINKS + 1) | ...then the disc. |
MAX_DOORS | 2 | Metal doors (door.c): the level places up to this many. |
MAX_SPIDERS | 3 | Spiders (spider.c): one per lair the level places, a locked sphere each. |
MAX_BATS | 4 | Bats (bat.c): one per perch the map hangs, a locked gravity-free sphere each. |
MAX_WEBSHOTS | 6 | Pooled web globs (web.c): what a spider spits. |
MAX_DROPS | 16 | Pooled drops (drop.c): the items lying on the floor. |
MAX_PILES | 8 | |
CHAIN_GROUP | (-(MAX_PLAYERS + 1)) | Collision group: the chain never collides with itself. |
TARGET_GROUP | (-(MAX_PLAYERS + 2)) | The target's chains and disc never collide with each other. |
ARROW_CATEGORY | FIREBALL_CATEGORY | Arrows share the bolts' category too: nothing that ignores a bolt stops an arrow. |
WALK_SPEED | 7.0f | |
GROUND_ACCEL | 60.0f | |
AIR_ACCEL | 15.0f | |
JUMP_SPEED | 8.5f | |
WIZ_HOP_MAX | 1.15f | The auto-hop's ceiling over the feet: a ledge with its top under this is stepped onto without the jump key; taller is a wall, and the climb's. |
WIZ_HOP_REACH | 0.75f | How far ahead the ledge probes look. |
The staves
| Constant | Value | |
|---|---|---|
BOLT_DAMAGE | 14.0f | The arcane bolt: the bottom rung of the imbuements, and the one spell no book teaches. Unerring, no element, no blast. |
STAFF_SPELL_K | 0.6f | What a staff's cast lands, as a share of the same spell out of a book, before its Spell Power. |
THUNDERWAVE_RADIUS | 4.0f | The shove burst around the caster. |
THUNDERWAVE_DAMAGE | 12.0f | |
THUNDERWAVE_KNOCK | 11.0f | m/s away from the caster: the point of the spell. |
THUNDERWAVE_LIFT | 5.0f | |
THUNDERWAVE_IMPULSE | 1500.0f | b3World_Explode on the props around the caster. |
FLAME_RANGE | 5.5f | Burning hands: the cone's reach... |
FLAME_CONE_COS | 0.8f | ...and its width (cos of the half-angle, ~37 degrees). |
FLAME_DAMAGE | 16.0f | |
FLAME_HEAT | 20.0f | Points of heat on a struck wizard; a struck skeleton burns for BURN_TIME instead. |
SLEEP_RADIUS | 2.6f | Everyone this close to the mark drops where they stand... |
SLEEP_DAMAGE | 1.0f | ...for a scratch (character_blow needs a wound to land the tumble)... |
SLEEP_DROWSY | 30.0f | ...and a wizard wakes up slow (effect.c). |
MAX_DAGGER_ZONES | 4 | Clouds of daggers up at once; a cast past that recycles the oldest. |
DAGGER_ZONE_RADIUS | 1.8f | The cloud on the ground; a heal circle's vertical band. |
DAGGER_ZONE_TIME | 6.0f | Seconds a cloud spins. |
DAGGER_PULSE | 0.4f | A cut this often to everyone standing in it, caster included... |
DAGGER_ZONE_DAMAGE | 4.0f | ...each this deep. (DAGGER_DAMAGE is the rogue's blade, above.) |
The sound field
| Constant | Value | |
|---|---|---|
SND_VOICE | 40.0f | A talking wizard (the relay's word): the dinner bell -- it carries a room or two down the halls. |
SND_FOOTSTEP | 7.0f | A walking footfall... |
SND_SPRINT_STEP | 15.0f | ...and a sprinting one. |
SND_ROLL | 12.0f | The dodge's tumble. |
SND_BLOW | 20.0f | Any landed hit (character_blow), plus a little per point of damage. |
SND_BLOCK | 18.0f | A shield turning a blow (shield.c): iron on wood, nearly as loud as the hit it stopped. |
SND_BLAST | 55.0f | A fireball going off. |
SND_THUNDERWAVE | 45.0f | The shove burst around a caster. |
SND_FLAME | 25.0f | Burning hands' roar. |
SND_BLINK | 15.0f | A misty step's pop, at both ends of the blink. |
SND_DAGGERS | 15.0f | A cloud of daggers spinning up. |
SND_SPLASH | 16.0f | A thrown flask shattering. |
SND_INTERACT | 12.0f | A lever thrown, a chest lid, a door grinding. |
SND_SUMMON | 40.0f | The circle's consume and manifest. |
SND_CHOMP | 18.0f | A chomp plant's snap through empty air... |
SND_CHOMP_HIT | 30.0f | ...and one that caught somebody: the dinner bell, for anything hunting by ear. |
SND_EAT | 8.0f | A wizard munching a mushroom: quiet, but not silent to a thing that hunts by ear. |
SND_BREAK | 22.0f | A crate or a barrel going to pieces (breakable.c): the hit already rang out through character_blow; this is the wood. |
The boar
| Constant | Value | |
|---|---|---|
MAX_BOARS | 3 | |
BOAR_HEALTH | 90.0f | |
BOAR_RADIUS | 0.55f | |
BOAR_DENSITY | 700.0f | Heavy: a charging boar is not shoved off its line by the wizard it is running at. |
BOAR_RIDE | 0.85f | Body origin over the ground: a low animal, where RIDE_HEIGHT stands a wizard. |
BOAR_NOTICE_RANGE | 14.0f | A living wizard this close, in line of sight, is worth pawing at. |
BOAR_LOSE_RANGE | 22.0f | |
BOAR_GRAZE_SPEED | 1.6f | The amble between legs... |
BOAR_CHARGE_SPEED | 14.0f | ...and the run, which beats a sprint: outrunning it is not on the menu. |
BOAR_ACCEL | 40.0f | |
BOAR_TURN_RATE | 2.4f | rad/s while it is not committed... |
BOAR_CHARGE_TURN | 0.30f | ...and inside the charge: a correction, not a chase. A sidestep beats it. |
BOAR_PAW_TIME | 1.0f | Head down, hoof scraping: the one warning, and long enough to act on. |
BOAR_CHARGE_TIME | 1.9f | A charge that hits nothing runs itself out over this. |
BOAR_SKID_TIME | 0.8f | The turn-around after a charge that ended in the open. |
BOAR_DAZE_TIME | 3.2f | A charge that ended in stone: the punish window. |
BOAR_GORE_DAMAGE | 30.0f | |
BOAR_GORE_KNOCK | 18.0f | The tusks LAUNCH: a gored wizard leaves the lane, which is the mercy in it. |
BOAR_HIT_COOLDOWN | 0.5f | Rate limit on blows to a boar, and on its own goring. |
BOAR_SLAM_SPEED | 6.0f | Meeting anything that is not a character this fast ends the charge... |
BOAR_SLAM_SELF | 12.0f | ...and costs the boar this much of its own health. |
SND_BOAR_SNORT | 22.0f | The paw's warning onto the sound field... |
SND_BOAR_SLAM | 30.0f | ...and the crash of a charge into stone. |
The wolves
| Constant | Value | |
|---|---|---|
MAX_WOLVES | 4 | |
WOLF_HEALTH | 45.0f | |
WOLF_RADIUS | 0.35f | |
WOLF_RIDE | 0.62f | Body origin over the ground: it runs on all fours, where RIDE_HEIGHT stands a wizard. |
WOLF_DENSITY | 260.0f | |
WOLF_NOTICE_RANGE | 16.0f | |
WOLF_LOSE_RANGE | 26.0f | |
WOLF_PROWL_SPEED | 2.2f | |
WOLF_STALK_SPEED | 5.4f | Holding the ring... |
WOLF_LUNGE_SPEED | 9.5f | ...and the one that came in. |
WOLF_ACCEL | 34.0f | |
WOLF_TURN_RATE | 5.0f | |
WOLF_RING_R | 5.0f | The bearing it holds around its prey at first... |
WOLF_RING_TIGHT | 2.6f | ...closing to this... |
WOLF_NERVE_TIME | 7.0f | ...over this long of unbroken circling. |
WOLF_RING_DRIFT | 0.5f | rad/s the whole ring turns: they PACE, and which one is behind you keeps changing. |
WOLF_TOKEN_TIME | 2.6f | The longest one wolf may hold the pack's turn to lunge. |
WOLF_LUNGE_TIME | 1.3f | A lunge that connects with nothing peels off anyway. |
WOLF_PEEL_TIME | 1.0f | The retreat back to the ring after one. |
WOLF_BITE_REACH | 1.9f | |
WOLF_BITE_DAMAGE | 14.0f | |
WOLF_BITE_KNOCK | 6.0f | |
WOLF_BACK_K | 2.0f | A bite on a wizard's BACK (their own look yaw, which the server has) is worth this many of one to the face: they hunt what is not looking. |
WOLF_BACK_COS | 0.0f | "Behind" is anything past a right angle from where the wizard is looking. |
WOLF_HIT_COOLDOWN | 0.35f | |
WOLF_HOWL_TIME | 1.6f | The rally: it stands still and sings, which is also the window to kill it. |
WOLF_HOWL_RANGE | 45.0f | Every wolf inside this joins the hunt where it stands. |
WOLF_HOWL_REST | 12.0f | ...and no wolf howls again for this long. |
WOLF_ROOM_RING | 20.0f | A SCENARIO room's layout only: the pack pushed out to the four quarters at this radius, well past a wolf's own sight of the middle, so a pilot can walk up on ONE of them and watch what a lone wolf does. The wood rings them tight around a post instead (wolf.c). |
SND_WOLF_HOWL | 60.0f | The loudest thing in the wood: the pack hears it, and so does everything else. |
SND_WOLF_BITE | 20.0f |
The wisp
| Constant | Value | |
|---|---|---|
MAX_WISPS | 3 | |
WISP_HEALTH | 26.0f | Thin: one arrow, or a couple of swipes if you can reach it at all. |
WISP_RADIUS | 0.30f | |
WISP_DENSITY | 40.0f | |
WISP_HOVER_Y | 2.2f | How high over the ground it likes to sit. |
WISP_WAKE_RANGE | 15.0f | |
WISP_LOSE_RANGE | 24.0f | |
WISP_BEAM_RANGE | 12.0f | The beam reaches this far and no further. |
WISP_STAND_OFF | 8.0f | The distance it tries to hold while it drains. |
WISP_SPACE | 4.0f | A wizard inside this makes it bolt. |
WISP_FLY_SPEED | 4.6f | |
WISP_BOLT_SPEED | 8.0f | Bolting is fast -- but slower than a sprint, so it CAN be run down. |
WISP_ACCEL | 22.0f | |
WISP_MARK_TIME | 0.9f | The brightening before the beam: the tell. |
WISP_BOLT_TIME | 1.4f | |
WISP_DRAIN_STEP | 0.5f | A drain bite lands this often while the beam holds... |
WISP_DRAIN_DAMAGE | 2.0f | ...for this much health, which is a trickle: a wisp does not kill you, it makes everything else able to... |
WISP_DRAIN_COLD | 1.0f | ...this many points of cold on the lifebar (effect.c) -- slow enough that a beam alone takes the better part of a minute to fill the bar, which is time to walk out of it... |
WISP_DRAIN_STAMINA | 0.07f | ...and this much of the stamina bar (climb.c), which is the number that decides fights: stand in a beam and you lose the sprint and the roll first. |
SND_WISP_CHIME | 12.0f | Quiet: it is not trying to be heard. |
The oozes
| Constant | Value | |
|---|---|---|
MAX_OOZES | 14 | The pool: OOZE_SEEDS seeds at OOZE_SIZE_MAX split all the way down into exactly this many. |
OOZE_SIZE_MAX | 2 | A seed's size; each split is one size down, and size 0 dies for good. |
OOZE_SEEDS | 2 | The pool's SHAPE: this many slots at the top size, twice that at the size below, and so on -- so every slot's radius is fixed at the build and a split raises a body that was already the right size instead of resizing one. OOZE_SEEDS * (2^(OOZE_SIZE_MAX+1) - 1) must be MAX_OOZES (ooze.c asserts it). |
OOZE_HEALTH | 22.0f | At size 0; a size up is OOZE_SIZE_K times the health... |
OOZE_SIZE_K | 2.2f | ...and the cube root of that again in radius, so a big one reads as big. |
OOZE_RADIUS | 0.34f | At size 0. |
OOZE_DENSITY | 500.0f | |
OOZE_WAKE_RANGE | 12.0f | |
OOZE_LOSE_RANGE | 20.0f | |
OOZE_GATHER_TIME | 0.7f | The squash before a hop: where the hop is going is readable in it. |
OOZE_SETTLE_TIME | 0.4f | The quiver after a landing, before it may gather again. |
OOZE_HOP_SPEED | 6.0f | Flat, at size 0 (a size up is OOZE_HOP_SIZE_K of it)... |
OOZE_HOP_LIFT | 5.0f | ...with this much of an arc. |
OOZE_HOP_SIZE_K | 0.8f | Each size up hops this much of the speed below it: big is slow. |
OOZE_HOP_REACH | 5.0f | A hop covers at most this much ground. |
OOZE_TOUCH_DAMAGE | 7.0f | Being touched by one, at size 0 (it scales with the size)... |
OOZE_TOUCH_POISON | 8.0f | ...and the acid that comes with it (effect.c). |
OOZE_TOUCH_KNOCK | 3.0f | |
OOZE_HIT_COOLDOWN | 0.5f | |
OOZE_SPLIT_SPEED | 4.0f | The two halves are thrown apart at this, so they never land inside each other. |
SND_OOZE_HOP | 10.0f | |
SND_OOZE_SPLIT | 24.0f |
The thornback
| Constant | Value | |
|---|---|---|
MAX_THORNBACKS | 3 | |
THORN_HEALTH | 110.0f | |
THORN_RADIUS | 0.55f | |
THORN_DENSITY | 800.0f | |
THORN_RIDE | 0.72f | Body origin over the ground: it is a beetle, and it is low. |
THORN_SHELL_COS | 0.30f | The plate's arc: a bit past a right angle either side of the facing. |
THORN_NOTICE_RANGE | 13.0f | |
THORN_LOSE_RANGE | 20.0f | |
THORN_TRUNDLE_SPEED | 1.4f | |
THORN_ADVANCE_SPEED | 2.6f | Slow on purpose: nothing ever forces you to fight its front. |
THORN_ACCEL | 20.0f | |
THORN_TURN_RATE | 0.9f | rad/s. At two meters a walking wizard goes round it twice as fast. |
THORN_RAM_RANGE | 2.4f | |
THORN_RAM_HIT_T | 0.55f | The shove's windup... |
THORN_RAM_TIME | 2.2f | ...and the whole of it, recovery included: it cannot turn inside one, so the recovery IS the invitation to walk round it. |
THORN_RAM_DAMAGE | 16.0f | |
THORN_RAM_KNOCK | 12.0f | |
THORN_LASH_TIME | 0.7f | The riposte a turned blow buys it... |
THORN_LASH_HIT_T | 0.25f | |
THORN_LASH_RANGE | 2.8f | |
THORN_LASH_DAMAGE | 8.0f | |
THORN_LASH_THORNS | 12.0f | ...and the spines it leaves in you (effect.c: F pulls them out). |
THORN_FLINCH_TIME | 0.6f | What a blow that got PAST the plate buys you. |
THORN_HIT_COOLDOWN | 0.3f | |
SND_THORN_RAM | 20.0f | |
SND_THORN_SHELL | 16.0f | A blow turned by plate: as loud as the hit it stopped, and as useless. |
DUNGEON_GRID | 32 | Cells per side, in x and z: a 128 m footprint, four times the floor area the 16-cell grid had. |
DUNGEON_LEVELS | 2 | Floors, stacked; level 0 is the deepest. |
DUNGEON_CELL | 4.0f | A cell, in meters. |
DUNGEON_LEVEL_H | 8.5f | Floor to floor: DUNGEON_HEAD of headroom over the floor's own thickness. Two kit wall courses; the ramp pitch (8.5 over 12 m, ~35 degrees) still rides under the 0.7-normal wall limit (test_walk pins it). |
DUNGEON_STAIR_RUN | 3 | Cells of steps in one staircase: the run rises DUNGEON_LEVEL_H over this many cells, so a taller level needs a longer run to keep the ramp's face reading as ground. |
DUNGEON_HALL_W | 3 | Cells ACROSS a corridor and a staircase: the spine A* digs and the lanes dug beside it (dungeon.c, s_widen), so a hall is three kit tiles wide -- ten meters clear between its walls, where one cell left two -- and a flight is cut and built over the same lanes. A pit spans the whole width (dungeon_traps.c). A room keeps one doorway, so a hall narrows to its spine for the cell before a door. An even width leans its extra lane to the positive side of the spine. |
DUNGEON_LANE_LO | (-((DUNGEON_HALL_W - 1) / 2)) | The lanes across a spine, as cell offsets: from this many below it... |
DUNGEON_LANE_HI | (DUNGEON_HALL_W - 1 + DUNGEON_LANE_LO) | ...to this many above. |
DUNGEON_SLAB | 0.25f | Half the thickness of a floor (a level's floor is the one below's ceiling). |
DUNGEON_WALL | 0.5f | Half the thickness of a wall; a wall stands INSIDE its own cell, against the boundary. The kit wall is a meter thick. |
DUNGEON_HEAD | (DUNGEON_LEVEL_H - 2.0f * DUNGEON_SLAB) | Headroom inside a level: floor top to ceiling = two 4 m kit wall tiles. |
DUNGEON_RAMP_T | 0.4f | The staircase ramp slab's thickness: under it, riser boxes seal the wedge. At most 2*DUNGEON_SLAB * cos(pitch), or the ramp's buried foot pokes through the ceiling of the room below. |
DUNGEON_MIN_ROOMS | 20 | |
DUNGEON_MAX_ROOMS | 28 | The room table's size; DUNGEON_MIN_ROOMS..this are placed. |
DUNGEON_ROOM_MIN | 2 | A room, in cells, on a side... |
DUNGEON_ROOM_MAX | 4 | ...and the entrance is one of these. |
DUNGEON_BOSS_SIDE | 5 | The boss room is square and bigger than any other. |
DUNGEON_EXTRA_EDGE | 0.14f | How often a graph edge outside the spanning tree is kept too: the loops. |
The camp's log seats
| Constant | Value | |
|---|---|---|
FOREST_SEATS | 4 | Logs around the firepit, one per side. |
FOREST_SEAT_R | 2.60f | Their centers out from the fire: clear of the banked stone, inside the spawn ring. |
FOREST_SEAT_LEN | 1.90f | A log end to end... |
FOREST_SEAT_RAD | 0.21f | ...and its radius, so the top sits at 0.42 m: a low bench, and under STEP_HEIGHT. |
The waystones
| Constant | Value | |
|---|---|---|
WAYPOINT_RADIUS | 1.5f | The pad test both ends run: standing within this of the stone across. |
WAYPOINT_HEIGHT | 2.5f | ...and this far up over its ground (a hop on the plinth does not leave it). |
WAYPOINT_PLINTH | 1.1f | Half the plinth's side: the square step the monolith stands on. |
WAYPOINT_STEP | 0.35f | The plinth's height over the ground: under STEP_HEIGHT, so a wizard walks up onto it. |
WAYPOINT_STONE_HALF | 0.28f | Half the monolith's side... |
WAYPOINT_STONE_H | 2.8f | ...and its height off the plinth. |
The dune field
| Constant | Value | |
|---|---|---|
DUNE_HALF | 92 | Half the field in meters: 184 m of sand across. |
DUNE_EXTENT | ((float)DUNE_HALF) | The same as a float; past it, open sky. |
DUNE_SCALE | (DUNE_EXTENT / 46.0f) | The field against the 46 m half it was tuned at: what every distance below is multiplied by. |
DUNE_AREA_X | ((DUNE_HALF * DUNE_HALF) / (46 * 46)) | ...and its area against that one's: what every count below is multiplied by (4 at 92 m). |
The oasis
| Constant | Value | |
|---|---|---|
OASIS_R | 9.5f | The basin: the sand bowls down over this radius... |
OASIS_DEPTH | 2.2f | ...to a flat floor this far under sea level (the pond's shore)... |
OASIS_FLAT_K | 0.22f | ...flat out to this fraction of the radius squared (the shore and the pond inside it). |
OASIS_POND_R | 4.2f | The pond fills the middle of the floor out to this... |
OASIS_POND_DEPTH | 1.4f | ...cut this much deeper again at its middle (the bed)... |
OASIS_WATER_Y | (-2.5f) | ...with the surface here: a hand under the shore, so the water is walked into, never fallen into. |
OASIS_GRASS_R | 7.6f | Grass grows out to here from the pond's middle. |
OASIS_DIST_MIN | (20.0f * DUNE_SCALE) | The basin's middle stands this far north of the spawn at least... |
OASIS_DIST_MAX | (24.0f * DUNE_SCALE) | ...and this far at most, off the spawn bowl and the waystone (walker.c, waypoint.c). |
OASIS_SIDE | (8.0f * DUNE_SCALE) | ...and this far east or west of it at most. |
OASIS_PALMS | 10 | |
OASIS_BEDS | 3 | Dry riverbeds running in from the rim. |
OASIS_BED_POINTS | 5 | A bed is a polyline of this many points, rim to shore. |
OASIS_BED_HALF_W | 2.6f | Half a bed's floor... |
OASIS_BED_BANK | 2.4f | ...and the bank it climbs back to the dunes over. |
OASIS_BED_Y0 | 0.9f | The floor at the rim end, descending to the basin floor at the shore. |
OASIS_TRAIL_Z | 11.5f | The trail to the water starts here, just north of the waystone (waypoint.c's DUNES_WAYPOINT_Z), and runs straight to the basin... |
OASIS_TRAIL_HALF | 3.0f | ...this wide either side: nothing is placed across it. |
OASIS_BED_START | (39.0f * DUNE_SCALE) | Where a bed begins: at the storm's edge (the walls stand past it)... |
OASIS_BED_END | 0.72f | ...and where it ends: this far out from the basin's middle, as a fraction of OASIS_R -- on the slope, short of the shore. |
The sandstorm
| Constant | Value | |
|---|---|---|
STORM_FOG_R0 | (30.0f * DUNE_SCALE) | |
STORM_FOG_R1 | (43.0f * DUNE_SCALE) | |
STORM_WALL | (40.5f * DUNE_SCALE) | The hidden walls: past the placements' extent (terrain_extent), inside the field's taper. |
STORM_WALL_H | 40.0f | Tall: no jump, climb, or hookshot clears one. |
STORM_EYE_DENSITY | 0.14f | The fog density the eye sees at the wall, on top of the haze: standing in the storm you see a few meters. |
The desert's scatter
| Constant | Value | |
|---|---|---|
MAX_TUMBLEWEEDS | 16 | A kind's capacity (entity.h's budget), so a literal rather than the area's: half the scatter's rate on the 92 m half, and enough to keep one in sight. |
TUMBLEWEED_RADIUS | 0.55f | |
TUMBLEWEED_DENSITY | 25.0f | Light: a kick sends it flying, and the wind moves it at all. |
TUMBLEWEED_WIND | 9.0f | m/s^2 downwind, on every tumbleweed on the ground... |
TUMBLEWEED_GUST | 0.35f | ...and this fraction of it again, gusting. |
TUMBLEWEED_SPEED_CAP | 7.0f | As fast as one rolls, whatever the wind says. |
TUMBLEWEED_WRAP | (38.0f * DUNE_SCALE) | Past this (|x| or |z|) it is put back at the upwind edge, and counted. |
CACTUS_THORNS | 8.0f | Points of thorns a prick puts on the lifebar... |
CACTUS_DAMAGE | 4.0f | ...and the sting itself. |
CACTUS_KNOCK | 3.0f | The shove back off the spines. |
CACTUS_COOLDOWN | 0.9f | Seconds before the same wizard can be pricked again. |
DESERT_CACTI | (26 * DUNE_AREA_X) | Rolled per build, less what will not fit: the counts keep the field's density whatever its size. |
DESERT_BONES | (9 * DUNE_AREA_X) | |
DESERT_DEAD_TREES | (7 * DUNE_AREA_X) | |
DESERT_ROCKS | (18 * DUNE_AREA_X) |
The scorpion
| Constant | Value | |
|---|---|---|
MAX_SCORPIONS | 5 | |
SCORP_HEALTH | 34.0f | |
SCORP_RADIUS | 0.42f | |
SCORP_DENSITY | 500.0f | |
SCORP_RIDE | 0.55f | Body origin over the ground. Buried is a look (the hump): the body never sinks, since a capsule inside the sand is a capsule the physics throws out again. |
SCORP_TRIGGER_RANGE | 2.6f | A living wizard this close to a buried one wakes it... |
SCORP_LOSE_RANGE | 14.0f | ...and one this far away is let go. |
SCORP_ERUPT_TIME | 0.55f | The burst up out of the sand: the tell. |
SCORP_STING_HIT_T | 0.30f | The sting lands this far into its swing... |
SCORP_STING_TIME | 0.65f | ...which is this long in all. |
SCORP_STING_REACH | 1.7f | |
SCORP_STING_DAMAGE | 12.0f | |
SCORP_STING_KNOCK | 5.0f | |
SCORP_STING_POISON | 16.0f | The venom, in points of the lifebar (effect.c). |
SCORP_CHASE_SPEED | 5.5f | Faster than a walk, slower than a sprint: it is left behind on purpose. |
SCORP_CHASE_TIME | 4.5f | How long it scuttles after somebody before it gives up and digs. |
SCORP_BURROW_TIME | 1.1f | The dig back in. |
SCORP_ACCEL | 40.0f | |
SCORP_TURN_RATE | 6.0f | |
SCORP_HIT_COOLDOWN | 0.4f | |
SND_SCORP_ERUPT | 14.0f | The sand bursting: quiet, and the only warning. |
The sandworm
| Constant | Value | |
|---|---|---|
MAX_SANDWORMS | 1 | |
WORM_HEALTH | 240.0f | |
WORM_RADIUS | 1.15f | |
WORM_DENSITY | 1500.0f | |
WORM_SUBMERGED_Y | (-1.6f) | The body's middle under the sand while it swims... |
WORM_RISEN_Y | 3.4f | ...and over it at the top of the breach. |
WORM_EAR | 0.5f | Carry left at the ear (sound.c: the carry less the trip) a noise needs to count: a walking footfall (SND_FOOTSTEP) reaches it from a few meters, a sprinting one (SND_SPRINT_STEP) from twice that, a blow or a blast from across the field. |
WORM_MEMORY | 6.0f | Seconds it keeps swimming toward the last noise it heard. |
WORM_SWIM_SPEED | 3.6f | Under the sand, toward a noise... |
WORM_CRUISE_SPEED | 1.4f | ...and its idle wander. |
WORM_ACCEL | 14.0f | |
WORM_STRIKE_R | 2.2f | Close enough under a noise to rise. |
WORM_RISE_TIME | 1.3f | The mound swelling: the tell, and long. |
WORM_BREACH_TIME | 0.9f | Up out of the sand... |
WORM_SLAM_TIME | 0.5f | ...and down again on whatever stood there. |
WORM_SLAM_R | 4.0f | Everything within this of the landing takes the slam. |
WORM_SLAM_DAMAGE | 34.0f | |
WORM_SLAM_KNOCK | 14.0f | |
WORM_DIVE_TIME | 1.2f | |
WORM_REST_TIME | 5.0f | Under the sand after a breach before it hunts again. |
WORM_HIT_COOLDOWN | 0.5f | |
SND_WORM_ROAR | 45.0f | The breach: everything hears it. |
The vulture
| Constant | Value | |
|---|---|---|
MAX_VULTURES | 3 | |
VULTURE_HEALTH | 30.0f | |
VULTURE_RADIUS | 0.42f | |
VULTURE_DENSITY | 60.0f | |
VULTURE_SOAR_H | 9.0f | How high it circles over the ground... |
VULTURE_SOAR_R | 7.0f | ...and how wide its circle is... |
VULTURE_SOAR_RATE | 0.55f | ...and how fast it goes round it (rad/s). |
VULTURE_NOTICE_RANGE | 30.0f | A wizard this close is somebody to circle over. |
VULTURE_LOSE_RANGE | 45.0f | |
VULTURE_WOUND_K | 0.45f | Health under this fraction of full is a wound worth stooping at. |
VULTURE_FLY_SPEED | 6.5f | |
VULTURE_STOOP_SPEED | 15.0f | The dive: faster than anything else in the air. |
VULTURE_ACCEL | 30.0f | |
VULTURE_STOOP_TIME | 1.6f | A dive that has not connected by now pulls up anyway. |
VULTURE_CLIMB_TIME | 1.4f | |
VULTURE_POISE_MIN | 2.0f | The patience between stoops, rolled per stoop... |
VULTURE_POISE_MAX | 4.5f | |
VULTURE_RAKE_REACH | 1.6f | |
VULTURE_RAKE_DAMAGE | 10.0f | |
VULTURE_RAKE_KNOCK | 4.0f | |
VULTURE_HIT_COOLDOWN | 0.4f | |
SND_VULTURE_CRY | 26.0f | The stoop's scream. |
The camel
| Constant | Value | |
|---|---|---|
MAX_CAMELS | 3 | |
CAMEL_HEALTH | 120.0f | |
CAMEL_RADIUS | 0.55f | |
CAMEL_CAP_HALF | 0.45f | |
CAMEL_DENSITY | 900.0f | |
CAMEL_RIDE | 1.35f | Body origin over the ground: tall, on long legs. |
CAMEL_GRAZE_SPEED | 1.3f | |
CAMEL_TROT_SPEED | 6.0f | |
CAMEL_ACCEL | 26.0f | |
CAMEL_TURN_RATE | 3.0f | |
CAMEL_STARTLE_RANGE | 3.0f | A SPRINTING wizard this close startles it as a blow would. |
CAMEL_BRAY_TIME | 0.7f | The tell: the head up, the bray. |
CAMEL_KICK_TIME | 0.8f | The kick's whole swing... |
CAMEL_KICK_HIT_T | 0.35f | ...and when in it the hooves land. |
CAMEL_KICK_REACH | 2.4f | Behind it, within this, in the rear's arc. |
CAMEL_KICK_COS | 0.35f | The arc: a bit wider than a right angle across its rear. |
CAMEL_KICK_DAMAGE | 22.0f | |
CAMEL_KICK_KNOCK | 20.0f | Across the sand: the mercy in it is that you are no longer next to the camel. |
CAMEL_TROT_TIME | 3.5f | How long it trots away after a kick. |
CAMEL_CALM_TIME | 6.0f | Unstruck this long, it forgets and grazes. |
CAMEL_HIT_COOLDOWN | 0.5f | |
SND_CAMEL_BRAY | 24.0f |