File size: 3,401 Bytes
87b3b3a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# threeKeys.js

## Key-Eater
Oh, a robot "eats" the keys. It first grabs the red key and suicides, re-spawning in the second cell. When the last key gets eaten, teleporters are placed.

```javascript
// You might find this useful.
    map.placeObject(8, 6, 'phone');

    // ----- PHASE ONE -- A robot gets the keys and self-destructs. ----- \\

    // The anti-robot device.
    map.defineObject('anti-robot', {
        symbol: 'q',
        color: '#9f3',
        type: 'dynamic',
        projectile: true,
        interval: 200,
        behavior: function(me) { me.move('down'); }
    });

    // The robot.

    map.defineObject("robot", {
        symbol: "R",
        color: "#897",
        type: "dynamic",
        interval: 300,
        //projectile: true,
        behavior: function(me) {
            me.t = me.t || 1;
            me.move('down');
            me.t++;
            if (me.t === 9) {
                // self-destruct
                map.placeObject(me.getX(), me.getY()-2, 'anti-robot');
            }
        },
        onDestroy: function(me) {
        // ---- PHASE TWO -- Oh, place keys. ---- \\
            if (me.getY() < 24)
                map.placeObject(me.getX(), me.getY()+2, 'robot');
            else {
                map.placeObject(8, 9, 'computer');
                map.placeObject(8, 12, 'redKey');
                map.placeObject(8, 15, 'greenKey');
                map.placeObject(8, 18, 'blueKey');
                // because I feel like it
                map.placeObject(8, 21, 'yellowKey');
            }
        }
    });

    // ----- PHASE THREE -- The player places teleports. ----- \\
    map.getPlayer().setPhoneCallback(function() {
        if (map.countObjects('robot') > 0) {
            map.writeStatus("Wait! There are still dynamic objects.");
        } else {
            map.placeObject(8, 15, 'teleporter');
            map.placeObject(42, 15, 'teleporter');
            var d = map.getDynamicObjects();
            d[0].setTarget(d[1]);
        }
    });


    // Gets the reaction going.
    map.placeObject(24, 1, 'robot');
```
##Teleport
1. Place teleporter (q)
2. enter room
3. Get Key
4. Leave room
5. Remove teleporter (q)
6. Repeat. 
```javascript
    map.defineObject('killBox',{
    'type':'dynamic',
    'symbol':'X',
    'interval':100,
    'behavior':function(me){me.move('up')},
    'projectile': true
    });
    var teleport1X = 0;
    var teleport1Y = 0;
    var teleport2X = [20,20,20,40];
    var teleport2Y = [0,10,20,20];
    var teleport1;
    var teleport2;
    var i_ = 0;
    map.placeObject(8, 6, 'phone');
    map.placeObject(teleport1X, teleport1Y, 'teleporter');
    map.getPlayer().setPhoneCallback(function(){
      if((i_ % 2) == 1){
      	map.placeObject(teleport2.getX(),(teleport2.getY() + 1),'killBox');
      }else{
        map.placeObject(teleport2X[i_/2], teleport2Y[i_/2], 'teleporter');
        var dynamicObjects = map.getDynamicObjects();
        for (i = 0; i < dynamicObjects.length; i++) {
            var t = dynamicObjects[i];
            if ((t.getX() == teleport1X) && (t.getY() == teleport1Y)) {
              teleport1 = t;
            }
            if ((t.getX() == teleport2X[i_/2])&&(t.getY() == teleport2Y[i_/2])){
              teleport2 = t;
            }
        }
        teleport1.setTarget(teleport2);
        teleport2.setTarget(teleport1);
      }
      i_=i_+1;
    });
```