version: 1 name: Combination locks author: Karl Ostmo description: | Unlock the gates creative: false seed: 4 objectives: - goal: - | Several combination-locked gates lie between you and treasure. - | Each "dial" can be one of three colors. `drill` a dial to cycle to its next color. The adjacent `gate`{=entity} opens when the correct combination is set. - | Unlock all of the combination locks and `grab` the `bitcoin`{=entity}. condition: | as base {has "bitcoin"}; robots: - name: base dir: [1, 0] display: invisible: false devices: - ADT calculator - branch predictor - hourglass - comparator - compass - dictionary - drill - grabber - lambda - lodestone - logger - keyboard - net - scanner - strange loop - treads - name: lockbot system: true dir: [1, 0] display: invisible: true program: | run "scenarios/Challenges/_combo-lock/setup.sw" solution: | run "scenarios/Challenges/_combo-lock/solution.sw" entities: - name: gate display: char: '#' description: - A locked door properties: [known, unwalkable] - name: "dial (R)" display: char: '•' attr: red description: - A red dial properties: [known] - name: "dial (G)" display: char: '•' attr: green description: - A green dial properties: [known] - name: "dial (B)" display: char: '•' attr: blue description: - A blue dial properties: [known] recipes: - in: - [1, "dial (R)"] out: - [1, "dial (G)"] required: - [1, drill] time: 0 - in: - [1, "dial (G)"] out: - [1, "dial (B)"] required: - [1, drill] time: 0 - in: - [1, "dial (B)"] out: - [1, "dial (R)"] required: - [1, drill] time: 0 known: [boulder, water, bitcoin] world: dsl: | {water} upperleft: [-1, -1] offset: false palette: '.': [grass, erase] '$': [grass, bitcoin] '@': [grass, boulder] '#': [grass, gate] 'B': [grass, erase, base] 'c': [grass, dial (R)] 'a': [grass, erase, lockbot] map: | .......$...... @@@@@......@@@ ....@######@.. ....acccccc... .............. @@@@@.....@@@@ ....@#####@... ....accccc.... .............. @@@@@....@@@@@ ....@####@.... ....acccc..... .............. @@@@@...@@@@@@ ....@###@..... ..B.accc...... ..............