packages feed

swarm-0.6.0.0: data/scenarios/Challenges/bridge-building.yaml

version: 1
name: A Frivolous Excursion
author: Karl Ostmo
description: |
  Use the resources at hand to open paths between the geographic regions.
creative: false
attrs:
  - name: magenta
    fg: "#ff00ff"
  - name: lavender
    fg: "#eebbff"
  - name: tan
    fg: "#D2B48C"
  - name: beach
    fg: "#8b4513"
    bg: "#c2b280"
  - name: blueBG
    bg: "#86C5D8"
  - name: lavaBG
    bg: "#ff8800"
  - name: cyan
    fg: "#00ffff"
  - name: lava
    bg: "#bb0000"
    fg: "#ff8800"
  - name: glacier
    bg: "#8888dd"
    fg: "#ddddff"
  - name: obsidian
    bg: "#000000"
    fg: "#FFFFFF"
  - name: quarry
    bg: "#888888"
    fg: "#555533"
  - name: jungle
    bg: "#004400"
    fg: "#00CC00"
  - name: bog
    bg: "#002200"
    fg: "#885522"
  - name: niceBog
    bg: "#224422"
    fg: "#964B00"
objectives:
  - id: get_peat
    teaser: Collect peat
    goal:
      - The old grind.
    optional: true
    hidden: true
    condition: |
      as base {
        has "peat";
      };
  - id: hammer_time
    teaser: Hammer time
    goal:
      - Produce an `obsidian shard`{=entity}.
    optional: true
    hidden: true
    condition: |
      as base {
        has "obsidian shard";
      };
  - id: trespass_neighbor
    teaser: Tresspassing
    goal:
      - Snoop inside the neighbor's house.
    optional: true
    hidden: true
    condition: |
      as base {
        c <- whereami;
        let x = fst c in
        return $ x >= 1 && x <= 2 && snd c == -30;
      };
  - id: get_pebble
    teaser: Off-piste
    goal:
      - Collect a souvenir from outside the borders of the map.
    optional: true
    hidden: true
    condition: |
      as base {
        has "pebble";
      };
  - id: get_map
    teaser: Get the map
    goal:
      - As a humble `peat`{=entity} farmer, you subsist in a simple cabin by the `bog`{=entity}. Though long content with this ascetic lifestyle, recently the barren walls have left you restless. Something is missing...
      - "The majestic landscape that is your back yard is insufficient to distract you---not even the ferocious, `lava`{=entity}-spewing volcano little more than a stone's throw from your porch. You are preoccupied by one task: to find the perfect household decoration."
      - First, grab a `map`{=entity} to orient yourself.
    condition: |
      as base {
        has "map";
      };
  - id: find_temple
    teaser: Find the temple
    prerequisite: get_map
    goal:
      - You study the `map`{=entity}.
      - Glacier-bound mountains tower in the `east`, a volcano oozes a river of `lava`{=entity} to the `north`, and beyond that lies a mountain lake, punctuated with islands in the northwest. Iron mines penetrate the base of the volcano. They could be useful, but how will you get there?
      - A `jungle`{=entity} abuts the volcano, ensconcing an ancient ruin. The map notes that bygone travelers have stashed tools among the northeasterly mountains to blaze a path through the jungle.
      - Your only neighbor, a `hemp`{=entity} farmer to the northwest, has evacuated since the sudden volcanic eruption.
      - A disused quarry and clay pit flanks your cabin to the `west`, as does the familiar, swampy `bog`{=entity} to the `east`. A highly-prized `flower`{=entity} is said to grow in the caves beyond the bog.
      - Your mind is made up. You will pillage the ruins for treasure! Head to the ruins and `scan` them. Ingenuity and endurance are your allies as you forge paths through varied obstacles. Study your "recipes" for clues!
    condition: |
      as base {
        knows "temple";
      };
  - id: flower_ring
    teaser: Encircle the temple
    prerequisite: find_temple
    goal:
      - "A note on the door says:"
      - '"Greetings, intrepid traveler. Encircle this temple with the rare `flower`{=entity} of the southeastern caves, and the treasure of this `temple`{=entity} shall be revealed."'
      - Plant a ring of flowers around the jungle temple.
    condition: |
      as base {
        has "painted plate";
      };
  - id: decorate_cabin
    teaser: Decorate cabin
    prerequisite: flower_ring
    goal:
      - Brighten up your hovel with some kitsch.
    condition: |
      r <- robotnamed "platecheck";
      as base {
        ishere "painted plate";
      };
robots:
  - name: base
    dir: east
    devices:
      - ADT calculator
      - branch predictor
      - treads
      - lodestone
      - clock
      - compass
      - comparator
      - counter
      - dictionary
      - grabber
      - keyboard
      - lambda
      - logger
      - mirror
      - drill
      - net
      - scanner
      - strange loop
      - workbench
      - harvester
      - oven mitts
      - big furnace
      - peat furnace
    inventory:
      - [0, rubble skip]
      - [0, crucible]
      - [0, cliff]
      - [0, obsidian path]
      - [0, causeway]
      - [0, glacier]
      - [0, swampy bog]
      - [0, jungle]
  - name: flowercheck
    system: true
    dir: north
    display:
      invisible: true
    devices:
      - logger
    inventory:
      - [1, painted plate]
    program: |
      run "scenarios/Challenges/_bridge-building/flower-ring-check.sw"
  - name: platecheck
    system: true
    dir: north
    display:
      invisible: true
solution: |
  run "scenarios/Challenges/_bridge-building/solution.sw"
entities:
  - name: map
    display:
      char: 'M'
      attr: 'magenta'
    description:
      - The map describes local points of interest, relative to your cabin.
    properties: [pickable, known]
  - name: peat furnace
    display:
      char: 'F'
      attr: tan
    description:
      - Fueled by peat.
    properties: [pickable, known]
  - name: clay
    display:
      char: 'c'
      attr: tan
    description:
      - Can be fired in a peat furnace into a vessel.
    properties: [pickable, known]
  - name: lava
    display:
      char: 'w'
      attr: lava
    description:
      - Hot liquid rock.
    properties: [known, unwalkable]
  - name: pebble
    display:
      char: '.'
      attr: tan
    description:
      - A tiny, inconsequential rock.
    properties: [known, pickable]
  - name: machete
    display:
      char: '/'
      attr: cyan
    description:
      - Easily cuts through jungle overgrowth.
    properties: [known, pickable]
  - name: painted plate
    display:
      char: 'o'
      attr: obsidian
    description:
      - Limited edition 1978 collectible Helix the Cat ornamental hand-painted dinner plate.
    properties: [known, pickable]
  - name: oven mitts
    display:
      char: 'm'
    description:
      - Required for handling hot material.
  - name: temple
    display:
      char: 'T'
      attr: gold
    description:
      - Ancient ruins
    properties: []
  - name: jungle
    display:
      char: 'J'
      attr: jungle
    description:
      - Thick, impassible vegetation.
    properties: [known, unwalkable]
  - name: path
    display:
      char: '▒'
      attr: wood
    description:
      - A path through the jungle.
    properties: [known]
  - name: cliff
    display:
      char: '}'
      attr: lavender
    description:
      - Steep, impassible cliff.
    properties: [known, unwalkable]
  - name: warhammer
    display:
      char: 'H'
      attr: silver
    description:
      - Can break hard objects
    properties: [known, pickable]
  - name: granite mountain
    display:
      char: 'A'
      attr: snow
    description:
      - Impassible rock, resistant to drilling
    properties: [known, unwalkable]
  - name: granite boulder
    display:
      char: '@'
      attr: rock
    description:
      - Impassible rock, resistant to drilling
    properties: [known, unwalkable]
  - name: mountain pass
    display:
      char: '░'
    description:
      - Open pass through the mountain
    properties: [known]
  - name: rope
    display:
      char: 'L'
    description:
      - Can be used to traverse down a cliff.
    properties: [known, pickable]
  - name: hemp
    display:
      char: 'h'
      attr: plant
    description:
      - Can be used to make rope
    properties: [known, pickable, growable]
  - name: flimsy board
    display:
      char: 'b'
      attr: wood
    description:
      - Board made from a soft log. Has poor rigidity.
    properties: [known, pickable]
  - name: soft log
    display:
      char: 'l'
      attr: wood
    description:
      - Log made from a palm tree. A bit flexible.
    properties: [known, pickable]
  - name: coconut
    display:
      char: 'c'
      attr: wood
    description:
      - Spherical, buoyant husk
    properties: [known, pickable]
  - name: floating boardwalk
    display:
      char: '▒'
      attr: wood
    description:
      - Allows for crossing a swampy bog
    properties: [known]
  - name: peat
    display:
      char: 'p'
      attr: wood
    description:
      - Burnable plant material
    properties: [known, pickable]
  - name: peat bog
    display:
      char: 'b'
      attr: niceBog
    description:
      - Can harvest peat from this.
    properties: [known]
  - name: secret bog
    display:
      char: '8'
      attr: bog
    description:
      - Conceals treasure from millennia past
    properties: [known, unwalkable]
  - name: swampy bog
    display:
      char: 'B'
      attr: bog
    description:
      - Impassible swamp
    properties: [known, unwalkable]
  - name: glacier
    display:
      char: 'Z'
      attr: glacier
    description:
      - Thick ice.
    properties: [known, unwalkable]
  - name: crucible
    display:
      char: 'c'
    description:
      - An empty crucible. Can carry lava.
    properties: [known, pickable]
  - name: lava-filled crucible
    display:
      char: 'C'
      attr: lavaBG
    description:
      - Crucible filled with lava
    properties: [known, pickable]
  - name: quarry
    display:
      char: 'Q'
      attr: quarry
    description:
      - Drill to collect pieces of rock to fill a rubble skip.
    properties: [known]
  - name: left roof
    display:
      char: '/'
      attr: wood
    description:
      - Part of a roof
    properties: [known, unwalkable]
  - name: right roof
    display:
      char: '\'
      attr: wood
    description:
      - Part of a roof
    properties: [known, unwalkable]
  - name: chair
    display:
      char: 'h'
      attr: wood
    description:
      - Standard bachelor furnishing
    properties: [known]
  - name: wall
    display:
      char: '|'
      attr: wood
    description:
      - Part of a house
    properties: [known, unwalkable]
  - name: floor
    display:
      char: '-'
      attr: wood
    description:
      - Part of a house
    properties: [known, unwalkable]
  - name: door
    display:
      char: '|'
      attr: snow
    description:
      - Entry to a house
    properties: [known]
  - name: rubble skip
    display:
      char: 'r'
    description:
      - An empty container for rubble.
    properties: [known, pickable]
  - name: rubble-filled skip
    display:
      char: 'R'
    description:
      - An full container of rubble. Can be dumped in the water as fill to form a causeway.
    properties: [known, pickable]
  - name: causeway
    display:
      char: '▒'
    description:
      - Reclaimed land formed by filling shallow water with rubble.
    properties: [known]
  - name: empty water tank
    display:
      char: 'k'
    description:
      - Tank with nothing in it
    properties: [known, pickable]
  - name: water-filled tank
    display:
      char: 'K'
      attr: blueBG
    description:
      - Tank filled with water
    properties: [known, pickable]
  - name: obsidian path
    display:
      char: '`'
      attr: obsidian
    description:
      - Smooth, glassy volcanic rock
    properties: [known]
  - name: obsidian shard
    display:
      char: 'V'
      attr: obsidian
    description:
      - Dislodged fragment of obsidian
    properties: [known, pickable]
  - name: palm tree
    display:
      char: 'P'
      attr: beach
    description:
      - Palm tree.
    properties: [known, pickable, growable]
recipes:
  - in:
      - [8, clay]
      - [10, peat]
    out:
      - [1, crucible]
    required:
      - [1, peat furnace]
  - in:
      - [1, lava]
      - [1, crucible]
    out:
      - [1, lava-filled crucible]
      - [1, lava]
    required:
      - [1, oven mitts]
      - [1, drill]
  - in:
      - [1, jungle]
    out:
      - [1, path]
    required:
      - [1, machete]
      - [1, drill]
  - in:
      - [30, hemp]
    out:
      - [1, rope]
  - in:
      - [1, cliff]
      - [1, rope]
    out:
      - [1, mountain pass]
    required:
      - [1, drill]
  - in:
      - [1, palm tree]
    out:
      - [2, coconut]
      - [1, soft log]
  - in:
      - [1, soft log]
    out:
      - [2, flimsy board]
  - in:
      - [1, peat bog]
    out:
      - [1, peat]
    required:
      - [1, drill]
  - in:
      - [1, secret bog]
    out:
      - [1, warhammer]
      - [1, swampy bog]
    required:
      - [1, drill]
  - in:
      - [1, obsidian path]
    out:
      - [1, obsidian shard]
    required:
      - [1, warhammer]
      - [1, drill]
  - in:
      - [1, swampy bog]
      - [2, coconut]
      - [2, flimsy board]
    out:
      - [1, floating boardwalk]
    required:
      - [1, drill]
  - in:
      - [1, water-filled tank]
    out:
      - [1, empty water tank]
  - in:
      - [1, glacier]
      - [1, lava-filled crucible]
      - [1, empty water tank]
    out:
      - [1, crucible]
      - [1, water-filled tank]
    required:
      - [1, oven mitts]
      - [1, drill]
  - in:
      - [1, lava]
      - [1, water-filled tank]
    out:
      - [1, obsidian path]
      - [1, empty water tank]
    required:
      - [1, drill]
  - in:
      - [5, iron plate]
      - [2, rope]
    out:
      - [1, rubble skip]
  - in:
      - [1, rubble skip]
      - [1, quarry]
    out:
      - [1, rubble-filled skip]
      - [1, quarry]
    required:
      - [1, drill]
  - in:
      - [1, rubble-filled skip]
      - [1, water]
    out:
      - [1, causeway]
      - [1, rubble skip]
    required:
      - [1, drill]
known: [water, sand, flower, iron mine]
seed: 0
world:
  palette:
    '.': [blank]
    '/': [blank, left roof]
    '\': [blank, right roof]
    '|': [blank, wall]
    '-': [blank, floor]
    'e': [blank, pebble]
    'd': [blank, door]
    "Ω": [blank, chair, base]
    '@': [stone, granite boulder]
    'I': [ice]
    'B': [dirt, swampy bog]
    'q': [dirt, secret bog]
    'b': [dirt, peat bog]
    'C': [dirt, cliff]
    'c': [blank, clay]
    'h': [grass, hemp]
    'J': [dirt, jungle]
    'T': [blank, temple, flowercheck]
    't': [blank, empty water tank]
    'A': [stone, granite mountain]
    'i': [stone, iron mine]
    'M': [blank, map, platecheck]
    'm': [blank, machete]
    'L': [stone, lava]
    'G': [dirt, glacier]
    'Q': [stone, quarry]
    's': [dirt, sand]
    'w': [dirt, water]
    'P': [dirt, palm tree]
    'f': [blank, flower]
  upperleft: [0, 0]
  map: |-
    .............................................................
    .............................................................
    ................................................A............
    .........AA........A.....A.......A.............AAA......A....
    ....A...AAAA....A.AAA.@.AA......AA...A........AAAAA....AAA...
    ...AAA.AAAAAA@.AAAwww@wAAAA....AAAA.AAAeA....AAAAAAA..AAAAA..
    ..AAAAAwwwwwwwAAAAAwwwAAAAA...AAAAAA...AAA..AAAAAAAAA........
    .AAAAAAAwwwwwwwwwwwwwAAAAAA@@AA.......AAAA@.........@.A...@..
    ....Awwwwwsssswwwwwwwwwwwwww@.....A..AAAAAAA.........AAA....@
    ...AAAwwwsssPsswwwwwssswwwwww....AAACAAAA....A......AAAAA....
    ..AAAAAwwsssssswwwwsssswwwwwwww@AAAA........AAA....AAAAAAA.@.
    ......@wwwsssswwwwwssswwwwww@@@AAAAAA......AALAAACAAAAAAAAA.@
    .....Awwwwwwwwwwwwwwwwwwww@@@.AAAAAAAA...AAALLAAA..........@.
    ....AAwwwwwwwwwwwwwwwwwwww@..AAAAAAAAAA.AAAALAAAAA...m..A.@.@
    ...AAAAwwwwwwwwwwwwwwwww@@@JJJJJJJJ....AAAALLAAAAAA....AAA...
    ...AAAAAwwwwwwwww@@@@@@@@..JJJJJJJJ.T.AAAAALLAAAiiAA..AAAAA..
    ..AAAAAAAsssssssss.........JJJJJJJJ...JJJJJLLJJJ....AAAAAAA..
    .AAAAAAAAsssss..............JJJJJJJJJJJJJJLLJJJ.....AAAAAAAA.
    AAAAAAAAAA....................JJJJJJJJJ.LLL.JJ.....AAAAAAAAA.
    ......@@@.......................JJJJJJ.LLL@JJ.....AAAAAAAAAAA
    .....@@@@..@@@@@...................LLLLLL@@.............@@A.@
    ...@..@@LLLLLLL@@@@..............LLLLLLLL@................@A.
    .@LLLLLLLLLLLLLLLLLL.....LLLLLLLLLLLLL@@@@..................A
    LLL@LLLLLLLLLLLLLLLLLLLLLLLLLLL@@@@@@@@@@............AA@...A@
    .@LLLLLLLLLLLLLLLLLLLLLLLLL@@@@....@@@@@@@.........@@A@A@IIAA
    .LL@LL@@.........@@@LLLLLL@@..........@@@@@@@@@@AA@@A@@AIIA.@
    LL.................@@@@@@@@............GGGGGGGGGG@@@@IIIIIIA.
    ......hhhhhhhhh..........................GGGGGGGGGGGIIIIIIII@
    ./\...hhhhhhhhh..........................GGGGGGGG@@@IIIIIAIIA
    /--\..hhhhhhhhh..........................GGGGG@@@@@@A@IIA.@A.
    d..|..hhhhhhhhh..............BBBBBBBBB...GG@@@@@@@@@@@@A@.A.A
    ----..hhhhhhhhh............BBBBBBBBBBBBBB@@@@@@@@@@@@@@@@@@@@
    ........................BBBBBBBBBBBBBBBBBBBBB..@@@@@@@@@@@@@@
    ......................BBBBBBBBBBBBBBBBBBBBBBB.....@...@@@@@@@
    .......AA....AA......bBBBBBBBBBBBBBBBBBBBBBBB.....@.@.@..@@@@
    .......AA.QQ.AA......bbbbBBBBBBBBBBBBBBBBBBBBBBBB...@....@f@.
    .......AAAAAAAA.......bbbbBBBBBBBBBBBBBBBBBBBBBBBBBB@..@....@
    ........AAAAAA.........bbbbbBBBBBBBBBBBBBBBBBBBBBBBBB@@.@.@@.
    ................../\.....bbbbbbBBBBBBBBBBBBBBBBBBBBBBB.@..@.@
    ........ccc....../--\......bbbbbbbbBBBBBBBBBBBBBBBq@BB.@.@@.@
    ......cccccccc..t|ΩMd........bbbbbbbbbbBBBBBBBBBBB@.@.@.@@...
    ........cccc.....----........................................