Skip to content

0x18 — party_membership_control

Resolves a character abstraction and changes party membership through CRadiApp::ReleaseParty or CRadiApp::AddParty; one branch edits party slots directly.

proven— handler traced, and exercised by at least one shipped script.

At a glance

Opcode0x18 (24)
HandlerCRadiScript::Command_18
SignatureCRadiScript::Command_18(int,SCR_DATA*,unsigned int,unsigned int)
Translation unitr_script_run0.cpp
Address— debug build; click for all 3
Handler size0x140 (320 bytes)
FamilyScript control, flags and values
Command size4 + extra_words * 4 bytes

Handler behaviour

Resolves a character abstraction and changes party membership through CRadiApp::ReleaseParty or CRadiApp::AddParty; one branch edits party slots directly.

Encoding

The command header is one 32-bit word, as described in §3 Instruction encoding:

 31            24 23            16 15             8 7              0
+----------------+----------------+----------------+----------------+
|  flags         |  argument byte |  extra words   |  0x18          |
+----------------+----------------+----------------+----------------+

Bits 8–15 give the number of 32-bit operand words that follow. Bits 16–23 are handed to the handler as a bitfield; on character commands bit 0 normally says whether a character selector word is present. Bit 31 is the keep-going bit.

Operand fields

3 documented fields. input fields are read from the command's operand words; derived fields are computed from other fields rather than stored separately.

FieldRoleMeaning
arginputRaw handler argument byte from the command header. It is printed only when it differs from the value the named fields already imply, so seeing it means the command uses an unusual argument encoding.
flagsinputCommand header flag byte. Bit 0x80 is the keep-going bit: set (the hidden default), the next command runs in the same frame; clear (printed as yield=1), the script pauses until the next game update. Other bits are rare and stay as an explicit flags= byte.
wordsinputRaw fallback payload, used when a command shape has no named form yet.

Engine calls

Engine functions this handler was observed calling:

  • CRadiApp::AddParty(unsigned int,bool)
  • CRadiApp::ReleaseParty(unsigned int,bool,bool)
  • CRadiScript::GetAbstractionCharacterNumber(unsigned int&,unsigned int&,const SCR_DATA*)

Bit masks

Masks the handler applies to its argument byte or operand words:

0x0003 0x0001