Skip to content

Rejection codes

A command the engine cannot accept comes back with a rejection: a structured refusal carrying a dotted snake_case code, never an exception. Validation is a pure pre-phase, so a rejected command consumes no randomness, no game time, and mutates nothing — in-fiction failures are a normal outcome, not an error. See Rejection and CommandResult.

This page lists every rejection code the engine emits, grouped by namespace. Each command's own documentation lists the codes it can come back with.

battle.*

Code Meaning
battle.declaration.cannot_move A character declares a move while dead, paralyzed, petrified, asleep, or entangled (such as by a web spell), any of which makes movement impossible this round.
battle.declaration.invisible_target A spell or item-use declaration names a specific target that is currently invisible, and the engine won't let the caster target something they can't see.
battle.declaration.item_unusable The declared item has no usable combat effect: it isn't a weapon-capable item in the character's inventory, or it's a magic item category (other than a potion, scroll, rod, staff, or wand) that has no defined combat use.
battle.declaration.missing_move A move action is declared without specifying which kind of movement (closing distance, retreating, or a fighting withdrawal) the character is taking.
battle.declaration.missing_spell A cast action is declared without specifying which spell to cast or which mode of that spell to use.
battle.declaration.no_target The chosen enemy group has no living, visible monster in its front rank that can currently be targeted.
battle.declaration.not_in_front_rank A character who isn't in the party's front rank declares a melee attack, and the formation-width rule in effect this round means only front-rank members are within melee range.
battle.declaration.roster_mismatch The set of characters submitting declarations for the round doesn't exactly match the party members who are currently able to act and are expected to declare.
battle.declaration.unknown_action The declaration's action type isn't one the engine recognizes as a legal move for the round (such as hold, move, attack, use_item, turn_undead, or cast).
battle.declaration.unknown_group The declaration references a target group that doesn't exist in the current encounter, or that has already fled or surrendered.
battle.declaration.weapon_not_wielded An attack declaration names a weapon the character isn't currently wielding.
battle.none_active The command tries to resolve a battle round, but no battle is currently in progress in the session.

combat.*

Code Meaning
combat.attack.attacker_blind The attacking combatant is blinded and cannot make an attack this round.
combat.attack.attacker_incapacitated The attacking combatant is dead, petrified, paralysed, asleep, or weakened, and therefore cannot make an attack.
combat.attack.out_of_range The target is farther away than the attacking missile weapon's longest range band.
combat.attack.out_of_reach The attacker declared a melee attack, or a melee-range magic item effect, against a target or group more than 5 feet away.
combat.attack.reload The attacker tried to fire a weapon that requires a reload, such as a crossbow, again this round after firing it last round without a round spent reloading in between.
combat.breath.exhausted The monster has already used its breath weapon the maximum number of times allowed per day.
combat.breath.no_breath_weapon The monster attempting to breathe does not have a breath weapon ability at all.

creation.*

Code Meaning
creation.adjustment.above_cap The player tried to raise a prime requisite ability score by an amount that would push it above the maximum score of 18.
creation.adjustment.below_floor The player tried to lower an ability score by an amount that would drop it below the minimum allowed score of 9.
creation.adjustment.class_restriction The player tried to lower an ability score that the chosen class specifically forbids lowering, such as a thief's Strength.
creation.adjustment.not_lowerable The player tried to lower an ability score other than Strength, Intelligence, or Wisdom, the only three scores that can be traded down during character creation.
creation.adjustment.points_mismatch The points added to raised ability scores do not equal half the points removed from lowered ability scores, as the two-for-one trade requires.
creation.adjustment.prime_requisite_lowered The player tried to lower one of the chosen class's prime requisite ability scores, which cannot be traded away.
creation.adjustment.raise_not_prime_requisite The player tried to raise an ability score that is not one of the chosen class's prime requisites.
creation.adjustment.reduction_not_even The player tried to lower an ability score by an odd number of points; each reduction must be an even amount.
creation.class.requirements_not_met One of the character's rolled ability scores falls below the chosen class's minimum requirement for that ability.
creation.languages.duplicate_choice The player selected the same extra language more than once among the character's language choices.
creation.languages.duplicates_native The player chose an extra language that the character's class already speaks natively.
creation.languages.not_available The player chose a language that does not appear on the list of languages available for extra selection.
creation.languages.too_many The player chose more extra languages than the character's Intelligence score allows.

encounter.*

Code Meaning
encounter.evade.already_evading The party sends another evade command while it is already fleeing and being chased in the current encounter.
encounter.evade.nothing_to_drop The party tries to drop treasure or food to slow its pursuers, but no living party member is carrying anything of that kind to drop.
encounter.none_active The command applies only during an encounter, but no encounter is currently active in the session.
encounter.parley.mid_pursuit The party tries to open negotiations while a pursuit is underway, and parley isn't available once a chase has started.
encounter.turning.mid_pursuit A cleric tries to turn undead while a pursuit is underway, and turning isn't available once a chase has started.

exploration.*

Code Meaning
exploration.action.requires_light The character tried to take an action that needs light, and neither the party's active light source nor the character's infravision (where it would apply) is available.
exploration.door.already_closed The party tried to close a door that is already closed.
exploration.door.already_open The party tried to open or force a door that is already standing open.
exploration.door.locked The party tried to open or force a door that is locked and hasn't yet been unlocked.
exploration.door.no_door The party targeted a direction that has no known door — it's either solid wall or a secret door the party hasn't discovered yet.
exploration.door.no_spike The party tried to wedge a door open, but no member is carrying an item, such as iron spikes, to wedge it with.
exploration.door.not_stuck The party tried to force open a door that isn't stuck, so forcing it isn't necessary.
exploration.door.stuck The party tried to open a stuck door the normal way; it must be forced open instead.
exploration.door.wedged The party tried to close or re-wedge a door that a spike or similar item is already holding open.
exploration.feature.emptied The party tried to take treasure from a cache that has already been emptied.
exploration.feature.unknown The command references a feature at the party's location that doesn't exist, or that isn't the kind of feature (such as a treasure cache) the action expects.
exploration.item.not_carried The character or party doesn't currently have the referenced item, coin amount, or dropped item in their possession at this location.
exploration.item.not_equipped The character tried to unequip an item that isn't currently worn or wielded.
exploration.light.no_flame The party has no open flame currently burning to light this from, and the character isn't carrying a tinder box to strike a new one.
exploration.light.not_a_source The party tried to light an item that isn't a light source — only a torch, lantern, or flask of oil can be lit.
exploration.light.not_burning The character tried to extinguish a torch or lantern, but has none currently lit.
exploration.listen.already_tried The character already listened at this door and can't attempt it again.
exploration.lock.locked_out The character already failed to pick this lock and hasn't gained a level since, so they can't try it again yet.
exploration.lock.no_tools The character tried to pick a lock without carrying thieves' tools.
exploration.lock.not_a_thief The character's class has no thief skills, so they can't attempt to pick locks.
exploration.lock.not_locked The character tried to pick a lock on a door that isn't locked, or whose lock is already open.
exploration.move.blocked The party tried to move in a direction that isn't passable — a wall, a closed door, or an undiscovered secret door.
exploration.move.cannot_move The party can't move because a member is carrying more than their maximum load, or because a living member is incapacitated or entangled.
exploration.party.bad_order The proposed marching order doesn't list exactly the party's current members.
exploration.search.already_tried The character already searched here for this same kind of thing and can't try again.
exploration.stairs.none The party tried to use stairs or a level transition at a location that has none.
exploration.trap.already_resolved The party tried to disarm or remove a trap that has already been removed or has already sprung.
exploration.trap.not_a_thief The character's class has no thief skills, so they can't find or remove traps on treasure.
exploration.trap.not_found The party tried to remove a trap that hasn't been discovered yet.
exploration.travel.not_at_entrance The party tried to travel to town from somewhere other than the dungeon level's mapped entrance.

items.*

Code Meaning
items.curse.stuck The character tried to unequip or drop a magic item that has already revealed itself as cursed, and a cursed item stays bound to its bearer until a remove curse effect lifts it.
items.device.inert The character tried to activate a charged magic device, such as a wand, staff, or rod, that has no charges remaining.
items.equip.armour_forbidden The character tried to equip body armour, but the class's armour policy forbids wearing armour of any kind.
items.equip.armour_not_allowed The character tried to equip a piece of body armour other than leather, but the class's armour policy restricts it to leather armour only.
items.equip.not_equippable The character tried to equip an item the engine doesn't treat as equippable at all, such as a potion, a scroll, plain ammunition, gear with no combat use, or a magic item whose underlying base item can't be identified.
items.equip.not_usable The character tried to equip a magic device or miscellaneous magic item whose own usability restriction doesn't permit that class to use it.
items.equip.shield_forbidden The character tried to equip a shield, but the class's armour policy doesn't allow shields.
items.equip.two_handed_with_shield The character tried to equip a two-handed weapon while a shield is already equipped, or a shield while a two-handed weapon is already wielded, and the two cannot be used together.
items.equip.weapon_forbidden The character tried to equip a weapon that the class's weapon policy explicitly excludes.
items.equip.weapon_not_allowed The character tried to equip a weapon that isn't on the class's list of permitted weapons.
items.purchase.insufficient_funds The character tried to buy equipment or pay for a temple healing service whose total cost is more coin than the character's purse currently holds.
items.ring.hands_full The character tried to equip a third magic ring while already wearing the maximum of two.
items.scroll.no_such_spell The character tried to read a spell from a scroll that isn't among the spells still inscribed on it.
items.scroll.spent The character tried to read from a scroll whose inscribed spells have all already been used up.
items.scroll.wrong_caster The character tried to read an arcane or divine scroll but the character's class can't cast that kind of magic, and, for a thief attempting a magic-user scroll, doesn't meet the minimum level for that exception.
items.use.battle_only The character tried to activate a magic device whose effect resolves as a strike against a target, which is only possible during battle.
items.use.not_usable The character tried to activate a magic device, such as a wand, staff, or rod, whose own usability restriction doesn't permit that class to use it.
items.use.target_required The character tried to activate an area-effect magic device during an encounter without naming which monster group to target.
items.use.unknown_target The character tried to activate a magic device against a target, an encounter group or a character, that doesn't exist, has already fled or surrendered, or otherwise can't be resolved.

magic.*

Code Meaning
magic.book.already_chosen The character's starting spell book has already been chosen once and cannot be set a second time.
magic.book.capacity_exceeded Adding this spell to the caster's spell book would push the number of book entries at that spell level above the caster's current spell slots for that level.
magic.book.capacity_mismatch The number of starting spells chosen at a given spell level doesn't exactly equal the number of level-1 spell slots the class receives at that level.
magic.book.duplicate The chosen spell already appears in the caster's spell book, whether it was picked twice among the starting choices or is already present from an earlier addition.
magic.book.not_arcane The character's class is not an arcane spellcaster, so it cannot be given starting spells or have spells added to a spell book.
magic.book.unknown_spell The spell id supplied for a starting-spell choice or spell-book addition doesn't match any spell in the loaded spell catalog.
magic.book.wrong_list The spell being chosen as a starting spell or added to a spell book belongs to a different spell list than the one the caster's class uses.
magic.cast.anti_magic_shell An anti-magic shell effect is currently active on the caster, which blocks the caster from casting any spell while inside it.
magic.cast.caster_incapacitated The caster is dead, petrified, paralysed, asleep, silenced, feebleminded, or weakened, any of which leaves it unable to cast spells.
magic.cast.caster_restrained The caster is bound or gagged, and casting a spell requires both free hands and the ability to speak.
magic.cast.not_memorized The caster has no matching prepared copy of the spell in the requested normal or reversed form (or belongs to a class with no spellcasting profile at all), so there is nothing to cast.
magic.cast.not_reversible The cast asks for the reversed form of a spell that has no reversed form.
magic.cast.out_of_range A distance to the target was supplied for the cast and it exceeds the spell's maximum range for the caster's level.
magic.cast.silenced_area The caster's current location is under an active silence effect, which prevents spellcasting there.
magic.cast.target_count The number of targets supplied for the spell doesn't match what its targeting mode requires, such as a self-only spell receiving explicit targets, a single-target spell not receiving exactly one, or a multi-target effect like magic missile not receiving the required number of targets.
magic.cast.unknown_mode The requested casting mode key isn't a valid mode for this spell in the form (normal or reversed) being cast.
magic.cast.unknown_spell The spell id given in a cast command doesn't match any spell in the loaded spell catalog.
magic.cast.unknown_target One of the target references given for a cast, or for reading a spell from a scroll, doesn't resolve to any known entity or location in the current session.
magic.memorize.divine_reverses_at_cast A divine caster tried to prepare a spell already fixed to its reversed form; divine casters choose whether to reverse a spell only at the moment they cast it, not when they memorize it.
magic.memorize.needs_sleep The character hasn't slept yet, or has already prepared its spells since its last sleep, so it cannot memorize spells again until it sleeps.
magic.memorize.not_a_caster The character's class has no spellcasting profile, so it has no spells to memorize.
magic.memorize.not_in_book An arcane caster tried to memorize a spell that isn't in its spell book.
magic.memorize.not_reversible An arcane caster tried to memorize the reversed form of a spell that has no reversed form.
magic.memorize.slots_exceeded The number of spells selected for memorization at a spell level exceeds the caster's available spell slots at that level for its current class level.
magic.memorize.unknown_spell The spell id given in a memorization selection doesn't match any spell in the loaded spell catalog.
magic.memorize.wrong_list A spell selected for memorization belongs to a different spell list than the one the caster's class uses.
magic.turning.caster_incapacitated The would-be turner is dead, petrified, paralysed, asleep, or weakened, any of which prevents it from attempting to turn undead.
magic.turning.not_a_turner The character's class has no turn-undead ability, so it cannot attempt to turn undead.

session.*

Code Meaning
session.command.encounter_in_progress The referee tried to spawn monsters, spawn an NPC party, or place the party while an encounter or battle was already in progress.
session.command.member_incapacitated The named party member is dead, paralyzed, petrified, or asleep and can't carry out the requested action.
session.command.no_door The map edge at the given position and direction is not a door, so no door state can be set there.
session.command.no_living_members The party tried to take treasure from a cache or pile, but every party member is dead, leaving no one to carry it.
session.command.not_in_dungeon The referee tried to spawn monsters or an NPC party while the party wasn't standing on a dungeon grid cell.
session.command.out_of_bounds The party was placed at a dungeon position that falls outside the mapped area of that level.
session.command.unknown_item The command referenced an item id that doesn't exist in the equipment catalog, or, when identifying an item, a magic item the named member isn't carrying.
session.command.unknown_location The command referenced a dungeon id or level number that doesn't exist in the adventure, or the target dungeon has no level with an entrance defined.
session.command.unknown_member The command referenced a character id that doesn't belong to any member of the current party.
session.command.unknown_monster The referee tried to spawn monsters using a template id that doesn't exist in the monster catalog.
session.command.wrong_mode The command isn't legal in the session's current mode, such as sending a battle-only command while the session isn't in battle.

town.*

Code Meaning
town.sell.no_fixed_value The party tried to sell a magic item, which carries no fixed market value a shop will pay for.