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