5.1 KiB
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
combinesurvives in the inherited event vocabulary, but current shipped Crusader exports do not show any recoveredslot_0Chandler bodies.castis used in Crusader, but the live behaviors look like explicit scripted activation/dispatch lanes, not a classic RPG spell system.fast areain 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
Cascombine. - Current generated usecode exports show zero
slot_0C_combine.txtfiles in these shipped corpora:remorseremorse-101remorse-demoregret
- 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
MISS1EGGdisassembly, 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 usecodeslot 0x0Cevent 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.txtappears exactly once per build variant examined:remorse:AVATAR/slot_11_cast.txtremorse-101:AVATAR/slot_11_cast.txtremorse-demo:AVATAR/slot_11_cast.txt
AVATAR::cacheindirectly spawnsAVATAR.cast(0, arg_06).- The recovered
AVATAR::castbody does not look like spellcasting. It:- excludes the process
- waits
10ticks - 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_castset:CARD_EW,CARD_NS,CONT_FL,CRUSADER,KEYPADEW,KEYPADNS,SECUREW, andSECURNS. - Representative Regret
castbodies such asCARD_NS::castandKEYPADNS::castbehave 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.castis a delayed map-music dispatch hook. - Regret
CARD_*/KEYPAD*castis 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 zoneor generic speed-boost interpretation.
What the current evidence supports
MONSTER::enterFastAreais the verified automatic activation lane for frame-00x04D0NPC spawners.TIMER::enterFastArea/leaveFastAreaonly arm a worker lane; the real delayed work happens later inTIMER.slot_20.SPECIAL::enterFastArea/leaveFastAreause their entry/exit callbacks as phase/control inputs rather than as locomotion modifiers.BRO_BOOT::enterFastAreaand 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
combineas a compatibility/historical hint only. - Keep
castas the slot label for compatibility, but document it as a scripted activation/dispatch hook in Crusader. - Prefer
proximity/activation regionwhen explainingenterFastArea/leaveFastArea.