# `combine`, `cast`, and `fast area` in Crusader usecode This note checks whether the suspicious inherited event labels `combine` (`slot 0x0C`) and `cast` (`slot 0x11`) are actually used by shipped Crusader usecode, and tightens the current explanation for `enterFastArea` / `leaveFastArea`. ## Summary - `combine` survives in the inherited event vocabulary, but current shipped Crusader exports do **not** show any recovered `slot_0C` handler bodies. - `cast` is used in Crusader, but the live behaviors look like explicit scripted activation/dispatch lanes, not a classic RPG spell system. - `fast area` in Crusader is best read as an authored proximity/trigger region around an object or controller. Entering or leaving that region fires usecode callbacks. ## Evidence Scope Primary evidence for this note comes from the generated pseudocode exports in `Crusader-Map-Viewer/map_renderer/site/data/usecode/*`, the local `crusader-disasm` corpus, and existing Crusader notes on trigger/controller families. ## `combine` (`slot 0x0C`) ### What is actually present - The inherited Crusader/U8 event table still names event `C` as `combine`. - Current generated usecode exports show **zero** `slot_0C_combine.txt` files in these shipped corpora: - `remorse` - `remorse-101` - `remorse-demo` - `regret` - The same exported pseudocode search also found **zero** `.combine(` callsites. ### What related behavior still exists - The disasm corpus still exposes a separate item helper named `Item::I_setQAndCombine(Item *, int16 q)`. - In the local `MISS1EGG` disassembly, that helper is called immediately after item creation to stamp item state before the created item is positioned and added to inventory. - That is evidence that Crusader still retained some item-side `combine`-related helper semantics in native/intrinsic code, but it is **not** evidence of a shipped usecode `slot 0x0C` event body. ### Best current read `combine` should stay treated as a historical or compatibility label in the decompiler, not as a confirmed active Crusader event family. The name likely came forward from the inherited Ultima-style event vocabulary, while the shipped Crusader usecode corpus no longer exposes recovered slot-`0x0C` handlers. ## `cast` (`slot 0x11`) ### No Remorse usage - In the No Remorse exported corpora, `slot_11_cast.txt` appears exactly once per build variant examined: - `remorse`: `AVATAR/slot_11_cast.txt` - `remorse-101`: `AVATAR/slot_11_cast.txt` - `remorse-demo`: `AVATAR/slot_11_cast.txt` - `AVATAR::cachein` directly spawns `AVATAR.cast(0, arg_06)`. - The recovered `AVATAR::cast` body does not look like spellcasting. It: - excludes the process - waits `10` ticks - reads the avatar map id - selects a music track based on odd-numbered map ids (`1, 3, 5, ... 29`) ### Regret usage - Regret exposes a wider `slot_11_cast` set: `CARD_EW`, `CARD_NS`, `CONT_FL`, `CRUSADER`, `KEYPADEW`, `KEYPADNS`, `SECUREW`, and `SECURNS`. - Representative Regret `cast` bodies such as `CARD_NS::cast` and `KEYPADNS::cast` behave like controller/trigger activators: - create a local sprite effect - play SFX - wait/suspend through helper slots - dispatch into `TRIGGER.slot_20` ### Best current read In Crusader, `cast` is a real event slot, but the live evidence does **not** support reading it as a general magic or spell lane. The stronger read is `explicit scripted activation/dispatch callback`, with behavior chosen per class: - No Remorse `AVATAR.cast` is a delayed map-music dispatch hook. - Regret `CARD_*` / `KEYPAD*` `cast` is a controller activation path that fans out into trigger logic. ## `enterFastArea` / `leaveFastArea` ### What the current evidence rules out - The Crusader evidence does **not** fit a `fast movement zone` or generic speed-boost interpretation. ### What the current evidence supports - `MONSTER::enterFastArea` is the verified automatic activation lane for frame-`0` `0x04D0` NPC spawners. - `TIMER::enterFastArea` / `leaveFastArea` only arm a worker lane; the real delayed work happens later in `TIMER.slot_20`. - `SPECIAL::enterFastArea` / `leaveFastArea` use their entry/exit callbacks as phase/control inputs rather than as locomotion modifiers. - `BRO_BOOT::enterFastArea` and related controller families use the same event pair as proximity-trigger hooks for nearby scripted behavior. ### Best current read A `fast area` in Crusader is best described as an **authored proximity/activation region** associated with an item or controller class. When an actor crosses into or out of that region, the corresponding usecode slot fires so the object can arm, disarm, spawn, gate, or route scripted behavior. That explanation fits the current environmental/controller families much better than `movement speed area`, and it matches the existing evidence for spawners, timers, specials, boots, cameras, and other trigger-like objects. ## Practical naming guidance - Keep `combine` as a compatibility/historical hint only. - Keep `cast` as the slot label for compatibility, but document it as a scripted activation/dispatch hook in Crusader. - Prefer `proximity/activation region` when explaining `enterFastArea` / `leaveFastArea`.