as VaVoom C built-in array sort is using TimSort now, comparator callbacks should...
[k8vacspelynky.git] / roomTutorial.vc
blob1e800269205d3c7615186f70257dfeb3b04854e2
1 /**********************************************************************************
2  * Copyright (c) 2008, 2009 Derek Yu and Mossmouth, LLC
3  * Copyright (c) 2010, Moloch
4  * Copyright (c) 2018, Ketmar Dark
5  *
6  * This file is part of Spelunky.
7  *
8  * You can redistribute and/or modify Spelunky, including its source code, under
9  * the terms of the Spelunky User License.
10  *
11  * Spelunky is distributed in the hope that it will be entertaining and useful,
12  * but WITHOUT WARRANTY.  Please see the Spelunky User License for more details.
13  *
14  * The Spelunky User License should be available in "Game Information", which
15  * can be found in the Resource Explorer, or as an external file called COPYING.
16  * If not, please obtain a new copy of Spelunky from <http://spelunkyworld.com/>
17  *
18  **********************************************************************************/
19 final MapTile MakeSignTile (int tileX, int tileY, string message) {
20   return MakeSignTileAtPix(tileX*16, tileY*16, message);
24 MapTile MakeSignTileAtPix (int px, int py, string message) {
25   auto tile = TileMessageSign(MakeMapTileAtPix(px, py, 'oMsgSign'));
26   if (tile) tile.message = message;
27   return tile;
31 void createTutorialRoom () {
32   clearForTransition();
33   global.darkLevel = false;
34   levBGImgName = 'bgCave';
36   //MakeMapTile(1, 1, 'oGame');
37   //MakeMapTile(3, 1, 'oLevel');
39   setRoomBounds(0, 0, 656, 288);
41   MakeMapTile(0, 0, 'oHardBlock');
42   MakeMapTile(1, 0, 'oHardBlock');
43   MakeMapTile(2, 0, 'oHardBlock');
44   MakeMapTile(3, 0, 'oHardBlock');
45   MakeMapTile(4, 0, 'oHardBlock');
46   MakeMapTile(5, 0, 'oHardBlock');
47   MakeMapTile(6, 0, 'oHardBlock');
48   MakeMapTile(7, 0, 'oHardBlock');
49   MakeMapTile(8, 0, 'oHardBlock');
50   MakeMapTile(9, 0, 'oHardBlock');
51   MakeMapTile(10, 0, 'oHardBlock');
52   MakeMapTile(11, 0, 'oHardBlock');
53   MakeMapTile(12, 0, 'oHardBlock');
54   MakeMapTile(13, 0, 'oHardBlock');
55   MakeMapTile(14, 0, 'oHardBlock');
56   MakeMapTile(15, 0, 'oHardBlock');
57   MakeMapTile(16, 0, 'oHardBlock');
58   MakeMapTile(17, 0, 'oHardBlock');
59   MakeMapTile(18, 0, 'oHardBlock');
60   MakeMapTile(19, 0, 'oHardBlock');
61   MakeMapTile(20, 0, 'oHardBlock');
62   MakeMapTile(21, 0, 'oHardBlock');
63   MakeMapTile(22, 0, 'oHardBlock');
64   MakeMapTile(23, 0, 'oHardBlock');
65   MakeMapTile(24, 0, 'oHardBlock');
66   MakeMapTile(25, 0, 'oHardBlock');
67   MakeMapTile(26, 0, 'oHardBlock');
68   MakeMapTile(27, 0, 'oHardBlock');
69   MakeMapTile(28, 0, 'oHardBlock');
70   MakeMapTile(29, 0, 'oHardBlock');
71   MakeMapTile(30, 0, 'oHardBlock');
72   MakeMapTile(31, 0, 'oHardBlock');
73   MakeMapTile(32, 0, 'oHardBlock');
74   MakeMapTile(33, 0, 'oHardBlock');
75   MakeMapTile(34, 0, 'oHardBlock');
76   MakeMapTile(35, 0, 'oHardBlock');
77   MakeMapTile(36, 0, 'oHardBlock');
78   MakeMapTile(37, 0, 'oHardBlock');
79   MakeMapTile(38, 0, 'oHardBlock');
80   MakeMapTile(39, 0, 'oHardBlock');
81   MakeMapTile(40, 0, 'oHardBlock');
82   MakeMapTile(41, 0, 'oHardBlock');
83   MakeMapTile(0, 1, 'oHardBlock');
84   MakeMapTile(41, 1, 'oHardBlock');
85   MakeMapTile(0, 2, 'oHardBlock');
86   MakeSignTile(32, 2, "HOLD $UP AND PRESS $ATTACK TO OPEN CHESTS.");
87   MakeMapTile(40, 2, 'oLadderOrange');
88   MakeMapTile(41, 2, 'oHardBlock');
89   auto chest = ItemChest(MakeMapObject(504, 40, 'oChest'));
90   if (chest) chest.createSmallGemsContents();
91   MakeMapObject(536, 44, 'oRubyBig');
92   MakeMapObject(552, 44, 'oSapphireBig');
93   MakeMapObject(568, 44, 'oEmeraldBig');
94   MakeMapTile(0, 3, 'oHardBlock');
95   MakeMapTile(31, 3, 'oBrick');
96   MakeMapTile(32, 3, 'oBrick');
97   MakeMapTile(33, 3, 'oBrick');
98   MakeMapTile(34, 3, 'oBrick');
99   MakeMapTile(35, 3, 'oBrick');
100   MakeMapTile(36, 3, 'oBrick');
101   MakeMapTile(37, 3, 'oBrick');
102   MakeMapTile(38, 3, 'oBrick');
103   MakeMapTile(39, 3, 'oBrick');
104   MakeMapTile(40, 3, 'oLadderTop');
105   MakeMapTile(41, 3, 'oHardBlock');
106   MakeMapTile(0, 4, 'oHardBlock');
107   MakeMapTile(1, 4, 'oEntrance'); //MakeMapTile(1, 4, 'oXTitle');
108   MakeSignTile(2, 4, "WELCOME TO THE TUTORIAL CAVE!\nTHIS MIGHT BE YOUR FIRST TIME PLAYING.");
109   MakeSignTile(15, 4, "YOU CAN ATTACK WITH YOUR WHIP\nBY PRESSING $ATTACK BUTTON.");
110   MakeMapObject(22*16, 4*16, 'oSnake');
111   MakeMapTile(40, 4, 'oLadderOrange');
112   MakeMapTile(41, 4, 'oHardBlock');
113   MakeMapTile(0, 5, 'oHardBlock');
114   MakeMapTile(1, 5, 'oBrick');
115   MakeMapTile(2, 5, 'oBrick');
116   MakeMapTile(14, 5, 'oBrick');
117   MakeMapTile(15, 5, 'oBrick');
118   MakeMapTile(16, 5, 'oBrick');
119   MakeMapTile(17, 5, 'oBrick');
120   MakeMapTile(18, 5, 'oBrick');
121   MakeMapTile(19, 5, 'oBrick');
122   MakeMapTile(20, 5, 'oBrick');
123   MakeMapTile(21, 5, 'oBrick');
124   MakeMapTile(22, 5, 'oBrick');
125   MakeMapTile(40, 5, 'oLadderOrange');
126   MakeMapTile(41, 5, 'oHardBlock');
127   MakeMapTile(0, 6, 'oBrick');
128   MakeMapTile(1, 6, 'oBrick');
129   MakeMapTile(2, 6, 'oBrick');
130   MakeSignTile(5, 6, "YOU CAN JUMP WITH $JUMP BUTTON.");
131   MakeMapTile(8, 6, 'oBrick');
132   MakeSignTile(11, 6, "YOU CAN HANG ON LEDGES, TOO!");
133   MakeMapTile(14, 6, 'oBrick');
134   MakeMapTile(15, 6, 'oBrick');
135   MakeMapTile(16, 6, 'oBrick');
136   MakeMapTile(17, 6, 'oBrick');
137   MakeMapTile(18, 6, 'oBrick');
138   MakeMapTile(19, 6, 'oBrick');
139   MakeMapTile(20, 6, 'oBrick');
140   MakeMapTile(21, 6, 'oBrick');
141   MakeMapTile(22, 6, 'oBrick');
142   MakeSignTile(24, 6, "COLLECT THE TREASURE!");
143   MakeSignTile(40, 6, "HOLD $UP TO CLIMB THE LADDER.");
144   MakeMapTile(41, 6, 'oHardBlock');
145   MakeMapObject(512, 104, 'oGoldBars');
146   MakeMapObject(416, 108, 'oGoldBar');
147   MakeMapObject(432, 108, 'oGoldBar');
148   MakeMapObject(448, 108, 'oGoldBar');
149   MakeMapObject(464, 108, 'oGoldBar');
150   MakeMapObject(480, 108, 'oGoldBar');
151   MakeMapObject(496, 108, 'oGoldBar');
152   MakeMapTile(0, 7, 'oBrick');
153   MakeMapTile(1, 7, 'oBrick');
154   MakeMapTile(2, 7, 'oBrick');
155   MakeMapTile(3, 7, 'oBrick');
156   MakeMapTile(4, 7, 'oBrick');
157   MakeMapTile(5, 7, 'oBrick');
158   MakeMapTile(6, 7, 'oBrick');
159   MakeMapTile(7, 7, 'oBrick');
160   MakeMapTile(8, 7, 'oBrick');
161   MakeMapTile(9, 7, 'oBrick');
162   MakeMapTile(10, 7, 'oBrick');
163   MakeMapTile(11, 7, 'oBrick');
164   MakeMapTile(12, 7, 'oBrick');
165   MakeMapTile(13, 7, 'oBrick');
166   MakeMapTile(14, 7, 'oBrick');
167   MakeMapTile(15, 7, 'oBrick');
168   MakeMapTile(16, 7, 'oBrick');
169   MakeMapTile(17, 7, 'oBrick');
170   MakeMapTile(18, 7, 'oBrick');
171   MakeMapTile(19, 7, 'oBrick');
172   MakeMapTile(20, 7, 'oBrick');
173   MakeMapTile(21, 7, 'oBrick');
174   MakeMapTile(22, 7, 'oBrick');
175   MakeMapTile(23, 7, 'oBrick');
176   MakeMapTile(24, 7, 'oBrick');
177   MakeMapTile(25, 7, 'oBrick');
178   MakeMapTile(26, 7, 'oBrick');
179   MakeMapTile(27, 7, 'oBrick');
180   MakeMapTile(28, 7, 'oBrick');
181   MakeMapTile(29, 7, 'oBrick');
182   MakeMapTile(30, 7, 'oBrick');
183   MakeMapTile(31, 7, 'oBrick');
184   MakeMapTile(32, 7, 'oBrick');
185   MakeMapTile(33, 7, 'oBrick');
186   MakeSignTile(34, 7, "HOLD $DOWN TO DUCK AND CRAWL.");
187   MakeMapTile(38, 7, 'oBrick');
188   MakeMapTile(39, 7, 'oBrick');
189   MakeMapTile(40, 7, 'oBrick');
190   MakeMapTile(41, 7, 'oHardBlock');
191   MakeMapTile(0, 8, 'oHardBlock');
192   MakeMapTile(1, 8, 'oBrick');
193   MakeMapTile(2, 8, 'oBrick');
194   MakeMapTile(3, 8, 'oBrick');
195   MakeMapTile(4, 8, 'oBrick');
196   MakeMapTile(5, 8, 'oBrick');
197   MakeMapTile(6, 8, 'oBrick');
198   MakeMapTile(7, 8, 'oBrick');
199   MakeMapTile(8, 8, 'oBrick');
200   MakeMapTile(9, 8, 'oBrick');
201   MakeMapTile(10, 8, 'oBrick');
202   MakeMapTile(11, 8, 'oBrick');
203   MakeMapTile(12, 8, 'oBrick');
204   MakeMapTile(13, 8, 'oBrick');
205   MakeMapTile(14, 8, 'oBrick');
206   MakeMapTile(15, 8, 'oBrick');
207   MakeMapTile(16, 8, 'oBrick');
208   MakeMapTile(17, 8, 'oBrick');
209   MakeMapTile(18, 8, 'oBrick');
210   MakeMapTile(19, 8, 'oBrick');
211   MakeMapTile(20, 8, 'oBrick');
212   MakeMapTile(21, 8, 'oBrick');
213   MakeMapTile(22, 8, 'oBrick');
214   MakeMapTile(23, 8, 'oBrick');
215   MakeMapTile(24, 8, 'oBrick');
216   MakeMapTile(25, 8, 'oBrick');
217   MakeMapTile(26, 8, 'oBrick');
218   MakeMapTile(27, 8, 'oBrick');
219   MakeMapTile(28, 8, 'oBrick');
220   MakeMapTile(29, 8, 'oBrick');
221   MakeMapTile(30, 8, 'oBrick');
222   MakeMapTile(31, 8, 'oBrick');
223   MakeMapTile(32, 8, 'oBrick');
224   MakeMapTile(33, 8, 'oBrick');
225   MakeMapTile(34, 8, 'oBrick');
226   MakeMapTile(35, 8, 'oBrick');
227   MakeSignTile(36, 8, "CRAWL OVER THE EDGE TO DO A FLIP HANG.\nFALLING TOO FAR CAN REALLY HURT!");
228   MakeMapTile(40, 8, 'oBrick');
229   MakeMapTile(41, 8, 'oHardBlock');
230   MakeMapTile(0, 9, 'oHardBlock');
231   MakeMapTile(1, 9, 'oBrick');
232   MakeMapTile(2, 9, 'oBrick');
233   MakeMapTile(3, 9, 'oBrick');
234   MakeMapTile(4, 9, 'oBrick');
235   MakeMapTile(5, 9, 'oBrick');
236   MakeMapTile(6, 9, 'oBrick');
237   MakeMapTile(7, 9, 'oBrick');
238   MakeMapTile(8, 9, 'oBrick');
239   MakeMapTile(9, 9, 'oBrick');
240   MakeMapTile(10, 9, 'oBrick');
241   MakeMapTile(11, 9, 'oBrick');
242   MakeMapTile(12, 9, 'oBrick');
243   MakeMapTile(13, 9, 'oBrick');
244   MakeMapTile(14, 9, 'oBrick');
245   MakeMapTile(15, 9, 'oBrick');
246   MakeMapTile(16, 9, 'oBrick');
247   MakeMapTile(17, 9, 'oBrick');
248   MakeMapTile(18, 9, 'oBrick');
249   MakeMapTile(19, 9, 'oBrick');
250   MakeMapTile(20, 9, 'oBrick');
251   MakeMapTile(21, 9, 'oBrick');
252   MakeMapTile(22, 9, 'oBrick');
253   MakeMapTile(23, 9, 'oBrick');
254   MakeMapTile(24, 9, 'oBrick');
255   MakeMapTile(25, 9, 'oBrick');
256   MakeMapTile(26, 9, 'oBrick');
257   MakeMapTile(27, 9, 'oBrick');
258   MakeMapTile(28, 9, 'oBrick');
259   MakeMapTile(29, 9, 'oBrick');
260   MakeMapTile(30, 9, 'oBrick');
261   MakeMapTile(31, 9, 'oBrick');
262   MakeMapTile(32, 9, 'oBrick');
263   MakeMapTile(33, 9, 'oBrick');
264   MakeMapTile(34, 9, 'oBrick');
265   MakeMapTile(35, 9, 'oBrick');
266   MakeMapTile(36, 9, 'oBrick');
267   MakeMapTile(37, 9, 'oBrick');
268   MakeMapTile(40, 9, 'oBrick');
269   MakeMapTile(41, 9, 'oHardBlock');
270   MakeMapTile(0, 10, 'oHardBlock');
271   MakeMapTile(1, 10, 'oBrick');
272   MakeMapTile(2, 10, 'oBrick');
273   MakeMapTile(3, 10, 'oBrick');
274   MakeMapTile(12, 10, 'oBrick');
275   MakeMapTile(25, 10, 'oBrick');
276   MakeMapTile(26, 10, 'oBrick');
277   MakeMapTile(27, 10, 'oBrick');
278   MakeMapTile(28, 10, 'oBrick');
279   MakeMapTile(29, 10, 'oBrick');
280   MakeMapTile(30, 10, 'oBrick');
281   MakeMapTile(31, 10, 'oBrick');
282   MakeMapTile(41, 10, 'oHardBlock');
283   MakeMapTile(0, 11, 'oHardBlock');
284   MakeMapTile(1, 11, 'oBrick');
285   MakeMapTile(2, 11, 'oBrick');
286   MakeMapTile(12, 11, 'oBrick');
287   MakeSignTile(27, 11, "CROUCH AND PRESS $ROPE\nTO THROW A ROPE DOWN A LEDGE.");
288   MakeMapObject(30*16, 11*16, 'oBat');
289   MakeMapTile(41, 11, 'oHardBlock');
290   MakeMapTile(0, 12, 'oHardBlock');
291   MakeMapTile(1, 12, 'oBrick');
292   MakeMapTile(12, 12, 'oBrick');
293   MakeMapTile(26, 12, 'oBrick');
294   MakeMapTile(27, 12, 'oBrick');
295   MakeMapTile(28, 12, 'oBrick');
296   MakeMapTile(29, 12, 'oBrick');
297   MakeMapTile(41, 12, 'oHardBlock');
298   MakeMapTile(0, 13, 'oHardBlock');
299   MakeMapTile(12, 13, 'oBrick');
300   MakeSignTile(14, 13, "PRESS $SWITCH TO SELECT BOMBS AND\nPRESS $ATTACK TO USE IT.");
301   MakeSignTile(16, 13, "OPEN THIS CRATE FOR A BAG OF BOMBS.");
302   MakeSignTile(24, 13, "TO RUN, HOLD DOWN $RUN BUTTON.");
303   MakeMapTile(26, 13, 'oBrick');
304   MakeMapTile(27, 13, 'oBrick');
305   MakeMapTile(28, 13, 'oBrick');
306   MakeMapTile(29, 13, 'oBrick');
307   MakeMapTile(41, 13, 'oHardBlock');
308   auto crt = ItemCrate(MakeMapObject(216, 216, 'oCrate'));
309   // ensure that is contains a bomb bag
310   if (crt) crt.createBombBagContents();
311   MakeMapTile(0, 14, 'oHardBlock');
312   MakeMapTile(12, 14, 'oBrick');
313   MakeMapTile(13, 14, 'oBrick');
314   MakeMapTile(14, 14, 'oBrick');
315   MakeMapTile(15, 14, 'oBrick');
316   MakeMapTile(16, 14, 'oBrick');
317   MakeMapTile(21, 14, 'oBrick');
318   MakeMapTile(22, 14, 'oBrick');
319   MakeMapTile(23, 14, 'oBrick');
320   MakeMapTile(24, 14, 'oBrick');
321   MakeMapTile(26, 14, 'oBrick');
322   MakeMapTile(27, 14, 'oBrick');
323   MakeMapTile(28, 14, 'oBrick');
324   MakeMapTile(29, 14, 'oBrick');
325   MakeMapTile(41, 14, 'oHardBlock');
326   MakeMapTile(0, 15, 'oHardBlock');
327   MakeMapTile(3, 15, 'oExit');
328   MakeMapTile(11, 15, 'oBrick');
329   MakeMapTile(12, 15, 'oBrick');
330   MakeMapTile(13, 15, 'oBrick');
331   MakeMapTile(14, 15, 'oBrick');
332   MakeMapTile(15, 15, 'oBrick');
333   MakeMapTile(16, 15, 'oBrick');
334   MakeMapTile(26, 15, 'oBrick');
335   MakeMapTile(27, 15, 'oBrick');
336   MakeMapTile(28, 15, 'oBrick');
337   MakeMapTile(29, 15, 'oBrick');
338   MakeMapTile(41, 15, 'oHardBlock');
339   MakeMapTile(0, 16, 'oHardBlock');
340   MakeMapTile(2, 16, 'oBrick');
341   MakeMapTile(3, 16, 'oHardBlock');
342   MakeMapTile(4, 16, 'oBrick');
343   MakeSignTile(6, 16, "THERE'S LOTS MORE AHEAD!\nUSE YOUR WITS AND BEWARE OF TRAPS!");
344   MakeMapTile(10, 16, 'oBrick');
345   MakeMapTile(11, 16, 'oBrick');
346   MakeMapTile(12, 16, 'oBrick');
347   MakeMapTile(13, 16, 'oBrick');
348   MakeMapTile(14, 16, 'oBrick');
349   MakeMapTile(15, 16, 'oBrick');
350   MakeMapTile(16, 16, 'oBrick');
351   MakeMapTile(25, 16, 'oBrick');
352   MakeMapTile(26, 16, 'oBrick');
353   MakeMapTile(27, 16, 'oBrick');
354   MakeMapTile(28, 16, 'oBrick');
355   MakeMapTile(29, 16, 'oBrick');
356   MakeSignTile(31, 16, "PRESS $SWITCH TO SELECT YOUR ROPE AND\n$ATTACK TO USE IT.");
357   MakeSignTile(36, 16, "PRESS $ATTACK TO THROW OR USE ITEMS.\nHOLD $UP TO THROW HIGH AND $DOWN TO DROP.");
358   MakeSignTile(38, 16, "DUCK AND PRESS $ATTACK$ TO PICK UP ITEMS.");
359   MakeMapTile(41, 16, 'oHardBlock');
360   MakeMapObject(648, 264, 'oRock');
361   MakeMapTile(0, 17, 'oHardBlock');
362   MakeMapTile(1, 17, 'oBrick');
363   MakeMapTile(2, 17, 'oBrick');
364   MakeMapTile(3, 17, 'oBrick');
365   MakeMapTile(4, 17, 'oBrick');
366   MakeMapTile(5, 17, 'oBrick');
367   MakeMapTile(6, 17, 'oBrick');
368   MakeMapTile(7, 17, 'oBrick');
369   MakeMapTile(8, 17, 'oBrick');
370   MakeMapTile(9, 17, 'oBrick');
371   MakeMapTile(10, 17, 'oBrick');
372   MakeMapTile(11, 17, 'oBrick');
373   MakeMapTile(12, 17, 'oBrick');
374   MakeMapTile(13, 17, 'oBrick');
375   MakeMapTile(14, 17, 'oBrick');
376   MakeMapTile(15, 17, 'oBrick');
377   MakeMapTile(16, 17, 'oBrick');
378   MakeMapTile(17, 17, 'oBrick');
379   MakeMapTile(18, 17, 'oBrick');
380   MakeMapTile(19, 17, 'oBrick');
381   MakeMapTile(20, 17, 'oBrick');
382   MakeMapTile(21, 17, 'oBrick');
383   MakeMapTile(22, 17, 'oBrick');
384   MakeMapTile(23, 17, 'oBrick');
385   MakeMapTile(24, 17, 'oBrick');
386   MakeMapTile(25, 17, 'oBrick');
387   MakeMapTile(26, 17, 'oBrick');
388   MakeMapTile(27, 17, 'oBrick');
389   MakeMapTile(28, 17, 'oBrick');
390   MakeMapTile(29, 17, 'oBrick');
391   MakeMapTile(30, 17, 'oBrick');
392   MakeMapTile(31, 17, 'oBrick');
393   MakeMapTile(32, 17, 'oBrick');
394   MakeMapTile(33, 17, 'oBrick');
395   MakeMapTile(34, 17, 'oBrick');
396   MakeMapTile(35, 17, 'oBrick');
397   MakeMapTile(36, 17, 'oBrick');
398   MakeMapTile(37, 17, 'oBrick');
399   MakeMapTile(38, 17, 'oBrick');
400   MakeMapTile(39, 17, 'oBrick');
401   MakeMapTile(40, 17, 'oBrick');
402   MakeMapTile(41, 17, 'oHardBlock');
403   MakeMapTile(0, 18, 'oHardBlock');
404   MakeMapTile(1, 18, 'oHardBlock');
405   MakeMapTile(2, 18, 'oHardBlock');
406   MakeMapTile(3, 18, 'oHardBlock');
407   MakeMapTile(4, 18, 'oHardBlock');
408   MakeMapTile(5, 18, 'oHardBlock');
409   MakeMapTile(6, 18, 'oHardBlock');
410   MakeMapTile(7, 18, 'oHardBlock');
411   MakeMapTile(8, 18, 'oHardBlock');
412   MakeMapTile(9, 18, 'oHardBlock');
413   MakeMapTile(10, 18, 'oHardBlock');
414   MakeMapTile(11, 18, 'oHardBlock');
415   MakeMapTile(12, 18, 'oHardBlock');
416   MakeMapTile(13, 18, 'oHardBlock');
417   MakeMapTile(14, 18, 'oHardBlock');
418   MakeMapTile(15, 18, 'oHardBlock');
419   MakeMapTile(16, 18, 'oHardBlock');
420   MakeMapTile(17, 18, 'oHardBlock');
421   MakeMapTile(18, 18, 'oHardBlock');
422   MakeMapTile(19, 18, 'oHardBlock');
423   MakeMapTile(20, 18, 'oHardBlock');
424   MakeMapTile(21, 18, 'oHardBlock');
425   MakeMapTile(22, 18, 'oHardBlock');
426   MakeMapTile(23, 18, 'oHardBlock');
427   MakeMapTile(24, 18, 'oHardBlock');
428   MakeMapTile(25, 18, 'oHardBlock');
429   MakeMapTile(26, 18, 'oHardBlock');
430   MakeMapTile(27, 18, 'oHardBlock');
431   MakeMapTile(28, 18, 'oHardBlock');
432   MakeMapTile(29, 18, 'oHardBlock');
433   MakeMapTile(30, 18, 'oHardBlock');
434   MakeMapTile(31, 18, 'oHardBlock');
435   MakeMapTile(32, 18, 'oHardBlock');
436   MakeMapTile(33, 18, 'oHardBlock');
437   MakeMapTile(34, 18, 'oHardBlock');
438   MakeMapTile(35, 18, 'oHardBlock');
439   MakeMapTile(36, 18, 'oHardBlock');
440   MakeMapTile(37, 18, 'oHardBlock');
441   MakeMapTile(38, 18, 'oHardBlock');
442   MakeMapTile(39, 18, 'oHardBlock');
443   MakeMapTile(40, 18, 'oHardBlock');
444   MakeMapTile(41, 18, 'oHardBlock');
446   //MakeMapTileAtPix(24, 72, 'oPlayer1');
447   spawnPlayerAt(1*16+8, 4*16+8);
448   player.dir = MapEntity::Dir.Right;