Section 1
//Facebook (com.nitrome.distribution.Facebook)
package com.nitrome.distribution {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class Facebook extends SimpleButton {
public function Facebook(){
this.addEventListener(MouseEvent.CLICK, onClick);
}
public function onClick(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.facebook.com/Nitrome"), "_blank");
}
}
}//package com.nitrome.distribution
Section 2
//MoreGames (com.nitrome.distribution.MoreGames)
package com.nitrome.distribution {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class MoreGames extends SimpleButton {
public function MoreGames(){
this.addEventListener(MouseEvent.CLICK, onClick);
}
public function onClick(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.flashgamelicense.com/view_account.php?username=nitromemat"), "_blank");
}
}
}//package com.nitrome.distribution
Section 3
//NitromeGamesIcon (com.nitrome.distribution.NitromeGamesIcon)
package com.nitrome.distribution {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class NitromeGamesIcon extends MovieClip {
protected const PAUSE:Number = 90;
protected var numFrames:Number;
protected var counter:Number;// = 0
protected var gameFrame:Number;// = 0
protected var fadeAlpha:Number;// = 0
protected var bitmapData:BitmapData;
protected var bitmap:Bitmap;
protected var fading:Boolean;
protected var fadeIn:Boolean;
protected var nitromeIcon:Boolean;
public function NitromeGamesIcon(){
init();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(Event.REMOVED_FROM_STAGE, onRemove);
}
private function onRemove(_arg1:Event):void{
removeEventListener(Event.REMOVED_FROM_STAGE, onRemove);
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
protected function init():void{
numFrames = totalFrames;
gameFrame = numFrames;
gotoAndStop(1);
bitmapData = new BitmapData(width, height, true, 0xFFFFFF);
bitmapData.draw(this);
var _local1:Rectangle = bitmapData.rect;
_local1.inflate(-3, -3);
bitmapData.colorTransform(_local1, new ColorTransform(2, 2, 2, 1, 0xFF, 0xFF, 0xFF, 0));
addChild((bitmap = new Bitmap(bitmapData)));
bitmap.alpha = fadeAlpha;
}
protected function onEnterFrame(_arg1:Event):void{
if (counter >= PAUSE){
updateIcon();
} else {
counter++;
};
}
private function updateIcon():void{
if (fading){
changeVisuals();
} else {
if (currentFrame != 1){
nitromeIcon = true;
changeVisuals();
} else {
if ((gameFrame + 1) >= numFrames){
gameFrame = 2;
} else {
gameFrame++;
};
};
fading = true;
fadeIn = true;
};
}
private function changeVisuals():void{
if (fadeIn){
fadeAlpha = (fadeAlpha + 0.1);
} else {
fadeAlpha = (fadeAlpha - 0.1);
};
if (fadeAlpha > 1){
if (nitromeIcon){
gotoAndStop(1);
nitromeIcon = false;
} else {
gotoAndStop(gameFrame);
};
fadeIn = false;
fadeAlpha = 1;
} else {
if (fadeAlpha < 0){
fading = false;
counter = 0;
fadeAlpha = 0;
};
};
bitmap.alpha = fadeAlpha;
}
}
}//package com.nitrome.distribution
Section 4
//Twitter (com.nitrome.distribution.Twitter)
package com.nitrome.distribution {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class Twitter extends SimpleButton {
public function Twitter(){
this.addEventListener(MouseEvent.CLICK, onClick);
}
public function onClick(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.twitter.com/Nitrome"), "_blank");
}
}
}//package com.nitrome.distribution
Section 5
//Clip (com.nitrome.engine.Clip)
package com.nitrome.engine {
import flash.display.*;
public class Clip {
public var mc:Sprite;
public var tile_id:int;
public var map_x:int;
public var map_y:int;
public var init_x:int;
public var init_y:int;
public var g:Game;
public var layer:int;
public var block:Boolean;// = false
public var force_field:Boolean;// = false
public var encounter:Boolean;// = false
public function Clip(_arg1:Sprite, _arg2:Game){
this.mc = _arg1;
this.g = _arg2;
}
public function remove():void{
mc.parent.removeChild(mc);
g.scroller.map_array_layers[layer][map_y][map_x] = tile_id;
}
}
}//package com.nitrome.engine
Section 6
//Dot (com.nitrome.engine.Dot)
package com.nitrome.engine {
public class Dot {
public var x:Number;
public var y:Number;
public var ix:Number;
public var iy:Number;
public function Dot(_arg1:Number=0, _arg2:Number=0){
this.x = (ix = _arg1);
this.y = (iy = _arg2);
}
public function mul(_arg1:Number){
x = (x * _arg1);
y = (y * _arg1);
}
public function pin():void{
x = ix;
y = iy;
}
}
}//package com.nitrome.engine
Section 7
//Encounter (com.nitrome.engine.Encounter)
package com.nitrome.engine {
import flash.display.*;
import com.nitrome.engine_specific.*;
public class Encounter extends Clip {
public var active:Boolean;
public var x:Number;
public var y:Number;
public var free:Boolean;
public var has_main:Boolean;
public var has_collision:Boolean;
public var kill_on_collision:Boolean;
public var skip:Boolean;
public var spawned:Boolean;// = false
public var reward:HiddenInt;
public var monster:Boolean;// = false
public function Encounter(_arg1:Sprite, _arg2:Game, _arg3:Boolean){
super(_arg1, _arg2);
this.free = _arg3;
encounter = true;
x = _arg1.x;
y = _arg1.y;
active = true;
has_main = false;
has_collision = true;
kill_on_collision = false;
skip = false;
_arg2.addEncounter(this);
}
public function intersects(_arg1:Rect):Boolean{
return (false);
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
public function resolvePlayerCollision(_arg1:Player):void{
}
public function resolveWeaponCollision():void{
}
public function unpause():void{
}
public function debug():void{
}
override public function remove():void{
var _local1:int;
var _local2:int;
if (active){
active = false;
if (!free){
g.scroller.map_array_layers[layer][init_y][init_x] = tile_id;
} else {
_local1 = ((x * Game.SCALE) >> 0);
_local2 = ((y * Game.SCALE) >> 0);
if ((((g.scroller.map_array_layers[layer][_local2][_local1] == 0)) || ((g.scroller.map_array_layers[layer][_local2][_local1] == null)))){
g.scroller.map_array_layers[layer][_local2][_local1] = tile_id;
} else {
g.scroller.map_array_layers[layer][init_y][init_x] = tile_id;
};
};
};
}
}
}//package com.nitrome.engine
Section 8
//HiddenInt (com.nitrome.engine.HiddenInt)
package com.nitrome.engine {
public class HiddenInt {
private var _value:int;
private var r:int;
public function HiddenInt(_arg1:int=0){
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
}
public function set value(_arg1:int):void{
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
}
public function get value():int{
return ((_value - r));
}
}
}//package com.nitrome.engine
Section 9
//HiddenNumber (com.nitrome.engine.HiddenNumber)
package com.nitrome.engine {
public class HiddenNumber {
private var _value:Number;
private var r:Number;
public function HiddenNumber(_arg1:Number=0){
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
}
public function set value(_arg1:Number):void{
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
}
public function get value():Number{
return ((_value - r));
}
}
}//package com.nitrome.engine
Section 10
//Line (com.nitrome.engine.Line)
package com.nitrome.engine {
import flash.display.*;
public class Line {
public var a:Dot;
public var b:Dot;
public var vx:Number;
public var vy:Number;
public var len:Number;
public var dx:Number;
public var dy:Number;
public var rx:Number;
public var ry:Number;
public var lx:Number;
public var ly:Number;
public var theta:Number;
public function Line(_arg1:Dot, _arg2:Dot){
this.a = _arg1;
this.b = _arg2;
updateLine();
}
public function updateLine():void{
vx = (b.x - a.x);
vy = (b.y - a.y);
len = Math.sqrt(((vx * vx) + (vy * vy)));
if (len > 0){
dx = (vx / len);
dy = (vy / len);
} else {
dx = 0;
dy = 0;
};
rx = -(dy);
ry = dx;
lx = dy;
ly = -(dx);
}
public function rotateA(_arg1:Number):void{
_arg1 = (_arg1 + atan2());
theta = _arg1;
b.x = (a.x + (Math.cos(_arg1) * len));
b.y = (a.y + (Math.sin(_arg1) * len));
updateLine();
}
public function rotateB(_arg1:Number):void{
_arg1 = (_arg1 + atan2());
theta = _arg1;
a.x = (b.x + (Math.cos(_arg1) * len));
a.y = (b.y + (Math.sin(_arg1) * len));
updateLine();
}
public function atan2():Number{
theta = Math.atan2(vy, vx);
return (theta);
}
public function lerp(_arg1:Number):Object{
return ({x:(b.x + ((a.x - b.x) * _arg1)), y:(b.y + ((a.y - b.y) * _arg1))});
}
public function toString():String{
return ((((((((("a:(" + a.x) + ",") + a.y) + ") b:(") + b.x) + ",") + b.y) + ")"));
}
public function draw(_arg1:Graphics):void{
_arg1.moveTo(a.x, a.y);
_arg1.lineTo(b.x, b.y);
}
public function copy():Line{
return (new Line(new Dot(a.x, a.y), new Dot(b.x, b.y)));
}
public function proximity(_arg1:Number, _arg2:Number, _arg3:Number){
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:*;
var _local4:Dot = new Dot(_arg1, _arg2);
var _local5:Line = this;
var _local6:Number = (_local4.x - a.x);
var _local7:Number = (_local4.y - a.y);
var _local8:Number = dot(_local5, _local5);
var _local9:Number = ((_local6 * _local5.vx) + (_local7 * _local5.vy));
if (_local9 < 0){
if (Util.proximity(a.x, a.y, _local4.x, _local4.y, _arg3)){
return (true);
};
} else {
if (_local9 > _local8){
if (Util.proximity(b.x, b.y, _local4.x, _local4.y, _arg3)){
return (true);
};
} else {
if ((((_local9 >= 0)) && ((_local9 <= _local8)))){
_local10 = ((_local6 * -(_local5.lx)) + (_local7 * -(_local5.ly)));
_local11 = (_local10 * _local5.lx);
_local12 = (_local10 * _local5.ly);
_local13 = ((_local11 * _local11) + (_local12 * _local12));
if (((_arg3 * _arg3) - _local13) >= 0){
return (true);
};
};
};
};
return (false);
}
public static function projection(_arg1:Line, _arg2:Line):Line{
var _local3:* = Line.dot(_arg1, _arg2);
return (new Line(new Dot(0, 0), new Dot((_arg1.dx * _local3), (_arg1.dy * _local3))));
}
public static function perP(_arg1:Object, _arg2:Object):Number{
var _local3:* = ((_arg1.vx * _arg2.vy) - (_arg1.vy * _arg2.vx));
return (_local3);
}
public static function miniPerP(_arg1:Object, _arg2:Object):Number{
var _local3:* = ((_arg1.dx * _arg2.dy) - (_arg1.dy * _arg2.dx));
return (_local3);
}
public static function intersectionPoint(_arg1:Object, _arg2:Object):Object{
var _local3:* = {vx:(_arg2.a.x - _arg1.a.x), vy:(_arg2.a.y - _arg1.a.y)};
var _local4:* = (perP(_local3, _arg2) / perP(_arg1, _arg2));
var _local5:* = {};
_local5.x = (_arg1.a.x + (_arg1.vx * _local4));
_local5.y = (_arg1.a.y + (_arg1.vy * _local4));
return (_local5);
}
public static function intersects(_arg1:Object, _arg2:Object):Boolean{
var _local3:* = {vx:(_arg2.a.x - _arg1.a.x), vy:(_arg2.a.y - _arg1.a.y)};
var _local4:* = perP(_local3, _arg2);
var _local5:* = perP(_arg1, _arg2);
var _local6:* = (_local4 / _local5);
var _local7:* = (_local5 / _local4);
return ((((((((_local6 >= 0)) && ((_local6 <= 1)))) && ((_local7 >= 0)))) && ((_local7 <= 1))));
}
public static function dot(_arg1:Object, _arg2:Object):Number{
return (((_arg1.vx * _arg2.vx) + (_arg1.vy * _arg2.vy)));
}
public static function normal(_arg1:Object, _arg2:Object):Object{
var _local3:* = {x:(_arg1.x - _arg2.x), y:(_arg1.y - _arg2.y)};
var _local4:* = _local3.length;
_local3.x = (_local3.x / _local4);
_local3.y = (_local3.y / _local4);
return (_local3);
}
}
}//package com.nitrome.engine
Section 11
//LZW (com.nitrome.engine.LZW)
package com.nitrome.engine {
public class LZW {
private static var xmlsafe:Boolean = true;
public function compress(_arg1:String):String{
var _local4:Number;
var _local11:String;
var _local2:Array = new Array();
var _local3:Number = (xmlsafe) ? 5 : 0;
_local4 = 0;
while (_local4 < 0x0100) {
_local2[String.fromCharCode(_local4)] = _local4;
_local4++;
};
if (xmlsafe){
_local2["<"] = 0x0100;
_local2[">"] = 0x0101;
_local2["&"] = 258;
_local2["\""] = 259;
_local2["'"] = 260;
};
var _local5 = "";
var _local6:String = _arg1;
var _local7:Array = _local6.split("");
var _local8:Number = _local7.length;
var _local9:Number = (0x0100 + _local3);
var _local10 = "";
_local4 = 0;
while (_local4 <= _local8) {
_local11 = _local7[_local4];
if (_local2[(_local10 + _local11)] !== undefined){
_local10 = (_local10 + _local11);
} else {
_local5 = (_local5 + String.fromCharCode(_local2[_local10]));
_local2[(_local10 + _local11)] = _local9;
_local9++;
_local10 = _local11;
};
_local4++;
};
return (_local5);
}
public function numerate(_arg1:String):String{
var _local2:Array = _arg1.split("");
var _local3:int;
while (_local3 < _local2.length) {
_local2[_local3] = _local2[_local3].charCodeAt(0);
_local2[_local3] = _local2[_local3].toString(16);
_local3++;
};
return (_local2.toString());
}
public function denumerate(_arg1:String):String{
var _local2:Array = _arg1.split(",");
var _local3 = "";
var _local4:int;
while (_local4 < _local2.length) {
_local3 = (_local3 + String.fromCharCode(parseInt(_local2[_local4], 16)));
_local4++;
};
return (_local3);
}
public function decompress(_arg1:String):String{
var _local4:Number;
var _local12:String;
var _local13:Number;
var _local14:String;
var _local2:Array = new Array();
var _local3:Number = (xmlsafe) ? 5 : 0;
_local4 = 0;
while (_local4 < 0x0100) {
_local12 = String.fromCharCode(_local4);
_local2[_local4] = _local12;
_local4++;
};
if (xmlsafe){
_local2[0x0100] = "<";
_local2[0x0101] = ">";
_local2[258] = "&";
_local2[259] = "\"";
_local2[260] = "'";
};
var _local5:String = _arg1;
var _local6:Array = _local5.split("");
var _local7:Number = _local6.length;
var _local8:Number = (0x0100 + _local3);
var _local9 = "";
var _local10 = "";
var _local11 = "";
_local4 = 0;
while (_local4 < _local7) {
_local13 = _local5.charCodeAt(_local4);
_local14 = _local2[_local13];
if (_local9 == ""){
_local9 = _local14;
_local11 = (_local11 + _local14);
} else {
if (_local13 <= (0xFF + _local3)){
_local11 = (_local11 + _local14);
_local10 = (_local9 + _local14);
_local2[_local8] = _local10;
_local8++;
_local9 = _local14;
} else {
_local10 = _local2[_local13];
if (_local10 == null){
_local10 = (_local9 + _local9.slice(0, 1));
};
_local11 = (_local11 + _local10);
_local2[_local8] = (_local9 + _local10.slice(0, 1));
_local8++;
_local9 = _local10;
};
};
_local4++;
};
return (_local11);
}
}
}//package com.nitrome.engine
Section 12
//Particle (com.nitrome.engine.Particle)
package com.nitrome.engine {
public class Particle extends Dot {
public var px:Number;
public var py:Number;
public var temp_x:Number;
public var temp_y:Number;
public function Particle(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
px = (temp_x = _arg1);
py = (temp_y = _arg2);
}
public function verlet(_arg1:Number, _arg2:Number, _arg3:Number):void{
temp_x = x;
temp_y = y;
x = (x + ((_arg3 * (x - px)) + _arg1));
y = (y + ((_arg3 * (y - py)) + _arg2));
px = temp_x;
py = temp_y;
}
public function setPosition(_arg1:Number, _arg2:Number):void{
this.x = (px = (temp_x = (ix = _arg1)));
this.y = (py = (temp_y = (iy = _arg2)));
}
override public function pin():void{
x = (px = (temp_x = ix));
y = (py = (temp_y = iy));
}
public function pinTo(_arg1:Number, _arg2:Number):void{
this.x = (ix = (px = (temp_x = _arg1)));
this.y = (iy = (py = (temp_y = _arg2)));
}
public function getLine():Line{
return (new Line(new Dot(px, py), this));
}
public function speed():Number{
return (Math.sqrt((((x - px) * (x - px)) + ((y - py) * (y - py)))));
}
public function yspeed():Number{
return ((y - py));
}
public function xspeed():Number{
return ((x - px));
}
public function addVelocity(_arg1:Number, _arg2:Number):void{
px = (px - _arg1);
py = (py - _arg2);
}
public function copy():Particle{
var _local1:* = new Particle(x, y);
_local1.px = px;
_local1.py = py;
return (_local1);
}
public function reverse(_arg1:Number):void{
var _local2:Number = (px - x);
var _local3:Number = (py - y);
addVelocity((_local2 * _arg1), (_local3 * _arg1));
}
public function toString():String{
return (((((((("(" + x) + ",") + y) + ") ") + x) + ",") + y));
}
}
}//package com.nitrome.engine
Section 13
//Rect (com.nitrome.engine.Rect)
package com.nitrome.engine {
import flash.display.*;
public class Rect {
public var x:Number;
public var y:Number;
public var cx:Number;
public var cy:Number;
public var width:Number;
public var height:Number;
public var stacked:int;// = 0
public static const UP:int = 1;
public static const RIGHT:int = 2;
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public function Rect(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.x = _arg1;
this.y = _arg2;
this.width = _arg3;
this.height = _arg4;
}
public function resize(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
this.x = _arg1;
this.y = _arg2;
this.width = _arg3;
this.height = _arg4;
}
public function intersects(_arg1:Rect):Boolean{
return (!((((((((this.x > (_arg1.x + (_arg1.width - 1)))) || (((this.x + (this.width - 1)) < _arg1.x)))) || ((this.y > (_arg1.y + (_arg1.height - 1)))))) || (((this.y + (this.height - 1)) < _arg1.y)))));
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return ((((((((_arg1 >= this.x)) && ((_arg2 >= this.y)))) && ((_arg1 < (this.x + width))))) && ((_arg2 < (this.y + height)))));
}
public function inside(_arg1:Rect){
return (((((((((x + (width - 1)) < (_arg1.x + _arg1.width))) && (((y + (height - 1)) < (_arg1.y + _arg1.height))))) && ((x >= _arg1.x)))) && ((y >= _arg1.y))));
}
public function intersection(_arg1:Rect):Rect{
return (new Rect(Math.max(x, _arg1.x), Math.max(y, _arg1.y), Math.abs((Math.max(x, _arg1.x) - Math.min((x + width), (_arg1.x + _arg1.width)))), Math.abs((Math.max(y, _arg1.y) - Math.min((y + height), (_arg1.y + _arg1.height))))));
}
public function intersectsCircle(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number = _arg1;
var _local5:Number = _arg2;
if (_local4 < x){
_local4 = x;
};
if (_local4 > ((x + width) - 1)){
_local4 = ((x + width) - 1);
};
if (_local5 < y){
_local5 = y;
};
if (_local5 > ((y + height) - 1)){
_local5 = ((y + height) - 1);
};
return (((((_arg1 - _local4) * (_arg1 - _local4)) + ((_arg2 - _local5) * (_arg2 - _local5))) < (_arg3 * _arg3)));
}
public function sideOf(_arg1:Number, _arg2:Number):int{
cx = (this.x + (width * 0.5));
cy = (this.y + (height * 0.5));
if ((((_arg1 == cx)) && ((_arg2 == cy)))){
return (2);
};
var _local3:Number = (_arg1 - cx);
var _local4:Number = (_arg2 - cy);
if ((((((_arg1 > cx)) && ((_arg2 > cy)))) && ((Math.abs(_local4) < Math.abs(_local3))))){
return (2);
};
if ((((((_arg1 > cx)) && ((_arg2 > cy)))) && ((Math.abs(_local4) > Math.abs(_local3))))){
return (4);
};
if ((((((_arg1 < cx)) && ((_arg2 > cy)))) && ((Math.abs(_local4) > Math.abs(_local3))))){
return (4);
};
if ((((((_arg1 < cx)) && ((_arg2 > cy)))) && ((Math.abs(_local4) < Math.abs(_local3))))){
return (8);
};
if ((((((_arg1 < cx)) && ((_arg2 < cy)))) && ((Math.abs(_local4) < Math.abs(_local3))))){
return (8);
};
if ((((((_arg1 < cx)) && ((_arg2 < cy)))) && ((Math.abs(_local4) > Math.abs(_local3))))){
return (1);
};
if ((((((_arg1 > cx)) && ((_arg2 < cy)))) && ((Math.abs(_local4) > Math.abs(_local3))))){
return (1);
};
if ((((((_arg1 > cx)) && ((_arg2 < cy)))) && ((Math.abs(_local4) < Math.abs(_local3))))){
return (2);
};
if ((((_arg2 == cy)) && ((_arg1 > cx)))){
return (2);
};
if ((((_arg1 == cx)) && ((_arg2 > cy)))){
return (4);
};
if ((((_arg2 == cy)) && ((_arg1 < cx)))){
return (8);
};
if ((((_arg1 == cx)) && ((_arg2 < cy)))){
return (1);
};
if ((((_local3 == Math.abs(_local3))) && ((_local4 == -(Math.abs(_local4)))))){
return (2);
};
if ((((_local4 == Math.abs(_local4))) && ((_local3 == Math.abs(_local3))))){
return (4);
};
if ((((_local4 == Math.abs(_local4))) && ((_local3 == -(Math.abs(_local3)))))){
return (8);
};
if ((((_local4 == -(Math.abs(_local4)))) && ((_local3 == -(Math.abs(_local3)))))){
return (1);
};
return (0);
}
public function getCorners(_arg1:Array):Array{
_arg1[0].x = x;
_arg1[0].y = y;
_arg1[1].x = ((x + width) - 1);
_arg1[1].y = y;
_arg1[2].x = ((x + width) - 1);
_arg1[2].y = ((y + height) - 1);
_arg1[3].x = x;
_arg1[3].y = ((y + height) - 1);
return (_arg1);
}
public function toString():String{
return ((((((((("(x:" + x) + " y:") + y) + " width:") + width) + " height:") + height) + ")"));
}
public function draw(_arg1:Graphics):void{
_arg1.drawRect(x, y, width, height);
}
public static function boundingBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Rect{
return (new Rect(Math.min(_arg1, _arg3), Math.min(_arg2, _arg4), Math.abs((_arg1 - _arg3)), Math.abs((_arg2 - _arg4))));
}
public static function oppositeSide(_arg1:Number):Number{
if (_arg1 == UP){
return (DOWN);
};
if (_arg1 == RIGHT){
return (LEFT);
};
if (_arg1 == DOWN){
return (UP);
};
if (_arg1 == LEFT){
return (RIGHT);
};
return (0);
}
}
}//package com.nitrome.engine
Section 14
//Scroller (com.nitrome.engine.Scroller)
package com.nitrome.engine {
import flash.display.*;
import com.nitrome.engine_specific.*;
public class Scroller {
public var tile_maker:TileMaker;
public var map_array:Array;
public var map_array_layers:Array;
public var map_rows:Array;
public var map_rows_layers:Array;
public var map_rows_index:Array;
public var map_rows_index_layers:Array;
public var map_cols_index:Array;
public var map_cols_index_layers:Array;
public var tile_layers:Array;
public var tile_layers_behind:Array;
public var signage:Array;
public var tiles:Sprite;
public var tile_holder:Sprite;
public var layers:int;
public var current_layer:int;
public var stage:Sprite;
public var scroll_x:Boolean;
public var scroll_y:Boolean;
public var scale:Number;
public var width:int;
public var height:int;
public var stage_width:int;
public var stage_height:int;
public var border_x:Array;
public var border_y:Array;
public var tiles_width:int;
public var tiles_height:int;
public var last_stage_x:int;
public var last_stage_y:int;
public var update_layer:Array;
public var scroll_topleft_x:int;
public var scroll_topleft_y:int;
public var scroll_bottomright_x:int;
public var scroll_bottomright_y:int;
public var master_layer:int;
public var map_rect:Rect;
public var SCALE:Number;
public static const BLOCK_LAYER:int = 1;
public static const ENCOUNTER_LAYER:int = 1;
public function Scroller(_arg1:Game, _arg2:Sprite, _arg3:Sprite, _arg4:Number, _arg5:int, _arg6:int, _arg7:int, _arg8:int){
this.stage = _arg2;
this.tile_holder = _arg3;
this.scale = _arg4;
SCALE = (1 / _arg4);
this.width = _arg5;
this.height = _arg6;
this.stage_width = _arg7;
this.stage_height = _arg8;
tile_maker = new TileMaker(_arg1, this);
scroll_x = false;
scroll_y = true;
border_x = new Array(2, 6, 2);
border_y = new Array(2, 6, 2);
tiles_width = Math.ceil((_arg7 / _arg4));
tiles_height = Math.ceil((_arg8 / _arg4));
tile_layers = new Array();
tile_layers_behind = new Array();
map_array_layers = new Array();
map_rows_layers = new Array();
map_rows_index_layers = new Array();
map_cols_index_layers = new Array();
update_layer = new Array();
current_layer = 0;
layers = 0;
master_layer = BLOCK_LAYER;
scroll_topleft_x = 0;
scroll_topleft_y = 0;
scroll_bottomright_x = 0;
scroll_bottomright_y = 0;
map_rect = new Rect(0, 0, (_arg5 * _arg4), (_arg6 * _arg4));
}
public function addLayer(_arg1:Array):void{
var _local2:Sprite;
if (tile_layers.length == layers){
_local2 = new Sprite();
tile_holder.addChild(_local2);
tile_layers.push(_local2);
};
map_array_layers.push(_arg1);
map_rows_layers.push(new Array());
map_rows_index_layers.push(new Array());
map_cols_index_layers.push(new Array());
update_layer.push(true);
layers++;
}
public function addTileLayer(_arg1:Sprite){
tile_layers.push(_arg1);
}
public function setSignage(_arg1:Array):void{
this.signage = _arg1;
}
public function changeLayer(_arg1:int):void{
tiles = tile_layers[_arg1];
map_array = map_array_layers[_arg1];
map_rows = map_rows_layers[_arg1];
map_rows_index = map_rows_index_layers[_arg1];
map_cols_index = map_cols_index_layers[_arg1];
current_layer = _arg1;
}
public function setLayerUpdate(_arg1:int, _arg2:Boolean):void{
update_layer[_arg1] = _arg2;
}
public function layerToBitmap(_arg1:int, _arg2:BitmapData):void{
var _local4:int;
changeLayer(_arg1);
tiles.visible = false;
var _local3:int;
while (_local3 < map_array.length) {
_local4 = 0;
while (_local4 < map_array[_local3].length) {
tile_maker.mapElement(_local4, _local3);
_local4++;
};
_local3++;
};
_arg2.draw(tiles);
}
public function renderLayer(_arg1:int):void{
var _local3:int;
changeLayer(_arg1);
var _local2:int;
while (_local2 < map_array.length) {
_local3 = 0;
while (_local3 < map_array[_local2].length) {
tile_maker.mapElement(_local3, _local2);
_local3++;
};
_local2++;
};
}
public function removeTile(_arg1:int, _arg2:int, _arg3:int):void{
map_array_layers[_arg1][_arg3][_arg2] = 0;
}
public function addTile(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{
map_array_layers[_arg1][_arg3][_arg2] = _arg4;
}
public function debug(_arg1:Graphics):void{
_arg1.moveTo(scroll_topleft_x, scroll_topleft_y);
_arg1.lineTo(scroll_bottomright_x, scroll_topleft_y);
_arg1.lineTo(scroll_bottomright_x, scroll_bottomright_y);
_arg1.lineTo(scroll_topleft_x, scroll_bottomright_y);
_arg1.lineTo(scroll_topleft_x, scroll_topleft_y);
_arg1.moveTo(-(stage.x), -(stage.y));
_arg1.lineTo((-(stage.x) + stage_width), -(stage.y));
_arg1.lineTo((-(stage.x) + stage_width), (-(stage.y) + stage_height));
_arg1.lineTo(-(stage.x), (-(stage.y) + stage_height));
_arg1.lineTo(-(stage.x), -(stage.y));
}
public function debug2(_arg1:Graphics):void{
_arg1.moveTo(scroll_topleft_x, scroll_topleft_y);
_arg1.lineTo(scroll_bottomright_x, scroll_topleft_y);
_arg1.lineTo(scroll_bottomright_x, scroll_bottomright_y);
_arg1.lineTo(scroll_topleft_x, scroll_bottomright_y);
_arg1.lineTo(scroll_topleft_x, scroll_topleft_y);
_arg1.moveTo((-(stage.x) * 0.5), (-(stage.y) * 0.5));
_arg1.lineTo(((-(stage.x) * 0.5) + stage_width), (-(stage.y) * 0.5));
_arg1.lineTo(((-(stage.x) * 0.5) + stage_width), ((-(stage.y) * 0.5) + stage_height));
_arg1.lineTo((-(stage.x) * 0.5), ((-(stage.y) * 0.5) + stage_height));
_arg1.lineTo((-(stage.x) * 0.5), (-(stage.y) * 0.5));
_arg1.moveTo(0, 0);
_arg1.lineTo((width * scale), 0);
_arg1.lineTo((width * scale), (height * scale));
_arg1.lineTo(0, (height * scale));
_arg1.lineTo(0, 0);
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return ((((((((_arg1 < (scroll_bottomright_x - 1))) && ((_arg1 >= scroll_topleft_x)))) && ((_arg2 < (scroll_bottomright_y - 1))))) && ((_arg2 >= scroll_topleft_y))));
}
public function intersects(_arg1:Rect):Boolean{
return (!((((((((scroll_topleft_x > (_arg1.x + (_arg1.width - 1)))) || (((scroll_bottomright_x - 1) < _arg1.x)))) || ((scroll_topleft_y > (_arg1.y + (_arg1.height - 1)))))) || (((scroll_bottomright_y - 1) < _arg1.y)))));
}
public function reset():void{
last_stage_x = ((stage.x * SCALE) >> 0);
last_stage_y = ((stage.y * SCALE) >> 0);
}
public function rezBeginning(_arg1:int, _arg2:int):void{
var _local9:int;
var _local10:int;
map_rows_index = new Array();
map_cols_index = new Array();
map_rows = new Array();
var _local3:* = Math.round((tiles_width * 0.5));
var _local4:* = Math.round((tiles_height * 0.5));
stage.x = -(((_arg1 - _local3) * scale));
stage.y = -(((_arg2 - _local4) * scale));
last_stage_x = ((stage.x / scale) >> 0);
last_stage_y = ((stage.y / scale) >> 0);
var _local5:* = ((_arg1 - _local3) - (border_x[master_layer] * 2));
var _local6:* = ((_arg2 - _local4) - (border_y[master_layer] * 2));
var _local7:* = ((_local5 + tiles_width) + (border_x[master_layer] * 4));
var _local8:* = ((_local6 + tiles_height) + (border_y[master_layer] * 4));
if (_local5 < 0){
_local5 = 0;
};
if (_local6 < 0){
_local6 = 0;
};
if (_local7 > width){
_local7 = width;
};
if (_local8 > height){
_local8 = height;
};
scroll_topleft_x = (_local5 * scale);
scroll_topleft_y = (_local6 * scale);
scroll_bottomright_x = (_local7 * scale);
scroll_bottomright_y = (_local8 * scale);
var _local11:int;
while (_local11 < layers) {
changeLayer(_local11);
if (update_layer[_local11]){
_local9 = _local5;
while (_local9 < _local7) {
map_cols_index.push(_local9);
_local9++;
};
_local10 = _local6;
while (_local10 < _local8) {
pushRow(_local10);
_local10++;
};
};
_local11++;
};
}
public function clipManager():void{
var _local3:int;
var _local1 = (((stage.x * SCALE) * 0.5) >> 0);
var _local2 = (((stage.y * SCALE) * 0.5) >> 0);
var _local4:int;
while (_local4 < layers) {
changeLayer(_local4);
if (update_layer[_local4]){
if (scroll_x){
if (-(_local1) > last_stage_x){
if ((((map_cols_index[0] > 0)) && ((map_cols_index[0] > (-(_local1) - border_x[_local4]))))){
_local3 = (map_cols_index[0] - (-(_local1) - border_x[_local4]));
while (_local3 > 0) {
unshiftCol((map_cols_index[0] - 1));
if (_local4 == master_layer){
scroll_topleft_x = (scroll_topleft_x - scale);
};
_local3--;
if (map_cols_index[0] == 0){
break;
};
};
};
if (map_cols_index[(map_cols_index.length - 1)] > ((-(_local1) + tiles_width) + border_x[_local4])){
_local3 = (map_cols_index[(map_cols_index.length - 1)] - ((-(_local1) + tiles_width) + border_x[_local4]));
while (_local3 > 0) {
popCol();
if (_local4 == master_layer){
scroll_bottomright_x = (scroll_bottomright_x - scale);
};
_local3--;
};
};
};
if (_local1 < last_stage_x){
if ((((map_cols_index[(map_cols_index.length - 1)] < (width - 1))) && ((map_cols_index[(map_cols_index.length - 1)] < ((-(_local1) + tiles_width) + border_x[_local4]))))){
_local3 = (((-(_local1) + tiles_width) + border_x[_local4]) - map_cols_index[(map_cols_index.length - 1)]);
while (_local3 > 0) {
pushCol((map_cols_index[(map_cols_index.length - 1)] + 1));
if (_local4 == master_layer){
scroll_bottomright_x = (scroll_bottomright_x + scale);
};
_local3--;
if (map_cols_index[(map_cols_index.length - 1)] == (width - 1)){
break;
};
};
};
if (map_cols_index[0] < (-(_local1) - border_x[_local4])){
_local3 = ((-(_local1) - border_x[_local4]) - map_cols_index[0]);
while (_local3 > 0) {
shiftCol();
if (_local4 == master_layer){
scroll_topleft_x = (scroll_topleft_x + scale);
};
_local3--;
};
};
};
};
if (scroll_y){
if (_local2 > last_stage_y){
if ((((map_rows_index[0] > 0)) && ((map_rows_index[0] > (-(_local2) - border_y[_local4]))))){
_local3 = (map_rows_index[0] - (-(_local2) - border_y[_local4]));
while (_local3 > 0) {
unshiftRow((map_rows_index[0] - 1));
if (_local4 == master_layer){
scroll_topleft_y = (scroll_topleft_y - scale);
};
_local3--;
if (map_rows_index[0] == 0){
break;
};
};
};
if (map_rows_index[(map_rows_index.length - 1)] > ((-(_local2) + tiles_height) + border_y[_local4])){
_local3 = (map_rows_index[(map_rows_index.length - 1)] - ((-(_local2) + tiles_height) + border_y[_local4]));
while (_local3 > 0) {
popRow();
if (_local4 == master_layer){
scroll_bottomright_y = (scroll_bottomright_y - scale);
};
_local3--;
};
};
};
if (_local2 < last_stage_y){
if ((((map_rows_index[(map_rows_index.length - 1)] < (height - 1))) && ((map_rows_index[(map_rows_index.length - 1)] < ((-(_local2) + tiles_height) + border_y[_local4]))))){
_local3 = (((-(_local2) + tiles_height) + border_y[_local4]) - map_rows_index[(map_rows_index.length - 1)]);
while (_local3 > 0) {
pushRow((map_rows_index[(map_rows_index.length - 1)] + 1));
if (_local4 == master_layer){
scroll_bottomright_y = (scroll_bottomright_y + scale);
};
_local3--;
if (map_rows_index[(map_rows_index.length - 1)] == (height - 1)){
break;
};
};
};
if (map_rows_index[0] < (-(_local2) - border_y[_local4])){
_local3 = ((-(_local2) - border_y[_local4]) - map_rows_index[0]);
while (_local3 > 0) {
shiftRow();
if (_local4 == master_layer){
scroll_topleft_y = (scroll_topleft_y + scale);
};
_local3--;
};
};
};
};
};
_local4++;
};
last_stage_x = _local1;
last_stage_y = _local2;
}
protected function pushCol(_arg1:Number):void{
map_cols_index.push(_arg1);
var _local2:int;
while (_local2 < map_rows_index.length) {
map_rows[_local2].push(tile_maker.mapElement(_arg1, (_local2 + map_rows_index[0])));
_local2++;
};
}
protected function unshiftCol(_arg1:Number):void{
map_cols_index.unshift(_arg1);
var _local2:int;
while (_local2 < map_rows_index.length) {
map_rows[_local2].unshift(tile_maker.mapElement(_arg1, (_local2 + map_rows_index[0])));
_local2++;
};
}
protected function popCol():void{
var _local1:int;
while (_local1 < map_rows_index.length) {
if (map_rows[_local1][(map_cols_index.length - 1)] != null){
map_rows[_local1][(map_cols_index.length - 1)].remove();
};
map_rows[_local1].pop();
_local1++;
};
map_cols_index.pop();
}
protected function shiftCol():void{
var _local1:int;
while (_local1 < map_rows_index.length) {
if (map_rows[_local1][0] != null){
map_rows[_local1][0].remove();
};
map_rows[_local1].shift();
_local1++;
};
map_cols_index.shift();
}
protected function pushRow(_arg1:int):void{
map_rows.push(new Array());
map_rows_index.push(_arg1);
var _local2:int;
while (_local2 < map_cols_index.length) {
map_rows[(map_rows.length - 1)].push(tile_maker.mapElement((_local2 + map_cols_index[0]), _arg1));
_local2++;
};
}
protected function unshiftRow(_arg1:int):void{
map_rows.unshift(new Array());
map_rows_index.unshift(_arg1);
var _local2:int;
while (_local2 < map_cols_index.length) {
map_rows[0].push(tile_maker.mapElement((_local2 + map_cols_index[0]), _arg1));
_local2++;
};
}
protected function popRow():void{
var _local1:int;
while (_local1 < map_cols_index.length) {
if (map_rows[(map_rows.length - 1)][_local1] != null){
map_rows[(map_rows.length - 1)][_local1].remove();
};
_local1++;
};
map_rows.pop();
map_rows_index.pop();
}
protected function shiftRow():void{
var _local1:int;
while (_local1 < map_cols_index.length) {
if (map_rows[0][_local1] != null){
map_rows[0][_local1].remove();
};
_local1++;
};
map_rows.shift();
map_rows_index.shift();
}
}
}//package com.nitrome.engine
Section 15
//Trig (com.nitrome.engine.Trig)
package com.nitrome.engine {
public class Trig {
public static const DEGREES:Number = 57.2957795130823;
public static const cos:Array = [1, 0.999847695156391, 0.999390827019096, 0.998629534754574, 0.997564050259824, 0.996194698091746, 0.994521895368273, 0.992546151641322, 0.99026806874157, 0.987688340595138, 0.984807753012208, 0.981627183447664, 0.978147600733806, 0.974370064785235, 0.970295726275996, 0.965925826289068, 0.961261695938319, 0.956304755963035, 0.951056516295154, 0.945518575599317, 0.939692620785908, 0.933580426497202, 0.927183854566787, 0.92050485345244, 0.913545457642601, 0.90630778703665, 0.898794046299167, 0.891006524188368, 0.882947592858927, 0.874619707139396, 0.866025403784438, 0.857167300702112, 0.848048096156426, 0.838670567945424, 0.829037572555042, 0.819152044288992, 0.809016994374947, 0.798635510047293, 0.788010753606722, 0.777145961456971, 0.766044443118978, 0.754709580222772, 0.743144825477394, 0.73135370161917, 0.719339800338651, 0.707106781186547, 0.694658370458997, 0.681998360062498, 0.669130606358858, 0.656059028990507, 0.642787609686539, 0.629320391049837, 0.615661475325658, 0.601815023152048, 0.587785252292472, 0.573576436351045, 0.559192903470746, 0.544639035015026, 0.529919264233204, 0.515038074910053, 0.499999999999999, 0.484809620246336, 0.46947156278589, 0.453990499739546, 0.438371146789076, 0.422618261740698, 0.406736643075799, 0.390731128489273, 0.374606593415911, 0.358367949545299, 0.342020143325668, 0.325568154457155, 0.309016994374946, 0.292371704722735, 0.275637355816998, 0.258819045102519, 0.241921895599666, 0.224951054343864, 0.207911690817758, 0.190808995376543, 0.173648177666929, 0.156434465040229, 0.139173100960064, 0.121869343405146, 0.104528463267652, 0.0871557427476566, 0.0697564737441237, 0.0523359562429422, 0.0348994967024993, 0.0174524064372818, -1.71512449944288E-15, -0.0174524064372853, -0.0348994967025027, -0.0523359562429456, -0.0697564737441271, -0.08715574274766, -0.104528463267655, -0.121869343405149, -0.139173100960067, -0.156434465040233, -0.173648177666932, -0.190808995376547, -0.207911690817761, -0.224951054343867, -0.24192189559967, -0.258819045102523, -0.275637355817001, -0.292371704722739, -0.309016994374949, -0.325568154457159, -0.342020143325671, -0.358367949545302, -0.374606593415914, -0.390731128489276, -0.406736643075802, -0.422618261740701, -0.438371146789079, -0.453990499739548, -0.469471562785892, -0.484809620246338, -0.500000000000001, -0.515038074910055, -0.529919264233206, -0.544639035015028, -0.559192903470747, -0.573576436351046, -0.587785252292473, -0.601815023152048, -0.615661475325658, -0.629320391049837, -0.642787609686539, -0.656059028990506, -0.669130606358857, -0.681998360062497, -0.694658370458996, -0.707106781186546, -0.71933980033865, -0.731353701619169, -0.743144825477393, -0.75470958022277, -0.766044443118976, -0.777145961456969, -0.78801075360672, -0.798635510047291, -0.809016994374945, -0.81915204428899, -0.829037572555039, -0.838670567945422, -0.848048096156424, -0.85716730070211, -0.866025403784436, -0.874619707139393, -0.882947592858924, -0.891006524188365, -0.898794046299164, -0.906307787036647, -0.913545457642598, -0.920504853452438, -0.927183854566785, -0.933580426497199, -0.939692620785906, -0.945518575599315, -0.951056516295151, -0.956304755963033, -0.961261695938317, -0.965925826289066, -0.970295726275995, -0.974370064785233, -0.978147600733804, -0.981627183447662, -0.984807753012207, -0.987688340595136, -0.990268068741569, -0.992546151641321, -0.994521895368272, -0.996194698091745, -0.997564050259824, -0.998629534754573, -0.999390827019095, -0.999847695156391, -1, -0.999847695156391, -0.999390827019096, -0.998629534754574, -0.997564050259825, -0.996194698091747, -0.994521895368275, -0.992546151641324, -0.990268068741572, -0.98768834059514, -0.98480775301221, -0.981627183447666, -0.978147600733808, -0.974370064785238, -0.970295726276, -0.965925826289072, -0.961261695938323, -0.95630475596304, -0.951056516295158, -0.945518575599322, -0.939692620785913, -0.933580426497207, -0.927183854566793, -0.920504853452446, -0.913545457642607, -0.906307787036657, -0.898794046299174, -0.891006524188375, -0.882947592858935, -0.874619707139404, -0.866025403784447, -0.857167300702121, -0.848048096156435, -0.838670567945433, -0.829037572555052, -0.819152044289002, -0.809016994374958, -0.798635510047304, -0.788010753606733, -0.777145961456983, -0.76604444311899, -0.754709580222784, -0.743144825477407, -0.731353701619184, -0.719339800338665, -0.707106781186561, -0.694658370459012, -0.681998360062513, -0.669130606358873, -0.656059028990523, -0.642787609686555, -0.629320391049854, -0.615661475325675, -0.601815023152065, -0.58778525229249, -0.573576436351064, -0.559192903470765, -0.544639035015046, -0.529919264233224, -0.515038074910073, -0.50000000000002, -0.484809620246357, -0.469471562785911, -0.453990499739568, -0.438371146789098, -0.422618261740721, -0.406736643075822, -0.390731128489296, -0.374606593415934, -0.358367949545323, -0.342020143325692, -0.32556815445718, -0.309016994374971, -0.292371704722761, -0.275637355817024, -0.258819045102545, -0.241921895599693, -0.22495105434389, -0.207911690817785, -0.190808995376571, -0.173648177666957, -0.156434465040257, -0.139173100960092, -0.121869343405174, -0.104528463267681, -0.0871557427476857, -0.069756473744153, -0.0523359562429718, -0.0348994967025292, -0.0174524064373119, -2.86054064502761E-14, 0.0174524064372547, 0.034899496702472, 0.0523359562429147, 0.069756473744096, 0.0871557427476287, 0.104528463267624, 0.121869343405118, 0.139173100960036, 0.156434465040201, 0.1736481776669, 0.190808995376515, 0.207911690817729, 0.224951054343835, 0.241921895599637, 0.25881904510249, 0.275637355816969, 0.292371704722706, 0.309016994374917, 0.325568154457126, 0.342020143325638, 0.35836794954527, 0.374606593415881, 0.390731128489243, 0.40673664307577, 0.422618261740669, 0.438371146789047, 0.453990499739517, 0.469471562785861, 0.484809620246307, 0.49999999999997, 0.515038074910024, 0.529919264233175, 0.544639035014998, 0.559192903470717, 0.573576436351017, 0.587785252292444, 0.60181502315202, 0.61566147532563, 0.629320391049809, 0.642787609686511, 0.65605902899048, 0.669130606358831, 0.681998360062471, 0.69465837045897, 0.707106781186521, 0.719339800338625, 0.731353701619145, 0.743144825477369, 0.754709580222747, 0.766044443118953, 0.777145961456946, 0.788010753606698, 0.798635510047269, 0.809016994374924, 0.819152044288969, 0.82903757255502, 0.838670567945402, 0.848048096156405, 0.857167300702092, 0.866025403784418, 0.874619707139376, 0.882947592858908, 0.891006524188349, 0.898794046299149, 0.906307787036632, 0.913545457642584, 0.920504853452424, 0.927183854566772, 0.933580426497187, 0.939692620785894, 0.945518575599303, 0.95105651629514, 0.956304755963023, 0.961261695938307, 0.965925826289057, 0.970295726275986, 0.974370064785225, 0.978147600733796, 0.981627183447656, 0.9848077530122, 0.987688340595131, 0.990268068741564, 0.992546151641317, 0.994521895368269, 0.996194698091742, 0.997564050259821, 0.998629534754572, 0.999390827019094, 0.99984769515639];
public static const sin:Array = [0, 0.0174524064372835, 0.034899496702501, 0.0523359562429438, 0.0697564737441253, 0.0871557427476582, 0.104528463267653, 0.121869343405147, 0.139173100960065, 0.156434465040231, 0.17364817766693, 0.190808995376545, 0.207911690817759, 0.224951054343865, 0.241921895599668, 0.258819045102521, 0.275637355816999, 0.292371704722737, 0.309016994374947, 0.325568154457157, 0.342020143325669, 0.3583679495453, 0.374606593415912, 0.390731128489274, 0.4067366430758, 0.4226182617407, 0.438371146789078, 0.453990499739547, 0.469471562785891, 0.484809620246337, 0.5, 0.515038074910054, 0.529919264233205, 0.544639035015027, 0.559192903470747, 0.573576436351046, 0.587785252292473, 0.601815023152049, 0.615661475325659, 0.629320391049838, 0.64278760968654, 0.656059028990508, 0.669130606358859, 0.681998360062499, 0.694658370458998, 0.707106781186548, 0.719339800338652, 0.731353701619171, 0.743144825477395, 0.754709580222772, 0.766044443118979, 0.777145961456971, 0.788010753606722, 0.798635510047293, 0.809016994374948, 0.819152044288992, 0.829037572555042, 0.838670567945424, 0.848048096156427, 0.857167300702113, 0.866025403784439, 0.874619707139396, 0.882947592858927, 0.891006524188368, 0.898794046299167, 0.90630778703665, 0.913545457642601, 0.920504853452441, 0.927183854566788, 0.933580426497202, 0.939692620785909, 0.945518575599317, 0.951056516295154, 0.956304755963036, 0.961261695938319, 0.965925826289069, 0.970295726275997, 0.974370064785236, 0.978147600733806, 0.981627183447664, 0.984807753012208, 0.987688340595138, 0.99026806874157, 0.992546151641322, 0.994521895368274, 0.996194698091746, 0.997564050259824, 0.998629534754574, 0.999390827019096, 0.999847695156391, 1, 0.999847695156391, 0.999390827019096, 0.998629534754574, 0.997564050259824, 0.996194698091745, 0.994521895368273, 0.992546151641322, 0.99026806874157, 0.987688340595137, 0.984807753012208, 0.981627183447664, 0.978147600733805, 0.974370064785235, 0.970295726275996, 0.965925826289068, 0.961261695938318, 0.956304755963035, 0.951056516295153, 0.945518575599316, 0.939692620785908, 0.933580426497201, 0.927183854566787, 0.920504853452439, 0.9135454576426, 0.906307787036649, 0.898794046299166, 0.891006524188367, 0.882947592858926, 0.874619707139395, 0.866025403784438, 0.857167300702112, 0.848048096156426, 0.838670567945424, 0.829037572555042, 0.819152044288992, 0.809016994374947, 0.798635510047293, 0.788010753606722, 0.777145961456971, 0.766044443118979, 0.754709580222773, 0.743144825477395, 0.731353701619171, 0.719339800338652, 0.707106781186549, 0.694658370458999, 0.6819983600625, 0.66913060635886, 0.656059028990509, 0.642787609686541, 0.62932039104984, 0.615661475325661, 0.601815023152051, 0.587785252292476, 0.573576436351049, 0.55919290347075, 0.544639035015031, 0.529919264233209, 0.515038074910058, 0.500000000000004, 0.484809620246341, 0.469471562785895, 0.453990499739552, 0.438371146789082, 0.422618261740705, 0.406736643075806, 0.390731128489279, 0.374606593415918, 0.358367949545306, 0.342020143325675, 0.325568154457163, 0.309016994374954, 0.292371704722744, 0.275637355817006, 0.258819045102528, 0.241921895599676, 0.224951054343873, 0.207911690817768, 0.190808995376553, 0.173648177666939, 0.15643446504024, 0.139173100960075, 0.121869343405157, 0.104528463267663, 0.0871557427476679, 0.0697564737441353, 0.052335956242954, 0.0348994967025113, 0.0174524064372941, 1.07806057163162E-14, -0.0174524064372725, -0.0348994967024898, -0.0523359562429325, -0.0697564737441138, -0.0871557427476465, -0.104528463267642, -0.121869343405135, -0.139173100960053, -0.156434465040218, -0.173648177666918, -0.190808995376532, -0.207911690817746, -0.224951054343852, -0.241921895599655, -0.258819045102507, -0.275637355816986, -0.292371704722723, -0.309016994374934, -0.325568154457143, -0.342020143325655, -0.358367949545286, -0.374606593415898, -0.39073112848926, -0.406736643075786, -0.422618261740685, -0.438371146789063, -0.453990499739532, -0.469471562785876, -0.484809620246323, -0.499999999999986, -0.51503807491004, -0.52991926423319, -0.544639035015013, -0.559192903470732, -0.573576436351032, -0.587785252292459, -0.601815023152034, -0.615661475325644, -0.629320391049823, -0.642787609686525, -0.656059028990493, -0.669130606358844, -0.681998360062484, -0.694658370458983, -0.707106781186534, -0.719339800338637, -0.731353701619157, -0.743144825477381, -0.754709580222759, -0.766044443118965, -0.777145961456958, -0.788010753606709, -0.79863551004728, -0.809016994374935, -0.819152044288979, -0.829037572555029, -0.838670567945412, -0.848048096156414, -0.857167300702101, -0.866025403784427, -0.874619707139385, -0.882947592858916, -0.891006524188357, -0.898794046299157, -0.90630778703664, -0.913545457642591, -0.920504853452431, -0.927183854566778, -0.933580426497193, -0.9396926207859, -0.945518575599309, -0.951056516295146, -0.956304755963028, -0.961261695938312, -0.965925826289062, -0.97029572627599, -0.974370064785229, -0.9781476007338, -0.981627183447659, -0.984807753012203, -0.987688340595134, -0.990268068741567, -0.992546151641319, -0.994521895368271, -0.996194698091743, -0.997564050259822, -0.998629534754572, -0.999390827019095, -0.999847695156391, -1, -0.999847695156392, -0.999390827019097, -0.998629534754575, -0.997564050259826, -0.996194698091748, -0.994521895368276, -0.992546151641326, -0.990268068741574, -0.987688340595142, -0.984807753012213, -0.98162718344767, -0.978147600733812, -0.974370064785242, -0.970295726276004, -0.965925826289076, -0.961261695938328, -0.956304755963045, -0.951056516295164, -0.945518575599327, -0.93969262078592, -0.933580426497214, -0.9271838545668, -0.920504853452453, -0.913545457642615, -0.906307787036664, -0.898794046299182, -0.891006524188383, -0.882947592858943, -0.874619707139413, -0.866025403784456, -0.85716730070213, -0.848048096156444, -0.838670567945443, -0.829037572555061, -0.819152044289012, -0.809016994374968, -0.798635510047314, -0.788010753606744, -0.777145961456994, -0.766044443119002, -0.754709580222796, -0.743144825477419, -0.731353701619196, -0.719339800338677, -0.707106781186574, -0.694658370459024, -0.681998360062526, -0.669130606358887, -0.656059028990536, -0.642787609686569, -0.629320391049868, -0.615661475325689, -0.601815023152079, -0.587785252292505, -0.573576436351078, -0.55919290347078, -0.544639035015061, -0.529919264233239, -0.515038074910089, -0.500000000000035, -0.484809620246373, -0.469471562785927, -0.453990499739583, -0.438371146789115, -0.422618261740737, -0.406736643075838, -0.390731128489312, -0.374606593415951, -0.35836794954534, -0.342020143325709, -0.325568154457197, -0.309016994374988, -0.292371704722778, -0.275637355817041, -0.258819045102563, -0.24192189559971, -0.224951054343908, -0.207911690817802, -0.190808995376588, -0.173648177666974, -0.156434465040275, -0.13917310096011, -0.121869343405192, -0.104528463267698, -0.0871557427477034, -0.0697564737441708, -0.0523359562429896, -0.034899496702547, -0.0174524064373297];
}
}//package com.nitrome.engine
Section 16
//Util (com.nitrome.engine.Util)
package com.nitrome.engine {
import flash.display.*;
import flash.geom.*;
public class Util {
public static const UP:Number = 1;
public static const RIGHT:Number = 2;
public static const DOWN:Number = 4;
public static const LEFT:Number = 8;
public static const UP_ROTATION:Number = 0;
public static const UP_RIGHT_ROTATION:Number = 45;
public static const RIGHT_ROTATION:Number = 90;
public static const DOWN_RIGHT_ROTATION:Number = 135;
public static const DOWN_ROTATION:Number = 180;
public static const DOWN_LEFT_ROTATION:Number = 225;
public static const LEFT_ROTATION:Number = 270;
public static const UP_LEFT_ROTATION:Number = 315;
public static function thetaLerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
_arg1 = (_arg1 + ((Math.abs((_arg2 - _arg1)))>Math.PI) ? ((_arg1)<_arg2) ? (Math.PI * 2) : -((Math.PI * 2)) : 0);
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
public static function degreeLerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
_arg1 = (_arg1 + ((Math.abs((_arg2 - _arg1)))>180) ? ((_arg1)<_arg2) ? 360 : -(360) : 0);
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
public static function lerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
public static function wrapLerp(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
var _local6:Number = Math.abs((_arg4 - _arg5));
_arg1 = (_arg1 + ((Math.abs((_arg2 - _arg1)))>(_local6 * 0.5)) ? ((_arg1)<_arg2) ? _local6 : -(_local6) : 0);
return (lerp(_arg1, _arg2, _arg3));
}
public static function localToLocal(_arg1:Point, _arg2:DisplayObject, _arg3:DisplayObject):Point{
_arg1.x = (_arg1.y = 0);
_arg1 = _arg2.localToGlobal(_arg1);
_arg1 = _arg3.globalToLocal(_arg1);
return (_arg1);
}
public static function stopClips(_arg1:DisplayObjectContainer):void{
var _local2:int;
while (_local2 < _arg1.numChildren) {
if ((_arg1.getChildAt(_local2) is MovieClip)){
(_arg1.getChildAt(_local2) as MovieClip).stop();
};
if ((_arg1.getChildAt(_local2) is DisplayObjectContainer)){
stopClips((_arg1.getChildAt(_local2) as DisplayObjectContainer));
};
_local2++;
};
}
public static function startClips(_arg1:DisplayObjectContainer):void{
var _local2:int;
while (_local2 < _arg1.numChildren) {
if ((_arg1.getChildAt(_local2) is MovieClip)){
(_arg1.getChildAt(_local2) as MovieClip).gotoAndPlay((_arg1.getChildAt(_local2) as MovieClip).currentFrame);
};
if ((_arg1.getChildAt(_local2) is DisplayObjectContainer)){
startClips((_arg1.getChildAt(_local2) as DisplayObjectContainer));
};
_local2++;
};
}
public static function onScreen(_arg1:Number, _arg2:Number, _arg3:Game, _arg4:Number):Boolean{
return (((((((((_arg1 + _arg4) >= -(_arg3.canvas.x))) && (((_arg2 + _arg4) >= -(_arg3.canvas.y))))) && (((_arg1 - _arg4) < (-(_arg3.canvas.x) + Game.width))))) && (((_arg2 - _arg4) < (-(_arg3.canvas.y) + Game.height)))));
}
public static function onScreen2(_arg1:Number, _arg2:Number, _arg3:Game, _arg4:Number):Boolean{
return (((((((((_arg1 + _arg4) >= -((_arg3.canvas.x * 2)))) && (((_arg2 + _arg4) >= -((_arg3.canvas.y * 2)))))) && (((_arg1 - _arg4) < (-((_arg3.canvas.x * 2)) + Game.width))))) && (((_arg2 - _arg4) < (-((_arg3.canvas.y * 2)) + Game.height)))));
}
public static function getRotation(_arg1:int):Number{
var _local2:int;
switch (_arg1){
case UP:
_local2 = UP_ROTATION;
break;
case RIGHT:
_local2 = RIGHT_ROTATION;
break;
case DOWN:
_local2 = DOWN_ROTATION;
break;
case LEFT:
_local2 = LEFT_ROTATION;
break;
};
return (_local2);
}
public static function sideToString(_arg1:int):String{
if (_arg1 == UP){
return ("UP");
};
if (_arg1 == RIGHT){
return ("RIGHT");
};
if (_arg1 == DOWN){
return ("DOWN");
};
if (_arg1 == LEFT){
return ("LEFT");
};
return ("null");
}
public static function mcToString(_arg1:Sprite):String{
return ((((("(" + _arg1.x) + " ") + _arg1.y) + ")"));
}
public static function mcToString2(_arg1:Sprite, _arg2:Sprite):String{
var _local3:Point = new Point();
_local3 = Util.localToLocal(_local3, _arg1, _arg2);
return ((((("pos.x = " + _local3.x) + ";\npos.y = ") + _local3.y) + ";"));
}
public static function circleOverlap(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{
return (((((_arg4 - _arg1) * (_arg4 - _arg1)) + ((_arg5 - _arg2) * (_arg5 - _arg2))) <= ((_arg3 + _arg6) * (_arg3 + _arg6))));
}
public static function circleInside(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{
return (((((_arg4 - _arg1) * (_arg4 - _arg1)) + ((_arg5 - _arg2) * (_arg5 - _arg2))) <= ((_arg6 - _arg3) * (_arg6 - _arg3))));
}
public static function proximity(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Boolean{
return (((((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2))) <= (_arg5 * _arg5)));
}
public static function rectContains(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{
return ((((((((_arg5 >= _arg1)) && ((_arg6 >= _arg2)))) && ((_arg5 < (_arg1 + _arg3))))) && ((_arg6 < (_arg2 + _arg4)))));
}
public static function circlePolyCollision(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Array){
var _local5:Number = Number.MAX_VALUE;
var _local6:Number = Number.MAX_VALUE;
var _local7:Number = Number.MIN_VALUE;
var _local8:Number = Number.MIN_VALUE;
var _local9:Number = 0;
while (_local9 < _arg4.length) {
if (_arg4[_local9].x < _local5){
_local5 = _arg4[_local9].x;
};
if (_arg4[_local9].y < _local6){
_local6 = _arg4[_local9].y;
};
if (_arg4[_local9].x > _local7){
_local7 = _arg4[_local9].x;
};
if (_arg4[_local9].y > _local8){
_local8 = _arg4[_local9].y;
};
_local9++;
};
if ((((((((_local5 > (_arg1 + ((_arg3 * 2) - 1)))) || (((_local5 + (_local7 - 1)) < _arg1)))) || ((_local6 > (_arg2 + ((_arg3 * 2) - 1)))))) || (((_local6 + (_local8 - 1)) < _arg2)))){
return (false);
};
return (false);
}
}
}//package com.nitrome.engine
Section 17
//BitmapSprite (com.nitrome.engine_specific.BitmapSprite)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.geom.*;
public class BitmapSprite {
public var p:Point;
public var x:int;
public var y:int;
public var width:int;
public var height:int;
public var dx:int;
public var dy:int;
public var frames:Array;
public var total_frames:int;
public var rect:Rectangle;
public var test:BitmapData;
public static var p:Point;
public function BitmapSprite(_arg1:MovieClip){
x = (y = 0);
frames = new Array();
var _local2:Rectangle = _arg1.getBounds(_arg1);
var _local3:int;
while (_local3 < _arg1.totalFrames) {
_arg1.gotoAndStop((_local3 + 1));
frames[_local3] = new BitmapData(Math.ceil(_local2.width), Math.ceil(_local2.height), true, 0);
frames[_local3].draw(_arg1, new Matrix(1, 0, 0, 1, -(_local2.left), -(_local2.top)));
_local3++;
};
total_frames = _arg1.totalFrames;
width = _local2.width;
height = _local2.height;
dx = _local2.left;
dy = _local2.top;
rect = new Rectangle(0, 0, Math.ceil(_local2.width), Math.ceil(_local2.height));
p = new Point();
}
public function addFrame(_arg1:Rectangle):void{
frames.push(_arg1);
}
public function addFrames(_arg1:Array):void{
frames = frames.concat(_arg1);
}
public function render(_arg1:BitmapData, _arg2:int):void{
p.x = (x + dx);
p.y = (y + dy);
_arg1.copyPixels(frames[_arg2], rect, p, null, null, true);
}
}
}//package com.nitrome.engine_specific
Section 18
//Block (com.nitrome.engine_specific.Block)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Block extends Rect {
public var active:Boolean;
public var attachable:Boolean;
public var block:Boolean;// = true
public var force_field:Boolean;// = false
public var moving_block:Boolean;// = false
public function Block(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
super(_arg1, _arg2, _arg3, _arg4);
stacked = 0;
attachable = true;
active = true;
}
public function stack(_arg1:int):void{
stacked = (stacked | _arg1);
}
}
}//package com.nitrome.engine_specific
Section 19
//BlockClip (com.nitrome.engine_specific.BlockClip)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class BlockClip extends Clip {
public var b:Block;
public var spawn:Boolean;// = false
public function BlockClip(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2);
block = true;
}
public function debug():void{
b.draw(g.debug);
if (b.stacked > 0){
if ((b.stacked & Rect.UP)){
g.debug.moveTo((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)));
g.debug.lineTo((b.x + (b.width * 0.5)), b.y);
};
if ((b.stacked & Rect.RIGHT)){
g.debug.moveTo((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)));
g.debug.lineTo((b.x + b.width), (b.y + (b.height * 0.5)));
};
if ((b.stacked & Rect.DOWN)){
g.debug.moveTo((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)));
g.debug.lineTo((b.x + (b.width * 0.5)), (b.y + b.height));
};
if ((b.stacked & Rect.LEFT)){
g.debug.moveTo((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)));
g.debug.lineTo(b.x, (b.y + (b.height * 0.5)));
};
};
}
}
}//package com.nitrome.engine_specific
Section 20
//BlockTile (com.nitrome.engine_specific.BlockTile)
package com.nitrome.engine_specific {
import flash.display.*;
public class BlockTile extends Tile {
public function BlockTile(_arg1:Sprite, _arg2:Sprite, _arg3:Game){
super(_arg1, _arg2, _arg3, ((SMALL | STATIC) | BLOCK));
_arg3.tile_front_holder.addChild(_arg1);
}
}
}//package com.nitrome.engine_specific
Section 21
//BossExplosions (com.nitrome.engine_specific.BossExplosions)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class BossExplosions extends Encounter {
public var count:int;// = 0
public var zone:Rect;
public static const DELAY:int = 250;
public static const GAME_OVER_DELAY:int = 125;
public static const NEXT_BANG_DELAY:int = 3;
public function BossExplosions(_arg1:Rect, _arg2:Game){
super(new Sprite(), _arg2, true);
_arg2.cake_holder.addChild(mc);
this.zone = _arg1;
has_main = true;
has_collision = false;
}
public function main():void{
if (count <= DELAY){
count++;
if ((count % NEXT_BANG_DELAY) == 0){
x = (zone.x + (Math.random() * zone.width));
y = (zone.y + (Math.random() * zone.height));
g.addSmoke(x, y);
g.addSmoke(x, y);
g.addSmoke(x, y);
g.shake_count = 1;
g.addFX(x, y, g.large_bang_bitmap);
if (Math.random() > 0.4){
NitromeGame.sound_manager.playSound("big_bang");
} else {
NitromeGame.sound_manager.playSound("medium_bang");
};
};
if (count == GAME_OVER_DELAY){
g.levelComplete();
g.finish_line = (g.scroller.height * Game.scale);
};
} else {
active = false;
};
}
}
}//package com.nitrome.engine_specific
Section 22
//BreakTile (com.nitrome.engine_specific.BreakTile)
package com.nitrome.engine_specific {
import flash.display.*;
public class BreakTile extends Tile {
public function BreakTile(_arg1:Sprite, _arg2:Sprite, _arg3:Game){
super(_arg1, _arg2, _arg3, ((Tile.SMALL | Tile.STATIC) | Tile.BREAK));
}
}
}//package com.nitrome.engine_specific
Section 23
//Bullet (com.nitrome.engine_specific.Bullet)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Bullet extends Dot {
public var vx:Number;
public var vy:Number;
public var px:Number;
public var py:Number;
public var speed:Number;
public var bitmap:BitmapSprite;
public var hit_bitmap:BitmapSprite;
public var bitmap_frame:int;
public var radius:Number;// = 6
public var g:Game;
public var type:int;// = 0
public var active;// = true
public var track:Line;
public var homing_count:int;
public var collision_rect:Rect;
public static const HOMING_DELAY:int = 12;
public static const MAGNET_SPEED:Number = 5;
public static const SMALL_GREEN:int = 0;
public static const SMALL_RED:int = 1;
public static const SMALL_BLUE:int = 2;
public static const BIG:int = 3;
public static const HOMING:int = 4;
public static const PLAYER:int = 5;
public static const PLAYER_SPECIAL:int = 6;
public static const CASH:int = 7;
public static const NAPALM:int = 8;
public function Bullet(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:BitmapSprite, _arg6:BitmapSprite, _arg7:int, _arg8:Number, _arg9:Game){
super(_arg1, _arg2);
this.g = _arg9;
this.vx = _arg3;
this.vy = _arg4;
this.bitmap = _arg5;
this.hit_bitmap = _arg6;
this.type = _arg7;
this.speed = _arg8;
bitmap_frame = 0;
if (_arg7 == HOMING){
track = new Line(this, _arg9.player);
homing_count = HOMING_DELAY;
} else {
if ((((((_arg7 == PLAYER)) || ((_arg7 == NAPALM)))) || ((_arg7 == PLAYER_SPECIAL)))){
collision_rect = new Rect(0, 0, (_arg5.width - 4), (_arg5.height - 4));
};
};
}
public function main():void{
px = x;
py = y;
if ((((((g.probe.magnet_count.value > 0)) || (g.probe.magnet_blasting))) && (!((((((type == PLAYER)) || ((type == PLAYER_SPECIAL)))) || ((type == NAPALM))))))){
if (track == null){
track = new Line(this, g.probe);
} else {
if (track.b != g.probe){
track.b = g.probe;
} else {
track.updateLine();
vx = (track.dx * MAGNET_SPEED);
vy = (track.dy * MAGNET_SPEED);
x = (x + vx);
y = (y + vy);
};
};
} else {
if (type == HOMING){
if (homing_count > 0){
homing_count--;
x = (x + vx);
y = (y + vy);
} else {
if (track.b != g.player){
track.b = g.player;
};
if (g.player.active){
track.updateLine();
};
x = (x + (track.dx * speed));
y = (y + (track.dy * speed));
};
} else {
x = (x + vx);
y = (y + vy);
};
};
if ((((((type == PLAYER)) || ((type == NAPALM)))) || ((type == PLAYER_SPECIAL)))){
collision_rect.x = ((x + bitmap.dx) + 2);
collision_rect.y = ((y + bitmap.dy) + 2);
};
bitmap.x = (-(g.screen.x) + x);
bitmap.y = (-(g.screen.y) + y);
}
public function toString():String{
return ((((("(" + x) + ",") + y) + ")"));
}
public function resolve(_arg1:Rect):void{
if (vy == 0){
if (vx > 0){
x = _arg1.x;
} else {
x = ((_arg1.x + _arg1.width) - 1);
};
bitmap.x = (-(g.screen.x) + x);
bitmap.y = (-(g.screen.y) + y);
return;
} else {
if (vx == 0){
if (vy > 0){
y = _arg1.y;
} else {
y = ((_arg1.y + _arg1.height) - 1);
};
bitmap.x = (-(g.screen.x) + x);
bitmap.y = (-(g.screen.y) + y);
return;
};
};
var _local2:int = _arg1.sideOf(x, y);
if (_local2 == Rect.UP){
y = _arg1.y;
} else {
if (_local2 == Rect.RIGHT){
x = ((_arg1.x + _arg1.width) - 1);
} else {
if (_local2 == Rect.DOWN){
y = ((_arg1.y + _arg1.height) - 1);
} else {
if (_local2 == Rect.LEFT){
x = _arg1.x;
};
};
};
};
bitmap.x = (-(g.screen.x) + x);
bitmap.y = (-(g.screen.y) + y);
}
}
}//package com.nitrome.engine_specific
Section 24
//Cake (com.nitrome.engine_specific.Cake)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class Cake extends Encounter {
public var collision_rect:Rect;
public var dx:Number;
public var dy:Number;
public var collected:Boolean;
public static const COLLISION_BORDER:Number = 2;
public function Cake(_arg1, _arg2){
super(_arg1, _arg2, true);
has_main = false;
var _local3:Rectangle = _arg1.getBounds(_arg1);
dx = (_local3.left + COLLISION_BORDER);
dy = (_local3.top + COLLISION_BORDER);
collision_rect = new Rect((x + dx), (y + dy), (Math.ceil(_local3.width) - COLLISION_BORDER), (Math.ceil(_local3.height) - COLLISION_BORDER));
_arg2.addCake(this);
_arg2.cake_count++;
_arg2.scroller.tile_maker.synchro((_arg1 as MovieClip));
if ((_arg2.cake_count % 2) == 0){
(_arg1 as MovieClip).gotoAndPlay((((_arg1.currentFrame + 8) % _arg1.totalFrames) + 1));
};
}
public function main():void{
if (mc.alpha > 0){
mc.alpha = (mc.alpha - 0.2);
} else {
active = false;
};
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (((!(active)) || (collected))){
return;
};
_arg1.addCake();
collected = true;
has_main = true;
g.removeCake(this);
}
public function kill():void{
if (((!(active)) || (collected))){
return;
};
collected = true;
has_main = true;
g.removeCake(this);
}
}
}//package com.nitrome.engine_specific
Section 25
//Finish (com.nitrome.engine_specific.Finish)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Finish extends Clip {
public function Finish(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2);
_arg2.finish_line = (_arg1.y + Tile.tile_scale);
}
}
}//package com.nitrome.engine_specific
Section 26
//FX (com.nitrome.engine_specific.FX)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class FX extends Dot {
public var bitmap:BitmapSprite;
public var g:Game;
public var frame:int;
public var active:Boolean;
public function FX(_arg1:Number, _arg2:Number, _arg3:BitmapSprite, _arg4:Game){
super(_arg1, _arg2);
this.bitmap = _arg3;
this.g = _arg4;
frame = 0;
active = true;
}
public function main():void{
bitmap.x = (-(g.screen.x) + x);
bitmap.y = (-(g.screen.y) + y);
bitmap.render(g.screenfxdata, frame++);
if (frame == bitmap.total_frames){
active = false;
};
}
}
}//package com.nitrome.engine_specific
Section 27
//HotTile (com.nitrome.engine_specific.HotTile)
package com.nitrome.engine_specific {
import flash.display.*;
public class HotTile extends Tile {
public function HotTile(_arg1:Sprite, _arg2:Sprite, _arg3:Game){
super(_arg1, _arg2, _arg3, (Tile.SMALL | Tile.STATIC));
}
}
}//package com.nitrome.engine_specific
Section 28
//InterfaceBackground (com.nitrome.engine_specific.InterfaceBackground)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.events.*;
public class InterfaceBackground extends MovieClip {
public var top:MovieClip;
public var bottom:MovieClip;
public function InterfaceBackground(){
addFrameScript(0, frame1);
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
}
public function onEnterFrame(_arg1:Event):void{
top.y = (top.y + 1);
bottom.y = (bottom.y + 0.5);
if (top.y > 0){
top.y = (top.y - (top.height * 0.5));
};
if (bottom.y > 0){
bottom.y = (bottom.y - (bottom.height * 0.5));
};
}
function frame1(){
stop();
}
}
}//package com.nitrome.engine_specific
Section 29
//Laser (com.nitrome.engine_specific.Laser)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Laser extends Clip {
public var front_mc:Sprite;
public var collision_array:Array;
public var dir:int;
public var laser_dir:int;
public var grid_x:int;
public var grid_y:int;
public var to_x:int;
public var to_y:int;
public var beam:Rect;
public var strength:Number;
public var active:Boolean;
public var frame2:Boolean;
private var tile;
private var hit_active_tile:Boolean;
public var collision_rect:Rect;
public static const tile_scale:int = 24;
public static const TILE_SCALE:Number = 0.0416666666666667;
public static const WARM_UP_STEP:Number = 0.1;
public static const UP:int = 1;
public static const RIGHT:int = 2;
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public function Laser(_arg1:Sprite, _arg2:Sprite, _arg3:Game){
super(_arg1, _arg3);
this.front_mc = _arg2;
dir = (laser_dir = RIGHT);
grid_x = (to_x = (_arg1.x * TILE_SCALE));
grid_y = (to_y = (_arg1.y * TILE_SCALE));
_arg3.tile_map[grid_y][grid_x] = this;
_arg3.lasers.push(this);
strength = 0;
collision_rect = new Rect(_arg1.x, _arg1.y, tile_scale, tile_scale);
_arg3.tile_top_holder.addChildAt(_arg1, 0);
active = true;
}
public function main():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Sprite;
var _local5:MovieClip;
var _local6:MovieClip;
to_x = grid_x;
to_y = grid_y;
collision_array = new Array();
laser_dir = dir;
createBeam();
_local1 = 0;
while (_local1 < 100) {
if (laser_dir == UP){
to_y--;
beam.y = (beam.y - tile_scale);
beam.height = (beam.height + tile_scale);
} else {
if (laser_dir == RIGHT){
to_x++;
beam.width = (beam.width + tile_scale);
} else {
if (laser_dir == DOWN){
to_y++;
beam.height = (beam.height + tile_scale);
} else {
if (laser_dir == LEFT){
to_x--;
beam.x = (beam.x - tile_scale);
beam.width = (beam.width + tile_scale);
};
};
};
};
if ((((((((((((to_x < g.tile_width)) && ((to_y < g.tile_height)))) && ((to_x > -1)))) && ((to_y > -1)))) && (!((g.tile_map[to_y][to_x] == null))))) && ((g.tile_map[to_y][to_x] is Mirror)))){
tile = g.tile_map[to_y][to_x];
if (laser_dir == UP){
beam.y = (beam.y + (tile_scale + 6));
beam.height = (beam.height - (tile_scale - 6));
if (tile.state == Mirror.A){
laser_dir = LEFT;
} else {
laser_dir = RIGHT;
};
createBeam();
} else {
if (laser_dir == RIGHT){
beam.width = (beam.width - tile_scale);
if (tile.state == Mirror.A){
laser_dir = DOWN;
} else {
laser_dir = UP;
};
createBeam();
} else {
if (laser_dir == DOWN){
beam.height = (beam.height - (tile_scale + 6));
if (tile.state == Mirror.A){
laser_dir = RIGHT;
} else {
laser_dir = LEFT;
};
createBeam();
} else {
if (laser_dir == LEFT){
beam.x = (beam.x + tile_scale);
beam.width = (beam.width - tile_scale);
if (tile.state == Mirror.A){
laser_dir = UP;
} else {
laser_dir = DOWN;
};
createBeam();
};
};
};
};
} else {
if (((!((((((((to_x < g.tile_width)) && ((to_y < g.tile_height)))) && ((to_x > -1)))) && ((to_y > -1))))) || (((!((g.tile_map[to_y][to_x] == null))) && (!((g.tile_map[to_y][to_x] is BlockTile))))))){
if (laser_dir == UP){
beam.y = (beam.y + (tile_scale + 6));
beam.height = (beam.height - (tile_scale - 6));
} else {
if (laser_dir == RIGHT){
beam.width = (beam.width - tile_scale);
} else {
if (laser_dir == DOWN){
beam.height = (beam.height - (tile_scale + 6));
} else {
if (laser_dir == LEFT){
beam.x = (beam.x + tile_scale);
beam.width = (beam.width - tile_scale);
};
};
};
};
break;
};
};
hit_active_tile = false;
if (((!((g.probe.item == null))) && ((g.probe.item is Tile)))){
tile = g.probe.item;
if (!tile.on_grid_pos){
if ((((((((to_x >= tile.grid_x)) && ((to_y >= tile.grid_y)))) && ((to_x <= (tile.grid_x + tile.width))))) && ((to_y <= (tile.grid_y + tile.height))))){
if ((((laser_dir == LEFT)) || ((laser_dir == RIGHT)))){
_local2 = ((tile_scale >> 1) + (to_y * tile_scale));
if ((((_local2 >= tile.collision_rect.y)) && ((_local2 < ((tile.collision_rect.y + tile.collision_rect.height) - 1))))){
if (laser_dir == RIGHT){
beam.width = (tile.collision_rect.x - beam.x);
break;
} else {
if (laser_dir == LEFT){
beam.width = (beam.width - ((tile.collision_rect.x + tile.collision_rect.width) - beam.x));
beam.x = (tile.collision_rect.x + tile.collision_rect.width);
break;
};
};
};
} else {
if ((((laser_dir == UP)) || ((laser_dir == DOWN)))){
_local3 = ((tile_scale >> 1) + (to_x * tile_scale));
if ((((_local3 >= tile.collision_rect.x)) && ((_local3 < ((tile.collision_rect.x + tile.collision_rect.width) - 1))))){
if (laser_dir == DOWN){
beam.height = ((tile.collision_rect.y - beam.y) + 6);
break;
} else {
if (laser_dir == UP){
beam.height = (beam.height - ((6 + (tile.collision_rect.y + tile.collision_rect.height)) - beam.y));
beam.y = ((tile.collision_rect.y + tile.collision_rect.height) + 6);
break;
};
};
};
};
};
};
} else {
if ((((((((to_x >= tile.grid_x)) && ((to_y >= tile.grid_y)))) && ((to_x <= ((tile.grid_x + tile.width) - 1))))) && ((to_y <= ((tile.grid_y + tile.height) - 1))))){
if (laser_dir == UP){
beam.y = (beam.y + (tile_scale + 6));
beam.height = (beam.height - (tile_scale - 6));
} else {
if (laser_dir == RIGHT){
beam.width = (beam.width - tile_scale);
} else {
if (laser_dir == DOWN){
beam.height = (beam.height - (tile_scale + 6));
} else {
if (laser_dir == LEFT){
beam.x = (beam.x + tile_scale);
beam.width = (beam.width - tile_scale);
};
};
};
};
break;
};
};
};
_local1++;
};
frame2 = ((g.frame_count % 2) == 0);
_local1 = 0;
while (_local1 < collision_array.length) {
beam = collision_array[_local1];
if (!(((beam.width == 0)) || ((beam.height == 0)))){
_local4 = new Sprite();
_local4.alpha = strength;
g.laser_holder.addChild(_local4);
_local4.graphics.lineStyle(0, 0, 0);
if ((((beam.stacked == UP)) || ((beam.stacked == DOWN)))){
_local4.graphics.beginBitmapFill((frame2) ? g.front_lazer_data : g.front_lazer_data2);
if (beam.height > 0){
_local5 = new FrontLaserHitMC();
_local5.x = -3;
_local5.y = -8;
_local4.addChild(_local5);
_local5.gotoAndStop((frame2) ? 1 : 2);
};
} else {
_local4.graphics.beginBitmapFill((frame2) ? g.side_lazer_data : g.side_lazer_data2);
if (beam.width > 0){
_local5 = new SideLaserHitMC();
_local6 = new SideLaserHitMC();
_local5.y = 12;
_local6.x = beam.width;
_local6.y = 12;
_local6.rotation = 180;
_local4.addChild(_local5);
_local4.addChild(_local6);
_local5.gotoAndStop((frame2) ? 1 : 2);
_local6.gotoAndStop((frame2) ? 1 : 2);
};
};
_local4.x = beam.x;
_local4.y = beam.y;
_local4.graphics.drawRect(0, 0, beam.width, beam.height);
_local4.graphics.endFill();
};
_local1++;
};
if (((active) && ((strength < 1)))){
strength = (strength + WARM_UP_STEP);
} else {
if (strength > 0){
strength = (strength - WARM_UP_STEP);
} else {
active = false;
};
};
}
public function createBeam():void{
if (laser_dir == UP){
collision_array.push(new Rect(((to_x * tile_scale) + 1), (to_y * tile_scale), 22, 0));
collision_array[(collision_array.length - 1)].stacked = UP;
} else {
if (laser_dir == RIGHT){
collision_array.push(new Rect(((to_x + 1) * tile_scale), ((to_y * tile_scale) + 2), 0, 24));
collision_array[(collision_array.length - 1)].stacked = RIGHT;
} else {
if (laser_dir == DOWN){
collision_array.push(new Rect(((to_x * tile_scale) + 1), (((to_y + 1) * tile_scale) + 6), 22, 0));
collision_array[(collision_array.length - 1)].stacked = DOWN;
} else {
if (laser_dir == LEFT){
collision_array.push(new Rect((to_x * tile_scale), ((to_y * tile_scale) + 2), 0, 24));
collision_array[(collision_array.length - 1)].stacked = LEFT;
};
};
};
};
beam = collision_array[(collision_array.length - 1)];
}
override public function remove():void{
super.remove();
active = false;
}
}
}//package com.nitrome.engine_specific
Section 30
//Mirror (com.nitrome.engine_specific.Mirror)
package com.nitrome.engine_specific {
import flash.display.*;
public class Mirror extends Switch {
public var front_mc:Sprite;
public static const A:int = 1;
public static const B:int = 2;
public function Mirror(_arg1:Sprite, _arg2:Sprite, _arg3:Game, _arg4:int){
super(_arg1, _arg3, 0);
this.front_mc = _arg2;
this.state = _arg4;
if (_arg4 == A){
(_arg1 as MovieClip).gotoAndStop("a");
} else {
(_arg1 as MovieClip).gotoAndStop("b");
};
}
override public function activate():void{
NitromeGame.sound_manager.playSound("laser_switch");
if (state == A){
state = B;
(mc as MovieClip).gotoAndStop("b");
} else {
state = A;
(mc as MovieClip).gotoAndStop("a");
};
}
}
}//package com.nitrome.engine_specific
Section 31
//Monster (com.nitrome.engine_specific.Monster)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class Monster extends Encounter {
public var path:Array;
public var path_index:int;
public var start_index:int;
public var count:int;
public var r:int;
public var speed:int;
public var delay:int;
public var subroutines:Array;
public var turrets:Array;
public var collision_rect:Rect;
protected var sub_index:int;
public var health:HiddenInt;
public var total_health:int;
public var dx:Number;
public var dy:Number;
public var hit_white:int;// = 0
public var properties:int;
public var size:int;
public var skin:int;
public var pause_scroll:Boolean;// = false
private var i:int;
public static const COLLISION_BORDER:Number = 8;
public static const ID:int = 0;
public static const HEALTH:int = 1;
public static const PROPERTIES:int = 2;
public static const DEACTIVATION_Y = 100;
public static const DEACTIVATION_X = 100;
public static const HIT_COL:ColorTransform = new ColorTransform(1, 1, 1, 1, 100, -50, -200, 0);
public static const NORM_COL:ColorTransform = new ColorTransform();
public static const PASS_OVER:int = 1;
public static const SCROLL_WITH:int = 2;
public static const PAUSE_SCROLL:int = 4;
public static const BOSS:int = 8;
public static const CAKE:int = 16;
public static const NO_HIT:int = 32;
public static const SMALL:int = 0;
public static const MEDIUM:int = 1;
public static const LARGE:int = 2;
public function Monster(_arg1:Array, _arg2:Sprite, _arg3:Array, _arg4:int, _arg5:Game){
super(_arg2, _arg5, true);
this.path = _arg1;
this.subroutines = _arg3;
this.size = _arg4;
has_main = true;
has_collision = true;
monster = true;
skin = _arg1[ID];
health = new HiddenInt(_arg1[HEALTH]);
total_health = _arg1[HEALTH];
properties = _arg1[PROPERTIES];
if ((properties & PASS_OVER)){
_arg5.non_monster_holder.addChild(_arg2);
has_collision = false;
};
if ((properties & BOSS)){
if (_arg5.boss_count == 0){
NitromeGame.sound_manager.playSound("boss_alarm");
};
_arg5.boss_count++;
};
if ((properties & PAUSE_SCROLL)){
pause_scroll = true;
};
var _local6:Rectangle = (_arg2 as MovieClip).collision_box.getBounds(_arg2);
dx = _local6.left;
dy = _local6.top;
collision_rect = new Rect((x + dx), (y + dy), Math.ceil(_local6.width), Math.ceil(_local6.height));
turrets = new Array();
path_index = (start_index = 3);
count = 0;
speed = 0;
this.subroutines = _arg3;
if (_arg1.length > 0){
readPath();
};
}
public function main():void{
x = (x + (speed * Trig.cos[r]));
y = (y + (speed * Trig.sin[r]));
if (!(properties & SCROLL_WITH)){
y = (y - g.level_scroll_speed);
};
if (pause_scroll){
if ((-(g.canvas.y) * 0.5) < collision_rect.y){
g.pause_scroll++;
g.boss_bang_zone = collision_rect;
pause_scroll = false;
};
};
collision_rect.x = (x + dx);
collision_rect.y = (y + dy);
map_x = (x * Tile.TILE_SCALE);
map_y = (y * Tile.TILE_SCALE);
count++;
if ((((count >= delay)) && ((path.length > 0)))){
readPath();
};
i = 0;
while (i < turrets.length) {
if (turrets[i].active){
turrets[i].main();
};
i++;
};
updateMC();
if (y <= 0){
active = false;
};
if (y >= (((-(g.canvas.y) * 0.5) + Game.height) + DEACTIVATION_Y)){
active = false;
};
if (x >= (((-(g.canvas.x) * 0.5) + Game.width) + DEACTIVATION_X)){
active = false;
};
if (x <= ((-(g.canvas.x) * 0.5) - DEACTIVATION_X)){
active = false;
};
if ((((map_y < g.tile_height)) && ((map_y >= 0)))){
if (((!((g.tile_map[map_y][map_x] == null))) && (!((g.tile_map[map_y][map_x] is BlockTile))))){
if (g.tile_map[map_y][map_x].collision_rect.intersects(collision_rect)){
kill(false);
};
};
};
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (!active){
return;
};
_arg1.hit();
if (_arg1.shield_count.value > 0){
hit(1);
hit_white++;
};
}
public function hit(_arg1:int):void{
if ((properties & NO_HIT)){
return;
};
health.value = (health.value - _arg1);
mc.transform.colorTransform = HIT_COL;
hit_white++;
if (health.value <= 0){
kill();
};
g.enemy = this;
}
public function kill(_arg1:Boolean=true):void{
var _local2:BitmapSprite;
var _local3:int;
var _local4:MovieClip;
var _local5:*;
var _local6:BossExplosions;
if (!active){
return;
};
if (size == SMALL){
_local2 = g.small_bang_bitmap;
if (g.small_bang_count <= 0){
g.small_bang_count = Game.SMALL_BANG_DELAY;
NitromeGame.sound_manager.playSound("small_bang");
};
} else {
if (size == MEDIUM){
_local2 = g.medium_bang_bitmap;
if (g.medium_bang_count <= 0){
g.medium_bang_count = Game.MEDIUM_BANG_DELAY;
NitromeGame.sound_manager.playSound("medium_bang");
};
if (Math.random() > 0.6){
g.addSmoke(x, y);
};
} else {
if (size == LARGE){
if (g.big_bang_count <= 0){
g.big_bang_count = Game.BIG_BANG_DELAY;
NitromeGame.sound_manager.playSound("big_bang");
};
_local2 = g.large_bang_bitmap;
g.addSmoke(x, y);
g.addSmoke(x, y);
g.addSmoke(x, y);
g.shake_count = 1;
};
};
};
if ((properties & CAKE)){
_local3 = (36 + (Math.random() * 8));
_local4 = new (g.scroller.tile_maker.class_names[_local3]);
_local4.x = (x >> 0);
_local4.y = (y >> 0);
_local5 = new Cake(_local4, g);
g.cake_holder.addChild(_local4);
};
g.addFX(mc.x, mc.y, _local2);
if (_arg1){
if (size == SMALL){
g.addScore(50);
} else {
if (size == MEDIUM){
g.addScore(200);
} else {
if (size == LARGE){
g.addScore(500);
};
};
};
if ((properties & BOSS)){
g.addScore(100000);
};
if (g.last_killed.value == skin){
g.addChain();
} else {
g.killChain();
};
g.last_killed.value = skin;
};
if ((properties & BOSS)){
g.boss_count--;
if (g.boss_count <= 0){
_local6 = new BossExplosions(g.boss_bang_zone, g);
g.player.shield_count.value = Player.SHIELD_DELAY;
};
};
health.value = 0;
active = false;
}
public function readPath():void{
i = 0;
while (i < 100) {
if (path[path_index] == "F"){
path_index++;
speed = path[path_index];
path_index++;
} else {
if (path[path_index] == "T"){
path_index++;
sub_index = path[path_index];
if (((!((turrets[sub_index] == null))) && (!(turrets[sub_index].active)))){
turrets[sub_index].activate();
} else {
if (turrets[sub_index] == null){
turrets[sub_index] = new Turret(subroutines[sub_index], this, g);
};
};
path_index++;
} else {
if (path[path_index] == "S"){
path_index++;
sub_index = path[path_index];
g.createMonster(subroutines[sub_index], x, y, subroutines);
path_index++;
} else {
if (path[path_index] == "D"){
path_index++;
sub_index = path[path_index];
if (turrets[sub_index] != null){
turrets[sub_index].deactivate();
};
path_index++;
} else {
if (path[path_index] == "R"){
path_index++;
r = path[path_index];
while (r >= 360) {
r = (r - 360);
};
while (r <= -1) {
r = (r + 360);
};
path_index++;
} else {
if (path[path_index] == "W"){
path_index++;
delay = path[path_index];
count = 0;
break;
} else {
if (path[path_index] == "X"){
start_index = (path_index + 1);
path_index = start_index;
} else {
path_index++;
};
};
};
};
};
};
};
if (path_index >= path.length){
path_index = start_index;
};
i++;
};
if (path_index >= path.length){
path_index = start_index;
};
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
if (hit_white){
hit_white--;
if (hit_white == 0){
mc.transform.colorTransform = NORM_COL;
};
};
}
}
}//package com.nitrome.engine_specific
Section 32
//Player (com.nitrome.engine_specific.Player)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
import com.nitrome.game.*;
import flash.ui.*;
public class Player extends Particle {
public var g:Game;
public var mc:MovieClip;
public var health:HiddenInt;
public var collision_rect:Rect;
public var grab_rect:Rect;
public var map_rect:Rect;
public var last_mc_x:Number;
public var last_mc_y:Number;
public var map_x:int;
public var map_y:int;
public var scroll_target_x:Number;
public var scroll_target_y:Number;
public var last_canvas_x:Number;
public var last_canvas_y:Number;
public var scroll_x:Number;
public var scroll_y:Number;
public var scroll_rect:Rect;
public var back:MovieClip;
public var beam:MovieClip;
public var beam_mask:Shape;
public var beam_blast:MovieClip;
public var beam_halo:Sprite;
public var beam_hit:MovieClip;
public var beam_rect:Rect;
public var shield_mc:MovieClip;
public var player_mc:MovieClip;
public var drop_ship_mc:MovieClip;
public var drop_ship_blur:Number;
public var line:Line;
public var collision_array:Array;
public var block:Rect;
public var veer:int;
public var veer_count:int;
public var burp_count:int;// = 0
private var i:int;
public var state:int;
public var anim_state:int;
public var hurt_count:int;
public var ouch_count:int;
public var collisions:int;
public var hurt:Boolean;
public var ouch:Boolean;
public var active:Boolean;
public var colliding:Boolean;
public var level_completed:Boolean;
public var carried:Boolean;
public var bulimia:Boolean;
public var puke:HiddenNumber;
public var beaming:Boolean;
public var shield_count:HiddenInt;
public var key_pressed:Boolean;
public var drop_ship:Boolean;
public var drop_ship_top_speed:Number;
public var drop_ship_bottom_speed:Number;
public static const scale:int = 12;
public static const SCALE:Number = 0.0833333333333333;
public static const width:int = 16;
public static const height:int = 22;
public static const grab_width:int = 22;
public static const grab_height:int = 28;
public static const HURT_DELAY:int = 50;
public static const OUCH_DELAY:int = 10;
public static const OUCH_DEATH_DELAY:int = 20;
public static const SPEED:Number = 3;
public static const UP:int = 1;
public static const RIGHT:int = 2;
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public static const UP_RIGHT:int = 16;
public static const DOWN_RIGHT:int = 32;
public static const DOWN_LEFT:int = 64;
public static const UP_LEFT:int = 128;
public static const CAKE_VALUE:Number = 0.1;
public static const BEAM_HEIGHT:Number = 296;
public static const BEAM_WIDTH:Number = 40;
public static const BEAM_EXPAND_RATE:Number = 0.25;
public static const BEAM_VALUE:Number = 0.01;
public static const SHIELD_DELAY:int = 200;
public static const BURP_DELAY:int = 50;
public function Player(_arg1:MovieClip, _arg2:int, _arg3:int, _arg4:Game){
super(_arg2, _arg3);
colliding = false;
anim_state = 0;
active = true;
carried = false;
bulimia = false;
puke = new HiddenNumber();
shield_count = new HiddenInt();
veer = 0;
veer_count = 0;
key_pressed = false;
drop_ship = (NitromeGame.selected_level == 1);
this.g = _arg4;
this.mc = _arg1;
player_mc = (_arg1.getChildAt(0) as MovieClip);
shield_mc = new ShieldMC();
_arg1.addChild(shield_mc);
shield_mc.alpha = 0;
_arg1.x = (last_mc_x = (_arg2 >> 0));
_arg1.y = (last_mc_y = (_arg3 >> 0));
map_x = ((_arg2 * SCALE) >> 0);
map_y = ((_arg3 * SCALE) >> 0);
health = new HiddenInt(3);
NitromeGame.timeline.health_panel.gotoAndStop("_3");
collision_rect = new Rect();
grab_rect = new Rect();
updateCollisionRect();
collision_array = new Array();
map_rect = _arg4.scroller.map_rect;
_arg4.canvas.x = (-((_arg4.scroller.width * Game.scale)) + Game.width);
_arg4.canvas.y = ((-(_arg1.y) * 2) + Game.height);
_arg4.canvas.y = Math.max((((-(_arg4.scroller.height) * Game.scale) * 2) + (Game.height * 2)), _arg4.canvas.y);
back = NitromeGame.timeline.background;
back.scaleX = 2;
back.scaleY = 2;
_arg4.scroller.reset();
line = new Line(new Dot(), this);
block = new Rect(0, 0, Tile.tile_scale, Tile.tile_scale);
Key.forceClearKeys();
beam = new BeamMC();
beam_blast = new BeamBlastMC();
beam_halo = new BeamHaloMC();
beam_mask = new Shape();
beam_hit = new BeamHitMC();
_arg1.addChildAt(beam_blast, 0);
_arg1.addChildAt(beam_mask, 0);
_arg1.addChildAt(beam, 0);
_arg1.addChild(beam_halo);
_arg1.addChild(beam_hit);
beam.mask = beam_mask;
beam_rect = new Rect((_arg2 - (BEAM_WIDTH * 0.5)), (_arg3 - BEAM_HEIGHT), BEAM_WIDTH, BEAM_HEIGHT);
beam.scaleX = BEAM_EXPAND_RATE;
beam_hit.scaleX = (beam_blast.scaleX = (beam_rect.width = (beam_halo.alpha = 0)));
beaming = false;
NitromeGame.timeline.cake_meter.bar_mask.scaleX = (puke.value = 0);
NitromeGame.timeline.cake_meter.press_space.visible = (bulimia = true);
if (drop_ship){
_arg1.visible = false;
drop_ship_mc = new DropShipMC();
_arg4.drop_ship_holder.addChild(drop_ship_mc);
drop_ship_mc.x = ((-(_arg4.canvas.x) * 0.5) + (Game.width * 0.5));
drop_ship_mc.y = (((-(_arg4.canvas.y) * 0.5) + Game.height) + (drop_ship_mc.height * 0.5));
drop_ship_blur = 32;
drop_ship_bottom_speed = 16;
drop_ship_top_speed = 32;
};
}
public function main():void{
if (!drop_ship){
checkHit();
if (!active){
return;
};
if (!g.completed){
checkKeys();
};
collision();
updateCollisionRect();
updateBeam();
if (burp_count > 0){
burp_count--;
if (burp_count == 1){
NitromeGame.sound_manager.playSound("burp");
};
};
};
updateMC();
}
public function hit():void{
if (((((((((ouch) || (hurt))) || (!(active)))) || (g.god_mode))) || ((shield_mc.alpha > 0)))){
return;
};
ouch = true;
ouch_count = 0;
hurt_count = 0;
health.value--;
NitromeGame.timeline.health_panel.gotoAndStop(("_" + health.value));
NitromeGame.sound_manager.playSound("ow");
}
public function tidyUp():void{
collision_rect = new Rect();
mc.visible = false;
g.mouse_pressed = false;
map_x = (map_y = 0);
}
public function checkHit():void{
if (!active){
return;
};
if (ouch){
ouch_count++;
if ((((health.value > 0)) && ((ouch_count >= OUCH_DELAY)))){
ouch = false;
hurt = true;
} else {
if (ouch_count >= OUCH_DEATH_DELAY){
ouch = false;
hurt = true;
};
};
};
if (hurt){
if (health.value <= 0){
death();
} else {
hurt_count++;
player_mc.visible = !(player_mc.visible);
if (hurt_count >= HURT_DELAY){
hurt = false;
player_mc.visible = true;
};
};
};
}
public function death():void{
if (((g.god_mode) || (!(active)))){
return;
};
g.probe.death();
active = false;
g.addFX(mc.x, mc.y, g.medium_bang_bitmap);
g.shake_count = 1;
var _local1:MovieClip = new CatDeathMC();
_local1.x = mc.x;
_local1.y = mc.y;
g.tile_front_holder.addChildAt(_local1, 0);
NitromeGame.sound_manager.playSound("death");
NitromeGame.sound_manager.playSound("medium_bang");
tidyUp();
g.gameOver();
}
public function levelComplete():void{
if (((!(active)) || (level_completed))){
return;
};
level_completed = true;
}
public function debug():void{
collision_rect.draw(g.debug);
grab_rect.draw(g.debug);
}
public function collide(_arg1:Encounter):Boolean{
return (_arg1.intersects(collision_rect));
}
public function collision():void{
var _local1:Rect;
var _local2:int;
collisions = 0;
updateCollisionRect();
if (y <= g.finish_line){
g.levelComplete();
shield_count.value = SHIELD_DELAY;
g.probe.drop();
};
if (map_y >= (g.tile_height - 1)){
map_y = (g.tile_height - 2);
};
collision_array[0] = g.tile_map[map_y][map_x];
collision_array[1] = g.tile_map[map_y][(map_x + 1)];
collision_array[2] = g.tile_map[(map_y + 1)][map_x];
collision_array[3] = g.tile_map[(map_y + 1)][(map_x + 1)];
collision_array[4] = ((g.probe.item is Tile)) ? g.probe.item : null;
i = 0;
while (i < collision_array.length) {
if (((!((collision_array[i] == null))) && (!((collision_array[i] is BlockTile))))){
block = collision_array[i].collision_rect;
if (block.intersects(collision_rect)){
if ((((i == 4)) || ((collision_array[i] is HotTile)))){
hit();
};
_local1 = block.intersection(collision_rect);
if (_local1.width < _local1.height){
if (x < (block.x + (block.width * 0.5))){
x = ((block.x - (collision_rect.width * 0.5)) - 1);
px = x;
collisions = (collisions | RIGHT);
} else {
x = (((block.x + block.width) - 1) + (collision_rect.width * 0.5));
px = x;
collisions = (collisions | LEFT);
};
} else {
if (_local1.height < _local1.width){
if (y < (block.y + (block.height * 0.5))){
y = ((block.y - (collision_rect.height * 0.5)) - 1);
py = y;
collisions = (collisions | DOWN);
} else {
y = (((block.y + block.height) - 1) + (collision_rect.height * 0.5));
py = y;
collisions = (collisions | UP);
};
} else {
if (_local1.height == _local1.width){
_local2 = block.sideOf(x, y);
if (_local2 == UP){
y = ((block.y - (collision_rect.height * 0.5)) - 1);
py = y;
collisions = (collisions | DOWN);
} else {
if (_local2 == RIGHT){
x = (((block.x + block.width) - 1) + (collision_rect.width * 0.5));
px = x;
collisions = (collisions | LEFT);
} else {
if (_local2 == DOWN){
y = (((block.y + block.height) - 1) + (collision_rect.height * 0.5));
py = y;
collisions = (collisions | UP);
} else {
if (_local2 == LEFT){
x = ((block.x - (collision_rect.width * 0.5)) - 1);
px = x;
collisions = (collisions | RIGHT);
};
};
};
};
};
};
};
if (carried){
if (collision_rect.contains(g.probe.x, g.probe.y)){
g.probe.grab_x = (g.probe.x - x);
g.probe.grab_y = (g.probe.y - y);
} else {
g.probe.drop();
g.probe.state = Probe.MOUSEPRESSED;
};
};
updateCollisionRect();
};
};
i++;
};
if ((((((collisions & LEFT)) && ((collisions & RIGHT)))) || ((((collisions & UP)) && ((collisions & DOWN)))))){
death();
};
}
public function resolveCollision(_arg1:Rect):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local2:int = _arg1.sideOf(x, y);
var _local3:Rect = collision_rect.intersection(_arg1);
if (_local3.width < _local3.height){
if (x < (_arg1.x + (_arg1.width * 0.5))){
x = (_arg1.x - (width >> 1));
px = x;
collisions = (collisions | RIGHT);
} else {
x = ((_arg1.x + _arg1.width) + (width >> 1));
px = x;
collisions = (collisions | LEFT);
};
} else {
if (_local3.height < _local3.width){
if (y < (_arg1.y + (_arg1.height * 0.5))){
y = (_arg1.y - (height >> 1));
collisions = (collisions | DOWN);
} else {
y = ((_arg1.y + _arg1.height) + (height >> 1));
collisions = (collisions | UP);
};
} else {
if (_local3.width == _local3.height){
_local4 = (_arg1.x + _arg1.width);
_local5 = (_arg1.y + _arg1.height);
_local6 = x;
_local7 = (y - height);
if ((((_local6 > _local4)) && ((_local7 > _local5)))){
x = ((_arg1.x + _arg1.width) + (width >> 1));
y = ((_arg1.y + _arg1.height) + (height >> 1));
px = x;
py = y;
collisions = (collisions | RIGHT);
collisions = (collisions | UP);
} else {
if ((((_local6 < _local4)) && ((_local7 > _local5)))){
y = ((_arg1.y + _arg1.height) + (height >> 1));
x = (_arg1.x - (width >> 1));
px = x;
py = y;
collisions = (collisions | LEFT);
collisions = (collisions | UP);
} else {
if ((((_local6 < _local4)) && ((_local7 < _local5)))){
x = (_arg1.x - (width >> 1));
y = (_arg1.y - (height >> 1));
px = x;
py = y;
collisions = (collisions | LEFT);
collisions = (collisions | DOWN);
} else {
if ((((_local6 > _local4)) && ((_local7 < _local5)))){
x = ((_arg1.x + _arg1.width) + (width >> 1));
y = (_arg1.y + (height >> 1));
px = x;
py = y;
collisions = (collisions | RIGHT);
collisions = (collisions | DOWN);
};
};
};
};
};
};
};
updateCollisionRect();
}
public function updateCollisionRect():void{
collision_rect.x = (x - (width >> 1));
collision_rect.y = (y - (height >> 1));
collision_rect.width = width;
collision_rect.height = height;
grab_rect.x = (x - (grab_width >> 1));
grab_rect.y = (y - (grab_height >> 1));
grab_rect.width = grab_width;
grab_rect.height = grab_height;
}
public function updateBeam():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Number;
if (beaming){
NitromeGame.sound_manager.playLoopFadeIn(SoundManager.BEAM);
beam_blast.visible = true;
beam_halo.visible = true;
beam.visible = true;
beam_hit.visible = true;
beam_rect.y = (y - BEAM_HEIGHT);
beam_rect.height = BEAM_HEIGHT;
if (beam.scaleX < 1){
beam.scaleX = (beam.scaleX + BEAM_EXPAND_RATE);
beam_hit.scaleX = (beam_hit.scaleX + BEAM_EXPAND_RATE);
beam_blast.scaleX = (beam_blast.scaleX + BEAM_EXPAND_RATE);
beam_rect.width = (BEAM_WIDTH * beam.scaleX);
beam_halo.alpha = beam.scaleX;
};
removeCake();
} else {
if (beam.scaleX > 0){
NitromeGame.sound_manager.stopLoopFadeOut(SoundManager.BEAM);
beam_rect.y = (y - BEAM_HEIGHT);
beam_rect.height = BEAM_HEIGHT;
beam.scaleX = (beam.scaleX - BEAM_EXPAND_RATE);
beam_hit.scaleX = (beam_hit.scaleX - BEAM_EXPAND_RATE);
beam_blast.scaleX = (beam_blast.scaleX - BEAM_EXPAND_RATE);
beam_rect.width = (BEAM_WIDTH * beam.scaleX);
beam_halo.alpha = beam.scaleX;
};
};
if (beam.scaleX > 0){
beam_rect.x = (x - (beam_rect.width * 0.5));
_local1 = (beam_rect.x * Tile.TILE_SCALE);
_local2 = (beam_rect.y * Tile.TILE_SCALE);
_local3 = (beam_rect.height * Tile.TILE_SCALE);
_local4 = ((beam_rect.width * Tile.TILE_SCALE) + 1);
_local6 = ((_local2 + _local3) - 1);
while (_local6 > Math.max(-1, _local2)) {
_local5 = _local1;
while (_local5 < ((_local1 + _local4) + 1)) {
if (((((!((g.tile_map[_local6][_local5] == null))) && (!((g.tile_map[_local6][_local5] is BlockTile))))) && (g.tile_map[_local6][_local5].collision_rect.intersects(beam_rect)))){
if (beam_rect.y < y){
beam_rect.y = (g.tile_map[_local6][_local5].collision_rect.y + g.tile_map[_local6][_local5].collision_rect.height);
beam_rect.height = (y - beam_rect.y);
if ((g.tile_map[_local6][_local5] is BreakTile)){
g.tile_map[_local6][_local5].remove();
g.addFX(((_local5 * Tile.tile_scale) + (Tile.tile_scale >> 1)), ((_local6 * Tile.tile_scale) + Tile.tile_scale), g.small_bang_bitmap);
};
break;
};
};
_local5++;
};
_local6--;
};
if (((!((g.probe.item == null))) && ((g.probe.item is Tile)))){
if (beam_rect.intersects(g.probe.item.collision_rect)){
beam_rect.y = (g.probe.item.collision_rect.y + g.probe.item.collision_rect.height);
beam_rect.height = (y - beam_rect.y);
};
};
i = 0;
while (i < g.encounters.length) {
if (((g.encounters[i].has_collision) && (g.encounters[i].monster))){
if (g.encounters[i].collision_rect.intersects(beam_rect)){
g.encounters[i].hit(10);
g.encounters[i].hit_white = 2;
_local7 = (g.encounters[i].collision_rect.y + g.encounters[i].collision_rect.height);
if (_local7 > beam_rect.y){
beam_rect.y = (g.encounters[i].collision_rect.y + g.encounters[i].collision_rect.height);
beam_rect.height = (y - beam_rect.y);
};
};
};
i++;
};
beam_hit.y = (-(beam_rect.height) + 10);
beam_mask.graphics.clear();
beam_mask.graphics.lineStyle(0, 0, 0);
beam_mask.graphics.beginFill(0xFFFFFF);
beam_mask.graphics.drawRect((-((BEAM_WIDTH * 0.5)) - 30), (-(beam_rect.height) + 10), (BEAM_WIDTH + 60), beam_rect.height);
beam_mask.graphics.endFill();
} else {
beam_blast.visible = false;
beam_halo.visible = false;
beam.visible = false;
beam_hit.visible = false;
};
}
public function updateAnimState(_arg1:MovieClip):void{
if (!ouch){
};
}
public function addCake():void{
if (puke.value < 1){
puke.value = (puke.value + CAKE_VALUE);
if (puke.value > 1){
puke.value = 1;
if (burp_count == 0){
burp_count = BURP_DELAY;
};
};
};
var _local1:int = (1 + (Math.random() * 3));
NitromeGame.sound_manager.playSound(("cake" + _local1));
}
public function removeCake():void{
if (puke.value > 0){
puke.value = (puke.value - BEAM_VALUE);
if (puke.value <= 0){
puke.value = 0;
};
};
}
public function checkKeys():void{
px = x;
py = y;
if (!carried){
if (((((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))) && (!(((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D))))))){
x = (x - SPEED);
};
if (((((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))) && (!(((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A))))))){
x = (x + SPEED);
};
if (((((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))) && (!(((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S))))))){
y = (y - SPEED);
} else {
if (((((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S)))) && (!(((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W))))))){
y = (y + SPEED);
};
};
if (((((((((Key.isDown(Keyboard.SPACE)) || (Key.isDown(Keyboard.CONTROL)))) && ((puke.value > 0)))) && (!(ouch)))) && (!(hurt)))){
if (!beaming){
beaming = true;
NitromeGame.sound_manager.playSound("laser_start");
};
veer = 0;
} else {
beaming = false;
};
} else {
beaming = false;
};
x = Math.min((((-(g.canvas.x) * 0.5) + Game.width) - (collision_rect.width * 0.5)), x);
if ((((y > (((-(g.canvas.y) * 0.5) + Game.height) - (collision_rect.height * 0.5)))) && ((collisions & UP)))){
death();
};
if (!g.completed){
y = Math.min((((-(g.canvas.y) * 0.5) + Game.height) - (collision_rect.height * 0.5)), y);
};
x = Math.max(((-(g.canvas.x) * 0.5) + (collision_rect.width * 0.5)), x);
y = Math.max(((-(g.canvas.y) * 0.5) + (collision_rect.height * 0.5)), y);
map_x = (collision_rect.x * Tile.TILE_SCALE);
map_y = (collision_rect.y * Tile.TILE_SCALE);
}
public function updateMC():void{
if (!carried){
last_mc_x = mc.x;
last_mc_y = mc.y;
mc.x = x;
mc.y = y;
};
if (last_mc_x < mc.x){
if (veer < 2){
veer++;
veer_count = 3;
};
} else {
if (last_mc_x > mc.x){
if (veer > -2){
veer--;
veer_count = 3;
};
} else {
if (veer_count > 0){
veer_count--;
} else {
if (veer < 0){
veer++;
} else {
if (veer > 0){
veer--;
};
};
};
};
};
if (ouch){
if (player_mc.currentLabel != "ouch"){
player_mc.gotoAndStop("ouch");
};
} else {
if (carried){
player_mc.gotoAndStop((veer + 8));
} else {
if (beam.scaleX <= 0){
player_mc.gotoAndStop((veer + 3));
} else {
if (beam.scaleX > 0){
if (beam.scaleX < 0.3){
player_mc.gotoAndStop(11);
} else {
if (beam.scaleX < 0.6){
player_mc.gotoAndStop(12);
} else {
if (player_mc.currentFrame == 12){
player_mc.gotoAndStop(13);
} else {
if (player_mc.currentFrame == 13){
player_mc.gotoAndStop(14);
} else {
if (player_mc.currentFrame == 14){
player_mc.gotoAndStop(15);
} else {
if (player_mc.currentFrame == 15){
player_mc.gotoAndStop(16);
} else {
if (player_mc.currentFrame == 16){
player_mc.gotoAndStop(13);
};
};
};
};
};
};
};
};
};
};
};
if (shield_count.value > 0){
if (shield_mc.alpha < 1){
shield_mc.alpha = (shield_mc.alpha + 0.2);
};
if (!g.completed){
shield_count.value--;
};
} else {
if (shield_mc.alpha > 0){
shield_mc.alpha = (shield_mc.alpha - 0.05);
};
};
scrolling();
g.scroller.clipManager();
}
public function scrolling():void{
var _local2:Point;
if (back.top != null){
if (!drop_ship){
back.top.y = (back.top.y + 0.5);
back.bottom.y = (back.bottom.y + 0.25);
if (back.top.y > 0){
back.top.y = (back.top.y - (back.top.height * 0.5));
};
if (back.bottom.y > 0){
back.bottom.y = (back.bottom.y - (back.bottom.height * 0.5));
};
} else {
if (((!(mc.visible)) && ((drop_ship_mc.y > (((-(g.canvas.y) * 0.5) + Game.height) - (drop_ship_mc.height * 0.5)))))){
} else {
if (!mc.visible){
_local2 = new Point();
_local2 = Util.localToLocal(_local2, drop_ship_mc.player, g.canvas);
mc.x = (x = _local2.x);
mc.y = (y = _local2.y);
drop_ship_mc.player.visible = false;
player_mc.gotoAndStop(3);
mc.visible = true;
} else {
if (drop_ship_top_speed > 0.5){
drop_ship_top_speed = (drop_ship_top_speed * 0.95);
drop_ship_bottom_speed = (drop_ship_bottom_speed * 0.95);
drop_ship_blur = (drop_ship_blur * 0.95);
g.probe.boost_mc.alpha = (g.probe.boost_mc.alpha * 0.95);
} else {
g.probe.boost_mc.visible = false;
g.screen.filters = [];
drop_ship = false;
NitromeGame.timeline.msg_panel.setMsg(g.start_msg);
};
};
};
back.top.y = (back.top.y + drop_ship_top_speed);
back.bottom.y = (back.bottom.y + drop_ship_bottom_speed);
if (back.top.y > 0){
back.top.y = (back.top.y - (back.top.height * 0.5));
};
if (back.bottom.y > 0){
back.bottom.y = (back.bottom.y - (back.bottom.height * 0.5));
};
};
};
if (drop_ship_mc != null){
if (drop_ship_mc){
drop_ship_mc.y = (drop_ship_mc.y - (g.level_scroll_speed * 2));
} else {
drop_ship_mc.y = (drop_ship_mc.y - (g.level_scroll_speed * 4));
};
};
if (((((!(drop_ship)) && ((g.canvas.y < 0)))) && ((g.pause_scroll == 0)))){
g.canvas.y = (g.canvas.y + (g.level_scroll_speed * 2));
y = (y - g.level_scroll_speed);
};
if (g.completed){
y = (y - g.level_scroll_speed);
};
var _local1:int = ((((-(g.canvas.y) * 0.5) + Game.height) + (scale * 6)) * Tile.TILE_SCALE);
if (_local1 < g.tile_height){
i = 0;
while (i < g.tile_width) {
if ((((((((g.tile_map[_local1][i] is Tile)) && (g.tile_map[_local1][i].slide_vert))) && ((_local1 == g.tile_map[_local1][i].grid_y)))) && ((g.tile_map[_local1][i].grid_x == i)))){
g.tile_map[_local1][i].remove();
};
i++;
};
};
}
override public function toString():String{
return (super.toString());
}
}
}//package com.nitrome.engine_specific
Section 33
//Probe (com.nitrome.engine_specific.Probe)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Probe extends Dot {
public var mc:MovieClip;
public var owl_mc:MovieClip;
public var magnet_mc:MovieClip;
public var blast_mc:MovieClip;
public var boost_mc:MovieClip;
public var g:Game;
public var collision_rect:Rect;
public var item;
public var grab_x:int;
public var grab_y:int;
public var player:Player;
public var state:int;
public var bullet_count:int;
public var napalm_count:HiddenInt;
public var magnet_count:HiddenInt;
public var magnet_bullet_count:int;
public var magnet_blasting:Boolean;
public var magnet_blast_angle:int;
public var dot:Dot;
public var player_drag_line:Line;
public var veer:int;
public var veer_count:int;
public var active:Boolean;
public var drag_beam:Array;
public var drag_beam_count:int;// = 0
public var tile_cx:Number;
public var tile_cy:Number;
public var drag_dx:Number;
public var drag_dy:Number;
public static const DRAG_BEAM_DELAY = 3;
public static const MAGNET_ANGLE_STEP:int = 22;
public static const BULLET_SPEED:Number = 18;
public static const FIRING_WIDTH:Number = 7.5;
public static const BULLET_DELAY:int = 3;
public static const MAGNET_DELAY:int = 100;
public static const NAPALM_DELAY:int = 150;
public static const MAGNET_BLAST_SPEED:Number = 5;
public static const CARRYING:int = 1;
public static const FIRING:int = 2;
public static const NONE:int = 0;
public static const MOUSEPRESSED:int = 4;
public static const width:int = 14;
public static const height:int = 18;
public function Probe(_arg1:MovieClip, _arg2:Player, _arg3:Game){
super(_arg1.x, _arg1.y);
this.mc = _arg1;
owl_mc = (_arg1.getChildAt(0) as MovieClip);
this.g = _arg3;
this.player = _arg2;
collision_rect = new Rect();
bullet_count = 0;
napalm_count = new HiddenInt();
magnet_count = new HiddenInt();
magnet_bullet_count = 0;
magnet_blasting = false;
magnet_blast_angle = 270;
drag_beam = new Array();
magnet_mc = new MagnetiseMC();
magnet_mc.visible = false;
_arg1.addChild(magnet_mc);
blast_mc = new ProbeBlastMC();
blast_mc.visible = false;
if (NitromeGame.selected_level == 1){
boost_mc = new ProbeJetMC();
_arg1.addChildAt(boost_mc, 0);
};
_arg1.addChildAt(blast_mc, 0);
player_drag_line = new Line(_arg2, new Dot());
veer = 0;
veer_count = 0;
owl_mc.gotoAndStop((veer + 3));
active = true;
}
public function main():void{
var _local1:*;
updateCollisionRect();
if (!g.completed){
checkKeys();
};
updateMC();
if (item != null){
if (item == player){
player_drag_line.b.x = (x - grab_x);
player_drag_line.b.y = (y - grab_y);
player_drag_line.updateLine();
dot = RayCast.cast(player_drag_line, g.tile_map);
if (dot != null){
player.x = dot.x;
player.y = dot.y;
player.collision();
} else {
player.last_mc_x = player.mc.x;
player.last_mc_y = player.mc.y;
player.x = (player.mc.x = (mc.x - grab_x));
player.y = (player.mc.y = (mc.y - grab_y));
};
} else {
if ((item is Cake)){
item.x = (item.mc.x = (mc.x - grab_x));
item.y = (item.mc.y = (mc.y - grab_y));
item.collision_rect.x = (item.x + item.dx);
item.collision_rect.y = (item.y + item.dy);
};
};
};
if (magnet_count.value > 0){
magnet_count.value--;
if (magnet_count.value == 0){
magnet_blasting = true;
};
};
if (magnet_blasting){
_local1 = 0;
while (_local1 < 18) {
g.createBullet(x, y, (Trig.cos[magnet_blast_angle] * MAGNET_BLAST_SPEED), (Trig.sin[magnet_blast_angle] * MAGNET_BLAST_SPEED), Bullet.PLAYER_SPECIAL, MAGNET_BLAST_SPEED);
magnet_blast_angle = (magnet_blast_angle + MAGNET_ANGLE_STEP);
if (magnet_blast_angle >= 360){
magnet_blast_angle = (magnet_blast_angle - 360);
};
magnet_bullet_count--;
_local1++;
};
if (magnet_bullet_count <= 0){
magnet_bullet_count = 0;
magnet_blasting = false;
};
};
if (napalm_count.value > 0){
g.createBullet(x, y, 0, 0, Bullet.NAPALM, 0);
napalm_count.value--;
};
active = true;
}
public function updateCollisionRect():void{
collision_rect.x = (mc.x - (width >> 1));
collision_rect.y = (mc.y - (height >> 1));
collision_rect.width = width;
collision_rect.height = height;
}
public function checkKeys():void{
var _local1:Cake;
if (((!(g.right_pressed)) && (g.mouse_pressed))){
if (state == NONE){
_local1 = gotCake();
if (player.grab_rect.contains(mc.x, mc.y)){
if (!player.collision_rect.contains(mc.x, mc.y)){
if (mc.x < player.collision_rect.x){
player.x = (player.x + (mc.x - player.collision_rect.x));
};
if (mc.y < player.collision_rect.y){
player.y = (player.y + (mc.y - player.collision_rect.y));
};
if (mc.x >= (player.collision_rect.x + player.collision_rect.width)){
player.x = (player.x + (mc.x - ((player.collision_rect.width + player.collision_rect.x) - 1)));
};
if (mc.y >= (player.collision_rect.y + player.collision_rect.height)){
player.y = (player.y + (mc.y - ((player.collision_rect.height + player.collision_rect.y) - 1)));
};
};
item = player;
grab_x = (mc.x - player.x);
grab_y = (mc.y - player.y);
player.carried = true;
state = CARRYING;
} else {
if ((((g.tile_map[g.tile_grid_mouse_y][g.tile_grid_mouse_x] is Tile)) && (!((g.tile_map[g.tile_grid_mouse_y][g.tile_grid_mouse_x] is BlockTile))))){
if (!(g.tile_map[g.tile_grid_mouse_y][g.tile_grid_mouse_x].type & Tile.STATIC)){
item = g.tile_map[g.tile_grid_mouse_y][g.tile_grid_mouse_x];
item.startDrag(g.tile_grid_mouse_x, g.tile_grid_mouse_y);
g.addTile((item as Tile));
state = CARRYING;
};
} else {
if ((g.tile_map[g.tile_grid_mouse_y][g.tile_grid_mouse_x] is Switch)){
g.tile_map[g.tile_grid_mouse_y][g.tile_grid_mouse_x].activate();
state = MOUSEPRESSED;
} else {
if (_local1 != null){
item = _local1;
grab_x = (mc.x - _local1.x);
grab_y = (mc.y - _local1.y);
state = CARRYING;
} else {
state = FIRING;
g.createBullet((mc.x + FIRING_WIDTH), (mc.y - 10), 0, -(BULLET_SPEED), Bullet.PLAYER, BULLET_SPEED);
g.createBullet(((mc.x - FIRING_WIDTH) + 1), (mc.y - 10), 0, -(BULLET_SPEED), Bullet.PLAYER, BULLET_SPEED);
bullet_count = BULLET_DELAY;
};
};
};
};
} else {
if (state == FIRING){
if (bullet_count == 0){
g.createBullet((mc.x + FIRING_WIDTH), (mc.y - 10), 0, -(BULLET_SPEED), Bullet.PLAYER, BULLET_SPEED);
g.createBullet(((mc.x - FIRING_WIDTH) + 1), (mc.y - 10), 0, -(BULLET_SPEED), Bullet.PLAYER, BULLET_SPEED);
bullet_count = BULLET_DELAY;
};
bullet_count--;
};
};
} else {
if (g.mouse_pressed){
g.right_pressed = false;
} else {
drop();
if (state == MOUSEPRESSED){
state = NONE;
};
};
};
}
public function gotCake():Cake{
var _local1:int;
while (_local1 < g.cakes.length) {
if (g.cakes[_local1].collision_rect.contains(mc.x, mc.y)){
return (g.cakes[_local1]);
};
_local1++;
};
return (null);
}
public function drop():void{
if (item == player){
player.carried = false;
player.veer = 0;
} else {
if ((item is Tile)){
item.stopDrag();
};
};
item = null;
state = NONE;
}
public function updateMC():void{
if ((((g.canvas.mouseX >= (mc.x + 3))) && ((veer <= 1)))){
veer++;
veer_count = 5;
} else {
if ((((g.canvas.mouseX <= (mc.x - 3))) && ((veer >= -1)))){
veer--;
veer_count = 5;
} else {
if (veer != 0){
if (veer_count > 0){
veer_count--;
} else {
if (veer < 0){
veer++;
} else {
if (veer > 0){
veer--;
};
};
};
};
};
};
mc.x = g.canvas.mouseX;
if (!g.completed){
mc.y = g.canvas.mouseY;
mc.y = Math.min((((-(g.canvas.y) * 0.5) + Game.height) - (collision_rect.height * 0.5)), mc.y);
mc.y = Math.max(((-(g.canvas.y) * 0.5) + (collision_rect.height * 0.5)), mc.y);
} else {
mc.y = (mc.y - (g.level_scroll_speed * 2));
};
mc.x = Math.min((((-(g.canvas.x) * 0.5) + Game.width) - (collision_rect.width * 0.5)), mc.x);
mc.x = Math.max(((-(g.canvas.x) * 0.5) + (collision_rect.width * 0.5)), mc.x);
x = mc.x;
y = mc.y;
owl_mc.gotoAndStop((veer + 3));
if (magnet_count.value > 0){
magnet_mc.visible = true;
} else {
if (magnet_mc.visible){
magnet_mc.visible = false;
};
};
if (state == FIRING){
blast_mc.visible = true;
} else {
if (blast_mc.visible){
blast_mc.visible = false;
};
};
updateDragBeam();
}
public function death():void{
active = false;
mc.visible = false;
g.drag_holder.graphics.clear();
g.addFX(mc.x, mc.y, g.small_bang_bitmap);
drop();
napalm_count.value = 0;
magnet_count.value = 0;
magnet_bullet_count = 0;
magnet_blasting = false;
}
public function updateDragBeam():void{
g.drag_holder.graphics.clear();
if ((item is Tile)){
if (drag_beam_count <= 0){
tile_cx = (item.collision_rect.x + (item.collision_rect.width * 0.5));
tile_cy = (item.collision_rect.y + (item.collision_rect.height * 0.5));
drag_beam.unshift(new Rect(item.collision_rect.x, item.collision_rect.y, item.collision_rect.width, item.collision_rect.height));
drag_dx = ((g.canvas.mouseX - tile_cx) * item._1_over_width);
drag_dy = ((g.canvas.mouseY - tile_cy) * item._1_over_height);
drag_beam_count = DRAG_BEAM_DELAY;
};
drag_beam_count--;
g.drag_holder.graphics.lineStyle(3, 3407871, 0.2);
g.drag_holder.graphics.drawRect(item.collision_rect.x, item.collision_rect.y, item.collision_rect.width, item.collision_rect.height);
g.drag_holder.graphics.lineStyle(1, 3407871, 0.2);
g.drag_holder.graphics.drawRect(item.collision_rect.x, item.collision_rect.y, item.collision_rect.width, item.collision_rect.height);
} else {
if (drag_beam_count > 0){
drag_beam_count = 0;
};
};
var _local1:int;
while (_local1 < drag_beam.length) {
drag_beam[_local1].width = (drag_beam[_local1].width - 4);
drag_beam[_local1].height = (drag_beam[_local1].height - 4);
drag_beam[_local1].x = ((g.canvas.mouseX - (drag_beam[_local1].width * 0.5)) - (drag_dx * drag_beam[_local1].width));
drag_beam[_local1].y = ((g.canvas.mouseY - (drag_beam[_local1].height * 0.5)) - (drag_dy * drag_beam[_local1].height));
g.drag_holder.graphics.lineStyle(3, 3407871, 0.2);
g.drag_holder.graphics.drawRect(drag_beam[_local1].x, drag_beam[_local1].y, drag_beam[_local1].width, drag_beam[_local1].height);
g.drag_holder.graphics.lineStyle(1, 3407871, 0.2);
g.drag_holder.graphics.drawRect(drag_beam[_local1].x, drag_beam[_local1].y, drag_beam[_local1].width, drag_beam[_local1].height);
if ((drag_beam[_local1].width + drag_beam[_local1].height) < 10){
drag_beam.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
}
}//package com.nitrome.engine_specific
Section 34
//RayCast (com.nitrome.engine_specific.RayCast)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class RayCast {
public static const UP:int = 1;
public static const RIGHT:int = 2;
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public static var g:Game;
public static var DX:Number;
public static var DY:Number;
public static var map_x:int;
public static var map_y:int;
public static var map_x1:int;
public static var map_y1:int;
public static var dir_x:int;
public static var dir_y:int;
public static var px:Number;
public static var py:Number;
public static var tx:Number;
public static var ty:Number;
public static var dist:Number;
public static var next_x:Number;
public static var next_y:Number;
public static var found:Boolean;
public static var i:int;
public static var j:int;
public static var vx:Number;
public static var vy:Number;
public static var dot:Dot;
public static var line:Line;
public static var num_corners_inside:int;
public static function init(_arg1:Game):void{
g = _arg1;
dot = new Dot();
}
public static function cast(_arg1:Line, _arg2:Array):Dot{
found = false;
if (_arg1.len <= 10){
return (null);
};
map_x = ((_arg1.a.x * Tile.TILE_SCALE) >> 0);
map_y = ((_arg1.a.y * Tile.TILE_SCALE) >> 0);
if (((!((_arg2[map_y][map_x] == null))) && (!((_arg2[map_y][map_x] is BlockTile))))){
};
if (_arg1.dx != 0){
DX = (1 / _arg1.dx);
} else {
DX = 0;
};
if (_arg1.dy != 0){
DY = (1 / _arg1.dy);
} else {
DY = 0;
};
dir_x = ((_arg1.dx < 0)) ? -1 : 1;
dir_y = ((_arg1.dy < 0)) ? -1 : 1;
px = (_arg1.a.x - (map_x * Tile.tile_scale));
py = (_arg1.a.y - (map_y * Tile.tile_scale));
tx = ((_arg1.dx)<0) ? 0 : Tile.tile_scale;
ty = ((_arg1.dy)<0) ? 0 : Tile.tile_scale;
dist = 0;
i = 0;
while (i < 100) {
next_x = Math.abs(((px - tx) * DX));
next_y = Math.abs(((py - ty) * DY));
if ((((((next_x < next_y)) || ((_arg1.vy == 0)))) && (!((_arg1.vx == 0))))){
g.debug.moveTo(((map_x * Tile.tile_scale) + px), ((map_y * Tile.tile_scale) + py));
map_x = (map_x + dir_x);
dist = (dist + next_x);
if ((((((((((dist > _arg1.len)) || ((map_x < 0)))) || ((map_y < 0)))) || ((map_x >= _arg2[0].length)))) || ((map_y >= _arg2.length)))){
return (null);
};
px = (px + (_arg1.dx * next_x));
py = (py + (_arg1.dy * next_x));
px = (px - (dir_x * Tile.tile_scale));
if (((!((_arg2[map_y][map_x] == null))) && (!((_arg2[map_y][map_x] is BlockTile))))){
dot.x = ((map_x * Tile.tile_scale) + px);
dot.y = ((map_y * Tile.tile_scale) + py);
return (dot);
};
} else {
g.debug.moveTo(((map_x * Tile.tile_scale) + px), ((map_y * Tile.tile_scale) + py));
map_y = (map_y + dir_y);
dist = (dist + next_y);
if ((((((((((dist > _arg1.len)) || ((map_x < 0)))) || ((map_y < 0)))) || ((map_x >= _arg2[0].length)))) || ((map_y >= _arg2.length)))){
return (null);
};
px = (px + (_arg1.dx * next_y));
py = (py + (_arg1.dy * next_y));
py = (py - (dir_y * Tile.tile_scale));
if (((!((_arg2[map_y][map_x] == null))) && (!((_arg2[map_y][map_x] is BlockTile))))){
dot.x = ((map_x * Tile.tile_scale) + px);
dot.y = ((map_y * Tile.tile_scale) + py);
return (dot);
};
};
i++;
};
return (null);
}
}
}//package com.nitrome.engine_specific
Section 35
//SkipStoryButton (com.nitrome.engine_specific.SkipStoryButton)
package com.nitrome.engine_specific {
import flash.display.*;
public dynamic class SkipStoryButton extends Sprite {
}
}//package com.nitrome.engine_specific
Section 36
//Smoke (com.nitrome.engine_specific.Smoke)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Smoke extends Particle {
public const DELAY:int = 75;
public var count:int;
public var g:Game;
public var active:Boolean;
public function Smoke(_arg1:Number, _arg2:Number, _arg3:Game){
super(_arg1, _arg2);
count = DELAY;
this.g = _arg3;
active = true;
}
public function main():void{
var _local1:BitmapSprite;
verlet(0, 0.1, 0.99);
var _local2:int = (Math.random() * 4);
if (_local2 == 0){
_local1 = g.burn_bitmap1;
} else {
if (_local2 == 1){
_local1 = g.burn_bitmap2;
} else {
if (_local2 == 2){
_local1 = g.burn_bitmap3;
} else {
if (_local2 == 3){
_local1 = g.burn_bitmap4;
};
};
};
};
g.addFX(x, y, _local1);
count--;
if (count <= 0){
active = false;
};
}
}
}//package com.nitrome.engine_specific
Section 37
//Switch (com.nitrome.engine_specific.Switch)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Switch extends Clip {
public var state:int;
public var type:int;
public var collision_rect:Rect;
public static const UP:int = 1;
public static const DOWN:int = 2;
public static const OFF:int = 4;
public static const NAPALM:int = 1;
public static const SHIELD:int = 2;
public static const MAGNET:int = 4;
public static const CASH:int = 8;
public static const tile_scale:int = 24;
public static const TILE_SCALE:Number = 0.0416666666666667;
public function Switch(_arg1:Sprite, _arg2:Game, _arg3:int){
super(_arg1, _arg2);
this.type = _arg3;
map_x = (_arg1.x * TILE_SCALE);
map_y = (_arg1.y * TILE_SCALE);
_arg2.tile_map[map_y][map_x] = this;
collision_rect = new Rect(_arg1.x, _arg1.y, tile_scale, tile_scale);
_arg2.tile_top_holder.addChildAt(_arg1, 0);
}
public function activate():void{
if ((((state == OFF)) || ((state == DOWN)))){
return;
};
state = OFF;
if (type == NAPALM){
g.probe.napalm_count.value = Probe.NAPALM_DELAY;
NitromeGame.sound_manager.playSound("napalm");
} else {
if (type == SHIELD){
g.player.shield_count.value = Player.SHIELD_DELAY;
NitromeGame.sound_manager.playSound("shield");
} else {
if (type == MAGNET){
g.probe.magnet_count.value = Probe.MAGNET_DELAY;
NitromeGame.sound_manager.playSound("magnet");
} else {
if (type == CASH){
g.cashConvertBullets();
NitromeGame.sound_manager.playSound("cash");
};
};
};
};
(mc as MovieClip).gotoAndStop("off");
}
public function unpause():void{
if (state == DOWN){
(mc as MovieClip).gotoAndStop("down");
} else {
if (state == OFF){
(mc as MovieClip).gotoAndStop("off");
} else {
(mc as MovieClip).gotoAndStop("up");
};
};
}
}
}//package com.nitrome.engine_specific
Section 38
//Tile (com.nitrome.engine_specific.Tile)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Tile extends Clip {
public var front_mc:Sprite;
public var to_x:int;
public var to_y:int;
public var grid_x:int;
public var grid_y:int;
public var next_x:int;
public var next_y:int;
public var grab_x:int;
public var grab_y:int;
public var dest_x:Number;
public var dest_y:Number;
public var width:int;
public var height:int;
public var collision_rect:Rect;
public var slide_horiz:Boolean;// = true
public var slide_vert:Boolean;// = true
public var rotates:Boolean;// = false
public var start_drag_x:int;
public var start_drag_y:int;
public var speed:int;// = 12
public var active_tile:Boolean;
public var squares:Array;
public var dest_rotation:Number;
public var speed_rotation:Number;
public var drag_angle:Number;
public var angle:Number;
public var type:int;
public var _1_over_width:Number;
public var _1_over_height:Number;
public var moving:Boolean;// = false
public var on_grid_pos:Boolean;// = true
public var laser_count:int;// = 0
public static const tile_scale:int = 24;
public static const TILE_SCALE:Number = 0.0416666666666667;
public static const _1_OVER_24:Number = 0.0416666666666667;
public static const _1_OVER_48:Number = 0.0208333333333333;
public static const SMALL:int = 1;
public static const BIG:int = 2;
public static const TURN:int = 4;
public static const STATIC:int = 8;
public static const HORIZ:int = 16;
public static const VERT:int = 32;
public static const BLOCK:int = 64;
public static const BREAK:int = 128;
public function Tile(_arg1:Sprite, _arg2:Sprite, _arg3:Game, _arg4:int=1){
super(_arg1, _arg3);
this.type = _arg4;
this.front_mc = _arg2;
dest_x = _arg1.x;
dest_y = _arg1.y;
next_x = (grid_x = (to_x = (_arg1.x * TILE_SCALE)));
next_y = (grid_y = (to_y = (_arg1.y * TILE_SCALE)));
grab_x = (grab_y = 0);
if ((_arg4 & SMALL)){
width = (height = 1);
squares = [new Square(0, 0)];
_1_over_width = (_1_over_height = _1_OVER_24);
};
if ((_arg4 & BIG)){
width = (height = 2);
squares = [new Square(0, 0), new Square(1, 0), new Square(1, 1), new Square(0, 1)];
_1_over_width = (_1_over_height = _1_OVER_48);
};
if ((_arg4 & TURN)){
width = (height = 1);
rotates = true;
slide_horiz = false;
slide_vert = false;
angle = (_arg1 as MovieClip).mirror.rotation;
squares = [new Square(0, 0)];
_1_over_width = (_1_over_height = _1_OVER_24);
};
if ((_arg4 & HORIZ)){
slide_vert = false;
};
if ((_arg4 & VERT)){
slide_horiz = false;
};
if ((_arg4 & STATIC)){
slide_horiz = (slide_vert = false);
};
var _local5:int;
while (_local5 < squares.length) {
if (_arg3.tile_map[(squares[_local5].y + grid_y)][(squares[_local5].x + grid_x)] == null){
_arg3.tile_map[(squares[_local5].y + grid_y)][(squares[_local5].x + grid_x)] = this;
};
_local5++;
};
collision_rect = new Rect(_arg1.x, _arg1.y, (tile_scale * width), (tile_scale * height));
active_tile = false;
}
public function move():void{
var _local1:int;
var _local2:int;
var _local3:int;
if (((slide_horiz) || (slide_vert))){
if (((((active_tile) && (on_grid_pos))) && (((!((grid_x == to_x))) || (!((grid_y == to_y))))))){
next_x = grid_x;
next_y = grid_y;
_local1 = 0;
_local2 = 0;
if (slide_horiz){
if ((((to_x < grid_x)) && ((grid_x > 0)))){
next_x = (grid_x - 1);
_local1 = -1;
};
if ((((to_x > grid_x)) && (((grid_x + width) < g.tile_width)))){
next_x = (grid_x + 1);
_local1 = 1;
};
};
if (slide_vert){
if ((((to_y < grid_y)) && ((grid_y > 0)))){
next_y = (grid_y - 1);
_local2 = -1;
};
if ((((to_y > grid_y)) && (((grid_y + height) < g.tile_height)))){
next_y = (grid_y + 1);
_local2 = 1;
};
};
_local3 = 0;
while (_local3 < squares.length) {
if (g.tile_map[((grid_y + _local2) + squares[_local3].y)][(grid_x + squares[_local3].x)] != null){
next_y = grid_y;
};
if (g.tile_map[(grid_y + squares[_local3].y)][((grid_x + _local1) + squares[_local3].x)] != null){
next_x = grid_x;
};
if ((((((g.tile_map[((grid_y + _local2) + squares[_local3].y)][(grid_x + squares[_local3].x)] == null)) && ((g.tile_map[(grid_y + squares[_local3].y)][((grid_x + _local1) + squares[_local3].x)] == null)))) && (!((g.tile_map[((grid_y + _local2) + squares[_local3].y)][((grid_x + _local1) + squares[_local3].x)] == null))))){
next_x = grid_x;
next_y = grid_y;
};
_local3++;
};
if (((!((next_x == grid_x))) || (!((next_y == grid_y))))){
dest_x = (next_x * tile_scale);
dest_y = (next_y * tile_scale);
on_grid_pos = false;
};
};
if (((slide_horiz) || (slide_vert))){
if (dest_x > mc.x){
mc.x = (mc.x + speed);
};
if (dest_x < mc.x){
mc.x = (mc.x - speed);
};
if (dest_y > mc.y){
mc.y = (mc.y + speed);
};
if (dest_y < mc.y){
mc.y = (mc.y - speed);
};
if ((((mc.x == dest_x)) && ((mc.y == dest_y)))){
on_grid_pos = true;
};
collision_rect.x = mc.x;
collision_rect.y = mc.y;
front_mc.x = mc.x;
front_mc.y = (mc.y + collision_rect.height);
};
grid_x = (mc.x * TILE_SCALE);
grid_y = (mc.y * TILE_SCALE);
} else {
if (rotates){
if (!on_grid_pos){
(mc as MovieClip).mirror.rotation = dest_rotation;
angle = (mc as MovieClip).mirror.rotation;
on_grid_pos = true;
};
};
};
}
public function setDestination(_arg1:int, _arg2:int):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
if (((slide_horiz) || (slide_vert))){
to_x = (grab_x + _arg1);
to_y = (grab_y + _arg2);
} else {
if (rotates){
_local3 = (g.canvas.mouseX - (collision_rect.x + (collision_rect.width * 0.5)));
_local4 = (g.canvas.mouseY - (collision_rect.y + (collision_rect.height * 0.5)));
_local5 = (Trig.DEGREES * Math.atan2(_local4, _local3));
_local5 = (_local5 - drag_angle);
if (_local5 < -180){
_local5 = (_local5 + 360);
};
if (_local5 >= 180){
_local5 = (_local5 - 360);
};
if (_local5 > 45){
drag_angle = (drag_angle + 90);
if (drag_angle >= 360){
drag_angle = (drag_angle - 360);
};
dest_rotation = (dest_rotation + 90);
on_grid_pos = false;
while (dest_rotation > 180) {
dest_rotation = (dest_rotation - 360);
};
} else {
if (_local5 < -45){
drag_angle = (drag_angle - 90);
if (drag_angle < 0){
drag_angle = (drag_angle + 360);
};
dest_rotation = (dest_rotation - 90);
on_grid_pos = false;
while (dest_rotation < -180) {
dest_rotation = (dest_rotation + 360);
};
};
};
};
};
}
public function startDrag(_arg1:int, _arg2:int):void{
var _local3:int;
if (((slide_horiz) || (slide_vert))){
grab_x = (grid_x - _arg1);
grab_y = (grid_y - _arg2);
_local3 = 0;
while (_local3 < squares.length) {
g.tile_map[(grid_y + squares[_local3].y)][(grid_x + squares[_local3].x)] = null;
_local3++;
};
} else {
if (rotates){
start_drag_x = (g.canvas.mouseX - (collision_rect.x + (collision_rect.width * 0.5)));
start_drag_y = (g.canvas.mouseY - (collision_rect.y + (collision_rect.height * 0.5)));
drag_angle = (Trig.DEGREES * Math.atan2(start_drag_y, start_drag_x));
angle = (mc as MovieClip).mirror.rotation;
dest_rotation = (mc as MovieClip).mirror.rotation;
};
};
active_tile = true;
}
public function stopDrag():void{
var _local1:int;
if (((slide_horiz) || (slide_vert))){
_local1 = 0;
while (_local1 < squares.length) {
g.tile_map[(next_y + squares[_local1].y)][(next_x + squares[_local1].x)] = this;
_local1++;
};
grid_x = (mc.x * TILE_SCALE);
grid_y = (mc.y * TILE_SCALE);
};
active_tile = false;
}
override public function remove():void{
super.remove();
var _local1:int;
while (_local1 < squares.length) {
g.tile_map[(squares[_local1].y + grid_y)][(squares[_local1].x + grid_x)] = null;
_local1++;
};
if (front_mc != null){
front_mc.parent.removeChild(front_mc);
};
}
}
}//package com.nitrome.engine_specific
class Square {
private var x:int;
private var y:int;
private function Square(_arg1:int, _arg2:int){
this.x = _arg1;
this.y = _arg2;
}
}
Section 39
//TileMaker (com.nitrome.engine_specific.TileMaker)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.utils.*;
public class TileMaker {
public var g:Game;
public var s:Scroller;
public var class_names:Array;
public var fixed:Boolean;
private var i:int;
private static const UP:int = 1;
private static const RIGHT:int = 2;
private static const DOWN:int = 4;
private static const LEFT:int = 8;
private static const IN_PLAY:int = 2;
private static const EMPTY:int = 1;
public function TileMaker(_arg1:Game, _arg2:Scroller){
this.g = _arg1;
this.s = _arg2;
class_names = new Array("", "", "MonsterMC1", "MonsterMC2", "MonsterMC3", "FreeTileMC", "LaserMC", "LaserMC", "LaserMC", "LaserMC", "MirrorTileMC", "MirrorTileMC", "HorizTileMC", "BigHorizTileMC", "VertTileMC", "BigVertTileMC", "StaticTileMC", "BigStaticTileMC", "KillTileMC", "BigFreeTileMC", "NoThruTileMC", "MonsterMC4", "MonsterMC5", "MonsterMC6", "MonsterMC7", "MonsterMC8", "MonsterMC9", "MonsterMC10", "MonsterMC11", "MonsterMC12", "MonsterMC13", "MonsterMC14", "MonsterMC15", "MonsterMC16", "MonsterMC17", "MonsterMC18", "CakeMC1", "CakeMC2", "CakeMC3", "CakeMC4", "CakeMC5", "CakeMC6", "CakeMC7", "CakeMC8", "BlockTileMC", "BreakTileMC1", "BreakTileMC2", "SwitchMC1", "SwitchMC2", "SwitchMC3", "SwitchMC4", "MoveTileMC1", "MoveTileMC2", "MoveTileMC3", "MoveTileMC4", "MoveTileMC5", "MoveTileMC6", "MoveTileMC7", "MoveTileMC8", "MoveTileMC9", "MoveTileMC10", "MoveTileMC11", "MoveTileMC12", "StaticTileMC1", "StaticTileMC2", "StaticTileMC3", "StaticTileMC4", "StaticTileMC5", "StaticTileMC6", "StaticTileMC7", "StaticTileMC8", "StaticTileMC9", "StaticTileMC10", "StaticTileMC11", "StaticTileMC12", "StaticTileMC13", "StaticTileMC14", "StaticTileMC15", "StaticTileMC16", "StaticTileMC17", "StaticTileMC18", "StaticTileMC19", "StaticTileMC20", "StaticTileMC21", "StaticTileMC22", "StaticTileMC23", "StaticTileMC24", "StaticTileMC25", "StaticTileMC26", "StaticTileMC27", "StaticTileMC28", "StaticTileMC29", "StaticTileMC30", "StaticTileMC31", "StaticTileMC32", "HotTileMC", "BossBackMC1", "BossBackMC2", "BossBackMC3", "BossMonsterMC1", "BossMonsterMC2", "BossMonsterMC3", "BossMonsterMC4", "BossMonsterMC5", "BossMonsterMC6", "BossMonsterMC7", "FinishMC", "MonsterMC19", "HelpTileMC1", "HelpTileMC2", "HelpTileMC3", "HelpTileMC4", "HelpTileMC5", "HelpMC1", "HelpMC2", "HelpMC3", "HelpMC4", "HelpMC5");
i = 0;
while (i < class_names.length) {
if (class_names[i] != ""){
class_names[i] = (getDefinitionByName(class_names[i]) as Class);
};
i++;
};
}
public function mapElement(_arg1:int, _arg2:int):Clip{
var _local4:*;
var _local5:Sprite;
var _local6:Sprite;
var _local7:int;
var _local8:int;
var _local3:int = (_arg1 + (_arg2 * s.width));
fixed = true;
if (s.map_array[_arg2][_arg1] >= 1){
_local5 = new (class_names[s.map_array[_arg2][_arg1]]);
};
if (_local5 != null){
_local5.x = (_arg1 * s.scale);
_local5.y = (_arg2 * s.scale);
s.tiles.addChildAt(_local5, 0);
};
if (s.map_array[_arg2][_arg1] == 1){
i = 0;
while (i < s.signage.length) {
if ((((s.signage[i].n == _local3)) && ((s.signage[i].layer == s.current_layer)))){
break;
};
i++;
};
} else {
if ((s.map_array[_arg2][_arg1] is Array)){
_local7 = s.map_array[_arg2][_arg1][0][0];
_local8 = 0;
if ((((_local7 >= 22)) && ((_local7 <= 29)))){
_local8 = 1;
} else {
if (_local7 >= 30){
_local8 = 2;
};
};
_local5 = new (class_names[_local7]);
_local5.x = ((s.scale >> 1) + (_arg1 * s.scale));
_local5.y = ((s.scale >> 1) + (_arg2 * s.scale));
s.tiles.addChildAt(_local5, 0);
_local4 = new Monster(s.map_array[_arg2][_arg1][0], _local5, s.map_array[_arg2][_arg1][1], _local8, g);
fixed = false;
} else {
if ((((((s.map_array[_arg2][_arg1] == 5)) || ((s.map_array[_arg2][_arg1] == 56)))) || ((s.map_array[_arg2][_arg1] == 59)))){
if (s.map_array[_arg2][_arg1] == 56){
_local6 = new FrontTileMC10();
} else {
if (s.map_array[_arg2][_arg1] == 59){
_local6 = new FrontTileMC13();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g);
fixed = false;
} else {
if ((((s.map_array[_arg2][_arg1] >= 6)) && ((s.map_array[_arg2][_arg1] <= 9)))){
_local6 = new FrontTileMC14();
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
_local4 = new Laser(_local5, _local6, g);
if (s.map_array[_arg2][_arg1] == 6){
_local4.dir = Laser.UP;
} else {
if (s.map_array[_arg2][_arg1] == 7){
_local4.dir = Laser.RIGHT;
} else {
if (s.map_array[_arg2][_arg1] == 8){
_local4.dir = Laser.DOWN;
} else {
if (s.map_array[_arg2][_arg1] == 9){
_local4.dir = Laser.LEFT;
};
};
};
};
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] == 10){
_local6 = new FrontTileMC14();
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
_local4 = new Mirror(_local5, _local6, g, Mirror.A);
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] == 11){
_local6 = new FrontTileMC14();
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
_local4 = new Mirror(_local5, _local6, g, Mirror.B);
fixed = true;
} else {
if ((((((s.map_array[_arg2][_arg1] == 12)) || ((s.map_array[_arg2][_arg1] == 54)))) || ((s.map_array[_arg2][_arg1] == 57)))){
if (s.map_array[_arg2][_arg1] == 54){
_local6 = new FrontTileMC10();
} else {
if (s.map_array[_arg2][_arg1] == 57){
_local6 = new FrontTileMC13();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, (Tile.SMALL | Tile.HORIZ));
fixed = true;
} else {
if ((((((s.map_array[_arg2][_arg1] == 13)) || ((s.map_array[_arg2][_arg1] == 52)))) || ((s.map_array[_arg2][_arg1] == 61)))){
if (s.map_array[_arg2][_arg1] == 52){
_local6 = new FrontTileMC9();
} else {
if (s.map_array[_arg2][_arg1] == 61){
_local6 = new FrontTileMC11();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + (Tile.tile_scale * 2));
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, (Tile.BIG | Tile.HORIZ));
fixed = true;
} else {
if ((((((s.map_array[_arg2][_arg1] == 14)) || ((s.map_array[_arg2][_arg1] == 55)))) || ((s.map_array[_arg2][_arg1] == 58)))){
if (s.map_array[_arg2][_arg1] == 55){
_local6 = new FrontTileMC10();
} else {
if (s.map_array[_arg2][_arg1] == 58){
_local6 = new FrontTileMC13();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, (Tile.SMALL | Tile.VERT));
fixed = false;
} else {
if ((((((s.map_array[_arg2][_arg1] == 15)) || ((s.map_array[_arg2][_arg1] == 53)))) || ((s.map_array[_arg2][_arg1] == 60)))){
if (s.map_array[_arg2][_arg1] == 53){
_local6 = new FrontTileMC9();
} else {
if (s.map_array[_arg2][_arg1] == 60){
_local6 = new FrontTileMC11();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + (Tile.tile_scale * 2));
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, (Tile.BIG | Tile.VERT));
fixed = false;
} else {
if ((((((((((s.map_array[_arg2][_arg1] == 16)) || ((((s.map_array[_arg2][_arg1] >= 63)) && ((s.map_array[_arg2][_arg1] <= 89)))))) || ((s.map_array[_arg2][_arg1] == 92)))) || ((s.map_array[_arg2][_arg1] == 93)))) || ((((s.map_array[_arg2][_arg1] >= 108)) && ((s.map_array[_arg2][_arg1] <= 112)))))){
if (s.map_array[_arg2][_arg1] == 93){
_local6 = new FrontTileMC10();
} else {
if (s.map_array[_arg2][_arg1] == 92){
_local6 = new FrontTileMC13();
} else {
if (s.map_array[_arg2][_arg1] == 66){
_local6 = new FrontTileMC7();
} else {
if (s.map_array[_arg2][_arg1] == 65){
_local6 = new FrontTileMC6();
} else {
if (s.map_array[_arg2][_arg1] == 64){
_local6 = new FrontTileMC8();
} else {
if (s.map_array[_arg2][_arg1] == 63){
_local6 = new FrontTileMC5();
} else {
if (s.map_array[_arg2][_arg1] == 80){
_local6 = new FrontTileMC4();
} else {
if (s.map_array[_arg2][_arg1] == 78){
_local6 = new FrontTileMC3();
} else {
if (s.map_array[_arg2][_arg1] == 79){
_local6 = new FrontTileMC2();
} else {
if (s.map_array[_arg2][_arg1] == 77){
_local6 = new FrontTileMC1();
} else {
if ((((s.map_array[_arg2][_arg1] == 108)) || ((s.map_array[_arg2][_arg1] == 109)))){
_local6 = new HelpTileFrontMC1();
} else {
if (s.map_array[_arg2][_arg1] == 110){
_local6 = new HelpTileFrontMC2();
} else {
if ((((s.map_array[_arg2][_arg1] == 111)) || ((s.map_array[_arg2][_arg1] == 112)))){
_local6 = new HelpTileFrontMC3();
};
};
};
};
};
};
};
};
};
};
};
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, (Tile.SMALL | Tile.STATIC));
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] == 95){
_local6 = new HotTileFrontMC();
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
_local4 = new HotTile(_local5, _local6, g);
fixed = true;
} else {
if ((((((((s.map_array[_arg2][_arg1] == 17)) || ((s.map_array[_arg2][_arg1] == 90)))) || ((s.map_array[_arg2][_arg1] == 91)))) || ((s.map_array[_arg2][_arg1] == 94)))){
if (s.map_array[_arg2][_arg1] == 90){
_local6 = new FrontTileMC11();
} else {
if (s.map_array[_arg2][_arg1] == 91){
_local6 = new FrontTileMC11();
} else {
if (s.map_array[_arg2][_arg1] == 94){
_local6 = new FrontTileMC9();
};
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + (Tile.tile_scale * 2));
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, (Tile.BIG | Tile.STATIC));
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] == 18){
_local4 = new Tile(_local5, _local6, g, (Tile.SMALL | Tile.STATIC));
fixed = true;
} else {
if ((((((s.map_array[_arg2][_arg1] == 19)) || ((s.map_array[_arg2][_arg1] == 51)))) || ((s.map_array[_arg2][_arg1] == 62)))){
if (s.map_array[_arg2][_arg1] == 51){
_local6 = new FrontTileMC9();
} else {
if (s.map_array[_arg2][_arg1] == 62){
_local6 = new FrontTileMC11();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + (Tile.tile_scale * 2));
g.tile_front_holder.addChild(_local6);
};
_local4 = new Tile(_local5, _local6, g, Tile.BIG);
fixed = false;
} else {
if (s.map_array[_arg2][_arg1] == 20){
_local4 = new Tile(_local5, _local6, g, (Tile.SMALL | Tile.STATIC));
fixed = true;
} else {
if ((((s.map_array[_arg2][_arg1] >= 36)) && ((s.map_array[_arg2][_arg1] <= 43)))){
_local5.x = (_local5.x + (s.scale >> 1));
_local5.y = (_local5.y + (s.scale >> 1));
_local4 = new Cake(_local5, g);
g.cake_holder.addChild(_local5);
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] == 44){
_local4 = new BlockTile(_local5, _local6, g);
fixed = true;
} else {
if ((((s.map_array[_arg2][_arg1] == 45)) || ((s.map_array[_arg2][_arg1] == 46)))){
if (s.map_array[_arg2][_arg1] == 45){
_local6 = new FrontTileMC15();
} else {
if (s.map_array[_arg2][_arg1] == 46){
_local6 = new FrontTileMC12();
};
};
if (_local6 != null){
_local6.x = _local5.x;
_local6.y = (_local5.y + Tile.tile_scale);
g.tile_front_holder.addChild(_local6);
};
_local4 = new BreakTile(_local5, _local6, g);
fixed = false;
} else {
if ((((s.map_array[_arg2][_arg1] >= 47)) && ((s.map_array[_arg2][_arg1] <= 50)))){
if (s.map_array[_arg2][_arg1] == 47){
_local4 = new Switch(_local5, g, Switch.NAPALM);
} else {
if (s.map_array[_arg2][_arg1] == 48){
_local4 = new Switch(_local5, g, Switch.SHIELD);
} else {
if (s.map_array[_arg2][_arg1] == 49){
_local4 = new Switch(_local5, g, Switch.MAGNET);
} else {
if (s.map_array[_arg2][_arg1] == 50){
_local4 = new Switch(_local5, g, Switch.CASH);
};
};
};
};
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] == 106){
_local4 = new Finish(_local5, g);
fixed = true;
} else {
if (s.map_array[_arg2][_arg1] != 0){
_local4 = new Clip(_local5, g);
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
if (_local4 != null){
_local4.map_x = (_local4.init_x = _arg1);
_local4.map_y = (_local4.init_y = _arg2);
_local4.tile_id = s.map_array[_arg2][_arg1];
_local4.layer = s.current_layer;
if (fixed){
s.map_array[_arg2][_arg1] = _local4;
return (_local4);
};
s.map_array[_arg2][_arg1] = 0;
};
return (null);
}
public function generateBlock(_arg1:String, _arg2:Sprite, _arg3:Number, _arg4:Number){
var _local5:*;
if (g.blocks_in_play[_arg4][_arg3] != IN_PLAY){
_local5 = new Clip(_arg2, g);
_local5.block = true;
return (_local5);
};
if (_arg1 == "static"){
_local5 = new BlockClip(_arg2, g);
};
_local5.b = new Block((_arg3 * Game.scale), (_arg4 * Game.scale), Game.scale, Game.scale);
if ((((((_arg4 > 0)) && (isBlock(s.map_array[(_arg4 - 1)][_arg3])))) || ((_arg4 == 0)))){
_local5.b.stack(UP);
};
if ((((((_arg3 < (s.width - 1))) && (isBlock(s.map_array[_arg4][(_arg3 + 1)])))) || ((_arg3 == (s.width - 1))))){
_local5.b.stack(RIGHT);
};
if ((((((_arg4 < (s.height - 1))) && (isBlock(s.map_array[(_arg4 + 1)][_arg3])))) || ((_arg4 == (s.height - 1))))){
_local5.b.stack(DOWN);
};
if ((((((_arg3 > 0)) && (isBlock(s.map_array[_arg4][(_arg3 - 1)])))) || ((_arg3 == 0)))){
_local5.b.stack(LEFT);
};
return (_local5);
}
public function generateSign(_arg1:int):Sprite{
return (new Sprite());
}
public function synchro(_arg1:MovieClip){
_arg1.gotoAndPlay(((g.frame_count % _arg1.totalFrames) + 1));
}
public static function isBlock(_arg1):Boolean{
return (((((((isNaN(_arg1)) && (_arg1.block))) && (!(_arg1.force_field)))) || (((isFinite(_arg1)) && ((_arg1 == 2))))));
}
}
}//package com.nitrome.engine_specific
Section 40
//Turret (com.nitrome.engine_specific.Turret)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Turret {
public var g:Game;
public var monster:Monster;
public var speed:Number;
public var r:int;
public var type:int;
public var count:int;
public var path:Array;
public var path_index:int;
public var delay:int;
public var active:Boolean;// = true
private var i:int;
public static const SMALL_GREEN:int = 0;
public static const SMALL_RED:int = 1;
public static const SMALL_BLUE:int = 2;
public static const BIG:int = 3;
public static const HOMING:int = 4;
public static const ID:int = 0;
public function Turret(_arg1:Array, _arg2:Monster, _arg3:Game){
this.monster = _arg2;
this.g = _arg3;
this.path = _arg1;
speed = 1;
r = 0;
type = _arg1[ID];
path_index = 3;
count = 0;
}
public function readPath():void{
var _local1:Number;
i = 0;
while (i < 100) {
if (path[path_index] == "F"){
path_index++;
speed = path[path_index];
path_index++;
g.createBullet(monster.x, monster.y, (Trig.cos[r] * Number(speed)), (Trig.sin[r] * Number(speed)), type, speed);
} else {
if (path[path_index] == "T"){
path_index++;
speed = path[path_index];
path_index++;
_local1 = Math.atan2((g.player.y - monster.mc.y), (g.player.x - monster.mc.x));
g.createBullet(monster.x, monster.y, (Math.cos(_local1) * Number(speed)), (Math.sin(_local1) * Number(speed)), type, speed);
} else {
if (path[path_index] == "R"){
path_index++;
r = path[path_index];
while (r >= 360) {
r = (r - 360);
};
while (r <= -1) {
r = (r + 360);
};
path_index++;
} else {
if (path[path_index] == "W"){
path_index++;
delay = path[path_index];
count = 0;
break;
} else {
if (path[path_index] == "X"){
path.splice(0, (path_index + 1));
path_index = 0;
} else {
path_index++;
};
};
};
};
};
if (path_index >= path.length){
path_index = 3;
};
i++;
};
if (path_index >= path.length){
path_index = 3;
};
}
public function main():void{
count++;
if ((((count >= delay)) && ((path.length > 0)))){
readPath();
};
}
public function activate():void{
active = true;
count = 0;
path_index = 0;
if (path.length > 0){
readPath();
};
}
public function deactivate():void{
active = false;
}
}
}//package com.nitrome.engine_specific
Section 41
//BackButton (com.nitrome.game.BackButton)
package com.nitrome.game {
import flash.events.*;
public class BackButton extends SimpleButton {
public function BackButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("title_screen");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 42
//ContinueEndButton (com.nitrome.game.ContinueEndButton)
package com.nitrome.game {
import flash.events.*;
public class ContinueEndButton extends SimpleButton {
public function ContinueEndButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
if (!NitromeGame.timeline.popup_holder.key_pressed){
doStuff();
};
}
function doStuff():void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.timeline.popup_holder.key_pressed = true;
NitromeGame.timeline.popup_holder.hidePopUp();
NitromeGame.transition.doTween("congrats");
NitromeGame.sound_manager.crossFade(SoundManager.MENU);
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 43
//ContinueGameButton (com.nitrome.game.ContinueGameButton)
package com.nitrome.game {
import flash.events.*;
public class ContinueGameButton extends SimpleButton {
public function ContinueGameButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame();
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 44
//ContinueGameHelpButton (com.nitrome.game.ContinueGameHelpButton)
package com.nitrome.game {
import flash.events.*;
public class ContinueGameHelpButton extends SimpleButton {
public function ContinueGameHelpButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame();
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 45
//CreditsButton (com.nitrome.game.CreditsButton)
package com.nitrome.game {
import flash.events.*;
public class CreditsButton extends SimpleButton {
public function CreditsButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("credits");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 46
//FxToggle (com.nitrome.game.FxToggle)
package com.nitrome.game {
import flash.events.*;
public class FxToggle extends SimpleButton {
public function FxToggle(){
addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30);
if (!NitromeGame.sfx){
gotoAndStop("_off_up");
} else {
gotoAndStop("_on_up");
};
addEventListener(MouseEvent.CLICK, onClick);
}
override protected function updateGraphic():void{
if (over){
if (NitromeGame.sound_manager.sfx){
gotoAndStop("_on_over");
} else {
if (!NitromeGame.sound_manager.sfx){
gotoAndStop("_off_over");
};
};
} else {
if (NitromeGame.sound_manager.sfx){
gotoAndStop("_on_up");
} else {
if (!NitromeGame.sound_manager.sfx){
gotoAndStop("_off_up");
};
};
};
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.sound_manager.toggleSfx();
updateGraphic();
}
function frame1(){
stop();
}
function frame10(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
}
}//package com.nitrome.game
Section 47
//GameHelpButton (com.nitrome.game.GameHelpButton)
package com.nitrome.game {
import flash.events.*;
public class GameHelpButton extends SimpleButton {
public function GameHelpButton(){
addFrameScript(0, frame1, 9, frame10);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame(true);
}
function frame1(){
stop();
}
function frame10(){
stop();
}
}
}//package com.nitrome.game
Section 48
//HelpArrowButtonLeft (com.nitrome.game.HelpArrowButtonLeft)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
public class HelpArrowButtonLeft extends SimpleButton {
public function HelpArrowButtonLeft(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
(parent as MovieClip).gotoAndStop((((parent as MovieClip).currentFrame == 1)) ? (parent as MovieClip).totalFrames : ((parent as MovieClip).currentFrame - 1));
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 49
//HelpArrowButtonRight (com.nitrome.game.HelpArrowButtonRight)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
public class HelpArrowButtonRight extends SimpleButton {
public function HelpArrowButtonRight(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
(parent as MovieClip).gotoAndStop((((parent as MovieClip).currentFrame == (parent as MovieClip).totalFrames)) ? 1 : ((parent as MovieClip).currentFrame + 1));
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 50
//HelpButton (com.nitrome.game.HelpButton)
package com.nitrome.game {
import flash.events.*;
public class HelpButton extends SimpleButton {
public function HelpButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("help");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 51
//Key (com.nitrome.game.Key)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
public class Key {
public static const NUMBER_0:uint = 48;
public static const NUMBER_1:uint = 49;
public static const NUMBER_2:uint = 50;
public static const NUMBER_3:uint = 51;
public static const NUMBER_4:uint = 52;
public static const NUMBER_5:uint = 53;
public static const NUMBER_6:uint = 54;
public static const NUMBER_7:uint = 55;
public static const NUMBER_8:uint = 56;
public static const NUMBER_9:uint = 57;
public static const A:uint = 65;
public static const B:uint = 66;
public static const C:uint = 67;
public static const D:uint = 68;
public static const E:uint = 69;
public static const F:uint = 70;
public static const G:uint = 71;
public static const H:uint = 72;
public static const I:uint = 73;
public static const J:uint = 74;
public static const K:uint = 75;
public static const L:uint = 76;
public static const M:uint = 77;
public static const N:uint = 78;
public static const O:uint = 79;
public static const P:uint = 80;
public static const Q:uint = 81;
public static const R:uint = 82;
public static const S:uint = 83;
public static const T:uint = 84;
public static const U:uint = 85;
public static const V:uint = 86;
public static const W:uint = 87;
public static const X:uint = 88;
public static const Y:uint = 89;
public static const Z:uint = 90;
private static var initialized:Boolean = false;
private static var keysDown:Array = new Array();
public static var stage:Stage;
public static var key_pressed:Boolean = false;
public static function init(_arg1:Stage){
if (!initialized){
stage = _arg1;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.addEventListener(Event.DEACTIVATE, clearKeys);
initialized = true;
};
}
public static function isDown(_arg1:uint):Boolean{
if (!initialized){
throw (new Error("Key class has yet been initialized."));
};
return (Boolean(keysDown[_arg1]));
}
private static function keyPressed(_arg1:KeyboardEvent):void{
keysDown[_arg1.keyCode] = true;
key_pressed = true;
}
private static function keyReleased(_arg1:KeyboardEvent):void{
keysDown[_arg1.keyCode] = false;
key_pressed = false;
}
private static function clearKeys(_arg1:Event):void{
keysDown = new Array();
key_pressed = false;
}
public static function forceClearKeys():void{
keysDown = new Array();
key_pressed = false;
}
}
}//package com.nitrome.game
Section 52
//LevelChooserButton (com.nitrome.game.LevelChooserButton)
package com.nitrome.game {
import flash.events.*;
import flash.text.*;
public class LevelChooserButton extends SimpleButton {
public var level_num:TextField;
private var id:int;
private var active:Boolean;
public var num:String;
public static const up_col:int = 0;
public static const over_col:int = 0x666666;
public function LevelChooserButton(){
id = int(name.slice(6));
if (NitromeGame.getLevelUnlocked(id)){
active = true;
useHandCursor = true;
} else {
active = false;
useHandCursor = false;
};
updateGraphic();
}
override protected function updateGraphic():void{
var _local1:String;
if (active){
if (over){
level_num.textColor = over_col;
} else {
level_num.textColor = up_col;
};
_local1 = String(id);
if (id < 10){
_local1 = ("0" + _local1);
};
level_num.text = _local1;
} else {
level_num.text = "??";
};
}
override public function onClick(_arg1:MouseEvent):void{
if (active){
NitromeGame.selected_level = id;
Score.value = 0;
NitromeGame.timeline.tt.doTween("game");
};
updateGraphic();
}
}
}//package com.nitrome.game
Section 53
//LevelSelectButton (com.nitrome.game.LevelSelectButton)
package com.nitrome.game {
import flash.events.*;
public class LevelSelectButton extends SimpleButton {
public function LevelSelectButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.popup_holder.hidePopUp();
NitromeGame.timeline.game.clearListeners();
NitromeGame.transition.doTween("choose_level");
NitromeGame.sound_manager.crossFade(SoundManager.MENU);
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 54
//MiniclipLogo (com.nitrome.game.MiniclipLogo)
package com.nitrome.game {
import flash.events.*;
import flash.net.*;
public class MiniclipLogo extends SimpleButton {
public function MiniclipLogo(){
addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
}
override public function onClick(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.miniclip.com"), "_blank");
}
}
}//package com.nitrome.game
Section 55
//MsgPanel (com.nitrome.game.MsgPanel)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class MsgPanel extends MovieClip {
public var msg:TextField;
public var tt:Transition;
public var stagemsg:TextField;
public var back:MovieClip;
public var count:int;
public var state:int;
public var step:Number;
public static const VISIBLE:int = 1;
public static const FADE_IN:int = 2;
public static const FADE_OUT:int = 4;
public static const HIDDEN:int = 8;
public static const VISIBLE_DELAY:int = 50;
public static const FADE_DELAY:int = 25;
public function MsgPanel(){
addFrameScript(0, frame1);
visible = false;
alpha = 0;
state = HIDDEN;
count = 0;
step = (1 / FADE_DELAY);
}
public function setMsg(_arg1:String):void{
msg.text = _arg1;
var _local2:String = ("stage " + NitromeGame.selected_level);
var _local3:Number = ((1 * NitromeGame.selected_level) / 7);
if (_local3 == (_local3 >> 0)){
_local2 = ("boss " + _local3);
};
stagemsg.text = _local2;
state = FADE_IN;
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
count = 0;
visible = true;
}
public function onEnterFrame(_arg1:Event):void{
if (state == FADE_IN){
alpha = (alpha + step);
if (alpha >= 1){
state = VISIBLE;
};
} else {
if (state == VISIBLE){
count++;
if (count >= VISIBLE_DELAY){
state = FADE_OUT;
};
} else {
if (state == FADE_OUT){
alpha = (alpha - step);
if (alpha <= 0){
state = HIDDEN;
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
visible = false;
};
};
};
};
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 56
//MusicToggle (com.nitrome.game.MusicToggle)
package com.nitrome.game {
import flash.events.*;
public class MusicToggle extends SimpleButton {
public function MusicToggle(){
addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30);
if (!NitromeGame.music){
gotoAndStop("_off_up");
} else {
gotoAndStop("_on_up");
};
addEventListener(MouseEvent.CLICK, onClick);
}
override protected function updateGraphic():void{
if (over){
if (NitromeGame.sound_manager.music){
gotoAndStop("_on_over");
} else {
if (!NitromeGame.sound_manager.music){
gotoAndStop("_off_over");
};
};
} else {
if (NitromeGame.sound_manager.music){
gotoAndStop("_on_up");
} else {
if (!NitromeGame.sound_manager.music){
gotoAndStop("_off_up");
};
};
};
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.sound_manager.toggleMusic();
updateGraphic();
}
function frame1(){
stop();
}
function frame10(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
}
}//package com.nitrome.game
Section 57
//NextLevelButton (com.nitrome.game.NextLevelButton)
package com.nitrome.game {
import flash.events.*;
public class NextLevelButton extends SimpleButton {
public function NextLevelButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
if (!NitromeGame.timeline.popup_holder.key_pressed){
doStuff();
};
}
function doStuff():void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.selected_level++;
NitromeGame.timeline.popup_holder.hidePopUp();
NitromeGame.transition.doTween("game_reset");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 58
//NitromeButton (com.nitrome.game.NitromeButton)
package com.nitrome.game {
import flash.events.*;
import flash.net.*;
public class NitromeButton extends SimpleButton {
public function NitromeButton(){
addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
}
override public function onClick(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.nitrome.com"), "_blank");
}
}
}//package com.nitrome.game
Section 59
//PauseButton (com.nitrome.game.PauseButton)
package com.nitrome.game {
import flash.events.*;
public class PauseButton extends SimpleButton {
public function PauseButton(){
addFrameScript(0, frame1, 9, frame10);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame();
}
function frame1(){
stop();
}
function frame10(){
stop();
}
}
}//package com.nitrome.game
Section 60
//PlayButton (com.nitrome.game.PlayButton)
package com.nitrome.game {
import flash.events.*;
public class PlayButton extends SimpleButton {
public function PlayButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("choose_level");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 61
//PlayGameButton (com.nitrome.game.PlayGameButton)
package com.nitrome.game {
import flash.events.*;
public class PlayGameButton extends SimpleButton {
public function PlayGameButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
Score.value = 0;
NitromeGame.timeline.tt.doTween("game");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 62
//PopUpHolder (com.nitrome.game.PopUpHolder)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
public class PopUpHolder extends MovieClip {
public var popup_clip:MovieClip;
private var popup_id:String;
private var action_performed:Boolean;
public var key_pressed:Boolean;
public function PopUpHolder(){
addFrameScript(0, frame1, 1, frame2, 9, frame10);
}
public function launchPopUp(_arg1:String):void{
popup_id = _arg1;
key_pressed = false;
action_performed = false;
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
gotoAndPlay(2);
}
public function hidePopUp():void{
action_performed = true;
key_pressed = true;
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
gotoAndPlay("out");
}
public function onEnterFrame(_arg1:Event):void{
if ((((((((currentFrame == NitromeGame.POPUP_HOLDER_FRAME)) && (Key.isDown(Keyboard.SPACE)))) && (!(key_pressed)))) && (!(action_performed)))){
key_pressed = true;
if (popup_id == "level_complete"){
popup_clip.next_level_button.doStuff();
} else {
if (popup_id == "game_over"){
popup_clip.try_again_button.doStuff();
} else {
if (popup_id == "final_level_complete"){
popup_clip.continue_end_button.doStuff();
};
};
};
action_performed = true;
};
if ((((currentFrame == NitromeGame.POPUP_HOLDER_FRAME)) && (!(Key.isDown(Keyboard.SPACE))))){
key_pressed = false;
};
}
function frame1(){
popup_clip.gotoAndStop("wait");
stop();
}
function frame2(){
popup_clip.gotoAndStop(popup_id);
}
function frame10(){
stop();
}
}
}//package com.nitrome.game
Section 63
//QuitGameButton (com.nitrome.game.QuitGameButton)
package com.nitrome.game {
import flash.events.*;
public class QuitGameButton extends SimpleButton {
public function QuitGameButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.timeline.popup_holder.hidePopUp();
NitromeGame.transition.doTween("choose_level");
NitromeGame.sound_manager.crossFade(SoundManager.MENU);
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 64
//Score (com.nitrome.game.Score)
package com.nitrome.game {
public class Score {
private static var _value:int;
private static var r:int;
private static var hash:String;
public static function init():void{
r = (int((Math.random() * 2000000)) - 1000000);
_value = r;
hash = _value.toString(16);
}
public static function set value(_arg1:int):void{
var _local2:Boolean = verify();
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
if (_local2){
hash = _value.toString(16);
};
}
public static function get value():int{
return ((_value - r));
}
public static function verify():Boolean{
return ((_value.toString(16) == hash));
}
}
}//package com.nitrome.game
Section 65
//ScoreTicker (com.nitrome.game.ScoreTicker)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class ScoreTicker extends MovieClip {
public var score_text:TextField;
private var count_interval:int;
private var total:int;
private var inc:int;
private var val:int;
private var next_clip:String;
private var next_total:int;
private var next_inc:int;
private function onFinish():void{
if (next_clip != null){
parent[next_clip].startCount(next_total, next_inc);
};
}
public function setOnFinish(_arg1:String, _arg2:int, _arg3:int):void{
next_clip = _arg1;
next_total = _arg2;
next_inc = _arg3;
}
public function startCount(_arg1:int, _arg2:int):void{
total = _arg1;
this.inc = _arg2;
val = 0;
addEventListener(Event.ENTER_FRAME, doCount, false, 0, true);
}
private function doCount(_arg1:Event):void{
val = (val + inc);
if (val >= total){
val = total;
displayScore();
removeEventListener(Event.ENTER_FRAME, doCount);
onFinish();
} else {
displayScore();
};
}
private function displayScore():void{
score_text.text = String(val);
}
}
}//package com.nitrome.game
Section 66
//SimpleButton (com.nitrome.game.SimpleButton)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
public class SimpleButton extends MovieClip {
protected var over:Boolean;// = false
public var i:int;
public function SimpleButton(){
mouseChildren = false;
buttonMode = true;
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, onMouseOut, false, 0, true);
addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
}
protected function updateGraphic():void{
if (over){
gotoAndStop("_over");
} else {
gotoAndStop("_up");
};
}
protected function onMouseOver(_arg1:MouseEvent):void{
over = true;
updateGraphic();
}
protected function onMouseOut(_arg1:MouseEvent):void{
over = false;
updateGraphic();
}
public function onClick(_arg1:MouseEvent):void{
}
}
}//package com.nitrome.game
Section 67
//SoundManager (com.nitrome.game.SoundManager)
package com.nitrome.game {
import flash.display.*;
import flash.media.*;
public class SoundManager extends SoundManagerSuper {
protected const BEAM_VOLUME:Number = 0.6;
protected const MENU_VOLUME:Number = 0.6;
protected const GAME_VOLUME:Number = 0.6;
public var cake1:MovieClip;
public var boss_alarm:MovieClip;
public var cake2:MovieClip;
public var cake3:MovieClip;
public var big_shot:MovieClip;
public var ow:MovieClip;
public var death:MovieClip;
public var laser_start:MovieClip;
public var small_shot:MovieClip;
public var napalm:MovieClip;
public var medium_bang:MovieClip;
public var homing_shot:MovieClip;
public var cash:MovieClip;
public var small_bang:MovieClip;
public var player_shot:MovieClip;
public var magnet:MovieClip;
public var level_complete:MovieClip;
public var big_bang:MovieClip;
public var laser_switch:MovieClip;
public var shield:MovieClip;
public var burp:MovieClip;
public static const MENU:int = 0;
public static const GAME:int = 1;
public static const BEAM:int = 0;
public function SoundManager(){
NitromeGame.sound_manager = this;
music_loops.push(new MenuMusic());
music_loops.push(new GameMusic());
music_transforms.push(new SoundTransform(MENU_VOLUME, 0));
music_transforms.push(new SoundTransform(GAME_VOLUME, 0));
music_channels.push(new SoundChannel());
music_channels.push(new SoundChannel());
music_volumes.push(MENU_VOLUME);
music_volumes.push(GAME_VOLUME);
music_type = uint.MAX_VALUE;
sound_loops.push(new BeamSound());
sound_transforms.push(new SoundTransform(MENU_VOLUME, 0));
sound_channels.push(new SoundChannel());
sound_volumes.push(BEAM_VOLUME);
sound_loop_playing.push(false);
sound_loop_fade_direction.push(0);
}
}
}//package com.nitrome.game
Section 68
//SoundManagerSuper (com.nitrome.game.SoundManagerSuper)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
public class SoundManagerSuper extends MovieClip {
protected const CROSS_FADE_SPEED:Number = 0.05;
protected const LOOP_FADE_SPEED:Number = 0.1;
protected var sound_clips:Array;
protected var sound_loops:Array;
protected var sound_loop_playing:Array;
protected var sound_channels:Array;
protected var sound_transforms:Array;
protected var sound_volumes:Array;
protected var sound_loop_fade_direction;
protected var music_loops:Array;
protected var music_channels:Array;
protected var music_transforms:Array;
protected var music_volumes:Array;
protected var fade_from:int;
protected var _music:Boolean;// = true
protected var _sfx:Boolean;// = true
public var fading_music:Boolean;// = false
public var fading_sound:Boolean;// = false
public var music_type:int;
public static const NO_MUSIC:int = -1;
public function SoundManagerSuper(){
var _local2:MovieClip;
sound_clips = new Array();
sound_loops = new Array();
sound_loop_playing = new Array();
sound_channels = new Array();
sound_transforms = new Array();
sound_volumes = new Array();
sound_loop_fade_direction = new Array();
music_loops = new Array();
music_channels = new Array();
music_transforms = new Array();
music_volumes = new Array();
super();
_music = NitromeGame.music;
_sfx = NitromeGame.sfx;
var _local1:int;
while (_local1 < numChildren) {
_local2 = (getChildAt(_local1) as MovieClip);
if (_local2 != null){
sound_clips[_local2.name] = _local2;
};
_local1++;
};
}
public function get music():Boolean{
return (_music);
}
public function set music(_arg1:Boolean):void{
_music = _arg1;
}
public function get sfx():Boolean{
return (_sfx);
}
public function set sfx(_arg1:Boolean):void{
_sfx = _arg1;
}
public function playSound(_arg1:String):void{
if (_sfx){
if (sound_clips[_arg1] != null){
sound_clips[_arg1].gotoAndPlay(2);
};
};
}
public function playLoop(_arg1:uint):void{
if (_sfx){
if (((!((sound_loops[_arg1] == null))) && (!(sound_loop_playing[_arg1])))){
sound_transforms[_arg1].volume = sound_volumes[_arg1];
sound_channels[_arg1] = sound_loops[_arg1].play(0, int.MAX_VALUE, sound_transforms[_arg1]);
};
};
}
public function stopLoop(_arg1:uint):void{
if (sound_loops[_arg1] != null){
sound_channels[_arg1].stop();
sound_loop_playing[_arg1] = false;
};
}
public function playMusic(_arg1:uint, _arg2:Boolean=false):void{
var _local3:uint;
if (((_arg2) && ((music_type == NO_MUSIC)))){
return;
};
if (((!((music_type == _arg1))) || (_arg2))){
if (_music){
_local3 = 0;
while (_local3 < music_loops.length) {
if (_local3 == _arg1){
} else {
if (music_channels[_local3] != null){
music_channels[_local3].stop();
};
};
_local3++;
};
music_transforms[_arg1].volume = music_volumes[_arg1];
music_channels[_arg1] = music_loops[_arg1].play(0, int.MAX_VALUE, music_transforms[_arg1]);
};
music_type = _arg1;
};
}
public function stopMusic():void{
var _local1:uint;
while (_local1 < music_channels.length) {
if (music_channels[_local1] != null){
music_channels[_local1].stop();
};
_local1++;
};
}
public function stopLoops():void{
var _local1:int;
while (_local1 < sound_loops.length) {
if (sound_loops[_local1] != null){
sound_channels[_local1].stop();
};
_local1++;
};
}
public function startLoops():void{
var _local1:int;
while (_local1 < sound_loops.length) {
if (((!((sound_loops[_local1] == null))) && (sound_loop_playing[_local1]))){
sound_channels[_local1] = sound_loops[_local1].play(0, int.MAX_VALUE, sound_transforms[_local1]);
};
_local1++;
};
}
public function killLoops():void{
var _local1:int;
while (_local1 < sound_loops.length) {
stopLoop(_local1);
_local1++;
};
}
public function toggleMusic():void{
if (_music){
turnOffMusic();
} else {
turnOnMusic();
};
}
public function turnOnMusic():void{
NitromeGame.music = (_music = true);
if (music_type != NO_MUSIC){
playMusic(music_type, true);
};
}
public function turnOffMusic():void{
var _local1:uint;
while (_local1 < music_channels.length) {
if (music_channels[_local1] != null){
music_channels[_local1].stop();
};
_local1++;
};
NitromeGame.music = (_music = false);
}
public function toggleSfx():void{
if (_sfx){
turnOffSfx();
} else {
turnOnSfx();
};
}
public function turnOffSfx():void{
NitromeGame.sfx = (_sfx = false);
stopLoops();
}
public function turnOnSfx():void{
NitromeGame.sfx = (_sfx = true);
startLoops();
}
public function crossFade(_arg1:int):void{
if (((((!(_music)) || (fading_music))) || ((music_type == _arg1)))){
return;
};
fade_from = music_type;
music_type = _arg1;
music_transforms[_arg1].volume = 0;
music_channels[_arg1] = music_loops[_arg1].play(0, int.MAX_VALUE, music_transforms[_arg1]);
fading_music = true;
addEventListener(Event.ENTER_FRAME, crossFadeAction);
}
public function playMusicFadeIn(_arg1:int):void{
if (((((!(_music)) || (fading_music))) || ((music_type == _arg1)))){
return;
};
music_type = _arg1;
music_transforms[_arg1].volume = 0;
fading_music = true;
music_channels[_arg1] = music_loops[_arg1].play(0, int.MAX_VALUE, music_transforms[_arg1]);
addEventListener(Event.ENTER_FRAME, fadeInAction);
}
public function stopMusicFadeOut():void{
if (((!(_music)) || (fading_music))){
return;
};
music_transforms[music_type].volume = music_volumes[music_type];
fading_music = true;
addEventListener(Event.ENTER_FRAME, fadeOutAction);
}
public function playLoopFadeIn(_arg1:int):void{
if ((((sound_loop_fade_direction[_arg1] == 1)) || (!(_sfx)))){
return;
};
if (!sound_loop_playing[_arg1]){
sound_transforms[_arg1].volume = 0;
sound_loop_playing[_arg1] = true;
sound_channels[_arg1] = sound_loops[_arg1].play(0, int.MAX_VALUE, sound_transforms[_arg1]);
};
sound_loop_fade_direction[_arg1] = 1;
if (!fading_sound){
addEventListener(Event.ENTER_FRAME, fadeSound);
fading_sound = true;
};
}
public function stopLoopFadeOut(_arg1:int):void{
if (((((!(_sfx)) || (!(sound_loop_playing[_arg1])))) || ((sound_loop_fade_direction[_arg1] == -1)))){
return;
};
sound_loop_fade_direction[_arg1] = -1;
if (!fading_sound){
addEventListener(Event.ENTER_FRAME, fadeSound);
fading_sound = true;
};
}
private function fadeSound(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
while (_local3 < sound_loops.length) {
if (sound_loop_fade_direction[_local3] != 0){
_local2 = false;
if (sound_loop_fade_direction[_local3] > 0){
if (sound_transforms[_local3].volume < sound_volumes[_local3]){
sound_transforms[_local3].volume = (sound_transforms[_local3].volume + LOOP_FADE_SPEED);
sound_channels[_local3].soundTransform = sound_transforms[_local3];
} else {
if (sound_transforms[_local3].volume >= sound_volumes[_local3]){
sound_transforms[_local3].volume = sound_volumes[_local3];
sound_channels[_local3].soundTransform = sound_transforms[_local3];
sound_loop_fade_direction[_local3] = 0;
};
};
} else {
if (sound_loop_fade_direction[_local3] < 0){
if (sound_transforms[_local3].volume > 0){
sound_transforms[_local3].volume = (sound_transforms[_local3].volume - LOOP_FADE_SPEED);
sound_channels[_local3].soundTransform = sound_transforms[_local3];
} else {
if (sound_transforms[_local3].volume <= 0){
sound_loop_fade_direction[_local3] = 0;
sound_channels[_local3].stop();
sound_loop_playing[_local3] = false;
};
};
};
};
};
_local3++;
};
if (_local2){
_arg1.target.removeEventListener(Event.ENTER_FRAME, fadeSound);
fading_sound = false;
};
}
private function crossFadeAction(_arg1:Event):void{
if (music_transforms[fade_from].volume > 0){
music_transforms[fade_from].volume = (music_transforms[fade_from].volume - CROSS_FADE_SPEED);
music_channels[fade_from].soundTransform = music_transforms[fade_from];
};
if (music_transforms[music_type].volume < music_volumes[music_type]){
music_transforms[music_type].volume = (music_transforms[music_type].volume + CROSS_FADE_SPEED);
music_channels[music_type].soundTransform = music_transforms[music_type];
};
if ((((music_transforms[music_type].volume >= music_volumes[music_type])) && ((music_transforms[fade_from].volume <= 0)))){
music_channels[fade_from].stop();
fading_music = false;
_arg1.target.removeEventListener(Event.ENTER_FRAME, crossFadeAction);
};
}
private function fadeInAction(_arg1:Event):void{
if (music_transforms[music_type].volume < music_volumes[music_type]){
music_transforms[music_type].volume = (music_transforms[music_type].volume + CROSS_FADE_SPEED);
music_channels[music_type].soundTransform = music_transforms[music_type];
};
if (music_transforms[music_type].volume >= music_volumes[music_type]){
fading_music = false;
_arg1.target.removeEventListener(Event.ENTER_FRAME, fadeInAction);
};
}
private function fadeOutAction(_arg1:Event):void{
if (music_transforms[music_type].volume > 0){
music_transforms[music_type].volume = (music_transforms[music_type].volume - CROSS_FADE_SPEED);
music_channels[music_type].soundTransform = music_transforms[music_type];
};
if (music_transforms[music_type].volume <= 0){
fading_music = false;
music_channels[music_type].stop();
music_type = NO_MUSIC;
_arg1.target.removeEventListener(Event.ENTER_FRAME, fadeOutAction);
};
}
}
}//package com.nitrome.game
Section 69
//SubmitScoreButton (com.nitrome.game.SubmitScoreButton)
package com.nitrome.game {
import flash.events.*;
public class SubmitScoreButton extends SimpleButton {
public function SubmitScoreButton(){
addFrameScript(0, frame1);
if (Score.value > NitromeGame.getLastSavedScore()){
visible = true;
} else {
visible = false;
};
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.setLastSavedScore(Score.value);
NitromeGame.timeline.popup_holder.hidePopUp();
NitromeGame.transition.doTween("submit_score");
NitromeGame.sound_manager.playMusic(SoundManager.MENU, false);
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 70
//Transition (com.nitrome.game.Transition)
package com.nitrome.game {
import com.nitrome.engine.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Transition extends MovieClip {
public var line:Line;
public var bitmaps:Array;
public var bitmapdatas:Array;
public var xs:Array;
public var ys:Array;
public var xv:Array;
public var yv:Array;
public var matrix:Matrix;
public var rect:Rectangle;
public var bitmapdata:BitmapData;
public var count:int;
public var step:Number;
public var state:int;
public var next_frame:String;
public var tweening:Boolean;
public var shake_array:Array;
public var shake_count:int;
public var angle:int;// = 0
public var speed:int;// = 5
public static const TWEEN_DELAY:int = 15;
public static const NUM_CLIPS:int = 121;
public static const DAMPING:Number = 0.99;
public static const GRAVITY_Y:Number = 2;
public static const spiral:Array = [[315, 320, 325, 330, 335, 340, 345, 350, 355, 0, 45], [270, 315, 321, 327, 333, 339, 345, 351, 357, 45, 50], [265, 270, 315, 324, 333, 342, 351, 0, 45, 51, 55], [260, 261, 270, 315, 330, 345, 0, 45, 54, 57, 60], [0xFF, 0xFF, 261, 270, 315, 0, 45, 60, 63, 63, 65], [250, 249, 252, 0xFF, 270, 0, 90, 75, 72, 69, 70], [245, 243, 243, 240, 225, 180, 135, 90, 81, 75, 75], [240, 237, 234, 225, 180, 165, 150, 135, 90, 81, 80], [235, 231, 225, 180, 171, 162, 153, 144, 135, 90, 85], [230, 225, 180, 171, 165, 159, 153, 147, 141, 135, 90], [225, 180, 175, 170, 165, 160, 155, 150, 145, 140, 135]];
public function Transition(){
shake_array = new Array(0, 6, -6, 4, -4, 2, -2, 1, -1);
super();
bitmaps = new Array(NUM_CLIPS);
bitmapdatas = new Array(NUM_CLIPS);
xs = new Array(NUM_CLIPS);
ys = new Array(NUM_CLIPS);
xv = new Array(NUM_CLIPS);
yv = new Array(NUM_CLIPS);
matrix = new Matrix();
rect = new Rectangle(0, 0, 50, 50);
count = 0;
shake_count = 0;
tweening = false;
next_frame = "";
}
public function doTween(_arg1:String, _arg2:int=0):void{
if (!tweening){
beginTransition(_arg1);
} else {
next_frame = _arg1;
};
}
public function beginTransition(_arg1:String):void{
var _local4:int;
var _local5:Number;
tweening = true;
var _local2 = 11;
var _local3 = 11;
_local4 = 0;
while (_local4 < bitmaps.length) {
bitmapdatas[_local4] = new BitmapData(50, 50, true, 0xFFFFFF);
bitmaps[_local4] = new Bitmap(bitmapdatas[_local4]);
bitmaps[_local4].visible = false;
addChild(bitmaps[_local4]);
_local4++;
};
_local4 = 0;
while (_local4 < bitmaps.length) {
matrix.tx = ((_local4 % _local2) * -50);
matrix.ty = (((_local4 / _local2) >> 0) * -50);
xs[_local4] = (bitmaps[_local4].x = (-275 + ((_local4 % _local2) * 50)));
ys[_local4] = (bitmaps[_local4].y = (-275 + (((_local4 / _local2) >> 0) * 50)));
bitmapdatas[_local4].draw(NitromeGame.timeline, matrix);
bitmaps[_local4].visible = true;
angle = spiral[((_local4 / _local2) >> 0)][(_local4 % _local2)];
_local5 = (1 + Math.sqrt((((xs[_local4] + 25) * (xs[_local4] + 25)) + ((ys[_local4] + 25) * (ys[_local4] + 25)))));
speed = (_local5 / 5);
if (speed == 0){
speed = 8;
};
xv[_local4] = (Trig.cos[angle] * speed);
yv[_local4] = (Trig.sin[angle] * speed);
_local4++;
};
(parent as MovieClip).gotoAndStop(_arg1);
count = 0;
shake_count = 1;
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
}
private function onEnterFrame(_arg1:Event):void{
var _local3:int;
var _local2:Boolean;
_local3 = 0;
while (_local3 < bitmaps.length) {
if (xs[_local3] != null){
_local2 = false;
xs[_local3] = (xs[_local3] + xv[_local3]);
ys[_local3] = (ys[_local3] + yv[_local3]);
bitmaps[_local3].x = (xs[_local3] >> 0);
bitmaps[_local3].y = (ys[_local3] >> 0);
if ((((((((xs[_local3] > 275)) || ((xs[_local3] < -400)))) || ((ys[_local3] > 275)))) || ((ys[_local3] < -400)))){
xs[_local3] = null;
};
};
_local3++;
};
if (_local2){
_local3 = 0;
while (_local3 < bitmaps.length) {
bitmaps[_local3].visible = false;
bitmapdatas[_local3].dispose();
removeChild(bitmaps[_local3]);
bitmapdatas[_local3] = null;
bitmaps[_local3] = null;
_local3++;
};
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
tweening = false;
if (next_frame != ""){
beginTransition(next_frame);
next_frame = "";
};
};
}
}
}//package com.nitrome.game
Section 71
//TryAgainButton (com.nitrome.game.TryAgainButton)
package com.nitrome.game {
import flash.events.*;
public class TryAgainButton extends SimpleButton {
public function TryAgainButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
if (!NitromeGame.timeline.popup_holder.key_pressed){
doStuff();
};
}
function doStuff():void{
NitromeGame.timeline.game.clearListeners();
Score.value = 0;
NitromeGame.level_score = 0;
NitromeGame.timeline.popup_holder.hidePopUp();
NitromeGame.transition.doTween("game_reset");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 72
//ViewScoresButton (com.nitrome.game.ViewScoresButton)
package com.nitrome.game {
import flash.events.*;
public class ViewScoresButton extends SimpleButton {
public function ViewScoresButton(){
addFrameScript(0, frame1);
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("view_scores");
}
function frame1(){
stop();
}
}
}//package com.nitrome.game
Section 73
//ArrowButton (com.nitrome.highscore.ArrowButton)
package com.nitrome.highscore {
import flash.events.*;
import com.nitrome.game.*;
public class ArrowButton extends SimpleButton {
var high_score_board:HighScoreBoard;
public function ArrowButton(){
high_score_board = (parent as HighScoreBoard);
visible = false;
}
public function hide():void{
visible = false;
}
public function show():void{
visible = true;
}
override public function onClick(_arg1:MouseEvent):void{
if (name == "_prev_arrow"){
high_score_board.shiftScoresPrev();
} else {
if (name == "_next_arrow"){
high_score_board.shiftScoresNext();
};
};
}
}
}//package com.nitrome.highscore
Section 74
//ClearButton (com.nitrome.highscore.ClearButton)
package com.nitrome.highscore {
import flash.events.*;
import com.nitrome.game.*;
public class ClearButton extends SimpleButton {
private var score_submit_panel:ScoreSubmitPanel;
public function ClearButton(){
score_submit_panel = (parent as ScoreSubmitPanel);
}
override public function onClick(_arg1:MouseEvent):void{
score_submit_panel.clearName();
}
}
}//package com.nitrome.highscore
Section 75
//HighScoreBoard (com.nitrome.highscore.HighScoreBoard)
package com.nitrome.highscore {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class HighScoreBoard extends MovieClip {
public const MAX_DIGITS:int = 8;
public const NUM_LINES:int = 10;
private const MAX_RANK:int = 100;
public var _score_line_3:ScoreLine;
public var _score_line_2:ScoreLine;
public var _score_line_1:ScoreLine;
public var _prev_arrow:PrevArrow;
public var _score_line_7:ScoreLine;
public var _score_line_6:ScoreLine;
public var _score_line_5:ScoreLine;
public var loading_text:MovieClip;
public var _score_line_4:ScoreLine;
public var _next_arrow:NextArrow;
public var _score_line_9:ScoreLine;
public var _score_line_8:ScoreLine;
public var _score_line_10:ScoreLine;
private var _zero_fill:Boolean;// = false
private var saved_min_rank:int;
private var score_lines:Array;
private var prev_arrow:ArrowButton;
private var next_arrow:ArrowButton;
private var scores_loader:URLLoader;
private var scores_vars:URLVariables;
private var scores_request:URLRequest;
private var loaded:Boolean;
public function HighScoreBoard(){
var _local1:int;
super();
score_lines = new Array(NUM_LINES);
if (NitromeGame.isAtURL(NitromeGame.NITROME)){
_local1 = 0;
while (_local1 < score_lines.length) {
score_lines[_local1] = (getChildByName(("_score_line_" + (_local1 + 1))) as HighScoreLine);
_local1++;
};
prev_arrow = (getChildByName("_prev_arrow") as ArrowButton);
next_arrow = (getChildByName("_next_arrow") as ArrowButton);
loaded = false;
addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
addEventListener(Event.ENTER_FRAME, loadText, false, 0, true);
} else {
gotoAndStop("hide");
};
}
public function get zero_fill():Boolean{
return (_zero_fill);
}
public function set zero_fill(_arg1:Boolean):void{
_zero_fill = _arg1;
}
public function loadHighScores(_arg1:int):void{
saved_min_rank = _arg1;
scores_loader = new URLLoader();
scores_vars = new URLVariables();
scores_request = new URLRequest(NitromeGame.RETRIEVE_URL);
scores_request.method = URLRequestMethod.POST;
scores_request.data = scores_vars;
scores_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
scores_loader.addEventListener(Event.COMPLETE, retrieveSuccessful);
scores_loader.addEventListener(IOErrorEvent.IO_ERROR, retrieveFailed);
scores_vars.min_rank = String(_arg1);
scores_vars.game_name = NitromeGame.game_id;
scores_vars.time_based = (NitromeGame.time_based) ? "1" : "0";
scores_loader.load(scores_request);
}
public function displayHighScores(_arg1:String):void{
var _local2:int;
var _local3:Object;
if (_arg1 != "0"){
_local2 = 0;
while (_local2 < score_lines.length) {
_local3 = NitromeGame.getHighScoreLine(_arg1, (_local2 + 1));
if (_local3 == null){
score_lines[_local2].hide();
} else {
score_lines[_local2].displayData((saved_min_rank + _local2), _local3.username, _local3.score);
};
_local2++;
};
if (NitromeGame.displayNextButton(_arg1)){
next_arrow.show();
} else {
next_arrow.hide();
};
if (NitromeGame.displayPreviousButton(_arg1)){
prev_arrow.show();
} else {
prev_arrow.hide();
};
};
}
public function shiftScoresPrev():void{
var _local1:int = (saved_min_rank - 10);
if (_local1 < 1){
_local1 = 1;
};
loadHighScores(_local1);
}
public function shiftScoresNext():void{
var _local1:int = (saved_min_rank + 10);
loadHighScores(_local1);
}
public function displayHighScoresMTV(_arg1:Array):void{
var _local2:int;
var _local3:String;
var _local4:String;
if (_arg1.length > 0){
_local2 = 0;
while (_local2 <= 9) {
_local3 = String(_arg1[_local2].user_name);
_local4 = String(_arg1[_local2].score);
if ((((_local3 == "")) || ((_local3 == null)))){
score_lines[_local2].hide();
next_arrow.hide();
} else {
score_lines[_local2].displayData((saved_min_rank + _local2), _local3, _local4);
};
_local2++;
};
} else {
trace("no leaderboard data");
};
}
private function init(_arg1:Event):void{
loadHighScores(1);
_arg1.target.removeEventListener(Event.ADDED_TO_STAGE, init);
}
private function loadText(_arg1:Event):void{
if (((loaded) && ((loading_text.alpha > 0)))){
loading_text.alpha = (loading_text.alpha - 0.1);
} else {
if (((loaded) && ((loading_text.alpha <= 0)))){
_arg1.target.removeEventListener(Event.ENTER_FRAME, loadText);
};
};
}
private function retrieveSuccessful(_arg1:Event):void{
var _local2:String = _arg1.target.data.result;
displayHighScores(_local2);
loaded = true;
}
private function retrieveFailed(_arg1:IOErrorEvent):void{
trace(("Retrieve scores failed: " + _arg1.text));
}
}
}//package com.nitrome.highscore
Section 76
//HighScoreLine (com.nitrome.highscore.HighScoreLine)
package com.nitrome.highscore {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class HighScoreLine extends Sprite {
private const FADE_SPEED:Number = 0.3;
public var _rank_text:TextField;
public var _name_text:TextField;
public var _score_text:TextField;
private var score_text:TextField;
private var name_text:TextField;
private var rank_text:TextField;
private var high_score_board:HighScoreBoard;
private var hidden:Boolean;
private var fade_delay:int;
private var fade_count:int;
public function HighScoreLine(){
visible = false;
hidden = false;
score_text = (getChildByName("_score_text") as TextField);
name_text = (getChildByName("_name_text") as TextField);
rank_text = (getChildByName("_rank_text") as TextField);
high_score_board = (parent as HighScoreBoard);
}
public function displayData(_arg1:int, _arg2:String, _arg3:String):void{
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
trace((name + " displayData:"));
rank_text.text = String((_arg1 + "."));
name_text.text = _arg2.toUpperCase();
trace(((((_arg1 + ",") + _arg2) + ",") + _arg3));
if (high_score_board.zero_fill){
_local4 = high_score_board.MAX_DIGITS;
_local5 = _arg3.length;
_local6 = (_local4 - _local5);
_local7 = 1;
while (_local7 <= _local6) {
_arg3 = ("0" + _arg3);
_local7++;
};
score_text.text = _arg3;
} else {
score_text.text = _arg3;
};
alpha = 0;
visible = true;
fade_delay = (((_arg1 - 1) % high_score_board.NUM_LINES) * int((1 / FADE_SPEED)));
fade_count = 0;
addEventListener(Event.ENTER_FRAME, performFade);
}
public function hide():void{
trace((name + " hide"));
visible = false;
hidden = true;
}
private function performFade(_arg1:Event):void{
if (fade_count >= fade_delay){
alpha = (alpha + FADE_SPEED);
if (alpha >= 1){
_arg1.target.removeEventListener(Event.ENTER_FRAME, performFade);
};
};
fade_count++;
}
}
}//package com.nitrome.highscore
Section 77
//LetterButton (com.nitrome.highscore.LetterButton)
package com.nitrome.highscore {
import flash.events.*;
import flash.text.*;
import com.nitrome.game.*;
public class LetterButton extends SimpleButton {
public var _letter:TextField;
private var score_submit_panel:ScoreSubmitPanel;
private var letter:TextField;
private var letter_text:String;
public static const up_col:int = 0;
public static const over_col:int = 0x666666;
public function LetterButton(){
score_submit_panel = (parent as ScoreSubmitPanel);
letter_text = name;
letter = (getChildByName("_letter") as TextField);
addEventListener(Event.ADDED_TO_STAGE, init);
}
override protected function updateGraphic():void{
if (over){
letter.textColor = over_col;
} else {
letter.textColor = up_col;
};
}
private function init(_arg1:Event):void{
letter.text = letter_text;
_arg1.target.removeEventListener(Event.ADDED_TO_STAGE, init);
}
override public function onClick(_arg1:MouseEvent):void{
score_submit_panel.addLetter(letter_text);
}
}
}//package com.nitrome.highscore
Section 78
//ScoreSubmitPanel (com.nitrome.highscore.ScoreSubmitPanel)
package com.nitrome.highscore {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import com.nitrome.game.*;
import flash.ui.*;
import flash.net.*;
public class ScoreSubmitPanel extends MovieClip {
private const MAX_LENGTH:Number = 10;
public var D:LetterButton;
public var U:LetterButton;
public var E:LetterButton;
public var V:LetterButton;
public var F:LetterButton;
public var W:LetterButton;
public var X:LetterButton;
public var G:LetterButton;
public var H:LetterButton;
public var Y:LetterButton;
public var loading_black:MovieClip;
public var I:LetterButton;
public var Z:LetterButton;
public var _submit_button:SubmitButton;
public var J:LetterButton;
public var _clear_button:ClearButton;
public var K:LetterButton;
public var L:LetterButton;
public var M:LetterButton;
public var N:LetterButton;
public var O:LetterButton;
public var P:LetterButton;
public var Q:LetterButton;
public var _name_text:TextField;
public var A:LetterButton;
public var R:LetterButton;
public var _score_text:TextField;
public var B:LetterButton;
public var S:LetterButton;
public var C:LetterButton;
public var T:LetterButton;
private var name_text:TextField;
private var score_text:TextField;
private var submit_button:SubmitButton;
private var loading_clip:MovieClip;
private var submit_loader:URLLoader;
private var submit_vars:URLVariables;
private var submit_request:URLRequest;
private var submitted:Boolean;
public function ScoreSubmitPanel(){
if (NitromeGame.isAtURL(NitromeGame.NITROME)){
submit_button = (getChildByName("_submit_button") as SubmitButton);
name_text = (getChildByName("_name_text") as TextField);
score_text = (getChildByName("_score_text") as TextField);
submitted = false;
addEventListener(Event.ADDED_TO_STAGE, init);
} else {
gotoAndStop("hide");
};
}
public function addLetter(_arg1:String):void{
var _local3:String;
var _local2:String = name_text.text;
if (_local2.length < MAX_LENGTH){
_arg1 = _arg1.toUpperCase();
_local3 = (_local2 + _arg1);
name_text.text = _local3;
submit_button.enable();
};
}
public function clearName():void{
submit_button.disable();
name_text.text = "";
}
public function submitScore():void{
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
var _local1:String = name_text.text;
if (_local1 != ""){
submit_loader = new URLLoader();
submit_vars = new URLVariables();
submit_request = new URLRequest(NitromeGame.SUBMIT_URL);
submit_request.method = URLRequestMethod.POST;
submit_request.data = submit_vars;
submit_loader.addEventListener(Event.COMPLETE, submitSuccessful);
submit_loader.addEventListener(IOErrorEvent.IO_ERROR, submitFailed);
submit_vars.data_string = NitromeGame.getScoreData(Score.value, _local1);
submit_vars.time_based = "0";
submit_request.data = submit_vars;
submit_loader.load(submit_request);
} else {
loading_black.gotoAndPlay(2);
};
}
private function init(_arg1:Event):void{
score_text.text = ("YOUR SCORE IS " + Score.value);
trace(score_text.text);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
_arg1.target.removeEventListener(Event.ADDED_TO_STAGE, init);
}
private function keyPressed(_arg1:KeyboardEvent):void{
var _local2:int = _arg1.charCode;
if ((((((_local2 >= 65)) && ((_local2 <= 90)))) || ((((_local2 >= 97)) && ((_local2 <= 122)))))){
addLetter(String.fromCharCode(_local2));
};
if ((((_arg1.keyCode == Keyboard.BACKSPACE)) || ((_arg1.keyCode == Keyboard.DELETE)))){
clearName();
};
}
private function submitSuccessful(_arg1:Event):void{
trace("Score submitted");
loading_black.gotoAndPlay(2);
}
private function submitFailed(_arg1:IOErrorEvent):void{
trace(("Submit score failed: " + _arg1.text));
trace();
loading_black.gotoAndPlay(2);
}
}
}//package com.nitrome.highscore
Section 79
//SubmitButton (com.nitrome.highscore.SubmitButton)
package com.nitrome.highscore {
import flash.events.*;
import com.nitrome.game.*;
public class SubmitButton extends SimpleButton {
private var pressed:Boolean;// = false
private var disabled:Boolean;// = true
private var score_submit_panel:ScoreSubmitPanel;
public function SubmitButton(){
gotoAndStop("_up");
score_submit_panel = (parent as ScoreSubmitPanel);
}
override protected function updateGraphic():void{
if (((!(over)) || (disabled))){
gotoAndStop("_up");
} else {
gotoAndStop("_over");
};
}
public function enable():void{
disabled = false;
useHandCursor = true;
buttonMode = true;
updateGraphic();
}
public function disable():void{
disabled = true;
useHandCursor = false;
buttonMode = false;
updateGraphic();
}
override public function onClick(_arg1:MouseEvent):void{
if (disabled){
gotoAndStop("_up");
} else {
if (!pressed){
score_submit_panel.submitScore();
pressed = true;
};
};
}
}
}//package com.nitrome.highscore
Section 80
//Lock (com.nitrome.util.Lock)
package com.nitrome.util {
import flash.display.*;
import flash.net.*;
public class Lock extends MovieClip {
private static var _url:String;
public function Lock(){
addFrameScript(1, frame2);
}
function frame2(){
stop();
}
public static function to(_arg1:Array, _arg2:Stage, _arg3:String):void{
_url = _arg2.loaderInfo.url;
if (isGood(_arg1) == true){
} else {
_arg2.addChild(new (Lock));
trace("LOCKED");
navigateToURL(new URLRequest(("http://www.nitrome.com/games/" + _arg3)));
};
}
private static function isGood(_arg1:Array):Boolean{
var _local4:String;
var _local5:Array;
var _local6:Array;
var _local7:Array;
var _local8:int;
var _local2:String = _url.split("://")[1];
var _local3:int;
while (_local3 < _arg1.length) {
_local4 = _arg1[_local3];
if (_local4.indexOf("/") != -1){
_local5 = new Array();
if (_local2.indexOf("/") != -1){
_local6 = _local4.split("/");
_local7 = _local2.split("/");
_local8 = 0;
while (_local8 < _local6.length) {
if (!_local7[_local8]){
return (false);
};
if (checkUrls(_local7[_local8], _local6[_local8]) == true){
_local5.push(true);
} else {
_local5.push(false);
};
_local8++;
};
if (_local5.indexOf(false) == -1){
return (true);
};
} else {
return (false);
};
} else {
if (checkUrls(_local2.split("/")[0], _local4) == true){
return (true);
};
};
_local3++;
};
return (false);
}
public static function checkUrls(_arg1:String, _arg2:String):Boolean{
var _local3:Array;
var _local4:Array;
var _local5:Array;
var _local6:int;
trace("checking chunks");
if (_arg1 == _arg2){
return (true);
};
if (((((!((_arg2.indexOf(".") == -1))) && (!((_arg1.indexOf(".") == -1))))) && ((_arg2.split(".").length == _arg1.split(".").length)))){
_local3 = new Array();
_local4 = _arg2.split(".");
_local5 = _arg1.split(".");
_local6 = 0;
while (_local6 < _local4.length) {
if ((((_local5[_local6] == _local4[_local6])) || ((_local4[_local6] == "*")))){
_local3.push(true);
} else {
_local3.push(false);
};
_local6++;
};
if (_local3.indexOf(false) == -1){
return (true);
};
return (false);
} else {
if (_arg2 == "*"){
return (true);
};
};
return (!NULL!);
}
private static function isAtURL(... _args):Boolean{
var _local3:Array;
var _local4:int;
var _local5:String;
trace("Locked to:", _args);
var _local2:int;
while (_local2 < _args.length) {
_local3 = _args[_local2];
_local4 = 0;
while (_local4 < _local3.length) {
_local5 = _local3[_local4];
trace(_local5);
if (compareURLTo(_local5, _url)){
return (true);
};
_local4++;
};
_local2++;
};
return (false);
}
private static function compareURLTo(_arg1:String, _arg2:String):Boolean{
var _local4:int;
var _local5:String;
var _local10:Number;
var _local11:String;
var _local12:String;
var _local3:Array = ["http://", "https://"];
_local4 = 0;
while (_local4 < _local3.length) {
if (_arg2.substr(0, _local3[_local4].length) == _local3[_local4]){
_local5 = _local3[_local4];
break;
};
_local4++;
};
if (_local4 == _local3.length){
return (false);
};
var _local6:String = _arg2.substr(_local5.length);
_arg1 = _arg1.substr(_local5.length);
while (_local6.charAt(0) == "/") {
_local6 = _local6.substr(1);
};
while (_arg1.charAt(0) == "/") {
_arg1 = _arg1.substr(1);
};
var _local7:Array = _local6.split("/");
var _local8:Array = _arg1.split("/");
trace(_local7, _local8);
var _local9:Number = 0;
while (_local9 < _local8.length) {
if (_local8[_local9].length < 1){
} else {
_local10 = _local8[_local9].indexOf("*");
if (_local10 != -1){
_local11 = _local8[_local9].substr(0, _local10);
_local12 = _local8[_local9].substr((_local10 + 1));
if (_local7[_local9].substr(0, _local11.length) != _local11){
return (false);
};
if (_local7[_local9].substr(-(_local12.length)) != _local12){
return (false);
};
} else {
if (_local8[_local9] != _local7[_local9]){
return (false);
};
};
};
_local9++;
};
return (true);
}
}
}//package com.nitrome.util
Section 81
//background_319 (fatcat_fla.background_319)
package fatcat_fla {
import flash.display.*;
public dynamic class background_319 extends MovieClip {
public var top:MovieClip;
public var bottom:MovieClip;
public function background_319(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 82
//beam_sound_holder_295 (fatcat_fla.beam_sound_holder_295)
package fatcat_fla {
import flash.display.*;
public dynamic class beam_sound_holder_295 extends MovieClip {
public function beam_sound_holder_295(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package fatcat_fla
Section 83
//big_bang_293 (fatcat_fla.big_bang_293)
package fatcat_fla {
import flash.display.*;
public dynamic class big_bang_293 extends MovieClip {
public function big_bang_293(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 84
//big_shot_274 (fatcat_fla.big_shot_274)
package fatcat_fla {
import flash.display.*;
public dynamic class big_shot_274 extends MovieClip {
public function big_shot_274(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 85
//bonusbars_334 (fatcat_fla.bonusbars_334)
package fatcat_fla {
import flash.display.*;
public dynamic class bonusbars_334 extends MovieClip {
public function bonusbars_334(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 86
//boss_alarm_275 (fatcat_fla.boss_alarm_275)
package fatcat_fla {
import flash.display.*;
public dynamic class boss_alarm_275 extends MovieClip {
public function boss_alarm_275(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 87
//burp_276 (fatcat_fla.burp_276)
package fatcat_fla {
import flash.display.*;
public dynamic class burp_276 extends MovieClip {
public function burp_276(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 88
//cake_bar_anim_330 (fatcat_fla.cake_bar_anim_330)
package fatcat_fla {
import flash.display.*;
public dynamic class cake_bar_anim_330 extends MovieClip {
public function cake_bar_anim_330(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 89
//cake1_277 (fatcat_fla.cake1_277)
package fatcat_fla {
import flash.display.*;
public dynamic class cake1_277 extends MovieClip {
public function cake1_277(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 90
//cake2_278 (fatcat_fla.cake2_278)
package fatcat_fla {
import flash.display.*;
public dynamic class cake2_278 extends MovieClip {
public function cake2_278(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 91
//cake3_279 (fatcat_fla.cake3_279)
package fatcat_fla {
import flash.display.*;
public dynamic class cake3_279 extends MovieClip {
public function cake3_279(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 92
//cash_280 (fatcat_fla.cash_280)
package fatcat_fla {
import flash.display.*;
public dynamic class cash_280 extends MovieClip {
public function cash_280(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 93
//catdeathspin_19 (fatcat_fla.catdeathspin_19)
package fatcat_fla {
import flash.display.*;
public dynamic class catdeathspin_19 extends MovieClip {
public function catdeathspin_19(){
addFrameScript(34, frame35);
}
function frame35(){
gotoAndPlay(1);
}
}
}//package fatcat_fla
Section 94
//death_281 (fatcat_fla.death_281)
package fatcat_fla {
import flash.display.*;
public dynamic class death_281 extends MovieClip {
public function death_281(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 95
//endanim_316 (fatcat_fla.endanim_316)
package fatcat_fla {
import flash.display.*;
public dynamic class endanim_316 extends MovieClip {
public function endanim_316(){
addFrameScript(373, frame374);
}
function frame374(){
stop();
}
}
}//package fatcat_fla
Section 96
//game_music_holder_272 (fatcat_fla.game_music_holder_272)
package fatcat_fla {
import flash.display.*;
public dynamic class game_music_holder_272 extends MovieClip {
public function game_music_holder_272(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package fatcat_fla
Section 97
//health_panel_327 (fatcat_fla.health_panel_327)
package fatcat_fla {
import flash.display.*;
public dynamic class health_panel_327 extends MovieClip {
public function health_panel_327(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 98
//help_movie_88 (fatcat_fla.help_movie_88)
package fatcat_fla {
import flash.display.*;
public dynamic class help_movie_88 extends MovieClip {
public function help_movie_88(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 99
//helpbacking_87 (fatcat_fla.helpbacking_87)
package fatcat_fla {
import flash.display.*;
public dynamic class helpbacking_87 extends MovieClip {
public function helpbacking_87(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 100
//homing_shot_282 (fatcat_fla.homing_shot_282)
package fatcat_fla {
import flash.display.*;
public dynamic class homing_shot_282 extends MovieClip {
public function homing_shot_282(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 101
//IDNetsmalllogo_310 (fatcat_fla.IDNetsmalllogo_310)
package fatcat_fla {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public dynamic class IDNetsmalllogo_310 extends MovieClip {
public function IDNetsmalllogo_310(){
addFrameScript(0, frame1);
}
public function onC(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.id.net"), "_blank");
}
function frame1(){
this.addEventListener(MouseEvent.CLICK, onC);
this.buttonMode = true;
}
}
}//package fatcat_fla
Section 102
//laser_start_283 (fatcat_fla.laser_start_283)
package fatcat_fla {
import flash.display.*;
public dynamic class laser_start_283 extends MovieClip {
public function laser_start_283(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 103
//laser_switch_292 (fatcat_fla.laser_switch_292)
package fatcat_fla {
import flash.display.*;
public dynamic class laser_switch_292 extends MovieClip {
public function laser_switch_292(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 104
//level_complete_284 (fatcat_fla.level_complete_284)
package fatcat_fla {
import flash.display.*;
public dynamic class level_complete_284 extends MovieClip {
public function level_complete_284(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 105
//linkydink_10 (fatcat_fla.linkydink_10)
package fatcat_fla {
import flash.display.*;
public dynamic class linkydink_10 extends MovieClip {
public function linkydink_10(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 106
//loading_black_118 (fatcat_fla.loading_black_118)
package fatcat_fla {
import flash.display.*;
public dynamic class loading_black_118 extends MovieClip {
public var loading_text:MovieClip;
public function loading_black_118(){
addFrameScript(0, frame1, 9, frame10);
}
function frame1(){
stop();
}
function frame10(){
NitromeGame.timeline.gotoAndStop("view_scores");
}
}
}//package fatcat_fla
Section 107
//loading_screen_336 (fatcat_fla.loading_screen_336)
package fatcat_fla {
import flash.display.*;
import com.nitrome.game.*;
public dynamic class loading_screen_336 extends MovieClip {
public var tt:Transition;
public function loading_screen_336(){
addFrameScript(0, frame1, 9, frame10);
}
function frame1(){
stop();
}
function frame10(){
this.tt.doTween("clear");
}
}
}//package fatcat_fla
Section 108
//magnet_285 (fatcat_fla.magnet_285)
package fatcat_fla {
import flash.display.*;
public dynamic class magnet_285 extends MovieClip {
public function magnet_285(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 109
//MainTimeline (fatcat_fla.MainTimeline)
package fatcat_fla {
import flash.display.*;
import flash.events.*;
import com.nitrome.engine_specific.*;
import flash.geom.*;
import flash.text.*;
import com.nitrome.game.*;
import flash.media.*;
import com.nitrome.util.*;
import flash.ui.*;
import flash.net.*;
import flash.filters.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.system.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var msg_panel:MsgPanel;
public var pause_game_button:PauseButton;
public var background:MovieClip;
public var level_12:LevelChooserButton;
public var level_4:LevelChooserButton;
public var skip_story_button:SkipStoryButton;
public var level_13:LevelChooserButton;
public var level_5:LevelChooserButton;
public var bonus_meter:MovieClip;
public var level_10:LevelChooserButton;
public var level_6:LevelChooserButton;
public var level_20:LevelChooserButton;
public var level_11:LevelChooserButton;
public var level_7:LevelChooserButton;
public var popup_holder:PopUpHolder;
public var level_21:LevelChooserButton;
public var level_8:LevelChooserButton;
public var music_toggle:MusicToggle;
public var loading_clip:MovieClip;
public var text_panel:MovieClip;
public var score_panel:MovieClip;
public var shaker:MovieClip;
public var level_9:LevelChooserButton;
public var cake_meter:MovieClip;
public var chain_panel:MovieClip;
public var tt:Transition;
public var curves_clip:MovieClip;
public var level_18:LevelChooserButton;
public var level_19:LevelChooserButton;
public var fx_toggle:FxToggle;
public var health_panel:MovieClip;
public var encounter_num:TextField;
public var bullet_num:TextField;
public var level_16:LevelChooserButton;
public var info:TextField;
public var level_17:LevelChooserButton;
public var level_1:LevelChooserButton;
public var score_text:TextField;
public var level_14:LevelChooserButton;
public var level_2:LevelChooserButton;
public var level_15:LevelChooserButton;
public var level_3:LevelChooserButton;
public var cm:ContextMenu;
public var sound_manager:SoundManager;
public var game:Game;
public function MainTimeline(){
addFrameScript(2, frame3, 10, frame11, 20, frame21, 30, frame31, 40, frame41, 50, frame51, 60, frame61, 70, frame71, 80, frame81, 90, frame91, 100, frame101, 110, frame111, 121, frame122);
}
function frame3(){
stop();
}
function frame11(){
stop();
NitromeGame.transition = tt;
Key.init(stage);
Score.init();
NitromeGame.init(this, "fatcat", "cheez_", 21);
cm = new ContextMenu();
cm.hideBuiltInItems();
this.contextMenu = cm;
sound_manager = new SoundManager();
sound_manager.x = -50;
sound_manager.y = -50;
addChild(sound_manager);
}
function frame21(){
Lock.to(["pog.com", "gamepost.com", "dollmania.com", "4fun.com", "y8.com", "*.pog.com", "*.gamepost.com", "*.dollmania.com", "*.4fun.com", "*.y8.com"], stage, NitromeGame.game_id);
NitromeGame.sound_manager.playMusic(SoundManager.MENU);
NitromeGame.timeline.gotoAndStop("title_screen");
stop();
}
function frame31(){
stop();
}
function frame41(){
stop();
}
function frame51(){
stop();
}
function frame61(){
stop();
}
function frame71(){
stop();
}
function frame81(){
stop();
}
function frame91(){
score_text.text = ("your score is " + Score.value);
stop();
}
function frame101(){
stage.quality = StageQuality.LOW;
game = new Game(shaker.canvas, shaker);
stop();
}
function frame111(){
game.clearAll();
game = null;
loading_clip.gotoAndStop("loading");
gotoAndStop("game");
}
function frame122(){
stop();
}
}
}//package fatcat_fla
Section 110
//mcAnimation_297 (fatcat_fla.mcAnimation_297)
package fatcat_fla {
import flash.display.*;
public dynamic class mcAnimation_297 extends MovieClip {
public function mcAnimation_297(){
addFrameScript(135, frame136);
}
function frame136(){
NitromeGame.timeline.gotoAndStop("nitrome");
parent.removeChild(this);
stop();
}
}
}//package fatcat_fla
Section 111
//medium_bang_286 (fatcat_fla.medium_bang_286)
package fatcat_fla {
import flash.display.*;
public dynamic class medium_bang_286 extends MovieClip {
public function medium_bang_286(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 112
//menu_music_holder_273 (fatcat_fla.menu_music_holder_273)
package fatcat_fla {
import flash.display.*;
public dynamic class menu_music_holder_273 extends MovieClip {
public function menu_music_holder_273(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package fatcat_fla
Section 113
//napalm_287 (fatcat_fla.napalm_287)
package fatcat_fla {
import flash.display.*;
public dynamic class napalm_287 extends MovieClip {
public function napalm_287(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 114
//nitrome_intro_298 (fatcat_fla.nitrome_intro_298)
package fatcat_fla {
import flash.display.*;
public dynamic class nitrome_intro_298 extends MovieClip {
public function nitrome_intro_298(){
addFrameScript(159, frame160);
}
function frame160(){
NitromeGame.transition.doTween("pre_title_screen");
stop();
}
}
}//package fatcat_fla
Section 115
//ow_294 (fatcat_fla.ow_294)
package fatcat_fla {
import flash.display.*;
public dynamic class ow_294 extends MovieClip {
public function ow_294(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 116
//pausebacking_86 (fatcat_fla.pausebacking_86)
package fatcat_fla {
import flash.display.*;
public dynamic class pausebacking_86 extends MovieClip {
public function pausebacking_86(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 117
//player_shot_288 (fatcat_fla.player_shot_288)
package fatcat_fla {
import flash.display.*;
public dynamic class player_shot_288 extends MovieClip {
public function player_shot_288(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 118
//popup_clip_82 (fatcat_fla.popup_clip_82)
package fatcat_fla {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import com.nitrome.game.*;
import flash.media.*;
import flash.ui.*;
import flash.net.*;
import flash.filters.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.system.*;
import flash.xml.*;
public dynamic class popup_clip_82 extends MovieClip {
public var try_again_button:TryAgainButton;
public var continue_end_button:ContinueEndButton;
public var ticker_score:ScoreTicker;
public var back:MovieClip;
public var next_level_button:NextLevelButton;
public var step:int;
public function popup_clip_82(){
addFrameScript(0, frame1, 1, frame2, 15, frame16, 29, frame30, 45, frame46, 60, frame61);
}
function frame1(){
stop();
}
function frame2(){
back.gotoAndStop(NitromeGame.timeline.background.currentLabel);
stop();
}
function frame16(){
step = (Score.value / 100);
if (step < 10){
step = 10;
};
ticker_score.startCount(Score.value, step);
back.gotoAndStop(NitromeGame.timeline.background.currentLabel);
stop();
}
function frame30(){
back.gotoAndStop(NitromeGame.timeline.background.currentLabel);
stop();
}
function frame46(){
back.gotoAndStop(NitromeGame.timeline.background.currentLabel);
stop();
}
function frame61(){
back.gotoAndStop(NitromeGame.timeline.background.currentLabel);
stop();
}
}
}//package fatcat_fla
Section 119
//popupbacking_84 (fatcat_fla.popupbacking_84)
package fatcat_fla {
import flash.display.*;
public dynamic class popupbacking_84 extends MovieClip {
public function popupbacking_84(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 120
//score_counter_clip_85 (fatcat_fla.score_counter_clip_85)
package fatcat_fla {
import flash.display.*;
import com.nitrome.game.*;
public dynamic class score_counter_clip_85 extends MovieClip {
public var ticker_level:ScoreTicker;
public var ticker_score:ScoreTicker;
public var step:int;
public function score_counter_clip_85(){
addFrameScript(19, frame20);
}
function frame20(){
step = (Score.value / 100);
if (step < 10){
step = 10;
};
ticker_level.setOnFinish("ticker_score", Score.value, step);
step = (NitromeGame.level_score / 100);
if (step < 10){
step = 10;
};
ticker_level.startCount(NitromeGame.level_score, step);
stop();
}
}
}//package fatcat_fla
Section 121
//shield_289 (fatcat_fla.shield_289)
package fatcat_fla {
import flash.display.*;
public dynamic class shield_289 extends MovieClip {
public function shield_289(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 122
//small_bang_290 (fatcat_fla.small_bang_290)
package fatcat_fla {
import flash.display.*;
public dynamic class small_bang_290 extends MovieClip {
public function small_bang_290(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 123
//small_shot_291 (fatcat_fla.small_shot_291)
package fatcat_fla {
import flash.display.*;
public dynamic class small_shot_291 extends MovieClip {
public function small_shot_291(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package fatcat_fla
Section 124
//text_panel_325 (fatcat_fla.text_panel_325)
package fatcat_fla {
import flash.display.*;
public dynamic class text_panel_325 extends MovieClip {
public var panel:MovieClip;
public function text_panel_325(){
addFrameScript(0, frame1, 14, frame15);
}
function frame1(){
stop();
}
function frame15(){
stop();
}
}
}//package fatcat_fla
Section 125
//Y8Click_8 (fatcat_fla.Y8Click_8)
package fatcat_fla {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public dynamic class Y8Click_8 extends MovieClip {
public function Y8Click_8(){
addFrameScript(0, frame1);
}
public function onC(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.y8.com"), "_blank");
}
function frame1(){
this.addEventListener(MouseEvent.CLICK, onC);
this.buttonMode = true;
}
}
}//package fatcat_fla
Section 126
//Y8Preloaderas3_2 (fatcat_fla.Y8Preloaderas3_2)
package fatcat_fla {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import flash.media.*;
import flash.ui.*;
import flash.net.*;
import flash.filters.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.system.*;
import flash.xml.*;
public dynamic class Y8Preloaderas3_2 extends MovieClip {
public var ad_loading_text:MovieClip;
public var ad_loading_bar:MovieClip;
public function Y8Preloaderas3_2(){
addFrameScript(0, frame1);
}
public function loop(_arg1:Event):void{
var _local2:int = root.stage.loaderInfo.bytesTotal;
var _local3:int = root.stage.loaderInfo.bytesLoaded;
var _local4:int = Math.round(((_local3 / _local2) * 100));
if (_local4 >= 100){
this.removeEventListener(Event.ENTER_FRAME, loop);
MovieClip(root).gotoAndStop("nitrome");
} else {
ad_loading_bar.ad_bar.width = ((530 * _local4) / 100);
};
}
function frame1(){
this.addEventListener(Event.ENTER_FRAME, loop);
}
}
}//package fatcat_fla
Section 127
//Y8smalllogo_309 (fatcat_fla.Y8smalllogo_309)
package fatcat_fla {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public dynamic class Y8smalllogo_309 extends MovieClip {
public function Y8smalllogo_309(){
addFrameScript(0, frame1);
}
public function onC(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.y8.com"), "_blank");
}
function frame1(){
this.addEventListener(MouseEvent.CLICK, onC);
this.buttonMode = true;
}
}
}//package fatcat_fla
Section 128
//y8symbol2_7 (fatcat_fla.y8symbol2_7)
package fatcat_fla {
import flash.display.*;
public dynamic class y8symbol2_7 extends MovieClip {
public function y8symbol2_7(){
addFrameScript(134, frame135);
}
function frame135(){
stop();
}
}
}//package fatcat_fla
Section 129
//BeamBlastMC (BeamBlastMC)
package {
import flash.display.*;
public dynamic class BeamBlastMC extends MovieClip {
}
}//package
Section 130
//BeamHaloMC (BeamHaloMC)
package {
import flash.display.*;
public dynamic class BeamHaloMC extends Sprite {
}
}//package
Section 131
//BeamHitMC (BeamHitMC)
package {
import flash.display.*;
public dynamic class BeamHitMC extends MovieClip {
}
}//package
Section 132
//BeamMC (BeamMC)
package {
import flash.display.*;
public dynamic class BeamMC extends MovieClip {
public function BeamMC(){
addFrameScript(19, frame20);
}
function frame20(){
gotoAndPlay(1);
}
}
}//package
Section 133
//BeamSound (BeamSound)
package {
import flash.media.*;
public dynamic class BeamSound extends Sound {
}
}//package
Section 134
//BigBulletHitMC (BigBulletHitMC)
package {
import flash.display.*;
public dynamic class BigBulletHitMC extends MovieClip {
}
}//package
Section 135
//BigBulletMC (BigBulletMC)
package {
import flash.display.*;
public dynamic class BigBulletMC extends MovieClip {
}
}//package
Section 136
//BigFreeTileMC (BigFreeTileMC)
package {
import flash.display.*;
public dynamic class BigFreeTileMC extends MovieClip {
}
}//package
Section 137
//BigHorizTileMC (BigHorizTileMC)
package {
import flash.display.*;
public dynamic class BigHorizTileMC extends MovieClip {
}
}//package
Section 138
//BigStaticTileMC (BigStaticTileMC)
package {
import flash.display.*;
public dynamic class BigStaticTileMC extends MovieClip {
}
}//package
Section 139
//BigVertTileMC (BigVertTileMC)
package {
import flash.display.*;
public dynamic class BigVertTileMC extends MovieClip {
}
}//package
Section 140
//BlockTileMC (BlockTileMC)
package {
import flash.display.*;
public dynamic class BlockTileMC extends MovieClip {
}
}//package
Section 141
//BossBackMC1 (BossBackMC1)
package {
import flash.display.*;
public dynamic class BossBackMC1 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 142
//BossBackMC2 (BossBackMC2)
package {
import flash.display.*;
public dynamic class BossBackMC2 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 143
//BossBackMC3 (BossBackMC3)
package {
import flash.display.*;
public dynamic class BossBackMC3 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 144
//BossMonsterMC1 (BossMonsterMC1)
package {
import flash.display.*;
public dynamic class BossMonsterMC1 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 145
//BossMonsterMC2 (BossMonsterMC2)
package {
import flash.display.*;
public dynamic class BossMonsterMC2 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 146
//BossMonsterMC3 (BossMonsterMC3)
package {
import flash.display.*;
public dynamic class BossMonsterMC3 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 147
//BossMonsterMC4 (BossMonsterMC4)
package {
import flash.display.*;
public dynamic class BossMonsterMC4 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 148
//BossMonsterMC5 (BossMonsterMC5)
package {
import flash.display.*;
public dynamic class BossMonsterMC5 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 149
//BossMonsterMC6 (BossMonsterMC6)
package {
import flash.display.*;
public dynamic class BossMonsterMC6 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 150
//BossMonsterMC7 (BossMonsterMC7)
package {
import flash.display.*;
public dynamic class BossMonsterMC7 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 151
//BreakTileMC1 (BreakTileMC1)
package {
import flash.display.*;
public dynamic class BreakTileMC1 extends MovieClip {
}
}//package
Section 152
//BreakTileMC2 (BreakTileMC2)
package {
import flash.display.*;
public dynamic class BreakTileMC2 extends MovieClip {
}
}//package
Section 153
//BurnMC1 (BurnMC1)
package {
import flash.display.*;
public dynamic class BurnMC1 extends MovieClip {
}
}//package
Section 154
//BurnMC2 (BurnMC2)
package {
import flash.display.*;
public dynamic class BurnMC2 extends MovieClip {
}
}//package
Section 155
//BurnMC3 (BurnMC3)
package {
import flash.display.*;
public dynamic class BurnMC3 extends MovieClip {
}
}//package
Section 156
//BurnMC4 (BurnMC4)
package {
import flash.display.*;
public dynamic class BurnMC4 extends MovieClip {
}
}//package
Section 157
//CakeMC1 (CakeMC1)
package {
import flash.display.*;
public dynamic class CakeMC1 extends MovieClip {
}
}//package
Section 158
//CakeMC2 (CakeMC2)
package {
import flash.display.*;
public dynamic class CakeMC2 extends MovieClip {
}
}//package
Section 159
//CakeMC3 (CakeMC3)
package {
import flash.display.*;
public dynamic class CakeMC3 extends MovieClip {
}
}//package
Section 160
//CakeMC4 (CakeMC4)
package {
import flash.display.*;
public dynamic class CakeMC4 extends MovieClip {
}
}//package
Section 161
//CakeMC5 (CakeMC5)
package {
import flash.display.*;
public dynamic class CakeMC5 extends MovieClip {
}
}//package
Section 162
//CakeMC6 (CakeMC6)
package {
import flash.display.*;
public dynamic class CakeMC6 extends MovieClip {
}
}//package
Section 163
//CakeMC7 (CakeMC7)
package {
import flash.display.*;
public dynamic class CakeMC7 extends MovieClip {
}
}//package
Section 164
//CakeMC8 (CakeMC8)
package {
import flash.display.*;
public dynamic class CakeMC8 extends MovieClip {
}
}//package
Section 165
//CashBulletHitMC (CashBulletHitMC)
package {
import flash.display.*;
public dynamic class CashBulletHitMC extends MovieClip {
}
}//package
Section 166
//CashBulletMC (CashBulletMC)
package {
import flash.display.*;
public dynamic class CashBulletMC extends MovieClip {
}
}//package
Section 167
//CatDeathMC (CatDeathMC)
package {
import flash.display.*;
public dynamic class CatDeathMC extends MovieClip {
public function CatDeathMC(){
addFrameScript(40, frame41);
}
function frame41(){
stop();
}
}
}//package
Section 168
//ClearButton (ClearButton)
package {
import com.nitrome.highscore.*;
public dynamic class ClearButton extends ClearButton {
public function ClearButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 169
//DropShipMC (DropShipMC)
package {
import flash.display.*;
public dynamic class DropShipMC extends MovieClip {
public var player:MovieClip;
}
}//package
Section 170
//FinishMC (FinishMC)
package {
import flash.display.*;
public dynamic class FinishMC extends MovieClip {
}
}//package
Section 171
//FreeTileMC (FreeTileMC)
package {
import flash.display.*;
import flash.text.*;
public dynamic class FreeTileMC extends MovieClip {
public var info:TextField;
}
}//package
Section 172
//FrontLaserHitMC (FrontLaserHitMC)
package {
import flash.display.*;
public dynamic class FrontLaserHitMC extends MovieClip {
}
}//package
Section 173
//FrontLazerData (FrontLazerData)
package {
import flash.display.*;
public dynamic class FrontLazerData extends BitmapData {
public function FrontLazerData(_arg1:int=22, _arg2:int=32){
super(_arg1, _arg2);
}
}
}//package
Section 174
//FrontLazerData2 (FrontLazerData2)
package {
import flash.display.*;
public dynamic class FrontLazerData2 extends BitmapData {
public function FrontLazerData2(_arg1:int=22, _arg2:int=32){
super(_arg1, _arg2);
}
}
}//package
Section 175
//FrontTileMC1 (FrontTileMC1)
package {
import flash.display.*;
public dynamic class FrontTileMC1 extends Sprite {
}
}//package
Section 176
//FrontTileMC10 (FrontTileMC10)
package {
import flash.display.*;
public dynamic class FrontTileMC10 extends Sprite {
}
}//package
Section 177
//FrontTileMC11 (FrontTileMC11)
package {
import flash.display.*;
public dynamic class FrontTileMC11 extends Sprite {
}
}//package
Section 178
//FrontTileMC12 (FrontTileMC12)
package {
import flash.display.*;
public dynamic class FrontTileMC12 extends Sprite {
}
}//package
Section 179
//FrontTileMC13 (FrontTileMC13)
package {
import flash.display.*;
public dynamic class FrontTileMC13 extends Sprite {
}
}//package
Section 180
//FrontTileMC14 (FrontTileMC14)
package {
import flash.display.*;
public dynamic class FrontTileMC14 extends Sprite {
}
}//package
Section 181
//FrontTileMC15 (FrontTileMC15)
package {
import flash.display.*;
public dynamic class FrontTileMC15 extends Sprite {
}
}//package
Section 182
//FrontTileMC2 (FrontTileMC2)
package {
import flash.display.*;
public dynamic class FrontTileMC2 extends Sprite {
}
}//package
Section 183
//FrontTileMC3 (FrontTileMC3)
package {
import flash.display.*;
public dynamic class FrontTileMC3 extends Sprite {
}
}//package
Section 184
//FrontTileMC4 (FrontTileMC4)
package {
import flash.display.*;
public dynamic class FrontTileMC4 extends Sprite {
}
}//package
Section 185
//FrontTileMC5 (FrontTileMC5)
package {
import flash.display.*;
public dynamic class FrontTileMC5 extends Sprite {
}
}//package
Section 186
//FrontTileMC6 (FrontTileMC6)
package {
import flash.display.*;
public dynamic class FrontTileMC6 extends Sprite {
}
}//package
Section 187
//FrontTileMC7 (FrontTileMC7)
package {
import flash.display.*;
public dynamic class FrontTileMC7 extends Sprite {
}
}//package
Section 188
//FrontTileMC8 (FrontTileMC8)
package {
import flash.display.*;
public dynamic class FrontTileMC8 extends Sprite {
}
}//package
Section 189
//FrontTileMC9 (FrontTileMC9)
package {
import flash.display.*;
public dynamic class FrontTileMC9 extends Sprite {
}
}//package
Section 190
//Game (Game)
package {
import com.nitrome.engine.*;
import flash.display.*;
import flash.events.*;
import com.nitrome.engine_specific.*;
import flash.geom.*;
import flash.text.*;
import com.nitrome.game.*;
import flash.ui.*;
import flash.filters.*;
public class Game {
public var canvas:Sprite;
public var player:Player;
public var probe:Probe;
public var scroller:Scroller;
public var player_holder:Sprite;
public var tile_holder:Sprite;
public var tile_front_holder:Sprite;
public var non_monster_holder:Sprite;
public var monster_holder:Sprite;
public var effect_holder:Sprite;
public var cake_holder:Sprite;
public var debug:Graphics;
public var debug_stay:Graphics;
public var shaker:Sprite;
public var drag_holder:Sprite;
public var laser_holder:Sprite;
public var tile_top_holder:Sprite;
public var info:Sprite;
public var info_font:Font;
public var drop_ship_holder:Sprite;
public var small_green_bullet_bitmap:BitmapSprite;
public var small_red_bullet_bitmap:BitmapSprite;
public var small_blue_bullet_bitmap:BitmapSprite;
public var big_bullet_bitmap:BitmapSprite;
public var homing_bullet_bitmap:BitmapSprite;
public var player_bullet_bitmap:BitmapSprite;
public var napalm_bitmap1:BitmapSprite;
public var napalm_bitmap2:BitmapSprite;
public var magnet_bullet_bitmap:BitmapSprite;
public var cash_bullet_bitmap:BitmapSprite;
public var small_green_bullet_hit_bitmap:BitmapSprite;
public var small_red_bullet_hit_bitmap:BitmapSprite;
public var small_blue_bullet_hit_bitmap:BitmapSprite;
public var big_bullet_hit_bitmap:BitmapSprite;
public var homing_bullet_hit_bitmap:BitmapSprite;
public var player_bullet_hit_bitmap1:BitmapSprite;
public var player_bullet_hit_bitmap2:BitmapSprite;
public var player_bullet_hit_bitmap3:BitmapSprite;
public var magnet_bullet_hit_bitmap:BitmapSprite;
public var cash_bullet_hit_bitmap:BitmapSprite;
public var burn_bitmap1:BitmapSprite;
public var burn_bitmap2:BitmapSprite;
public var burn_bitmap3:BitmapSprite;
public var burn_bitmap4:BitmapSprite;
public var small_bang_bitmap:BitmapSprite;
public var medium_bang_bitmap:BitmapSprite;
public var large_bang_bitmap:BitmapSprite;
public var side_lazer_data:BitmapData;
public var front_lazer_data:BitmapData;
public var side_lazer_data2:BitmapData;
public var front_lazer_data2:BitmapData;
public var screendata:BitmapData;
public var screenfxdata:BitmapData;
public var screen:Bitmap;
public var screenfx:Bitmap;
public var spritedata:BitmapData;
public var screenrect:Rectangle;
public var bulletframes:Array;
private var p:Point;
private var i:int;
private var j:int;
public var start_x:int;
public var start_y:int;
public var start_msg:String;
public var shake_array:Array;
public var block_map:Array;
public var encounters:Array;
public var bullets:Array;
public var player_bullets:Array;
public var blocks_in_play:Array;
public var tile_map:Array;
public var tiles:Array;
public var lasers:Array;
public var cakes:Array;
public var fx:Array;
public var smokes:Array;
public var state:int;
public var god_mode:Boolean;
public var game_paused:Boolean;
public var mouse_pressed:Boolean;
public var show_info:Boolean;
public var frame_count:int;
public var shake_count:int;
public var cake_count:int;
public var completed:Boolean;
public var right_pressed:Boolean;
public var level_scroll_speed:Number;
public var tile_width:int;
public var tile_height:int;
public var tile_grid_mouse_x:int;
public var tile_grid_mouse_y:int;
public var grid_mouse_x:int;
public var grid_mouse_y:int;
public var player_bullet_hit_frame:int;// = 1
public var pause_scroll:int;
public var smoke_angle:int;// = 0
public var boss_count:int;
public var boss_bang_zone:Rect;
public var chain:HiddenInt;
public var last_killed:HiddenInt;
public var enemy:Monster;
public var finish_line:Number;
public var big_shot_count:int;// = 0
public var small_shot_count:int;// = 0
public var homing_shot_count:int;// = 0
public var player_shot_count:int;// = 0
public var small_bang_count:int;// = 0
public var medium_bang_count:int;// = 0
public var big_bang_count:int;// = 0
public var probe_soak_count:int;// = 0
public static const width:int = 275;
public static const height:int = 275;
public static const scale:int = 12;
public static const SCALE:Number = 0.0833333333333333;
public static const BULLET_DEATH_RANGE:int = 50;
public static const PLAYER_BULLET_DEATH_RANGE:int = 32;
public static const IN_PLAY:int = 2;
public static const EMPTY:int = 1;
public static const PROBE_SOAK_LIMIT:int = 10000;
public static const SKIN_ID:RegExp = /(?<=I) \d+/;
public static const SKIN_ID_REPLACE:RegExp = /I \d+/;
public static const HEALTH_ID:RegExp = /(?<=H) \d+/;
public static const HEALTH_ID_REPLACE:RegExp = /H \d+/;
public static const PROPERTY_ID:RegExp = /(?<=P) \d+/;
public static const PROPERTY_ID_REPLACE:RegExp = /P \d+/;
public static const FORMAT_INSTRUCTIONS:RegExp = /\s*(\d+|\D{1})\s*/g;
public static const TURRET_COMMANDS:RegExp = /(?<=T \( )[^\(\)]*(?= \))/g;
public static const TURRET_COMMANDS_REPLACE:RegExp = /T \([^\(\)]*\)/g;
public static const SPAWN_COMMANDS:RegExp = /(?<=S \( )[^\(\)]*(?= \))/;
public static const SPAWN_COMMANDS_REPLACE:RegExp = /S \([^\(\)]*\)/;
public static const ANDS:RegExp = /&/;
public static const TRIM_WHITESPACE:RegExp = /^[ \t]+|[ \t]+$/g;
public static const WAIT_COMMAND_CHECK:RegExp = /W\s*\d+/;
public static const BIG_SHOT_DELAY:int = 6;
public static const SMALL_SHOT_DELAY:int = 6;
public static const HOMING_SHOT_DELAY:int = 6;
public static const PLAYER_SHOT_DELAY:int = 6;
public static const BIG_BANG_DELAY:int = 8;
public static const MEDIUM_BANG_DELAY:int = 8;
public static const SMALL_BANG_DELAY:int = 8;
public function Game(_arg1:Sprite, _arg2:Sprite){
shake_array = new Array(0, 4, -4, 3, -3, 2, -2, 1, -1);
super();
this.canvas = _arg1;
_arg1.scaleX = 2;
_arg1.scaleY = 2;
this.shaker = _arg2;
_arg1.addEventListener(Event.ENTER_FRAME, transistionWait, false, 0, true);
}
public function transistionWait(_arg1:Event):void{
if (!NitromeGame.timeline.tt.tweening){
canvas.removeEventListener(Event.ENTER_FRAME, transistionWait);
init();
};
}
public function init():void{
info_font = new InfoFont();
tile_holder = new Sprite();
tile_top_holder = new Sprite();
tile_front_holder = new Sprite();
monster_holder = new Sprite();
non_monster_holder = new Sprite();
player_holder = new Sprite();
effect_holder = new Sprite();
drag_holder = new Sprite();
cake_holder = new Sprite();
laser_holder = new Sprite();
drop_ship_holder = new Sprite();
info = new Sprite();
var _local1:Shape = new Shape();
var _local2:Shape = new Shape();
screendata = new BitmapData(width, height, true, 4294967295);
screenfxdata = new BitmapData(width, height, true, 4294967295);
screen = new Bitmap(screendata);
screenfx = new Bitmap(screenfxdata);
screenrect = new Rectangle(0, 0, width, height);
debug = _local1.graphics;
debug_stay = _local2.graphics;
debug.lineStyle(2, 0xFF00);
debug_stay.lineStyle(1, 0xFF0000);
canvas.addChild(tile_front_holder);
canvas.addChild(non_monster_holder);
canvas.addChild(tile_holder);
canvas.addChild(screen);
canvas.addChild(laser_holder);
canvas.addChild(tile_top_holder);
canvas.addChild(monster_holder);
canvas.addChild(cake_holder);
canvas.addChild(drag_holder);
canvas.addChild(drop_ship_holder);
canvas.addChild(player_holder);
canvas.addChild(effect_holder);
canvas.addChild(screenfx);
small_green_bullet_bitmap = new BitmapSprite(new SmallBulletMC1());
small_red_bullet_bitmap = new BitmapSprite(new SmallBulletMC2());
small_blue_bullet_bitmap = new BitmapSprite(new SmallBulletMC3());
big_bullet_bitmap = new BitmapSprite(new BigBulletMC());
homing_bullet_bitmap = new BitmapSprite(new HomingBulletMC());
player_bullet_bitmap = new BitmapSprite(new PlayerBulletMC());
napalm_bitmap1 = new BitmapSprite(new NapalmMC1());
napalm_bitmap2 = new BitmapSprite(new NapalmMC2());
magnet_bullet_bitmap = new BitmapSprite(new MagnetBulletMC());
cash_bullet_bitmap = new BitmapSprite(new CashBulletMC());
small_green_bullet_hit_bitmap = new BitmapSprite(new SmallBulletHitMC1());
small_red_bullet_hit_bitmap = new BitmapSprite(new SmallBulletHitMC2());
small_blue_bullet_hit_bitmap = new BitmapSprite(new SmallBulletHitMC3());
big_bullet_hit_bitmap = new BitmapSprite(new BigBulletHitMC());
homing_bullet_hit_bitmap = new BitmapSprite(new HomingBulletHitMC());
player_bullet_hit_bitmap1 = new BitmapSprite(new PlayerBulletHitMC1());
player_bullet_hit_bitmap2 = new BitmapSprite(new PlayerBulletHitMC2());
player_bullet_hit_bitmap3 = new BitmapSprite(new PlayerBulletHitMC3());
magnet_bullet_hit_bitmap = new BitmapSprite(new MagnetBulletHitMC());
cash_bullet_hit_bitmap = new BitmapSprite(new CashBulletHitMC());
burn_bitmap1 = new BitmapSprite(new BurnMC1());
burn_bitmap2 = new BitmapSprite(new BurnMC2());
burn_bitmap3 = new BitmapSprite(new BurnMC3());
burn_bitmap4 = new BitmapSprite(new BurnMC4());
small_bang_bitmap = new BitmapSprite(new SmallBangMC());
medium_bang_bitmap = new BitmapSprite(new MediumBangMC());
large_bang_bitmap = new BitmapSprite(new LargeBangMC());
side_lazer_data = new SideLazerData(32, 24);
front_lazer_data = new FrontLazerData(22, 32);
side_lazer_data2 = new SideLazerData2(32, 24);
front_lazer_data2 = new FrontLazerData2(22, 32);
RayCast.init(this);
encounters = new Array();
bullets = new Array();
tiles = new Array();
lasers = new Array();
player_bullets = new Array();
fx = new Array();
cakes = new Array();
smokes = new Array();
frame_count = 0;
NitromeGame.level_score = 0;
cake_count = 0;
game_paused = false;
god_mode = false;
completed = false;
right_pressed = false;
pause_scroll = 0;
show_info = false;
boss_count = 0;
chain = new HiddenInt(1);
last_killed = new HiddenInt(0);
finish_line = 0;
probe_soak_count = 0;
Mouse.hide();
NitromeGame.timeline.score_panel.score.text = scoreString();
NitromeGame.timeline.chain_panel.alpha = 0;
loadLevel();
}
public function addListeners():void{
canvas.addEventListener(Event.ENTER_FRAME, main, false, 0, true);
Key.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
Key.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
Key.stage.addEventListener(KeyboardEvent.KEY_DOWN, debugKey);
NitromeGame.timeline.cm.addEventListener(ContextMenuEvent.MENU_SELECT, rightClick);
}
public function clearAll():void{
clearListeners();
while (canvas.numChildren > 0) {
canvas.removeChildAt(0);
};
}
public function clearListeners():void{
canvas.removeEventListener(Event.ENTER_FRAME, main);
Key.stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
Key.stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
Key.stage.removeEventListener(KeyboardEvent.KEY_DOWN, debugKey);
NitromeGame.timeline.cm.removeEventListener(ContextMenuEvent.MENU_SELECT, rightClick);
NitromeGame.sound_manager.killLoops();
Key.forceClearKeys();
}
public function reset():void{
game_paused = true;
clearAll();
init();
}
private function initPlayer():void{
var _local1:MovieClip = new PlayerMC();
var _local2:MovieClip = new ProbeMC();
var _local3:MovieClip = new MovieClip();
var _local4:MovieClip = new MovieClip();
_local3.addChild(_local1);
_local4.addChild(_local2);
player_holder.addChild(_local3);
player_holder.addChild(_local4);
player = new Player(_local3, ((scale >> 1) + (start_x * scale)), ((scale >> 1) + (start_y * scale)), this);
probe = new Probe(_local4, player, this);
if (NitromeGame.selected_level != 1){
NitromeGame.timeline.msg_panel.setMsg(start_msg);
};
}
public function main(_arg1:Event):void{
var _local2:Array;
var _local3:*;
debug.clear();
debug.lineStyle(1, 0xFF00);
if (!game_paused){
grid_mouse_x = (probe.mc.x * SCALE);
grid_mouse_y = (probe.mc.y * SCALE);
tile_grid_mouse_x = (probe.mc.x * Tile.TILE_SCALE);
tile_grid_mouse_y = (probe.mc.y * Tile.TILE_SCALE);
if (player.active){
player.main();
};
if (probe.active){
probe.main();
};
updateTiles();
updateLasers();
screendata.fillRect(screenrect, 0xFFFFFF);
screenfxdata.fillRect(screenrect, 0xFFFFFF);
screen.x = (screenfx.x = -((canvas.x * 0.5)));
screen.y = (screenfx.y = -((canvas.y * 0.5)));
if (player.drop_ship){
_local2 = new Array();
_local3 = new BlurFilter(0, player.drop_ship_blur);
screendata.draw(player.back);
screen.filters = [_local3];
};
updateEncounters();
updateBullets();
updateSmokes();
updateFX();
updateShaker();
updateBars();
frame_count++;
};
if (big_shot_count > 0){
big_shot_count--;
};
if (small_shot_count > 0){
small_shot_count--;
};
if (homing_shot_count > 0){
homing_shot_count--;
};
if (player_shot_count > 0){
player_shot_count--;
};
if (small_bang_count > 0){
small_bang_count--;
};
if (medium_bang_count > 0){
medium_bang_count--;
};
if (big_bang_count > 0){
big_bang_count--;
};
NitromeGame.timeline.info.text = "";
NitromeGame.timeline.bullet_num.text = ("BULLETS:" + (bullets.length + player_bullets.length));
NitromeGame.timeline.encounter_num.text = ("OTHER STUFF:" + (((encounters.length + fx.length) + lasers.length) + smokes.length));
}
public function updateInfo():void{
var _local4:Rect;
var _local6:TextField;
while (info.numChildren > 0) {
info.removeChildAt(0);
};
var _local1:Sprite = new Sprite();
info.addChild(_local1);
var _local2:String = info_font.fontName;
var _local3:Graphics = info.graphics;
_local3.clear();
_local3.lineStyle(1, 0xFF00);
var _local5:TextFormat = new TextFormat(_local2, 8, 0xFF00, null, null, null, null, null, TextFormatAlign.CENTER);
i = 0;
while (i < encounters.length) {
if (encounters[i].monster){
_local6 = new TextField();
_local6.embedFonts = true;
_local4 = encounters[i].collision_rect;
_local6.x = _local4.x;
_local6.y = _local4.y;
_local6.width = _local4.width;
_local6.height = _local4.height;
_local6.selectable = false;
_local3.beginFill(0, 0.3);
_local3.drawRect(_local4.x, _local4.y, _local4.width, _local4.height);
_local3.endFill();
_local6.text = ("" + encounters[i].health.value);
_local6.setTextFormat(_local5);
_local1.addChild(_local6);
};
i++;
};
player.debug();
probe.collision_rect.draw(debug);
}
public function bulletBorderDebug():void{
debug.moveTo(((-(canvas.x) * 0.5) - BULLET_DEATH_RANGE), ((-(canvas.y) * 0.5) - BULLET_DEATH_RANGE));
debug.lineTo((((-(canvas.x) * 0.5) + width) + BULLET_DEATH_RANGE), ((-(canvas.y) * 0.5) - BULLET_DEATH_RANGE));
debug.lineTo((((-(canvas.x) * 0.5) + width) + BULLET_DEATH_RANGE), (((-(canvas.y) * 0.5) + height) + BULLET_DEATH_RANGE));
debug.lineTo(((-(canvas.x) * 0.5) - BULLET_DEATH_RANGE), (((-(canvas.y) * 0.5) + height) + BULLET_DEATH_RANGE));
debug.lineTo(((-(canvas.x) * 0.5) - BULLET_DEATH_RANGE), ((-(canvas.y) * 0.5) - BULLET_DEATH_RANGE));
}
public function onScreen(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
return (!((((((((_arg1 < ((-(canvas.x) * 0.5) - _arg3))) || ((_arg2 < ((-(canvas.y) * 0.5) - _arg3))))) || ((_arg1 >= (((-(canvas.x) * 0.5) + width) + _arg3))))) || ((_arg2 >= (((-(canvas.y) * 0.5) + height) + _arg3))))));
}
public function gameOver():void{
NitromeGame.timeline.popup_holder.launchPopUp("game_over");
Mouse.show();
}
public function levelComplete():void{
if (completed){
return;
};
completed = true;
NitromeGame.sound_manager.playSound("level_complete");
if (NitromeGame.selected_level >= NitromeGame.total_levels){
NitromeGame.timeline.popup_holder.launchPopUp("final_level_complete");
} else {
NitromeGame.timeline.popup_holder.launchPopUp("level_complete");
NitromeGame.setLevelUnlocked((NitromeGame.selected_level + 1));
};
Mouse.show();
}
public function addScore(_arg1:int):void{
if (!player.active){
return;
};
NitromeGame.level_score = (NitromeGame.level_score + _arg1);
Score.value = (Score.value + _arg1);
NitromeGame.timeline.score_panel.score.text = scoreString();
}
public function addChain():void{
chain.value++;
NitromeGame.timeline.chain_panel.chain.text = ("chain x " + chain.value);
addScore((100 * chain.value));
NitromeGame.timeline.chain_panel.alpha = 1;
}
public function killChain():void{
if (chain.value > 1){
NitromeGame.timeline.chain_panel.chain.text = "chain broken!";
NitromeGame.timeline.chain_panel.alpha = 1;
};
chain.value = 1;
}
public function textMessage(_arg1:String):void{
NitromeGame.timeline.text_panel.panel.message_text.text = _arg1;
NitromeGame.timeline.text_panel.gotoAndPlay("popup_stay");
}
public function hideTextMessage():void{
NitromeGame.timeline.text_panel.gotoAndPlay("hide");
}
public function updateBars():void{
if (NitromeGame.timeline.chain_panel.alpha > 0){
NitromeGame.timeline.chain_panel.alpha = (NitromeGame.timeline.chain_panel.alpha - 0.01);
};
NitromeGame.timeline.cake_meter.bar_mask.scaleX = player.puke.value;
if (player.puke.value > 0){
NitromeGame.timeline.cake_meter.visible = true;
} else {
NitromeGame.timeline.cake_meter.visible = false;
};
if (player.shield_count.value > 0){
NitromeGame.timeline.bonus_meter.visible = true;
NitromeGame.timeline.bonus_meter.bar_mask.scaleX = ((1 / Player.SHIELD_DELAY) * player.shield_count.value);
NitromeGame.timeline.bonus_meter.txt.text = "shield";
if (NitromeGame.timeline.bonus_meter.bar.currentLabel != "shield"){
NitromeGame.timeline.bonus_meter.bar.gotoAndStop("shield");
};
} else {
if (probe.napalm_count.value > 0){
NitromeGame.timeline.bonus_meter.visible = true;
NitromeGame.timeline.bonus_meter.bar_mask.scaleX = ((1 / Probe.NAPALM_DELAY) * probe.napalm_count.value);
NitromeGame.timeline.bonus_meter.txt.text = "napalm";
if (NitromeGame.timeline.bonus_meter.bar.currentLabel != "napalm"){
NitromeGame.timeline.bonus_meter.bar.gotoAndStop("napalm");
};
} else {
if (probe.magnet_count.value > 0){
NitromeGame.timeline.bonus_meter.visible = true;
NitromeGame.timeline.bonus_meter.bar_mask.scaleX = ((1 / Probe.MAGNET_DELAY) * probe.magnet_count.value);
NitromeGame.timeline.bonus_meter.txt.text = "magnet";
if (NitromeGame.timeline.bonus_meter.bar.currentLabel != "magnet"){
NitromeGame.timeline.bonus_meter.bar.gotoAndStop("magnet");
};
} else {
if (((!((enemy == null))) && ((enemy.health.value > 0)))){
NitromeGame.timeline.bonus_meter.visible = true;
NitromeGame.timeline.bonus_meter.bar_mask.scaleX = ((1 / enemy.total_health) * enemy.health.value);
NitromeGame.timeline.bonus_meter.txt.text = "enemy";
if (NitromeGame.timeline.bonus_meter.bar.currentLabel != "enemy"){
NitromeGame.timeline.bonus_meter.bar.gotoAndStop("enemy");
};
} else {
if (NitromeGame.timeline.bonus_meter.bar_mask.scaleX > 0){
NitromeGame.timeline.bonus_meter.bar_mask.scaleX = 0;
NitromeGame.timeline.bonus_meter.txt.text = "";
NitromeGame.timeline.bonus_meter.visible = false;
};
};
};
};
};
}
public function pauseGame(_arg1:Boolean=false):void{
var _local2:int;
var _local3:int;
var _local4:int;
if (!player.active){
return;
};
if (!game_paused){
Mouse.show();
Util.stopClips(canvas);
NitromeGame.sound_manager.stopLoops();
game_paused = true;
if (_arg1){
NitromeGame.timeline.popup_holder.launchPopUp("game_help");
} else {
NitromeGame.timeline.popup_holder.launchPopUp("game_paused");
};
} else {
Mouse.hide();
Util.startClips(canvas);
NitromeGame.sound_manager.startLoops();
_local2 = 0;
while (_local2 < encounters.length) {
encounters[_local2].unpause();
_local2++;
};
_local4 = 0;
while (_local4 < tile_height) {
_local3 = 0;
while (_local3 < tile_width) {
if ((tile_map[_local4][_local3] is Switch)){
tile_map[_local4][_local3].unpause();
};
_local3++;
};
_local4++;
};
NitromeGame.timeline.popup_holder.hidePopUp();
game_paused = false;
};
}
public function addCake(_arg1:Cake):void{
cakes.push(_arg1);
}
public function removeCake(_arg1:Cake):void{
var _local2:int;
while (_local2 < cakes.length) {
if (cakes[_local2] == _arg1){
cakes.splice(_local2, 1);
break;
};
_local2++;
};
}
public function updateLasers():void{
var _local1:int;
while (laser_holder.numChildren > 0) {
laser_holder.removeChildAt(0);
};
laser_holder.graphics.clear();
i = 0;
while (i < lasers.length) {
lasers[i].main();
j = 0;
while (j < lasers[i].collision_array.length) {
if (lasers[i].strength >= 1){
if (lasers[i].collision_array[j].intersects(player.collision_rect)){
player.hit();
};
_local1 = 0;
while (_local1 < encounters.length) {
if (((((encounters[_local1].monster) && (encounters[_local1].has_collision))) && (encounters[_local1].collision_rect.intersects(lasers[i].collision_array[j])))){
encounters[_local1].hit(10);
encounters[_local1].hit_white = 2;
};
_local1++;
};
};
j++;
};
if (((!(lasers[i].active)) && ((lasers[i].strength <= 0)))){
lasers.splice(i, 1);
i--;
};
i++;
};
}
private function updateEncounters():void{
i = 0;
while (i < encounters.length) {
if (encounters[i].skip){
} else {
if (((encounters[i].has_collision) && (encounters[i].collision_rect.intersects(player.collision_rect)))){
encounters[i].resolvePlayerCollision(player);
};
if (((((encounters[i].has_collision) && ((probe.item is Tile)))) && (encounters[i].collision_rect.intersects(probe.item.collision_rect)))){
encounters[i].kill();
};
if (encounters[i].has_main){
encounters[i].main();
};
if (!encounters[i].active){
if (encounters[i].monster){
if ((encounters[i].properties & Monster.PAUSE_SCROLL)){
pause_scroll--;
};
};
Util.stopClips(encounters[i].mc);
encounters[i].mc.parent.removeChild(encounters[i].mc);
encounters.splice(i, 1);
i--;
};
};
i++;
};
}
public function addEncounter(_arg1:Encounter):void{
encounters.push(_arg1);
}
public function removeEncounter(_arg1:Encounter):void{
var _local2:int;
while (_local2 < encounters.length) {
if (encounters[_local2] == _arg1){
encounters.splice(_local2, 1);
break;
};
_local2++;
};
}
public function updateTiles():void{
var _local2:Tile;
var _local1:int;
while (_local1 < tiles.length) {
if (tiles[_local1].active_tile){
tiles[_local1].setDestination(tile_grid_mouse_x, tile_grid_mouse_y);
};
tiles[_local1].move();
if (!tiles[_local1].active_tile){
_local2 = tiles[_local1];
if (_local2.on_grid_pos){
tiles.splice(_local1, 1);
_local1--;
};
};
_local1++;
};
}
public function addTile(_arg1:Tile):void{
tiles.push(_arg1);
}
public function removeTile(_arg1:Tile):void{
var _local2:int;
while (_local2 < tiles.length) {
if (tiles[_local2] == _arg1){
tiles.splice(_local2, 1);
break;
};
_local2++;
};
}
public function updateBullets():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local7:BitmapSprite;
i = 0;
while (i < bullets.length) {
bullets[i].main();
if (bullets[i].active){
_local1 = (bullets[i].x * Tile.TILE_SCALE);
_local2 = (bullets[i].y * Tile.TILE_SCALE);
if ((((((((((((_local1 >= 0)) && ((_local2 >= 0)))) && ((_local1 < tile_width)))) && ((_local2 < tile_height)))) && (!((tile_map[_local2][_local1] == null))))) && (!((tile_map[_local2][_local1] is BlockTile))))){
bullets[i].active = false;
bullets[i].resolve(tile_map[_local2][_local1].collision_rect);
};
};
if (((((bullets[i].active) && ((probe.item is Tile)))) && (probe.item.collision_rect.contains(bullets[i].x, bullets[i].y)))){
bullets[i].active = false;
};
if (((bullets[i].active) && ((player.beam.scaleX > 0)))){
if (player.beam_rect.contains(bullets[i].x, bullets[i].y)){
bullets[i].active = false;
};
};
j = 0;
while (j < lasers.length) {
if (lasers[j].strength >= 1){
_local5 = 0;
while (_local5 < lasers[j].collision_array.length) {
if (lasers[j].collision_array[_local5].intersectsCircle(bullets[i].x, bullets[i].y, bullets[i].radius)){
bullets[i].active = false;
};
_local5++;
};
};
j++;
};
if (((bullets[i].active) && (player.active))){
if (player.collision_rect.contains(bullets[i].x, bullets[i].y)){
bullets[i].active = false;
if (bullets[i].type != Bullet.CASH){
player.hit();
} else {
addScore(50);
};
};
};
if (((((player.active) && (!((((bullets[i].type == Bullet.BIG)) && ((probe.magnet_count.value == 0))))))) && (probe.collision_rect.intersectsCircle(bullets[i].x, bullets[i].y, bullets[i].radius)))){
if (probe.magnet_count.value > 0){
probe.magnet_bullet_count++;
};
bullets[i].active = false;
if (bullets[i].type != Bullet.CASH){
if (probe_soak_count < PROBE_SOAK_LIMIT){
addScore(1);
probe_soak_count++;
};
} else {
addScore(50);
};
if (player.carried){
player.hit();
};
};
if (bullets[i].active){
bullets[i].bitmap.render(screendata, bullets[i].bitmap_frame);
bullets[i].bitmap_frame = ((bullets[i].bitmap_frame + 1) % bullets[i].bitmap.total_frames);
} else {
bullets[i].hit_bitmap.x = bullets[i].bitmap.x;
bullets[i].hit_bitmap.y = bullets[i].bitmap.y;
bullets[i].hit_bitmap.render(screenfxdata, 0);
};
if (((!(bullets[i].active)) || (!(onScreen(bullets[i].x, bullets[i].y, BULLET_DEATH_RANGE))))){
bullets.splice(i, 1);
i--;
};
i++;
};
var _local6:int;
i = 0;
while (i < player_bullets.length) {
player_bullets[i].main();
j = 0;
while (j < encounters.length) {
if (((((((encounters[j].has_collision) && (encounters[j].monster))) && (encounters[j].active))) && (player_bullets[i].active))){
if (encounters[j].collision_rect.intersects(player_bullets[i].collision_rect)){
if (player_bullets[i].type == Bullet.PLAYER_SPECIAL){
_local6 = 5;
} else {
if (player_bullets[i].type == Bullet.NAPALM){
if ((player_bullets[i].bitmap_frame % 3) == 0){
_local6 = 1;
} else {
_local6 = 0;
};
} else {
_local6 = 1;
};
};
encounters[j].hit(_local6);
if (player_bullets[i].type != Bullet.NAPALM){
player_bullets[i].active = false;
player_bullets[i].resolve(encounters[j].collision_rect);
};
};
};
j++;
};
j = 0;
while (j < lasers.length) {
if (lasers[j].strength >= 1){
_local5 = 0;
while (_local5 < lasers[j].collision_array.length) {
if (lasers[j].collision_array[_local5].intersectsCircle(player_bullets[i].x, player_bullets[i].y, player_bullets[i].radius)){
player_bullets[i].active = false;
};
_local5++;
};
};
j++;
};
if (player_bullets[i].active){
_local1 = (player_bullets[i].x * Tile.TILE_SCALE);
_local2 = (player_bullets[i].y * Tile.TILE_SCALE);
if ((((((((((((_local1 >= 0)) && ((_local2 >= 0)))) && ((_local1 < tile_width)))) && ((_local2 < tile_height)))) && (!((tile_map[_local2][_local1] == null))))) && (!((tile_map[_local2][_local1] is BlockTile))))){
player_bullets[i].active = false;
if (player_bullets[i].type != Bullet.NAPALM){
player_bullets[i].resolve(tile_map[_local2][_local1].collision_rect);
};
};
};
if (player_bullets[i].type != Bullet.NAPALM){
player_bullets[i].bitmap.render(screendata, player_bullets[i].bitmap_frame);
} else {
player_bullets[i].bitmap.render(screenfxdata, player_bullets[i].bitmap_frame);
};
player_bullets[i].bitmap_frame = ((player_bullets[i].bitmap_frame + 1) % player_bullets[i].bitmap.total_frames);
if ((((player_bullets[i].type == Bullet.NAPALM)) && ((player_bullets[i].bitmap_frame == (player_bullets[i].bitmap.total_frames - 1))))){
player_bullets[i].active = false;
};
if (((!(player_bullets[i].active)) || (!(onScreen(player_bullets[i].x, player_bullets[i].y, 0))))){
if (((!(player_bullets[i].active)) && ((player_bullets[i].type == Bullet.PLAYER)))){
if (player_bullet_hit_frame == 1){
player_bullet_hit_frame = 2;
_local7 = player_bullet_hit_bitmap1;
} else {
if (player_bullet_hit_frame == 2){
player_bullet_hit_frame = 3;
_local7 = player_bullet_hit_bitmap2;
} else {
player_bullet_hit_frame = 1;
_local7 = player_bullet_hit_bitmap3;
};
};
_local7.x = player_bullets[i].bitmap.x;
_local7.y = player_bullets[i].bitmap.y;
_local7.render(screenfxdata, 0);
} else {
if (((!(player_bullets[i].active)) && ((player_bullets[i].type == Bullet.PLAYER_SPECIAL)))){
_local7 = magnet_bullet_hit_bitmap;
_local7.x = player_bullets[i].bitmap.x;
_local7.y = player_bullets[i].bitmap.y;
_local7.render(screenfxdata, 0);
};
};
player_bullets.splice(i, 1);
i--;
};
i++;
};
}
public function createBullet(_arg1:int, _arg2:int, _arg3:Number, _arg4:Number, _arg5:int, _arg6:Number):void{
var _local7:BitmapSprite;
var _local8:BitmapSprite;
if (!(((((_arg5 == Bullet.PLAYER)) || ((_arg5 == Bullet.PLAYER_SPECIAL)))) || ((_arg5 == Bullet.NAPALM)))){
if (!probe.magnet_blasting){
if (_arg5 == Bullet.SMALL_GREEN){
_local7 = small_green_bullet_bitmap;
_local8 = small_green_bullet_hit_bitmap;
if (small_shot_count <= 0){
small_shot_count = SMALL_SHOT_DELAY;
NitromeGame.sound_manager.playSound("small_shot");
};
} else {
if (_arg5 == Bullet.SMALL_RED){
_local7 = small_red_bullet_bitmap;
_local8 = small_red_bullet_hit_bitmap;
if (small_shot_count <= 0){
small_shot_count = SMALL_SHOT_DELAY;
NitromeGame.sound_manager.playSound("small_shot");
};
} else {
if (_arg5 == Bullet.SMALL_BLUE){
_local7 = small_blue_bullet_bitmap;
_local8 = small_blue_bullet_hit_bitmap;
if (small_shot_count <= 0){
small_shot_count = SMALL_SHOT_DELAY;
NitromeGame.sound_manager.playSound("small_shot");
};
} else {
if (_arg5 == Bullet.BIG){
_local7 = big_bullet_bitmap;
_local8 = big_bullet_hit_bitmap;
if (big_shot_count <= 0){
big_shot_count = BIG_SHOT_DELAY;
NitromeGame.sound_manager.playSound("big_shot");
};
} else {
if (_arg5 == Bullet.HOMING){
_local7 = homing_bullet_bitmap;
_local8 = homing_bullet_hit_bitmap;
if (homing_shot_count <= 0){
homing_shot_count = HOMING_SHOT_DELAY;
NitromeGame.sound_manager.playSound("homing_shot");
};
};
};
};
};
};
bullets.push(new Bullet(_arg1, _arg2, _arg3, _arg4, _local7, _local8, _arg5, _arg6, this));
};
} else {
if (_arg5 == Bullet.PLAYER){
_local7 = player_bullet_bitmap;
if (player_shot_count <= 0){
player_shot_count = PLAYER_SHOT_DELAY;
NitromeGame.sound_manager.playSound("player_shot");
};
} else {
if (_arg5 == Bullet.PLAYER_SPECIAL){
_local7 = magnet_bullet_bitmap;
if (player_shot_count <= 0){
player_shot_count = PLAYER_SHOT_DELAY;
NitromeGame.sound_manager.playSound("player_shot");
};
} else {
if (_arg5 == Bullet.NAPALM){
if ((frame_count % 2) == 0){
_local7 = napalm_bitmap1;
} else {
_local7 = napalm_bitmap2;
};
};
};
};
player_bullets.push(new Bullet(_arg1, _arg2, _arg3, _arg4, _local7, null, _arg5, _arg6, this));
};
}
public function cashConvertBullets():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:int;
while (_local6 < bullets.length) {
_local1 = bullets[_local6].x;
_local2 = bullets[_local6].y;
_local3 = bullets[_local6].vx;
_local4 = bullets[_local6].vy;
_local5 = bullets[_local6].speed;
bullets[_local6] = new Bullet(_local1, _local2, _local3, _local4, cash_bullet_bitmap, cash_bullet_hit_bitmap, Bullet.CASH, _local5, this);
_local6++;
};
_local6 = 0;
while (_local6 < encounters.length) {
if (((encounters[_local6].monster) && (!((encounters[_local6].properties & Monster.NO_HIT))))){
encounters[_local6].properties = (encounters[_local6].properties | Monster.CAKE);
encounters[_local6].kill();
};
_local6++;
};
}
public function createMonster(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Array):void{
var _local5:int = _arg1[0];
var _local6:MovieClip = new (scroller.tile_maker.class_names[_local5]);
_local6.x = _arg2;
_local6.y = _arg3;
scroller.tile_layers[1].addChildAt(_local6, 0);
var _local7:int;
if ((((_local5 >= 22)) && ((_local5 <= 29)))){
_local7 = 1;
} else {
if (_local5 >= 30){
_local7 = 2;
};
};
var _local8:Monster = new Monster(_arg1, _local6, _arg4, _local7, this);
}
private function updateFX():void{
i = 0;
while (i < fx.length) {
fx[i].main();
if (((!(fx[i].active)) || (!(onScreen(fx[i].x, fx[i].y, fx[i].bitmap.width))))){
fx.splice(i, 1);
i--;
};
i++;
};
}
public function addFX(_arg1:Number, _arg2:Number, _arg3:BitmapSprite):void{
fx.push(new FX(_arg1, _arg2, _arg3, this));
}
private function updateSmokes():void{
i = 0;
while (i < smokes.length) {
smokes[i].main();
if (((!(smokes[i].active)) || (!(onScreen(smokes[i].x, smokes[i].y, 20))))){
smokes.splice(i, 1);
i--;
};
i++;
};
}
public function addSmoke(_arg1:Number, _arg2:Number):void{
var _local3:Smoke = new Smoke(_arg1, _arg2, this);
smoke_angle = (smoke_angle + (70 + (Math.random() * 50)));
smoke_angle = (smoke_angle % 360);
_local3.addVelocity((Trig.cos[smoke_angle] * 5), (Trig.sin[smoke_angle] * 5));
smokes.push(_local3);
}
private function loadLevel():void{
decodeXML(new XML(Levels.levels[(NitromeGame.selected_level - 1)]));
}
private function loadXML(_arg1:Event):void{
var _local2:XML = new XML(_arg1.target.data);
NitromeGame.last_loaded_path = levelPath();
NitromeGame.last_loaded_xml = _local2;
decodeXML(_local2);
}
private function levelPath():String{
var _local1:String = ("" + NitromeGame.selected_level);
if (NitromeGame.selected_level < 10){
_local1 = ("0" + NitromeGame.selected_level);
};
var _local2 = "levels/";
var _local3 = ".xml";
var _local4:String = ((NitromeGame.getSwfPath() + _local2) + NitromeGame.getLevelName(NitromeGame.selected_level, _local3));
return (_local4);
}
public function decodeXML(_arg1:XML):void{
var _local4:int;
var _local5:int;
var _local6:XML;
var _local9:String;
var _local10:Array;
var _local11:Array;
var _local12:Array;
var _local13:int;
var _local14:Array;
var _local15:*;
var _local16:String;
var _local17:int;
var _local18:int;
var _local19:int;
var _local20:int;
var _local2:Array = new Array();
var _local3:XML = _arg1.level[0];
scroller = new Scroller(this, canvas, tile_holder, scale, parseInt(_local3.@width), parseInt(_local3.@height), width, height);
tile_map = new Array();
tile_width = Math.ceil((scroller.width * 0.5));
tile_height = Math.ceil((scroller.height * 0.5));
NitromeGame.timeline.background.gotoAndStop(("_" + _local3.@background_type));
NitromeGame.timeline.msg_panel.back.gotoAndStop(("_" + _local3.@background_type));
_local4 = 0;
while (_local4 < tile_height) {
tile_map.push(new Array());
_local5 = 0;
while (_local5 < tile_width) {
tile_map[_local4].push(null);
_local5++;
};
_local4++;
};
scroller.scroll_x = false;
start_x = parseInt(_local3.@start_x);
start_y = parseInt(_local3.@start_y);
level_scroll_speed = (0.5 * parseInt(_local3.@scroll_speed));
var _local7 = (_local3.@compression == "true");
var _local8:LZW = new LZW();
for each (_local6 in _arg1.tiles) {
_local9 = "";
if (_local7){
_local9 = _local8.decompress(_local6.@values);
} else {
_local9 = _local6.@values;
};
_local10 = _local9.split(",");
_local11 = new Array();
i = 0;
while (i < _local10.length) {
if (_local10[i].indexOf(":") < 0){
_local13 = parseInt(_local10[i]);
if (isNaN(parseInt(_local10[i]))){
_local11.push(formatPathCommands(_local10[i]));
} else {
_local11.push(_local13);
};
} else {
_local14 = _local10[i].split(":");
_local13 = parseInt(_local14[0]);
if (isNaN(parseInt(_local14[0]))){
_local15 = formatPathCommands(_local10[i]);
} else {
_local15 = _local13;
};
j = 0;
while (j < parseInt(_local14[1])) {
_local11.push(_local15);
j++;
};
};
i++;
};
_local12 = new Array();
_local4 = 0;
while (_local4 < scroller.height) {
_local12.push(new Array());
_local5 = 0;
while (_local5 < scroller.width) {
_local12[_local4].push(_local11[(_local5 + (_local4 * scroller.width))]);
_local5++;
};
_local4++;
};
scroller.addLayer(_local12);
};
for each (_local6 in _arg1.sign) {
_local16 = _local6.@text;
_local17 = parseInt(_local6.@n);
_local18 = parseInt(_local6.@layer);
_local19 = parseInt(_local6.@width);
_local20 = parseInt(_local6.@height);
_local2.push({text:_local16, n:_local17, layer:_local18, width:_local19, height:_local20});
};
scroller.setSignage(_local2);
start_msg = _arg1.msg[0].@text;
block_map = scroller.map_array_layers[Scroller.BLOCK_LAYER];
scroller.rezBeginning(start_x, start_y);
frame_count = 1;
initPlayer();
addListeners();
NitromeGame.timeline.loading_clip.gotoAndPlay("fade_out");
if (_local3.@background_type == "0"){
NitromeGame.sound_manager.crossFade(SoundManager.GAME);
} else {
NitromeGame.sound_manager.playMusic(SoundManager.MENU);
};
}
public function formatPathCommands(_arg1:String):Array{
var _local6:Array;
_arg1 = _arg1.replace(FORMAT_INSTRUCTIONS, "$1 ");
_arg1 = _arg1.replace(TRIM_WHITESPACE, "");
var _local2:Array = new Array();
_local2 = _arg1.match(TURRET_COMMANDS);
_arg1 = _arg1.replace(TURRET_COMMANDS_REPLACE, "T &");
var _local3:int;
while (_arg1.search(ANDS) > -1) {
var _temp1 = _local3;
_local3 = (_local3 + 1);
_arg1 = _arg1.replace(ANDS, ("" + _temp1));
};
do {
_local6 = _arg1.match(SPAWN_COMMANDS);
if (_local6 != null){
_local2 = _local2.concat(_local6);
};
var _temp2 = _local3;
_local3 = (_local3 + 1);
_arg1 = _arg1.replace(SPAWN_COMMANDS_REPLACE, ("S " + _temp2));
} while (_local6 != null);
var _local4:Array = createCommandList(_arg1);
var _local5:int;
while (_local5 < _local2.length) {
_local2[_local5] = createCommandList(_local2[_local5]);
_local5++;
};
return ([_local4, _local2]);
}
public function createCommandList(_arg1:String):Array{
var _local6:int;
var _local2:Array = new Array();
var _local3:Array = _arg1.match(SKIN_ID);
_local2[Monster.ID] = ((_local3 == null)) ? 0 : parseInt(_local3[0]);
var _local4:Array = _arg1.match(HEALTH_ID);
_local2[Monster.HEALTH] = ((_local4 == null)) ? 0 : parseInt(_local4[0]);
var _local5:Array = _arg1.match(PROPERTY_ID);
_local2[Monster.PROPERTIES] = ((_local5 == null)) ? 0 : parseInt(_local5[0]);
_arg1 = _arg1.replace(SKIN_ID_REPLACE, "");
_arg1 = _arg1.replace(HEALTH_ID_REPLACE, "");
_arg1 = _arg1.replace(PROPERTY_ID_REPLACE, "");
_arg1 = _arg1.replace(TRIM_WHITESPACE, "");
if (_arg1.length > 0){
if (_arg1.match(WAIT_COMMAND_CHECK) == null){
_arg1 = (_arg1 + " W 0");
};
_local2 = _local2.concat(_arg1.split(" "));
} else {
_arg1 = "W 0";
_local2 = _local2.concat(_arg1.split(" "));
};
var _local7:int;
while (_local7 < _local2.length) {
_local6 = parseInt(_local2[_local7]);
if (isFinite(_local2[_local7])){
_local2[_local7] = _local6;
};
_local7++;
};
return (_local2);
}
private function setBlocksInPlay():void{
var _local5:int;
var _local6:Array;
var _local7:Array;
blocks_in_play = new Array();
var _local1:Array = block_map;
var _local2:int;
while (_local2 < scroller.height) {
blocks_in_play[_local2] = new Array();
_local5 = 0;
while (_local5 < scroller.width) {
blocks_in_play[_local2].push(0);
_local5++;
};
_local2++;
};
var _local3:Array = floodFillBlocksInPlay(_local1, start_x, start_y, scroller.width, scroller.height);
var _local4:int;
while (_local4 < (scroller.width * scroller.height)) {
_local6 = new Array();
i = 0;
while (i < _local3.length) {
_local7 = floodFillBlocksInPlay(_local1, _local3[i].x, _local3[i].y, scroller.width, scroller.height);
if (_local7.length > 0){
_local6 = _local6.concat(_local7);
};
i++;
};
_local3 = _local6;
if (_local3.length == 0){
break;
};
_local4++;
};
}
private function floodFillBlocksInPlay(_arg1:Array, _arg2:int, _arg3:int, _arg4:int, _arg5:int):Array{
var _local6:Array = new Array();
if (blocks_in_play[_arg3][_arg2] == EMPTY){
return (_local6);
};
blocks_in_play[_arg3][_arg2] = EMPTY;
if ((((((_arg3 > 0)) && (!(TileMaker.isBlock(_arg1[(_arg3 - 1)][_arg2]))))) && (!((blocks_in_play[(_arg3 - 1)][_arg2] == EMPTY))))){
_local6.push(new Dot(_arg2, (_arg3 - 1)));
} else {
if ((((_arg3 > 0)) && (TileMaker.isBlock(_arg1[(_arg3 - 1)][_arg2])))){
blocks_in_play[(_arg3 - 1)][_arg2] = IN_PLAY;
};
};
if ((((((_arg2 < (_arg4 - 1))) && (!(TileMaker.isBlock(_arg1[_arg3][(_arg2 + 1)]))))) && (!((blocks_in_play[_arg3][(_arg2 + 1)] == EMPTY))))){
_local6.push(new Dot((_arg2 + 1), _arg3));
} else {
if ((((_arg2 < (_arg4 - 1))) && (TileMaker.isBlock(_arg1[_arg3][(_arg2 + 1)])))){
blocks_in_play[_arg3][(_arg2 + 1)] = IN_PLAY;
};
};
if ((((((_arg3 < (_arg5 - 1))) && (!(TileMaker.isBlock(_arg1[(_arg3 + 1)][_arg2]))))) && (!((blocks_in_play[(_arg3 + 1)][_arg2] == EMPTY))))){
_local6.push(new Dot(_arg2, (_arg3 + 1)));
} else {
if ((((_arg3 < (_arg5 - 1))) && (TileMaker.isBlock(_arg1[(_arg3 + 1)][_arg2])))){
blocks_in_play[(_arg3 + 1)][_arg2] = IN_PLAY;
};
};
if ((((((_arg2 > 0)) && (!(TileMaker.isBlock(_arg1[_arg3][(_arg2 - 1)]))))) && (!((blocks_in_play[_arg3][(_arg2 - 1)] == EMPTY))))){
_local6.push(new Dot((_arg2 - 1), _arg3));
} else {
if ((((_arg2 > 0)) && (TileMaker.isBlock(_arg1[_arg3][(_arg2 - 1)])))){
blocks_in_play[_arg3][(_arg2 - 1)] = IN_PLAY;
};
};
if ((((((_arg2 < (_arg4 - 1))) && ((_arg3 > 0)))) && (TileMaker.isBlock(_arg1[(_arg3 - 1)][(_arg2 + 1)])))){
blocks_in_play[(_arg3 - 1)][(_arg2 + 1)] = IN_PLAY;
};
if ((((((_arg2 < (_arg4 - 1))) && ((_arg3 < (_arg5 - 1))))) && (TileMaker.isBlock(_arg1[(_arg3 + 1)][(_arg2 + 1)])))){
blocks_in_play[(_arg3 + 1)][(_arg2 + 1)] = IN_PLAY;
};
if ((((((_arg2 > 0)) && ((_arg3 < (_arg5 - 1))))) && (TileMaker.isBlock(_arg1[(_arg3 + 1)][(_arg2 - 1)])))){
blocks_in_play[(_arg3 + 1)][(_arg2 - 1)] = IN_PLAY;
};
if ((((((_arg2 > 0)) && ((_arg3 > 0)))) && (TileMaker.isBlock(_arg1[(_arg3 - 1)][(_arg2 - 1)])))){
blocks_in_play[(_arg3 - 1)][(_arg2 - 1)] = IN_PLAY;
};
return (_local6);
}
private function updateShaker():void{
if (shake_count > 0){
shaker.y = shake_array[shake_count];
if (++shake_count >= shake_array.length){
shaker.y = 0;
shake_count = 0;
};
};
}
private function debugKey(_arg1:KeyboardEvent):void{
if (Key.isDown(Key.P)){
pauseGame();
};
if (Key.isDown(Key.H)){
pauseGame(true);
};
}
private function mouseDown(_arg1:MouseEvent):void{
mouse_pressed = true;
}
private function mouseUp(_arg1:MouseEvent):void{
mouse_pressed = false;
}
private function rightClick(_arg1:ContextMenuEvent):void{
right_pressed = true;
mouse_pressed = false;
}
public function scoreString():String{
var _local1:String = Score.value.toString();
while (_local1.length < 10) {
_local1 = ("0" + _local1);
};
return (_local1);
}
}
}//package
Section 191
//GameMusic (GameMusic)
package {
import flash.media.*;
public dynamic class GameMusic extends Sound {
}
}//package
Section 192
//HelpMC1 (HelpMC1)
package {
import flash.display.*;
public dynamic class HelpMC1 extends Sprite {
}
}//package
Section 193
//HelpMC2 (HelpMC2)
package {
import flash.display.*;
public dynamic class HelpMC2 extends MovieClip {
}
}//package
Section 194
//HelpMC3 (HelpMC3)
package {
import flash.display.*;
public dynamic class HelpMC3 extends Sprite {
}
}//package
Section 195
//HelpMC4 (HelpMC4)
package {
import flash.display.*;
public dynamic class HelpMC4 extends MovieClip {
}
}//package
Section 196
//HelpMC5 (HelpMC5)
package {
import flash.display.*;
public dynamic class HelpMC5 extends Sprite {
}
}//package
Section 197
//HelpTileFrontMC1 (HelpTileFrontMC1)
package {
import flash.display.*;
public dynamic class HelpTileFrontMC1 extends MovieClip {
}
}//package
Section 198
//HelpTileFrontMC2 (HelpTileFrontMC2)
package {
import flash.display.*;
public dynamic class HelpTileFrontMC2 extends MovieClip {
}
}//package
Section 199
//HelpTileFrontMC3 (HelpTileFrontMC3)
package {
import flash.display.*;
public dynamic class HelpTileFrontMC3 extends MovieClip {
}
}//package
Section 200
//HelpTileMC1 (HelpTileMC1)
package {
import flash.display.*;
public dynamic class HelpTileMC1 extends MovieClip {
}
}//package
Section 201
//HelpTileMC2 (HelpTileMC2)
package {
import flash.display.*;
public dynamic class HelpTileMC2 extends MovieClip {
}
}//package
Section 202
//HelpTileMC3 (HelpTileMC3)
package {
import flash.display.*;
public dynamic class HelpTileMC3 extends MovieClip {
}
}//package
Section 203
//HelpTileMC4 (HelpTileMC4)
package {
import flash.display.*;
public dynamic class HelpTileMC4 extends MovieClip {
}
}//package
Section 204
//HelpTileMC5 (HelpTileMC5)
package {
import flash.display.*;
public dynamic class HelpTileMC5 extends MovieClip {
}
}//package
Section 205
//HighScoreBoard (HighScoreBoard)
package {
import com.nitrome.highscore.*;
public dynamic class HighScoreBoard extends HighScoreBoard {
public function HighScoreBoard(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 206
//holder (holder)
package {
import flash.display.*;
public dynamic class holder extends Sprite {
}
}//package
Section 207
//HomingBulletHitMC (HomingBulletHitMC)
package {
import flash.display.*;
public dynamic class HomingBulletHitMC extends MovieClip {
}
}//package
Section 208
//HomingBulletMC (HomingBulletMC)
package {
import flash.display.*;
public dynamic class HomingBulletMC extends MovieClip {
}
}//package
Section 209
//HorizTileMC (HorizTileMC)
package {
import flash.display.*;
public dynamic class HorizTileMC extends MovieClip {
}
}//package
Section 210
//HotTileFrontMC (HotTileFrontMC)
package {
import flash.display.*;
public dynamic class HotTileFrontMC extends MovieClip {
}
}//package
Section 211
//HotTileMC (HotTileMC)
package {
import flash.display.*;
public dynamic class HotTileMC extends MovieClip {
}
}//package
Section 212
//InfoFont (InfoFont)
package {
import flash.text.*;
public dynamic class InfoFont extends Font {
}
}//package
Section 213
//KillTileMC (KillTileMC)
package {
import flash.display.*;
public dynamic class KillTileMC extends MovieClip {
}
}//package
Section 214
//LargeBangMC (LargeBangMC)
package {
import flash.display.*;
public dynamic class LargeBangMC extends MovieClip {
}
}//package
Section 215
//LaserMC (LaserMC)
package {
import flash.display.*;
public dynamic class LaserMC extends MovieClip {
}
}//package
Section 216
//LaserMC1 (LaserMC1)
package {
import flash.display.*;
public dynamic class LaserMC1 extends MovieClip {
}
}//package
Section 217
//LetterButton (LetterButton)
package {
import com.nitrome.highscore.*;
public dynamic class LetterButton extends LetterButton {
public function LetterButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 218
//Levels (Levels)
package {
public class Levels {
private static var level1:String = "<root><level width='32' height='231' start_x='16' start_y='228' background_type='0' compression='true' scroll_speed='2'/><tiles values='0:7456' id='0'/><tiles values='0:964,92,0ĊČĎċč:13ďčėđĐ:41ĊĉąĖĒąĕęğē47ęĔĢě45ħġĊĖĤĢĴıĜĪ9ĴĬijĨİ9Ġ:ĭēĥģĸĩīņĮŀłĶŅŏđłʼnĻŐľąįĸńĎřŜİŞĘŝ,ŢŢŇŁĨĺĐţşūšŬŤůŬģĜōēśŭŜ6šźŹŻŮĘŦœũſŽŠƆţżŸīř7Ųķ7ļĥ7ƉŕĎƍŅİ10ż:2İ7ĞƖơ,6Īĵ,7ŪƠĘƫŘĞƭƨƣƥƄƈƴŤƉŢƩƬƣƭĜĞĈƀķ6ķƷƶůƸŬ6ƔǂœČI3H4P2R90F2W18R27ǗǙǛĘǏǑǓǕǠǚǜǞǨǢĎǤǒǔǖǘǩǝǟdzǭ,ǯǦDzǡǪǶǽǣǐǰǧǷǾǬ8ĨǹȂǻȇǵȇȁǥDZȍǫȅȐȃǼǴȔȀǮȋȒȅȎȕȜȑȄǽȠțĜǎ21H1ǦǛǬ0ǜȰȈǮȪȬȮ8ȳRȳǣȶȭǔȯǷȱȻɂȴǹȾȸȺȼȵȫȿRɁǡɃɋɇɍɉɅɄɑɆIɈɀȹɗɓɛɕɝɊɅȽɢɏɞəɘǚȱɦȷɣɟɥɌɯɨɤəĨĖɡɴɐɬȲɲɔɻɩɽɫƚɚɜɵɱɷɳɎɼʅʄɭʋɖɪɠʇʍɒɿɺʌʂʎʔɧʖɾʊʀʚɶɽɮʣʉʥʑɰʓɲĜɹʕʛʗʡʙʒʃʝʁʤʅʦʵʜʘʰʹʐʢʼʲʩ˂ʫʶʾʞʱʠ˅ʴˇʽʳʿʨʺʪʈʬʊʮˆ˖ˈˑˊˀʆ˞˓ˁˎ˛ːˍ˒˗˧ˡ˩˔˚ʟʏˠʸˢ˱ʧˬˣ˨˜˪˲˶ȴĜĉǺǛȤșǿǩȖṔȘ́Ț̅Ȣǒ̈ȓ̄Ǹ̀ǜ̉ȆȡȊǥ̏ȟ̋Ǹƕŗ̡̟̞ļ4ƞ̠ķ̢ǁ̩̍̇̔̐ȏ̫̚ȥ̜ɚȋ̴̛̱̯̘̭̙̻̲̃̎̑̽Ņ79ɇɴ̉1Ġ͆Ɏ͈łȩ͇Ǭ͉Ƚ͐Ƿ͒ą2˿2͔ǡ͖͋Ȍ͕͎͞Ȟ͊͜ɛ͛ǚ͖Ɲ͙ͧ1͓ͦ͌͑ͯͤ͟͝͡Ͱ͠ē͚̂ͭͥ͘͢ͷ͵͗ͻ͍Ͷʹͨł15ǎ̵̷̗̀̓ͼ̖ȧ̿ΑȦ̹̬̌Ζ̳ĨȈƓƬƎƬļͅΟđƏ͊ƐĨƿɆǟŶƤƦƊŰƴ6άĎIJƳƮŗ:ŀDŽƸξžΦēμΪ,ͭƣͭζυƚĘ˭βƇŢͭŪψόϋĎƚͅιŧIJϚĔĞϜĢœσρƧ̨ĤɭǺͣΎțΙϩ̫̊͂ϭΒΘϨΛϯϬϵ̯ĜϷ̕Η̒ȝϸΏϿϼΜϰЀϫϴЃϯȨˮˋ˰ʻˏ˄˭ˤ˯ʷ˵˹В˸˦И˫З˷МКО˻Н˴˃ˌЛТРФАЦʐ˙ГЍЕХЎ˕ДˉШБСЖЩЏ˥иЪнЬпе˝зсму˺коɸЌ˟чажъцдѐфђгэ˳яюєќљ˼ћњѝѢЮЙыѣѠѨУѡѩџѫѪлѰѧѮѱѴѳЯўѸѤ8Č3Ɇ3ϘƝ,ҀĘѾΩΐЉ̸҉̮ЁΕҊȡĔΔ̺ІϳΌҕϾҏҍȧƚƟΨҟπαLJƬƉ7ҠƖœϞķφϔωϗҢ4οƅϊχϕυ0Ϙκĝ̦̪κͅϥҽϙŎĸͭŚňϢκņ̧ļ5Ğ̤šļČ4DŽě5ź҄Ď3Ʀ҂ӛ҅ҁӗ҃Ƹơ҂ҼӚƜӡ4ω҆Ӭţζ҂̡ϡқϳͿΆϮҋӷϱϽʆͬϲ̒ӻҘӾϪӶӿӽ΅ӼЄλӊȵԈЄӴ̼ӺԐ϶ͳԋԖԂҐЇԚӵԁԕԔԅӹΏԝԓґ3ĉδ̪:6ƿƉǀϦŵϛӒԒ́ԡӸԀԄԸԉԏԢԹԊԃՀԛԇԾԼԵԆǭĔźԗՁԽԻԑՌՃԟՅՐԥԶԤԠՔԙՙԜ՝̌Ćκǃ̟θԬƿ͊գĤǞՇԣ՞՛ԷԘհՍլԿՎձ՚Տ՜կ̗ӲŅ͏ջծչղՒԺշցֆՄւոֈՓ֊ևՍŃźƕզƤɆ֓ԭƤԯҪӂκտ֎։օճՑԞ֢քՂ֥֨ԦҜȈ֤֣֫֠ՖՈ֦֩նֱ՟֍֪֡ȧ֭ԂǗ5W4ׁ̻4ʈׅ3ȄׅɄׁ36ׇׂW2ׄב׀ד׆DzɁׁ19א׆ח͉נגןךזFׁ7פלבקסשדפחהǝƥױ5ΊנήՌח׃ɞ׳ױ״וװׁ͘؈ױמםיץؑWׯגؓױ؋ײؙ؉7Wׯֿ؊ؚ؟؆ؙد،؛כإؐصǚطבצؔחؘؔؽ؝Ȟؠ2ׁגاİˤجمخفذ؎،ج״نגغٙؒٛWـؗ٤ٟ״ًؖآٍؤחِةɧٕ٪٘٧ח؇زإش٢ט٤١ٻ؏ٟؿؖك٧م٭٭Ǫٌئٲوׂْͻٸپٺىٚڙױڀڅضڃ٦ڜ٣ڞׁڤרת٪ڍػٮڐَڔӄثٹؖٽلٿٝڟڇعک؝ףڧ٥ډڬڮڎءأُڳةɴژںښڸرېڟڼڢۃڄڥؼ٤ۀ٨ڊظؔۇڮڏٰڑۋ͗ٓʇۏڋإӔے٤ڠۚ؍ۘעھח۶ױ۟ؾۮڭځگۥڱإٴׅٶێڶۃۯػڹۭؠڮ۸؏ۺڦ۔ڨۅ܊ۿڡדۤۊڲۨƝ۪܈ׅٖۮڛڪW܍۠ە٭ܑםܓۛۃܯۼ׆ڌۢ܀ܜٱۧبIJڵܣڷ܌ۓܫܐڣؖۂܕۄػؚܳܙ۳ܸۦܞܻŃڗ܉݈܋ځܩ۽܀ܭǚܯ݂݇ܖ݊ۆ܀ۈٯܝ܄ی۩˚۬ܪ݀۱ۖڂ۵݆ݝܲݤܚڳ٨܁ݨٳݪݓٔݕݡׂܦ؝ݙܴڻܬ݅ػݠݮ݉ځܵݥۣۉܹݑّą5ͅށܾ܊ޅ٨އג۲ܧ۴݈ۙܧލݚױݷܘܶݹݏ܃ݾܟʯٷނގݗܚޡسݲޥރާہݶܗݖݍޤްڒٍݿ12ȱ' id='1'/><tiles values='0:3524,113,ą17ċčď:1071ēĎĐĎČĜ:2827' id='2'/><msg text='Feed cake to the cat for a megaburp. Use the owl to block bullets.'/></root>";
private static var level2:String = "<root><level width='32' height='280' start_x='16' start_y='278' background_type='1' compression='true' scroll_speed='2'/><tiles values='0:9024' id='0'/><tiles values='0:922,93,ą4Čċč:77ĊČ0ĖĒ45ęĘđą1Đėĝ:ĢĚ1ĝĤĦĠĜğ:10ĕğ,7ėįČ76čĤďĩij6ĕĠĸĉĞģĮ4Ĩij94Ē1ĭŌąīįĜİĺą2ĭĶ2ʼnĶňľģŀōČ68ĻŊŝŜŦŠŁķ,ŤŪŰĎũĞŐĆşűŷŅħĤ1ųŶŇųĩšąIJĶ9Ĥ2ĺI33H50PńįŌŧĻƃēĤƇƀľŵƚņģ4Ő,ơŸƛĮŽŹ,I4H4ƑR90F2W54R27ƲƴƶĒĉƫƭƯƱƳƵƷƹƻDžŹ:ŞƗġƣƢǀƮ2ưLjƶƸƺDŽƽŗƪƬǒǔǙdžǘƼŌƤźŲŮŬǎǥǜǁǓǃǣǗǕŵƿǝǂDzDZǠǏűNjƁƕǦƩijǥ:ĜǫƦŵĜIśH1ƑĻȉ1ȋȍĘȏȑńƪȊȌȖȔșĒȄƢŇĕțȒȗȐȜȓȘȣȢȚȨƒȞǻŞǾ,5ĨőȀƠƢǫȹȟŨNJřŦŵīȶȯĨȺĻɅĘȂĜĹĻ7ĜĘ7ƢĵǻȳŮťǿůɏĘȵƃļƊƌƎƐƒŌɘĩ7ȭŮƇǦȃʼnɀŮŖŮƢ6ɎŮƟȝȾǿȱĮɔɤijɋɏɳɐɌɵąɻɖƂʆƺĒţŁļƿȬǟ1WɦǸʑʓǃʑ2ƷƲʘǡʛWʙR18ʞʙȎʏʗʒǓLJFʕǮʤʚʬʟʝʱʠʢʯʦȥǶʱʓʫʭʐʲRʯʔˀʶʴŵƔɭɦȝɨȯʎʹʮʻʪǘʾʨʠ˂ʽ˄ʣˆʸȕʿʼ˓ʩʿ˖ˆ˃ʵ˚ʜ˜ș˞˒ʞʖ˂˗ˠ˦ʷąť6ɯ6ɱɳ6ŠɎNjˎ˝ʨ˟˭ːʜˁˤ˘˲˛ȧˏ˫˃ˮˤ˰˂˅˨̋̀̃̎̄ˀ̑ˤ̓ʲōťȂ˻Ǻą̢Ȃ3ƞƥʃɂǿɇ̣̮̦ƚɭIİ7ȑ34T(I0ǟ3ƵƵ)ƾƪ̴̶̸̺̼ǃ̾5̳̀͂ı̹̻̽̿ͅ5́Ǜ̵͎Ȍ̷͈͑Ʋ͚͉͔͖͊͌͗̈́͆͒Ƙ̡Č̰ƂŬȮɈȸͱɆͲͰͳͶǫ̋ĘƗͯȃɷǨˋɉ;ͻ̫΄ɹĶ̧ĊƝȲȴĥΉʊĴɚʉʄ̫ĥΕɜ̭ΚȟˉΑĸΑȰūͷ̯ʹ̣ȃƂȻƖɀIJɭŋƥΩĘ5ƒάΏήĎ;Ǿɫɴε̪ŊŵδȵΆǻ3ɊɯɍɌɑʃŭɽφʀωʊţʈΞͿɪĜβεέŠϒΏƗƌĴɧ6ɩżɁˊʄˌőţ˷˹Ɩνɭ4ɯϯȿμƖϪƖ˺·ƅ̩ϰŖΧςĠ0ŌȪ̍˘̛̝̏̅̅ʥ̕˪́ˬˑˢʰ̅̈ƷЊǐʧ̗Ѕ̙ˣГ˱Е˧̞ЌʺʾКБ̆Н̒РЋȤ̖АХ˕ВˀДʡЪЗ̌Ў̘ЦЈ˙˳ЬЍЙˠІ̇̚ОднЃиЯ˯фЩчИЮсЛбʠгЖ˩Уˡъ̐ь̜еї̙̂АаЧвхіТѠЏ˔ыШѝюзр̗ѣл̉̔ΗојѡѫћѭЉўѨЄёкќѾѯЭФ҂ѳ҄м̊ѸѩйҊѽҌ̔ҎҁѲѬѥэҍшѱѢҘєѦѿҕщ҉ҟʳ҅қя҈җѼҙѮҩѰѐҬЇҋѵСңҝѻҴҒҶЫҜҲҞҭҠҚҔҿҫӁһҮҨӅҪљҥӂҧғСѷӆӎҳуҼП҆пӀҺӘӊӒҾӍѺˡґӠҽж҇ӖӈӟӃүӌұӇӞМӧӚҰӪӤтӴӮӋҷӕӹђѤӼӡөӜӲӥҦ˥ӶӰӸѪԈӐԊцӷԆӫӳѓӑӨџҖӬӻԘԋӾӣԎӺԗԑѧҸӝԏӉԃԙԧԇԣԂԞԒӌȑʢԛԖԱԥҢӿԢԁѴԟӢԵ8ԷԩӭԲԦԼҐԉѕԻ2ՂՄԿԳԠӱԕՅԝԺюՏҤӗՌӛѹԽ҃әՓՁȌԶ՜ԜԤ՟ԓաՊԐլԴէՃթԸՒՈԡկԪՇѿӔչњջՙҩ՛ҹիҡՠҏրՆւղPըօՑҵՀԅծ՞ֈփճՐԾ֓ե֕֊ӏցձԠքԨ֒դոՕԀգӵ֟ʦ֦ԯ֝֩Ս֫բӦԫְ֛֔յֆԹ֤Ӣֶպ׀ɀƇՉ֗ևӄֳּ֥֑֪֮ԍ׃֘զ֏մֹ֭֯Ҁֽ֨אՍֱՖןכבԔָ֬ռ՚֧ץֵגֿ֙֎ךתխ֡՝ӯח֜֍Քױ֢ׄ״ӓΈ؆הׁ׳ו֠ש؏קַՋ؈ؘ֖،ӽ؝ժؒ؎ؔמԌؙדؠԄԚبׅذיؖسםص؛ؓشضاعհؿʊׇտ؟إءـؽغئؼֲزكظًقػُْؾٕԮףةؗيٌٗىَِٛٙ؋ؑշװجײ٨։ؕ٠دٖ٣ٍ٘ٱרٯԬįůΛΣٻ͵پΤͷκϗŗČƋՎİɡ̟ƪ3ڇ0ډƄǤΥ̭ȁΥڔټʹNjϾĶ5ϹϦɺڞڛȝڡɷڙڀٿȅȷΣږڨژŞ̡ǬǞʨ36˃ڴ͍ǵ̙ڴڶϽǴǭʿڻ˘ڷ͗ڹۀڵۂڽڱјہˠۃ:ĉȂگdzɄˇƁǑʺǰʫǣڸڿǯDžǸۛɾɥΰĴɳɽۤʁǧijۗːۙǢljۄǷۚljϥΐΏΓΒϓ۹Ľ۫ۅ۞ǖ۴ǚۏۊۭ۟܂ŌϥįĨۼڥĜ˶Ÿ˸ܑۦ˼ܑەĤθνܚϺɪΡĒȡۿʞیܢۉ۬ۆڼۜڲܤܨαΌͫΰǼżƇکŻۧŸ۩ĴۨϏڭګ·̱Ϙܜ΄ۢζܱιţɱۤܒͺڜNJΈζƜΏɉ̮ɺϟϲԭݕڬΧܴϦ܊Œ3πij5·ȲĶƨξĚŒ1ĕܐܝǽݍϿ΅ϊܞپݛŵǎƦڪϦȂݹȼݚͼݾܵݻݷŢļɬ݀ȵɒłΎĎƇͻŏމǍŒ4ޏʌړܛɸݿޚƩڃƘ݅ĐܗijŽȴ,ŽɚާİĻİɖͽݳŸޙ݁ιݵۏĨɘѷ݅2ޢōȈʏLj˶ԒƴݮįҀ˅߃ڵ߀ϽϗЃߊ߂W߄ޫЃ߇ߐ߉DŽߑɣŬśɕҕߎߔߑ߆˚߈̆߈ōߙܩۘ܇ۯ܃ھܪǠ۠۰߅܅ǟۮDzߩ܆܁߬ɱޮnjߚ߽ߚߴ܀ʳۛ۱߯߶ǹЀࠄ۳߸ߵ߫߷ͺޮݏdzЀŚϽ8ϡ' id='1'/><tiles values='0:7430,115,ąč93' id='2'/><msg text='Slide the blocks to clear a path'/></root>";
private static var level3:String = "<root><level width='32' height='274' start_x='15' start_y='269' background_type='0' compression='true' scroll_speed='2'/><tiles values='0:8768' id='0'/><tiles values='0:1668,92,ą21ċčą4đČĎ:ĐĒĘĕě0ĞĞĆ3Ġėğĥ:4ģ9ğą15ċĬĆ1ĖıĮİĘ109Ĥēġ1ĪĽĥľįĹ6Ę2įīĘŀĸŌĦı47ļĘĻłħ4ʼnĽ44Ęį6đąģşĘŒśĎľģI3H4P2RīF1W1ů270ŲŴĽŪŬŮŰŹųŵRŷƁŻĸğŽŭůűƂŶŸźŵŧƊſƍŻƄƐƎĸčłŦĭťŜĦēĢ,ƔƌƆƃƅƑżūƋƀƫƘƨƣĹƥƭƕƲƱƫƓƶƧưƪƚĭŜƞ,ǃDžơDŽLJdžŧNJğƞĨģnjĆƠNjơę3ŜIĐH1ſŹ2Ŵ8R18ǞǠĘņnjLjǔǧƥǚǜůǣǥǣRDzĊĔũǮǝFǟdzDZǻǦąǨLJ6ıǐǕņǙ1ǛſǾǼǡǵĜƜŁȓŧŖƣřȕȔƢșĜĻǎįȟǓąȠǕ5đǩǑȤǫǍljǕŘǪğȄŋȰ:ȪȱȅȴȯȟĠņȱȜȣȹȶȵċȿĠŒɀǎȺȥɄțɍ,ɇɃɉɂʼnɅłɐɂɊŧȲšĤȸłɛ:ȆĜɓġȘɈȮȶȰɪȻȨȭŝčȉȋůǵǢǤǿǣƓǹɳɷǡȍȀǭȊǯǴɼɵȐą9đɱʂɴɾɸƉɺʃȎʅɼɹʁǺʒʍǶ:8ȒŝœɎȖɕȚġĝħŕŁɞʩĜŎ:ʧŝŎɫɮȬʢʴʠȚĨđɐ1ŒţɜijƣĝɐĚʿĜĖʣʡʠıȞLJŗˆʵʟIJɪˍ,ĹǶ,ʽĆŕ˅˔0ʚĚĻĔˎʳąŒŊɜˈʟʤˢȴij˩˨˓ʺʼŠɡ˔ƒˡɏŇđ˄˷˯ˇʨŔ˒ˀ˫˽ȿˑǃ˓˕ɚ˳1˚˷̉ďĖ˛ħɦˮ˾ˏ˓̓ɝȳ˦˴̜ĪŐʬɦȵ˥Śʲ̗̖̕ɍʸġ˟̬̂ˢ̫̄ʶ̨Ť˪˜˖ƴɜǙ4H20Ʒź36ƹų͂Ňǭ̼̾̀̓ͅƿW͆ď͈̽̿ƽ͌̈́͏Ƚę͕͚̻͓͎͒͊͗͐͋͘͞͠ʬʥƳʮ̵̪̞ͩˮɞʷͭĭ̃ȗːͳ˙ͷ̰̌ͺȼ̴ŏ̤̅̅ͳ̧̪˭ˈ̱ͪːĿʀɲʑǠʓȎʕΎʌɶΒʏʖɻʘΖɿʊʗΐʙ˹ľ̶ͫħǸΙΏǽΜʎʋʄΡΘΔίΫ˖ΞΚΠδ̀Έͼ̹˵̮ħ̭̒ƣς˼̩΅ġʼđ8ˠ,8˖8ɇϏȽķ˧ƣͬόįğ8˳ģ8ɋħϙ̶8ģɀʜͿ:Ϥ˓Ǥŧ7˖7ώ7ϓ˨ʚϬπͱȕϺʇϖĨϙɃ̓ʰijŠ˵ĬІŧijЇ̏˜κπχ̲ġͫΉ̅ͼ̘ʷЖЏɕĵĴ̛Ͳ͵ʞɭȫЁПľȢ̝σĸЧĪЩĭŢȸǩЗȳТϽǎ̰ͨɢȷ̵д̝КˣˬЀˁгǕʻ̶ɐйǒΥĽЄЉξĹˠ˴ζΩɽιαήΛʆέΟΪљьğЊЉĺϋċϟːΤŖ˳ĚђΕљѫγѭʐѬʔąϞ̯ъħΌѮјѳƤѻθʆϫϴ' id='1'/><tiles values='0:6790,114,ą895ċ16ď:13ĔĖą10ć' id='2'/><msg text='Use the lasers to kill the badguys'/></root>";
private static var level4:String = "<root><level width='32' height='281' start_x='15' start_y='279' background_type='1' compression='true' scroll_speed='2'/><tiles values='0:9056' id='0'/><tiles values='0:1732,44,ą21ċčą4đČĎ:ĐĒĘĕěďĖē:ĝėğĞ:39ĞĪĤĦ13īēİĘ37,9đąįķĘ15ĶĸħĿļľ106Ę8ĵĬŋıĤĆįŌĎIJĹŊōŖŒŎĮœœħľ9Ċ0ĶŠśşŒ9šĹŤŨŁťšőšŭŢijĺţűůŲąľů:ŞţŷűŭħŴŘŗŮƅŏśſŠƂŸęĩƁ3ƃďƏƋƑƍ2ƔųƗđIĉHŅ0P2S(I4H4ƢR0F2W12)ƤƦƨƪŧƭƯƱƳƧƩ2R18ƬƮưƲƥƼƪ27ǂƹ)ƹĘĵƐƒƎƍƖƁƘǔǒǗǑƍŚŷŻƙĹǒįŅ8ĘľƝ2Ɵ0ơƣdžƵƾNjDŽƻǯRƷǃƺǮƽƿǁƸDzǹLjNJǽƱǎũĬŧijĦńưȈǛƁǝġźġǠƌȎŐƅŜȓǕƋǚƕǙșȞǘƗȟȢȡƁŕƄȨƆȩƉȗŎǢǒȧŰŵȳŦȴȲȵȸȷȺȥƋȱȬȫǞȭġȯȤȍțȣǖɈɇƍčI25H2ǬƫF1W24Tƥ0ɔƮƾĽƸƾ3Njƾ45ɡR6ɤR7ɧɞǵɫŅɮɗƿɒɨĮɳɟ5ɱ6ɹǻɱ9ɾĐɫ2ɏɨɘʄ5ʂȁɯ28ɾɣɫ3ɠɯƑʒɦɡ)ɚI1R3ʘʕɣɨʓʐǫʇʏʇʌɴɏʂ4ʄʆʍŅɷʁɷǼɯ1ɽɷɻɷ3ɾưɱ0ɾǶɴɭɨɪɨʠɴʢʷɾɤ)ĘʎɅȝ˒ƚɉȼːȓɍɏɑɓƬɖɘʛɜɱʥˈɾˇɯ˅ɯ˃ɟˁɷɶʷʽʺɼʾʶɴ1ʴʱʯʭʉʋʄʨʕʦʕʔˊˋˊˉƱʛʝʟʐ̅ɢ̃ɢ́ʫ˿ʫʪƾʬʇʮʇʰʫʲʷ˸˶˵ɟʹˌɱ˱ʷ˯˶˭˪ɫ˩ɴ˧ɴ̇ʞˣɨˎːǥ˖Ɇ˘˗ąćȿąǐ˓Ŷɂɀ̓Ȫ͆Ŝ̀˕ȶŸ͌ű1͏Œ͏Ũ,͒͑Ņ͑0ǥȻŎ͉ǡǔ̾͠Ɂȩ:͝ȔƋ̽͢ȅɃ̻ęȑȌ́țͮšƴǺǀ˞ɗ4dzƽW0ˏȺĢ,ʹƪͷɘͺƢͼ;ę̷ͱĦɄǖͲLJɟǼ˟ǿƮͽȹǰɕΆΘΉˑΏͬɏĪΜɿΞ΅ΗΈΚɍΒɔΕΠήďːͲŬͰθΨαͶΫΖΜεɌΑǴ΄ρΒεΊƗιΎȽ̾ƈĬΩογέΙͿΰφπδϗϋȦ͡ͅϠͯ͊ǏĪ͎ȋš͕ϩ͗ϫ͓ŅĩȻƀ̹͋̿Ϣ͇ͩŜώϥͩĆͥȚȈŎΧϴŁЁŽϤͪμЃȖЉλЈďІ͞ǖ˛ɒπˡɝ˶ˤɯ̱̯ƾ̭ƾ˫ƿ̪˶̨ɟ̦К˳ʵʀʂ̝ʫ̛̖̙ʍʊʩ˾ʥʒ̏ʞ̍ʞ̇ʚƥ̱̊ʖʣйʑʧ˽ʇдʍвЯЭЬЫɷ̣ЩʼʾЦУ˂̬˦ɫс̳ɯ̵ЅΦГɐЕΝΕИќˊњљɨРɰɷФɟѕɸ˲ѐ˴ю˹̚˻шчʍ̓̐и̌ʗɹоʜмҀузцеѺ̘˺ʇЮɟ̟ΓЪ̤ѓˮˀїѫѪМЛК̴ʙĦЂЍęѡ˜ЖѥɛЙɺʣѩˆјɨТɲҖҕҔʷёҒʳэѸҌҋʍ̕Rʎ҈̂҆ʕн̉҅ʣлʤҫжҊгѹʍаҿҏƿґΪҵʾʻ˰єҗүҮɯОRћʺҞɞˏџЃĊɎѢ˝ЗҨѧ̐˥ҭҙӝѮӛҳђӗя̞ҹӐӏʫщ̔ӌ̀ѿӈҁʙӆ̋ԅ҇Ӌ҉ҽ˼һӽҎѶ̠ғӸ˶ШѰӜ̫ӳӟҬ̀ӣѝҟӧҢөДӬҧIˢԠѨӱԝԜɴҰѯɵ̥ӘԕҷӻԒҺъԏԎԍѨԄʡԆӥԈсӉф̖̑ѽҿҾ̗ԻԺ̜ԓԷ˶ҶƿәԗӶʷԲТѬӠӢˌӤɗӦġҡЇңӪҥѤѦԫӰқӲ˨Ҙՙѳӹʷ̡ӔӼьԐӿѻ̒ӁˊфӉӅпӇՁԋԃԾ̖ՌԀбҍѷԸշԶՕԴҲղӴհկ̰ҜҪԡӥĭЋϷġϾǢ϶֦Ż֤͍ϳ͋͏ĸ͔Ϭ֯ϮְǤȹĦ֩Ɛ֧ϡϼַͧȾ֨Φύ׀ΥӨׁׄ׃ԤׅɋէѣΪԨԪ՟ԟծԮ֙ԛ̧֗֕ҴՓѵҸԹԑՎӎӍտԌӂԊӄ҂ՄӃցրՉվ̖֍ҿы̖ӑʃל֒Ѵյմחӵ֘˄Қ֛ҫլҩΉǙ̺ɓϔժӮлНӞԚХטԖ̢כ֑ՐՏ֎Ҽԁ֊̲Հ̄ՂաרץתףעԽנןջ˶ӕοնؔƿԘԳו֚ɥ֜ՕՠƱϣЏׇ؆Ԧƪ؉ˠ؋אԬג̮؏Сؑԙӷɺ֓دحպײӾҿՊхפևצԇօԉٝإ։Ѽ٘Սʫױҿ׳ӓ˷ؖךЧճˬձطדבҝ֞աؾͭـƓҤلəنٹوٷيԯٌصُ̖ؒ֔ؗӓʅٖҿׯljԂԿֈؠʣք҄١ڜٜښ٥סٗռٕםٓӺٯיٱ֖̩ٴПعهΝ֟ũΤȮȤ؇كΔ؊ԩҩػٸڴٶڲٳگڮڭƿՔْҐٔ٪ڕ٧ڙѾڛɢփק٠Յ؟ۗڤبսڧےکېګٰؕزٲіۈɬڳӡغй̵ڹϏϼȏټǗڽҷۂՇԭڈהؐڋَӚ۩ʸٮۦجڨتڦۡئ̎שɢڞрܒʞՇۖՋԼ٨֏ؘڑӖڬرѲז܂܁ƾ՝۱ˍҟ۴ϻֺܯ̈́ͣϺϵȆţ͏ֳܹܶϮ0ϰֵ֪ϲե־֢ܱܰ͆ħ݂ͥͣ5đָŎ5șȉݐݎݒȐݔijͳقթمہӯ̲ۿܨًѭܥ܄ܢێո٭ۥۤ܌ږ٦ٚՈܗܖڠ̈ۜݲܘ؝ژ؛ؚמܞڪڐܡِڍʿ܃ݢٵ܀ڇխڅڷٻζ͟ȮݘӫҦۀފݞىݠډޅۉܤݥށذՒ܉ݽ܋ܜݺܚ؝ٛ٣ڡ̆ۛڟۘ؞ݸۓ٫Ցܠۨیܣڌݣޚۮظ۰ڵޕ۳Ϟƕސըβޓ۽غ؎ޙԱ۫ޞހչݪڔۣ۔ަ۠ڣީۙءݴޭݶٙ٦ڗ٩ߖ܊ߔݿܢسރ՛ۯ՞߁ܬ߃ЀɃ߆χիڶޖވɩݡߎۊ۪܆ݧ״ݼݻۢߣܐݱؤܓެܕࠏࠎ٤اةޤࠈӒۏۍԵނѱ՚ݡܩ߀֝ɴ߂Σ߄ޏڀԧ߉ݝ؍ۯѬࠁޜۋݦ܈ߩޢݫ࠙ࠊࠗࠖ۟ߜкߞ҃ࠒ٢ܑࠍӀڥݭߗԔڏ߬ߏࠢޙࠤۄۃࠧߴࠩ߶ļ֡Ŝȋۺ߈ݛޔࠦމۅއۇضޛޝڎޟߓݩߨߧ࠻܍࠽ࠕࡆࡅֆآݵࠓӊࡶࠌࠋߘʈؙࠛࡍޠࠞ܆߭ࠡڱۆࡕ۲ࡘηЎֹ݅Ŝĝ݀ϱ֬͐ϭֲ͖ܻ͚͌Ŏɦ݄ࢥĦࢣřŻࢨġ6֡:ࢮŜ6Ġ݊Ĵ' id='1'/><tiles values='0:3024,47,ą1465,1ĐĎ:9ċ8ė88ēČė3ĔĖą95ēĕĊĥ,50ĜĞċęąĢĩĜ91ģĪĘıė907' id='2'/><msg text='Buttons activate special powers! Don't press them too early!'/></root>";
private static var level5:String = "<root><level width='32' height='300' start_x='16' start_y='297' background_type='0' compression='true' scroll_speed='2'/><tiles values='0:9600' id='0'/><tiles values='0:1348,44,ą21ċčą4đČĎ:ĐĒĘĕěďĖē:ĝė0ĞĆ7ĞĦĝ9ĥą3,92ĘćİIJĥĬijĨ106Ę29ĵijįıĜ5,8ĽĥĤĩŋōēŌŏŎĎĩ8ŀĔđ8ġĚ8ņą1ņI33H50P18S(I22H8P2R0F2WŨ)Wťľņ8ĶęŘįďĨšţťŧũūŭůűRŨŴŶŸźĭĆįřľŘŝĢŘſśƂƛŇŚƙĜƜĘįƅŤŦŨŪŬŮŰŲƐŷ8ŹŻŞĨ8Ɵŭ,ƨƇƫƊƮƍƏŵƲƴƔŨơƘŇƚĝžljƸƤLjğNJǐǍǒǏŗǑƀǓďčƼƪƉƭƌŲǂƑƳƓijĽǕ:ƧŢƩƈƬƋƯųǃƒƵħŇƟnjƢǛƠǪƞǔǻŜǔƝƁłƻǭƽǠDZƍƱǵƔŀǞǯƿǢdzǥDžĹǙĊȑƾǡDzȍǦǶȐȈǟǰǀưǴȠƔIJȂǘǾȅǘĻĊąŀ6ſ1đȷſĝȱœŒŊġŀȾĩȹǐȼȿȽőɀŐɈœɄĮŀĸĮċʼnɓȽɔńŊɔ4ɗĶɕəɖœɑĢįɛɠɟķſņɘɞɬɥďIJ4ȪĥňĘĨɘǫ,3ȲŁąƷŖƕƻ26H32ƈRĬF1W2ŚƷɊ6đąȚʂʄʆŨʈŴʋʍľǼnjƝʁʃʅʇʉʛġLJǗęŠʕʣʘʥʌʧŽġʫʢʗ8ʙʊʰijŽƚĿʡʖʤʚʺŞƥǖǹŘȁƚĴŬʵˁʹʜƃŇȶȐʬʶʸʦœʩ1Ľˌˀʮ˂ːęčƗǖˊƧ˕ˎ˘ŞIJ˝ʭʷʯˡ1ˣȄǸȀĘ˜˨˟ˏ4ęƦ,5ĨȳǼ˛ʿˮ˗˃ˢ˒Ęŀ̀˷̅˖˰ġˣƹ˸ˍ˺˪Ćˣġ˧̖˯ˠʧƷNj˅ǚʩʾ˭̟̐ijˈɵ̏˩̈į̍̂Ȭʀ̧̮˱đ̵̗̈ş̱̊̂Ćȯęʔ̝̇˱ȫˉijˬ˹̞˻ľĊȮ˵ṷ̺̈̀˱ǩʐʒ̀Ǽ̦͋ͅʧ̣̕˞̘͌˲͑ǽ͈˫͓̈͢2͏ȶƄ̑͜˾ʩǺ̋,ʑ̪ʞͩ͟͝ij̓˶Şʴ͡ͼąʼȃʝ̹ͪ˱͏ˇǙȴ͘ȷ͚̓ͱͨ͐ͳ̫΄ͻΔ:Β̆Λǩ̢̤̽Ɵ1͊̈́ΛͬͶ͘˔Χ̩ɳΡǪ̼Έ:ŽΌ7̤́Ɣī˴ɷnj́Ňɻ8ρɴɇχɋɳŖς˙υȲƠ7ϋ7ɻϑœιɌψɂ8ĭ,ϓϖϒϏ4ņŋŬH1ȌʹΥ̇ϪǂʋϪ27˂ΥœϥϧȧϮŲʯϬϛϩŲϰϲɝϵϨϸϫǣϼЄϿϽϴŮ϶dzЄϺІЀRЉϸЋϦЃŷϹВϭЙГϱЊĥЂϷНАƎЇНДЙϘͶμĨϤЌИϪХМϯПЕСаУвЛЧеЀЖЍВгнϾжЪиЗкКϽЦВЩϳшсьуюцѐʁщЎФмѕпχĢɁʧɤ̒ѡȆĤɸIĻ7ЗĈTū1эF3źŹμϣѢĪѥŞѣĜѺʀѧ4ѾĴѧƧѪѬ4Ѯѩѱѳ5ѵŅĦ҃ѤҐѼĔ҂ҔѠғĦ҅0ѫϧѭѯҋѴWѶҙҀҖѹҥҒѧґ˾ѩҜ҇҉ѰǂҌҎĔѷѦҪѸҀҷϙҺɉϘǫɐɝɫӄӃɝɂɂӅɡӆӋƦɶӃdžɐƔŃſ3ӏżɼǫӗďɪӕӛʪәӖɼ,Ɇ˿κǝ2ţĕȒТʸƑ2ŹɱǨӡӟ2ӝӎәӶӴә1ͯӪϧȜйӮЙӱӓӦɍїɷӢɷӺԊӵӷĮӛӤ0ɻ̿ӨӿӬԂʉӯԅӳԎӹԐӚԠӻԌԡԋӇҿҽЫӈԩωĩԊɪԆτ˙συʼn˽ҮҝPҟҊŴҴijĥͷɒɢ3ŀϕĥϞՈϒκˬ҆Ҟ҈ҠԾѴĘ5čȾǷģԩ՛ԋԆՂ̴ՎԻՐҊҳҢϜŕԴύժķƔ5қԺԼҲϼҴң˙ϜՉϝϠǐӽωƠսЮ՝ɶԲώիɳԷՍүՏұdzԿŞՁ͘ŃӓՆջՊϖՌƻբղ֎Փ΄Ֆ՛վՙĠӀ֢փİ՟ΏհҰҠզҍնϊլŇֆխՔ֭֫մէշϖϔ֖ӁԮԬԫԭׂԪǘЯљтќьяЁԂьдхўјђЏЈіѓטШךрбыЄגОהӭאפфצРועЅѱיקםבסъװץёׯєנџ4˧לחѝרת؉зײ؊״؇؍׳؆ћ؈ؘؚؔлؓ؏؋ؖНؐњؠؗآчةשئبؤ؛جןўΜҜ' id='1'/><tiles values='0:9600' id='2'/><msg text='Smash those blocks into the badguys'/></root>";
private static var level6:String = "<root><level width='32' height='318' start_x='15' start_y='315' background_type='1' compression='true' scroll_speed='2'/><tiles values='0:10240' id='0'/><tiles values='0:1220,93,ą21ċčą4đČĎĒĎĆ7ęĊėĔĖ4ĘğĝĆčĤ9ĢĞē:ĕĝįğĦİēĥĮĨĪ:č106Ě1ġĚħĬĶĬĐĵđI24HĉP2R0F2W18RŕőœŕĚ2,ʼnŋōŏřŔŖŘŒŤŜŞŊŌ0ŎŐŧŕŗ8ţśďŪŠŭŢŰťųŻĚĢşŬŮŦŚŖŴ8ũƁšŲƇůƅƉūƋƄŤƎŨŶƊŹƌŻƕŵĭĊƘŮƍƓƝŝƠźƅƚƏƗƑƙƢŽƪ:ƥƬơƛƣƈĔŷƂŏƶƜƷƱƹƒƯƔƇƐŸƃǂűDŽƫdžƻLjƆžą5ĞĸĿĜƦƽƩƖƿǗƮNJǛƳƧƔƶDžƺǘǣƸǗƼǞƲnjǙljǐǟǭǪǰǬǥdzư4ƟǠǦǎǤƋǝǴǀƭƵǽNjǥȀǸȂLJƍǫȊǍȌȁǩǎƽǾƙǷǚ3ƈĩŁċĸĺ0Ʒĥ5įĿŝǓȜțĔĜĨĬȣȬſȫĴʼn1H1ƴœ6ǙĽǺȴȶǡȹƓȻŪȽȷWɀǂɂȳȵɅɇţɉĐɋȿȺĘɊȾƕɍŧɏɄɒɁɔɐɖɎɓȼɑɗɢɃɤɡɝīſĖȲɟɌɦɕɰɪɧɠəɱɯɜɈɞɛɥɴɲɺɎɼɨɷɿɹɾɻɣɶȸɸɽɩʉŇȢijģĴȯɫǑʑĤʀʈʂʊɳʐʛʏʝɵʟʣʡʅʠʇʢəʃʋɆʍʄʌʆʎʨʦʪʵʬʗĭɭʭʥʹʤʁʿʧʲʩʴ˄ʶˆʯʳʱˊ˅ˌɘȸʽˁˑʞ˓Ɇ˒ʜʿıĶȞį4ȣĊ˟Ęˢˡˠ,ˤ˧˦ķȰ˞˦˨˯ˮ˱ʔſȣ6Ĝďđ7Ȧʻ,69ĚȣI3ŋ1ǹŎ̂Ƚ0ŹW8S(ʼnˌćXŔ2̎̐ȾW0))̖̌2ɤ15Ű2̓ć̞ɑ̛̙̝̟̏ɖ3Ŵ̧̤̘̜̬̔̍̚ɤ˟̸̴̷̣̥̪̗̕Ů6̰̼̳Ŏ̶̩͇ŏ7̢Ś̵̱̦͈̫̾͂ŏ9̲͒ͅœ͔̭́ƃ0͎͉͕̔͆͛͟ƻĉ̻͚͖̠ͦ͞3̒ͬͨͮ͋͢ŗǒͫ͑ͭ͝ͷ16Ͳ͐̽ͼ̀;Lj͋Ͷ͛ŗ9ͤ΄͊Đ͙ͻ͵ͽΒ2Ύʹ̨Η͖RŊΔΖ΅Β5ΚΕΜΤΞ27ΡΉΝͨΟ8ΧΩΑΞ̯ήͥΰɤ3̡ͺε̿ηα3̯πίΪτ̺͏ΏΣ)̓Ċą̡,˺ɬ˽˷Ʊđ6ƾĮ˾ŜϚϜϚ˿˸ϔ˻ϝϘņϕĠ˽ϣϙ˽ϡϗϟϥϖϞϤϛϴϭņϷϫ˶ϲϻƱǖ̃ȵ̆2̈ȵ͈̊ͯʮͳΨς̠ͧδψσνκΐЏɖϋͣΛЎЊ̓ЕώЗŮ͍χλωɤ͘ФЖНƻ͡ЩРЫŗͪόЛ͓Цɖ1ͱЮζСƻгЍеГзкМΆПла1хсмΟĻэ͜жŮĈБХтѕǹђΊΫΦќμɖάшцΒγѠєŏιѨљѪοпρюаυѤѲͷ̃їΐϐľčϽϤϪ˼ѾϮҀńˣ˲˥҆҉҈ҋ˩Ҋҍʺϧ˘ʫ˔ˀ˙Ҕ˃ˍˈˏʰʮː˗˕ҖҟҕғҢҘҞɚқˋҝɦϿґ϶ϰ҂Ϻϰʖʓʞǯˇ˂ɯҷҙҹɄһҧʽҿɦҴʖ˼ģ˪ˠIJӇĞӉϖέ˳ӍѼċ˦ӐҐʼʗӔӓӌҵ˼7đĊӟӈӁǏҸ˔:˿ɲӂɴӜӢӡӠĆƈҘ̯RШœӴƓӴѣŧ̯ſҕӹ0ӵţӴԃԁӻӷϑěӚӒԌʤӫʉĹԋԋԑӪӥҼҔӜԙӊĶӎԍԕҡȻԑԚȜԟҤɂԣԌ:ǒңӼԆέԭǙӴӶWӽǨʇԀΟԯԈƕԲԅľ1ȫԝӨԒӌĭ˿ԨՃՈ̯ĖԝԎԖӀҶՏӃՍԨՎԠҒʸԘՂˢԥՙҥҺՒɪՃ՝Ӧ՟ҾաԐŊՌӣąՇՂ̡ҠԅԂԸԇԴԉƀԷǂԽղնԵЀՄӊĉԬԻԳӸջԮԾԶɽԸևԁվԺշľձ֏Ա֊ԭӾʛ֎ղ֑ĆիԩȮՂ֤լĭ֦ԩչˉӺ֒ֈղ֏֛պ֟ս֖֠ħ՛֫ˌ֭ղ̠֚֝։Թֶֿ֞Ć֕Իտԁ־Ԉֲ֍ׂԼԁֱϒ՜ʇԳűնŵҕטŖךƾƲɽם׃ǐלƍןľĽՕՈծլւľǖחק֒כʛףרƫע׳NJצƛĆĢĿϑ,ĘĊĻȡՅ؈ć؆Ļ؏؇Ć́ײ״ȡȑؖƨ؞ؘľĢĤ6Ī˽ا6ʕӊ،˽ɂئĘذϒױؚؗضصءط؝Ɣ7өŋ4ŮЙΙפƨи͢ه؟Iكمً5وǢйœٌآƟُŏنْןŗٕWٗطٚRٜٓűيŧ٢ץَHلّٛ٧ť٠٫ƪŞ٤٦ٞ٩ٖٝ٘ٷٮِ٪ٽƢٴڃ٬ٸٱٺڅٲɔڈڂٲٟډپ٭ٯ٥ڒڄڗڇڀٰڏڊڙٶڔځټڐٻ١چڠڎڣڞڝ٘ĹقڛږڬژڲښڕٹؘڑڴڨڰڷڳڪړکڦڤڋٍہٵٔڟƖٿڶۉ٨ۄۀڼۍٳےڍۑںۈۗۆڧۘڿ٣ۖ۞Ƶۏ۟یۙۓۦەۥۡىۣڵڢۂګ۫Șگ۪۰ڸڥۇۚ۠۶ھۼۮڜ۲ێ۔ٙۻ۹ۧ܁ؙۛۃ܃ۋۯ܆ڹ܈۩ۜ܂ۨ܄۵۸ܔ܉܅ܛܐ۾ڻܘܞܚڌܗܓ܋ܖ܍܀ܠܬۺܢܨܑą3۴ܧ۱ܮܜܷܰ܆ܒܫܙۭܡܶ۷݀ۊڡܾܣ݄ܯ݂۽ܼܦܱܸ݇ܽڱ܈ܟݍܪݓܸݕܛݒڽۢ܌݆ݘܿݟ܊ܻݛݎݡ݈܃ڮݗݝ۬ݣܝݐݖݠݭܭݲݤ݃ݯܺݸܩݳےݚܥݬݾܤۅݰݥހݽۦݿބݺݦށމރېތݞݼݷލܥݫވݔޑۤޔܲޏޛܹ݉ޞݮޕޅݻޠޚݙޜۿݨݱގޫݢާޓަުޖޟݑݧݴܕިޗދޥݵݦޙޡެޣݜނߋߍݹ߂߈ݩߒ܇ߔ߆߃އߛߓݶߠߜ߁ݏކߦޯߨڭĉչnjT̏1ƚ3ԴԴ߳ߵ3)߰I߲őߴ߿ů߿Դߺ߱פࠂ3ࠆ߸ࠄճࠇࠍࠊأȎ߲Ŧࠎࠕࠊࠓࠁ߸ࠚ߿ࠋ߲ӻࠎࠠ࠘ࠅШࠎࠥࠐą8ؤʕࠬӑԪĜ؉ӑȤ؎ϤƦ࠙ࠗࠀ࠸ࠃ࠙߾ࠛ࠽ࠝ࠙ࠢࠀࡂ࠻ࠤ߶ࠧࠝࠑ࠶ࠅ࠺ࠈࡎࠞࠜ߶ࡇ߹ࡁԯࠡࡗࠣࠌࡉࡈࡔ)Ŝ0Ģ7اࡣĘࡥӡࡤȭϔɂࡧϔࡤϴ˦رࡲ˪ࡪإࡵࡴࡺϒ͡ŞĻ7ٮȶ̃࠼Fࠀࡒࠇ߸ࢊࠇࡑ࠸߷ࡏŽࢉࢋࠨƱƥࡿࢁPࢃࠅࢇ࢝ࢅࢍ߶ࢎࡎࢠࢨ߹ſә˫ϒŀܳӝ҅ʺՀӝĻ́࢘ĕ࢚4ࢄࢆ࢟ࠈࡔࢩࢠࢣࢇࢦࢤࢡࣁࢪď0ࢀࢹ࢛ࠌ࢞ࢽࣇ࣓ࡅࠌࣅࣄࣆࣈࣂࢫİǔȮ˝˛ӘϮıΙƲ3ٮŹЅŏΓŧ4Ό࣯͢ƓࣲфœࣲоWࣱࣴǙࣲьࣶࠋ࣫RѴ࣮ंЙ࣯ţࣷऄφࣶऄईअࣱࡼȚǔՇĸĉױࣧЄ࣪ʼnѐएыࣻࣳŗࣹࣵटतࣲǂࣽऑजѪऋथѸऎऄѯरटࣻएऱࣿϟखľ़ࡼȫ˝ूࡪ7ࡰȧȪب࠲ت̀خोĸˢӅࢴϪϔӰ4č࣌ࣨࢺ࣪फ़ࢧࣔࡕ̬ࠜ।ࣀॡऒԊӅࢲĥ॓Ȧॕſक़ࢸŭ࣏ȏࢾय़ࣙॡࣕź࣒ࡓࢾࣚࡊسϳӯϖ॒ȱॗࡾग़̆ॴॷࣘ०ࣈऀ॥ॶএ࣓२७ࡦॖӘ६Ĝ॔Ӯĭॱঊॳࢻॣࣗॶॠঐढ़࣑ॽॹࢌװࢱচıগঃĔঠ࣍ঢढ़থ࠹ॸॿপࢿॾবখজ८ঞ५আҐज़ঌহࢥ१ওবল९ϫ͍ࡦĬরৈʑӮϱঁঝঙৗৣԊ࠭ঁ४˹Ӡ২ড়০ৢ҂৲ӏৰেįঢ়įौঁ6ԧŃγ' id='1'/><tiles values='0:1996,47,ą5ċčą3569,11ĒĆėęě94ėČĎđĎ:3Ė5' id='2'/><msg text='remember to use the owl to wipe away those bullets '/></root>";
private static var level7:String = "<root><level width='31' height='217' start_x='14' start_y='214' background_type='1' compression='true' scroll_speed='4'/><tiles values='0:4727,I98H100PĊą19ė' id='0'/><tiles values='0:4349,I105H250P26T(I3R180F3WĚ165ğġěĒĦĢ3ĥĠĢ2ĞĮěĎĪR9ıħ7ĭħ6ĸĚ4ĻĚ3ľĨĵńĈŁR3Ńĵ31ʼnŃń28ʼn27Œ5ŕ4Œđĵ2čĵ19Ł),ą11ċčďđēĕėęRńŏōńŀĵĽĵĺĵķšĴIJ1İšĬšĩƀĤšĝšţŞŠIJ2ŝƏśŞřŞŗŞŔŵŇŴIJŋŇŷĮťąş0Ū04ĐĒĔĖĘ1ŲĦ2ŅĠƱŌƳRƠWƱŹƶŻƶŽƶūưěƂǀƄǀƆƹěƈǀƊǀNjljŏĸƱ1džǐDŽǐſljƿljƽljƻljƸƴǒƲƹƢĆ52ċ2H1ĔƯ6WĒǯW0ěƊǰĒŦĆǪǬǮĞǸǵǿǴǶȂǹą4ǼǭƱȅȁFǰǵĜȌǺ3Ǫ1ǽǓǷDZȍȏdzȆǻIşȗȄȎȚdzțȚǺȈȠȖȊȣȀȦȝƥą6ȉǾȤDzȂȐșȞȪǫȭȌȰȑȷȲȟȾȶȯȹȮȨąȔȫȢɂɈȤȧȼȕɏȻȧɓɄȽȬǮɐȥɉȒȳȵȋɃɁɗȩɣȱɦɡɅȢɀɉɞȞɍȡȭɱɘȱɨɎɵɗȰɬɛɖɯɒɸɢȠɮɥɰɧȇɩʁȜɶɹɆɤɑʍʉ:ɳɜȘʌȃɾɕɻʙəʏʗɊȸʂɬȴʅȿʇʂʎʊʧɇɟʪʔȽʆʒȃʫʕʜɝɼɠɃʠʀʩȜʛɺʹʞʃ:ʦʐɪʈˁˈ˄ʶʲʨʴȺɬʖʾˑ˅ɿʝʿʚʼʬɴ˃˚ʟʄˌˠʢɚʋˤˎ˧˖ʶ˔˙˖ˋʡɶɽ˜Ʌ˱ʺʤ˴ˇʳʯʓˋ˻ʣ˽˴ˏʮ̀ʵʔ˭˟˯̂ʸʘˤ˰˕˼˛ȀǺ˺ː̑˒̋ʭʑ̗˥ʏ˿ɷˬ̌˥˳̓˝˶˄̏ˮ̜ʥ˪̜˩̚ˉʰ˾̖̘̥̅ʷ˂̷̍̊˘̫̙̉˞̷̺̠̿̄̕ʱ̵̭̝˝̟ɫ˴̧̩̈͂͊̾͒̀̎˹͉͇̳͎̼͚͆͞ɋ̸̣́ʻ̹ͥ͟˸ͧͤ˲̛̯ͦ͊͢ͅˣ˫͈̰ˍ̢̇ͭͪ̽͑͢ɷ͓Ϳ̤ͯ͠ˊ͍̀ΆͫΈ̲͏ͺ˷ˀ͖͕̻̐ͫ͗΄ͷ˨Ͷʹ̮Κ̷́͐ͩΐΔΒΑ̪ΓΗΛͲΝ̴͛·ή͡ɲΎ̨Χ͔ΦΤΨθΪΞ̆͜ͱίΊαΉ͢ΡͻΣͽδ͘ιηȞͰ̱ΟωΘ͵οϑξͨχ̒ϓͬΏϜɔϚϟˡˆ΅Ός͝τϡΫρυϊΖϫἘϝϲΩϏϦϒϫν̶ϝϻ͋ͣϵλϱΥώ˦Ϣε̈́ϸϘϨπβІϬЎȓϯϳЃκЅʽЖͮϷϔΜϖОΙ˓Г϶ЏЁЗ̦ЄКɄϐПΰϩϧϽσаγЇϋϴЩͼЕύЪ̔ЊϼϺвϹЏϾ̡еϰХиψкмˢфέЯт̞сЋϮцДшЙйљлћнМάРϕЮЍϪɄφϣ˗УЂќьўąķ2' id='1'/><tiles values='0:6727' id='2'/><msg text='Destroy King Meka! (Find the safe spot!)'/></root>";
private static var level8:String = "<root><level width='32' height='232' start_x='15' start_y='230' background_type='0' compression='true' scroll_speed='2'/><tiles values='0:7424' id='0'/><tiles values='0:1026,90,ą23ċčąć5ċ2ĎėĎĆ7Ěč9Ęą41ĞĒě1ĖČěđĠěģĞ:ĖćĊĔĩġ:į78ę79ļĝĔđ8ē,ĺļľĢĘI2H1PķĘ44ęŒŔœčŕŘŗ,řŜśř:đŋōŏĮŊŌŎŐŞěŧ4H20ŏT(I0R1ŃF5W2ŷ65źżŷ50ƁŽ13ƀŻƇŰƆŷ0ƊƂČƎ7ƑŽ6ƅƋR4ƖR3ƙƂĨƎƠ2)ųI1RƤƃƎƟƎƜƎƘƔƝƓƚĕƎ1ƍƶƉƸƄƸſƸŹƋ)ěĻŋŮŰŲŴŶŸƫ1ǀƶƾƻƝƹǎƐƎƵƂƕƱƫưƚƮǑƣƆƦŴƩǎƝǠƂǞƂƲƚǛƚǙƇǗƶƺơƼǑǎǐơǂżDŽŚī,ţũŦȁŨťďūĢȅLjű2ƧnjǼƇǺƇǒǶǔǵDzƴƫǯǬǝǨǧǢǃƧǦƽƭȞǜƳǘǖȗǎǷơȕȒǔȑǾĸȋůȍȏŷȑžǔȰŷȮƌȫȪȩƚǭǪȟȥƚƤǤƨƪɉƂǩŽǫƗțȚƸdzơȘȿȽǹȲɋȀŠŢȆķ4ŧŤŪŠƈȉšȅɧĮĤĭğġĥƨ07HģP34ƧƇŹ4Ɏ4WʀƅʀǍFʂʆɿʁʃʍʉȴćȁćɷɹɻɽȺʅʌʄʈʘʈʃʝʛʉʎʃDŽɱĥɱĆĖŋ1ɮčʫʭȅʬȃȈʯʳʱʰʵȇĆœʦĪąđ5đʿĦ˃ˁȀʾɬʨįʨ2ɰɤɢʲȇʷʶŝ˕ş˗ŖŬ˓˒ʹɤœ˝ęˠʮˍʸɣˡ˦ʴ˨ɭʶˢ˛ɳˢĸ˟ˤˬ˳˜˵˯˪Ȃʺɦ˴˥ˑ˸˿˧́ʼnȉ̅ʽķľ̇˙ǿĢĝʽĤ˃9̐ˉķƄȁƟH5ũȏŵR27ƅŽ̡RƓɾ̡ʟ28ƀȔFș̭ŷ9̫ʟƟ̣ƮɁ̯ˍ̧ʀ3Ƣɒ̫ɛ̸2̶̲̻RƲỤ̏24̺ƞưŽǛȱ̸5̓ȴ6Ċ˝̤ƅ3Wʦ˖̋ɫŧ˿͙F͛ˌˣ͢Ɠͥķʑͩ͘͜ŐͧɧͣͪħͱũͳͯŬͶŏʨͬ˷ͽͰˮ͵ͮͦΆ͚ĔͻŽ·ͭΊˊȶljȎNjʝƶȓƃȭȬɗɖǮƝɆ̾Ȧɏ̢ǣȣɎǡǟȧɅɕɃƶɘ̷ǓƽɝǁɟąʪΏͺΉͤĆ΄ďρλ̌̅͞˩ͨΒ̕œŠĖώĝώɫ5ϑŗıϓϕěϏϖϔϓɫ4ľψχ˘θϣ͟ψĸɰ̓ϙč̚ɠśI33̙ȸŴ3̞̠ξŽ2͂Ϻʝ͛ƇƼЀΣЃΊŽ̼ƀЀǽˇ̓ϮϒŠϠ,8Ĵ:ϬϦ̌ЖГňϩГϰ˷Ϛˮě͗Рϥˠ̪ɯİˍİˋŐˎЩ8ЮГ˂Н8ϰʓɸŎʖŴ̦ʜʅʟʙʇʉʠʚʣ4ʐľШĢĤбŬьдįжμɵʔкɼмфпʡʠʟтхʢчГĖыЪЯѤʦєйɺїŋљʞћтѝʋњцшЬьв8ѐьϖŰʒɶѪлѭўњʁќʊʙѴѠDŽъеѹѻОˡиʕѬнʡрʜѱ҈оѯѵħщѣНˌѦҢΐғіʗ҄ѯ҆ҚѮѠʎʥɤѸюгазҀҔҩѳҫсɿѲ҉ҝҋҟѢаҏЩ7ŀИɫĨГēҥęćĻğ˂ϓϡϤ͠ФϳɹΖƨɌƩ̥ơǗ2ǚ̷̲ӣɔ̭ǽȹʇӧɎӭǏӥƬӯƾӭ̶ȖөΣӧȴѾŋӚ̛ǥӞͣӯӢӤӸŷƍӭ͇ӪΗӬƂ̧͑ӳԆĨԏƞԔƈӱ͎ЌσĶęʨ̉ɳˊЗ̊φϢŝԣϟđϢѩӛҺӀуҽ҅Ҫүʏ˚ˠ5ķˀԸТʴҧNJ҃һԯҙҾқҗԳDŽϨ3̉ӎĬ˯ԽӜҖʚҬՃҮцʤԵХ:džŊՎԭҜՁՄҿ՟Օѡʽӎ4ԩӗԥժլ̋ĸՌϧϤ:ӖձԝҲѿѕԾՐ҅ҫԲդȴϛěմϥˊҤւԤխЙ͗՝јտѰՓ֏ҞʿĻ̒ŬĬ̓ĕċ̓ĬՋ,Ϯ˅֜˄ˉ֙ɶūΑξĭŕ֨ʹ֫κϋ֧֯֩ő˲ϊֱֳֵֶ֭Ͳλֹ֮־ְּׁͷֻֽׅ׃ׇͼυıɲնŬФȌԾȐεǸƸɀԇɂǰήέƯɈΪԎΧǥΩȯΤƚɓ͆לƒךəΜδƿɞǣDžΔϵ̝ʇΙɜחΝΰΟԅםקןץɊעɍȠΫמȨΠίӡӷזζײĔФ˥ؕ˽ؗťˈɢؖ˶˸ʭĆӌˈϝիСإĢքȵԫӿԿԮҘաՄџҰ֣Ţ֍حգԱՀրϯĮةɪБةԜϥفӋթҴLJȷͼʇЀ8Ɏ͛ƘϿżٍُʃגнَِWْٖ̩ٓѽ״ٌŹٛΊٞ٥ٔ١ҴɩوĢكشٱ֠ˉؚ֞ѷѥٷʨЗاК;ĤIŮ4ΊǏٜ76ϸڄڈٖڇԵځ٤ڄΎڊچڈ̟ړٖ6ѽĊ;ˣגŸٓ٠٧הϺٕ٩ϖʑֆĥ3ӒĜ,ګѧԠڲڰɴ՛Тԧڸշԣɬѩćű҂ڒʞ7ͣʂۃƓۅW7ۉۉǾڵ̃:͡ɮˌոō0ڿҕۄۉۙۆпۊ۞ی˚ڻЭփԻېۥ֕ںвٺģ' id='1'/><tiles values='0:4360,49,ą3063' id='2'/><msg text='Make cover with the sliding blocks'/></root>";
private static var level9:String = "<root><level width='32' height='320' start_x='15' start_y='318' background_type='1' compression='true' scroll_speed='2'/><tiles values='0:10240' id='0'/><tiles values='0:1220,44,ĊČĎċčďē:9ĒđĐĔęĕ41,7ēĠĢ93ĜĎĖĘĊĥđġĭĝğ9ĕĦĬą1ĴĦīĕ17,106Ĩ2ėĵĆĸĨ45,IJĨŇīĹ,I4H4P2R90F1W24R27ŚŜŞđŒŔŖŘţŝşšūťą2őœŕŗřśŬŠŢŸŰųŨŶůŭŻŤčĵŋŐŌą4Ľ6ŊŏŦŴũŷƄźƁƐſŪżƂƖűžŵƙƔŮƚƗƟƓŹƢƄƇđ6ĝĴij,6ŐĚņĪưŁĺňĦĚĪƴƻƳĞŋƯƾĻƺĢƻƉ:4Ħ7ƲDŽƵ7ƷljŎƪƏǕǔ:ŊƆǚƈǜňğnjĨĽŅǙĹ:ĽǐǞưĽąǢǥǤǡĠŲĶĦI32HĿ0ŖW50S(ŧƟƁǿȁŖȄƑ2W0)ƠŬ))ȇƘƦŞȑŵȕǻȋR18ƁȏȗŗțȃȀȈȟȊȌƨȎȐȣƘȨȔȫȖȯȘȌȝ)XȊĨ1čǵǷǹǻǽȟRȢȅ2ȥșȓ4ȞȱƀƚȟɅȌȡƚɉɃȚȜɌɊɎƕɑȪɓȭ4ɍɊȦɁɚȶĊĶŲ6ǫǦǔƵLJǥƌ8ǩƆIĿ7HǶP34TȀ1T3Ǽ)ȸɰɳ0ɵɷɹɻɳɾʀǗǀɲɴɶ2ɸɺɼʋ5ʁĶʃʐʇʔʊɿʗʍğɨŦʛʒʈʕʟʘĆʚʅʑʓʉɽʩưɰƊʢǫőʥʯʨʌʙʸʭʜʰʖʁ6ʴljʶʤʿʦʝʱʼʫʾʆˊˁʲ˄ǩʣĊʄːʺʞˍțˏʮʧ˛ʠ˔ʵɫ˘˟ˋ˂ʂ˞ˀʻʠŅʎŐ˦ˬˡʪ˝˲ˑ˭ʁ˯ˇ˗ʹˠˌʠʽ˷˚̀˃˅ǀ˖˫˸˴˪̃˿˩ˣˆǪˈ˙̏ʲ̂˾˨˓̇˼:2ʢ̜̓ąDžħědzʳɱḀ̌ĠƷģįđƆĮĊ̲ɫ̴˻ɫǃƫ̭ƍƫƎɫ̼Ċ̷̀̿̾˖:̤̦Ƽķ̨ˤ̟͎̠͆͌̒˕ɩ͏͕̑̈ʢǑ͘ĨƱǗŲIŞHĉPțʰ͡R33Śȉşɹ5FͭɢͲ1ͰͲͫͱWş͵şͬͺͩʼnͽ˵ŊǵœćǺ2ǵ5Ǹ4ΉW8Ȅ3ƘͿć)ΐΒƘͼȉΖΘȀΓƟΜ2ΗΑΟƘΣΥΙƟ6ΕΤΞǵƘ7ͶWΝΦβƥίΫΧƟĿεηάũΈρνσ3πΰθΠσǽυϋςȠƍϐμισɕΪαύȠ9ϊϖϜŠĿϕϛȬ2ϟϥƟŞλϩũϧϨόȬŻϚϱϪ8ϰϒͩ0Ϭϵũ3ΛζϑχŗͪϼϹͯϕňƅǥ͏Ǩ͍͙DZ˕ЌıǥĐΆǸͤΊωΏϽŗІЃȚϸСЁϠΨУϗŗήϤОRδЭϹŷϴϹοбСτдиωзЪТРо1ϔксϙЦϭϝЩϡ̟рыϧныΎѐȬ5ъϲэȬϷѓΡϻћϾЀφоЅўЄΩЦȸŁ͡œͤͦɼͨьͽȚϞѱɐʹу͵ͿͻѷͻцͻѳͭʘǗ͞7Dz̒Ǡű͚̩͝Ħ͆˶ɹИΉМǻЮјξіќѤRѦѡϡЬфϡаҡȒҗσ0ҙσĉқķҩȠϏҤξѷҞΚцҴξҀчЮѰұϮяҽŗϫқϯӃϳҺϹ2њӀϺҦЄѠЂѢХҷϾҝΤЊ̢̞ǟ͛Дł͓ЏӝʡưГ͐˰ę̭4ӧ̾ӨӦӬďөӭċ̷̭ƆӫӮęӪӧӹӰʼnӻӲЕӜďӸӷӽԄԁӻ̈́ӿ̸ԂԆӶԍӱԇԐǕ̒ӴԋċӪԗԃԌԖԑǗ3ǭ̰ǝԚӵԏԎӼԢӺԥԈԠԫ̣ǓǛԙԛԧԦԤԱԶԴԯԒ̸ͪdžԽ̥ƽԾ͉ɭȸ΅͢Ѭ8ƙΜՈƢՊłőՆǺțՉζՋӆ˝ĶЋǰƳ͋ƳԟԭǗĽƳՅѫՑՈгՔəՍƝѪͣեՓՒՌՔňƼ՞͇Ŏɪ՛͈ɪŅԻŅյŊЎĠǮՠԝշտɫǣքռֆǗրDzưėąǯǬօ֊փˣӘ֓ջǥսɮ֍ֈփվ֢֕։҅ƫ֑ǘ֖ĨՅΓՇͧ0ə;FşŷѽŚ4ŝŠњͻͰͻҨֳѲַֹֽͫϺ׀τŭϣָӎֽҜҭ׀ĈׂЄşЬּׅӂаѻӄʪĈՏ֭եֱ֯ɢִׅɐכӉֿѿדӌ׀וȚҫַ׃ͼşͻмŭяכѣזϏŭђЯϔŭѕֳŝ˵Ų։֚֘͆͵ץխͥ8רƢֲׇɕֻТׇײׁؒЄѝͮϢ׀،א״Rחпב؊׃،מȚ؏Šؑע̍2צ؝؟Żءƙֶثֺװبѳح׆ͻذѰׇŠ׃ػѹؽزל׀فтנمؓȸՙ֒֠֫ʍĽ͡ىѭɳIְؠתَɔ٨ׯׇױٔظٗرِϿص٠גڋ٤؇יؾѥם؎٭ד҂֥֏ؘ͟؛֮Ѯټٌپֵڀِڂׇּٕٓ׃ڇدיڍڏ٢הׅ٥؈Šڕ٩ş٫كסٯƊ͠وٹ1ٻשׅڦֹکا־څڋگׇٚڲسڵנڷͩڒڃڔ٨ЈڿژבٮӖ̣֦֟́ɩ֚Ⱥۆڡٺڣׅیؤۏئٝж׳۔ׅڈۗۢٝڎۜظ۟ט٧ڋـۥؐښōŁδĭ̾ܐ̳ԪٲԹ̱֩ܒܚܑōNjğ̳ܟٳԒŊ6̻֡ԡ̵ܡ7ܟնư̾͂Ɔ̪͉ܰԹɬĤŐܲ̽ܺ՟ӴՁĩؗɩė̹ԺǓ݃:ѩǶǸϻȾǾɊɢƄɟɃɡɝɒȈȍȮɃɘȴɀɐݐɗɠɆݛݎɝݑȈɡݝȩɤՎ݀ōő݉ȽȉȿݎɂȤݠȌɇݕҥɖݙݶڧƄݹξɕݞݼݒșݔɛݖݤݟޅȳɣȷٲ֣݃ܳܶԿܤܦٴޑޑքբޔސĕյ֝՚ĕŊ݆ޥޠޒޣޘܾާǰޛ֢ޝަմީǖ҈ܢ,5ܬNj̭ݭܵցܓĠƎܭܵ͆պޖƫփƳNj֏ܗޢǖ߇ޞߓޙܾߍĭܪԮԡәБǖޯܨߒȻ݊ΏݲɓݴſɘݸވݺރݵތݾȩݜނŬݥſݓƃ߲ݣ߹ݘ߯ݦșȴݪĶǧ֏ܫߘܝ͒ߞܢ߅ܨŅ1Ԁ߆̻ĢƬࠈ߆ɩࠐǗ͋ߠԬӘࠚࠏշߐࠌࠚչ͟ğߣȽțǼݍߧݻ߾߷ݡɚɀɇ߶ŵݧߴŞހϘߨȰ߰އɀފބ߿ލݿȵޏĆࠑܱ࠙ğࠦࠝߑܨ߂ܙࠞ҈ƴռ՞ܩࠇܠࠞࠡԝɯ࡚Ġߙࡠࠆ۬ȸࠢࡘࡤࠒŐࡩ̫ܽߕ̫ࡗ͌ࡡࡣࡢ࡛ࡥԲԢԕԸ֜ࡨܡ̱ܵࡾƲࡺԘԩԬ͇ࡶࡳࢉࡩࡩ̉ԴԣԨԶࡱ߀ࢁࡠܵࢄԷ࢚ࡏ̿ʴ࡙ࢋࡷԷܱ࢝Ӿƫܷࢫࠞ͞ՂՁߔࢬܼߜ՜ǎŅѩ۰קڢۋ׀ۍ۷Ӂ۹ڄڬچ۾ڰבۘͩ܂ۛבعںۡ܉ڗׇہۧʪʃࢺيࢼٽ۵أځࣂګۼٖࣆۖڱ܁ڴٟ܄ڑڹړ܈؋࣓ןۦ܍ࠃࠤպࠜ֜ߛޘɥ̞ċࣻčࡎࣸࣵ͊շ݂ЌċЌߟǥࣷࡦ͟ٶݯݱ࠭ݖ࠽Ȇݽ߫࠴औɄݽݨ࠺߬ށङɘࡀठݽࠁࡈ֓ڟٷۇ؞ࣛڤُࣝإْےࣄ۽ࣇڋࣩ࣋࣍܅࣮࣬۠ؿࣰقڙثࣗڠࢻ۲ࢽآर۸लȚة1ڭجࣦࣤٙहࣨ࣪܆ؼ؉ۢ܊ࣔॄنԒऋࢴࡔܒĢ߂̴߂Ŀ࢟ࢰࢱࡑࢢࢠ̸ࢥࢪܔܜԺࡘࢀॵ࢙۫ॶॳࡔॵॾǖࢦԎ֜ėࠖ́ܯࠕওܻӢԳ࢚ࡵ͇ėࡕࠥࢱޑচࢆ3ঐ࠙ঝߎঀōথॱॿভउমưࠕলōƌ͕֚ϧݮȼऐࠬɀत߰गݎ࠵ދࡄ߱झ߳াৄढɜɞৃ࠱ࡅݩࡈࠚࢯࣼप۱ۉ۳׀यڧऱڃ࣡تࣣशࣥࣈࣧش࣌ط࣫׀࣐ीږ٪܋ل̞ࣳؕࡼঋԵԣࡱࢍʷࢥܕࡖ৴࢚࢘ং।ࡧࢊ̢৷ॸࢆ॥ࢇ৵ࡺӯਅ࡞ਇࢎި৹ई,তՎਙƝਛĆয̦֛ऌࡱগਠյŲΎՎƝਫlj֔ਖłďआNJਪЌ৳ਢЕńऊշ4਼ࢆޡʍঝॹ̮̳ࢳࠌਿƶইਟǘҊਟࠌ5ࡽ੍֒ƌࠔࢮĕ6ࡊऊšԝ' id='1'/><tiles values='0:2060,49,ą5ċčą3Ĉ1đĎ:13ėą287ěČĘ63čĢą1583' id='2'/><msg text='The cat needs feeding to get through those walls'/></root>";
private static var level10:String = "<root><level width='32' height='265' start_x='15' start_y='263' background_type='0' compression='true' scroll_speed='2'/><tiles values='0:8544' id='0'/><tiles values='0:1156,44,0ċčďČĎĆ3ĐĎėĒđ:41,9ĞąĖēą1ģđğġĜ7ęĕĭ45ğ2Ę9ijďĵĔĦIJĴĶĻąĝ,88ļĘ8Ċď10ŇĆĞ89ńďłĔŀ8ĪĖĸĥŗĽŕœĬ8ĽİĘšĒıŤŢťċŨ8ĖĿıŜĢŁĨţũŧŵŦŷŁŪĪ4ĬŘĮž4ŚĘ7Ńď7ŏƆĬřŁďƆƅ,ƇŐ:3ŽĶ:ıžĺŘĩĔŗƍƓƕƝ,I32Hʼn0P18ƤƦƨP2S(I4H4ưR0F1W24ƲƴƶưǀƵƷ2W0)R9ƺƼƾ))DŽǂ2NjǍƽƿƳDžǃǙǓLjNJƫǖǏǑǜdžRǠƻǗǒdžǪưǞR27ǡ4ǐǬǔǰDzǵǵǮDzǐXLjĹƘƖƁľĆŏƛĠƢnjƝơŸųųȇĽȐŐľȄȃƛȎŨȏƖ1ȌƠȔȘŶȄȜȄƔȄȝȆŠșȪƒȥžȝijIƾƶƩƫTƳ1I0R3İFLJǔ33ƺȿȻĈȾƽȻ0ɃɈ285ɇǶDZɐǯ5ɏɄƾɋǶ2ɖɌʼnɓ19ɜǔǧɄ16ɢǦ5əǦ3ɨ12ɫʼnɨnjɓ7ɨ6ɫȽɄɂɟɨə)ȶIȸȺɱɨɼɄɺɈɸɵɳɱ0ɮɰɟɭɽɱɧɟ8ɱɡɓ2ɞɗɛʛ4ɫɛɨǷʛɎɓɂɫ3ɆɻʇɈȼɢ)ĔĊȗȫŸžȭțȌŴȍŨʸȝȣʵȡȚƝȁȓȒķȑˊˇˋˉ˃ʶȤˆŰȠŷȅˑȤʼ˙ţĆıƤ3HɪƪƬƥƧɊǛǁǥǸǤ˧ǚLJljǕǨǢǵ˰ǎǘ˨ˬǝ˯ǧ˵Ǵ˫ɣʘ˱˶˭Ǻ˯ʥ˼ǣ˷ɑ˪̉̄NJǼ)ǾƟƂĢ˒Ɠ˚ː4ŋˁƖɭ˘˔˚̚ȝ̝ʸ̗˃Ňċ̣̜̥̚̕ȍ̧̙Ţ̓̚Ɠ̸̪̭̠̱Ē̯ŋȨ˅̞ŨȱƧƸǖɯ˴Wͅ˻͇̊ǨɯĘ́1̓͌ǔɴƼ͈͕̀͋͘ˌ͛ˎ͝Ȕˈ˗̤ų͏͖͙͎͑͆̈́͊͘ȲʡˢʁʃȻʉɀʮɀʬʯɊʦʤɒɗɕʠʢʟɗʝɈɠɮ̀ɥʖɥɪʒʐʎʍʌɓʋʈʆʅɓɿͰȹƹɽʨɹɷɫɶɓɴɥʏɟʑɥʓΊʕΆʙʤɚʤʡʛ;ɗͼɌʧɻɻͷʹʪͳʲďͤǔͩͧ˿σ̆ͫπƮͥ͊τǦ͗όχ͍ῶς͒ύ͉ͅϑĽρΚ͔ͦόϘͪϒƣϊϕϞσϡǯɒ͚ϓ͐ϦόϟͨϖϚͬϔϝϰϨϏϙϫψϤ϶σϱυϳϼϣʿ̿ϵϮϷͅЁώφЄϛϥЊ͓ϹЎͩЈϋЋДЃЖϭИГϖϩϴНϯЙРϺϢАϿϖЌСЏЗФПͦЭМϾЉЀКͦТеОϗЧϪдȱDžȴ8ΘȺʰʨ͵ɅΔʢηɌεǶγɌαʞέάʗΪʔΌΥΎΡΟΞɓͳɉΛɄΗȷΙΕθѠџɄΠɄ΄ΤɥΦ΄Ψ΄ΈΫɟʚΰʢё͋ɗэɀιʯλȻщчȿοȤʻ͠ҏˍ͟ґƛϜзЦЕ͒ЯВнҘϬȕĞȊŰҔБҖвокҕЫиϐЮУқЬҧҭлаҜЛҙҮҥϠұдңЪϧҗҶҞҩҿҦҝϽƀ˒ҳүҫϻрͭухͲʆ҉҇ʩͺʛяɔѾʛɝіɥ·΄ΉѶɱѵɣѳɣѱɈѯǔѭʊΝΜѣɈѥʂѧӲ҄ѪΑўѝɟӪӧӥɮѷӢѹɥѻӞӜӛͽͻьыʨӕ҉ξҚҹϲйҲӃϸӀԕӎҾԘӅӁӇЩжҪԙҬԛԢӄҺӆЅȂҠ̒ȔԗХԞԚҷӊԓЂԳҞҽԧԝԩԟϣбԽԸԠԒԣԲԥԴՀҵՃԫœӉՊҰԪԡмՑԾґՐӌШՅԨԔՈԹՓҴՕՌՠӋԤӍԴƀԭȉդԶЍՖ՛Լ՝է՟հԱՂ՞Ͻզ՚ҸՆշճչҤվղռԵփԷոՍŭȟːԺՔՙпՉӏͯѦцѡɁʪӕ҅Ƕ֑҃ԊͿԈʛήǦԆЂѸљΧӽΏѬѫɈ֗Ѩӳɐʀ֕ΚΊӱΓӺΐѮќѲԀ֨ԃїѺѕ֡ɗѓɌҀ֞ζԍκӓνʱյՁք֑ӂւ՜ֈրԿזձטօթҒȓ̟Ґ͜נĿժҢլևծգבՋ։כնדҨױגםהցԜײ״ׯբ͝ĜՏישח؊ȓպՇ؎ωт֔ӵ֖ԎӘѿԉɌӝǶ֣΅ׂ֧Ωњ־֫Ӽֺֹ֭ѩַѤֳӑֱӸحӯֻӫֽ΄ӨɬԁјӠӟԇє֠֟δԌΜؘ֙ɻԑս،г֒؉օؐտמԬğԮ֎աԻ؍ٕٛԖ؈ؒȡӈԯ٤٢Ԧ֏ջ֊ֆٍһَُٝҞ̟˄צٗի١ٯٜٮْؑ٫ڀ٣ِ٥ڄڈ٬ԴٺʾȂ؇ڋچӎؔȵֵҊʯӔؚ֜ԋβ؞ί֢ـׁ֦ئ֩ћةּطǔΒ֯ΔӷֶƽִؖڰɣڮصګӻکΣ֪ڦڥڤ΄ӡɣ֥ǯ֣2ؠǯׇѐڝ҂ڛъшֳٿڃٰ؋לٟ۔ۓۘʽ٨ٖף۟͞٧ۜŀĤ:ʜįĞۦۨۦćϤ6HƥڂۚϚRȽƼɪؼǨ۹۷W۹Ħɏ۸Ⱥ۽ۿʓ܂۶܁۾Ⱥ܀ۻƟȰ2۰۲ٚړϖ܄܋܆܊܈܍ۺ܇ܖܜܙܞ܌܂Ĕܑ2۳׳Џܚ܇ܢܠ܉܅ܯ܃ܱܟۼܳܭɪܤۯ۱ܧܓۓ۵ܡܘܵܛܷܲ݃݁݅ܬܹ݇ȱܦܨܪ݀ܳݑܛݓܝܶ݊ąܥܻݎۗܿݗݒݟݔݡݖ݆ܱܐݛܽ۴ݐݣܮݥݢݯݤ݉ݦĥ۪ě۬ěۥčݩեܾݬݱݮݳݰރݲܙ݄ݧݍݪܩσݕނއ݇ܫސݠށܸݙϤƵɰˢݾݫލݭ݂ޅޏܰބޓ܍މݽխٸόގޠޥކޣޯܗݴۧܺܒޜތܕޟ݈ޮޢޤް܊ݧޙуݏޞޕ߀ޭߊ߉ܣޗݼީٴͦެߍܴߗ݄ޒߌܹۦݺܤݶĹĞߑܼ߅ݝހޡߋߎߘߛ߫ޖߤݜުͅߖ߮߭߶ߖާߒתߴǔ߹߷ߚߺߐݨٳՒࠂޑࠀ߈ࠊݚࠇۖ߾ࠎ߯ߙࠋߥߓࠉࠌߩࠗޔࠟࠚ߳ߔޫࠁࠞߪߘߢĭݸœߡ߲ދ߆ࠍࠨߌࠔߏ߱ࠆ߽ࠛࠥߵࠧࡀ࠵࠙ࠅފߦࠓ࠶ࠖ࠸߬ވࡄި࠽ࠝࡁࠟࡊࠪࡌ࠺ࡅࠜՖࡓࠠࠕ߸ࡃࡖࡎࠈ࡙ࡈࡂ߈ࠣ࠲ߧ߇ࡒࡣࠃ࡞ijߞߡݙࡱŌ࠼ࡡգ࡚ࡹݘࠑٞࡇࡑ࡛ࠩޱࠫࡍࡾٷ࠾߿ࢁ࠷ࡻࠏࡵࠤࡐࡥࢋࠖࡧࡆࢉࡺࡤࠢࢆࡶࠒ࢘ࢍࡦ࢝ࡢ࢚ࢣࢤࡴ۫ࡳߟࡲ۩࠭ࢮࡳټŒőƊŁƏ8ࢹࢷ,ʼnࢻ̯ș̻ȡŎŁŖࣈƢů̖8Ųࣃ̹˙ɎĔ5ĖşˏࣘőŬĜōࣉ࣏࣒࣌ࣖࣞࣙťƗࣖȩࣣųūࣇƄƃƈƐƏƑƎ࣮ƃࢹڎࣅ̒ȆƟĬٓוڒݿ٭ࡨ߾ۙࣾٶّۛٲ࢟Ւअ࠳ࣿईډऊҡĆڕфڗ֗ښهӗمڞك؟ׄԅԄڿڵֿبڻتɈӮڸӹخѶΖرֵسѢڷRڬӭ֬ѰڼѴؽɟӣڣۂढडठۊझوۏʨًƓݻڅँٵࢦٌऌկॕࡿࢉऎࡩ॒ःग़क़࢈ऍॠउТĜ̓ऋख़ॢ२ॡॗץ८ۡˈƓࣺƢࣽएइ॓५।ڇऑڌऐॸ٦ॵड़ॿफ़४ংऄॣऒ॥ģŋ2ŏсȳؕͱژμؙजیेلђѽڡ׃ؤथɩधغعПثɄसܚयڵऱҋزگщѡনब˰ऩनऽ׀ɣीծणঝق׆؝ঙ؛θॊʭېҋĹĖইय़ॺঊॼঀڊॽܔআॐޝढ़७ऀৗϬ̖̰ټ॰ғґࣀס̘ŋ3ॳąࣼआךঢ়৯ە३৮ॶৰ॑ࡘ॔ৌॾॷঅ७ৡकޘږڳঔ҈ৄॉैҁڟǯۇʜڢঠĈঢӿڨظڪषӰপɩবڱমدमضদਛণاӤितूঽॄিटञঘৃখौאĢॏৱ৷৳६৽৵ਾঃੂ৶৸ऊ৽ਃ৪ٽŰॹ٦ৣפ۟०৾ੇৼॹٙੈঈ৺ࡏ৹੩ࡷ੦ੑ৫੍̖кঁো੶ড়੬৲ज़੦кਃȃઇৎਁੱઁ੫Ҳࣆň0Ə˂ۣॲੵઑઃਿઅઐએંઓҼࣩ̤ࣥક९ş́ۡࣷৢśƍમࣵŅવƛ7ࣶ̘ࣥ5ō࣯ņʳҠˍࣦਅͮਇওच҄نਵਏॅृਰؿਮসۺশөऺहجڭָरذভळযਞਧफǦӾǦػ܌ھহਯ֤ʣুڜগ҆ىʯ्ŞવĔŃঐૈघਈોਸਸ਼юীਲ਼াف΄ۃɤਖԂɣӦ૫ত૧ࢊফૡਢૣਤشধڹऻڧڽਭإۀਔਓׅছଊɉૌਊۑĥŊ੧੭ੌઍੰઠੋੀॻМ:এઞିદାؒࣜউϒƗȄ̕˝େતॗલ˙ઙୟۣࣨʼƛૂਫ਼ଽƖڑୀઆօભן͠ઋं୫٠ą୮৻੪৽ॱŀƊ୕žୗƌƒયĹŞ࣯ƙगӑਉ֘ଇ્ଳʥচǶۉѼঞଫदਬਙਪথଙତਦଢଝֲૢڳऴর֮ںଧପਖہ૱ڠଌૐोيĆؓਆૺͶۍɍۋରءਔ૯૭ਫணଘர૦ଛਟ҇Ӵͱभਨதନষ૮ǦஸஜௐۈଋଲଉகீਹூସĆčॱ̛ஈૄષĥ૽ęః͠ٻȟŲݹĬৡ̶ٺ̡ƣɭƧଃƤ1˥ƩLJ8ǀւLJɯ̈Бѯఝచ϶డƳБ͊)WఙదణɜథϜɲɇరБأజ2ఞ϶ௌళసఫఢЉʮఴణѳూЉମషహీ҅ఝాభЉʉƸిƸʫయఽబϜڬড఼Ƹɘౡকై్ϜӮɦౚౢॆై౦ӒౡĹଁ1ఓʫఖǭఛౖƸఠసతಃಀౌ౽మಇ૩౮಄Ԇ౨ಊొಌఱౄಆϜే౿ϜӖಔಚవѵಒӝౙౡ౩Бಣమɋಒׇನు౫ಮЉ౭ಗధёನಢοĆĊఌఆ࣐̺ઢથ୍ୌરȂ̽ୱ୯ણೊ್ঋȕıĤץĜે߄ୋۛઝगҭೡఅݹҠࣉƙ१ȈĿʻ୶୕੯୬Վશ୨੨୪॥ୈೋओનৢࣉψĮഌЅŻ৭അĺഏڐఈఄ۞Šěȣןۭఋఉʳİ' id='1'/><tiles values='0:2196,48,ą757ċčą38ĒČĎ:453ēĚ108Ğęď0ĘĔ:ĖĤĩ56ĨĚ5ğą69ĬĠķą1289' id='2'/><msg text='Pick up the cat as much as possible'/></root>";
private static var level11:String = "<root><level width='32' height='249' start_x='15' start_y='246' background_type='1' compression='true' scroll_speed='2'/><tiles values='0:8032' id='0'/><tiles values='0:964,4ĉ0ĊČ:17Ď,čċĔ:41,93ĔēąđğěĝąęģĞĖĠĒĩħĥĚĜĨČĢĩĆijIJĬİĮĭěďĝĴ9Ģ9ĽĭĘįĤ:5ğĵĴʼnĹŅĻĹĻ106ė1ņĞőŎ3ŀłėĝŞĠōĤŐď4īďŀĬūŦĝ7ŤŚŤĿĢ5ŇŮŕĺ6ĒčűřŰſžƁżŇʼn68ėĦ6ŀą2Ě72ƈĚźėƍ,ƆƑƖƋ:ƕƏƘƓƌƒƇŹŻ:ŕI32Hœ0P2W50S(I4H4ƭR0F1W24ƲƴƶƭǀƵƷƮ0)R9ƺƼƾ))DŽǂ2NJnjƽƿƳDžǃǘǒWLjR18ǕǎǐǛdžǟǡƻǖǑdžǫƭǝlj27Ǣ4ǏǭǓDZdzǶǶǯƹǩǣXǝŖĉƗƣƔƎƐȅƠ,ƝŹƚƕȄŏƟĐʼnƧƩƫǮưǶǽǍǗǁǬǥǮǞNjǾǴǤȞƸȣȜǺȠLJljǠdzǵȬǧǹȬǻǞǸȤȱȧǷDzȤȫȻǼȰ)ȀčąʼnȌȑȎơƞƤƜȈȑɍȇƞɊƖƢȑŇȏŸŏőŵş,5ɏŷƂȋIJő7ʼnƃĞ7ŦŘąŀ6ŸĻĈɣ6ɨɲɬȋɘƎɚƉɑɕɓȆȋɏɽėƦ3Ƶ14ƬǠTƳ3T3W3LjȁąĒƧʈʊPʌʎʐʒʔɅƥɿȍʁɈʄȊȐʧƛɋȉʫʂŖʆ5ƪʚƮ8ǀ3ǒǽƮ12)Wʶʎʹ15Fʻʽʿʷʹʓ˅WʼʾˀƧʹ4˄ˆˏˉǦ6ƺ˕ˈˁǦɧˌˎ˜ˑǦȣ˛ːʸǦœ˔ˍˇ˧˂2˚ˬ˖˝Ƹ13˫ˡˮ˩ưˠ˭˗˵ɵ˽˳ˣ˵Ǩ˦˿Ǔ19˸˾˴Ƿœ̂ˢ˨Ƹ22̌̃̓Ƿʊ̑˺̔5̗̒ʹȸ̇̎R28̠̝Ǔʓ˱˹̈R3˃̜̯3ˋ̤̫̄˓̂ėʗ˷ʳƬʵ̸̯̭̍ǟ̴̩̘̓˒͇̥˙̳̥˟̷̙ǔ͏ͅ˪͕͓ʼ̡͉˩˷͘˂˼͒˂́͢˩̆˲͜˵̋͟Ǧƍ̛̪̦̖̞̣͛ͬ̔ͥ͌ͨͅͰ̧͓̬ͳ̫̲Ͷ̶̫ͻ̴̺˕ʰƖɾʦƒɔʩƒʃΏʁΑΌʅ,ʘ̿ʛ8ʍƧʞʓʾʡ̽ʙʋΞʝʑʕʢΎΘʨɖƉΐαΒʥΔƖɺƖɚŜļɞɦɥŤɧɣůĞɠɞɝąŠŭɲɶőɳɩč6ƄƎι7ɼεč̄ǠʺˍʉȳˠʉŖƇϚ8ϟʻϞ̭ϡȐŗΚ̓ϛϩ4ϦϝďǠϭǂϛȯϠϱϰŖϑƋ϶ƷϯϺϲŗϴϣϮϥϹϧϻϺʯĠĚϤϜЅЄϡĠЇϷЉͧГϼĠϑŻЀΝВϞЊϳϢРϸКϨЍϫАЈТϱФЅЦБбЪЋϽƙĞБϰДІЧЙмϼɈϬлЃеодЩЌзНίпЯнгЮчЯʣĐЭИѐчђљєМĐОкЮмћЖяўЫɖфѣцъќЁрЃџœйϙѬЋёѦщсЍујѰњѮѺѓъѕэƟяѤ҂ĐЗҀѨзЬ҉ѭѳҍСҏХ҇ŤхѸѥҌѧ҅ϼɰŖѿСҊҔҟѼьѠĻқϳѹҞѻѲЍŎĦςϐɹυŶɟɡȋɱοσɸϏɲŇɯҾŤɵɴɨŏτȊϖɌΖδѵʮήȒȏӑƊңϭ1ƪ0̀ˢȖƸ͉ǀӠǓ˥˲ӣƪ̅ӢƳӤ̦Ƚ̷ӭӧӬө̉0̗Ө1ͪӸӴӺǷ̨͕ӭΆˎӹ˵˰̂ԅ̏ӫIԂӝԁӵRΉӳԌԐ˶ӼԔӾͱԗԂӲ̮ӽƸ͎˕ԉ͆ԋӭƾԥԐ̵ͯԣ͑ԓӱͤԮԐ̖ԛԩԒˎėŀӔɾΗӕʬɉζӏΰƞιҢĺɜҺφωҽӀՌҷɫƘŎӅӉՓҷӈĺӌӓϗίʮԼɔԺӐʀӍηȒʼϭȖӝȘƱȲȴȻȶljȩǖȺǙӥլճծϟȜղ˂ǨȪȵȬǼȸչȦճӮյǒշɂɄėƇԼԻӗ՞գ֎ՃΖ՚Žҷ֖Ķɣ֖֘Ęŝӄń˃ĊʡƐʊԸĊĚɆĊɏϵŎĒ3ПҴɇπɪύρŤՉ:ĝψֹՋՎIJμՖɷɴ֟ՅόĞϒşԹŲϴŨɪ՚҈ĴġĬ՝ıŖčɈ˰զӜӞșիȾվɀȢɂȚհƾȿճǼϹւȚǪעתȷȽȲցװխտǞ։άכבĢוĕĬ՟חӗПŬז؇؎֙؏،ϑ֏кƍԐǕʼ͔ƼؙׯؙեϙؖԙؘմǩռˬօئȈΚآӡثؚة؝ȼؤؕӛأذհاؤت؛جԌطدؾرػذ؟ؿخǓؼغ̉ب؞״ˬضؗعؼسؽّءفئذٖهْظكٌոةٟٙٓ٢َٕشثɪգҚىțة٣ِٞؠحٚٲؙٴ٫ٗٷـ٨ٳ٪ؼ٦ٸځٻڃنٶوٹًډكڅڀ١ڂٝٽڑٱڎڕڄڋ٠قڔكٵص٧ړڈښڊڢچڤإڠږڜϑɼĝڒڞڥڬڛڨڲٛ٩ڦڐڮĐڱژٜڵڧ٭ڣڳګزڭڢĘȔۀںۂڼڷۍڟۈڶۄھکۆلٍەؾڝڹۓمېۖ˓ۘ۟ڴ۔ۃۅۦۇۡ٥ڽ˶ۥٺۭۛ۩٘۲ڙۏۯۊ4ڿڍہ۪ۨۢ۸܀ۮُۑۿێ܁ۻۖ۱ڸ۳ۚ٤܇ۄ܄܊܆٬܃۹܋ܓ۪:7ů' id='1'/><tiles values='0:8032' id='2'/><msg text='Take out the big guys quick'/></root>";
private static var level12:String = "<root><level width='32' height='296' start_x='16' start_y='293' background_type='0' compression='true' scroll_speed='2'/><tiles values='0:9536' id='0'/><tiles values='0:1224,4Ċ0ċčď,ĎČĒđēĐĔėĒ:49ĖĆ3ğ45,92ĕĦĨħą1ġĩĎįĥīĜĮĎąġ106ě11ĥĶĜĤį:2ľŃ4ľęĖğĭŋŊęĜʼnč:ġŏĘŗĕŖřŘķĢŒěŅŞğ8,I32HĹ0P2S(I4H8ŬR0F4W15XR9Ŷ1Ź2)W2ĤĬħŐňğšƉşąƌœƊŐƐěƒœƔƏĞŦŨŪŬŮŰŲŴ18ŶŸźżžFƀćƃƅļƎńťŧũ0ūŭůűų2ŵŷŹŻŽſƁƭƆĆŤƍƋưƖŠljưƘőŌĤƛƴƶƟƹŴƥƾƨǁƬƄDŽĤŐƣƲƜƵƞƸơƻƣǘƧǀƪǂǝŠƈƗnjLjŢƓdzǶǵƗǢǓǥƠƺƼƦƿƩƫƂǯĬdžƑǍǍƚƳƝƷǾƢƤƽǫȃǮƮĬȊǹNjȚƏǷDzŢ8ĻĎ7ļĞ8ĞąƊ8ijš8ġȩľ8ȟ8DŽȪȬȱȯǏȲĕȤĬȤ5Ȩ,ȴƕȱī,5ȽĆȤɁȮɄ,7ȽɏļȿɑƤɎžȥĿļ0ɋɆŚĚɠŎŜɢśĪɎɟɊɤȰťƜŬĕIɭɆɰũɮĎɳ1ɵɬɴɲɱɯɽɶɿɺɸɼɻɾʅʀʇĜħɰ1ɴǡʀʍʃɾʑPʏɬʔɼʔʖʌʇʗʎŤʐʝʜɸʛŅʢʦʤʠʞʒȩʈʬʂɹɷʱʁʲʄʯʵʆʷʴʻʧʉ4ʋʨʳʚʪʣ˂ʟʓʧ˃ˈʺˊʡˌˇˎˆʩƕʮʳʽʺ˗˖˘˛˚˝ʶ˞ƕˀˍʫ˒ʕ˄ˁʙːˤ˩˓ˑˬ˦ˋ˥ʥʘ˔ʰ˟˷ʹˠ˕˸˻˹˼˶˾ɧĐŃĞĹěɝɥɫɘĬĞ̋DžťĹ7H4ū34Tů1R27Ŷƻ̞ǬǨȒ2W4̛ȴFǨ5̩RĹ̫Ǩ9̯̥R3Ƶ̵̬̬ć̠Ņ̞̳3ź̬ģ̹3̛̯ƅ̸̩̾ƻ6̠ź̻͈̦̖̔ͅ7ͅ16ͅƅ̲4ƃŀ8Ȉȼě̅ľąȿɁĽijƊ̎1̍ŀ2ŤȊ̛̗̙̝̬̠̓̕Ʃ̢̦͖͖̽ͯ0̴̶͖̱͑ƻ̭͊2̻Ĺ΅̿͂ͅǨ̬̈́Ĉ̴͛Ή̹͌5͏ͽ̴ΑR͕̹͘Δ5͛̇͝͠İij̅ŀɋ̉ǏŊŃ1̈ɠŔȦʪ8ɕȢɩ̎ĵě3Ȥ8ͤŔɂœ6ġȫοǻȎǕǧȀǙǬȄǃļĮɆıŐπɂσψœγIJĕͨƕψijϞȧĕ͟ϧɉϙςϊȻȾɂƆϚϩɎωĬĊǒόǦǿǩȓȂǛȅȗƱɍɫϬŝϮɩɃĎЅĴɂϤρȹȪϛυɓϰϧσ4ϣϊϸǤȏǖ̟ϽǚǭǜЁōЃǏ7ʪ7ɁɐДɖȣЩȨŔȤɟɪедзɣLJǸƉϷ̜ͳŴͻW̵Šɬ̒ǿΡƫ0ȹġɰцŴшŹъфэώ̮Тђŝєϻїȹˀ̒̔р̽уȩнѠƶ̡тͮʀѧP̖ѩѤĠхώѐĹыѳч̫щȹĻњƢќѻКоћѺёȹωѾƻѵјτ҉Π҅Ѷѓ҃ѿҐҌьғǨҀ҆ě҈Ҙҏѝ҂юҊҕѼѸҔҠљҞіҁƇɪ:ȤєѡѯсѱџпҳѣŀĻɨōҎҋѷҾҤěѽҪҚґҩҢ̭ӆҌҽоѡƻҴεϞŊұѨӑ̂ίҗӉҿҡѴӂƏҦҙӟҍӅӣDZίЬӁҨӤӛӣӄӉҫқӈѕӋȹ1ѦпӐҹӝѹӫӚӞӫҶ҄ӾӡӊӣӿӏѰέͰҞӜӳӽҬ:ӯӴԇԅӱӇүԌѭӺ͈ѱӿԐӲӬԀԑԂҧԑԟԦԡԈӖӻȩӧɡǠŕйœ3ηϳЊȢğԫѢԝҺѳԉӗӠŊϦЊθʠвϲІǺӕԼ̤ѱćԿԬԽϧϱЋͬՑՍѪҒԛԊŠЊЎɂАȱВЇϥՕЗЙϯЦБϭϝρէϢЍЭբՉτեկЖձϵĜƲ0HΛŬW0̘Ṷ̋Ȓ3Ƽ3ƾ)Ҝստƶւք̦ϼֈŶ֊źІմЋϜЭհȩթЈմШȼЫɑи̉жɣЮɏаο̍Вɉō9ВϡȩĤֲδǏִϊֲĮВŇָДŃԵɂɌθκϔ׆ϧϧλϫ֟նĐŦ̓ǗF֊Čֆ֖̥דű4ז֊36ךחל։W˄מנƄ8פט̦כ͗ɯתП֊צכĉ׳וƁיכŧן֓ևץ̔ՔչՊοЏěĤϵƲקי֔לעװץשؘؕץײɶ״קؤ؞םءئͼ؊حтɲةכ؇ظش؋ЊȹؒijϫĶ֥֭ȼɑהؖعسؚجקؠوآ؝קاťطץث؈إخٌٕزׯקبذטٔظق֤֬ȣ֦؏ɚŝͫłŀξĬђ̎šνٯĆēȯ,ϙٵċقʿ̇ϕɦΪƕɬ3ӹք0Ƽ̤̪͈Έ̽ƻΑƄRΙڏҟڙсӢڑΊړ̭Γڙ͎ڞ̲͗زڣ΄ڙ̼ڞΕڭ͐ګΥڭګ̨ڙ̵ڠΏڞ3͊ږ͓ڑ֙:Ǒ̿Ǽ2ք֕ڥڧΆڞڕ͋ڠΡڛڠіڣڥڢږڤڣΣڣ̣ۘڪږڬګ͇ګڰ۠ڲګڴ۠ڶھ·ھ̀ڷڽΈۍہǑ2ڊӏڌڎۘۊ۱RۍڗۏۊڜԆڥەڣ̪ۗے̰ۛۘۊۣۡ۠۠ۥƻ͚ڳڠͿڻۭΈۯھ۽ڿڏہħĽձǠĞϘ̍ϖɆϪɇՇź,ܤڇܲϟķǟŜĆܧԳɛԲțϘδܴɒ̌ɇɑı݅ـгȟܾ݆݀ĕɈəɁķܼܺݔ֩֨ݖݙԺ݈ܽȉǴк݉ݞлݢݡӃĭ' id='1'/><tiles values='0:48Ĉ,47,ą2365Ċ8č:2281' id='2'/><msg text='Smash the badguys with movable blocks'/></root>";
private static var level13:String = "<root><level width='32' height='217' start_x='15' start_y='215' background_type='1' compression='true' scroll_speed='1'/><tiles values='0:6944' id='0'/><tiles values='0:1092,44,ą21ċčą4đČĎ:ĐĒĘĕěďĖē:ĝė0ĞĦĤ:9ħēīĘ3Ī8Īĥ88Ď,87Ķ86ĶĨĪĤķIJķĵijĹijļą3Ĺ85ĺđʼnķĬľĦŌŎĮőĮŋ3Ęō8ĊĥćňĆđ8śąŝş:Ŋķĥĥ7ń,7ł7ņĆś8ŭűŰŲĶŴĮĪĉĶƁĥŀƅŒƇĽƈƄĬƃ,ƃŪŋłĴĺņķŢ1ƑĺŰĸĺŢ3ŷōijŏŪŘąƘķơķƣŷġ1čI32Hć0P2S(I4H8ƶR0F4W15XR9ǀ1ǃ2)W2ơĆĵťŜķũƧǓŧǕĘ2śưƲƴƶƸƺƼƾ1ŸǁǃDžLJljNjǍǏĘİŹůŽųŵǗDzŻǵĘ1đǞƳ0ƵƷƹƻƽ2ƿǨDŽdžLjFNJ1njǎǐǯćńĆĪćƂƣǯǾǠȂǣȅRǦǀǂȉǫȌǭȐǻōƕ5ȔƧǼĜśƍƏƧȲǖļțȀǡȃǤȆȢǩȊǬȎǮǐƯƱǿȁǢȄƾȾȤȋȍȏǯąȷɆȜɉȼȠǧȣǪɎȧɑĆĊȓǻȖŹ9șōȸɈȻȟȡȈɛɁɐǐDŽűĶȬǻĹȯĔȱşƎǖĥɨȺȞǥəȿȥɏɃĘļȵȩ,ɿȝɊȽɭɀȦɂȨďōɡƦɣȘǛɓǟȹʎɗɬɚʒʆʕĆčȫȭɷƣ4ɺƂũʝɇʀʏȇʣʅɝǐĹʍɖɫʃɍɯʇďɼʯĜđʘȕ,ȗĥɥ˅ɳĥɵƦĊʻɪʂɌɮʓɰĜˉʬʮˋũǝɔʟʼɋʑʷʔɞ1˝˃ďʱɕ˔Ȇʢʄɜ˧ɱčˇ1ʚˋʬđʩǻɾˡɩʁ˰ʾ˗ʥɞļɸˈ˓̂ʵ˲ˀʦǜ˫˫ĆĹˌʼn݃ƛƕĻŜŋƩ8ƫ̒IĐƳˤ2W6ȥ̧̩ɬ̫R27ǀ̫Ķ̣1̥ʐ̮į̮̭̯̱̑F̳ɾ̤1̴̨̦̺̼̩̰̲̩͇̬̽̽̓ͅǧ̶̸̮͍͓͎͚̪͈͔͖͋̀͂̈́͆͌̾͐̽́͞͞ʌ͏͉͑͗͜͠͡ňͬͤͮͦ͟ͳͲ̵̷ͫȇ̹Ͱͨ͊̿ͫıřķŦ:ōƍͽ͛Ϳ͝ͺͱͪ͘͵;͒͠ɘ͠ΓʹͥΘΒ΄ΔΝͷΟͻͭΏͯΑΦΛͣΖͺΥΚΡΜΩΗγ͂͢ƻ2ȁȇNJ3πεͶΪΙͺήijǐūŸŽǹŽƕʊ˞˄ϔϖ̒ƆĺΉįŃƔƚϞŇίΎɯψɏϢˤɏϥNjϧʐϩɬϦ͙ΰϮǧϰΕϣ˘ϪȎϬοNjϹɻΣϼȎϾĺόĪdzŮųϐŮƕЀϤϯϫϱϷϳɯϻЎϴА϶ϨϽЏϺБКЂМϿζϸСЕФЗНΈˍ̜ОϭЛШТυЖДЭЁ̃дЙЮРаЦГ˘нЯиЍЧтУоϵучИщспϋЫĬьлхвфюйжЃегїˊјќшцэѡѕъЩђзїѨњЪĔŤбϲѣыѢѓѪѴѩѤѱѵѹВѲѧѷѬѫХћіѼПѸѳѥѾɻŕѮƥџ҅҉Ѻ҈ѿҊѻҒѽҗЩʹЌҀ҃˛рҚѰҙҔҌΉĝŞҡҥҪѬў҂мˋĺҬҟүєғҁҞҰŬѐҳҺҵѶҖҫ҄Ѧң҇ҸӁӇҷҟΆij̚ƝЫӅкӂҐӄҽҶҤӉӘҟɸӔҋЄŖŐ8ġĝžӃӞӦҢӖӀӊҾҹӗӆҴӮїǘΊǚ̗Ǝ̡ҿ҆ӒәӰӭӈӱԀӿӬӯӼӋǸǴϑȰĭƋƉԎԍԐ̒ϓ̓ύӎӍϠƖɴŰ5ȫԝɴԞij̙ԘƓʼnȪЊźԉЋԟԫˏԛԠ,ԜĺԈЈϏ·ԓԓԱˏԯԹ˽ϗԷ˟̡̕ŀ̣ΰ̧ǦȠ35͗ǏΏՈ2ǏՌƩՅϷՇ8ՉՋ̧Ս͌ՏՑ՚ǐĪՔͅՈ˩ՙȐՎՐզɑͬՆǃեՒը̯՞ʕĦ̖ĢśϙƦպƊĢōջԌւցջտĞ̔ևϺIć7̥34Tƹ1Ώ8ǍŭŪĊĨƧՄ֎֒ψ̧֕W֗4˒֝̈́֏֑֖֔։ĹĨƟʌ֨P֪̼֣֠֗ȯְ֚ƭ֧0֍ֹ֩֟֬͌Į֙ƭ̴ִֶָֽ֮֬Ĕֵֿׁ׃ּׅ֮֓ևֲ׀֤֞֫֓ǻĠӪӻљԁԄӫӚԃԅקӾѠИĨĝLjŗքƊփցƏʭ֯շˍƕיŀӷ؆ƤƭɧӲצ׳ҕש؎ґНęӝөӨӓӺҘױюʧԏֈ֗Ϝ؈սɶ։،Ԃײؓӑׯحӕ˂ؚؐתؒز؞؊Ƃءԑ6ֺđـƌֺʺ2μξǬρϪρЦάιͳǛҐِ̻έδ͎ى˕ȦًٌƗčا؟ƭաУْٖͧͼ٦ΐٗ٩ؕ͘у٧͕ٙ҄ٲ֡ͩٵǑԏټԑʰبąաƻ4ˤ3ǎȋڈ2հǧڌթ̿ڐ̴څڇډȥڐψڙ͖ړɾڕʐڙڋڗɬڛڒډڔHچڠڗڢڍښڗڜڧڞکږڮڭڎǀڥڹڲʌڟȇڡڻڮڤڰڦڍڨڪڿڬہڸFںۍڼǣۈۋژڣڏۄۋۇڵڊۓۃڮڱۆƦɧھۓڷگ۞ۅŰۑۚ۔ۂۖۧۘڳےۏڶۜۮڑ۰ڽڴګ۴۳یێڝ۹۲ۀ۽ۦ۷۽ۙۻۛ܄܆܀۪܉۬۾ۗ܇۱۫ۥ܌Ͳۣ܄ܗ۶ܙڲӵœۉۼڙܘ۟۩ܛ܃ܦܞܨ܈ܤ܊ܬۓܮܕܐܝܳۨܯۤ۵ܸ۸ܣܻ܋ܭܑܹܵܰ܅ܟ۠܁ܖܼ܄ܴ݊ܶۿܠɲܿܜݑܓܚۺܷ݅ݍ݃ݏݛݗۯܔݟ݀ܲݝܾܪۊ݁ܽݣݕܫەݬݙ܂ݪݦݒ݉ݮݴݰݧݭݩܥݺݶȔրġڄݚݥݿݘېݽܱއݢݲݫݻގݐސހܺݖޔވݷފ݆ܧݞݸݾۭݱމޅޗݵޙܩޤݯޡޑݓۢީݹޫޕ݄ކޱާޖުܒލޣݳޠ܍ޏަޚޯ݇ݎޟދ߃ިߊ݈ߍ߁ތ۠ܡġ6ڂ:ߙևģٱ٬٨ωٵٕߢٳٹκٰ٫Ϋ٭ߤκߦ߭ߣٴ͢آɻՀĶكŐ6̡ߺϖ:7čَĥࠅ,ࠅţċŦࠋĽΉǦ,߾ŗΊđࠀ̓ƀ߹ࠚϕĢפٶկղ՜թյլբ͜դՊࠢ͗՝իՓǟգհࠪ՟ճժՒٚHνКٌЏࠇࠧճձ࠴ࠣմ͎ծࠩ࠵ࠥٛ҈ٞٝεࡇ࠲ࡉࡃ࠶՟ࡆՕࠠࡁէࡕࡋُ࡚࠳ࠬࠤࡅԐࠝĦЀ̼Ո4ࡉࡪ3DŽ࠷͂;RղࡵࡰࡥխΎࡵࡷ࠴ࡹࡱࡗŐࡾͨՈࡺࡲࡼٜՖࡶࢇࡃࢊࢃƤࢅ࢈ࡿէࢁࡻࡃ࢘Ս࢚ࢋࡩࡸࢣնࠞپͬࡍϼ࠼Зࠉ،ࢭ࠽̩ٟٽ߶ĔƯ߬χΠ߰ߡ߲ߨߵރࡨࢻβ߯ٓࠟࣀٸࣂࣉĢȷࣆθࣈ٪ѕٷࢽٓࢸࢫࢿࢼ٘ࢾّ࣑࣓ٯ5˸' id='1'/><tiles values='0:6944' id='2'/><msg text='Wipe those bullets away extra quick'/></root>";
private static var level14:String = "<root><level width='31' height='217' start_x='14' start_y='214' background_type='0' compression='true' scroll_speed='4'/><tiles values='0:4727,I96H100PĊą19ė' id='0'/><tiles values='0:4200,I101H250PčT(I3R90F2R1ĈĝR6ĜĞ75FęčĨĪ3ĬR4įěF4ģĜĵĠķğĮF5ğ0ĨľħĽİŁğ8ĥR2čĢ1ĒĢ2đĩğ9į16ŖļĪňĴŊŌĸŏĵőņ1ŕńŗŤļľʼn33ŬŬŎœ3ıœűęŴęĺŭźźűľųŤņŴ5Wň),ą61ċč0ĐĒĔ0ĖČW1RĜ3ƕRĬƚŌƙƖŶƚġƟŊƜƖŮĩƚŚƚ4ƘƬƦƛƮƖ5ưĤƩƖŘƷR7ƲƻưŜƤ8ưijƤŦƤƍƺīljƞƝơƠƣƝŒLJƨǓư1ƭljŸƝŏLJƴljƶLJƹLJƼljŃLJǀƝǂljDŽƝdžƢĉƺĈưŋƽŋdzǐƖţDZǔƢƫǹǘƤ2ǚǹǜƢǞȁǠƢǢƢǤȁǦƢǨǹǪȁǬǹǮƧǰƤŮư3njƧǎR3ǸȡǒƪǼƧǾȡȀƪȃȡȅƧȇWƼƇą83ċȝHƍĔ8ƓƖƮūƩɁƙɃWƄɇɆɆ)ĚƮňŊȍƅĊą17ȸďȻ1ȽėƠǨľəɀŇɠɟɂɉɈ5ɋǬɎ2ɐňƈ:ŋċ99Əē26ɮ5ɔċŋȺPĞƃȲĸŜɇĞȝŁʁɡĽɆ2ƈɻɗɾŅʊ7ʂĜʄȡžʈɣʄɮ1ȷIɼ1ʐʝʇʓƗʊ5ĞǺƄʥʕʋʍʟʏĞʣʒĵʭʨŊŒʫʵʧʌɓʌʰɽɿʤʔʼʗ˃ʉʛĊˀʡ˂ʴˈʋˆˎʚʮˊ2ˁʦʖʳʺ˘ːʪʁɮ9ɻ˗˓ʷʀʥˤʅʘʓʯʠʢŪʈʶʩʹ˰ʼˬʱĻˇ˱ʸ˹˵ɓ˕˷˦˄ʖʆ˒ʃ˔ʎ˗́ˏʷ̄˛˨˶̉ˇ˨ˑ̎̆ʨˬ˗˺˚˴ʖ˞˫˕̙˅̛ʬ˅̞4ɸˢˌ̋ˍ̕˺̍˟̠̪̯̟̲̓̊̓̈˯̤̝˳̻̇ˋˮ˼̼͂̿˭ʲ̺ʻ̓ˎ˱ɮ8̸ʐ̴̖˩̪̮̒͒̐͑˪͔͙̂̀͞ͅ˽̩ʐ͈̚˜ʷ̧̦̘̪ͤ̈́ͧ̽ą5͢ʲ͒ʑ̭˅̶ͯͲ̫͵ʙʹ͖̥́͋ͮͦʽ͏͇ͬ˲ΉΈ͊˛͌ȵ·ͼ˧;͚̫ΌΔ͛̌Η̏˿̑̅͟Ρ͡ʟ̡˙ͥ˺̢̱ͨͣΨ˃̨Υ̲ʹ͘ͷ͚ͩʢδ̃͠ηΟ̹Ή˻Ύ͜ˣήΏ̜σοςͭΒ̬̀ͽͶˉΓεμλψ͐ϗΜϚΆβάΧπΪͺͫϊΊʴα˖γ˺ϕːͿΫͳϫϜ̰̔Γ̣͉˝΄ΑϵυϸόϻϡϹ˽:͎ώΚͻΘξϙΣϖЌϘϏΕϑϐΤϩϟː϶΅ρʺθĞϤΐίϧͰͺ̳ϲϮУκЎϛСϿϥКχ̗ЊПφ̾аЬгϽϥ͍ϔХΝ͕бІ̵оϺЅϬЪϒͅΦЗϼϋЫϞНέЀΰТяͻц͓юЕϰ˅їϳ̷ЅИΩЁϓѠьϦижѥђкύ͆сΖϜΙѝЈΞмЩјшѩњЙѡРЛϯѼѦЮ̟:ͱѕФѷў҇ШѹѸϴѪЭ̦΅ΙѽдϷѺ˷ҖйѨʽЃѶҎҊЉҠГЍҎѲнѱҀОЯѧҐѻҬеҮ҄҆ѻ҈ҡЦҌϱ҉ҹѮқэҝҕ҂ғфҾӃѣ˔ҟхҩѷҨҼуД͝ӏҪϣёҒͮМҁѫѿ҅ЧһҸνӞќӌѿзҭ҃ҘϝӆӛҭӂӬҲлӋӓӍрѳӐѤѮӶӔѕұөӨәӽЙΪӝҺӣӳӥԅʖӺљҚӇϾґҝӨҔрҿҳөӱӹӤҥЏѯВБӑΠӠӻҰӖԑϢӼԥӧԃҵˣҍԛчүԭӟԯҏџӫӗԏԷԦӈҙτӯԗѭӒԢӴҤԟҦԴӎՃҧҫԩҲӿՌϠԸСԄҶԮՆϭӡԉːԋԈԺԪԼӪԍԿԓӦՎӄЂЄԙԇՈӵԚԽ͗ծΛӪъʷԕՏӕՑԻѓՔԲԆՊԱϪտԴҊӮՒӁԔԎѬեӾէˉӊժրկաԡքѴпՅճҢѵԨպ՟ѓչыԿϨվԊղәҷ֖ՙ՞զՠֆջԐ֟ѬՂ֪ԣֶ֛֓֘Ӳ֒ճԀՍ֍ӘՐ֢և̰սւ֦իԶ֥՛֧։գӅբ׆ӰאהՀֵֺ֕֗גך֚לԠձֿׄն֊՝յвֳӜԬף֨Ֆן֫דְֈԂ֮זӭ˾֙ЇӷԜ՜լ֡צ֣ąˡ՚˥ѢԹ:ǗтҪؓʞׂ֬όؓŋ7' id='1'/><tiles values='0:6727' id='2'/><msg text='Destroy King Kacta!'/></root>";
private static var level15:String = "<root><level width='32' height='233' start_x='15' start_y='231' background_type='1' compression='true' scroll_speed='1'/><tiles values='0:7520' id='0'/><tiles values='0:964,9ĉą19ĊČ:47,4ČĕđďĖ,0ĘĜĒ5Ċ3ĜĐğģěąĚėċĦĢğ41ĮąġĨĆĞijIJĒı9ģĝĨķķĶĿŃīĽĺIJňĵ1ħŅĤļįĻĽʼnđŋŀŏĝŗ:3ďĬąģŝ:1ġŠşŔġ106ğ8ď7ŒŗĹŕŰŰ7Ūąİ,6ĔŘŦĥŞŹ8ŐŹďą2ı72ƂźŎůŒńĤƏľėĿųŒ6ƁŷıƋŘƍƌƞƜƟŀƑŀƈƊƄŁ1ıI2H1P2R0F2W6R9Ʋƴƶ18ƹƵR27ƾŶ,ƫƭƯƱƳƿƸNJƻƽǍǀǂǍĤdžƮưǃƷǘƼǘǁǃƐėƥƙŹŻƨƪƬǖljƺǙǐǛǐǝǓĝǕLjǘnjǪǭǪǯƺǔǧdzǐǵƿǷƿǹƵǟĤƗğ1ĉIŨ7H40P50T(I3TƴŢ)ğ2ŪƛǥDžǼǗǾǚǏǸǒǺDZȢǩNjȥǜȨȄȪLJȣǪǿǎȯǞƒĤǡŇȟŊǦȳȬƶȶRȁƶȃDŽDzȴȭǬȦȂȰɉȫǴȮǮɐȅĝȼŸ6ƧƣƣƕơɟƠɘƉǢȾŔĔĿəƚǤŊɨėȇƅĔȋ0ȍȏȑȓȕȗș5țčģɛɗšɮȆƘȽɬƓʈɗƢʉȺʍŀɰʆƐDŽ4ʓʕʒʗľʖʙʘ,ɪǣʁ1ʃɣȈȊ30HȒPƼW24ȔI4lj3WŨɅ5Fʳʵʦʸʴ0R4ʷʹʾ6Ʋ˂R7ˁʽǫˆŨˉʵ12˅ˊŋˎʾŢ˒ˏ6˕ɅǏˌ9˛Ɔ˘ʾ22ˠȏʼʵ˥ˠǒˆ28˛ʦˢR3Ţ˨ʾ3ʻˆ3ˀ˶ɽšģȖʧʩʫʭʯʱ˲˵˺˲˼ˆ˄˶ˇ˛njˌ0˛ː̈3̕Ȓ̏1˚̛˝˓˟̏ˡ̢˥̢˧˭5˫˲ˮ˰0˲˴˰˹ˊ˻˕˾ːƃʠʢʝɤ:ˑDžʦʨȐ̄ʮư̭̏̇̏̌ˊ̎ˆˈ̏̒˓̛̔ˑ̛̘͇̝̈ˌ̟ˏ̡˭Ṳ̃˦̢̫̩ˬˊ̬̏˱̳̲ͨ̉ʺ͊Ũ˾̾ɦȈ̺ʐȝ̿̂͂8ʬ̈́ʰʲ˓͈ˆͯ˃˲͎ˆ͐ˏ͒ˌ͔ˌ͖ˌ̚ˌ͙˓͛˖ͦ͟͝˭̥˭̧ͦͣ˭ͥ˩˯̶̮̱̯ͨͪĉʀƅƇ̼Ţ́ʪͻ̅ͅͿˏˊR͌ˊΆˊΈ˖Ί˓Ό˓Ύ͘̕ΔɅΖ˩ΘͦΚͦΜ˩ΞͦΠˣ̯̊ͫʺͭ˷ΨȜġΫ̽ƚʅƆΰ̃γͽ͆ΏΣ͉˛μʵξʵπɅςˏτˏφηψ̞̈όˣώ˩ϐ˩ϒˣϔ˩ϖǀϘ̳Τ˺ϛ˷ϝ˳ϟčďϢϦͶŪ́ἀ̆ζ˖θʵκϰʾϲʾϴˍ͓̗̙ϼ͚ϾˠЁˣЃˣЅǀЇˣЉͧϙΥͨБ̴˽ʤʟά̻Ȉ̀̀ϨͼН̈РʾТ΅̑̈϶˖ϸ˖ϺПЬΓЮ̢аǀвǀд˪̫ͤЋʺЍ̳Џ˳нГ:ġКчδ;ъϭϯю͏ѐ̕ѓɅѕʶїˏϊĎЯ̫ѝʭ̢̪͢ѣ˷ѥʺѧ˸Χ̵ȜɫȈďѭͺшεѱ̊Ϯ̏У̐Ѷ̛ёɅѹ˔̛͗ΒѾљ͞҂̢͡жǑѢ̭ϚΦͨГуɥŻšѬцҕѯϫѲιѶХˋ͑ѸЪҤΑωҨΗҪ̦҅ѡ҇Ұл˺ѩҏĸʞƛϣƀрҔβҖѰ͇ҿСӁ͍яҟӆ͕Ыҥӊ̛Ͽǀћˤҫ̨҆˭҈˳Ҋ˷ҌӕпƅȞƄӚȼĎϧһϪОʶӢьӤνӦ̓ӨӪӉϽӭҁ͠ӎҬӴͦӶͩЎҲ˺ѪЗӿЗϥҹӞҼԆҌ̋ԊϱԌӅЩөӈ˓Ҧ˖ѿӮ̣ΙӲΝԘΡӒԜмҎӼҸсԀ̼ɚҷϦӘԡϤƊՇέՌȈDZҺԦԅҘЌҚ̍ѵ·ѷԯԏԱ˙Ӭ˞ԔԸԖӳӐӵԽѦԝ̳ѪŨҵȽՊӛҶҐծՆճՉճʐɚɜʌŖƝɢňɡňշą̺ɳɵȐȒʯ1Tʳ6ͱDžȌȎֈɸȋƵ֏ֆ֒ɷ֊֖֎Ȝɴ֚։ȕ֍֏Әҷʢ˿մґքƨɿʅպğ֪ŕչƚӿִģ֨ɠվĕʚ־ʜʔׁDŽ̸ֶ֮ŊֺՅ֭:֪Ɓƫ3ȎƮʫ8SȕɒNJː)WהזɁ˵ș2ךלɊӷטסכופ˼נעשȫ̎רםǨ͎ױףȫǿיײפШמ͔׳Ljң̚؆ȫ̜ʷ؉מɎמ̡؍Ḳ̌ؔLjӱצưؚ҄ȫѠؗ؝Ȱؐؕأӷƾئ˳ןʴקؑǨҍ؟سLjоį֬ՃֹؼΫȡɁɓɍȸǰفǨكǶɎɇɖȲوȤلɕȹ֯ؼŰפىȀًҮنƫ1قِيمȩهǽȵɔȧٓց٪ֽɡկǻٟ٦ّ٨ٜחٱ١ْٴٰɌٷٳ٣Ŀ֙ɶ֣֦֕֟ڀ֓֜ڄƅ֠և֛֤֑֝֘ځ֥֔֗֟փׅٔәؾׇֻռɝڟǠ׆րֽׂʛڨ׀کڧڪձʑڞʊڠڱɯֱֳַŁ2אİӞطɋح؇ضاظجزۃưر؛פװۊؠɁێھǫتےۇҡۅۋ؊͖ە؈ۗخ؋ۂۡ؏ۆۡؓ۠פؖ۩ء̥ت؞ۯͣۯإۦ۪ة۬Ɂͩت̰ۣפصۻۉיػڗؾښ֩ڙڵ׆ژٕƎڡּܐտցڝ܋ŔҒ٤ɋɃ٧ɏٓٗ٠ٙ٢ȱܙɂ۔ܡٸ٣ܟٶܧٽܣܪٻܬܝٹُܫȷܨȱšڶڰɾڮԂܯܛٲܲܩƆٺ݀ټ݂ܮٵܰܶܭɑܴٞ˜ܢɑ݅ܦ݈ݎݕɄɆٛȩܹڤچڍڃڕĸ܌ښƧ٫ܑڥڳʊřֲܻܤ٘ݗٌܞ݆ܱ݊ݴنřĔܔօݶݖݒܷݙݐݷݳݝܣݻؿƧܿހݜɈٯބލٚޏَ٥ݑގٍŁĴđĔݧސޖޅށݍǻݏޠޒݓޟܚާނƟѫŁޝ܉ȟތݛޓޙܜݹ݃ݚއDŽřƉݡڂڔ֞ڊĵѬڑڇڎډ܍ݬʎݩܒ٬ƖޱӿŕĵݼڣәߕޜؿҷѬں֚Ƽщʼˑ˾̀ߟɶߡҗߣ0ߥŁߦڻגͻۓۚۏǨذۀȫʻت܁۵ׯߴۓۑ߸Ɂ߽מ͒ە۸߶ࠊ۟ࠂ߶̝ەۥۛؒ،ࠍ؝͟ۯۮ࠘ў߿ۘآࠝȃࠐؘ۷ࠤưۺࠝۼۻߺࠪ߭ޞܼߖߜфޯڮݯݫߐݪŰڲĝ܆࠵࠳ܔߚڷʐȉȡ߰ڽۘࠟۡࠗࠧץࡍࠅǨۍࡎࠁࡒLjࠄࠕ߶ࠇ̖ࠝ۽ۜࡑ࡚ࠎࡋࠒࠔߵۨࡎ۫ࠜ˧۱ࡡࡩؤࡤءࠦࡗࠨΤۻ߷ࡹѨࡶ۹ڷߠ8Нǭʳߤĭࢄߨࢆε࢈ʬ߬рϢࡃ֮ࡂŌࡄʅśň6ߍ࠹ࢠߏŹվŚڹ݁݉ࢨ݇ࢪݔޑިޕުࢱެąࢧࢰޔݱܠކࢻࢩީܥࢵޣŷ߀ݿࣅݘࣃݲޢ࣋ࢳࣄࢺࣉ࣒ȹ:ࢸަ࣊ࢮ࣌ࢽ࣐࣎ࣛ࣍ޘݵࢬݸࣂࣇȡޥࢴࣕٴࣩ࣑ࣁޔšЙ݄ࢹ࣯࣓࣭࣡ࣖ4ࣈࣷࣝ࣬ࣤࢾࣱٍࣨँࣦࣞअࣴࢭࣦ:Ĉ5' id='1'/><tiles values='0:7520' id='2'/><msg text='When bullets chase you, pick up the cat to out run them!'/></root>";
private static var level16:String = "<root><level width='31' height='217' start_x='15' start_y='215' background_type='0' compression='true' scroll_speed='1'/><tiles values='0:6727' id='0'/><tiles values='0:1674,ĉ,0ċ5čċĊĎ7ĐĔ3čĆĘ76đĕĞē:3Đ7ĎąěĦĢ,69ę1ě2Ğĩ4ĐĈđ10ĝą11ī8ę3ĭ6Ėīēīń6ņ6ĘĻĘ6ĺŅđŃę7ıI31Hĸ0P2T(I4T3W20)XR0F1ť04R18ūŭŦġ4ĿŗřśŝşšţŮŨűųŬŮŰŴƆę4ĘźŚ0ŜŞŠŢŤŦƂƈŶƃƗůƊŹŘƎƐžƓƁũŲƚƇƅŶƊƌƞżƑſƔŧũƦƙƨƛąŸ,ƍƭơƀƕƤƄŵůŪƵġ1ŖƬƏŽƒƽƱǃǁŰƥDŽƜƹLjƠNjưƂǑǏǎƉƷĝƺlj2R9ū0W36ƼǘĮĽǠƐǣǥǧǩǗƁƊĊŗH3ŝWśRĴF2ǧ3ũǤȀťġLJǹŝǰȆ2ņǸǺǢȅȁȎđȐȋȓȇęǟ3ȊȒūȔȏȝȑȌȡȖȣȘȠȚħǔȞǼƏűģȍ5ȄȪŲęƝȮǽǿȁ3ȃȥȫ:ȉȤșȕĎȗȟȍȢȞɀɆ:ȜɌɅɋɄȪɆȭɔɊŀɗǻǽį5ȳȵȆȷąȹɘȦɇȨȁȻɟȽȿɒŔɛɪȰȼȂɡɧɱȯ0ȱɬťȴɀɣ:7ɸɝȲȔɾșɣɱɍġɥɜɳɼȾɶɁɃȩəɨɑɕɓʕɧɏʊɯʗɦȫʞʙɚɈɹɻɠɿĿɤʃʏȆʑʋęʔɉɷɈʱʠʛɁɐʡɖʶʟʣʖĪʦʄɼ2ʇȶʫ:ʍʴʢ˃ʮɭʒɎʂˎɺɴʰʿ˔ʨʆʒʀ˓ɩʧɞʩʈʫˀʜˋʧ˖ɮʤąʳʱ˙˩ˑȏ2ȝ4ǯɒžɺɕű˅R3˺ɴǢ6˺ĕȍɍű0˼dž˺ˡȔ˻̋Ń̅Ǒ̍19˼2ĸ̅2ˆ̙˵̙5̖ĥ̙8˼˾˺Ř̤˾̅3̀)ʥɩʷ˥Ɂƌ˳H˵ʹȎ˸ǃ̤̓˿˼̂̅̄̍Ʌ̇̉Ŧ̑ʅť̎̑̐̓Ƅ̡̙̘̖̝͓̟̙͓̣̪̓̍̕̚Ə̪1̨̦̬ȧȺȰ̌ɽ˜ˋʷɂʭɺͧˆͩȸ̱ʽ˟ɫʯ˪ˁ˞ͥ˕ʐʵ͵͈ͦͰʪɰ˙ͯˇɢˤʾ˫ˊͭǾͽ˱̮ͻΏͷΑƷͳġƫʘˁǷͮΈɪˉΚȑˠΠͱĻʸɲͼΕͫΝΛʜ˭˘̯ʟͬΜΎ·ΨĆΪ˨ΐ̳ͫŻPŲͫĐηͿΰɁφ̗Śσ8πιΧ΄ʬχˍδΌΤ̷ȈΘΒʼϛϕɎϙΫ˚ͨϓϜϔΞΔːϐϠġφϗʖϧ:ίϞƊϑ˅ΡǼΣĭ˯οεβ˫ϧϲʻϚͤϵΪϬϩκϓϭІʎάϫεͺΥͶВЁΆϒˣ΅ЊКˈЏˌɎ˧ЖɵͫЀəϽέ˘̴̶СŢŠ˹̼̑̅̀R͉̿̍́̓ĸ͉̋͊̓͌̒ͅу͓͉͔̜͐͒˺ˆ̠ь̥̪̍ͣ͜͟͡ȬЎЈε̳˴˶ʙ̹̋г̍ез͉йС̈́̑͆̓п͎̏̉͠х̖шǢъ͓͖щ͓͚͘щѐ͉ђё̪̩͠ёіϷˢПјζНϸλͪγΓ˰ͫДАϪХҏЕҌЌғϣЋЛљΌУˏҖϘΎґεϴЅїϰʜҩҝОΉϝҔҞПΩҦϾΌҮЦЂ҉Чҭ҆˛ЌĸҷЪҥIό1ώυҼҬϊƹӈӊњӀϥҟЍӍɎϯωɎҾ̲ϲӜϡӓҟϲҢБҤˁϢӋјϲҺҨӡϹʀҎИӗŷϲҜЉӚϟӴͲЩЗθ҉ļӬӯλԁԀәЇĆӟġǟ̚H8NJIбƔ˻Fԓ̩ԓǿԓ̿ԓ̄ԓȅԓмԕу͆ԠȲԠ5ūԠ̐ԠƄԪɟԧԩуԦԣԱǢԡԞԵRԝ͉ԛ͉ԙѾԹҁƔ̭ΗӇ2ԎԐԒуԯՀԢǢԿ́ԹԻɉԠ̈ՎűԤԲՌԶԨć՛ƴԮ՞՝ԥՠ̊՞ՖԸՓжԹՐ˽Ձ՛ՄʁӶŖԍԏƮՊ՜ԗԾՠԽǢլԟуթԴ՞Գ՜Ձԫуԭу։ևզՙԶօՔѥտծՠսջՃʥշՉǃԧռ֙րԺՠփ֔֒Ձֈ͊բԬ֊զդ՚՞֓ѨժԜ֘կ֛Ԕ֝ҶՆՈչ֡Ջַֺֹֻ֣֩ֆեգֱ՞֍Զ֏ִ֮ԠֶԷкՒվ׆ֿ֢˂֟׃ձמםԚכՁֲ֕֬אְ՞הѭֵ֑ת֨רקׇץ֜ťճųӏՇոџգΔָք֫״ױզגűײֳԶ֭էՕիלՏ֚פנǷעןՍԘؚ֧שը؋؍֯ׯՋبا؈Լ֤Ԗ؝ǬĿ9Ō,ĸˤؼę5ǭؠаׄǢֽկ֦ւرتد؎בخِԶטլּ֦ظ2ճ̳֠ٞհ؇֗س؊ُזّجԶؐ՟،٪؉ցإٝנĘ4ıĎٽ֞٢ףٺأצصؙ٩֪٫ْؔװٮוڌڋ֖ٷ֥ضڅو٠ׂءׅط٦ڇشڕڔٳٕ֎؏ٔڑʨחَٶئ٧؛ՂعĻĶׁن٤يإٍزڮڧڬٱڏکٲٖڦؗډڱڢچىٞڛڹ٣ڄۏڡՑڈڰיٗذثۆۅדڍۈؖٵךۘۍڳڠآٟęϼمԑه־ڙ؆ۧیڤۚۉ٬ڨ۠ٓڎ٭۹۸ڊڰٛژە۪ۑۮպ۱܅ێխۦ۶ۣڒۻ۟ؑۡۿܑڥٚٸ۔ճĸĽفٿŐ4ܤܦđܥĞŐ7ؽܩܣܨܧܯĎܢĢĐܴԁŕŒĭĻܡŌܵ,ܴټپ,ڀąĵˤĶ݆,ŁđȬ݁ܶؽܬđܢܾ݀Ĥ݃ĬقݖݔݒŐ݁ʂݚął݈ʂݣċپĢłܻƹ4̵ȋԵϏ֩ϏǑƔϏ2̡ݶȖݮ4ݰՎɺݳաťݷݹރׄΊݼݾŤdžȌݶނ2ބݱׄćݻݯǢԱŰށݵކݸޒԵņܹĎݢݭޖهݲޒޛސRޝՎވޥԵހިגޑޭއޕݽޗԢތޚޫޅުԱޔɇމŤޙޒެގޟŒϻīܻ:ݤŒݦߑݨĮϋќۓ̻͝д̾̃˼лՖ̓Ѫִ̻Ѯ̑ѰԶцщѳޫ̛ѶьѹщѻѴѽۏ̦ҁё҃ѾіЍЬǖۯѠߜѢߞ̀ߠ̋ߢֆѫ̉՝сѯ̋߫Ѵ߭ѵщѷѴ߲Ѵߴޫ߶հ߸є҄˅ܟĊݢߕޡߏ۬ľŀݫࠨ6ݥࠨޡĚӏߙڃߛё̽̅Ѥږ͂ࠈн͇ࠌߧ͍ࠐѲь߯ࠕ߱ю̢̼ࠞ҂ࠡ͢Įն࠳࠵Սࠄ࠸ߟ̅ߡ࠽ࠋвࡀح̑ࠑޫࠓࡅѴࠖޫ࠘яࡊѓࡌѕࡎĻıࠤłŐŋࠬˉԅ߄ނŰߊކޒߌ߃ޥޛތࡻ߀ࡾŐšࢁגɺࢄϏࡽ߈Ԣޮޏߋࢆݱݛࢊޛࡺ࢘ީȏࡸࢂ࠙ޞࢡގࢂࢉࢥࢌࡨࢢ֍ȋީࡼࢩރࠬݬĴܨńܮ݄ܱࣁܰࣄٿࢿń࠰ޣ9Ιࣃ࣐ܲ࣎ࣀࣀ࣌ɚ࠭ࠪīݗȭޘǐ֍4ࢤޯԢǨࡹƧŤࢴ߅ކ࢝ࣥǼࢬ࣡ưࣤه࣠ࣛٯࣜׄ3࢛݃ފWࣶࣝޘĩĵĺݪĒĞࣈޠࣈؽǸࣳދࣵࣴࣻࣽࣴĔܫआअĞܾȷऊࣻތࢦएࣨऑऌओĆĿœޢŊňŊउ˴जऍऌटׄडǼ݈ࣨࡳनŒपĮȹऋळނdžरޘाऴऺ݀࣍ݕछठलࣟी6ࣰԱࣧަॏ࢈ौࣱ࣯࣪ॕऽॗԱࣸख़ॊ࣫˵ɚݕࣔĻί़ࣟࣤख़ࣣज़ख़ު६ދ़࣭Ŧ॓Ɣࣲभॵǧࣹࡸु॰ࣼĩȷेबॉ३ࢀ़५ࣞ࣫॑߆࣫߂ޤॳͮউक़আॸॾढ़কठॹॡĎ̟ॄैऱय़४ॎॾঋࢲࣾ॔ঙهনॶख़झওड़ॻ࣮ࣼছঀػ࣍ঠঌࢺপްओঐখ߁ॲऐিࡿॅʲȉॳݴ८বࢰ७ঽऒࢶޓচࡿʝݎĆͺৌেুࣨরࢨॱफ़ৢমħʂজմğĔइĠगė֞ࡑڻвࠃם̍࠹ئ࠻̑ࠉۛ࠾͋ࠏࡃ̙ࡣޫࡥэ͙ࡩ͝ࡋߺࡍȍڛॣܾ4ĽʼnŒऩਛसŒܾĭĜ৴ऄ৵ħĿݎݬড়ı5ݩߒĔĩŎߔ̗࠲̵ࠀбࡓەࡕৼࡗ̓ਁڦ࡛ߦਅߨࡂ͑ࡄ͕ࡇࡉਐਔĮ৭݃݅࠱࠰ĵߐģď৳Ĕखੜਜ਼ਥ:ँਞޢňܾਗ਼ਚ੦Ň੬दőޢࣙ।Ī݁ĭজ݄Ħđ5DžݑਵЭࡒׅ࠶ߝࡖࠆࡘ࠼ѩоࡁਇੇਉ̞ࡈ͛ࡪҀࠟɂܽݝઝܳੲؽਖઞݜટŀԌςŵʼnƴપ˲નǜ2ફǚťਚӇύࣹՇӉસષȖહŝઽ઼ɇાીૅૂુӏૉશેૅӇયળƧભઽǀʲӏયƗલષરૠ؟યș78ũɴਢૈɀ૫૭ɼ૯ʹҕૌ૬ૺࢉૃ૾૮૩Ȫૹૣ૱૪2Ƥ͈8˲ଌɼଐϤଖ૰ଘଔȆଛˌŕଞȁଠૐଇଙͧଖଧ૱ફ૧ଊࢵૡରƨ੪ζӐબૂଶऑଭ૽Ȇૻଁ૪ଃନୌଋଇȁେ୍୕Wେଆ୕ଅୗପଏୣକଝଚ୪ଢ୨ଟ୭୯ଥમୡଣ୬ଯૢାଷϋଡ଼ୄ૿ଗଢୖ୦அஊଜஆ୶ୠஏୢତWଦୈ୶୳ஜୱଓஒ୲୵ங୷ଫʌଂஔஈஓଡழஸૼஷଉறவଲ୮பளமடஹெை୧ி୫ேϔହாோுநଢ଼ஞௗୃୋூனொ௨୕ண௯௬௫்ல௪ீ௺ଈ௦௩௮ௐ௭சఌఏం௴௸ர௸߾ఇఐఈஐఁతటୟ௧ఃణఇ௲డ௵ధమఒ௱ఔௌ୩۬Ń' id='1'/><tiles values='0:3488,49,ą3238' id='2'/><msg text='Grab all the food you see'/></root>";
private static var level17:String = "<root><level width='32' height='271' start_x='15' start_y='269' background_type='1' compression='true' scroll_speed='1'/><tiles values='0:8736' id='0'/><tiles values='0:1860,44,ĊČĎ,93ĎĆĔēđĐďčą15,106ĕ2ğĚĒĜĆğ9ĩĔĚ:39,7ĜijĔąīķĒĺħħĘĊĿ:ğ7ģĊĴĕ3ŃĊąĔ67đŁ1ŏĿ,68đ7ŋİIJ6IJŀķĆœĺ72ňŏřňŕŏşĕŒĻđŖŘŚıŕŞůĝŢŘťŌŧųŵŐĺI21H1PćR90F2W24ƉƋ1ƎƐƒW12R2řFƓƏRćƖƘđƂƄƆƈƊƌƔƑƝƫƢƙƛƖƟơƭƣěęĵĽĵƥƅƇ8ƬƍƟƩƞƕƵưƜDŽƠ8ƯƤƃƽƨƋǁƐǃƮdžƚLjƫƴƓƶŷŕŗņųŜūİ,ƼƧƿƩǒƬljƯǗƲƐǚƗŻǥǎǧǀƫǔƟǭƱƭƳNjdžƸƤġ7H40P34T(I3ǮFȎƴȎ2ĥȐW8)WŚťIȃȅȇȉȋȍȏȎƋȎ3ĞȖȘȚċƻǵƾǷǂǯRǻǘǾnjĊǦȰǩǸȳȵȳDZƶǤŤŦijžŝũȺǐƪȲǽDžǛLJɀǿɐǍƦȻǑȽɎȴǖǼljɁdzįĦȮɖɋǪǹɏDzȏɞɓDzɕǏǨɘɍǬɜȶǰɬɂōǟɆŭŏȝ0ȄȆȈȊȌȑǿ3ȗșțǥȞʁȡʄɛʇȫŚćŪɉȯɥəɳɐɪǙɷdzɊɰɌǓȾɴɒȸȭĕɢɮǶȼɲǕʛɝʝʧʠȱʣɚȿɚɟũɄĝIJɾʀȠʃȣȒʈȬąȜʌˁȢȥȪʉŭčŨŌſ˒ƂɯʵǫʯɩʱȷȀȹ2˖ʭʶʚ˚ɵNJʧɡʨ˞ˠɱˢ˙Ƙʜ˜ɔ˪ʬˬ˘ǺʥʹʞũűǠɼʋɿȟʂˋ˦ˍˆ:ˈ̀ʍ˂ˌʑˎĝŗŎʖ˫ʢ˶ɨ˯˛ɶʳ˟˴̔ɧɛʰ˥ʺƷĸ˩Ǵ̓ɦʤ̠ʦ˝̨̦̜ʷ˸ɫȸɃŻĆʾˉ̂ʏ˄ʒĤ˿ˀ̹ȣȦ˅ʓģ6ĵ6ŠĔ˕̮ʙˮɑ˹̧͍̚˷̪̬͐˨ħ͋ɗ̝̩ˤ̫˲̭̯͛ˣ̡̗˺˒6ŅŕĭIJŔŔ4ğďͱǝͮĺͯͳͰƀͺą41ijĵ7͉̾́ʎȣƩ̍ˆŷłΊ̈̿΅Ȏ·̓̽ńŘĩƃċŠŮˑǤ̤̑ŁťȆ̽Łğ˼ɻͼōŞ̇ǴȄ8PƙǔĉĭĨʩΫHέίƖαņ̵ͽΦΜǣŮΥΛ4Ψ̽Ƃάή˘λΪįčʿ΄̋ʐΒį͊ƛηϊΰŋijν;Λφ̸̤͙Ώ̄Έž˨σŚυʕ˞ɤʡ͎ͣ˰̙̬ʴˡ̟͖̕͞͠ώ̼͙̊̃͂ʗϯ͓̖͏̲ϴЃ˗̞ʸЈ͠ʼ:ξϟ˓ǴϮЋͥ͟͝ɭϭ͒ʮ͔ϹЎЛ̥ϐϾ̺ʆΒ˒ЂЖ϶Ќ̱ʲЉЫ˵Э͕СǜϩĕϫΝϼФˊʏЀˎ˨АВɇΩʪȹϣϒ̻̎ǤϨɺτōǣėͶєͻʹуō͇Šɽщ̃Α̼ˇϽоΆр̆ͪ͆ͅиϞͪ7ͳŇņŠIJΔņѯŠξзͨǣŜѩ͇ͳ͈ѫϜεɈąIJ5ͪ1ǜĬиōѾŰҀѲїиīγҌĝ;җǤҚ5;ƺạ̏Бʾ̛͢ЅϸЙϺТ͚ʘОІϲ̄͠ҫЄҭҧЇЯұҤҬ˭ПҨеʟҹҳһҮ̘ҰҪӀЗ̰дҷӆНӂҵү̢͡ҺϷЍӋǜҲӈͤҶ˱ӌ͌ҴӕӜӗӇЬИӛϳҸӍӔЮӡϝӒӁӪӊӬǍөгРӖҿӴӥӐͧӮәϱӄӑӘӤӉӶӲ˳ҥӟӫӧӝԈӎӠԋӢӹԄҽӷӳӞԎԊӅԑԗӰԅԐӸԜӵԔԆӽԃӚӻ̳2˞3́ҺȢ0ɛǁƠ5ɌR3ɱRͰԵĉԵѮԵʭƠ0ԴԲƘԸ1ʼnԵĞՆ6ՃƎ̄Մ9ՍưġԵȔՒƚȆՕ5ǼԲ28ԷԸȨաԷԵȉՒ)ĕ7;ƂԬʁԮȌՆաԸԺԲԼԲԾԲՀġՅՉՈՄ5ՋտǿՐ՜Ք՞ȕ՞ՙ՞՛ՕƜ՞ՠէ0գȩԲ3զ֙շƎժʽǴկȇձIճՉյԵ֝ƙչՎջՎսՂՉԪցտքՉՌՉևՎ1ՑՕ֊ՎՖՕ֎׀՞֒׀֖֔֙է֘Վ֚գ֪֟ĆϏ2֢ԍԯԱֻ֨Բ֪R֬ƙ֮ιՉֱՄֳՄւךօֹՆֽ՞ֿư׀׃ưׅ׀ׇư֙ƙէבҍ֡ԭӁטմ֕֩ןRסȱՁտצֻרƙՊַֆ։Ըׁ֍ؚ͏֓յ֗եאթĕңז֤֦փ؈ל؊Ը؍ְؐՆؓԳתՄֺؔ׀ׯƚױư׳ƚ؞ȏؠ֕آէ֛żհղיؔכՎם؋ذՆפֻؑؔشؕՄָطؘ־ؚؾ؝՜ƚԶويšٌَِ֣֥ԳجٓخԽرֲسֵضֻظƠغՓ٣՜ـĥ٧ؚ٪Զ٬ٮ֜إĝģծʵ؆֧ٺƙٔدپٗزִ֧ڃؔڅּؙՕ٤Ə٦֑ڎءأږĆխוښˡڜث؉ԻڡԿڣڀڥփڧՏֻڇƚؼ؛ײگ׆ڱمڳهؤɌגՇٴחُ؇ھحۀٽۂףڤקڂؖՉۊƃډׂۏۑنٰ֙ԶٲƏۙةٸړնټպڢۢۄۤڦۦ٠ۨګڊۭ؟ڲڴڕۖňژڹٍڛۛڝٻ۟۽ۡՄ٘ؔٚƠֶٜٞؗ܅٢ڬ܈՚ڍՕڏբۓ۲ەǁגܒبٶتךڞԹۼ֭۾ܝۣؒۥܤۧֈܧ܇۬ܪڰܬ܌٭ىڶ2اںˬڼܸܘڟܻנֻܽܞƠܠՇֻٟ݁ڄ١݈۫ې݊ے܍۔ڵܐĝהܵܕٷۜڿոہռۃץځ܂݂܄݄ݥܨ݇֏ܫل۰ܯ۳ըݯΪڙܔڻܖڽݶ۞ݸ۠ݺۿݼۅש܃ݣܦނ݆ݧޅ݉އ۱ފܱ֞и۷ܶ۹ْݗܚܼܜݛܿٛݠؔݢڨݤػݦێݨۮݪވݬܰݮܲΪҘެݳّܷܹڠޗ֯ݻٙݽۆޝޟރޢׄކ܋ݫݭܲŭğޏٵߊޮߍݘ،ݚؔݜր܁ߔݿޞށߘޡޣݩޥ٫ާދٲ1ݱݒʢݔߌݖܺޱݙ߭ܡƠۈع܆׀ڭڋق՝ߝ߂ߟ߄ߡު̏߉ޑݴܗޔܙޖܛޘܾ܀݀ݾݡܥߴڈߙ߷ߛޤ࠙ަމ߽ީ2גߤܓߦࠡߋٹࠆߎࠧߐޙߒޛّۇƴۋؿ܉ك࠵࠷ٯ࠹גȜ࠽ۚࠢޓ٫ݷՎٕ߬؏ࠪࠬۉࠓװܩ߸߀ߺڐࡕ߅ܴࠞ̇ࠂǒࠄࡁࠤްࠦࠨࡣࠍࡥࠏࡧࠒ݅ࠔ࠳߹ࡒࡔڔݎލࡵސݓޒݕࡺࠇࡼࠉࡾࠋࢀݟࢂ1ࠐࡋࡨࢆࡪބࢉࢋܮ߃ިࡲ࠺ŭϖݲߨࡂߪٖࡆܟߓޜ߲ߖࡌ۪࠱ࡏ܊ڒݍٱڶ࠼ࢰ࡛ޕݹࡅࠩޚ߰ࢹ࠭݃ࢢޠࢇࢥ״ߜࣂߞࣄߠߢ˔࡙۸ݵ࣏࣍ࠥߏע࣒ࡇࣔࡉߕࠑچࡩؽ࢈ࣜ࠴ࣞࠚ࣠ࠜࡳࡘࣉࠃࠅࡃࡽ࣑ࡿ࣓ࠫ߱ࣖހࣘߵࣚߚࣷࢊࣹ࠶ࢪ࠸ࢬ֟ࠠ࣊ࡀۺ࡞࣐֫࣬ई࣮ऊࣕࡦࣗࢅࣙࢤऑفࣝ٩ࣃԶړ߾թ߇ގࣥޭࣧڐञמठ؎վ࢜ܢࡊک۩یࠕࡐ࠘औࡓखࡱࠝࢭݰचँ࣋ःࣨࡻ࣪ࡄड࢛उࡤऋदऍनएप࠲ऒࢧैࢌॊࢎࣆݯॏࡷंࡹ॓ॕआॗࡢख़ࢁज़ࢃधࣳࢣࣵࣛबࣸमࣟरࣅ۴ݏ४Ɣࡸझ࣎ट࣫ऽ߮ݞीࣱࢡफ़࠰߶ࢿࣁॿࣺঁ࣡२ࣣߥ࡚जޯ९ঊॖঌࠌ࢝ॶ࢟ࢄॹऩॻफڌॾ՟यդছঃލ۶টࣦࠣ८अ࢙इक़णग़थॷढ़বय़মॡॽओঘकࠛࢫौגࢯࡶআ६ঈࣩতॱদिࠎপॸڪॺۍকࢦগলঀࣼজࡳࠁॐডߩࠈ߫ࠊॳুॵৃঢ়য়ভৡ٥ࣀࡑ।ࢩৎगχशߧस۳ঽৱ࢚৳ࢷࡈصঐूࣴ৻ڮ৽ेৌॉਁो्ࣽवऀ५॑७हউऻঋٿॴন৶ࢠৠॅਕ٨ঙ১ਛۗŗহषਢৗਤথਦ৴ਨࣰࢺࣲ৹েਓࠖभਰ্ࣻਲ਼৩्অƏইঢਉࢵ࣭࣯ਏੂওऐরোਘੋਂਞਠ॔াॲाਧএਖ਼ਫ৺ਭখ৾ਗ॥ਙ१শঝΗਆਹਈࢴࡡ੯ਿੱऌ߳ऎੜॠৢॢܭڑচ২ࠞ˂৮ࢳৰढतੁઈࢻઊࡍࢾৼ੶ਖਚ੍ࡗખੑ৯࢘ਊিݝࢸટड़ઉણঔથৣનપތঝࣈઃ৲અઝূષৄહਜ਼ઍॣુੌઔਜࣿેગࢲऄો્વٝઠृࡎઽિઐࡰૃב߇મૉર॰੭ੰড়ਪઋৈીઑਲબŭԫૠયઙછী৵ૐ৷ॆਯ૱ࢍलލਸ਼ਅࢱਇۻચશ૪ਗ਼ଗઌ૮એऱࡖ੦ଌૹલ੮ଧ૨ܣପੳੵાધଜ०ଞڸ੧ૈ੩ଥૌ଼૩સડࢽ઼ਔદଛଲংૄࡳ৬ਟઘૣઞ૫ୂ૯ୄଢ଼ਜ৫࠾छૢ়ળ૦߯୧ୖଯଃ০ଳघޫଢઁତଏଦধઇ୩ଫ૬તୃஆଡ଼يୌ੬ૻઆ૽ফବମ୭இਃࣤૡଣऺࡠஐணஔୗੇେࡳҊஜୢ୷୦୨୪ਬࣶର૰୯ઓୱגଠயୣஎழ࢞૾ߗଘ୬்୮ங୰ٲୟ୴৭୶੫਼ਾੀைକॄௌௐு௧ંவதஸஂநபଈङஊ୵றਣளࢼ௳ॼ௵சڶƣఌ௦ఎఐఒఁ୫௴ࠗఆఈફఊǍଷହଐே௰ொੴనੈૂாਜঠళஏఓదோగۯఇଇభի௺ఠ௩ఢైథஷధౌఽѢఞୡౄல़௬૧ାஒୀ఼ఉౡĖ౦ਥߑ௭ஓয్߁ĝୠ੨ூ௨ণ௪ૺ౨శଓ௯ఔઢଁஃಀݏಇୋಉௗౙଔಒ୕ఖ౿௷ౠ௹ౣಈఏ౧౹౩౫౼౭ଭಕఄఘపబಛষଋಞரಱ౸ࢶషಶహ౽ోಫಭ࡙ॗೄಊేૼఀਫ਼ಗࢨଆಃଉ҆ಡెೝౝచజݑೃಢణತొ೮ాಿీۗ୳ృౕಋ౺ஶ৸ం۵ೂആ೪ഌ౾ಪೱ௸ڶഄ೧டఴഋଖഏഀಚംಮಟರడಲೈಏ௮సದನഞಂఛލ࢟೦࣌ౘ೫ౚജೞଂೠೢൄঝകಯഗൊഉಐഽୁ౯ഐഒݏಆൗശ൙൛഻౻ೌಸಔଙਮఫലąɽଡസೇ൜഼ೋാ௲૭ೲ൸రସധച೬ൎുൢഠಬڶଶඍలඏങഊഛബഝടൃඉ൦അൻౖഹൾ൬ഫ௱ഭ൱൳ಾ൵ஈ൷േ॒൪ಎപඡනඣಖඥ൴ೣమˇ൧ೖൈ೨ඞಣൌಥൟ౮೯ඖඦഡষඩതദಌନ൞೭ൠුരೀঝඋඛಠොഈෟଽु૿ಹඳඵಙෆ2ඪഥ౷ಳදවൣ෧ూೕോඑ്ජ൏සൂළൔிಝ්ซෝനெ൝ඁිෲ಼ඈঝۘവරป෭ඒฑඔඤดබూේฬ෬තજൿ൭ංรආଅളąαสบൽัශฒඅහึถਜఝ൹టණഇ฿ධขීคஅజԪයਡอవะฐ๑ำณตටท੪ํ๏ยൡฅ0කఱ೩ාฏෑඕກූธෛ௫ฯภຎຒດഔຖຘບ෯ਐ൰ใ๔๖ਵĮĩ҇;߈ώҞΖູ҂ͮγҟ̣̥δ˒ŁξŁŏໂ:ŹͼҙͶγȍȅῗČϥW͙4໒ƙ͂36໖໕ЀƤ໙4໓Ȗ՟ໟDžʇെȹʇԪϓ۶ϓ˯˄Ȗ3ʟȖϳʇ༁ϛҚѓ҂ε້ƹ་ҠѴБ;кຳࢮУўЦѦϛАƣ4̵՟˓эĩۘϕǞŭΠ༝̐ђ˩Ϣ̉Ѥʅ༘ź༥ċ༧༟༓ເįIJ༣˼༐Ϭގ༖́̅ҡ༢ƹ༙ӭ҅༠༔༺ǟ༹̇ʓ༑ǣϑϿཁ༪གྷʻཆΩ༶ঞϗθϋŚ່ངŰཋѹཐ,ໝ༪༹༌ҡĔу༑ཙཕ༶ѣ̀༯པĊ༻ƣཧˇ༨ũįབ˒༟ťཧཽڸωעƓλ༪ɹ҂༒༕༭ཱི໖ѡ҃ĝྂŅ̇ːхོ༡ཚྋ˽ŌǢྛҠཨྊྔζཝϚ༲ГཇདХཀϦྎħ3ū༤ྟś༽ཚཾ̴Ĥܒ྆ཞ̽ྴྫྷįࡘ྿ྪĝཫྶοŴྍཽ˞࿈κʊླྵ༚൸࿒ƭόΗѪྲྀŠྮ༮ϓЁྜྥͩŰĭœҖĺġཋ࿇ϘࠉǛ0,҈ͻǤψࡢũҚĞྨϊԾଊက࢛ဃڗғౢཛྷခԴဇΪ͵ʖ྿ाဎוစৱဎ྾ဓƗŭģЂ྿ဂလཝဢġဥဌƵဝໂဪဆဣထယֱနဖရဨཕ࿑࿉व࿙ྈཎဖြ࠼ှWόཀྵئແິ༪ξ༊ྣ၍༷ཪ၉͘ĩчлĩၔ༉ၕ༪լ1' id='1'/><tiles values='0:8736' id='2'/><msg text='Take that draggable block with you!'/></root>";
private static var level18:String = "<root><level width='32' height='330' start_x='15' start_y='328' background_type='0' compression='true' scroll_speed='3'/><tiles values='0:10624' id='0'/><tiles values='0:964,93,0ĊČą17ďčĔą41ĖĖ:ĒĚċč:Ę,4ĉą2ęĤĠĢĩĦĨĥġĮĠħģį3ēğĎĸ,75ĕ7ĥĻĐĜČ76ľĽĎĿĕĺĸĜę10ņĭĞĐ,Ĉĕ6ňŖł1Č6ŒŖŀřŋŕōĶĴIJıėŪ:ijĬİŨĎĬűŴųŶŀŷĕŹŲĵķťŕļľŀŊĹƀƃŕ4ŠƉźƊƍŋĵě3ČŐ9ĕƔŘŚŗĎţƅƘŘƈƎŲơģŒ:ĽŦńŚƄŁźŸƮƭưżƱŵƯʼnŠƁʼnĵńĎąŞēœ68ľƼ:3ƕ6ƕœ72ĠŧƚŖƙłijşŘŢňDžČŌŕŐǂœ11njƝǢŃ,I35H140P18W8S(ǦH4P2R0F2WǠ)ǰDzǴǶǸ15ǻǽ2ǿDZdz3ǵǷR3ǺǼǾȀȌȎǸ4ȆȓȉȕȂȏ6ȒȈȊȁȍȃRļȇȔȋȞǸ9ȡȪȤȗRŐȚȢȝȥȏǠȯȜȫȸȄǧȩȼȱȦȅȻȣȖɄřɁɇȬȳ8ɆȷȲ19ȵȰɈȏħɐȽȲ22ɕɂɗǸ2ǫɋɑȦɞɟɌȾR27ɚɃɘ8ɩɦȏȑɯɡȐȅɥɛȦƒɷɍ3șɋĠņǦǨǪǬǮɴǸɿɫɺțɪȲȑɻɰȘɳɼȟʍȲȨʐʋRȮʔɸȴʡɍȺʤʎɀʝʘȄ5ʚɉʗʕɎʮȹɔʧɜŐʶɧɞʹɘɤʪʱɨʼɢɮ˂ɬɲ˅ɶˈʏȶʫȐʓʿɸʁɩĠǠĞį2ǙƐƨěĽůĝůƧłƒŔŤƱĜēųǚ˥ƽǙſƖ0ǝű˧Ŵǟǡˤđęʆǩǫǭǯˍʳʬˈ̀RʂːɍȠ˅ʜˌʱʠ̆ʎ0ʰʢ2̃ŝ̑ʥʭ˅1Ɋ̎ɒɏ̙ʵ̜ɧʸ̡ɘʻ̤ɢʾ̋ɸˁ̧ɬ˄̭2ˇ̭ˉ̳ˋɖʀˏ̪ʀ̅Ȣ˔Ď˺ʈ˽ʞ̖̔ɫ̷̹ɫ̼͈Ȳ̭̈̊͋Ȧ̺̍̏ͅɒ̙̓ʩ͓ɒ̘̭͕̚Ʉ̢̞̠͚̃͝ɝ͟ʽͦ5ͨ˃̲ͦͤɵ0̃3̶ɠ̸ͳ͊ȉ̾ĻƪƇũĻƷͽǍƻǍŖƿŭęǁǃǍLJljΈĻǡDžēǏƜśͿǔƛǖĚŻƴ˫,˵ľΟƫƸĻƃƃˬΜƵΞǢĚΘšΟΔƙΚƛƙǗˣōnjȬĕI4ȗξȾξπȃςρ̿υǷχφωψǥσώύϐϏοϕϑDžņλǥϊ˶ϖϓϟϋϒϢϜϕϝτϦϩϠϧϣϞϬϥύϙĚΥΪΧΤΨŇΤł4˭ƞηϾβίδǕγϻʅϑϰϤνϭόЊϯЋЉϞЈϡВϪЊϘdžБϨϫЖϮНЛЎПЌУКУġņŅϹƹƂϷЬʼnŚĺƫōϼŖŠЃΙγζǐй˫ϲАДЍОϠГЏфϗТϔМуψDžƕрФяХђёєЏішѕь3ϚƆЪ϶ЫίΥΩϺĪϽϿѧлиЂкǏĺ6ІщСыъЗјцѳѲѵѴЕϱЙљѻРтѹ҂҄ҁ҆ѐїϱǫήŴĺΡƶўбѣѠϳΪΒҌ˩ˮƛжŀѮѬҝŕΕƜĜͲǥɞH̓ȏȡɣTdz0ǹȇ́ǼǸ̹ʖұR͍WǸ̊ȭҫȳ̐ҷʦҳȳ͙ʬҾ͞Ӂ͡Һȳͣɢ̣ӋͧҷɣҾ̬Ӑ̯ӐͯҴͲҷʹȵҴҵȐ̼ȉҭI1ӡӞˎҾӝӜӛӃ̱ӨɭӔͫӒ̩ɢ̦ӐӏȄӍʲӁ̛ӋɅӁӅȳ͗ӃʣӃ͒һӨҹҶӃӠˋʌұ)ʄČIҧҩԐҳ4ӤүӇӨӠӢҸҾҼʟӇӀԅԄӿԂԀԅӾȄӊӺӰӹɬӷ̨ӲӰӗɢәȐӭӋӫԍӠ˒ԑӤӦՁԿӪԏԻӔԺӱӒӳӮӵԳԱӇӻǮӇԭȳ͜ԩӨӂӿԦӋԈȧԊҾԠԎӨҫԒąѯҦǨԗҰԙԛծӿԞգբҷԣՠԆӿԨȿ՛ՙȄՕӁӻəӒԴɬՐӕͭӒԺ̴ԽՈɾӜӢ)ՃӧӜՀ֏ԼԹԷԶӴӔֆքԅՔԯȳրվӄ՛ջҿӨՠԣԋ̄ճӁզԑԓիҨǬԘҺԚҮձҲԽմҷ֮շԥ֨ӇԪ֦ӈԅ֣ɓՒօӰֈՎӖՊճՇԞՀ֒֔ՅԽ֗ד֛Ս֞֡՛֥ׅׄӁ՞ҽնյӃդԝҷէִԕլַֺּIԜֱӬҷԠׁ֫׃Ӂֱ֩̕ՖפՓעӐ֟מӮ֙ɹוӪחdzՄդכӬגӒԸɬאԵӒԲӉ؆ԁרԅתԤ׀ֿԍװӃײթԔԖҫԅְӋׂשب՚ئԬ؇ւ؉Ӷנן؛ؚدה֖ؓӞ֓ؕ֕ՆӜٌ֘בيՏסء؈ؤӽսקԇԢؽԌ־رֳسֵխطհذ٩ؼحج٥ـ٣اكӿրփԲӑٛٚٙ؎לԍ֏זّטٍَؗםًڃ؟Ӯ֟آ֢إغ٢ԧ٤՟٦ٵٴد٪Ӌز:ժ״ֶҪұظּڟӋҷոت՜ռٻտمףٝؠڂӮ؞̮٘ӚڍךِՂٓיӟۂہڏӮ։ևٜӮڕڸټ١ٺښٸٷӃ֭خٳղױ٬ڤشڨկֻٲӚ٧աڱڛȄ׆ڗӿپهՑ֝ڑڿۋ־ۉө֑ڊۆڌٖچӘ؍ӐھӓڻӸٞ۱ӆۖպۭث۪ۚׯڡָͺ٭ڦٯکٱܕԻ۩ڞؾۘ܍لٟڹۑېӐ،ڐڅؙ܁ُ۽ۅӥٔۃܱڎܯی֜ڼ؊۴أ܋٠ڶ֧ٹةܢܒܠ٨ۨغ۟ҳըĜɣͼЮџϳϸѡ;ĎǜΟΝůǎθЄѫЀѮǑΟĺݜįţܙցۥګ֘ܟӃڰۙ՝فڵژ݂݁ܩ܉܈ڒ܅܄֚ܰڇؒܳݎڋބރނ܃ܮݿ۶ړܿږݹղڙܤ݆۬ٶگۜ۞٫ݎ׳صȹԯڪۧܞڮǸݳڜܣۮޔܦ۔ܨӿٿܫݾɢ܆ۍ؏ۻԍؔܵۇۼމܹދܻ۷܇ޏںݻԮ܌ެԃܐ֬ܓػޜڢ۠ڥޠ߈ܛۦܝԟ۪ؿޖۗԅ۰ޒߖ߇ɬڀ؋ܼڄ߁ۺܸܷ۾܀ߪܺߨى߅ܪنޯڷ݃ߞݵޗ݈ݲޚޥߑܖݏߔۣߢֹܜڠަԡޘߝޕقݸܧݺް۴ځܬߧ֊߳ۊ߱ۈޅҺْ߯ވ֎܂ށ߂ڽ߶ܾ߆࠙ߺ֤ەߟݶ֪ࠀܡ݉֯ڭࠅּࠇۢڧࠊҬߘࠍ݊ࠐࠁީࠓޫܥߊߡӼߣ֠ܽߵތ߲ࠪࠨܴܲ߭ؖࠧҴٗ۹ࠞލࡓ۵߸ߣݬޮࠖࠕࠔȄتߎ࠹ܔࡄࠆޟࠉࡏࠋࡃ࠼ߚ࠹ߜ߿߾ݷޓࡎࡧوގࡢߴˆ࡙ࠩؑԽࢋ࡞ࢉӯࡕ؝࠭ࢄࡥ࠰࠘ࡩࡾࡋࡊܑ࠸ࠂݱࡅڬޝࠤࡳࡀࡵࡂݮޤࡹࢡࡈࠒࡼ݄࢛࠲࠱݀ݼ߷ࠜ߃ࢉԾ߬ࢌ߮ࢎٕࠡՉࡠ۸ࠬࢅࢸ࢘۲߉ԫࡪ࢝ࢱࢰԉߐֽࡲܘߕࢩޣߙࠃި࣓࠶ࡽࢳࡿࠗ࣍߹࣊߀ܶӣۿࢊ࣮࢈࣬܆ֈڔ܊ࣦࣥޭ࢜ߌު࢟ࣔࢮӋࡰ࠼ڣࠈࢨࢁࣜࡱࠄࡆࣟः࣡ࢲ߽ࣤࡨࣽ࣌ӎۏࢻۀࣅࣄࣀࣱ࡛ࡘࣶ࣭ࢇێ߄ࡒ࣋ࢂ࢙ࢵࢴक࣑݇ࢠޙࢢޛࣗ࠽ࢧխऌࠌࡸࣞڝݴऴ࣐݅ࡍࣾࢩӌࠚߦझࣆ֍࣯ࣃढކࣰࣳࢾࠠߩࡡࡔࡣࠛचࣧघ࢚खऀڴओ࣠ۛसएࢤߒޞƽƕݧƳ८ƲॱҘįīέҙƖ˕ҐݗݓΦҒўƄҗ॰˷еγεݢҡݟѧоѷѺ҃с҇ѱ҅̿ঌѼওњю҉খѓচজјঝ҇ϲॾЯݓбϵвѝʼnϻѦѩমΕݣݠমƛѰпхѶহҀগঐЋэটঽѿছৄঞিϬЧॿҠ্দপݔгŞҜইЀзΰআǣћাѐঔএয়়Ϣুৈ҈ঠ৪ৃড৩ѽќॼϵধॼৎҔ7বৗаঈলরৼĪЇৢেঢ়ѓਅষчѽঙ৫৭ূণҚݒফĕ5ˢৌথ৶Ǜ˰ΤƷ৵ƑভΖąĽαժίѮж৻нκਕŻƦॳ˦˝έ˪ΫਹDž˲Ġਾਧ˲ਤˢ΅ˠੈݝ˷ĜЇ2ǩͲǷW0ȁϝҰ1ֹȗਖ਼ȃ)ثɣ))ਜ਼ȏʠ42੩Ӽ੧੩੭dzϝ੫0ਫ਼Ռ੮ੳɜ˄੧੩ੵਫ਼ǺX˔ৰįੀਰઉਿઑƽੋએઈੇઘઊੂકઔઙટઔઝ਼ǦŐַੰંੲДֹ੯͑ભɣੑ੶ੱД઼੨હ੪ૂ੬લાષૂરશ4ƼઓϐનǼૂમੴૄ੦ેੰોયਫ਼ցੰ૧ਗ਼۸૨ુД੬ૐઅઞ˚Қǘકઓઌચઍૻખάਸ਼ਵॱ૿ƳણঃΦ৷ΟҏਛਖݔĎਙ΅ЩҔଊਹযਕਭ৽ݤੁਯઝήଈॲਲ਼ੀҍଂતČડଦଯବବ૾ઋઋત̚પિસૈȲૢି૦̞૯િ૪ૣϝૅૠ૰୍૬େઽઆ૽ମછଙଂଳ૾ଡ଼୦ઠૺਰଲଢ଼ୣજ΅ધହબFૌ૭ୄળિୄାୌୂ͠ଽ୷ୗ૱ૉୖઁ୵ેଇୱ୳ઽૡȗ੬ஈ̝ஞஇஂɘஊஎઃથ୩ଣ୯ੁ୬ଁ୪ঃନଆॷழଚଌŕକઔଗΥਞ˱бΣ৶ƺঃҢłਨѨਫਮଞǍਂৃਈਃিਐেਏ২Όਆєৣৡঘ৮৬௧௲ਓѾ௫௭ਇ௪௰ఀం௵௱১௹স௯ఋ০Ѿః௴ఐ௳ఒఇ௮௬ఌ௺ఙ௨ఁఄఝఔఆఉਊఘదచధజఏఓ௦ఠభబƽઇঃଚఴைݛॶƵġన఼ఈఛగఽ६௱ృటరౄ৭ణిొౌఊమ௶యడె২ీాౙోౙ১ఫౕౡౣూਉѸుౝ౩్ఎఞౠే௵ౘ౫థ౷౨ప౯౼ఢ௸త౺ౚ಄౪Α౮౾ౢ౿০ҋংΝҎॹళଜಖǍ˨įಙ९సಜ˦ॵξનۤW6࢟ಥࡧಥՌǼŠԕǩಣಥ͒ಧӊӗಬಢָರȡಲࣇತಡ1ಮಸದࡵಿುձಹȇೋಽಶೀ1ಯೃನೇೂಱೄೕ̿ಷಳҦೈ಼ಪಾೣ್ೠ೧ƊॴŬŮŴಭೞ೬಼೮ಡ೪ಫವ಼೦ഀ್ഇತഋആҦഈഄ೭ഒԕഔഖೆ೩ം೫ജഞೢഠഊഌഥഉഢഩഒůಠœů677' id='1'/><tiles values='0:2180,47,ąćċčą36čČĎ:1023đĘ905Ğą8ĐėąĚ3Ģħ:75ĝĬ781ģ:89ĴĬĥĖĒę009' id='2'/><msg text='Quickly! Burn a path to safety!'/></root>";
private static var level19:String = "<root><level width='32' height='500' start_x='16' start_y='498' background_type='1' compression='true' scroll_speed='4'/><tiles values='0:160ĉ' id='0'/><tiles values='0:2372,44,0ċčďČĎĐĎ:9ĕĒđęę:Ĉ,93Ĕ76ģ5ģě7ĢĚĖĘēďĤĦĨģīĠīĞħ68ģďąĢ67Ė1ĿĻİĽĞ,ŀĖğĉĖĹĘď10ĥą11,ōąŏŋŁ6Ŕʼně6ħď6ķŃʼnş6šţʼnķŌş7Ŭ7ĩĵįĜŶŸěŶıİŲŴŜʼnŅŘŇĿŁĒş4ƈƊĔƉƌũƂ7ƄʼnƆĞŁř:śƇƎƛƚƝċŰĊŚʼnŐƕŨĔŪƧŬťƜƟƬƍƞƯƦŤūƧŮƖŰžĴƮƋưƼŘƸijİƶƁļŋƓƻLjƽƧƐƒŊľƖơƘƣljƭNJƞƗƙƥŞƧƴŤŵƾƱǡƾǛƳƩƵŋħġĔǪďǬĶǫǟǔǢƬǮǵĵǶƀŹƌźǼǻǾĬȀŷǽŕĘ3ŔĆċǑ1ĻǺąŁ4ǑĊȆĖĥȍĞĘǸǭǷțǰȝȚȞǯǖȡȡȗȂłȏȃ:1ȅƔĊ4ŇȋȦȎċŇȒƔȕȩ3ȘȜȢșȣȾɀȼȤȺȲȪȨǿȪȅƤȮȊȌȩȏȑ,ɄąȸɈɄɁȠɘȟɛǕɝɚȥȖ1ɇȀɉɒȇȒŅȪɎɈŁ3ɩȒȇɕɤğɚȣdzɜɵɹȼɠȩɢɅȫɒɯċŦɫɤȏķɨȔɅɗɂɺəŵȃȿʍŮĮʑȍȲʘʗȖ4ŗįĆʝđ:ʜĝ2ʠĭħI4H4P2S(ʩʫʭR2ƑF2W15XR90ʷW25)Rʺʿʸ1Ȋďʱʬʮʰʪˍʴʶˈʻʽˇˁ˃˅5˗ˉĖ2ˋːʭʯˌʳʵ˜˕ʾˀ˂˄ˆˀ˝ŕˠʲˎˤ2˒˧ʼ˩ʸ˫˚˜ȑ˱ˍˣˡ˵˦ˮ˨˗˻˭ˈˊ,˴́˲˶̅˸̇˙̉ʹ˾̌̂̎ˑ̄˔̒˪̔˛ˮ̋̍ˏ̜̏ʹ̟̆ˬ̡̊˞˿ˢ̛̥˓̨̞˺̠˽ł̯˳̝̂̐˖̪˼̢̮̘˲̚˥̳ʺ̵˘̸̫˰̱͇̈́̀˷̶̿͌͂ą˟͏̰˴̴̧͔̭͎̤͉̬̖̼̩͕̙͈̽͋́̈̓ͤͦͫͣ͑̃͜͟͡Ͱ̕͠˯Ć̺͆ͷ͓˹ͺͪͼŒ͚̻̦͍͊ͩͽ·Ϳͧ͝Ό͗Ȫ;ͶΑΔ͢ΎͭΉ͖̓ΜΆΞ̲Π̀ͻ̗Υ̷͒̑ͨΕΤ͵ͥΊήͳΝβͮδΓίΣΗγΧͱΩͬιΟέμζ΅οκρ͙ΫχΡͲϊΏΘͯ˙3Ϗϋφ̾ψϕ̣υΦϓ̀ϜΕϐϤάϠϔσʹͅϘλϔϨΜϪϱπϦς΄ϣϸόϺ͠ϵηϷ͐ϹϭΨϼ̹ϗІ͞ϡЂͼЄ͛ϿЇϻαϾϟЍϴϝЋГКЈЖϞϥДЁМϑΙϚωϽЅОΒЛϩТϬПЕΰбϒФ˻ЏΪϫзгώеНЙЮϧЦмШεϢЊЧϙшкτИУоΛηЗЬтΚϛхѐвудξсёѝХаѠќјЪъцьЎϜʤʦąʣʞʥĝˉŁыϳРрѸύй5ĊѼЀѓϖ҂иљΕҀѥнѢ҄ЫВїЩRюŚҁѪѹўєжчѬ҉ҖћҌѧщϰіѡҢҔƘҟҥѦҒϯʢҪҐҦҒҨҊ҆ђνηųҋҜЯΜҵҗѽҸͼҺҶҍ҈ҾҰΈҲшҮʕǿʙʖӑӏʛˋ2H1ʳʿ6W˛RӚW0˅8ӟ˛ѯĜIʥӗʳȋӤӡӟӮFӛӥɔ̌ӖӘ˵ӭӞӱӠӢӭ˞čӨ1Ӫ˵ӬӻӝӯӺӲŇĥӨԃԉӜӰӛӡԅԊӦŶԁԎԔԐԏԑԐʊԍӷԏԇӻԓӣԆȵԀөԡԚԣԒԢԋӵԎӹԈԬɤѴԗԪӫԦԊԜԯԟӶәԧԽԵӿӵԂԫԻԛԈӾӴԠՁԼԴՉӥѳѰՆԙՒԝԝӳ:ԌՀӸՂՑՌĆԩՇԺԳԤԾՍ՞ԯՃԖěԘՈէԮբ՝ԲՠըՄ͘դճӼյԱԡվԥբĢӨ7H8Pȋ̿1W6Ȱ՝ֈ֊˩֎džձզոմԧԿշՐչծջՖղ֜տ֞ժ֠Պ֢բ2ռ֦֡֝ԕ֪ւ֧ք֩գֲִ֥֛֨՜ցՏ֬Ԯպ:Ļև։8֍֏֖֔ĖׇԹԄԽրՎ՟ָֻֽֿ֯חփթ׀כլաֹנ֚עַפնֶםӽֹԩ֓֘ŕ״֕ʿ֗Ňְּ׃־ԞֵׂԭӼׅתזײױךիף؉؍ֹׯ؆ՙ،ȪŗגȪҁ؋Եיׁؕלמؚ؊եؓةاק֭שؙؒ؇՚؏ؑסضؘ؎֫طؾՅؾإֿؖبقׅ˝؝FłأטՋئצֺ֣ؐمؤٖور֮ٙصٝըـװدؼٜٕ٥ٗغױ٩ٔף٦ؗխբŖӵُّŕآحنؚٞىزׄٚجսٳيؘٰپ٤ֳځ٠ػڅ٣٫ڏ՛ڂ١شؽڎڗڑٯړڛڕڝعفڋڡ٪ٲ٭ڦٵښکڈګ٧ًڨٱڰٟ٘ڒ٢ڢڪڷٮ٨ڴڍڣظ֟ڲڧںگؔڽڬרןڔڼڐڸڠۇڵۉېھڳۓہۏڞۑڿۙڇەۜۗۆڮ۔دډڃ؈ۀ۠ۧڱٴیثێڶۖۋسۍڻ۳ۢ۵ڄӾʚӒȁ۾ӓʑۈֿۭʌƌŬ4܉܋ʏ܍ɸɻʣǬʟȤܑʈŗܒܕʒܚȾ֚ʿ3̖ײܡͼĢܒʵֻܟFܤܬłܦţܓ9ܑܱܱѴܳĖܵĔՎܪܬܣηܰǫŬܸǭׁْ݆݂݈݃݅ܽܢԅܮ͘Șܶܗܴݔ˞ݖѱݘĠ݇݊ݝݛ݉ݟݞܞܠݎԦݐň݄ĆѷԹݍˉܿ΅݁͘ݘʢݴܷݕݡݤܫݦݥܥݹ݄ހݜނݠݪٷܼݻܾݏЃݒݗݡݵޏݷܹݚށޕރޖޅŬވӺފݧ݀ޑݬӪݮܭєܦǷܱʀݪɗʡݲɥݪ4ޭǩޗޙ݉ސǵޚ؋ݾޤݿށżȣҺǂȠǮ߁ŘķĘڸޝ˞ǩެݹߊݽݼƪnjdžǎȣĺDžľȤ߉غߋߓȑލӕշߠݨݲŘǑƙ߀ߪߝڑߦЃŁܻߟߒߧݹǤߙƪɂ߹ǮŢǧąߞߥ߶Ѓߎdžށߑݯދߔܜʓࠍࠉߢߐߵࠊޞࠌİş߅ſɜ߄ĵ߆Īĭ߯ࠄА߲ާߴࠃࠖߌߜށߚņߗƆߙߖࠬ߈ࠣࠪߡߍĠߏࠈࠕࠒࠇŲ߭ɟǩ࠵ࠑݰࠓ࠼ࠩ࠾ࠬƪࠚĵ߿ǞȠ߹ƨɜƫࠁ࠶ࡊݫȿܱݞޘ࡞݃ǃ9࠻ިߣܔݴީࡡŋࡦބࡠǒޕʈʨߡࡆܯޏʺࠔࡉࡷࡋȞĆࡴࡼࠋȊޭࡺࡈֶ߰࠘Ȥ˂ࡗࡽȪޱޏƢࡲࠢمࢎ2ࡦࡅࢃəިޔࡄ࠽࢙࢛ࢣ࢝ࡾɸࢠހࢢࢂࠗࡇࢭࠫݩࡪࢵࡖ࢜ࢮ˞ࢥࢱ࠸ࢨƿIJࠝƹࠝĩࣄėࢍࢧĆࢽ࢈ࠤǑߨɵƑࠇࠎɛࣈࢺࢲ࢚ࡻ࣍࠷߷ࢸܛࣔ߮ࣗࢿ࣋ࣚՁࢉ࣏߸࠳ň࣒ߜ࣭࣬Ȱٓࢾݨࣙࢇࣧ࣎࢞İȑࢁࣛࡘࣵࢰࣽࢎ࣐࣯࣡ަࠏࢹࢦࢻݑࣦ՟ࣹࣨࣟȤࡃइࣖउࣘ࣌ࣷࣜޟ࠭ũě߾ǝߺǜǦईࣳތऌޜࣸࣀʎओࠂँ࣊ࣿࠨमऊࢳࢷ࠙ࣂŘެ߲ࡥ࣪ߛȥކࣔƥॅषा͘ֆࡵऎŕħű߃ࣄ߀ࠜद࢘࣊ߨƗࢌࣣݨࡺ࣭߀ƒȾߘࣶऍनऴफࣕѴड़єࠦŎऐ6Őॖࡶक़ࢫܓ५΅ॐĽॠ࣓ࡑ࠱।धङࢊƃ˞ौत΅७࣠ࡑॱঀॗळख़ࣻࣉळࡺࡓߙट߾ݠॸࣩ࠭࣫ćওࢲफ़ǀİॕॆছकࣤःॶ४ढ़ऒ२࡚ঞिɄř९ࢪǑʣअLJݢ्०࣐ेࡒǝȪࣼघࣾܗ࣡߳ߤलࢲख़তऺƺȄডࣤѴাǍॿऀंॉঅߜǎɥজގपॲॎ१ߩ८॰łभयŗढŭনঈঝࡌडŤচ॑ࠝࠧু৷एࡍǁ߇ƀ࠰ࡦ२ॄɻĿহࠢ৬Ƥğ৳ࡔਃࣈछࡑৼॄझǷࡤਖ݃࠻ऻ߮ŒɩĘŖǑȻǹۿѵĢʛՕ܁ŕȹঊŘ॓ਁŽਉ߅Ųķॐșĸऐ১ॢ࠱I3̏এࠫ·ध4ࡆधƂੇঠ੍ॳऊݥࢃ্ॾܻˑࢿݼࢮࣺবֆ੩ৰਫ਼͜ݥɩٷ੦Ťੌੵ॥ংơ੭ܡ੯࢘Njੳ̌ંঁࡊઆWઈࡶઊŕৌइઁੜॎઑઓܾકDŽਗ਼੫ݐઞݼ৲टখࡏŠ৴ঙࠀઍજनનડਛࢋੴવܻ̼સપਖઙܚਫ८ਮओğɡɣĝѲɽʞɴࠟࣆǒࢴ਼॒থࡿ3ॺॽˋથੑ੮ܡƂ߅ॻ૬džय़૮ਸ੪੬૧ઇ૩WɯŝછઝૹƐঝķঊৈ੶૦ી૨ૂ૪আৡňߘਜ਼૾શટܢહ࠳ॼ࣮૭ࠟȰ઼ଔા̺ଂ˞ଓଉଋૺȤଆࡺନઃઐଖଥोર৻ળଳએࡽષੰહजਠୃࡔƪʡއ૿ଫଁଭɯગૈƢॶૌɅૐɈɾȖहࠠਾ߆ੂह߅Ůরॊݩચ੨ઽଵୋଗݯଙઌ଼દͳିઉૃખ୫ऑ९૽ધଶ୍ģઅਖ਼ଠஂୀ؛૱୭੧ૣ୰ାŤ૫ɻતகࢧઔஎࡱ୮ஔଡୱવ୳॥ࡿந୲ଷࣈયમࡑঘࡎৼଈலபଷƲହߙܖଽடஙਞૅ୕ő0ɩħ୫ƥӐ܂८ਵௗ܀ਲʞħȩȩɤଡ଼ਸ਼େࠛୟࣁੀࣃੁୟਣǨଐआஊ˯ઠઢ௹ంȾ࣯ŧ୷ஃளஅ͘ૼ୯றைఊங৫࠴८ੇଲକମସিఙଢଘఀਐଛஒࠝଟெோܨǮఇீఋઢௌࡿఘஞఛொఝĆĿભĵళచవఒఝூখલǥࡔભେడனଔੱܲĵŖॻౘĔǒౚőΆౠౙౡ,౦౩ౡ౮౭ޓɅ౯௩౹౸Ȗų1' id='1'/><tiles values='0:160ĉ' id='2'/><msg text='This level is FAST! Pick up the cat to survive.'/></root>";
private static var level20:String = "<root><level width='32' height='335' start_x='15' start_y='333' background_type='0' compression='true' scroll_speed='3'/><tiles values='0:10784' id='0'/><tiles values='0:1412,44,0ċčďČĎĆ3ĐĎėĒđ:Ĉ,9ěĖēď106Ĕ11ęĞě47ęĕį45ĞĖď9ĵĴħĖķĘļĶĵĜĩğĔĻŀ1ŅĽĬĮľ:ĊI31H50P2T(I2R330F2W4śIJşšRŞŠŢ15ťŢŝŭRūŰŨŦ3Ťũ)ĔĮŏőœŕŗřśůũţŬƄŴŪƆŵƈűƊŢƌŶƎŹąĊŌIJĹĿĽņňƙƝŁƘōłņčŏ2ŒŔŖŘŚŜƐŷŦƌŲƄƃŦƱƯŰƑŭƓō,ř3H4ƨƀ0ŧťŚƵƫŴŚƮŚ6ljR7ƊŚ9ǎĤǑű2ǔ3ǖūǔ6Ǜ8ǔ9ǖ2ĤDžR22ǣǀǦǩǣ7ǎ28ǖŝǎŐdzƳƫNjƺŎ3ƦžƩƁƬƷƮƏŰƵŮưƎDŽƲȄǻƼ2ƾǀſŘǃǔdzǎNjRǍǦǐǦǓǦǕȠǘȠǚȠœȠǞȠǠȠǢǬǥŠŚǨǪǰ5ǮǰDzǦǴȹLJƂǵǺĔǼǾǁƪȽȃȊȉƷɈƇɆƹħčŌǤƠ39īńĪĢ:ĖƽƿɃIȕȦȹȘǖțȰǏǖȟɥȡɩȣɩȥɩȧɩȩɩȫɩȭɥǤǰǩǬǫɷȵǬǯǬȸɥȺʃȼȂʃȿąijɛȒȀɟɯɡǦșɤWŚȝɥɨʕű0ǛɬʚŇǛɰʟɲʟɴʟɶʚɸǬɺɷɼʩɾɷʀɷʂʚʄʵʆǸƅDžƺġđĪŃą4ʽħĮɘ1ĦƥƧȓȁƳŮȄȋƴȊˍƍųɌŸɀȏȑɝʏʟȗʒɣǎʗʚʙdžʜȢǙʡǝǟǡǣȯʩʬʩʮȱʰʩʲʩʴLjǵʸȾǑȎˉǿƀƫ˓ƸɋƄȇśɊƶȌƒ˘ʌ˛ːdž˞ɥʓˡɧǔ˦ɫ˨Ȧ˪ȪˬȮɹȳǬ˴ȱ˶ȱ˸̈˺Ƿ˼ʻ̍ǽˊȀ̂ƭɇȆ˒̉ȅ̋ɍąćɗě1˅ʾɘ4ɔ̎ˋ˜̑ʑ̓ˠȜ̖Ƞ̘ʟʞdžɮ˝̜ɳ̞ɷˮȱ˰ȱ˲ǧ̣ǧ̥ģ̌ʶƫ˻ȹʉ:ʋȐɜ̐ͅ˔ʃɢǦʔʖ͌ɩ͎dž͐ű͔͒̑ʥ͖ʩ͘ǧ͚ǧ͜ǭɿȷȗ̩ȹʹ̄ʕƺ1̓ͪʍǂͭʆͰɥͲɦȞ̗ʝ̚ɯͼdžʦdžʨȱȲɻȴȶʁΈȻ̪ͦ˽̍Α̏Ȗ͈ʚ̔͋Κ͍ΜȤ˩Ȩ˫Ȭ˭̠Χ̢ΩʳΫʅέʈί̺ĩ̈́ʎΔ̒ε͊ɥˢǒΛ˧λ̛ν̝ο̟ʫ̡ɽτ˷φʷψʵͧŎαͬγͯ˟ͱ̕θ͵κɭμɱξɵπϞςϠΆΪɡΉʃͧ5όϩώϫʵΖʚΘϔRˤʛϲʟͺƍΟűΡűΣǧΥ2΄͞2͠DZϣͤϥǹϊͨ˙ͫІɠϬ͉Ϯηʘϖ̙ϘΞϚ͕Ϝ͗ρʭΨϼυϾάΊ̫Ȱƺ8ƤŜ̯́Ʌ̸̅ˑɉ̴˕ъšʼ,3̿ĘĢ̼Ęєɖŏƾ̀Ʉʪ̆ʨŪʦŪʤƉưѦЕưѢƺœѓѕĶĠĪњʊčњɘijїѴͨďżчɄʇŵˏ̶̈юыˎ̌ąĖѷ̀ҍіʾѻɚŐѿˌ̲яьƲ҄Җ˗ʊĩ38љҠďҟҡɀĦǀіďĒҪċҪͨόғўҕ˖̊ҘƋ҆ҵ҈̹ЧřH1ŕЍŴćŢПӂҤѽƦҿϕťӃ͟ӆҢȏҾӀʙӍӅӌӇӑӊӁӌČӎӗҢĜƼ̮Ҳ̱Ҵ̷ҶȈҸӧҺҜүәӓӂӝӖŠŇӐҽӚӔӲ˶ӵĘӷӰӜӄӻӘӾӋӴӺӏĔ5ҠԄӛԆԁԈӈӒԅWӕԂӶӉӿԎӞӴԃԘԓԕԐĆ̓ӣɝӥѐӫͮҷ̳̆ԧΎˈԤˋԦ҂ԬӨ҅ԫҗӬёħΐԒԍԔԇӟӽԞԾԠՁԑӸӱԏՆӯԟՀԜӠǚјĚĔ͂ՌՄՎԔԝԽӹՊՏՂ՛ՉԛՙԗՠԀբӼҊį˃̺ɁҔԲԹԨ̇˓̇қԺҊŻՃ՜է՚Ոզӳգ՟սԚտըՖպքӇƻїĬĩҏћչաֈդւԿ՝րՇԙ֗ջ֛֕Յ՞ˁɔɘիӡԌևԖց֟օ֧֚֓֩Ս֘ը֦цӤЙѫȊ1ѤűѩǜȆ־ּΏ҉ĜիՒəֆ֯Ԑվְփ֮ԡԊֲ֪֜֔֝יֳռ֫מӠΏӢѝԥщԳԸԩөԷ҇ʺӭˇפծָȆѢѪ׀ֺʢѥֺׂѬԻז֠֙֬ןךטֱםכʊԋ֒דՋגא؏חב،ؐՆӮќײҁհːƉэҹն֦ؕؓؑإ֭بְ֞Ҽŝؚ̃҃ӪԶԵյ4ѭϨեؖ֡סל֨اؼئؗ5ˈثـ؇ق؎ى؉ؿ؉ōѽرַ؛آձ̵صظԮӢ0زظ؝תض؞Όعɀًٍلة؈؆ِ؆ĜҠ֏Փٶٱؔ٬جف٪ؾؒ٭Ӑٵׇĝڂڂٿٻ٩؍پَٰڇيՒׇŜƼ4ƿӀֻŞ5W57DŽڙڛźڐٵƻڎُڤڍڌٹ֖ڀڡҎѽڔ4ږȫڞڜژښĮąˈگӀڵڛڳɀƤںΠڼڴFڿڸړڕŚۄھڶĔ؋ٺڏڦکנڥڨԡ̓ۂۍڽۄĔڹۊڝڶۛڷōہ۠ڗۆۢۈIۚیۨۇ:ېڪڈٸك۴ےۗؗۙۧڲ۪۩ڟ۬ۮ܀ڜ۰ێƔۦڰۃ܄ۡ܁:۟܊܍܅۾Լ۸ۖۑܘܗڧܙٲԋۚ܆ۜ܄۞ۉܑۯܔۤМܥڱی۫ܫۋ܌ܡۤ۳ەܜܛ۔خ۷ܶدۼܑܳܒܤۭ۠ܧܮܪ݃ܿܨ݁܂݄ܲܨĔܖܼܻܺ٫ܸݓٯدܟ۽ܭܣܦݎ݆܉ܬ܌ܮܐڻݠݝ۲۶ݕݒݬݔڋܝۣܽܰܯ݈ݧڳۣۀݳ݀ݥݳ݅ݩݑݯۓݗٌݰݖؗݚ݉ݜ۱ݦܱݹܳݻݷ܋ݹݾޔܒݺąܵރتݱކٽބۺ֡:ܾݣޖݩޏޙޒ܈ݼ݊ޗ܃ޑݏޭޘݽީݿݨ۱݇ܠޯޘހ۱هޮލ܇ݶޱۢެͨުގܮ߂ߍ߅ߑ߄ު߀ߗߋߓ߅ߜߖ8ދާۿ۱Ҥߕߏݩߥ߃ݤݩߪ߇ڽ߉߮ߒߚ߲ۤݍ߬۱߶ߙ߰ߩߦސ߈۲ࠂݴܮߺݟێɘɑˆЄ5Hǘݧ1Ԕ܋ࠖĉΰࠒࠔܱ࠙࠘ࠗࠛࠓƨDŽࠟࠟࠢࠝࠥࠗࠧࠡƔȏࠜࠤŞࠦۨࠨř࠱ࠕࠬ࠵ڣǩࠣ࠺ĉ࠭ࠚϋڬٷڅڭࡆڮݛࠀ߅ࠊݸࠄї࠸ࡀࠞ࠻ȫ࠶࠾࠹ࡗࡂ࠼ࡄ࡛ࡖࠫ࡞࡙࠽Ϩࡣࠠࡠࡧࡢ࠳ࡘ࠰F࠴ࡥࡱࡕࠪࡰࡪĊٶĜͩ9HǽPֻӛࠖ3Ħʊȏࢀࢂࢄȟࢆ࢈Ҽ2ࢋ2ࢃ8ࢅWࢇԉࢊࢁࢍ࢙ˁϨࢠࢣ࢞ࡴ࢘ࡿ࢜ࢤࢎࢫ࢚řࢨࢰࢦ4؋ࢴࢥࢬ࢛ࢌࢵ࢟ࢼࢳࢮࢩࢲࣃࢿࢪࢷࢢࣈࢻࠩ࠲ࢪࡤࡺΰࢺࢶࡹ࣑ࡻ࣏ࣔ࣍ࣖࡁࣛ࠷ࣇࢾ࣎ˁࢹࣝࣀࣆࣩࣕࢉࣂ࣭ࣣࣤࣞ࢝ࣉࣅࢡࢽࣳࣥࢧࣨ࣊ࣁࣲࢯࣺ࣯࣬ऀࢸࣷࣿࣼ࣪ࣻࣵँࣰࣸऋआऊ4࣌ंइࡨࡺࡃࡼ࠾࣫औࡡࣙࡵ࣓छऊ࣐ࣘटࣚࣜओऐࣧऩࢱࣱढभऎࣄरࢭब࣋अलࢦऴऌऀऺएळषࣴरऄ࣮ऻजऽसࣽयहीࣹऑौऍत࣠घनॅणࡲञधडउर॑࣡चड़ࢷफॕिॄाो१ैईवॎ४ु३ࣾ५मॢॉॶՔčࡔक़࣒ग़ॗथख़࠶ঀ॒ࡼय़॓ӈखࣚঊঈࡩࡸঁॾঃঅࡶইখউআՂঌदঃ́֎ࡊࡉࡇࡋࡋəɔľƘį̾ʿĸŌњপɐƢƚݐѓࣗѓӠĊѻĊ˂˘ɓ˘ॎҨąযŀɑলŀেіijĒċƗৎƞěȐɕլȏڔࣙŠ6ː˜০֑ۨৣ࣐২৬W০Ŵ৪১৳৮ࡳৱʦ৴ť৶৲ɚМ৺৳৷৽Šৼ৹ਅ৩ː৫ਊą7ɏ্ƝফਘਖЧਙշৠōĻ̽Ϩ৯ݧ৻ŴਇWਉਨৰৼਏਨਆਭਦਯਲ৵ਐਲ਼թřਥܱਧťਫੀਾਸ਼ੀੇźਕਝਖਛਚਞড়ŋਢħਤ৾ਹਃਜ਼ੇਸਲ਼ਗ਼ਆੈਿ৭ਫ਼ਰ੨ਮ২ੳ੭৸ਓƕઁĸڂંńѲŌףɐ̓Ĥ7ڕŶƀ1ԍǗŨȚખȝ3ЏFચʠજRŤચȟŢțŪȣŪȥ5છપȝપŤڙǀΎ֥5ਚতٓ۠ࣖӞࣵӢહࣀभઽܑӖ઼ŏાࣼીࢠૂӿ࢈ૌӋૅુેૃિો્ࢫՔਗপࡔȑࢇસૉૐ૫ӽ૮૦૰૨০ࢻ૧ૺૄʀૻƟরƤઐ4ઔĉખɤΙઝ˦ઝȥચડӛતŞદଘŬપȡબଜઠଜš0ƺēષįڟїઆڸƜōઍ0એڰઑŘઓɨકşગସઙછŬଔାଖହଙFનଠଞΙમଢźѹণࡊ૭ଂ૿ଁ૾࣬૽ୖ୕औୗ૪૬ୢଢ଼ୣফૣૈ୩୧୯૯୪୴ୡ୰ୠଡ଼୨୳ୱ૩୲୴োଆରଈଊଶଌସȡଽટକણୂଷۆફୈଡ۩ୋƔǘįࠏ֍দଧ୫ॻőӚŤ࠙୷गઞயીࡂҬԌமԔரலழࡗஷǤԽஹˇிଛ࣑ࠦஶՂӀ࠻ȥளவࢪு்NJŬ࡞ாீௌ͑ࠫௗைெ௩௦௫௨ௐ௶ெோ؇௯௱गȏஞற௷ࡽাřఄ௪௰ఉ௳௹ఐఈ௺לఏ௲ఘࠖு௭ఆగ௪ంஸకజత௲దՃఛఇనఁఙఔ௮ఖరబడయఴఫలՖమణశொాహఀు఼ఱటՔͩఎూోӈైఢృఃెఒఝథౄூ௵ౖ࠴పొਪ௴௧ౣࠬబౕౘ౬౧౪ఓౢ௸ఊ౺౩౾ே౼౿౻ಈౙࡾಀಂఽౚಆಁ಄ಃಊ౭ౠ౯ಘ౽ಖసಇే౸ಟಕಜ౫ಞౠవಂತಏಖ౦௬ಠౝషಚಪಣಷಳ౷ಬౄۂSŘۚք5XԾǩ)Гӌङ९ೀೂ۠ೄೆˤ5Ƴࠚಔಮದಗಡಙಓభ౸ರಶೞಛಝಭఅೡಋಲಥಧ೧೮ೞಸನೣಉ೯౹ధಐವ೬౨೫ೝಌƗ೩അഁഇఠ಼ಫಎഋಾഐಹഗഓഊీಢഛ೭ഄഖഒഏೳಽതഃകധೱഘദബജౡമചനࡌ܊ುޘೇೊӴೌŎഹӻ഻ೕӂϨണരഥഢഫ౮ടവిೠഡപയ൏ೲ്൚ఒ೨ഞഝൕറൢോഩൡ೦൛ഀ൦ൌ൙ഴ൪ങ൷ഔ൬൮റൎൟ൜൵ൺൿ൘ൽඃ൹උ൧ඍൻ൱ಯൖಅുೃൃlj഼ֿാՔീۊസӂൄെೋർഠచණൣ൲ඬళඕ൳තනද൨൭ඏ൴ඉആൗබපൔභඓല൝൶ඇౌඪහ൸ളආර൫ථළඁ൞ఞඹൾෑැඈීශදෛ೪ඖఓ൰ෆඅඎෟව෪ඵඳෳෂළෙඊഌ෴සමඑ൩ฃ෮ල෫దකഽ࠽ఌช෨คตทปขฝ෦ෞඌාรෘงය෩นฆลඒฉมฦಒഓ́ਂาะฝಅพฅษේหธൊฉฌแวผใධฟ๏ุจ෨́ඡഷܑഺටضอเฯ๔๒็ไං๊ๅฺ่ฤෝำಱෲัෂডĪඔ฿์สຄො෯ู๏ຏුຑຈโຊׅ๐ຕ๋ิถຎบຓຜຍຊกປຢຝൠມຩූັฎ๚ฐඞณঢි๎ັຂຳຟຼ๑๓ຉແซກຖฬຆໄລງວ໐ຣവ෭໑໙ໍາ෧ຬ໓ໆໜບຌ໔ສໟೢഈݢ2ඣฏඥඛDž഼ೖൈํໃ໋ພທ్ം່ະ༃་എໂຫຩึ༆༗ༀޥ༖༝༘༐༡༛ఋื༣༄ຮలİ༇༚༌໎༦༲༕༰༴༑̺ո༬ಌ7ǐ' id='1'/><tiles values='0:2446,48,ą65ċ9Ď:51ēČĔ173ċ7Ĕ641ċčą1ĝ4ğą3ġģĩĔđįī2Ĝ' id='2'/><msg text='The final battle!'/></root>";
private static var level21:String = "<root><level width='31' height='217' start_x='14' start_y='214' background_type='0' compression='true' scroll_speed='4'/><tiles values='0:4727,I97H100PĊą19ė' id='0'/><tiles values='0:4ć8,I103H200P26T(I4WČ0R90F2R1ĐĠR6ğġ75F3Ģ0īĭ13İR4ĴĞF4ĦğĺģļĢijF5ĮīŃĪłĵŅ),ą146ĊČĎĐĒĔĖIĜĨWġ1ī2śR3ŚġĶĠŠħŦĩŞŠĸşŜįũĢĤŮŀūŜ5ţĢ6ŶĢ8Ź19ż2Čű22Ƃ4ŹƇƂ7Ɗ8żŢŹ3ŝű3ŢƕťŮŋō5őčďđēĕėĜ3ƙŠƖƒƔŴƑƅƏƅƍƅ5ƈƊƇƅƄŴƀż1žű1ŻƾŸƾŁƹųŠČżŭŠŇŴŨŴƧġƗƹżţƛ:84ƞ2HŸŕƣIĭƒŹǎŬſdžŷſƽŴƃƊƉưǢƒǒśWŸšDzǑđǯƅǮǫƸLJǪLJǂDžŹNJġǤǸűţWĪŽğ1ĢƱȏƿȎĢǂȒǮȒƗȒĤȒƄȒǹȏĸ1WžĝȔƽȏȑĻFȏȖĵȔȚRȜĮȬRȎȤĜƼȔƀȔŔȵǬȿȳ2ȱ2ȘȲȮĔȽȑȸȲȪ2ȨȲȢšȠšȞšȳƩȵƦȰȮȷžǖ3ɏĊǛ1ēȶF6ǴřɨWȹƽɩŸɣ1HɥġNJŸXʼnŦ7Ő0ɣɴɦɷ0ɹƧɼŌɿɵȦŦɸɺşʆɾIɤʁŚʌʅɽʈʓʋʃʍȋʗʑɳʉʂʄūʏɲʀɶʔʛIJūǘʇʑʧʊşʌʫŦʭʐʒʨʚɹʴşʶʘʹʲʪDŽȤǙʷʰʢŵʵ˅ʦʡʩʻ˃ʭʟʰȺɬǵğɩɫɰɾąŐʯʉ˗ɪɧ˘ȍ˕ʷʠʙˁʣɻʞʸʱɪ˪ʎˬˇˎʜʥ˞˨˯˵˲ˍʺ˺ʮƃ˳˽ʖ˿˧ˀ˹ʼ˄˿́˩ˉʽˋ˷̆ʳː̏˭ˈ̈ʾ̐ˮ̒ʬ̔̅̚˂̜ˌɦ˔˚ˢɭ̦ɱ˜ʿ̨˙̧̤ɪ̢̑ʛ̃ˆ˼̴̫̌ˈ̸̙̺ʤ˻˸ʕ̾̄̋˹̶̛̻͈̀̇̓̊ˊ̵̠͎͋̀͐ˏ̡͓̲͕̱̟͙̯͒̎͛˖ɬ̭̩:˝˭ˠ͡ˣ͠˦̈́́˫͏͘˾͗͜Ͳ̹˴̳͆ͭ͂ͬ͌ͺͯͼ͔̍̉ͳ̖͊΄˴̗̔͝Ͷ˽Ή̓ͽΌˑ͇̣ɯˡˠͣ˛̫̭ͥͨɮΞ͛̽ͿΎ̷ͻΥͅΧ̼ͷΪ̕άΤ˒Β͵αΐ·ΏΆΨ͍͞η̌ζκ͑μΈ͊δŜΗ̧ͩΡ̪̙Ξ̦Π˥σ̂έγήϓΰϗΦϙϕ̞͆Σ˱ΑειΫθ͖πΓΊβοϥξϤΕͱΐφˤ̥Ι̬ŌΜύ˥Ϗϴ̰ϳϠʝͰʹβЄІͱϞϝέϟτϧϭ͉ЏϚБ͚АλЖρИϰʹϲМͫϼϋϹͧϻ϶ͫϒϛϡνΩϜЅϔЮЭЇЌЋϙЍϦЕГЗ̘йКлϕϬмϩϢϱυПψΟϷόФϵ͢ϽɱϿίЪϨϖдђЙ˰ЁЫͮіМЀ˶ѝЎипϯѣВѥѢϫϯжϮ̡ϳР϶ТͦʰώЦчШЬќѕљѓЈЃЯвеѺџѫДςїоѩѦҊѨϣВ҄кǙѮчСϑъѳХэЧѐϘѹаҞҀҠЉѿңҁҟѻҜѬҍфҋҎҫНѤҌ҆Ѡз͞ғѴэѱΝҙͪѶҩѸҨсєҧџ҂̿ҥќҐ;ӉѧҳӍЛӏ҉ҮӎҲЛӊтҷҼϊҖУҘьҽΡҿћӁӆЂўӇѾбӈӁӗϖӭрӑϪӓӐӕӒҬиӯх̞ѯҹӜѲ˟Ӛϐ˚ѷӣӅӄӨӧӦёӤԇуөӌӵӲӷӔӳӶҰҭԓӖӱ͟ҔѰӾһӟ̮ҾҴЩԌҡԦӫԆԧԪԩˬӭЊԑԊҵӴԕԒԗү΅ҏԛәԡΚϸӿɦҸӠϑӢӋԨԏՇԉњՆԬՈ҃ӥԙԖԹԸѡԔՒԶՔҳӹѭцՂӛԃҗԀԽюՑՎԈԋՍՊѼҤէԎիՅтՋղѓӰԱճ҈̝Ի՞ԁщӝգΘҚԣԯխհӂѽֆՐԄՌԮԛոնԵԲҪԷ՛ջӻԝӽատՁսқԤӀժթըҝՉ֣֒֡֍ԍզ՚Դ֨ґְнՙՖԚԱԼցˣҺϺդ֟քӪծոֈׂ֧г֫մ҇֯֏ұֵ֑֬Δ֘՟Ծբֽ֝փ֊҇׃֥֢ם֤ԥՏׇձչֲӂ֮֕תл՜ָ͎ωו֜ġהեӃԫנ֩צԭկׄש֭ՓבִԳ؇պַռդֻыֹԢӡ֠ԅؔלסؕן֓؆؟؈أآֶ֑҅װш؎ӞؐԂϾؓ؛ׅ׀։ףև׆؞اؤػئֱԘ؊ة،خվՀ״֞יضךطشכظא؉ٖӺ˓ֺ֙ԟּن־ٍ٥ٌ٧عؙٔغؿյٚقٙفء٬ֳԜТĞ2' id='1'/><tiles values='0:6727' id='2'/><msg text='Destroy King Shroom!'/></root>";
public static var levels:Array = new Array(level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, level11, level12, level13, level14, level15, level16, level17, level18, level19, level20, level21);
}
}//package
Section 219
//MagnetBulletHitMC (MagnetBulletHitMC)
package {
import flash.display.*;
public dynamic class MagnetBulletHitMC extends MovieClip {
}
}//package
Section 220
//MagnetBulletMC (MagnetBulletMC)
package {
import flash.display.*;
public dynamic class MagnetBulletMC extends MovieClip {
}
}//package
Section 221
//MagnetiseMC (MagnetiseMC)
package {
import flash.display.*;
public dynamic class MagnetiseMC extends MovieClip {
}
}//package
Section 222
//MD5 (MD5)
package {
public class MD5 {
public static const HEX_FORMAT_LOWERCASE:uint = 0;
public static const HEX_FORMAT_UPPERCASE:uint = 1;
public static const BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE:String = "";
public static const BASE64_PAD_CHARACTER_RFC_COMPLIANCE:String = "=";
public static var hexcase:uint = 0;
public static var b64pad:String = "";
public function hash(_arg1:String):String{
return (hex_md5(_arg1));
}
public static function encrypt(_arg1:String):String{
return (hex_md5(_arg1));
}
public static function hex_md5(_arg1:String):String{
return (rstr2hex(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function b64_md5(_arg1:String):String{
return (rstr2b64(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function any_md5(_arg1:String, _arg2:String):String{
return (rstr2any(rstr_md5(str2rstr_utf8(_arg1)), _arg2));
}
public static function hex_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2hex(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function b64_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2b64(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function any_hmac_md5(_arg1:String, _arg2:String, _arg3:String):String{
return (rstr2any(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2)), _arg3));
}
public static function md5_vm_test():Boolean{
return ((hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"));
}
public static function rstr_md5(_arg1:String):String{
return (binl2rstr(binl_md5(rstr2binl(_arg1), (_arg1.length * 8))));
}
public static function rstr_hmac_md5(_arg1:String, _arg2:String):String{
var _local3:Array = rstr2binl(_arg1);
if (_local3.length > 16){
_local3 = binl_md5(_local3, (_arg1.length * 8));
};
var _local4:Array = new Array(16);
var _local5:Array = new Array(16);
var _local6:Number = 0;
while (_local6 < 16) {
_local4[_local6] = (_local3[_local6] ^ 909522486);
_local5[_local6] = (_local3[_local6] ^ 1549556828);
_local6++;
};
var _local7:Array = binl_md5(_local4.concat(rstr2binl(_arg2)), (0x0200 + (_arg2.length * 8)));
return (binl2rstr(binl_md5(_local5.concat(_local7), (0x0200 + 128))));
}
public static function rstr2hex(_arg1:String):String{
var _local4:Number;
var _local2:String = (hexcase) ? "0123456789ABCDEF" : "0123456789abcdef";
var _local3 = "";
var _local5:Number = 0;
while (_local5 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local5);
_local3 = (_local3 + (_local2.charAt(((_local4 >>> 4) & 15)) + _local2.charAt((_local4 & 15))));
_local5++;
};
return (_local3);
}
public static function rstr2b64(_arg1:String):String{
var _local6:Number;
var _local7:Number;
var _local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var _local3 = "";
var _local4:Number = _arg1.length;
var _local5:Number = 0;
while (_local5 < _local4) {
_local6 = (((_arg1.charCodeAt(_local5) << 16) | (((_local5 + 1) < _local4)) ? (_arg1.charCodeAt((_local5 + 1)) << 8) : 0) | (((_local5 + 2) < _local4)) ? _arg1.charCodeAt((_local5 + 2)) : 0);
_local7 = 0;
while (_local7 < 4) {
if (((_local5 * 8) + (_local7 * 6)) > (_arg1.length * 8)){
_local3 = (_local3 + b64pad);
} else {
_local3 = (_local3 + _local2.charAt(((_local6 >>> (6 * (3 - _local7))) & 63)));
};
_local7++;
};
_local5 = (_local5 + 3);
};
return (_local3);
}
public static function rstr2any(_arg1:String, _arg2:String):String{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local3:Number = _arg2.length;
var _local4:Array = [];
var _local9:Array = new Array((_arg1.length / 2));
_local5 = 0;
while (_local5 < _local9.length) {
_local9[_local5] = ((_arg1.charCodeAt((_local5 * 2)) << 8) | _arg1.charCodeAt(((_local5 * 2) + 1)));
_local5++;
};
while (_local9.length > 0) {
_local8 = [];
_local7 = 0;
_local5 = 0;
while (_local5 < _local9.length) {
_local7 = ((_local7 << 16) + _local9[_local5]);
_local6 = Math.floor((_local7 / _local3));
_local7 = (_local7 - (_local6 * _local3));
if ((((_local8.length > 0)) || ((_local6 > 0)))){
_local8[_local8.length] = _local6;
};
_local5++;
};
_local4[_local4.length] = _local7;
_local9 = _local8;
};
var _local10 = "";
_local5 = (_local4.length - 1);
while (_local5 >= 0) {
_local10 = (_local10 + _arg2.charAt(_local4[_local5]));
_local5--;
};
return (_local10);
}
public static function str2rstr_utf8(_arg1:String):String{
var _local4:Number;
var _local5:Number;
var _local2 = "";
var _local3:Number = -1;
while (++_local3 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local3);
_local5 = (((_local3 + 1) < _arg1.length)) ? _arg1.charCodeAt((_local3 + 1)) : 0;
if ((((((((0xD800 <= _local4)) && ((_local4 <= 56319)))) && ((0xDC00 <= _local5)))) && ((_local5 <= 57343)))){
_local4 = ((65536 + ((_local4 & 1023) << 10)) + (_local5 & 1023));
_local3++;
};
if (_local4 <= 127){
_local2 = (_local2 + String.fromCharCode(_local4));
} else {
if (_local4 <= 2047){
_local2 = (_local2 + String.fromCharCode((192 | ((_local4 >>> 6) & 31)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 0xFFFF){
_local2 = (_local2 + String.fromCharCode((224 | ((_local4 >>> 12) & 15)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 2097151){
_local2 = (_local2 + String.fromCharCode((240 | ((_local4 >>> 18) & 7)), (128 | ((_local4 >>> 12) & 63)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
};
};
};
};
};
return (_local2);
}
public static function str2rstr_utf16le(_arg1:String):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode((_arg1.charCodeAt(_local3) & 0xFF), ((_arg1.charCodeAt(_local3) >>> 8) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function str2rstr_utf16be(_arg1:String):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(((_arg1.charCodeAt(_local3) >>> 8) & 0xFF), (_arg1.charCodeAt(_local3) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function rstr2binl(_arg1:String):Array{
var _local2:Array = new Array((_arg1.length >> 2));
var _local3:Number = 0;
while (_local3 < _local2.length) {
_local2[_local3] = 0;
_local3++;
};
_local3 = 0;
while (_local3 < (_arg1.length * 8)) {
_local2[(_local3 >> 5)] = (_local2[(_local3 >> 5)] | ((_arg1.charCodeAt((_local3 / 8)) & 0xFF) << (_local3 % 32)));
_local3 = (_local3 + 8);
};
return (_local2);
}
public static function binl2rstr(_arg1:Array):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < (_arg1.length * 32)) {
_local2 = (_local2 + String.fromCharCode(((_arg1[(_local3 >> 5)] >>> (_local3 % 32)) & 0xFF)));
_local3 = (_local3 + 8);
};
return (_local2);
}
public static function binl_md5(_arg1:Array, _arg2:Number):Array{
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
var _local3:Number = 1732584193;
var _local4:Number = -271733879;
var _local5:Number = -1732584194;
var _local6:Number = 271733878;
var _local7:Number = 0;
while (_local7 < _arg1.length) {
_local8 = _local3;
_local9 = _local4;
_local10 = _local5;
_local11 = _local6;
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, -680876936);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, -389564586);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, -1044525330);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, -176418897);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, -1473231341);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, -45705983);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, -1958414417);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, -42063);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, -1990404162);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, -40341101);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, -1502002290);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, -165796510);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, -1069501632);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, -373897302);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, -701558691);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, -660478335);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, -405537848);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, -1019803690);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, -187363961);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, -1444681467);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, -51403784);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, -1926607734);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, -378558);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, -2022574463);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, -35309556);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, -1530992060);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, -155497632);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, -1094730640);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, -358537222);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, -722521979);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, -640364487);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, -421815835);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, -995338651);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, -198630844);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, -1416354905);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, -57434055);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, -1894986606);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, -1051523);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, -2054922799);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, -30611744);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, -1560198380);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, -145523070);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, -1120210379);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, -343485551);
_local3 = safe_add(_local3, _local8);
_local4 = safe_add(_local4, _local9);
_local5 = safe_add(_local5, _local10);
_local6 = safe_add(_local6, _local11);
_local7 = (_local7 + 16);
};
return ([_local3, _local4, _local5, _local6]);
}
public static function md5_cmn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
return (safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3));
}
public static function md5_ff(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_gg(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_hh(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_ii(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function safe_add(_arg1:Number, _arg2:Number):Number{
var _local3:Number = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
var _local4:Number = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
public static function bit_rol(_arg1:Number, _arg2:Number):Number{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
}
}//package
Section 223
//MediumBangMC (MediumBangMC)
package {
import flash.display.*;
public dynamic class MediumBangMC extends MovieClip {
}
}//package
Section 224
//MenuMusic (MenuMusic)
package {
import flash.media.*;
public dynamic class MenuMusic extends Sound {
}
}//package
Section 225
//MiniclipIntro (MiniclipIntro)
package {
import flash.display.*;
public dynamic class MiniclipIntro extends MovieClip {
public var mcAnimation:MovieClip;
}
}//package
Section 226
//MirrorTileMC (MirrorTileMC)
package {
import flash.display.*;
public dynamic class MirrorTileMC extends MovieClip {
public function MirrorTileMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 227
//MonsterMC1 (MonsterMC1)
package {
import flash.display.*;
public dynamic class MonsterMC1 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 228
//MonsterMC10 (MonsterMC10)
package {
import flash.display.*;
public dynamic class MonsterMC10 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 229
//MonsterMC11 (MonsterMC11)
package {
import flash.display.*;
public dynamic class MonsterMC11 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 230
//MonsterMC12 (MonsterMC12)
package {
import flash.display.*;
public dynamic class MonsterMC12 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 231
//MonsterMC13 (MonsterMC13)
package {
import flash.display.*;
public dynamic class MonsterMC13 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 232
//MonsterMC14 (MonsterMC14)
package {
import flash.display.*;
public dynamic class MonsterMC14 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 233
//MonsterMC15 (MonsterMC15)
package {
import flash.display.*;
public dynamic class MonsterMC15 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 234
//MonsterMC16 (MonsterMC16)
package {
import flash.display.*;
public dynamic class MonsterMC16 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 235
//MonsterMC17 (MonsterMC17)
package {
import flash.display.*;
public dynamic class MonsterMC17 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 236
//MonsterMC18 (MonsterMC18)
package {
import flash.display.*;
public dynamic class MonsterMC18 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 237
//MonsterMC19 (MonsterMC19)
package {
import flash.display.*;
public dynamic class MonsterMC19 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 238
//MonsterMC2 (MonsterMC2)
package {
import flash.display.*;
public dynamic class MonsterMC2 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 239
//MonsterMC3 (MonsterMC3)
package {
import flash.display.*;
public dynamic class MonsterMC3 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 240
//MonsterMC4 (MonsterMC4)
package {
import flash.display.*;
public dynamic class MonsterMC4 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 241
//MonsterMC5 (MonsterMC5)
package {
import flash.display.*;
public dynamic class MonsterMC5 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 242
//MonsterMC6 (MonsterMC6)
package {
import flash.display.*;
public dynamic class MonsterMC6 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 243
//MonsterMC7 (MonsterMC7)
package {
import flash.display.*;
public dynamic class MonsterMC7 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 244
//MonsterMC8 (MonsterMC8)
package {
import flash.display.*;
public dynamic class MonsterMC8 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 245
//MonsterMC9 (MonsterMC9)
package {
import flash.display.*;
public dynamic class MonsterMC9 extends MovieClip {
public var collision_box:MovieClip;
}
}//package
Section 246
//MoveTileMC1 (MoveTileMC1)
package {
import flash.display.*;
public dynamic class MoveTileMC1 extends MovieClip {
}
}//package
Section 247
//MoveTileMC10 (MoveTileMC10)
package {
import flash.display.*;
public dynamic class MoveTileMC10 extends MovieClip {
}
}//package
Section 248
//MoveTileMC11 (MoveTileMC11)
package {
import flash.display.*;
public dynamic class MoveTileMC11 extends MovieClip {
}
}//package
Section 249
//MoveTileMC12 (MoveTileMC12)
package {
import flash.display.*;
public dynamic class MoveTileMC12 extends MovieClip {
}
}//package
Section 250
//MoveTileMC2 (MoveTileMC2)
package {
import flash.display.*;
public dynamic class MoveTileMC2 extends MovieClip {
}
}//package
Section 251
//MoveTileMC3 (MoveTileMC3)
package {
import flash.display.*;
public dynamic class MoveTileMC3 extends MovieClip {
}
}//package
Section 252
//MoveTileMC4 (MoveTileMC4)
package {
import flash.display.*;
public dynamic class MoveTileMC4 extends MovieClip {
}
}//package
Section 253
//MoveTileMC5 (MoveTileMC5)
package {
import flash.display.*;
public dynamic class MoveTileMC5 extends MovieClip {
}
}//package
Section 254
//MoveTileMC6 (MoveTileMC6)
package {
import flash.display.*;
public dynamic class MoveTileMC6 extends MovieClip {
}
}//package
Section 255
//MoveTileMC7 (MoveTileMC7)
package {
import flash.display.*;
public dynamic class MoveTileMC7 extends MovieClip {
}
}//package
Section 256
//MoveTileMC8 (MoveTileMC8)
package {
import flash.display.*;
public dynamic class MoveTileMC8 extends MovieClip {
}
}//package
Section 257
//MoveTileMC9 (MoveTileMC9)
package {
import flash.display.*;
public dynamic class MoveTileMC9 extends MovieClip {
}
}//package
Section 258
//NapalmMC1 (NapalmMC1)
package {
import flash.display.*;
public dynamic class NapalmMC1 extends MovieClip {
}
}//package
Section 259
//NapalmMC2 (NapalmMC2)
package {
import flash.display.*;
public dynamic class NapalmMC2 extends MovieClip {
}
}//package
Section 260
//NextArrow (NextArrow)
package {
import com.nitrome.highscore.*;
public dynamic class NextArrow extends ArrowButton {
public function NextArrow(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 261
//NitromeButton (NitromeButton)
package {
import com.nitrome.game.*;
public dynamic class NitromeButton extends NitromeButton {
}
}//package
Section 262
//NitromeGame (NitromeGame)
package {
import com.nitrome.engine.*;
import flash.display.*;
import com.nitrome.game.*;
import flash.net.*;
public class NitromeGame {
public static const NITROME_URL:Array = new Array("http://www.nitrome.com/", "http://cdn.nitrome.com/", "http://www.nitrome.co.uk/", "http://www.nitrome.net/", "http://www.nitromegames.com/", "http://www.nitromegames.co.uk/", "http://www.nitrome-games.com/", "http://www.nitrome-games.co.uk/", "http://www.nitromeimages.com/");
public static const CANDYSTAND_URL:Array = new Array("http://www.candystand.com/", "http://candystand.com/");
public static const MINICLIP_URL:Array = new Array("http://www.miniclip.com/", "http://miniclip.com/");
private static const DOMAINS:Array = new Array(".nitrome.com/", ".miniclip.com/", ".candystand.com/");
public static const FGL_URL:Array = ["http://www.flashgamelicense.com/", "https://www.flashgamelicense.com"];
public static const NITROME:uint = 0;
public static const MINICLIP:uint = 1;
public static const CANDYSTAND:uint = 2;
public static const SUBMIT_URL:String = "http://www.nitrome.com/php/submit_score.php";
public static const RETRIEVE_URL:String = "http://www.nitrome.com/php/retrieve_scores.php";
public static const POPUP_HOLDER_FRAME:int = 10;
private static var _level_id:String;
private static var _total_levels:int;
private static var _game_id:String;
private static var _url:String;
private static var _leading_zero:Boolean = true;
private static var _time_based:Boolean = false;
private static var _selected_level:HiddenInt;
private static var _level_score:HiddenInt;
private static var ar_1:Array = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "/", ":", ".", "_", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-");
private static var ar_2:Array = new Array("_", "7", "c", "2", "l", "r", "a", "h", "i", ".", "g", "m", "v", "1", "b", "q", "3", "z", "w", "o", "u", "t", "s", "0", "d", "f", "8", "n", "5", "k", ":", "j", "p", "/", "4", "6", "e", "9", "y", "x", "-");
private static var ar_key:String = "ctdngevfaqki8_lb:psoj90ux127hm/4w5y3rz.6-";
private static var adj:Number = 1.75;
private static var ff:Array = new Array();
public static var bonus:Object = new Object();
public static var timeline:MovieClip;
public static var sound_manager:SoundManager;
public static var global:Object = new Object();
public static var transition:Transition;
public static var last_loaded_path:String;
public static var last_loaded_xml:XML;
public static function init(_arg1:MovieClip, _arg2:String, _arg3:String, _arg4:Number):void{
timeline = _arg1;
_url = _arg1.loaderInfo.url;
_level_id = _arg3;
_total_levels = _arg4;
_game_id = _arg2.toLowerCase();
_selected_level = new HiddenInt(1);
_level_score = new HiddenInt();
}
public static function get game_id():String{
return (_game_id);
}
public static function get level_id():String{
return (_level_id);
}
public static function get total_levels():int{
return (_total_levels);
}
public static function get level_score():int{
return (_level_score.value);
}
public static function set level_score(_arg1:int):void{
_level_score.value = _arg1;
}
public static function get selected_level():int{
return (_selected_level.value);
}
public static function set selected_level(_arg1:int):void{
_selected_level.value = _arg1;
}
public static function get url():String{
return (_url);
}
public static function get leading_zero():Boolean{
return (_leading_zero);
}
public static function set leading_zero(_arg1:Boolean):void{
_leading_zero = _arg1;
}
public static function get time_based():Boolean{
return (_time_based);
}
public static function set time_based(_arg1:Boolean):void{
_time_based = _arg1;
}
public static function isAtURL(... _args):Boolean{
var _local3:Array;
var _local4:int;
var _local5:String;
if (_args.length == 0){
_args.push(NITROME_URL);
};
var _local2:int;
while (_local2 < _args.length) {
_local3 = _args[_local2];
_local4 = 0;
while (_local4 < _local3.length) {
_local5 = _local3[_local4];
if (compareURLTo(_local5, _url)){
return (true);
};
_local4++;
};
_local2++;
};
return (false);
}
private static function compareURLTo(_arg1:String, _arg2:String):Boolean{
var _local4:int;
var _local5:String;
var _local10:Number;
var _local11:String;
var _local12:String;
var _local3:Array = ["http://", "https://"];
_local4 = 0;
while (_local4 < _local3.length) {
if (_arg2.substr(0, _local3[_local4].length) == _local3[_local4]){
_local5 = _local3[_local4];
break;
};
_local4++;
};
if (_local4 == _local3.length){
return (false);
};
var _local6:String = _arg2.substr(_local5.length);
_arg1 = _arg1.substr(_local5.length);
while (_local6.charAt(0) == "/") {
_local6 = _local6.substr(1);
};
while (_arg1.charAt(0) == "/") {
_arg1 = _arg1.substr(1);
};
var _local7:Array = _local6.split("/");
var _local8:Array = _arg1.split("/");
var _local9:Number = 0;
while (_local9 < _local8.length) {
if (_local8[_local9].length < 1){
} else {
_local10 = _local8[_local9].indexOf("*");
if (_local10 != -1){
_local11 = _local8[_local9].substr(0, _local10);
_local12 = _local8[_local9].substr((_local10 + 1));
if (_local7[_local9].substr(0, _local11.length) != _local11){
return (false);
};
if (_local7[_local9].substr(-(_local12.length)) != _local12){
return (false);
};
} else {
if (_local8[_local9] != _local7[_local9]){
return (false);
};
};
};
_local9++;
};
return (true);
}
public static function getSwfPath():String{
var _local1:String = url;
var _local2:int = _local1.length;
while (_local2 >= 0) {
if (_local1.charAt(_local2) == "/"){
_local1 = _local1.slice(0, (_local2 + 1));
break;
};
_local2--;
};
return (_local1);
}
public static function getLevelName(_arg1:Number, _arg2:String=".xml"):String{
var _local3:MD5 = new MD5();
var _local4 = "";
if (leading_zero){
if (_arg1 < 10){
_local4 = "0";
};
};
var _local5:String = _local3.hash(String(((level_id + _local4) + _arg1)));
return ((_local5 + _arg2));
}
public static function setLevelUnlocked(_arg1:int, _arg2:int=1):void{
var _local6:*;
var _local7:Array;
var _local8:int;
var _local3:String = (("so_" + game_id) + _arg2);
var _local4:SharedObject = SharedObject.getLocal(_local3);
var _local5:Boolean;
for each (_local6 in _local4.data) {
_local5 = true;
break;
};
_local7 = new Array(total_levels);
if (!_local5){
_local8 = 0;
while (_local8 < _local7.length) {
_local7[_local8] = 0;
_local8++;
};
_local7[0] = 1;
} else {
if (_local4.data.levels_unlocked == undefined){
_local8 = 0;
while (_local8 < _local7.length) {
_local7[_local8] = 0;
_local8++;
};
_local7[0] = 1;
} else {
_local7 = _local4.data.levels_unlocked;
};
};
_local7[(_arg1 - 1)] = 1;
_local4.data.levels_unlocked = _local7;
_local4.flush();
_local4.close();
}
public static function getLevelUnlocked(_arg1:int, _arg2:int=1):Boolean{
var _local6:*;
var _local7:Array;
var _local8:int;
var _local3:String = (("so_" + game_id) + _arg2);
var _local4:SharedObject = SharedObject.getLocal(_local3);
var _local5:Boolean;
for each (_local6 in _local4.data) {
_local5 = true;
break;
};
_local7 = new Array(total_levels);
if (!_local5){
_local8 = 0;
while (_local8 < _local7.length) {
_local7[_local8] = 0;
_local8++;
};
_local7[0] = 1;
_local4.data.levels_unlocked = _local7;
_local4.flush();
_local4.close();
if (_arg1 == 1){
return (true);
};
return (false);
} else {
if (_local4.data.levels_unlocked == undefined){
_local8 = 0;
while (_local8 < _local7.length) {
_local7[_local8] = 0;
_local8++;
};
_local7[0] = 1;
_local4.data.levels_unlocked = _local7;
_local4.flush();
_local4.close();
if (_arg1 == 1){
return (true);
};
return (false);
} else {
if (_local4.data.levels_unlocked[(_arg1 - 1)] == 1){
return (true);
};
if (_local4.data.levels_unlocked[(_arg1 - 1)] == 0){
return (false);
};
};
};
return (false);
}
public static function lockAllLevels(_arg1:int=1):void{
var _local5:int;
var _local2:String = (("so_" + game_id) + _arg1);
var _local3:SharedObject = SharedObject.getLocal(_local2);
var _local4:Array = new Array(total_levels);
_local5 = 0;
while (_local5 < _local4.length) {
_local4[_local5] = 0;
_local5++;
};
_local4[0] = 1;
_local3.data.levels_unlocked = _local4;
_local3.flush();
_local3.close();
}
public static function unlockAllLevels(_arg1:int=1):void{
var _local5:int;
var _local2:String = (("so_" + game_id) + _arg1);
var _local3:SharedObject = SharedObject.getLocal(_local2);
var _local4:Array = new Array(total_levels);
_local5 = 0;
while (_local5 < _local4.length) {
_local4[_local5] = 1;
_local5++;
};
_local3.data.levels_unlocked = _local4;
_local3.flush();
_local3.close();
}
public static function setLevelScore(_arg1:int, _arg2:int, _arg3:int=1):void{
var _local7:*;
var _local4:String = (("so_" + game_id) + _arg3);
var _local5:SharedObject = SharedObject.getLocal(_local4);
var _local6:Boolean;
for each (_local7 in _local5.data) {
_local6 = true;
break;
};
if (!_local6){
_local5.data.level_scores = new Array();
_local5.data.level_scores[_arg2] = _arg1;
} else {
if (_local5.data.level_scores == undefined){
_local5.data.level_scores = new Array();
_local5.data.level_scores[_arg2] = _arg1;
} else {
_local5.data.level_scores[_arg2] = _arg1;
};
};
_local5.flush();
_local5.close();
}
public static function getLevelScore(_arg1:int, _arg2:int=1):int{
var _local6:*;
var _local3:String = (("so_" + game_id) + String(_arg2));
var _local4:SharedObject = SharedObject.getLocal(_local3);
var _local5:Boolean;
for each (_local6 in _local4.data) {
_local5 = true;
break;
};
if (!_local5){
return (0);
};
if (_local4.data.level_scores == undefined){
return (0);
};
if (_local4.data.level_scores[_arg1] == undefined){
return (0);
};
return (_local4.data.level_scores[_arg1]);
}
public static function getTotalScore(_arg1:int=1):int{
var _local5:*;
var _local6:int;
var _local7:int;
var _local2:String = (("so_" + game_id) + String(_arg1));
var _local3:SharedObject = SharedObject.getLocal(_local2);
var _local4:Boolean;
for each (_local5 in _local3.data) {
_local4 = true;
break;
};
if (!_local4){
return (0);
};
if (_local3.data.level_scores == undefined){
return (0);
};
_local6 = 0;
_local7 = 0;
while (_local7 < _local3.data.level_scores.length) {
if (((!((_local3.data.level_scores[_local7] == undefined))) && (!(isNaN(_local3.data.level_scores[_local7]))))){
_local6 = (_local6 + _local3.data.level_scores[_local7]);
};
_local7++;
};
return (_local6);
}
public static function getLastSavedScore(_arg1:int=1):int{
var _local5:*;
var _local2:String = (("so_" + game_id) + String(_arg1));
var _local3:SharedObject = SharedObject.getLocal(_local2);
var _local4:Boolean;
for each (_local5 in _local3.data) {
_local4 = true;
break;
};
if (!_local4){
return (0);
};
if (_local3.data.last_saved_score == undefined){
return (0);
};
return (_local3.data.last_saved_score);
}
public static function setLastSavedScore(_arg1:int, _arg2:int=1):void{
var _local3:String = (("so_" + game_id) + String(_arg2));
var _local4:SharedObject = SharedObject.getLocal(_local3);
_local4.data.last_saved_score = _arg1;
_local4.flush();
_local4.close();
}
public static function getHighScoreLine(_arg1:String, _arg2:int):Object{
var _local5:Array;
var _local6:Object;
var _local3:Array = _arg1.split("|");
var _local4:String = _local3[(_arg2 - 1)];
if ((((((((_local4 == "0")) || ((_local4 == "1")))) || ((_local4 == null)))) || ((_local4 == "")))){
return (null);
};
_local5 = _local4.split("_");
if ((((_local5[1] == "n")) || ((_local5[2] == "n")))){
return (null);
};
_local6 = new Object();
_local6.username = _local5[2];
_local6.score = _local5[1];
_local6.rank = _local5[0];
return (_local6);
}
public static function displayNextButton(_arg1:String):Boolean{
var _local2:Array = _arg1.split("|");
var _local3:String = _local2[10];
if (_local3 == "1"){
return (true);
};
if (_local3 == "0"){
return (false);
};
return (false);
}
public static function displayPreviousButton(_arg1:String):Boolean{
var _local2:Array = _arg1.split("|");
var _local3:String = _local2[11];
if (_local3 == "1"){
return (true);
};
if (_local3 == "0"){
return (false);
};
return (false);
}
public static function getScoreData(_arg1:int, _arg2:String):String{
var _local3:String = ((((String(_arg1) + "_") + game_id) + "_") + _arg2.toLowerCase());
trace(("encrypting: " + _local3));
var _local4:String = encryptString(ar_key, _local3);
trace(("encrypted: " + _local4));
trace(("decrypted: " + decryptString(ar_key, _local4)));
return (_local4);
}
private static function encryptString(_arg1:String, _arg2:String):String{
var _local6:String;
var _local7:int;
var _local8:int;
var _local9:Number;
var _local10:int;
var _local11:String;
adj = 1.75;
ff = convertKey(_arg1);
var _local3 = "";
var _local4:Number = 0;
var _local5:int;
while (_local5 < _arg2.length) {
_local6 = _arg2.substr(_local5, 1);
_local8 = 0;
while (_local8 < ar_1.length) {
if (ar_1[_local8] == _local6){
_local7 = _local8;
break;
};
_local8++;
};
adj = applyFudgeFactor();
_local9 = (_local4 + adj);
_local10 = (Math.round(_local9) + _local7);
_local10 = checkRange(_local10);
_local4 = (_local9 + _local10);
_local11 = ar_2[_local10];
_local3 = (_local3 + _local11);
_local5++;
};
return (_local3);
}
private static function convertKey(_arg1:String):Array{
var _local5:String;
var _local6:int;
var _local7:int;
var _local2:Array = new Array();
_local2.push(_arg1.length);
var _local3:int;
var _local4:int;
while (_local4 < _arg1.length) {
_local5 = _arg1.substr(_local4, 1);
_local7 = 0;
while (_local7 < ar_1.length) {
if (ar_1[_local7] == _local5){
_local6 = _local7;
break;
};
_local7++;
};
_local2.push(_local6);
_local3 = (_local3 + _local6);
_local4++;
};
_local2.push(_local3);
return (_local2);
}
private static function applyFudgeFactor():Number{
var _local1:Number = Number(ff.shift());
_local1 = (_local1 + adj);
ff.push(_local1);
return (_local1);
}
private static function checkRange(_arg1:int):int{
_arg1 = Math.round(_arg1);
var _local2:int = ar_1.length;
while (_arg1 >= _local2) {
_arg1 = (_arg1 - _local2);
};
while (_arg1 < 0) {
_arg1 = (_arg1 + _local2);
};
return (_arg1);
}
private static function decryptString(_arg1:String, _arg2:String):String{
var _local6:*;
var _local7:int;
var _local8:int;
var _local9:Number;
var _local10:int;
var _local11:String;
adj = 1.75;
ff = convertKey(_arg1);
var _local3 = "";
var _local4:Number = 0;
var _local5:int;
while (_local5 < _arg2.length) {
_local6 = _arg2.substr(_local5, 1);
_local8 = 0;
while (_local8 < ar_2.length) {
if (ar_2[_local8] == _local6){
_local7 = _local8;
break;
};
_local8++;
};
adj = applyFudgeFactor();
_local9 = (_local4 + adj);
_local10 = (_local7 - Math.round(_local9));
_local10 = checkRange(_local10);
_local4 = (_local9 + _local7);
_local11 = ar_1[_local10];
_local3 = (_local3 + _local11);
_local5++;
};
return (_local3);
}
public static function set music(_arg1:Boolean):void{
var _local2:String = ("so_" + game_id);
var _local3:SharedObject = SharedObject.getLocal(_local2);
_local3.data.musicon = _arg1;
_local3.flush();
_local3.close();
}
public static function get music():Boolean{
var _local4:*;
var _local1:String = ("so_" + game_id);
var _local2:SharedObject = SharedObject.getLocal(_local1);
var _local3:Boolean;
for each (_local4 in _local2.data) {
_local3 = true;
break;
};
if (_local3){
if (_local2.data.musicon != undefined){
return (_local2.data.musicon);
};
return (true);
//unresolved jump
};
return (true);
}
public static function set sfx(_arg1:Boolean):void{
var _local2:String = ("so_" + game_id);
var _local3:SharedObject = SharedObject.getLocal(_local2);
_local3.data.sfxon = _arg1;
_local3.flush();
_local3.close();
}
public static function get sfx():Boolean{
var _local4:*;
var _local1:String = ("so_" + game_id);
var _local2:SharedObject = SharedObject.getLocal(_local1);
var _local3:Boolean;
for each (_local4 in _local2.data) {
_local3 = true;
break;
};
if (_local3){
if (_local2.data.sfxon != undefined){
return (_local2.data.sfxon);
};
return (true);
//unresolved jump
};
return (true);
}
}
}//package
Section 263
//NoThruTileMC (NoThruTileMC)
package {
import flash.display.*;
public dynamic class NoThruTileMC extends MovieClip {
}
}//package
Section 264
//PlayerBulletHitMC1 (PlayerBulletHitMC1)
package {
import flash.display.*;
public dynamic class PlayerBulletHitMC1 extends MovieClip {
}
}//package
Section 265
//PlayerBulletHitMC2 (PlayerBulletHitMC2)
package {
import flash.display.*;
public dynamic class PlayerBulletHitMC2 extends MovieClip {
}
}//package
Section 266
//PlayerBulletHitMC3 (PlayerBulletHitMC3)
package {
import flash.display.*;
public dynamic class PlayerBulletHitMC3 extends MovieClip {
}
}//package
Section 267
//PlayerBulletMC (PlayerBulletMC)
package {
import flash.display.*;
public dynamic class PlayerBulletMC extends MovieClip {
}
}//package
Section 268
//PlayerMC (PlayerMC)
package {
import flash.display.*;
public dynamic class PlayerMC extends MovieClip {
public function PlayerMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 269
//PrevArrow (PrevArrow)
package {
import com.nitrome.highscore.*;
public dynamic class PrevArrow extends ArrowButton {
public function PrevArrow(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 270
//ProbeBlastMC (ProbeBlastMC)
package {
import flash.display.*;
public dynamic class ProbeBlastMC extends MovieClip {
}
}//package
Section 271
//ProbeJetMC (ProbeJetMC)
package {
import flash.display.*;
public dynamic class ProbeJetMC extends MovieClip {
}
}//package
Section 272
//ProbeMC (ProbeMC)
package {
import flash.display.*;
public dynamic class ProbeMC extends MovieClip {
}
}//package
Section 273
//ScoreLine (ScoreLine)
package {
import com.nitrome.highscore.*;
public dynamic class ScoreLine extends HighScoreLine {
}
}//package
Section 274
//ScoreSubmitPanel (ScoreSubmitPanel)
package {
import com.nitrome.highscore.*;
public dynamic class ScoreSubmitPanel extends ScoreSubmitPanel {
public function ScoreSubmitPanel(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 275
//ShieldMC (ShieldMC)
package {
import flash.display.*;
public dynamic class ShieldMC extends MovieClip {
}
}//package
Section 276
//SideLaserHitMC (SideLaserHitMC)
package {
import flash.display.*;
public dynamic class SideLaserHitMC extends MovieClip {
}
}//package
Section 277
//SideLazerData (SideLazerData)
package {
import flash.display.*;
public dynamic class SideLazerData extends BitmapData {
public function SideLazerData(_arg1:int=32, _arg2:int=24){
super(_arg1, _arg2);
}
}
}//package
Section 278
//SideLazerData2 (SideLazerData2)
package {
import flash.display.*;
public dynamic class SideLazerData2 extends BitmapData {
public function SideLazerData2(_arg1:int=32, _arg2:int=24){
super(_arg1, _arg2);
}
}
}//package
Section 279
//SmallBangMC (SmallBangMC)
package {
import flash.display.*;
public dynamic class SmallBangMC extends MovieClip {
}
}//package
Section 280
//SmallBulletHitMC1 (SmallBulletHitMC1)
package {
import flash.display.*;
public dynamic class SmallBulletHitMC1 extends MovieClip {
}
}//package
Section 281
//SmallBulletHitMC2 (SmallBulletHitMC2)
package {
import flash.display.*;
public dynamic class SmallBulletHitMC2 extends MovieClip {
}
}//package
Section 282
//SmallBulletHitMC3 (SmallBulletHitMC3)
package {
import flash.display.*;
public dynamic class SmallBulletHitMC3 extends MovieClip {
}
}//package
Section 283
//SmallBulletMC1 (SmallBulletMC1)
package {
import flash.display.*;
public dynamic class SmallBulletMC1 extends MovieClip {
}
}//package
Section 284
//SmallBulletMC2 (SmallBulletMC2)
package {
import flash.display.*;
public dynamic class SmallBulletMC2 extends MovieClip {
}
}//package
Section 285
//SmallBulletMC3 (SmallBulletMC3)
package {
import flash.display.*;
public dynamic class SmallBulletMC3 extends MovieClip {
}
}//package
Section 286
//StaticTileMC (StaticTileMC)
package {
import flash.display.*;
public dynamic class StaticTileMC extends MovieClip {
}
}//package
Section 287
//StaticTileMC1 (StaticTileMC1)
package {
import flash.display.*;
public dynamic class StaticTileMC1 extends MovieClip {
}
}//package
Section 288
//StaticTileMC10 (StaticTileMC10)
package {
import flash.display.*;
public dynamic class StaticTileMC10 extends MovieClip {
}
}//package
Section 289
//StaticTileMC11 (StaticTileMC11)
package {
import flash.display.*;
public dynamic class StaticTileMC11 extends MovieClip {
}
}//package
Section 290
//StaticTileMC12 (StaticTileMC12)
package {
import flash.display.*;
public dynamic class StaticTileMC12 extends MovieClip {
}
}//package
Section 291
//StaticTileMC13 (StaticTileMC13)
package {
import flash.display.*;
public dynamic class StaticTileMC13 extends MovieClip {
}
}//package
Section 292
//StaticTileMC14 (StaticTileMC14)
package {
import flash.display.*;
public dynamic class StaticTileMC14 extends MovieClip {
}
}//package
Section 293
//StaticTileMC15 (StaticTileMC15)
package {
import flash.display.*;
public dynamic class StaticTileMC15 extends MovieClip {
}
}//package
Section 294
//StaticTileMC16 (StaticTileMC16)
package {
import flash.display.*;
public dynamic class StaticTileMC16 extends MovieClip {
}
}//package
Section 295
//StaticTileMC17 (StaticTileMC17)
package {
import flash.display.*;
public dynamic class StaticTileMC17 extends MovieClip {
}
}//package
Section 296
//StaticTileMC18 (StaticTileMC18)
package {
import flash.display.*;
public dynamic class StaticTileMC18 extends MovieClip {
}
}//package
Section 297
//StaticTileMC19 (StaticTileMC19)
package {
import flash.display.*;
public dynamic class StaticTileMC19 extends MovieClip {
}
}//package
Section 298
//StaticTileMC2 (StaticTileMC2)
package {
import flash.display.*;
public dynamic class StaticTileMC2 extends MovieClip {
}
}//package
Section 299
//StaticTileMC20 (StaticTileMC20)
package {
import flash.display.*;
public dynamic class StaticTileMC20 extends MovieClip {
}
}//package
Section 300
//StaticTileMC21 (StaticTileMC21)
package {
import flash.display.*;
public dynamic class StaticTileMC21 extends MovieClip {
}
}//package
Section 301
//StaticTileMC22 (StaticTileMC22)
package {
import flash.display.*;
public dynamic class StaticTileMC22 extends MovieClip {
}
}//package
Section 302
//StaticTileMC23 (StaticTileMC23)
package {
import flash.display.*;
public dynamic class StaticTileMC23 extends MovieClip {
}
}//package
Section 303
//StaticTileMC24 (StaticTileMC24)
package {
import flash.display.*;
public dynamic class StaticTileMC24 extends MovieClip {
}
}//package
Section 304
//StaticTileMC25 (StaticTileMC25)
package {
import flash.display.*;
public dynamic class StaticTileMC25 extends MovieClip {
}
}//package
Section 305
//StaticTileMC26 (StaticTileMC26)
package {
import flash.display.*;
public dynamic class StaticTileMC26 extends MovieClip {
}
}//package
Section 306
//StaticTileMC27 (StaticTileMC27)
package {
import flash.display.*;
public dynamic class StaticTileMC27 extends MovieClip {
}
}//package
Section 307
//StaticTileMC28 (StaticTileMC28)
package {
import flash.display.*;
public dynamic class StaticTileMC28 extends MovieClip {
}
}//package
Section 308
//StaticTileMC29 (StaticTileMC29)
package {
import flash.display.*;
public dynamic class StaticTileMC29 extends MovieClip {
}
}//package
Section 309
//StaticTileMC3 (StaticTileMC3)
package {
import flash.display.*;
public dynamic class StaticTileMC3 extends MovieClip {
}
}//package
Section 310
//StaticTileMC30 (StaticTileMC30)
package {
import flash.display.*;
public dynamic class StaticTileMC30 extends MovieClip {
}
}//package
Section 311
//StaticTileMC31 (StaticTileMC31)
package {
import flash.display.*;
public dynamic class StaticTileMC31 extends MovieClip {
}
}//package
Section 312
//StaticTileMC32 (StaticTileMC32)
package {
import flash.display.*;
public dynamic class StaticTileMC32 extends MovieClip {
}
}//package
Section 313
//StaticTileMC4 (StaticTileMC4)
package {
import flash.display.*;
public dynamic class StaticTileMC4 extends MovieClip {
}
}//package
Section 314
//StaticTileMC5 (StaticTileMC5)
package {
import flash.display.*;
public dynamic class StaticTileMC5 extends MovieClip {
}
}//package
Section 315
//StaticTileMC6 (StaticTileMC6)
package {
import flash.display.*;
public dynamic class StaticTileMC6 extends MovieClip {
}
}//package
Section 316
//StaticTileMC7 (StaticTileMC7)
package {
import flash.display.*;
public dynamic class StaticTileMC7 extends MovieClip {
}
}//package
Section 317
//StaticTileMC8 (StaticTileMC8)
package {
import flash.display.*;
public dynamic class StaticTileMC8 extends MovieClip {
}
}//package
Section 318
//StaticTileMC9 (StaticTileMC9)
package {
import flash.display.*;
public dynamic class StaticTileMC9 extends MovieClip {
}
}//package
Section 319
//SubmitButton (SubmitButton)
package {
import com.nitrome.highscore.*;
public dynamic class SubmitButton extends SubmitButton {
public function SubmitButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 320
//SwitchMC1 (SwitchMC1)
package {
import flash.display.*;
public dynamic class SwitchMC1 extends MovieClip {
public function SwitchMC1(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 321
//SwitchMC2 (SwitchMC2)
package {
import flash.display.*;
public dynamic class SwitchMC2 extends MovieClip {
public function SwitchMC2(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 322
//SwitchMC3 (SwitchMC3)
package {
import flash.display.*;
public dynamic class SwitchMC3 extends MovieClip {
public function SwitchMC3(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 323
//SwitchMC4 (SwitchMC4)
package {
import flash.display.*;
public dynamic class SwitchMC4 extends MovieClip {
public function SwitchMC4(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 324
//TurnTileMC (TurnTileMC)
package {
import flash.display.*;
public dynamic class TurnTileMC extends MovieClip {
public var mirror:MovieClip;
}
}//package
Section 325
//VertTileMC (VertTileMC)
package {
import flash.display.*;
public dynamic class VertTileMC extends MovieClip {
}
}//package