packages feed

swarm-0.6.0.0: data/scenarios/Challenges/combo-lock.yaml

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: east
    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: east
    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......
    ..............