attribute_test
Roll a d20 attribute test with declared stakes, applying advantage, disadvantage, threat, and doom to determine the outcome of a risky action in a Black Sword Hack campaign.
Instructions
Roll one d20 roll-under attribute test with declared stakes.
Call this whenever an action has a meaningful chance and consequence of failure. Do not call it for an ordinary active search that simply succeeds. Inside a fight, a declaration about the actor's own position or footing on their own turn -- circling behind, a trip, a climb -- rolls here.
Declare the stakes before rolling: stakes_success is what durably changes if the dice favour, stakes_failure what durably changes if they do not, in one sentence each. You already must know both to justify the roll. The server records your words verbatim, tags the branch the dice realize, and holds it as an unratified outcome until scene_commit. stakes_hidden is optional and never shown to players.
The tool applies Advantage, Disadvantage, conditions, Threat Level, and Doom. It decides dice and outcome. It does not decide the fictional cost.
attribute: STR, DEX, CON, INT, WIS, or CHA. opponent_level: the opposing creature's level, when one opposes the action. call_on_doom: true only when the player chooses to call on Doom. failure_mode: fail, success_at_cost, or gm_choice. Metadata for the narrator. category: optional structured tag for the kind of test — stealth, pickpocketing, eavesdropping, streetwise, or sorcery. Some backgrounds grant Advantage on a category; an unknown category is refused with the legal list. Pass sorcery (attribute INT) for a Forbidden-knowledge spell casting: a critical failure then rolls the Torn Veil table itself and applies its consequence, returned under torn_veil, exactly as a demonic invocation's Doom depletion rolls Demon's Revenge through use_ability. Do not roll Torn Veil yourself in fiction; it is not a separate tool call.
A test rolled by the active combatant on their own turn is that character's combat action and spends one action exactly as an attack would. The result's combat_action block reports the count, and the turn advances itself when the last action is spent. Stakes in combat may only promise what the failing character suffers or fails to do; never promise that an enemy attacks, because an enemy acts only on its own turn through combat_defend.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| category | No | ||
| advantage | No | ||
| attribute | Yes | ||
| call_on_doom | No | ||
| character_id | Yes | ||
| disadvantage | No | ||
| failure_mode | No | gm_choice | |
| stakes_hidden | No | ||
| opponent_level | No | ||
| stakes_failure | Yes | ||
| stakes_success | Yes |