[{"data":1,"prerenderedAt":1171},["ShallowReactive",2],{"docs-navigation":3,"docs-page:\u002Fdocs\u002Fautomation\u002Ftriggers":401},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,44,64,254,300,349,375],{"title":10,"path":6,"stem":11},"Overview","docs\u002Findex",{"title":13,"path":14,"stem":15,"children":16,"order":18},"API Overview","\u002Fdocs\u002Fapi","docs\u002Fapi\u002Findex",[17,19,24,29,34,39],{"title":13,"path":14,"stem":15,"order":18},7,{"title":20,"path":21,"stem":22,"order":23},"Assets API","\u002Fdocs\u002Fapi\u002Fassets","docs\u002Fapi\u002Fassets",3,{"title":25,"path":26,"stem":27,"order":28},"Authentication","\u002Fdocs\u002Fapi\u002Fauthentication","docs\u002Fapi\u002Fauthentication",1,{"title":30,"path":31,"stem":32,"order":33},"Components API","\u002Fdocs\u002Fapi\u002Fcomponents","docs\u002Fapi\u002Fcomponents",4,{"title":35,"path":36,"stem":37,"order":38},"Error Handling","\u002Fdocs\u002Fapi\u002Ferrors","docs\u002Fapi\u002Ferrors",5,{"title":40,"path":41,"stem":42,"order":43},"Games API","\u002Fdocs\u002Fapi\u002Fgames","docs\u002Fapi\u002Fgames",2,{"title":45,"path":46,"stem":47,"children":48,"order":38},"Automation","\u002Fdocs\u002Fautomation","docs\u002Fautomation\u002Findex",[49,50,60],{"title":45,"path":46,"stem":47,"order":38},{"title":51,"path":52,"stem":53,"children":54,"order":43},"Sequences","\u002Fdocs\u002Fautomation\u002Fsequences","docs\u002Fautomation\u002Fsequences\u002Findex",[55,56],{"title":51,"path":52,"stem":53,"order":43},{"title":57,"path":58,"stem":59},"Steps","\u002Fdocs\u002Fautomation\u002Fsequences\u002Fsteps","docs\u002Fautomation\u002Fsequences\u002Fsteps",{"title":61,"path":62,"stem":63,"order":28},"Triggers","\u002Fdocs\u002Fautomation\u002Ftriggers","docs\u002Fautomation\u002Ftriggers",{"title":65,"path":66,"stem":67,"children":68,"order":33},"Entities","\u002Fdocs\u002Fentities","docs\u002Fentities\u002Findex",[69,70,160,202],{"title":65,"path":66,"stem":67,"order":33},{"title":71,"path":72,"stem":73,"children":74},"Pieces","\u002Fdocs\u002Fentities\u002Fpieces","docs\u002Fentities\u002F01.pieces\u002Findex",[75,76,90,104,138],{"title":71,"path":72,"stem":73},{"title":77,"path":78,"stem":79,"children":80},"Dice","\u002Fdocs\u002Fentities\u002Fpieces\u002Fdice","docs\u002Fentities\u002F01.pieces\u002Fdice\u002Findex",[81,82,86],{"title":77,"path":78,"stem":79},{"title":83,"path":84,"stem":85},"Polyhedral Die","\u002Fdocs\u002Fentities\u002Fpieces\u002Fdice\u002Fpolyhedral-die","docs\u002Fentities\u002F01.pieces\u002Fdice\u002Fpolyhedral-die",{"title":87,"path":88,"stem":89},"Spinner","\u002Fdocs\u002Fentities\u002Fpieces\u002Fdice\u002Fspinner","docs\u002Fentities\u002F01.pieces\u002Fdice\u002Fspinner",{"title":91,"path":92,"stem":93,"children":94},"Tiles and Stacks","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftiles-and-stacks","docs\u002Fentities\u002F01.pieces\u002Ftiles-and-stacks\u002Findex",[95,96,100],{"title":91,"path":92,"stem":93},{"title":97,"path":98,"stem":99},"Stack","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftiles-and-stacks\u002Fstack","docs\u002Fentities\u002F01.pieces\u002Ftiles-and-stacks\u002Fstack",{"title":101,"path":102,"stem":103},"Tile","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftiles-and-stacks\u002Ftile","docs\u002Fentities\u002F01.pieces\u002Ftiles-and-stacks\u002Ftile",{"title":105,"path":106,"stem":107,"children":108},"Tokens","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Findex",[109,110,114,118,122,126,130,134],{"title":105,"path":106,"stem":107},{"title":111,"path":112,"stem":113},"Block","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fblock","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fblock",{"title":115,"path":116,"stem":117},"Disc","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fdisc","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fdisc",{"title":119,"path":120,"stem":121},"Image Token","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fimage-token","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fimage-token",{"title":123,"path":124,"stem":125},"Model Token","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fmodel-token","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fmodel-token",{"title":127,"path":128,"stem":129},"Pawn","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fpawn","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fpawn",{"title":131,"path":132,"stem":133},"Pyramid","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fpyramid","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fpyramid",{"title":135,"path":136,"stem":137},"Ring","\u002Fdocs\u002Fentities\u002Fpieces\u002Ftokens\u002Fring","docs\u002Fentities\u002F01.pieces\u002Ftokens\u002Fring",{"title":139,"path":140,"stem":141,"children":142},"Utility Pieces","\u002Fdocs\u002Fentities\u002Fpieces\u002Futility-pieces","docs\u002Fentities\u002F01.pieces\u002Futility-pieces\u002Findex",[143,144,148,152,156],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147},"Bag","\u002Fdocs\u002Fentities\u002Fpieces\u002Futility-pieces\u002Fbag","docs\u002Fentities\u002F01.pieces\u002Futility-pieces\u002Fbag",{"title":149,"path":150,"stem":151},"Counter","\u002Fdocs\u002Fentities\u002Fpieces\u002Futility-pieces\u002Fcounter","docs\u002Fentities\u002F01.pieces\u002Futility-pieces\u002Fcounter",{"title":153,"path":154,"stem":155},"Timer","\u002Fdocs\u002Fentities\u002Fpieces\u002Futility-pieces\u002Ftimer","docs\u002Fentities\u002F01.pieces\u002Futility-pieces\u002Ftimer",{"title":157,"path":158,"stem":159},"Token Bowl","\u002Fdocs\u002Fentities\u002Fpieces\u002Futility-pieces\u002Ftoken-bowl","docs\u002Fentities\u002F01.pieces\u002Futility-pieces\u002Ftoken-bowl",{"title":161,"path":162,"stem":163,"children":164},"Spaces","\u002Fdocs\u002Fentities\u002Fspaces","docs\u002Fentities\u002F02.spaces\u002Findex",[165,166,180],{"title":161,"path":162,"stem":163},{"title":167,"path":168,"stem":169,"children":170},"Layouts","\u002Fdocs\u002Fentities\u002Fspaces\u002Flayouts","docs\u002Fentities\u002F02.spaces\u002Flayouts\u002Findex",[171,172,176],{"title":167,"path":168,"stem":169},{"title":173,"path":174,"stem":175},"Hex Grid","\u002Fdocs\u002Fentities\u002Fspaces\u002Flayouts\u002Fhex-grid","docs\u002Fentities\u002F02.spaces\u002Flayouts\u002Fhex-grid",{"title":177,"path":178,"stem":179},"Square Grid","\u002Fdocs\u002Fentities\u002Fspaces\u002Flayouts\u002Fsquare-grid","docs\u002Fentities\u002F02.spaces\u002Flayouts\u002Fsquare-grid",{"title":181,"path":182,"stem":183,"children":184},"Placement Spaces","\u002Fdocs\u002Fentities\u002Fspaces\u002Fplacement-spaces","docs\u002Fentities\u002F02.spaces\u002Fplacement-spaces\u002Findex",[185,186,190,194,198],{"title":181,"path":182,"stem":183},{"title":187,"path":188,"stem":189},"Box Space","\u002Fdocs\u002Fentities\u002Fspaces\u002Fplacement-spaces\u002Fbox-space","docs\u002Fentities\u002F02.spaces\u002Fplacement-spaces\u002Fbox-space",{"title":191,"path":192,"stem":193},"Hex Space","\u002Fdocs\u002Fentities\u002Fspaces\u002Fplacement-spaces\u002Fhex-space","docs\u002Fentities\u002F02.spaces\u002Fplacement-spaces\u002Fhex-space",{"title":195,"path":196,"stem":197},"Orb Space","\u002Fdocs\u002Fentities\u002Fspaces\u002Fplacement-spaces\u002Forb-space","docs\u002Fentities\u002F02.spaces\u002Fplacement-spaces\u002Forb-space",{"title":199,"path":200,"stem":201},"Point Space","\u002Fdocs\u002Fentities\u002Fspaces\u002Fplacement-spaces\u002Fpoint-space","docs\u002Fentities\u002F02.spaces\u002Fplacement-spaces\u002Fpoint-space",{"title":203,"path":204,"stem":205,"children":206},"Annotations","\u002Fdocs\u002Fentities\u002Fannotations","docs\u002Fentities\u002F03.annotations\u002Findex",[207,208,218,244],{"title":203,"path":204,"stem":205},{"title":209,"path":210,"stem":211,"children":212},"Freehand Annotations","\u002Fdocs\u002Fentities\u002Fannotations\u002Ffreehand-annotations","docs\u002Fentities\u002F03.annotations\u002Ffreehand-annotations\u002Findex",[213,214],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"Freehand Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Ffreehand-annotations\u002Ffreehand-annotation","docs\u002Fentities\u002F03.annotations\u002Ffreehand-annotations\u002Ffreehand-annotation",{"title":219,"path":220,"stem":221,"children":222},"Shape Annotations","\u002Fdocs\u002Fentities\u002Fannotations\u002Fshape-annotations","docs\u002Fentities\u002F03.annotations\u002Fshape-annotations\u002Findex",[223,224,228,232,236,240],{"title":219,"path":220,"stem":221},{"title":225,"path":226,"stem":227},"Arrow Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Fshape-annotations\u002Farrow-annotation","docs\u002Fentities\u002F03.annotations\u002Fshape-annotations\u002Farrow-annotation",{"title":229,"path":230,"stem":231},"Box Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Fshape-annotations\u002Fbox-annotation","docs\u002Fentities\u002F03.annotations\u002Fshape-annotations\u002Fbox-annotation",{"title":233,"path":234,"stem":235},"Hex Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Fshape-annotations\u002Fhex-annotation","docs\u002Fentities\u002F03.annotations\u002Fshape-annotations\u002Fhex-annotation",{"title":237,"path":238,"stem":239},"Orb Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Fshape-annotations\u002Forb-annotation","docs\u002Fentities\u002F03.annotations\u002Fshape-annotations\u002Forb-annotation",{"title":241,"path":242,"stem":243},"Triangle Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Fshape-annotations\u002Ftriangle-annotation","docs\u002Fentities\u002F03.annotations\u002Fshape-annotations\u002Ftriangle-annotation",{"title":245,"path":246,"stem":247,"children":248},"Text Annotations","\u002Fdocs\u002Fentities\u002Fannotations\u002Ftext-annotations","docs\u002Fentities\u002F03.annotations\u002Ftext-annotations\u002Findex",[249,250],{"title":245,"path":246,"stem":247},{"title":251,"path":252,"stem":253},"Text Annotation","\u002Fdocs\u002Fentities\u002Fannotations\u002Ftext-annotations\u002Ftext-annotation","docs\u002Fentities\u002F03.annotations\u002Ftext-annotations\u002Ftext-annotation",{"title":255,"path":256,"stem":257,"children":258,"order":28},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[259,260,264,268,296],{"title":255,"path":256,"stem":257,"order":28},{"title":261,"path":262,"stem":263,"order":43},"Tutorial 2: Build a Deck of Cards","\u002Fdocs\u002Fgetting-started\u002Fbuild-a-deck-of-cards","docs\u002Fgetting-started\u002Fbuild-a-deck-of-cards",{"title":265,"path":266,"stem":267,"order":23},"Tutorial 3: Use Your Own Images","\u002Fdocs\u002Fgetting-started\u002Fcustom-images","docs\u002Fgetting-started\u002Fcustom-images",{"title":269,"path":270,"stem":271,"children":272,"order":274},"Why Playtest Parlor?","\u002Fdocs\u002Fgetting-started\u002Fwhy-playtest-parlor","docs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Findex",[273,275,279,283,287,291],{"title":269,"path":270,"stem":271,"order":274},-2,{"title":276,"path":277,"stem":278,"order":33},"Compared to In-Person Playtesting","\u002Fdocs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-in-person","docs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-in-person",{"title":280,"path":281,"stem":282,"order":23},"Compared to PlayingCards.io","\u002Fdocs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-playingcards-io","docs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-playingcards-io",{"title":284,"path":285,"stem":286,"order":43},"Compared to Screentop.gg","\u002Fdocs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-screentop","docs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-screentop",{"title":288,"path":289,"stem":290,"order":28},"Compared to Tabletop Simulator","\u002Fdocs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-tts","docs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcompared-to-tts",{"title":292,"path":293,"stem":294,"order":295},"Platform Comparison","\u002Fdocs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcomparison-matrix","docs\u002Fgetting-started\u002Fwhy-playtest-parlor\u002Fcomparison-matrix",0,{"title":297,"path":298,"stem":299,"order":28},"Tutorial 1: Your First Game","\u002Fdocs\u002Fgetting-started\u002Fyour-first-game","docs\u002Fgetting-started\u002Fyour-first-game",{"title":301,"path":302,"stem":303,"children":304,"order":43},"Interface","\u002Fdocs\u002Finterface","docs\u002Finterface\u002Findex",[305,306,310,315,319,323,328,332,336,341,345],{"title":301,"path":302,"stem":303,"order":43},{"title":307,"path":308,"stem":309,"order":33},"The Action Dock","\u002Fdocs\u002Finterface\u002Faction-dock","docs\u002Finterface\u002Faction-dock",{"title":311,"path":312,"stem":313,"order":314},"Finding Your Discord User ID","\u002Fdocs\u002Finterface\u002Fdiscord-id","docs\u002Finterface\u002Fdiscord-id",10,{"title":316,"path":317,"stem":318,"order":18},"The Entity Browser","\u002Fdocs\u002Finterface\u002Fentity-browser","docs\u002Finterface\u002Fentity-browser",{"title":320,"path":321,"stem":322,"order":38},"The Minimap","\u002Fdocs\u002Finterface\u002Fminimap","docs\u002Finterface\u002Fminimap",{"title":324,"path":325,"stem":326,"order":327},"The Player Hand","\u002Fdocs\u002Finterface\u002Fplayer-hand","docs\u002Finterface\u002Fplayer-hand",6,{"title":329,"path":330,"stem":331,"order":23},"The Players Panel","\u002Fdocs\u002Finterface\u002Fplayers-panel","docs\u002Finterface\u002Fplayers-panel",{"title":333,"path":334,"stem":335},"Sequences Panel","\u002Fdocs\u002Finterface\u002Fsequences-panel","docs\u002Finterface\u002Fsequences-panel",{"title":337,"path":338,"stem":339,"order":340},"Session Notebook","\u002Fdocs\u002Finterface\u002Fsession-notebook","docs\u002Finterface\u002Fsession-notebook",8,{"title":342,"path":343,"stem":344,"order":28},"The Table","\u002Fdocs\u002Finterface\u002Ftable","docs\u002Finterface\u002Ftable",{"title":346,"path":347,"stem":348,"order":43},"The Toolbar","\u002Fdocs\u002Finterface\u002Ftoolbar","docs\u002Finterface\u002Ftoolbar",{"title":350,"path":351,"stem":352,"children":353,"order":23},"Playtests","\u002Fdocs\u002Fplaytests","docs\u002Fplaytests\u002Findex",[354,355,359,363,367,371],{"title":350,"path":351,"stem":352,"order":23},{"title":356,"path":357,"stem":358,"order":43},"Inviting players","\u002Fdocs\u002Fplaytests\u002Finviting-players","docs\u002Fplaytests\u002Finviting-players",{"title":360,"path":361,"stem":362,"order":38},"Player count guidelines","\u002Fdocs\u002Fplaytests\u002Fplayer-count-guidelines","docs\u002Fplaytests\u002Fplayer-count-guidelines",{"title":364,"path":365,"stem":366,"order":33},"Reviewing outcomes","\u002Fdocs\u002Fplaytests\u002Freviewing-outcomes","docs\u002Fplaytests\u002Freviewing-outcomes",{"title":368,"path":369,"stem":370,"order":28},"Starting a playtest","\u002Fdocs\u002Fplaytests\u002Fstarting-a-playtest","docs\u002Fplaytests\u002Fstarting-a-playtest",{"title":372,"path":373,"stem":374,"order":23},"Surveys","\u002Fdocs\u002Fplaytests\u002Fsurveys","docs\u002Fplaytests\u002Fsurveys",{"title":376,"path":377,"stem":378,"children":379,"order":43},"Setting up a Table","\u002Fdocs\u002Fsetting-up-a-table","docs\u002Fsetting-up-a-table\u002Findex",[380,381,385,389,393,397],{"title":376,"path":377,"stem":378,"order":43},{"title":382,"path":383,"stem":384,"order":28},"Adding pieces to a table","\u002Fdocs\u002Fsetting-up-a-table\u002Fadding-pieces-to-a-table","docs\u002Fsetting-up-a-table\u002Fadding-pieces-to-a-table",{"title":386,"path":387,"stem":388,"order":43},"Building your first table layout","\u002Fdocs\u002Fsetting-up-a-table\u002Fbuilding-your-first-table-layout","docs\u002Fsetting-up-a-table\u002Fbuilding-your-first-table-layout",{"title":390,"path":391,"stem":392,"order":33},"Importing from The Game Crafter","\u002Fdocs\u002Fsetting-up-a-table\u002Fimporting-from-the-game-crafter","docs\u002Fsetting-up-a-table\u002Fimporting-from-the-game-crafter",{"title":394,"path":395,"stem":396,"order":38},"Importing with manual uploads","\u002Fdocs\u002Fsetting-up-a-table\u002Fimporting-with-manual-uploads","docs\u002Fsetting-up-a-table\u002Fimporting-with-manual-uploads",{"title":398,"path":399,"stem":400,"order":23},"Saving a table configuration","\u002Fdocs\u002Fsetting-up-a-table\u002Fsaving-a-table-configuration","docs\u002Fsetting-up-a-table\u002Fsaving-a-table-configuration",{"id":402,"title":61,"body":403,"description":1165,"extension":1166,"meta":1167,"navigation":1168,"path":62,"seo":1169,"stem":63,"__hash__":1170},"docs\u002Fdocs\u002Fautomation\u002Ftriggers.md",{"type":404,"value":405,"toc":1137},"minimark",[406,411,415,419,422,451,456,470,473,476,502,505,509,512,516,519,527,531,534,560,563,567,570,573,576,579,617,623,629,640,644,647,723,728,733,742,746,749,776,780,785,789,792,819,823,828,832,835,854,859,862,865,880,885,889,892,907,912,916,919,930,934,937,941,944,958,962,965,1096,1100,1107,1111,1114,1134],[407,408,410],"h2",{"id":409},"what-a-trigger-is","What a trigger is",[412,413,414],"p",{},"A trigger is an event dispatcher attached to a piece. When the piece fires an event (a button is pressed, a timer expires, a game state change occurs), the trigger evaluates its cases and runs the matching sequences.",[407,416,418],{"id":417},"trigger-structure","Trigger structure",[412,420,421],{},"A trigger contains:",[423,424,425,433,439,445],"ul",{},[426,427,428,432],"li",{},[429,430,431],"strong",{},"Dispatch mode"," -- controls how many cases run",[426,434,435,438],{},[429,436,437],{},"Cases"," -- an ordered list of condition\u002Fsequence pairs",[426,440,441,444],{},[429,442,443],{},"Enabled"," -- a toggle that lets you disable a trigger without deleting it. Disabled triggers are skipped entirely.",[426,446,447,450],{},[429,448,449],{},"Ask Before Running"," (optional) -- when enabled, the trigger presents a confirmation dialog to the player before executing. The player can accept or reject the trigger. This is useful for reactive triggers where you want the player to have a chance to cancel an automatic action.",[452,453,455],"h3",{"id":454},"dispatch-modes","Dispatch modes",[423,457,458,464],{},[426,459,460,463],{},[429,461,462],{},"First Match"," -- evaluates cases top to bottom and runs only the first case whose condition passes. This is the default.",[426,465,466,469],{},[429,467,468],{},"All Matching"," -- evaluates every case and runs all whose conditions pass.",[452,471,437],{"id":472},"cases",[412,474,475],{},"Each case has:",[423,477,478,484,490,496],{},[426,479,480,483],{},[429,481,482],{},"Sequence"," -- the sequence to run when this case matches",[426,485,486,489],{},[429,487,488],{},"Condition"," (optional) -- a condition that must be true for this case to match. Cases without a condition always match as a fallback.",[426,491,492,495],{},[429,493,494],{},"Label"," (optional) -- a human-readable name for the case",[426,497,498,501],{},[429,499,500],{},"Event"," (optional) -- the specific event this case responds to",[412,503,504],{},"Cases are evaluated in order, which matters for First Match mode.",[407,506,508],{"id":507},"manual-triggers","Manual triggers",[412,510,511],{},"Manual triggers require player interaction to fire.",[452,513,515],{"id":514},"buttons","Buttons",[412,517,518],{},"A button fires a single event:",[423,520,521],{},[426,522,523,526],{},[429,524,525],{},"press"," -- fires when a player clicks the button",[452,528,530],{"id":529},"timers","Timers",[412,532,533],{},"A timer fires four events:",[423,535,536,542,548,554],{},[426,537,538,541],{},[429,539,540],{},"expired"," -- fires when the timer reaches zero",[426,543,544,547],{},[429,545,546],{},"started"," -- fires when the timer is started",[426,549,550,553],{},[429,551,552],{},"paused"," -- fires when the timer is paused",[426,555,556,559],{},[429,557,558],{},"reset"," -- fires when the timer is stopped or reset to its full duration",[412,561,562],{},"Timer trigger cases are grouped by event in the editor, so you can attach different sequences to different timer lifecycle events.",[407,564,566],{"id":565},"reactive-triggers","Reactive triggers",[412,568,569],{},"Reactive triggers fire automatically when game state changes. Unlike manual triggers (buttons and timers) which require player interaction, reactive triggers respond to pieces moving between containers, dice being rolled, counters crossing thresholds, and other state changes.",[412,571,572],{},"Each entity type that supports reactive triggers is configured through the Trigger tab in its settings dialog. The trigger editor groups cases by event type, and creates one trigger per event type automatically.",[452,574,161],{"id":575},"spaces",[412,577,578],{},"Spaces support two events that fire when pieces enter or leave the space.",[423,580,581,603],{},[426,582,583,586,587,591,592,595,596,595,599,602],{},[429,584,585],{},"Piece Added"," (",[588,589,590],"code",{},"pieceAdded",") -- fires when a piece lands on the space. Context: ",[588,593,594],{},"triggerPiece",", ",[588,597,598],{},"triggerSpace",[588,600,601],{},"triggerFromSpace"," (optional -- only provided when the piece came from another space).",[426,604,605,586,608,611,612,595,614,616],{},[429,606,607],{},"Piece Removed",[588,609,610],{},"pieceRemoved",") -- fires when a piece leaves the space. Context: ",[588,613,594],{},[588,615,598],{},".",[412,618,619,622],{},[429,620,621],{},"Filters:"," piece type filter, required tags, blocked tags.",[412,624,625,628],{},[429,626,627],{},"Example:"," When a piece lands on a scoring space, trigger a scoring sequence.",[630,631,633],"callout",{"type":632},"info",[412,634,635,636,639],{},"These events replaced the former ",[588,637,638],{},"spaceOccupancyChanged"," event and its direction filter. The discrete events are simpler and more predictable.",[452,641,643],{"id":642},"stacks","Stacks",[412,645,646],{},"Stacks support five events covering tile movement, sleeve movement, and shuffling.",[423,648,649,668,681,698,711],{},[426,650,651,586,654,657,658,660,661,595,664,667],{},[429,652,653],{},"Tile Added",[588,655,656],{},"tileAdded",") -- fires when a tile enters the stack. Context: ",[588,659,594],{}," (the tile), ",[588,662,663],{},"triggerStack",[588,665,666],{},"triggerFromStack"," (optional -- only provided when the tile came from another stack).",[426,669,670,586,673,676,677,660,679,616],{},[429,671,672],{},"Tile Removed",[588,674,675],{},"tileRemoved",") -- fires when a tile leaves the stack. Context: ",[588,678,594],{},[588,680,663],{},[426,682,683,586,686,689,690,692,693,595,695,697],{},[429,684,685],{},"Sleeve Added",[588,687,688],{},"sleeveAdded",") -- fires when a sleeve enters the stack. Context: ",[588,691,594],{}," (the sleeve), ",[588,694,663],{},[588,696,666],{}," (optional -- only provided when the sleeve came from another stack).",[426,699,700,586,703,706,707,692,709,616],{},[429,701,702],{},"Sleeve Removed",[588,704,705],{},"sleeveRemoved",") -- fires when a sleeve leaves the stack. Context: ",[588,708,594],{},[588,710,663],{},[426,712,713,586,716,719,720,722],{},[429,714,715],{},"Shuffled",[588,717,718],{},"shuffled",") -- fires when the stack is shuffled. Context: ",[588,721,663],{}," only. No filter options.",[412,724,725,622],{},[429,726,727],{},"Filters (tile\u002Fsleeve events):",[412,729,730,732],{},[429,731,627],{}," When a card is added to the discard pile, trigger a scoring check.",[630,734,735],{"type":632},[412,736,737,738,741],{},"The former ",[588,739,740],{},"stackThresholdCrossed"," trigger type was removed. To achieve the same effect, use Tile Added or Tile Removed events with conditions that check the stack's tile count.",[452,743,745],{"id":744},"token-bowls","Token Bowls",[412,747,748],{},"Token bowls support two events that fire when pieces enter or leave the bowl.",[423,750,751,764],{},[426,752,753,586,755,758,759,595,761,616],{},[429,754,585],{},[588,756,757],{},"bowlPieceAdded",") -- fires when a piece is added to the bowl. Context: ",[588,760,594],{},[588,762,763],{},"triggerBowl",[426,765,766,586,768,771,772,595,774,616],{},[429,767,607],{},[588,769,770],{},"bowlPieceRemoved",") -- fires when a piece is removed from the bowl. Context: ",[588,773,594],{},[588,775,763],{},[412,777,778,622],{},[429,779,621],{},[412,781,782,784],{},[429,783,627],{}," When a token is returned to the supply bowl, trigger an end-of-round check.",[452,786,788],{"id":787},"bags","Bags",[412,790,791],{},"Bags support two events that fire when pieces enter or leave the bag.",[423,793,794,807],{},[426,795,796,586,798,801,802,595,804,616],{},[429,797,585],{},[588,799,800],{},"bagPieceAdded",") -- fires when a piece is added to the bag. Context: ",[588,803,594],{},[588,805,806],{},"triggerBag",[426,808,809,586,811,814,815,595,817,616],{},[429,810,607],{},[588,812,813],{},"bagPieceRemoved",") -- fires when a piece is drawn from the bag. Context: ",[588,816,594],{},[588,818,806],{},[412,820,821,622],{},[429,822,621],{},[412,824,825,827],{},[429,826,627],{}," When a piece is drawn from a bag, trigger a reveal sequence.",[452,829,831],{"id":830},"counters","Counters",[412,833,834],{},"Counters support one event that fires when the counter crosses a configured threshold.",[423,836,837],{},[426,838,839,586,842,845,846,595,848,595,851,616],{},[429,840,841],{},"Counter Threshold",[588,843,844],{},"counterThresholdCrossed",") -- fires when the counter value crosses a threshold boundary. Context: ",[588,847,594],{},[588,849,850],{},"triggerValue",[588,852,853],{},"triggerPreviousValue",[412,855,856,858],{},[429,857,621],{}," threshold value, threshold direction (above, below, or reaches -- where \"reaches\" fires when the counter hits the exact threshold value from either direction).",[452,860,77],{"id":861},"dice",[412,863,864],{},"Dice support one event that fires after each roll.",[423,866,867],{},[426,868,869,586,872,875,876,595,878,616],{},[429,870,871],{},"Die Rolled",[588,873,874],{},"dieRolled",") -- fires when the die is rolled. Context: ",[588,877,594],{},[588,879,850],{},[412,881,882,884],{},[429,883,621],{}," value filter (specific face values that should trigger the event).",[452,886,888],{"id":887},"pieces-flip","Pieces (flip)",[412,890,891],{},"Any piece with two faces supports a flip event.",[423,893,894],{},[426,895,896,586,899,902,903,595,905,616],{},[429,897,898],{},"Piece Flipped",[588,900,901],{},"pieceFlipped",") -- fires when the piece is flipped. Context: ",[588,904,594],{},[588,906,850],{},[412,908,909,911],{},[429,910,621],{}," flip direction (face up, face down, or any).",[452,913,915],{"id":914},"session","Session",[412,917,918],{},"Session-level triggers fire based on session lifecycle events.",[423,920,921],{},[426,922,923,586,926,929],{},[429,924,925],{},"Session Started",[588,927,928],{},"sessionStarted",") -- fires when a new session begins. No context keys, no filter options.",[407,931,933],{"id":932},"context","Context",[412,935,936],{},"When a trigger dispatches a sequence, it provides context that steps can use.",[452,938,940],{"id":939},"base-context","Base context",[412,942,943],{},"All triggers provide:",[423,945,946,952],{},[426,947,948,951],{},[429,949,950],{},"source"," -- the piece that owns the trigger",[426,953,954,957],{},[429,955,956],{},"actor"," -- the seat index of the player who caused the event",[452,959,961],{"id":960},"reactive-trigger-context","Reactive trigger context",[412,963,964],{},"Reactive triggers provide additional context keys specific to the event type. These keys let sequence steps reference the pieces and containers involved in the event.",[966,967,968,984],"table",{},[969,970,971],"thead",{},[972,973,974,978,981],"tr",{},[975,976,977],"th",{},"Context Key",[975,979,980],{},"Provided By",[975,982,983],{},"Description",[985,986,987,998,1007,1017,1027,1037,1047,1057,1067,1077,1087],"tbody",{},[972,988,989,992,995],{},[990,991,950],"td",{},[990,993,994],{},"All triggers",[990,996,997],{},"The piece that owns the trigger",[972,999,1000,1002,1004],{},[990,1001,956],{},[990,1003,994],{},[990,1005,1006],{},"The seat that caused the event",[972,1008,1009,1011,1014],{},[990,1010,594],{},[990,1012,1013],{},"Space, stack, bowl, bag, counter, die, flip events",[990,1015,1016],{},"The piece involved in the event",[972,1018,1019,1021,1024],{},[990,1020,598],{},[990,1022,1023],{},"Space events",[990,1025,1026],{},"The space where the event occurred",[972,1028,1029,1031,1034],{},[990,1030,601],{},[990,1032,1033],{},"Space Piece Added",[990,1035,1036],{},"The space the piece came from (if any)",[972,1038,1039,1041,1044],{},[990,1040,663],{},[990,1042,1043],{},"Stack events",[990,1045,1046],{},"The stack where the event occurred",[972,1048,1049,1051,1054],{},[990,1050,666],{},[990,1052,1053],{},"Stack Tile Added, Sleeve Added",[990,1055,1056],{},"The stack the piece came from (if any)",[972,1058,1059,1061,1064],{},[990,1060,763],{},[990,1062,1063],{},"Bowl events",[990,1065,1066],{},"The token bowl where the event occurred",[972,1068,1069,1071,1074],{},[990,1070,806],{},[990,1072,1073],{},"Bag events",[990,1075,1076],{},"The bag where the event occurred",[972,1078,1079,1081,1084],{},[990,1080,850],{},[990,1082,1083],{},"Counter, die, flip events",[990,1085,1086],{},"The new value after the event",[972,1088,1089,1091,1093],{},[990,1090,853],{},[990,1092,841],{},[990,1094,1095],{},"The value before the threshold crossing",[407,1097,1099],{"id":1098},"conditions","Conditions",[412,1101,1102,1103,1106],{},"Trigger cases can use conditions to create switch-case-style dispatch. Conditions inspect game state (counter values, die faces, piece positions, tags) and support logical composition with AND, OR, and NOT operators. See ",[1104,1105,51],"a",{"href":52}," for more on how conditions work throughout the system.",[407,1108,1110],{"id":1109},"filter-options","Filter options",[412,1112,1113],{},"Several reactive trigger event types share a common set of piece filters. These filters narrow which pieces cause the trigger to fire:",[423,1115,1116,1122,1128],{},[426,1117,1118,1121],{},[429,1119,1120],{},"Piece Type Filter"," -- restricts to specific piece types (tile, token, die, counter, stack)",[426,1123,1124,1127],{},[429,1125,1126],{},"Required Tags"," -- the piece must have ALL listed tags for the trigger to fire",[426,1129,1130,1133],{},[429,1131,1132],{},"Blocked Tags"," -- the piece must NOT have any listed tags for the trigger to fire",[412,1135,1136],{},"These filters are available on space, stack (tile\u002Fsleeve events), token bowl, and bag events.",{"title":1138,"searchDepth":43,"depth":43,"links":1139},"",[1140,1141,1145,1149,1159,1163,1164],{"id":409,"depth":43,"text":410},{"id":417,"depth":43,"text":418,"children":1142},[1143,1144],{"id":454,"depth":23,"text":455},{"id":472,"depth":23,"text":437},{"id":507,"depth":43,"text":508,"children":1146},[1147,1148],{"id":514,"depth":23,"text":515},{"id":529,"depth":23,"text":530},{"id":565,"depth":43,"text":566,"children":1150},[1151,1152,1153,1154,1155,1156,1157,1158],{"id":575,"depth":23,"text":161},{"id":642,"depth":23,"text":643},{"id":744,"depth":23,"text":745},{"id":787,"depth":23,"text":788},{"id":830,"depth":23,"text":831},{"id":861,"depth":23,"text":77},{"id":887,"depth":23,"text":888},{"id":914,"depth":23,"text":915},{"id":932,"depth":43,"text":933,"children":1160},[1161,1162],{"id":939,"depth":23,"text":940},{"id":960,"depth":23,"text":961},{"id":1098,"depth":43,"text":1099},{"id":1109,"depth":43,"text":1110},"Event-driven dispatch tables that connect piece interactions and game state changes to sequence execution.","md",{},{"order":28},{"title":61,"description":1165},"iPouu33f9jg1AT0R2Vg2bspH1gNDueX42_6G25B6tjA",1778263810633]