Object Flags

Object flags are independent boolean properties on database objects. Native code stores each flag in a has_<name>_flag field and in a matching SQLite column. There is no packed flag word and no reserved legacy bits.

Flags are displayed after the object type as compact letters. A script or administrator should use the full flag name when issuing a command because ANSI and XCODE both use X:

@set <object>=<flag>
@set <object>=!<flag>

The mux Lua package does not currently expose direct flag getter or setter functions. Lua logic can invoke an appropriate native command with mux.command; queued commands run as God after the current callback finishes.

Flag summary

FlagLetterStored field and columnNative purpose
ANSIXhas_ansi_flagEnables ANSI color and formatting, including BattleTech map displays, for a player.
AUDIBLEahas_audible_flagAllows sound to propagate through the object or an audible exit.
AUDITORIUMbhas_auditorium_flagRequires speakers in the location to pass its speech lock.
BLIND(has_blind_flagStored marker with no native consumer; available for game policy.
CONNECTEDchas_connected_flagRecords an active player connection.
DARKDhas_dark_flagHides objects from ordinary visibility; see below.
FLOATINGFhas_floating_flagPrevents consistency cleanup from moving an improperly located object home.
GAGGEDjhas_gagged_flagPrevents non-Wizard speech and participates in BattleTech OOC rules.
GOINGGhas_going_flagMarks an object as pending destruction or unavailable for normal processing.
HALTEDhhas_halted_flagStops queued command dispatch for the object.
IN_CHARACTER#has_in_character_flagMarks BattleTech objects and locations as participating in IC play.
LIGHTlhas_light_flagMakes a non-DARK object visible inside a DARK location.
MONITORMhas_monitor_flagSubscribes a player to server monitor broadcasts.
NO_COMMANDnhas_no_command_flagExcludes commands stored on the object from command matching.
QUIETQhas_quiet_flagSuppresses routine confirmations and many movement or management messages.
SAFEshas_safe_flagProtects a non-player object from normal destruction.
SUSPECTuhas_suspect_flagReports the player’s connections and commands to monitoring staff and blocks commands that disallow suspect users.
TRANSPARENTthas_transparent_flagExposes contents through native look presentation.
WIZARDWhas_wizard_flagGrants Wizard status and native Wizard control.
XCODEXhas_xcode_flagMarks a BattleTech special object managed by XCode.
ZOMBIEzhas_zombie_flagMarks an inactive BattleTech special object for selected validation and containment behavior.

Visibility flags

DARK, LIGHT, and TRANSPARENT affect native presentation. A DARK object is normally omitted from its location’s contents. In a DARK location, only LIGHT objects that are not also DARK remain visible. DARK only hides a player when that player is a Wizard. TRANSPARENT changes native look output so a location or thing can expose its contents.

An object’s Lua internal_appearance or external_appearance function can replace the corresponding native presentation completely. These flags remain available to native visibility, matching, movement, connection, and channel logic outside those appearance callbacks.

Status and lifecycle flags

CONNECTED is live connection state maintained by the server. Code should use it only with player objects; the connected-player APIs are generally a better interface for Lua.

GOING is lifecycle state used while objects are being destroyed and while database structures are cleaned. Normal logic should treat a GOING object as unavailable. FLOATING changes one consistency-repair behavior, while SAFE protects non-player objects from ordinary destruction. Players are always treated as safe regardless of their SAFE field.

HALTED prevents queued commands from running. NO_COMMAND instead prevents the object’s attached command scope from participating in command matching; it does not describe queue state.

BattleTech flags

ANSI controls color in BattleTech map displays. IN_CHARACTER, XCODE, and ZOMBIE are consulted throughout the BattleTech subsystem. IN_CHARACTER gates combat, damage, movement, economy, and related behavior. XCODE identifies a native special object. ZOMBIE marks selected special objects as inactive.

Native command restrictions

The normal control check applies before a flag handler runs. Native flag handlers add these restrictions:

FlagAdditional restriction
CONNECTEDOnly God may change it through the flag command.
DARKOnly Wizards or God may change it.
GAGGEDOnly Wizards or God may change it.
GOINGGod may set or clear it. An already-GOING non-player object may also have it cleared without this extra restriction.
IN_CHARACTEROnly Wizards or God may change it.
MONITOROnly Wizards or God may change it.
SUSPECTOnly Wizards or God may change it.
WIZARDOnly God may change it, and God cannot remove it from themself.
XCODEWizards or God may set it; only God may clear it once set.
ZOMBIEOnly Wizards or God may change it.

Flags not listed in this table have no additional flag-specific restriction. Native control is still role-only: God controls everyone and everything, while Wizards control themselves and non-Wizards but cannot control God or another Wizard.