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:
@flag <object>=<flag>
@flag <object>=!<flag>
Lua logic uses typed constants such as mux.world.flags.SAFE with an
Object:flags collection. Raw flag
name strings and command aliases are intentionally not accepted by that API.
Lua changes run immediately as God and are not rolled back when a callback
later fails.
Flag summary
| Flag | Letter | Stored field and column | Native purpose |
|---|---|---|---|
ANSI | X | has_ansi_flag | Enables ANSI color and formatting, including BattleTech map displays, for a player. |
AUDIBLE | a | has_audible_flag | Allows sound to propagate through the object or an audible exit. |
AUDITORIUM | b | has_auditorium_flag | Requires speakers in the location to pass its speak lock. |
BLIND | ( | has_blind_flag | Stored marker with no native consumer; available for game policy. |
CONNECTED | c | has_connected_flag | Records an active player connection. |
DARK | D | has_dark_flag | Hides objects from ordinary visibility; see below. |
FLOATING | F | has_floating_flag | Prevents consistency cleanup from moving an improperly located object home. |
GAGGED | j | has_gagged_flag | Prevents non-Wizard speech and participates in BattleTech OOC rules. |
GOING | G | has_going_flag | Marks an object as pending destruction or unavailable for normal processing. |
HALTED | h | has_halted_flag | Stops queued command dispatch for the object. |
IN_CHARACTER | # | has_in_character_flag | Marks BattleTech objects and locations as participating in IC play. |
LIGHT | l | has_light_flag | Makes a non-DARK object visible inside a DARK location. |
MONITOR | M | has_monitor_flag | Subscribes a player to server monitor broadcasts. |
NO_COMMAND | n | has_no_command_flag | Excludes commands stored on the object from command matching. |
SAFE | s | has_safe_flag | Protects a non-player object from normal destruction. |
SUSPECT | u | has_suspect_flag | Reports the player’s connections and commands to monitoring staff and blocks commands that disallow suspect users. |
TRANSPARENT | t | has_transparent_flag | Exposes contents through native look presentation. |
WIZARD | W | has_wizard_flag | Grants Wizard status and native Wizard control. |
ZOMBIE | z | has_zombie_flag | Marks 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 and ZOMBIE
are consulted throughout the BattleTech subsystem. IN_CHARACTER gates
combat, damage, movement, economy, and related behavior. ZOMBIE marks
selected special objects as inactive. BTech special-object identity is managed
by @btech, not an object flag.
Native command restrictions
The normal control check applies before a flag handler runs. Native flag handlers add these restrictions:
| Flag | Additional restriction |
|---|---|
CONNECTED | Only God may change it through the flag command. |
DARK | Only Wizards or God may change it. |
GAGGED | Only Wizards or God may change it. |
GOING | God may set or clear it. An already-GOING non-player object may also have it cleared without this extra restriction. |
IN_CHARACTER | Only Wizards or God may change it. |
MONITOR | Only Wizards or God may change it. |
SUSPECT | Only Wizards or God may change it. |
WIZARD | Only God may change it, and God cannot remove it from themself. |
ZOMBIE | Only 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.