packages feed

swarm-0.6.0.0: data/scenarios/Testing/144-subworlds/subworld-shared-structures.yaml

version: 1
name: Subworld shared structures
description: |
  Traverse the floors of the tower, then grab the flower in the middle
attrs:
  - name: portal_in
    fg: "#ff9a00"
    bg: "#ff5d00"
  - name: portal_out
    fg: "#00a2ff"
    bg: "#0065ff"
objectives:
  - goal:
      - |
        Visit all of the floors
    condition: |
      as base {has "flower"}
entities:
  - name: telepad entrance
    display:
      attr: portal_in
      char: "o"
    description:
      - Portal entrance
    properties: [known]
  - name: telepad exit
    display:
      attr: portal_out
      char: "o"
    description:
      - Portal exit
    properties: [known]
robots:
  - name: base
    dir: east
    loc:
      subworld: root
      loc: [0, 0]
    devices:
      - ADT calculator
      - branch predictor
      - comparator
      - compass
      - dictionary
      - GPS receiver
      - grabber
      - lambda
      - lodestone
      - logger
      - strange loop
      - treads
solution: |
  def doN = \n. \f. if (n > 0) {f; doN (n - 1) f} {}; end;

  doN 4 (
    doN 4 move;
    turn right;
    doN 4 move;
  );

  doN 2 move;
  turn right;
  doN 2 move;

  grab;
known: [flower]
structures:
  - name: minibox
    structure:
      palette:
        '.': [stone]
        'd': [dirt]
        'p':
          cell: [grass, telepad exit]
          waypoint:
            name: portal_out
        'P':
          cell: [grass, telepad entrance]
          waypoint:
            name: portal_in
      map: |
        p....
        .ddd.
        .d.d.
        .ddd.
        ....P
  - name: flowers
    structure:
      mask: '.'
      palette:
        'f': [stone, flower]
      map: |
        f.f
        .f.
        f.f
subworlds:
  - name: floor1
    default: [blank]
    palette:
      '.': [dirt]
    placements:
      - src: minibox
        offset: [0, 0]
        orient:
          up: west
      - src: flowers
        offset: [1, 1]
    portals:
      - entrance: portal_in
        exitInfo:
          exit: portal_out
          subworldName: floor2
        reorient: back
    upperleft: [0, 0]
    map: |
      .....
      .....
      .....
      .....
      .....
  - name: floor2
    default: [blank]
    palette:
      '.': [dirt]
    placements:
      - src: minibox
        offset: [0, 0]
        orient:
          up: south
      - src: flowers
        offset: [1, 0]
    portals:
      - entrance: portal_in
        exitInfo:
          exit: portal_out
          subworldName: floor3
        reorient: back
    upperleft: [0, 0]
    map: |
      .....
      .....
      .....
      .....
      .....
  - name: floor3
    default: [blank]
    palette:
      '.': [dirt]
    placements:
      - src: minibox
        offset: [0, 0]
        orient:
          up: east
      - src: flowers
        offset: [1, -2]
    portals:
      - entrance: portal_in
        exitInfo:
          exit: portal_out
          subworldName: root
        reorient: back
    upperleft: [0, 0]
    map: |
      .....
      .....
      .....
      .....
      .....
world:
  name: root
  palette:
    '.': [grass]
  upperleft: [0, 0]
  placements:
    - src: minibox
      offset: [0, 0]
    - src: flowers
      offset: [0, -2]
  portals:
    - entrance: portal_in
      exitInfo:
        exit: portal_out
        subworldName: floor1
      reorient: back
  map: |
    .....
    .....
    .....
    .....
    .....