1 /**********************************************************************************
2 * Copyright (c) 2008, 2009 Derek Yu and Mossmouth, LLC
3 * Copyright (c) 2010, Moloch
4 * Copyright (c) 2018, Ketmar Dark
6 * This file is part of Spelunky.
8 * You can redistribute and/or modify Spelunky, including its source code, under
9 * the terms of the Spelunky User License.
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.
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/>
18 **********************************************************************************/
19 int winCutSceneTimer = -1;
20 int winVolcanoTimer = -1;
21 int winCutScenePhase = 0;
22 int winSceneDrawStatus = 0;
23 int winMoneyCount = 0;
25 bool winFadeOut = false;
27 int winCutsceneSkip = 0; // 1: waiting for pay release; 2: pay released, do skip
28 bool winCutsceneSwitchToNext = false;
31 void startWinCutscene () {
32 global.hasParachute = false;
34 winCutsceneSwitchToNext = false;
36 isKeyPressed(GameConfig::Key.Pay);
37 isKeyReleased(GameConfig::Key.Pay);
39 auto olddel = GC_ImmediateDelete;
40 GC_ImmediateDelete = false;
45 addBackgroundGfxDetails();
47 levBGImgName = 'bgCave';
48 levBGImg = (levBGImgName ? bgtileStore[levBGImgName] : none);
50 blockWaterChecking = true;
54 GC_ImmediateDelete = olddel;
55 GC_CollectGarbage(true); // destroy delayed objects too
57 if (dumpGridStats) objGrid.dumpStats();
59 playerExited = false; // just in case
60 playerExitDoor = none;
62 osdClear(clearTalk:true);
68 winCutSceneTimer = -1;
72 if (global.config.gameMode != GameConfig::GameMode.Vanilla) {
73 if (global.config.bizarre) {
75 global.config.bizarrePlusTitle = true;
78 array!MapTile toReplace;
79 forEachTile(delegate bool (MapTile t) {
80 if (t.objType == 'oGTemple' ||
81 t.objType == 'oIce' ||
82 t.objType == 'oDark' ||
83 t.objType == 'oBrick' ||
91 foreach (MapTile t; miscTileGrid.allObjects()) {
92 if (t.objType == 'oGTemple' ||
93 t.objType == 'oIce' ||
94 t.objType == 'oDark' ||
95 t.objType == 'oBrick' ||
102 foreach (MapTile t; toReplace) {
105 if (rand(1,120) == 1) instance_change(oGTemple, false);
106 else if (rand(1,100) == 1) instance_change(oIce, false);
107 else if (rand(1,90) == 1) instance_change(oDark, false);
108 else if (rand(1,80) == 1) instance_change(oBrick, false);
109 else if (rand(1,70) == 1) instance_change(oLush, false);
117 if (rand(1,5) == 1) instance_change(oLush, false);
122 //!instance_create(0, 0, oBricks);
124 //shakeToggle = false;
125 //oPDummy.status = 2;
130 if (global.kaliPunish >= 2) {
131 instance_create(oPDummy.x, oPDummy.y+2, oBall2);
132 obj = instance_create(oPDummy.x, oPDummy.y, oChain2);
134 obj = instance_create(oPDummy.x, oPDummy.y, oChain2);
136 obj = instance_create(oPDummy.x, oPDummy.y, oChain2);
138 obj = instance_create(oPDummy.x, oPDummy.y, oChain2);
145 void startWinCutsceneVolcano () {
146 global.hasParachute = false;
148 writeln("VOLCANO HOLD 0: ", (player.holdItem ? GetClassName(player.holdItem.Class) : ''));
149 writeln("VOLCANO PICK 0: ", (player.pickedItem ? GetClassName(player.pickedItem.Class) : ''));
153 winCutsceneSwitchToNext = false;
154 auto olddel = GC_ImmediateDelete;
155 GC_ImmediateDelete = false;
159 levBGImg = (levBGImgName ? bgtileStore[levBGImgName] : none);
161 blockWaterChecking = true;
163 GC_ImmediateDelete = olddel;
164 GC_CollectGarbage(true); // destroy delayed objects too
166 spawnPlayerAt(2*16+8, 11*16+8);
167 player.dir = MapEntity::Dir.Right;
169 playerExited = false; // just in case
170 playerExitDoor = none;
172 osdClear(clearTalk:true);
178 winCutSceneTimer = -1;
179 winCutScenePhase = 0;
181 MakeMapTile(0, 0, 'oEnd2BG');
193 player.active = true;
194 player.visible = false;
195 player.removeBallAndChain(temp:true);
196 player.stunned = false;
197 player.status = MapObject::STATE_FALLING;
198 if (player.holdItem) player.holdItem.visible = false;
203 writeln("VOLCANO HOLD 1: ", (player.holdItem ? GetClassName(player.holdItem.Class) : ''));
204 writeln("VOLCANO PICK 1: ", (player.pickedItem ? GetClassName(player.pickedItem.Class) : ''));
209 void startWinCutsceneWinFall () {
210 global.hasParachute = false;
212 writeln("FALL HOLD 0: ", (player.holdItem ? GetClassName(player.holdItem.Class) : ''));
213 writeln("FALL PICK 0: ", (player.pickedItem ? GetClassName(player.pickedItem.Class) : ''));
217 winCutsceneSwitchToNext = false;
219 auto olddel = GC_ImmediateDelete;
220 GC_ImmediateDelete = false;
224 setMenuTilesVisible(false);
226 //addBackgroundGfxDetails();
229 levBGImg = (levBGImgName ? bgtileStore[levBGImgName] : none);
231 blockWaterChecking = true;
235 GC_ImmediateDelete = olddel;
236 GC_CollectGarbage(true); // destroy delayed objects too
238 if (dumpGridStats) objGrid.dumpStats();
240 playerExited = false; // just in case
241 playerExitDoor = none;
243 osdClear(clearTalk:true);
249 winCutSceneTimer = -1;
250 winCutScenePhase = 0;
253 player.active = true;
254 player.visible = false;
255 player.removeBallAndChain(temp:true);
256 player.stunned = false;
257 player.status = MapObject::STATE_FALLING;
258 if (player.holdItem) player.holdItem.visible = false;
262 winSceneDrawStatus = 0;
269 writeln("FALL HOLD 1: ", (player.holdItem ? GetClassName(player.holdItem.Class) : ''));
270 writeln("FALL PICK 1: ", (player.pickedItem ? GetClassName(player.pickedItem.Class) : ''));
275 void setGameOver () {
277 player.visible = false;
278 player.removeBallAndChain(temp:true);
279 if (player.holdItem) player.holdItem.visible = false;
282 if (inWinCutscene > 0) {
285 winSceneDrawStatus = 8;
290 MapTile findEndPlatTile () {
291 return forEachTile(delegate bool (MapTile t) { return (t isa MapTileEndPlat); }, castClass:MapTileEndPlat);
295 MapObject findBigTreasure () {
296 return forEachObject(delegate bool (MapObject o) { return (o isa MapObjectBigTreasure); }, castClass:MapObjectBigTreasure);
300 void winCutscenePlayerControl (PlayerPawn plr) {
301 auto payPress = isKeyPressed(GameConfig::Key.Pay);
302 auto payRelease = isKeyReleased(GameConfig::Key.Pay);
304 if (allowFinalCutsceneSkip) {
305 switch (winCutsceneSkip) {
306 case 0: // nothing was pressed
307 if (payPress) winCutsceneSkip = 1;
309 case 1: // waiting for pay release
310 if (payRelease) winCutsceneSkip = 2;
312 case 2: // pay released, do skip
318 // first winning room
319 if (inWinCutscene == 1) {
320 if (plr.ix < 448+8) {
325 // waiting for chest to open
326 if (winCutScenePhase == 0) {
327 winCutSceneTimer = 120/2;
328 winCutScenePhase = 1;
333 if (winCutScenePhase == 1) {
334 if (--winCutSceneTimer == 0) {
335 winCutScenePhase = 2;
336 winCutSceneTimer = 20;
337 forEachObject(delegate bool (MapObject o) {
338 if (o isa MapObjectBigChest) {
339 o.setSprite(global.config.gameMode == GameConfig::GameMode.Vanilla ? 'sBigChestOpen' : 'sBigChestOpen2');
340 auto treasure = MakeMapObject(o.ix, o.iy, 'oBigTreasure');
344 o.playSound('sndClick');
345 //!!!if (global.config.gameMode != GameConfig::GameMode.Vanilla) scrSprayGems(oBigChest.x+24, oBigChest.y+24);
355 if (winCutScenePhase == 2) {
356 if (--winCutSceneTimer == 0) {
357 winCutScenePhase = 3;
358 winCutSceneTimer = 50;
364 if (winCutScenePhase == 3) {
365 auto ep = findEndPlatTile();
366 if (ep) MakeMapObject(ep.ix+global.randOther(0, 80), /*ep.iy*/192+32, 'oBurn');
367 if (--winCutSceneTimer == 0) {
368 winCutScenePhase = 4;
369 winCutSceneTimer = 10;
370 if (ep) MakeMapObject(ep.ix, ep.iy+30, 'oLavaSpray');
376 // lava pump first accel
377 if (winCutScenePhase == 4) {
378 if (--winCutSceneTimer == 0) {
379 forEachObject(delegate bool (MapObject o) {
380 if (o isa MapObjectLavaSpray) o.yAcc = -0.1;
386 // lava pump complete
387 if (winCutScenePhase == 5) {
388 if (--winCutSceneTimer == 0) {
389 //if (oLavaSpray) oLavaSpray.yAcc = -0.1;
390 startWinCutsceneVolcano();
399 if (inWinCutscene == 2) {
403 if (winCutScenePhase == 0) {
404 winCutSceneTimer = 50;
405 winCutScenePhase = 1;
406 winVolcanoTimer = 10;
410 if (winVolcanoTimer > 0) {
411 if (--winVolcanoTimer == 0) {
412 MakeMapObject(224+global.randOther(0,48), 144+global.randOther(0,8), 'oVolcanoFlame');
413 winVolcanoTimer = global.randOther(10, 20);
418 if (winCutScenePhase == 1) {
419 if (--winCutSceneTimer == 0) {
420 winCutSceneTimer = 30;
421 winCutScenePhase = 2;
422 /*auto sil = */MakeMapObject(240, 132, 'oPlayerSil');
430 if (winCutScenePhase == 2) {
431 if (--winCutSceneTimer == 0) {
432 winCutScenePhase = 3;
433 /*auto sil = */MakeMapObject(240, 132, 'oTreasureSil');
443 // winning camel room
444 if (inWinCutscene == 3) {
445 //if (!player.holdItem) writeln("SCENE 3: LOST ITEM!");
447 if (!plr.visible) plr.flty = -32;
450 if (winCutScenePhase == 0) {
451 winCutSceneTimer = 50;
452 winCutScenePhase = 1;
457 if (winCutScenePhase == 1) {
458 if (--winCutSceneTimer == 0) {
459 winCutSceneTimer = 50;
460 winCutScenePhase = 2;
461 plr.playSound('sndPFall');
464 writeln("MUST BE CHAINED: ", plr.mustBeChained);
465 if (plr.mustBeChained) {
466 plr.removeBallAndChain(temp:true);
467 plr.spawnBallAndChain();
470 writeln("HOLD: ", (player.holdItem ? GetClassName(player.holdItem.Class) : ''));
471 writeln("PICK: ", (player.pickedItem ? GetClassName(player.pickedItem.Class) : ''));
473 if (!player.holdItem && player.pickedItem) player.scrSwitchToPocketItem(forceIfEmpty:false);
474 if (player.holdItem) {
475 player.holdItem.visible = true;
476 player.holdItem.canLiveOutsideOfLevel = true;
477 writeln("HOLD ITEM: '", GetClassName(player.holdItem.Class), "'");
479 plr.status == MapObject::STATE_FALLING;
480 global.plife += 99; // just in case
485 if (winCutScenePhase == 2) {
486 auto ball = plr.getMyBall();
487 if (ball && plr.holdItem != ball) {
488 ball.teleportTo(plr.fltx, plr.flty+8);
492 if (plr.status == MapObject::STATE_STUNNED || plr.stunned) {
496 auto treasure = MakeMapObject(144+16+8, -32, 'oBigTreasure');
497 if (treasure) treasure.depth = 1;
498 winCutScenePhase = 3;
500 plr.playSound('sndTFall');
505 if (winCutScenePhase == 3) {
506 if (plr.status != MapObject::STATE_STUNNED && !plr.stunned) {
507 auto bt = findBigTreasure();
511 //plr.status = MapObject::JUMPING;
513 plr.kJumpPressed = true;
514 winCutScenePhase = 4;
515 winCutSceneTimer = 50;
522 if (winCutScenePhase == 4) {
523 if (--winCutSceneTimer == 0) {
524 setMenuTilesVisible(true);
525 winCutScenePhase = 5;
526 winSceneDrawStatus = 1;
528 global.setMusicPitch(1.0);
529 global.playMusic('musVictory', loop:false);
530 winCutSceneTimer = 50;
535 if (winCutScenePhase == 5) {
536 if (winSceneDrawStatus == 3) {
537 int money = stats.money;
538 if (winMoneyCount < money) {
539 if (money-winMoneyCount > 1000) {
540 winMoneyCount += 1000;
541 } else if (money-winMoneyCount > 100) {
542 winMoneyCount += 100;
543 } else if (money-winMoneyCount > 10) {
549 if (winMoneyCount >= money) {
550 winMoneyCount = money;
551 ++winSceneDrawStatus;
556 if (winSceneDrawStatus == 7) {
559 if (winFadeLevel >= 255) {
560 ++winSceneDrawStatus;
561 winCutSceneTimer = 30*30;
566 if (winSceneDrawStatus == 8) {
567 if (--winCutSceneTimer == 0) {
573 if (--winCutSceneTimer == 0) {
574 ++winSceneDrawStatus;
575 winCutSceneTimer = 50;
584 // ////////////////////////////////////////////////////////////////////////// //
585 void renderWinCutsceneOverlay () {
586 if (inWinCutscene == 3) {
587 if (winSceneDrawStatus > 0) {
588 GLVideo.color = 0xff_ff_ff;
589 sprStore.loadFont('sFont'); //draw_set_font(global.myFont);
590 //draw_set_color(txtCol);
591 drawTextAt(64, 32, "YOU MADE IT!");
593 sprStore.loadFont('sFontSmall'); //draw_set_font(global.myFontSmall);
594 if (global.config.gameMode == GameConfig::GameMode.Vanilla) {
595 GLVideo.color = 0xff_ff_00; //draw_set_color(c_yellow);
596 drawTextAt(64, 48, "Classic Mode done!");
598 GLVideo.color = 0x00_80_80; //draw_set_color(c_teal);
599 if (global.config.bizarrePlus) drawTextAt(64, 48, "Bizarre Mode Plus done!");
600 else drawTextAt(64, 48, "Bizarre Mode done!");
601 //draw_set_color(c_white);
603 if (!global.usedShortcut) {
604 GLVideo.color = 0xc0_c0_c0; //draw_set_color(c_silver);
605 drawTextAt(64, 56, "No shortcuts used!");
606 //draw_set_color(c_yellow);
610 if (winSceneDrawStatus > 1) {
611 sprStore.loadFont('sFontSmall'); //draw_set_font(global.myFontSmall);
612 //draw_set_color(txtCol);
613 GLVideo.color = 0xff_ff_ff;
614 drawTextAt(64, 64, "FINAL SCORE:");
617 if (winSceneDrawStatus > 2) {
618 sprStore.loadFont('sFont'); //draw_set_font(global.myFont);
619 GLVideo.color = 0xff_ff_ff; //draw_set_color(c_white);
620 drawTextAt(64, 72, va("$%d", winMoneyCount));
623 if (winSceneDrawStatus > 4) {
624 sprStore.loadFont('sFontSmall'); //draw_set_font(global.myFontSmall);
625 GLVideo.color = 0xff_ff_ff; //draw_set_color(c_white);
626 drawTextAt(64, 96, va("Time: %s", time2str(winTime/30)));
628 draw_set_color(c_white);
629 if (s < 10) draw_text(96+24, 96, string(m) + ":0" + string(s));
630 else draw_text(96+24, 96, string(m) + ":" + string(s));
634 if (winSceneDrawStatus > 5) {
635 sprStore.loadFont('sFontSmall'); //draw_set_font(global.myFontSmall);
636 GLVideo.color = 0xff_ff_ff; //draw_set_color(txtCol);
637 drawTextAt(64, 96+8, "Kills: ");
638 GLVideo.color = 0xff_ff_ff; //draw_set_color(c_white);
639 drawTextAt(96+24, 96+8, va("%s", stats.countKills()));
642 if (winSceneDrawStatus > 6) {
643 sprStore.loadFont('sFontSmall'); //draw_set_font(global.myFontSmall);
644 GLVideo.color = 0xff_ff_ff; //draw_set_color(txtCol);
645 drawTextAt(64, 96+16, "Saves: ");
646 GLVideo.color = 0xff_ff_ff; //draw_set_color(c_white);
647 drawTextAt(96+24, 96+16, va("%s", stats.damselsSaved));
651 GLVideo.color = (255-clamp(winFadeLevel, 0, 255))<<24;
652 GLVideo.fillRect(0, 0, GLVideo.screenWidth, GLVideo.screenHeight);
655 if (winSceneDrawStatus == 8) {
656 sprStore.loadFont('sFontSmall'); //draw_set_font(global.myFontSmall);
657 GLVideo.color = 0xff_ff_ff; //draw_set_color(c_white);
659 if (global.config.gameMode == GameConfig::GameMode.Vanilla) {
660 GLVideo.color = 0xff_ff_00; //draw_set_color(c_yellow);
661 lastString = "YOU SHALL BE REMEMBERED AS A HERO.";
663 GLVideo.color = 0x00_ff_ff;
664 if (global.config.bizarrePlus) lastString = "ANOTHER LEGENDARY ADVENTURE!";
665 else lastString = "YOUR DISCOVERIES WILL BE CELEBRATED!";
667 auto strLen = lastString.length*8;
669 n = trunci(fceil(n/2.0));
670 drawTextAt(n, 116, lastString);
676 // ////////////////////////////////////////////////////////////////////////// //
677 void createEnd1Room () {
678 setRoomBounds(0, 0, 624, 240-16);
680 //MakeMapTile(0, 0, 'oEnd');
681 //MakeMapTile(0, 1, 'oGame');
683 MakeMapTile(0, 0, 'oTemple');
684 MakeMapTile(1, 0, 'oTemple');
685 MakeMapTile(2, 0, 'oTemple');
686 MakeMapTile(3, 0, 'oTemple');
687 MakeMapTile(4, 0, 'oTemple');
688 MakeMapTile(5, 0, 'oTemple');
689 MakeMapTile(6, 0, 'oTemple');
690 MakeMapTile(7, 0, 'oTemple');
691 MakeMapTile(8, 0, 'oTemple');
692 MakeMapTile(9, 0, 'oTemple');
693 MakeMapTile(10, 0, 'oTemple');
694 MakeMapTile(11, 0, 'oTemple');
695 MakeMapTile(12, 0, 'oTemple');
696 MakeMapTile(13, 0, 'oTemple');
697 MakeMapTile(14, 0, 'oTemple');
698 MakeMapTile(15, 0, 'oTemple');
699 MakeMapTile(16, 0, 'oTemple');
700 MakeMapTile(17, 0, 'oTemple');
701 MakeMapTile(18, 0, 'oTemple');
702 MakeMapTile(19, 0, 'oBrick');
703 MakeMapTile(20, 0, 'oBrick');
704 MakeMapTile(21, 0, 'oBrick');
705 MakeMapTile(22, 0, 'oBrick');
706 MakeMapTile(23, 0, 'oBrick');
707 MakeMapTile(24, 0, 'oBrick');
708 MakeMapTile(25, 0, 'oBrick');
709 MakeMapTile(26, 0, 'oBrick');
710 MakeMapTile(32, 0, 'oBrick');
711 MakeMapTile(33, 0, 'oBrick');
712 MakeMapTile(34, 0, 'oBrick');
713 MakeMapTile(35, 0, 'oBrick');
714 MakeMapTile(36, 0, 'oBrick');
715 MakeMapTile(37, 0, 'oBrick');
716 MakeMapTile(38, 0, 'oBrick');
717 MakeMapTile(39, 0, 'oBrick');
718 MakeMapTile(0, 1, 'oTemple');
719 MakeMapTile(1, 1, 'oTemple');
720 MakeMapTile(2, 1, 'oTemple');
721 MakeMapTile(3, 1, 'oTemple');
722 MakeMapTile(4, 1, 'oTemple');
723 MakeMapTile(5, 1, 'oTemple');
724 MakeMapTile(6, 1, 'oTemple');
725 MakeMapTile(7, 1, 'oTemple');
726 MakeMapTile(8, 1, 'oTemple');
727 MakeMapTile(9, 1, 'oTemple');
728 MakeMapTile(10, 1, 'oTemple');
729 MakeMapTile(11, 1, 'oTemple');
730 MakeMapTile(12, 1, 'oTemple');
731 MakeMapTile(13, 1, 'oTemple');
732 MakeMapTile(14, 1, 'oTemple');
733 MakeMapTile(15, 1, 'oTemple');
734 MakeMapTile(16, 1, 'oTemple');
735 MakeMapTile(17, 1, 'oTemple');
736 MakeMapTile(18, 1, 'oTemple');
737 MakeMapTile(19, 1, 'oBrick');
738 MakeMapTile(20, 1, 'oBrick');
739 MakeMapTile(21, 1, 'oBrick');
740 MakeMapTile(22, 1, 'oBrick');
741 MakeMapTile(36, 1, 'oBrick');
742 MakeMapTile(37, 1, 'oBrick');
743 MakeMapTile(38, 1, 'oBrick');
744 MakeMapTile(39, 1, 'oBrick');
745 MakeMapTile(0, 2, 'oTemple');
746 MakeMapTile(1, 2, 'oTemple');
747 MakeMapTile(2, 2, 'oTemple');
748 MakeMapTile(3, 2, 'oTemple');
749 MakeMapTile(4, 2, 'oTemple');
750 MakeMapTile(5, 2, 'oTemple');
751 MakeMapTile(6, 2, 'oTemple');
752 MakeMapTile(7, 2, 'oTemple');
753 MakeMapTile(8, 2, 'oTemple');
754 MakeMapTile(9, 2, 'oTemple');
755 MakeMapTile(10, 2, 'oTemple');
756 MakeMapTile(11, 2, 'oTemple');
757 MakeMapTile(12, 2, 'oTemple');
758 MakeMapTile(13, 2, 'oTemple');
759 MakeMapTile(14, 2, 'oTemple');
760 MakeMapTile(15, 2, 'oTemple');
761 MakeMapTile(16, 2, 'oTemple');
762 MakeMapTile(17, 2, 'oTemple');
763 MakeMapTile(18, 2, 'oTemple');
764 MakeMapTile(19, 2, 'oBrick');
765 MakeMapTile(20, 2, 'oBrick');
766 MakeMapTile(37, 2, 'oBrick');
767 MakeMapTile(38, 2, 'oBrick');
768 MakeMapTile(39, 2, 'oBrick');
769 MakeMapTile(0, 3, 'oTemple');
770 MakeMapTile(1, 3, 'oTemple');
771 MakeMapTile(2, 3, 'oTemple');
772 MakeMapTile(3, 3, 'oTemple');
773 MakeMapTile(4, 3, 'oTemple');
774 MakeMapTile(5, 3, 'oTemple');
775 MakeMapTile(6, 3, 'oTemple');
776 MakeMapTile(7, 3, 'oTemple');
777 MakeMapTile(8, 3, 'oTemple');
778 MakeMapTile(9, 3, 'oTemple');
779 MakeMapTile(10, 3, 'oTemple');
780 MakeMapTile(11, 3, 'oTemple');
781 MakeMapTile(12, 3, 'oTemple');
782 MakeMapTile(13, 3, 'oTemple');
783 MakeMapTile(14, 3, 'oTemple');
784 MakeMapTile(15, 3, 'oBrick');
785 MakeMapTile(16, 3, 'oBrick');
786 MakeMapTile(17, 3, 'oTemple');
787 MakeMapTile(18, 3, 'oTemple');
788 MakeMapTile(19, 3, 'oBrick');
789 MakeMapTile(20, 3, 'oBrick');
790 MakeMapTile(24, 3, 'oEndWall');
791 MakeMapTile(38, 3, 'oBrick');
792 MakeMapTile(39, 3, 'oBrick');
793 MakeMapTile(0, 4, 'oTemple');
794 MakeMapTile(1, 4, 'oTemple');
795 MakeMapTile(2, 4, 'oTemple');
796 MakeMapTile(3, 4, 'oTemple');
797 MakeMapTile(4, 4, 'oTemple');
798 MakeMapTile(5, 4, 'oTemple');
799 MakeMapTile(6, 4, 'oTemple');
800 MakeMapTile(7, 4, 'oTemple');
801 MakeMapTile(8, 4, 'oTemple');
802 MakeMapTile(9, 4, 'oTemple');
803 MakeMapTile(10, 4, 'oTemple');
804 MakeMapTile(11, 4, 'oTemple');
805 MakeMapTile(12, 4, 'oTemple');
806 MakeMapTile(13, 4, 'oTemple');
807 MakeMapTile(14, 4, 'oTemple');
808 MakeMapTile(15, 4, 'oBrick');
809 MakeMapTile(16, 4, 'oBrick');
810 MakeMapTile(17, 4, 'oTemple');
811 MakeMapTile(18, 4, 'oTemple');
812 MakeMapTile(19, 4, 'oBrick');
813 MakeMapTile(38, 4, 'oBrick');
814 MakeMapTile(39, 4, 'oBrick');
815 MakeMapTile(0, 5, 'oTemple');
816 MakeMapTile(1, 5, 'oTemple');
817 MakeMapTile(2, 5, 'oTemple');
818 MakeMapTile(3, 5, 'oTemple');
819 MakeMapTile(4, 5, 'oTemple');
820 MakeMapTile(5, 5, 'oTemple');
821 MakeMapTile(6, 5, 'oTemple');
822 MakeMapTile(7, 5, 'oTemple');
823 MakeMapTile(8, 5, 'oTemple');
824 MakeMapTile(9, 5, 'oTemple');
825 MakeMapTile(10, 5, 'oTemple');
826 MakeMapTile(11, 5, 'oTemple');
827 MakeMapTile(12, 5, 'oTemple');
828 MakeMapTile(13, 5, 'oTemple');
829 MakeMapTile(14, 5, 'oTemple');
830 MakeMapTile(15, 5, 'oTemple');
831 MakeMapTile(16, 5, 'oTemple');
832 MakeMapTile(17, 5, 'oTemple');
833 MakeMapTile(18, 5, 'oTemple');
834 MakeMapTile(19, 5, 'oBrick');
835 MakeMapTile(38, 5, 'oBrick');
836 MakeMapTile(39, 5, 'oBrick');
837 MakeMapTile(0, 6, 'oTemple');
838 MakeMapTile(1, 6, 'oTemple');
839 MakeMapTile(2, 6, 'oTemple');
840 MakeMapTile(3, 6, 'oTemple');
841 MakeMapTile(4, 6, 'oTemple');
842 MakeMapTile(5, 6, 'oTemple');
843 MakeMapTile(6, 6, 'oTemple');
844 MakeMapTile(7, 6, 'oTemple');
845 MakeMapTile(8, 6, 'oTemple');
846 MakeMapTile(9, 6, 'oTemple');
847 MakeMapTile(10, 6, 'oTemple');
848 MakeMapTile(11, 6, 'oTemple');
849 MakeMapTile(12, 6, 'oTemple');
850 MakeMapTile(13, 6, 'oTemple');
851 MakeMapTile(14, 6, 'oTemple');
852 MakeMapTile(15, 6, 'oTemple');
853 MakeMapTile(16, 6, 'oTemple');
854 MakeMapTile(17, 6, 'oTemple');
855 MakeMapTile(18, 6, 'oBrick');
856 MakeMapTile(19, 6, 'oBrick');
857 MakeMapTile(38, 6, 'oBrick');
858 MakeMapTile(39, 6, 'oBrick');
859 MakeMapTile(0, 7, 'oTemple');
860 MakeMapTile(1, 7, 'oTemple');
861 MakeMapTile(2, 7, 'oTemple');
862 MakeMapTile(3, 7, 'oTemple');
863 MakeMapTile(4, 7, 'oTemple');
864 MakeMapTile(5, 7, 'oTemple');
865 MakeMapTile(6, 7, 'oTemple');
866 MakeMapTile(7, 7, 'oTemple');
867 MakeMapTile(8, 7, 'oTemple');
868 MakeMapTile(9, 7, 'oTemple');
869 MakeMapTile(10, 7, 'oTemple');
870 MakeMapTile(11, 7, 'oTemple');
871 MakeMapTile(12, 7, 'oTemple');
872 MakeMapTile(13, 7, 'oTemple');
873 MakeMapTile(14, 7, 'oTemple');
874 MakeMapTile(15, 7, 'oTemple');
875 MakeMapTile(16, 7, 'oTemple');
876 MakeMapTile(17, 7, 'oTemple');
877 MakeMapTile(18, 7, 'oBrick');
878 MakeMapTile(19, 7, 'oBrick');
879 MakeMapTile(38, 7, 'oBrick');
880 MakeMapTile(39, 7, 'oBrick');
881 MakeMapTile(0, 8, 'oTemple');
882 MakeMapTile(1, 8, 'oTemple');
883 MakeMapTile(2, 8, 'oTemple');
884 MakeMapTile(3, 8, 'oTemple');
885 MakeMapTile(4, 8, 'oTemple');
886 MakeMapTile(5, 8, 'oTemple');
887 MakeMapTile(6, 8, 'oTemple');
888 MakeMapTile(7, 8, 'oTemple');
889 MakeMapTile(8, 8, 'oTemple');
890 MakeMapTile(9, 8, 'oTemple');
891 MakeMapTile(10, 8, 'oTemple');
892 MakeMapTile(11, 8, 'oTemple');
893 MakeMapTile(12, 8, 'oTemple');
894 MakeMapTile(13, 8, 'oTemple');
895 MakeMapTile(14, 8, 'oBrick');
896 MakeMapTile(15, 8, 'oBrick');
897 MakeMapTile(16, 8, 'oTemple');
898 MakeMapTile(17, 8, 'oTemple');
899 MakeMapTile(18, 8, 'oBrick');
900 MakeMapTile(38, 8, 'oBrick');
901 MakeMapTile(39, 8, 'oBrick');
902 MakeMapTile(0, 9, 'oTemple');
903 MakeMapTile(1, 9, 'oTemple');
904 MakeMapTile(38, 9, 'oBrick');
905 MakeMapTile(39, 9, 'oBrick');
906 MakeMapTile(0, 10, 'oTemple');
907 MakeMapTile(1, 10, 'oTemple');
908 MakeMapTile(36, 10, 'oBrick');
909 MakeMapTile(37, 10, 'oBrick');
910 MakeMapTile(38, 10, 'oBrick');
911 MakeMapTile(39, 10, 'oBrick');
912 MakeMapTile(0, 11, 'oTemple');
913 MakeMapTile(1, 11, 'oTemple');
914 MakeMapTile(2, 11, 'oEntrance');
915 MakeMapTile(36, 11, 'oBrick');
916 MakeMapTile(37, 11, 'oBrick');
917 MakeMapTile(38, 11, 'oBrick');
918 MakeMapTile(39, 11, 'oBrick');
919 MakeMapTile(0, 12, 'oTemple');
920 MakeMapTile(1, 12, 'oTemple');
921 MakeMapTile(2, 12, 'oTemple');
922 MakeMapTile(3, 12, 'oTemple');
923 MakeMapTile(4, 12, 'oTemple');
924 MakeMapTile(5, 12, 'oTemple');
925 MakeMapTile(6, 12, 'oTemple');
926 MakeMapTile(7, 12, 'oTemple');
927 MakeMapTile(8, 12, 'oTemple');
928 MakeMapTile(9, 12, 'oTemple');
929 MakeMapTile(10, 12, 'oTemple');
930 MakeMapTile(11, 12, 'oTemple');
931 MakeMapTile(12, 12, 'oTemple');
932 MakeMapTile(13, 12, 'oTemple');
933 MakeMapTile(14, 12, 'oTemple');
934 MakeMapTile(15, 12, 'oTemple');
935 MakeMapTile(16, 12, 'oTemple');
936 MakeMapTile(17, 12, 'oBrick');
937 MakeMapTile(18, 12, 'oBrick');
938 MakeMapTile(19, 12, 'oBrick');
939 MakeMapTile(20, 12, 'oBrick');
940 MakeMapTile(21, 12, 'oBrick');
941 MakeMapTile(22, 12, 'oBrick');
942 MakeMapTile(23, 12, 'oBrick');
943 MakeMapTile(24, 12, 'oBrick');
944 MakeMapTile(25, 12, 'oBrick');
945 MakeMapTile(26, 12, 'oBrick');
946 MakeMapTile(27, 12, 'oEndPlat');
947 MakeMapTile(32, 12, 'oBrick');
948 MakeMapTile(33, 12, 'oBrick');
949 MakeMapTile(34, 12, 'oBrick');
950 MakeMapTile(35, 12, 'oBrick');
951 MakeMapTile(36, 12, 'oBrick');
952 MakeMapTile(37, 12, 'oBrick');
953 MakeMapTile(38, 12, 'oBrick');
954 MakeMapTile(39, 12, 'oBrick');
955 MakeMapTile(0, 13, 'oTemple');
956 MakeMapTile(1, 13, 'oTemple');
957 MakeMapTile(38, 13, 'oBrick');
958 MakeMapTile(39, 13, 'oBrick');
959 MakeMapTile(0, 14, 'oTemple');
960 MakeMapTile(1, 14, 'oTemple');
961 MakeMapTile(2, 14, 'oLava');
962 MakeMapTile(3, 14, 'oLava');
963 MakeMapTile(4, 14, 'oLava');
964 MakeMapTile(5, 14, 'oLava');
965 MakeMapTile(6, 14, 'oLava');
966 MakeMapTile(7, 14, 'oLava');
967 MakeMapTile(8, 14, 'oLava');
968 MakeMapTile(9, 14, 'oLava');
969 MakeMapTile(10, 14, 'oLava');
970 MakeMapTile(11, 14, 'oLava');
971 MakeMapTile(12, 14, 'oLava');
972 MakeMapTile(13, 14, 'oLava');
973 MakeMapTile(14, 14, 'oLava');
974 MakeMapTile(15, 14, 'oLava');
975 MakeMapTile(16, 14, 'oLava');
976 MakeMapTile(17, 14, 'oLava');
977 MakeMapTile(18, 14, 'oLava');
978 MakeMapTile(19, 14, 'oLava');
979 MakeMapTile(20, 14, 'oLava');
980 MakeMapTile(21, 14, 'oLava');
981 MakeMapTile(22, 14, 'oLava');
982 MakeMapTile(23, 14, 'oLava');
983 MakeMapTile(24, 14, 'oLava');
984 MakeMapTile(25, 14, 'oLava');
985 MakeMapTile(26, 14, 'oLava');
986 MakeMapTile(27, 14, 'oLava');
987 MakeMapTile(28, 14, 'oLava');
988 MakeMapTile(29, 14, 'oLava');
989 MakeMapTile(30, 14, 'oLava');
990 MakeMapTile(31, 14, 'oLava');
991 MakeMapTile(32, 14, 'oLava');
992 MakeMapTile(33, 14, 'oLava');
993 MakeMapTile(34, 14, 'oLava');
994 MakeMapTile(35, 14, 'oLava');
995 MakeMapTile(36, 14, 'oLava');
996 MakeMapTile(37, 14, 'oLava');
997 MakeMapTile(38, 14, 'oBrick');
998 MakeMapTile(39, 14, 'oBrick');
999 MakeMapTile(0, 15, 'oTemple');
1000 MakeMapTile(1, 15, 'oTemple');
1001 MakeMapTile(2, 15, 'oLavaSolid');
1002 MakeMapTile(3, 15, 'oLavaSolid');
1003 MakeMapTile(4, 15, 'oLavaSolid');
1004 MakeMapTile(5, 15, 'oLavaSolid');
1005 MakeMapTile(6, 15, 'oLavaSolid');
1006 MakeMapTile(7, 15, 'oLavaSolid');
1007 MakeMapTile(8, 15, 'oLavaSolid');
1008 MakeMapTile(9, 15, 'oLavaSolid');
1009 MakeMapTile(10, 15, 'oLavaSolid');
1010 MakeMapTile(11, 15, 'oLavaSolid');
1011 MakeMapTile(12, 15, 'oLavaSolid');
1012 MakeMapTile(13, 15, 'oLavaSolid');
1013 MakeMapTile(14, 15, 'oLavaSolid');
1014 MakeMapTile(15, 15, 'oLavaSolid');
1015 MakeMapTile(16, 15, 'oLavaSolid');
1016 MakeMapTile(17, 15, 'oLavaSolid');
1017 MakeMapTile(18, 15, 'oLavaSolid');
1018 MakeMapTile(19, 15, 'oLavaSolid');
1019 MakeMapTile(20, 15, 'oLavaSolid');
1020 MakeMapTile(21, 15, 'oLavaSolid');
1021 MakeMapTile(22, 15, 'oLavaSolid');
1022 MakeMapTile(23, 15, 'oLavaSolid');
1023 MakeMapTile(24, 15, 'oLavaSolid');
1024 MakeMapTile(25, 15, 'oLavaSolid');
1025 MakeMapTile(26, 15, 'oLavaSolid');
1026 MakeMapTile(27, 15, 'oLavaSolid');
1027 MakeMapTile(28, 15, 'oLavaSolid');
1028 MakeMapTile(29, 15, 'oLavaSolid');
1029 MakeMapTile(30, 15, 'oLavaSolid');
1030 MakeMapTile(31, 15, 'oLavaSolid');
1031 MakeMapTile(32, 15, 'oLavaSolid');
1032 MakeMapTile(33, 15, 'oLavaSolid');
1033 MakeMapTile(34, 15, 'oLavaSolid');
1034 MakeMapTile(35, 15, 'oLavaSolid');
1035 MakeMapTile(36, 15, 'oLavaSolid');
1036 MakeMapTile(37, 15, 'oLavaSolid');
1037 MakeMapTile(38, 15, 'oBrick');
1038 MakeMapTile(39, 15, 'oBrick');
1040 MakeMapObject(33*16, 9*16, 'oBigChest');
1044 //MakeMapTileAtPix(24, 424, 'oPlayer1');
1045 //MakeMapTileAtPix(40, 184, 'oPDummy');
1046 spawnPlayerAt(2*16+8, 11*16+8);
1047 player.dir = MapEntity::Dir.Right;
1051 void createEnd3Room () {
1052 setRoomBounds(0, 0, 304, 224);
1054 //MakeMapTile(0, 0, 'oEnd3');
1055 MakeMapTile(0, 0, 'oEnd2BG');
1057 MakeMapTile(3, 1, 'oMenuUL');
1058 MakeMapTile(4, 1, 'oMenuTop');
1059 MakeMapTile(5, 1, 'oMenuTop');
1060 MakeMapTile(6, 1, 'oMenuTop');
1061 MakeMapTile(7, 1, 'oMenuTop');
1062 MakeMapTile(8, 1, 'oMenuTop');
1063 MakeMapTile(9, 1, 'oMenuTop');
1064 MakeMapTile(10, 1, 'oMenuTop');
1065 MakeMapTile(11, 1, 'oMenuTop');
1066 MakeMapTile(12, 1, 'oMenuTop');
1067 MakeMapTile(13, 1, 'oMenuTop');
1068 MakeMapTile(14, 1, 'oMenuTop');
1069 MakeMapTile(15, 1, 'oMenuTop');
1070 MakeMapTile(16, 1, 'oMenuUR');
1071 MakeMapTile(3, 2, 'oMenuLeft');
1072 MakeMapTile(4, 2, 'oBlack');
1073 MakeMapTile(5, 2, 'oBlack');
1074 MakeMapTile(6, 2, 'oBlack');
1075 MakeMapTile(7, 2, 'oBlack');
1076 MakeMapTile(8, 2, 'oBlack');
1077 MakeMapTile(9, 2, 'oBlack');
1078 MakeMapTile(10, 2, 'oBlack');
1079 MakeMapTile(11, 2, 'oBlack');
1080 MakeMapTile(12, 2, 'oBlack');
1081 MakeMapTile(13, 2, 'oBlack');
1082 MakeMapTile(14, 2, 'oBlack');
1083 MakeMapTile(15, 2, 'oBlack');
1084 MakeMapTile(16, 2, 'oMenuRight');
1085 MakeMapTile(3, 3, 'oMenuLeft');
1086 MakeMapTile(4, 3, 'oBlack');
1087 MakeMapTile(5, 3, 'oBlack');
1088 MakeMapTile(6, 3, 'oBlack');
1089 MakeMapTile(7, 3, 'oBlack');
1090 MakeMapTile(8, 3, 'oBlack');
1091 MakeMapTile(9, 3, 'oBlack');
1092 MakeMapTile(10, 3, 'oBlack');
1093 MakeMapTile(11, 3, 'oBlack');
1094 MakeMapTile(12, 3, 'oBlack');
1095 MakeMapTile(13, 3, 'oBlack');
1096 MakeMapTile(14, 3, 'oBlack');
1097 MakeMapTile(15, 3, 'oBlack');
1098 MakeMapTile(16, 3, 'oMenuRight');
1099 MakeMapTile(0, 4, 'oPalmTree');
1100 MakeMapTile(3, 4, 'oMenuLeft');
1101 MakeMapTile(4, 4, 'oBlack');
1102 MakeMapTile(5, 4, 'oBlack');
1103 MakeMapTile(6, 4, 'oBlack');
1104 MakeMapTile(7, 4, 'oBlack');
1105 MakeMapTile(8, 4, 'oBlack');
1106 MakeMapTile(9, 4, 'oBlack');
1107 MakeMapTile(10, 4, 'oBlack');
1108 MakeMapTile(11, 4, 'oBlack');
1109 MakeMapTile(12, 4, 'oBlack');
1110 MakeMapTile(13, 4, 'oBlack');
1111 MakeMapTile(14, 4, 'oBlack');
1112 MakeMapTile(15, 4, 'oBlack');
1113 MakeMapTile(16, 4, 'oMenuRight');
1114 MakeMapTile(17, 4, 'oPalmTree');
1115 MakeMapTile(3, 5, 'oMenuLeft');
1116 MakeMapTile(4, 5, 'oBlack');
1117 MakeMapTile(5, 5, 'oBlack');
1118 MakeMapTile(6, 5, 'oBlack');
1119 MakeMapTile(7, 5, 'oBlack');
1120 MakeMapTile(8, 5, 'oBlack');
1121 MakeMapTile(9, 5, 'oBlack');
1122 MakeMapTile(10, 5, 'oBlack');
1123 MakeMapTile(11, 5, 'oBlack');
1124 MakeMapTile(12, 5, 'oBlack');
1125 MakeMapTile(13, 5, 'oBlack');
1126 MakeMapTile(14, 5, 'oBlack');
1127 MakeMapTile(15, 5, 'oBlack');
1128 MakeMapTile(16, 5, 'oMenuRight');
1129 MakeMapTile(3, 6, 'oMenuLeft');
1130 MakeMapTile(4, 6, 'oBlack');
1131 MakeMapTile(5, 6, 'oBlack');
1132 MakeMapTile(6, 6, 'oBlack');
1133 MakeMapTile(7, 6, 'oBlack');
1134 MakeMapTile(8, 6, 'oBlack');
1135 MakeMapTile(9, 6, 'oBlack');
1136 MakeMapTile(10, 6, 'oBlack');
1137 MakeMapTile(11, 6, 'oBlack');
1138 MakeMapTile(12, 6, 'oBlack');
1139 MakeMapTile(13, 6, 'oBlack');
1140 MakeMapTile(14, 6, 'oBlack');
1141 MakeMapTile(15, 6, 'oBlack');
1142 MakeMapTile(16, 6, 'oMenuRight');
1143 MakeMapTile(0, 7, 'oBGEnd3');
1144 MakeMapTile(3, 7, 'oMenuLeft');
1145 MakeMapTile(4, 7, 'oBlack');
1146 MakeMapTile(5, 7, 'oBlack');
1147 MakeMapTile(6, 7, 'oBlack');
1148 MakeMapTile(7, 7, 'oBlack');
1149 MakeMapTile(8, 7, 'oBlack');
1150 MakeMapTile(9, 7, 'oBlack');
1151 MakeMapTile(10, 7, 'oBlack');
1152 MakeMapTile(11, 7, 'oBlack');
1153 MakeMapTile(12, 7, 'oBlack');
1154 MakeMapTile(13, 7, 'oBlack');
1155 MakeMapTile(14, 7, 'oBlack');
1156 MakeMapTile(15, 7, 'oBlack');
1157 MakeMapTile(16, 7, 'oMenuRight');
1158 MakeMapTile(3, 8, 'oMenuLL');
1159 MakeMapTile(4, 8, 'oMenuBottom');
1160 MakeMapTile(5, 8, 'oMenuBottom');
1161 MakeMapTile(6, 8, 'oMenuBottom');
1162 MakeMapTile(7, 8, 'oMenuBottom');
1163 MakeMapTile(8, 8, 'oMenuBottom');
1164 MakeMapTile(9, 8, 'oMenuBottom');
1165 MakeMapTile(10, 8, 'oMenuBottom');
1166 MakeMapTile(11, 8, 'oMenuBottom');
1167 MakeMapTile(12, 8, 'oMenuBottom');
1168 MakeMapTile(13, 8, 'oMenuBottom');
1169 MakeMapTile(14, 8, 'oMenuBottom');
1170 MakeMapTile(15, 8, 'oMenuBottom');
1171 MakeMapTile(16, 8, 'oMenuLR');
1172 MakeMapTile(0, 11, 'oDesertTop');
1173 MakeMapTile(1, 11, 'oDesertTop');
1174 MakeMapTile(2, 11, 'oDesertTop');
1175 MakeMapTile(3, 11, 'oDesertTop');
1176 MakeMapTile(3, 11, 'oDesertTop');
1177 MakeMapTile(3, 11, 'oShrub');
1178 MakeMapTile(4, 11, 'oDesertTop');
1179 MakeMapTile(5, 11, 'oDesertTop');
1180 MakeMapTile(6, 11, 'oDesertTop');
1181 MakeMapTile(7, 11, 'oDesertTop');
1182 MakeMapTile(8, 11, 'oDesertTop');
1183 MakeMapTile(9, 11, 'oDesertTop');
1184 MakeMapTile(10, 11, 'oDesertTop');
1185 MakeMapTile(11, 11, 'oDesertTop');
1186 MakeMapTile(12, 11, 'oDesertTop');
1187 MakeMapTile(13, 11, 'oDesertTop');
1188 MakeMapTile(14, 11, 'oDesertTop');
1189 MakeMapTile(15, 11, 'oDesertTop');
1190 MakeMapTile(15, 11, 'oShrub');
1191 MakeMapTile(16, 11, 'oDesertTop');
1192 MakeMapTile(17, 11, 'oDesertTop');
1193 MakeMapTile(17, 11, 'oShrub');
1194 MakeMapTile(18, 11, 'oDesertTop');
1195 MakeMapTile(19, 11, 'oDesertTop');
1196 MakeMapTile(0, 12, 'oDesert2');
1197 MakeMapTile(1, 12, 'oDesert2');
1198 MakeMapTile(2, 12, 'oDesert2');
1199 MakeMapTile(3, 12, 'oDesert2');
1200 MakeMapTile(4, 12, 'oDesert2');
1201 MakeMapTile(5, 12, 'oDesert2');
1202 MakeMapTile(6, 12, 'oDesert2');
1203 MakeMapTile(7, 12, 'oDesert2');
1204 MakeMapTile(8, 12, 'oDesert2');
1205 MakeMapTile(9, 12, 'oDesert2');
1206 MakeMapTile(10, 12, 'oDesert2');
1207 MakeMapTile(11, 12, 'oDesert2');
1208 MakeMapTile(12, 12, 'oDesert2');
1209 MakeMapTile(13, 12, 'oDesert2');
1210 MakeMapTile(14, 12, 'oDesert2');
1211 MakeMapTile(15, 12, 'oDesert2');
1212 MakeMapTile(16, 12, 'oDesert2');
1213 MakeMapTile(17, 12, 'oDesert2');
1214 MakeMapTile(18, 12, 'oDesert2');
1215 MakeMapTile(19, 12, 'oDesert2');
1216 MakeMapTile(0, 13, 'oDesert');
1217 MakeMapTile(1, 13, 'oDesert');
1218 MakeMapTile(2, 13, 'oDesert');
1219 MakeMapTile(3, 13, 'oDesert');
1220 MakeMapTile(4, 13, 'oDesert');
1221 MakeMapTile(5, 13, 'oDesert');
1222 MakeMapTile(6, 13, 'oDesert');
1223 MakeMapTile(7, 13, 'oDesert');
1224 MakeMapTile(8, 13, 'oDesert');
1225 MakeMapTile(9, 13, 'oDesert');
1226 MakeMapTile(10, 13, 'oDesert');
1227 MakeMapTile(11, 13, 'oDesert');
1228 MakeMapTile(12, 13, 'oDesert');
1229 MakeMapTile(13, 13, 'oDesert');
1230 MakeMapTile(14, 13, 'oDesert');
1231 MakeMapTile(15, 13, 'oDesert');
1232 MakeMapTile(16, 13, 'oDesert');
1233 MakeMapTile(17, 13, 'oDesert');
1234 MakeMapTile(18, 13, 'oDesert');
1235 MakeMapTile(19, 13, 'oDesert');
1236 MakeMapTile(0, 14, 'oDesert');
1237 MakeMapTile(1, 14, 'oDesert');
1238 MakeMapTile(2, 14, 'oDesert');
1239 MakeMapTile(3, 14, 'oDesert');
1240 MakeMapTile(4, 14, 'oDesert');
1241 MakeMapTile(5, 14, 'oDesert');
1242 MakeMapTile(6, 14, 'oDesert');
1243 MakeMapTile(7, 14, 'oDesert');
1244 MakeMapTile(8, 14, 'oDesert');
1245 MakeMapTile(9, 14, 'oDesert');
1246 MakeMapTile(10, 14, 'oDesert');
1247 MakeMapTile(11, 14, 'oDesert');
1248 MakeMapTile(12, 14, 'oDesert');
1249 MakeMapTile(13, 14, 'oDesert');
1250 MakeMapTile(14, 14, 'oDesert');
1251 MakeMapTile(15, 14, 'oDesert');
1252 MakeMapTile(16, 14, 'oDesert');
1253 MakeMapTile(17, 14, 'oDesert');
1254 MakeMapTile(18, 14, 'oDesert');
1255 MakeMapTile(19, 14, 'oDesert');
1257 //spawnPlayerAt(2*16+8, 11*16+8);
1258 spawnPlayerAt(144, -32);
1259 player.dir = MapEntity::Dir.Right;