Watch
Overwatch: a reaction shot, fired on its own or offered to the player to answer
after Moved of enemies whenraise ... bycast ... freeends onstack ignore per sourceA reaction offered to the player: overwatch, lifted from the tactics slice's content\overwatch.ledger (Overwatch, Overwatching, ReactionShot, HoldFire, LetBy and Commanded), with the pools and events of content\rules.ledger and its units from content\units.ledger and content\dummies.ledger. The watch spends the unit's action and any move left, until its next turn. The first enemy it sees move within 9 draws a reaction shot at 70% of its aim, which halts the mover either way and spends the watch. A unit whose side has a commander to ask (Asks, the player's squad) fires nothing on its own: the world offers the shot (ShotOffered of the watcher, by the mover), the game holds the choice, and the player answers with an order, the reaction shot or holding fire, which lets that mover by until its next turn and keeps the watch. The game raises Moved at each cell a unit walks; the slice's dead carry Dead.
# A reaction offered to the player: overwatch, lifted from the tactics slice's content\overwatch.ledger (Overwatch,# Overwatching, ReactionShot, HoldFire, LetBy and Commanded), with the pools and events of content\rules.ledger and# its units from content\units.ledger and content\dummies.ledger. The watch spends the unit's action and any move left,# until its next turn. The first enemy it sees move within 9 draws a reaction shot at 70% of its aim, which halts the# mover either way and spends the watch. A unit whose side has a commander to ask (Asks, the player's squad) fires# nothing on its own: the world offers the shot (ShotOffered of the watcher, by the mover), the game holds the choice,# and the player answers with an order, the reaction shot or holding fire, which lets that mover by until its next# turn and keeps the watch. The game raises Moved at each cell a unit walks; the slice's dead carry Dead.rate 10link teamallegiance teamfact Sight Coverstat MaxHealthstat Aimstat Defensestat WeaponDamagepool Health max MaxHealth wholepool Moves max 1 wholepool Actions max 1 wholedamage Healthtags Dead Asks Shot Reactionevent TurnStarted Moved Halted ShotOfferedturn TurnStartedability Overwatch requires holder.Actions >= 1 else "no action left" cost Actions 1 cost Moves holder.Moves apply Overwatchingeffect Overwatching stack ignore ends on TurnStarted of holder after Moved of enemies when fact(Sight, holder, event.subject) > 0 and distance(holder, event.subject) <= 9 and not has(event.subject, Dead) and stacks(event.subject, LetBy, holder) == 0 if has(holder, Asks) raise ShotOffered of holder by event.subject else cast ReactionShot at event.subject freeability ReactionShot tags Shot Reaction target one enemy within 9 requires has(holder, Overwatching) else "not on overwatch" requires fact(Sight, holder, target) > 0 else "no line of sight" remove Overwatching raise Halted of target let hit = holder.Aim * 0.7 - target.Defense - 20 * fact(Cover, holder, target) - 4 * max(0, distance(holder, target) - 4) outcome out of 100 Hit below hit deal holder.WeaponDamage to target Graze below hit + 10 deal holder.WeaponDamage * 0.5 to target Missability HoldFire target one enemy requires has(holder, Overwatching) else "not on overwatch" apply LetBy to targeteffect LetBy stack ignore per source ends on TurnStarted of holdereffect Commanded tags Asksarchetype Side# the player's: its watch asksarchetype Soldier base MaxHealth 7 base Aim 75 base WeaponDamage 4 full Health with Moves = 1, Actions = 1 has Commanded grants Overwatch ReactionShot HoldFire# the aliens': its watch fires on its ownarchetype Trooper base MaxHealth 5 base Aim 65 base WeaponDamage 3 full Health with Moves = 1, Actions = 1 grants Overwatch ReactionShot# a target the shot can't miss: Defense -100 puts every chance past 100archetype Dummy base MaxHealth 20 base Defense -100 full Healthcatalog watch.ledger# Overwatch's numbers, from Overwatching and ReactionShot: a watch within 9, a shot at 70% of the watcher's aim. The# trooper (Aim 65, rifle 3) fires on its own; the soldier (Aim 75, rifle 4) asks. Sight is the game's fact.play "the trooper's watch spends the action and the move; the first enemy seen moving takes the shot, is halted, and the watch is spent" make squad Side make aliens Side make t Trooper with team = aliens at 0 0 make d Dummy with team = squad at 6 0 fact Sight t d 1 act t Overwatch expect done expect t.Actions = 0 from content: 1 less the watch's 1 expect t.Moves = 0 from content: the move left, spent raise Moved of d expect d.Health = 17 from content: the dummy's 20 less the trooper's 3 expect event Halted of d 1 time from content: the rows above expect t lacks Overwatching raise Moved of d expect d.Health = 17 from content: the watch is spentplay "the watch is blind to a mover it can't see and one past 9, and ends as its holder's next turn starts" make squad Side make aliens Side make t Trooper with team = aliens at 0 0 make d Dummy with team = squad at 6 0 act t Overwatch raise Moved of d expect d.Health = 20 from content: no sight, no shot fact Sight t d 1 place d 10 0 raise Moved of d expect d.Health = 20 from content: 10 away, past 9 expect t has Overwatching save raise TurnStarted of t expect t lacks Overwatchingplay "the soldier's watch offers the shot and fires nothing; answered with the shot, it hits, halts and spends the watch" make squad Side make aliens Side make s Soldier with team = squad at 0 0 make d Dummy with team = aliens at 5 0 fact Sight s d 1 act s Overwatch raise Moved of d expect event ShotOffered of s 1 time from content: the rows above expect d.Health = 20 from content: offered, not fired expect s has Overwatching save act s ReactionShot at d expect done expect d.Health = 16 from content: the dummy's 20 less the soldier's 4 expect event Halted of d 1 time from content: the rows above expect s lacks Overwatchingplay "answered by holding fire, that mover is let by until its next turn and the watch is kept for the next" make squad Side make aliens Side make s Soldier with team = squad at 0 0 make d Dummy with team = aliens at 5 0 make e Dummy with team = aliens at 6 1 fact Sight s d 1 fact Sight s e 1 act s Overwatch raise Moved of d act s HoldFire at d expect done expect d has LetBy from s raise Moved of d expect no event ShotOffered of s raise Moved of e expect event ShotOffered of s 1 time from content: e is no one let by raise TurnStarted of d expect d lacks LetBy raise Moved of d expect event ShotOffered of s 1 time from content: let by no longer