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: [1, 0] 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: [0, 1] display: invisible: true devices: - logger inventory: - [1, painted plate] program: | run "scenarios/Challenges/_bridge-building/flower-ring-check.sw" - name: platecheck system: true dir: [0, 1] 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: [portable, known] - name: peat furnace display: char: 'F' attr: tan description: - Fueled by peat. properties: [portable, known] - name: clay display: char: 'c' attr: tan description: - Can be fired in a peat furnace into a vessel. properties: [portable, 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, portable] - name: machete display: char: '/' attr: cyan description: - Easily cuts through jungle overgrowth. properties: [known, portable] - name: painted plate display: char: 'o' attr: obsidian description: - Limited edition 1978 collectible Helix the Cat ornamental hand-painted dinner plate. properties: [known, portable] - 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, portable] - 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, portable] - name: hemp display: char: 'h' attr: plant description: - Can be used to make rope properties: [known, portable, growable] - name: flimsy board display: char: 'b' attr: wood description: - Board made from a soft log. Has poor rigidity. properties: [known, portable] - name: soft log display: char: 'l' attr: wood description: - Log made from a palm tree. A bit flexible. properties: [known, portable] - name: coconut display: char: 'c' attr: wood description: - Spherical, buoyant husk properties: [known, portable] - 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, portable] - 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, portable] - name: lava-filled crucible display: char: 'C' attr: lavaBG description: - Crucible filled with lava properties: [known, portable] - 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, portable] - 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, portable] - 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, portable] - name: water-filled tank display: char: 'K' attr: blueBG description: - Tank filled with water properties: [known, portable] - 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, portable] - name: palm tree display: char: 'P' attr: beach description: - Palm tree. properties: [known, portable, 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.....----........................................