packages feed

swarm-0.3.0.0: data/scenarios/Testing/394-build-drill.yaml

version: 1
name: Test build with drill
description: |
  Inner build does not correctly require Drill.
  https://github.com/swarm-game/swarm/issues/394
creative: True
objectives:
  - condition: |
      try {
        as base {l <- has "detonator"; return (not l)}
      } { return false }
# When testing, add `s <- build {...}; n <- as s {whoami}; log n`
solution: |
  def forever = \c. c ; forever c end;
  def unblock = try {drill forward} {} end;
  def push = unblock; move end;
  log "Hi, I am base";
  r <- build {
    wait 2;
    log "Hi, I am builder";
    forever (
      build {
        log "Hi, I am pusher";
        forever push
      };
      log "- robot built"
    )
  };
  wait 10;
  place "detonator";
robots:
  - name: base
    loc: [0,0]
    dir: [1,0]
    devices:
      - treads
      - logger
      - 3D printer
      - dictionary
      - grabber
    inventory:
      - [1, detonator] # used to mark win
world:
  default: [blank]
  palette:
    '.': [grass]
    'M': [stone, mountain]
    '┌': [stone, upper left corner]
    '┐': [stone, upper right corner]
    '└': [stone, lower left corner]
    '┘': [stone, lower right corner]
    '─': [stone, horizontal wall]
    '│': [stone, vertical wall]
  upperleft: [-1, 1]
  map: |
    ┌───┐
    │..M│
    └───┘