Section 1
//Box (Box)
package {
public class Box extends MapObject {
public var _boxH:int;
public var _boxW:int;
public function Box(_arg1, _arg2):void{
_main = _arg1;
_isMoveObj = true;
_speed = 4;
_type = "box";
_id = _arg2.id;
_xpos = _arg2.x;
_ypos = _arg2.y;
_boxW = _arg2.w;
_boxH = _arg2.h;
draw();
}
public function addToObjMap(_arg1):void{
var _local2:*;
var _local3:*;
if (_active){
_local2 = _ypos;
while (_local2 < (_ypos + _boxH)) {
_local3 = _xpos;
while (_local3 < (_xpos + _boxW)) {
_arg1[_local2][_local3] = _id;
_local3++;
};
_local2++;
};
};
}
public function draw():void{
var _local1:*;
setxy();
_local1 = _main._game._map._tilesize;
graphics.clear();
graphics.lineStyle(2, 0);
graphics.beginFill(0xFFFF00, 1);
graphics.drawRoundRect(0, 0, (_boxW * _local1), (_boxH * _local1), 5, 5);
graphics.endFill();
}
public function checkPush(){
var _local1:Boolean;
var _local2:*;
var _local3:*;
var _local4:*;
_local1 = true;
_local2 = (_ypos + _ymod);
while (_local2 < ((_ypos + _ymod) + _boxH)) {
_local3 = (_xpos + _xmod);
while (_local3 < ((_xpos + _xmod) + _boxW)) {
if (!_main._game._map.isFreeForBox(_local3, _local2)){
return (false);
};
if (_main._game.checkPlayer(_local3, _local2)){
return (false);
};
_local4 = _main._game._map.isObject(_local3, _local2);
if (_local4){
if (_local4 != this){
return (false);
};
};
_local3++;
};
_local2++;
};
return (true);
}
public function pushObj(_arg1, _arg2):Boolean{
if (_moving){
return (false);
};
_xmod = _arg1;
_ymod = _arg2;
if (checkPush()){
_xpos = (_xpos + _xmod);
_ypos = (_ypos + _ymod);
_moving = true;
_main._game._map.loadObjMap();
_main._game._sndPush.play();
return (true);
};
return (false);
}
private function remove():void{
_active = false;
_main._game._map.loadObjMap();
_main._game._map._obj_layer.removeChild(this);
}
private function fallDown():void{
var _local1:*;
var _local2:*;
_local1 = _ypos;
while (_local1 < (_ypos + _boxH)) {
_local2 = _xpos;
while (_local2 < (_xpos + _boxW)) {
_main._game._map.setFloor(_local2, _local1);
_local2++;
};
_local1++;
};
remove();
}
public function checkFalldown(){
var _local1:*;
var _local2:*;
_local1 = _ypos;
while (_local1 < (_ypos + _boxH)) {
_local2 = _xpos;
while (_local2 < (_xpos + _boxW)) {
if (!_main._game._map.isHole(_local2, _local1)){
return (false);
};
_local2++;
};
_local1++;
};
return (true);
}
override public function stopAction():void{
if (checkFalldown()){
fallDown();
};
}
}
}//package
Section 2
//exit (exit)
package {
import flash.display.*;
public dynamic class exit extends MovieClip {
}
}//package
Section 3
//floor (floor)
package {
import flash.display.*;
public dynamic class floor extends MovieClip {
}
}//package
Section 4
//hole (hole)
package {
import flash.display.*;
public dynamic class hole extends MovieClip {
}
}//package
Section 5
//keymenu (keymenu)
package {
import flash.display.*;
public class keymenu extends Sprite {
private var _curSel;// = 0
private var _ypos;
private var _menuitems;
private var _selClip;
private var _dist;// = 50
private var _xpos;
private var _seldist;
public function keymenu(_arg1, _arg2):void{
_curSel = 0;
_dist = 50;
super();
_menuitems = _arg1;
_dist = _arg2.dist;
_xpos = _arg2.x;
_ypos = _arg2.y;
_seldist = _arg2.seldist;
drawMenu();
}
public function getSel():Object{
return (_menuitems[_curSel].data);
}
private function setSelector():void{
_selClip.x = _xpos;
_selClip.y = (_ypos + (_curSel * _dist));
}
public function nextItem(_arg1){
if (((((_curSel + _arg1) >= 0)) && (((_curSel + _arg1) < _menuitems.length)))){
if (!_menuitems[(_curSel + _arg1)].locked){
_curSel = (_curSel + _arg1);
setSelector();
};
};
}
private function drawMenu(){
var _local1:*;
var _local2:*;
_curSel = 0;
for (_local1 in _menuitems) {
_local2 = new menuText();
_local2.t_label.text = _menuitems[_local1].label;
_local2.y = (_ypos + (_dist * _local1));
_local2.x = (_xpos + _seldist);
if (_menuitems[_local1].locked){
_local2.t_label.textColor = 0x666666;
};
addChild(_local2);
};
_selClip = new menuSelect();
addChild(_selClip);
setSelector();
}
}
}//package
Section 6
//m_blawars (m_blawars)
package {
import flash.display.*;
import flash.events.*;
public class m_blawars extends MovieClip {
private var _main:Main;
public function m_blawars(_arg1, _arg2):void{
_main = _arg1;
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
addEventListener(MouseEvent.CLICK, mClick);
}
public function mClick(_arg1:MouseEvent):void{
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("splash", null);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("splash", null);
}
}
}//package
Section 7
//m_controls (m_controls)
package {
import flash.display.*;
import flash.events.*;
public class m_controls extends MovieClip {
private var _main:Main;
public function m_controls(_arg1, _arg2):void{
_main = _arg1;
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("main", null);
}
}
}//package
Section 8
//m_coursecomplete (m_coursecomplete)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.ui.*;
public class m_coursecomplete extends MovieClip {
public var t_course:TextField;
private var _main:Main;
public function m_coursecomplete(_arg1, _arg2):void{
_main = _arg1;
t_course.text = _arg2.course;
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.SPACE){
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("courses", null);
};
}
}
}//package
Section 9
//m_courses (m_courses)
package {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
public class m_courses extends MovieClip {
private var _main:Main;
private var _keymenu;
public function m_courses(_arg1, _arg2):void{
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
super();
_main = _arg1;
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_local3 = [];
for (_local4 in _main._maps._mapdata) {
_local6 = {label:_main._maps._mapdata[_local4].meta.label, data:_local4};
_local3.push(_local6);
};
_local5 = {x:160, y:230, dist:40, seldist:25};
_keymenu = new keymenu(_local3, _local5);
addChild(_keymenu);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
var _local2:*;
var _local3:*;
if (_arg1.keyCode == Keyboard.UP){
_keymenu.nextItem(-1);
} else {
if (_arg1.keyCode == Keyboard.DOWN){
_keymenu.nextItem(1);
} else {
if ((((_arg1.keyCode == Keyboard.SPACE)) || ((_arg1.keyCode == Keyboard.ENTER)))){
_local2 = _keymenu.getSel();
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_local3 = {course:_local2};
_main._menu.showScreen("floors", _local3);
} else {
if (_arg1.keyCode == Keyboard.ESCAPE){
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("main", null);
};
};
};
};
}
}
}//package
Section 10
//m_floors (m_floors)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.ui.*;
public class m_floors extends MovieClip {
public var t_course:TextField;
private var _main:Main;
private var _course;
public var t_steps:TextField;
public var t_time:TextField;
private var _keymenu;
public function m_floors(_arg1, _arg2):void{
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
super();
_main = _arg1;
_course = _arg2.course;
_local3 = [];
for (_local4 in _main._maps._mapdata[_course].floors) {
_local6 = _main._progress[_course][_local4].locked;
_local7 = {label:("Floor: " + (_local4 + 1)), data:_local4, locked:_local6};
_local3.push(_local7);
};
_local5 = {x:120, y:200, dist:30, seldist:25};
_keymenu = new keymenu(_local3, _local5);
addChild(_keymenu);
t_course.text = _main._maps._mapdata[_course].meta.label;
getRecord();
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
public function getRecord():void{
var _local1:*;
_local1 = _keymenu.getSel();
t_steps.text = ("Steps: " + _main._progress[_course][_local1].steps);
t_time.text = ("Time: " + _main._progress[_course][_local1].time);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
var _local2:*;
var _local3:*;
if (_arg1.keyCode == Keyboard.UP){
_keymenu.nextItem(-1);
getRecord();
} else {
if (_arg1.keyCode == Keyboard.DOWN){
_keymenu.nextItem(1);
getRecord();
} else {
if ((((_arg1.keyCode == Keyboard.SPACE)) || ((_arg1.keyCode == Keyboard.ENTER)))){
_local2 = _keymenu.getSel();
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_local3 = {gamemode:"normal", world:_course, floor:_local2};
_main.startGame(_local3);
} else {
if (_arg1.keyCode == Keyboard.ESCAPE){
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("courses", null);
};
};
};
};
}
}
}//package
Section 11
//m_main (m_main)
package {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
public class m_main extends MovieClip {
private var _main:Main;
private var _keymenu;
public function m_main(_arg1, _arg2):void{
var _local3:*;
var _local4:*;
super();
_main = _arg1;
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_local3 = [{label:"New Game", data:0}, {label:"Controls", data:1}];
_local4 = {x:200, y:260, dist:60, seldist:25};
_keymenu = new keymenu(_local3, _local4);
addChild(_keymenu);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
var _local2:*;
if (_arg1.keyCode == Keyboard.UP){
_keymenu.nextItem(-1);
} else {
if (_arg1.keyCode == Keyboard.DOWN){
_keymenu.nextItem(1);
} else {
if ((((_arg1.keyCode == Keyboard.SPACE)) || ((_arg1.keyCode == Keyboard.ENTER)))){
_local2 = _keymenu.getSel();
if (_local2 == 0){
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("courses", null);
} else {
if (_local2 == 1){
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("controls", null);
};
};
};
};
};
}
}
}//package
Section 12
//m_nextLevel (m_nextLevel)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.ui.*;
public class m_nextLevel extends MovieClip {
public var t_world:TextField;
public var t_floor:TextField;
private var _main:Main;
private var _world;
private var _complete;
public var t_steps:TextField;
public var t_time:TextField;
public function m_nextLevel(_arg1, _arg2):void{
_main = _arg1;
_world = _arg2.stg;
_complete = _arg2.worldcomplete;
t_steps.text = _arg2.steps;
t_time.text = (_arg2.time + " sek");
t_world.text = _arg2.stg;
t_floor.text = ((" Floor " + _arg2.floor) + " complete");
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
var _local2:*;
if (_arg1.keyCode == Keyboard.SPACE){
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
if (_complete){
_local2 = {course:_world};
_main._menu.showScreen("coursecomplete", _local2);
} else {
_main._game.init();
};
};
}
}
}//package
Section 13
//m_splash (m_splash)
package {
import flash.display.*;
import flash.events.*;
public class m_splash extends MovieClip {
private var _main:Main;
public function m_splash(_arg1, _arg2):void{
_main = _arg1;
_main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
public function onKeyUp(_arg1:KeyboardEvent):void{
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
_main._menu.clearScreen();
_main._menu.showScreen("main", null);
}
}
}//package
Section 14
//Main (Main)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.ui.*;
public class Main extends Sprite {
public var _gameLayer:Sprite;
public var _appName:String;// = "puzzleboyflash"
public var _so:SharedObject;
public var _botLayer:MovieClip;
public var _guiLayer:Sprite;
public var _menu:Menu;
public var _keyUp:Boolean;// = false
public var _keyDown:Boolean;// = false
public var _keyRight:Boolean;// = false
public var _maps:Maps;
public var _addLayer:MovieClip;
public var _ctrlLock:Boolean;// = false
public var _blocks:RotateBlock_prefabs;
public var _progress:Array;
public var _keyLeft:Boolean;// = false
public var _dir:Array;
public var _game:PuzzleBoyFlash;
public var _pause:Boolean;// = false
public function Main():void{
var _local1:Object;
_appName = "puzzleboyflash";
_keyUp = false;
_keyDown = false;
_keyLeft = false;
_keyRight = false;
_ctrlLock = false;
_pause = false;
super();
_addLayer = new MovieClip();
addChild(_addLayer);
_botLayer = new MovieClip();
addChild(_botLayer);
_local1 = {id:"5e2cabd5a544ea25", res:"640x576", clip:_addLayer, ad_finished:startapp, background:16777161, color:0xFF8A00, outline:0, no_bg:false};
MochiAd.showPreGameAd(_local1);
MochiBot.track(_addLayer, "d44bfa33");
}
public function clearControls():void{
_keyUp = false;
_keyDown = false;
_keyLeft = false;
_keyRight = false;
}
public function startGame(_arg1){
_game = new PuzzleBoyFlash(this, _arg1);
_game.init();
_gameLayer.addChild(_game);
}
public function startapp(){
var _local1:*;
dirs();
_blocks = new RotateBlock_prefabs();
_maps = new Maps();
getProgress();
_gameLayer = new Sprite();
addChild(_gameLayer);
_guiLayer = new Sprite();
addChild(_guiLayer);
_menu = new Menu(this);
_guiLayer.addChild(_menu);
_menu.showScreen("blawars", null);
_local1 = {gamemode:"normal", world:0, floor:0};
}
public function removeGame(){
var _local1:*;
var _local2:*;
_game.clearLevel();
_local1 = _game._curWorld;
_local2 = {course:_local1};
_menu.showScreen("floors", _local2);
_gameLayer.removeChild(_game);
_game = null;
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
private function dirs(){
_dir = new Array();
_dir["up"] = [0, -1];
_dir["right"] = [1, 0];
_dir["down"] = [0, 1];
_dir["left"] = [-1, 0];
}
public function getProgress():void{
_so = SharedObject.getLocal(_appName);
if (_so.size == 0){
newProgress();
saveProgress();
} else {
_progress = _so.data.progress;
};
}
public function onKeyDown(_arg1:KeyboardEvent):void{
if (_game._ingame){
if (_arg1.keyCode == Keyboard.RIGHT){
_keyRight = true;
} else {
if (_arg1.keyCode == Keyboard.LEFT){
_keyLeft = true;
} else {
if (_arg1.keyCode == Keyboard.UP){
_keyUp = true;
} else {
if (_arg1.keyCode == Keyboard.DOWN){
_keyDown = true;
};
};
};
};
};
}
public function saveProgress():void{
_so.data.progress = _progress;
_so.flush();
}
public function onKeyUp(_arg1:KeyboardEvent):void{
if (_game._ingame){
if (_arg1.keyCode == Keyboard.SHIFT){
_game.togglePlayer();
};
if (_arg1.keyCode == Keyboard.ESCAPE){
removeGame();
};
if (_arg1.keyCode == Keyboard.SPACE){
_game.restartLevel();
};
if (_arg1.keyCode == Keyboard.RIGHT){
_keyRight = false;
} else {
if (_arg1.keyCode == Keyboard.LEFT){
_keyLeft = false;
} else {
if (_arg1.keyCode == Keyboard.UP){
_keyUp = false;
} else {
if (_arg1.keyCode == Keyboard.DOWN){
_keyDown = false;
};
};
};
};
};
}
public function newProgress():void{
var _local1:*;
var _local2:*;
var _local3:*;
_progress = [];
for (_local1 in _maps._mapdata) {
_progress[_local1] = [];
for (_local2 in _maps._mapdata[_local1].floors) {
_local3 = {locked:true, complete:false, time:999, steps:999};
if (_local2 < 5){
_local3.locked = false;
};
_progress[_local1].push(_local3);
};
};
}
}
}//package
Section 15
//Map (Map)
package {
import flash.display.*;
import flash.utils.*;
public class Map extends Sprite {
public var _objMap:Array;
public var _tilesize:int;// = 32
private var _mapsize:Object;
public var _map_layer:Sprite;
public var _tileDef:Object;
public var _obj_layer:Sprite;
public var _tileMap:Array;
public var _main:Main;
public var _mapObjects:Array;
public var _mapdata:Object;
public function Map(_arg1):void{
_tilesize = 32;
super();
_main = _arg1;
_map_layer = new Sprite();
_obj_layer = new Sprite();
addChild(_map_layer);
addChild(_obj_layer);
}
public function isObject(_arg1, _arg2){
var _local3:*;
_local3 = _objMap[_arg2][_arg1];
if (_local3 == -1){
return (false);
};
return (_mapObjects[_local3]);
}
public function isHole(_arg1, _arg2):Boolean{
var _local3:*;
_local3 = _tileMap[_arg2][_arg1];
if (_local3 == 2){
return (true);
};
return (false);
}
public function loadObjMap():void{
var _local1:*;
var _local2:*;
var _local3:*;
_objMap = new Array();
_local1 = 0;
while (_local1 < _mapsize.y) {
_objMap[_local1] = [];
_local3 = 0;
while (_local3 < _mapsize.x) {
_objMap[_local1][_local3] = -1;
_local3++;
};
_local1++;
};
for (_local2 in _mapObjects) {
_mapObjects[_local2].addToObjMap(_objMap);
};
}
public function isExit(_arg1, _arg2):Boolean{
var _local3:*;
_local3 = _tileMap[_arg2][_arg1];
if (_local3 == 3){
return (true);
};
return (false);
}
public function drawMap():void{
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
_tileMap = new Array();
_local1 = 0;
while (_local1 < _mapsize.y) {
_tileMap[_local1] = [];
_local3 = 0;
while (_local3 < _mapsize.x) {
_local4 = _mapdata.data.tiles[_local1][_local3];
draw_tile(_local3, _local1, _local4);
_local3++;
};
_local1++;
};
_mapObjects = new Array();
for (_local2 in _mapdata.data.objects) {
drawObject(_mapdata.data.objects[_local2]);
};
loadObjMap();
}
public function loadMap(_arg1, _arg2):void{
_mapdata = _arg1;
_tileDef = _arg2;
_mapsize = {x:_mapdata.data.tiles[0].length, y:_mapdata.data.tiles.length};
}
public function isFreeForBox(_arg1, _arg2):Boolean{
var _local3:*;
_local3 = _tileMap[_arg2][_arg1];
if ((((_local3 == 0)) || ((_local3 == 2)))){
return (true);
};
return (false);
}
private function drawObject(_arg1):void{
var _local2:*;
var _local3:*;
_local2 = _mapObjects.length;
_arg1.id = _local2;
if (_arg1.type == "Box"){
_local3 = new Box(_main, _arg1);
} else {
if (_arg1.type == "RotateBlock"){
_local3 = new RotateBlock(_main, _arg1);
};
};
_mapObjects.push(_local3);
_obj_layer.addChild(_local3);
}
private function draw_tile(_arg1, _arg2, _arg3):void{
var _local4:*;
var _local5:Class;
var _local6:*;
_tileMap[_arg2][_arg1] = _arg3;
_local4 = _tileDef[_arg3].name;
_local5 = (getDefinitionByName(_local4) as Class);
_local6 = new (_local5);
_local6.x = (_arg1 * _tilesize);
_local6.y = (_arg2 * _tilesize);
_map_layer.addChild(_local6);
}
public function setFloor(_arg1, _arg2):void{
draw_tile(_arg1, _arg2, 0);
}
public function isWalkable(_arg1, _arg2):Boolean{
var _local3:*;
_local3 = _tileMap[_arg2][_arg1];
if ((((_local3 == 0)) || ((_local3 == 3)))){
return (true);
};
return (false);
}
}
}//package
Section 16
//MapObject (MapObject)
package {
import flash.display.*;
import flash.events.*;
public class MapObject extends Sprite {
public var _type:String;
public var _ypos:int;
public var _active:Boolean;// = true
public var _speed:Number;
public var _isMoveObj:Boolean;
public var _xmod:Number;// = 0
public var _moving:Boolean;
public var _main:Main;
public var _id:int;
public var _xpos:int;
public var _ymod:Number;// = 0
public function MapObject():void{
_xmod = 0;
_ymod = 0;
_active = true;
super();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function setxy():void{
x = (_xpos * _main._game._map._tilesize);
y = (_ypos * _main._game._map._tilesize);
}
public function checkStop():void{
var _local1:*;
var _local2:*;
if (!_moving){
return;
};
_local1 = (_xpos * _main._game._map._tilesize);
_local2 = (_ypos * _main._game._map._tilesize);
if ((((x == _local1)) && ((y == _local2)))){
_xmod = 0;
_ymod = 0;
_moving = false;
stopAction();
};
}
public function moveObject():void{
if (_moving){
x = (x + (_xmod * _speed));
y = (y + (_ymod * _speed));
};
}
public function onEnterFrame(_arg1:Event):void{
if (((!(_main._pause)) && (_isMoveObj))){
moveObject();
checkStop();
};
}
public function stopAction():void{
}
}
}//package
Section 17
//Maps (Maps)
package {
public class Maps {
public var _mapdata;
public var _tileDef:Array;
public function Maps(){
_tileDef = new Array();
super();
loadMaps();
loadTileDef();
}
public function loadTileDef():void{
_tileDef = [{name:"floor", id:0}, {name:"wall", id:1}, {name:"hole", id:2}, {name:"exit", id:3}];
}
public function loadMaps():void{
var _local1:*;
_local1 = [{meta:{label:"Easy Course"}, floors:[{meta:{label:"leveltext 1"}, data:{player:[{x:16, y:7, skin:"kwirk"}], objects:[{type:"RotateBlock", x:7, y:7, btype:3, angle:0}, {type:"RotateBlock", x:12, y:7, btype:3, angle:180}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 2"}, data:{player:[{x:15, y:7, skin:"kwirk"}], objects:[{type:"Box", x:9, y:6, w:2, h:1}, {type:"Box", x:9, y:7, w:2, h:1}, {type:"Box", x:9, y:8, w:2, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 3"}, data:{player:[{x:14, y:7, skin:"kwirk"}], objects:[{type:"Box", x:10, y:8, w:2, h:2}, {type:"RotateBlock", x:8, y:9, btype:1, angle:0}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 4"}, data:{player:[{x:16, y:7, skin:"kwirk"}], objects:[{type:"Box", x:11, y:6, w:2, h:3}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 3, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 5"}, data:{player:[{x:15, y:8, skin:"kwirk"}], objects:[{type:"Box", x:10, y:8, w:1, h:1}, {type:"RotateBlock", x:9, y:8, btype:2, angle:0}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 6"}, data:{player:[{x:14, y:7, skin:"kwirk"}, {x:14, y:9, skin:"kwirk"}], objects:[{type:"Box", x:12, y:8, w:1, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 7"}, data:{player:[{x:14, y:8, skin:"kwirk"}], objects:[{type:"RotateBlock", x:7, y:8, btype:4, angle:0}, {type:"RotateBlock", x:8, y:6, btype:2, angle:0}, {type:"RotateBlock", x:8, y:10, btype:2, angle:0}, {type:"RotateBlock", x:10, y:6, btype:0, angle:270}, {type:"RotateBlock", x:10, y:8, btype:0, angle:270}, {type:"RotateBlock", x:10, y:10, btype:0, angle:270}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 8"}, data:{player:[{x:15, y:9, skin:"kwirk"}], objects:[{type:"Box", x:5, y:7, w:1, h:4}, {type:"Box", x:7, y:7, w:1, h:5}, {type:"Box", x:8, y:7, w:1, h:2}, {type:"Box", x:9, y:5, w:1, h:4}, {type:"Box", x:9, y:9, w:1, h:2}, {type:"Box", x:10, y:7, w:1, h:2}, {type:"Box", x:11, y:7, w:1, h:5}, {type:"Box", x:13, y:7, w:1, h:4}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 9"}, data:{player:[{x:15, y:8, skin:"kwirk"}], objects:[{type:"Box", x:11, y:7, w:1, h:1}, {type:"Box", x:11, y:8, w:1, h:1}, {type:"Box", x:11, y:9, w:1, h:1}, {type:"Box", x:9, y:5, w:1, h:1}, {type:"Box", x:9, y:11, w:1, h:1}, {type:"RotateBlock", x:7, y:8, btype:2, angle:0}, {type:"RotateBlock", x:9, y:9, btype:1, angle:180}, {type:"RotateBlock", x:9, y:7, btype:1, angle:270}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 10"}, data:{player:[{x:15, y:10, skin:"kwirk"}, {x:15, y:7, skin:"kwirk"}], objects:[{type:"RotateBlock", x:10, y:7, btype:1, angle:0}, {type:"RotateBlock", x:11, y:9, btype:1, angle:0}, {type:"RotateBlock", x:8, y:7, btype:1, angle:270}, {type:"RotateBlock", x:9, y:8, btype:1, angle:180}, {type:"RotateBlock", x:10, y:10, btype:1, angle:90}, {type:"RotateBlock", x:8, y:10, btype:1, angle:180}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}]}, {meta:{label:"Medium Course"}, floors:[{meta:{label:"leveltext 1"}, data:{player:[{x:9, y:5, skin:"kwirk"}], objects:[{type:"RotateBlock", x:6, y:9, btype:3, angle:90}, {type:"RotateBlock", x:12, y:9, btype:3, angle:90}, {type:"RotateBlock", x:11, y:7, btype:1, angle:90}, {type:"RotateBlock", x:7, y:7, btype:1, angle:180}, {type:"RotateBlock", x:10, y:6, btype:1, angle:270}, {type:"RotateBlock", x:8, y:4, btype:1, angle:90}, {type:"Box", x:8, y:10, w:3, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 2"}, data:{player:[{x:3, y:1, skin:"kwirk"}], objects:[{type:"Box", x:3, y:5, w:3, h:1}, {type:"Box", x:4, y:7, w:1, h:2}, {type:"Box", x:3, y:7, w:1, h:3}, {type:"Box", x:8, y:3, w:1, h:1}, {type:"Box", x:12, y:1, w:1, h:1}, {type:"Box", x:12, y:7, w:3, h:1}, {type:"Box", x:13, y:11, w:1, h:5}, {type:"RotateBlock", x:9, y:3, btype:3, angle:0}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1], [1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 1, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 2, 0, 1, 2, 2, 0, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 2, 2, 2, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 2, 2, 0, 2, 0, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 2, 2, 2, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 3, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0, 0, 1, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 3"}, data:{player:[{x:14, y:8, skin:"kwirk"}], objects:[{type:"Box", x:8, y:5, w:1, h:1}, {type:"Box", x:9, y:3, w:1, h:3}, {type:"Box", x:9, y:11, w:1, h:3}, {type:"Box", x:8, y:11, w:1, h:1}, {type:"Box", x:11, y:7, w:1, h:3}, {type:"Box", x:12, y:8, w:2, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 2, 0, 2, 1, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 3, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 2, 0, 2, 1, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 4"}, data:{player:[{x:8, y:3, skin:"kwirk"}], objects:[{type:"Box", x:4, y:3, w:2, h:1}, {type:"Box", x:10, y:4, w:3, h:2}, {type:"Box", x:4, y:6, w:2, h:3}, {type:"Box", x:14, y:4, w:2, h:2}, {type:"Box", x:15, y:9, w:1, h:3}, {type:"Box", x:15, y:13, w:1, h:2}, {type:"Box", x:4, y:14, w:3, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1], [1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 2, 2, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 1, 3, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 5"}, data:{player:[{x:3, y:5, skin:"kwirk"}], objects:[{type:"RotateBlock", x:8, y:4, btype:3, angle:90}, {type:"RotateBlock", x:12, y:9, btype:3, angle:0}, {type:"RotateBlock", x:15, y:10, btype:4, angle:0}, {type:"RotateBlock", x:16, y:5, btype:4, angle:0}, {type:"RotateBlock", x:8, y:9, btype:1, angle:0}, {type:"RotateBlock", x:12, y:5, btype:1, angle:180}, {type:"Box", x:14, y:6, w:1, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 6"}, data:{player:[{x:17, y:8, skin:"kwirk"}], objects:[{type:"Box", x:9, y:8, w:1, h:1}, {type:"Box", x:11, y:7, w:1, h:3}, {type:"Box", x:12, y:8, w:3, h:1}, {type:"Box", x:15, y:8, w:1, h:2}, {type:"Box", x:8, y:9, w:1, h:4}, {type:"Box", x:8, y:5, w:1, h:4}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 3, 0, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 7"}, data:{player:[{x:8, y:8, skin:"kwirk"}], objects:[{type:"RotateBlock", x:7, y:2, btype:3, angle:270}, {type:"RotateBlock", x:6, y:5, btype:3, angle:0}, {type:"RotateBlock", x:7, y:14, btype:3, angle:90}, {type:"RotateBlock", x:6, y:11, btype:3, angle:0}, {type:"RotateBlock", x:12, y:1, btype:1, angle:180}, {type:"RotateBlock", x:14, y:1, btype:1, angle:180}, {type:"RotateBlock", x:12, y:15, btype:1, angle:270}, {type:"RotateBlock", x:14, y:15, btype:1, angle:270}, {type:"RotateBlock", x:14, y:7, btype:1, angle:270}, {type:"Box", x:5, y:8, w:2, h:1}, {type:"Box", x:8, y:3, w:1, h:3}, {type:"Box", x:10, y:3, w:1, h:3}, {type:"Box", x:8, y:11, w:1, h:3}, {type:"Box", x:10, y:11, w:1, h:3}, {type:"Box", x:12, y:12, w:1, h:1}, {type:"Box", x:15, y:12, w:1, h:1}, {type:"Box", x:15, y:4, w:1, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 3, 2, 2, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 8"}, data:{player:[{x:17, y:13, skin:"kwirk"}], objects:[{type:"Box", x:10, y:2, w:4, h:1}, {type:"Box", x:13, y:4, w:1, h:1}, {type:"Box", x:14, y:5, w:1, h:1}, {type:"Box", x:13, y:9, w:1, h:1}, {type:"Box", x:13, y:8, w:1, h:1}, {type:"Box", x:13, y:5, w:1, h:3}, {type:"Box", x:5, y:9, w:2, h:1}, {type:"Box", x:7, y:12, w:1, h:1}, {type:"Box", x:11, y:10, w:1, h:1}, {type:"Box", x:10, y:10, w:1, h:2}, {type:"Box", x:11, y:12, w:1, h:1}, {type:"Box", x:10, y:13, w:1, h:1}, {type:"Box", x:12, y:13, w:1, h:1}, {type:"Box", x:13, y:12, w:1, h:1}, {type:"Box", x:13, y:13, w:1, h:2}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 2, 2, 2, 1, 2, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 2, 2, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 2, 1, 2, 2, 2, 1, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 3, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 9"}, data:{player:[{x:11, y:16, skin:"kwirk"}, {x:15, y:10, skin:"kwirk"}, {x:5, y:16, skin:"kwirk"}], objects:[{type:"Box", x:3, y:6, w:2, h:1}, {type:"Box", x:5, y:7, w:1, h:1}, {type:"Box", x:6, y:6, w:2, h:3}, {type:"Box", x:7, y:9, w:1, h:1}, {type:"Box", x:7, y:12, w:1, h:1}, {type:"Box", x:11, y:11, w:1, h:1}, {type:"Box", x:12, y:10, w:1, h:2}, {type:"Box", x:10, y:3, w:1, h:2}, {type:"Box", x:8, y:5, w:3, h:1}, {type:"Box", x:9, y:6, w:2, h:1}, {type:"Box", x:10, y:7, w:2, h:1}, {type:"Box", x:12, y:7, w:2, h:1}, {type:"Box", x:11, y:8, w:1, h:1}, {type:"Box", x:10, y:9, w:2, h:1}, {type:"RotateBlock", x:12, y:5, btype:1, angle:180}, {type:"RotateBlock", x:8, y:8, btype:1, angle:90}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 10"}, data:{player:[{x:9, y:1, skin:"kwirk"}], objects:[{type:"RotateBlock", x:2, y:4, btype:1, angle:270}, {type:"RotateBlock", x:2, y:7, btype:1, angle:90}, {type:"RotateBlock", x:17, y:7, btype:1, angle:180}, {type:"RotateBlock", x:17, y:4, btype:1, angle:0}, {type:"Box", x:3, y:2, w:2, h:2}, {type:"Box", x:5, y:2, w:2, h:2}, {type:"Box", x:8, y:2, w:2, h:2}, {type:"Box", x:10, y:2, w:2, h:2}, {type:"Box", x:13, y:2, w:2, h:2}, {type:"Box", x:15, y:2, w:2, h:2}, {type:"Box", x:9, y:4, w:2, h:2}, {type:"Box", x:11, y:4, w:2, h:1}, {type:"Box", x:7, y:4, w:2, h:1}, {type:"Box", x:5, y:4, w:1, h:2}, {type:"Box", x:14, y:4, w:1, h:2}, {type:"Box", x:4, y:6, w:2, h:2}, {type:"Box", x:14, y:6, w:2, h:2}, {type:"Box", x:5, y:8, w:2, h:2}, {type:"Box", x:4, y:10, w:2, h:2}, {type:"Box", x:13, y:8, w:2, h:2}, {type:"Box", x:14, y:10, w:2, h:2}, {type:"Box", x:9, y:7, w:2, h:2}, {type:"Box", x:10, y:9, w:2, h:2}, {type:"Box", x:8, y:9, w:2, h:2}, {type:"Box", x:11, y:7, w:2, h:1}, {type:"Box", x:7, y:7, w:2, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}]}, {meta:{label:"Hard Course"}, floors:[{meta:{label:"leveltext 1"}, data:{player:[{x:7, y:7, skin:"kwirk"}], objects:[{type:"Box", x:7, y:10, w:3, h:1}, {type:"Box", x:10, y:10, w:3, h:1}, {type:"Box", x:9, y:7, w:2, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 3, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 2"}, data:{player:[{x:18, y:8, skin:"kwirk"}], objects:[{type:"Box", x:3, y:7, w:2, h:1}, {type:"Box", x:3, y:8, w:2, h:1}, {type:"Box", x:3, y:9, w:2, h:1}, {type:"Box", x:8, y:4, w:2, h:1}, {type:"Box", x:8, y:12, w:2, h:1}, {type:"RotateBlock", x:13, y:11, btype:1, angle:0}, {type:"RotateBlock", x:13, y:6, btype:1, angle:90}, {type:"RotateBlock", x:18, y:6, btype:1, angle:180}, {type:"RotateBlock", x:18, y:11, btype:1, angle:270}, {type:"Box", x:15, y:7, w:3, h:3}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1], [1, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 3"}, data:{player:[{x:16, y:8, skin:"kwirk"}], objects:[{type:"Box", x:12, y:4, w:3, h:1}, {type:"Box", x:13, y:6, w:1, h:1}, {type:"Box", x:12, y:7, w:2, h:1}, {type:"Box", x:15, y:12, w:1, h:1}, {type:"Box", x:11, y:12, w:3, h:1}, {type:"Box", x:15, y:10, w:1, h:2}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 4"}, data:{player:[{x:16, y:2, skin:"kwirk"}], objects:[{type:"RotateBlock", x:5, y:3, btype:0, angle:90}, {type:"Box", x:6, y:2, w:1, h:1}, {type:"Box", x:6, y:4, w:1, h:1}, {type:"Box", x:7, y:3, w:2, h:1}, {type:"RotateBlock", x:10, y:4, btype:1, angle:180}, {type:"RotateBlock", x:10, y:2, btype:0, angle:180}, {type:"RotateBlock", x:13, y:3, btype:1, angle:270}, {type:"Box", x:11, y:3, w:1, h:1}, {type:"RotateBlock", x:14, y:4, btype:1, angle:90}, {type:"RotateBlock", x:9, y:13, btype:1, angle:270}, {type:"RotateBlock", x:9, y:10, btype:1, angle:90}, {type:"RotateBlock", x:12, y:10, btype:1, angle:270}, {type:"RotateBlock", x:9, y:15, btype:1, angle:0}, {type:"Box", x:14, y:6, w:1, h:1}, {type:"Box", x:13, y:5, w:1, h:3}, {type:"Box", x:14, y:8, w:1, h:1}, {type:"Box", x:14, y:11, w:1, h:2}, {type:"Box", x:15, y:12, w:1, h:3}, {type:"Box", x:14, y:14, w:1, h:1}, {type:"RotateBlock", x:14, y:13, btype:0, angle:270}, {type:"Box", x:12, y:15, w:1, h:1}, {type:"Box", x:11, y:14, w:2, h:1}, {type:"Box", x:11, y:13, w:1, h:1}, {type:"Box", x:12, y:12, w:1, h:2}, {type:"Box", x:10, y:7, w:2, h:2}, {type:"Box", x:3, y:7, w:2, h:1}, {type:"RotateBlock", x:4, y:8, btype:0, angle:90}, {type:"RotateBlock", x:15, y:7, btype:0, angle:270}, {type:"RotateBlock", x:12, y:5, btype:0, angle:180}, {type:"RotateBlock", x:6, y:10, btype:1, angle:90}, {type:"Box", x:7, y:9, w:1, h:1}, {type:"Box", x:4, y:9, w:1, h:2}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 1, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 3, 2, 2, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 2, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 5"}, data:{player:[{x:18, y:8, skin:"kwirk"}], objects:[{type:"RotateBlock", x:3, y:3, btype:1, angle:90}, {type:"RotateBlock", x:6, y:2, btype:1, angle:90}, {type:"RotateBlock", x:8, y:3, btype:1, angle:90}, {type:"RotateBlock", x:3, y:13, btype:1, angle:0}, {type:"RotateBlock", x:6, y:14, btype:1, angle:0}, {type:"RotateBlock", x:8, y:13, btype:1, angle:0}, {type:"Box", x:6, y:4, w:1, h:1}, {type:"Box", x:6, y:12, w:1, h:1}, {type:"Box", x:5, y:5, w:2, h:2}, {type:"Box", x:5, y:10, w:2, h:2}, {type:"Box", x:3, y:9, w:2, h:2}, {type:"Box", x:3, y:6, w:2, h:2}, {type:"Box", x:6, y:7, w:1, h:1}, {type:"Box", x:7, y:8, w:1, h:1}, {type:"Box", x:6, y:9, w:1, h:1}, {type:"Box", x:8, y:7, w:1, h:1}, {type:"Box", x:8, y:8, w:1, h:1}, {type:"Box", x:8, y:9, w:1, h:1}, {type:"Box", x:16, y:6, w:1, h:1}, {type:"Box", x:16, y:10, w:1, h:1}, {type:"Box", x:15, y:9, w:1, h:1}, {type:"Box", x:15, y:8, w:1, h:1}, {type:"Box", x:15, y:7, w:1, h:1}, {type:"RotateBlock", x:8, y:6, btype:1, angle:270}, {type:"RotateBlock", x:8, y:10, btype:1, angle:180}, {type:"RotateBlock", x:10, y:13, btype:0, angle:180}, {type:"RotateBlock", x:12, y:13, btype:0, angle:180}, {type:"RotateBlock", x:10, y:3, btype:0, angle:0}, {type:"RotateBlock", x:12, y:3, btype:0, angle:0}, {type:"RotateBlock", x:14, y:6, btype:1, angle:0}, {type:"RotateBlock", x:14, y:3, btype:1, angle:180}, {type:"RotateBlock", x:14, y:10, btype:1, angle:90}, {type:"RotateBlock", x:14, y:13, btype:1, angle:270}, {type:"RotateBlock", x:13, y:8, btype:0, angle:90}, {type:"RotateBlock", x:12, y:7, btype:1, angle:270}, {type:"RotateBlock", x:12, y:9, btype:1, angle:180}, {type:"RotateBlock", x:10, y:5, btype:3, angle:0}, {type:"RotateBlock", x:10, y:11, btype:3, angle:0}, {type:"RotateBlock", x:10, y:8, btype:3, angle:180}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 6"}, data:{player:[{x:4, y:2, skin:"kwirk"}], objects:[{type:"RotateBlock", x:5, y:3, btype:0, angle:0}, {type:"RotateBlock", x:5, y:4, btype:0, angle:270}, {type:"Box", x:7, y:2, w:1, h:1}, {type:"Box", x:4, y:6, w:1, h:1}, {type:"Box", x:13, y:3, w:1, h:1}, {type:"Box", x:10, y:2, w:2, h:1}, {type:"Box", x:11, y:5, w:3, h:1}, {type:"Box", x:10, y:5, w:1, h:1}, {type:"Box", x:8, y:6, w:2, h:1}, {type:"Box", x:7, y:9, w:3, h:2}, {type:"RotateBlock", x:5, y:10, btype:3, angle:270}, {type:"RotateBlock", x:12, y:11, btype:3, angle:90}, {type:"RotateBlock", x:7, y:4, btype:1, angle:90}, {type:"Box", x:6, y:5, w:1, h:1}, {type:"Box", x:5, y:12, w:1, h:1}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 2, 2, 0, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 3, 0, 2, 0, 0, 0, 2, 0, 0, 2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 7"}, data:{player:[{x:13, y:4, skin:"kwirk"}], objects:[{type:"RotateBlock", x:7, y:11, btype:0, angle:0}, {type:"Box", x:9, y:11, w:1, h:1}, {type:"Box", x:12, y:10, w:1, h:1}, {type:"Box", x:12, y:8, w:1, h:1}, {type:"Box", x:13, y:5, w:1, h:1}, {type:"Box", x:12, y:4, w:1, h:1}, {type:"Box", x:8, y:4, w:1, h:1}, {type:"Box", x:9, y:6, w:1, h:1}, {type:"RotateBlock", x:10, y:5, btype:0, angle:0}, {type:"RotateBlock", x:10, y:7, btype:0, angle:270}, {type:"RotateBlock", x:12, y:7, btype:1, angle:270}, {type:"RotateBlock", x:7, y:6, btype:3, angle:180}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 2, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 8"}, data:{player:[{x:4, y:8, skin:"kwirk"}, {x:7, y:8, skin:"kwirk"}, {x:10, y:8, skin:"kwirk"}, {x:13, y:8, skin:"kwirk"}], objects:[{type:"Box", x:3, y:13, w:1, h:1}, {type:"Box", x:5, y:3, w:1, h:11}, {type:"Box", x:8, y:4, w:1, h:11}, {type:"Box", x:11, y:3, w:1, h:11}, {type:"RotateBlock", x:9, y:3, btype:1, angle:90}, {type:"RotateBlock", x:12, y:14, btype:1, angle:0}, {type:"RotateBlock", x:6, y:14, btype:1, angle:0}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 1, 1], [1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 9"}, data:{player:[{x:17, y:2, skin:"kwirk"}], objects:[{type:"Box", x:5, y:12, w:2, h:2}, {type:"Box", x:7, y:12, w:1, h:1}, {type:"Box", x:4, y:3, w:1, h:1}, {type:"Box", x:5, y:2, w:1, h:1}, {type:"Box", x:5, y:9, w:1, h:1}, {type:"Box", x:16, y:13, w:1, h:1}, {type:"Box", x:13, y:11, w:1, h:1}, {type:"Box", x:16, y:2, w:1, h:1}, {type:"Box", x:17, y:3, w:1, h:1}, {type:"Box", x:15, y:3, w:2, h:2}, {type:"Box", x:11, y:7, w:1, h:1}, {type:"Box", x:12, y:5, w:1, h:1}, {type:"Box", x:13, y:6, w:2, h:1}, {type:"Box", x:14, y:8, w:1, h:1}, {type:"Box", x:7, y:2, w:2, h:2}, {type:"Box", x:7, y:4, w:2, h:1}, {type:"Box", x:16, y:7, w:1, h:2}, {type:"RotateBlock", x:5, y:7, btype:3, angle:90}, {type:"RotateBlock", x:11, y:5, btype:3, angle:180}, {type:"RotateBlock", x:11, y:3, btype:0, angle:0}, {type:"RotateBlock", x:5, y:5, btype:1, angle:180}, {type:"RotateBlock", x:16, y:5, btype:1, angle:90}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 2, 1, 1, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 2, 0, 1, 0, 1, 1], [1, 1, 1, 1, 0, 0, 1, 2, 0, 0, 1, 1, 1, 0, 2, 0, 2, 2, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1], [1, 1, 1, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 1, 1], [1, 1, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}, {meta:{label:"leveltext 10"}, data:{player:[{x:17, y:8, skin:"kwirk"}], objects:[{type:"Box", x:10, y:7, w:1, h:1}, {type:"Box", x:10, y:9, w:1, h:1}, {type:"Box", x:13, y:4, w:1, h:1}, {type:"Box", x:13, y:12, w:1, h:1}, {type:"Box", x:15, y:4, w:1, h:1}, {type:"Box", x:15, y:12, w:1, h:1}, {type:"Box", x:15, y:11, w:1, h:1}, {type:"Box", x:14, y:10, w:2, h:1}, {type:"Box", x:15, y:5, w:1, h:1}, {type:"Box", x:14, y:6, w:2, h:1}, {type:"Box", x:15, y:7, w:1, h:3}, {type:"Box", x:17, y:7, w:1, h:1}, {type:"Box", x:17, y:9, w:1, h:1}, {type:"Box", x:11, y:7, w:3, h:1}, {type:"Box", x:11, y:9, w:3, h:1}, {type:"Box", x:11, y:8, w:2, h:1}, {type:"Box", x:12, y:5, w:1, h:2}, {type:"Box", x:12, y:10, w:1, h:2}], tiles:[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 0, 0, 0, 0, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 3, 2, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}}]}];
_mapdata = _local1;
}
}
}//package
Section 18
//Menu (Menu)
package {
import flash.display.*;
import flash.utils.*;
public class Menu extends Sprite {
var _main:Main;
var _activeScreen;
public function Menu(_arg1):void{
_main = _arg1;
}
public function clearScreen():void{
if (_activeScreen != null){
removeChild(_activeScreen);
};
}
public function showScreen(_arg1, _arg2):void{
var _local3:Class;
_local3 = (getDefinitionByName(("m_" + _arg1)) as Class);
_activeScreen = new _local3(_main, _arg2);
addChild(_activeScreen);
}
}
}//package
Section 19
//menuSelect (menuSelect)
package {
import flash.display.*;
public dynamic class menuSelect extends MovieClip {
}
}//package
Section 20
//menuText (menuText)
package {
import flash.display.*;
import flash.text.*;
public dynamic class menuText extends MovieClip {
public var t_label:TextField;
}
}//package
Section 21
//MochiAd (MochiAd)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.system.*;
public class MochiAd {
public static function getVersion():String{
return ("2.2");
}
public static function showTimedAd(_arg1:Object):void{
MochiAd.showInterLevelAd(_arg1);
}
public static function _allowDomains(_arg1:String):String{
var _local2:String;
_local2 = _arg1.split("/")[2].split(":")[0];
Security.allowDomain("*");
Security.allowDomain(_local2);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(_local2);
return (_local2);
}
public static function load(_arg1:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var depth:Number;
var mc:MovieClip;
var wh:Array;
var lv:URLVariables;
var k:String;
var server:String;
var hostname:String;
var lc:LocalConnection;
var name:String;
var loader:Loader;
var f:Function;
var g:Function;
var req:URLRequest;
var v:Object;
var options = _arg1;
DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
if (!MochiAd._isNetworkAvailable()){
return (null);
};
try {
if (clip._mochiad_loaded){
return (null);
};
} catch(e:Error) {
throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, "_mochiad", depth);
wh = MochiAd._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
};
lv = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
lv.lc = name;
lv.st = getTimer();
loader = new Loader();
f = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
mc._mochiad_ctr_failed = true;
};
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
g = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
MochiAd.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest((server + ".swf"));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.load(req);
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function sendHighScore(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{
var _local4:MovieClip;
_local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id});
if (!_local4){
return (false);
};
_local4.doSend(["sendHighScore", _arg1], _arg2, _arg3);
return (true);
}
public static function _parseOptions(_arg1:Object, _arg2:Object):Object{
var _local3:Object;
var _local4:String;
var _local5:Array;
var _local6:Number;
var _local7:Array;
_local3 = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
if (_arg1){
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
};
if (_local3.clip == undefined){
throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite."));
};
_arg1 = _local3.clip.loaderInfo.parameters.mochiad_options;
if (_arg1){
_local5 = _arg1.split("&");
_local6 = 0;
while (_local6 < _local5.length) {
_local7 = _local5[_local6].split("=");
_local3[unescape(_local7[0])] = unescape(_local7[1]);
_local6++;
};
};
if (_local3.id == "test"){
};
return (_local3);
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function _cleanup(_arg1:Object):void{
var idx:Number;
var k:String;
var lc:LocalConnection;
var f:Function;
var mc = _arg1;
if (("lc" in mc)){
lc = mc.lc;
f = function ():void{
try {
lc.client = null;
lc.close();
} catch(e:Error) {
};
};
setTimeout(f, 0);
};
idx = DisplayObjectContainer(mc).numChildren;
while (idx > 0) {
idx = (idx - 1);
DisplayObjectContainer(mc).removeChildAt(idx);
};
for (k in mc) {
delete mc[k];
};
}
public static function unload(_arg1:Object):Boolean{
if (((_arg1.clip) && (_arg1.clip._mochiad))){
_arg1 = _arg1.clip;
};
if (!_arg1._mochiad){
return (false);
};
if (_arg1._mochiad.onUnload){
_arg1._mochiad.onUnload();
};
delete _arg1._mochiad_loaded;
delete _arg1._mochiad;
return (true);
}
public static function showInterLevelAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var options = _arg1;
DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
options.ad_finished();
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
_local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object;
_local2 = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = (_arg1 - 250);
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Number;
var _local3:Boolean;
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
_local1 = this.parent._mochiad_ctr;
_local2 = (getTimer() - this.started);
_local3 = false;
if (!chk.showing){
_local4 = _local1.loaderInfo.bytesTotal;
if ((((_local4 > 0)) || (("number" == "undefined")))){
chk.showing = true;
chk.started = getTimer();
} else {
if (_local2 > chk.ad_timeout){
_local3 = true;
};
};
};
if ((((_local2 > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){
_local3 = true;
};
if (_local3){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _getRes(_arg1:Object, _arg2:Object):Array{
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Array;
_local3 = _arg2.getBounds(_arg2.root);
_local4 = 0;
_local5 = 0;
if (typeof(_arg1.res) != "undefined"){
_local6 = _arg1.res.split("x");
_local4 = parseFloat(_local6[0]);
_local5 = parseFloat(_local6[1]);
} else {
_local4 = (_local3.xMax - _local3.xMin);
_local5 = (_local3.yMax - _local3.yMin);
};
if ((((_local4 == 0)) || ((_local5 == 0)))){
_local4 = _arg2.stage.stageWidth;
_local5 = _arg2.stage.stageHeight;
};
return ([_local4, _local5]);
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{
var _local4:MovieClip;
_local4 = new MovieClip();
if (((false) && (_arg3))){
_arg1.addChildAt(_local4, _arg3);
} else {
_arg1.addChild(_local4);
};
_arg1[_arg2] = _local4;
_local4["_name"] = _arg2;
return (_local4);
}
public static function _loadCommunicator(_arg1:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var clipname:String;
var server:String;
var depth:Number;
var mc:MovieClip;
var lv:URLVariables;
var k:String;
var lc:LocalConnection;
var name:String;
var req:URLRequest;
var loader:Loader;
var options = _arg1;
DEFAULTS = {com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
clipname = ("_mochiad_com_" + options.id);
if (!MochiAd._isNetworkAvailable()){
return (null);
};
if (clip[clipname]){
return (clip[clipname]);
};
server = (options.com_server + options.id);
MochiAd._allowDomains(server);
delete options.id;
delete options.com_server;
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, clipname, depth);
lv = new URLVariables();
for (k in options) {
lv[k] = options[k];
};
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.name = name;
mc.lc = lc;
lv.lc = name;
mc._id = 0;
mc._queue = [];
mc.rpcResult = function (_arg1:Object):void{
var _local3:Array;
var _local4:Array;
var _local5:Number;
var _local6:Object;
var _local7:Object;
_arg1 = parseInt(_arg1.toString());
_local3 = mc._callbacks[_arg1];
if (typeof(_local3) == "undefined"){
return;
};
delete mc._callbacks[_arg1];
_local4 = [];
_local5 = 2;
while (_local5 < _local3.length) {
_local4.push(_local3[_local5]);
_local5++;
};
_local5 = 1;
while (_local5 < arguments.length) {
_local4.push(arguments[_local5]);
_local5++;
};
_local6 = _local3[1];
_local7 = _local3[0];
if (((_local7) && ((typeof(_local6) == "string")))){
_local6 = _local7[_local6];
};
if (typeof(_local6) == "function"){
_local6.apply(_local7, _local4);
};
};
mc._didConnect = function (_arg1:String):void{
var _local2:Array;
var _local3:Function;
var _local4:Number;
var _local5:Array;
mc._endpoint = _arg1;
_local2 = mc._queue;
delete mc._queue;
_local3 = mc.doSend;
_local4 = 0;
while (_local4 < _local2.length) {
_local5 = _local2[_local4];
_local3.apply(this, _local5);
_local4++;
};
};
mc.doSend = function (_arg1:Array, _arg2:Object, _arg3:Object):void{
var _local5:Number;
var _local6:LocalConnection;
var _local7:Array;
var _local8:Number;
if (mc._endpoint == null){
_local7 = [];
_local8 = 0;
while (_local8 < arguments.length) {
_local7.push(arguments[_local8]);
_local8++;
};
mc._queue.push(_local7);
return;
};
mc._id = (mc._id + 1);
_local5 = mc._id;
mc._callbacks[_local5] = [_arg2, ((_arg3) || (_arg2))];
_local6 = new LocalConnection();
_local6.send(mc._endpoint, "rpc", _local5, _arg1);
};
mc._callbacks = {};
mc._callbacks[0] = [mc, "_didConnect"];
lv.st = getTimer();
req = new URLRequest((server + ".swf"));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader = new Loader();
loader.load(req);
mc.addChild(loader);
mc._mochiad_com = loader;
return (mc);
}
public static function showPreGameAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var bar:MovieClip;
var bar_color:Number;
var bar_background:Number;
var bar_outline:Number;
var backing_mc:MovieClip;
var backing:Object;
var inside_mc:MovieClip;
var inside:Object;
var outline_mc:MovieClip;
var outline:Object;
var complete:Boolean;
var unloaded:Boolean;
var f:Function;
var r:MovieClip;
var options = _arg1;
DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
var fn:Function;
MochiAd._cleanup(mc);
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.x = (w * -0.5);
chk.y = (h * -0.5);
bar = createEmptyMovieClip(chk, "_mochiad_bar", 4);
bar.x = 10;
bar.y = (h - 20);
bar_color = options.color;
delete options.color;
bar_background = options.background;
delete options.background;
bar_outline = options.outline;
delete options.outline;
backing_mc = createEmptyMovieClip(bar, "_outline", 1);
backing = backing_mc.graphics;
backing.beginFill(bar_background);
backing.moveTo(0, 0);
backing.lineTo((w - 20), 0);
backing.lineTo((w - 20), 10);
backing.lineTo(0, 10);
backing.lineTo(0, 0);
backing.endFill();
inside_mc = createEmptyMovieClip(bar, "_inside", 2);
inside = inside_mc.graphics;
inside.beginFill(bar_color);
inside.moveTo(0, 0);
inside.lineTo((w - 20), 0);
inside.lineTo((w - 20), 10);
inside.lineTo(0, 10);
inside.lineTo(0, 0);
inside.endFill();
inside_mc.scaleX = 0;
outline_mc = createEmptyMovieClip(bar, "_outline", 3);
outline = outline_mc.graphics;
outline.lineStyle(0, bar_outline, 100);
outline.moveTo(0, 0);
outline.lineTo((w - 20), 0);
outline.lineTo((w - 20), 10);
outline.lineTo(0, 10);
outline.lineTo(0, 0);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number;
_local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
complete = false;
unloaded = false;
f = function (_arg1:Event):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
complete = true;
if (unloaded){
MochiAd.unload(clip);
};
};
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
if ((clip.root is MovieClip)){
r = (clip.root as MovieClip);
if (r.framesLoaded >= r.totalFrames){
complete = true;
};
};
mc.unloadAd = function ():void{
unloaded = true;
if (complete){
MochiAd.unload(clip);
};
};
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object;
_local2 = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = _arg1;
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Object;
var _local3:Number;
var _local4:Boolean;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Object;
var _local10:Number;
var _local11:Number;
if (!this.parent.parent){
delete this["onEnterFrame"];
return;
};
_local1 = this.parent.parent.root;
_local2 = this.parent._mochiad_ctr;
_local3 = (getTimer() - this.started);
_local4 = false;
_local5 = _local1.loaderInfo.bytesTotal;
_local6 = _local1.loaderInfo.bytesLoaded;
if (complete){
_local6 = Math.max(1, _local6);
_local5 = _local6;
};
_local7 = ((100 * _local6) / _local5);
_local8 = ((100 * _local3) / chk.ad_msec);
_local9 = this._mochiad_bar._inside;
_local10 = Math.min(100, Math.min(((_local7) || (0)), _local8));
_local10 = Math.max(this.last_pcnt, _local10);
this.last_pcnt = _local10;
_local9.scaleX = (_local10 * 0.01);
if (!chk.showing){
_local11 = _local2.loaderInfo.bytesTotal;
if ((((_local11 > 0)) || (("number" == "undefined")))){
chk.showing = true;
chk.started = getTimer();
} else {
if (_local3 > chk.ad_timeout){
_local4 = true;
};
};
};
if ((((_local3 > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){
_local4 = true;
};
if (((complete) && (_local4))){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(_arg1:Object):void{
MochiAd.showPreGameAd(_arg1);
}
public static function fetchHighScores(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{
var _local4:MovieClip;
_local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id});
if (!_local4){
return (false);
};
_local4.doSend(["fetchHighScores", _arg1], _arg2, _arg3);
return (true);
}
public static function doOnEnterFrame(_arg1:MovieClip):void{
var f:Function;
var mc = _arg1;
f = function (_arg1:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
}
}//package
Section 22
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("core.mochibot.com");
Security.allowInsecureDomain("core.mochibot.com");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 23
//p_kwirk (p_kwirk)
package {
import flash.display.*;
public dynamic class p_kwirk extends MovieClip {
public function p_kwirk(){
addFrameScript(7, frame8, 15, frame16, 23, frame24, 31, frame32, 38, frame39);
}
function frame16(){
gotoAndPlay("walk_down");
}
function frame8(){
gotoAndPlay("walk_up");
}
function frame24(){
gotoAndPlay("walk_left");
}
function frame39(){
gotoAndStop("walk_down");
}
function frame32(){
gotoAndPlay("walk_right");
}
}
}//package
Section 24
//p_kwirk2 (p_kwirk2)
package {
import flash.display.*;
public dynamic class p_kwirk2 extends MovieClip {
}
}//package
Section 25
//Player (Player)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class Player extends Sprite {
public var _ypos:int;
public var _active:Boolean;// = false
public var _playerOut:Boolean;// = false
public var _speed:Number;// = 4
private var _skin:String;
public var _xmod:Number;// = 0
public var _nextPlayer;
public var _moving:Boolean;// = false
private var _main;
private var _gfx;
public var _xpos:int;
public var _ymod:Number;// = 0
public var _dir:String;// = "idle"
public function Player(_arg1, _arg2){
_xmod = 0;
_ymod = 0;
_moving = false;
_speed = 4;
_dir = "idle";
_active = false;
_playerOut = false;
super();
_main = _arg1;
_xpos = _arg2.x;
_ypos = _arg2.y;
_skin = _arg2.skin;
setxy();
draw();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function setxy():void{
x = (_xpos * _main._game._map._tilesize);
y = (_ypos * _main._game._map._tilesize);
}
private function movePlayer():void{
if (_moving){
x = (x + (_xmod * _speed));
y = (y + (_ymod * _speed));
};
}
private function checkStep():Boolean{
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = (_xpos + _xmod);
_local2 = (_ypos + _ymod);
if (_main._game._map.isWalkable(_local1, _local2)){
_local3 = _main._game._map.isObject(_local1, _local2);
if (_local3){
if (_local3._type == "box"){
if (_local3.pushObj(_xmod, _ymod)){
return (true);
};
} else {
if (_local3._type == "rblock"){
if (_local3.rotateObj(this)){
return (true);
};
};
};
return (false);
};
if (!_main._game.checkPlayer(_local1, _local2)){
return (true);
};
};
return (false);
}
public function draw():void{
var _local1:Class;
_local1 = (getDefinitionByName(("p_" + _skin)) as Class);
_gfx = new (_local1);
addChild(_gfx);
_gfx.gotoAndStop("walk_down");
}
public function remove(){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
_main._game._gameLayer.removeChild(this);
}
public function onEnterFrame(_arg1:Event):void{
if (((((!(_main._pause)) && (_active))) && (!(_playerOut)))){
keyCheck();
movePlayer();
};
}
private function keyCheck():void{
if (!_moving){
if (_main._keyLeft){
doStep("left");
} else {
if (_main._keyRight){
doStep("right");
} else {
if (_main._keyDown){
doStep("down");
} else {
if (_main._keyUp){
doStep("up");
};
};
};
};
} else {
stopStep();
};
}
public function stopStep():void{
var _local1:*;
var _local2:*;
if (!_moving){
return;
};
_local1 = ((_xpos + _xmod) * _main._game._map._tilesize);
_local2 = ((_ypos + _ymod) * _main._game._map._tilesize);
if ((((x == _local1)) && ((y == _local2)))){
_gfx.gotoAndStop(("walk_" + _dir));
_xpos = (_xpos + _xmod);
_ypos = (_ypos + _ymod);
_xmod = 0;
_ymod = 0;
_moving = false;
_speed = 4;
if (_main._game._map.isExit(_xpos, _ypos)){
_playerOut = true;
removeChild(_gfx);
_xpos = -1;
_ypos = -1;
_main._game.checkLevelEnd();
};
};
}
public function doStep(_arg1:String):void{
if (_moving){
return;
};
_moving = true;
_xmod = _main._dir[_arg1][0];
_ymod = _main._dir[_arg1][1];
_dir = _arg1;
_gfx.gotoAndStop(("walk_" + _dir));
if (!checkStep()){
_xmod = 0;
_ymod = 0;
_moving = false;
} else {
_main._game._steps++;
_gfx.gotoAndPlay(("walk_" + _dir));
};
}
public function activate():void{
if (!_playerOut){
_active = true;
if (_main._game._activePlayer != this){
_main._game._activePlayer = this;
_gfx.gotoAndPlay("activate");
_main._game._sndStep.play();
_main.clearControls();
};
} else {
_nextPlayer.activate();
};
}
}
}//package
Section 26
//PuzzleBoyFlash (PuzzleBoyFlash)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class PuzzleBoyFlash extends Sprite {
public var _gameLayer:Sprite;
private var _sndRestart;
private var _tileSource;
public var _curFloor;
public var _gameMode:String;
private var _mapSource;
public var _sndTurn;
public var _activePlayer:Player;
public var _steps:int;// = 0
private var _players:Array;
public var _curWorld;
public var _sndStep;
public var _main:Main;
public var _map:Map;
public var _sndToggle;
public var _ingame;// = false
public var _floor_time;
private var _sndWin;
public var _sndPush;
public function PuzzleBoyFlash(_arg1, _arg2):void{
_ingame = false;
_steps = 0;
super();
_main = _arg1;
_gameMode = _arg2.gamemode;
_curWorld = _arg2.world;
_curFloor = _arg2.floor;
_mapSource = _main._maps._mapdata[_curWorld];
_tileSource = _main._maps._tileDef;
_sndWin = new sfx_4();
_sndRestart = new sfx_5();
_sndTurn = new sfx_6();
_sndStep = new sfx_2();
_sndPush = new sfx_1();
_sndToggle = new sfx_7();
}
public function checkPlayer(_arg1, _arg2){
var _local3:*;
for (_local3 in _players) {
if ((((_arg1 == _players[_local3]._xpos)) && ((_arg2 == _players[_local3]._ypos)))){
return (_players[_local3]);
};
};
return (false);
}
public function init():void{
_steps = 0;
_main.clearControls();
_gameLayer = new Sprite();
addChild(_gameLayer);
_map = new Map(_main);
_map.loadMap(_mapSource.floors[_curFloor], _tileSource);
_map.drawMap();
_gameLayer.addChild(_map);
loadPlayer(_mapSource.floors[_curFloor]);
_ingame = true;
_main.stage.addEventListener(KeyboardEvent.KEY_DOWN, _main.onKeyDown);
_main.stage.addEventListener(KeyboardEvent.KEY_UP, _main.onKeyUp);
_floor_time = new Timer(1000, 0);
_floor_time.start();
}
public function clearLevel():void{
removePlayer();
removeChild(_gameLayer);
_map = null;
_ingame = false;
_main.stage.removeEventListener(KeyboardEvent.KEY_DOWN, _main.onKeyDown);
_main.stage.removeEventListener(KeyboardEvent.KEY_UP, _main.onKeyUp);
}
public function loadPlayer(_arg1):void{
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_players = new Array();
_local2 = _arg1.data.player;
for (_local3 in _local2) {
_local5 = new Player(_main, _local2[_local3]);
_players.push(_local5);
_gameLayer.addChild(_local5);
};
for (_local4 in _players) {
if (_local4 < (_players.length - 1)){
_players[_local4]._nextPlayer = _players[(_local4 + 1)];
} else {
if (_local4 < _players.length){
_players[_local4]._nextPlayer = _players[0];
};
};
};
_activePlayer = _players[0];
_players[0]._active = true;
}
public function togglePlayer():void{
if (!_activePlayer._moving){
_activePlayer._active = false;
_activePlayer._nextPlayer.activate();
};
}
public function removePlayer():void{
var _local1:*;
_activePlayer = null;
for (_local1 in _players) {
_players[_local1].remove();
};
_players = null;
}
public function restartLevel():void{
_sndRestart.play();
clearLevel();
init();
}
public function levelEnd():void{
var _local1:*;
var _local2:*;
clearLevel();
_local1 = _floor_time.currentCount;
_floor_time.stop();
_local2 = {stg:_mapSource.meta.label, floor:(_curFloor + 1), steps:_steps, time:_local1, worldcomplete:false};
_main._progress[_curWorld][_curFloor].complete = true;
if (_steps <= _main._progress[_curWorld][_curFloor].steps){
_main._progress[_curWorld][_curFloor].steps = _steps;
_main._progress[_curWorld][_curFloor].time = _local1;
};
if (_curFloor < (_mapSource.floors.length - 1)){
_curFloor++;
_main._progress[_curWorld][_curFloor].locked = false;
} else {
_local2.worldcomplete = true;
};
_main._menu.showScreen("nextLevel", _local2);
_main.saveProgress();
}
public function checkLevelEnd():Boolean{
var _local1:*;
for (_local1 in _players) {
if (_players[_local1]._playerOut == false){
togglePlayer();
return (false);
};
};
_sndWin.play();
levelEnd();
return (true);
}
}
}//package
Section 27
//rb_0 (rb_0)
package {
import flash.display.*;
public dynamic class rb_0 extends MovieClip {
}
}//package
Section 28
//rb_1 (rb_1)
package {
import flash.display.*;
public dynamic class rb_1 extends MovieClip {
}
}//package
Section 29
//rb_2 (rb_2)
package {
import flash.display.*;
public dynamic class rb_2 extends MovieClip {
}
}//package
Section 30
//rb_3 (rb_3)
package {
import flash.display.*;
public dynamic class rb_3 extends MovieClip {
}
}//package
Section 31
//rb_4 (rb_4)
package {
import flash.display.*;
public dynamic class rb_4 extends MovieClip {
}
}//package
Section 32
//RotateBlock (RotateBlock)
package {
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
public class RotateBlock extends MapObject {
private var _rotatePlayer;
private var _rPos;
private var _curShape:Array;
private var _blockShape:Array;
private var _gfx:MovieClip;
private var _dir:Number;// = 0
private var _angle:Number;
private var _rotCount;// = 90
private var _blockType:int;
public function RotateBlock(_arg1, _arg2):void{
_dir = 0;
_rotCount = 90;
super();
_main = _arg1;
_isMoveObj = true;
_type = "rblock";
_speed = 15;
_id = _arg2.id;
_xpos = _arg2.x;
_ypos = _arg2.y;
_blockType = _arg2.btype;
_rPos = _main._blocks._rpos;
_angle = _arg2.angle;
_blockShape = _main._blocks._blockDef[_blockType];
setxy();
draw();
_blockShape = rotateArray(_blockShape, _angle);
}
public function addToObjMap(_arg1):void{
var _local2:*;
var _local3:*;
_local2 = 0;
while (_local2 < 3) {
_local3 = 0;
while (_local3 < 3) {
if (_blockShape[_local2][_local3] == 1){
_arg1[((_ypos - 1) + _local2)][((_xpos - 1) + _local3)] = _id;
};
_local3++;
};
_local2++;
};
}
public function rotatePoint(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:Number;
var _local6:Number;
var _local7:*;
_local4 = ((_arg3 / 180) * Math.PI);
_local5 = runden(((_arg1 * Math.cos(_local4)) + (_arg2 * -(Math.sin(_local4)))));
_local6 = runden(((_arg1 * Math.sin(_local4)) + (_arg2 * Math.cos(_local4))));
_local7 = new Point(_local5, _local6);
return (_local7);
}
private function checkPlayerBoost(_arg1){
var _local2:*;
_local2 = _main._game._map.isObject((_arg1._xpos + _arg1._xmod), (_arg1._ypos + _arg1._ymod));
if (_local2){
_arg1._xmod = (_arg1._xmod * 2);
_arg1._ymod = (_arg1._ymod * 2);
_arg1._speed = 4;
};
}
public function getRotDir(_arg1):Number{
var _local2:*;
var _local3:*;
var _local4:*;
_local2 = (_arg1._xpos - _xpos);
_local3 = (_arg1._ypos - _ypos);
for (_local4 in _rPos) {
if ((((_rPos[_local4].pos[0] == _local2)) && ((_rPos[_local4].pos[1] == _local3)))){
if ((((_rPos[_local4].dir[0][0] == _arg1._xmod)) && ((_rPos[_local4].dir[0][1] == _arg1._ymod)))){
return (-1);
};
if ((((_rPos[_local4].dir[1][0] == _arg1._xmod)) && ((_rPos[_local4].dir[1][1] == _arg1._ymod)))){
return (1);
};
};
};
return (0);
}
override public function checkStop():void{
if (!_moving){
return;
};
if (Math.abs(_rotCount) >= 90){
_dir = 0;
_rotCount = 0;
_moving = false;
_gfx.gotoAndStop(("rot_" + _angle));
_gfx.rotation = 0;
};
}
public function draw(){
var _local1:Class;
_local1 = (getDefinitionByName(("rb_" + _blockType)) as Class);
_gfx = new (_local1);
addChild(_gfx);
_gfx.gotoAndStop(("rot_" + _angle));
}
override public function moveObject():void{
if (_moving){
_gfx.rotation = (_gfx.rotation + (_speed * _dir));
_rotCount = (_rotCount + (_speed * _dir));
};
}
private function isTileFree(_arg1, _arg2){
var _local3:*;
var _local4:*;
if (_main._game._map.isFreeForBox(_arg1, _arg2)){
_local3 = _main._game._map.isObject(_arg1, _arg2);
if (_local3){
if (_local3._id != _id){
return (false);
};
};
_local4 = _main._game.checkPlayer(_arg1, _arg2);
if (_local4){
if (_local4 != _rotatePlayer){
return (false);
};
};
return (true);
};
return (false);
}
public function checkRotation(_arg1):Boolean{
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = true;
_local3 = 0;
while (_local3 < 3) {
_local4 = 0;
while (_local4 < 3) {
_local5 = _blockShape[_local3][_local4];
if ((((_local5 == 4)) || ((_local5 == 1)))){
_local2 = isTileFree(((_local4 - 1) + _xpos), ((_local3 - 1) + _ypos));
} else {
if ((((((_arg1 == 1)) && ((_local5 == 2)))) || ((((_arg1 == -1)) && ((_local5 == 3)))))){
_local2 = isTileFree(((_local4 - 1) + _xpos), ((_local3 - 1) + _ypos));
};
};
if (!_local2){
return (false);
};
_local4++;
};
_local3++;
};
return (true);
}
public function runden(_arg1:Number):Number{
var _local2:Number;
_local2 = (Math.round((_arg1 * 1000)) / 1000);
return (_local2);
}
public function rotateArray(_arg1, _arg2):Array{
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
_local3 = [[8, 8, 8], [8, 8, 8], [8, 8, 8]];
_local4 = -1;
while (_local4 < 2) {
_local5 = -1;
while (_local5 < 2) {
_local6 = rotatePoint(_local5, _local4, _arg2);
_local7 = _arg1[(_local4 + 1)][(_local5 + 1)];
_local3[(_local6.y + 1)][(_local6.x + 1)] = _local7;
_local5++;
};
_local4++;
};
return (_local3);
}
public function rotateObj(_arg1):Boolean{
var _local2:*;
if ((((_xpos == _arg1._xpos)) || ((_ypos == _arg1._ypos)))){
return (false);
};
_local2 = getRotDir(_arg1);
_rotatePlayer = _arg1;
if (checkRotation(_local2)){
_angle = (_angle + (90 * _local2));
if (_angle < 0){
_angle = 270;
};
if (_angle > 270){
_angle = 0;
};
_dir = _local2;
_moving = true;
_rotCount = 0;
_blockShape = rotateArray(_blockShape, (90 * _dir));
_main._game._map.loadObjMap();
checkPlayerBoost(_rotatePlayer);
_main._game._sndTurn.play();
return (true);
};
return (false);
}
override public function setxy():void{
var _local1:*;
_local1 = _main._game._map._tilesize;
x = ((_xpos * _local1) + (_local1 / 2));
y = ((_ypos * _local1) + (_local1 / 2));
}
}
}//package
Section 33
//RotateBlock_prefabs (RotateBlock_prefabs)
package {
public class RotateBlock_prefabs {
public var _rpos;
public var _blockDef;
public function RotateBlock_prefabs():void{
loadprefabs();
}
public function loadprefabs(){
var _local1:*;
_rpos = [{pos:[1, -1], dir:[[-1, 0], [0, 1]]}, {pos:[1, 1], dir:[[0, -1], [-1, 0]]}, {pos:[-1, 1], dir:[[1, 0], [0, -1]]}, {pos:[-1, -1], dir:[[0, 1], [1, 0]]}];
_local1 = [[[3, 1, 2], [3, 1, 2], [0, 0, 0]], [[3, 1, 4], [3, 1, 1], [0, 2, 2]], [[3, 1, 2], [4, 1, 4], [2, 1, 3]], [[3, 1, 4], [4, 1, 1], [2, 1, 4]], [[4, 1, 4], [1, 1, 1], [4, 1, 4]]];
_blockDef = _local1;
}
}
}//package
Section 34
//sfx_1 (sfx_1)
package {
import flash.media.*;
public dynamic class sfx_1 extends Sound {
}
}//package
Section 35
//sfx_2 (sfx_2)
package {
import flash.media.*;
public dynamic class sfx_2 extends Sound {
}
}//package
Section 36
//sfx_4 (sfx_4)
package {
import flash.media.*;
public dynamic class sfx_4 extends Sound {
}
}//package
Section 37
//sfx_5 (sfx_5)
package {
import flash.media.*;
public dynamic class sfx_5 extends Sound {
}
}//package
Section 38
//sfx_6 (sfx_6)
package {
import flash.media.*;
public dynamic class sfx_6 extends Sound {
}
}//package
Section 39
//sfx_7 (sfx_7)
package {
import flash.media.*;
public dynamic class sfx_7 extends Sound {
}
}//package
Section 40
//wall (wall)
package {
import flash.display.*;
public dynamic class wall extends MovieClip {
}
}//package