--- /dev/null
+description: "Introduction"
+puzzle: true
+
+# This field is ignored, but it's a useful place to put some action definitions
+# we can reference later.
+_action_definitions:
+ - &NULL-ACTION
+ action_class: 'DoNothing'
+ required_bits: []
+ data:
+ message: "Nothing to see here."
+
+ - &NULL-CARD
+ card_name: 'null'
+ actions:
+ - *NULL-ACTION
+
+ - &STEP1-ACTION
+ action_class: 'DoNothing'
+ required_bits: []
+ data:
+ message: "Welcome to the game. You can only move to chequered squares, therefore you can stay here or move right."
+
+ - &STEP1-CARD
+ card_name: 'step1'
+ actions:
+ - *STEP1-ACTION
+
+ - &STEP2-ACTION
+ action_class: 'SetBits'
+ required_bits: []
+ data:
+ message: "Moving to a tile requires picking an action. Some tiles' actions set bits on your robot. Such as the {SOUTH} bit."
+
+ - &STEP2-CARD
+ card_name: 'step2'
+ bits: [SOUTH]
+ actions:
+ - *STEP2-ACTION
+
+ - &STEP3-ACTION
+ action_class: 'ClearBits'
+ required_bits: []
+ data:
+ message: "Other tiles' actions clear bits. {SOUTH} or {EAST}. For the next part of the tutorial, we are going to strictly control your movement bits."
+
+ - &STEP3-CARD-1
+ card_name: 'step3-1'
+ bits: [SOUTH, WEST]
+ actions:
+ - *STEP3-ACTION
+
+ - &STEP3-CARD-2
+ card_name: 'step3-2'
+ bits: [EAST]
+ actions:
+ - *STEP3-ACTION
+
+ - &STEP4-ACTION
+ action_class: 'SetBits'
+ required_bits: []
+ data:
+ message: "There are key bits that can be set, such as {RED}. They may be required by actions."
+
+ - &STEP4-CARD
+ card_name: 'step4'
+ bits: [RED, SOUTH, EAST]
+ actions:
+ - *STEP4-ACTION
+
+ - &STEP5-ACTION-BLUE
+ action_class: 'GenericBits'
+ required_bits: [BLUE]
+ data:
+ message: "You need to have the {BLUE} bit, to use this action and continue. Some actions have more complex requirements."
+ set: [EAST]
+ clear: [NORTH, SOUTH, WEST]
+
+ - &STEP5-ACTION-DEFAULT
+ action_class: 'GenericBits'
+ required_bits: []
+ data:
+ message: "Go back."
+ set: [WEST]
+ clear: [EAST, SOUTH, NORTH]
+
+ - &STEP5-CARD
+ card_name: 'step5'
+ bits: []
+ actions:
+ - *STEP5-ACTION-BLUE
+ - *STEP5-ACTION-DEFAULT
+
+ - &STEP6-ACTION-RED
+ action_class: 'GenericBits'
+ required_bits: [RED]
+ data:
+ message: "You need to have the {RED} bit, to use this action to set the {BLUE} bit."
+ set: [NORTH, BLUE]
+ clear: [SOUTH, EAST, WEST]
+
+ - &STEP6-ACTION-DEFAULT
+ action_class: 'GenericBits'
+ required_bits: []
+ data:
+ message: "This action doesn't require anything. Go back."
+ set: [NORTH]
+ clear: [SOUTH, EAST, WEST]
+
+ - &STEP6-CARD
+ card_name: 'step6'
+ bits: [BLUE]
+ actions:
+ - *STEP6-ACTION-RED
+ - *STEP6-ACTION-DEFAULT
+
+ - &STEP7-ACTION
+ action_class: 'SetBits'
+ required_bits: []
+ data:
+ message: "Almost there. You have free reign on this column. Collect yourself a win bit {WINTOKEN} to finish the level. Good luck!"
+
+ - &STEP7-CARD
+ card_name: 'step7'
+ bits: [NORTH, SOUTH]
+ actions:
+ - *STEP7-ACTION
+
+ - &STEP8-ACTION-DEFAULT
+ action_class: 'LoseHealthOrMSB'
+ required_bits: []
+ data:
+ message: "Losing health {HEALTH} is a bad idea..."
+
+ - &STEP8-ACTION-GREEN
+ action_class: 'SetBits'
+ required_bits: [BLUE, RED]
+
+ - &STEP8-CARD
+ card_name: 'step8'
+ bits: [GREEN]
+ actions:
+ - *STEP8-ACTION-DEFAULT
+ - *STEP8-ACTION-GREEN
+
+ - &STEP9-ACTION
+ action_class: 'ToggleBits'
+ required_bits: []
+ data:
+ message: "I wonder what the most significant bit {MSB} does..."
+
+ - &STEP9-CARD
+ card_name: 'step9'
+ bits: [MSB]
+ actions:
+ - *STEP9-ACTION
+
+ - &STEP10-ACTION
+ action_class: 'ShiftLocations'
+ required_bits: [GREEN]
+ data:
+ direction: EAST
+ message: "Some actions change the game board."
+
+ - &STEP10-CARD
+ card_name: 'step10'
+ actions:
+ - *STEP10-ACTION
+
+ - &STEP11-ACTION
+ action_class: 'GenericBits'
+ required_bits: []
+ data:
+ message: "We may have lied to you."
+ set: [WEST]
+ clear: [NORTH, SOUTH, EAST]
+
+ - &STEP11-CARD
+ card_name: 'step11'
+ actions:
+ - *STEP11-ACTION
+
+ - &STEP12-ACTION
+ action_class: 'GenericBits'
+ required_bits: []
+ data:
+ set: [NORTH]
+ clear: [SOUTH, EAST, WEST]
+
+ - &STEP12-CARD
+ card_name: 'step12'
+ actions:
+ - *STEP12-ACTION
+
+ - &STEP13-ACTION
+ action_class: 'GenericBits'
+ required_bits: []
+ data:
+ set: [EAST, NORTH, SOUTH]
+ clear: [WEST]
+
+ - &STEP13-CARD
+ card_name: 'step13'
+ actions:
+ - *STEP13-ACTION
+
+ - &WIN-ACTION
+ action_class: 'AcquireWinToken'
+ required_bits: [RED, GREEN, BLUE]
+
+ - &WIN-CARD
+ card_name: 'win'
+ actions:
+ - *WIN-ACTION
+
+cards:
+ - *STEP1-CARD
+ - *STEP2-CARD
+ - *STEP3-CARD-2
+ - *NULL-CARD
+ - *STEP8-CARD
+
+ - *NULL-CARD
+ - *STEP3-CARD-1
+ - *STEP4-CARD
+ - *STEP5-CARD
+ - *STEP7-CARD
+
+ - *NULL-CARD
+ - *NULL-CARD
+ - *STEP6-CARD
+ - *NULL-CARD
+ - *STEP9-CARD
+
+ - *WIN-CARD
+ - *STEP13-CARD
+ - *STEP13-CARD
+ - *STEP13-CARD
+ - *STEP10-CARD
+
+ - *NULL-CARD
+ - *NULL-CARD
+ - *NULL-CARD
+ - *STEP12-CARD
+ - *STEP11-CARD
+
+defaults:
+ initial_bits: 0x4
+ initial_pos: [0, 0]
+ max_health: 7
+ wins_required: 1