swarm-0.7.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"; pure (not l)}
} { pure 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; pure ()} {} end;
def doPush = 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 doPush
};
log "- robot built"
)
};
wait 10;
place "detonator";
robots:
- name: base
loc: [0, 0]
dir: east
devices:
- treads
- logger
- 3D printer
- dictionary
- grabber
inventory:
- [1, detonator] # used to mark win
world:
palette:
'.': [grass]
'M': [stone, mountain]
'+': [stone, wall]
upperleft: [-1, 1]
map: |
+++++
+..M+
+++++