Section 1
//Actor (com.nitrome.engine.Actor)
package com.nitrome.engine {
import flash.display.*;
public class Actor extends Clip {
public var active:Boolean;
public var all_collision:Boolean;
public var electrocuted:Boolean;
public var collision_rect:Rect;
public var free:Boolean;
public var x:Number;
public var y:Number;
public function Actor(_arg1:Sprite, _arg2:Game, _arg3:Boolean){
super(_arg1, _arg2);
this.free = _arg3;
actor = true;
x = _arg1.x;
y = _arg1.y;
active = true;
all_collision = false;
electrocuted = false;
_arg2.addActor(this);
}
override public function remove():void{
var _local1:int;
var _local2:int;
if (forced){
return;
};
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;
};
};
};
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
public function intersects(_arg1:Rect):Boolean{
return (false);
}
public function resolveBulletCollision(_arg1):void{
}
public function resolveEncounterCollision(_arg1):void{
}
public function debug():void{
}
public function alert():void{
}
public function unpause():void{
}
public function standdown():void{
}
}
}//package com.nitrome.engine
Section 2
//Clip (com.nitrome.engine.Clip)
package com.nitrome.engine {
import flash.display.*;
public class Clip {
public var init_x:int;
public var init_y:int;
public var block:Boolean;// = false
public var layer:int;
public var tile_id:String;
public var map_x:int;
public var mc:Sprite;
public var forced:Boolean;// = false
public var map_y:int;
public var g:Game;
public var force_field:Boolean;// = false
public var encounter:Boolean;// = false
public var actor:Boolean;// = false
public var id_tag:int;// = -1
public function Clip(_arg1:Sprite, _arg2:Game){
block = false;
force_field = false;
encounter = false;
actor = false;
forced = false;
id_tag = -1;
super();
this.mc = _arg1;
this.g = _arg2;
}
public function remove():void{
if (forced){
return;
};
if (mc.parent != null){
mc.parent.removeChild(mc);
};
g.scroller.map_array_layers[layer][map_y][map_x] = tile_id;
}
}
}//package com.nitrome.engine
Section 3
//Dot (com.nitrome.engine.Dot)
package com.nitrome.engine {
public class Dot {
public var ix:Number;
public var iy:Number;
public var x:Number;
public var y: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 toString():String{
return ((((("(" + x) + ",") + y) + ")"));
}
public function pin():void{
x = ix;
y = iy;
}
}
}//package com.nitrome.engine
Section 4
//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 aggressive:Boolean;// = false
public var kill_on_collision:Boolean;
public var actor_target:Boolean;// = true
public var on_scroller:Boolean;// = false
public var reward:HiddenInt;
public var has_main:Boolean;
public var has_collision:Boolean;
public var spawned:Boolean;// = false
public var free:Boolean;
public var x:Number;
public var y:Number;
public var skip:Boolean;
public function Encounter(_arg1:Sprite, _arg2:Game, _arg3:Boolean){
spawned = false;
aggressive = false;
actor_target = true;
on_scroller = false;
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);
}
override public function remove():void{
var _local1:int;
var _local2:int;
if (forced){
return;
};
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;
};
};
};
}
public function standdown():void{
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
public function intersects(_arg1:Rect):Boolean{
return (false);
}
public function resolvePlayerCollision(_arg1:Player):void{
}
public function alert():void{
}
public function debug():void{
}
public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
}
public function unpause():void{
}
}
}//package com.nitrome.engine
Section 5
//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 get value():int{
return ((_value - r));
}
public function set value(_arg1:int):void{
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
}
}
}//package com.nitrome.engine
Section 6
//Line (com.nitrome.engine.Line)
package com.nitrome.engine {
import flash.display.*;
public class Line {
public var vy:Number;
public var vx:Number;
public var ly:Number;
public var ry:Number;
public var lx:Number;
public var dx:Number;
public var rx:Number;
public var len:Number;
public var theta:Number;
public var a:Dot;
public var b:Dot;
public var dy:Number;
public function Line(_arg1:Dot, _arg2:Dot){
this.a = _arg1;
this.b = _arg2;
updateLine();
}
public function atan2():Number{
theta = Math.atan2(vy, vx);
return (theta);
}
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 proximity(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:Dot;
var _local5:Line;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:*;
_local4 = new Dot(_arg1, _arg2);
_local5 = this;
_local6 = (_local4.x - a.x);
_local7 = (_local4.y - a.y);
_local8 = dot(_local5, _local5);
_local9 = ((_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 function draw(_arg1:Graphics):void{
_arg1.moveTo(a.x, a.y);
_arg1.lineTo(b.x, b.y);
}
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 copy():Line{
return (new Line(new Dot(a.x, a.y), new Dot(b.x, b.y)));
}
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 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 static function perP(_arg1:Object, _arg2:Object):Number{
var _local3:*;
_local3 = ((_arg1.vx * _arg2.vy) - (_arg1.vy * _arg2.vx));
return (_local3);
}
public static function intersects(_arg1:Object, _arg2:Object):Boolean{
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
_local3 = {vx:(_arg2.a.x - _arg1.a.x), vy:(_arg2.a.y - _arg1.a.y)};
_local4 = perP(_local3, _arg2);
_local5 = perP(_arg1, _arg2);
_local6 = (_local4 / _local5);
_local7 = (_local5 / _local4);
return ((((((((_local6 >= 0)) && ((_local6 <= 1)))) && ((_local7 >= 0)))) && ((_local7 <= 1))));
}
public static function intersectionPoint(_arg1:Object, _arg2:Object):Object{
var _local3:*;
var _local4:*;
var _local5:*;
_local3 = {vx:(_arg2.a.x - _arg1.a.x), vy:(_arg2.a.y - _arg1.a.y)};
_local4 = (perP(_local3, _arg2) / perP(_arg1, _arg2));
_local5 = {};
_local5.x = (_arg1.a.x + (_arg1.vx * _local4));
_local5.y = (_arg1.a.y + (_arg1.vy * _local4));
return (_local5);
}
public static function dot(_arg1:Object, _arg2:Object):Number{
return (((_arg1.vx * _arg2.vx) + (_arg1.vy * _arg2.vy)));
}
public static function miniPerP(_arg1:Object, _arg2:Object):Number{
var _local3:*;
_local3 = ((_arg1.dx * _arg2.dy) - (_arg1.dy * _arg2.dx));
return (_local3);
}
public static function normal(_arg1:Object, _arg2:Object):Object{
var _local3:*;
var _local4:*;
_local3 = {x:(_arg1.x - _arg2.x), y:(_arg1.y - _arg2.y)};
_local4 = _local3.length;
_local3.x = (_local3.x / _local4);
_local3.y = (_local3.y / _local4);
return (_local3);
}
public static function projection(_arg1:Line, _arg2:Line):Line{
var _local3:*;
_local3 = Line.dot(_arg1, _arg2);
return (new Line(new Dot(0, 0), new Dot((_arg1.dx * _local3), (_arg1.dy * _local3))));
}
}
}//package com.nitrome.engine
Section 7
//LZW (com.nitrome.engine.LZW)
package com.nitrome.engine {
public class LZW {
private static var xmlsafe:Boolean = true;
public function denumerate(_arg1:String):String{
var _local2:Array;
var _local3:String;
var _local4:int;
_local2 = _arg1.split(",");
_local3 = "";
_local4 = 0;
while (_local4 < _local2.length) {
_local3 = (_local3 + String.fromCharCode(parseInt(_local2[_local4], 16)));
_local4++;
};
return (_local3);
}
public function compress(_arg1:String):String{
var _local2:Array;
var _local3:Number;
var _local4:Number;
var _local5:String;
var _local6:String;
var _local7:Array;
var _local8:Number;
var _local9:Number;
var _local10:String;
var _local11:String;
_local2 = [];
_local3 = (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;
};
_local5 = "";
_local6 = _arg1;
_local7 = _local6.split("");
_local8 = _local7.length;
_local9 = (0x0100 + _local3);
_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 decompress(_arg1:String):String{
var _local2:Array;
var _local3:Number;
var _local4:Number;
var _local5:String;
var _local6:Array;
var _local7:Number;
var _local8:Number;
var _local9:String;
var _local10:String;
var _local11:String;
var _local12:String;
var _local13:Number;
var _local14:String;
_local2 = [];
_local3 = (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] = "'";
};
_local5 = _arg1;
_local6 = _local5.split("");
_local7 = _local6.length;
_local8 = (0x0100 + _local3);
_local9 = "";
_local10 = "";
_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);
}
public function numerate(_arg1:String):String{
var _local2:Array;
var _local3:int;
_local2 = _arg1.split("");
_local3 = 0;
while (_local3 < _local2.length) {
_local2[_local3] = _local2[_local3].charCodeAt(0);
_local2[_local3] = _local2[_local3].toString(16);
_local3++;
};
return (_local2.toString());
}
}
}//package com.nitrome.engine
Section 8
//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);
}
override public function pin():void{
x = (px = (temp_x = ix));
y = (py = (temp_y = iy));
}
public function speed():Number{
return (Math.sqrt((((x - px) * (x - px)) + ((y - py) * (y - py)))));
}
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 reverse(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
_local2 = (px - x);
_local3 = (py - y);
addVelocity((_local2 * _arg1), (_local3 * _arg1));
}
public function addVelocity(_arg1:Number, _arg2:Number):void{
px = (px - _arg1);
py = (py - _arg2);
}
public function xspeed():Number{
return ((x - px));
}
public function getLine():Line{
return (new Line(new Dot(px, py), this));
}
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 toString():String{
return (((((((("(" + x) + ",") + y) + ") ") + x) + ",") + y));
}
public function yspeed():Number{
return ((y - py));
}
public function copy():Particle{
var _local1:*;
_local1 = new Particle(x, y);
_local1.px = px;
_local1.py = py;
return (_local1);
}
public function pinTo(_arg1:Number, _arg2:Number):void{
this.x = (ix = (px = (temp_x = _arg1)));
this.y = (iy = (py = (temp_y = _arg2)));
}
}
}//package com.nitrome.engine
Section 9
//Rect (com.nitrome.engine.Rect)
package com.nitrome.engine {
import flash.display.*;
public class Rect {
public var width:Number;
public var height:Number;
public var cx:Number;
public var cy:Number;
public var x:Number;
public var y:Number;
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public static const TEMP:int = 16;
public static const UP:int = 1;
public static const RIGHT:int = 2;
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 draw(_arg1:Graphics):void{
_arg1.drawRect(x, y, width, height);
}
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 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 sideOf(_arg1:Number, _arg2:Number):int{
var _local3:Number;
var _local4:Number;
cx = (this.x + (width * 0.5));
cy = (this.y + (height * 0.5));
if ((((_arg1 == cx)) && ((_arg2 == cy)))){
return (2);
};
_local3 = (_arg1 - cx);
_local4 = (_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 contains(_arg1:Number, _arg2:Number):Boolean{
return ((((((((_arg1 >= this.x)) && ((_arg2 >= this.y)))) && ((_arg1 < (this.x + width))))) && ((_arg2 < (this.y + height)))));
}
public function intersectsCircle(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number;
var _local5:Number;
_local4 = _arg1;
_local5 = _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 toString():String{
return ((((((((("(x:" + x) + " y:") + y) + " width:") + width) + " height:") + height) + ")"));
}
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 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 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 10
//Scroller (com.nitrome.engine.Scroller)
package com.nitrome.engine {
import flash.display.*;
import com.nitrome.engine_specific.*;
public class Scroller {
public var map_rows_layers:Array;
public var tile_layers_behind:Array;
public var current_layer:int;
public var tiles_height:int;
public var signage:Array;
public var border_x:Array;
public var border_y:Array;
public var height:int;
public var SCALE:Number;
public var master_layer:int;
public var layers:int;
public var stage_width:int;
public var map_cols_index:Array;
public var scale:Number;
public var update_layer:Array;
public var tile_holder:Sprite;
public var tile_maker:TileMaker;
public var gfx:Boolean;
public var tiles:Sprite;
public var scroll_x:Boolean;
public var scroll_y:Boolean;
public var stage_height:int;
public var tiles_width:int;
public var scroll_bottomright_x:int;
public var scroll_bottomright_y:int;
public var map_rows_index:Array;
public var map_array:Array;
public var width:int;
public var gfx_layers:Array;
public var last_stage_x:int;
public var last_stage_y:int;
public var map_rows_index_layers:Array;
public var map_rows:Array;
public var scroll_topleft_x:int;
public var scroll_topleft_y:int;
public var map_rect:Rect;
public var map_array_layers:Array;
public var tile_layers:Array;
public var map_cols_index_layers:Array;
public var stage:Sprite;
public static const VERT:int = 2;
public static const ENCOUNTER_LAYER:int = 2;
public static const HORIZ:int = 1;
public static const BLOCK_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 = true;
scroll_y = true;
gfx_layers = [];
gfx = false;
border_x = new Array(1, 3, 3, 1);
border_y = new Array(1, 3, 3, 1);
tiles_width = Math.ceil((_arg7 / _arg4));
tiles_height = Math.ceil((_arg8 / _arg4));
tile_layers = [];
tile_layers_behind = [];
map_array_layers = [];
map_rows_layers = [];
map_rows_index_layers = [];
map_cols_index_layers = [];
update_layer = [];
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));
}
protected function pushCol(_arg1:Number):void{
var _local2:int;
map_cols_index.push(_arg1);
_local2 = 0;
while (_local2 < map_rows_index.length) {
map_rows[_local2].push(tile_maker.mapElement(_arg1, (_local2 + map_rows_index[0])));
_local2++;
};
}
public function renderScrollLayer(_arg1:int, _arg2:int):void{
var _local3:int;
var _local4:int;
changeLayer(_arg1);
tiles = new Sprite();
_local3 = 0;
while (_local3 < height) {
_local4 = 0;
while (_local4 < width) {
tile_maker.mapElement(_local4, _local3);
_local4++;
};
_local3++;
};
if (_arg2 == HORIZ){
tiles.x = (Game.scale * width);
} else {
if (_arg2 == VERT){
tiles.y = (Game.scale * height);
};
};
tile_layers[_arg1].addChild(tiles);
tiles = new Sprite();
_local3 = 0;
while (_local3 < height) {
_local4 = 0;
while (_local4 < width) {
tile_maker.mapElement(_local4, _local3);
_local4++;
};
_local3++;
};
tile_layers[_arg1].addChild(tiles);
setLayerUpdate(_arg1, false);
}
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 addLayer(_arg1:Array, _arg2:Boolean=false):void{
var _local3:Sprite;
if (tile_layers.length == layers){
_local3 = new Sprite();
tile_holder.addChild(_local3);
tile_layers.push(_local3);
};
gfx_layers.push(_arg2);
map_array_layers.push(_arg1);
map_rows_layers.push([]);
map_rows_index_layers.push([]);
map_cols_index_layers.push([]);
update_layer.push(true);
layers++;
}
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 clipManager():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
_local1 = ((stage.x * SCALE) >> 0);
_local2 = ((stage.y * SCALE) >> 0);
_local4 = 0;
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 unshiftCol(_arg1:Number):void{
var _local2:int;
map_cols_index.unshift(_arg1);
_local2 = 0;
while (_local2 < map_rows_index.length) {
map_rows[_local2].unshift(tile_maker.mapElement(_arg1, (_local2 + map_rows_index[0])));
_local2++;
};
}
public function reset():void{
last_stage_x = ((stage.x * SCALE) >> 0);
last_stage_y = ((stage.y * SCALE) >> 0);
}
public function removeTile(_arg1:int, _arg2:int, _arg3:int):void{
map_array_layers[_arg1][_arg3][_arg2] = 0;
}
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 rezForced():void{
var _local1:int;
var _local2:int;
var _local3:int;
_local1 = 0;
while (_local1 < layers) {
changeLayer(_local1);
_local2 = 0;
while (_local2 < height) {
_local3 = 0;
while (_local3 < width) {
if (!(((map_array[_local2][_local3] >= 0)) || ((map_array[_local2][_local3] <= 0)))){
if ((((map_array[_local2][_local3] is String)) && ((map_array[_local2][_local3].search(/F/) > -1)))){
map_array[_local2][_local3] = map_array[_local2][_local3].replace(/F/, "");
tile_maker.mapElement(_local3, _local2, true);
map_array[_local2][_local3] = 0;
};
};
_local3++;
};
_local2++;
};
_local1++;
};
}
public function setSignage(_arg1:Array):void{
this.signage = _arg1;
}
protected function popCol():void{
var _local1:int;
_local1 = 0;
while (_local1 < map_rows_index.length) {
if (map_rows[_local1][(map_cols_index.length - 1)] != null){
if (!gfx){
map_rows[_local1][(map_cols_index.length - 1)].remove();
} else {
map_rows[_local1][(map_cols_index.length - 1)].parent.removeChild(map_rows[_local1][(map_cols_index.length - 1)]);
};
};
map_rows[_local1].pop();
_local1++;
};
map_cols_index.pop();
}
protected function pushRow(_arg1:int):void{
var _local2:int;
map_rows.push([]);
map_rows_index.push(_arg1);
_local2 = 0;
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{
var _local2:int;
map_rows.unshift([]);
map_rows_index.unshift(_arg1);
_local2 = 0;
while (_local2 < map_cols_index.length) {
map_rows[0].push(tile_maker.mapElement((_local2 + map_cols_index[0]), _arg1));
_local2++;
};
}
public function addTileLayer(_arg1:Sprite){
tile_layers.push(_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];
gfx = gfx_layers[_arg1];
current_layer = _arg1;
}
protected function shiftCol():void{
var _local1:int;
_local1 = 0;
while (_local1 < map_rows_index.length) {
if (map_rows[_local1][0] != null){
if (!gfx){
map_rows[_local1][0].remove();
} else {
map_rows[_local1][0].parent.removeChild(map_rows[_local1][0]);
};
};
map_rows[_local1].shift();
_local1++;
};
map_cols_index.shift();
}
public function setLayerUpdate(_arg1:int, _arg2:Boolean):void{
update_layer[_arg1] = _arg2;
}
protected function popRow():void{
var _local1:int;
_local1 = 0;
while (_local1 < map_cols_index.length) {
if (map_rows[(map_rows.length - 1)][_local1] != null){
if (!gfx){
map_rows[(map_rows.length - 1)][_local1].remove();
} else {
map_rows[(map_rows.length - 1)][_local1].parent.removeChild(map_rows[(map_rows.length - 1)][_local1]);
};
};
_local1++;
};
map_rows.pop();
map_rows_index.pop();
}
public function addTile(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{
map_array_layers[_arg1][_arg3][_arg2] = _arg4;
}
public function rezBeginning(_arg1:int, _arg2:int):void{
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:int;
var _local10:int;
var _local11:int;
map_rows_index = [];
map_cols_index = [];
map_rows = [];
_local3 = Math.round((tiles_width * 0.5));
_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);
_local5 = ((_arg1 - _local3) - (border_x[master_layer] * 2));
_local6 = ((_arg2 - _local4) - (border_y[master_layer] * 2));
_local7 = ((_local5 + tiles_width) + (border_x[master_layer] * 4));
_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);
_local11 = 0;
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++;
};
}
protected function shiftRow():void{
var _local1:int;
_local1 = 0;
while (_local1 < map_cols_index.length) {
if (map_rows[0][_local1] != null){
if (!gfx){
map_rows[0][_local1].remove();
} else {
map_rows[0][_local1].parent.removeChild(map_rows[0][_local1]);
};
};
_local1++;
};
map_rows.shift();
map_rows_index.shift();
}
}
}//package com.nitrome.engine
Section 11
//Spring (com.nitrome.engine.Spring)
package com.nitrome.engine {
public class Spring extends Line {
public var stiffness:Number;
public var rest_len:Number;
public function Spring(_arg1:Dot, _arg2:Dot){
super(_arg1, _arg2);
stiffness = 0.5;
rest_len = len;
}
public function constrainFromA(_arg1:Number, _arg2:Number):void{
updateLine();
if (len < _arg1){
b.x = (a.x + (_arg1 * dx));
b.y = (a.y + (_arg1 * dy));
updateLine();
} else {
if (len > _arg2){
b.x = (a.x + (_arg2 * dx));
b.y = (a.y + (_arg2 * dy));
updateLine();
};
};
}
public function constrainFromB(_arg1:Number, _arg2:Number):void{
updateLine();
if (len < _arg1){
a.x = (b.x + (_arg1 * -(dx)));
a.y = (b.y + (_arg1 * -(dy)));
updateLine();
} else {
if (len > _arg2){
a.x = (b.x + (_arg2 * -(dx)));
a.y = (b.y + (_arg2 * -(dy)));
updateLine();
};
};
}
public function updateSpring():void{
var _local1:Number;
var _local2:Number;
var _local3:Dot;
vx = (b.x - a.x);
vy = (b.y - a.y);
len = Math.sqrt(((vx * vx) + (vy * vy)));
_local1 = 0;
if (len > 0){
_local1 = ((len - rest_len) / len);
};
_local2 = (_local1 * stiffness);
_local3 = new Dot((-(vx) * _local2), (-(vy) * _local2));
a.x = (a.x - _local3.x);
a.y = (a.y - _local3.y);
b.x = (b.x + _local3.x);
b.y = (b.y + _local3.y);
updateLine();
}
}
}//package com.nitrome.engine
Section 12
//Trig (com.nitrome.engine.Trig)
package com.nitrome.engine {
public class Trig {
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];
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];
}
}//package com.nitrome.engine
Section 13
//Util (com.nitrome.engine.Util)
package com.nitrome.engine {
import flash.display.*;
import flash.geom.*;
public class Util {
public static const RIGHT:Number = 2;
public static const UP_RIGHT_ROTATION:Number = 45;
public static const LEFT:Number = 8;
public static const UP_LEFT_ROTATION:Number = 315;
public static const DOWN_LEFT_ROTATION:Number = 225;
public static const UP:Number = 1;
public static const DOWN_RIGHT_ROTATION:Number = 135;
public static const RIGHT_ROTATION:Number = 90;
public static const UP_ROTATION:Number = 0;
public static const DOWN:Number = 4;
public static const LEFT_ROTATION:Number = 270;
public static const DOWN_ROTATION:Number = 180;
public static function stopClips(_arg1:DisplayObjectContainer):void{
var _local2:int;
_local2 = 0;
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 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 mcToString2(_arg1:Sprite, _arg2:Sprite):String{
var _local3:Point;
_local3 = 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 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 serialize(_arg1:Array):String{
var _local2:String;
var _local3:Number;
var _local4:int;
_local2 = "";
_local3 = 0;
_local4 = 0;
while (_local4 < _arg1.length) {
_local3++;
if (_arg1[_local4] != _arg1[(_local4 + 1)]){
_local2 = (_local2 + _arg1[_local4]);
if (_local3 > 1){
_local2 = (_local2 + (":" + _local3));
};
if (_local4 < (_arg1.length - 1)){
_local2 = (_local2 + ",");
};
_local3 = 0;
};
_local4++;
};
return (_local2);
}
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 unserialize(_arg1:String):Array{
var _local2:Array;
var _local3:Array;
var _local4:int;
var _local5:Array;
var _local6:int;
var _local7:int;
_local2 = [];
_local3 = _arg1.split(",");
_local4 = 0;
while (_local4 < _local3.length) {
if (_local3[_local4].indexOf(":") > -1){
_local5 = _local3[_local4].split(":");
_local6 = parseInt(_local5[1]);
_local7 = 0;
while (_local7 < _local6) {
_local2.push(_local5[0]);
_local7++;
};
} else {
_local2.push(_local3[_local4]);
};
_local4++;
};
return (_local2);
}
public static function wrapLerp(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
var _local6:Number;
_local6 = 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 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 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 startClips(_arg1:DisplayObjectContainer):void{
var _local2:int;
_local2 = 0;
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 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 getRotation(_arg1:int):Number{
var _local2:int;
_local2 = 0;
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 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 lerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
public static function mcToString(_arg1:Sprite):String{
return ((((("(" + _arg1.x) + " ") + _arg1.y) + ")"));
}
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)));
}
}
}//package com.nitrome.engine
Section 14
//ArmPos (com.nitrome.engine_specific.ArmPos)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class ArmPos {
static function getPos(_arg1:Dot, _arg2:String, _arg3:int=1):Dot{
if (_arg2 == "run_left"){
_arg1.x = 6;
if (_arg3 == 1){
_arg1.y = -23;
} else {
if (_arg3 == 2){
_arg1.y = -21;
} else {
if (_arg3 == 3){
_arg1.y = -22;
} else {
if (_arg3 == 4){
_arg1.y = -22;
} else {
if (_arg3 == 5){
_arg1.y = -23;
} else {
if (_arg3 == 6){
_arg1.y = -24;
} else {
if (_arg3 == 7){
_arg1.y = -23;
} else {
if (_arg3 == 8){
_arg1.y = -21;
} else {
if (_arg3 == 9){
_arg1.y = -22;
} else {
if (_arg3 == 10){
_arg1.y = -22;
} else {
if (_arg3 == 11){
_arg1.y = -23;
} else {
if (_arg3 == 12){
_arg1.y = -24;
};
};
};
};
};
};
};
};
};
};
};
};
return (_arg1);
} else {
if (_arg2 == "run_right"){
_arg1.x = -6;
if (_arg3 == 1){
_arg1.y = -23;
} else {
if (_arg3 == 2){
_arg1.y = -21;
} else {
if (_arg3 == 3){
_arg1.y = -22;
} else {
if (_arg3 == 4){
_arg1.y = -22;
} else {
if (_arg3 == 5){
_arg1.y = -23;
} else {
if (_arg3 == 6){
_arg1.y = -24;
} else {
if (_arg3 == 7){
_arg1.y = -23;
} else {
if (_arg3 == 8){
_arg1.y = -21;
} else {
if (_arg3 == 9){
_arg1.y = -22;
} else {
if (_arg3 == 10){
_arg1.y = -22;
} else {
if (_arg3 == 11){
_arg1.y = -23;
} else {
if (_arg3 == 12){
_arg1.y = -24;
};
};
};
};
};
};
};
};
};
};
};
};
return (_arg1);
} else {
if ((((_arg2 == "wait_left")) || ((_arg2 == "wait_in_left")))){
_arg1.x = 10;
_arg1.y = -15;
return (_arg1);
};
if ((((_arg2 == "wait_right")) || ((_arg2 == "wait_in_right")))){
_arg1.x = -10;
_arg1.y = -15;
return (_arg1);
};
if (_arg2 == "jump_left"){
_arg1.x = 13;
_arg1.y = -27;
return (_arg1);
};
if (_arg2 == "jump_right"){
_arg1.x = -13;
_arg1.y = -27;
return (_arg1);
};
if (_arg2 == "fall_left"){
_arg1.x = 11;
_arg1.y = -21;
return (_arg1);
};
if (_arg2 == "fall_right"){
_arg1.x = -11;
_arg1.y = -21;
return (_arg1);
};
if (_arg2 == "swing_left"){
_arg1.x = 11;
_arg1.y = -21;
return (_arg1);
};
if (_arg2 == "swing_right"){
_arg1.x = -11;
_arg1.y = -21;
return (_arg1);
};
if (_arg2 == "wall_left"){
_arg1.x = 9;
_arg1.y = -17;
return (_arg1);
};
if (_arg2 == "wall_right"){
_arg1.x = -9;
_arg1.y = -17;
return (_arg1);
};
if (_arg2 == "stealth"){
_arg1.x = 0;
_arg1.y = 0;
return (_arg1);
};
};
};
return (_arg1);
}
}
}//package com.nitrome.engine_specific
Section 15
//BitmapSprite (com.nitrome.engine_specific.BitmapSprite)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.geom.*;
public class BitmapSprite {
public var width:int;
public var total_frames:int;
public var test:BitmapData;
public var dx:int;
public var dy:int;
public var rect:Rectangle;
public var frames:Array;
public var height:int;
public var p:Point;
public var x:int;
public var y:int;
public static var p:Point;
public function BitmapSprite(_arg1:MovieClip){
var _local2:Rectangle;
var _local3:int;
super();
x = (y = 0);
frames = [];
_local2 = _arg1.getBounds(_arg1);
_local3 = 0;
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 render(_arg1:BitmapData, _arg2:int):void{
p.x = (x + dx);
p.y = (y + dy);
_arg1.copyPixels(frames[_arg2], rect, p, null, null, true);
}
public function addFrames(_arg1:Array):void{
frames = frames.concat(_arg1);
}
}
}//package com.nitrome.engine_specific
Section 16
//BladeMan (com.nitrome.engine_specific.BladeMan)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class BladeMan extends Encounter {
public var py:Number;
public var count:int;
public var cast:RayCastReport;
public var previous_state:int;
public var dot:Dot;
public var health:int;// = 3
public var platform:Boolean;
public var attack_rect:Rect;
public var scan:Line;
public var health_fraction:Number;// = 0.333
public var state:int;
public var dir:int;
public var grid_x:int;
public var grid_y:int;
public var collision_rect:Rect;
public var temp_y:Number;
public static const LEFT:int = 8;
private static const GRAVITY_Y:Number = 1.3;
public static const DEFLECT:int = 32;
private static const JUMP_ATTACK_Y:Array = [-21, -21, -21, -21, -21, -21, -21, -21, -21, -51, -81, -121, -154, -169, -170, -170, -170, -170, -170, -170, -118, -58, -21, -21, -21, -21, -21, -21, -21, -21, -21];
private static const INTO_DEFEND_DELAY:int = 8;
public static const UP:int = 1;
private static const JUMP_ATTACK_DELAY:int = 30;
public static const RUNNING:int = 1;
private static const height:int = 42;
private static const FLOOR_DEPTH:int = 6;
public static const DOWN:int = 4;
private static const ATTACK_DELAY:int = 13;
public static const WAITING:int = 4;
public static const SPEED:Number = 6;
private static const DEFLECT_DELAY:int = 3;
public static const TEST_DEPTH:int = 5;
private static const RECOVER_DELAY:int = 10;
private static const JUMP_ATTACK_DIST:int = 150;
private static const DAMPING_Y:Number = 0.99;
private static const ATTACK_DIST:int = 50;
public static const RECOVER:int = 64;
private static const width:int = 26;
public static const ATTACK:int = 8;
public static const DEFEND:int = 128;
public static const FALLING:int = 2;
public static const INTO_DEFEND:int = 254;
public static const JUMP_ATTACK:int = 16;
public static const RIGHT:int = 2;
public function BladeMan(_arg1:int, _arg2:Sprite, _arg3:Game){
health = 3;
health_fraction = 0.333;
super(_arg2, _arg3, true);
has_main = true;
has_collision = true;
this.dir = _arg1;
collision_rect = new Rect((x - (width >> 1)), (y - (height >> 1)), 26, 42);
attack_rect = new Rect();
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
py = y;
if (_arg3.stack_map[(map_y + 1)][map_x] > -1){
platform = true;
state = WAITING;
} else {
platform = false;
state = FALLING;
};
if (_arg3.player != null){
scan = new Line(new Dot(_arg2.x, _arg2.y), _arg3.player);
};
reward = new HiddenInt(70);
on_scroller = false;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
override public function intersects(_arg1:Rect):Boolean{
return (attack_rect.intersects(_arg1));
}
public function updateAnimState():void{
if (state == RUNNING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "run_right"){
(mc as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "run_left"){
(mc as MovieClip).gotoAndStop("run_left");
};
};
};
} else {
if ((((state == WAITING)) || ((state == RECOVER)))){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "wait_right"){
(mc as MovieClip).gotoAndStop("wait_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "wait_left"){
(mc as MovieClip).gotoAndStop("wait_left");
};
};
};
} else {
if (state == ATTACK){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "attack_right"){
(mc as MovieClip).gotoAndStop("attack_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "attack_left"){
(mc as MovieClip).gotoAndStop("attack_left");
};
};
};
} else {
if (state == JUMP_ATTACK){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "jump_attack_right"){
(mc as MovieClip).gotoAndStop("jump_attack_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "jump_attack_left"){
(mc as MovieClip).gotoAndStop("jump_attack_left");
};
};
};
} else {
if (state == FALLING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fall_right"){
(mc as MovieClip).gotoAndStop("fall_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "fall_left"){
(mc as MovieClip).gotoAndStop("fall_left");
};
};
};
} else {
if (state == INTO_DEFEND){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "into_defend_right"){
(mc as MovieClip).gotoAndStop("into_defend_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "into_defend_left"){
(mc as MovieClip).gotoAndStop("into_defend_left");
};
};
};
} else {
if (state == DEFEND){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "defend_right"){
(mc as MovieClip).gotoAndStop("defend_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "defend_left"){
(mc as MovieClip).gotoAndStop("defend_left");
};
};
};
} else {
if (state == DEFLECT){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "deflect_right"){
(mc as MovieClip).gotoAndStop("deflect_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "deflect_left"){
(mc as MovieClip).gotoAndStop("deflect_left");
};
};
};
};
};
};
};
};
};
};
};
}
public function kill(_arg1:Number):void{
if (!active){
return;
};
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
active = false;
g.addFX(mc.x, mc.y, g.bang_bitmap1);
if (Math.random() > 0.5){
g.addSmoke(mc.x, mc.y);
};
g.addDebris((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), ((_arg1 > 0)) ? 10 : -10, g.debris_clips[11], g.debris_clips[10], g.debris_clips[9]);
}
public function toString():String{
var _local1:String;
_local1 = "";
if (state == ATTACK){
_local1 = "ATTACK";
} else {
if (state == JUMP_ATTACK){
_local1 = "JUMP_ATTACK";
} else {
if (state == RUNNING){
_local1 = "RUNNING";
} else {
if (state == WAITING){
_local1 = "WAITING";
} else {
if (state == RECOVER){
_local1 = "RECOVER";
} else {
if (state == FALLING){
_local1 = "FALLING";
} else {
if (state == INTO_DEFEND){
_local1 = "INTO_DEFEND";
} else {
if (state == DEFEND){
_local1 = "DEFEND";
} else {
if (state == DEFLECT){
_local1 = "DEFLECT";
};
};
};
};
};
};
};
};
};
_local1 = (_local1 + ((((("(" + x) + ",") + y) + ")") + count));
return (_local1);
}
public function main():void{
on_scroller = g.scroller.contains(x, y);
if (((!(forced)) && (!(on_scroller)))){
if (dir == LEFT){
tile_id = "22";
} else {
if (dir == RIGHT){
tile_id = "23";
};
};
remove();
return;
};
if (!g.player.active){
state = WAITING;
};
if (state == WAITING){
if (scan != null){
scan.a.x = mc.x;
scan.a.y = mc.y;
scan.updateLine();
cast = RayCast.cast(scan, g.block_map, true);
if (((((((g.player.active) && (!(g.player.chameleon)))) && ((((((g.player.x < x)) && ((dir == LEFT)))) || ((((g.player.x > x)) && ((dir == RIGHT)))))))) && (RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect)))){
state = RUNNING;
};
} else {
if (g.player != null){
scan = new Line(new Dot(mc.x, mc.y), g.player);
};
};
};
if (state == RUNNING){
move();
scan.updateLine();
if (on_scroller){
cast = RayCast.cast(scan, g.block_map, true);
if (((((((g.player.active) && (!(g.player.chameleon)))) && (!((g.player.state == Player.STEALTH))))) && ((g.player.x < (x - (width >> 1)))))){
dir = LEFT;
} else {
if (((((((g.player.active) && (!(g.player.chameleon)))) && (!((g.player.state == Player.STEALTH))))) && ((g.player.x > (x + (width >> 1)))))){
dir = RIGHT;
};
};
if (((((((((g.player.active) && (!(g.player.chameleon)))) && (!((g.player.state == Player.STEALTH))))) && ((g.player.map_y == map_y)))) && (Util.proximity(x, y, g.player.x, g.player.y, ATTACK_DIST)))){
state = ATTACK;
count = 0;
} else {
if (((((((((((g.player.active) && (!(g.player.chameleon)))) && (!((g.player.state == Player.STEALTH))))) && (RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect)))) && ((g.player.map_y < map_y)))) && (Util.proximity(x, y, g.player.x, g.player.y, JUMP_ATTACK_DIST)))){
state = JUMP_ATTACK;
count = 0;
};
};
};
if (dir == RIGHT){
grid_x = ((((x + (width >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
} else {
if (dir == LEFT){
grid_x = ((((x - (width >> 1)) - TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
};
};
if (state == RUNNING){
if (grid_x == (g.scroller.width - 1)){
dir = LEFT;
};
if (grid_x == 0){
dir = RIGHT;
};
};
} else {
if (state == FALLING){
findFloor();
if (platform == false){
verletY(GRAVITY_Y, DAMPING_Y);
};
} else {
if (state == INTO_DEFEND){
count++;
if (count >= INTO_DEFEND_DELAY){
state = DEFEND;
};
} else {
if (state == DEFEND){
if (((((!((g.player.state == Player.STEALTH))) && (!(g.player.chameleon)))) && ((((((dir == RIGHT)) && ((g.player.x < x)))) || ((((dir == LEFT)) && ((g.player.x > x)))))))){
state = RUNNING;
};
} else {
if (state == DEFLECT){
count++;
if (count >= DEFLECT_DELAY){
state = previous_state;
};
} else {
if (state == ATTACK){
count++;
if (count >= ATTACK_DELAY){
state = RECOVER;
count = 0;
};
} else {
if (state == JUMP_ATTACK){
count++;
if (count >= JUMP_ATTACK_DELAY){
state = RECOVER;
count = 0;
};
} else {
if (state == RECOVER){
count++;
if (count >= RECOVER_DELAY){
state = RUNNING;
count = 0;
};
};
};
};
};
};
};
};
};
updateAnimState();
updateMC();
updateCollisionRect();
}
public function verletY(_arg1:Number, _arg2:Number):void{
temp_y = y;
y = (y + ((_arg2 * (y - py)) + _arg1));
py = temp_y;
map_y = ((y * Game.SCALE) >> 0);
}
override public function resolvePlayerCollision(_arg1:Player):void{
if ((((state == ATTACK)) || ((state == JUMP_ATTACK)))){
if (state == JUMP_ATTACK){
if ((((count == 18)) || ((count == 19)))){
if (!_arg1.collision_rect.intersectsCircle(x, (collision_rect.y + (height >> 1)), 40)){
return;
};
};
};
if (state == ATTACK){
if ((((count == 3)) || ((count == 4)))){
if (!_arg1.collision_rect.intersectsCircle(x, (y - 5), 40)){
return;
};
};
};
_arg1.hit();
};
}
public function findFloor():void{
if (g.stack_map[(map_y + 1)][map_x] > -1){
platform = true;
y = ((-1 + ((map_y + 1) * Game.scale)) - (height >> 1));
updateCollisionRect();
state = WAITING;
};
}
public function move():void{
if (dir == RIGHT){
x = (x + SPEED);
scan.a.x = (scan.a.x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
scan.a.x = (scan.a.x - SPEED);
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
collision_rect.x = (x - (width >> 1));
collision_rect.y = (y - (height >> 1));
attack_rect.x = (attack_rect.y = (attack_rect.width = (attack_rect.height = 0)));
if (state == JUMP_ATTACK){
collision_rect.y = (y + JUMP_ATTACK_Y[count]);
if (count == 9){
attack_rect.x = ((dir == LEFT)) ? (x - 46) : (x - 20);
attack_rect.y = (y - 49);
attack_rect.width = 72;
attack_rect.height = 30;
} else {
if (count == 11){
attack_rect.x = ((dir == LEFT)) ? (x - 43) : (x - 23);
attack_rect.y = (y - 111);
attack_rect.width = 72;
attack_rect.height = 30;
} else {
if ((((count == 18)) || ((count == 19)))){
attack_rect.x = ((dir == LEFT)) ? (x - 48) : (x - 46);
attack_rect.y = (y - 203);
attack_rect.width = 92;
attack_rect.height = 92;
} else {
if (count == 20){
attack_rect.x = ((dir == LEFT)) ? (x - 39) : (x + 9);
attack_rect.y = (y - 88);
attack_rect.width = 30;
attack_rect.height = 5;
} else {
if ((((count >= 22)) && ((count <= 24)))){
attack_rect.x = ((dir == LEFT)) ? (x - 39) : (x + 9);
attack_rect.y = (y + 11);
attack_rect.width = 30;
attack_rect.height = 5;
};
};
};
};
};
};
if (state == ATTACK){
if ((((count == 3)) || ((count == 4)))){
attack_rect.x = ((dir == LEFT)) ? (x - 47) : (x - 41);
attack_rect.y = (y - 65);
attack_rect.width = 92;
attack_rect.height = 92;
} else {
if ((((count >= 5)) && ((count <= 7)))){
attack_rect.x = ((dir == LEFT)) ? (x - 39) : (x + 9);
attack_rect.y = (y + 11);
attack_rect.width = 30;
attack_rect.height = 5;
};
};
};
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (!active){
return;
};
if (((!(_arg2)) && (!((((state == WAITING)) || ((state == RECOVER))))))){
if (!(((state == ATTACK)) || ((state == JUMP_ATTACK)))){
previous_state = state;
state = DEFLECT;
count = 0;
};
_arg1.ping((_arg1.px - _arg1.x));
return;
};
health--;
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
if (health <= 0){
if (!spawned){
g.addScore(reward.value);
} else {
g.addScore((reward.value / 10));
};
kill((_arg1.x - _arg1.px));
NitromeGame.sound_manager.playSound("smithdie");
} else {
NitromeGame.sound_manager.playSound("smithhit");
if (state == WAITING){
if ((((dir == RIGHT)) && ((g.player.x < x)))){
dir = LEFT;
} else {
if ((((dir == LEFT)) && ((g.player.x > x)))){
dir = RIGHT;
};
};
};
};
}
}
}//package com.nitrome.engine_specific
Section 17
//BladeManGuard (com.nitrome.engine_specific.BladeManGuard)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class BladeManGuard extends Actor {
public var detect_rect:Rect;
public var py:Number;
public var state:int;
public var dir:int;
public var count:int;
public var target:Encounter;
public var position:int;
public var grid_x:int;
public var grid_y:int;
public var previous_state:int;
public var dot:Dot;
public var min_x:Number;
public var temp_y:Number;
public var max_x:Number;
private var i:int;
public var platform:Boolean;
public var attack_rect:Rect;
public static const LEFT:int = 8;
private static const GRAVITY_Y:Number = 1.3;
public static const DEFLECT:int = 32;
private static const JUMP_ATTACK_Y:Array = [-21, -21, -21, -21, -21, -21, -21, -21, -21, -51, -81, -121, -154, -169, -170, -170, -170, -170, -170, -170, -118, -58, -21, -21, -21, -21, -21, -21, -21, -21, -21];
private static const INTO_DEFEND_DELAY:int = 8;
public static const UP:int = 1;
public static const ELECTRIC:int = 0x0200;
public static const RUNNING:int = 1;
private static const JUMP_ATTACK_DELAY:int = 30;
private static const GUARD_DIST:int = 50;
private static const FLOOR_DEPTH:int = 6;
public static const DOWN:int = 4;
private static const ATTACK_DELAY:int = 13;
public static const WAITING:int = 4;
public static const SPEED:Number = 6;
private static const DEFLECT_DELAY:int = 3;
public static const TEST_DEPTH:int = 5;
private static const RECOVER_DELAY:int = 10;
private static const JUMP_ATTACK_DIST:int = 150;
private static const DAMPING_Y:Number = 0.99;
public static const DEFEND:int = 128;
private static const height:int = 42;
public static const RECOVER:int = 64;
private static const width:int = 26;
public static const ATTACK:int = 8;
private static const ATTACK_DIST:int = 10;
public static const FALLING:int = 2;
public static const INTO_DEFEND:int = 0x0100;
public static const JUMP_ATTACK:int = 16;
public static const RIGHT:int = 2;
public static var point_man:BladeManGuard;
public static var rear_guard:Array = [];
public function BladeManGuard(_arg1:int, _arg2:Sprite, _arg3:Game){
super(_arg2, _arg3, true);
this.dir = _arg1;
collision_rect = new Rect((x - (width >> 1)), (y - (height >> 1)), 26, 42);
attack_rect = new Rect();
detect_rect = new Rect((x - 20), (y - JUMP_ATTACK_DIST), 40, JUMP_ATTACK_DIST);
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
py = y;
if (_arg3.stack_map[(map_y + 1)][map_x] > -1){
platform = true;
state = WAITING;
} else {
platform = false;
state = FALLING;
};
if (point_man == null){
point_man = this;
} else {
position = rear_guard.length;
rear_guard.push(this);
};
}
public function toString():String{
var _local1:String;
_local1 = "";
if (state == ATTACK){
_local1 = "ATTACK";
} else {
if (state == JUMP_ATTACK){
_local1 = "JUMP_ATTACK";
} else {
if (state == RUNNING){
_local1 = "RUNNING";
} else {
if (state == WAITING){
_local1 = "WAITING";
} else {
if (state == RECOVER){
_local1 = "RECOVER";
} else {
if (state == FALLING){
_local1 = "FALLING";
} else {
if (state == INTO_DEFEND){
_local1 = "INTO_DEFEND";
} else {
if (state == DEFEND){
_local1 = "DEFEND";
} else {
if (state == DEFLECT){
_local1 = "DEFLECT";
};
};
};
};
};
};
};
};
};
_local1 = (_local1 + ((((("(" + x) + ",") + y) + ")") + count));
return (_local1);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
override public function intersects(_arg1:Rect):Boolean{
if ((((state == ATTACK)) || ((state == JUMP_ATTACK)))){
return (attack_rect.intersects(_arg1));
};
return (detect_rect.intersects(_arg1));
}
public function updateAnimState():void{
if (state == RUNNING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "run_right"){
(mc as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "run_left"){
(mc as MovieClip).gotoAndStop("run_left");
};
};
};
} else {
if ((((state == WAITING)) || ((state == RECOVER)))){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "wait_right"){
(mc as MovieClip).gotoAndStop("wait_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "wait_left"){
(mc as MovieClip).gotoAndStop("wait_left");
};
};
};
} else {
if (state == ATTACK){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "attack_right"){
(mc as MovieClip).gotoAndStop("attack_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "attack_left"){
(mc as MovieClip).gotoAndStop("attack_left");
};
};
};
} else {
if (state == JUMP_ATTACK){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "jump_attack_right"){
(mc as MovieClip).gotoAndStop("jump_attack_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "jump_attack_left"){
(mc as MovieClip).gotoAndStop("jump_attack_left");
};
};
};
} else {
if (state == FALLING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fall_right"){
(mc as MovieClip).gotoAndStop("fall_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "fall_left"){
(mc as MovieClip).gotoAndStop("fall_left");
};
};
};
} else {
if (state == INTO_DEFEND){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "into_defend_right"){
(mc as MovieClip).gotoAndStop("into_defend_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "into_defend_left"){
(mc as MovieClip).gotoAndStop("into_defend_left");
};
};
};
} else {
if (state == DEFEND){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "defend_right"){
(mc as MovieClip).gotoAndStop("defend_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "defend_left"){
(mc as MovieClip).gotoAndStop("defend_left");
};
};
};
} else {
if (state == DEFLECT){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "deflect_right"){
(mc as MovieClip).gotoAndStop("deflect_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "deflect_left"){
(mc as MovieClip).gotoAndStop("deflect_left");
};
};
};
} else {
if (state == ELECTRIC){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "electric_right"){
(mc as MovieClip).gotoAndStop("electric_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "electric_left"){
(mc as MovieClip).gotoAndStop("electric_left");
};
};
};
};
};
};
};
};
};
};
};
};
}
override public function resolveBulletCollision(_arg1):void{
var _local2:Boolean;
if (!(((((state == ATTACK)) || ((state == JUMP_ATTACK)))) || ((state == DEFLECT)))){
previous_state = state;
state = DEFLECT;
count = 0;
};
_local2 = !((_arg1 is Bullet));
_arg1 = (_local2) ? _arg1.list[_arg1.hit] : _arg1;
if (_local2){
g.addDebris(_arg1.x, _arg1.y, (_arg1.px - _arg1.x), _arg1.bitmap, _arg1.bitmap, _arg1.bitmap, _arg1.bitmap);
} else {
g.addDebris(_arg1.x, _arg1.y, (_arg1.px - _arg1.x), _arg1.bitmap);
};
_arg1.active = false;
}
public function main():void{
if (((!(forced)) && (!(g.scroller.contains(x, y))))){
if (((active) && ((point_man == this)))){
point_man = null;
} else {
i = 0;
while (i < rear_guard.length) {
if (rear_guard[i] == this){
rear_guard.splice(i, 1);
break;
};
i++;
};
i = 0;
while (i < rear_guard.length) {
rear_guard[i].position = i;
i++;
};
};
remove();
return;
};
if (point_man == null){
i = 0;
while (i < rear_guard.length) {
if (rear_guard[i] == this){
rear_guard.splice(i, 1);
break;
};
i++;
};
i = 0;
while (i < rear_guard.length) {
rear_guard[i].position = i;
i++;
};
point_man = this;
};
if (state == WAITING){
if (g.player.dir == RIGHT){
if (x < min_x){
state = RUNNING;
dir = RIGHT;
} else {
if (x > max_x){
state = RUNNING;
dir = LEFT;
};
};
} else {
if (g.player.dir == LEFT){
if (x > max_x){
state = RUNNING;
dir = LEFT;
} else {
if (x < min_x){
state = RUNNING;
dir = RIGHT;
};
};
};
};
if (electrocuted){
state = INTO_DEFEND;
count = 0;
};
} else {
if (state == RUNNING){
move();
if ((((x > min_x)) && ((x < max_x)))){
state = WAITING;
if (g.player.dir == RIGHT){
dir = RIGHT;
} else {
if (g.player.dir == LEFT){
dir = LEFT;
};
};
} else {
if (x < min_x){
dir = RIGHT;
} else {
if (x > max_x){
dir = LEFT;
};
};
};
if (dir == RIGHT){
grid_x = ((((x + (width >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
} else {
if (dir == LEFT){
grid_x = ((((x - (width >> 1)) - TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
state = INTO_DEFEND;
count = 0;
};
};
};
if (electrocuted){
state = INTO_DEFEND;
count = 0;
};
} else {
if (state == FALLING){
findFloor();
if (platform == false){
verletY(GRAVITY_Y, DAMPING_Y);
};
} else {
if (state == INTO_DEFEND){
count++;
if (count >= INTO_DEFEND_DELAY){
state = DEFEND;
if (electrocuted){
state = ELECTRIC;
};
};
} else {
if (state == DEFEND){
if (dir == RIGHT){
if (x > max_x){
dir = LEFT;
state = RUNNING;
};
} else {
if (dir == LEFT){
if (x < min_x){
dir = RIGHT;
state = RUNNING;
};
};
};
} else {
if (state == DEFLECT){
count++;
if (count >= DEFLECT_DELAY){
state = previous_state;
};
} else {
if (state == ATTACK){
count++;
if (count >= ATTACK_DELAY){
state = RECOVER;
count = 0;
target = null;
};
} else {
if (state == JUMP_ATTACK){
count++;
if (count >= JUMP_ATTACK_DELAY){
state = RECOVER;
count = 0;
target = null;
};
} else {
if (state == RECOVER){
count++;
if (count >= RECOVER_DELAY){
state = RUNNING;
count = 0;
};
};
};
};
};
};
};
};
};
};
updateAnimState();
updateMC();
updateCollisionRect();
}
override public function resolveEncounterCollision(_arg1):void{
if ((((state == ATTACK)) || ((state == JUMP_ATTACK)))){
if (target != null){
return;
};
if (state == JUMP_ATTACK){
if ((((count == 18)) || ((count == 19)))){
if (!_arg1.collision_rect.intersectsCircle(x, (collision_rect.y + (height >> 1)), 40)){
return;
};
};
};
if (state == ATTACK){
if ((((count == 3)) || ((count == 4)))){
if (!_arg1.collision_rect.intersectsCircle(x, (y - 5), 40)){
return;
};
};
};
_arg1.resolveWeaponCollision(new Star(x, y, 0, 0, null, g), true);
target = _arg1;
} else {
if (_arg1.y < (y - 40)){
state = JUMP_ATTACK;
} else {
state = ATTACK;
};
count = 0;
};
}
public function move():void{
if (dir == RIGHT){
x = (x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function findFloor():void{
if (g.stack_map[(map_y + 1)][map_x] > -1){
if (((((map_x * Game.scale) > ((-1 + x) + (width >> 1)))) || (((((map_x * Game.scale) + Game.scale) - 1) < (x - (width >> 1)))))){
return;
};
if (((((y + (height >> 1)) < ((map_y + 1) * Game.scale))) || (((y + (height >> 1)) > ((((map_y + 1) * Game.scale) + FLOOR_DEPTH) + (y - py)))))){
return;
};
platform = true;
y = (((map_y + 1) * Game.scale) - (height >> 1));
updateCollisionRect();
state = WAITING;
};
}
public function verletY(_arg1:Number, _arg2:Number):void{
temp_y = y;
y = (y + ((_arg2 * (y - py)) + _arg1));
py = temp_y;
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
if (point_man == this){
if (g.player.dir == RIGHT){
min_x = ((g.player.x + GUARD_DIST) + GUARD_DIST);
max_x = (((g.player.x + GUARD_DIST) + GUARD_DIST) + (GUARD_DIST * 0.5));
} else {
if (g.player.dir == LEFT){
min_x = (((g.player.x - GUARD_DIST) - GUARD_DIST) - (GUARD_DIST * 0.5));
max_x = ((g.player.x - GUARD_DIST) - GUARD_DIST);
};
};
} else {
if (g.player.dir == RIGHT){
min_x = ((g.player.x - (GUARD_DIST * (position + 1))) - (GUARD_DIST * 0.5));
max_x = (g.player.x - (GUARD_DIST * (position + 1)));
} else {
if (g.player.dir == LEFT){
min_x = (g.player.x + (GUARD_DIST * (position + 1)));
max_x = ((g.player.x + (GUARD_DIST * (position + 1))) + (GUARD_DIST * 0.5));
};
};
};
if (min_x < 0){
min_x = 0;
max_x = GUARD_DIST;
};
if (max_x > (g.scroller.width * Game.scale)){
max_x = (g.scroller.width * Game.scale);
min_x = (max_x - GUARD_DIST);
};
collision_rect.x = (x - (width >> 1));
collision_rect.y = (y - (height >> 1));
detect_rect.x = (x - (detect_rect.width * 0.5));
detect_rect.y = (y - JUMP_ATTACK_DIST);
attack_rect.x = (attack_rect.y = (attack_rect.width = (attack_rect.height = 0)));
if (state == JUMP_ATTACK){
collision_rect.y = (y + JUMP_ATTACK_Y[count]);
if (count == 9){
attack_rect.x = ((dir == LEFT)) ? (x - 46) : (x - 20);
attack_rect.y = (y - 49);
attack_rect.width = 72;
attack_rect.height = 30;
} else {
if (count == 11){
attack_rect.x = ((dir == LEFT)) ? (x - 43) : (x - 23);
attack_rect.y = (y - 111);
attack_rect.width = 72;
attack_rect.height = 30;
} else {
if ((((count == 18)) || ((count == 19)))){
attack_rect.x = ((dir == LEFT)) ? (x - 48) : (x - 46);
attack_rect.y = (y - 203);
attack_rect.width = 92;
attack_rect.height = 92;
} else {
if (count == 20){
attack_rect.x = ((dir == LEFT)) ? (x - 39) : (x + 9);
attack_rect.y = (y - 88);
attack_rect.width = 30;
attack_rect.height = 5;
} else {
if ((((count >= 22)) && ((count <= 24)))){
attack_rect.x = ((dir == LEFT)) ? (x - 39) : (x + 9);
attack_rect.y = (y + 11);
attack_rect.width = 30;
attack_rect.height = 5;
};
};
};
};
};
};
if (state == ATTACK){
if ((((count == 3)) || ((count == 4)))){
attack_rect.x = ((dir == LEFT)) ? (x - 47) : (x - 41);
attack_rect.y = (y - 65);
attack_rect.width = 92;
attack_rect.height = 92;
} else {
if ((((count >= 5)) && ((count <= 7)))){
attack_rect.x = ((dir == LEFT)) ? (x - 39) : (x + 9);
attack_rect.y = (y + 11);
attack_rect.width = 30;
attack_rect.height = 5;
};
};
};
}
public static function clear():void{
point_man = null;
rear_guard = [];
}
}
}//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 block:Boolean;// = true
public var px:Number;
public var py:Number;
public var moving_block:Boolean;// = false
public var attachable:Boolean;
public var force_field:Boolean;// = false
public var stacked:int;
public var cutting:Boolean;// = false
public function Block(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
block = true;
force_field = false;
moving_block = false;
cutting = false;
super(_arg1, _arg2, _arg3, _arg4);
px = _arg1;
py = _arg2;
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 spawn:Boolean;// = false
public var b:Block;
public function BlockClip(_arg1:Sprite, _arg2:Game){
spawn = false;
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
//Boss (com.nitrome.engine_specific.Boss)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Boss extends FlyingBot {
public var emitter_count:int;
public var final_boom_count:int;
public var by:Number;
public var bx:Number;
public var shield:Sprite;
public var health:int;
public var health_fraction:Number;
public var emitter_delay:int;
public var total_health:int;// = 40
public var boom_count:int;
public var shielded:Boolean;
public var emitters:Array;
public var collision_rect:Rect;
public static const TOTAL_EMITTERS:int = 3;
public static const SPIDER_HITS:int = 5;
public static const ESCAPE_DELAY:int = 150;
public static const SPEED:Number = 2;
public static const DYING:int = 4;
public static const BOOM_DELAY:int = 10;
public static const WARM_UP_STEP:Number = 0.08;
public static const FINAL_BOOM_DELAY:int = 200;
public function Boss(_arg1:Sprite, _arg2:Game, _arg3:Boolean){
var _local4:int;
var _local5:Emitter;
total_health = 40;
super(Path.STOPPED, _arg1, _arg2);
this.shielded = _arg3;
selectPatrolPath();
state = MOVING;
collision_rect = new Rect((x - 16), (y - 16), 32, 32);
emitter_delay = 25;
if (this.shielded){
shield = new SmallShieldMC();
shield.blendMode = BlendMode.LIGHTEN;
_arg1.addChild(shield);
emitter_delay = 75;
};
health = total_health;
health_fraction = (1 / total_health);
reward = new HiddenInt(5000);
emitter_count = 0;
emitters = [];
_local4 = 0;
while (_local4 < TOTAL_EMITTERS) {
_local5 = createEmitter();
_local5.angle = ((_local4 * 120) % 360);
_local4++;
};
_arg2.boss_level = true;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
if (shield != null){
if (shield.alpha < 0.2){
shield.alpha = (shield.alpha + WARM_UP_STEP);
} else {
if (shield.alpha > 0.2){
shield.alpha = (shield.alpha - WARM_UP_STEP);
};
};
};
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
public function kill():void{
var _local1:int;
if (!active){
return;
};
g.addFX(mc.x, mc.y, g.bang_bitmap3);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
_local1 = 0;
while (_local1 < emitters.length) {
emitters[_local1].kill();
_local1++;
};
_local1 = 0;
while (_local1 < g.bullets.length) {
g.bullets[_local1].kill(0);
_local1++;
};
_local1 = 0;
while (_local1 < g.encounters.length) {
if (((!((g.encounters[_local1] == this))) && (g.encounters[_local1].has_collision))){
g.encounters[_local1].kill();
};
_local1++;
};
g.shake(5);
state = DYING;
boom_count = (BOOM_DELAY + (Math.random() * BOOM_DELAY));
final_boom_count = (shielded) ? FINAL_BOOM_DELAY : ESCAPE_DELAY;
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
}
override public function remove():void{
}
public function main():void{
if (state == MOVING){
move();
if ((((dir == UP)) || ((dir == DOWN)))){
if (((y - 32) * Game.SCALE) == map_y){
selectPatrolPath();
};
} else {
if ((((dir == LEFT)) || ((dir == RIGHT)))){
if (((x - 32) * Game.SCALE) == map_x){
selectPatrolPath();
};
} else {
if (dir == STOPPED){
selectPatrolPath();
};
};
};
} else {
if (state == TURNING){
state = MOVING;
} else {
if (state == DYING){
if ((((boom_count-- <= 0)) && (!(g.completed)))){
bx = ((-(Emitter.RADIUS) + mc.x) + ((Math.random() * Emitter.RADIUS) * 2));
by = ((-(Emitter.RADIUS) + mc.y) + ((Math.random() * Emitter.RADIUS) * 2));
g.addFX(bx, by, g.bang_bitmap1);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.shake(3);
boom_count = (BOOM_DELAY + (Math.random() * BOOM_DELAY));
};
final_boom_count--;
if (((shielded) && ((final_boom_count <= 0)))){
g.shake(20);
bx = ((-(Emitter.RADIUS) + mc.x) + ((Math.random() * Emitter.RADIUS) * 2));
by = ((-(Emitter.RADIUS) + mc.y) + ((Math.random() * Emitter.RADIUS) * 2));
g.addFX(bx, by, g.bang_bitmap2);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
bx = ((-(Emitter.RADIUS) + mc.x) + ((Math.random() * Emitter.RADIUS) * 2));
by = ((-(Emitter.RADIUS) + mc.y) + ((Math.random() * Emitter.RADIUS) * 2));
g.addFX(bx, by, g.bang_bitmap2);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
bx = ((-(Emitter.RADIUS) + mc.x) + ((Math.random() * Emitter.RADIUS) * 2));
by = ((-(Emitter.RADIUS) + mc.y) + ((Math.random() * Emitter.RADIUS) * 2));
g.addFX(bx, by, g.bang_bitmap2);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
bx = ((-(Emitter.RADIUS) + mc.x) + ((Math.random() * Emitter.RADIUS) * 2));
by = ((-(Emitter.RADIUS) + mc.y) + ((Math.random() * Emitter.RADIUS) * 2));
g.addFX(bx, by, g.bang_bitmap2);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
bx = ((-(Emitter.RADIUS) + mc.x) + ((Math.random() * Emitter.RADIUS) * 2));
by = ((-(Emitter.RADIUS) + mc.y) + ((Math.random() * Emitter.RADIUS) * 2));
g.addFX(bx, by, g.bang_bitmap2);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
g.addSmoke(bx, by);
NitromeGame.sound_manager.playSound("bang4");
active = false;
g.player.levelComplete();
} else {
y--;
x++;
if (final_boom_count == 0){
g.player.levelComplete();
};
};
};
};
};
updateMC();
updateCollisionRect();
}
override public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
}
public function createEmitter():Emitter{
var _local1:MovieClip;
var _local2:Emitter;
_local1 = new EmitterMC();
_local1.x = (x + (Trig.cos[270] * Emitter.RADIUS));
_local1.y = (y + (Trig.cos[270] * Emitter.RADIUS));
g.monster_holder.addChild(_local1);
_local2 = new Emitter(_local1, this, g);
emitters.push(_local2);
return (_local2);
}
public function move():void{
if (dir == UP){
y = (y - SPEED);
} else {
if (dir == RIGHT){
x = (x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
} else {
if (dir == DOWN){
y = (y + SPEED);
};
};
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
collision_rect.x = (x - 16);
collision_rect.y = (y - 16);
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (((!(active)) || ((state == DYING)))){
return;
};
if (((_arg2) || (!(shielded)))){
if (!_arg2){
health = (health - 1);
} else {
health = (health - (total_health / SPIDER_HITS));
};
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
NitromeGame.sound_manager.playSound("bossouch");
g.effect_holder.addChild(_local3);
if (health <= 0){
g.addScore(reward.value);
kill();
};
} else {
shield.alpha = 1;
_arg1.ping((_arg1.px - _arg1.x));
};
}
}
}//package com.nitrome.engine_specific
Section 21
//Bullet (com.nitrome.engine_specific.Bullet)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Bullet extends Dot {
public var active:Boolean;
public var px:Number;
public var py:Number;
public var temp_x:Number;
public var map_y:int;
public var init:Boolean;
public var map_x:int;
public var temp_y:Number;
public var g:Game;
public var frame:int;
public var bitmap:BitmapSprite;
public function Bullet(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:BitmapSprite, _arg7:Game){
super(_arg1, _arg2);
this.g = _arg7;
this.bitmap = _arg6;
active = true;
init = false;
frame = 0;
px = (_arg1 - (_arg3 * _arg5));
py = (_arg2 - (_arg4 * _arg5));
}
public function main():void{
var _local1:Block;
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Rect;
var _local6:*;
var _local7:Number;
var _local8:Number;
if (!init){
init = true;
return;
};
temp_x = x;
temp_y = y;
x = (x + (x - px));
y = (y + (y - py));
px = temp_x;
py = temp_y;
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
if (!g.scroller.contains(x, y)){
active = false;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
_local1 = g.block_map[map_y][map_x].b;
if (!_local1.contains(x, y)){
return;
};
_local2 = _local1.sideOf(x, y);
_local3 = (x - px);
_local4 = (y - py);
_local5 = new Rect(0, 0, 0, 0);
_local5.x = Math.min(x, px);
_local5.y = Math.min(y, py);
_local5.width = Math.abs((x - px));
_local5.height = Math.abs((y - py));
_local6 = _local5.intersection(_local1);
_local7 = 0;
_local8 = 0;
if (_local3 != 0){
_local7 = (Math.min(Math.abs(_local3), _local6.width) * ((_local3 > 0)) ? 1 : -1);
};
if (_local4 != 0){
_local8 = (Math.min(Math.abs(_local4), _local6.height) * ((_local4 > 0)) ? 1 : -1);
};
x = (x - _local7);
y = (y - _local8);
_local2 = _local1.sideOf(x, y);
if ((_local1.stacked & _local2)){
if ((((_local2 == Rect.UP)) || ((_local2 == Rect.DOWN)))){
if (x < (_local1.x + (_local1.width * 0.5))){
x = (_local1.x - 1);
_local2 = Rect.LEFT;
} else {
x = (_local1.x + _local1.width);
_local2 = Rect.RIGHT;
};
} else {
if ((((_local2 == Rect.RIGHT)) || ((_local2 == Rect.LEFT)))){
if (y < (_local1.y + (_local1.height * 0.5))){
y = (_local1.y - 1);
_local2 = Rect.UP;
} else {
y = (_local1.y + _local1.height);
_local2 = Rect.DOWN;
};
};
};
} else {
if (_local2 == Rect.LEFT){
x = (_local1.x - 1);
} else {
if (_local2 == Rect.UP){
y = (_local1.y - 1);
};
};
};
kill(_local2);
};
}
public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
kill(_arg1.collision_rect.sideOf(x, y));
}
public function kill(_arg1:int):void{
if (!active){
return;
};
active = false;
if (bitmap == g.bullet_bitmap){
if (_arg1 == Rect.UP){
g.addFX(x, y, g.bullet_hit_bitmap_up);
} else {
if (_arg1 == Rect.RIGHT){
g.addFX(x, y, g.bullet_hit_bitmap_right);
} else {
if (_arg1 == Rect.DOWN){
g.addFX(x, y, g.bullet_hit_bitmap_down);
} else {
if (_arg1 == Rect.LEFT){
g.addFX(x, y, g.bullet_hit_bitmap_left);
};
};
};
};
} else {
if (bitmap == g.grenade_bitmap){
g.addFX(x, y, g.bang_bitmap1);
} else {
if (bitmap == g.boss_bullet_bitmap){
g.addFX(x, y, g.boss_bullet_hit_bitmap);
};
};
};
}
public function updateMC():void{
bitmap.x = (-(g.bullet_layer_holder.x) + x);
bitmap.y = (-(g.bullet_layer_holder.y) + y);
bitmap.render(g.bullet_layer, frame);
frame = ((frame + 1) % bitmap.total_frames);
}
public function erase():void{
active = false;
}
public function intersects(_arg1:Rect):Boolean{
return (_arg1.intersectsCircle(x, y, 3));
}
}
}//package com.nitrome.engine_specific
Section 22
//BulletGroup (com.nitrome.engine_specific.BulletGroup)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class BulletGroup {
public var active:Boolean;
private var i:int;
public var hit:int;
public var list:Array;
public function BulletGroup(_arg1:Array){
active = true;
this.list = _arg1;
}
public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
list[hit].kill(_arg1.collision_rect.sideOf(list[hit].x, list[hit].y));
}
public function intersects(_arg1:Rect):Boolean{
i = 0;
while (i < list.length) {
if (list[i].intersects(_arg1)){
hit = i;
return (true);
};
i++;
};
return (false);
}
public function main():void{
i = 0;
while (i < list.length) {
list[i].main();
if (!list[i].active){
active = false;
return;
};
i++;
};
}
public function updateMC():void{
i = 0;
while (i < list.length) {
list[i].updateMC();
i++;
};
}
}
}//package com.nitrome.engine_specific
Section 23
//Cammo (com.nitrome.engine_specific.Cammo)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Cammo extends Encounter {
public var health_fraction:Number;// = 0
public var collision_rect:Rect;
public var health:int;// = 0
public function Cammo(_arg1:Sprite, _arg2:Game){
health = 0;
health_fraction = 0;
super(_arg1, _arg2, false);
collision_rect = new Rect((_arg1.x + 16), (_arg1.y + 32), 32, 32);
actor_target = false;
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (!((_arg1.chameleon_pickup) || (_arg1.chameleon))){
_arg1.chameleon_pickup = true;
(mc as MovieClip).gotoAndStop("collect");
NitromeGame.sound_manager.playSound("coins");
};
}
override public function unpause():void{
if ((mc as MovieClip).currentLabel == "idle"){
(mc as MovieClip).gotoAndStop("idle");
};
}
}
}//package com.nitrome.engine_specific
Section 24
//Coin (com.nitrome.engine_specific.Coin)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Coin extends Encounter {
public var collision_rect:Rect;
public function Coin(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2, false);
collision_rect = new Rect((_arg1.x + 15), (_arg1.y + 36), 35, 28);
actor_target = false;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
g.addScore(50);
kill();
}
public function kill():void{
var _local1:MovieClip;
if (!active){
return;
};
_local1 = new CoinFadeMC();
NitromeGame.sound_manager.playSound("coins");
NitromeGame.bonus.cash_count.value++;
_local1.x = mc.x;
_local1.y = mc.y;
g.star_holder.addChild(_local1);
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
active = false;
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
if (!active){
return;
};
g.addScore(50);
kill();
}
}
}//package com.nitrome.engine_specific
Section 25
//Coward (com.nitrome.engine_specific.Coward)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Coward extends Encounter {
public var py:Number;
public var paused:Boolean;
public var cast:RayCastReport;
public var firing_count:int;
public var a:Dot;
public var health:int;// = 0
public var platform:Boolean;
public var health_fraction:Number;// = 0
public var controlled:Boolean;
public var state:int;
public var dir:int;
public var pause_count:int;// = 0
public var grid_x:int;
public var grid_y:int;
public var stop_dir:int;
public var collision_rect:Rect;
public var temp_y:Number;
public static const RIGHT:int = 2;
private static const width:int = 26;
public static const LEFT:int = 8;
private static const GRAVITY_Y:Number = 1.3;
private static const height:int = 42;
private static const FLOOR_DEPTH:int = 6;
public static const UP:int = 1;
public static const RUNNING:int = 1;
public static const SPEED:Number = 8;
public static const DOWN:int = 4;
public static const STOPPED:int = 0;
public static const FALLING:int = 2;
public static const WAIT:int = 4;
public static const TEST_DEPTH:int = 5;
private static const DAMPING_Y:Number = 0.99;
public function Coward(_arg1:int, _arg2:Sprite, _arg3:Game){
health = 0;
health_fraction = 0;
pause_count = 0;
super(_arg2, _arg3, true);
has_main = true;
has_collision = true;
this.dir = _arg1;
collision_rect = new Rect((x - (width >> 1)), (y - (height >> 1)), 26, 42);
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
py = y;
if (_arg3.stack_map[(map_y + 1)][map_x] > Game.EMPTY){
platform = true;
state = WAIT;
} else {
platform = false;
state = FALLING;
};
controlled = ((!((_arg3.actor_map[map_y][map_x] == 0))) || (!((((_arg3.actor_map[map_y][map_x] >= 0)) || ((_arg3.actor_map[map_y][map_x] <= 0))))));
if (controlled){
paused = false;
pause_count = 0;
selectPatrolPath();
};
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateAnimState():void{
if (state == RUNNING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "run_right"){
(mc as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "run_left"){
(mc as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == STOPPED){
if (stop_dir == RIGHT){
if ((mc as MovieClip).currentLabel != "stop_right"){
(mc as MovieClip).gotoAndStop("stop_right");
};
} else {
if (stop_dir == LEFT){
if ((mc as MovieClip).currentLabel != "stop_left"){
(mc as MovieClip).gotoAndStop("stop_left");
};
};
};
};
};
};
} else {
if (state == FALLING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fall_right"){
(mc as MovieClip).gotoAndStop("fall_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "fall_left"){
(mc as MovieClip).gotoAndStop("fall_left");
};
};
};
} else {
if (state == WAIT){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "stop_right"){
(mc as MovieClip).gotoAndStop("stop_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "stop_left"){
(mc as MovieClip).gotoAndStop("stop_left");
};
};
};
};
};
};
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
public function selectPatrolPath():void{
if (pause_count == -1){
return;
};
if ((((dir == Path.STOPPED)) && ((pause_count > 0)))){
pause_count = 0;
state = WAIT;
return;
};
stop_dir = dir;
Path.getDir(dir, g.actor_map, null, map_x, map_y);
dir = Path.dir;
pause_count = (paused) ? 0 : Path.pause_delay;
if (pause_count > 0){
dir = Path.STOPPED;
paused = true;
return;
};
paused = false;
}
public function main():void{
if (state == RUNNING){
if (((((g.scroller.contains(x, y)) || ((map_x == 0)))) || ((map_x == (g.scroller.width - 1))))){
move();
};
if (controlled){
if ((((dir == RIGHT)) || ((dir == LEFT)))){
if (((x - 32) * Game.SCALE) == map_x){
selectPatrolPath();
};
} else {
if (dir == Path.STOPPED){
selectPatrolPath();
};
};
};
if ((((dir == RIGHT)) && ((map_x < (g.scroller.width - 1))))){
grid_x = ((((x + (width >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if ((((g.stack_map[grid_y][grid_x] > Game.EMPTY)) && (!((g.stack_map[grid_y][grid_x] & Rect.TEMP))))){
dir = LEFT;
};
grid_x = (((x - (width >> 1)) * Game.SCALE) >> 0);
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
state = FALLING;
platform = false;
py = y;
};
} else {
if ((((dir == LEFT)) && ((map_x > 0)))){
grid_x = ((((x - (width >> 1)) - TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if ((((g.stack_map[grid_y][grid_x] > Game.EMPTY)) && (!((g.stack_map[grid_y][grid_x] & Rect.TEMP))))){
dir = RIGHT;
};
grid_x = (((x + (width >> 1)) * Game.SCALE) >> 0);
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
state = FALLING;
platform = false;
py = y;
};
};
};
} else {
if (state == FALLING){
if (g.scroller.contains(x, y)){
move();
findFloor();
if (platform == false){
verletY(GRAVITY_Y, DAMPING_Y);
};
};
} else {
if (state == WAIT){
if (((Util.proximity(g.player.x, g.player.y, x, y, 200)) && ((Math.abs((g.player.y - y)) < 100)))){
state = RUNNING;
};
};
};
};
updateAnimState();
updateMC();
updateCollisionRect();
}
public function verletY(_arg1:Number, _arg2:Number):void{
temp_y = y;
y = (y + ((_arg2 * (y - py)) + _arg1));
py = temp_y;
map_y = ((y * Game.SCALE) >> 0);
}
public function findFloor():void{
grid_x = (x * Game.SCALE);
if (g.stack_map[(map_y + 1)][grid_x] > Game.EMPTY){
platform = true;
y = ((((map_y + 1) * Game.scale) - (height >> 1)) - 2);
updateCollisionRect();
state = RUNNING;
};
}
public function move():void{
if (dir == RIGHT){
x = (x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
};
};
map_x = (((x - 32) * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
collision_rect.x = (x - (width >> 1));
collision_rect.y = (y - (height >> 1));
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
_arg1.ping((_arg1.px - _arg1.x));
}
}
}//package com.nitrome.engine_specific
Section 26
//CowardSwitch (com.nitrome.engine_specific.CowardSwitch)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class CowardSwitch extends Encounter {
public const ACTIVE:int = 2;
public const DEATH_DELAY:int = 85;
public const INACTIVE:int = 1;
public var health_fraction:Number;// = 0.33333
public var state:int;
public var death_count:int;
public var collision_rect:Rect;
public var health:int;// = 3
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public static const UP:int = 1;
public static const RIGHT:int = 2;
public function CowardSwitch(_arg1:int, _arg2:Sprite, _arg3:Game){
health = 3;
health_fraction = 0.33333;
super(_arg2, _arg3, false);
this.id_tag = _arg1;
if (_arg3.tags[_arg1] == null){
_arg3.tags[_arg1] = true;
};
if (_arg3.tags[_arg1]){
has_collision = true;
state = ACTIVE;
collision_rect = new Rect((x + 21), (y + 18), 22, 46);
(_arg2 as MovieClip).gotoAndStop("active");
death_count = 0;
} else {
state = INACTIVE;
_arg2.visible = false;
has_collision = false;
collision_rect = new Rect();
};
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function main():void{
var _local1:int;
death_count++;
if (death_count >= DEATH_DELAY){
g.addFX((x + 66), (y + 55), g.bang_bitmap1);
g.addSmoke((x + 66), (y + 55));
g.addSmoke((x + 66), (y + 55));
g.addSmoke((x + 66), (y + 55));
g.shake(5);
has_main = false;
mc.visible = false;
collision_rect = new Rect();
state = INACTIVE;
g.tags[id_tag] = false;
_local1 = 0;
while (_local1 < g.encounters.length) {
if (((!((g.encounters[_local1] == this))) && ((g.encounters[_local1].id_tag == id_tag)))){
g.encounters[_local1].deactivate();
};
_local1++;
};
NitromeGame.bonus.enemy_count.value++;
};
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if ((((state == INACTIVE)) || (!(has_collision)))){
return;
};
health--;
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
NitromeGame.sound_manager.playSound("scientisthit");
if (health <= 0){
has_collision = false;
has_main = true;
g.addScore(1000);
(mc as MovieClip).gotoAndStop("inactive");
};
}
override public function unpause():void{
if (state == ACTIVE){
(mc as MovieClip).gotoAndStop("active");
};
}
}
}//package com.nitrome.engine_specific
Section 27
//DeadStar (com.nitrome.engine_specific.DeadStar)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.events.*;
public class DeadStar extends Sprite {
public var dead:Boolean;// = false
private static const FADE_RATE:Number = 0.2;
public function DeadStar(){
dead = false;
super();
}
public function init(_arg1:int):void{
if (_arg1 == 1){
} else {
if (_arg1 == 2){
rotation = 22.5;
} else {
if (_arg1 == 3){
rotation = 45;
} else {
if (_arg1 == 4){
rotation = 67.5;
};
};
};
};
}
public function kill():void{
dead = true;
addEventListener(Event.ENTER_FRAME, fade, false, 0, true);
}
private function fade(_arg1:Event):void{
if (alpha > 0){
alpha = (alpha - FADE_RATE);
} else {
removeEventListener(Event.ENTER_FRAME, main);
if (parent != null){
parent.removeChild(this);
};
};
}
public function main():void{
}
}
}//package com.nitrome.engine_specific
Section 28
//DebrisFX (com.nitrome.engine_specific.DebrisFX)
package com.nitrome.engine_specific {
public class DebrisFX extends FX {
public var px:Number;
public var py:Number;
public var dir:Number;
public var temp_x:Number;
public var temp_y:Number;
public function DebrisFX(_arg1:Number, _arg2:Number, _arg3:BitmapSprite, _arg4:Game){
super(_arg1, _arg2, _arg3, _arg4);
dir = ((Math.random() > 0.5)) ? 15 : -15;
px = _arg1;
py = _arg2;
}
override public function main():void{
var _local1:*;
var _local2:*;
_local1 = x;
_local2 = y;
x = (x + ((x - px) * 0.95));
y = (y + ((y - py) + 1));
px = _local1;
py = _local2;
bitmap.x = (-(g.fx_layer_holder.x) + x);
bitmap.y = (-(g.fx_layer_holder.y) + y);
bitmap.render(g.fx_layer, 0);
}
public function addVelocity(_arg1:Number, _arg2:Number):void{
px = (px - _arg1);
py = (py - _arg2);
}
}
}//package com.nitrome.engine_specific
Section 29
//ElectricBlock (com.nitrome.engine_specific.ElectricBlock)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class ElectricBlock extends EncounterBlock {
public var health_fraction:Number;// = 0
public var collision_rect:Rect;
public var health:int;// = 0
public function ElectricBlock(_arg1:Sprite, _arg2:Game){
health = 0;
health_fraction = 0;
super(_arg1, _arg2);
collision_rect = new Rect((x - 5), (y - 5), (Game.scale + 10), (Game.scale + 10));
has_collision = true;
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
}
}
}//package com.nitrome.engine_specific
Section 30
//ElectricFinish (com.nitrome.engine_specific.ElectricFinish)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class ElectricFinish extends Encounter {
public var health_fraction:Number;// = 0
public var collision_rect:Rect;
public var health:int;// = 0
public function ElectricFinish(_arg1:Sprite, _arg2:Game){
var _local3:int;
health = 0;
health_fraction = 0;
super(_arg1, _arg2, false);
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
_local3 = 0;
while (_local3 < _arg2.scroller.height) {
if ((map_y - _local3) <= 0){
break;
};
if (_arg2.stack_map[(map_y - _local3)][map_x] > Game.EMPTY){
_local3--;
break;
};
_local3++;
};
collision_rect = new Rect((_arg1.x + 30), ((map_y - _local3) * Game.scale), 4, (Game.scale + (_local3 * Game.scale)));
actor_target = false;
has_main = false;
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (!active){
return;
};
g.player.levelComplete(this);
NitromeGame.sound_manager.playSound("electric");
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
g.mouse_pressed = false;
}
}
}//package com.nitrome.engine_specific
Section 31
//Emitter (com.nitrome.engine_specific.Emitter)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Emitter extends Encounter {
public var cycle_count:int;
public var dir:int;
public var health_fraction:Number;// = 0
public var firing_count:int;
public var collision_rect:Rect;
public var health:int;// = 0
public var angle:int;
public var boss:Boss;
public static const BURST_DELAY:int = 30;
public static const WIDTH:Number = 16;
public static const HEIGHT:Number = 16;
public static const BULLET_SPEED:int = 4;
public static const CYCLE_DELAY:int = 60;
public static const RADIUS:Number = 72;
public static const FIRING_DELAY:int = 2;
public function Emitter(_arg1:MovieClip, _arg2:Boss, _arg3:Game){
health = 0;
health_fraction = 0;
super(_arg1, _arg3, true);
this.boss = _arg2;
has_main = true;
has_collision = true;
angle = 270;
dir = 2;
firing_count = 0;
cycle_count = 0;
angle = 0;
collision_rect = new Rect((x - (WIDTH * 0.5)), (y - (HEIGHT * 0.5)), WIDTH, HEIGHT);
_arg1.alpha = 0;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if (mc.alpha < 1){
return (false);
};
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
if (mc.alpha < 1){
mc.alpha = (mc.alpha + 0.01);
};
}
override public function intersects(_arg1:Rect):Boolean{
if (mc.alpha < 1){
return (false);
};
return (collision_rect.intersects(_arg1));
}
public function main():void{
angle = (angle + dir);
if (angle > 359){
angle = (angle - 360);
} else {
if (angle < 0){
angle = (angle + 360);
};
};
x = (boss.x + (RADIUS * Trig.cos[angle]));
y = (boss.y + (RADIUS * Trig.sin[angle]));
updateCollisionRect();
cycle_count++;
if ((((((mc.alpha >= 1)) && (boss.active))) && ((cycle_count < BURST_DELAY)))){
fire();
};
if (cycle_count >= CYCLE_DELAY){
cycle_count = 0;
} else {
if (!boss.active){
kill();
};
};
updateMC();
}
public function fire():void{
if (firing_count++ >= FIRING_DELAY){
g.addBullet(x, y, Trig.cos[angle], Trig.sin[angle], BULLET_SPEED, g.boss_bullet_bitmap);
firing_count = 0;
};
}
override public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
}
public function kill():void{
if (!active){
return;
};
active = false;
g.addFX(mc.x, mc.y, g.bang_bitmap1);
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (mc.alpha < 1){
return;
};
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == Rect.UP){
} else {
if (_local4 == Rect.RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == Rect.DOWN){
_local3.rotation = 180;
} else {
if (_local4 == Rect.LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
g.addFX(mc.x, mc.y, g.bang_bitmap1);
mc.alpha = 0;
}
public function updateCollisionRect():void{
collision_rect.x = (x - (WIDTH * 0.5));
collision_rect.y = (y - (HEIGHT * 0.5));
}
}
}//package com.nitrome.engine_specific
Section 32
//EncounterBlock (com.nitrome.engine_specific.EncounterBlock)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class EncounterBlock extends Encounter {
public var b:Block;
public var spawn:Boolean;// = false
public function EncounterBlock(_arg1:Sprite, _arg2:Game){
spawn = false;
super(_arg1, _arg2, false);
block = true;
free = false;
has_collision = false;
actor_target = false;
}
override 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 33
//FlyingBot (com.nitrome.engine_specific.FlyingBot)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class FlyingBot extends Encounter {
public var state:int;
public var controlled:Boolean;
public var dir_mc:MovieClip;
public var dir:int;
public var pause_count:int;// = 0
public var r:Number;
public var paused:Boolean;
public var nodes:Array;
public var old_dir:int;
public var command:int;
public var best_h:int;
public var best_s:int;
public var best_node:Node;
public var angle:int;// = 0
public static const TURNING:int = 2;
public static const LEFT:int = 8;
public static const DOWN:int = 4;
public static const STOPPED:int = 0;
public static const MOVING:int = 1;
public static const PAUSE_UNIT:int = 25;
public static const UP:int = 1;
public static const RIGHT:int = 2;
public function FlyingBot(_arg1:int, _arg2:Sprite, _arg3:Game){
angle = 0;
pause_count = 0;
super(_arg2, _arg3, true);
has_main = true;
has_collision = true;
this.dir = _arg1;
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
nodes = [];
nodes[0] = new Node();
nodes[1] = new Node();
nodes[2] = new Node();
nodes[3] = new Node();
controlled = ((!((command == 0))) || (!((((_arg3.path_map[map_y][map_x] >= 0)) || ((_arg3.path_map[map_y][map_x] <= 0))))));
paused = false;
}
public function selectPatrolPath():void{
if (pause_count == -1){
return;
};
if ((((dir == STOPPED)) && ((pause_count > 0)))){
pause_count--;
return;
};
Path.getDir(dir, g.path_map, g.stack_map, map_x, map_y);
if (dir != STOPPED){
old_dir = dir;
};
dir = Path.dir;
pause_count = (paused) ? 0 : Path.pause_delay;
if (pause_count > 0){
dir = Path.STOPPED;
paused = true;
return;
};
paused = false;
if (dir != old_dir){
state = TURNING;
if (old_dir == UP){
if (dir == RIGHT){
angle = 0;
if (dir_mc != null){
dir_mc.rotation = (dir_mc.rotation + 1);
};
} else {
if (dir == LEFT){
angle = 180;
} else {
angle = 90;
if (dir_mc != null){
dir_mc.rotation = (dir_mc.rotation + 1);
};
};
};
} else {
if (old_dir == RIGHT){
if (dir == DOWN){
angle = 90;
} else {
if (dir == UP){
angle = -90;
} else {
angle = 180;
};
};
} else {
if (old_dir == DOWN){
if (dir == RIGHT){
angle = 0;
if (dir_mc != null){
dir_mc.rotation = (dir_mc.rotation + 1);
};
} else {
if (dir == LEFT){
angle = 180;
} else {
angle = -90;
};
};
} else {
if (old_dir == LEFT){
if (dir == DOWN){
angle = 90;
if (dir_mc != null){
dir_mc.rotation = (dir_mc.rotation + 1);
};
} else {
if (dir == UP){
angle = -90;
} else {
angle = 0;
if (dir_mc != null){
dir_mc.rotation = (dir_mc.rotation + 1);
};
};
};
};
};
};
};
};
}
public function selectSeekPath():void{
var _local1:int;
best_h = int.MAX_VALUE;
best_s = 0;
nodes[3].x = map_x;
nodes[3].y = (map_y - 1);
nodes[3].walkable = (((map_y > 0)) && ((g.stack_map[nodes[3].y][nodes[3].x] == Game.EMPTY)));
nodes[3].setH(g.player.map_x, g.player.map_y);
nodes[3].s = (nodes[3].walkable) ? g.scent_map[nodes[3].y][nodes[3].x] : -1;
nodes[0].x = (map_x + 1);
nodes[0].y = map_y;
nodes[0].walkable = (((map_x < (g.scroller.width - 1))) && ((g.stack_map[nodes[0].y][nodes[0].x] == Game.EMPTY)));
nodes[0].setH(g.player.map_x, g.player.map_y);
nodes[0].s = (nodes[0].walkable) ? g.scent_map[nodes[0].y][nodes[0].x] : -1;
nodes[1].x = map_x;
nodes[1].y = (map_y + 1);
nodes[1].walkable = (((map_y < (g.scroller.height - 1))) && ((g.stack_map[nodes[1].y][nodes[1].x] == Game.EMPTY)));
nodes[1].setH(g.player.map_x, g.player.map_y);
nodes[1].s = (nodes[1].walkable) ? g.scent_map[nodes[1].y][nodes[1].x] : -1;
nodes[2].x = (map_x - 1);
nodes[2].y = map_y;
nodes[2].walkable = (((map_x > 0)) && ((g.stack_map[nodes[2].y][nodes[2].x] == Game.EMPTY)));
nodes[2].setH(g.player.map_x, g.player.map_y);
nodes[2].s = (nodes[2].walkable) ? g.scent_map[nodes[2].y][nodes[2].x] : -1;
_local1 = 0;
while (_local1 < nodes.length) {
if (nodes[_local1].walkable){
if (nodes[_local1].s > best_s){
best_s = nodes[_local1].s;
best_node = nodes[_local1];
} else {
if ((((best_s == 0)) && ((nodes[_local1].h < best_h)))){
best_h = nodes[_local1].h;
best_node = nodes[_local1];
};
};
};
_local1++;
};
if (best_node.y < map_y){
if (dir != UP){
dir = UP;
angle = -90;
state = TURNING;
};
} else {
if (best_node.x > map_x){
if (dir != RIGHT){
dir = RIGHT;
angle = 0;
state = TURNING;
};
} else {
if (best_node.y > map_y){
if (dir != DOWN){
dir = DOWN;
angle = 90;
state = TURNING;
};
} else {
if (best_node.x < map_x){
if (dir != LEFT){
dir = LEFT;
angle = 180;
state = TURNING;
};
};
};
};
};
}
}
}//package com.nitrome.engine_specific
Section 34
//FlyingGun (com.nitrome.engine_specific.FlyingGun)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class FlyingGun extends FlyingBot {
public var wobble_alpha:Number;
public var sparks:MovieClip;
public var cast:RayCastReport;
public var gun:MovieClip;
public var strength:Number;
public var firing_count:int;
public var beam_width:int;
public var previous_state:int;
public var alpha:Array;
public var shield:Sprite;
private var i:int;
public var health:int;// = 5
public var scan:Line;
public var health_fraction:Number;// = 0.2
public var fast:Boolean;
public var killer:Boolean;
public var wobble:int;
public var bullet_list:Array;
public var wobble_step:int;
public var on_screen:Boolean;
public var collision_rect:Rect;
public var cols:Array;
public static const FIRING:int = 4;
public static const KILL_WOBBLE_ALPHA:Number = 0.25;
public static const SCAN_WOBBLE_ALPHA:Number = 0.05;
public static const GRENADE_SPEED:int = 8;
public static const FIRING_DELAY:int = 11;
public static const KILL_WOBBLE_STEP:int = 12;
private static const KILL_ALPHA:Array = [0.45, 0.25, 0.15];
public static const FIRING_CHARGE_DELAY:int = 6;
public static const TURN_SPEED:Number = 3;
public static const SPEED:Number = 4;
public static const BULLET_SPEED:int = 16;
public static const KILLER_WIDTH:int = 5;
public static const SCAN_WIDTH:int = 2;
private static const KILL_COLS:Array = [16304135, 0xF89200, 14116875];
private static const SCAN_COLS:Array = [311058, 1152348, 947785];
public static const WARM_UP_STEP:Number = 0.08;
private static const SCAN_ALPHA:Array = [0.35, 0.25, 0.15];
public static const SCAN_WOBBLE_STEP:int = 6;
public static var point:Point = new Point();
public function FlyingGun(_arg1:int, _arg2:MovieClip, _arg3:Game, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:Boolean=false){
var _local7:Dot;
health = 5;
health_fraction = 0.2;
super(_arg1, _arg2, _arg3);
firing_count = 0;
strength = 0;
init_x = map_x;
init_y = map_y;
this.killer = _arg6;
gun = (_arg6) ? new LaserGunMC() : new GunMC();
cols = (_arg6) ? KILL_COLS : SCAN_COLS;
alpha = (_arg6) ? KILL_ALPHA : SCAN_ALPHA;
beam_width = (_arg6) ? KILLER_WIDTH : SCAN_WIDTH;
wobble_step = (_arg6) ? KILL_WOBBLE_STEP : SCAN_WOBBLE_STEP;
wobble_alpha = (_arg6) ? KILL_WOBBLE_ALPHA : SCAN_WOBBLE_ALPHA;
this.fast = _arg5;
dir_mc = gun;
if (_arg6){
sparks = new LaserGunSparksMC();
_arg3.effect_holder.addChild(sparks);
sparks.visible = false;
};
if (_arg3.alert_state != Game.ACTIVE){
this.aggressive = _arg4;
} else {
this.aggressive = true;
};
if (((!(this.aggressive)) || ((_arg3.player == null)))){
selectPatrolPath();
} else {
selectSeekPath();
};
if (this.aggressive){
(_arg2 as MovieClip).gotoAndStop("aggressive");
};
state = MOVING;
collision_rect = new Rect((x - 16), (y - 16), 32, 50);
if ((((this.dir == DOWN)) || ((((this.dir == STOPPED)) && ((old_dir == DOWN)))))){
gun.rotation = (angle = 90);
} else {
if ((((this.dir == RIGHT)) || ((((this.dir == STOPPED)) && ((old_dir == RIGHT)))))){
gun.rotation = (angle = 0);
} else {
if ((((this.dir == UP)) || ((((this.dir == STOPPED)) && ((old_dir == UP)))))){
gun.rotation = (angle = -90);
} else {
if ((((this.dir == LEFT)) || ((((this.dir == STOPPED)) && ((old_dir == LEFT)))))){
gun.rotation = (angle = 180);
};
};
};
};
_local7 = new Dot((_arg2.x + 0.5), (_arg2.y + 0.5));
if (_arg1 == DOWN){
scan = new Line(_local7, new Dot(_local7.x, (_local7.y + (Game.WIDTH + Game.HEIGHT))));
} else {
if (_arg1 == RIGHT){
scan = new Line(_local7, new Dot((_local7.x + (Game.WIDTH + Game.HEIGHT)), _local7.y));
} else {
if (_arg1 == UP){
scan = new Line(_local7, new Dot(_local7.x, (_local7.y - (Game.WIDTH + Game.HEIGHT))));
} else {
if (_arg1 == LEFT){
scan = new Line(_local7, new Dot((_local7.x - (Game.WIDTH + Game.HEIGHT)), _local7.y));
};
};
};
};
rotate();
_arg2.addChildAt(gun, 0);
shield = new SmallShieldMC();
shield.blendMode = BlendMode.LIGHTEN;
_arg2.addChild(shield);
reward = new HiddenInt(70);
on_scroller = false;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
wobble = ((wobble + wobble_step) % 360);
i = 1;
while (i < 4) {
g.scan_holder.graphics.lineStyle((i * beam_width), cols[(i - 1)], (strength * (alpha[(i - 1)] + Math.abs((Trig.sin[wobble] * wobble_alpha)))));
g.scan_holder.graphics.moveTo(mc.x, mc.y);
if (cast != null){
g.scan_holder.graphics.lineTo(cast.ax, cast.ay);
} else {
g.scan_holder.graphics.lineTo(scan.b.x, scan.b.y);
};
i++;
};
if (state != FIRING){
if (shield.alpha < 0.2){
shield.alpha = (shield.alpha + WARM_UP_STEP);
} else {
if (shield.alpha > 0.2){
shield.alpha = (shield.alpha - WARM_UP_STEP);
};
};
} else {
if (shield.alpha > 0){
shield.alpha = (shield.alpha - (WARM_UP_STEP * 2));
};
};
if (killer){
if (cast != null){
sparks.x = cast.ax;
sparks.y = cast.ay;
if (cast.access_side == UP){
sparks.rotation = 0;
} else {
if (cast.access_side == RIGHT){
sparks.rotation = 90;
} else {
if (cast.access_side == DOWN){
sparks.rotation = 180;
} else {
if (cast.access_side == LEFT){
sparks.rotation = -90;
};
};
};
};
if (!Util.proximity(x, y, cast.ax, cast.ay, 70)){
sparks.visible = true;
sparks.alpha = strength;
} else {
sparks.visible = false;
};
} else {
sparks.visible = false;
};
};
}
override public function intersects(_arg1:Rect):Boolean{
if (((!(on_screen)) || (((!(killer)) && ((((g.player.state == Player.STEALTH)) || (g.player.chameleon))))))){
return (false);
};
return (RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect));
}
public function fire():void{
if (firing_count == 0){
if (fast){
bullet_list = [new Bullet((x + (scan.dx * 50)), (y + (scan.dy * 50)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (58 * scan.dx)), (y + (58 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (66 * scan.dx)), (y + (66 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (74 * scan.dx)), (y + (74 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g)];
g.addBulletGroup(bullet_list);
NitromeGame.sound_manager.playSound("machinegun");
gun.gotoAndStop("fire_bullet");
point = Util.localToLocal(point, gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, scan.dy, -(scan.dx), g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap);
} else {
g.addBullet((x + (scan.dx * 50)), (y + (scan.dy * 50)), scan.dx, scan.dy, GRENADE_SPEED, g.grenade_bitmap);
gun.gotoAndStop("fire_grenade");
NitromeGame.sound_manager.playSound("grenade");
point = Util.localToLocal(point, gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, scan.dy, -(scan.dx), g.grenade_cartridge_bitmap);
};
};
if (++firing_count >= FIRING_DELAY){
firing_count = 0;
gun.gotoAndStop("idle");
if ((((cast == null)) || (((!((cast == null))) && (!(RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect))))))){
state = previous_state;
};
};
}
public function rotate():void{
scan.dx = Trig.cos[((gun.rotation + 360) % 360)];
scan.dy = Trig.sin[((gun.rotation + 360) % 360)];
scan.vx = (scan.dx * scan.len);
scan.vy = (scan.dy * scan.len);
scan.b.x = (scan.a.x + scan.vx);
scan.b.y = (scan.a.y + scan.vy);
scan.rx = -(scan.dy);
scan.ry = scan.dx;
scan.lx = scan.dy;
scan.ly = -(scan.dx);
}
override public function alert():void{
aggressive = true;
(mc as MovieClip).gotoAndStop("aggressive");
}
public function kill(_arg1:Number):void{
if (!active){
return;
};
active = false;
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
g.addFX(mc.x, mc.y, g.bang_bitmap2);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.shake(3);
if (((killer) && (!((sparks.parent == null))))){
sparks.parent.removeChild(sparks);
};
g.addDebris((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), ((_arg1 > 0)) ? 10 : -10, g.debris_clips[2], g.debris_clips[3], (killer) ? g.debris_clips[5] : g.debris_clips[4]);
}
override public function remove():void{
if (((killer) && (!((sparks.parent == null))))){
sparks.parent.removeChild(sparks);
};
super.remove();
}
public function main():void{
on_scroller = g.scroller.contains(x, y);
if (((!(forced)) && (!(on_scroller)))){
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
if (!aggressive){
if (dir == UP){
if (killer){
tile_id = "33";
} else {
if (fast){
tile_id = "32";
} else {
tile_id = "32";
};
};
} else {
if (dir == RIGHT){
if (killer){
tile_id = "36";
} else {
if (fast){
tile_id = "35";
} else {
tile_id = "34";
};
};
} else {
if (dir == DOWN){
if (killer){
tile_id = "39";
} else {
if (fast){
tile_id = "38";
} else {
tile_id = "37";
};
};
} else {
if (dir == LEFT){
if (killer){
tile_id = "42";
} else {
if (fast){
tile_id = "41";
} else {
tile_id = "40";
};
};
};
};
};
};
} else {
if (killer){
tile_id = "45";
} else {
if (fast){
tile_id = "44";
} else {
tile_id = "43";
};
};
};
remove();
return;
};
if (state == MOVING){
move();
if ((((dir == UP)) || ((dir == DOWN)))){
if (((y - 32) * Game.SCALE) == map_y){
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
} else {
if ((((dir == LEFT)) || ((dir == RIGHT)))){
if (((x - 32) * Game.SCALE) == map_x){
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
} else {
if (dir == STOPPED){
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
};
};
} else {
if (state == TURNING){
if (Math.abs((angle - gun.rotation)) <= TURN_SPEED){
gun.rotation = angle;
state = MOVING;
} else {
r = gun.rotation;
r = (r + ((Math.abs((angle - r)))>180) ? ((r)<angle) ? 360 : -(360) : 0);
r = (r + (((angle - r) > 0)) ? TURN_SPEED : -(TURN_SPEED));
gun.rotation = r;
};
rotate();
} else {
if (state == FIRING){
fire();
};
};
};
on_screen = Util.onScreen(x, y, g, 100);
cast = RayCast.cast(scan, g.block_map, true);
if ((((strength < 1)) && (on_screen))){
strength = (strength + WARM_UP_STEP);
} else {
if (strength > 0){
strength = (strength - (WARM_UP_STEP * 2));
};
};
updateMC();
updateCollisionRect();
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (((((!((state == FIRING))) && ((strength >= 1)))) && (!(Util.proximity(_arg1.x, _arg1.y, x, y, 50))))){
if (!killer){
previous_state = state;
state = FIRING;
} else {
g.player.hit();
};
};
}
public function move():void{
if (dir == UP){
y = (y - SPEED);
scan.a.y = (scan.a.y - SPEED);
scan.b.y = (scan.b.y - SPEED);
} else {
if (dir == RIGHT){
x = (x + SPEED);
scan.a.x = (scan.a.x + SPEED);
scan.b.x = (scan.b.x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
scan.a.x = (scan.a.x - SPEED);
scan.b.x = (scan.b.x - SPEED);
} else {
if (dir == DOWN){
y = (y + SPEED);
scan.a.y = (scan.a.y + SPEED);
scan.b.y = (scan.b.y + SPEED);
};
};
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
collision_rect.x = (x - 16);
collision_rect.y = (y - 16);
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (!active){
return;
};
if (((_arg2) || ((state == FIRING)))){
health--;
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
if ((((health <= 0)) || (_arg2))){
if (!spawned){
g.addScore(reward.value);
} else {
g.addScore((reward.value / 10));
};
kill((_arg1.x - _arg1.px));
};
} else {
shield.alpha = 1;
_arg1.ping((_arg1.px - _arg1.x));
};
}
override public function unpause():void{
gun.gotoAndStop("idle");
if (aggressive){
(mc as MovieClip).gotoAndStop("aggressive");
} else {
(mc as MovieClip).gotoAndStop("idle");
};
}
}
}//package com.nitrome.engine_specific
Section 35
//ForceField (com.nitrome.engine_specific.ForceField)
package com.nitrome.engine_specific {
import flash.display.*;
public class ForceField extends EncounterBlock {
public var state:int;
public static const INACTIVE:int = 1;
public static const ACTIVE:int = 2;
public function ForceField(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2);
force_field = true;
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
if (_arg2.alert_state != Game.ACTIVE){
state = INACTIVE;
block = false;
_arg2.stack_map[map_y][map_x] = Game.EMPTY;
(_arg1 as MovieClip).gotoAndStop("inactive");
} else {
if (_arg2.alert_state == Game.ACTIVE){
state = ACTIVE;
block = true;
(_arg1 as MovieClip).gotoAndStop("active");
};
};
}
override public function unpause():void{
if (state == INACTIVE){
(mc as MovieClip).gotoAndStop("inactive");
} else {
if (state == ACTIVE){
(mc as MovieClip).gotoAndStop("active");
};
};
}
override public function alert():void{
state = ACTIVE;
g.stack_map[map_y][map_x] = b.stacked;
(mc as MovieClip).gotoAndPlay("activate");
block = true;
}
override public function standdown():void{
state = INACTIVE;
g.stack_map[map_y][map_x] = Game.EMPTY;
(mc as MovieClip).gotoAndPlay("deactivate");
block = false;
}
}
}//package com.nitrome.engine_specific
Section 36
//ForceFieldDoor (com.nitrome.engine_specific.ForceFieldDoor)
package com.nitrome.engine_specific {
import flash.display.*;
public class ForceFieldDoor extends EncounterBlock {
public var state:int;
public static const INACTIVE:int = 1;
public static const ACTIVE:int = 2;
public function ForceFieldDoor(_arg1:int, _arg2:Sprite, _arg3:Game){
super(_arg2, _arg3);
this.id_tag = _arg1;
force_field = true;
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
if (_arg3.tags[_arg1] == null){
_arg3.tags[_arg1] = true;
};
if (!_arg3.tags[_arg1]){
state = INACTIVE;
block = false;
_arg3.stack_map[map_y][map_x] = Game.EMPTY;
(_arg2 as MovieClip).gotoAndStop("inactive");
} else {
state = ACTIVE;
block = true;
(_arg2 as MovieClip).gotoAndStop("active");
};
}
override public function unpause():void{
if (state == INACTIVE){
(mc as MovieClip).gotoAndStop("inactive");
} else {
if (state == ACTIVE){
(mc as MovieClip).gotoAndStop("active");
};
};
}
override public function alert():void{
}
public function deactivate():void{
state = INACTIVE;
g.stack_map[map_y][map_x] = Game.EMPTY;
(mc as MovieClip).gotoAndPlay("deactivate");
block = false;
}
override public function standdown():void{
}
}
}//package com.nitrome.engine_specific
Section 37
//FX (com.nitrome.engine_specific.FX)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class FX extends Dot {
public var active:Boolean;
public var frame:int;
public var g:Game;
public var bitmap:BitmapSprite;
public function FX(_arg1:Number, _arg2:Number, _arg3:BitmapSprite, _arg4:Game, _arg5:int=0){
super(_arg1, _arg2);
this.bitmap = _arg3;
this.g = _arg4;
frame = (0 - _arg5);
active = true;
}
public function main():void{
if (frame > -1){
bitmap.x = (-(g.fx_layer_holder.x) + x);
bitmap.y = (-(g.fx_layer_holder.y) + y);
bitmap.render(g.fx_layer, frame++);
if (frame == bitmap.total_frames){
active = false;
};
} else {
frame++;
};
}
}
}//package com.nitrome.engine_specific
Section 38
//GameFinish (com.nitrome.engine_specific.GameFinish)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class GameFinish extends Encounter {
public var health_fraction:Number;// = 0
public var collision_rect:Rect;
public var health:int;// = 0
public function GameFinish(_arg1:Sprite, _arg2:Game){
var _local3:int;
health = 0;
health_fraction = 0;
super(_arg1, _arg2, false);
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
_local3 = 0;
while (_local3 < _arg2.scroller.height) {
if ((map_y - _local3) <= 0){
break;
};
if (_arg2.stack_map[(map_y - _local3)][map_x] > Game.EMPTY){
_local3--;
break;
};
_local3++;
};
collision_rect = new Rect((_arg1.x + 30), ((map_y - _local3) * Game.scale), 4, (Game.scale + (_local3 * Game.scale)));
actor_target = false;
has_main = false;
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (!active){
return;
};
g.player.levelComplete();
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
g.mouse_pressed = false;
}
}
}//package com.nitrome.engine_specific
Section 39
//GeneratorSwitch (com.nitrome.engine_specific.GeneratorSwitch)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class GeneratorSwitch extends EncounterBlock {
public const ACTIVE:int = 2;
public const INACTIVE:int = 1;
public var health_fraction:Number;// = 0
public var state:int;
public var collision_rect:Rect;
public var health:int;// = 0
public function GeneratorSwitch(_arg1:int, _arg2:Sprite, _arg3:Game){
health = 0;
health_fraction = 0;
super(_arg2, _arg3);
this.id_tag = _arg1;
if (_arg3.tags[_arg1] == null){
_arg3.tags[_arg1] = true;
};
if (_arg3.tags[_arg1]){
has_collision = true;
collision_rect = new Rect(x, y, Game.scale, Game.scale);
(_arg2 as MovieClip).gotoAndStop("active");
} else {
has_collision = false;
collision_rect = new Rect();
(_arg2 as MovieClip).gotoAndStop("inactive");
};
}
override public function unpause():void{
if (state == INACTIVE){
(mc as MovieClip).gotoAndStop("inactive");
} else {
if (state == ACTIVE){
(mc as MovieClip).gotoAndStop("active");
};
};
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:int;
if (state == INACTIVE){
return;
};
state = INACTIVE;
collision_rect = new Rect();
g.tags[id_tag] = false;
_local3 = 0;
while (_local3 < g.encounters.length) {
if (((!((g.encounters[_local3] == this))) && ((g.encounters[_local3].id_tag == id_tag)))){
g.encounters[_local3].deactivate();
};
_local3++;
};
g.addFX((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)), g.bang_bitmap1);
g.addSmoke((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)));
g.addSmoke((b.x + (b.width * 0.5)), (b.y + (b.height * 0.5)));
(mc as MovieClip).gotoAndStop("inactive");
NitromeGame.sound_manager.playSound("powerdown");
}
}
}//package com.nitrome.engine_specific
Section 40
//GunBlock (com.nitrome.engine_specific.GunBlock)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class GunBlock extends EncounterBlock {
public var bullet_init:Array;
public var bullet_list:Array;
public var firing_count:int;
public var mc_actual:Object;
public var fast:Boolean;
public var angle:int;
public static const GRENADE_SPEED:int = 8;
public static const BULLET_SPEED:int = 16;
public static const FIRING_DELAY:int = 50;
public static var point:Point = new Point();
public function GunBlock(_arg1:MovieClip, _arg2:Game){
super(_arg1, _arg2);
has_main = true;
firing_count = (_arg2.frame_count % FIRING_DELAY);
fast = false;
}
override public function unpause():void{
(mc as MovieClip).gun.gotoAndStop("idle");
}
public function main():void{
if (firing_count == 0){
if (fast){
bullet_list = [new Bullet(x, y, Trig.cos[angle], Trig.sin[angle], BULLET_SPEED, g.bullet_bitmap, g), new Bullet(bullet_init[1].x, bullet_init[1].y, Trig.cos[angle], Trig.sin[angle], BULLET_SPEED, g.bullet_bitmap, g), new Bullet(bullet_init[2].x, bullet_init[2].y, Trig.cos[angle], Trig.sin[angle], BULLET_SPEED, g.bullet_bitmap, g), new Bullet(bullet_init[3].x, bullet_init[3].y, Trig.cos[angle], Trig.sin[angle], BULLET_SPEED, g.bullet_bitmap, g)];
g.addBulletGroup(bullet_list);
(mc as MovieClip).gun.gotoAndStop("fire_bullet");
NitromeGame.sound_manager.playSound("machinegun");
point = Util.localToLocal(point, (mc as MovieClip).gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, Trig.sin[angle], -(Trig.cos[angle]), g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap);
} else {
g.addBullet(x, y, Trig.cos[angle], Trig.sin[angle], GRENADE_SPEED, g.grenade_bitmap);
(mc as MovieClip).gun.gotoAndStop("fire_grenade");
NitromeGame.sound_manager.playSound("grenade");
point = Util.localToLocal(point, (mc as MovieClip).gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, Trig.sin[angle], -(Trig.cos[angle]), g.grenade_cartridge_bitmap);
};
};
if (++firing_count >= FIRING_DELAY){
firing_count = 0;
(mc as MovieClip).gun.gotoAndStop("idle");
};
}
public function setDirection(_arg1:int):void{
if (_arg1 == Rect.UP){
x = (b.x + (Game.scale >> 1));
y = (b.y - 15);
angle = 270;
} else {
if (_arg1 == Rect.RIGHT){
x = ((b.x + Game.scale) + 14);
y = (b.y + (Game.scale >> 1));
angle = 0;
} else {
if (_arg1 == Rect.DOWN){
x = (b.x + (Game.scale >> 1));
y = ((b.y + Game.scale) + 14);
angle = 90;
} else {
if (_arg1 == Rect.LEFT){
x = (b.x - 15);
y = (b.y + (Game.scale >> 1));
angle = 180;
};
};
};
};
bullet_init = [new Dot(x, y), new Dot((x + (8 * Trig.cos[angle])), (y + (8 * Trig.sin[angle]))), new Dot((x + (16 * Trig.cos[angle])), (y + (16 * Trig.sin[angle]))), new Dot((x + (24 * Trig.cos[angle])), (y + (24 * Trig.sin[angle])))];
this.fast = fast;
}
}
}//package com.nitrome.engine_specific
Section 41
//GunMan (com.nitrome.engine_specific.GunMan)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class GunMan extends Encounter {
public var py:Number;
public var paused:Boolean;
public var cast:RayCastReport;
public var firing_count:int;
public var a:Dot;
public var health:int;// = 2
public var fast:Boolean;
public var platform:Boolean;
public var scan:Line;
public var health_fraction:Number;// = 0.5
public var controlled:Boolean;
public var state:int;
public var dir:int;
public var pause_count:int;// = 0
public var neutered:Boolean;
public var grid_x:int;
public var grid_y:int;
public var stop_dir:int;
public var collision_rect:Rect;
public var temp_y:Number;
public static const RIGHT_ID:String = "378";
private static const width:int = 26;
public static const LEFT:int = 8;
private static const height:int = 42;
private static const DAMPING_Y:Number = 0.99;
private static const GRAVITY_Y:Number = 1.3;
public static const LEFT_ID:String = "377";
public static const GRENADE_SPEED:int = 8;
public static const FIRING_DELAY:int = 30;
public static const UP:int = 1;
public static const RUNNING:int = 1;
public static const SPEED:Number = 2;
private static const FLOOR_DEPTH:int = 6;
public static const DOWN:int = 4;
public static const BULLET_SPEED:int = 16;
public static const STOPPED:int = 0;
public static const FALLING:int = 2;
public static const FIRING:int = 4;
public static const RIGHT:int = 2;
public static const TEST_DEPTH:int = 5;
public static var point:Point = new Point();
public function GunMan(_arg1:int, _arg2:Sprite, _arg3:Game, _arg4:Boolean=false, _arg5:Boolean=false){
health = 2;
health_fraction = 0.5;
pause_count = 0;
super(_arg2, _arg3, true);
has_main = true;
has_collision = true;
this.dir = _arg1;
this.neutered = _arg5;
collision_rect = new Rect((x - (width >> 1)), (y - (height >> 1)), 26, 42);
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
py = y;
if (_arg3.stack_map[(map_y + 1)][map_x] > Game.EMPTY){
platform = true;
state = RUNNING;
} else {
platform = false;
state = FALLING;
};
a = new Dot((_arg2.x + 0.5), (_arg2.y + 0.5));
reward = new HiddenInt(40);
(_arg2 as MovieClip).gun.gotoAndStop("idle");
controlled = ((!((_arg3.path_map[map_y][map_x] == 0))) || (!((((_arg3.path_map[map_y][map_x] >= 0)) || ((_arg3.path_map[map_y][map_x] <= 0))))));
if (controlled){
paused = false;
pause_count = 0;
selectPatrolPath();
};
firing_count = 0;
this.fast = _arg4;
on_scroller = false;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
override public function intersects(_arg1:Rect):Boolean{
if (((((((((!(on_scroller)) || (neutered))) || ((state == FALLING)))) || ((g.player.state == Player.STEALTH)))) || (g.player.chameleon))){
return (false);
};
if (((((!((scan == null))) && ((cast == null)))) && ((((((((dir == LEFT)) && ((g.player.x < x)))) || ((((dir == RIGHT)) && ((g.player.x > x)))))) || ((((dir == STOPPED)) && ((((((stop_dir == LEFT)) && ((g.player.x < x)))) || ((((stop_dir == RIGHT)) && ((g.player.x > x)))))))))))){
return (RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect));
};
return (false);
}
public function updateAnimState():void{
var _local1:*;
if (state == RUNNING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "run_right"){
(mc as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "run_left"){
(mc as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == STOPPED){
if (stop_dir == RIGHT){
if ((mc as MovieClip).currentLabel != "stop_right"){
(mc as MovieClip).gotoAndStop("stop_right");
};
} else {
if (stop_dir == LEFT){
if ((mc as MovieClip).currentLabel != "stop_left"){
(mc as MovieClip).gotoAndStop("stop_left");
};
};
};
};
};
};
if ((mc as MovieClip).gun.currentLabel != "idle"){
(mc as MovieClip).gun.gotoAndStop("idle");
};
} else {
if (state == FALLING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fall_right"){
(mc as MovieClip).gotoAndStop("fall_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "fall_left"){
(mc as MovieClip).gotoAndStop("fall_left");
};
};
};
if ((mc as MovieClip).gun.currentLabel != "idle"){
(mc as MovieClip).gun.gotoAndStop("idle");
};
} else {
if (state == FIRING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fire_right"){
(mc as MovieClip).gotoAndStop("fire_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "fire_left"){
(mc as MovieClip).gotoAndStop("fire_left");
};
} else {
if (dir == STOPPED){
if (stop_dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fire_right"){
(mc as MovieClip).gotoAndStop("fire_right");
};
} else {
if (stop_dir == LEFT){
if ((mc as MovieClip).currentLabel != "fire_left"){
(mc as MovieClip).gotoAndStop("fire_left");
};
};
};
};
};
};
if (fast){
if ((mc as MovieClip).gun.currentLabel != "fire_bullet"){
(mc as MovieClip).gun.gotoAndStop("fire_bullet");
};
} else {
if ((mc as MovieClip).gun.currentLabel != "fire_grenade"){
(mc as MovieClip).gun.gotoAndStop("fire_grenade");
};
};
_local1 = (scan.atan2() * Game.ONE80DIVIDEDBYPI);
};
};
};
if ((((state == RUNNING)) && ((dir == STOPPED)))){
(mc as MovieClip).gun.alpha = 0;
(mc as MovieClip).arm.alpha = 0;
} else {
(mc as MovieClip).gun.alpha = 1;
(mc as MovieClip).arm.alpha = 1;
};
if (state == FIRING){
if ((((dir == RIGHT)) || ((((dir == STOPPED)) && ((stop_dir == RIGHT)))))){
(mc as MovieClip).gun.rotation = _local1;
(mc as MovieClip).arm.rotation = _local1;
(mc as MovieClip).gun.scaleX = -1;
(mc as MovieClip).arm.scaleX = -1;
} else {
if ((((dir == LEFT)) || ((((dir == STOPPED)) && ((stop_dir == LEFT)))))){
(mc as MovieClip).gun.rotation = (_local1 + 180);
(mc as MovieClip).arm.rotation = (_local1 + 180);
(mc as MovieClip).gun.scaleX = 1;
(mc as MovieClip).arm.scaleX = 1;
};
};
} else {
if ((((dir == RIGHT)) || ((((dir == STOPPED)) && ((stop_dir == RIGHT)))))){
(mc as MovieClip).gun.rotation = 0;
(mc as MovieClip).arm.rotation = 0;
(mc as MovieClip).gun.scaleX = -1;
(mc as MovieClip).arm.scaleX = -1;
} else {
if ((((dir == LEFT)) || ((((dir == STOPPED)) && ((stop_dir == LEFT)))))){
(mc as MovieClip).gun.rotation = 0;
(mc as MovieClip).arm.rotation = 0;
(mc as MovieClip).gun.scaleX = 1;
(mc as MovieClip).arm.scaleX = 1;
};
};
};
}
public function fire():void{
var _local1:Array;
if (firing_count == 0){
if (!fast){
g.addBullet((x + (27 * scan.dx)), (y + (27 * scan.dy)), scan.dx, scan.dy, GRENADE_SPEED, g.grenade_bitmap);
point = Util.localToLocal(point, (mc as MovieClip).gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, scan.dy, -(scan.dx), g.grenade_cartridge_bitmap);
NitromeGame.sound_manager.playSound("grenade");
} else {
_local1 = [new Bullet((x + (27 * scan.dx)), (y + (27 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (35 * scan.dx)), (y + (35 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (43 * scan.dx)), (y + (43 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (51 * scan.dx)), (y + (51 * scan.dy)), scan.dx, scan.dy, BULLET_SPEED, g.bullet_bitmap, g)];
g.addBulletGroup(_local1);
point = Util.localToLocal(point, (mc as MovieClip).gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, scan.dy, -(scan.dx), g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap);
NitromeGame.sound_manager.playSound("machinegun");
};
};
firing_count++;
if (firing_count >= FIRING_DELAY){
firing_count = 0;
if ((((cast == null)) || (((!((cast == null))) && (!(RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect))))))){
state = RUNNING;
};
};
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
public function kill(_arg1:Number=0):void{
if (!active){
return;
};
active = false;
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
g.addFX(mc.x, mc.y, g.bang_bitmap1);
if (Math.random() > 0.5){
g.addSmoke(mc.x, mc.y);
};
g.addDebris((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), ((_arg1 > 0)) ? 10 : -10, g.debris_clips[12], g.debris_clips[13], g.debris_clips[14]);
}
public function selectPatrolPath():void{
if (pause_count == -1){
return;
};
if ((((dir == Path.STOPPED)) && ((pause_count > 0)))){
pause_count--;
return;
};
stop_dir = dir;
Path.getDir(dir, g.path_map, null, map_x, map_y);
dir = Path.dir;
pause_count = (paused) ? 0 : Path.pause_delay;
if (pause_count > 0){
dir = Path.STOPPED;
paused = true;
return;
};
paused = false;
}
public function main():void{
on_scroller = g.scroller.contains(x, y);
if (((!(forced)) && (!(on_scroller)))){
if (dir == LEFT){
if (neutered){
tile_id = "155";
} else {
if (fast){
tile_id = "58";
} else {
tile_id = "57";
};
};
} else {
if (dir == RIGHT){
if (neutered){
tile_id = "156";
} else {
if (fast){
tile_id = "60";
} else {
tile_id = "59";
};
};
};
};
remove();
return;
};
if (state == RUNNING){
if (scan == null){
if (g.player != null){
scan = new Line(a, g.player);
if (on_scroller){
cast = RayCast.cast(scan, g.block_map, true);
};
};
} else {
scan.updateLine();
if (on_scroller){
cast = RayCast.cast(scan, g.block_map, true);
};
};
move();
if (controlled){
if ((((dir == RIGHT)) || ((dir == LEFT)))){
if (((x - 32) * Game.SCALE) == map_x){
selectPatrolPath();
};
} else {
if (dir == Path.STOPPED){
selectPatrolPath();
};
};
};
if (dir == RIGHT){
grid_x = ((((x + (width >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
dir = LEFT;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
dir = LEFT;
};
if (grid_x == (g.scroller.width - 1)){
dir = LEFT;
};
} else {
if (dir == LEFT){
grid_x = ((((x - (width >> 1)) - TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
dir = RIGHT;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
dir = RIGHT;
};
if (grid_x == 0){
dir = RIGHT;
};
};
};
} else {
if (state == FALLING){
findFloor();
if (platform == false){
verletY(GRAVITY_Y, DAMPING_Y);
};
} else {
if (state == FIRING){
if ((((dir == RIGHT)) && ((g.player.x < x)))){
dir = LEFT;
} else {
if ((((dir == LEFT)) && ((g.player.x > x)))){
dir = RIGHT;
};
};
scan.updateLine();
if (on_scroller){
cast = RayCast.cast(scan, g.block_map, true);
};
fire();
};
};
};
updateAnimState();
updateMC();
updateCollisionRect();
}
public function verletY(_arg1:Number, _arg2:Number):void{
temp_y = y;
y = (y + ((_arg2 * (y - py)) + _arg1));
py = temp_y;
a.y = y;
map_y = ((y * Game.SCALE) >> 0);
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (((!(Util.proximity(_arg1.x, _arg1.y, x, y, 30))) && (!((state == FIRING))))){
state = FIRING;
};
}
public function findFloor():void{
if (g.stack_map[(map_y + 1)][map_x] > Game.EMPTY){
platform = true;
y = ((-3 + ((map_y + 1) * Game.scale)) - (height >> 1));
a.y = y;
updateCollisionRect();
state = RUNNING;
};
}
public function move():void{
if (dir == RIGHT){
x = (x + SPEED);
a.x = x;
} else {
if (dir == LEFT){
x = (x - SPEED);
a.x = x;
};
};
map_x = (((x - 32) * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
collision_rect.x = (x - (width >> 1));
collision_rect.y = (y - (height >> 1));
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (!active){
return;
};
health--;
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
if ((((health <= 0)) || (_arg2))){
if (!spawned){
g.addScore(reward.value);
} else {
g.addScore((reward.value / 10));
};
kill((_arg1.x - _arg1.px));
NitromeGame.sound_manager.playSound("smithdie");
} else {
NitromeGame.sound_manager.playSound("smithhit");
if (state == RUNNING){
if ((((dir == RIGHT)) && ((g.player.x < x)))){
dir = LEFT;
state = FIRING;
} else {
if ((((dir == LEFT)) && ((g.player.x > x)))){
dir = RIGHT;
state = FIRING;
} else {
if (dir == STOPPED){
if ((((stop_dir == RIGHT)) && ((g.player.x < x)))){
stop_dir = LEFT;
state = FIRING;
} else {
if ((((stop_dir == LEFT)) && ((g.player.x > x)))){
stop_dir = RIGHT;
state = FIRING;
};
};
};
};
};
};
};
}
}
}//package com.nitrome.engine_specific
Section 42
//HackedSpider (com.nitrome.engine_specific.HackedSpider)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import com.nitrome.game.*;
import flash.ui.*;
public class HackedSpider extends Actor {
public var px:Number;
public var scroll_y:Number;
public var scroll_x:Number;
public var light:MovieClip;
public var py:Number;
public var dir:int;
public var body:MovieClip;
public var speed:Number;
public var temp_x:Number;
public var keys_pressed:int;
public var temp_y:Number;
public var map_rect:Rect;
public static const ACC:Number = 2.5;
public static const WIDTH:Number = 28;
public static const SPEED:Number = 10;
public static const DAMPING:Number = 0.59;
public static const HEIGHT:Number = 28;
public function HackedSpider(_arg1:MovieClip, _arg2:Game){
super(_arg1, _arg2, true);
_arg2.spider = this;
collision_rect = new Rect((x - 14), (y - 14), 28, 28);
px = x;
py = y;
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
all_collision = true;
body = (_arg1 as MovieClip).body;
light = (_arg1 as MovieClip).light;
scroll_x = (_arg2.player.scroll_rect.width * 0.5);
scroll_y = (_arg2.player.scroll_rect.height * 0.5);
map_rect = _arg2.scroller.map_rect;
if (((!((_arg2.current_event == null))) && ((_arg2.current_event.name == "message")))){
_arg2.current_event.active = false;
_arg2.msg_key_ready = false;
};
speed = 0;
dir = 0;
}
public function checkKeys():void{
keys_pressed = 0;
if (((((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))) && (!(((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D))))))){
px = (px + speed);
keys_pressed = (keys_pressed | Rect.LEFT);
};
if (((((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))) && (!(((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A))))))){
px = (px - speed);
keys_pressed = (keys_pressed | Rect.RIGHT);
};
if (((((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))) && (!(((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S))))))){
py = (py + speed);
keys_pressed = (keys_pressed | Rect.UP);
};
if (((((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S)))) && (!(((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W))))))){
py = (py - speed);
keys_pressed = (keys_pressed | Rect.DOWN);
};
if (Key.isDown(Keyboard.SPACE)){
kill();
};
if ((((keys_pressed == 0)) && ((speed > 0)))){
speed = (speed - ACC);
} else {
if (speed < SPEED){
speed = (speed + ACC);
};
};
if (keys_pressed != 0){
dir = keys_pressed;
};
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
if (keys_pressed){
body.play();
light.play();
if ((((keys_pressed & Rect.UP)) && ((keys_pressed & Rect.RIGHT)))){
mc.rotation = 315;
} else {
if ((((keys_pressed & Rect.DOWN)) && ((keys_pressed & Rect.RIGHT)))){
mc.rotation = 45;
} else {
if ((((keys_pressed & Rect.DOWN)) && ((keys_pressed & Rect.LEFT)))){
mc.rotation = 135;
} else {
if ((((keys_pressed & Rect.UP)) && ((keys_pressed & Rect.LEFT)))){
mc.rotation = 215;
} else {
if ((keys_pressed & Rect.UP)){
mc.rotation = 270;
} else {
if ((keys_pressed & Rect.RIGHT)){
mc.rotation = 0;
} else {
if ((keys_pressed & Rect.DOWN)){
mc.rotation = 90;
} else {
if ((keys_pressed & Rect.LEFT)){
mc.rotation = 180;
};
};
};
};
};
};
};
};
} else {
body.stop();
light.stop();
};
if ((((dir & Rect.UP)) && ((scroll_y < g.player.scroll_rect.height)))){
scroll_y = (scroll_y + 2);
};
if ((((dir & Rect.RIGHT)) && ((scroll_x > 0)))){
scroll_x = (scroll_x - 2);
};
if ((((dir & Rect.DOWN)) && ((scroll_y > 0)))){
scroll_y = (scroll_y - 2);
};
if ((((dir & Rect.LEFT)) && ((scroll_x < g.player.scroll_rect.width)))){
scroll_x = (scroll_x + 2);
};
if ((((keys_pressed & Rect.UP)) && ((scroll_y < g.player.scroll_rect.height)))){
scroll_y = (scroll_y + 6);
};
if ((((keys_pressed & Rect.RIGHT)) && ((scroll_x > 0)))){
scroll_x = (scroll_x - 6);
};
if ((((keys_pressed & Rect.DOWN)) && ((scroll_y > 0)))){
scroll_y = (scroll_y - 6);
};
if ((((keys_pressed & Rect.LEFT)) && ((scroll_x < g.player.scroll_rect.width)))){
scroll_x = (scroll_x + 6);
};
g.player.scroll_target_x = ((-(mc.x) + g.player.scroll_rect.x) + scroll_x);
g.player.scroll_target_y = ((-(mc.y) + g.player.scroll_rect.y) + scroll_y);
g.player.scrolling();
g.scroller.clipManager();
}
public function main():void{
temp_x = x;
temp_y = y;
x = (x + (DAMPING * (x - px)));
y = (y + (DAMPING * (y - py)));
px = temp_x;
py = temp_y;
if ((map_rect.x + (map_rect.width - 1)) < (x + (WIDTH >> 1))){
x = (px = ((-((WIDTH >> 1)) + map_rect.x) + (map_rect.width - 1)));
};
if ((map_rect.y + (map_rect.height - 1)) < y){
kill();
return;
};
if (map_rect.x >= (x - (WIDTH >> 1))){
x = (px = (map_rect.x + (WIDTH >> 1)));
};
if (map_rect.y >= (y - (HEIGHT >> 1))){
y = (py = (map_rect.y + (HEIGHT >> 1)));
};
if (collision_rect.intersects(g.player.collision_rect)){
g.player.hit();
kill();
return;
};
map_x = (collision_rect.x * Game.SCALE);
map_y = (collision_rect.y * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if ((g.stack_map[map_y][map_x] & Rect.TEMP)){
if (((!((g.block_map[map_y][map_x] is GeneratorSwitch))) && (g.block_map[map_y][map_x].b.contains(collision_rect.x, collision_rect.y)))){
kill();
return;
};
} else {
kill();
return;
};
};
map_x = ((collision_rect.x + WIDTH) * Game.SCALE);
map_y = (collision_rect.y * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if ((g.stack_map[map_y][map_x] & Rect.TEMP)){
if (((!((g.block_map[map_y][map_x] is GeneratorSwitch))) && (g.block_map[map_y][map_x].b.contains((collision_rect.x + WIDTH), collision_rect.y)))){
kill();
return;
};
} else {
kill();
return;
};
};
map_x = ((collision_rect.x + WIDTH) * Game.SCALE);
map_y = ((collision_rect.y + HEIGHT) * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if ((g.stack_map[map_y][map_x] & Rect.TEMP)){
if (((!((g.block_map[map_y][map_x] is GeneratorSwitch))) && (g.block_map[map_y][map_x].b.contains((collision_rect.x + WIDTH), (collision_rect.y + HEIGHT))))){
kill();
return;
};
} else {
kill();
return;
};
};
map_x = (collision_rect.x * Game.SCALE);
map_y = ((collision_rect.y + HEIGHT) * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if ((g.stack_map[map_y][map_x] & Rect.TEMP)){
if (((!((g.block_map[map_y][map_x] is GeneratorSwitch))) && (g.block_map[map_y][map_x].b.contains(collision_rect.x, (collision_rect.y + HEIGHT))))){
kill();
return;
};
} else {
kill();
return;
};
};
checkKeys();
updateMC();
updateCollisionRect();
}
override public function resolveBulletCollision(_arg1):void{
kill();
}
override public function resolveEncounterCollision(_arg1):void{
if (!active){
return;
};
if ((((_arg1 is Laser)) && ((_arg1.state == Laser.INACTIVE)))){
return;
};
if ((((_arg1 is TripWire)) && (!(_arg1.killer)))){
return;
};
if ((_arg1 is Cammo)){
return;
};
if ((_arg1 is Lift)){
return;
};
_arg1.resolveWeaponCollision(new Star(x, y, (x - px), (y - py), null, g), true);
if ((((_arg1 is Health)) || ((_arg1 is Coin)))){
return;
};
kill();
}
public function kill():void{
if (!active){
return;
};
active = false;
g.addFX(mc.x, mc.y, g.bang_bitmap1);
g.player.key_lock = true;
if (!g.player.on_scroller){
g.spider_death_count = Game.SPIDER_DEATH_DELAY;
} else {
g.spider = null;
};
}
public function updateCollisionRect():void{
collision_rect.x = (x - 16);
collision_rect.y = (y - 16);
}
}
}//package com.nitrome.engine_specific
Section 43
//Health (com.nitrome.engine_specific.Health)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Health extends Encounter {
public var collision_rect:Rect;
public function Health(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2, false);
collision_rect = new Rect((_arg1.x + 11), (_arg1.y + 34), 38, 30);
actor_target = false;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (_arg1.health.value < 3){
_arg1.health.value++;
NitromeGame.timeline.health_panel.gotoAndStop(("_" + g.player.health.value));
};
kill();
}
public function kill():void{
var _local1:MovieClip;
if (!active){
return;
};
_local1 = new HealthFadeMC();
NitromeGame.sound_manager.playSound("oishii");
_local1.x = mc.x;
_local1.y = mc.y;
g.star_holder.addChild(_local1);
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
active = false;
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
if (!active){
return;
};
if (g.player.health.value < 3){
g.player.health.value++;
NitromeGame.timeline.health_panel.gotoAndStop(("_" + g.player.health.value));
};
kill();
}
}
}//package com.nitrome.engine_specific
Section 44
//Laser (com.nitrome.engine_specific.Laser)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Laser extends Encounter {
public var health_fraction:Number;// = 0
public var state:int;
public var count:int;
public var timed:Boolean;
public var collision_rect:Rect;
public var health:int;// = 0
public static const DELAY:int = 50;
public static const ACTIVE:int = 2;
public static const INACTIVE:int = 1;
public static const WARM_UP_STEP:Number = 0.2;
public function Laser(_arg1:Boolean, _arg2:Rect, _arg3:MovieClip, _arg4:Game){
health = 0;
health_fraction = 0;
super(_arg3, _arg4, false);
collision_rect = _arg2;
this.timed = _arg1;
state = ACTIVE;
actor_target = false;
if (_arg1){
has_main = true;
count = (_arg4.frame_count % 100);
if (count >= 50){
count = (count % 50);
state = INACTIVE;
_arg3.alpha = 0;
};
};
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return ((((state == ACTIVE)) && (collision_rect.contains(_arg1, _arg2))));
}
override public function intersects(_arg1:Rect):Boolean{
if (state == ACTIVE){
return (collision_rect.intersects(_arg1));
};
return (false);
}
public function main():void{
count++;
if (state == ACTIVE){
if (count >= DELAY){
state = INACTIVE;
count = 0;
};
if (mc.alpha < 1){
mc.alpha = (mc.alpha + WARM_UP_STEP);
};
} else {
if (state == INACTIVE){
if (count >= DELAY){
state = ACTIVE;
count = 0;
};
if (mc.alpha > 0){
mc.alpha = (mc.alpha - WARM_UP_STEP);
};
};
};
}
override public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
}
override public function debug():void{
collision_rect.draw(g.debug);
}
}
}//package com.nitrome.engine_specific
Section 45
//Lift (com.nitrome.engine_specific.Lift)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Lift extends Encounter {
public var health_fraction:Number;// = 0
public var collision_rect:Rect;
public var health:int;// = 0
public function Lift(_arg1:Sprite, _arg2:Game){
health = 0;
health_fraction = 0;
super(_arg1, _arg2, false);
collision_rect = new Rect((_arg1.x + 30), (_arg1.y + 32), 2, 32);
actor_target = false;
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (((!(active)) || (!((g.player.state == Player.RUNNING))))){
return;
};
g.player.levelComplete(this);
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
g.mouse_pressed = false;
}
public function exitAnim():void{
(mc as MovieClip).gotoAndStop("exit");
}
override public function unpause():void{
(mc as MovieClip).gotoAndStop(1);
}
}
}//package com.nitrome.engine_specific
Section 46
//LiveStar (com.nitrome.engine_specific.LiveStar)
package com.nitrome.engine_specific {
import flash.display.*;
public class LiveStar extends DeadStar {
public var star:MovieClip;
}
}//package com.nitrome.engine_specific
Section 47
//Morph (com.nitrome.engine_specific.Morph)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.events.*;
public class Morph extends Sprite {
private const SPEED:int = 2;
private const NUM:int = 18;
private var initial_width:Number;
private var i:int;
private var gfx:Graphics;
private var half_height:Number;
private var step:Number;
private var pairs:Array;
public function Morph(){
var _local1:Shape;
super();
_local1 = new Shape();
gfx = _local1.graphics;
addChild(_local1);
addEventListener(Event.ENTER_FRAME, main, false, 0, true);
half_height = (height / 2);
initial_width = width;
step = (width / NUM);
pairs = [];
i = 0;
while (i < NUM) {
pairs.push(createPair(i));
i = (i + 2);
};
}
private function get randomy():Number{
return (((half_height * 0.1) + (Math.random() * half_height)));
}
public function main(_arg1:Event):void{
gfx.clear();
gfx.beginFill(0);
gfx.moveTo(0, (half_height - pairs[0].a.y));
i = 0;
while (i < pairs.length) {
gfx.lineTo(pairs[i].a.x, (half_height - pairs[i].a.y));
gfx.lineTo(pairs[i].b.x, (half_height - pairs[i].b.y));
i++;
};
gfx.lineTo(width, (half_height - pairs[(pairs.length - 1)].b.y));
gfx.lineTo(width, (half_height + pairs[(pairs.length - 1)].b.y));
i = (pairs.length - 1);
while (i > -1) {
gfx.lineTo(pairs[i].b.x, (half_height + pairs[i].b.y));
gfx.lineTo(pairs[i].a.x, (half_height + pairs[i].a.y));
i--;
};
gfx.lineTo(0, (half_height + pairs[0].a.y));
gfx.lineTo(0, (half_height - pairs[0].a.y));
i = 0;
while (i < pairs.length) {
pairs[i].a.x = (pairs[i].a.x + SPEED);
pairs[i].b.x = (pairs[i].b.x + SPEED);
i++;
};
if (pairs[0].a.x > 0){
pairs.unshift(createPair(-2));
};
if (pairs[(pairs.length - 1)].a.x > initial_width){
pairs.pop();
};
}
private function createPair(_arg1:int):Object{
var _local2:Number;
var _local3:int;
var _local4:Number;
var _local5:Object;
_local2 = randomy;
_local3 = (Math.random() * 8);
if (_local3){
_local4 = (step / (_local3 + 1));
};
_local5 = {a:new Dot((_arg1 * step), _local2), b:new Dot(((_arg1 + 1) * step), _local2), ribs:_local3, rib_len:_local4};
return (_local5);
}
}
}//package com.nitrome.engine_specific
Section 48
//MovingBlock (com.nitrome.engine_specific.MovingBlock)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class MovingBlock extends FlyingBot {
public var init:Boolean;// = false
public var SPEED:Number;// = 2
public var remove_call:Boolean;// = false
public var rez_buddies:Array;
public var b:Block;
public var crush_count:int;
public var evil:Boolean;// = false
public var buddy:Boolean;// = false
public var base_tile_id:int;
public static const CRUSH:int = 4;
public static const CRUSH_DELAY:int = 16;
public function MovingBlock(_arg1:int, _arg2:Sprite, _arg3:Game){
SPEED = 2;
buddy = false;
remove_call = false;
init = false;
evil = false;
super(_arg1, _arg2, _arg3);
block = true;
state = MOVING;
rez_buddies = [];
crush_count = 0;
}
public function updateMC():void{
mc.x = (b.x >> 0);
mc.y = (b.y >> 0);
}
public function updateBlock():void{
b.x = x;
b.y = y;
}
override public function alert():void{
if (evil){
aggressive = true;
(mc as MovieClip).gotoAndStop("aggressive");
};
}
override 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)));
};
};
}
override public function remove():void{
var _local1:int;
var _local2:*;
has_main = false;
if (rez_buddies.length > 0){
_local1 = 0;
while (_local1 < rez_buddies.length) {
rez_buddies[_local1].remove_call = true;
_local1++;
};
};
if (active){
active = false;
if (!buddy){
if (aggressive){
tile_id = "129";
} else {
_local2 = 0;
while ((dir = (dir >> 1))) {
_local2++;
};
tile_id = ("" + (base_tile_id + _local2));
};
g.scroller.map_array_layers[layer][map_y][map_x] = tile_id;
} else {
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
};
g.stack_map[map_y][map_x] = Game.EMPTY;
};
}
public function main():void{
b.px = x;
b.py = y;
if (!init){
g.block_map[map_y][map_x] = this;
g.stack_map[map_y][map_x] = Rect.TEMP;
init = true;
};
if (state == MOVING){
move();
if ((((dir == UP)) || ((dir == DOWN)))){
if ((y * Game.SCALE) == map_y){
if ((((dir == UP)) && ((g.block_map[(map_y + 1)][map_x] == this)))){
g.block_map[(map_y + 1)][map_x] = null;
g.stack_map[(map_y + 1)][map_x] = Game.EMPTY;
} else {
if ((((dir == DOWN)) && ((g.block_map[(map_y - 1)][map_x] == this)))){
g.block_map[(map_y - 1)][map_x] = null;
g.stack_map[(map_y - 1)][map_x] = Game.EMPTY;
};
};
if (((((((!(buddy)) && (!(forced)))) && (!(g.scroller.contains(x, y))))) || (((buddy) && (remove_call))))){
remove();
return;
};
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
} else {
if ((((dir == LEFT)) || ((dir == RIGHT)))){
if ((x * Game.SCALE) == map_x){
if ((((dir == LEFT)) && ((g.block_map[map_y][(map_x + 1)] == this)))){
g.block_map[map_y][(map_x + 1)] = null;
g.stack_map[map_y][(map_x + 1)] = Game.EMPTY;
} else {
if ((((dir == RIGHT)) && ((g.block_map[map_y][(map_x - 1)] == this)))){
g.block_map[map_y][(map_x - 1)] = null;
g.stack_map[map_y][(map_x - 1)] = Game.EMPTY;
};
};
if (((((((!(buddy)) && (!(forced)))) && (!(g.scroller.contains(x, y))))) || (((buddy) && (remove_call))))){
remove();
return;
};
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
} else {
if (dir == STOPPED){
if (((((((!(buddy)) && (!(forced)))) && (!(g.scroller.contains(x, y))))) || (((buddy) && (remove_call))))){
remove();
return;
};
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
};
};
} else {
if (state == TURNING){
state = MOVING;
} else {
if (state == CRUSH){
crush_count--;
if (crush_count <= 0){
state = MOVING;
};
};
};
};
updateMC();
updateBlock();
}
override public function selectPatrolPath():void{
super.selectPatrolPath();
if (dir == UP){
g.block_map[(map_y - 1)][map_x] = this;
g.stack_map[(map_y - 1)][map_x] = Rect.TEMP;
} else {
if (dir == DOWN){
g.block_map[(map_y + 1)][map_x] = this;
g.stack_map[(map_y + 1)][map_x] = Rect.TEMP;
} else {
if (dir == LEFT){
g.block_map[map_y][(map_x - 1)] = this;
g.stack_map[map_y][(map_x - 1)] = Rect.TEMP;
} else {
if (dir == RIGHT){
g.block_map[map_y][(map_x + 1)] = this;
g.stack_map[map_y][(map_x + 1)] = Rect.TEMP;
};
};
};
};
}
public function move():void{
if (dir == UP){
y = (y - SPEED);
} else {
if (dir == RIGHT){
x = (x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
} else {
if (dir == DOWN){
y = (y + SPEED);
};
};
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
override public function selectSeekPath():void{
super.selectSeekPath();
if ((((((((((((g.player.grid_x == map_x)) && ((g.player.grid_y == (map_y + 1))))) && ((g.stack_map[(map_y + 1)][map_x] == Rect.TEMP)))) || ((((((g.player.grid_x == (map_x + 1))) && ((g.player.grid_y == map_y)))) && ((g.stack_map[map_y][(map_x + 1)] == Rect.TEMP)))))) || ((((((g.player.grid_x == map_x)) && ((g.player.grid_y == (map_y - 1))))) && ((g.stack_map[(map_y - 1)][map_x] == Rect.TEMP)))))) || ((((((g.player.grid_x == (map_x - 1))) && ((g.player.grid_y == map_y)))) && ((g.stack_map[map_y][(map_x - 1)] == Rect.TEMP)))))){
state = CRUSH;
crush_count = CRUSH_DELAY;
return;
};
if (SPEED != 4){
SPEED = 4;
};
if (dir == UP){
g.block_map[(map_y - 1)][map_x] = this;
g.stack_map[(map_y - 1)][map_x] = Rect.TEMP;
} else {
if (dir == DOWN){
g.block_map[(map_y + 1)][map_x] = this;
g.stack_map[(map_y + 1)][map_x] = Rect.TEMP;
} else {
if (dir == LEFT){
g.block_map[map_y][(map_x - 1)] = this;
g.stack_map[map_y][(map_x - 1)] = Rect.TEMP;
} else {
if (dir == RIGHT){
g.block_map[map_y][(map_x + 1)] = this;
g.stack_map[map_y][(map_x + 1)] = Rect.TEMP;
};
};
};
};
}
override public function unpause():void{
if (evil){
if (aggressive){
(mc as MovieClip).gotoAndStop("aggressive");
} else {
(mc as MovieClip).gotoAndStop("idle");
};
};
}
}
}//package com.nitrome.engine_specific
Section 49
//Ninja (com.nitrome.engine_specific.Ninja)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class Ninja extends Encounter {
public var stealth:Boolean;
public var stealth_clip:StealthClip;
public var orient:int;
public var grab_y:int;
public var grab_x:int;
public var old_orient:int;
public var health:int;// = 5
public var flip:int;
public var health_fraction:Number;// = 0.2
public var tracking_count:int;
public var controlled:Boolean;
public var state:int;
public var dir:int;
public var stealth_mask:MovieClip;
public var collision_rect:Rect;
public var hide_count:int;
public static const RIGHT:int = 2;
public static const LEFT:int = 8;
public static const FLYING:int = 4;
public static const UP:int = 1;
public static const RUNNING:int = 2;
public static const WIDTH:int = 22;
public static const HEIGHT:int = 34;
public static const DOWN:int = 4;
public static const HIDE_DELAY:int = 25;
public static const SPEED:int = 7;
public static const TRACKING_DELAY:int = 75;
public static const CHASE_DIST:Number = 500;
public static const WAIT:int = 1;
public static var point:Point = new Point();
public function Ninja(_arg1:int, _arg2:MovieClip, _arg3:Game){
health = 5;
health_fraction = 0.2;
super(_arg2, _arg3, true);
this.orient = _arg1;
if (_arg1 == UP){
x = (x + (Game.scale >> 1));
y = (y + (Game.scale - 1));
} else {
if (_arg1 == RIGHT){
y = (y + (Game.scale >> 1));
} else {
if (_arg1 == DOWN){
x = (x + (Game.scale >> 1));
} else {
if (_arg1 == LEFT){
x = (x + (Game.scale - 1));
y = (y + (Game.scale >> 1));
};
};
};
};
if ((((_arg1 == UP)) || ((_arg1 == DOWN)))){
if (((!((_arg3.player == null))) && (_arg3.player.active))){
dir = ((_arg3.player.x < x)) ? LEFT : RIGHT;
} else {
dir = ((Math.random() >= 0.5)) ? LEFT : RIGHT;
};
} else {
if ((((_arg1 == RIGHT)) || ((_arg1 == LEFT)))){
if (((!((_arg3.player == null))) && (_arg3.player.active))){
dir = ((_arg3.player.y < y)) ? UP : DOWN;
} else {
dir = ((Math.random() >= 0.5)) ? UP : DOWN;
};
};
};
has_main = true;
has_collision = true;
collision_rect = new Rect();
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
state = WAIT;
stealth = true;
stealth_mask = new NinjaMC();
stealth_clip = new StealthClip(stealth_mask, 80, 80);
_arg3.monster_holder.addChild(stealth_clip);
_arg3.stealths.push(this);
updateCollisionRect();
updateMC();
tracking_count = TRACKING_DELAY;
reward = new HiddenInt(70);
controlled = !((_arg3.path_map[map_y][map_x] == 0));
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
stealth_clip.x = mc.x;
stealth_clip.y = mc.y;
if (orient == UP){
mc.rotation = 0;
stealth_clip.bitmap.x = (-(stealth_clip.bitmap.width) * 0.5);
stealth_clip.bitmap.y = (-(stealth_clip.bitmap.height) + 2);
grab_x = (-(stealth_clip.bitmap.width) * 0.5);
grab_y = (-(stealth_clip.bitmap.height) + 2);
} else {
if (orient == RIGHT){
mc.rotation = 90;
stealth_clip.bitmap.x = (-(stealth_clip.bitmap.width) * 0.5);
stealth_clip.bitmap.y = 2;
grab_x = -2;
grab_y = (-(stealth_clip.bitmap.height) * 0.5);
} else {
if (orient == DOWN){
mc.rotation = 180;
stealth_clip.bitmap.x = (stealth_clip.bitmap.width * 0.5);
stealth_clip.bitmap.y = 2;
grab_x = (-(stealth_clip.bitmap.width) * 0.5);
grab_y = -2;
} else {
if (orient == LEFT){
mc.rotation = 270;
stealth_clip.bitmap.x = (stealth_clip.bitmap.width * 0.5);
stealth_clip.bitmap.y = (-(stealth_clip.bitmap.height) + 2);
grab_x = (-(stealth_clip.bitmap.width) + 2);
grab_y = ((-(stealth_clip.bitmap.height) * 0.5) + 2);
};
};
};
};
stealth_clip.rotation = mc.rotation;
stealth_clip.bitmap.rotation = -(mc.rotation);
if (stealth){
if (stealth_clip.alpha < 1){
stealth_clip.alpha = (stealth_clip.alpha + 0.1);
};
} else {
if (stealth_clip.alpha > 0){
stealth_clip.alpha = (stealth_clip.alpha - 0.1);
};
};
}
override public function intersects(_arg1:Rect):Boolean{
if ((((state == FLYING)) && (collision_rect.intersects(_arg1)))){
return (true);
};
return (false);
}
public function updateAnimState(_arg1:MovieClip):void{
if (state == RUNNING){
if (orient == UP){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
};
};
} else {
if (orient == RIGHT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
};
};
} else {
if (orient == DOWN){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
};
};
} else {
if (orient == LEFT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
};
};
};
};
};
};
} else {
if (state == WAIT){
if (orient == UP){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
};
};
} else {
if (orient == RIGHT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
};
};
} else {
if (orient == DOWN){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
};
};
} else {
if (orient == LEFT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
};
};
};
};
};
};
} else {
if (state == FLYING){
if ((_arg1 as MovieClip).currentLabel != "fly"){
(_arg1 as MovieClip).gotoAndStop("fly");
};
};
};
};
}
public function stealthScreenGrab():void{
mc.visible = false;
point = Util.localToLocal(point, mc, NitromeGame.timeline);
stealth_clip.grab((-(point.x) - grab_x), (-(point.y) - grab_y));
mc.visible = true;
}
public function kill(_arg1:Number):void{
if (!active){
return;
};
active = false;
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
g.addFX(mc.x, mc.y, g.bang_bitmap1);
if (stealth_clip.parent != null){
stealth_clip.parent.removeChild(stealth_clip);
};
if (Math.random() > 0.5){
g.addSmoke(mc.x, mc.y);
};
g.shake(3);
g.addDebris((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), ((_arg1 > 0)) ? 10 : -10, g.debris_clips[6], g.debris_clips[7], g.debris_clips[8]);
}
public function fly(_arg1=null):void{
var _local2:MovieClip;
if (state == FLYING){
return;
};
state = FLYING;
stealth = false;
hide_count = HIDE_DELAY;
NitromeGame.sound_manager.playSound("missile");
_local2 = new JumpMC();
if (((!((_arg1 == null))) && (_arg1.b.moving_block))){
_local2.x = (x - _arg1.b.x);
_local2.y = (y - _arg1.b.y);
updateMC();
_local2.rotation = mc.rotation;
_arg1.mc.addChild(_local2);
} else {
_local2.x = mc.x;
_local2.y = mc.y;
_local2.rotation = mc.rotation;
g.effect_holder.addChild(_local2);
};
}
override public function remove():void{
if (((active) && (!((stealth_clip.parent == null))))){
stealth_clip.parent.removeChild(stealth_clip);
};
super.remove();
}
public function main():void{
if ((((((((((((((((state == RUNNING)) || ((state == WAIT)))) && (!(forced)))) && (!(g.scroller.contains((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5))))))) && (!((map_x == 0))))) && (!((map_x == (g.scroller.width - 1)))))) && (!((map_y == 0))))) && (!((map_y == (g.scroller.height - 1)))))){
map_x = (collision_rect.x + (collision_rect.width * 0.5));
map_y = (collision_rect.y + (collision_rect.height * 0.5));
if (orient == UP){
tile_id = "63";
} else {
if (orient == RIGHT){
tile_id = "64";
} else {
if (orient == DOWN){
tile_id = "65";
} else {
if (orient == LEFT){
tile_id = "66";
};
};
};
};
remove();
return;
};
old_orient = orient;
if ((((state == RUNNING)) || ((state == WAIT)))){
if ((((g.player.state == Player.STEALTH)) || (g.player.chameleon))){
stealth = false;
hide_count = HIDE_DELAY;
} else {
if (((!(stealth)) && ((--hide_count < 0)))){
stealth = true;
};
};
if (--tracking_count <= 0){
if (Util.proximity(x, y, g.player.x, g.player.y, CHASE_DIST)){
state = RUNNING;
if ((((orient == UP)) || ((orient == DOWN)))){
if (((((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && (!(g.player.chameleon)))) && ((g.player.x < (x - SPEED))))){
dir = LEFT;
} else {
if (((((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && (!(g.player.chameleon)))) && ((g.player.x > (x + SPEED))))){
dir = RIGHT;
};
};
} else {
if ((((orient == RIGHT)) || ((orient == LEFT)))){
if (((((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && (!(g.player.chameleon)))) && ((g.player.y < (y - SPEED))))){
dir = UP;
} else {
if (((((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && (!(g.player.chameleon)))) && ((g.player.y > (y + SPEED))))){
dir = DOWN;
};
};
};
};
} else {
if (Math.random() > 0.5){
state = WAIT;
};
};
tracking_count = TRACKING_DELAY;
};
if (((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && (!(g.player.chameleon)))){
if ((((orient == UP)) || ((orient == DOWN)))){
if ((((((g.player.x > (x - SPEED))) && ((g.player.x < (x + SPEED))))) && (jumpClear()))){
fly();
};
} else {
if ((((orient == RIGHT)) || ((orient == LEFT)))){
if ((((((g.player.y > (y - SPEED))) && ((g.player.y < (y + SPEED))))) && (jumpClear()))){
fly();
};
};
};
};
if (controlled){
if (state == RUNNING){
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
if (g.path_map[map_y][map_x] == 0){
fly();
} else {
if (dir == UP){
if ((((g.path_map[(map_y - 1)][map_x] == 0)) && ((g.stack_map[(map_y - 1)][map_x] == Game.EMPTY)))){
dir = DOWN;
};
} else {
if (dir == RIGHT){
if ((((g.path_map[map_y][(map_x + 1)] == 0)) && ((g.stack_map[map_y][(map_x + 1)] == Game.EMPTY)))){
dir = LEFT;
};
} else {
if (dir == DOWN){
if ((((g.path_map[(map_y + 1)][map_x] == 0)) && ((g.stack_map[(map_y + 1)][map_x] == Game.EMPTY)))){
dir = UP;
};
} else {
if (dir == LEFT){
if ((((g.path_map[map_y][(map_x - 1)] == 0)) && ((g.stack_map[map_y][(map_x - 1)] == Game.EMPTY)))){
dir = RIGHT;
};
};
};
};
};
};
};
};
if (state == RUNNING){
if (dir == UP){
y = (y - SPEED);
map_x = (x * Game.SCALE);
map_y = ((y - (WIDTH >> 1)) * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y - HEIGHT))))){
y = (g.block_map[map_y][map_x].b.y + g.block_map[map_y][map_x].b.height);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
y = ((map_y + 1) * Game.scale);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
};
dir = orient;
orient = DOWN;
} else {
if (map_y == 0){
dir = DOWN;
};
};
if (state != FLYING){
map_y = (y * Game.SCALE);
if (orient == LEFT){
if (g.stack_map[map_y][(map_x + 1)] == Game.EMPTY){
orient = dir;
x = ((map_x + 1) * Game.scale);
y = (((map_y + 1) * Game.scale) - 1);
dir = RIGHT;
};
} else {
if (orient == RIGHT){
if (g.stack_map[map_y][(map_x - 1)] == Game.EMPTY){
orient = dir;
x = ((map_x * Game.scale) - 1);
y = (((map_y + 1) * Game.scale) - 1);
dir = LEFT;
};
};
};
};
} else {
if (dir == RIGHT){
x = (x + SPEED);
map_x = ((x + (WIDTH >> 1)) * Game.SCALE);
map_y = (y * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x + HEIGHT), y)))){
x = (g.block_map[map_y][map_x].b.x - 1);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
x = ((map_x * Game.scale) - 1);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
};
dir = orient;
orient = LEFT;
} else {
if (map_x == (g.scroller.width - 1)){
dir = LEFT;
};
};
if (state != FLYING){
map_x = (x * Game.SCALE);
if (orient == UP){
if (g.stack_map[(map_y + 1)][map_x] == Game.EMPTY){
orient = dir;
x = (map_x * Game.scale);
y = ((map_y + 1) * Game.scale);
dir = DOWN;
};
} else {
if (orient == DOWN){
if (g.stack_map[(map_y - 1)][map_x] == Game.EMPTY){
orient = dir;
x = (map_x * Game.scale);
y = ((map_y * Game.scale) - 1);
dir = UP;
};
};
};
};
} else {
if (dir == DOWN){
y = (y + SPEED);
map_x = (x * Game.SCALE);
map_y = ((y + (WIDTH >> 1)) * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y + HEIGHT))))){
y = (g.block_map[map_y][map_x].b.y - 1);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
y = ((map_y * Game.scale) - 1);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
};
dir = orient;
orient = UP;
} else {
if (map_y == (g.scroller.height - 1)){
dir = UP;
};
};
if (state != FLYING){
map_y = (y * Game.SCALE);
if (orient == LEFT){
if (g.stack_map[map_y][(map_x + 1)] == Game.EMPTY){
orient = dir;
x = ((map_x + 1) * Game.scale);
y = (map_y * Game.scale);
dir = RIGHT;
};
} else {
if (orient == RIGHT){
if (g.stack_map[map_y][(map_x - 1)] == Game.EMPTY){
orient = dir;
x = ((map_x * Game.scale) - 1);
y = (map_y * Game.scale);
dir = LEFT;
};
};
};
};
} else {
if (dir == LEFT){
x = (x - SPEED);
map_x = ((x - (WIDTH >> 1)) * Game.SCALE);
map_y = (y * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x - HEIGHT), y)))){
x = (g.block_map[map_y][map_x].b.x + g.block_map[map_y][map_x].b.width);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
x = ((map_x + 1) * Game.scale);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
};
dir = orient;
orient = RIGHT;
} else {
if (map_x == 0){
dir = RIGHT;
};
};
if (state != FLYING){
map_x = (x * Game.SCALE);
if (orient == UP){
if (g.stack_map[(map_y + 1)][map_x] == Game.EMPTY){
orient = dir;
x = (((map_x + 1) * Game.scale) - 1);
y = ((map_y + 1) * Game.scale);
dir = DOWN;
};
} else {
if (orient == DOWN){
if (g.stack_map[(map_y - 1)][map_x] == Game.EMPTY){
orient = dir;
x = (((map_x + 1) * Game.scale) - 1);
y = ((map_y * Game.scale) - 1);
dir = UP;
};
};
};
};
};
};
};
};
};
} else {
if (state == FLYING){
if (orient == UP){
y = (y - (SPEED * 2));
map_x = (x * Game.SCALE);
map_y = ((y - HEIGHT) * Game.SCALE);
if (map_y == 0){
orient = DOWN;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y - HEIGHT))))){
state = FLYING;
y = (g.block_map[map_y][map_x].b.y + g.block_map[map_y][map_x].b.height);
};
} else {
state = RUNNING;
y = ((map_y + 1) * Game.scale);
};
orient = DOWN;
};
} else {
if (orient == RIGHT){
x = (x + (SPEED * 2));
map_x = ((x + HEIGHT) * Game.SCALE);
map_y = (y * Game.SCALE);
if (map_x == (g.scroller.width - 1)){
orient = LEFT;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x + HEIGHT), y)))){
state = FLYING;
x = (g.block_map[map_y][map_x].b.x - 1);
};
} else {
state = RUNNING;
x = ((map_x * Game.scale) - 1);
};
orient = LEFT;
};
} else {
if (orient == DOWN){
y = (y + (SPEED * 2));
map_x = (x * Game.SCALE);
map_y = ((y + HEIGHT) * Game.SCALE);
if (map_y == (g.scroller.height - 1)){
orient = UP;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y + HEIGHT))))){
state = FLYING;
y = (g.block_map[map_y][map_x].b.y - 1);
};
} else {
state = RUNNING;
y = ((map_y * Game.scale) - 1);
};
orient = UP;
};
} else {
if (orient == LEFT){
x = (x - (SPEED * 2));
map_x = ((x - HEIGHT) * Game.SCALE);
map_y = (y * Game.SCALE);
if (map_y == 0){
orient = RIGHT;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x - HEIGHT), y)))){
state = FLYING;
x = (g.block_map[map_y][map_x].b.x + g.block_map[map_y][map_x].b.width);
};
} else {
state = RUNNING;
x = ((map_x + 1) * Game.scale);
};
orient = RIGHT;
};
};
};
};
};
};
};
updateCollisionRect();
updateAnimState((mc as MovieClip));
updateAnimState(stealth_mask);
updateMC();
if (old_orient != orient){
stealthScreenGrab();
};
}
public function jumpClear():Boolean{
var _local1:int;
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
_local1 = 0;
while (_local1 < 100) {
if (orient == UP){
if ((map_y - _local1) == g.player.map_y){
return (true);
};
if ((map_y - _local1) < 0){
return (false);
};
if (g.stack_map[(map_y - _local1)][map_x] > Game.EMPTY){
return (false);
};
} else {
if (orient == RIGHT){
if ((map_x + _local1) == g.player.map_x){
return (true);
};
if ((map_x + _local1) > (g.scroller.width - 1)){
return (false);
};
if (g.stack_map[map_y][(map_x + _local1)] > Game.EMPTY){
return (false);
};
} else {
if (orient == DOWN){
if ((map_y + _local1) == g.player.map_y){
return (true);
};
if ((map_y + _local1) > (g.scroller.height - 1)){
return (false);
};
if (g.stack_map[(map_y + _local1)][map_x] > Game.EMPTY){
return (false);
};
} else {
if (orient == LEFT){
if ((map_x - _local1) == g.player.map_x){
return (true);
};
if ((map_x - _local1) < 0){
return (false);
};
if (g.stack_map[map_y][(map_x - _local1)] > Game.EMPTY){
return (false);
};
};
};
};
};
_local1++;
};
return (false);
}
override public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
}
public function updateCollisionRect():void{
if (orient == UP){
collision_rect.x = (x - (WIDTH * 0.5));
collision_rect.y = (y - HEIGHT);
collision_rect.width = WIDTH;
collision_rect.height = HEIGHT;
} else {
if (orient == RIGHT){
collision_rect.x = x;
collision_rect.y = (y - (WIDTH * 0.5));
collision_rect.width = HEIGHT;
collision_rect.height = WIDTH;
} else {
if (orient == DOWN){
collision_rect.x = (x - (WIDTH * 0.5));
collision_rect.y = y;
collision_rect.width = WIDTH;
collision_rect.height = HEIGHT;
} else {
if (orient == LEFT){
collision_rect.x = (x - HEIGHT);
collision_rect.y = (y - (WIDTH * 0.5));
collision_rect.width = HEIGHT;
collision_rect.height = WIDTH;
};
};
};
};
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (!active){
return;
};
if (((!(_arg2)) && (stealth))){
_arg1.ping((_arg1.px - _arg1.x));
return;
};
if (state == WAIT){
state = RUNNING;
};
health--;
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
if ((((health <= 0)) || (_arg2))){
if (!spawned){
g.addScore(reward.value);
} else {
g.addScore((reward.value / 10));
};
kill((_arg1.x - _arg1.px));
NitromeGame.sound_manager.playSound("smithdie");
} else {
NitromeGame.sound_manager.playSound("smithhit");
};
}
}
}//package com.nitrome.engine_specific
Section 50
//NinjaGuard (com.nitrome.engine_specific.NinjaGuard)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class NinjaGuard extends Actor {
public var detect_rect:Rect;
public var tracking_count:int;
public var stop_count:int;// = 0
public var dir:int;
public var controlled:Boolean;
public var pause_count:int;// = 0
public var state:int;
public var reveal_count:int;
public var paused:Boolean;
public var target:Encounter;
public var orient:int;
public var stop_dir:int;
public var old_orient:int;
public var flip:int;
public static const DOWN:int = 4;
public static const LEFT:int = 8;
public static const REVEAL:int = 16;
public static const FLYING:int = 4;
public static const TRACKING_DELAY:int = 50;
public static const ELECTRIC:int = 8;
public static const RUNNING:int = 2;
public static const WIDTH:int = 24;
public static const HEIGHT:int = 42;
public static const NURSE_DIST:Number = 75;
public static const STOP_DELAY:int = 8;
public static const SPEED:int = 7;
public static const LEAD_DIST:Number = 600;
public static const REVEAL_DELAY:int = 150;
public static const UP:int = 1;
public static const WAIT:int = 1;
public static const CHASE_DIST:Number = 500;
public static const RIGHT:int = 2;
public static var point:Point = new Point();
public function NinjaGuard(_arg1:int, _arg2:MovieClip, _arg3:Game){
pause_count = 0;
stop_count = 0;
super(_arg2, _arg3, true);
this.orient = _arg1;
if (_arg1 == UP){
x = (x + (Game.scale >> 1));
y = (y + (Game.scale - 1));
};
if ((((_arg1 == UP)) || ((_arg1 == DOWN)))){
if (((!((_arg3.player == null))) && (_arg3.player.active))){
dir = ((_arg3.player.x < x)) ? LEFT : RIGHT;
} else {
dir = ((Math.random() >= 0.5)) ? LEFT : RIGHT;
};
} else {
if ((((_arg1 == RIGHT)) || ((_arg1 == LEFT)))){
if (((!((_arg3.player == null))) && (_arg3.player.active))){
dir = ((_arg3.player.y < y)) ? UP : DOWN;
} else {
dir = ((Math.random() >= 0.5)) ? UP : DOWN;
};
};
};
collision_rect = new Rect();
detect_rect = new Rect();
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
state = WAIT;
updateCollisionRect();
updateMC();
tracking_count = TRACKING_DELAY;
controlled = !((_arg3.actor_map[map_y][map_x] == 0));
reveal_count = 0;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
override public function intersects(_arg1:Rect):Boolean{
var _local2:int;
var _local3:int;
if (state == FLYING){
return (collision_rect.intersects(_arg1));
};
if (detect_rect.intersects(_arg1)){
_local2 = ((_arg1.x + (_arg1.width * 0.5)) * Game.SCALE);
_local3 = ((_arg1.y + (_arg1.height * 0.5)) * Game.SCALE);
return (jumpClear(_local2, _local3));
};
return (false);
}
public function updateAnimState(_arg1:MovieClip):void{
if (state == RUNNING){
if (orient == UP){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
};
};
} else {
if (orient == RIGHT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
};
};
} else {
if (orient == DOWN){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
};
};
} else {
if (orient == LEFT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "run_left"){
(_arg1 as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "run_right"){
(_arg1 as MovieClip).gotoAndStop("run_right");
};
};
};
};
};
};
};
} else {
if (state == WAIT){
if (orient == UP){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
};
};
} else {
if (orient == RIGHT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
};
};
} else {
if (orient == DOWN){
if (dir == RIGHT){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
} else {
if (dir == LEFT){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
};
};
} else {
if (orient == LEFT){
if (dir == DOWN){
if ((_arg1 as MovieClip).currentLabel != "wait_left"){
(_arg1 as MovieClip).gotoAndStop("wait_left");
};
} else {
if (dir == UP){
if ((_arg1 as MovieClip).currentLabel != "wait_right"){
(_arg1 as MovieClip).gotoAndStop("wait_right");
};
};
};
};
};
};
};
} else {
if (state == FLYING){
if ((_arg1 as MovieClip).currentLabel != "fly"){
(_arg1 as MovieClip).gotoAndStop("fly");
};
} else {
if (state == ELECTRIC){
if ((_arg1 as MovieClip).currentLabel != "electric"){
(_arg1 as MovieClip).gotoAndStop("electric");
};
} else {
if (state == REVEAL){
if ((_arg1 as MovieClip).currentLabel != "reveal"){
(_arg1 as MovieClip).gotoAndStop("reveal");
};
};
};
};
};
};
}
public function main():void{
old_orient = orient;
if ((((state == RUNNING)) || ((state == WAIT)))){
selectPatrolPath();
if (dir == orient){
dir = stop_dir;
fly();
} else {
if ((((((((((dir == DOWN)) && ((orient == UP)))) || ((((dir == LEFT)) && ((orient == RIGHT)))))) || ((((dir == UP)) && ((orient == DOWN)))))) || ((((dir == RIGHT)) && ((orient == LEFT)))))){
dir = stop_dir;
};
};
if (((((((Path.free) && ((--stop_count <= 0)))) && (Util.proximity(x, y, g.player.x, g.player.y, NURSE_DIST)))) || (((!(Path.free)) && (!(Util.proximity(x, y, g.player.x, g.player.y, LEAD_DIST))))))){
state = WAIT;
if (electrocuted){
state = ELECTRIC;
} else {
if (reveal_count){
state = REVEAL;
};
};
} else {
if (state == WAIT){
tracking_count = 0;
stop_count = STOP_DELAY;
state = RUNNING;
if (electrocuted){
state = ELECTRIC;
} else {
if (reveal_count){
state = REVEAL;
};
};
};
};
if (((((Path.free) && ((state == RUNNING)))) && ((--tracking_count <= 0)))){
if ((((orient == UP)) || ((orient == DOWN)))){
if (((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && ((g.player.x < (x - SPEED))))){
dir = LEFT;
} else {
if (((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && ((g.player.x > (x + SPEED))))){
dir = RIGHT;
};
};
map_y = (y * Game.SCALE);
if ((((((orient == UP)) && ((g.player.map_y < map_y)))) || ((((orient == DOWN)) && ((g.player.map_y > map_y)))))){
fly();
};
} else {
if ((((orient == RIGHT)) || ((orient == LEFT)))){
if (((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && ((g.player.y < (y - SPEED))))){
dir = UP;
} else {
if (((((g.player.active) && (!((g.player.state == Player.STEALTH))))) && ((g.player.y > (y + SPEED))))){
dir = DOWN;
};
};
map_x = (x * Game.SCALE);
if ((((((orient == LEFT)) && ((g.player.map_x < map_x)))) || ((((orient == RIGHT)) && ((g.player.map_x > map_x)))))){
fly();
};
};
};
tracking_count = TRACKING_DELAY;
};
if (state == RUNNING){
if (dir == UP){
y = (y - SPEED);
map_x = (x * Game.SCALE);
map_y = ((y - (WIDTH >> 1)) * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y - HEIGHT))))){
y = (g.block_map[map_y][map_x].b.y + g.block_map[map_y][map_x].b.height);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
y = ((map_y + 1) * Game.scale);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
};
dir = orient;
orient = DOWN;
} else {
if (map_y == 0){
dir = DOWN;
};
};
if (state != FLYING){
map_y = (y * Game.SCALE);
if (orient == LEFT){
if (g.stack_map[map_y][(map_x + 1)] == Game.EMPTY){
orient = dir;
x = ((map_x + 1) * Game.scale);
y = (((map_y + 1) * Game.scale) - 1);
dir = RIGHT;
};
} else {
if (orient == RIGHT){
if (g.stack_map[map_y][(map_x - 1)] == Game.EMPTY){
orient = dir;
x = ((map_x * Game.scale) - 1);
y = (((map_y + 1) * Game.scale) - 1);
dir = LEFT;
};
};
};
};
} else {
if (dir == RIGHT){
x = (x + SPEED);
map_x = ((x + (WIDTH >> 1)) * Game.SCALE);
map_y = (y * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x + HEIGHT), y)))){
x = (g.block_map[map_y][map_x].b.x - 1);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
x = ((map_x * Game.scale) - 1);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
};
dir = orient;
orient = LEFT;
} else {
if (map_x == (g.scroller.width - 1)){
dir = LEFT;
};
};
if (state != FLYING){
map_x = (x * Game.SCALE);
if (orient == UP){
if (g.stack_map[(map_y + 1)][map_x] == Game.EMPTY){
orient = dir;
x = (map_x * Game.scale);
y = ((map_y + 1) * Game.scale);
dir = DOWN;
};
} else {
if (orient == DOWN){
if (g.stack_map[(map_y - 1)][map_x] == Game.EMPTY){
orient = dir;
x = (map_x * Game.scale);
y = ((map_y * Game.scale) - 1);
dir = UP;
};
};
};
};
} else {
if (dir == DOWN){
y = (y + SPEED);
map_x = (x * Game.SCALE);
map_y = ((y + (WIDTH >> 1)) * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y + HEIGHT))))){
y = (g.block_map[map_y][map_x].b.y - 1);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
y = ((map_y * Game.scale) - 1);
if (orient == RIGHT){
x = (x + (WIDTH >> 1));
} else {
if (orient == LEFT){
x = (x - (WIDTH >> 1));
};
};
};
dir = orient;
orient = UP;
} else {
if (map_y == (g.scroller.height - 1)){
dir = UP;
};
};
if (state != FLYING){
map_y = (y * Game.SCALE);
if (orient == LEFT){
if (g.stack_map[map_y][(map_x + 1)] == Game.EMPTY){
orient = dir;
x = ((map_x + 1) * Game.scale);
y = (map_y * Game.scale);
dir = RIGHT;
};
} else {
if (orient == RIGHT){
if (g.stack_map[map_y][(map_x - 1)] == Game.EMPTY){
orient = dir;
x = ((map_x * Game.scale) - 1);
y = (map_y * Game.scale);
dir = LEFT;
};
};
};
};
} else {
if (dir == LEFT){
x = (x - SPEED);
map_x = ((x - (WIDTH >> 1)) * Game.SCALE);
map_y = (y * Game.SCALE);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x - HEIGHT), y)))){
x = (g.block_map[map_y][map_x].b.x + g.block_map[map_y][map_x].b.width);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
fly(g.block_map[map_y][map_x]);
};
} else {
state = RUNNING;
x = ((map_x + 1) * Game.scale);
if (orient == DOWN){
y = (y + (WIDTH >> 1));
} else {
if (orient == UP){
y = (y - (WIDTH >> 1));
};
};
};
dir = orient;
orient = RIGHT;
} else {
if (map_x == (g.scroller.width - 1)){
dir = LEFT;
};
};
if (state != FLYING){
map_x = (x * Game.SCALE);
if (orient == UP){
if (g.stack_map[(map_y + 1)][map_x] == Game.EMPTY){
orient = dir;
x = (((map_x + 1) * Game.scale) - 1);
y = ((map_y + 1) * Game.scale);
dir = DOWN;
};
} else {
if (orient == DOWN){
if (g.stack_map[(map_y - 1)][map_x] == Game.EMPTY){
orient = dir;
x = (((map_x + 1) * Game.scale) - 1);
y = ((map_y * Game.scale) - 1);
dir = UP;
};
};
};
};
};
};
};
};
};
} else {
if (state == FLYING){
if (orient == UP){
y = (y - (SPEED * 2));
map_x = (x * Game.SCALE);
map_y = ((y - HEIGHT) * Game.SCALE);
if (map_y == 0){
orient = DOWN;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y - HEIGHT))))){
state = FLYING;
y = (g.block_map[map_y][map_x].b.y + g.block_map[map_y][map_x].b.height);
};
} else {
state = RUNNING;
y = ((map_y + 1) * Game.scale);
};
orient = DOWN;
};
} else {
if (orient == RIGHT){
x = (x + (SPEED * 2));
map_x = ((x + HEIGHT) * Game.SCALE);
map_y = (y * Game.SCALE);
if (map_x == (g.scroller.width - 1)){
orient = LEFT;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x + HEIGHT), y)))){
state = FLYING;
x = (g.block_map[map_y][map_x].b.x - 1);
};
} else {
state = RUNNING;
x = ((map_x * Game.scale) - 1);
};
orient = LEFT;
};
} else {
if (orient == DOWN){
y = (y + (SPEED * 2));
map_x = (x * Game.SCALE);
map_y = ((y + HEIGHT) * Game.SCALE);
if (map_y == (g.scroller.height - 1)){
orient = UP;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains(x, (y + HEIGHT))))){
state = FLYING;
y = (g.block_map[map_y][map_x].b.y - 1);
};
} else {
state = RUNNING;
y = ((map_y * Game.scale) - 1);
};
orient = UP;
};
} else {
if (orient == LEFT){
x = (x - (SPEED * 2));
map_x = ((x - HEIGHT) * Game.SCALE);
map_y = (y * Game.SCALE);
if (map_y == 0){
orient = RIGHT;
return;
};
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (((!((g.block_map[map_y][map_x] == null))) && (g.block_map[map_y][map_x].b.contains((x - HEIGHT), y)))){
state = FLYING;
x = (g.block_map[map_y][map_x].b.x + g.block_map[map_y][map_x].b.width);
};
} else {
state = RUNNING;
x = ((map_x + 1) * Game.scale);
};
orient = RIGHT;
};
};
};
};
};
} else {
if (state == REVEAL){
reveal_count--;
if (reveal_count == 0){
state = WAIT;
};
};
};
};
updateCollisionRect();
updateAnimState((mc as MovieClip));
updateMC();
}
public function selectPatrolPath():void{
if (pause_count == -1){
return;
};
if ((((dir == Path.STOPPED)) && ((pause_count > 0)))){
pause_count--;
return;
};
if (dir != Path.STOPPED){
stop_dir = dir;
};
Path.getDir(dir, g.actor_map, null, map_x, map_y);
dir = Path.dir;
pause_count = (paused) ? 0 : Path.pause_delay;
if (pause_count > 0){
dir = Path.STOPPED;
paused = true;
return;
};
paused = false;
}
public function jumpClear(_arg1:int, _arg2:int):Boolean{
var _local3:int;
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
_local3 = 0;
while (_local3 < 100) {
if (orient == UP){
if ((map_y - _local3) == _arg2){
return (true);
};
if ((map_y - _local3) < 0){
return (false);
};
if (g.stack_map[(map_y - _local3)][map_x] > Game.EMPTY){
return (false);
};
} else {
if (orient == RIGHT){
if ((map_x + _local3) == _arg1){
return (true);
};
if ((map_x + _local3) > (g.scroller.width - 1)){
return (false);
};
if (g.stack_map[map_y][(map_x + _local3)] > Game.EMPTY){
return (false);
};
} else {
if (orient == DOWN){
if ((map_y + _local3) == _arg2){
return (true);
};
if ((map_y + _local3) > (g.scroller.height - 1)){
return (false);
};
if (g.stack_map[(map_y + _local3)][map_x] > Game.EMPTY){
return (false);
};
} else {
if (orient == LEFT){
if ((map_x - _local3) == _arg1){
return (true);
};
if ((map_x - _local3) < 0){
return (false);
};
if (g.stack_map[map_y][(map_x - _local3)] > Game.EMPTY){
return (false);
};
};
};
};
};
_local3++;
};
return (false);
}
override public function resolveBulletCollision(_arg1):void{
var _local2:Boolean;
_local2 = !((_arg1 is Bullet));
_arg1 = (_local2) ? _arg1.list[_arg1.hit] : _arg1;
if (_local2){
g.addDebris(_arg1.x, _arg1.y, (_arg1.px - _arg1.x), _arg1.bitmap, _arg1.bitmap, _arg1.bitmap, _arg1.bitmap);
} else {
g.addDebris(_arg1.x, _arg1.y, (_arg1.px - _arg1.x), _arg1.bitmap);
};
_arg1.active = false;
}
override public function resolveEncounterCollision(_arg1):void{
if (state == FLYING){
if (target == _arg1){
return;
};
_arg1.resolveWeaponCollision(new Star(x, y, 0, 0, null, g), true);
target = _arg1;
} else {
target = null;
fly();
};
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
if (orient == UP){
mc.rotation = 0;
} else {
if (orient == RIGHT){
mc.rotation = 90;
} else {
if (orient == DOWN){
mc.rotation = 180;
} else {
if (orient == LEFT){
mc.rotation = 270;
};
};
};
};
}
public function updateCollisionRect():void{
if (orient == UP){
collision_rect.x = (x - (WIDTH * 0.5));
collision_rect.y = (y - HEIGHT);
collision_rect.width = WIDTH;
collision_rect.height = HEIGHT;
detect_rect.x = collision_rect.x;
detect_rect.y = 0;
detect_rect.width = collision_rect.width;
detect_rect.height = (collision_rect.y + collision_rect.height);
} else {
if (orient == RIGHT){
collision_rect.x = x;
collision_rect.y = (y - (WIDTH * 0.5));
collision_rect.width = HEIGHT;
collision_rect.height = WIDTH;
detect_rect.x = collision_rect.x;
detect_rect.y = collision_rect.y;
detect_rect.width = ((g.scroller.width * Game.scale) - collision_rect.x);
detect_rect.height = collision_rect.height;
} else {
if (orient == DOWN){
collision_rect.x = (x - (WIDTH * 0.5));
collision_rect.y = y;
collision_rect.width = WIDTH;
collision_rect.height = HEIGHT;
detect_rect.x = collision_rect.x;
detect_rect.y = collision_rect.y;
detect_rect.width = collision_rect.width;
detect_rect.height = ((g.scroller.height * Game.scale) - collision_rect.y);
} else {
if (orient == LEFT){
collision_rect.x = (x - HEIGHT);
collision_rect.y = (y - (WIDTH * 0.5));
collision_rect.width = HEIGHT;
collision_rect.height = WIDTH;
detect_rect.x = 0;
detect_rect.y = collision_rect.y;
detect_rect.width = (collision_rect.x + collision_rect.width);
detect_rect.height = collision_rect.height;
};
};
};
};
}
public function fly(_arg1=null):void{
var _local2:MovieClip;
if (state == FLYING){
return;
};
state = FLYING;
_local2 = new JumpMC();
NitromeGame.sound_manager.playSound("missile");
if (((!((_arg1 == null))) && (_arg1.b.moving_block))){
_local2.x = (x - _arg1.b.x);
_local2.y = (y - _arg1.b.y);
updateMC();
_local2.rotation = mc.rotation;
_arg1.mc.addChild(_local2);
} else {
_local2.x = mc.x;
_local2.y = mc.y;
_local2.rotation = mc.rotation;
g.effect_holder.addChild(_local2);
};
}
}
}//package com.nitrome.engine_specific
Section 51
//Node (com.nitrome.engine_specific.Node)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Node extends Dot {
var walkable:Boolean;// = true
var h:int;// = 0
var s:int;// = 0
public function Node(_arg1:int=0, _arg2:int=0){
h = 0;
s = 0;
walkable = true;
super();
}
function setH(_arg1:int, _arg2:int):void{
var _local3:*;
var _local4:*;
_local3 = (this.x - _arg1);
_local4 = (this.y - _arg2);
h = (((_local3 < 0)) ? -(_local3) : _local3 + ((_local4 < 0)) ? -(_local4) : _local4);
}
}
}//package com.nitrome.engine_specific
Section 52
//Path (com.nitrome.engine_specific.Path)
package com.nitrome.engine_specific {
public class Path {
public static const STOP:int = 8;
public static const RIGHT:int = 2;
public static const LEFT:int = 8;
public static const DOWN:int = 4;
public static const GO_UP:int = 9;
public static const PAUSE_UNIT:int = 25;
public static const GO_DOWN:int = 11;
public static const UP:int = 1;
public static const HORIZ:int = 7;
public static const GO_RIGHT:int = 10;
public static const STOPPED:int = 0;
public static const VERT:int = 6;
public static const FREE:int = 5;
public static const GO_LEFT:int = 12;
public static var width:int = -1;
public static var command:int;
public static var dir:int;
public static var height:int = -1;
public static var free:Boolean;
public static var pause_delay:int;
public static function getDir(_arg1:int, _arg2:Array, _arg3:Array, _arg4:int, _arg5:int):void{
if (width < 0){
height = _arg2.length;
width = _arg2[0].length;
};
command = _arg2[_arg5][_arg4];
pause_delay = 0;
if (command == STOP){
pause_delay = -1;
dir = STOPPED;
return;
};
if (!(((_arg2[_arg5][_arg4] >= 0)) || ((_arg2[_arg5][_arg4] <= 0)))){
pause_delay = (_arg2[_arg5][_arg4].match(/(?<=I\()\d+/)[0] * PAUSE_UNIT);
command = _arg2[_arg5][_arg4].match(/\d+/)[0];
};
free = (command == 0);
if (command == 0){
dir = _arg1;
if ((((dir == UP)) && ((_arg5 == 0)))){
dir = DOWN;
} else {
if ((((dir == RIGHT)) && ((_arg4 == (width - 1))))){
dir = LEFT;
} else {
if ((((dir == DOWN)) && ((_arg5 == (height - 1))))){
dir = UP;
} else {
if ((((dir == LEFT)) && ((_arg4 == 0)))){
dir = RIGHT;
};
};
};
};
} else {
if (command == FREE){
dir = _arg1;
if (dir == UP){
if ((((_arg5 == 0)) || ((_arg2[(_arg5 - 1)][_arg4] == 0)))){
dir = DOWN;
};
} else {
if (dir == RIGHT){
if ((((_arg4 == (width - 1))) || ((_arg2[_arg5][(_arg4 + 1)] == 0)))){
dir = LEFT;
};
} else {
if (dir == DOWN){
if ((((_arg5 == (height - 1))) || ((_arg2[(_arg5 + 1)][_arg4] == 0)))){
dir = UP;
};
} else {
if (dir == LEFT){
if ((((_arg4 == 0)) || ((_arg2[_arg5][(_arg4 - 1)] == 0)))){
dir = RIGHT;
};
};
};
};
};
} else {
if (command == GO_UP){
dir = UP;
} else {
if (command == GO_RIGHT){
dir = RIGHT;
} else {
if (command == GO_DOWN){
dir = DOWN;
} else {
if (command == GO_LEFT){
dir = LEFT;
} else {
if (command == HORIZ){
if ((((_arg1 == RIGHT)) || ((_arg1 == LEFT)))){
dir = _arg1;
if (dir == RIGHT){
if ((((_arg4 == (width - 1))) || ((_arg2[_arg5][(_arg4 + 1)] == 0)))){
dir = LEFT;
};
} else {
if (dir == LEFT){
if ((((_arg4 == 0)) || ((_arg2[_arg5][(_arg4 - 1)] == 0)))){
dir = RIGHT;
};
};
};
} else {
if (dir == UP){
if ((((_arg4 == 0)) || ((_arg2[_arg5][(_arg4 - 1)] == 0)))){
dir = RIGHT;
} else {
if ((((_arg4 == (width - 1))) || ((_arg2[_arg5][(_arg4 + 1)] == 0)))){
dir = LEFT;
} else {
dir = ((Math.random() >= 0.5)) ? RIGHT : LEFT;
};
};
} else {
if (dir == DOWN){
if ((((_arg4 == 0)) || ((_arg2[_arg5][(_arg4 - 1)] == 0)))){
dir = RIGHT;
} else {
if ((((_arg4 == (width - 1))) || ((_arg2[_arg5][(_arg4 + 1)] == 0)))){
dir = LEFT;
} else {
dir = ((Math.random() >= 0.5)) ? RIGHT : LEFT;
};
};
};
};
};
} else {
if (command == VERT){
if ((((_arg1 == UP)) || ((_arg1 == DOWN)))){
dir = _arg1;
if (dir == DOWN){
if ((((_arg5 == (height - 1))) || ((_arg2[(_arg5 + 1)][_arg4] == 0)))){
dir = DOWN;
};
} else {
if (dir == UP){
if ((((_arg5 == 0)) || ((_arg2[(_arg5 - 1)][_arg4] == 0)))){
dir = DOWN;
};
};
};
} else {
if (dir == RIGHT){
if ((((_arg5 == 0)) || ((_arg2[(_arg5 - 1)][_arg4] == 0)))){
dir = DOWN;
} else {
if ((((_arg5 == (height - 1))) || ((_arg2[(_arg5 + 1)][_arg4] == 0)))){
dir = UP;
} else {
dir = ((Math.random() >= 0.5)) ? DOWN : UP;
};
};
} else {
if (dir == LEFT){
if ((((_arg5 == 0)) || ((_arg2[(_arg5 - 1)][_arg4] == 0)))){
dir = DOWN;
} else {
if ((((_arg5 == (height - 1))) || ((_arg2[(_arg5 + 1)][_arg4] == 0)))){
dir = UP;
} else {
dir = ((Math.random() >= 0.5)) ? DOWN : UP;
};
};
};
};
};
};
};
};
};
};
};
};
};
if (_arg3 == null){
return;
};
if ((((dir == UP)) && ((_arg3[(_arg5 - 1)][_arg4] > Game.EMPTY)))){
dir = DOWN;
} else {
if ((((dir == RIGHT)) && ((_arg3[_arg5][(_arg4 + 1)] > Game.EMPTY)))){
dir = LEFT;
} else {
if ((((dir == DOWN)) && ((_arg3[(_arg5 + 1)][_arg4] > Game.EMPTY)))){
dir = UP;
} else {
if ((((dir == LEFT)) && ((_arg3[_arg5][(_arg4 - 1)] > Game.EMPTY)))){
dir = RIGHT;
};
};
};
};
}
}
}//package com.nitrome.engine_specific
Section 53
//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 trail_holder:Sprite;
public var stealth_outline:Sprite;
public var virtual_canvas_y:Number;
public var rope_end:Rope;
public var hurt:Boolean;
public var stealth_clip:StealthClip;
public var virtual_canvas_x:Number;
public var walljump_right:Boolean;
public var scroll_rect:Rect;
public var last_mc_y:int;
public var cham_rect:Rect;
public var left_arm:MovieClip;
public var last_mc_x:int;
public var rope_end_length:Number;
public var bc:RayCastReport;
public var chameleon:Boolean;
public var map_x:int;
public var map_y:int;
public var health:HiddenInt;
public var total_rope_length:Number;
public var stars:Array;
public var g:Game;
private var i:int;
public var platform:Block;
public var wallslide_block:Block;
public var cy:Number;
public var damping_x:Number;
public var scroll_target_x:Number;
public var scroll_target_y:Number;
public var cham_shape_mask:MovieClip;
public var right_stealth_arm:MovieClip;
public var throw_count:int;
public var falling:Boolean;
public var debug_key:Boolean;// = false
private var block:Block;
public var state:int;
public var dx:Number;
public var dy:Number;
public var cx:Number;
public var rope_section:Rope;
public var wallslide_collisions:int;
public var crushed:Boolean;
public var ouch_count:int;
public var dir:int;
public var lockrope:Boolean;
public var on_scroller:Boolean;
public var crushable:Boolean;
public var shot_below:Boolean;
public var anchor:RopeAnchor;
public var rope_speed:Number;
public var vy:Number;
public var firing_state:int;
public var vx:Number;
public var ouch:Boolean;
public var collision_rect:Rect;
public var old_grid_x:int;
public var old_grid_y:int;
public var last_canvas_x:Number;
public var eye_glow:Sprite;
public var keys_pressed:int;
public var hurt_count:int;
public var anim_state:int;
public var map_rect:Rect;
public var arm_state:int;
public var rope:Array;
public var last_canvas_y:Number;
public var walljump_left:Boolean;
public var extend_rope_off_count:int;
public var wallslide_count:int;
public var active:Boolean;
public var swing_kick:Number;
public var key_lock:Boolean;
public var collision_array:Array;
public var jump_pressed:Boolean;
public var wall_slide_right:MovieClip;
public var cham_mask:Shape;
public var jump_frame_count:int;
public var left_trail_holder:Shape;
public var finish_item:Encounter;
public var cham_shape:Shape;
public var right_trail_holder:Shape;
public var arm_angle:Number;
public var level_completed:Boolean;
public var swing_floor_count:int;
public var wall_slide_left:MovieClip;
public var ready_count:int;
public var colliding:Boolean;
public var eye_trail_left:Trail;
public var collisions:int;
public var cham_clip:MovieClip;
public var scroll_x:Number;
public var scroll_y:Number;
public var point:Point;
public var mc:MovieClip;
public var eye_trail_right:Trail;
public var dist:Number;
public var stealth_mask:MovieClip;
public var right_arm:MovieClip;
public var grid_x:int;
public var grid_y:int;
public var jump_count:Number;
public var chameleon_pickup:Boolean;
public var rope_alpha:Number;
public var moving_sprite:Sprite;
public var running:Boolean;
public var stealth_pressed:Boolean;
public var left_stealth_arm:MovieClip;
private var arm_pos:Dot;
private static const WALLSLIDE_DAMPING_Y:Number = 0.85;
public static const LEFT:int = 8;
public static const DAMPING_STEP:Number = 0.001;
private static const JUMP_DELAY:Number = 5.8;
private static const SWING_DAMPING_X:Number = 0.99;
public static const DOWN_RIGHT:int = 32;
public static const SWINGING:int = 8;
public static const HEIGHT:int = 42;
public static const NUM_STARS:int = 20;
public static const SCALE:Number = 0.015625;
public static const SPEED:Number = 7.5;
public static const EXTEND_ROPE_OFF_DELAY:int = 10;
public static const HURT_DELAY:int = 50;
public static const FALL_RIGHT:int = 64;
public static const WALLSLIDE_DELAY:int = 25;
private static const DAMPING_X:Number = 0.55;
private static const DAMPING_Y:Number = 0.99;
private static const MIN_KICK = 1.5;
public static const OUCH_DEATH_DELAY:int = 20;
private static const LOST:int = 4;
public static const WALL_RIGHT:int = 0x0100;
private static const JUMP_DECAY:Number = 0.7;
public static const scale:int = 64;
public static const UP_LEFT:int = 128;
public static const ROPE_ALPHA_FADE:Number = 0.1;
public static const FALL_LEFT:int = 128;
public static const MAX_ROPE_LENGTH:int = 800;
public static const RUNNING_RIGHT:int = 2;
public static const UP_RIGHT:int = 16;
public static const JUMP_FRAME_DELAY = 3;
private static const MAX_KICK = 4;
public static const WALL_LEFT:int = 0x0200;
public static const DEAD:int = 16;
public static const SWING_FLOOR_DELAY = 5;
public static const MAX_ROPE_SPEED:Number = 10;
public static const JUMP_LEFT:int = 32;
private static const READY:int = 1;
public static const DOWN_LEFT:int = 64;
private static const GRAVITY_X:Number = 0;
private static const GRAVITY_Y:Number = 1.3;
private static const FLOOR_DEPTH:int = 6;
public static const WAIT_LEFT:int = 8;
private static const FORCED_WALLSLIDE_DAMPING_Y:Number = 0.6;
public static const RUNNING:int = 1;
public static const DOWN:int = 4;
public static const WIDTH:int = 24;
public static const READY_DELAY:int = 2;
public static const THROW_DELAY:int = 2;
public static const JUMP_RIGHT:int = 16;
public static const RUNNING_LEFT:int = 1;
public static const WAIT_RIGHT:int = 4;
public static const UP:int = 1;
private static const THROW:int = 2;
public static const MIN_ROPE_SPEED:Number = 3;
public static const JUMPING:int = 2;
public static const STEALTH:int = 4;
public static const STEALTH_ANIM:int = 0x0400;
public static const OUCH_DELAY:int = 10;
public static const RIGHT:int = 2;
public function Player(_arg1:MovieClip, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:Game){
debug_key = false;
super(_arg3, _arg4);
state = STEALTH;
dir = RIGHT;
colliding = false;
crushed = false;
falling = false;
firing_state = 0;
jump_pressed = false;
wallslide_count = 0;
walljump_left = false;
walljump_right = false;
jump_frame_count = 0;
extend_rope_off_count = 0;
jump_count = 0;
rope_speed = MIN_ROPE_SPEED;
arm_state = 0;
anim_state = 0;
throw_count = 0;
ready_count = 0;
swing_floor_count = 0;
running = false;
active = true;
shot_below = false;
chameleon = false;
chameleon_pickup = false;
key_lock = false;
this.g = _arg5;
this.mc = _arg1;
this.stealth_mask = _arg2;
_arg1.x = (last_mc_x = (_arg3 >> 0));
_arg1.y = (last_mc_y = ((_arg4 >> 0) + (HEIGHT >> 1)));
map_x = ((_arg3 * SCALE) >> 0);
map_y = ((_arg4 * SCALE) >> 0);
grid_x = (_arg3 * SCALE);
grid_y = (_arg4 * SCALE);
swing_kick = MIN_KICK;
platform = ((_arg5.block_map[(map_y + 1)][map_x] is Clip)) ? _arg5.block_map[(map_y + 1)][map_x].b : null;
if (platform == null){
state = JUMPING;
};
health = new HiddenInt(3);
NitromeGame.timeline.health_panel.gotoAndStop("_3");
collision_rect = new Rect(0, 0, 0, 0);
updateCollisionRect();
collision_array = new Array(4);
map_rect = _arg5.scroller.map_rect;
scroll_rect = new Rect(NitromeGame.timeline.scroll_border.x, NitromeGame.timeline.scroll_border.y, NitromeGame.timeline.scroll_border.width, NitromeGame.timeline.scroll_border.height);
NitromeGame.timeline.scroll_border.visible = false;
scroll_x = 0;
scroll_y = scroll_rect.height;
scroll_target_x = ((-(_arg1.x) + scroll_rect.x) + scroll_x);
scroll_target_y = ((-(_arg1.y) + scroll_rect.y) + scroll_y);
scroll_target_x = Math.min(0, scroll_target_x);
scroll_target_y = Math.min(0, scroll_target_y);
scroll_target_x = Math.max(((-(_arg5.scroller.width) * scale) + Game.WIDTH), scroll_target_x);
scroll_target_y = Math.max(((-(_arg5.scroller.height) * scale) + Game.HEIGHT), scroll_target_y);
_arg5.canvas.x = ((0.1 + scroll_target_x) >> 0);
_arg5.canvas.y = ((0.1 + scroll_target_y) >> 0);
virtual_canvas_x = _arg5.canvas.x;
virtual_canvas_y = _arg5.canvas.y;
scrolling();
_arg5.scroller.reset();
damping_x = DAMPING_X;
rope = [];
stars = [];
arm_pos = new Dot();
left_arm = new LeftArmMC();
right_arm = new RightArmMC();
left_stealth_arm = new LeftArmMC();
right_stealth_arm = new RightArmMC();
_arg5.player_holder.addChild(left_arm);
_arg5.player_holder.addChild(right_arm);
_arg2.addChild(left_stealth_arm);
_arg2.addChild(right_stealth_arm);
stealth_clip = new StealthClip(_arg2, 80, 80);
_arg5.player_holder.addChild(stealth_clip);
stealth_clip.bitmap.x = (-(stealth_clip.bitmap.width) * 0.5);
stealth_clip.bitmap.y = -(stealth_clip.bitmap.height);
stealth_pressed = false;
stealth_outline = new StealthOutlineMC();
stealth_outline.blendMode = BlendMode.OVERLAY;
_arg5.player_holder.addChild(stealth_outline);
stealth_outline.alpha = 0;
eye_glow = new EyeGlowMC();
eye_glow.alpha = 0;
_arg5.player_holder.addChild(eye_glow);
cham_clip = new ChameleonMC();
_arg5.player_holder.addChild(cham_clip);
cham_shape = new Shape();
cham_shape_mask = new ChameleonMC();
cham_shape_mask.cacheAsBitmap = true;
cham_shape.cacheAsBitmap = true;
cham_shape.mask = cham_shape_mask;
cham_mask = new Shape();
_arg5.player_holder.addChild(cham_mask);
cham_clip.mask = cham_mask;
cham_rect = new Rect(-30, -60, 60, 0);
_arg5.player_holder.addChild(cham_shape);
_arg5.player_holder.addChild(cham_shape_mask);
wall_slide_left = new WallSlideLeftMC();
wall_slide_right = new WallSlideRightMC();
wall_slide_left.alpha = 0;
wall_slide_right.alpha = 0;
_arg5.player_holder.addChild(wall_slide_left);
_arg5.player_holder.addChild(wall_slide_right);
trail_holder = new Sprite();
left_trail_holder = new Shape();
right_trail_holder = new Shape();
_arg5.player_holder.addChild(trail_holder);
trail_holder.addChild(left_trail_holder);
trail_holder.addChild(right_trail_holder);
point = new Point();
point = Util.localToLocal(point, _arg1.body.left_eye, _arg5.canvas);
eye_trail_left = new Trail(point.x, point.y, 7, 0.6);
point = Util.localToLocal(point, _arg1.body.right_eye, _arg5.canvas);
eye_trail_right = new Trail(point.x, point.y, 7, 0.6);
lockrope = false;
Key.forceClearKeys();
}
public function updateArms():void{
if (((((ouch) || ((state == STEALTH)))) || (((!((g.spider == null))) && ((state == RUNNING)))))){
right_stealth_arm.visible = false;
left_stealth_arm.visible = false;
right_arm.visible = false;
left_arm.visible = false;
return;
};
if (dir == RIGHT){
left_arm.visible = false;
right_arm.visible = mc.visible;
left_stealth_arm.visible = false;
right_stealth_arm.visible = true;
} else {
if (dir == LEFT){
right_arm.visible = false;
left_arm.visible = mc.visible;
right_stealth_arm.visible = false;
left_stealth_arm.visible = true;
};
};
if (firing_state){
if (firing_state == READY){
left_arm.rotation = 0;
left_arm.gotoAndStop("ready");
right_arm.rotation = 0;
right_arm.gotoAndStop("ready");
left_stealth_arm.rotation = 0;
left_stealth_arm.gotoAndStop("ready");
right_stealth_arm.rotation = 0;
right_stealth_arm.gotoAndStop("ready");
} else {
if ((((firing_state == THROW)) && ((throw_count > 0)))){
if (anchor != null){
if (!anchor.locked){
if (dir == LEFT){
arm_angle = (Game.ONE80DIVIDEDBYPI * anchor.rope.atan2());
} else {
if (dir == RIGHT){
arm_angle = (Game.ONE80DIVIDEDBYPI * anchor.rope.atan2());
arm_angle = (arm_angle + 180);
};
};
} else {
if (rope_end != null){
if (dir == LEFT){
arm_angle = (Game.ONE80DIVIDEDBYPI * rope_end.atan2());
} else {
if (dir == RIGHT){
arm_angle = (Game.ONE80DIVIDEDBYPI * rope_end.atan2());
arm_angle = (arm_angle + 180);
};
};
};
};
arm_state = sideOf(arm_angle);
left_arm.rotation = arm_angle;
right_arm.rotation = arm_angle;
left_stealth_arm.rotation = arm_angle;
right_stealth_arm.rotation = arm_angle;
};
if (arm_state == RIGHT){
left_arm.gotoAndStop("right");
right_arm.gotoAndStop("right");
left_stealth_arm.gotoAndStop("right");
right_stealth_arm.gotoAndStop("right");
} else {
if (arm_state == LEFT){
left_arm.gotoAndStop("left");
right_arm.gotoAndStop("left");
left_stealth_arm.gotoAndStop("left");
right_stealth_arm.gotoAndStop("left");
};
};
} else {
left_arm.rotation = 0;
right_arm.rotation = 0;
left_stealth_arm.rotation = 0;
right_stealth_arm.rotation = 0;
if ((((state == RUNNING)) && (running))){
left_arm.gotoAndStop("run_rest");
right_arm.gotoAndStop("run_rest");
left_stealth_arm.gotoAndStop("run_rest");
right_stealth_arm.gotoAndStop("run_rest");
} else {
if ((((((state == RUNNING)) && (!(running)))) || ((((state == SWINGING)) && ((collisions & DOWN)))))){
left_arm.gotoAndStop("wait_rest");
right_arm.gotoAndStop("wait_rest");
left_stealth_arm.gotoAndStop("wait_rest");
right_stealth_arm.gotoAndStop("wait_rest");
} else {
if ((((state == JUMPING)) && (!(falling)))){
left_arm.gotoAndStop("jump_rest");
right_arm.gotoAndStop("jump_rest");
left_stealth_arm.gotoAndStop("jump_rest");
right_stealth_arm.gotoAndStop("jump_rest");
} else {
if ((((((((((state == JUMPING)) && (falling))) && ((wallslide_count == 0)))) && (!((collisions & DOWN))))) || ((state == SWINGING)))){
left_arm.gotoAndStop("fall_rest");
right_arm.gotoAndStop("fall_rest");
left_stealth_arm.gotoAndStop("fall_rest");
right_stealth_arm.gotoAndStop("fall_rest");
} else {
if ((((((state == JUMPING)) && (falling))) && (wallslide_count))){
left_arm.gotoAndStop("wall_rest");
right_arm.gotoAndStop("wall_rest");
left_stealth_arm.gotoAndStop("wall_rest");
right_stealth_arm.gotoAndStop("wall_rest");
};
};
};
};
};
};
};
} else {
left_arm.rotation = 0;
right_arm.rotation = 0;
left_stealth_arm.rotation = 0;
right_stealth_arm.rotation = 0;
if ((((state == RUNNING)) && (running))){
left_arm.gotoAndStop("run_rest");
right_arm.gotoAndStop("run_rest");
left_stealth_arm.gotoAndStop("run_rest");
right_stealth_arm.gotoAndStop("run_rest");
} else {
if ((((((state == RUNNING)) && (!(running)))) || ((((state == SWINGING)) && ((collisions & DOWN)))))){
left_arm.gotoAndStop("wait_rest");
right_arm.gotoAndStop("wait_rest");
left_stealth_arm.gotoAndStop("wait_rest");
right_stealth_arm.gotoAndStop("wait_rest");
} else {
if ((((state == JUMPING)) && (!(falling)))){
left_arm.gotoAndStop("jump_rest");
right_arm.gotoAndStop("jump_rest");
left_stealth_arm.gotoAndStop("jump_rest");
right_stealth_arm.gotoAndStop("jump_rest");
} else {
if ((((((((((state == JUMPING)) && (falling))) && ((wallslide_count == 0)))) && (!((collisions & DOWN))))) || ((state == SWINGING)))){
left_arm.gotoAndStop("fall_rest");
right_arm.gotoAndStop("fall_rest");
left_stealth_arm.gotoAndStop("fall_rest");
right_stealth_arm.gotoAndStop("fall_rest");
} else {
if ((((((state == JUMPING)) && (falling))) && (wallslide_count))){
left_arm.gotoAndStop("wall_rest");
right_arm.gotoAndStop("wall_rest");
left_stealth_arm.gotoAndStop("wall_rest");
right_stealth_arm.gotoAndStop("wall_rest");
};
};
};
};
};
};
if (mc.body != null){
arm_pos = ArmPos.getPos(arm_pos, mc.currentLabel, mc.body.currentFrame);
} else {
arm_pos = ArmPos.getPos(arm_pos, mc.currentLabel);
};
left_stealth_arm.x = arm_pos.x;
left_stealth_arm.y = arm_pos.y;
right_stealth_arm.x = arm_pos.x;
right_stealth_arm.y = arm_pos.y;
left_arm.x = (arm_pos.x + mc.x);
left_arm.y = (arm_pos.y + mc.y);
right_arm.x = (arm_pos.x + mc.x);
right_arm.y = (arm_pos.y + mc.y);
if (state == STEALTH){
right_stealth_arm.visible = false;
left_stealth_arm.visible = false;
right_arm.visible = false;
left_arm.visible = false;
};
}
public function enterChameleonMode():void{
if (((chameleon) || (!(chameleon_pickup)))){
return;
};
chameleon = true;
cham_rect.height = 0;
cham_shape.graphics.clear();
cham_mask.graphics.clear();
cham_clip.alpha = 1;
g.chameleon();
chameleon_pickup = false;
NitromeGame.sound_manager.playSound("cammo");
}
public function createRope():void{
rope = [];
rope_end = new Rope(anchor, this);
rope.push(rope_end);
if (rope_end.b.y > rope_end.a.y){
if (rope_end.rest_len > HEIGHT){
rope_end.rest_len = (rope_end.rest_len - (HEIGHT * 0.6));
} else {
rope_end.rest_len = (rope_end.rest_len * 0.8);
};
rope_end.stiffness = (rope_end.stiffness * 0.3);
};
total_rope_length = (rope_end_length = rope_end.rest_len);
state = SWINGING;
damping_x = SWING_DAMPING_X;
falling = true;
platform = null;
}
public function tidyUp():void{
var _local1:int;
collision_rect = new Rect();
mc.visible = false;
left_arm.visible = false;
right_arm.visible = false;
stealth_clip.visible = false;
stealth_outline.visible = false;
wall_slide_right.visible = false;
wall_slide_left.visible = false;
right_trail_holder.graphics.clear();
left_trail_holder.graphics.clear();
g.rope_holder.graphics.clear();
g.mouse_pressed = false;
running = false;
g.rope_holder.graphics.clear();
if (anchor != null){
anchor.convertToStar();
};
_local1 = 0;
while (_local1 < stars.length) {
stars[_local1].kill();
_local1++;
};
map_x = (map_y = 0);
}
public function collide(_arg1:Encounter):Boolean{
return (_arg1.intersects(collision_rect));
}
public function updateAnimState(_arg1:MovieClip):void{
var _local2:Boolean;
_local2 = false;
if (!ouch){
if (((!((g.spider == null))) && ((state == RUNNING)))){
if (_arg1.currentLabel != "spider"){
_arg1.gotoAndStop("spider");
};
} else {
if ((((state == RUNNING)) && (running))){
if (dir == LEFT){
if (_arg1.currentLabel != "run_left"){
_arg1.gotoAndStop("run_left");
};
} else {
if (dir == RIGHT){
if (_arg1.currentLabel != "run_right"){
_arg1.gotoAndStop("run_right");
};
};
};
} else {
if ((((((state == RUNNING)) && (!(running)))) || ((((state == SWINGING)) && ((swing_floor_count > 0)))))){
if (dir == LEFT){
if (((((!((platform == null))) && ((collision_rect.x <= (platform.x + 5))))) && (((!((platform.stacked & LEFT))) || ((((map_x > 0)) && ((g.stack_map[map_y][(map_x - 1)] > -1)))))))){
if (_arg1.currentLabel != "wait_in_left"){
_arg1.gotoAndStop("wait_in_left");
};
} else {
if (_arg1.currentLabel != "wait_left"){
_arg1.gotoAndStop("wait_left");
};
};
} else {
if (dir == RIGHT){
if (((((!((platform == null))) && (((collision_rect.x + collision_rect.width) >= ((platform.x + platform.width) - 5))))) && (((!((platform.stacked & RIGHT))) || ((((map_x < (g.scroller.width - 1))) && ((g.stack_map[map_y][(map_x + 1)] > -1)))))))){
if (_arg1.currentLabel != "wait_in_right"){
_arg1.gotoAndStop("wait_in_right");
};
} else {
if (_arg1.currentLabel != "wait_right"){
_arg1.gotoAndStop("wait_right");
};
};
};
};
} else {
if ((((state == JUMPING)) && (!(falling)))){
if (dir == LEFT){
if (_arg1.currentLabel != "jump_left"){
_arg1.gotoAndStop("jump_left");
};
} else {
if (dir == RIGHT){
if (_arg1.currentLabel != "jump_right"){
_arg1.gotoAndStop("jump_right");
};
};
};
} else {
if ((((((state == JUMPING)) && (falling))) && ((wallslide_count == 0)))){
if (dir == LEFT){
if (_arg1.currentLabel != "fall_left"){
_arg1.gotoAndStop("fall_left");
};
} else {
if (dir == RIGHT){
if (_arg1.currentLabel != "fall_right"){
_arg1.gotoAndStop("fall_right");
};
};
};
} else {
if (state == SWINGING){
if (dir == LEFT){
if (_arg1.currentLabel != "swing_left"){
_arg1.gotoAndStop("swing_left");
};
} else {
if (dir == RIGHT){
if (_arg1.currentLabel != "swing_right"){
_arg1.gotoAndStop("swing_right");
};
};
};
} else {
if ((((((state == JUMPING)) && (falling))) && (wallslide_count))){
if (dir == LEFT){
if (wall_slide_left.alpha < 1){
wall_slide_left.alpha = (wall_slide_left.alpha + 0.1);
};
if (_arg1.currentLabel != "wall_left"){
_arg1.gotoAndStop("wall_left");
wall_slide_right.alpha = 0;
};
} else {
if (dir == RIGHT){
if (wall_slide_right.alpha < 1){
wall_slide_right.alpha = (wall_slide_right.alpha + 0.1);
};
if (_arg1.currentLabel != "wall_right"){
_arg1.gotoAndStop("wall_right");
wall_slide_left.alpha = 0;
};
};
};
} else {
if (state == STEALTH){
if (_arg1.currentLabel != "stealth"){
_arg1.gotoAndStop("stealth");
};
};
};
};
};
};
};
};
};
} else {
if (dir == LEFT){
if (_arg1.currentLabel != "ouch_left"){
_arg1.gotoAndStop("ouch_left");
};
} else {
if (dir == RIGHT){
if (_arg1.currentLabel != "ouch_right"){
_arg1.gotoAndStop("ouch_right");
};
};
};
};
}
public function checkEvents():void{
if (g.event_map[grid_y][grid_x] > -1){
if (g.current_event == null){
g.current_event = g.events[g.event_map[grid_y][grid_x]];
g.current_event.active = true;
} else {
if (g.current_event.id != g.event_map[grid_y][grid_x]){
g.current_event.active = false;
};
};
} else {
if (g.current_event != null){
g.current_event.active = false;
};
};
}
public function debug():void{
g.debug.lineStyle(2, 0xFF00);
collision_rect.draw(g.debug);
i = 0;
while (i < collision_array.length) {
if (((((!((((collision_array[i] >= 0)) || ((collision_array[i] <= 0))))) && (!((collision_array[i] == null))))) && (collision_array[i].block))){
collision_array[i].debug();
};
i++;
};
}
public function updateMC():void{
last_mc_x = mc.x;
last_mc_y = mc.y;
mc.x = ((x + 0.1) >> 0);
mc.y = (((y + 0.1) >> 0) + (HEIGHT >> 1));
stealth_clip.x = mc.x;
stealth_clip.y = mc.y;
cham_clip.x = mc.x;
cham_clip.y = mc.y;
cham_mask.x = mc.x;
cham_mask.y = mc.y;
cham_shape.x = mc.x;
cham_shape.y = mc.y;
cham_shape_mask.x = mc.x;
cham_shape_mask.y = mc.y;
if (chameleon){
cham_mask.graphics.clear();
cham_mask.graphics.beginFill(0xFFFFFF);
cham_mask.graphics.drawRect(cham_rect.x, cham_rect.y, cham_rect.width, cham_rect.height);
cham_mask.graphics.endFill();
if (cham_rect.height < (cham_rect.width + 9)){
cham_rect.height = (cham_rect.height + 2);
cham_shape.graphics.clear();
cham_shape.graphics.lineStyle(2, 0xFF00);
cham_shape.graphics.moveTo(cham_rect.x, (cham_rect.y + cham_rect.height));
cham_shape.graphics.lineTo((cham_rect.x + cham_rect.width), (cham_rect.y + cham_rect.height));
cham_shape.graphics.lineStyle(2, 0xFF00, 0.7);
cham_shape.graphics.moveTo(cham_rect.x, ((cham_rect.y + cham_rect.height) - 2));
cham_shape.graphics.lineTo((cham_rect.x + cham_rect.width), ((cham_rect.y + cham_rect.height) - 2));
cham_shape.graphics.lineStyle(2, 0xFF00, 0.3);
cham_shape.graphics.moveTo(cham_rect.x, ((cham_rect.y + cham_rect.height) - 4));
cham_shape.graphics.lineTo((cham_rect.x + cham_rect.width), ((cham_rect.y + cham_rect.height) - 4));
};
} else {
if (cham_rect.height > 0){
if (cham_clip.alpha > 0){
cham_clip.alpha = (cham_clip.alpha - 0.25);
} else {
cham_rect.height = 0;
cham_shape.graphics.clear();
cham_mask.graphics.clear();
};
};
};
if ((((state == STEALTH)) && (!(chameleon)))){
stealth_outline.x = (eye_glow.x = mc.x);
stealth_outline.y = (eye_glow.y = mc.y);
if (stealth_clip.alpha < 1){
stealth_clip.alpha = (stealth_clip.alpha + 0.1);
};
if (stealth_outline.alpha < 1){
stealth_outline.alpha = (stealth_outline.alpha + 0.2);
};
if (eye_glow.alpha < 1){
eye_glow.alpha = (eye_glow.alpha + 0.2);
};
} else {
if (stealth_clip.alpha > 0){
stealth_clip.alpha = (stealth_clip.alpha - 0.02);
};
if (stealth_outline.alpha > 0){
stealth_outline.alpha = (stealth_outline.alpha - 0.2);
};
if (eye_glow.alpha > 0){
eye_glow.alpha = 0;
};
if (chameleon){
if (mc.alpha > 0){
mc.alpha = (mc.alpha - 0.05);
right_arm.alpha = (left_arm.alpha = mc.alpha);
};
} else {
if (mc.alpha != 1){
mc.alpha = 1;
right_arm.alpha = (left_arm.alpha = mc.alpha);
};
};
};
if (((((((!(ouch)) && ((state == JUMPING)))) && (falling))) && (wallslide_count))){
wall_slide_left.x = (mc.x - (WIDTH >> 1));
wall_slide_right.x = (mc.x + (WIDTH >> 1));
wall_slide_left.y = (wall_slide_right.y = mc.y);
} else {
if (wall_slide_left.alpha > 0){
wall_slide_left.alpha = (wall_slide_left.alpha - 0.1);
if (((!((wallslide_block == null))) && (wallslide_block.moving_block))){
wall_slide_left.x = ((wallslide_block.x + wallslide_block.width) - 1);
};
};
if (wall_slide_right.alpha > 0){
wall_slide_right.alpha = (wall_slide_right.alpha - 0.1);
if (((!((wallslide_block == null))) && (wallslide_block.moving_block))){
wall_slide_right.x = wallslide_block.x;
};
};
};
updateTrails();
if ((((state == RUNNING)) && (running))){
if (dir == RIGHT){
if (left_trail_holder.alpha > 0){
left_trail_holder.alpha = (left_trail_holder.alpha - 0.1);
} else {
if (right_trail_holder.alpha < 1){
right_trail_holder.alpha = (right_trail_holder.alpha + 0.2);
};
};
} else {
if (dir == LEFT){
if (right_trail_holder.alpha > 0){
right_trail_holder.alpha = (right_trail_holder.alpha - 0.1);
} else {
if (left_trail_holder.alpha < 1){
left_trail_holder.alpha = (left_trail_holder.alpha + 0.2);
};
};
};
};
} else {
if (right_trail_holder.alpha < 1){
right_trail_holder.alpha = (right_trail_holder.alpha + 0.2);
};
if (left_trail_holder.alpha < 1){
left_trail_holder.alpha = (left_trail_holder.alpha + 0.2);
};
};
if (left_trail_holder.alpha > 0){
left_trail_holder.graphics.clear();
left_trail_holder.graphics.moveTo(eye_trail_left.dots[(eye_trail_left.dots.length - 1)].x, eye_trail_left.dots[(eye_trail_left.dots.length - 1)].y);
i = 1;
while (i < eye_trail_left.dots.length) {
left_trail_holder.graphics.lineStyle(2, 0xFF00, (0.035 * i));
left_trail_holder.graphics.lineTo(eye_trail_left.dots[i].x, eye_trail_left.dots[i].y);
i++;
};
};
if (right_trail_holder.alpha > 0){
right_trail_holder.graphics.clear();
right_trail_holder.graphics.moveTo(eye_trail_right.dots[(eye_trail_right.dots.length - 1)].x, eye_trail_right.dots[(eye_trail_right.dots.length - 1)].y);
i = 1;
while (i < eye_trail_right.dots.length) {
right_trail_holder.graphics.lineStyle(2, 0xFF00, (0.035 * i));
right_trail_holder.graphics.lineTo(eye_trail_right.dots[i].x, eye_trail_right.dots[i].y);
i++;
};
};
if (g.spider == null){
if (!(state & DEAD)){
if (NitromeGame.timeline.mouseX < 200){
if (scroll_x < scroll_rect.width){
scroll_x = (scroll_x + 4);
};
} else {
if (NitromeGame.timeline.mouseX > 350){
if (scroll_x > 0){
scroll_x = (scroll_x - 4);
};
};
};
if (NitromeGame.timeline.mouseX < 100){
if (scroll_x < scroll_rect.width){
scroll_x = (scroll_x + 4);
};
} else {
if (NitromeGame.timeline.mouseX > 450){
if (scroll_x > 0){
scroll_x = (scroll_x - 4);
};
};
};
if ((((((NitromeGame.timeline.mouseY > 300)) || ((((Math.abs((last_mc_y - mc.y)) > 2)) && ((last_mc_y < mc.y)))))) && ((scroll_y > 0)))){
scroll_y = (scroll_y - 2);
} else {
if ((((NitromeGame.timeline.mouseY < 100)) && ((scroll_y < (scroll_rect.height + 60))))){
scroll_y = (scroll_y + 2);
} else {
if (scroll_y < scroll_rect.height){
scroll_y = (scroll_y + 2);
} else {
if (scroll_y > scroll_rect.height){
scroll_y = (scroll_y - 2);
};
};
};
};
scroll_target_x = ((-(mc.x) + scroll_rect.x) + scroll_x);
scroll_target_y = ((-(mc.y) + scroll_rect.y) + scroll_y);
};
scrolling();
g.scroller.clipManager();
};
}
override public function toString():String{
var _local1:String;
_local1 = "";
if (state == RUNNING){
_local1 = "RUNNING";
} else {
if (state == JUMPING){
_local1 = "JUMPING";
} else {
if (state == DEAD){
_local1 = "DEAD";
} else {
if (state == SWINGING){
_local1 = "SWINGING";
} else {
if (state == STEALTH){
_local1 = "STEALTH";
};
};
};
};
};
return ((((((("(" + (x >> 0)) + ",") + (y >> 0)) + ",") + _local1) + ")"));
}
public function death():void{
if (((g.god_mode) || (!(active)))){
return;
};
active = false;
NitromeGame.sound_manager.playSound("aiiee");
g.addFX(mc.x, mc.y, g.bang_bitmap2);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.shake(5);
tidyUp();
g.gameOver();
}
public function addStar(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Star{
var _local5:Sprite;
var _local6:Star;
_local5 = new LiveStar();
g.star_holder.addChild(_local5);
_local5.x = (_arg1 >> 0);
_local5.y = (_arg2 >> 0);
_local6 = new Star(_arg1, _arg2, _arg3, _arg4, _local5, g);
stars.push(_local6);
return (_local6);
}
public function resolveCollision(_arg1):void{
var _local2:int;
var _local3:Rect;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
block = _arg1.b;
_local2 = block.sideOf((collision_rect.x + (WIDTH >> 1)), (collision_rect.y + (HEIGHT >> 1)));
_local3 = collision_rect.intersection(block);
if (_local3.width < _local3.height){
if ((_local2 & block.stacked)){
if ((((_local2 == UP)) || ((_local2 == DOWN)))){
if (x < (block.x + (scale >> 1))){
x = (block.x - (WIDTH >> 1));
px = x;
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
} else {
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
};
} else {
if ((((_local2 == LEFT)) || ((_local2 == RIGHT)))){
if (y < (block.y + (scale >> 1))){
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | DOWN);
} else {
y = ((block.y + block.height) + (HEIGHT >> 1));
collisions = (collisions | UP);
};
};
};
} else {
if (((!((block.stacked & LEFT))) && ((x < (block.x + (scale >> 1)))))){
x = (block.x - (WIDTH >> 1));
px = x;
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
} else {
if (!(block.stacked & RIGHT)){
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
} else {
if (y < (block.y + (scale >> 1))){
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | DOWN);
} else {
y = ((block.y + block.height) + (HEIGHT >> 1));
collisions = (collisions | UP);
};
};
};
};
} else {
if (_local3.height < _local3.width){
if ((_local2 & block.stacked)){
if ((((_local2 == UP)) || ((_local2 == DOWN)))){
if (x < (block.x + (scale >> 1))){
x = (block.x - (WIDTH >> 1));
px = x;
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
} else {
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
};
} else {
if ((((_local2 == LEFT)) || ((_local2 == RIGHT)))){
if (y < (block.y + (scale >> 1))){
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | DOWN);
} else {
y = ((block.y + block.height) + (HEIGHT >> 1));
collisions = (collisions | UP);
};
};
};
} else {
if (y < (block.y + (scale >> 1))){
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | DOWN);
if (!(((((state & JUMPING)) && (!(falling)))) || ((state == SWINGING)))){
platform = block;
state = RUNNING;
falling = false;
if (block.moving_block){
moving_sprite = _arg1.mc;
};
};
} else {
y = ((block.y + scale) + (HEIGHT >> 1));
collisions = (collisions | UP);
if ((((x >= block.x)) && ((x < (block.x + scale))))){
if (((!((platform == null))) && ((platform.x == block.x)))){
crushable = true;
};
} else {
if (((block.moving_block) || (((!((platform == null))) && (platform.moving_block))))){
if (x < (block.x + (scale >> 1))){
x = (block.x - (WIDTH >> 1));
} else {
x = ((block.x + scale) + (WIDTH >> 1));
};
};
};
};
};
} else {
if (_local3.width == _local3.height){
_local4 = (block.x + block.width);
_local5 = (block.y + block.height);
_local6 = x;
_local7 = (y - HEIGHT);
if ((((_local6 > _local4)) && ((_local7 > _local5)))){
if ((block.stacked & Rect.RIGHT)){
y = ((block.y + scale) + (HEIGHT >> 1));
collisions = (collisions | UP);
} else {
if ((block.stacked & DOWN)){
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
} else {
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
};
};
} else {
if ((((_local6 < _local4)) && ((_local7 > _local5)))){
if ((block.stacked & LEFT)){
y = ((block.y + block.height) + (HEIGHT >> 1));
collisions = (collisions | UP);
} else {
if ((block.stacked & UP)){
x = (block.x - (WIDTH >> 1));
px = x;
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
} else {
x = (block.x - (WIDTH >> 1));
px = x;
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
};
};
} else {
if ((((_local6 < _local4)) && ((_local7 < _local5)))){
if ((block.stacked & LEFT)){
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | DOWN);
} else {
if ((block.stacked & DOWN)){
x = (block.x - (WIDTH >> 1));
px = x;
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
} else {
x = (block.x - (WIDTH >> 1));
px = x;
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | LEFT);
if ((((((keys_pressed == LEFT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_left)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_left = false;
};
collisions = (collisions | DOWN);
if (!(((((state & JUMPING)) && (!(falling)))) || ((state == SWINGING)))){
platform = block;
state = RUNNING;
falling = false;
if (block.moving_block){
moving_sprite = _arg1.mc;
};
};
};
};
} else {
if ((((_local6 > _local4)) && ((_local7 < _local5)))){
if ((block.stacked & RIGHT)){
y = (block.y - (HEIGHT >> 1));
collisions = (collisions | DOWN);
} else {
if ((block.stacked & DOWN)){
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
} else {
x = ((block.x + scale) + (WIDTH >> 1));
px = x;
y = (block.y + (HEIGHT >> 1));
collisions = (collisions | RIGHT);
if ((((((keys_pressed == RIGHT)) && ((((block.stacked & UP)) || (((y - (HEIGHT >> 1)) > block.y)))))) && ((((block.stacked & DOWN)) || ((y < (block.y + block.height))))))){
if ((((state == JUMPING)) && (!(walljump_right)))){
wallslide_count = WALLSLIDE_DELAY;
};
wallslide_block = block;
walljump_right = false;
};
collisions = (collisions | DOWN);
if (!(((((state & JUMPING)) && (!(falling)))) || ((state == SWINGING)))){
platform = block;
state = RUNNING;
falling = false;
if (block.moving_block){
moving_sprite = _arg1.mc;
};
};
};
};
};
};
};
};
};
};
};
if (((((collisions) && ((state == SWINGING)))) && (block.moving_block))){
if ((collisions & LEFT)){
if (block.px < block.x){
x = (x + (block.x - block.px));
};
} else {
if ((collisions & RIGHT)){
if (block.px > block.x){
x = (x + (block.x - block.px));
};
} else {
if ((collisions & UP)){
if (block.py < block.y){
y = (y + (block.y - block.py));
};
};
};
};
};
updateCollisionRect();
}
public function levelComplete(_arg1:Encounter=null):void{
if (((!(active)) || (level_completed))){
return;
};
level_completed = true;
finish_item = _arg1;
}
public function updateStars():void{
if (stars.length >= NUM_STARS){
stars[0].kill();
stars.shift();
};
i = 0;
while (i < stars.length) {
stars[i].main();
if (stars[i].dead){
stars.splice(i, 1);
i--;
};
i++;
};
}
public function checkKeys():void{
var _local1:MovieClip;
var _local2:Sprite;
keys_pressed = 0;
if (state == RUNNING){
running = false;
if (((((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))) && (!(((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D))))))){
damping_x = DAMPING_X;
px = (px + SPEED);
dir = LEFT;
running = true;
keys_pressed = LEFT;
};
if (((((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))) && (!(((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A))))))){
damping_x = DAMPING_X;
px = (px - SPEED);
dir = RIGHT;
running = true;
keys_pressed = RIGHT;
};
if (((((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))) && (!(jump_pressed)))){
jump_pressed = true;
state = JUMPING;
jump_count = JUMP_DELAY;
jump_frame_count = JUMP_FRAME_DELAY;
py = (y + jump_count);
jump_count = (jump_count - JUMP_DECAY);
_local1 = new JumpMC();
if (platform.moving_block){
_local1.x = (x - platform.x);
moving_sprite.addChild(_local1);
} else {
_local1.x = mc.x;
_local1.y = mc.y;
g.effect_holder.addChild(_local1);
};
platform = null;
NitromeGame.sound_manager.playSound("jump");
} else {
if (((((((((((!((g.alert_state == Game.ACTIVE))) && (!(ouch)))) && (!(hurt)))) && (!(g.mouse_pressed)))) && (!(((((((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))) || (Key.isDown(Keyboard.LEFT)))) || (Key.isDown(Key.A))))))) && (((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S)))))){
state = STEALTH;
stealth_pressed = true;
(dir == LEFT);
if (!chameleon){
NitromeGame.sound_manager.playSound("wom");
};
};
};
} else {
if (state == JUMPING){
if (((walljump_left) || (walljump_right))){
if (walljump_left){
px = (px + SPEED);
dir = LEFT;
};
if (walljump_right){
px = (px - SPEED);
dir = RIGHT;
};
} else {
if ((wallslide_collisions & RIGHT)){
dir = RIGHT;
} else {
if ((wallslide_collisions & LEFT)){
dir = LEFT;
};
};
if (wallslide_count){
jump_pressed = false;
};
if (((((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))) && (!(((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D))))))){
damping_x = DAMPING_X;
px = (px + SPEED);
dir = LEFT;
keys_pressed = LEFT;
};
if (((((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))) && (!(((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A))))))){
damping_x = DAMPING_X;
px = (px - SPEED);
dir = RIGHT;
keys_pressed = RIGHT;
};
if (((((((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S)))) && (!(((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A))))))) && (!(((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D))))))){
wallslide_count = 0;
wallslide_collisions = 0;
};
};
if ((((jump_frame_count > 0)) || (((((((((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))) && (!(falling)))) && ((jump_count > 0)))) && (jump_pressed))))){
jump_frame_count--;
py = (py + jump_count);
jump_count = (jump_count - JUMP_DECAY);
};
if ((((((wallslide_count > 0)) && (!(jump_pressed)))) && (((((!(((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D))))) && (((((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))) && ((wallslide_collisions & RIGHT)))))) || (((((!(((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A))))) && (((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))))) && ((wallslide_collisions & LEFT)))))))){
jump_pressed = true;
falling = false;
state = JUMPING;
jump_count = JUMP_DELAY;
jump_frame_count = JUMP_FRAME_DELAY;
py = (y + jump_count);
jump_count = (jump_count - JUMP_DECAY);
platform = null;
wallslide_count = 0;
if ((wallslide_collisions & LEFT)){
walljump_right = true;
};
if ((wallslide_collisions & RIGHT)){
walljump_left = true;
};
NitromeGame.sound_manager.playSound("jump");
};
if (!falling){
walljump_left = (walljump_right = false);
};
} else {
if (state == SWINGING){
if ((((collisions == 0)) && ((rope_end.b.y > rope_end.a.y)))){
if (x < rope_end.a.x){
if (((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))){
px = (px + (rope_end.rx * swing_kick));
py = (py + (rope_end.ry * swing_kick));
};
} else {
if (x > rope_end.a.x){
if (((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))){
px = (px + (rope_end.lx * swing_kick));
py = (py + (rope_end.ly * swing_kick));
};
} else {
if (x == rope_end.a.x){
if (((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(Key.D)))){
px = (px + (rope_end.rx * swing_kick));
py = (py + (rope_end.ry * swing_kick));
} else {
if (((Key.isDown(Keyboard.LEFT)) || (Key.isDown(Key.A)))){
px = (px + (rope_end.lx * swing_kick));
py = (py + (rope_end.ly * swing_kick));
};
};
};
};
};
};
if (((((((lockrope) && (((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))))) && (!((collisions & UP))))) && ((rope_end.len > HEIGHT)))){
i = 0;
while (i < rope.length) {
rope[i].rest_len = (rope[i].rest_len - rope_speed);
i++;
};
total_rope_length = (total_rope_length - rope_speed);
if ((((rope_speed < MAX_ROPE_SPEED)) && ((total_rope_length > 100)))){
rope_speed = (rope_speed + ((MAX_ROPE_SPEED - rope_speed) * 0.1));
} else {
if (rope_speed > MIN_ROPE_SPEED){
rope_speed = (rope_speed + ((MIN_ROPE_SPEED - rope_speed) * 0.1));
};
};
} else {
if ((((((((((((rope_end.b.y > rope_end.a.y)) && ((total_rope_length < MAX_ROPE_LENGTH)))) && (((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S)))))) && (!((collisions & DOWN))))) && ((extend_rope_off_count == 0)))) && (!((((((rope_end.b.x > rope_end.a.x)) && ((collisions & RIGHT)))) || ((((rope_end.b.x < rope_end.a.x)) && ((collisions & LEFT))))))))){
i = 0;
while (i < rope.length) {
rope[i].rest_len = (rope[i].rest_len + rope_speed);
i++;
};
total_rope_length = (total_rope_length + rope_speed);
if ((((rope_speed < MAX_ROPE_SPEED)) && ((total_rope_length < (MAX_ROPE_LENGTH - 100))))){
rope_speed = (rope_speed + ((MAX_ROPE_SPEED - rope_speed) * 0.1));
} else {
if (rope_speed > MIN_ROPE_SPEED){
rope_speed = (rope_speed + ((MIN_ROPE_SPEED - rope_speed) * 0.1));
};
};
} else {
if (((((((((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))) && (!((collisions & UP))))) && ((((collisions & LEFT)) || ((collisions & RIGHT)))))) && ((rope_end.len <= HEIGHT)))){
rope_end = null;
rope = [];
anchor = null;
falling = false;
jump_pressed = true;
state = JUMPING;
jump_count = JUMP_DELAY;
jump_frame_count = JUMP_FRAME_DELAY;
py = (y + jump_count);
jump_count = (jump_count - JUMP_DECAY);
NitromeGame.sound_manager.playSound("jump");
platform = null;
} else {
rope_speed = MIN_ROPE_SPEED;
};
};
};
} else {
if (state == STEALTH){
};
};
};
};
if (!((((((Key.isDown(Keyboard.UP)) || (Key.isDown(Key.W)))) || (walljump_left))) || (walljump_right))){
jump_pressed = false;
};
if (!((Key.isDown(Keyboard.DOWN)) || (Key.isDown(Key.S)))){
stealth_pressed = false;
if (state == STEALTH){
state = ((platform == null)) ? JUMPING : RUNNING;
};
};
if ((((((((firing_state == 0)) && (!((state == STEALTH))))) && (g.mouse_pressed))) && (!(ouch)))){
if (chameleon){
exitChameleonMode();
};
firing_state = READY;
vx = (g.canvas.mouseX - x);
vy = (g.canvas.mouseY - y);
dist = Math.sqrt(((vx * vx) + (vy * vy)));
dx = (vx / dist);
dy = (vy / dist);
ready_count = READY_DELAY;
} else {
if (firing_state == READY){
if (--ready_count <= 0){
_local2 = new LiveStar();
g.star_holder.addChild(_local2);
anchor = new RopeAnchor(x, y, dx, dy, _local2, g);
rope_alpha = 0;
lockrope = false;
firing_state = THROW;
throw_count = THROW_DELAY;
};
} else {
if ((((firing_state == THROW)) && (!(g.mouse_pressed)))){
if (--throw_count <= 0){
firing_state = 0;
};
} else {
if (anchor == null){
throw_count--;
};
};
};
};
if (ouch){
g.mouse_pressed = false;
};
if (!g.mouse_pressed){
if (((!((anchor == null))) && (anchor.active))){
anchor.convertToStar();
};
};
}
public function collision():void{
crushable = false;
if ((map_rect.x + (map_rect.width - 1)) < (x + (WIDTH >> 1))){
x = (px = ((-((WIDTH >> 1)) + map_rect.x) + (map_rect.width - 1)));
};
if ((map_rect.y + (map_rect.height - 1)) < y){
death();
return;
};
if (map_rect.x >= (x - (WIDTH >> 1))){
x = (px = (map_rect.x + (WIDTH >> 1)));
};
if (map_rect.y >= (y - (HEIGHT >> 1))){
y = (py = (map_rect.y + (HEIGHT >> 1)));
};
map_x = ((x - (WIDTH >> 1)) * SCALE);
map_y = ((y - (HEIGHT >> 1)) * SCALE);
if (map_y >= (g.scroller.height - 1)){
map_y = (g.scroller.height - 2);
};
collision_array[0] = g.block_map[map_y][map_x];
collision_array[1] = g.block_map[map_y][(map_x + 1)];
collision_array[2] = g.block_map[(map_y + 1)][map_x];
collision_array[3] = g.block_map[(map_y + 1)][(map_x + 1)];
old_grid_x = grid_x;
old_grid_y = grid_y;
grid_x = (x * SCALE);
grid_y = (y * SCALE);
if (g.scent_map[grid_y][grid_x] > -1){
g.scent_map[grid_y][grid_x] = g.frame_count;
};
if (((!((grid_x == old_grid_x))) && (!((grid_y == old_grid_y))))){
if (g.scent_map[old_grid_y][grid_x] > -1){
g.scent_map[old_grid_y][grid_x] = g.frame_count;
};
if (g.scent_map[grid_y][old_grid_x] > -1){
g.scent_map[grid_y][old_grid_x] = g.frame_count;
};
};
i = 0;
while (i < collision_array.length) {
if (((((!((((collision_array[i] <= 0)) || ((collision_array[i] >= 0))))) && (!((collision_array[i] == null))))) && (collision_array[i].block))){
block = collision_array[i].b;
if (block.intersects(collision_rect)){
resolveCollision(collision_array[i]);
};
};
i++;
};
if ((((((((collisions & UP)) && ((collisions & DOWN)))) && (crushable))) || ((((collisions & RIGHT)) && ((collisions & LEFT)))))){
death();
};
if (((!((platform == null))) || (!(falling)))){
wallslide_count = 0;
wallslide_collisions = 0;
} else {
if (collisions > 0){
wallslide_collisions = collisions;
if ((collisions & DOWN)){
extend_rope_off_count = EXTEND_ROPE_OFF_DELAY;
};
};
};
if ((((state == SWINGING)) && ((collisions & DOWN)))){
swing_floor_count = SWING_FLOOR_DELAY;
} else {
if (state == SWINGING){
swing_floor_count--;
};
};
}
public function stealthScreenGrab():void{
mc.visible = false;
left_arm.visible = false;
right_arm.visible = false;
stealth_outline.visible = false;
eye_glow.visible = false;
point = Util.localToLocal(point, mc, NitromeGame.timeline);
stealth_clip.grab((-(point.x) - stealth_clip.bitmap.x), (-(point.y) - stealth_clip.bitmap.y));
mc.visible = true;
stealth_outline.visible = true;
eye_glow.visible = true;
}
public function updateTrails():void{
if (!chameleon){
if (mc.body != null){
if (dir == LEFT){
point = Util.localToLocal(point, mc.body.left_eye, g.canvas);
eye_trail_left.move(point.x, point.y);
eye_trail_left.main();
point = Util.localToLocal(point, mc.body.right_eye, g.canvas);
eye_trail_right.move(point.x, point.y);
eye_trail_right.main();
} else {
if (dir == RIGHT){
point = Util.localToLocal(point, mc.body.right_eye, g.canvas);
eye_trail_left.move(point.x, point.y);
eye_trail_left.main();
point = Util.localToLocal(point, mc.body.left_eye, g.canvas);
eye_trail_right.move(point.x, point.y);
eye_trail_right.main();
};
};
};
} else {
if (cham_clip.body != null){
if (dir == LEFT){
point = Util.localToLocal(point, cham_clip.body.left_eye, g.canvas);
eye_trail_left.move(point.x, point.y);
eye_trail_left.main();
point = Util.localToLocal(point, cham_clip.body.right_eye, g.canvas);
eye_trail_right.move(point.x, point.y);
eye_trail_right.main();
} else {
if (dir == RIGHT){
point = Util.localToLocal(point, cham_clip.body.right_eye, g.canvas);
eye_trail_left.move(point.x, point.y);
eye_trail_left.main();
point = Util.localToLocal(point, cham_clip.body.left_eye, g.canvas);
eye_trail_right.move(point.x, point.y);
eye_trail_right.main();
};
};
};
};
}
public function updateRope():void{
var _local1:int;
var _local2:RopeJoint;
var _local3:int;
var _local4:int;
var _local5:Number;
var _local6:Rope;
var _local7:Number;
var _local8:Number;
if (anchor != null){
anchor.main();
if (((((!((anchor == null))) && (anchor.locked))) && (anchor.active))){
i = 1;
while (i < rope.length) {
if (rope[i].a.block.moving_block){
rope[i].a.main();
};
i++;
};
if (lockrope){
rope_end.updateSpring();
} else {
rope_end.updateLine();
};
rope_end.a.pin();
map_x = ((x * SCALE) >> 0);
map_y = ((y * SCALE) >> 0);
if (map_y >= g.scroller.height){
return;
};
if ((((g.stack_map[map_y][map_x] > Game.EMPTY)) && (!((g.stack_map[map_y][map_x] & Rect.TEMP))))){
resolveCollision(g.block_map[map_y][map_x]);
rope_end.updateLine();
};
if (!lockrope){
if (rope_end.b.y <= rope_end.a.y){
shot_below = true;
};
if ((((collisions & DOWN)) && ((rope_end.b.y <= rope_end.a.y)))){
rope_end.rest_len = rope_end.len;
};
if ((((collisions & DOWN)) || ((rope_end.b.y > rope_end.a.y)))){
lockrope = true;
if (shot_below){
rope_end.rest_len = rope_end.len;
};
shot_below = false;
};
};
if (((((!((rope_end.stiffness == 0.5))) && ((((rope_end.len < rope_end_length)) || ((rope_end.len < HEIGHT)))))) && ((y > rope_end.a.y)))){
rope_end.stiffness = 0.5;
};
i = 0;
while (i < (rope.length - 1)) {
bc = RayCast.cast(rope[i], g.block_map, true);
if (((!((bc == null))) && (bc.block.cutting))){
g.mouse_pressed = false;
};
i++;
};
bc = RayCast.cast(rope_end, g.block_map);
if (bc != null){
if (bc.block.cutting){
g.mouse_pressed = false;
};
_local1 = 0;
while (_local1 < 100) {
if (bc == null){
break;
};
_local3 = 0;
_local4 = 0;
if (rope_end.from){
if (rope_end.block == bc.block){
if (rope_end.from == Rope.UP_LEFT){
if (bc.exit_side == RIGHT){
bc.access_side = UP;
} else {
if (bc.exit_side == DOWN){
bc.access_side = LEFT;
};
};
} else {
if (rope_end.from == Rope.UP_RIGHT){
if (bc.exit_side == LEFT){
bc.access_side = UP;
} else {
if (bc.exit_side == DOWN){
bc.access_side = RIGHT;
};
};
} else {
if (rope_end.from == Rope.DOWN_RIGHT){
if (bc.exit_side == LEFT){
bc.access_side = DOWN;
} else {
if (bc.exit_side == UP){
bc.access_side = RIGHT;
};
};
} else {
if (rope_end.from == Rope.DOWN_LEFT){
if (bc.exit_side == RIGHT){
bc.access_side = DOWN;
} else {
if (bc.exit_side == UP){
bc.access_side = LEFT;
};
};
};
};
};
};
};
};
if (bc.access_side == UP){
if (bc.exit_side == RIGHT){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & RIGHT)){
bc.map_x++;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y - 1), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.UP_RIGHT;
} else {
if (bc.exit_side == LEFT){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & LEFT)){
bc.map_x--;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x - 1), bc.block.y, bc.block, g);
_local3 = LEFT;
_local4 = Rope.UP_LEFT;
} else {
if (bc.exit_side == DOWN){
if (px > x){
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y - 1), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.UP_RIGHT;
} else {
if (px < x){
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y - 1), bc.block, g);
_local3 = LEFT;
_local4 = Rope.UP_LEFT;
} else {
if (bc.ax > (bc.block.x + (scale >> 1))){
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y - 1), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.UP_RIGHT;
} else {
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y - 1), bc.block, g);
_local3 = LEFT;
_local4 = Rope.UP_LEFT;
};
};
};
};
};
};
} else {
if (bc.access_side == RIGHT){
if (bc.exit_side == DOWN){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & DOWN)){
bc.map_y++;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y + scale), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.DOWN_RIGHT;
} else {
if (bc.exit_side == UP){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & UP)){
bc.map_y--;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x + scale), bc.block.y, bc.block, g);
_local3 = LEFT;
_local4 = Rope.UP_RIGHT;
} else {
if (bc.exit_side == LEFT){
if (py > y){
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y + scale), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.DOWN_RIGHT;
} else {
if (py < y){
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y - 1), bc.block, g);
_local3 = LEFT;
_local4 = Rope.UP_RIGHT;
} else {
if (bc.ay > (bc.block.y + (scale >> 1))){
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y + scale), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.DOWN_RIGHT;
} else {
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y - 1), bc.block, g);
_local3 = LEFT;
_local4 = Rope.UP_RIGHT;
};
};
};
};
};
};
} else {
if (bc.access_side == DOWN){
if (bc.exit_side == RIGHT){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & RIGHT)){
bc.map_x++;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y + scale), bc.block, g);
_local3 = LEFT;
_local4 = Rope.DOWN_RIGHT;
} else {
if (bc.exit_side == LEFT){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & LEFT)){
bc.map_x--;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y + scale), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.DOWN_LEFT;
} else {
if (bc.exit_side == UP){
if (px > x){
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y + scale), bc.block, g);
_local3 = LEFT;
_local4 = Rope.DOWN_RIGHT;
} else {
if (px < x){
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y + scale), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.DOWN_LEFT;
} else {
if (bc.ax > (bc.block.x + (scale >> 1))){
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y + scale), bc.block, g);
_local3 = LEFT;
_local4 = Rope.DOWN_LEFT;
} else {
_local2 = new RopeJoint((bc.block.x + scale), (bc.block.y + scale), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.DOWN_RIGHT;
};
};
};
};
};
};
} else {
if (bc.access_side == LEFT){
if (bc.exit_side == DOWN){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & DOWN)){
bc.map_y++;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y + scale), bc.block, g);
_local3 = LEFT;
_local4 = Rope.DOWN_LEFT;
} else {
if (bc.exit_side == UP){
i = 0;
while (i < 1000) {
if ((bc.block.stacked & UP)){
bc.map_y--;
bc.block = g.block_map[bc.map_y][bc.map_x].b;
} else {
break;
};
i++;
};
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y - 1), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.UP_LEFT;
} else {
if (bc.exit_side == RIGHT){
if (py > y){
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y + scale), bc.block, g);
_local3 = LEFT;
_local4 = Rope.DOWN_LEFT;
} else {
if (py < y){
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y - 1), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.UP_LEFT;
} else {
if (bc.ay > (bc.block.y + (scale >> 1))){
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y + scale), bc.block, g);
_local3 = LEFT;
_local4 = Rope.DOWN_LEFT;
} else {
_local2 = new RopeJoint((bc.block.x - 1), (bc.block.y - 1), bc.block, g);
_local3 = RIGHT;
_local4 = Rope.UP_LEFT;
};
};
};
};
};
};
};
};
};
};
if (_local2 != null){
_local5 = rope_end.rest_len;
rope_end.b = _local2;
rope_end.updateLine();
if (_local3 == RIGHT){
rope_end.unwrap_x = rope_end.lx;
rope_end.unwrap_y = rope_end.ly;
} else {
rope_end.unwrap_x = rope_end.rx;
rope_end.unwrap_y = rope_end.ry;
};
_local6 = new Rope(_local2, this);
rope_end = _local6;
rope_end.from = _local4;
rope_end.block = bc.block;
rope.push(rope_end);
};
bc = RayCast.cast(rope_end, g.block_map);
_local1++;
};
};
if (rope.length > 1){
_local7 = ((rope_end.dx * rope[(rope.length - 2)].unwrap_x) + (rope_end.dy * rope[(rope.length - 2)].unwrap_y));
if (_local7 > 0){
_local8 = (rope[(rope.length - 2)].len + rope_end.len);
rope.pop();
rope_end = rope[(rope.length - 1)];
rope_end.b = this;
};
};
};
};
if (extend_rope_off_count > 0){
extend_rope_off_count--;
};
if ((((firing_state == 0)) && ((state == SWINGING)))){
rope_end = null;
rope = [];
anchor = null;
state = JUMPING;
falling = true;
};
g.rope_holder.graphics.clear();
g.rope_holder.graphics.lineStyle(2, 1976903, rope_alpha);
if (rope_alpha < 1){
rope_alpha = (rope_alpha + ROPE_ALPHA_FADE);
};
if (rope.length > 0){
i = 0;
while (i < (rope.length - 1)) {
g.rope_holder.graphics.moveTo(rope[i].a.x, rope[i].a.y);
g.rope_holder.graphics.lineTo(rope[i].b.x, rope[i].b.y);
i++;
};
g.rope_holder.graphics.moveTo(rope[(rope.length - 1)].a.x, rope[(rope.length - 1)].a.y);
g.rope_holder.graphics.lineTo((arm_pos.x + mc.x), (arm_pos.y + mc.y));
} else {
if (((((!((anchor == null))) && (anchor.active))) && (!((anchor.rope == null))))){
g.rope_holder.graphics.moveTo((arm_pos.x + mc.x), (arm_pos.y + mc.y));
g.rope_holder.graphics.lineTo(anchor.mc.x, anchor.mc.y);
};
};
}
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++;
mc.visible = !(mc.visible);
if (hurt_count >= HURT_DELAY){
hurt = false;
mc.visible = true;
};
};
};
}
public function sideOf(_arg1:Number):int{
_arg1 = (_arg1 + 180);
if ((((_arg1 < 22.5)) || ((_arg1 >= 337.5)))){
return (RIGHT);
};
if ((((_arg1 >= 22.5)) && ((_arg1 < 67.5)))){
return (RIGHT);
};
if ((((_arg1 >= 67.5)) && ((_arg1 < 112.5)))){
return (RIGHT);
};
if ((((_arg1 >= 112.5)) && ((_arg1 < 157.5)))){
return (LEFT);
};
if ((((_arg1 >= 157.5)) && ((_arg1 < 202.5)))){
return (LEFT);
};
if ((((_arg1 >= 202.5)) && ((_arg1 < 247.5)))){
return (LEFT);
};
if ((((_arg1 >= 247.5)) && ((_arg1 < 292.5)))){
return (RIGHT);
};
if ((((_arg1 >= 292.5)) && ((_arg1 < 337.5)))){
return (RIGHT);
};
return (0);
}
public function exitChameleonMode():void{
if (!chameleon){
return;
};
stealthScreenGrab();
stealth_clip.alpha = 1;
chameleon = false;
g.alert_count = 0;
}
public function hit():void{
if (((((((ouch) || (hurt))) || (!(active)))) || (g.god_mode))){
return;
};
if (g.spider != null){
g.spider.kill();
};
if (chameleon){
exitChameleonMode();
};
NitromeGame.sound_manager.playSound("electric");
NitromeGame.bonus.dodge.value = 0;
ouch = true;
g.mouse_pressed = false;
ouch_count = 0;
hurt_count = 0;
if (state == STEALTH){
state = RUNNING;
};
health.value--;
NitromeGame.timeline.health_panel.gotoAndStop(("_" + health.value));
}
public function verletY(_arg1:Number, _arg2:Number):void{
temp_y = y;
y = (y + ((_arg2 * (y - py)) + _arg1));
py = temp_y;
}
public function verletX(_arg1:Number, _arg2:Number):void{
temp_x = x;
x = (x + ((_arg2 * (x - px)) + _arg1));
px = temp_x;
}
public function main():void{
var _local1:int;
var _local2:int;
var _local3:MovieClip;
collisions = 0;
if (platform != null){
collisions = (collisions | Rect.DOWN);
};
if (((key_lock) && ((Key.keys_pressed == 0)))){
key_lock = false;
};
if ((((((((state == RUNNING)) || ((state == JUMPING)))) || ((state == SWINGING)))) || ((state == STEALTH)))){
on_scroller = ((g.scroller.contains(x, y)) || ((y >= (map_rect.height - 1))));
if (on_scroller){
if (state == JUMPING){
if (py <= y){
falling = true;
};
if (falling){
findFloor();
};
};
if ((((state == RUNNING)) || ((state == STEALTH)))){
if (platform.moving_block){
x = (x + (platform.x - platform.px));
px = (px + (platform.x - platform.px));
y = (y + (platform.y - platform.py));
py = (py + (platform.y - platform.py));
};
};
if (state == RUNNING){
checkFloor();
};
collision();
};
updateStars();
checkHit();
if (!active){
return;
};
updateAnimState(mc);
updateAnimState(stealth_mask);
updateAnimState(cham_clip);
updateAnimState(cham_shape_mask);
updateMC();
updateArms();
checkEvents();
if (((((((!(ouch)) && (!(g.completed)))) && ((g.spider == null)))) && (!(key_lock)))){
checkKeys();
};
if (on_scroller){
if (state != SWINGING){
if (damping_x > DAMPING_X){
damping_x = (damping_x - DAMPING_STEP);
};
verletX(GRAVITY_X, damping_x);
} else {
verletX(GRAVITY_X, damping_x);
};
if (platform == null){
if (wallslide_count){
wallslide_count--;
if ((y + 20) > (wallslide_block.y + wallslide_block.height)){
if ((((wallslide_block.stacked & DOWN)) && (((wallslide_block.y + wallslide_block.height) < map_rect.height)))){
_local1 = ((wallslide_block.x * SCALE) >> 0);
_local2 = ((wallslide_block.y * SCALE) >> 0);
wallslide_block = g.block_map[(_local2 + 1)][_local1].b;
} else {
wallslide_count = 0;
};
};
if (wallslide_count > (WALLSLIDE_DELAY - 2)){
verletY(GRAVITY_Y, FORCED_WALLSLIDE_DAMPING_Y);
} else {
verletY(GRAVITY_Y, WALLSLIDE_DAMPING_Y);
};
} else {
verletY(GRAVITY_Y, DAMPING_Y);
};
};
};
updateRope();
updateCollisionRect();
if ((((state == RUNNING)) && (level_completed))){
active = false;
if ((finish_item is Lift)){
(finish_item as Lift).exitAnim();
} else {
if ((finish_item is ElectricFinish)){
_local3 = new OuchFinishMC();
_local3.x = mc.x;
_local3.y = mc.y;
g.player_holder.addChild(_local3);
g.electrocuteActors();
} else {
if (finish_item == null){
_local3 = new LevelCompleteMC();
_local3.x = mc.x;
_local3.y = mc.y;
g.player_holder.addChild(_local3);
};
};
};
g.finish_count = 0;
tidyUp();
};
};
}
public function findFloor():void{
map_x = (((x - (WIDTH >> 1)) * SCALE) >> 0);
map_y = (((y - (HEIGHT >> 1)) * SCALE) >> 0);
if (map_y >= (g.scroller.height - 1)){
map_y = (g.scroller.height - 2);
};
collision_array[0] = g.block_map[map_y][map_x];
collision_array[1] = g.block_map[map_y][(map_x + 1)];
collision_array[2] = g.block_map[(map_y + 1)][map_x];
collision_array[3] = g.block_map[(map_y + 1)][(map_x + 1)];
i = 0;
while (i < collision_array.length) {
if (((((!((((collision_array[i] >= 0)) || ((collision_array[i] <= 0))))) && (!((collision_array[i] == null))))) && (collision_array[i].block))){
block = collision_array[i].b;
if ((block.stacked & Rect.UP)){
} else {
if ((((block.x > ((-1 + x) + (WIDTH >> 1)))) || ((((block.x + scale) - 1) < (x - (WIDTH >> 1)))))){
} else {
if (((((y + (HEIGHT >> 1)) < block.y)) || (((y + (HEIGHT >> 1)) > ((block.y + FLOOR_DEPTH) + (y - py)))))){
} else {
platform = block;
y = (block.y - (HEIGHT >> 1));
if (platform.moving_block){
x = (x - (platform.x - platform.px));
px = (px - (platform.x - platform.px));
y = (y - (platform.y - platform.py));
py = (py - (platform.y - platform.py));
moving_sprite = collision_array[i].mc;
};
updateCollisionRect();
state = RUNNING;
damping_x = DAMPING_X;
falling = false;
walljump_left = false;
walljump_right = false;
return;
};
};
};
};
i++;
};
}
public function checkFloor():void{
if (platform != null){
if ((((((((platform.x + platform.width) - 1) < (x - (WIDTH >> 1)))) || ((platform.x > ((-1 + x) + (WIDTH >> 1)))))) || (((platform.force_field) && (!(platform.active)))))){
platform = null;
findFloor();
if (platform == null){
state = JUMPING;
falling = true;
py = y;
};
};
};
}
public function updateCollisionRect():void{
collision_rect.x = (x - (WIDTH >> 1));
collision_rect.y = (y - (HEIGHT >> 1));
collision_rect.width = WIDTH;
collision_rect.height = HEIGHT;
}
public function scrolling():void{
var _local1:Number;
scroll_target_x = Math.min(0, scroll_target_x);
scroll_target_y = Math.min(0, scroll_target_y);
scroll_target_x = Math.max(((-(g.scroller.width) * scale) + Game.WIDTH), scroll_target_x);
scroll_target_y = Math.max(((-(g.scroller.height) * scale) + Game.HEIGHT), scroll_target_y);
_local1 = 0.2;
last_canvas_x = g.canvas.x;
last_canvas_y = g.canvas.y;
g.canvas.x = (g.canvas.x + Math.round(((scroll_target_x - g.canvas.x) * _local1)));
g.canvas.y = (g.canvas.y + Math.round(((scroll_target_y - g.canvas.y) * _local1)));
if (((((Key.isDown(Keyboard.LEFT)) || (Key.isDown(65)))) || (((Key.isDown(Keyboard.RIGHT)) || (Key.isDown(68)))))){
virtual_canvas_x = (virtual_canvas_x + (g.canvas.x - last_canvas_x));
};
if (g.back.back != null){
g.back.back.x = ((virtual_canvas_x * 0.05) >> 0);
g.back.front.x = ((virtual_canvas_x * 0.1) >> 0);
if (g.back.back.x > 0){
g.back.back.x = (g.back.back.x - (g.back.back.width * 0.5));
};
if (g.back.back.x < (-(g.back.back.width) * 0.5)){
g.back.back.x = (g.back.back.x + (g.back.back.width * 0.5));
};
if (g.back.front.x > 0){
g.back.front.x = (g.back.front.x - (g.back.front.width * 0.5));
};
if (g.back.front.x < (-(g.back.front.width) * 0.5)){
g.back.front.x = (g.back.front.x + (g.back.front.width * 0.5));
};
if ((((((g.background_type == Game.DAWN)) || ((g.background_type == Game.DAWN_SUN)))) || ((g.background_type == Game.NIGHT)))){
g.back.back.visible = false;
} else {
g.back.back.visible = true;
};
if ((((g.background_type == Game.DAWN_CLOUDS)) || ((g.background_type == Game.DAWN)))){
NitromeGame.timeline.back.front.sun1.visible = false;
NitromeGame.timeline.back.front.sun2.visible = false;
} else {
if ((((g.background_type == Game.DAWN_CLOUDS_SUN)) || ((g.background_type == Game.DAWN_SUN)))){
NitromeGame.timeline.back.front.sun1.visible = true;
NitromeGame.timeline.back.front.sun2.visible = true;
g.back.front.sun1.sparkle1.rotation = (g.back.front.sun1.sparkle1.rotation + ((g.canvas.x - last_canvas_x) * 0.05));
g.back.front.sun1.sparkle2.rotation = (g.back.front.sun1.sparkle2.rotation - ((g.canvas.x - last_canvas_x) * 0.05));
g.back.front.sun2.sparkle1.rotation = (g.back.front.sun2.sparkle1.rotation + ((g.canvas.x - last_canvas_x) * 0.05));
g.back.front.sun2.sparkle2.rotation = (g.back.front.sun2.sparkle2.rotation - ((g.canvas.x - last_canvas_x) * 0.05));
};
};
};
}
}
}//package com.nitrome.engine_specific
Section 54
//RayCast (com.nitrome.engine_specific.RayCast)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class RayCast {
public static const LEFT:int = 8;
public static const UP:int = 1;
public static const DOWN:int = 4;
public static const RIGHT:int = 2;
public static var found:Boolean;
public static var tx:Number;
public static var ty:Number;
public static var px:Number;
public static var py:Number;
public static var block:Block;
public static var DX:Number;
public static var DY:Number;
public static var dist_to_block_edge:Number;
public static var dist:Number;
public static var next_y:Number;
public static var corn:Array;
public static var new_next:Number;
public static var next_x:Number;
public static var ey:Number;
public static var iterations:int = 100;
public static var ax:Number;
public static var ay:Number;
public static var ex:Number;
public static var vx:Number;
public static var vy:Number;
public static var dir_x:int;
public static var dir_y:int;
public static var dot:Number;
public static var line_rect:Rect;
public static var moving_found:Boolean;
public static var map_x:int;
public static var map_y:int;
public static var stack_map_value:int;
public static var report:RayCastReport;
public static var temp_block:Block;
public static var g:Game;
public static var i:int;
public static var j:int;
public static var next:Number;
public static var num_corners_inside:int;
public static function init(_arg1:Game):void{
g = _arg1;
corn = new Array(4);
i = 0;
while (i < 4) {
corn[i] = new Dot();
i++;
};
line_rect = new Rect();
temp_block = new Block(0, 0, Game.scale, Game.scale);
}
public static function reportIntersectsRect(_arg1:Line, _arg2:RayCastReport, _arg3:Rect):Boolean{
if (_arg2 == null){
ax = _arg1.b.x;
ay = _arg1.b.y;
} else {
ax = _arg2.ax;
ay = _arg2.ay;
};
line_rect.x = Math.min(_arg1.a.x, ax);
line_rect.y = Math.min(_arg1.a.y, ay);
line_rect.width = Math.abs((_arg1.a.x - ax));
line_rect.height = Math.abs((_arg1.a.y - ay));
if (line_rect.intersects(_arg3)){
if ((((((((_arg1.a.x >= _arg3.x)) && ((_arg1.a.x < (_arg3.x + _arg3.width))))) && ((ax >= _arg3.x)))) && ((ax < (_arg3.x + _arg3.width))))){
return (true);
};
if ((((((((_arg1.a.y >= _arg3.y)) && ((_arg1.a.y < (_arg3.y + _arg3.height))))) && ((ay >= _arg3.y)))) && ((ay < (_arg3.y + _arg3.height))))){
return (true);
};
corn = _arg3.getCorners(corn);
num_corners_inside = 0;
j = 0;
while (j < corn.length) {
vx = (corn[j].x - _arg1.a.x);
vy = (corn[j].y - _arg1.a.y);
dot = ((vx * _arg1.rx) + (vy * _arg1.ry));
if (dot < 0){
num_corners_inside++;
};
j++;
};
if ((((num_corners_inside == 0)) || ((num_corners_inside == 4)))){
} else {
return (true);
};
};
return (false);
}
public static function cast(_arg1:Line, _arg2:Array, _arg3:Boolean=false):RayCastReport{
report = null;
found = (moving_found = false);
map_x = ((_arg1.a.x * Game.SCALE) >> 0);
map_y = ((_arg1.a.y * Game.SCALE) >> 0);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
found = true;
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, _arg1.a.x, _arg1.a.y);
};
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 * Game.scale));
py = (_arg1.a.y - (map_y * Game.scale));
tx = ((_arg1.dx)<0) ? 0 : Game.scale;
ty = ((_arg1.dy)<0) ? 0 : Game.scale;
dist = 0;
i = 0;
while (i < iterations) {
if (((!((_arg1.dx == 0))) && (!((_arg1.dy == 0))))){
next_x = Math.abs(((px - tx) * DX));
next_y = Math.abs(((py - ty) * DY));
if (next_x < next_y){
next = next_x;
map_x = (map_x + dir_x);
dist = (dist + next_x);
if ((((((((((((dist > _arg1.len)) && ((report == null)))) || ((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 * Game.scale));
} else {
next = next_y;
map_y = (map_y + dir_y);
dist = (dist + next_y);
if ((((((((((((dist > _arg1.len)) && ((report == null)))) || ((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 * Game.scale));
};
stack_map_value = g.stack_map[map_y][map_x];
if (((!(found)) && ((stack_map_value > Game.EMPTY)))){
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py));
if (((!((stack_map_value & Rect.TEMP))) && (_arg3))){
report.access_side = block.sideOf(report.ax, report.ay);
return (report);
};
found = true;
} else {
if (found){
report.ex = ((map_x * Game.scale) + px);
report.ey = ((map_y * Game.scale) + py);
if ((g.stack_map[report.map_y][report.map_x] & Rect.TEMP)){
block = report.block;
if (!moving_found){
if (block.y == (report.map_y * Game.scale)){
if ((((report.ax >= block.x)) && ((report.ax < (block.x + block.width))))){
ax = report.ax;
ay = report.ay;
moving_found = true;
if ((dist - next) > _arg1.len){
return (null);
};
} else {
if ((((report.ex >= block.x)) && ((report.ex < (block.x + block.width))))){
if (_arg1.dx < 0){
dist_to_block_edge = (report.ax - (block.x + block.width));
new_next = Math.abs((dist_to_block_edge * DX));
if (((-(next) + dist) + new_next) > _arg1.len){
return (null);
};
ax = ((block.x + block.width) - 1);
ay = (report.ay + (new_next * _arg1.dy));
} else {
dist_to_block_edge = (block.x - report.ax);
new_next = Math.abs((dist_to_block_edge * DX));
if (((-(next) + dist) + new_next) > _arg1.len){
return (null);
};
ax = block.x;
ay = (report.ay + (new_next * _arg1.dy));
};
moving_found = true;
};
};
} else {
if ((((report.ay >= block.y)) && ((report.ay < (block.y + block.height))))){
ax = report.ax;
ay = report.ay;
moving_found = true;
if ((dist - next) > _arg1.len){
return (null);
};
} else {
if ((((report.ey >= block.y)) && ((report.ey < (block.y + block.height))))){
if (_arg1.dy < 0){
dist_to_block_edge = (report.ay - (block.y + block.height));
new_next = Math.abs((dist_to_block_edge * DY));
if (((-(next) + dist) + new_next) > _arg1.len){
return (null);
};
ax = (report.ax + (new_next * _arg1.dx));
ay = ((block.y + block.height) - 1);
} else {
dist_to_block_edge = (block.y - report.ay);
new_next = Math.abs((dist_to_block_edge * DY));
if (((-(next) + dist) + new_next) > _arg1.len){
return (null);
};
ax = (report.ax + (new_next * _arg1.dx));
ay = block.y;
};
moving_found = true;
};
};
};
if (moving_found){
if (_arg3){
report.ax = ax;
report.ay = ay;
report.access_side = report.block.sideOf(report.ax, report.ay);
return (report);
};
} else {
if (stack_map_value > Game.EMPTY){
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py));
if (((!((stack_map_value == Rect.TEMP))) && (_arg3))){
report.access_side = block.sideOf(report.ax, report.ay);
return (report);
};
} else {
report = null;
found = false;
};
};
};
if (((moving_found) && ((((((stack_map_value == Game.EMPTY)) || (!((stack_map_value & Rect.TEMP))))) || (!((g.block_map[map_y][map_x].b == report.block))))))){
if (block.y == (report.map_y * Game.scale)){
if ((((report.ex >= block.x)) && ((report.ex < (block.x + block.width))))){
ex = report.ex;
ey = report.ey;
if (dist > _arg1.len){
return (null);
};
} else {
if (_arg1.dx < 0){
dist_to_block_edge = (report.ax - block.x);
new_next = Math.abs((dist_to_block_edge * DX));
ex = block.x;
ey = (report.ay + (new_next * _arg1.dy));
if (ex < _arg1.b.x){
return (null);
};
} else {
dist_to_block_edge = ((block.x + block.width) - report.ax);
new_next = Math.abs((dist_to_block_edge * DX));
ex = (block.x + block.width);
ey = (report.ay + (new_next * _arg1.dy));
if (ex > _arg1.b.x){
return (null);
};
};
};
} else {
if ((((report.ey >= block.y)) && ((report.ey < (block.y + block.height))))){
ex = report.ex;
ey = report.ey;
if (dist > _arg1.len){
return (null);
};
} else {
if (_arg1.dy < 0){
dist_to_block_edge = (report.ay - block.y);
new_next = Math.abs((dist_to_block_edge * DY));
ex = (report.ax + (new_next * _arg1.dx));
ey = block.y;
if (ey < _arg1.b.y){
return (null);
};
} else {
dist_to_block_edge = ((block.y + block.height) - report.ay);
new_next = Math.abs((dist_to_block_edge * DY));
ex = (report.ax + (new_next * _arg1.dx));
ey = (block.y + block.height);
if (ey > _arg1.b.x){
return (null);
};
};
};
};
report.ax = ax;
report.ay = ay;
report.ex = ex;
report.ey = ey;
report.access_side = report.block.sideOf(report.ax, report.ay);
report.exit_side = report.block.sideOf(report.ex, report.ey);
return (report);
};
} else {
if (dist > _arg1.len){
return (null);
};
report.access_side = report.block.sideOf(report.ax, report.ay);
report.exit_side = report.block.sideOf(report.ex, report.ey);
return (report);
};
};
};
} else {
if (_arg1.dy == 0){
next_x = Math.abs(((px - tx) * DX));
map_x = (map_x + dir_x);
dist = (dist + next_x);
if ((((((((((((dist > _arg1.len)) && ((report == null)))) || ((map_x < 0)))) || ((map_y < 0)))) || ((map_x >= _arg2[0].length)))) || ((map_y >= _arg2.length)))){
return (null);
};
px = (px + (_arg1.dx * next_x));
px = (px - (dir_x * Game.scale));
stack_map_value = g.stack_map[map_y][map_x];
if (((!(found)) && ((stack_map_value > Game.EMPTY)))){
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py));
if (((!((stack_map_value & Rect.TEMP))) && (_arg3))){
report.access_side = block.sideOf(report.ax, report.ay);
return (report);
};
found = true;
} else {
if (found){
report.ex = ((map_x * Game.scale) + px);
report.ey = ((map_y * Game.scale) + py);
if ((g.stack_map[report.map_y][report.map_x] & Rect.TEMP)){
block = report.block;
if (!moving_found){
if (block.y == (report.map_y * Game.scale)){
if ((((report.ax >= block.x)) && ((report.ax < (block.x + block.width))))){
ax = report.ax;
ay = report.ay;
moving_found = true;
if ((dist - next) > _arg1.len){
return (null);
};
} else {
if ((((report.ex >= block.x)) && ((report.ex < (block.x + block.width))))){
if (_arg1.dx < 0){
ax = ((block.x + block.width) - 1);
ay = report.ay;
} else {
ax = block.x;
ay = report.ay;
};
moving_found = true;
};
};
} else {
if ((((report.ay >= block.y)) && ((report.ay < (block.y + block.height))))){
ax = report.ax;
ay = report.ay;
moving_found = true;
if ((dist - next) > _arg1.len){
return (null);
};
};
};
if (moving_found){
if (_arg3){
report.ax = ax;
report.ay = ay;
report.access_side = report.block.sideOf(report.ax, report.ay);
return (report);
};
} else {
if (stack_map_value > Game.EMPTY){
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py));
if (((!((stack_map_value == Rect.TEMP))) && (_arg3))){
report.access_side = block.sideOf(report.ax, report.ay);
return (report);
};
} else {
report = null;
found = false;
};
};
};
if (((moving_found) && ((((stack_map_value == Game.EMPTY)) || (!((g.block_map[map_y][map_x].b == report.block))))))){
if (block.y == (report.map_y * Game.scale)){
if ((((report.ex >= block.x)) && ((report.ex < (block.x + block.width))))){
ex = report.ex;
ey = report.ey;
if (dist > _arg1.len){
return (null);
};
} else {
if (_arg1.dx < 0){
ex = block.x;
ey = report.ay;
if (ex < _arg1.b.x){
return (null);
};
} else {
ex = (block.x + block.width);
ey = report.ay;
if (ex > _arg1.b.x){
return (null);
};
};
};
} else {
if ((((report.ey >= block.y)) && ((report.ey < (block.y + block.height))))){
ex = report.ex;
ey = report.ey;
};
};
report.ax = ax;
report.ay = ay;
report.ex = ex;
report.ey = ey;
report.access_side = report.block.sideOf(report.ax, report.ay);
report.exit_side = report.block.sideOf(report.ex, report.ey);
return (report);
};
} else {
if (dist > _arg1.len){
return (null);
};
report.access_side = report.block.sideOf(report.ax, report.ay);
report.exit_side = report.block.sideOf(report.ex, report.ey);
return (report);
};
};
};
} else {
if (_arg1.dx == 0){
next_y = Math.abs(((py - ty) * DY));
map_y = (map_y + dir_y);
dist = (dist + next_y);
if ((((((((((((dist > _arg1.len)) && ((report == null)))) || ((map_x < 0)))) || ((map_y < 0)))) || ((map_x >= _arg2[0].length)))) || ((map_y >= _arg2.length)))){
return (null);
};
py = (py + (_arg1.dy * next_y));
py = (py - (dir_y * Game.scale));
stack_map_value = g.stack_map[map_y][map_x];
if (((!(found)) && ((stack_map_value > Game.EMPTY)))){
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py));
if (((!((stack_map_value & Rect.TEMP))) && (_arg3))){
report.access_side = block.sideOf(report.ax, report.ay);
return (report);
};
found = true;
} else {
if (found){
report.ex = ((map_x * Game.scale) + px);
report.ey = ((map_y * Game.scale) + py);
if (g.stack_map[report.map_y][report.map_x] == Rect.TEMP){
block = report.block;
if (!moving_found){
if (block.y == (report.map_y * Game.scale)){
if ((((report.ax >= block.x)) && ((report.ax < (block.x + block.width))))){
ax = report.ax;
ay = report.ay;
moving_found = true;
if ((dist - next) > _arg1.len){
return (null);
};
};
} else {
if ((((report.ay >= block.y)) && ((report.ay < (block.y + block.height))))){
ax = report.ax;
ay = report.ay;
moving_found = true;
if ((dist - next) > _arg1.len){
return (null);
};
} else {
if ((((report.ey >= block.y)) && ((report.ey < (block.y + block.height))))){
if (_arg1.dy < 0){
ax = report.ax;
ay = ((block.y + block.height) - 1);
if (ey < _arg1.b.y){
return (null);
};
} else {
ax = report.ax;
ay = block.y;
if (ey > _arg1.b.y){
return (null);
};
};
moving_found = true;
};
};
};
if (moving_found){
if (_arg3){
report.ax = ax;
report.ay = ay;
report.access_side = report.block.sideOf(report.ax, report.ay);
return (report);
};
} else {
if (stack_map_value > Game.EMPTY){
block = ((_arg2[map_y][map_x] is Clip)) ? _arg2[map_y][map_x].b : new Block((map_x * Game.scale), (map_y * Game.scale), Game.scale, Game.scale);
report = new RayCastReport(block, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py));
if (((!((stack_map_value == Rect.TEMP))) && (_arg3))){
report.access_side = block.sideOf(report.ax, report.ay);
return (report);
};
} else {
report = null;
found = false;
};
};
};
if (((moving_found) && ((((stack_map_value == Game.EMPTY)) || (!((g.block_map[map_y][map_x].b == report.block))))))){
if (block.y == (report.map_y * Game.scale)){
if ((((report.ex >= block.x)) && ((report.ex < (block.x + block.width))))){
ex = report.ex;
ey = report.ey;
if (dist > _arg1.len){
return (null);
};
};
} else {
if ((((report.ey >= block.y)) && ((report.ey < (block.y + block.height))))){
ex = report.ex;
ey = report.ey;
if (dist > _arg1.len){
return (null);
};
} else {
if (_arg1.dy < 0){
ex = report.ax;
ey = block.y;
if (ey < _arg1.b.y){
return (null);
};
} else {
ex = report.ax;
ey = (block.y + block.height);
if (ey > _arg1.b.y){
return (null);
};
};
};
};
report.ax = ax;
report.ay = ay;
report.ex = ex;
report.ey = ey;
report.access_side = report.block.sideOf(report.ax, report.ay);
report.exit_side = report.block.sideOf(report.ex, report.ey);
return (report);
};
} else {
if (dist > _arg1.len){
return (null);
};
report.access_side = report.block.sideOf(report.ax, report.ay);
report.exit_side = report.block.sideOf(report.ex, report.ey);
return (report);
};
};
};
};
};
};
i++;
};
return (null);
}
public static function initCast(_arg1:Line, _arg2:Array):RayCastReport{
map_x = ((_arg1.a.x * Game.SCALE) >> 0);
map_y = ((_arg1.a.y * Game.SCALE) >> 0);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
return (new RayCastReport(null, map_x, map_y, _arg1.a.x, _arg1.a.y));
};
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 * Game.scale));
py = (_arg1.a.y - (map_y * Game.scale));
tx = ((_arg1.dx)<0) ? 0 : Game.scale;
ty = ((_arg1.dy)<0) ? 0 : Game.scale;
dist = 0;
i = 0;
while (i < 1000) {
next_x = Math.abs(((px - tx) * DX));
next_y = Math.abs(((py - ty) * DY));
if ((((next_x < next_y)) || ((next_y == 0)))){
map_x = (map_x + dir_x);
dist = (dist + next_x);
stack_map_value = g.stack_map[map_y][map_x];
if ((((((((((dist > _arg1.len)) || ((map_x < 0)))) || ((map_y < 0)))) || ((map_x >= _arg2[0].length)))) || ((map_y >= _arg2.length)))){
return (new RayCastReport(null, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py)));
};
px = (px + (_arg1.dx * next_x));
py = (py + (_arg1.dy * next_x));
px = (px - (dir_x * Game.scale));
if ((((stack_map_value > Game.EMPTY)) && (!((stack_map_value == Rect.TEMP))))){
return (new RayCastReport(null, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py)));
};
} else {
map_y = (map_y + dir_y);
dist = (dist + next_y);
stack_map_value = g.stack_map[map_y][map_x];
if ((((((((((dist > _arg1.len)) || ((map_x < 0)))) || ((map_y < 0)))) || ((map_x >= _arg2[0].length)))) || ((map_y >= _arg2.length)))){
return (new RayCastReport(null, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py)));
};
px = (px + (_arg1.dx * next_y));
py = (py + (_arg1.dy * next_y));
py = (py - (dir_y * Game.scale));
if ((((stack_map_value > Game.EMPTY)) && (!((stack_map_value == Rect.TEMP))))){
return (new RayCastReport(null, map_x, map_y, ((map_x * Game.scale) + px), ((map_y * Game.scale) + py)));
};
};
i++;
};
return (null);
}
}
}//package com.nitrome.engine_specific
Section 55
//RayCastReport (com.nitrome.engine_specific.RayCastReport)
package com.nitrome.engine_specific {
import flash.display.*;
public class RayCastReport {
public var found:Boolean;
public var block:Block;
public var access_side:int;// = 0
public var ex:Number;
public var ey:Number;
public var map_x:int;// = -1
public var map_y:int;// = -1
public var ax:Number;
public var ay:Number;
public var exit_side:int;// = 0
public function RayCastReport(_arg1:Block=null, _arg2:int=0, _arg3:int=0, _arg4:Number=0, _arg5:Number=0){
map_x = -1;
map_y = -1;
access_side = 0;
exit_side = 0;
super();
this.block = _arg1;
this.map_x = _arg2;
this.map_y = _arg3;
this.ax = _arg4;
this.ay = _arg5;
}
public function draw(_arg1:Graphics):void{
_arg1.lineStyle(2, 0xFF0000);
_arg1.moveTo(ax, ay);
_arg1.lineTo(ex, ey);
}
}
}//package com.nitrome.engine_specific
Section 56
//Rope (com.nitrome.engine_specific.Rope)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Rope extends Spring {
public var unwrap_y:Number;
public var unwrap_x:Number;
public var block:Block;
public var from:int;// = 0
public var wrap_side:int;
public static const DOWN_LEFT:int = 4;
public static const UP_RIGHT:int = 2;
public static const UP_LEFT:int = 1;
public static const DOWN_RIGHT:int = 8;
public function Rope(_arg1:Dot, _arg2:Dot){
from = 0;
super(_arg1, _arg2);
}
}
}//package com.nitrome.engine_specific
Section 57
//RopeAnchor (com.nitrome.engine_specific.RopeAnchor)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class RopeAnchor extends Star {
public const SPEED:Number = 32;
public var locked:Boolean;
public var block:Block;
public var can_rope:Boolean;
public var rope:Rope;
public var surface_x:Number;
public var surface_y:Number;
public function RopeAnchor(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Sprite, _arg6:Game){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
locked = false;
can_rope = true;
rope_star = true;
rope = new Rope(this, _arg6.player);
}
override public function pin():void{
x = (px = ix);
y = (px = iy);
}
override public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
public function convertToStar():void{
var _local1:Star;
if (!locked){
_local1 = g.player.addStar(x, y, dx, dy);
mc.parent.removeChild(mc);
} else {
g.player.stars.push(mc);
};
active = false;
g.player.anchor = null;
}
override protected function anchor(_arg1:Block, _arg2:Sprite=null):void{
var _local3:Number;
var _local4:Number;
var _local5:Rect;
var _local6:*;
var _local7:Number;
var _local8:Number;
var _local9:int;
var _local10:int;
this.block = _arg1;
_local3 = (x - px);
_local4 = (y - py);
dx = (dy = 0);
_local5 = new Rect(0, 0, 0, 0);
_local5.x = Math.min(x, px);
_local5.y = Math.min(y, py);
_local5.width = Math.abs((x - px));
_local5.height = Math.abs((y - py));
_local6 = _local5.intersection(_arg1);
_local7 = 0;
_local8 = 0;
if (_local3 != 0){
_local7 = (Math.min(Math.abs(_local3), _local6.width) * ((_local3 > 0)) ? 1 : -1);
};
if (_local4 != 0){
_local8 = (Math.min(Math.abs(_local4), _local6.height) * ((_local4 > 0)) ? 1 : -1);
};
x = (x - _local7);
y = (y - _local8);
_local9 = _arg1.sideOf(x, y);
if ((_arg1.stacked & _local9)){
if ((((_local9 == Rect.UP)) || ((_local9 == Rect.DOWN)))){
if (x < (_arg1.x + (_arg1.width * 0.5))){
x = (_arg1.x - 1);
_local9 = Rect.LEFT;
if ((_arg1.stacked & Rect.LEFT)){
if (y < (_arg1.y + (_arg1.height * 0.5))){
y = (_arg1.y - 1);
_local9 = Rect.UP;
} else {
y = (_arg1.y + _arg1.height);
_local9 = Rect.DOWN;
};
};
} else {
x = (_arg1.x + _arg1.width);
_local9 = Rect.RIGHT;
if ((_arg1.stacked & Rect.RIGHT)){
if (y < (_arg1.y + (_arg1.height * 0.5))){
y = (_arg1.y - 1);
_local9 = Rect.UP;
} else {
y = (_arg1.y + _arg1.height);
_local9 = Rect.DOWN;
};
};
};
} else {
if ((((_local9 == Rect.RIGHT)) || ((_local9 == Rect.LEFT)))){
if (y < (_arg1.y + (_arg1.height * 0.5))){
y = (_arg1.y - 1);
_local9 = Rect.UP;
if ((_arg1.stacked & Rect.UP)){
if (x < (_arg1.x + (_arg1.width * 0.5))){
x = (_arg1.x - 1);
_local9 = Rect.LEFT;
} else {
x = (_arg1.x + _arg1.width);
_local9 = Rect.RIGHT;
};
};
} else {
y = (_arg1.y + _arg1.height);
_local9 = Rect.DOWN;
if ((_arg1.stacked & Rect.DOWN)){
if (x < (_arg1.x + (_arg1.width * 0.5))){
x = (_arg1.x - 1);
_local9 = Rect.LEFT;
} else {
x = (_arg1.x + _arg1.width);
_local9 = Rect.RIGHT;
};
};
};
};
};
} else {
if (_local9 == Rect.LEFT){
x = (_arg1.x - 1);
} else {
if (_local9 == Rect.UP){
y = (_arg1.y - 1);
};
};
};
surface_x = (x - _arg1.x);
surface_y = (y - _arg1.y);
pinTo(x, y);
rope.updateLine();
if (!_arg1.attachable){
kill();
g.player.hit();
return;
};
if (((_arg1.force_field) || (_arg1.cutting))){
ping(-(_local3));
return;
};
if (((g.mouse_pressed) && ((RayCast.cast(rope, g.block_map) == null)))){
locked = true;
g.player.createRope();
} else {
kill();
return;
};
_local10 = (mc as LiveStar).star.currentFrame;
mc.parent.removeChild(mc);
mc = new DeadStar();
(mc as DeadStar).init(_local10);
if (_arg2 == null){
g.dead_star_holder.addChild(mc);
updateMC();
} else {
mc.x = (x - _arg1.x);
mc.y = (y - _arg1.y);
_arg2.addChildAt(mc, 0);
};
}
override public function main():void{
if (((active) && (!(locked)))){
move();
if (!g.scroller.contains(x, y)){
kill();
return;
};
encounterCollision();
if (!active){
return;
};
blockCollision();
if (!locked){
updateMC();
};
rope.updateLine();
if (((((!(locked)) && ((rope.len > 0)))) && (!((RayCast.cast(rope, g.block_map) == null))))){
convertToStar();
return;
};
};
if (((((locked) && (!((block == null))))) && (block.moving_block))){
x = (ix = (block.x + surface_x));
y = (iy = (block.y + surface_y));
};
}
override public function kill():void{
(mc as DeadStar).kill();
active = false;
g.player.anchor = null;
}
public function pinTo(_arg1:Number, _arg2:Number):void{
this.x = (ix = (px = (temp_x = _arg1)));
this.y = (iy = (py = (temp_y = _arg2)));
locked = true;
}
}
}//package com.nitrome.engine_specific
Section 58
//RopeJoint (com.nitrome.engine_specific.RopeJoint)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class RopeJoint extends Dot {
public var px:Number;
public var py:Number;
public var block:Block;
public var surface_x:Number;
public var g:Game;
public var surface_y:Number;
public function RopeJoint(_arg1:Number, _arg2:Number, _arg3:Block, _arg4:Game){
super(_arg1, _arg2);
px = _arg1;
py = _arg2;
this.g = _arg4;
this.block = _arg3;
surface_x = ((_arg1 - _arg3.x) >> 0);
surface_y = ((_arg2 - _arg3.y) >> 0);
}
public function main():void{
if (((!((block == null))) && (block.moving_block))){
px = x;
py = y;
x = (ix = (block.x + surface_x));
y = (iy = (block.y + surface_y));
};
}
}
}//package com.nitrome.engine_specific
Section 59
//RotoGun (com.nitrome.engine_specific.RotoGun)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class RotoGun extends Encounter {
public var angle:int;
public var health_fraction:Number;// = 0.333
public var dir:int;
public var state:int;
public var r:int;
public var invincible:Boolean;// = false
public var bullet_list:Array;
public var firing_count:int;
public var collision_rect:Rect;
public var health:int;// = 3
public var fast:Boolean;
public static const FIRING_CHARGE_DELAY:int = 6;
public static const TURNING:int = 2;
public static const TURN_SPEED:Number = 5;
public static const FIRING:int = 4;
public static const GRENADE_SPEED:int = 8;
public static const FIRING_DELAY:int = 11;
public static const BULLET_SPEED:int = 16;
public static var point:Point = new Point();
public function RotoGun(_arg1:int, _arg2:int, _arg3:Sprite, _arg4:Game, _arg5:Boolean=false, _arg6:Boolean=false){
health = 3;
health_fraction = 0.333;
invincible = false;
super(_arg3, _arg4, false);
this.dir = _arg2;
this.id_tag = _arg1;
this.invincible = _arg6;
this.fast = _arg5;
has_main = true;
if (_arg1 == 0){
angle = -90;
} else {
if (_arg1 == 1){
angle = ((_arg2 == Rect.RIGHT)) ? -45 : -135;
} else {
if (_arg1 == 2){
angle = ((_arg2 == Rect.RIGHT)) ? 0 : 180;
} else {
if (_arg1 == 3){
angle = ((_arg2 == Rect.RIGHT)) ? 45 : 135;
} else {
if (_arg1 == 4){
angle = ((_arg2 == Rect.RIGHT)) ? 90 : 90;
} else {
if (_arg1 == 5){
angle = ((_arg2 == Rect.RIGHT)) ? 135 : 45;
} else {
if (_arg1 == 6){
angle = ((_arg2 == Rect.RIGHT)) ? 180 : 0;
} else {
if (_arg1 == 7){
angle = ((_arg2 == Rect.RIGHT)) ? -135 : -45;
};
};
};
};
};
};
};
};
_arg3.rotation = angle;
state = FIRING;
firing_count = 0;
collision_rect = new Rect((x - 16), (y - 16), 32, 32);
reward = new HiddenInt(20);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function main():void{
if (state == TURNING){
if ((((Math.abs((angle - mc.rotation)) <= TURN_SPEED)) || ((Math.abs((angle - mc.rotation)) == (360 - TURN_SPEED))))){
mc.rotation = angle;
state = FIRING;
} else {
r = mc.rotation;
r = (r + ((Math.abs((angle - r)))>180) ? ((r)<angle) ? 360 : -(360) : 0);
r = (r + (((angle - r) > 0)) ? TURN_SPEED : -(TURN_SPEED));
mc.rotation = r;
};
} else {
if (state == FIRING){
fire();
};
};
}
public function fire():void{
if (firing_count == 0){
r = ((mc.rotation + 360) % 360);
if (fast){
bullet_list = [new Bullet((x + (Trig.cos[r] * 50)), (y + (Trig.sin[r] * 50)), Trig.cos[r], Trig.sin[r], BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (58 * Trig.cos[r])), (y + (58 * Trig.sin[r])), Trig.cos[r], Trig.sin[r], BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (66 * Trig.cos[r])), (y + (66 * Trig.sin[r])), Trig.cos[r], Trig.sin[r], BULLET_SPEED, g.bullet_bitmap, g), new Bullet((x + (74 * Trig.cos[r])), (y + (74 * Trig.sin[r])), Trig.cos[r], Trig.sin[r], BULLET_SPEED, g.bullet_bitmap, g)];
g.addBulletGroup(bullet_list);
(mc as MovieClip).gun.gotoAndStop("fire_bullet");
NitromeGame.sound_manager.playSound("machinegun");
point = Util.localToLocal(point, (mc as MovieClip).gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, Trig.sin[r], -(Trig.cos[r]), g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap, g.cartridge_bitmap);
} else {
g.addBullet((x + (Trig.cos[r] * 50)), (y + (Trig.sin[r] * 50)), Trig.cos[r], Trig.sin[r], GRENADE_SPEED, g.grenade_bitmap);
(mc as MovieClip).gun.gotoAndStop("fire_grenade");
NitromeGame.sound_manager.playSound("grenade");
point = Util.localToLocal(point, (mc as MovieClip).gun.cartridges, g.canvas);
g.addDebrisDir(point.x, point.y, Trig.sin[r], -(Trig.cos[r]), g.grenade_cartridge_bitmap);
};
};
if (++firing_count >= FIRING_DELAY){
state = TURNING;
firing_count = 0;
id_tag++;
if (id_tag > 7){
id_tag = (id_tag - 8);
};
if (id_tag == 0){
angle = -90;
} else {
if (id_tag == 1){
angle = ((dir == Rect.RIGHT)) ? -45 : -135;
} else {
if (id_tag == 2){
angle = ((dir == Rect.RIGHT)) ? 0 : 180;
} else {
if (id_tag == 3){
angle = ((dir == Rect.RIGHT)) ? 45 : 135;
} else {
if (id_tag == 4){
angle = ((dir == Rect.RIGHT)) ? 90 : 90;
} else {
if (id_tag == 5){
angle = ((dir == Rect.RIGHT)) ? 135 : 45;
} else {
if (id_tag == 6){
angle = ((dir == Rect.RIGHT)) ? 180 : 0;
} else {
if (id_tag == 7){
angle = ((dir == Rect.RIGHT)) ? -135 : -45;
};
};
};
};
};
};
};
};
(mc as MovieClip).gun.gotoAndStop("idle");
};
}
public function kill(_arg1:Number):void{
if (!active){
return;
};
active = false;
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
g.addFX(mc.x, mc.y, g.bang_bitmap2);
g.addSmoke(mc.x, mc.y);
g.addSmoke(mc.x, mc.y);
g.shake(3);
g.addDebris((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), ((_arg1 > 0)) ? 10 : -10, g.debris_clips[5]);
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (!active){
return;
};
if (((_arg2) || (!(invincible)))){
health--;
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == Rect.UP){
} else {
if (_local4 == Rect.RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == Rect.DOWN){
_local3.rotation = 180;
} else {
if (_local4 == Rect.LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
if ((((health <= 0)) || (_arg2))){
g.addScore(reward.value);
kill((_arg1.x - _arg1.px));
};
} else {
_arg1.ping((_arg1.px - _arg1.x));
};
}
override public function unpause():void{
(mc as MovieClip).gun.gotoAndStop("idle");
}
}
}//package com.nitrome.engine_specific
Section 60
//Scientist (com.nitrome.engine_specific.Scientist)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Scientist extends Encounter {
public var py:Number;
public var paused:Boolean;
public var cast:RayCastReport;
public var stun_count:int;
public var a:Dot;
public var health:int;// = 0
public var platform:Boolean;
public var recover_count:int;
public var alert_count:int;
public var scan:Line;
public var health_fraction:Number;// = 0
public var pause_count:int;// = 0
public var controlled:Boolean;
public var state:int;
public var dir:int;
public var grid_x:int;
public var grid_y:int;
public var stop_dir:int;
public var collision_rect:Rect;
public var temp_y:Number;
private static const DAMPING_Y:Number = 0.99;
public static const RIGHT:int = 2;
public static const RECOVER:int = 16;
public static const RIGHT_ID:String = "418";
private static const width:int = 20;
public static const LEFT:int = 8;
private static const height:int = 44;
private static const GRAVITY_Y:Number = 1.3;
public static const LEFT_ID:String = "417";
private static const FLOOR_DEPTH:int = 6;
public static const UP:int = 1;
public static const STUN_DELAY:int = 100;
public static const RUNNING:int = 1;
public static const ALERT_DELAY:int = 50;
public static const SPEED:Number = 2;
public static const RECOVER_DELAY:int = 22;
public static const DOWN:int = 4;
public static const STOPPED:int = 0;
public static const FALLING:int = 2;
public static const STUNNED:int = 8;
public static const ALERT:int = 4;
public static const TEST_DEPTH:int = 5;
public function Scientist(_arg1:int, _arg2:Sprite, _arg3:Game){
health = 0;
health_fraction = 0;
pause_count = 0;
super(_arg2, _arg3, true);
has_main = true;
has_collision = true;
this.dir = _arg1;
collision_rect = new Rect((x - (width >> 1)), (y - (height >> 1)), 26, 42);
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
py = y;
if (_arg3.stack_map[(map_y + 1)][map_x] > Game.EMPTY){
platform = true;
state = RUNNING;
} else {
platform = false;
state = FALLING;
};
a = new Dot((_arg2.x + 0.5), (_arg2.y + 0.5));
reward = new HiddenInt(40);
controlled = ((!((_arg3.path_map[map_y][map_x] == 0))) || (!((((_arg3.path_map[map_y][map_x] >= 0)) || ((_arg3.path_map[map_y][map_x] <= 0))))));
if (controlled){
paused = false;
pause_count = 0;
selectPatrolPath();
};
actor_target = false;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if (!(((state == RUNNING)) || ((state == ALERT)))){
return (false);
};
return (collision_rect.contains(_arg1, _arg2));
}
override public function intersects(_arg1:Rect):Boolean{
if (((((!(g.player.chameleon)) && (g.player.chameleon_pickup))) && ((g.player.state == Player.STEALTH)))){
if (collision_rect.intersects(_arg1)){
g.player.enterChameleonMode();
return (false);
};
};
if (((((((!(on_scroller)) || ((g.player.state == Player.STEALTH)))) || (g.player.chameleon))) || (!((state == RUNNING))))){
return (false);
};
if (((((!((scan == null))) && ((cast == null)))) && ((((((((dir == LEFT)) && ((g.player.x < x)))) || ((((dir == RIGHT)) && ((g.player.x > x)))))) || ((((dir == STOPPED)) && ((((((stop_dir == LEFT)) && ((g.player.x < x)))) || ((((stop_dir == RIGHT)) && ((g.player.x > x)))))))))))){
return (RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect));
};
return (false);
}
public function updateAnimState():void{
if (state == RUNNING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "run_right"){
(mc as MovieClip).gotoAndStop("run_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "run_left"){
(mc as MovieClip).gotoAndStop("run_left");
};
} else {
if (dir == STOPPED){
if (stop_dir == RIGHT){
if ((mc as MovieClip).currentLabel != "stop_right"){
(mc as MovieClip).gotoAndStop("stop_right");
};
} else {
if (stop_dir == LEFT){
if ((mc as MovieClip).currentLabel != "stop_left"){
(mc as MovieClip).gotoAndStop("stop_left");
};
};
};
};
};
};
} else {
if (state == FALLING){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "fall_right"){
(mc as MovieClip).gotoAndStop("fall_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "fall_left"){
(mc as MovieClip).gotoAndStop("fall_left");
};
};
};
} else {
if (state == STUNNED){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "stunned_right"){
(mc as MovieClip).gotoAndStop("stunned_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "stunned_left"){
(mc as MovieClip).gotoAndStop("stunned_left");
};
} else {
if (dir == STOPPED){
if (stop_dir == RIGHT){
if ((mc as MovieClip).currentLabel != "stunned_right"){
(mc as MovieClip).gotoAndStop("stunned_right");
};
} else {
if (stop_dir == LEFT){
if ((mc as MovieClip).currentLabel != "stunned_left"){
(mc as MovieClip).gotoAndStop("stunned_left");
};
};
};
};
};
};
} else {
if (state == RECOVER){
if (dir == RIGHT){
if ((mc as MovieClip).currentLabel != "recover_right"){
(mc as MovieClip).gotoAndStop("recover_right");
};
} else {
if (dir == LEFT){
if ((mc as MovieClip).currentLabel != "recover_left"){
(mc as MovieClip).gotoAndStop("recover_left");
};
} else {
if (dir == STOPPED){
if (stop_dir == RIGHT){
if ((mc as MovieClip).currentLabel != "recover_right"){
(mc as MovieClip).gotoAndStop("recover_right");
};
} else {
if (stop_dir == LEFT){
if ((mc as MovieClip).currentLabel != "recover_left"){
(mc as MovieClip).gotoAndStop("recover_left");
};
};
};
};
};
};
} else {
if (state == ALERT){
if ((mc as MovieClip).currentLabel != "alert"){
(mc as MovieClip).gotoAndStop("alert");
};
};
};
};
};
};
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
override public function alert():void{
if (!(((state == RUNNING)) || ((state == STOPPED)))){
return;
};
state = ALERT;
alert_count = ALERT_DELAY;
}
public function kill(_arg1:Number):void{
if (!active){
return;
};
active = false;
NitromeGame.bonus.buddha.value = 0;
g.addFX(mc.x, mc.y, g.bang_bitmap1);
if (Math.random() > 0.5){
g.addSmoke(mc.x, mc.y);
};
}
public function selectPatrolPath():void{
if (pause_count == -1){
return;
};
if ((((dir == Path.STOPPED)) && ((pause_count > 0)))){
pause_count--;
return;
};
stop_dir = dir;
Path.getDir(dir, g.path_map, null, map_x, map_y);
dir = Path.dir;
pause_count = (paused) ? 0 : Path.pause_delay;
if (pause_count > 0){
dir = Path.STOPPED;
paused = true;
return;
};
paused = false;
}
public function main():void{
on_scroller = g.scroller.contains(x, y);
if (((!(forced)) && (!(on_scroller)))){
if (dir == LEFT){
tile_id = "103";
} else {
if (dir == RIGHT){
tile_id = "104";
};
};
remove();
return;
};
if (state == RUNNING){
if (scan == null){
if (g.player != null){
scan = new Line(a, g.player);
if (on_scroller){
cast = RayCast.cast(scan, g.block_map, true);
};
};
} else {
scan.updateLine();
if (on_scroller){
cast = RayCast.cast(scan, g.block_map, true);
};
};
move();
if (controlled){
if ((((dir == RIGHT)) || ((dir == LEFT)))){
if (((x - 32) * Game.SCALE) == map_x){
selectPatrolPath();
};
} else {
if (dir == Path.STOPPED){
selectPatrolPath();
};
};
};
if (dir == RIGHT){
grid_x = ((((x + (width >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
dir = LEFT;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
dir = LEFT;
};
if (grid_x == (g.scroller.width - 1)){
dir = LEFT;
};
} else {
if (dir == LEFT){
grid_x = ((((x - (width >> 1)) - TEST_DEPTH) * Game.SCALE) >> 0);
grid_y = map_y;
if (g.stack_map[grid_y][grid_x] > Game.EMPTY){
dir = RIGHT;
};
grid_y = ((((y + (height >> 1)) + TEST_DEPTH) * Game.SCALE) >> 0);
if (g.stack_map[grid_y][grid_x] == Game.EMPTY){
dir = RIGHT;
};
if (grid_x == 0){
dir = RIGHT;
};
};
};
} else {
if (state == FALLING){
findFloor();
if (platform == false){
verletY(GRAVITY_Y, DAMPING_Y);
};
} else {
if (state == ALERT){
alert_count--;
if (alert_count <= 0){
state = RUNNING;
};
} else {
if (state == STUNNED){
stun_count--;
if (stun_count <= 0){
NitromeGame.sound_manager.playSound("electric");
state = RECOVER;
recover_count = RECOVER_DELAY;
};
} else {
if (state == RECOVER){
recover_count--;
if (recover_count <= 0){
scan.updateLine();
cast = RayCast.cast(scan, g.block_map, true);
state = RUNNING;
};
};
};
};
};
};
updateAnimState();
updateMC();
updateCollisionRect();
}
public function verletY(_arg1:Number, _arg2:Number):void{
temp_y = y;
y = (y + ((_arg2 * (y - py)) + _arg1));
py = temp_y;
if (scan != null){
scan.a.y = y;
};
map_y = ((y * Game.SCALE) >> 0);
}
override public function resolvePlayerCollision(_arg1:Player):void{
g.alert();
}
public function findFloor():void{
if (g.stack_map[(map_y + 1)][map_x] > Game.EMPTY){
platform = true;
y = (((map_y + 1) * Game.scale) - (height >> 1));
updateCollisionRect();
state = RUNNING;
};
}
public function move():void{
if (dir == RIGHT){
x = (x + SPEED);
scan.a.x = (scan.a.x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
scan.a.x = (scan.a.x - SPEED);
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
if (!(((state == RECOVER)) || ((state == STUNNED)))){
collision_rect.x = (x - (width >> 1));
collision_rect.y = (y - (height >> 1));
collision_rect.width = width;
collision_rect.height = height;
} else {
if ((((dir == RIGHT)) || ((stop_dir == RIGHT)))){
collision_rect.x = ((x - height) - (width >> 1));
collision_rect.y = y;
collision_rect.width = height;
collision_rect.height = width;
} else {
if ((((dir == LEFT)) || ((stop_dir == LEFT)))){
collision_rect.x = (x + (width >> 1));
collision_rect.y = y;
collision_rect.width = height;
collision_rect.height = width;
};
};
};
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:int;
if (!(((state == RUNNING)) || ((state == ALERT)))){
return;
};
_local3 = new HitSparkMC();
_local3.x = (_arg1.x >> 0);
_local3.y = (_arg1.y >> 0);
_local4 = collision_rect.sideOf(_arg1.x, _arg1.y);
if (_local4 == UP){
} else {
if (_local4 == RIGHT){
_local3.rotation = 90;
} else {
if (_local4 == DOWN){
_local3.rotation = 180;
} else {
if (_local4 == LEFT){
_local3.rotation = 270;
};
};
};
};
g.effect_holder.addChild(_local3);
NitromeGame.sound_manager.playSound("scientisthit");
state = STUNNED;
stun_count = STUN_DELAY;
}
override public function unpause():void{
var _local1:MovieClip;
if (state == STUNNED){
_local1 = (mc as MovieClip).stun;
if (_local1.currentFrame == _local1.totalFrames){
_local1.gotoAndStop(_local1.totalFrames);
};
};
}
}
}//package com.nitrome.engine_specific
Section 61
//SkipStoryButton (com.nitrome.engine_specific.SkipStoryButton)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.events.*;
public class SkipStoryButton extends Sprite {
var active:Boolean;// = true
public function SkipStoryButton(){
active = true;
super();
if (StoryClip.next_frame == "congrats"){
visible = false;
};
addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
}
public function onClick(_arg1:MouseEvent):void{
if (active){
if (NitromeGame.timeline.currentLabel == "story"){
NitromeGame.timeline.story.quit();
};
};
}
}
}//package com.nitrome.engine_specific
Section 62
//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 active:Boolean;
public var count:int;
public var g:Game;
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;
var _local2:int;
verlet(0, 0.2, 0.99);
_local2 = (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 63
//Sniper (com.nitrome.engine_specific.Sniper)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
import flash.geom.*;
public class Sniper extends Encounter {
public var stealth:Boolean;
public var wobble:int;
public var sight:SniperSight;
public var stealth_clip:StealthClip;
public var stealth_mask:MovieClip;
public var collision_rect:Rect;
public static const WOBBLE_STEP:int = 1;
public static var point:Point = new Point();
public function Sniper(_arg1:Sprite, _arg2:Game, _arg3:Boolean=false){
var _local4:Boolean;
var _local5:int;
super(_arg1, _arg2, false);
this.stealth = false;
has_main = false;
collision_rect = new Rect((_arg1.x + 12), (_arg1.y + 10), 46, 46);
map_x = (init_x = ((_arg1.x * Game.SCALE) >> 0));
map_y = (init_y = ((_arg1.y * Game.SCALE) >> 0));
_local4 = false;
_local5 = 0;
while (_local5 < _arg2.encounters.length) {
if ((((((_arg2.encounters[_local5].init_x == init_x)) && ((_arg2.encounters[_local5].init_y == init_y)))) && (!((_arg2.encounters[_local5] == this))))){
if ((_arg2.encounters[_local5] is SniperSight)){
sight = _arg2.encounters[_local5];
_local4 = true;
break;
};
};
_local5++;
};
if (!_local4){
createSight();
};
reward = new HiddenInt(70);
}
override public function remove():void{
if (forced){
return;
};
if (active){
active = false;
g.scroller.map_array_layers[layer][init_y][init_x] = tile_id;
};
}
public function createSight():void{
var _local1:MovieClip;
_local1 = new SightMC();
_local1.blendMode = BlendMode.OVERLAY;
_local1.gotoAndStop(1);
_local1.x = (collision_rect.x + (collision_rect.width * 0.5));
_local1.y = (collision_rect.y + (collision_rect.height * 0.5));
g.light_holder.addChild(_local1);
sight = new SniperSight(_local1, g, stealth);
sight.map_x = init_x;
sight.map_y = init_y;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function main():void{
wobble = ((wobble + WOBBLE_STEP) % 360);
stealth_clip.alpha = (0.85 + (Math.abs(Trig.sin[wobble]) * 0.15));
}
public function stealthScreenGrab():void{
mc.visible = false;
point = Util.localToLocal(point, mc, NitromeGame.timeline);
stealth_clip.grab(-(point.x), -(point.y));
mc.visible = true;
}
public function kill(_arg1:Number):void{
if (!active){
return;
};
active = false;
if (!spawned){
NitromeGame.bonus.enemy_count.value++;
};
g.addFX((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), g.bang_bitmap1);
g.shake(3);
sight.kill();
g.scroller.map_array_layers[layer][map_y][map_x] = 0;
if (((stealth) && (!((stealth_clip.parent == null))))){
stealth_clip.parent.removeChild(stealth_clip);
};
g.addDebris((collision_rect.x + (collision_rect.width * 0.5)), (collision_rect.y + (collision_rect.height * 0.5)), ((_arg1 > 0)) ? 10 : -10, g.debris_clips[0], g.debris_clips[1]);
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
if (!active){
return;
};
if (!spawned){
g.addScore(reward.value);
} else {
g.addScore((reward.value / 10));
};
kill((_arg1.x - _arg1.px));
}
}
}//package com.nitrome.engine_specific
Section 64
//SniperSight (com.nitrome.engine_specific.SniperSight)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class SniperSight extends Encounter {
private var fade:Boolean;
public var state:int;
public var stealth:Boolean;
public var hit:Dot;
public var firing_count:int;
public var foreground_layer:Array;
public var clear_shot:Boolean;
public var player:Player;
public var target_line:Line;
public var sight_count:int;
public static const SPEED:int = 7;
public static const TARGETING:int = 2;
public static const FIRING:int = 4;
public static const TRACKING:int = 1;
public static const FIRING_STEP:int = 2;
public static const SEARCHING:int = 0;
public static const SIGHT_STEP:int = 2;
public function SniperSight(_arg1:Sprite, _arg2:Game, _arg3:Boolean){
super(_arg1, _arg2, true);
this.stealth = true;
has_main = true;
state = TRACKING;
clear_shot = false;
if (_arg2.player != null){
target_line = new Line(new Dot(_arg1.x, _arg1.y), _arg2.player);
};
foreground_layer = _arg2.scroller.map_array_layers[3];
hit = new Dot(x, y);
actor_target = false;
map_x = (init_x = ((_arg1.x * Game.SCALE) >> 0));
map_y = (init_y = ((_arg1.y * Game.SCALE) >> 0));
}
public function kill():void{
if (((fade) || (!(active)))){
return;
};
fade = true;
}
override public function intersects(_arg1:Rect):Boolean{
return (_arg1.intersectsCircle(mc.x, mc.y, 20));
}
public function fire():void{
var _local1:int;
var _local2:Number;
hit.x = mc.x;
hit.y = mc.y;
_local1 = (Math.random() * 360);
_local2 = (-30 + (Math.random() * 60));
hit.x = (hit.x + (Trig.cos[_local1] * _local2));
hit.y = (hit.y + (Trig.sin[_local1] * _local2));
map_x = (hit.x * Game.SCALE);
map_y = (hit.y * Game.SCALE);
if (((clear_shot) && (g.player.collision_rect.contains(hit.x, hit.y)))){
g.player.hit();
};
if ((((((((map_x > -1)) && ((map_x < g.scroller.width)))) && ((map_y > -1)))) && ((map_y < g.scroller.height)))){
if ((((g.stack_map[map_y][map_x] > Game.EMPTY)) || (!((((foreground_layer[map_y][map_x] == null)) || ((foreground_layer[map_y][map_x] == 0))))))){
g.addFX(hit.x, hit.y, g.smoke_hit_bitmap);
};
};
g.addFX(hit.x, hit.y, g.sniper_shot_bitmap);
}
public function main():void{
if (fade){
if (mc.alpha > 0){
mc.alpha = (mc.alpha - 0.2);
} else {
active = false;
return;
};
return;
};
clear_shot = (((foreground_layer[g.player.grid_y][g.player.grid_x] == null)) || ((foreground_layer[g.player.grid_y][g.player.grid_x] == 0)));
if (state == SEARCHING){
if (((((stealth) || (((!((g.player.state == Player.STEALTH))) && (!(g.player.chameleon)))))) && (clear_shot))){
state = TRACKING;
};
} else {
if (state == TRACKING){
if (((((!(stealth)) && ((((g.player.state == Player.STEALTH)) || (g.player.chameleon))))) || (!(clear_shot)))){
state = SEARCHING;
};
} else {
if (state == TARGETING){
if (sight_count < (SIGHT_STEP * 4)){
sight_count++;
if (sight_count < SIGHT_STEP){
(mc as MovieClip).gotoAndStop(2);
} else {
if (sight_count == SIGHT_STEP){
(mc as MovieClip).gotoAndStop(3);
} else {
if (sight_count == (SIGHT_STEP * 2)){
(mc as MovieClip).gotoAndStop(4);
} else {
if (sight_count == (SIGHT_STEP * 3)){
(mc as MovieClip).gotoAndStop(5);
};
};
};
};
} else {
state = FIRING;
firing_count = 0;
};
} else {
if (state == FIRING){
if (firing_count < (FIRING_STEP * 4)){
if (firing_count == 0){
NitromeGame.sound_manager.playSound("machinegun");
fire();
} else {
if (firing_count == FIRING_STEP){
fire();
} else {
if (firing_count == (FIRING_STEP * 2)){
fire();
} else {
if (firing_count == (FIRING_STEP * 3)){
fire();
};
};
};
};
firing_count++;
} else {
state = TRACKING;
(mc as MovieClip).gotoAndStop(1);
};
};
};
};
};
if (((!((target_line == null))) && ((((((state == TRACKING)) || ((state == SEARCHING)))) || (FIRING))))){
move();
} else {
if (g.player != null){
target_line = new Line(new Dot(mc.x, mc.y), g.player);
};
};
}
override public function resolvePlayerCollision(_arg1:Player):void{
if ((((((state == TRACKING)) && (clear_shot))) && (((stealth) || (((!((g.player.state == Player.STEALTH))) && (!(g.player.chameleon)))))))){
state = TARGETING;
sight_count = 0;
};
}
public function move():void{
target_line.a.x = mc.x;
target_line.a.y = mc.y;
if ((((((((state == TRACKING)) || ((state == FIRING)))) || ((state == TARGETING)))) || (!(Util.onScreen(mc.x, mc.y, g, 10))))){
target_line.updateLine();
};
if (target_line.len > 10){
mc.x = (mc.x + (target_line.dx * SPEED));
mc.y = (mc.y + (target_line.dy * SPEED));
};
}
}
}//package com.nitrome.engine_specific
Section 65
//SpawnBlock (com.nitrome.engine_specific.SpawnBlock)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class SpawnBlock extends EncounterBlock {
public var state:int;
public var child:Clip;
public var hack:Boolean;
public var backing:Sprite;
public var spawn_num:int;
public var spawn_id:int;
public static const SPAWN_TOTAL:int = 6;
public static const ACTIVE:int = 2;
public static const INACTIVE:int = 1;
public function SpawnBlock(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2);
spawn = true;
state = _arg2.alert_state;
spawn_num = SPAWN_TOTAL;
hack = false;
if ((((state == ACTIVE)) || (aggressive))){
(_arg1 as MovieClip).gotoAndStop("active");
has_main = true;
} else {
if (state == INACTIVE){
(_arg1 as MovieClip).gotoAndStop("inactive");
};
};
}
override public function remove():void{
if (forced){
return;
};
if (active){
active = false;
g.scroller.map_array_layers[layer][map_y][map_x] = tile_id;
if (backing.parent != null){
backing.parent.removeChild(backing);
};
};
}
public function main():void{
if (((((!(((hack) && (!((g.spider == null)))))) && ((spawn_num > 0)))) && ((((child == null)) || (((!((child == null))) && (!((child as Encounter).active)))))))){
g.scroller.changeLayer(Scroller.ENCOUNTER_LAYER);
g.scroller.map_array[map_y][map_x] = spawn_id;
g.scroller.tile_maker.mapElement(map_x, map_y);
child = g.encounters[(g.encounters.length - 1)];
(child as Encounter).spawned = true;
if (!aggressive){
spawn_num--;
};
};
}
override public function alert():void{
if (aggressive){
return;
};
(mc as MovieClip).gotoAndPlay("activating");
has_main = true;
spawn_num = SPAWN_TOTAL;
}
override public function standdown():void{
if (aggressive){
return;
};
(mc as MovieClip).gotoAndPlay("deactivating");
has_main = false;
child = null;
}
}
}//package com.nitrome.engine_specific
Section 66
//Spider (com.nitrome.engine_specific.Spider)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Spider extends FlyingBot {
public var light:MovieClip;
public var health:int;// = 0
public var health_fraction:Number;// = 0
public var body:MovieClip;
public var collision_rect:Rect;
public var hackable:Boolean;
public static const TURN_SPEED:Number = 6;
public static const SPEED:Number = 8;
public function Spider(_arg1:int, _arg2:MovieClip, _arg3:Game, _arg4:Boolean=false, _arg5:Boolean=false){
health = 0;
health_fraction = 0;
super(_arg1, _arg2, _arg3);
dir_mc = _arg2;
body = (_arg2 as MovieClip).body;
light = (_arg2 as MovieClip).light;
if (((_arg5) || (!((_arg3.alert_state == Game.ACTIVE))))){
this.aggressive = _arg4;
} else {
this.aggressive = true;
};
light.visible = this.aggressive;
if (((!(this.aggressive)) || ((_arg3.player == null)))){
selectPatrolPath();
} else {
selectSeekPath();
};
if (_arg1 == STOPPED){
body.stop();
light.stop();
};
state = MOVING;
if ((((this.dir == DOWN)) || ((((this.dir == STOPPED)) && ((old_dir == DOWN)))))){
_arg2.rotation = (angle = 90);
} else {
if ((((this.dir == RIGHT)) || ((((this.dir == STOPPED)) && ((old_dir == RIGHT)))))){
_arg2.rotation = (angle = 0);
} else {
if ((((this.dir == UP)) || ((((this.dir == STOPPED)) && ((old_dir == UP)))))){
_arg2.rotation = (angle = -90);
} else {
if ((((this.dir == LEFT)) || ((((this.dir == STOPPED)) && ((old_dir == LEFT)))))){
_arg2.rotation = (angle = 180);
};
};
};
};
collision_rect = new Rect((x - 16), (y - 16), 32, 32);
reward = new HiddenInt(10);
this.hackable = _arg5;
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (collision_rect.contains(_arg1, _arg2));
}
public function updateMC():void{
if ((((state == TURNING)) || ((dir == STOPPED)))){
body.stop();
light.stop();
} else {
body.play();
light.play();
};
mc.x = (x >> 0);
mc.y = (y >> 0);
}
override public function intersects(_arg1:Rect):Boolean{
return (collision_rect.intersects(_arg1));
}
override public function alert():void{
if (hackable){
return;
};
aggressive = true;
light.visible = true;
}
public function kill():void{
if (!active){
return;
};
active = false;
if (((!(spawned)) && (!(hackable)))){
NitromeGame.bonus.enemy_count.value++;
};
g.addFX(mc.x, mc.y, g.bang_bitmap1);
}
public function main():void{
if (((!(forced)) && (!(g.scroller.contains(x, y))))){
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
if (hackable){
tile_id = "0";
} else {
if (aggressive){
tile_id = "111";
} else {
if (dir == UP){
tile_id = "107";
} else {
if (dir == RIGHT){
tile_id = "108";
} else {
if (dir == DOWN){
tile_id = "109";
} else {
if (dir == LEFT){
tile_id = "110";
};
};
};
};
};
};
remove();
return;
};
if (state == MOVING){
move();
if ((((dir == UP)) || ((dir == DOWN)))){
if (((y - 32) * Game.SCALE) == map_y){
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
} else {
if ((((dir == LEFT)) || ((dir == RIGHT)))){
if (((x - 32) * Game.SCALE) == map_x){
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
} else {
if (dir == STOPPED){
if (aggressive){
selectSeekPath();
} else {
selectPatrolPath();
};
};
};
};
} else {
if (state == TURNING){
if (Math.abs((angle - mc.rotation)) <= TURN_SPEED){
mc.rotation = angle;
state = MOVING;
} else {
r = mc.rotation;
r = (r + ((Math.abs((angle - r)))>180) ? ((r)<angle) ? 360 : -(360) : 0);
r = (r + (((angle - r) > 0)) ? TURN_SPEED : -(TURN_SPEED));
mc.rotation = r;
};
};
};
updateMC();
updateCollisionRect();
}
override public function resolvePlayerCollision(_arg1:Player):void{
_arg1.hit();
kill();
}
public function move():void{
if (dir == UP){
y = (y - SPEED);
} else {
if (dir == RIGHT){
x = (x + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
} else {
if (dir == DOWN){
y = (y + SPEED);
};
};
};
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
}
public function updateCollisionRect():void{
collision_rect.x = (x - 16);
collision_rect.y = (y - 16);
}
override public function resolveWeaponCollision(_arg1:Star, _arg2:Boolean=false):void{
var _local3:MovieClip;
var _local4:HackedSpider;
if (!active){
return;
};
if (((hackable) && ((_arg1 is RopeAnchor)))){
active = false;
_local3 = new HackSpiderMC();
_local3.x = (x >> 0);
_local3.y = (y >> 0);
g.monster_holder.addChild(_local3);
_local4 = new HackedSpider(_local3, g);
NitromeGame.sound_manager.playSound("hack");
} else {
if (!spawned){
g.addScore(reward.value);
} else {
if (!hackable){
g.addScore((reward.value / 10));
};
};
kill();
};
}
}
}//package com.nitrome.engine_specific
Section 67
//Star (com.nitrome.engine_specific.Star)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class Star extends Dot {
public var active:Boolean;
public var px:Number;
public var samples:Array;
public var py:Number;
public var dx:Number;
public var mc:Sprite;
public var dy:Number;
public var speed:Number;// = 32
public var temp_x:Number;
public var temp_y:Number;
public var map_y:int;
public var map_x:int;
public var dead:Boolean;
public var g:Game;
public var i:int;
public var j:int;
public var rope_star:Boolean;// = false
public static const SPEED:Number = 32;
public function Star(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Sprite, _arg6:Game){
speed = 32;
rope_star = false;
super(_arg1, _arg2);
this.mc = _arg5;
this.g = _arg6;
this.dx = _arg3;
this.dy = _arg4;
px = (ix = _arg1);
py = (iy = _arg2);
samples = [];
samples.push(new Dot(_arg1, _arg2));
samples.push(new Dot(_arg1, _arg2));
samples.push(new Dot(_arg1, _arg2));
active = true;
dead = false;
}
public function ping(_arg1:Number):void{
g.addDebris(x, y, _arg1, g.star_debris_bitmap);
mc.visible = false;
active = false;
dead = true;
}
public function stick():void{
var _local1:int;
active = false;
_local1 = (mc as LiveStar).star.currentFrame;
mc.parent.removeChild(mc);
mc = new DeadStar();
(mc as DeadStar).init(_local1);
g.dead_star_holder.addChild(mc);
updateMC();
}
protected function blockCollision():void{
var _local1:int;
_local1 = 0;
while (_local1 < samples.length) {
map_x = ((samples[_local1].x * Game.SCALE) >> 0);
map_y = ((samples[_local1].y * Game.SCALE) >> 0);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (g.block_map[map_y][map_x].b.contains(samples[_local1].x, samples[_local1].y)){
x = samples[_local1].x;
y = samples[_local1].y;
anchor(g.block_map[map_y][map_x].b, g.block_map[map_y][map_x].mc);
if (((((rope_star) && (!(g.block_map[map_y][map_x].b.force_field)))) && (!(g.block_map[map_y][map_x].b.cutting)))){
NitromeGame.sound_manager.playSound("star_hit");
};
return;
};
} else {
x = samples[_local1].x;
y = samples[_local1].y;
anchor(g.block_map[map_y][map_x].b);
if (((((rope_star) && (!(g.block_map[map_y][map_x].b.force_field)))) && (!(g.block_map[map_y][map_x].b.cutting)))){
NitromeGame.sound_manager.playSound("star_hit");
};
return;
};
};
_local1++;
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
if (g.stack_map[map_y][map_x] > Game.EMPTY){
if (g.stack_map[map_y][map_x] == Rect.TEMP){
if (g.block_map[map_y][map_x].b.contains(x, y)){
anchor(g.block_map[map_y][map_x].b, g.block_map[map_y][map_x].mc);
if (((((rope_star) && (!(g.block_map[map_y][map_x].b.force_field)))) && (!(g.block_map[map_y][map_x].b.cutting)))){
NitromeGame.sound_manager.playSound("star_hit");
};
};
} else {
anchor(g.block_map[map_y][map_x].b);
if (((((rope_star) && (!(g.block_map[map_y][map_x].b.force_field)))) && (!(g.block_map[map_y][map_x].b.cutting)))){
NitromeGame.sound_manager.playSound("star_hit");
};
};
};
}
public function erase():void{
mc.parent.removeChild(mc);
active = false;
dead = true;
}
public function updateMC():void{
mc.x = (x >> 0);
mc.y = (y >> 0);
}
protected function anchor(_arg1:Block, _arg2:Sprite=null):void{
var _local3:Number;
var _local4:Number;
var _local5:Rect;
var _local6:*;
var _local7:Number;
var _local8:Number;
var _local9:int;
var _local10:int;
_local3 = (x - px);
_local4 = (y - py);
_local5 = new Rect(0, 0, 0, 0);
_local5.x = Math.min(x, px);
_local5.y = Math.min(y, py);
_local5.width = Math.abs((x - px));
_local5.height = Math.abs((y - py));
_local6 = _local5.intersection(_arg1);
_local7 = 0;
_local8 = 0;
if (_local3 != 0){
_local7 = (Math.min(Math.abs(_local3), _local6.width) * ((_local3 > 0)) ? 1 : -1);
};
if (_local4 != 0){
_local8 = (Math.min(Math.abs(_local4), _local6.height) * ((_local4 > 0)) ? 1 : -1);
};
x = (x - _local7);
y = (y - _local8);
_local9 = _arg1.sideOf(x, y);
if ((_arg1.stacked & _local9)){
if ((((_local9 == Rect.UP)) || ((_local9 == Rect.DOWN)))){
if (x < (_arg1.x + (_arg1.width * 0.5))){
x = (_arg1.x - 1);
_local9 = Rect.LEFT;
} else {
x = (_arg1.x + _arg1.width);
_local9 = Rect.RIGHT;
};
} else {
if ((((_local9 == Rect.RIGHT)) || ((_local9 == Rect.LEFT)))){
if (y < (_arg1.y + (_arg1.height * 0.5))){
y = (_arg1.y - 1);
_local9 = Rect.UP;
} else {
y = (_arg1.y + _arg1.height);
_local9 = Rect.DOWN;
};
};
};
} else {
if (_local9 == Rect.LEFT){
x = (_arg1.x - 1);
} else {
if (_local9 == Rect.UP){
y = (_arg1.y - 1);
};
};
};
active = false;
_local10 = (mc as LiveStar).star.currentFrame;
mc.parent.removeChild(mc);
mc = new DeadStar();
(mc as DeadStar).init(_local10);
if (_arg2 == null){
g.dead_star_holder.addChild(mc);
updateMC();
} else {
mc.x = (x - _arg1.x);
mc.y = (y - _arg1.y);
_arg2.addChildAt(mc, 0);
};
if (((_arg1.force_field) || (_arg1.cutting))){
ping(-(_local3));
};
}
public function main():void{
if (active){
move();
if (!g.scroller.contains(x, y)){
erase();
};
if (active){
encounterCollision();
blockCollision();
if (active){
updateMC();
};
};
};
}
protected function encounterCollision():void{
j = 0;
while (j < samples.length) {
i = 0;
while (i < g.encounters.length) {
if (!g.encounters[i].has_collision){
} else {
if (g.encounters[i].contains(samples[j].x, samples[j].y)){
x = samples[j].x;
y = samples[j].y;
g.encounters[i].resolveWeaponCollision(this);
if (((!(g.boss_level)) && (g.encounters[i].active))){
g.enemy_health_panel.bar.scaleX = (g.encounters[i].health_fraction * g.encounters[i].health);
} else {
if (!g.boss_level){
g.enemy_health_panel.bar.scaleX = 0;
} else {
if ((g.encounters[i] is Boss)){
g.enemy_health_panel.bar.scaleX = (g.encounters[i].health_fraction * g.encounters[i].health);
};
};
};
kill();
return;
};
};
i++;
};
j++;
};
i = 0;
while (i < g.encounters.length) {
if (!g.encounters[i].has_collision){
} else {
if (g.encounters[i].contains(x, y)){
g.encounters[i].resolveWeaponCollision(this);
if (((!(g.boss_level)) && (g.encounters[i].active))){
g.enemy_health_panel.bar.scaleX = (g.encounters[i].health_fraction * g.encounters[i].health);
} else {
if (!g.boss_level){
g.enemy_health_panel.bar.scaleX = 0;
} else {
if ((g.encounters[i] is Boss)){
g.enemy_health_panel.bar.scaleX = (g.encounters[i].health_fraction * g.encounters[i].health);
};
};
};
kill();
return;
};
};
i++;
};
}
protected function move():void{
var _local1:int;
px = x;
py = y;
_local1 = 0;
while (_local1 < samples.length) {
samples[_local1].x = (x + (((dx * SPEED) * 0.25) * (_local1 + 1)));
samples[_local1].y = (y + (((dy * SPEED) * 0.25) * (_local1 + 1)));
_local1++;
};
x = (x + (dx * SPEED));
y = (y + (dy * SPEED));
}
public function kill():void{
(mc as DeadStar).kill();
active = false;
dead = true;
}
}
}//package com.nitrome.engine_specific
Section 68
//StealthClip (com.nitrome.engine_specific.StealthClip)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.geom.*;
public class StealthClip extends Sprite {
public var bitmap_mask:Sprite;
public var bitmap:Bitmap;
public var data:BitmapData;
public var matrix:Matrix;
public var rect:Rectangle;
public function StealthClip(_arg1:Sprite, _arg2:int, _arg3:int){
this.bitmap_mask = _arg1;
data = new BitmapData(_arg2, _arg3, true, 0xFFFFFF);
bitmap = new Bitmap(data);
addChild(bitmap);
addChild(_arg1);
_arg1.cacheAsBitmap = true;
bitmap.cacheAsBitmap = true;
bitmap.mask = _arg1;
matrix = new Matrix();
rect = new Rectangle(0, 0, _arg2, _arg3);
}
public function grab(_arg1:Number, _arg2:Number):void{
visible = false;
NitromeGame.timeline.loading_clip.visible = false;
matrix.tx = _arg1;
matrix.ty = _arg2;
data.draw(NitromeGame.timeline, matrix, null, null, rect);
visible = true;
NitromeGame.timeline.loading_clip.visible = true;
}
}
}//package com.nitrome.engine_specific
Section 69
//StoryClip (com.nitrome.engine_specific.StoryClip)
package com.nitrome.engine_specific {
import flash.display.*;
import flash.events.*;
import com.nitrome.game.*;
import flash.text.*;
public class StoryClip extends Sprite {
public var active:Boolean;
public var pos:int;
public var show_count:int;
public var txt:TextField;
public var tf:TextFormat;
public static const SECOND_BOSS:int = 3;
public static const INTRO:int = 0;
public static const FAKE_END:int = 4;
public static const REAL_END:int = 5;
public static const STORY:Array = [["2028*\n\nHuge corporations battle for markets across the planet. They control everything and everyone. On the front line are warriors like Takeshi, a young ninja fresh from combat academy. Today is his first corporate espionage mission, little does Takeshi realise that today begins the story of a legendary ninja... the final ninja.\n\n*40 years before the events of Final Ninja 1."], ["Takeshi awakes alone in a cold cell somewhere deep in the base..."], ["\"Someone's sent a tiny ninja for me to play with...a small plaything before dinnertime....looks like a sweet snack!! Tasty!!\""], ["\"Dinner is served!!! I'm ready this time little ninja! Ha ha ha Extra Tasty!!!\""], ["With Maxwell Murlock and Victor Boshi gone, the company was ruined and the little ninja who had toppled a giant corporation had one thing left to do..."], ["\"...you even bought some of my guards back. Excellent work Takeshi! You'll go far in this organisation. And Snowfox, I'm not letting you on another of these undercover missions, your mother and I have had enough worrying. And I know it's a long journey home so both of you: Behave!\"", "\"I'm still your boss.\""]];
public static const FIRST_BOSS:int = 2;
public static const CAPTURED:int = 1;
public static var next_frame:String;
public static var list:Array;
public function StoryClip(){
tf = new TextFormat(new StoryFont().fontName, 16, 0x838383, null, null, null, null, null, TextFormatAlign.CENTER);
}
public function init():void{
txt = new TextField();
txt.embedFonts = true;
txt.wordWrap = true;
txt.width = 550;
txt.x = 0;
txt.selectable = false;
addChild(txt);
pos = 0;
changeText(list[pos]);
txt.alpha = 0;
active = true;
addEventListener(Event.ENTER_FRAME, main, false, 0, true);
addEventListener(MouseEvent.CLICK, click, false, 0, true);
}
public function quit():void{
if (!active){
return;
};
active = false;
NitromeGame.transition.doTween(next_frame);
if (next_frame == "game"){
NitromeGame.sound_manager.playMusicFadeIn(SoundManager.GAME);
} else {
if (next_frame == "congrats"){
NitromeGame.sound_manager.playMusicFadeIn(SoundManager.MENU);
};
};
removeEventListener(Event.ENTER_FRAME, main);
removeEventListener(MouseEvent.CLICK, click);
}
public function click(_arg1:MouseEvent):void{
if (txt.alpha >= 1){
show_count = 0;
};
}
public function main(_arg1:Event):void{
if ((((show_count > 0)) && ((txt.alpha < 1)))){
txt.alpha = (txt.alpha + 0.05);
} else {
if (show_count > 0){
show_count--;
} else {
if ((((show_count <= 0)) && ((txt.alpha > 0)))){
txt.alpha = (txt.alpha - 0.05);
} else {
if (pos < (list.length - 1)){
changeText(list[++pos]);
} else {
quit();
};
};
};
};
}
public function changeText(_arg1:String):void{
txt.text = _arg1;
txt.setTextFormat(tf);
txt.height = 400;
txt.y = (200 - (txt.textHeight * 0.5));
show_count = (_arg1.replace(/ /g, "").length * 4);
}
}
}//package com.nitrome.engine_specific
Section 70
//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 class_names:Array;
private var item;
private var mc:Sprite;
public var forced:Boolean;
private var index:int;
public var g:Game;
private var i:int;
private var n:int;
public var s:Scroller;
public var fixed:Boolean;
public var id_tag:int;
private static const DOWN:int = 4;
private static const RIGHT:int = 2;
private static const LEFT:int = 8;
private static const EMPTY:int = 1;
private static const IN_PLAY:int = 2;
private static const UP:int = 1;
public function TileMaker(_arg1:Game, _arg2:Scroller){
BladeManGuard.clear();
this.g = _arg1;
this.s = _arg2;
class_names = new Array("", "", "BuildBlockMC", "BuildElectricBlockMC", "BuildWhiteBlockMC", "", "", "", "", "", "", "", "", "", "", "", "", "", "BeamMC1", "BeamMC1", "BeamMC2", "BeamMC2", "BladeManMC", "BladeManMC", "BossMC", "BossMC", "BossShadowMC", "CammoMC", "CoinMC", "CowardGeneratorMC", "flash.display.Sprite", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "FlyingGunMC", "ForceFieldMC1", "ForceFieldMC2", "GeneratorMC", "GunBlockMC1", "GunBlockMC1", "GunBlockMC2", "GunBlockMC2", "GunBlockMC3", "GunBlockMC3", "GunBlockMC4", "GunBlockMC4", "GunManMC", "GunManMC", "GunManMC", "GunManMC", "HealthMC", "LiftMC", "NinjaMC", "NinjaMC", "NinjaMC", "NinjaMC", "RotoGunMC", "RotoGunMC", "RotoGunMC", "RotoGunMC", "ScannerMC1", "ScannerMC1", "LaserMC1", "LaserMC1", "ScannerMC2", "ScannerMC2", "LaserMC2", "LaserMC2", "ScannerMC3", "ScannerMC3", "LaserMC3", "LaserMC3", "ScannerMC4", "ScannerMC4", "LaserMC4", "LaserMC4", "ScannerMC5", "ScannerMC5", "LaserMC5", "LaserMC5", "ScannerMC6", "ScannerMC6", "LaserMC6", "LaserMC6", "ScannerMC7", "ScannerMC7", "LaserMC7", "LaserMC7", "ScannerMC8", "ScannerMC8", "LaserMC8", "LaserMC8", "ScientistMC", "ScientistMC", "SniperMC", "SniperMC", "SpiderMC", "SpiderMC", "SpiderMC", "SpiderMC", "SpiderMC", "", "", "", "", "EvilMovingBlockMC", "SpawnMC1", "SpawnMC1", "SpawnMC1", "SpawnMC2", "SpawnMC2", "SpawnMC2", "HackSpiderMC", "HackSpiderMC", "BladeManMC", "CowardMC", "NinjaGuardMC", "BuildCoverMC", "EvilMovingBlockMC", "EvilMovingBlockMC", "EvilMovingBlockMC", "EvilMovingBlockMC", "EvilMovingBlockMC", "MovingMC6", "MovingMC6", "MovingMC6", "MovingMC6", "MovingMC8", "MovingMC8", "MovingMC8", "MovingMC8", "MovingMC3", "MovingMC3", "MovingMC3", "MovingMC3", "MovingMC11", "MovingMC11", "MovingMC11", "MovingMC11", "MovingMC10", "MovingMC10", "MovingMC10", "MovingMC10", "EntranceLiftMC", "GunManMC", "GunManMC", "WaterLineMC", "BlockMC1", "BlockMC2", "BlockMC3", "BlockMC4", "BlockMC5", "BlockMC6", "BlockMC7", "BlockMC8", "BlockMC9", "BlockMC10", "BlockMC11", "BlockMC12", "BlockMC13", "BlockMC14", "BlockMC15", "BlockMC16", "BlockMC17", "BlockMC18", "BlockMC19", "BlockMC20", "BlockMC21", "BlockMC22", "BlockMC23", "BlockMC24", "BlockMC25", "BlockMC26", "BlockMC27", "BlockMC28", "BlockMC29", "BlockMC30", "BlockMC31", "BlockMC32", "BlockMC33", "BlockMC34", "BlockMC35", "BlockMC36", "BlockMC37", "BlockMC38", "BlockMC39", "BlockMC40", "BlockMC41", "BlockMC42", "BlockMC43", "BlockMC44", "BlockMC45", "BlockMC46", "BlockMC47", "BlockMC48", "BlockMC49", "BlockMC50", "BlockMC51", "BlockMC52", "BlockMC53", "BlockMC54", "BlockMC55", "BlockMC56", "BlockMC57", "BlockMC58", "BlockMC59", "BlockMC60", "BlockMC61", "BlockMC62", "BlockMC63", "BlockMC64", "BlockMC65", "BlockMC66", "BlockMC67", "BlockMC68", "BlockMC69", "BlockMC70", "BlockMC71", "BlockMC72", "BlockMC73", "BlockMC74", "BlockMC75", "BlockMC76", "BlockMC77", "BlockMC78", "BlockMC79", "BlockMC80", "BlockMC81", "BlockMC82", "BlockMC83", "BlockMC84", "BlockMC85", "BlockMC86", "BlockMC87", "BlockMC88", "BlockMC89", "BlockMC90", "BlockMC91", "BlockMC92", "BlockMC93", "BlockMC94", "BlockMC95", "BlockMC96", "BlockMC97", "BlockMC98", "BlockMC99", "BlockMC100", "BlockMC101", "BlockMC102", "BlockMC103", "BlockMC104", "BlockMC105", "BlockMC106", "BlockMC107", "BlockMC108", "BlockMC109", "BlockMC110", "BlockMC111", "BlockMC112", "BlockMC113", "BlockMC114", "BlockMC115", "BlockMC116", "BlockMC117", "BlockMC118", "BlockMC119", "BlockMC120", "BlockMC121", "BlockMC122", "BlockMC123", "BlockMC124", "BlockMC125", "BlockMC126", "BlockMC127", "BlockMC128", "BlockMC129", "BlockMC130", "BlockMC131", "BlockMC132", "BlockMC133", "BlockMC134", "BlockMC135", "BlockMC136", "BlockMC137", "BlockMC138", "BlockMC139", "BlockMC140", "BlockMC141", "BlockMC142", "BlockMC143", "BlockMC144", "BlockMC145", "BlockMC146", "BlockMC147", "BlockMC148", "BlockMC149", "BlockMC150", "BlockMC151", "BlockMC152", "BlockMC153", "BlockMC154", "BlockMC155", "BlockMC156", "BlockMC157", "BlockMC158", "BlockMC159", "BlockMC160", "BlockMC161", "BlockMC162", "BlockMC163", "BlockMC164", "BlockMC165", "BlockMC166", "BlockMC167", "BlockMC168", "BlockMC169", "BlockMC170", "BlockMC171", "BlockMC172", "BlockMC173", "BlockMC174", "BlockMC175", "BlockMC176", "BlockMC177", "BlockMC178", "BlockMC179", "BlockMC180", "BlockMC181", "BlockMC182", "BlockMC183", "BlockMC184", "BlockMC185", "BlockMC186", "BlockMC187", "BlockMC188", "BlockMC189", "BlockMC190", "BlockMC191", "BlockMC192", "BlockMC193", "BlockMC194", "BlockMC195", "BlockMC196", "BlockMC197", "BlockMC198", "BlockMC199", "BlockMC200", "BlockMC201", "BlockMC202", "BlockMC203", "BlockMC204", "BlockMC205", "BlockMC206", "BlockMC207", "BlockMC208", "BlockMC209", "BlockMC210", "BlockMC211", "BlockMC212", "BlockMC213", "BlockMC214", "BlockMC215", "BlockMC216", "BlockMC217", "BlockMC218", "ElectricMC1", "ElectricMC2", "ElectricMC3", "ElectricMC4", "ElectricMC5", "ElectricMC6", "ElectricMC7", "ElectricMC8", "ElectricMC9", "WhiteMC1", "WhiteMC2", "WhiteMC3", "WhiteMC4", "WhiteMC5", "WhiteMC6", "WhiteMC7", "WhiteMC8", "WhiteMC9", "WhiteMC10", "WhiteMC11", "WhiteMC12", "WhiteMC13", "WhiteMC14", "WhiteMC15", "WhiteMC16", "WhiteMC17", "WhiteMC18", "WhiteMC19", "WhiteMC20", "WhiteMC21", "WhiteMC22", "WhiteMC23", "WhiteMC24", "WhiteMC25", "WhiteMC26", "WhiteMC27", "WhiteMC28", "WhiteMC29", "WhiteMC30", "MidMC1", "MidMC2", "MidMC3", "MidMC4", "MidMC5", "MidMC6", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "BlockMC219", "BlockMC220", "BlockMC221", "BlockMC222", "WireMC1", "WireMC2", "WireMC3", "WireMC4", "WireMC5", "WireMC6", "WireMC7", "WireMC8", "WireMC9", "WireMC10", "WireMC11", "WireMC12", "BlockMC223", "BlockMC224", "BlockMC225", "BlockMC226", "BlockMC227", "BlockMC228", "BlockMC229", "BlockMC230", "BlockMC231", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "BossPlatformMC1", "BossPlatformMC2", "BossPlatformMC3", "BossPlatformMC4", "BossPlatformMC5", "BossPlatformMC6", "BossPlatformMC7", "BackArrayMC", "BackArrayMC", "BackArrayMC", "BackArrayMC", "WhiteMC31", "WhiteMC32", "BlockMC232", "BlockMC233", "WhiteMC33", "BlockMC234", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "FrontArrayMC", "BossGraphicMC", "flash.display.Sprite");
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, _arg3:Boolean=false){
var _local4:int;
var _local5:Sprite;
var _local6:Sprite;
var _local7:MovingBlock;
var _local8:MovingBlock;
var _local9:Sprite;
var _local10:Sprite;
index = parseInt(s.map_array[_arg2][_arg1]);
id_tag = -1;
if (index == 0){
return (null);
};
if (!(((s.map_array[_arg2][_arg1] >= 0)) || ((s.map_array[_arg2][_arg1] <= 0)))){
id_tag = s.map_array[_arg2][_arg1].match(/(?<=I\()\d+/)[0];
index = parseInt(s.map_array[_arg2][_arg1].match(/\d+/)[0]);
};
n = (_arg1 + (_arg2 * s.width));
fixed = true;
if (index >= 1){
mc = new (class_names[index]);
};
if (mc != null){
mc.x = (_arg1 * s.scale);
mc.y = (_arg2 * s.scale);
s.tiles.addChild(mc);
};
if (s.gfx){
if ((((index >= 678)) && ((index <= 736)))){
(mc as MovieClip).gotoAndStop((index - 677));
};
if ((((index >= 762)) && ((index <= 767)))){
(mc as MovieClip).gotoAndStop((index - 702));
};
if ((((index >= 421)) && ((index <= 677)))){
(mc as MovieClip).gotoAndStop((index - 420));
};
if ((((index >= 775)) && ((index <= 778)))){
(mc as MovieClip).gotoAndStop((index - 517));
};
if ((((index >= 785)) && ((index <= 790)))){
(mc as MovieClip).gotoAndStop((index - 719));
};
if ((((((index >= 426)) && ((index <= 471)))) || ((((((index >= 263)) && ((index <= 286)))) && (!((index == 279))))))){
g.background_holder.addChild(mc);
};
return (mc);
};
if (index == 1){
} else {
if ((((((((((((((index == 2)) || ((index == 784)))) || ((((index >= 781)) && ((index <= 782)))))) || ((((index >= 0x0300)) && ((index <= 772)))))) || ((((index >= 158)) && ((index <= 375)))))) || ((((index >= 737)) && ((index <= 740)))))) || ((((index >= 753)) && ((index <= 761)))))){
item = generateBlock("static", mc, _arg1, _arg2);
if ((((index >= 737)) && ((index <= 740)))){
g.sign_holder.addChild(mc);
};
} else {
if ((((index == 3)) || ((((index >= 376)) && ((index <= 384)))))){
item = generateBlock("electric", mc, _arg1, _arg2);
} else {
if ((((((((index == 4)) || ((index == 783)))) || ((((index >= 779)) && ((index <= 780)))))) || ((((index >= 385)) && ((index <= 414)))))){
item = generateBlock("white", mc, _arg1, _arg2);
} else {
if ((((index >= 129)) && ((index <= 153)))){
_local4 = ((index - 126) % 4);
item = new MovingBlock((1 << _local4), mc, g);
item.b = new Block((_arg1 * Game.scale), (_arg2 * Game.scale), Game.scale, Game.scale);
item.b.moving_block = true;
item.b.cutting = true;
if (index == 129){
item.evil = true;
item.aggressive = true;
(mc as MovieClip).gotoAndStop("aggressive");
item.dir = FlyingBot.STOPPED;
};
if ((((index >= 130)) && ((index <= 133)))){
item.evil = true;
item.base_tile_id = 130;
if (g.alert_state == Game.ACTIVE){
item.aggressive = true;
(mc as MovieClip).gotoAndStop("aggressive");
item.dir = FlyingBot.STOPPED;
} else {
item.selectPatrolPath();
};
} else {
if ((((index >= 134)) && ((index <= 137)))){
item.base_tile_id = 134;
item.selectPatrolPath();
};
};
if ((((index >= 138)) && ((index <= 141)))){
item.b.stack(Rect.RIGHT);
_local5 = new MovingMC9();
_local5.x = (mc.x + Game.scale);
_local5.y = mc.y;
_local7 = new MovingBlock(item.dir, _local5, g);
_local7.b = new Block(((_arg1 + 1) * Game.scale), (_arg1 * Game.scale), Game.scale, Game.scale);
_local7.b.stack(Rect.LEFT);
_local7.b.cutting = true;
_local7.b.moving_block = true;
_local7.buddy = true;
g.block_map[_arg2][(_arg1 + 1)] = _local7;
item.rez_buddies.push(_local7);
s.tiles.addChild(_local5);
item.base_tile_id = 138;
item.selectPatrolPath();
_local7.selectPatrolPath();
_local7.layer = s.current_layer;
} else {
if ((((index >= 142)) && ((index <= 145)))){
item.b.stack((Rect.RIGHT | Rect.LEFT));
_local5 = new MovingMC1();
_local5.x = (mc.x + Game.scale);
_local5.y = mc.y;
_local7 = new MovingBlock(item.dir, _local5, g);
_local7.b = new Block(((_arg1 + 1) * Game.scale), (_arg2 * Game.scale), Game.scale, Game.scale);
_local7.b.stack(Rect.LEFT);
_local7.b.cutting = true;
_local7.b.moving_block = true;
_local7.buddy = true;
_local6 = new MovingMC2();
_local6.x = (mc.x - Game.scale);
_local6.y = mc.y;
_local8 = new MovingBlock(item.dir, _local6, g);
_local8.b = new Block(((_arg1 - 1) * Game.scale), (_arg2 * Game.scale), Game.scale, Game.scale);
_local8.b.stack(Rect.LEFT);
_local8.b.cutting = true;
_local8.b.moving_block = true;
_local8.buddy = true;
g.block_map[_arg2][(_arg1 + 1)] = _local7;
g.block_map[_arg2][(_arg1 - 1)] = _local8;
item.rez_buddies.push(_local7, _local8);
s.tiles.addChild(_local5);
s.tiles.addChild(_local6);
item.selectPatrolPath();
_local7.selectPatrolPath();
_local8.selectPatrolPath();
_local7.layer = s.current_layer;
_local8.layer = s.current_layer;
item.base_tile_id = 142;
};
};
if ((((index >= 146)) && ((index <= 149)))){
item.b.stack(Rect.DOWN);
_local5 = new MovingMC5();
_local5.x = mc.x;
_local5.y = (mc.y + Game.scale);
_local7 = new MovingBlock(item.dir, _local5, g);
_local7.b = new Block((_arg1 * Game.scale), ((_arg2 + 1) * Game.scale), Game.scale, Game.scale);
_local7.b.stack(Rect.UP);
_local7.b.cutting = true;
_local7.b.moving_block = true;
_local7.buddy = true;
g.block_map[(_arg2 + 1)][_arg1] = _local7;
item.rez_buddies.push(_local7);
s.tiles.addChild(_local5);
item.base_tile_id = 146;
item.selectPatrolPath();
_local7.selectPatrolPath();
_local7.layer = s.current_layer;
} else {
if ((((index >= 150)) && ((index <= 153)))){
item.b.stack((Rect.UP | Rect.DOWN));
_local5 = new MovingMC1();
_local5.x = mc.x;
_local5.y = (mc.y + Game.scale);
_local7 = new MovingBlock(item.dir, _local5, g);
_local7.b = new Block((_arg1 * Game.scale), ((_arg2 + 1) * Game.scale), Game.scale, Game.scale);
_local7.b.stack(Rect.DOWN);
_local7.b.cutting = true;
_local7.b.moving_block = true;
_local7.buddy = true;
_local6 = new MovingMC2();
_local6.x = mc.x;
_local6.y = (mc.y - Game.scale);
_local8 = new MovingBlock(item.dir, _local6, g);
_local8.b = new Block((_arg1 * Game.scale), ((_arg2 - 1) * Game.scale), Game.scale, Game.scale);
_local8.b.stack(Rect.UP);
_local8.b.cutting = true;
_local8.b.moving_block = true;
_local8.buddy = true;
g.block_map[(_arg2 + 1)][_arg1] = _local7;
g.block_map[(_arg2 - 1)][_arg1] = _local8;
item.rez_buddies.push(_local7, _local8);
s.tiles.addChild(_local5);
s.tiles.addChild(_local6);
item.base_tile_id = 150;
item.selectPatrolPath();
_local7.selectPatrolPath();
_local8.selectPatrolPath();
_local7.layer = s.current_layer;
_local8.layer = s.current_layer;
};
};
} else {
if ((((index >= 18)) && ((index <= 21)))){
synchro((mc as MovieClip).beam);
if (index == 18){
item = new Laser(false, new Rect(mc.x, (mc.y + 22), Game.scale, 22), (mc as MovieClip), g);
} else {
if (index == 19){
item = new Laser(true, new Rect(mc.x, (mc.y + 22), Game.scale, 22), (mc as MovieClip), g);
} else {
if (index == 20){
item = new Laser(false, new Rect((mc.x + 22), mc.y, 22, Game.scale), (mc as MovieClip), g);
} else {
if (index == 21){
item = new Laser(true, new Rect((mc.x + 22), mc.y, 22, Game.scale), (mc as MovieClip), g);
};
};
};
};
} else {
if ((((index == 22)) || ((index == 23)))){
mc.x = (mc.x + 32);
mc.y = (mc.y + 43);
if (index == 22){
item = new BladeMan(LEFT, mc, g);
} else {
if (index == 23){
item = new BladeMan(RIGHT, mc, g);
};
};
} else {
if ((((index == 24)) || ((index == 25)))){
item = new Boss(mc, g, (index == 25));
} else {
if (index == 26){
item = new Clip(mc, g);
} else {
if (index == 27){
item = new Cammo(mc, g);
} else {
if (index == 28){
item = new Coin(mc, g);
} else {
if (index == 29){
item = new CowardSwitch(id_tag, mc, g);
} else {
if (index == 30){
item = new ElectricFinish(mc, g);
} else {
if ((((index >= 31)) && ((index <= 45)))){
mc.x = (mc.x + 32);
mc.y = (mc.y + 32);
if (index == 31){
item = new FlyingGun(FlyingBot.UP, (mc as MovieClip), g);
} else {
if (index == 32){
item = new FlyingGun(FlyingBot.UP, (mc as MovieClip), g, false, true);
} else {
if (index == 33){
item = new FlyingGun(FlyingBot.UP, (mc as MovieClip), g, false, false, true);
} else {
if (index == 34){
item = new FlyingGun(FlyingBot.RIGHT, (mc as MovieClip), g);
} else {
if (index == 35){
item = new FlyingGun(FlyingBot.RIGHT, (mc as MovieClip), g, false, true);
} else {
if (index == 36){
item = new FlyingGun(FlyingBot.RIGHT, (mc as MovieClip), g, false, false, true);
} else {
if (index == 37){
item = new FlyingGun(FlyingBot.DOWN, (mc as MovieClip), g);
} else {
if (index == 38){
item = new FlyingGun(FlyingBot.DOWN, (mc as MovieClip), g, false, true);
} else {
if (index == 39){
item = new FlyingGun(FlyingBot.DOWN, (mc as MovieClip), g, false, false, true);
} else {
if (index == 40){
item = new FlyingGun(FlyingBot.LEFT, (mc as MovieClip), g);
} else {
if (index == 41){
item = new FlyingGun(FlyingBot.LEFT, (mc as MovieClip), g, false, true);
} else {
if (index == 42){
item = new FlyingGun(FlyingBot.LEFT, (mc as MovieClip), g, false, false, true);
} else {
if (index == 43){
item = new FlyingGun(FlyingBot.DOWN, (mc as MovieClip), g, true);
} else {
if (index == 44){
item = new FlyingGun(FlyingBot.DOWN, (mc as MovieClip), g, true, true);
} else {
if (index == 45){
item = new FlyingGun(FlyingBot.DOWN, (mc as MovieClip), g, true, false, true);
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
} else {
if ((((index == 46)) || ((index == 47)))){
if (id_tag == -1){
item = new ForceField((mc as MovieClip), g);
} else {
item = new ForceFieldDoor(id_tag, mc, g);
};
item.b = new Block((_arg1 * Game.scale), (_arg2 * Game.scale), Game.scale, Game.scale);
if ((((((_arg2 > 0)) && ((((g.stack_map[(_arg2 - 1)][_arg1] > Game.EMPTY)) || (isForceField(s.map_array[(_arg2 - 1)][_arg1])))))) || ((_arg2 == 0)))){
item.b.stack(UP);
};
if ((((((_arg1 < (s.width - 1))) && ((((g.stack_map[_arg2][(_arg1 + 1)] > Game.EMPTY)) || (isForceField(s.map_array[_arg2][(_arg1 + 1)])))))) || ((_arg1 == (s.width - 1))))){
item.b.stack(RIGHT);
};
if ((((((_arg2 < (s.height - 1))) && ((((g.stack_map[(_arg2 + 1)][_arg1] > Game.EMPTY)) || (isForceField(s.map_array[(_arg2 + 1)][_arg1])))))) || ((_arg2 == (s.height - 1))))){
item.b.stack(DOWN);
};
if ((((((_arg1 > 0)) && ((((g.stack_map[_arg2][(_arg1 - 1)] > Game.EMPTY)) || (isForceField(s.map_array[_arg2][(_arg1 - 1)])))))) || ((_arg1 == 0)))){
item.b.stack(LEFT);
};
item.b.force_field = true;
if (id_tag > -1){
if (item.state == ForceFieldDoor.ACTIVE){
g.stack_map[_arg2][_arg1] = item.b.stacked;
};
} else {
if (g.alert_state == Game.ACTIVE){
item.b.active = true;
g.stack_map[_arg2][_arg1] = item.b.stacked;
} else {
if (g.alert_state == Game.INACTIVE){
item.b.active = false;
};
};
};
g.sign_holder.addChild(mc);
synchro((mc as MovieClip).field);
} else {
if (index == 48){
item = generateBlock("generator", mc, _arg1, _arg2, id_tag);
} else {
if ((((index >= 49)) && ((index <= 56)))){
item = generateBlock("gun", mc, _arg1, _arg2);
if ((((index == 49)) || ((index == 50)))){
item.setDirection(UP);
if (index == 50){
item.fast = true;
};
} else {
if ((((index == 51)) || ((index == 52)))){
item.setDirection(RIGHT);
if (index == 52){
item.fast = true;
};
} else {
if ((((index == 53)) || ((index == 54)))){
item.setDirection(DOWN);
if (index == 54){
item.fast = true;
};
} else {
if ((((index == 55)) || ((index == 56)))){
item.setDirection(LEFT);
if (index == 56){
item.fast = true;
};
};
};
};
};
} else {
if ((((((((index >= 57)) && ((index <= 60)))) || ((index == 155)))) || ((index == 156)))){
mc.x = (mc.x + 32);
mc.y = (mc.y + 40);
if (index == 57){
item = new GunMan(LEFT, mc, g);
} else {
if (index == 58){
item = new GunMan(LEFT, mc, g, true);
} else {
if (index == 59){
item = new GunMan(RIGHT, mc, g);
} else {
if (index == 60){
item = new GunMan(RIGHT, mc, g, true);
} else {
if (index == 155){
item = new GunMan(LEFT, mc, g, false, true);
} else {
if (index == 156){
item = new GunMan(RIGHT, mc, g, false, true);
};
};
};
};
};
};
} else {
if (index == 61){
item = new Health(mc, g);
} else {
if (index == 62){
g.effect_holder.addChild(mc);
item = new Lift(mc, g);
} else {
if ((((index >= 63)) && ((index <= 66)))){
if (index == 63){
item = new Ninja(Ninja.UP, (mc as MovieClip), g);
} else {
if (index == 64){
item = new Ninja(Ninja.RIGHT, (mc as MovieClip), g);
} else {
if (index == 65){
item = new Ninja(Ninja.DOWN, (mc as MovieClip), g);
} else {
if (index == 66){
item = new Ninja(Ninja.LEFT, (mc as MovieClip), g);
};
};
};
};
} else {
if ((((index >= 67)) && ((index <= 70)))){
mc.x = (mc.x + (Game.scale >> 1));
mc.y = (mc.y + (Game.scale >> 1));
if (index == 67){
item = new RotoGun(id_tag, Rect.RIGHT, mc, g);
} else {
if (index == 68){
item = new RotoGun(id_tag, Rect.RIGHT, mc, g, true);
} else {
if (index == 69){
item = new RotoGun(id_tag, Rect.LEFT, mc, g);
} else {
if (index == 70){
item = new RotoGun(id_tag, Rect.LEFT, mc, g, true);
};
};
};
};
} else {
if ((((index >= 71)) && ((index <= 102)))){
if (index == 71){
item = new TripWire(TripWire.FIXED, UP, mc, g);
} else {
if (index == 72){
item = new TripWire(TripWire.FIXED_VARIABLE, UP, mc, g);
} else {
if (index == 73){
item = new TripWire(TripWire.FIXED, UP, mc, g, true);
} else {
if (index == 74){
item = new TripWire(TripWire.FIXED_VARIABLE, UP, mc, g, true);
} else {
if (index == 75){
item = new TripWire(TripWire.FIXED, RIGHT, mc, g);
} else {
if (index == 76){
item = new TripWire(TripWire.FIXED_VARIABLE, RIGHT, mc, g);
} else {
if (index == 77){
item = new TripWire(TripWire.FIXED, RIGHT, mc, g, true);
} else {
if (index == 78){
item = new TripWire(TripWire.FIXED_VARIABLE, RIGHT, mc, g, true);
} else {
if (index == 79){
item = new TripWire(TripWire.FIXED, DOWN, mc, g);
} else {
if (index == 80){
item = new TripWire(TripWire.FIXED_VARIABLE, DOWN, mc, g);
} else {
if (index == 81){
item = new TripWire(TripWire.FIXED, DOWN, mc, g, true);
} else {
if (index == 82){
item = new TripWire(TripWire.FIXED_VARIABLE, DOWN, mc, g, true);
} else {
if (index == 83){
item = new TripWire(TripWire.FIXED, LEFT, mc, g);
} else {
if (index == 84){
item = new TripWire(TripWire.FIXED_VARIABLE, LEFT, mc, g);
} else {
if (index == 85){
item = new TripWire(TripWire.FIXED, LEFT, mc, g, true);
} else {
if (index == 86){
item = new TripWire(TripWire.FIXED_VARIABLE, LEFT, mc, g, true);
} else {
if (index == 87){
item = new TripWire(TripWire.TURNING, UP, mc, g);
} else {
if (index == 88){
item = new TripWire(TripWire.TURNING, UP, mc, g);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 89){
item = new TripWire(TripWire.TURNING, UP, mc, g, true);
} else {
if (index == 90){
item = new TripWire(TripWire.TURNING, UP, mc, g, true);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 91){
item = new TripWire(TripWire.TURNING, RIGHT, mc, g);
} else {
if (index == 92){
item = new TripWire(TripWire.TURNING, RIGHT, mc, g);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 93){
item = new TripWire(TripWire.TURNING, RIGHT, mc, g, true);
} else {
if (index == 94){
item = new TripWire(TripWire.TURNING, RIGHT, mc, g, true);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 95){
item = new TripWire(TripWire.TURNING, DOWN, mc, g);
} else {
if (index == 96){
item = new TripWire(TripWire.TURNING, DOWN, mc, g);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 97){
item = new TripWire(TripWire.TURNING, DOWN, mc, g, true);
} else {
if (index == 98){
item = new TripWire(TripWire.TURNING, DOWN, mc, g, true);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 99){
item = new TripWire(TripWire.TURNING, LEFT, mc, g);
} else {
if (index == 100){
item = new TripWire(TripWire.TURNING, LEFT, mc, g);
item.other_way = true;
item.getCurrentAngle();
} else {
if (index == 101){
item = new TripWire(TripWire.TURNING, LEFT, mc, g, true);
} else {
if (index == 102){
item = new TripWire(TripWire.TURNING, LEFT, mc, g, true);
item.other_way = true;
item.getCurrentAngle();
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
g.sign_holder.addChild(mc);
} else {
if ((((index == 103)) || ((index == 104)))){
mc.x = (mc.x + 32);
mc.y = (mc.y + 41);
if (index == 103){
item = new Scientist(LEFT, mc, g);
} else {
if (index == 104){
item = new Scientist(RIGHT, mc, g);
};
};
} else {
if ((((index == 105)) || ((index == 106)))){
if (index == 105){
item = new Sniper(mc, g);
} else {
item = new Sniper(mc, g, true);
};
} else {
if ((((((index >= 107)) && ((index <= 111)))) || ((((index == 123)) || ((index == 124)))))){
mc.x = (mc.x + 32);
mc.y = (mc.y + 32);
if (index == 107){
item = new Spider(FlyingBot.UP, (mc as MovieClip), g);
} else {
if (index == 108){
item = new Spider(FlyingBot.RIGHT, (mc as MovieClip), g);
} else {
if (index == 109){
item = new Spider(FlyingBot.DOWN, (mc as MovieClip), g);
} else {
if (index == 110){
item = new Spider(FlyingBot.LEFT, (mc as MovieClip), g);
} else {
if (index == 111){
item = new Spider(FlyingBot.DOWN, (mc as MovieClip), g, true);
} else {
if (index == 123){
item = new Spider(FlyingBot.UP, (mc as MovieClip), g, false, true);
} else {
if (index == 124){
item = new Spider(FlyingBot.DOWN, (mc as MovieClip), g, false, true);
};
};
};
};
};
};
};
} else {
if ((((index >= 112)) && ((index <= 114)))){
} else {
if ((((index >= 117)) && ((index <= 122)))){
mc.x = (_arg1 * s.scale);
mc.y = (_arg2 * s.scale);
g.spawn_holder.addChild(mc);
item = generateBlock("spawn", mc, _arg1, _arg2);
if ((((index >= 117)) && ((index <= 119)))){
item.backing = new SpawnBackMC1();
} else {
item.backing = new SpawnBackMC2();
};
if ((((index == 117)) || ((index == 120)))){
} else {
item.aggressive = (item.has_main = true);
(mc as MovieClip).gotoAndStop("active");
};
if ((((index == 118)) || ((index == 121)))){
item.hack = true;
};
item.backing.x = mc.x;
item.backing.y = mc.y;
g.background_holder.addChild(item.backing);
if (index == 118){
item.spawn_id = 123;
} else {
if (index == 121){
item.spawn_id = 124;
} else {
i = 0;
while (i < g.spawnage.length) {
if ((((g.spawnage[i].x == _arg1)) && ((g.spawnage[i].y == _arg2)))){
item.spawn_id = g.spawnage[i].id;
break;
};
i++;
};
};
};
} else {
if (index == 125){
mc.x = (mc.x + 32);
mc.y = (mc.y + 43);
item = new BladeManGuard(RIGHT, mc, g);
} else {
if (index == 126){
mc.x = (mc.x + 32);
mc.y = (mc.y + 41);
item = new Coward(RIGHT, mc, g);
} else {
if (index == 127){
item = new NinjaGuard(Ninja.UP, (mc as MovieClip), g);
} else {
if (index == 154){
item = new Clip(mc, g);
s.map_array[_arg2][_arg1] = 0;
} else {
if (index == 157){
_local9 = new SubMC();
_local9.x = 0;
_local9.y = (s.height * Game.scale);
g.light_holder.addChild(_local9);
item = new WaterLine(mc, g);
g.light_holder.addChild(mc);
} else {
if ((((index == 773)) || ((index == 774)))){
item = new Clip(mc, g);
if (index == 773){
i = 0;
while (i < (s.height * 2)) {
_local10 = new BlockMC18();
_local10.x = ((_arg1 + 2) * Game.scale);
_local10.y = (i * Game.scale);
g.background_holder.addChild(_local10);
i++;
};
} else {
i = 0;
while (i < (s.height * 2)) {
_local10 = new BlockMC18();
_local10.x = ((_arg1 - 2) * Game.scale);
_local10.y = (i * Game.scale);
g.background_holder.addChild(_local10);
i++;
};
};
if (g.scrolling == Scroller.HORIZ){
(mc as MovieClip).wheels.rotation = 180;
};
} else {
if (index == 792){
item = new GameFinish(mc, g);
mc.x = (mc.x + 32);
mc.y = (mc.y + 32);
} else {
item = new Clip(mc, g);
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
if ((((((((((((index >= 13)) && ((index <= 157)))) && (!((index == 128))))) && (!((index == 154))))) && (!((index == 26))))) || ((index == 792)))){
fixed = !(item.free);
};
if (item != null){
item.map_x = (item.init_x = _arg1);
item.map_y = (item.init_y = _arg2);
item.tile_id = s.map_array[_arg2][_arg1];
item.layer = s.current_layer;
item.forced = _arg3;
if (fixed){
s.map_array[_arg2][_arg1] = item;
return (item);
};
s.map_array[_arg2][_arg1] = 0;
};
return (null);
}
public function generateBlock(_arg1:String, _arg2:Sprite, _arg3:Number, _arg4:Number, _arg5:int=-1){
var _local6:*;
var _local7:MovieClip;
if (g.stack_map[_arg4][_arg3] == -1){
_local6 = new Clip(_arg2, g);
_local6.block = true;
return (_local6);
};
if (_arg1 == "static"){
_local6 = new BlockClip(_arg2, g);
} else {
if (_arg1 == "white"){
_local6 = new BlockClip(_arg2, g);
} else {
if (_arg1 == "gun"){
_local6 = new GunBlock((_arg2 as MovieClip), g);
} else {
if (_arg1 == "electric"){
_local6 = new ElectricBlock(_arg2, g);
} else {
if (_arg1 == "spawn"){
_local6 = new SpawnBlock(_arg2, g);
} else {
if (_arg1 == "generator"){
_local6 = new GeneratorSwitch(_arg5, _arg2, g);
};
};
};
};
};
};
_local6.b = new Block((_arg3 * Game.scale), (_arg4 * Game.scale), Game.scale, Game.scale);
_local6.b.stacked = g.stack_map[_arg4][_arg3];
if (_arg1 == "electric"){
_local6.b.attachable = false;
_local7 = new ElectricMC();
new ElectricMC().x = (_local7.y = 32);
_local7.scaleX = ((Math.random() > 0.5)) ? 1 : -1;
_local7.scaleY = ((Math.random() > 0.5)) ? 1 : -1;
_local7.gotoAndPlay((1 + ((_local7.totalFrames * Math.random()) >> 0)));
_arg2.addChild(_local7);
};
if (_arg1 == "white"){
_local6.b.cutting = true;
};
return (_local6);
}
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{
if (((!((((_arg1 >= 0)) || ((_arg1 <= 0))))) && ((_arg1 is String)))){
_arg1 = _arg1.match(/\d+/)[0];
};
return (((((((!((((_arg1 >= 0)) || ((_arg1 <= 0))))) && (_arg1.block))) && (!(_arg1.force_field)))) || ((((((_arg1 >= 0)) || ((_arg1 <= 0)))) && ((((((((((((((((((((((_arg1 >= 2)) && ((_arg1 <= 4)))) || ((((_arg1 >= 779)) && ((_arg1 <= 784)))))) || ((((_arg1 >= 0x0300)) && ((_arg1 <= 772)))))) || ((((_arg1 >= 48)) && ((_arg1 <= 56)))))) || ((((_arg1 >= 117)) && ((_arg1 <= 122)))))) || ((((_arg1 >= 158)) && ((_arg1 <= 375)))))) || ((((_arg1 >= 737)) && ((_arg1 <= 740)))))) || ((((_arg1 >= 753)) && ((_arg1 <= 761)))))) || ((((_arg1 >= 376)) && ((_arg1 <= 384)))))) || ((((_arg1 >= 385)) && ((_arg1 <= 414))))))))));
}
public static function isSpawn(_arg1):Boolean{
return (((((!((((_arg1 >= 0)) || ((_arg1 <= 0))))) && (_arg1.spawn))) || ((((((_arg1 >= 0)) || ((_arg1 <= 0)))) && ((((_arg1 >= 117)) && ((_arg1 <= 122))))))));
}
public static function isForceField(_arg1):Boolean{
if (((!((((_arg1 >= 0)) || ((_arg1 <= 0))))) && ((_arg1 is String)))){
_arg1 = _arg1.match(/\d+/)[0];
};
return (((((!((((_arg1 >= 0)) || ((_arg1 <= 0))))) && (_arg1.force_field))) || ((((((_arg1 >= 0)) || ((_arg1 <= 0)))) && ((((_arg1 == 46)) || ((_arg1 == 47))))))));
}
public static function isEnemy(_arg1):Boolean{
if (((!((((_arg1 >= 0)) || ((_arg1 <= 0))))) && ((_arg1 is String)))){
_arg1 = _arg1.match(/\d+/)[0];
};
return ((((((_arg1 >= 0)) || ((_arg1 <= 0)))) && ((((((((((((((((_arg1 >= 22)) && ((_arg1 <= 25)))) || ((_arg1 == 29)))) || ((((_arg1 >= 31)) && ((_arg1 <= 45)))))) || ((((_arg1 >= 57)) && ((_arg1 <= 60)))))) || ((((_arg1 >= 63)) && ((_arg1 <= 70)))))) || ((((_arg1 >= 105)) && ((_arg1 <= 111)))))) || ((((_arg1 >= 155)) && ((_arg1 <= 156))))))));
}
}
}//package com.nitrome.engine_specific
Section 71
//Trail (com.nitrome.engine_specific.Trail)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
public class Trail {
public var interpolation:Number;
public var length:int;
public var dots:Array;
public function Trail(_arg1:Number, _arg2:Number, _arg3:int, _arg4:Number){
var _local5:int;
super();
dots = [];
this.length = _arg3;
this.interpolation = _arg4;
_local5 = 0;
while (_local5 < _arg3) {
dots.push(new Dot(_arg1, _arg2));
_local5++;
};
}
public function move(_arg1:Number, _arg2:Number):void{
dots[(dots.length - 1)].x = _arg1;
dots[(dots.length - 1)].y = _arg2;
}
public function center(_arg1:Number, _arg2:Number):void{
var _local3:int;
_local3 = 0;
while (_local3 < dots.length) {
dots[_local3].x = _arg1;
dots[_local3].y = _arg2;
_local3++;
};
}
public function main():void{
var _local1:int;
_local1 = (length - 2);
while (_local1 > -1) {
dots[_local1].x = (dots[_local1].x - ((dots[_local1].x - dots[(_local1 + 1)].x) * interpolation));
dots[_local1].y = (dots[_local1].y - ((dots[_local1].y - dots[(_local1 + 1)].y) * interpolation));
_local1--;
};
}
}
}//package com.nitrome.engine_specific
Section 72
//TripWire (com.nitrome.engine_specific.TripWire)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class TripWire extends Encounter {
public var paused:Boolean;
public var wobble_alpha:Number;
public var max_angle:int;
public var type:int;
public var beam_width:int;
public var cast:RayCastReport;
public var other_way:Boolean;// = false
public var strength:Number;
public var orient:int;
public var turn_step:int;
public var turn_state:int;
public var sparks:MovieClip;
public var add_y:Number;
public var add_x:Number;
public var alpha:Array;
private var i:int;
public var scan:Line;
public var pause_count:int;// = 0
public var killer:Boolean;
public var controlled:Boolean;
public var wobble:int;
public var dir:int;
public var min_angle:int;
public var wobble_step:int;
public var collision_rect:Rect;
public var angle:int;// = 0
public var cols:Array;
private static const SCAN_ALPHA:Array = [0.15, 0.15, 0.15];
public static const FIXED_VARIABLE:int = 4;
public static const SCAN_WOBBLE_STEP:int = 6;
public static const KILL_WOBBLE_ALPHA:Number = 0.25;
public static const SCAN_WOBBLE_ALPHA:Number = 0.05;
public static const FIXED:int = 1;
public static const LEFT:int = 8;
public static const KILL_WOBBLE_STEP:int = 12;
public static const UP:int = 1;
private static const KILL_ALPHA:Array = [0.45, 0.25, 0.15];
public static const TURNING:int = 2;
public static const SPEED:Number = 2;
public static const DOWN:int = 4;
public static const SCAN_WIDTH:int = 2;
public static const KILLER_WIDTH:int = 5;
private static const KILL_COLS:Array = [16304135, 0xF89200, 14116875];
private static const SCAN_COLS:Array = [6173899, 0xFF0600, 0xFF0600];
public static const RIGHT:int = 2;
public static const WARM_UP_STEP:Number = 0.02;
public static var TURN_SPEED:int = 1;
public function TripWire(_arg1:int, _arg2:int, _arg3:Sprite, _arg4:Game, _arg5:Boolean=false){
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Dot;
var _local11:Number;
var _local12:int;
var _local13:int;
angle = 0;
other_way = false;
pause_count = 0;
super(_arg3, _arg4, false);
this.type = _arg1;
this.dir = _arg2;
this.killer = _arg5;
cols = (_arg5) ? KILL_COLS : SCAN_COLS;
alpha = (_arg5) ? KILL_ALPHA : SCAN_ALPHA;
beam_width = (_arg5) ? KILLER_WIDTH : SCAN_WIDTH;
wobble_step = (_arg5) ? KILL_WOBBLE_STEP : SCAN_WOBBLE_STEP;
wobble_alpha = (_arg5) ? KILL_WOBBLE_ALPHA : SCAN_WOBBLE_ALPHA;
if (_arg5){
sparks = new LaserGunSparksMC();
_arg4.effect_holder.addChild(sparks);
sparks.visible = false;
if (_arg1 == FIXED){
if (_arg2 == UP){
sparks.rotation = 180;
} else {
if (_arg2 == RIGHT){
sparks.rotation = 90;
} else {
if (_arg2 == LEFT){
sparks.rotation = -90;
};
};
};
};
};
strength = 0;
if (((forced) || (!((_arg4.alert_state == Game.ACTIVE))))){
strength = 1;
};
map_x = ((x * Game.SCALE) >> 0);
map_y = ((y * Game.SCALE) >> 0);
has_main = true;
free = true;
if (_arg1 == TURNING){
collision_rect = new Rect();
_local6 = (_arg4.scroller.width * Game.scale);
_local7 = (_arg4.scroller.height * Game.scale);
_local8 = 0;
_local9 = 0;
if (_arg2 == UP){
_local10 = new Dot((32 + (Game.scale * map_x)), (-1 + (map_y * Game.scale)));
scan = new Line(_local10, new Dot(_local10.x, (_local10.y - ((_arg4.scroller.width * _arg4.scroller.height) * Game.scale))));
min_angle = 180;
max_angle = 360;
} else {
if (_arg2 == RIGHT){
_local10 = new Dot((Game.scale * (map_x + 1)), (32 + (map_y * Game.scale)));
scan = new Line(_local10, new Dot((_local10.x + ((_arg4.scroller.width * _arg4.scroller.height) * Game.scale)), _local10.y));
min_angle = 270;
max_angle = 450;
} else {
if (_arg2 == DOWN){
_local10 = new Dot((32 + (Game.scale * map_x)), ((map_y + 1) * Game.scale));
scan = new Line(_local10, new Dot(_local10.x, (_local10.y + ((_arg4.scroller.width * _arg4.scroller.height) * Game.scale))));
min_angle = 0;
max_angle = 180;
} else {
if (_arg2 == LEFT){
_local10 = new Dot((-1 + (Game.scale * map_x)), (32 + (map_y * Game.scale)));
scan = new Line(_local10, new Dot((_local10.x - ((_arg4.scroller.width * _arg4.scroller.height) * Game.scale)), _local10.y));
min_angle = 90;
max_angle = 270;
};
};
};
};
_local11 = -(scan.len);
i = 0;
while (i < 178) {
angle = ((min_angle + i) % 360);
rotate();
cast = RayCast.initCast(scan, _arg4.block_map);
if (cast != null){
if (cast.ax < _local6){
_local6 = cast.ax;
};
if (cast.ay < _local7){
_local7 = cast.ay;
};
if (cast.ax > _local8){
_local8 = cast.ax;
};
if (cast.ay > _local9){
_local9 = cast.ay;
};
if (RayCast.dist > _local11){
_local11 = RayCast.dist;
};
};
i++;
};
collision_rect.x = _local6;
collision_rect.y = _local7;
collision_rect.width = (_local8 - _local6);
collision_rect.height = (_local9 - _local7);
scan.len = _local11;
getCurrentAngle();
actor_target = false;
on_scroller = false;
} else {
if (_arg1 == FIXED){
if (_arg2 == UP){
_local12 = map_x;
_local13 = (map_y - 1);
while (_local13 > 0) {
if (_arg4.stack_map[_local13][_local12] > Game.EMPTY){
break;
};
_local13--;
};
collision_rect = new Rect((30 + (Game.scale * _local12)), ((_local13 + 1) * Game.scale), 4, (((map_y - 1) - _local13) * Game.scale));
scan = new Line(new Dot((32 + (Game.scale * map_x)), (map_y * Game.scale)), new Dot((32 + (Game.scale * map_x)), ((_local13 + 1) * Game.scale)));
} else {
if (_arg2 == RIGHT){
_local13 = map_y;
_local12 = (map_x + 1);
while (_local12 < _arg4.scroller.width) {
if (_arg4.stack_map[_local13][_local12] > Game.EMPTY){
break;
};
_local12++;
};
collision_rect = new Rect((Game.scale * (map_x + 1)), (30 + (_local13 * Game.scale)), (((_local12 - 1) - map_x) * Game.scale), 4);
scan = new Line(new Dot((Game.scale * (map_x + 1)), (32 + (map_y * Game.scale))), new Dot((Game.scale * _local12), (32 + (map_y * Game.scale))));
} else {
if (_arg2 == DOWN){
_local12 = map_x;
_local13 = (map_y + 1);
while (_local13 < _arg4.scroller.height) {
if (_arg4.stack_map[_local13][_local12] > Game.EMPTY){
break;
};
_local13++;
};
collision_rect = new Rect((30 + (Game.scale * _local12)), ((map_y + 1) * Game.scale), 4, (((_local13 - 1) - map_y) * Game.scale));
scan = new Line(new Dot((32 + (Game.scale * map_x)), ((map_y + 1) * Game.scale)), new Dot((32 + (Game.scale * _local12)), (_local13 * Game.scale)));
} else {
if (_arg2 == LEFT){
_local13 = map_y;
_local12 = (map_x - 1);
while (_local12 > 0) {
if (_arg4.stack_map[_local13][_local12] > Game.EMPTY){
break;
};
_local12--;
};
collision_rect = new Rect((Game.scale * (_local12 + 1)), (30 + (_local13 * Game.scale)), (((map_x - 1) - _local12) * Game.scale), 4);
scan = new Line(new Dot((Game.scale * map_x), (32 + (map_y * Game.scale))), new Dot((Game.scale * (_local12 + 1)), (32 + (map_y * Game.scale))));
};
};
};
};
} else {
if (_arg1 == FIXED_VARIABLE){
if (_arg2 == UP){
collision_rect = new Rect((30 + (Game.scale * map_x)), 0, 4, (map_y * Game.scale));
scan = new Line(new Dot((32 + (Game.scale * map_x)), (-1 + (map_y * Game.scale))), new Dot((32 + (Game.scale * map_x)), 0));
} else {
if (_arg2 == RIGHT){
collision_rect = new Rect((Game.scale * (map_x + 1)), (30 + (map_y * Game.scale)), (((_arg4.scroller.width - map_x) - 1) * Game.scale), 4);
scan = new Line(new Dot((Game.scale * (map_x + 1)), (32 + (map_y * Game.scale))), new Dot((Game.scale * _arg4.scroller.width), (32 + (map_y * Game.scale))));
} else {
if (_arg2 == DOWN){
collision_rect = new Rect((30 + (Game.scale * _local12)), ((map_y + 1) * Game.scale), 4, (((_arg4.scroller.height - map_y) - 1) * Game.scale));
scan = new Line(new Dot((32 + (Game.scale * map_x)), ((map_y + 1) * Game.scale)), new Dot((32 + (Game.scale * map_x)), (_arg4.scroller.height * Game.scale)));
} else {
if (_arg2 == LEFT){
collision_rect = new Rect(0, (30 + (_local13 * Game.scale)), (-1 + (map_x * Game.scale)), 4);
scan = new Line(new Dot((-1 + (Game.scale * map_x)), (32 + (map_y * Game.scale))), new Dot(0, (32 + (map_y * Game.scale))));
};
};
};
};
};
};
};
controlled = ((!((_arg4.path_map[map_y][map_x] == 0))) || (!((((_arg4.path_map[map_y][map_x] >= 0)) || ((_arg4.path_map[map_y][map_x] <= 0))))));
if (controlled){
_local12 = _arg3.x;
_local13 = _arg3.y;
orient = _arg2;
add_x = (scan.a.x - _local12);
add_y = (scan.a.y - _local13);
paused = false;
pause_count = 0;
selectPatrolPath();
free = true;
};
if ((((_arg1 == TURNING)) || ((_arg1 == FIXED_VARIABLE)))){
cast = RayCast.cast(scan, _arg4.block_map, true);
};
}
override public function intersects(_arg1:Rect):Boolean{
if ((((type == TURNING)) || ((type == FIXED_VARIABLE)))){
if (((!(killer)) && (((g.player.chameleon) || ((g.player.state == Player.STEALTH)))))){
return (false);
};
return (RayCast.reportIntersectsRect(scan, cast, g.player.collision_rect));
} else {
if (type == FIXED){
if (((!(killer)) && (((g.player.chameleon) || ((g.player.state == Player.STEALTH)))))){
return (false);
};
return (collision_rect.intersects(_arg1));
};
};
return (false);
}
public function updateMC():void{
wobble = ((wobble + wobble_step) % 360);
if (type == FIXED){
i = 1;
while (i < 4) {
g.scan_holder.graphics.lineStyle((i * beam_width), cols[(i - 1)], (strength * (alpha[(i - 1)] + Math.abs((Trig.sin[wobble] * wobble_alpha)))));
g.scan_holder.graphics.moveTo(scan.a.x, scan.a.y);
g.scan_holder.graphics.lineTo(scan.b.x, scan.b.y);
i++;
};
} else {
if ((((type == TURNING)) || ((type == FIXED_VARIABLE)))){
if (type == TURNING){
(mc as MovieClip).scanner.rotation = (angle + 180);
if (killer){
(mc as MovieClip).scanner.rotation = ((mc as MovieClip).scanner.rotation + 180);
};
};
i = 1;
while (i < 4) {
g.scan_holder.graphics.lineStyle((i * beam_width), cols[(i - 1)], (strength * (alpha[(i - 1)] + Math.abs((Trig.sin[wobble] * wobble_alpha)))));
g.scan_holder.graphics.moveTo(scan.a.x, scan.a.y);
if (cast != null){
g.scan_holder.graphics.lineTo(cast.ax, cast.ay);
} else {
g.scan_holder.graphics.lineTo(scan.b.x, scan.b.y);
};
i++;
};
};
};
if (killer){
if (type == FIXED){
sparks.visible = true;
sparks.x = scan.b.x;
sparks.y = scan.b.y;
} else {
if (cast != null){
sparks.x = cast.ax;
sparks.y = cast.ay;
if (cast.access_side == UP){
sparks.rotation = 0;
} else {
if (cast.access_side == RIGHT){
sparks.rotation = 90;
} else {
if (cast.access_side == DOWN){
sparks.rotation = 180;
} else {
if (cast.access_side == LEFT){
sparks.rotation = -90;
};
};
};
};
if (((!(Util.proximity(scan.a.x, scan.a.y, cast.ax, cast.ay, 70))) || ((type == FIXED_VARIABLE)))){
sparks.visible = true;
sparks.alpha = strength;
} else {
sparks.visible = false;
};
} else {
sparks.visible = false;
};
};
};
}
public function getCurrentAngle():void{
angle = (g.frame_count % 360);
if (other_way){
angle = ((angle + 180) % 360);
};
if (angle > 180){
turn_step = -(TURN_SPEED);
angle = (angle % 180);
angle = (max_angle - angle);
} else {
turn_step = TURN_SPEED;
angle = (angle + min_angle);
};
}
public function rotate():void{
scan.dx = Trig.cos[(angle % 360)];
scan.dy = Trig.sin[(angle % 360)];
scan.vx = (scan.dx * scan.len);
scan.vy = (scan.dy * scan.len);
scan.b.x = (scan.a.x + scan.vx);
scan.b.y = (scan.a.y + scan.vy);
scan.rx = -(scan.dy);
scan.ry = scan.dx;
scan.lx = scan.dy;
scan.ly = -(scan.dx);
}
override public function remove():void{
if (((killer) && (!((sparks.parent == null))))){
sparks.parent.removeChild(sparks);
};
super.remove();
}
public function main():void{
on_scroller = g.scroller.contains(x, y);
if (((!(forced)) && (!(on_scroller)))){
strength = (strength - WARM_UP_STEP);
if (strength <= 0){
map_x = (x * Game.SCALE);
map_y = (y * Game.SCALE);
remove();
return;
};
} else {
if ((((strength < 1)) && (((!((g.alert_state == Game.ACTIVE))) || (killer))))){
strength = (strength + WARM_UP_STEP);
} else {
if ((((strength > 0)) && ((((g.alert_state == Game.ACTIVE)) && (!(killer)))))){
strength = (strength - WARM_UP_STEP);
};
};
};
if (controlled){
if (dir == UP){
y = (y - SPEED);
} else {
if (dir == RIGHT){
x = (x + SPEED);
} else {
if (dir == DOWN){
y = (y + SPEED);
} else {
if (dir == LEFT){
x = (x - SPEED);
};
};
};
};
if ((((dir == RIGHT)) || ((dir == LEFT)))){
map_x = (x * Game.SCALE);
if ((x * Game.SCALE) == map_x){
selectPatrolPath();
};
} else {
if ((((dir == UP)) || ((dir == DOWN)))){
map_y = (y * Game.SCALE);
if ((y * Game.SCALE) == map_y){
selectPatrolPath();
};
} else {
if (dir == Path.STOPPED){
selectPatrolPath();
};
};
};
if (type == TURNING){
scan.a.x = (x + add_x);
scan.a.y = (y + add_y);
} else {
if ((((type == FIXED)) || ((type == FIXED_VARIABLE)))){
if ((((orient == UP)) || ((orient == DOWN)))){
scan.a.x = (x + add_x);
scan.b.x = (x + add_x);
collision_rect.x = ((-2 + x) + add_x);
} else {
if ((((orient == RIGHT)) || ((orient == LEFT)))){
scan.a.y = (y + add_y);
scan.b.y = (y + add_y);
collision_rect.y = ((-2 + y) + add_y);
};
};
};
};
mc.x = x;
mc.y = y;
};
if (type == TURNING){
if (turn_step > 0){
if (angle >= max_angle){
angle = max_angle;
turn_step = -(TURN_SPEED);
};
} else {
if (angle <= min_angle){
angle = min_angle;
turn_step = TURN_SPEED;
};
};
angle = (angle + turn_step);
rotate();
};
if ((((type == TURNING)) || ((type == FIXED_VARIABLE)))){
cast = RayCast.cast(scan, g.block_map, true);
};
updateMC();
}
override public function resolvePlayerCollision(_arg1:Player):void{
if (strength >= 1){
if (!killer){
g.alert();
} else {
_arg1.hit();
};
};
}
public function selectPatrolPath():void{
if (pause_count == -1){
return;
};
if ((((dir == Path.STOPPED)) && ((pause_count > 0)))){
pause_count--;
return;
};
Path.getDir(dir, g.path_map, null, map_x, map_y);
dir = Path.dir;
pause_count = (paused) ? 0 : Path.pause_delay;
if (pause_count > 0){
dir = Path.STOPPED;
paused = true;
return;
};
paused = false;
}
}
}//package com.nitrome.engine_specific
Section 73
//WaterLine (com.nitrome.engine_specific.WaterLine)
package com.nitrome.engine_specific {
import com.nitrome.engine.*;
import flash.display.*;
public class WaterLine extends Encounter {
public function WaterLine(_arg1:Sprite, _arg2:Game){
super(_arg1, _arg2, true);
has_main = true;
has_collision = false;
}
public function main():void{
mc.x = -(g.canvas.x);
}
}
}//package com.nitrome.engine_specific
Section 74
//ArmorButton (com.nitrome.game.ArmorButton)
package com.nitrome.game {
import flash.events.*;
import flash.net.*;
public class ArmorButton extends SimpleButton {
public function ArmorButton(){
addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
}
override public function onClick(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.armorgames.com/"), "_blank");
}
}
}//package com.nitrome.game
Section 75
//BackButton (com.nitrome.game.BackButton)
package com.nitrome.game {
import flash.events.*;
public class BackButton extends SimpleButton {
public function BackButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("title_screen");
}
}
}//package com.nitrome.game
Section 76
//ContinueEndButton (com.nitrome.game.ContinueEndButton)
package com.nitrome.game {
import flash.events.*;
import com.nitrome.engine_specific.*;
public class ContinueEndButton extends SimpleButton {
public function ContinueEndButton(){
addFrameScript(0, frame1);
}
function doStuff():void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.timeline.popup_holder.key_pressed = true;
NitromeGame.timeline.popup_holder.hidePopUp();
StoryClip.next_frame = "congrats";
StoryClip.list = StoryClip.STORY[StoryClip.REAL_END];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
NitromeGame.setGameComplete();
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
if (!NitromeGame.timeline.popup_holder.key_pressed){
doStuff();
};
}
}
}//package com.nitrome.game
Section 77
//ContinueGameButton (com.nitrome.game.ContinueGameButton)
package com.nitrome.game {
import flash.events.*;
public class ContinueGameButton extends SimpleButton {
public function ContinueGameButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame();
}
}
}//package com.nitrome.game
Section 78
//ContinueGameHelpButton (com.nitrome.game.ContinueGameHelpButton)
package com.nitrome.game {
import flash.events.*;
public class ContinueGameHelpButton extends SimpleButton {
public function ContinueGameHelpButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame();
}
}
}//package com.nitrome.game
Section 79
//CreditsButton (com.nitrome.game.CreditsButton)
package com.nitrome.game {
import flash.events.*;
public class CreditsButton extends SimpleButton {
public function CreditsButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("credits");
}
}
}//package com.nitrome.game
Section 80
//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);
}
function frame10(){
stop();
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
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();
}
}
}//package com.nitrome.game
Section 81
//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);
}
function frame10(){
stop();
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame(true);
}
}
}//package com.nitrome.game
Section 82
//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);
}
function frame1(){
stop();
}
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));
}
}
}//package com.nitrome.game
Section 83
//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);
}
function frame1(){
stop();
}
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));
}
}
}//package com.nitrome.game
Section 84
//HelpButton (com.nitrome.game.HelpButton)
package com.nitrome.game {
import flash.events.*;
public class HelpButton extends SimpleButton {
public function HelpButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("help");
}
}
}//package com.nitrome.game
Section 85
//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 D:uint = 68;
public static const E:uint = 69;
public static const F:uint = 70;
public static const G:uint = 71;
public static const A:uint = 65;
public static const I:uint = 73;
public static const C:uint = 67;
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 H:uint = 72;
public static const P:uint = 80;
public static const B:uint = 66;
public static const R:uint = 82;
public static const S:uint = 83;
public static const U:uint = 85;
public static const O:uint = 79;
public static const Q:uint = 81;
public static const J:uint = 74;
public static const Z:uint = 90;
public static const T:uint = 84;
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 var stage:Stage;
private static var keysDown:Array = [];
private static var initialized:Boolean = false;
public static var keys_pressed:int = 0;
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;
};
}
private static function clearKeys(_arg1:Event):void{
keysDown = [];
keys_pressed = 0;
}
public static function forceClearKeys():void{
keysDown = [];
keys_pressed = 0;
}
private static function keyPressed(_arg1:KeyboardEvent):void{
if (!Boolean(keysDown[_arg1.keyCode])){
keys_pressed++;
};
keysDown[_arg1.keyCode] = true;
}
private static function keyReleased(_arg1:KeyboardEvent):void{
keysDown[_arg1.keyCode] = false;
keys_pressed--;
}
public static function isDown(_arg1:uint):Boolean{
if (!initialized){
throw (new Error("Key class has yet been initialized."));
};
return (Boolean(keysDown[_arg1]));
}
}
}//package com.nitrome.game
Section 86
//LevelChooserButton (com.nitrome.game.LevelChooserButton)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
import com.nitrome.engine_specific.*;
public class LevelChooserButton extends SimpleButton {
private var active:Boolean;
private var id:int;
public var bottom:MovieClip;
public var winkwink_count:int;
public var top:MovieClip;
public var WINKWINK_DELAY:int;// = 10
public var num:String;
public var winkwink:Boolean;// = false
public var _mask:MovieClip;
public static const up_col:int = 0x838383;
public static const over_col:int = 0xFFAA00;
public function LevelChooserButton(){
winkwink = false;
WINKWINK_DELAY = 10;
super();
id = int(name.slice(6));
if (NitromeGame.getLevelUnlocked(id)){
active = true;
useHandCursor = true;
} else {
active = false;
useHandCursor = false;
};
updateGraphic();
winkwink = ((!(NitromeGame.completed)) && ((NitromeGame.last_level == id)));
if (winkwink){
addEventListener(Event.ENTER_FRAME, wink, false, 0, true);
winkwink_count = WINKWINK_DELAY;
};
}
public function wink(_arg1:Event):void{
updateGraphic();
}
override protected function updateGraphic():void{
if (active){
_mask.gotoAndStop((id + 1));
top.gotoAndStop((id + 1));
bottom.gotoAndStop((id + 1));
if (over){
top.visible = true;
} else {
if (winkwink){
if (--winkwink_count <= 0){
winkwink_count = WINKWINK_DELAY;
top.visible = !(top.visible);
};
} else {
top.visible = false;
};
};
} else {
visible = false;
};
}
override public function onClick(_arg1:MouseEvent):void{
if (active){
NitromeGame.selected_level = id;
Score.value = 0;
if (id == 0){
StoryClip.next_frame = "game";
StoryClip.list = StoryClip.STORY[StoryClip.INTRO];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
} else {
NitromeGame.timeline.tt.doTween("game");
NitromeGame.sound_manager.crossFade(SoundManager.GAME);
};
};
updateGraphic();
}
}
}//package com.nitrome.game
Section 87
//LevelSelectButton (com.nitrome.game.LevelSelectButton)
package com.nitrome.game {
import flash.events.*;
public class LevelSelectButton extends SimpleButton {
public function LevelSelectButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.transition.doTween("choose_level");
NitromeGame.sound_manager.crossFade(SoundManager.MENU);
}
}
}//package com.nitrome.game
Section 88
//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 89
//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 count:int;
public var msg:TextField;
public var state:int;
public var step:Number;
public static const FADE_DELAY:int = 25;
public static const FADE_IN:int = 2;
public static const HIDDEN:int = 8;
public static const FADE_OUT:int = 4;
public static const VISIBLE:int = 1;
public static const VISIBLE_DELAY:int = 50;
public function MsgPanel(){
visible = false;
alpha = 0;
state = HIDDEN;
count = 0;
step = (1 / FADE_DELAY);
}
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;
};
};
};
};
}
public function setMsg(_arg1:String):void{
msg.text = _arg1.toUpperCase();
state = FADE_IN;
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
count = 0;
visible = true;
}
}
}//package com.nitrome.game
Section 90
//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);
}
function frame10(){
stop();
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
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();
}
}
}//package com.nitrome.game
Section 91
//NextLevelButton (com.nitrome.game.NextLevelButton)
package com.nitrome.game {
import flash.events.*;
import com.nitrome.engine_specific.*;
public class NextLevelButton extends SimpleButton {
public function NextLevelButton(){
addFrameScript(0, frame1);
}
function doStuff():void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.selected_level++;
NitromeGame.timeline.popup_holder.hidePopUp();
if (NitromeGame.selected_level == 1){
StoryClip.next_frame = "game";
StoryClip.list = StoryClip.STORY[StoryClip.CAPTURED];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
} else {
if (NitromeGame.selected_level == 10){
StoryClip.next_frame = "game";
StoryClip.list = StoryClip.STORY[StoryClip.FIRST_BOSS];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
} else {
if (NitromeGame.selected_level == 21){
StoryClip.next_frame = "game";
StoryClip.list = StoryClip.STORY[StoryClip.SECOND_BOSS];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
} else {
if (NitromeGame.selected_level == 22){
StoryClip.next_frame = "game";
StoryClip.list = StoryClip.STORY[StoryClip.FAKE_END];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
} else {
NitromeGame.transition.doTween("game_reset");
};
};
};
};
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
if (!NitromeGame.timeline.popup_holder.key_pressed){
doStuff();
};
}
}
}//package com.nitrome.game
Section 92
//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 93
//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);
}
function frame10(){
stop();
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.pauseGame();
}
}
}//package com.nitrome.game
Section 94
//PlayButton (com.nitrome.game.PlayButton)
package com.nitrome.game {
import flash.events.*;
public class PlayButton extends SimpleButton {
public function PlayButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("choose_level");
}
}
}//package com.nitrome.game
Section 95
//PlayGameButton (com.nitrome.game.PlayGameButton)
package com.nitrome.game {
import flash.events.*;
import com.nitrome.engine_specific.*;
public class PlayGameButton extends SimpleButton {
public function PlayGameButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
Score.value = 0;
if (NitromeGame.last_level < NitromeGame.total_levels){
NitromeGame.selected_level = NitromeGame.last_level;
} else {
NitromeGame.selected_level = 0;
};
if (NitromeGame.selected_level == 0){
StoryClip.next_frame = "game";
StoryClip.list = StoryClip.STORY[StoryClip.INTRO];
NitromeGame.timeline.tt.doTween("story");
NitromeGame.sound_manager.stopMusicFadeOut();
} else {
NitromeGame.timeline.tt.doTween("game");
NitromeGame.sound_manager.crossFade(SoundManager.GAME);
};
}
}
}//package com.nitrome.game
Section 96
//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 action_performed:Boolean;
public var key_pressed:Boolean;
private var popup_id:String;
public function PopUpHolder(){
addFrameScript(0, frame1, 1, frame2, 9, frame10);
}
function frame10(){
stop();
}
function frame1(){
popup_clip.gotoAndStop("wait");
stop();
}
function frame2(){
popup_clip.gotoAndStop(popup_id);
}
public function hidePopUp():void{
action_performed = true;
key_pressed = true;
popup_id = "wait";
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;
};
}
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);
}
}
}//package com.nitrome.game
Section 97
//QuitGameButton (com.nitrome.game.QuitGameButton)
package com.nitrome.game {
import flash.events.*;
public class QuitGameButton extends SimpleButton {
public function QuitGameButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.timeline.game.clearListeners();
NitromeGame.transition.doTween("choose_level");
NitromeGame.sound_manager.crossFade(SoundManager.MENU);
}
}
}//package com.nitrome.game
Section 98
//Score (com.nitrome.game.Score)
package com.nitrome.game {
public class Score {
private static var r:int;
private static var _value: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 verify():Boolean{
return ((_value.toString(16) == hash));
}
public static function get value():int{
return ((_value - r));
}
public static function set value(_arg1:int):void{
var _local2:Boolean;
_local2 = verify();
r = (int((Math.random() * 2000000)) - 1000000);
_value = (r + _arg1);
if (_local2){
hash = _value.toString(16);
};
}
}
}//package com.nitrome.game
Section 99
//ScoreTicker (com.nitrome.game.ScoreTicker)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class ScoreTicker extends MovieClip {
private var count_interval:int;
private var next_clip:String;
private var val:int;
private var total:int;
private var next_inc:int;
public var score_text:TextField;
private var inc:int;
private var next_total:int;
private function displayScore():void{
score_text.text = String(val);
}
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 onFinish():void{
if (next_clip != null){
parent[next_clip].startCount(next_total, next_inc);
};
}
public function startCount(_arg1:int, _arg2:int):void{
total = _arg1;
this.inc = _arg2;
if (this.inc == 0){
this.inc = 5;
};
val = 0;
addEventListener(Event.ENTER_FRAME, doCount, false, 0, true);
}
public function setOnFinish(_arg1:String, _arg2:int, _arg3:int):void{
next_clip = _arg1;
next_total = _arg2;
next_inc = _arg3;
if (next_inc == 0){
next_inc = 5;
};
}
}
}//package com.nitrome.game
Section 100
//SimpleButton (com.nitrome.game.SimpleButton)
package com.nitrome.game {
import flash.display.*;
import flash.events.*;
public class SimpleButton extends MovieClip {
public var i:int;
protected var over:Boolean;// = false
public function SimpleButton(){
over = false;
super();
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 onMouseOver(_arg1:MouseEvent):void{
over = true;
updateGraphic();
}
protected function onMouseOut(_arg1:MouseEvent):void{
over = false;
updateGraphic();
}
protected function updateGraphic():void{
if (over){
gotoAndStop("_over");
} else {
gotoAndStop("_up");
};
}
public function onClick(_arg1:MouseEvent):void{
}
}
}//package com.nitrome.game
Section 101
//SoundManager (com.nitrome.game.SoundManager)
package com.nitrome.game {
import flash.display.*;
import flash.media.*;
public class SoundManager extends SoundManagerSuper {
protected const GAME_VOLUME:Number = 1;
protected const BEAM_VOLUME:Number = 0.6;
protected const MENU_VOLUME:Number = 1;
public var coins:MovieClip;
public var star_hit:MovieClip;
public var jump:MovieClip;
public var cough:MovieClip;
public var wom:MovieClip;
public var smithhit:MovieClip;
public var finalninja:MovieClip;
public var tang:MovieClip;
public var bang1:MovieClip;
public var bang2:MovieClip;
public var chop:MovieClip;
public var lift:MovieClip;
public var bang3:MovieClip;
public var oishii:MovieClip;
public var bang4:MovieClip;
public var electric:MovieClip;
public var missile:MovieClip;
public var powerdown:MovieClip;
public var hack:MovieClip;
public var bosslaugh:MovieClip;
public var grenade:MovieClip;
public var alert:MovieClip;
public var scientisthit:MovieClip;
public var msg:MovieClip;
public var machinegun:MovieClip;
public var smithdie:MovieClip;
public var aiiee:MovieClip;
public var cammo:MovieClip;
public var bossouch:MovieClip;
public var sword1:MovieClip;
public var yatta:MovieClip;
public var sword2:MovieClip;
public static const GAME:int = 1;
public static const MENU:int = 0;
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;
}
}
}//package com.nitrome.game
Section 102
//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_channels:Array;
protected var sound_clips:Array;
public var music_type:int;
protected var _music:Boolean;// = true
protected var sound_loops:Array;
protected var sound_loop_fade_direction;
protected var sound_volumes:Array;
protected var music_volumes:Array;
public var fading_sound:Boolean;// = false
public var fading_music:Boolean;// = false
protected var fade_from:int;
protected var music_channels:Array;
protected var music_loops:Array;
protected var sound_transforms:Array;
protected var sound_loop_playing:Array;
protected var _sfx:Boolean;// = true
protected var music_transforms:Array;
public static const NO_MUSIC:int = -1;
public function SoundManagerSuper(){
var _local1:int;
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();
_music = true;
_sfx = true;
fading_music = false;
fading_sound = false;
super();
_music = NitromeGame.music;
_sfx = NitromeGame.sfx;
_local1 = 0;
while (_local1 < numChildren) {
_local2 = (getChildAt(_local1) as MovieClip);
if (_local2 != null){
sound_clips[_local2.name] = _local2;
};
_local1++;
};
}
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);
};
}
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 startLoops():void{
var _local1:int;
_local1 = 0;
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 get music():Boolean{
return (_music);
}
public function set sfx(_arg1:Boolean):void{
_sfx = _arg1;
}
public function toggleMusic():void{
if (_music){
turnOffMusic();
} else {
turnOnMusic();
};
}
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);
};
}
public function playSound(_arg1:String):void{
if (_sfx){
if (sound_clips[_arg1] != null){
sound_clips[_arg1].gotoAndPlay(2);
};
};
}
public function stopMusic():void{
var _local1:uint;
_local1 = 0;
while (_local1 < music_channels.length) {
if (music_channels[_local1] != null){
music_channels[_local1].stop();
};
_local1++;
};
}
public function turnOnMusic():void{
NitromeGame.music = (_music = true);
if (music_type != NO_MUSIC){
playMusic(music_type, true);
};
}
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 fadeSound(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
_local2 = true;
_local3 = 0;
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;
};
}
public function stopLoops():void{
var _local1:int;
_local1 = 0;
while (_local1 < sound_loops.length) {
if (sound_loops[_local1] != null){
sound_channels[_local1].stop();
};
_local1++;
};
}
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 set music(_arg1:Boolean):void{
_music = _arg1;
}
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 killLoops():void{
var _local1:int;
_local1 = 0;
while (_local1 < sound_loops.length) {
stopLoop(_local1);
_local1++;
};
}
public function toggleSfx():void{
if (_sfx){
turnOffSfx();
} else {
turnOnSfx();
};
}
public function get sfx():Boolean{
return (_sfx);
}
public function turnOnSfx():void{
NitromeGame.sfx = (_sfx = true);
startLoops();
}
public function turnOffSfx():void{
NitromeGame.sfx = (_sfx = false);
stopLoops();
}
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;
};
}
public function turnOffMusic():void{
var _local1:uint;
_local1 = 0;
while (_local1 < music_channels.length) {
if (music_channels[_local1] != null){
music_channels[_local1].stop();
};
_local1++;
};
NitromeGame.music = (_music = false);
}
public function stopLoop(_arg1:uint):void{
if (sound_loops[_arg1] != null){
sound_channels[_arg1].stop();
sound_loop_playing[_arg1] = false;
};
}
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 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 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]);
};
};
}
}
}//package com.nitrome.game
Section 103
//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;
};
}
function frame1(){
stop();
}
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);
}
}
}//package com.nitrome.game
Section 104
//Transition (com.nitrome.game.Transition)
package com.nitrome.game {
import com.nitrome.engine.*;
import flash.display.*;
import flash.events.*;
public class Transition extends MovieClip {
public var mask_right:Shape;
public var bitmap_left:Bitmap;
public var bitmap_right:Bitmap;
public var count:int;
public var line:Line;
public var next_frame:String;
public var bitmapdata:BitmapData;
public var slash:Shape;
public var state:int;
public var tweening:Boolean;
public var mask_left:Shape;
public var step:Number;
public static const SLIDE:int = 4;
public static const FADE:int = 2;
public static const SLASH:int = 1;
public static const TWEEN_DELAY:int = 15;
public function Transition(){
bitmapdata = new BitmapData(550, 400, true, 0xFFFFFF);
bitmap_left = new Bitmap(bitmapdata);
bitmap_right = new Bitmap(bitmapdata);
mask_left = new Shape();
mask_right = new Shape();
slash = new Shape();
bitmap_left.visible = false;
bitmap_right.visible = false;
bitmap_left.mask = mask_left;
bitmap_right.mask = mask_right;
line = new Line(new Dot(275, 0), new Dot(275, 400));
addChild(bitmap_left);
addChild(bitmap_right);
addChild(mask_left);
addChild(mask_right);
addChild(slash);
count = 0;
tweening = false;
next_frame = "";
}
public function doTween(_arg1:String, _arg2:int=0):void{
if (!tweening){
beginTransition(_arg1);
} else {
next_frame = _arg1;
};
}
private function onEnterFrame(_arg1:Event):void{
if (state == SLASH){
state = FADE;
} else {
if (state == FADE){
state = SLIDE;
} else {
if (state == SLIDE){
slash.graphics.clear();
count++;
bitmap_left.x = (bitmap_left.x - step);
mask_left.x = (mask_left.x - step);
bitmap_right.x = (bitmap_right.x + step);
mask_right.x = (mask_right.x + step);
if (count >= TWEEN_DELAY){
bitmap_left.visible = false;
bitmap_right.visible = false;
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
tweening = false;
if (next_frame != ""){
beginTransition(next_frame);
next_frame = "";
};
};
};
};
};
}
public function beginTransition(_arg1:String):void{
var _local2:Number;
tweening = true;
_local2 = (-250 + (Math.random() * 500));
line.a.x = (275 + _local2);
line.b.x = (275 - _local2);
slash.graphics.clear();
slash.graphics.lineStyle(5, 0, 0.05);
slash.graphics.moveTo((line.a.x - 275), -200);
slash.graphics.lineTo((line.b.x - 275), 200);
slash.graphics.lineStyle(2, 0, 0.05);
slash.graphics.moveTo((line.a.x - 275), -200);
slash.graphics.lineTo((line.b.x - 275), 200);
bitmapdata.draw(NitromeGame.timeline);
slash.graphics.clear();
line.updateLine();
step = (Math.max(line.a.x, line.b.x) / TWEEN_DELAY);
mask_left.graphics.clear();
mask_right.graphics.clear();
mask_left.graphics.beginFill(0xFFFFFF);
mask_right.graphics.beginFill(0xFFFFFF);
mask_left.graphics.moveTo(0, 0);
mask_left.graphics.lineTo(line.a.x, 0);
mask_left.graphics.lineTo(line.b.x, 400);
mask_left.graphics.lineTo(0, 400);
mask_left.graphics.lineTo(0, 0);
mask_right.graphics.moveTo(line.a.x, 0);
mask_right.graphics.lineTo(550, 0);
mask_right.graphics.lineTo(550, 400);
mask_right.graphics.lineTo(line.b.x, 400);
mask_right.graphics.lineTo(line.a.x, 0);
mask_left.graphics.endFill();
mask_right.graphics.endFill();
mask_left.x = (mask_right.x = (bitmap_left.x = (bitmap_right.x = -275)));
mask_left.y = (mask_right.y = (bitmap_left.y = (bitmap_right.y = -200)));
bitmap_left.visible = true;
bitmap_right.visible = true;
(parent as MovieClip).gotoAndStop(_arg1);
count = 0;
state = SLASH;
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
}
}
}//package com.nitrome.game
Section 105
//TryAgainButton (com.nitrome.game.TryAgainButton)
package com.nitrome.game {
import flash.events.*;
public class TryAgainButton extends SimpleButton {
public function TryAgainButton(){
addFrameScript(0, frame1);
}
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();
}
override public function onClick(_arg1:MouseEvent):void{
if (!NitromeGame.timeline.popup_holder.key_pressed){
doStuff();
};
}
}
}//package com.nitrome.game
Section 106
//ViewScoresButton (com.nitrome.game.ViewScoresButton)
package com.nitrome.game {
import flash.events.*;
public class ViewScoresButton extends SimpleButton {
public function ViewScoresButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
override public function onClick(_arg1:MouseEvent):void{
NitromeGame.transition.doTween("view_scores");
}
}
}//package com.nitrome.game
Section 107
//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;
}
override public function onClick(_arg1:MouseEvent):void{
if (name == "_prev_arrow"){
high_score_board.shiftScoresPrev();
} else {
if (name == "_next_arrow"){
high_score_board.shiftScoresNext();
};
};
}
public function show():void{
visible = true;
}
}
}//package com.nitrome.highscore
Section 108
//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 109
//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;
private const MAX_RANK:int = 100;
public const NUM_LINES:int = 10;
public var _score_line_7:ScoreLine;
private var score_lines:Array;
private var loaded:Boolean;
private var _zero_fill:Boolean;// = false
public var loading_text:MovieClip;
public var _next_arrow:NextArrow;
private var scores_request:URLRequest;
private var scores_vars:URLVariables;
public var _score_line_10:ScoreLine;
private var next_arrow:ArrowButton;
public var _prev_arrow:PrevArrow;
private var saved_min_rank:int;
public var _score_line_1:ScoreLine;
public var _score_line_2:ScoreLine;
public var _score_line_3:ScoreLine;
public var _score_line_4:ScoreLine;
public var _score_line_5:ScoreLine;
public var _score_line_6:ScoreLine;
public var _score_line_8:ScoreLine;
public var _score_line_9:ScoreLine;
private var scores_loader:URLLoader;
private var prev_arrow:ArrowButton;
public function HighScoreBoard(){
var _local1:int;
_zero_fill = false;
super();
score_lines = new Array(NUM_LINES);
if (NitromeGame.isAtURL(NitromeGame.NITROME)){
trace(0);
_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 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);
}
private function retrieveSuccessful(_arg1:Event):void{
var _local2:String;
_local2 = _arg1.target.data.result;
trace((("Scores retrieved: (" + _local2) + ")"));
displayHighScores(_local2);
loaded = true;
}
private function init(_arg1:Event):void{
loadHighScores(1);
_arg1.target.removeEventListener(Event.ADDED_TO_STAGE, init);
}
public function shiftScoresPrev():void{
var _local1:int;
_local1 = (saved_min_rank - 10);
if (_local1 < 1){
_local1 = 1;
};
loadHighScores(_local1);
}
public function set zero_fill(_arg1:Boolean):void{
_zero_fill = _arg1;
}
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 retrieveFailed(_arg1:IOErrorEvent):void{
trace(("Retrieve scores failed: " + _arg1.text));
}
public function get zero_fill():Boolean{
return (_zero_fill);
}
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");
};
}
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 shiftScoresNext():void{
var _local1:int;
_local1 = (saved_min_rank + 10);
loadHighScores(_local1);
}
}
}//package com.nitrome.highscore
Section 110
//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;
private var fade_delay:int;
private var rank_text:TextField;
private var name_text:TextField;
public var _score_text:TextField;
private var hidden:Boolean;
private var score_text:TextField;
private var fade_count:int;
public var _rank_text:TextField;
public var _name_text:TextField;
private var high_score_board:HighScoreBoard;
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 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++;
}
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);
}
}
}//package com.nitrome.highscore
Section 111
//LetterButton (com.nitrome.highscore.LetterButton)
package com.nitrome.highscore {
import flash.events.*;
import com.nitrome.game.*;
import flash.text.*;
public class LetterButton extends SimpleButton {
private var letter:TextField;
public var _letter:TextField;
private var letter_text:String;
private var score_submit_panel:ScoreSubmitPanel;
public static const up_col:int = 0x838383;
public static const over_col:int = 0xFFAA00;
public function LetterButton(){
score_submit_panel = (parent as ScoreSubmitPanel);
letter_text = name;
letter = (getChildByName("_letter") as TextField);
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(_arg1:Event):void{
letter.text = letter_text;
_arg1.target.removeEventListener(Event.ADDED_TO_STAGE, init);
}
override protected function updateGraphic():void{
if (over){
letter.textColor = over_col;
} else {
letter.textColor = up_col;
};
}
override public function onClick(_arg1:MouseEvent):void{
score_submit_panel.addLetter(letter_text);
}
}
}//package com.nitrome.highscore
Section 112
//ScoreSubmitPanel (com.nitrome.highscore.ScoreSubmitPanel)
package com.nitrome.highscore {
import flash.display.*;
import flash.events.*;
import com.nitrome.game.*;
import flash.text.*;
import flash.ui.*;
import flash.net.*;
public class ScoreSubmitPanel extends MovieClip {
private const MAX_LENGTH:Number = 10;
private var submit_loader:URLLoader;
public var C:LetterButton;
public var D:LetterButton;
public var E:LetterButton;
public var F:LetterButton;
public var H:LetterButton;
public var I:LetterButton;
public var J:LetterButton;
public var L:LetterButton;
public var P:LetterButton;
public var K:LetterButton;
public var W:LetterButton;
public var X:LetterButton;
public var R:LetterButton;
public var T:LetterButton;
public var U:LetterButton;
public var V:LetterButton;
public var G:LetterButton;
public var Y:LetterButton;
private var name_text:TextField;
public var S:LetterButton;
public var A:LetterButton;
public var N:LetterButton;
public var O:LetterButton;
public var _score_text:TextField;
public var Z:LetterButton;
public var M:LetterButton;
public var Q:LetterButton;
public var B:LetterButton;
private var score_text:TextField;
private var loading_clip:MovieClip;
public var _name_text:TextField;
private var submitted:Boolean;
private var submit_button:SubmitButton;
public var _submit_button:SubmitButton;
public var loading_black:MovieClip;
public var _clear_button:ClearButton;
private var submit_request:URLRequest;
private var submit_vars:URLVariables;
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 _local2:String;
var _local3:String;
_local2 = name_text.text;
if (_local2.length < MAX_LENGTH){
_arg1 = _arg1.toUpperCase();
_local3 = (_local2 + _arg1);
name_text.text = _local3;
submit_button.enable();
};
}
private function submitFailed(_arg1:IOErrorEvent):void{
trace(("Submit score failed: " + _arg1.text));
trace();
loading_black.gotoAndPlay(2);
}
public function clearName():void{
submit_button.disable();
name_text.text = "";
}
private function keyPressed(_arg1:KeyboardEvent):void{
var _local2:int;
_local2 = _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 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);
}
public function submitScore():void{
var _local1:String;
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
_local1 = 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);
};
}
}
}//package com.nitrome.highscore
Section 113
//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(){
pressed = false;
disabled = true;
super();
gotoAndStop("_up");
score_submit_panel = (parent as ScoreSubmitPanel);
}
public function enable():void{
disabled = false;
useHandCursor = true;
buttonMode = true;
updateGraphic();
}
override protected function updateGraphic():void{
if (((!(over)) || (disabled))){
gotoAndStop("_up");
} else {
gotoAndStop("_over");
};
}
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 114
//Lock (com.nitrome.util.Lock)
package com.nitrome.util {
import flash.display.*;
import flash.net.*;
public class Lock extends MovieClip {
public function Lock(){
addFrameScript(1, frame2);
}
function frame2(){
stop();
}
public static function urlLock(_arg1:Stage):void{
var _local2:String;
if (NitromeGame.isAtURL(NitromeGame.ARMOR) == true){
} else {
_arg1.addChild(new (Lock));
_local2 = ("http://www.nitrome.com/games/" + NitromeGame.game_id);
navigateToURL(new URLRequest(_local2), "_blank");
};
}
}
}//package com.nitrome.util
Section 115
//MD5 (com.nitrome.util.MD5)
package com.nitrome.util {
public class MD5 {
private var chrsz:int;// = 8
private var b64pad:String;// = ""
public function MD5(_arg1:String=null, _arg2:int=0){
b64pad = "";
chrsz = 8;
super();
if (_arg1 != null){
this.b64pad = _arg1;
};
if (((((!((_arg2 == 0))) && ((_arg2 == 8)))) || ((_arg2 == 16)))){
this.chrsz = _arg2;
};
}
private function binl2b64(_arg1:Array):String{
var _local2:String;
var _local3:String;
var _local4:int;
var _local5:int;
var _local6:int;
_local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
_local3 = new String("");
_local4 = 0;
while (_local4 < (_arg1.length * 4)) {
_local5 = (((((_arg1[(_local4 >> 2)] >> (8 * (_local4 % 4))) & 0xFF) << 16) | (((_arg1[((_local4 + 1) >> 2)] >> (8 * ((_local4 + 1) % 4))) & 0xFF) << 8)) | ((_arg1[((_local4 + 2) >> 2)] >> (8 * ((_local4 + 2) % 4))) & 0xFF));
_local6 = 0;
while (_local6 < 4) {
if (((_local4 * 8) + (_local6 * 6)) > (_arg1.length * 32)){
_local3 = (_local3 + b64pad);
} else {
_local3 = (_local3 + _local2.charAt(((_local5 >> (6 * (3 - _local6))) & 63)));
};
_local6++;
};
_local4 = (_local4 + 3);
};
return (_local3);
}
private function md5_cmn(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int):int{
return (safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3));
}
private function binl2str(_arg1:Array):String{
var _local2:String;
var _local3:int;
var _local4:int;
_local2 = new String("");
_local3 = ((1 << chrsz) - 1);
_local4 = 0;
while (_local4 < (_arg1.length * 32)) {
_local2 = (_local2 + String.fromCharCode(((_arg1[(_local4 >> 5)] >>> (_local4 % 32)) & _local3)));
_local4 = (_local4 + chrsz);
};
return (_local2);
}
private function core_hmac_md5(_arg1:String, _arg2:String):Array{
var _local3:Array;
var _local4:Array;
var _local5:Array;
var _local6:int;
var _local7:Array;
_local3 = new Array(str2binl(_arg1));
if (_local3.length > 16){
_local3 = core_md5(_local3, (_arg1.length * chrsz));
};
_local4 = new Array(16);
_local5 = new Array(16);
_local6 = 0;
while (_local6 < 16) {
_local4[_local6] = (_local3[_local6] ^ 909522486);
_local5[_local6] = (_local3[_local6] ^ 1549556828);
_local6++;
};
_local7 = new Array(core_md5(_local4.concat(str2binl(_arg2)), (0x0200 + (_arg2.length * chrsz))));
return (core_md5(_local5.concat(_local7), (0x0200 + 128)));
}
private function md5_gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private function hex_hmac_md5(_arg1:String, _arg2:String):String{
return (binl2hex(core_hmac_md5(_arg1, _arg2)));
}
public function hash(_arg1:String):String{
return (hex_md5(_arg1));
}
private function md5_ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private function hex_md5(_arg1:String):String{
return (binl2hex(core_md5(str2binl(_arg1), (_arg1.length * chrsz))));
}
private function bit_rol(_arg1:int, _arg2:int):int{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
private function core_md5(_arg1:Array, _arg2:int):Array{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:int;
var _local11:int;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
_local3 = 1732584193;
_local4 = -271733879;
_local5 = -1732584194;
_local6 = 271733878;
_local7 = 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 (new Array(_local3, _local4, _local5, _local6));
}
private function b64_md5(_arg1:String):String{
return (binl2b64(core_md5(str2binl(_arg1), (_arg1.length * chrsz))));
}
private function md5_hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private function b64_hmac_md5(_arg1:String, _arg2:String):String{
return (binl2b64(core_hmac_md5(_arg1, _arg2)));
}
private function str2binl(_arg1:String):Array{
var _local2:Array;
var _local3:int;
var _local4:int;
_local2 = [];
_local3 = ((1 << chrsz) - 1);
_local4 = 0;
while (_local4 < (_arg1.length * chrsz)) {
_local2[(_local4 >> 5)] = (_local2[(_local4 >> 5)] | ((_arg1.charCodeAt((_local4 / chrsz)) & _local3) << (_local4 % 32)));
_local4 = (_local4 + chrsz);
};
return (_local2);
}
private function binl2hex(_arg1:Array):String{
var _local2:String;
var _local3:String;
var _local4:int;
_local2 = "0123456789abcdef";
_local3 = new String("");
_local4 = 0;
while (_local4 < (_arg1.length * 4)) {
_local3 = (_local3 + (_local2.charAt(((_arg1[(_local4 >> 2)] >> (((_local4 % 4) * 8) + 4)) & 15)) + _local2.charAt(((_arg1[(_local4 >> 2)] >> ((_local4 % 4) * 8)) & 15))));
_local4++;
};
return (_local3);
}
private function safe_add(_arg1:Number, _arg2:Number):Number{
var _local3:int;
var _local4:int;
_local3 = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
_local4 = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
private function str_md5(_arg1:String):String{
return (binl2str(core_md5(str2binl(_arg1), (_arg1.length * chrsz))));
}
private function str_hmac_md5(_arg1:String, _arg2:String):String{
return (binl2str(core_hmac_md5(_arg1, _arg2)));
}
private function md5_ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
}
}//package com.nitrome.util
Section 116
//ag_intro_mc_658 (finalninjazero_fla.ag_intro_mc_658)
package finalninjazero_fla {
import flash.display.*;
public dynamic class ag_intro_mc_658 extends MovieClip {
public function ag_intro_mc_658(){
addFrameScript(0, frame1, 217, frame218);
}
function frame218(){
(parent as MovieClip).gotoAndStop("nitrome");
}
function frame1(){
gotoAndPlay(2);
}
}
}//package finalninjazero_fla
Section 117
//aiiee_621 (finalninjazero_fla.aiiee_621)
package finalninjazero_fla {
import flash.display.*;
public dynamic class aiiee_621 extends MovieClip {
public function aiiee_621(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 118
//alert_606 (finalninjazero_fla.alert_606)
package finalninjazero_fla {
import flash.display.*;
public dynamic class alert_606 extends MovieClip {
public function alert_606(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 119
//alert_panel_686 (finalninjazero_fla.alert_panel_686)
package finalninjazero_fla {
import flash.display.*;
import flash.text.*;
public dynamic class alert_panel_686 extends MovieClip {
public var alert_time:TextField;
}
}//package finalninjazero_fla
Section 120
//back_666 (finalninjazero_fla.back_666)
package finalninjazero_fla {
import flash.display.*;
public dynamic class back_666 extends MovieClip {
public var front:MovieClip;
public var back:MovieClip;
public function back_666(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 121
//backcammo_663 (finalninjazero_fla.backcammo_663)
package finalninjazero_fla {
import flash.display.*;
public dynamic class backcammo_663 extends MovieClip {
public var morph:Morph;
}
}//package finalninjazero_fla
Section 122
//bang1_607 (finalninjazero_fla.bang1_607)
package finalninjazero_fla {
import flash.display.*;
public dynamic class bang1_607 extends MovieClip {
public function bang1_607(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 123
//bang2_608 (finalninjazero_fla.bang2_608)
package finalninjazero_fla {
import flash.display.*;
public dynamic class bang2_608 extends MovieClip {
public function bang2_608(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 124
//bang3_609 (finalninjazero_fla.bang3_609)
package finalninjazero_fla {
import flash.display.*;
public dynamic class bang3_609 extends MovieClip {
public function bang3_609(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 125
//bang4_610 (finalninjazero_fla.bang4_610)
package finalninjazero_fla {
import flash.display.*;
public dynamic class bang4_610 extends MovieClip {
public function bang4_610(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 126
//bosslaugh_637 (finalninjazero_fla.bosslaugh_637)
package finalninjazero_fla {
import flash.display.*;
public dynamic class bosslaugh_637 extends MovieClip {
public function bosslaugh_637(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 127
//bossouch_636 (finalninjazero_fla.bossouch_636)
package finalninjazero_fla {
import flash.display.*;
public dynamic class bossouch_636 extends MovieClip {
public function bossouch_636(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 128
//cammo_628 (finalninjazero_fla.cammo_628)
package finalninjazero_fla {
import flash.display.*;
public dynamic class cammo_628 extends MovieClip {
public function cammo_628(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 129
//cammocollect_272 (finalninjazero_fla.cammocollect_272)
package finalninjazero_fla {
import flash.display.*;
public dynamic class cammocollect_272 extends MovieClip {
public function cammocollect_272(){
addFrameScript(39, frame40);
}
function frame40(){
(parent as MovieClip).gotoAndStop("idle");
stop();
}
}
}//package finalninjazero_fla
Section 130
//chamforward_105 (finalninjazero_fla.chamforward_105)
package finalninjazero_fla {
import flash.display.*;
public dynamic class chamforward_105 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 131
//chamjump_108 (finalninjazero_fla.chamjump_108)
package finalninjazero_fla {
import flash.display.*;
public dynamic class chamjump_108 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 132
//chamlook_107 (finalninjazero_fla.chamlook_107)
package finalninjazero_fla {
import flash.display.*;
public dynamic class chamlook_107 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 133
//chamrun_106 (finalninjazero_fla.chamrun_106)
package finalninjazero_fla {
import flash.display.*;
public dynamic class chamrun_106 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 134
//chamslide_109 (finalninjazero_fla.chamslide_109)
package finalninjazero_fla {
import flash.display.*;
public dynamic class chamslide_109 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 135
//chop_611 (finalninjazero_fla.chop_611)
package finalninjazero_fla {
import flash.display.*;
public dynamic class chop_611 extends MovieClip {
public function chop_611(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 136
//coins_623 (finalninjazero_fla.coins_623)
package finalninjazero_fla {
import flash.display.*;
public dynamic class coins_623 extends MovieClip {
public function coins_623(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 137
//cough_617 (finalninjazero_fla.cough_617)
package finalninjazero_fla {
import flash.display.*;
public dynamic class cough_617 extends MovieClip {
public function cough_617(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 138
//cowarddead_275 (finalninjazero_fla.cowarddead_275)
package finalninjazero_fla {
import flash.display.*;
public dynamic class cowarddead_275 extends MovieClip {
public function cowarddead_275(){
addFrameScript(41, frame42, 84, frame85);
}
function frame85(){
stop();
}
function frame42(){
NitromeGame.sound_manager.playSound("electric");
}
}
}//package finalninjazero_fla
Section 139
//dawntowers_679 (finalninjazero_fla.dawntowers_679)
package finalninjazero_fla {
import flash.display.*;
public dynamic class dawntowers_679 extends MovieClip {
public var sun2:MovieClip;
public var sun1:MovieClip;
}
}//package finalninjazero_fla
Section 140
//electric_624 (finalninjazero_fla.electric_624)
package finalninjazero_fla {
import flash.display.*;
public dynamic class electric_624 extends MovieClip {
public function electric_624(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 141
//enemy_health_panel_693 (finalninjazero_fla.enemy_health_panel_693)
package finalninjazero_fla {
import flash.display.*;
public dynamic class enemy_health_panel_693 extends MovieClip {
public var bar:MovieClip;
}
}//package finalninjazero_fla
Section 142
//exitanim_240 (finalninjazero_fla.exitanim_240)
package finalninjazero_fla {
import flash.display.*;
public dynamic class exitanim_240 extends MovieClip {
public function exitanim_240(){
addFrameScript(0, frame1, 19, frame20, 74, frame75);
}
function frame75(){
stop();
}
function frame1(){
NitromeGame.sound_manager.playSound("yatta");
}
function frame20(){
NitromeGame.sound_manager.playSound("lift");
}
}
}//package finalninjazero_fla
Section 143
//fade_to_black_696 (finalninjazero_fla.fade_to_black_696)
package finalninjazero_fla {
import flash.display.*;
public dynamic class fade_to_black_696 extends MovieClip {
public function fade_to_black_696(){
addFrameScript(0, frame1, 49, frame50);
}
function frame1(){
stop();
}
function frame50(){
stop();
}
}
}//package finalninjazero_fla
Section 144
//fallnin_97 (finalninjazero_fla.fallnin_97)
package finalninjazero_fla {
import flash.display.*;
public dynamic class fallnin_97 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 145
//finalninja_639 (finalninjazero_fla.finalninja_639)
package finalninjazero_fla {
import flash.display.*;
public dynamic class finalninja_639 extends MovieClip {
public function finalninja_639(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 146
//fincrouch_82 (finalninjazero_fla.fincrouch_82)
package finalninjazero_fla {
import flash.display.*;
public dynamic class fincrouch_82 extends MovieClip {
public var body:MovieClip;
}
}//package finalninjazero_fla
Section 147
//finjump_84 (finalninjazero_fla.finjump_84)
package finalninjazero_fla {
import flash.display.*;
public dynamic class finjump_84 extends MovieClip {
public var body:MovieClip;
}
}//package finalninjazero_fla
Section 148
//game_music_holder_626 (finalninjazero_fla.game_music_holder_626)
package finalninjazero_fla {
import flash.display.*;
public dynamic class game_music_holder_626 extends MovieClip {
public function game_music_holder_626(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package finalninjazero_fla
Section 149
//grenade_629 (finalninjazero_fla.grenade_629)
package finalninjazero_fla {
import flash.display.*;
public dynamic class grenade_629 extends MovieClip {
public function grenade_629(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 150
//gunclip_47 (finalninjazero_fla.gunclip_47)
package finalninjazero_fla {
import flash.display.*;
public dynamic class gunclip_47 extends MovieClip {
public var cartridges:MovieClip;
public function gunclip_47(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 151
//gunmanhelp_199 (finalninjazero_fla.gunmanhelp_199)
package finalninjazero_fla {
import flash.display.*;
public dynamic class gunmanhelp_199 extends MovieClip {
public var arm:MovieClip;
public var gun:MovieClip;
}
}//package finalninjazero_fla
Section 152
//hack_630 (finalninjazero_fla.hack_630)
package finalninjazero_fla {
import flash.display.*;
public dynamic class hack_630 extends MovieClip {
public function hack_630(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 153
//health_panel_684 (finalninjazero_fla.health_panel_684)
package finalninjazero_fla {
import flash.display.*;
public dynamic class health_panel_684 extends MovieClip {
public function health_panel_684(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 154
//help_movie_182 (finalninjazero_fla.help_movie_182)
package finalninjazero_fla {
import flash.display.*;
public dynamic class help_movie_182 extends MovieClip {
public function help_movie_182(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 155
//jump_618 (finalninjazero_fla.jump_618)
package finalninjazero_fla {
import flash.display.*;
public dynamic class jump_618 extends MovieClip {
public function jump_618(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 156
//jumpnin_85 (finalninjazero_fla.jumpnin_85)
package finalninjazero_fla {
import flash.display.*;
public dynamic class jumpnin_85 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 157
//jumpnin_help_185 (finalninjazero_fla.jumpnin_help_185)
package finalninjazero_fla {
import flash.display.*;
public dynamic class jumpnin_help_185 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 158
//lift_631 (finalninjazero_fla.lift_631)
package finalninjazero_fla {
import flash.display.*;
public dynamic class lift_631 extends MovieClip {
public function lift_631(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 159
//lift_stealth_242 (finalninjazero_fla.lift_stealth_242)
package finalninjazero_fla {
import flash.display.*;
public dynamic class lift_stealth_242 extends MovieClip {
public function lift_stealth_242(){
addFrameScript(19, frame20, 28, frame29);
}
function frame20(){
NitromeGame.sound_manager.playSound("wom");
}
function frame29(){
stop();
}
}
}//package finalninjazero_fla
Section 160
//linkage_container_3 (finalninjazero_fla.linkage_container_3)
package finalninjazero_fla {
import flash.display.*;
public dynamic class linkage_container_3 extends MovieClip {
public function linkage_container_3(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 161
//loading_black_212 (finalninjazero_fla.loading_black_212)
package finalninjazero_fla {
import flash.display.*;
public dynamic class loading_black_212 extends MovieClip {
public var loading_text:MovieClip;
public function loading_black_212(){
addFrameScript(0, frame1, 9, frame10);
}
function frame10(){
NitromeGame.timeline.gotoAndStop("view_scores");
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 162
//loading_screen_698 (finalninjazero_fla.loading_screen_698)
package finalninjazero_fla {
import flash.display.*;
import com.nitrome.game.*;
public dynamic class loading_screen_698 extends MovieClip {
public var tt:Transition;
public function loading_screen_698(){
addFrameScript(0, frame1, 9, frame10);
}
function frame10(){
this.tt.doTween("clear");
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 163
//machinegun_632 (finalninjazero_fla.machinegun_632)
package finalninjazero_fla {
import flash.display.*;
public dynamic class machinegun_632 extends MovieClip {
public function machinegun_632(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 164
//MainTimeline (finalninjazero_fla.MainTimeline)
package finalninjazero_fla {
import flash.display.*;
import flash.events.*;
import com.nitrome.engine_specific.*;
import flash.geom.*;
import com.nitrome.game.*;
import com.nitrome.util.*;
import flash.text.*;
import flash.media.*;
import flash.ui.*;
import flash.net.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.system.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var score_panel:MovieClip;
public var msg_rating:TextField;
public var cash_rating:TextField;
public var shaker:MovieClip;
public var msg_totals:TextField;
public var enemy_rating:TextField;
public var level_1:LevelChooserButton;
public var level_2:LevelChooserButton;
public var level_3:LevelChooserButton;
public var level_6:LevelChooserButton;
public var level_7:LevelChooserButton;
public var level_9:LevelChooserButton;
public var level_8:LevelChooserButton;
public var enemy_totals:TextField;
public var level_4:LevelChooserButton;
public var level_5:LevelChooserButton;
public var cash_totals:TextField;
public var hint_panel:MovieClip;
public var level_0:LevelChooserButton;
public var b:Object;
public var health_panel:MovieClip;
public var cm:ContextMenu;
public var loading_clip:MovieClip;
public var tt:Transition;
public var sound_manager:SoundManager;
public var text_panel:MovieClip;
public var popup_holder:PopUpHolder;
public var music_toggle:MusicToggle;
public var dodge_number:Number;
public var info:TextField;
public var level_10:LevelChooserButton;
public var level_11:LevelChooserButton;
public var level_13:LevelChooserButton;
public var level_14:LevelChooserButton;
public var level_15:LevelChooserButton;
public var level_17:LevelChooserButton;
public var level_12:LevelChooserButton;
public var level_16:LevelChooserButton;
public var level_18:LevelChooserButton;
public var level_19:LevelChooserButton;
public var level_20:LevelChooserButton;
public var level_21:LevelChooserButton;
public var level_22:LevelChooserButton;
public var back:MovieClip;
public var story:StoryClip;
public var dodge_rating:TextField;
public var dodge_totals:TextField;
public var title_logo:MovieClip;
public var loadedTF:TextField;
public var pause_game_button:PauseButton;
public var alert_panel:MovieClip;
public var fx_toggle:FxToggle;
public var buttons:MovieClip;
public var fade_to_black:MovieClip;
public var msg_panel:MsgPanel;
public var enemy_health_panel:MovieClip;
public var cash_number:Number;
public var msg_number:Number;
public var total_score:TextField;
public var scroll_border:MovieClip;
public var enemy_number:Number;
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, 111, frame112);
}
public function stepFrame(_arg1:Event):void{
var _local2:Number;
var _local3:Number;
var _local4:int;
_local2 = loaderInfo.bytesLoaded;
_local3 = loaderInfo.bytesTotal;
_local4 = ((_local2 / _local3) * 100);
(root as MovieClip).loadedTF.text = (("LOADING " + _local4.toString()) + "%");
if (loaderInfo.bytesLoaded >= loaderInfo.bytesTotal){
removeEventListener(Event.ENTER_FRAME, stepFrame);
gotoAndStop("armor");
};
}
function frame11(){
stop();
NitromeGame.transition = tt;
Key.init(stage);
Score.init();
NitromeGame.init(this, "finalninjazero", "star_", 23);
NitromeGame.selected_level = 0;
cm = new ContextMenu();
cm.hideBuiltInItems();
this.contextMenu = cm;
sound_manager = new SoundManager();
sound_manager.x = -50;
sound_manager.y = -50;
addChild(sound_manager);
}
function frame3(){
addEventListener(Event.ENTER_FRAME, stepFrame, false, 0, true);
stop();
}
function frame21(){
stop();
}
function frame31(){
stage.quality = StageQuality.LOW;
Lock.urlLock(stage);
NitromeGame.sound_manager.playSound("finalninja");
gotoAndStop("title_screen");
title_logo.addEventListener(Event.ENTER_FRAME, titleFade);
title_logo.alpha = 0;
buttons.alpha = 0;
stop();
}
function frame41(){
stop();
}
function frame51(){
stop();
}
function frame61(){
stop();
}
function frame71(){
stop();
}
function frame81(){
total_score.text = ("YOUR TOTAL SCORE IS " + Score.value);
b = NitromeGame.getTotalBonus();
dodge_number = ((1 / NitromeGame.total_levels) * b.dodge);
cash_number = ((1 / b.cash_total) * b.cash_count);
msg_number = ((1 / b.msg_total) * b.msg_count);
enemy_number = ((1 / b.enemy_total) * b.enemy_count);
dodge_totals.text = (((("DODGE RATING (" + b.dodge) + "/") + NitromeGame.total_levels) + ")");
cash_totals.text = (((("CASH RATING (" + b.cash_count) + "/") + b.cash_total) + ")");
msg_totals.text = (((("MSG RATING (" + b.msg_count) + "/") + b.msg_total) + ")");
enemy_totals.text = (((("HUNT RATING (" + b.enemy_count) + "/") + b.enemy_total) + ")");
if (dodge_number < 0.25){
dodge_rating.text = "SWISS CHEESE";
} else {
if (dodge_number < 0.5){
dodge_rating.text = "ACCIDENT PRONE";
} else {
if (dodge_number < 0.75){
dodge_rating.text = "JUST A FLESH WOUND";
} else {
if (dodge_number < 0.99999999){
dodge_rating.text = "NOT JUST LUCK";
} else {
if (dodge_number == 1){
dodge_rating.text = "PERFECT";
};
};
};
};
};
if (cash_number < 0.25){
cash_rating.text = "CHARITY CASE";
} else {
if (cash_number < 0.5){
cash_rating.text = "MINIMUM WAGE";
} else {
if (cash_number < 0.75){
cash_rating.text = "CAT BURGLAR";
} else {
if (cash_number < 0.99999999){
cash_rating.text = "SCROOGE";
} else {
if (cash_number == 1){
cash_rating.text = "PERFECT";
};
};
};
};
};
if (msg_number < 0.25){
msg_rating.text = "BLIND";
} else {
if (msg_number < 0.5){
msg_rating.text = "NEEDS GLASSES";
} else {
if (msg_number < 0.75){
msg_rating.text = "PERCEPTIVE";
} else {
if (msg_number < 0.99999999){
msg_rating.text = "PEDANTIC";
} else {
if (msg_number == 1){
msg_rating.text = "PERFECT";
};
};
};
};
};
if (enemy_number < 0.25){
enemy_rating.text = "BENEVOLENT";
} else {
if (enemy_number < 0.5){
enemy_rating.text = "EYE FOR AN EYE";
} else {
if (enemy_number < 0.75){
enemy_rating.text = "SADISTIC";
} else {
if (enemy_number < 0.99999999){
enemy_rating.text = "OLD TESTAMENT";
} else {
if (enemy_number == 1){
enemy_rating.text = "PERFECT";
};
};
};
};
};
stop();
}
public function titleFade(_arg1:Event){
if (((!((title_logo == null))) && ((title_logo.alpha < 1)))){
title_logo.alpha = (title_logo.alpha + 0.015);
buttons.alpha = (buttons.alpha + 0.015);
} else {
if (title_logo != null){
title_logo.alpha = 1;
buttons.alpha = 1;
};
NitromeGame.sound_manager.playMusicFadeIn(SoundManager.MENU);
removeEventListener(Event.ENTER_FRAME, titleFade);
};
}
function frame91(){
stage.quality = StageQuality.LOW;
game = new Game(shaker.canvas, shaker, back);
stop();
}
function frame101(){
game.clearAll();
game = null;
loading_clip.gotoAndStop("loading");
gotoAndStop("game");
}
function frame112(){
story.init();
stop();
}
}
}//package finalninjazero_fla
Section 165
//mcAnimation_648 (finalninjazero_fla.mcAnimation_648)
package finalninjazero_fla {
import flash.display.*;
public dynamic class mcAnimation_648 extends MovieClip {
public function mcAnimation_648(){
addFrameScript(135, frame136);
}
function frame136(){
NitromeGame.timeline.gotoAndStop("nitrome");
parent.parent.removeChild(parent);
stop();
}
}
}//package finalninjazero_fla
Section 166
//menu_music_holder_627 (finalninjazero_fla.menu_music_holder_627)
package finalninjazero_fla {
import flash.display.*;
public dynamic class menu_music_holder_627 extends MovieClip {
public function menu_music_holder_627(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package finalninjazero_fla
Section 167
//missile_635 (finalninjazero_fla.missile_635)
package finalninjazero_fla {
import flash.display.*;
public dynamic class missile_635 extends MovieClip {
public function missile_635(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 168
//msg_638 (finalninjazero_fla.msg_638)
package finalninjazero_fla {
import flash.display.*;
public dynamic class msg_638 extends MovieClip {
public function msg_638(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 169
//ninjareveal_40 (finalninjazero_fla.ninjareveal_40)
package finalninjazero_fla {
import flash.display.*;
public dynamic class ninjareveal_40 extends MovieClip {
public function ninjareveal_40(){
addFrameScript(148, frame149);
}
function frame149(){
stop();
}
}
}//package finalninjazero_fla
Section 170
//ninrun_96 (finalninjazero_fla.ninrun_96)
package finalninjazero_fla {
import flash.display.*;
public dynamic class ninrun_96 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 171
//ninrun_help_184 (finalninjazero_fla.ninrun_help_184)
package finalninjazero_fla {
import flash.display.*;
public dynamic class ninrun_help_184 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 172
//ninswing_99 (finalninjazero_fla.ninswing_99)
package finalninjazero_fla {
import flash.display.*;
public dynamic class ninswing_99 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 173
//ninswing_help_194 (finalninjazero_fla.ninswing_help_194)
package finalninjazero_fla {
import flash.display.*;
public dynamic class ninswing_help_194 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 174
//nitrome_intro_662 (finalninjazero_fla.nitrome_intro_662)
package finalninjazero_fla {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import flash.media.*;
import flash.ui.*;
import flash.net.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.system.*;
import flash.xml.*;
public dynamic class nitrome_intro_662 extends MovieClip {
public var buffered:Array;
public var _t:IntroMC5;
public var rect:Rectangle;
public var _r:IntroMC4;
public var map_mask:MovieClip;
public var clips:Array;
public var bitmaps:Array;
public var classes:Array;
public var buffers:Array;
public var bitmap:Bitmap;
public var pos:Array;
public var i:int;
public var bitmapdata:BitmapData;
public var moved:Array;
public var bounds:Rectangle;
public var matrix:Matrix;
public var buffer:BitmapData;
public var _e:IntroMC1;
public var _m:IntroMC2;
public var _n:IntroMC7;
public var _i:IntroMC6;
public var _o:IntroMC3;
public function nitrome_intro_662(){
addFrameScript(0, frame1, 169, frame170);
}
function frame170(){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
NitromeGame.transition.doTween("pre_title_screen");
stop();
}
function frame1(){
if (NitromeGame.timeline.currentLabel != "nitrome"){
stop();
};
classes = [IntroMC7, IntroMC6, IntroMC5, IntroMC4, IntroMC3, IntroMC2, IntroMC1];
clips = [];
pos = [{x:0, y:0}, {x:0, y:0}, {x:0, y:0}, {x:0, y:0}, {x:0, y:0}, {x:0, y:0}, {x:0, y:0}];
moved = [false, false, false, false, false, false, false];
buffered = [2, 2, 2, 2, 2, 2, 2];
clips[0] = _n;
clips[1] = _i;
clips[2] = _t;
clips[3] = _r;
clips[4] = _o;
clips[5] = _m;
clips[6] = _e;
bitmaps = [];
buffers = [];
matrix = new Matrix();
rect = new Rectangle();
i = 0;
while (i < clips.length) {
bounds = clips[i].getBounds(this);
bitmapdata = new BitmapData(bounds.width, bounds.height, true, 0xFFFFFF);
buffer = new BitmapData(bounds.width, bounds.height, true, 0xFFFFFF);
bitmap = new Bitmap(bitmapdata);
bitmaps.push(bitmap);
buffers.push(buffer);
map_mask = new (classes[i]);
clips[i].addChild(bitmap);
clips[i].addChild(map_mask);
bitmap.cacheAsBitmap = true;
map_mask.cacheAsBitmap = true;
bitmap.mask = map_mask;
pos[i].x = clips[i].x;
pos[i].y = clips[i].y;
i++;
};
addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
}
public function onEnterFrame(_arg1:Event):void{
i = 0;
while (i < clips.length) {
bitmaps[i].bitmapData.copyPixels(buffers[i], new Rectangle(0, 0, bitmaps[i].width, bitmaps[i].height), new Point());
clips[i].visible = false;
i++;
};
i = 0;
while (i < clips.length) {
rect = new Rectangle(0, 0, clips[i].width, clips[i].height);
matrix.tx = -(clips[i].x);
matrix.ty = -(clips[i].y);
buffers[i].draw(this, matrix, null, null, rect);
if (((((((((clips[i].x + (clips[i].width - 1)) > -270)) && (((clips[i].y + (clips[i].height - 1)) < 200)))) && ((clips[i].x >= -270)))) && ((clips[i].y >= -200)))){
var _local2 = buffered;
var _local3 = i;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
};
i++;
};
i = 0;
while (i < clips.length) {
if (buffered[i] <= 0){
clips[i].visible = true;
if (((moved[i]) && ((((Math.abs((pos[i].x - clips[i].x)) >> 0) + (Math.abs((pos[i].y - clips[i].y)) >> 0)) == 0)))){
if (bitmaps[i].alpha > 0){
bitmaps[i].alpha = (bitmaps[i].alpha - 0.1);
};
} else {
if (((Math.abs((pos[i].x - clips[i].x)) >> 0) + (Math.abs((pos[i].y - clips[i].y)) >> 0)) != 0){
moved[i] = true;
};
};
};
pos[i].x = clips[i].x;
pos[i].y = clips[i].y;
i++;
};
}
}
}//package finalninjazero_fla
Section 175
//oishii_619 (finalninjazero_fla.oishii_619)
package finalninjazero_fla {
import flash.display.*;
public dynamic class oishii_619 extends MovieClip {
public function oishii_619(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 176
//pauseswat_223 (finalninjazero_fla.pauseswat_223)
package finalninjazero_fla {
import flash.display.*;
public dynamic class pauseswat_223 extends MovieClip {
public var arm:MovieClip;
}
}//package finalninjazero_fla
Section 177
//popup_clip_179 (finalninjazero_fla.popup_clip_179)
package finalninjazero_fla {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import com.nitrome.game.*;
import flash.text.*;
import flash.media.*;
import flash.ui.*;
import flash.net.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.system.*;
import flash.xml.*;
public dynamic class popup_clip_179 extends MovieClip {
public var try_again_button:TryAgainButton;
public var cash_count:TextField;
public var cash_bonus:TextField;
public var ticker_score:ScoreTicker;
public var next_level_button:NextLevelButton;
public var hunt_bonus:TextField;
public var enemy_count:TextField;
public var continue_end_button:ContinueEndButton;
public var msg_count:TextField;
public var msg_bonus:TextField;
public function popup_clip_179(){
addFrameScript(0, frame1, 1, frame2, 15, frame16, 29, frame30, 45, frame46, 60, frame61);
}
function frame16(){
ticker_score.startCount(Score.value, (Score.value / 75));
stop();
}
function frame1(){
stop();
}
function frame2(){
cash_bonus.text = (((("CASH BONUS (" + NitromeGame.bonus.cash_count.value) + "/") + NitromeGame.bonus.cash_total.value) + ")");
msg_bonus.text = (((("MSG BONUS (" + NitromeGame.bonus.msg_count.value) + "/") + NitromeGame.bonus.msg_total.value) + ")");
hunt_bonus.text = (((("HUNT BONUS (" + NitromeGame.bonus.enemy_count.value) + "/") + NitromeGame.bonus.enemy_total.value) + ")");
stop();
}
function frame30(){
cash_bonus.text = (((("CASH BONUS (" + NitromeGame.bonus.cash_count.value) + "/") + NitromeGame.bonus.cash_total.value) + ")");
msg_bonus.text = (((("MSG BONUS (" + NitromeGame.bonus.msg_count.value) + "/") + NitromeGame.bonus.msg_total.value) + ")");
hunt_bonus.text = (((("HUNT BONUS (" + NitromeGame.bonus.enemy_count.value) + "/") + NitromeGame.bonus.enemy_total.value) + ")");
stop();
}
function frame46(){
cash_count.text = ((("CASH: " + NitromeGame.bonus.cash_count.value) + "/") + NitromeGame.bonus.cash_total.value);
msg_count.text = ((("MSG: " + NitromeGame.bonus.msg_count.value) + "/") + NitromeGame.bonus.msg_total.value);
enemy_count.text = ((("ENEMIES: " + NitromeGame.bonus.enemy_count.value) + "/") + NitromeGame.bonus.enemy_total.value);
stop();
}
function frame61(){
stop();
}
}
}//package finalninjazero_fla
Section 178
//powerdown_633 (finalninjazero_fla.powerdown_633)
package finalninjazero_fla {
import flash.display.*;
public dynamic class powerdown_633 extends MovieClip {
public function powerdown_633(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 179
//scientistdead_230 (finalninjazero_fla.scientistdead_230)
package finalninjazero_fla {
import flash.display.*;
public dynamic class scientistdead_230 extends MovieClip {
public function scientistdead_230(){
addFrameScript(23, frame24);
}
function frame24(){
stop();
}
}
}//package finalninjazero_fla
Section 180
//scientisthit_634 (finalninjazero_fla.scientisthit_634)
package finalninjazero_fla {
import flash.display.*;
public dynamic class scientisthit_634 extends MovieClip {
public function scientisthit_634(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 181
//score_counter_clip_181 (finalninjazero_fla.score_counter_clip_181)
package finalninjazero_fla {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import com.nitrome.game.*;
import flash.text.*;
import flash.media.*;
import flash.ui.*;
import flash.net.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.system.*;
import flash.xml.*;
public dynamic class score_counter_clip_181 extends MovieClip {
public var ticker_level:ScoreTicker;
public var ticker_score:ScoreTicker;
public var ticker_cash:ScoreTicker;
public var ticker_dodge:ScoreTicker;
public var ticker_hunt:ScoreTicker;
public var ticker_msg:ScoreTicker;
public function score_counter_clip_181(){
addFrameScript(19, frame20);
}
function frame20(){
ticker_cash.setOnFinish("ticker_msg", ((NitromeGame.bonus.msg_count.value == NitromeGame.bonus.msg_total.value)) ? 5000 : 0, (5000 / 25));
ticker_msg.setOnFinish("ticker_hunt", ((NitromeGame.bonus.enemy_count.value == NitromeGame.bonus.enemy_total.value)) ? 10000 : 0, (10000 / 25));
ticker_hunt.setOnFinish("ticker_dodge", (NitromeGame.bonus.dodge.value) ? 5000 : 0, (5000 / 25));
ticker_dodge.setOnFinish("ticker_level", NitromeGame.level_score, (NitromeGame.level_score / 50));
ticker_level.setOnFinish("ticker_score", Score.value, (Score.value / 50));
ticker_cash.startCount(((NitromeGame.bonus.cash_count.value == NitromeGame.bonus.cash_total.value)) ? 5000 : 0, (5000 / 25));
stop();
}
}
}//package finalninjazero_fla
Section 182
//score_panel_685 (finalninjazero_fla.score_panel_685)
package finalninjazero_fla {
import flash.display.*;
import flash.text.*;
public dynamic class score_panel_685 extends MovieClip {
public var score:TextField;
}
}//package finalninjazero_fla
Section 183
//shaker_682 (finalninjazero_fla.shaker_682)
package finalninjazero_fla {
import flash.display.*;
public dynamic class shaker_682 extends MovieClip {
public var canvas:holder;
}
}//package finalninjazero_fla
Section 184
//smithdie_625 (finalninjazero_fla.smithdie_625)
package finalninjazero_fla {
import flash.display.*;
public dynamic class smithdie_625 extends MovieClip {
public function smithdie_625(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 185
//smithhit_620 (finalninjazero_fla.smithhit_620)
package finalninjazero_fla {
import flash.display.*;
public dynamic class smithhit_620 extends MovieClip {
public function smithhit_620(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 186
//star_hit_612 (finalninjazero_fla.star_hit_612)
package finalninjazero_fla {
import flash.display.*;
public dynamic class star_hit_612 extends MovieClip {
public function star_hit_612(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 187
//stealthnin_95 (finalninjazero_fla.stealthnin_95)
package finalninjazero_fla {
import flash.display.*;
public dynamic class stealthnin_95 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 188
//sunflare_680 (finalninjazero_fla.sunflare_680)
package finalninjazero_fla {
import flash.display.*;
public dynamic class sunflare_680 extends MovieClip {
public var sparkle2:MovieClip;
public var sparkle1:MovieClip;
}
}//package finalninjazero_fla
Section 189
//swat_flare_49 (finalninjazero_fla.swat_flare_49)
package finalninjazero_fla {
import flash.display.*;
public dynamic class swat_flare_49 extends MovieClip {
public function swat_flare_49(){
addFrameScript(8, frame9);
}
function frame9(){
stop();
}
}
}//package finalninjazero_fla
Section 190
//swatgun_200 (finalninjazero_fla.swatgun_200)
package finalninjazero_fla {
import flash.display.*;
public dynamic class swatgun_200 extends MovieClip {
public var cartridges:MovieClip;
public function swatgun_200(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 191
//swdefend_252 (finalninjazero_fla.swdefend_252)
package finalninjazero_fla {
import flash.display.*;
public dynamic class swdefend_252 extends MovieClip {
public function swdefend_252(){
addFrameScript(0, frame1);
}
function frame1(){
NitromeGame.sound_manager.playSound("tang");
}
}
}//package finalninjazero_fla
Section 192
//swjumpfin_254 (finalninjazero_fla.swjumpfin_254)
package finalninjazero_fla {
import flash.display.*;
public dynamic class swjumpfin_254 extends MovieClip {
public function swjumpfin_254(){
addFrameScript(6, frame7, 21, frame22);
}
function frame7(){
NitromeGame.sound_manager.playSound("sword1");
}
function frame22(){
NitromeGame.sound_manager.playSound("chop");
}
}
}//package finalninjazero_fla
Section 193
//sword1_613 (finalninjazero_fla.sword1_613)
package finalninjazero_fla {
import flash.display.*;
public dynamic class sword1_613 extends MovieClip {
public function sword1_613(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 194
//sword2_614 (finalninjazero_fla.sword2_614)
package finalninjazero_fla {
import flash.display.*;
public dynamic class sword2_614 extends MovieClip {
public function sword2_614(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 195
//swstandinattack_253 (finalninjazero_fla.swstandinattack_253)
package finalninjazero_fla {
import flash.display.*;
public dynamic class swstandinattack_253 extends MovieClip {
public function swstandinattack_253(){
addFrameScript(0, frame1, 4, frame5);
}
function frame1(){
NitromeGame.sound_manager.playSound("sword2");
}
function frame5(){
NitromeGame.sound_manager.playSound("chop");
}
}
}//package finalninjazero_fla
Section 196
//swwaitdef_256 (finalninjazero_fla.swwaitdef_256)
package finalninjazero_fla {
import flash.display.*;
public dynamic class swwaitdef_256 extends MovieClip {
public function swwaitdef_256(){
addFrameScript(7, frame8);
}
function frame8(){
stop();
}
}
}//package finalninjazero_fla
Section 197
//tang_615 (finalninjazero_fla.tang_615)
package finalninjazero_fla {
import flash.display.*;
public dynamic class tang_615 extends MovieClip {
public function tang_615(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 198
//text_panel_687 (finalninjazero_fla.text_panel_687)
package finalninjazero_fla {
import flash.display.*;
public dynamic class text_panel_687 extends MovieClip {
public var panel:MovieClip;
public function text_panel_687(){
addFrameScript(0, frame1, 19, frame20);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
}
}//package finalninjazero_fla
Section 199
//text_panel_faces_689 (finalninjazero_fla.text_panel_faces_689)
package finalninjazero_fla {
import flash.display.*;
public dynamic class text_panel_faces_689 extends MovieClip {
public function text_panel_faces_689(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 200
//text_panel_panel_688 (finalninjazero_fla.text_panel_panel_688)
package finalninjazero_fla {
import flash.display.*;
import flash.text.*;
public dynamic class text_panel_panel_688 extends MovieClip {
public var message_text:TextField;
public var face_panel:MovieClip;
}
}//package finalninjazero_fla
Section 201
//top_clip_lvls_55 (finalninjazero_fla.top_clip_lvls_55)
package finalninjazero_fla {
import flash.display.*;
public dynamic class top_clip_lvls_55 extends MovieClip {
public var top:MovieClip;
}
}//package finalninjazero_fla
Section 202
//waitinnin_100 (finalninjazero_fla.waitinnin_100)
package finalninjazero_fla {
import flash.display.*;
public dynamic class waitinnin_100 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 203
//waitnin_83 (finalninjazero_fla.waitnin_83)
package finalninjazero_fla {
import flash.display.*;
public dynamic class waitnin_83 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 204
//waitnin_help_188 (finalninjazero_fla.waitnin_help_188)
package finalninjazero_fla {
import flash.display.*;
public dynamic class waitnin_help_188 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 205
//waitnin_redy_help_190 (finalninjazero_fla.waitnin_redy_help_190)
package finalninjazero_fla {
import flash.display.*;
public dynamic class waitnin_redy_help_190 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 206
//waitnin_redy_throw_191 (finalninjazero_fla.waitnin_redy_throw_191)
package finalninjazero_fla {
import flash.display.*;
public dynamic class waitnin_redy_throw_191 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 207
//wallnin_98 (finalninjazero_fla.wallnin_98)
package finalninjazero_fla {
import flash.display.*;
public dynamic class wallnin_98 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 208
//wallnin_help_197 (finalninjazero_fla.wallnin_help_197)
package finalninjazero_fla {
import flash.display.*;
public dynamic class wallnin_help_197 extends MovieClip {
public var right_eye:MovieClip;
public var left_eye:MovieClip;
}
}//package finalninjazero_fla
Section 209
//wallpuff_50 (finalninjazero_fla.wallpuff_50)
package finalninjazero_fla {
import flash.display.*;
public dynamic class wallpuff_50 extends MovieClip {
public function wallpuff_50(){
addFrameScript(13, frame14);
}
function frame14(){
stop();
}
}
}//package finalninjazero_fla
Section 210
//wom_616 (finalninjazero_fla.wom_616)
package finalninjazero_fla {
import flash.display.*;
public dynamic class wom_616 extends MovieClip {
public function wom_616(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 211
//yatta_622 (finalninjazero_fla.yatta_622)
package finalninjazero_fla {
import flash.display.*;
public dynamic class yatta_622 extends MovieClip {
public function yatta_622(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package finalninjazero_fla
Section 212
//BackArrayMC (BackArrayMC)
package {
import flash.display.*;
public dynamic class BackArrayMC extends MovieClip {
}
}//package
Section 213
//BangMC1 (BangMC1)
package {
import flash.display.*;
public dynamic class BangMC1 extends MovieClip {
}
}//package
Section 214
//BangMC2 (BangMC2)
package {
import flash.display.*;
public dynamic class BangMC2 extends MovieClip {
}
}//package
Section 215
//BangMC3 (BangMC3)
package {
import flash.display.*;
public dynamic class BangMC3 extends MovieClip {
}
}//package
Section 216
//BeamMC1 (BeamMC1)
package {
import flash.display.*;
public dynamic class BeamMC1 extends MovieClip {
public var beam:MovieClip;
}
}//package
Section 217
//BeamMC2 (BeamMC2)
package {
import flash.display.*;
public dynamic class BeamMC2 extends MovieClip {
public var beam:MovieClip;
}
}//package
Section 218
//BigShieldMC (BigShieldMC)
package {
import flash.display.*;
public dynamic class BigShieldMC extends Sprite {
}
}//package
Section 219
//BladeManMC (BladeManMC)
package {
import flash.display.*;
public dynamic class BladeManMC extends MovieClip {
public function BladeManMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 220
//BlockMC1 (BlockMC1)
package {
import flash.display.*;
public dynamic class BlockMC1 extends Sprite {
}
}//package
Section 221
//BlockMC10 (BlockMC10)
package {
import flash.display.*;
public dynamic class BlockMC10 extends Sprite {
}
}//package
Section 222
//BlockMC100 (BlockMC100)
package {
import flash.display.*;
public dynamic class BlockMC100 extends Sprite {
}
}//package
Section 223
//BlockMC101 (BlockMC101)
package {
import flash.display.*;
public dynamic class BlockMC101 extends Sprite {
}
}//package
Section 224
//BlockMC102 (BlockMC102)
package {
import flash.display.*;
public dynamic class BlockMC102 extends Sprite {
}
}//package
Section 225
//BlockMC103 (BlockMC103)
package {
import flash.display.*;
public dynamic class BlockMC103 extends Sprite {
}
}//package
Section 226
//BlockMC104 (BlockMC104)
package {
import flash.display.*;
public dynamic class BlockMC104 extends Sprite {
}
}//package
Section 227
//BlockMC105 (BlockMC105)
package {
import flash.display.*;
public dynamic class BlockMC105 extends Sprite {
}
}//package
Section 228
//BlockMC106 (BlockMC106)
package {
import flash.display.*;
public dynamic class BlockMC106 extends Sprite {
}
}//package
Section 229
//BlockMC107 (BlockMC107)
package {
import flash.display.*;
public dynamic class BlockMC107 extends Sprite {
}
}//package
Section 230
//BlockMC108 (BlockMC108)
package {
import flash.display.*;
public dynamic class BlockMC108 extends Sprite {
}
}//package
Section 231
//BlockMC109 (BlockMC109)
package {
import flash.display.*;
public dynamic class BlockMC109 extends Sprite {
}
}//package
Section 232
//BlockMC11 (BlockMC11)
package {
import flash.display.*;
public dynamic class BlockMC11 extends Sprite {
}
}//package
Section 233
//BlockMC110 (BlockMC110)
package {
import flash.display.*;
public dynamic class BlockMC110 extends Sprite {
}
}//package
Section 234
//BlockMC111 (BlockMC111)
package {
import flash.display.*;
public dynamic class BlockMC111 extends Sprite {
}
}//package
Section 235
//BlockMC112 (BlockMC112)
package {
import flash.display.*;
public dynamic class BlockMC112 extends Sprite {
}
}//package
Section 236
//BlockMC113 (BlockMC113)
package {
import flash.display.*;
public dynamic class BlockMC113 extends Sprite {
}
}//package
Section 237
//BlockMC114 (BlockMC114)
package {
import flash.display.*;
public dynamic class BlockMC114 extends Sprite {
}
}//package
Section 238
//BlockMC115 (BlockMC115)
package {
import flash.display.*;
public dynamic class BlockMC115 extends Sprite {
}
}//package
Section 239
//BlockMC116 (BlockMC116)
package {
import flash.display.*;
public dynamic class BlockMC116 extends Sprite {
}
}//package
Section 240
//BlockMC117 (BlockMC117)
package {
import flash.display.*;
public dynamic class BlockMC117 extends Sprite {
}
}//package
Section 241
//BlockMC118 (BlockMC118)
package {
import flash.display.*;
public dynamic class BlockMC118 extends Sprite {
}
}//package
Section 242
//BlockMC119 (BlockMC119)
package {
import flash.display.*;
public dynamic class BlockMC119 extends Sprite {
}
}//package
Section 243
//BlockMC12 (BlockMC12)
package {
import flash.display.*;
public dynamic class BlockMC12 extends Sprite {
}
}//package
Section 244
//BlockMC120 (BlockMC120)
package {
import flash.display.*;
public dynamic class BlockMC120 extends Sprite {
}
}//package
Section 245
//BlockMC121 (BlockMC121)
package {
import flash.display.*;
public dynamic class BlockMC121 extends Sprite {
}
}//package
Section 246
//BlockMC122 (BlockMC122)
package {
import flash.display.*;
public dynamic class BlockMC122 extends Sprite {
}
}//package
Section 247
//BlockMC123 (BlockMC123)
package {
import flash.display.*;
public dynamic class BlockMC123 extends Sprite {
}
}//package
Section 248
//BlockMC124 (BlockMC124)
package {
import flash.display.*;
public dynamic class BlockMC124 extends Sprite {
}
}//package
Section 249
//BlockMC125 (BlockMC125)
package {
import flash.display.*;
public dynamic class BlockMC125 extends Sprite {
}
}//package
Section 250
//BlockMC126 (BlockMC126)
package {
import flash.display.*;
public dynamic class BlockMC126 extends Sprite {
}
}//package
Section 251
//BlockMC127 (BlockMC127)
package {
import flash.display.*;
public dynamic class BlockMC127 extends Sprite {
}
}//package
Section 252
//BlockMC128 (BlockMC128)
package {
import flash.display.*;
public dynamic class BlockMC128 extends Sprite {
}
}//package
Section 253
//BlockMC129 (BlockMC129)
package {
import flash.display.*;
public dynamic class BlockMC129 extends Sprite {
}
}//package
Section 254
//BlockMC13 (BlockMC13)
package {
import flash.display.*;
public dynamic class BlockMC13 extends Sprite {
}
}//package
Section 255
//BlockMC130 (BlockMC130)
package {
import flash.display.*;
public dynamic class BlockMC130 extends Sprite {
}
}//package
Section 256
//BlockMC131 (BlockMC131)
package {
import flash.display.*;
public dynamic class BlockMC131 extends Sprite {
}
}//package
Section 257
//BlockMC132 (BlockMC132)
package {
import flash.display.*;
public dynamic class BlockMC132 extends Sprite {
}
}//package
Section 258
//BlockMC133 (BlockMC133)
package {
import flash.display.*;
public dynamic class BlockMC133 extends Sprite {
}
}//package
Section 259
//BlockMC134 (BlockMC134)
package {
import flash.display.*;
public dynamic class BlockMC134 extends Sprite {
}
}//package
Section 260
//BlockMC135 (BlockMC135)
package {
import flash.display.*;
public dynamic class BlockMC135 extends Sprite {
}
}//package
Section 261
//BlockMC136 (BlockMC136)
package {
import flash.display.*;
public dynamic class BlockMC136 extends Sprite {
}
}//package
Section 262
//BlockMC137 (BlockMC137)
package {
import flash.display.*;
public dynamic class BlockMC137 extends Sprite {
}
}//package
Section 263
//BlockMC138 (BlockMC138)
package {
import flash.display.*;
public dynamic class BlockMC138 extends Sprite {
}
}//package
Section 264
//BlockMC139 (BlockMC139)
package {
import flash.display.*;
public dynamic class BlockMC139 extends Sprite {
}
}//package
Section 265
//BlockMC14 (BlockMC14)
package {
import flash.display.*;
public dynamic class BlockMC14 extends Sprite {
}
}//package
Section 266
//BlockMC140 (BlockMC140)
package {
import flash.display.*;
public dynamic class BlockMC140 extends Sprite {
}
}//package
Section 267
//BlockMC141 (BlockMC141)
package {
import flash.display.*;
public dynamic class BlockMC141 extends Sprite {
}
}//package
Section 268
//BlockMC142 (BlockMC142)
package {
import flash.display.*;
public dynamic class BlockMC142 extends Sprite {
}
}//package
Section 269
//BlockMC143 (BlockMC143)
package {
import flash.display.*;
public dynamic class BlockMC143 extends Sprite {
}
}//package
Section 270
//BlockMC144 (BlockMC144)
package {
import flash.display.*;
public dynamic class BlockMC144 extends Sprite {
}
}//package
Section 271
//BlockMC145 (BlockMC145)
package {
import flash.display.*;
public dynamic class BlockMC145 extends Sprite {
}
}//package
Section 272
//BlockMC146 (BlockMC146)
package {
import flash.display.*;
public dynamic class BlockMC146 extends Sprite {
}
}//package
Section 273
//BlockMC147 (BlockMC147)
package {
import flash.display.*;
public dynamic class BlockMC147 extends Sprite {
}
}//package
Section 274
//BlockMC148 (BlockMC148)
package {
import flash.display.*;
public dynamic class BlockMC148 extends Sprite {
}
}//package
Section 275
//BlockMC149 (BlockMC149)
package {
import flash.display.*;
public dynamic class BlockMC149 extends Sprite {
}
}//package
Section 276
//BlockMC15 (BlockMC15)
package {
import flash.display.*;
public dynamic class BlockMC15 extends Sprite {
}
}//package
Section 277
//BlockMC150 (BlockMC150)
package {
import flash.display.*;
public dynamic class BlockMC150 extends Sprite {
}
}//package
Section 278
//BlockMC151 (BlockMC151)
package {
import flash.display.*;
public dynamic class BlockMC151 extends Sprite {
}
}//package
Section 279
//BlockMC152 (BlockMC152)
package {
import flash.display.*;
public dynamic class BlockMC152 extends Sprite {
}
}//package
Section 280
//BlockMC153 (BlockMC153)
package {
import flash.display.*;
public dynamic class BlockMC153 extends Sprite {
}
}//package
Section 281
//BlockMC154 (BlockMC154)
package {
import flash.display.*;
public dynamic class BlockMC154 extends Sprite {
}
}//package
Section 282
//BlockMC155 (BlockMC155)
package {
import flash.display.*;
public dynamic class BlockMC155 extends Sprite {
}
}//package
Section 283
//BlockMC156 (BlockMC156)
package {
import flash.display.*;
public dynamic class BlockMC156 extends Sprite {
}
}//package
Section 284
//BlockMC157 (BlockMC157)
package {
import flash.display.*;
public dynamic class BlockMC157 extends Sprite {
}
}//package
Section 285
//BlockMC158 (BlockMC158)
package {
import flash.display.*;
public dynamic class BlockMC158 extends Sprite {
}
}//package
Section 286
//BlockMC159 (BlockMC159)
package {
import flash.display.*;
public dynamic class BlockMC159 extends Sprite {
}
}//package
Section 287
//BlockMC16 (BlockMC16)
package {
import flash.display.*;
public dynamic class BlockMC16 extends Sprite {
}
}//package
Section 288
//BlockMC160 (BlockMC160)
package {
import flash.display.*;
public dynamic class BlockMC160 extends Sprite {
}
}//package
Section 289
//BlockMC161 (BlockMC161)
package {
import flash.display.*;
public dynamic class BlockMC161 extends Sprite {
}
}//package
Section 290
//BlockMC162 (BlockMC162)
package {
import flash.display.*;
public dynamic class BlockMC162 extends Sprite {
}
}//package
Section 291
//BlockMC163 (BlockMC163)
package {
import flash.display.*;
public dynamic class BlockMC163 extends Sprite {
}
}//package
Section 292
//BlockMC164 (BlockMC164)
package {
import flash.display.*;
public dynamic class BlockMC164 extends Sprite {
}
}//package
Section 293
//BlockMC165 (BlockMC165)
package {
import flash.display.*;
public dynamic class BlockMC165 extends Sprite {
}
}//package
Section 294
//BlockMC166 (BlockMC166)
package {
import flash.display.*;
public dynamic class BlockMC166 extends Sprite {
}
}//package
Section 295
//BlockMC167 (BlockMC167)
package {
import flash.display.*;
public dynamic class BlockMC167 extends Sprite {
}
}//package
Section 296
//BlockMC168 (BlockMC168)
package {
import flash.display.*;
public dynamic class BlockMC168 extends Sprite {
}
}//package
Section 297
//BlockMC169 (BlockMC169)
package {
import flash.display.*;
public dynamic class BlockMC169 extends Sprite {
}
}//package
Section 298
//BlockMC17 (BlockMC17)
package {
import flash.display.*;
public dynamic class BlockMC17 extends Sprite {
}
}//package
Section 299
//BlockMC170 (BlockMC170)
package {
import flash.display.*;
public dynamic class BlockMC170 extends Sprite {
}
}//package
Section 300
//BlockMC171 (BlockMC171)
package {
import flash.display.*;
public dynamic class BlockMC171 extends Sprite {
}
}//package
Section 301
//BlockMC172 (BlockMC172)
package {
import flash.display.*;
public dynamic class BlockMC172 extends Sprite {
}
}//package
Section 302
//BlockMC173 (BlockMC173)
package {
import flash.display.*;
public dynamic class BlockMC173 extends Sprite {
}
}//package
Section 303
//BlockMC174 (BlockMC174)
package {
import flash.display.*;
public dynamic class BlockMC174 extends Sprite {
}
}//package
Section 304
//BlockMC175 (BlockMC175)
package {
import flash.display.*;
public dynamic class BlockMC175 extends Sprite {
}
}//package
Section 305
//BlockMC176 (BlockMC176)
package {
import flash.display.*;
public dynamic class BlockMC176 extends Sprite {
}
}//package
Section 306
//BlockMC177 (BlockMC177)
package {
import flash.display.*;
public dynamic class BlockMC177 extends Sprite {
}
}//package
Section 307
//BlockMC178 (BlockMC178)
package {
import flash.display.*;
public dynamic class BlockMC178 extends Sprite {
}
}//package
Section 308
//BlockMC179 (BlockMC179)
package {
import flash.display.*;
public dynamic class BlockMC179 extends Sprite {
}
}//package
Section 309
//BlockMC18 (BlockMC18)
package {
import flash.display.*;
public dynamic class BlockMC18 extends Sprite {
}
}//package
Section 310
//BlockMC180 (BlockMC180)
package {
import flash.display.*;
public dynamic class BlockMC180 extends Sprite {
}
}//package
Section 311
//BlockMC181 (BlockMC181)
package {
import flash.display.*;
public dynamic class BlockMC181 extends Sprite {
}
}//package
Section 312
//BlockMC182 (BlockMC182)
package {
import flash.display.*;
public dynamic class BlockMC182 extends Sprite {
}
}//package
Section 313
//BlockMC183 (BlockMC183)
package {
import flash.display.*;
public dynamic class BlockMC183 extends Sprite {
}
}//package
Section 314
//BlockMC184 (BlockMC184)
package {
import flash.display.*;
public dynamic class BlockMC184 extends Sprite {
}
}//package
Section 315
//BlockMC185 (BlockMC185)
package {
import flash.display.*;
public dynamic class BlockMC185 extends Sprite {
}
}//package
Section 316
//BlockMC186 (BlockMC186)
package {
import flash.display.*;
public dynamic class BlockMC186 extends Sprite {
}
}//package
Section 317
//BlockMC187 (BlockMC187)
package {
import flash.display.*;
public dynamic class BlockMC187 extends Sprite {
}
}//package
Section 318
//BlockMC188 (BlockMC188)
package {
import flash.display.*;
public dynamic class BlockMC188 extends Sprite {
}
}//package
Section 319
//BlockMC189 (BlockMC189)
package {
import flash.display.*;
public dynamic class BlockMC189 extends Sprite {
}
}//package
Section 320
//BlockMC19 (BlockMC19)
package {
import flash.display.*;
public dynamic class BlockMC19 extends Sprite {
}
}//package
Section 321
//BlockMC190 (BlockMC190)
package {
import flash.display.*;
public dynamic class BlockMC190 extends Sprite {
}
}//package
Section 322
//BlockMC191 (BlockMC191)
package {
import flash.display.*;
public dynamic class BlockMC191 extends Sprite {
}
}//package
Section 323
//BlockMC192 (BlockMC192)
package {
import flash.display.*;
public dynamic class BlockMC192 extends Sprite {
}
}//package
Section 324
//BlockMC193 (BlockMC193)
package {
import flash.display.*;
public dynamic class BlockMC193 extends Sprite {
}
}//package
Section 325
//BlockMC194 (BlockMC194)
package {
import flash.display.*;
public dynamic class BlockMC194 extends Sprite {
}
}//package
Section 326
//BlockMC195 (BlockMC195)
package {
import flash.display.*;
public dynamic class BlockMC195 extends Sprite {
}
}//package
Section 327
//BlockMC196 (BlockMC196)
package {
import flash.display.*;
public dynamic class BlockMC196 extends Sprite {
}
}//package
Section 328
//BlockMC197 (BlockMC197)
package {
import flash.display.*;
public dynamic class BlockMC197 extends Sprite {
}
}//package
Section 329
//BlockMC198 (BlockMC198)
package {
import flash.display.*;
public dynamic class BlockMC198 extends Sprite {
}
}//package
Section 330
//BlockMC199 (BlockMC199)
package {
import flash.display.*;
public dynamic class BlockMC199 extends Sprite {
}
}//package
Section 331
//BlockMC2 (BlockMC2)
package {
import flash.display.*;
public dynamic class BlockMC2 extends Sprite {
}
}//package
Section 332
//BlockMC20 (BlockMC20)
package {
import flash.display.*;
public dynamic class BlockMC20 extends Sprite {
}
}//package
Section 333
//BlockMC200 (BlockMC200)
package {
import flash.display.*;
public dynamic class BlockMC200 extends Sprite {
}
}//package
Section 334
//BlockMC201 (BlockMC201)
package {
import flash.display.*;
public dynamic class BlockMC201 extends Sprite {
}
}//package
Section 335
//BlockMC202 (BlockMC202)
package {
import flash.display.*;
public dynamic class BlockMC202 extends Sprite {
}
}//package
Section 336
//BlockMC203 (BlockMC203)
package {
import flash.display.*;
public dynamic class BlockMC203 extends Sprite {
}
}//package
Section 337
//BlockMC204 (BlockMC204)
package {
import flash.display.*;
public dynamic class BlockMC204 extends Sprite {
}
}//package
Section 338
//BlockMC205 (BlockMC205)
package {
import flash.display.*;
public dynamic class BlockMC205 extends Sprite {
}
}//package
Section 339
//BlockMC206 (BlockMC206)
package {
import flash.display.*;
public dynamic class BlockMC206 extends Sprite {
}
}//package
Section 340
//BlockMC207 (BlockMC207)
package {
import flash.display.*;
public dynamic class BlockMC207 extends Sprite {
}
}//package
Section 341
//BlockMC208 (BlockMC208)
package {
import flash.display.*;
public dynamic class BlockMC208 extends Sprite {
}
}//package
Section 342
//BlockMC209 (BlockMC209)
package {
import flash.display.*;
public dynamic class BlockMC209 extends Sprite {
}
}//package
Section 343
//BlockMC21 (BlockMC21)
package {
import flash.display.*;
public dynamic class BlockMC21 extends Sprite {
}
}//package
Section 344
//BlockMC210 (BlockMC210)
package {
import flash.display.*;
public dynamic class BlockMC210 extends Sprite {
}
}//package
Section 345
//BlockMC211 (BlockMC211)
package {
import flash.display.*;
public dynamic class BlockMC211 extends Sprite {
}
}//package
Section 346
//BlockMC212 (BlockMC212)
package {
import flash.display.*;
public dynamic class BlockMC212 extends Sprite {
}
}//package
Section 347
//BlockMC213 (BlockMC213)
package {
import flash.display.*;
public dynamic class BlockMC213 extends Sprite {
}
}//package
Section 348
//BlockMC214 (BlockMC214)
package {
import flash.display.*;
public dynamic class BlockMC214 extends Sprite {
}
}//package
Section 349
//BlockMC215 (BlockMC215)
package {
import flash.display.*;
public dynamic class BlockMC215 extends Sprite {
}
}//package
Section 350
//BlockMC216 (BlockMC216)
package {
import flash.display.*;
public dynamic class BlockMC216 extends Sprite {
}
}//package
Section 351
//BlockMC217 (BlockMC217)
package {
import flash.display.*;
public dynamic class BlockMC217 extends Sprite {
}
}//package
Section 352
//BlockMC218 (BlockMC218)
package {
import flash.display.*;
public dynamic class BlockMC218 extends Sprite {
}
}//package
Section 353
//BlockMC219 (BlockMC219)
package {
import flash.display.*;
public dynamic class BlockMC219 extends Sprite {
}
}//package
Section 354
//BlockMC22 (BlockMC22)
package {
import flash.display.*;
public dynamic class BlockMC22 extends Sprite {
}
}//package
Section 355
//BlockMC220 (BlockMC220)
package {
import flash.display.*;
public dynamic class BlockMC220 extends Sprite {
}
}//package
Section 356
//BlockMC221 (BlockMC221)
package {
import flash.display.*;
public dynamic class BlockMC221 extends Sprite {
}
}//package
Section 357
//BlockMC222 (BlockMC222)
package {
import flash.display.*;
public dynamic class BlockMC222 extends Sprite {
}
}//package
Section 358
//BlockMC223 (BlockMC223)
package {
import flash.display.*;
public dynamic class BlockMC223 extends Sprite {
}
}//package
Section 359
//BlockMC224 (BlockMC224)
package {
import flash.display.*;
public dynamic class BlockMC224 extends Sprite {
}
}//package
Section 360
//BlockMC225 (BlockMC225)
package {
import flash.display.*;
public dynamic class BlockMC225 extends Sprite {
}
}//package
Section 361
//BlockMC226 (BlockMC226)
package {
import flash.display.*;
public dynamic class BlockMC226 extends Sprite {
}
}//package
Section 362
//BlockMC227 (BlockMC227)
package {
import flash.display.*;
public dynamic class BlockMC227 extends Sprite {
}
}//package
Section 363
//BlockMC228 (BlockMC228)
package {
import flash.display.*;
public dynamic class BlockMC228 extends Sprite {
}
}//package
Section 364
//BlockMC229 (BlockMC229)
package {
import flash.display.*;
public dynamic class BlockMC229 extends Sprite {
}
}//package
Section 365
//BlockMC23 (BlockMC23)
package {
import flash.display.*;
public dynamic class BlockMC23 extends Sprite {
}
}//package
Section 366
//BlockMC230 (BlockMC230)
package {
import flash.display.*;
public dynamic class BlockMC230 extends Sprite {
}
}//package
Section 367
//BlockMC231 (BlockMC231)
package {
import flash.display.*;
public dynamic class BlockMC231 extends Sprite {
}
}//package
Section 368
//BlockMC232 (BlockMC232)
package {
import flash.display.*;
public dynamic class BlockMC232 extends Sprite {
}
}//package
Section 369
//BlockMC233 (BlockMC233)
package {
import flash.display.*;
public dynamic class BlockMC233 extends Sprite {
}
}//package
Section 370
//BlockMC234 (BlockMC234)
package {
import flash.display.*;
public dynamic class BlockMC234 extends Sprite {
}
}//package
Section 371
//BlockMC24 (BlockMC24)
package {
import flash.display.*;
public dynamic class BlockMC24 extends Sprite {
}
}//package
Section 372
//BlockMC25 (BlockMC25)
package {
import flash.display.*;
public dynamic class BlockMC25 extends Sprite {
}
}//package
Section 373
//BlockMC26 (BlockMC26)
package {
import flash.display.*;
public dynamic class BlockMC26 extends Sprite {
}
}//package
Section 374
//BlockMC27 (BlockMC27)
package {
import flash.display.*;
public dynamic class BlockMC27 extends Sprite {
}
}//package
Section 375
//BlockMC28 (BlockMC28)
package {
import flash.display.*;
public dynamic class BlockMC28 extends Sprite {
}
}//package
Section 376
//BlockMC29 (BlockMC29)
package {
import flash.display.*;
public dynamic class BlockMC29 extends Sprite {
}
}//package
Section 377
//BlockMC3 (BlockMC3)
package {
import flash.display.*;
public dynamic class BlockMC3 extends Sprite {
}
}//package
Section 378
//BlockMC30 (BlockMC30)
package {
import flash.display.*;
public dynamic class BlockMC30 extends Sprite {
}
}//package
Section 379
//BlockMC31 (BlockMC31)
package {
import flash.display.*;
public dynamic class BlockMC31 extends Sprite {
}
}//package
Section 380
//BlockMC32 (BlockMC32)
package {
import flash.display.*;
public dynamic class BlockMC32 extends Sprite {
}
}//package
Section 381
//BlockMC33 (BlockMC33)
package {
import flash.display.*;
public dynamic class BlockMC33 extends Sprite {
}
}//package
Section 382
//BlockMC34 (BlockMC34)
package {
import flash.display.*;
public dynamic class BlockMC34 extends Sprite {
}
}//package
Section 383
//BlockMC35 (BlockMC35)
package {
import flash.display.*;
public dynamic class BlockMC35 extends Sprite {
}
}//package
Section 384
//BlockMC36 (BlockMC36)
package {
import flash.display.*;
public dynamic class BlockMC36 extends Sprite {
}
}//package
Section 385
//BlockMC37 (BlockMC37)
package {
import flash.display.*;
public dynamic class BlockMC37 extends Sprite {
}
}//package
Section 386
//BlockMC38 (BlockMC38)
package {
import flash.display.*;
public dynamic class BlockMC38 extends Sprite {
}
}//package
Section 387
//BlockMC39 (BlockMC39)
package {
import flash.display.*;
public dynamic class BlockMC39 extends Sprite {
}
}//package
Section 388
//BlockMC4 (BlockMC4)
package {
import flash.display.*;
public dynamic class BlockMC4 extends Sprite {
}
}//package
Section 389
//BlockMC40 (BlockMC40)
package {
import flash.display.*;
public dynamic class BlockMC40 extends Sprite {
}
}//package
Section 390
//BlockMC41 (BlockMC41)
package {
import flash.display.*;
public dynamic class BlockMC41 extends Sprite {
}
}//package
Section 391
//BlockMC42 (BlockMC42)
package {
import flash.display.*;
public dynamic class BlockMC42 extends Sprite {
}
}//package
Section 392
//BlockMC43 (BlockMC43)
package {
import flash.display.*;
public dynamic class BlockMC43 extends Sprite {
}
}//package
Section 393
//BlockMC44 (BlockMC44)
package {
import flash.display.*;
public dynamic class BlockMC44 extends Sprite {
}
}//package
Section 394
//BlockMC45 (BlockMC45)
package {
import flash.display.*;
public dynamic class BlockMC45 extends Sprite {
}
}//package
Section 395
//BlockMC46 (BlockMC46)
package {
import flash.display.*;
public dynamic class BlockMC46 extends Sprite {
}
}//package
Section 396
//BlockMC47 (BlockMC47)
package {
import flash.display.*;
public dynamic class BlockMC47 extends Sprite {
}
}//package
Section 397
//BlockMC48 (BlockMC48)
package {
import flash.display.*;
public dynamic class BlockMC48 extends Sprite {
}
}//package
Section 398
//BlockMC49 (BlockMC49)
package {
import flash.display.*;
public dynamic class BlockMC49 extends Sprite {
}
}//package
Section 399
//BlockMC5 (BlockMC5)
package {
import flash.display.*;
public dynamic class BlockMC5 extends Sprite {
}
}//package
Section 400
//BlockMC50 (BlockMC50)
package {
import flash.display.*;
public dynamic class BlockMC50 extends Sprite {
}
}//package
Section 401
//BlockMC51 (BlockMC51)
package {
import flash.display.*;
public dynamic class BlockMC51 extends Sprite {
}
}//package
Section 402
//BlockMC52 (BlockMC52)
package {
import flash.display.*;
public dynamic class BlockMC52 extends Sprite {
}
}//package
Section 403
//BlockMC53 (BlockMC53)
package {
import flash.display.*;
public dynamic class BlockMC53 extends Sprite {
}
}//package
Section 404
//BlockMC54 (BlockMC54)
package {
import flash.display.*;
public dynamic class BlockMC54 extends Sprite {
}
}//package
Section 405
//BlockMC55 (BlockMC55)
package {
import flash.display.*;
public dynamic class BlockMC55 extends Sprite {
}
}//package
Section 406
//BlockMC56 (BlockMC56)
package {
import flash.display.*;
public dynamic class BlockMC56 extends Sprite {
}
}//package
Section 407
//BlockMC57 (BlockMC57)
package {
import flash.display.*;
public dynamic class BlockMC57 extends Sprite {
}
}//package
Section 408
//BlockMC58 (BlockMC58)
package {
import flash.display.*;
public dynamic class BlockMC58 extends Sprite {
}
}//package
Section 409
//BlockMC59 (BlockMC59)
package {
import flash.display.*;
public dynamic class BlockMC59 extends Sprite {
}
}//package
Section 410
//BlockMC6 (BlockMC6)
package {
import flash.display.*;
public dynamic class BlockMC6 extends Sprite {
}
}//package
Section 411
//BlockMC60 (BlockMC60)
package {
import flash.display.*;
public dynamic class BlockMC60 extends Sprite {
}
}//package
Section 412
//BlockMC61 (BlockMC61)
package {
import flash.display.*;
public dynamic class BlockMC61 extends Sprite {
}
}//package
Section 413
//BlockMC62 (BlockMC62)
package {
import flash.display.*;
public dynamic class BlockMC62 extends Sprite {
}
}//package
Section 414
//BlockMC63 (BlockMC63)
package {
import flash.display.*;
public dynamic class BlockMC63 extends Sprite {
}
}//package
Section 415
//BlockMC64 (BlockMC64)
package {
import flash.display.*;
public dynamic class BlockMC64 extends Sprite {
}
}//package
Section 416
//BlockMC65 (BlockMC65)
package {
import flash.display.*;
public dynamic class BlockMC65 extends Sprite {
}
}//package
Section 417
//BlockMC66 (BlockMC66)
package {
import flash.display.*;
public dynamic class BlockMC66 extends Sprite {
}
}//package
Section 418
//BlockMC67 (BlockMC67)
package {
import flash.display.*;
public dynamic class BlockMC67 extends Sprite {
}
}//package
Section 419
//BlockMC68 (BlockMC68)
package {
import flash.display.*;
public dynamic class BlockMC68 extends Sprite {
}
}//package
Section 420
//BlockMC69 (BlockMC69)
package {
import flash.display.*;
public dynamic class BlockMC69 extends Sprite {
}
}//package
Section 421
//BlockMC7 (BlockMC7)
package {
import flash.display.*;
public dynamic class BlockMC7 extends Sprite {
}
}//package
Section 422
//BlockMC70 (BlockMC70)
package {
import flash.display.*;
public dynamic class BlockMC70 extends Sprite {
}
}//package
Section 423
//BlockMC71 (BlockMC71)
package {
import flash.display.*;
public dynamic class BlockMC71 extends Sprite {
}
}//package
Section 424
//BlockMC72 (BlockMC72)
package {
import flash.display.*;
public dynamic class BlockMC72 extends Sprite {
}
}//package
Section 425
//BlockMC73 (BlockMC73)
package {
import flash.display.*;
public dynamic class BlockMC73 extends Sprite {
}
}//package
Section 426
//BlockMC74 (BlockMC74)
package {
import flash.display.*;
public dynamic class BlockMC74 extends Sprite {
}
}//package
Section 427
//BlockMC75 (BlockMC75)
package {
import flash.display.*;
public dynamic class BlockMC75 extends Sprite {
}
}//package
Section 428
//BlockMC76 (BlockMC76)
package {
import flash.display.*;
public dynamic class BlockMC76 extends Sprite {
}
}//package
Section 429
//BlockMC77 (BlockMC77)
package {
import flash.display.*;
public dynamic class BlockMC77 extends Sprite {
}
}//package
Section 430
//BlockMC78 (BlockMC78)
package {
import flash.display.*;
public dynamic class BlockMC78 extends Sprite {
}
}//package
Section 431
//BlockMC79 (BlockMC79)
package {
import flash.display.*;
public dynamic class BlockMC79 extends Sprite {
}
}//package
Section 432
//BlockMC8 (BlockMC8)
package {
import flash.display.*;
public dynamic class BlockMC8 extends Sprite {
}
}//package
Section 433
//BlockMC80 (BlockMC80)
package {
import flash.display.*;
public dynamic class BlockMC80 extends Sprite {
}
}//package
Section 434
//BlockMC81 (BlockMC81)
package {
import flash.display.*;
public dynamic class BlockMC81 extends Sprite {
}
}//package
Section 435
//BlockMC82 (BlockMC82)
package {
import flash.display.*;
public dynamic class BlockMC82 extends Sprite {
}
}//package
Section 436
//BlockMC83 (BlockMC83)
package {
import flash.display.*;
public dynamic class BlockMC83 extends Sprite {
}
}//package
Section 437
//BlockMC84 (BlockMC84)
package {
import flash.display.*;
public dynamic class BlockMC84 extends Sprite {
}
}//package
Section 438
//BlockMC85 (BlockMC85)
package {
import flash.display.*;
public dynamic class BlockMC85 extends Sprite {
}
}//package
Section 439
//BlockMC86 (BlockMC86)
package {
import flash.display.*;
public dynamic class BlockMC86 extends Sprite {
}
}//package
Section 440
//BlockMC87 (BlockMC87)
package {
import flash.display.*;
public dynamic class BlockMC87 extends Sprite {
}
}//package
Section 441
//BlockMC88 (BlockMC88)
package {
import flash.display.*;
public dynamic class BlockMC88 extends Sprite {
}
}//package
Section 442
//BlockMC89 (BlockMC89)
package {
import flash.display.*;
public dynamic class BlockMC89 extends Sprite {
}
}//package
Section 443
//BlockMC9 (BlockMC9)
package {
import flash.display.*;
public dynamic class BlockMC9 extends Sprite {
}
}//package
Section 444
//BlockMC90 (BlockMC90)
package {
import flash.display.*;
public dynamic class BlockMC90 extends Sprite {
}
}//package
Section 445
//BlockMC91 (BlockMC91)
package {
import flash.display.*;
public dynamic class BlockMC91 extends Sprite {
}
}//package
Section 446
//BlockMC92 (BlockMC92)
package {
import flash.display.*;
public dynamic class BlockMC92 extends Sprite {
}
}//package
Section 447
//BlockMC93 (BlockMC93)
package {
import flash.display.*;
public dynamic class BlockMC93 extends Sprite {
}
}//package
Section 448
//BlockMC94 (BlockMC94)
package {
import flash.display.*;
public dynamic class BlockMC94 extends Sprite {
}
}//package
Section 449
//BlockMC95 (BlockMC95)
package {
import flash.display.*;
public dynamic class BlockMC95 extends Sprite {
}
}//package
Section 450
//BlockMC96 (BlockMC96)
package {
import flash.display.*;
public dynamic class BlockMC96 extends Sprite {
}
}//package
Section 451
//BlockMC97 (BlockMC97)
package {
import flash.display.*;
public dynamic class BlockMC97 extends Sprite {
}
}//package
Section 452
//BlockMC98 (BlockMC98)
package {
import flash.display.*;
public dynamic class BlockMC98 extends Sprite {
}
}//package
Section 453
//BlockMC99 (BlockMC99)
package {
import flash.display.*;
public dynamic class BlockMC99 extends Sprite {
}
}//package
Section 454
//BossBulletHitMC (BossBulletHitMC)
package {
import flash.display.*;
public dynamic class BossBulletHitMC extends MovieClip {
}
}//package
Section 455
//BossBulletMC (BossBulletMC)
package {
import flash.display.*;
public dynamic class BossBulletMC extends MovieClip {
}
}//package
Section 456
//BossGraphicMC (BossGraphicMC)
package {
import flash.display.*;
public dynamic class BossGraphicMC extends Sprite {
}
}//package
Section 457
//BossMC (BossMC)
package {
import flash.display.*;
public dynamic class BossMC extends Sprite {
}
}//package
Section 458
//BossPlatformMC1 (BossPlatformMC1)
package {
import flash.display.*;
public dynamic class BossPlatformMC1 extends Sprite {
}
}//package
Section 459
//BossPlatformMC2 (BossPlatformMC2)
package {
import flash.display.*;
public dynamic class BossPlatformMC2 extends Sprite {
}
}//package
Section 460
//BossPlatformMC3 (BossPlatformMC3)
package {
import flash.display.*;
public dynamic class BossPlatformMC3 extends Sprite {
}
}//package
Section 461
//BossPlatformMC4 (BossPlatformMC4)
package {
import flash.display.*;
public dynamic class BossPlatformMC4 extends Sprite {
}
}//package
Section 462
//BossPlatformMC5 (BossPlatformMC5)
package {
import flash.display.*;
public dynamic class BossPlatformMC5 extends Sprite {
}
}//package
Section 463
//BossPlatformMC6 (BossPlatformMC6)
package {
import flash.display.*;
public dynamic class BossPlatformMC6 extends MovieClip {
public var wheels:MovieClip;
}
}//package
Section 464
//BossPlatformMC7 (BossPlatformMC7)
package {
import flash.display.*;
public dynamic class BossPlatformMC7 extends MovieClip {
public var wheels:MovieClip;
}
}//package
Section 465
//BossShadowMC (BossShadowMC)
package {
import flash.display.*;
public dynamic class BossShadowMC extends MovieClip {
}
}//package
Section 466
//BuildBlockMC (BuildBlockMC)
package {
import flash.display.*;
public dynamic class BuildBlockMC extends Sprite {
}
}//package
Section 467
//BuildCoverMC (BuildCoverMC)
package {
import flash.display.*;
public dynamic class BuildCoverMC extends Sprite {
}
}//package
Section 468
//BuildElectricBlockMC (BuildElectricBlockMC)
package {
import flash.display.*;
public dynamic class BuildElectricBlockMC extends Sprite {
}
}//package
Section 469
//BuildWhiteBlockMC (BuildWhiteBlockMC)
package {
import flash.display.*;
public dynamic class BuildWhiteBlockMC extends Sprite {
}
}//package
Section 470
//BulletHitMC1 (BulletHitMC1)
package {
import flash.display.*;
public dynamic class BulletHitMC1 extends MovieClip {
}
}//package
Section 471
//BulletHitMC2 (BulletHitMC2)
package {
import flash.display.*;
public dynamic class BulletHitMC2 extends MovieClip {
}
}//package
Section 472
//BulletHitMC3 (BulletHitMC3)
package {
import flash.display.*;
public dynamic class BulletHitMC3 extends MovieClip {
}
}//package
Section 473
//BulletHitMC4 (BulletHitMC4)
package {
import flash.display.*;
public dynamic class BulletHitMC4 extends MovieClip {
}
}//package
Section 474
//BulletMC (BulletMC)
package {
import flash.display.*;
public dynamic class BulletMC extends MovieClip {
}
}//package
Section 475
//BurnMC1 (BurnMC1)
package {
import flash.display.*;
public dynamic class BurnMC1 extends MovieClip {
}
}//package
Section 476
//BurnMC2 (BurnMC2)
package {
import flash.display.*;
public dynamic class BurnMC2 extends MovieClip {
}
}//package
Section 477
//BurnMC3 (BurnMC3)
package {
import flash.display.*;
public dynamic class BurnMC3 extends MovieClip {
}
}//package
Section 478
//BurnMC4 (BurnMC4)
package {
import flash.display.*;
public dynamic class BurnMC4 extends MovieClip {
}
}//package
Section 479
//CammoMC (CammoMC)
package {
import flash.display.*;
public dynamic class CammoMC extends MovieClip {
public function CammoMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 480
//CartridgeMC (CartridgeMC)
package {
import flash.display.*;
public dynamic class CartridgeMC extends MovieClip {
}
}//package
Section 481
//ChameleonMC (ChameleonMC)
package {
import flash.display.*;
public dynamic class ChameleonMC extends MovieClip {
public var body:MovieClip;
public function ChameleonMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 482
//ChaseFinishMC (ChaseFinishMC)
package {
import flash.display.*;
public dynamic class ChaseFinishMC extends MovieClip {
public function ChaseFinishMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 483
//ClearButton (ClearButton)
package {
import com.nitrome.highscore.*;
public dynamic class ClearButton extends ClearButton {
public function ClearButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 484
//CoinFadeMC (CoinFadeMC)
package {
import flash.display.*;
public dynamic class CoinFadeMC extends MovieClip {
public function CoinFadeMC(){
addFrameScript(20, frame21);
}
function frame21(){
parent.removeChild(this);
stop();
}
}
}//package
Section 485
//CoinMC (CoinMC)
package {
import flash.display.*;
public dynamic class CoinMC extends Sprite {
}
}//package
Section 486
//CowardGeneratorMC (CowardGeneratorMC)
package {
import flash.display.*;
public dynamic class CowardGeneratorMC extends MovieClip {
public function CowardGeneratorMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 487
//CowardMC (CowardMC)
package {
import flash.display.*;
public dynamic class CowardMC extends MovieClip {
public function CowardMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 488
//DeadStarMC (DeadStarMC)
package {
import flash.display.*;
public dynamic class DeadStarMC extends MovieClip {
}
}//package
Section 489
//DebrisMC0 (DebrisMC0)
package {
import flash.display.*;
public dynamic class DebrisMC0 extends MovieClip {
}
}//package
Section 490
//DebrisMC1 (DebrisMC1)
package {
import flash.display.*;
public dynamic class DebrisMC1 extends MovieClip {
}
}//package
Section 491
//DebrisMC10 (DebrisMC10)
package {
import flash.display.*;
public dynamic class DebrisMC10 extends MovieClip {
}
}//package
Section 492
//DebrisMC11 (DebrisMC11)
package {
import flash.display.*;
public dynamic class DebrisMC11 extends MovieClip {
}
}//package
Section 493
//DebrisMC12 (DebrisMC12)
package {
import flash.display.*;
public dynamic class DebrisMC12 extends MovieClip {
}
}//package
Section 494
//DebrisMC13 (DebrisMC13)
package {
import flash.display.*;
public dynamic class DebrisMC13 extends MovieClip {
}
}//package
Section 495
//DebrisMC14 (DebrisMC14)
package {
import flash.display.*;
public dynamic class DebrisMC14 extends MovieClip {
}
}//package
Section 496
//DebrisMC2 (DebrisMC2)
package {
import flash.display.*;
public dynamic class DebrisMC2 extends MovieClip {
}
}//package
Section 497
//DebrisMC3 (DebrisMC3)
package {
import flash.display.*;
public dynamic class DebrisMC3 extends MovieClip {
}
}//package
Section 498
//DebrisMC4 (DebrisMC4)
package {
import flash.display.*;
public dynamic class DebrisMC4 extends MovieClip {
}
}//package
Section 499
//DebrisMC5 (DebrisMC5)
package {
import flash.display.*;
public dynamic class DebrisMC5 extends MovieClip {
}
}//package
Section 500
//DebrisMC6 (DebrisMC6)
package {
import flash.display.*;
public dynamic class DebrisMC6 extends MovieClip {
}
}//package
Section 501
//DebrisMC7 (DebrisMC7)
package {
import flash.display.*;
public dynamic class DebrisMC7 extends MovieClip {
}
}//package
Section 502
//DebrisMC8 (DebrisMC8)
package {
import flash.display.*;
public dynamic class DebrisMC8 extends MovieClip {
}
}//package
Section 503
//DebrisMC9 (DebrisMC9)
package {
import flash.display.*;
public dynamic class DebrisMC9 extends MovieClip {
}
}//package
Section 504
//ElectricFinishMC (ElectricFinishMC)
package {
import flash.display.*;
public dynamic class ElectricFinishMC extends Sprite {
}
}//package
Section 505
//ElectricMC (ElectricMC)
package {
import flash.display.*;
public dynamic class ElectricMC extends MovieClip {
}
}//package
Section 506
//ElectricMC1 (ElectricMC1)
package {
import flash.display.*;
public dynamic class ElectricMC1 extends Sprite {
}
}//package
Section 507
//ElectricMC2 (ElectricMC2)
package {
import flash.display.*;
public dynamic class ElectricMC2 extends Sprite {
}
}//package
Section 508
//ElectricMC3 (ElectricMC3)
package {
import flash.display.*;
public dynamic class ElectricMC3 extends Sprite {
}
}//package
Section 509
//ElectricMC4 (ElectricMC4)
package {
import flash.display.*;
public dynamic class ElectricMC4 extends Sprite {
}
}//package
Section 510
//ElectricMC5 (ElectricMC5)
package {
import flash.display.*;
public dynamic class ElectricMC5 extends Sprite {
}
}//package
Section 511
//ElectricMC6 (ElectricMC6)
package {
import flash.display.*;
public dynamic class ElectricMC6 extends Sprite {
}
}//package
Section 512
//ElectricMC7 (ElectricMC7)
package {
import flash.display.*;
public dynamic class ElectricMC7 extends Sprite {
}
}//package
Section 513
//ElectricMC8 (ElectricMC8)
package {
import flash.display.*;
public dynamic class ElectricMC8 extends Sprite {
}
}//package
Section 514
//ElectricMC9 (ElectricMC9)
package {
import flash.display.*;
public dynamic class ElectricMC9 extends Sprite {
}
}//package
Section 515
//EmitterMC (EmitterMC)
package {
import flash.display.*;
public dynamic class EmitterMC extends MovieClip {
}
}//package
Section 516
//EntranceLiftMC (EntranceLiftMC)
package {
import flash.display.*;
public dynamic class EntranceLiftMC extends MovieClip {
public function EntranceLiftMC(){
addFrameScript(49, frame50, 114, frame115);
}
function frame115(){
stop();
if (parent != null){
parent.removeChild(this);
};
}
function frame50(){
NitromeGame.sound_manager.playSound("lift");
}
}
}//package
Section 517
//EvilMovingBlockMC (EvilMovingBlockMC)
package {
import flash.display.*;
public dynamic class EvilMovingBlockMC extends MovieClip {
public function EvilMovingBlockMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 518
//EyeGlowMC (EyeGlowMC)
package {
import flash.display.*;
public dynamic class EyeGlowMC extends Sprite {
}
}//package
Section 519
//FlyingGunMC (FlyingGunMC)
package {
import flash.display.*;
public dynamic class FlyingGunMC extends MovieClip {
public function FlyingGunMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 520
//ForceFieldMC1 (ForceFieldMC1)
package {
import flash.display.*;
public dynamic class ForceFieldMC1 extends MovieClip {
public var field:MovieClip;
public function ForceFieldMC1(){
addFrameScript(0, frame1, 19, frame20);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
}
}//package
Section 521
//ForceFieldMC2 (ForceFieldMC2)
package {
import flash.display.*;
public dynamic class ForceFieldMC2 extends MovieClip {
public var field:MovieClip;
public function ForceFieldMC2(){
addFrameScript(0, frame1, 19, frame20);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
}
}//package
Section 522
//FrontArrayMC (FrontArrayMC)
package {
import flash.display.*;
public dynamic class FrontArrayMC extends MovieClip {
}
}//package
Section 523
//Game (Game)
package {
import com.nitrome.engine.*;
import flash.display.*;
import flash.events.*;
import com.nitrome.engine_specific.*;
import flash.geom.*;
import com.nitrome.game.*;
import flash.ui.*;
import flash.utils.*;
public class Game {
public var smoke_angle:int;// = 0
public var actor_map:Array;
public var tags:Array;
public var effect_holder:Sprite;
public var game_paused:Boolean;
public var alert_col:ColorTransform;
public var start_msg:String;
public var smoke_hit_bitmap:BitmapSprite;
public var shaker:Sprite;
public var scanners:Array;
public var event_map:Array;
public var star_holder:Sprite;
public var scroller:Scroller;
public var path_map:Array;
public var completed:Boolean;
public var debug:Graphics;
public var current_event:Object;
public var tile_holder:Sprite;
public var cartridge_bitmap:BitmapSprite;
public var boss_bullet_hit_bitmap:BitmapSprite;
private var i:int;
private var j:int;
public var boss_level:Boolean;
public var alert_count:int;
public var sign_holder:Sprite;
public var burn_bitmap2:BitmapSprite;
public var burn_bitmap4:BitmapSprite;
public var bullet_layer_holder:Bitmap;
public var burn_bitmap1:BitmapSprite;
public var burn_bitmap3:BitmapSprite;
public var finish_count:int;
public var mouse_pressed:Boolean;
public var state:int;
public var msg_key_ready:Boolean;
public var shake_count:int;
public var fx_layer_holder:Bitmap;
public var block_map:Array;
public var sniper_shot_bitmap:BitmapSprite;
public var debug_stay:Graphics;
public var player_holder:Sprite;
public var stealths:Array;
public var fx:Array;
public var dead_star_holder:Sprite;
public var player:Player;
public var spider:HackedSpider;
public var back:MovieClip;
public var smokes:Array;
public var spawn_holder:Sprite;
public var light_holder:Sprite;
public var bullet_bitmap:BitmapSprite;
public var events:Array;
public var actors:Array;
public var stack_map:Array;
public var spider_death_count:int;
public var bullet_hit_bitmap_left:BitmapSprite;
public var grenade_cartridge_bitmap:BitmapSprite;
public var grenade_bitmap:BitmapSprite;
public var star_debris_bitmap:BitmapSprite;
public var canvas:Sprite;
public var debris_clips:Array;
public var debris:Array;
public var bullet_hit_bitmap_up:BitmapSprite;
public var level_data:Array;
public var god_mode:Boolean;
public var rope_holder:Shape;
public var encounters:Array;
public var fx_layer:BitmapData;
public var spawnage:Array;
public var monster_holder:Sprite;
public var background_type:int;
public var scan_holder:Sprite;
public var enemy_health_panel:MovieClip;
public var frame_count:int;
public var bullets:Array;
public var boss_bullet_bitmap:BitmapSprite;
public var alert_col_step:Number;
public var bullet_hit_bitmap_down:BitmapSprite;
public var scent_map:Array;
public var bullet_hit_bitmap_right:BitmapSprite;
public var screen_rect:Rectangle;
public var bullet_layer:BitmapData;
public var bang_bitmap2:BitmapSprite;
public var background_holder:Sprite;
public var bang_bitmap1:BitmapSprite;
public var start_y:int;
public var bang_bitmap3:BitmapSprite;
public var start_x:int;
public var alert_state:int;
public var scrolling:int;
public static const DAWN_SUN:int = 4;
public static const NIGHT_CLOUDS:int = 0;
public static const ACTIVE:int = 2;
public static const IN_PLAY:int = 1;
public static const CHAMELEON_DELAY:int = 500;
public static const DAWN:int = 5;
public static const ALERT_DELAY:int = 250;
public static const WIDTH:int = 550;
public static const HEIGHT:int = 400;
public static const SCALE:Number = 0.015625;
public static const CHAMELEON:int = 4;
public static const EMPTY:int = -1;
public static const SAFE_COL:int = 0x838383;
public static const EVENT_AREA:int = 115;
public static const LIFT_DELAY:int = 75;
public static const ALERT_COL_LIMIT:Number = 100;
public static const ELECTRIC_DELAY:int = 125;
public static const DANGER_COL:int = 0xFF0600;
public static const ALERT_COL_SPEED:Number = 3;
public static const scale:int = 64;
public static const DAWN_CLOUDS_SUN:int = 2;
public static const SPIDER_DEATH_DELAY:int = 15;
public static const DAWN_CLOUDS:int = 3;
public static const INACTIVE:int = 1;
public static const NIGHT:int = 1;
public static const GAME:int = 1;
public static const ONE80DIVIDEDBYPI:Number = 57.2957795130823;
public static var cache_xml:Boolean = true;
public function Game(_arg1:Sprite, _arg2:Sprite, _arg3:MovieClip){
smoke_angle = 0;
super();
level_data = new Array();
level_data["0ef21a7ed4c03fe6896031715bcc308e"] = <root>
<level width="60" height="36" start_x="4" start_y="33" compression="false" background="0" scroll="0"/>
<tiles values="0,506,0:3,506,0:2,506,0:2,506,0:2,506,0:29,506:2,0,506:2,0,506:2,0,506:2,0,506:2,0:3,506,0:3,506:3,498,0:8,611:2,590,591,778:6,0:17,506:5,621,0:8,532,0:2,506,0:3,506:4,620,0:7,611:2,0:25,506:4,533,0:8,495,506,0:2,506,0:3,506:5,498,0:6,611,590,0:27,506,533,0:13,506,0:3,506:6,620,0:5,611,0:28,621,0:14,506,0:15,590,591,0:26,533,0:15,506,0:3,506,0:2,506,0:2,506,0:32,533,0:8,619,506,0:6,506:2,585,586,585,586,585,586,585,506,621,0:24,619,506:6,621,0:8,532,506:3,0:9,585,586,585,586,585,506,0:24,495,506:6,533,0:8,532,506:4,0:12,586,585,506,0:25,778:2,0:6,591:2,0:2,591,0:4,506:4,0:11,586,585,506,620,0:37,506:10,0:9,506,0:2,506,0:23,534,0:4,506,0:3,506,0:3,506:11,0:40,506:13,0,506:6,0:16,591:2,491,0:16,492,591,0:3,506:12,631,0,506,632,506:4,0:16,591,491,611,0:16,611,492,0:6,506:8,615,614,0,506,626,616,506:3,0:17,611:2,0:16,611:2,0:6,506:4,0,506:2,631,628,630,0,506,629,627,632,506,0:18,611:2,0:16,611:2,0:3,506:8,0,615,614,610,613,0,506,612,609,626,616,0:17,491,611:2,0:16,611:2,0:3,506:9,628,630,629,627,0,506,628,630,629,627,0:17,611:2,590,591:4,0:5,591:4,0:8,506:9,610,613,612,609,0,506,610,613,612,609,0:17,611,590,591:5,0:5,591:4,0:8,506:9,629,627,628,630,0,506,629,627,628,630,0:41,506:9,612,609,610,613,0,506,612,609,610,613,0:41,506:8,0,628,630,629,627,0,506,628,630,629,627,0:3,506,0:37,506:8,0,610,613,612,609,0,506,610,613,612,609,0:3,506,0:37,506:8,0,629,627,628,630,0,506,629,627,628,630,0:3,506,0:22,520:2,521,520,521,520,521,520,521,520,521,520,521,520,0,506:8,0,612,609,610,613,0,506,612,609,610,613,0:3,506,0:22,520:2,506:6,521,506,0:2,506,520,0,506:8,0,628,630,629,627,506:2,628,630,629,627,506,0:2,506,0:22,506:10,0:2,506:2,0,506:8,0,610,613,612,609,506:2,610,613,612,609,506,0:2,506,0:11,506:3,0:8,506:15,0,506:7,0,629,627,628,630,506:2,629,627,628,630,506,0:2,506,0:11,506:3,0:7,506:16,0,506:7,0,612,609,610,613,506:2,612,609,610,613,506,0:2,506,0:4,506,520:2,521,520,521,520,521,520,506,520:2,521,520,521,520,521,520,506:23,0,628,630,629,627,0,506,628,630,629,627,0:3,506,0:4,506,520,506:11,520,506:27,0,610,613,612,609,0:2,610,613,612,609,0:3,506,0,506:27,0,506:3,0,506:12,0,629,627,628,630,506:2,629,627,628,630,0:3,506,0,506:26,0:3,506,0:3,506:11,0,612,609,610,613,506:2,612,609,610,613,0:3,506:28,0:7,506:11,0,628,630,626,624,506:2,625,614,629,627,506,0:2,506,0,506:3,0,506:3,0,506:7,0,506:3,0,506:3,0,506:3,0:6,506:3,0:4,506:4,0,610,613,607,506:4,608,612,609,506,0:2,506,0:43,506:2,0,506:11,0" id="0"/>
<tiles values="257:4,755,245,261:2,245,261:2,245,261:2,245,261:12,250,257:15,755,259,758,261,259,758,261,259,758,261,259,758,261,259,758,261,250,257,0,257:2,761,0:22,251,257:15,761,48I(3),0:3,173,0:2,173,0:7,251,257,0,257:2,761,0:14,246,242:7,252,257:15,756,242,240,0:8,239,240,0:3,251,257,0,257:2,761,51,0:13,251,257:25,761,0:8,251,756,242:3,252,257,0,257:2,761,260:2,0,48I(5),260,0,260:2,0:6,251,257:25,761,0:2,178,0:2,178,0:2,251,234:5,257,0,257:2,756,242:9,247,0:4,251,257:23,755,261,229,0:2,173,0:2,173,0:2,251,257:6,0,257,261:2,245,261:2,245,261:2,245,261,229,739,0:4,251,755,261:7,259,758,261:6,259,758,261:5,249,739,0:9,228,261,250,257:4,0:13,46I(5),0:4,251,761,0:23,46I(3),0:11,251,257:6,242:2,240,0:8,46I(5),0:4,251,761,0:23,46I(3),0:11,251,257:6,234:2,756,242,240,0:6,46I(5),0:4,251,761,0:11,246,242:3,241,757,242:5,247,737,0,246,247,0,246,242:3,247,0:2,228,261:2,250,257:5,234:2,761,0:6,46I(5),0:4,251,761,0:11,228,261:3,250,234:6,756,242:2,252,756,242,252,234:3,761,0:3,382,384,251,257:7,756,242:5,247,737,0:4,251,761,0:15,251,257,755,261,245,261:3,245,261:3,245,261:3,250,761,0:3,379,381,251,257:3,234:10,756,247,0:4,248,249,0:15,251,257,761,0:13,251,761,0:4,239,252,257:5,256,257:2,256,257:2,256,257:2,761,0:21,251,257,761,0:13,251,761,0:4,251,234,257:14,761,0:21,251,257,756,242:3,240,0:9,251,761,0:4,251,257:15,761,0:21,251,234:2,755,261:2,249,0:2,246,242,247,0:4,251,761,0:4,251,257:6,256,257:2,256,257:2,256,257:2,761,0:3,177,169:2,168,0:5,177,169:2,168,0:5,251,257:2,761,384,0:4,228,250,761,0:4,251,761,0:4,251,257:15,761,0:3,167,166:2,165,0:5,167,166:2,165,0:5,251,257:2,761,378,0:5,251,249,0:4,251,249,0:4,251,257:15,761,0:3,167,166:2,165,382,383:3,384,167,166:2,165,382,383:3,384,251,257:2,761,378,0:5,251,382,383,384,0:2,251,382,384,0:3,251,257:6,256,257:2,256,257:2,256,257:2,761,0:3,164,163:2,179,379,380:3,381,164,163:2,179,379,380:3,381,251,257:2,761,378,0:2,178,0,382,251,379,380,381,0:2,251,379,381,0:3,251,257:15,756,242:3,238,242:2,238,242:5,238,242:2,238,242:5,252,257:2,761,378,0:2,175,0,376,251,240,0:4,251,240,0:4,251,257:4,234:11,289,234:11,289,234:2,289,234:2,289,234:2,289,234:3,761,378,0:2,173,0,376,251,761,0:4,251,761,0:4,251,257:2,0,257:12,289,257:11,289,257:2,289,257:2,289,257:2,289,257:3,761,378,0:4,376,251,761,0:4,251,761,0:4,251,257:2,0,257:12,289,257:8,755,261,259,261,758,259,261,758,259,261,758,259,261,758,261,250,761,378,0:4,376,251,761,0:4,251,761,0:4,251,257:2,0,257:12,289,257:8,761,0:14,251,761,378,0,178,0:2,376,251,761,0:4,251,761,0:4,251,257:2,0,257:12,289,257:8,761,0,178,246,242:4,247,0,246,242:2,247,0,251,761,381,0,175,0:2,376,251,761,0:4,248,761,0:4,248,250,257,0,257:12,289,257:8,761,0,175,228,261:4,229,0,228,261:2,229,0,251,756,247,0,173,0:2,376,251,761,0:2,382,383,384,761,0:3,382,384,251,257,0,257:11,755,261,250,257:7,761,0,175,0:12,228,250,761,0:4,376,251,761,0:2,379,380,381,761,0:3,379,381,251,257,0,257:4,755,261,259,758,261:2,259,229,48I(1),228,261,259,758,261:2,259,758,249,0,175,0:13,251,761,0:4,376,251,761,0:4,239,761,0:4,239,252,257,0,257:4,761,0:8,260:3,0:7,173,0:3,170,174,162,0,170,174,162,0:3,228,229,0:2,178,0,376,251,761,0:4,251,761,0:4,251,257:2,0,257,261:3,229,0,246,242:4,247,739,246,242:2,247,0,246,242:3,247,738,47I(2):3,740,0:5,738,47I(2):3,740,0:3,175,0,376,251,761,0:4,251,761,0:4,251,257:2,0,257,0:5,228,261:4,229,46I(1),228,261:2,229,0,228,261:3,229,0:4,246,242,247,48I(2),246,242,247,0:7,173,0,376,251,761,0:4,228,229,0:4,251,257:2,0,257,0:11,46I(1),0:14,251,234,756,238,252,234,761,0:9,376,251,761,0:10,251,257:2,0:13,46I(1),0:14,251,257,234,289,234,257,761,0:9,379,251,761,0:10,251,257:4,241,238,757,242,241,238,757,242,241,238,247,737,246,238,757,242,241,238,757,242,241,238,757,242,241,238,252,257:2,289,257:2,756,241,238,757,242:4,241,238,757,252,761,382,384,0:8,251,257:2,0,257,234,289,234:3,289,234:3,289,756,242,252,289,234:3,289,234:3,289,234:3,289,234,257:2,289,257:2,234:2,289,234:6,289,234:2,761,379,381,246,238,757,241,238,757,241,238,252,257" id="1"/>
<tiles values="0:85,28:2,0:89,28,0,28,0:242,62,0:65,59,0:32,57F,59F,0,57F,0:61,28,0:2,61,0:230,28:2,0:97,28,0:2,28,0:5,28,0:2,28,0:192,28,0:31,61,0:266,28,0:48,110,0:239,57F,0,59F,0:9,28,0:24,28,0:2,110,0:10,110,0:67,28,0:3,28,0:146,154,0:18,59,0:5,59,0:9,61,0:143" id="2"/>
<tiles values="678,0,679,0:2,766,0:2,766,0:2,766,0:2,766,0:2,766,0:42,680,681,682,0:45,765,0:2,765,0:8,678,0,679,0:41,742,0:15,680,681,682,0:41,741,0:11,762,0,762,0,678,0,679,0:41,741,0:3,762,0:2,762,0:8,680,681,682,0:5,742,0:35,743,0:3,765,0:2,765,0:8,678,0,679,0:2,766,0:2,752,751:5,0:7,765,0:2,765,0:2,765,0:2,765,0:2,765,0:2,765,0:2,765,0:2,765,733,0:16,678,0,679,0:16,704:2,0:39,680,681,682,0:57,678,0,679,0:29,699,0:27,678,0,679,0:30,733,0:19,786,0:5,720,680,681,682,0:5,701:5,733,0:26,765,0:3,765,0:3,765,0,736,0:2,786,0:5,721,678,0,679,0:16,704:2,0:37,691,0,680,681,682,0:33,785,0:23,678,0,679,0:33,785,0:23,680,681,682,0:57,678,0,679,0:15,701,0:2,701,0:5,701,0:2,701,0:29,680,681,682,0:57,678,0,679,0:43,716,0:5,785,0:5,785,0,680,681,682,0:43,717,0:5,785,0:5,785,0,678,0,679,0:15,762,0:2,762,0:5,762,0:2,762,0:22,691,0:6,680,681,682,0:40,765,0:16,678,0,679,0:57,680,681,682,0:29,765,0:27,678,0,679,0:57,680,681,682,0:28,699,0,699,0:26,678,0,679,0:11,766,0:27,765,0:4,786,0:5,786,0:5,720,680,681,682,0:44,786,0:5,786,0:5,721,678,0,679,0:4,765,0:7,746,0:3,765,0:38,691,0,680,681,682,0:12,748,0:44,678,0,679,0:12,750,0:2,699,0,699,0:22,735,0:16,680,681,682,0:26,752,751:2,0,751:2,750,0:7,765,0:8,699:2,0:6,678,0,679,0:57,678,0,679,0:29,763,0:12,691,0:14,680,681,682,0,699,0:3,699,0:3,699,0:3,699,0:3,699,0:3,699,0:3,699,0:8,703,0:6,703,0:15,678,0,679,0:48,704,0:2,704,0:2,704,0:2" id="3"/>
<tiles values="0:487,8,0:30,10,7,12,10,7,12,0:943,10,7:3,12,0:239,8,0,8,0:36,10,7,12,0:8,10,7,12,0:236,8,0:4,10,7,12,0:15,8,0:136" id="4"/>
<tiles values="0:2160" id="5"/>
<tiles values="0:765,115:3,0:57,115:3,0:57,115,1,115,0:953,115:2,0,115,0:56,115:2,0,115,0:25,115:4,0:27,115:4,0:7,115:6,0:12,115:2,1,115,0:27,1,115:3,0:7,115:6,0:54,115,1,115:4,0:62" id="6"/>
<sign text="You'll need your wall slide technique to get around this area, just press the direction key towards the wall you're on and you will slow your slide making leaping from wall to wall easier.
I remember at the combat academy leaping up and down those walls. It was hard but I loved that training!
I wish I was down there with you, being a spy stuck behind a desk isn't much fun." n="886" layer="6" width="0" height="0" face="ninja" forced="false"/>
<sign text="This force field is powered by a generator. You can follow the pipes to the generator. One good hit with a ninja star should take it out." n="1992" layer="6" width="0" height="0" face="ninja" forced="false"/>
<sign text="These shock walls are electrified. Don't ever touch them! Don't even try to fire a rope into them, you'll get cooked to a crisp." n="2021" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="To get up walls quickly, fire the rope into the wall above you and push up. Repeat this quickly and you can zip up walls really fast!" n="2093" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="Restricted Area"/>
</root>
;
level_data["1abbb65bc5f285ca72c2189860849e70"] = <root>
<level width="54" height="32" start_x="4" start_y="24" compression="false" background="0" scroll="0"/>
<tiles values="586,585,0:52,564,563,0:7,778:23,0:22,586,585,0:6,778:2,506,778,0:42,564,563,0:6,778,506:2,778:2,0:7,778:2,0:32,586,585,0:6,778,509:12,778,0:32,564,563,0:6,778,506:12,778,0:32,586,585,0:7,778:10,506:2,778,0:32,564,563,0:6,586,509:12,585,0:32,586,585,0:6,564,506:9,778,506:2,778,0:32,564,563,0:6,564,506:2,778:11,0:32,586,585,0:6,778,509:9,778:4,0:32,564,563,0:6,778,506:9,778:2,0:34,586,585,0:6,778:8,506:2,778:2,0:34,564,563,0:6,778:8,506:2,778:2,0:34,586,585,0:6,778:4,506:6,778:2,0:32,588,587,564,563,0:8,778:2,509:6,778:2,0:32,570,565,586,585,0:8,778:2,506:2,778:6,0:27,778:4,0,588,587,564,563,0:8,778:2,506:2,778:7,0:7,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,778,642,570,565,586,585,0:7,778,509:4,778:7,0:7,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778,641,588,587,564,563,0:2,506:10,778,506,778:4,0:7,778,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,778,642,570,565,586,585,0:2,506:10,778,506,778:3,643,0:8,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778,641,588,587,564,563,0,778,509:10,778,506,778:2,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,778,0,570,565,586,585,0,778,564,563,564,563,0:3,778,506:2,778,506,778,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778,0,588,587,564,563,506:9,778,506:2,778,506,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,778,0,570,565,586,585,506,509:11,778,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778,0,588,587,564,563,0,778,0:8,778:4,0:11,641:2,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,637,778:2,570,565,586,585,0:25,642:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,637,778:3,588,587,564,563,0:25,641:2,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,637,778:4,570,565,586,585,0:25,642:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,637,778:5,588,587,564,563,0:26,641,642,641,642,641,642,641,642,0:14,778,0,570,565,586,585,0:26,642,641,642,641,642,641,642,641,0:16,588,587,564,563,0:26,641,642,641,642,641,642,641,642,0:16,570,565" id="0"/>
<tiles values="327,0,327:39,0:4,2:9,327,0,327:6,781,362,0:22,327:9,0:4,2,0:7,2,327,0,327:6,364,48I(0),0,322,327:29,0:4,2:7,0,2,327,0,327:3,370,327:2,359,0:2,333,332,330:2,332,330:2,332,330:2,782,327:2,370,327:30,0,327,313:2,370,327:2,51,0:12,361,327:2,370,313:26,327:4,0,327,313:2,370,327:2,321,0:12,55,327:2,370,313:26,327:8,370,327:2,341,339:3,374,339:2,374,339:2,374,0:2,322,327:2,370,327:30,0,327:6,364,0:12,368,327:33,0,327:6,364,0:12,368,327:33,0,327:6,341,0:2,339,372,339:2,372,339:2,372,339:2,361,327:33,0,327:3,370,327:2,364,0:9,382,384,327:4,370,327:30,0,327,313:2,370,327:2,359,0:9,376,378,327:4,370,313:26,327:6,313:2,370,327:2,382,383:6,384,0:2,376,378,327:4,370,313:2,370,313:5,370,313:6,370,313:6,370,313:3,327:4,0,327:3,370,327:2,379,380:6,381,0:2,376,378,313,327:3,370,327:2,313,327:5,313,327:6,313,327:6,313,327:7,0,327:6,324,334,382,384,0:6,376,378,327:7,370,327:5,370,327:6,370,327:6,370,327:4,0,327:2,0,327:7,353,376,378,0:6,379,381,327:7,313,327:5,313,327:6,313,327:6,313,327:4,0,327:2,0,327:7,353,376,378,0:2,382,383:4,384,327:12,781,330,782,327:4,781,330,782,327:5,382,384,48I(1),382,327,0,327:2,0,327:7,353,379,381,0:2,376,377:4,378,322,327:6,781,330,331:3,329,739,333,120,330:2,120,329,739,333,330:4,362,376,378,0,376,327,0,327:4,781,330:3,121,330,329,0:4,379,380:4,381,368,327:6,364,0:5,46,0:6,46,0:6,376,378,0,376,327,0,327:2,0,327,364,0:10,739,0:5,356,327:6,359,0:5,46,0:6,46,0:6,376,378,0,376,327,0,327:2,0,327,364,0:10,46I(0),0:5,356,781,331:2,120,331:2,782,0,321,0:3,737,0:6,737,0:6,376,378,0,376,327,0,327:2,0,327,364,0:10,46I(0),0:5,361,359,0:5,356,0,364,0:3,322,0:6,321,0:6,376,378,0,376,327,0,327:2,0,327,358,348:7,334,0:2,46I(0),0:12,361,363,329,0:2,325,357,324,360:4,323,358,348:3,323,0:2,376,378,0,376,327,0,327:2,0,327,0:8,359,0:2,46I(0),0:5,322,321,0:10,356,0:14,376,378,0,376,327,0,327:2,0:13,46I(0),0:5,356,364,0:5,322,0:4,356,0:14,376,378,0,379,327,0,327:4,348:10,334,737,325,360:4,357,358,360:5,357,324,348:3,357,321,0,324,360:10,323,379,381,0,739,327,0,327:2,0,327:11,358,348,357,327:11,781,331:5,329,0:16,46I(1),327,0,327:2,0,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327,353,0:22,46I(1),0:2,327:2,0,327:2,370,327:2,370,327:2,370,327:2,370,327:2,370,327:2,370,327:2,370,327:2,370,327,353,0:7,325,348:13,334,737,327:4,0,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327,353,0:7,368,327:13,358,348,327,0,327:2,0,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327,358,360:3,118,360:3,357,327:2,313,327:2,313,327:2,313,327:2,313,327:4,0,327:2,0,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:2,313,327:12,370,327:2,370,327:2,370,327:2,370,327:4,0,327" id="1"/>
<tiles values="0:79,28:7,0:304,21,0:2,21,0:2,21,0:47,21,0:2,21,0:2,21,0:155,28:3,0:344,109,0:2,109,0:147,37,0:33,28:2,0:30,103F:2,0:4,59,0:102,109:5,0:13,154,0:22,103,0:18,103,0:101,34,0:4,40,0:48,34,0:4,40,0:9,62,0:217" id="2"/>
<tiles values="678,0,679,0:51,678,0,679,0:6,745,744:12,746,0:31,680,681,682,0:19,749,0:28,678,0,679,678,0,679,0:4,686,0:4,767,0:2,767,0:2,767,0:3,749,0:28,680,681,682,680,681,682,0:4,687,0:14,749,0:28,678,0,679,678,0,679,0:4,687,0:14,749,0:28,680,681,682,680,681,682,0:4,694,0:14,749,0:28,678,0,679,678,0,679,0:19,749,0:28,680,681,682,680,681,682,0:19,749,0:28,678,0,679,678,0,679,0:9,767,0:2,767,0:6,749,0:28,680,681,682,680,681,682,0:4,686,0:14,749,0:28,678,0,679,678,0,679,0:4,687,0:14,749,0:28,680,681,682,680,681,682,0:4,687,0:14,749,0:28,678,0,679,678,0,679,0:4,694,0:12,686,0,749,0:28,680,681,682,680,681,682,0:17,687,0,749,0:4,767,0:5,767,0:6,767,0:6,767,0:3,678,0,679,678,0,679,0:17,687,0,749,0:28,680,681,682,680,681,682,0:11,745,744:5,694,751,750,0:28,678,0,679,678,0,679,0:11,743,0:13,766,0:3,766,0,766,0:4,766,0,766,0:4,766,0:4,680,681,682,680,681,682,0:2,767,0:3,767,0:4,742,0:36,678,0,679,678,0,679,0:48,680,681,682,680,681,682,0:19,766,0:3,766,0:24,678,0,679,678,0,679,0:48,680,681,682,680,681,682,0,767,0:2,767,0:2,767,0:24,766,0:3,766:2,0:3,766,0:6,678,0,679,678,0,679,0:48,680,681,682,678,0,679,0:48,678,0,679,680,681,682,0:32,766,0:3,766,0:2,766,0:3,766,0:4,680,681,682,678,0,679,686,0:24,766,0:4,766,0:17,678,0,679,678,0,679,687,0:47,678,0,679,680,681,682,687,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:25,680,681,682,678,0,679,687,0:47,678,0,679,680,681,682,687,0:47,678,0,679,678,0,679,687,0:47,680,681,682" id="3"/>
<tiles values="0:1169,10I(2),7:2,12I(2),0:3,8,0:142,10I(2),7,12I(2),0:17,8,0:101,8,0:4,8,0:48,8,0:4,8,0:227" id="4"/>
<tiles values="0:1728" id="5"/>
<tiles values="0:982,115,0:51,115:3,0:6,115:3,0:42,115:3,0:6,115:3,0:42,115,1,115,0:6,115:3,0:51,115:3,0:51,115:3,0:51,115,1,115,0:170,115:3,0:51,115:3,0:51,1,115:2,0:131" id="6"/>
<sign text="Taki, I've been poking around the towers tech server, I think Ive found you some help. You should be able to hack into these green type mines. They have no firewall on their control system.
Fire a rope into it to take control of it. Use the direction keys to move it. Try not to hit any walls. Try not to hit yourself! I bet you can use these mines to scout ahead or to take out enemies and generators.
Press the spacebar if you want to quit out of controlling a mine." n="1143" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Yuck, clone scientists are ahead. Victor Boshi is not a modest man, he only works with clones of himself, though it seems his famous hair restoring miracle drug doesnt work on them. Their shiny heads are creepy!
They have part titanium bodies to shield their valuable brains, so you can only stun them. When they are awake keep right out of their vision. They spy you and the alarm is automatically set off. Victor is a paranoid man. Just use stealth and well timed stuns." n="1314" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Clone 0067 to clone 0053. Your actions today were strange. Dr Boshi is our creator why do you not completely worship him as he has demanded? Why did you pull that face behind him. I did not understand why you stuck out your tongue and turned up the edges of your mouth. Please explain in more depth." n="1594" layer="6" width="0" height="0" face="clone" forced="false"/>
<msg text="Lab Area 1"/>
</root>
;
level_data["2e54c1b5c506672284acd573039a9f42"] = <root>
<level width="71" height="18" start_x="3" start_y="15" compression="false" background="1" scroll="0"/>
<tiles values="0:617,778,506:14,0:55,506:7,482,517,521,517,521,483,506:4,0:8,586,585,0:43,506,509,506,509,506,509,506,509,501,500,521,517,502,501,506,509,506,509,506,0:6,534,778,506:43,778,506:8,520,517,521,517,521,520,506:5,0:6,534,586,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,509,506,509,506,509,506,509,506,509,506,520,517,521,517,521,520,509,506,509,506:3,0:6,564,506:52,531,530,521,517,536,531,506:10,0:2,586,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506:15,509,506,509,506,509,506:11,509,506,509,506,509,506,509,479,517,521,517,521,478,506,509,506,509,506:6,0,532,564,506:65,0:2,506,0,778:3,0:4,778:2,0,506:56,0:3,506,0,778:2,0:12,684,685:2,683,0:11,684,685:2,683,0:12,684,685:2,683,0:14,684,685:2,683,0:3" id="0"/>
<tiles values="320:546,781,330:13,782,320:55,781,329,0:13,333,782,320:53,781,329,0:15,333,782,320:51,781,329,0:17,333,782,320:4,330:2,362,363,330:42,329,0:19,368,320:4,0:66,333,330:4,0:21,415,0:44,322,0,339,0:38,416,0:29,361,0,325,334,0:13,415,125,0:54,368,364,0,360:2,323,324,360:4,323,324,360:6,323,324,360:13,323,324,360:14,323,324,360:19,357,364,0,314,320,326:2,320:11,0:4,320:11,0:4,320:12,0:4,320:14,0:4,314,358,360" id="1"/>
<tiles values="0:981,26,0:87,125,0,125,0:4,125,0:6,58,155:5,125:2,155:6,125:2,155:8,125:2,155:5,125:2,155:3,0:4,30,0:83,157F,0:70" id="2"/>
<tiles values="0:547,767,0,767,0,767,0,767,0,767,0,767,0,767,0:127,767,0:15,767,0:77,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0:41,269,268,267,0:2,266,265,269,268,267,266,265,274,273,0:8,266,265,274,273,0:45,264,263,285,281,0,283,282,264,263,285,283,282,286,277,280,0:6,281,283,282,286,277,278,0:41,266,265,0,284,276,275,284,276,275,284,276,275,269,268,267,284,276,275,0:5,266,265,284,276,275,269,268,267,284,276,275,0:36,281,283,282,280,272,271,278,272,271,270,272,271,280,264,263,285,272,271,270,278,0:3,280,283,282,272,271,270,264,263,285,272,271,270,278,0:24,701:2,0:4,701:2,0:5,711,712,711,712,0:11,711,712,711,712,0:12,711,712,711,712,0:14,711,712,711,712,0:11,701:2,0:3,701,0:6,701,0:3,701,0:3,701,0:6,701,0:3,701,0:3,701,0:8,701,0:3,701,0:3,701,0:9,708" id="3"/>
<tiles values="0:1278" id="4"/>
<tiles values="0:618,11:13,0:57,11,0:13,11,0:55,11,0:15,11,0:53,11,0:17,11,0:5,11:48,0:17,11,0:70,11,0,12:3,9,0:65,11,0,11,0:2,9,0:42,12:24,0,11,0:2,9,0:70,12,0:71" id="5"/>
<tiles values="0:856,115:4,0:5,115:4,0:58,115:4,0:5,115:4,0:58,115:4,0:5,115:4,0:58,115,1,115:2,0:5,115:2,1,115,0:196" id="6"/>
<sign text="It's Akuma here. Doctor Victor Boshi is your target; his hyper addictive Cheap n chunky burger brand is dominating the international snack market. It's time the chunky range and the doctor are phased out.
This base has high level security so you'll be supported by a crack team of my samurai guard.
This should be a quick job, don't make a meal out of it... hur hur a meal? How appropriate eh? hur hur... Cough! Cough!... uurgh.. time I upgraded this body." n="1070" layer="6" width="0" height="0" face="akuma" forced="true"/>
<sign text="Takeshi, use the spacebar to close this message or to open a message wherever you see the msg icon. Press the pause icon (or the key "P") to see if you've missed any messages, some may be weak and hard to find." n="1080" layer="6" width="0" height="0" face="akuma" forced="true"/>
<msg text="The Dock"/>
</root>
;
level_data["3a7e858e962dd704ddd41ff95048b916"] = <root>
<level width="51" height="48" start_x="2" start_y="26" compression="false" background="5" scroll="0"/>
<tiles values="0:100,506,0:50,506,0:39,778,506,778,506,778:6,0,506,0:39,778,506:9,0,506,0:39,778,486:9,0,506,0:39,778,506,523,506:3,523,506:5,0:38,778:2,506,523,506:3,523,506,778:2,0:40,778:2,509,506,509:2,506,523,509,778,0:2,778,0:38,778:2,506:5,523,506,778,0:2,778,0:39,778,506,523,506:3,523,506,778,0:2,778,0:39,778,506,523,506:3,523,506,778,0:2,778,0:39,778,509,523,506,509:2,506,509,778,0:2,778,0:39,778,506,523,506:5,778,0:2,778,0:39,778,506,523,506:3,523,506,778,0:2,778,0:2,778,506:2,0,778,0,778,0:30,778,506,523,506:3,523,506,778,0:2,778,0,778:2,506:2,778:8,0:26,778,509,506,509:2,506,523,509,778,0:2,778,0,778:2,506:2,0,778,0,778,0:29,778:2,506:5,523,506,778,0:2,778,0,778:2,506:2,0:33,778:2,506,523,506:3,523,506,778,0:2,778,0,778:2,506:2,0:32,778:3,506,523,506:3,523,506,778,0:2,778,0,778:2,506:2,0:27,506:5,778,0,778,509,523,506,509:2,506,509,778,0:2,778,0,778:2,506:2,0:30,778,506,0:2,778,506,523,506:3,778,506,778,0:2,778,0,778:2,506:2,0:31,506,0:2,778,506,523,506:3,523,778:2,0:2,778,0,778:2,506:2,0:31,506,0:2,778,506,523,506:3,523,778:2,0:2,778,0,778:2,506:2,0:31,506,0,778:2,506:6,778,0:3,778,0,778:2,506:2,0:4,778,0:2,778,0:12,522,0:10,506,0,778:2,506,523,506:4,778,0:3,778,0,778:2,506:2,0:8,778,0:19,506,0:2,506,778:3,506,523,506:3,523,778,0:3,778,0,778:2,506:2,0:8,778,506:5,778,506:3,523,506:2,778,506:14,523,509:3,778,0:4,778,0,778:2,506:2,0:8,778:5,506,778,506,778,506,523,506:15,509,506,523,506:3,778,0:4,778,0,778:2,506:2,0:8,778,509:9,778,506:16,778:2,0:8,778,0,778:2,506:2,0:8,778,523:2,778:3,523:2,778:3,506:16,778:2,0:8,778,0,778:2,506:2,0:8,778,506:2,778,523,506:5,778,506:16,778:2,0:8,778,0,778:2,506:2,0:8,778,506:2,523,506,523,506:4,778:2,506:15,778:2,0:8,778,0,778:2,506:2,0:8,778,509:2,506,523,506:2,509,778,523,778:4,506:4,778,506:8,778:3,0:7,778,0,778:2,506:2,0:4,778,0:2,778:2,506:7,778,506:2,509,506,509,506,509,506,509,778,509,506,509,506,509,506,509,506,778:2,0:8,778,0,778:2,506:2,0:4,506:12,778,506:9,778,506:8,778:2,0:8,778,0,778:2,506:2,0:4,523:2,506,523,506,523,778:8,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,778:2,0:8,778,0,778,506:3,0:4,509,506,509,506:2,509,506,0:4,778:2,506:3,778,506:5,778:2,506:7,778:2,0:8,778,0,778,506:4,778,0,778,506:6,0:6,778,506:3,778,506:2,509,506,509,778,509,506,509,506,509,506:3,509,778,0:8,778,0,778,506:6,523,506:6,0:7,486:2,506,778,506,486:3,506,778,506,486:3,506:3,486:2,778,0:8,778,0,778,509,506,509,506,509,506,523,506,509,506:2,509,506,0:7,486:2,778:3,486:3,778:3,486:3,778:3,486:2,778,0:8,778,0,778,506:6,523,506:6,0:7,486:2,506:3,486:3,506:3,486:3,506:3,486:2,506,0:8,778,0,778,523:6,506,0:13,486:2,506:3,486:3,506:3,486:3,506:3,486:2,506,0:8,778,0,778,509,523,509:2,523,509,506,0:13,506:20,0:8,778,0,778,506,523,506:2,523,506:2,0:13,506:20,0:8,778,0,778,506,523,506:2,523,506:2,0:13,778,0:2,506,0:12,506:4,0:8,778,0:2,506:7,0:41,778,0:2,506:2,0:2,506,0,506,0:41,778,0" id="0"/>
<tiles values="314:5,318,290,288,314:4,318,314:22,289,288,410,313:10,327:3,314:5,318,290,288,314:4,318,289,314:22,288,410,313:10,327,0,327,314:5,318,290,288,314:4,318,289,314:22,288,410,412,370,313,370,313,370,313,370,313,370,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,397,403,400,403,400,403,400,403,400,403,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:9,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:9,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:11,327,314:5,318,290,288,314:4,318,314:23,288,391,779,0:7,392,783,327:3,314:5,318,290,288,314:4,318,314:23,288,391,780,0,311,0:2,311,0:2,410,412,327,0,327,314:5,318,290,288,314:4,318,314:23,288,391,779,0,301,0:2,301,0:2,410,313,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:7,410,313,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:7,410,313,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:2,311,0:2,311,0,410,313,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:2,301,0:2,301,0,410,313,327,0,327,314:5,318,290,288,314:4,318,314:23,288,410,779,0:7,410,313,327,0,327,370:5,310,309,303,327:4,318,314:23,288,410,779,0:7,410,313,327,0,327,370,0:11,318,314:23,288,410,779,0,311,0:2,311,0:2,410,313,327,0,327,370,0:3,327,317,298,297,327:4,318,314:23,288,391,779,0,301,0:2,301,0:2,410,313,327,0,327,370,0:3,370,318,313,288,314:4,318,314:23,288,391,780,0:7,391,313,327,0,327,370,0:3,370,318,290,288,314:4,318,314:17,290,306,309:4,303,391,779,0:7,410,313,327,0,327,370,0:3,370,318,290,288,314:4,318,314:17,290,0:5,290,410,779,0:2,311,0:2,311,0,410,313,327,0,327,370,0:3,370,318,290,288,314:4,318,314:17,290,304:3,297,0,290,410,779,0:2,301,0:2,301,0,410,313,327,0,327,370,0:3,370,318,313,288,314:4,318,314:21,290,0,290,410,779,0:7,410,313,327,0,327,370,0:3,370,318,290,288,314:4,318,314:21,290,0,290,410,779,0:7,410,313,327,0,327,370,0:3,370,318,290,288,314:4,318,314:21,290,0,290,391,779,295,294,784,174,287,293,0,410,313,327,0,327,370,0:3,370,318,290,288,317,298:2,297,318,290,309:20,290,0,290,391,780,295,0:4,295,0,391,313,327,0,327,370,0:3,370,318,313,288,318,314:2,288,310,309,290,309,290,309,290,309,290,309,290,309,290,309,290,309,290,309,290,309,290,309,290,0,290,404,405,739,0:6,410,313,327,0,327,370,0:3,370,318,290,288,318,314:2,288,420,0:4,419,178,418,0:19,46I(0),0:4,392,402,394,313,327,0,327,370,0:3,370,318,290,288,318,314:2,288,170,174:2,171,162,0,173,0,295,0:18,46I(0),0:4,410,313:3,327,0,327,370,0:3,370,318,290,288,318,314:2,288,178,418,0:8,311,0:16,46I(0),392,398,783,398,394,313:3,327,0,327,370,0:3,370,318,313,288,318,314:2,288,176,0:2,170,174,162,0:2,170,171,302,0:16,46I(0),410,370,313,370,313:4,327,0,327,370,0:3,370,318,290,288,318,314:2,288,176,0:2,295,0:2,178,0:2,419,301,0:16,737,410,313:7,327,0,327,370,0:3,370,318,290,288,318,314:2,288,175,0:5,172,0:3,373,0:16,375,404,403,400,403,400,403,400,403,327,0,327,370,0:3,370,318,290,288,318,314:2,288,172,0:2,295,0,295,173,0,311,0,294,784,174:14,287,293,0,317,298:6,327,0,327,370,0:3,370,318,313,288,310,309:2,303,173,0:7,302,0:20,318,292,291,292,291,292,291,327,0,327,370,0:3,370,318,290,288,418,0:11,302,0:19,295,318,316,315,316,315,316,315,327,0,327,370,0:3,370,318,290,288,0:2,295,0,295,0,294,784,174:2,287,293,301,295,0:18,295,318,314:6,327,0,327,370,0:3,370,318,290,288,0:6,317,298:4,297,373,0:3,375,373,0:4,375,373,0:4,375,373,0:2,375,318,314:6,327,0,327,297,0:3,311,310,306,303,0:4,295,0,318,314:4,299,297,0:3,311,418,0:4,311,418,0:4,311,418,0:2,48I(0),318,314:6,327,0,327,288,0:3,302,418,0:8,318,314:5,288,0:3,302,0:5,302,0:5,302,0:3,311,318,314:6,327,0,327,288,0:3,302,0:6,295,0:2,318,314:5,288,294,319,293,302,294,784,174,287,293,302,294,784,174,287,293,302,294,319,293,302,318,292,291,292,291,292,291,327,0,327,288,0:3,301,0:6,295,0,417,318,314:5,288,0:2,419,302,418,0:3,419,302,418,0:3,419,302,418,0:2,302,318,316,315,316,315,316,315,327,0,327,288,0:6,317,298:2,290,298,290,298,300,314:5,288,0:3,302,0:5,302,0:5,302,0:3,302,318,314:6,327,0,327,288,0:6,318,314:12,288,0:3,302,0:5,302,0:5,302,0:3,302,318,314:6,327,0,327,288,0:6,318,314:12,288,0:3,301,0:5,301,0:5,301,0:3,302,318,314:6,327,0,327,288,0:6,318,314:12,288,317,298:18,297,318,314:6,327,0,327,288,317,290,298:2,290,297,296,314:12,288,318,314:18,288,318,314:6,327,0,327,288,318,317,298:2,297,288,296,314:12,288,318,314:18,288,318,314:6,327,0,327" id="1"/>
<tiles values="0:355,62,0:41,28,0:2,28,0:96,78F,0:104,28,0:2,28,0:199,28,0:2,28,0:2,86F,0:9,28:7,0:77,78F,0:104,28,0:2,28,0:37,28:4,0:157,28:2,0:2,28:2,0:52,86F,0:99,61,0:18,28,0:3,28,0:3,61,0:96,28,0:5,28,0:146,28,0,28,0:5,18:16,0:34,82F,0:16,82F,0:23,78F,0:27,28,0:20,28,0,28,0:52,74F,0:48,28,0:8,19:3,0:2,19:4,0:2,19:4,0:2,19:2,0:84,28,0:3,28:3,0:3,28:3,0:3,61,0:122,89,0:297" id="2"/>
<tiles values="0:48,678,0,679,0:48,680,681,682,0:48,678,0,679,0:39,766,0,766,0,766,0,766,0,766,680,681,682,0:48,678,0,679,0:48,678,0,679,0:48,678,0,679,0:48,680,681,682,0:48,678,0,679,0:40,764,0:2,764,0:4,678,0,679,0:48,680,681,682,0:48,678,0,679,0:48,680,681,682,0:41,764,0:2,764,0:3,678,0,679,684,685:3,683,0:43,680,681,682,686,0:3,686,0:43,678,0,679,687,0:3,687,0:35,764,0:7,680,681,682,687,0:3,687,0:35,764,0:2,764,0:4,678,0,679,687,0:3,687,0:43,680,681,682,687,0:3,687,0,702,0:41,678,0,679,687,0:3,687,0:43,680,681,682,687,0:3,687,0,702,0:34,764,0:2,764,0:3,678,0,679,687,0:3,687,0:43,680,681,682,687,0:3,687,0,702,0:41,678,0,679,687,0:3,687,0:35,764,0:3,764,0:3,680,681,682,687,0:3,687,0,702,0:7,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0:11,678,0,679,687,0:3,687,0:43,680,681,682,687,0:3,687,0,702,0:41,678,0,679,687,0:3,687,0:43,680,681,682,687,0:3,687,0,702,0:15,734,0:25,678,0,679,687,0:3,687,0:10,767,0,767,0:23,763,0,763,0:4,680,681,682,687,0:3,687,0,702,0:33,744:2,746,0:5,678,0,679,687,0:3,687,0:17,764,0:19,749,0:5,680,681,682,687,0:3,687,0,702,0:35,748,0:5,678,0,679,687,0:3,687,0:6,691,0:30,749,0:5,680,681,682,687,0:3,687,0,702,0:35,749,0:5,678,0,679,687,0:3,687,0:37,749,0:5,680,681,682,694,0:3,694,0,702,0:7,691,0:4,691,764,0:19,691,0,748,0:5,678,0,679,0:41,751,750,0:5,680,681,682,0:48,678,0,679,0:4,734,0:19,764,0:5,764,0:5,764,0:11,680,681,682,0:48,678,0,679,0:8,691,0:39,680,681,682,0:10,764,0,764,0:35,678,0,679,0:20,764,0:3,764,0:5,764,0:5,764,0:3,764,0:7,680,681,682,0:48,678,0,679,0:48,680,681,682,0,702,764,0:2,764,702,0:41,678,0,679" id="3"/>
<tiles values="0:497,11,0:7,11,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,6,0:7,6,0:42,9,0:7,9,0:220,11,0:50,6,0:50,6,0:50,6,0:50,6,0:9,10,7:16,12,0:23,9,0:103,10,7:4,12,0:592" id="4"/>
<tiles values="0:2448" id="5"/>
<tiles values="0:2001,115:2,0:49,115:2,0:49,115,1,0:38,115:3,0:48,115:3,0:48,115:3,0:48,115,1,115,0:149" id="6"/>
<sign text="Be careful around these lasers Takeshi, they look pretty deadly. Who builds a building with cutting lasers mounted everywhere anyway? This place is too weird." n="2104" layer="6" width="0" height="0" face="ninja" forced="false"/>
<sign text="Takeshi you're okay! I could hear that battle across the building. I saw you on the security cameras, Merlock has gone bonkers, really nuts. You were so brave!
He's locked down the building. You need to keep looking for Boshi while I work out how we both get out of here." n="2297" layer="6" width="0" height="0" face="ninja" forced="true"/>
<msg text="Storage Basement"/>
</root>
;
level_data["3ec5828132feedd8272fe38dae09737c"] = <root>
<level width="43" height="36" start_x="3" start_y="10" compression="false" background="5" scroll="0"/>
<tiles values="0:15,778:2,480,0:2,611:2,0:19,778,0:16,778:3,0:2,611:2,0:19,778,0:2,778,0:13,778:3,0:2,611:2,0:19,778,0:2,778:2,0:12,778:3,591:2,589,611,0:19,778,0:2,778,0:13,778:3,591:3,589,0:19,778,0:2,778,0:13,778:2,533,0:23,778,0:2,778,0:13,778,533,0:24,778,0:2,778,0:13,660,0:25,778,0:2,778,0:39,778,0:2,778,0:39,778,0:2,778,506:6,778:3,533,0:29,778,0:2,778,0:5,778:3,533,0:30,778,0:2,778,0:5,778:2,533,0:31,778,0:2,778,0:5,778,533,0:32,778,0:2,778,0:2,778:3,533,0:33,778,0:2,778,0:3,778:2,0:34,778,0:2,778,0:3,778:2,0:20,777:6,0:8,778,0:2,778,0:3,778:2,0:20,777:6,0:8,778,0:2,778,0:3,778,511,0:12,777:4,0:4,777:6,0:8,778,0:2,778,0:3,778:2,0:5,777:3,0:4,777:4,0:18,778,0:2,778,0:3,778:2,0:5,777:3,0:4,777:4,0:14,777:2,0:2,778,0:2,778,0:2,778:3,480,0:4,777:3,0:4,777:4,0:14,777:2,0:2,778,0:2,778,0:10,777:3,0:9,777:3,0,777:3,0,777:3,0:2,777:2,0:2,778,0:2,778,0:22,777:3,0,777:3,0,777:3,0:2,777:2,0:2,778,0:2,778,0:35,777:2,0:2,778,0:2,778,0:22,777:3,0,777:3,0,777:3,0:2,777:2,0:2,778,0:2,778,0:22,777:3,0,777:3,0,777:3,0:2,777:2,0:2,778,0:2,778,0:22,777:3,0,777:3,0,777:3,0:2,777:2,0:2,778,0:2,778,0:39,778,0:2,778,0:22,777:3,0,777:3,0:10,778,0:2,778,0:10,777,0:11,777:3,0,777:3,0:8,532,778:3,0:12,777:3,0:23,532,778,0:15,777:3,0:22,532,778,0:2,778,0:13,777:3,0:18,659:3,532,778:2,0:2,778,0:13,777:3,0:20,648,778:3,0:2,778,0:13,777:3,0:20,532,778:3,0:2,778,0" id="0"/>
<tiles values="327:3,314:11,288,0:11,175,0:12,318,327,0,327:4,314:11,288,0:11,175,0:12,318,327,0,327:4,314:11,288,0:11,175,0:12,318,327,0,327:2,0,327,314:11,288,0:11,175,0:12,318,327,0,327:2,0,327,314:11,288,0:11,175,0:12,318,327,0,327:2,0,327,314:11,288,0:11,175,0:12,318,327,0,327:2,0,327,314:11,288,170,174:9,162,175,0:12,318,327,0,327:2,0,327,309:11,288,0:10,419,175,0:12,318,327,0,327:2,0,327,290,314,290,314,290,314,290,314,290,314,290,288,0:11,175,0:12,318,327,0,327:2,0,327,290,309,290,309,290,309,290,309,290,309,290,303,0:11,175,0:12,318,327,0,327:2,0:25,175,0:12,318,327,0,327:4,298:4,297,170,174:13,162,0:3,175,0:12,318,327,0,327:2,0,327,314:4,288,418,0:17,175,0:12,318,327,0,327:2,0,327,309:3,306,303,295,0,170,174:3,162,0:11,175,0:12,318,327,0,327:2,0,327,304,297,0:9,178,0:11,175,0:12,318,327,0,327:2,0,327,314,288,0:9,175,0:11,175,420,0:11,318,327,0,327:2,0,327,314,288,0:9,172,0:10,417,173,177,169:4,168,0:6,318,327,0,327:2,0,327,314,288,0:9,173,170,174:10,162,167,166:4,165,0:6,318,327,0,327:2,0,327,314,288,0:12,170,121,177,169:2,168,0:4,164,163:4,179,420,0:4,417,318,327,0,327:2,0,327,314,288,0:7,177,169,168,0:4,167,166:2,165,170,174:15,318,327,0,327:2,0,327,314,288,0:7,167,166,165,0:2,178,0,167,166:2,165,0:13,178,169:2,318,327,0,327:2,0,327,306,303,0:6,417,167,166,165,0:2,175,0,164,163:2,179,0,177,169,168,0,177,169,168,0,177,169,168,0,175,166:2,318,327,0,327:2,0,327,298:2,290,304,290,298,290,298,297,164,163,179,0:2,176,0:6,167,166,165,0,167,166,165,0,167,166,165,0,175,166:2,318,327,0,327:2,0,327,314:8,288,418,0:4,172,170,174:2,739,162,0,164,163,179,0,164,163,179,0,164,163,179,0,175,166:2,318,327,0,327:2,0,327,314:8,288,0:5,176,0:3,46I(1),0:14,175,166:2,318,327,0,327:2,0,327,314:8,288,0:5,176,0:3,46I(1),0:2,177,169,168,0,177,169,168,0,177,169,168,0,175,166:2,318,327:4,0,327,314:8,288,0:5,173,0:3,46I(1),0:2,167,166,165,0,167,166,165,0,167,166,165,0,175,166:2,318,327,0,327:2,0,327,314:8,288,0:9,46I(1),0:2,164,163,179,0,164,163,179,0,164,163,179,0,173,163:2,318,327,0,327:4,314:8,288,420,0:8,46I(1),0:14,295,739,295,318,327,0,327:2,0,327,314:8,288,174:9,737,162,0,177,169,168,0,177,169,168,0,170,174,162,0:2,46I(1),0,310,327,0,327:2,0,327,314:8,288,177,169,168,0:6,419,178,0,167,166,165,0,167,166,165,0:2,48I(1),295,0:2,46I(1),0:4,327:4,314:8,288,167,166,165,0:7,175,0,164,163,179,0,164,163,179,0,170,174,162,0:2,46I(1),0,317,327:6,314:8,288,167,166,165,0:7,175,0:13,295,737,295,318,327,0,327:4,314:8,288,167,166,165,0:7,173,170,174:9,162,0,170,174:2,162,318,327,0,327:4,314:8,288,167,166,165,0:7,172,0:15,419,318,327,0,327:4,314:8,288,167,166,165,0:7,173,170,174:14,162,318,327,0,327" id="1"/>
<tiles values="0:319,65,0:111,154,0:92,61,0:12,65,0:165,28,0:2,63,0:6,28,0:169,108F,0,28,0:3,28,0:3,28,0,109F,0:12,28,0,63,0:2,63,28,0:7,79:3,0:132,61,0,36F,0,28,0,39F,0,28,0:160,61,0:2,28,0,33F,0,28,0,42F,0,28,0:93,62,0:67,107F,0,28,0:3,28,0:3,28,0,110F,0:73,28:3,0:10,28:3,0:47" id="2"/>
<tiles values="678,0,679,0:37,678,0,679,678,0,679,0:37,678,0,679,680,681,682,0:11,790,0:25,680,681,682,678,0,679,0:37,678,0,679,680,681,682,0:11,790,0:25,680,681,682,678,0,679,0:37,678,0,679,680,681,682,0:12,767,0,767,0,767,0,767,0,767,0,767,0:14,680,681,682,678,0,679,767,0,767,0,767,0,767,0,767,0,767,0:26,678,0,679,680,681,682,0:37,680,681,682,678,0,679,0:37,678,0,679,678,0,679,0:37,680,681,682,680,681,682,0:12,767,0,767,0,767,0,767,0:4,736,0:13,678,0,679,678,0,679,0:37,680,681,682,678,0,679,0:2,767,0,767,0:32,678,0,679,680,681,682,0:37,680,681,682,678,0,679,0:37,678,0,679,680,681,682,0:37,680,681,682,678,0,679,0:11,699,0,699,0,699,0,699,0,699,0,699,0,699,0:13,678,0,679,680,681,682,0:37,680,681,682,678,0,679,0:11,734,0:8,699,0:3,699,0:3,699,0:3,699,0:3,789,678,0,679,680,681,682,0:37,680,681,682,678,0,679,0:21,684,685,683,0,684,685,683,0,684,685,683,0:4,789,678,0,679,680,681,682,0:2,764,0,764,0,764,0,764,0:28,680,681,682,678,0,679,0:36,789,678,0,679,680,681,682,0:8,790,0:28,680,681,682,678,0,679,0:36,789,678,0,679,680,681,682,0:8,790,0:28,680,681,682,678,0,679,0:37,678,0,679,680,681,682,0:8,790,0:24,767,0,767,0,680,681,682,678,0,679,0:9,699,0,699,0,699,0,699,0,699,0,699,0:17,678,0,679,680,681,682,0:8,790,0,689,688,0:25,678,0,679,678,0,679,0:21,684,685,683,0,684,685,683,0:2,741,0:6,680,681,682,680,681,682,0:8,790,0:21,743,0:2,764,0,764,0,678,0,679,678,0,679,0:24,699,0:3,699,0,752,751:3,750,0:2,678,0,679,680,681,682,0:8,790,0:28,680,681,682,678,0,679,0:37,678,0,679" id="3"/>
<tiles values="0:316,5:11,0:32,5:11,0:33,5:10,0:33,5:6,0:80,5:6,0:37,5:10,0:22,5:3,0:3,5:3,0,5:11,0:22,5:9,0,5:11,0:22,5:9,0,5:11,0:22,5:6,0:37,5:6,0:37,5:6,0:37,5:7,0:11,10,7:11,11,0:12,5:7,0:11,6,0:11,6,0:30,6,0:11,6,0:30,6,0:11,6,0:30,6,0:3,10,7:3,11,0:3,6,0:30,6,0:3,6,0:3,6,0:3,6,0:30,6,0:3,6,0:3,6,0:3,6,0:30,6,0:3,6,0:3,6,0:3,6,0:30,6,0:3,9,7:3,12,0:3,6,0:30,6,0:11,6,0:30,6,0:11,6,0:30,6,0:11,6,0:30,9,7:11,12,0:136" id="4"/>
<tiles values="0:1548" id="5"/>
<tiles values="0:440,115,1,115:3,0:605,115:3,0:40,115:3,0:40,115:3,0:39,115:4,0:39,115:2,1,115,0:323" id="6"/>
<sign text="All the map says is a simian unit test area. I've seen some very advanced stealth tech delivered lately. If someone's using stealth tech then activate yours, you should be able to interrupt their camouflage. Your ninja stars may have no effect on stealthed machines." n="441" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Whoa, I'm reading upgraded security robots all over the building. They've had their tracking beams replaced with cutting lasers. They've no reason to drop their shields now. Surely there must be some way of destroying them." n="1223" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="Simian Unit Test Area"/>
</root>
;
level_data["4b163b5e507043dec2691784e368abc9"] = <root>
<level width="61" height="56" start_x="28" start_y="26" compression="false" background="2" scroll="0"/>
<tiles values="0:59,509,0,778,660,662,0,662,0:50,662,0:3,509,0,660,0,662,0,662,0:50,662,0:3,509,0:60,509,0:21,492,591:4,491,0:7,492,591:3,491,0:21,509,0:21,611,0:4,611,0:7,611,0:3,611,0:21,509,0:22,591:4,0:2,591:5,0:27,509,0:8,492,591:9,0:4,591:4,0:2,591:5,778:9,0:18,509,0:8,611,492,591:8,0:8,611,590,591:5,778:4,641,642,641,778,0:19,509,0:8,611:2,0:16,611,0:3,492,591:2,778:4,642,641,642,778,0:19,509,0:18,611:2,590,591:5,589,0:3,611,0,577,778:4,641,642,641,778,0:19,509,0:10,778,591:7,589,611,0:10,611,0,559,778:4,642,641,642,778:2,620,0:17,509,0:11,591:4,491,0:3,611,0:10,611,0,532,778:4,641,642,641,778:3,620,0:12,662,0:3,509,0:12,591:2,491,611,0:3,611,0:2,498,0:7,611,619,778:5,638,641,642,778:4,620,0:11,662,0:2,495,509,0:12,778,535,611:2,0:2,668,0:4,591:3,491,0:4,778:7,638,641,778:5,620,0:10,662,0,619,778,509,0:11,778:9,0:3,591:2,491,611,0:4,778:8,638,778:20,509,0:12,778:9,0:2,498,0,611:2,492,591:2,0,778:19,638,642,640,642,640,642,640,642,640,642,509,0:11,778:3,509,778:8,0:6,778:22,638,642,640,642,640,642,640,642,640,509,0:11,506,778,506:10,778,0:7,509,642,0:2,778:17,638,642,640,642,640,642,640,642,509,0:7,644,0:4,778,506:10,778,0:7,509,641,0:2,778:18,638,642,640,642,640,642,640,509,0:7,675,519,0:3,778,506:10,0:8,509,642,0:2,778:19,638,642,640,642,640,642,509,0:7,642,641,778,641,642,641,778:7,506:3,0:8,509,641,0:2,778:20,638,642,640,642,640,509,0:7,778:13,506:3,778,0:7,509,642,0:2,778:21,638,642,640,642,509,0:7,642,641,644,778:3,506:14,778,506,0:2,509,641,0:2,778:22,638,642,640,509,0:7,641,642,641,644,778:2,506:16,0:2,509,642,0:2,778:23,638,642,509,0:7,642,641,642,641,644,778,506:16,778:2,509,641,0:2,778,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,644,778:7,638,509,0:7,641,642,641,642,641,644,506:17,778,509,642,0:2,778,640,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,644,778:7,509,0:7,642,641,642,641,642,641,0:17,778:2,0:3,778,642,640,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,644,778:6,509,0:7,641,642,641,642,641,642,778:17,0,778,0:3,778,640,642,640,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,640,642,778:4,509,0:7,642,641,642,641,642,641,778:17,0,778,0:3,778,642,640,642,640,778,0:3,642,640,644,778,638,640,642,640,642,640,642,640,778:4,509,0:7,641,642,641,642,641,642,778:2,522:14,778,0,778,0:3,778,640,642,640,642,778,0:3,640,642,640,644,778,638,640,642,640,642,640,642,640,642,640,642,509,0:7,642,641,642,641,642,641,778:2,522:15,0,778,0:3,778,642,640,642,640,642,640,642,640,642,640,642,640,642,640,778:8,638,640,509,0:7,641,642,641,642,641,642,778,522:16,0,778,0:3,778,640,642,640,642,640,642,640,642,640,642,640,642,640,642,640,778:8,638,509,0:7,642,641,642,641,642,641,778,522:16,0,778,0:4,638,640,642,640,642,640,642,640,642,640,642,640,642,640,642,640,644,778:7,509,0:7,641,642,641,642,641,642,778:4,522:13,0:6,778,638,640,642,640,642,640,642,640,642,640,642,640,642,640,642,640,644,778:6,509,0:7,642,641,642,641,642,641,778:2,522:16,0:5,644,778,642,640,642,640,642,640,0:2,642,640,642,640,642,640,642,640,644,778:5,509,0:7,641,642,641,642,641,642,778,522:16,778,0:5,640,644,778:6,0:2,640,642,640,642,640,642,640,778,640,644,778:4,509,0:7,642,641,642,641,642,641,778:2,522:13,778:3,0:5,642,640,0,778:6,640,638,640,642,640,642,640,0:2,642,640,644,778:2,0,509,0:7,641,642,641,642,641,642,778:2,522:15,778,0:5,640,642,0,778,640,642,640,642,640,644,778,638,640,642,640,642,0,778,640,642,640,644,778,0,509,0:7,642,641,642,641,642,641,778,522:17,778:3,638,640,642,640,642,778,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,640,642,640,0,778,509,0:7,641,642,641,642,641,642,778:3,522:15,778:4,638,640,642,640,642,640,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,640,642,0,778,509,0:7,642,641,642,641,642,641,522:18,778:5,638,640,642,640,642,640,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,640,0,778,509,0:7,641,642,641,642,641,642,522:16,778:8,638,640,642,640,642,640,642,640,642,640,642,640,644,778,638,640,642,640,642,640,642,0,778,509,0:7,642,641,642,641,642,641,778:4,522,778:13,0:4,640,778:8,642,640,642,640,642,640,644,640,778:8,509,0:7,641,642,641,642,641,642,778:18,0:4,642,778:8,640,642,640,642,640,642,640,642,778:8,509,0:7,642,641,642,641,642,641,0:23,778:4,638,640,642,640,642,640,642,640,642,640,642,640,642,640,778:6,509,0:7,641,642,641,642,641,642,0:23,778:5,638,640,642,640,642,640,642,640,642,640,642,640,642,778:6,509,0:7,642,641,642,641,642,641,0:23,778:24,509,0:7,778,638,641,642,641,642,0:23,778:24,509,0:7,778:2,638,641,642,641,0:23,644,778:23,509,0:7,778:3,638,641,642,0:23,640,642,640,642,778:20,509,0:11,778,0:24,640:2,642,640,642:2,778:18,509,0:36,778:21,0:3,509,0:7,638,640,0:28,778:19,0:4,509,0:8,654,0:29,778:18,0:4,509,0:60,509,0" id="0"/>
<tiles values="380:11,381,404,400:44,396,327,0,327,162,0:56,410,327,0,327,383:6,384,0:47,339:3,410,327,0,327,380:6,381,0:50,410,327,0,327,393,0:56,410,327,0,327,779,0:56,410,327,0,327,779,0:16,317,304,298,297,0:4,317,297,0:5,317,297,382,383:18,384,0:3,410,327,0,327,779,0:16,318,314:2,288,0:4,310,303,0:5,310,303,379,380:18,381,0:3,410,327,0,327,779,0:16,318,314:2,288,0:18,382,384,0:16,410,327,0,327,405,0:16,310,306,121,303,0:18,376,378,0:16,410,327,0,327,382,383:8,384,0:29,376,378,0:16,410,327,0,327,379,380:8,381,0:29,376,378,0:16,410,327,0,327,298:10,297,0:7,295,0:20,376,378,0:13,339:3,410,327,0,327,314:10,288,295,0:6,317,298:2,297,0:17,376,378,0:16,410,327,0,327,314:10,288,0:7,318,314:2,288,0:7,311,0:9,376,378,0:16,410,327,0,327,314:10,288,0:7,318,314:2,288,0:7,302,0:9,379,381,0:16,410,327,0,327,314:10,288,0:4,295,0:2,318,314:2,288,0:7,302,0:4,382,384,382,383:3,384,0:16,410,327,0,327,314:10,290,297,0:2,294,319:2,290:2,309:2,290:2,298:6,290,0,290,298:2,376,378,379,380:3,381,0:16,410,327,0,327,314:11,288,0:10,318,314:6,288,0,318,314:2,376,378,0:16,324,360,323,0:2,410,327,0,327,314:11,288,0,294,293,0,294,293,0,294,293,0,318,314:6,288,0,318,314:2,376,378,0:21,410,327,0,327,314:11,288,0:10,318,314:6,288,0,318,314:2,376,378,0:21,410,327,0,327,314:5,397,400:2,121,400:2,290,298:6,297,0:3,296,314:6,288,0,318,314:2,376,378,0:21,410,327,0,327,314:5,779,0:5,302,309:5,306,303,0:3,310,306,309:4,290,288,0,318,314:2,376,378,0:10,392,393,0:9,410,327,0,327,314:5,779,0:5,301,0:12,131,0:3,318,288,0,318,314:2,376,378,0:10,404,405,0:9,410,327,0,327,314:5,780,0:5,136,0:12,131,0:3,318,288,0,318,314:2,376,378,0:10,363,362,0:9,410,327,0,327,314:5,779,0:18,131,0:3,310,303,0,302,314:2,376,378,0:21,410,327,0,327,314:5,779,0:18,131,0:6,318,314:2,376,378,0:21,410,327,0,327,314:5,780,0,339:3,0,134,290,298:16,297,327,302,314:2,376,378,0:21,410,327,0,327,314:5,779,135F,0:4,392,781,331:15,362,288,0,318,314:2,376,378,0:17,392,783,393,0,410,327,0,327,314:5,779,0,135F,0:3,410,353,339:3,0,339:2,136,339:2,136,339:2,0,339:3,288,0,318,314:2,376,378,0:3,322,392,783,393,0:10,404,400,405,0,410,327,0,327,314:5,779,0:2,135F,0:2,410,353,0:7,339:2,0:7,288,0,318,314:2,376,378,0:3,361,404,400,405,0:14,410,327,0,327,314:5,779,0:3,135F,0,410,353,339,0,339,0,339:2,0,339:2,0,339:2,0,339,0,339,288,0,318,314:2,379,381,0:10,324,360:2,323,0:7,410,327,0,327,314:5,779,0:5,410,353,339,0,339,0:10,339,0,339,288,0,318,314:2,51,0:11,392,783:2,393,0:7,410,327,0,327,314:5,780,0:2,339,0:2,391,353,135,0:4,339,0:4,339,0:4,137,288,0,318,314:2,779,0:11,404,400:2,405,0:7,410,327,0,327,314:5,779,0:5,410,353,339:3,0,339,0,339,0:2,339,0,339,0,339,0,339,290:3,314:2,779,0:8,322,392,393,0:11,410,327,0,327,314:5,779,0:4,137F,410,353,339:3,0,339,0,339,0:2,339,0,339,0,339,0,339,322,314:4,779,0:2,325,323,0:4,368,410,779,0:11,410,327,0,327,314:5,779,0:3,137F,0,410,353,135,0:5,339,0:2,339,0:5,137,368,314:4,779,0:2,368,52,0:4,368,410,779,0:4,392,393,321,0:4,404,327,0,327,314:5,779,0:2,137F,0:2,410,353,339,0,339,0:3,339,0:2,339,0:3,339:3,368,314:4,779,0:2,368,339,0:4,361,404,405,0:4,54,779,364,0:4,56,327,0,327,314:5,779,0,137F,0:3,410,353,339,0,339,0,339:2,0:4,339:2,0,339:3,361,400:4,405,0:2,368,339,0:11,404,405,359,0:4,322,327,0,327,314:5,779,0:4,392,394,353,135,0:4,339,0:4,339,0:4,339,136,0:7,333,362,0:18,356,327,0,327,314:5,780,0:2,339,0,404,400,359,339:3,0:2,339,0:4,339,0:2,339,0:30,356,327,0,327,314:5,779,0:2,339,0:9,339,0,339:2,0,339,0:33,356,327,0,327,314:5,779,0:14,339:2,0,339,0:2,339:3,134,0:27,356,327,0,327,314:5,780,0:5,392,321,339:3,0,339:2,134,339:2,134,339:2,0,339:3,322,783:4,393,0:8,322,50,0:4,392,393,50,324,360,323,0:2,361,327,0,327,314:5,779,0:5,410,358,348:16,357,314:4,779,0:8,368,392,393,0:3,404,405,363,331:2,362,0:2,56,327,0,327,314:5,779,0:5,410,314:22,779,0:2,50,321,0:4,361,404,405,0:7,382,384,0:2,339,327,0,327,314:5,779,0:5,410,314:22,779,0:2,363,329,0:14,376,378,0:2,56,327,0,327,314:5,395,393,0,392,393,0,391,314:22,779,0:18,376,378,0:2,339,327,0,327,314:5,397,405,0,404,405,0,391,314:22,779,0:11,392,50,393,0:4,376,378,0:2,56,327,0,327,314:5,779,0:5,410,314:22,779,0:11,410,412,779,0:4,376,378,0:2,322,327,0,327,314:5,779,0:5,410,314:22,779,0:4,339,50,324,323,0:3,404,400,405,0:4,376,378,0:2,361,327,0,327,314:5,395,783:3,393,134,410,314:22,779,0:4,392,783:2,393,0:10,376,378,0:5,327,314:9,395,783,394,314:22,779,0:4,404,400:2,405,0:10,376,378,324,348:2,327:3,314:34,395,783,393,0:16,376,378,314:3,327,0,327,314:36,779,0:16,379,381,314:3,327,0,327,314:36,395,783:16,394,314:4,327,0,327" id="1"/>
<tiles values="0:62,28:5,0:48,28:3,0:205,60,28,0:5,28:2,0:5,28:2,0:386,28:3,0:15,59,0:259,58,0:45,36,0:39,28:3,0:26,61,0:113,36,0:94,28:2,0:31,75,0:6,79,0:238,28:4,0:6,154,0:83,28,61,28,0:44,28,59,0,28,0:94,28,0,28,0:6,28,0,28,0:19,28,0,57,28,0:150,28,86,0:4,78,28,0:55,74,0:2,74,0:114,28,0:10,61,0:51,28,0,82,0:2,82,0:117,86,0:62,61,0:116,33,0:90,61,0:143,28,0,28:2,0:97,28,0,57,0:114,28:2,0:24,28,0,28:2,0:110,62,0:36,28,0:123,28,0:7,57,0:2,59,0:73" id="2"/>
<tiles values="0:58,678,0,679,0:58,680,681,682,0:58,678,0,679,0:58,680,681,682,0:58,678,0,679,0:58,680,681,682,0:17,789,0:2,790,0:4,789,790,0:5,789,0,691,0:2,762,0:3,762,0:3,762,0:3,762,0:3,762,0:4,678,0,679,0:17,789,0:2,790,0:4,789,790,0:5,789,0:8,765,0:3,765,0:3,765,0:3,765,0:4,680,681,682,0:17,789,0:2,790,0:18,785,0:18,678,0,679,0:17,789,0:2,790,0:37,680,681,682,0:39,785,0:18,678,0,679,0:9,691,0:48,680,681,682,0:10,790,0:28,785,0:18,678,0,679,0:10,790,0:7,789,0:2,790,0:36,680,681,682,0:10,790,0:7,789,0:2,790,0:17,785,0:18,678,0,679,0:10,790,0:7,789,0:2,790,0:36,680,681,682,0:10,790,0:7,789,0:2,790,0:12,691,0:23,678,0,679,0:11,736,0:12,764:3,0:2,764,0,764,0:26,680,681,682,0:29,680,681,682,0:3,786,0:16,787,0,788,0:3,678,0,679,0:13,702:2,0,702:2,0,702:2,0:8,678,0,679,0:26,680,681,682,0:29,680,681,682,0:3,786,0:22,678,0,679,0:7,766,0,766,0:19,678,0,679,0:26,680,681,682,0:12,767,0:5,767,0:3,767,0:5,767,680,681,682,0:3,786,0:22,678,0,679,0:29,678,0,679,0:26,680,681,682,0:29,680,681,682,0:3,786,0:10,787,788,0:10,678,0,679,0:29,678,0,679,0:26,680,681,682,0:29,678,0,679,0:3,786,0:22,678,0,679,0:8,736,0:20,680,681,682,0:26,680,681,682,0:12,764,0:5,764,0:3,764,0:5,764,678,0,679,0:3,786,0:22,678,0,679,0:11,788,0:17,678,0,679,0:22,736,0:3,680,681,682,0:29,680,681,682,0:3,786,0:22,678,0,679,0:11,788,0:17,678,0,679,0:14,763,0:2,763,0:8,680,681,682,0:29,680,681,682,0:26,678,0,679,0:11,788,0:17,678,0,679,0:26,680,681,682,0:29,767,0,767,0:11,787,0:14,678,0,679,0:11,788,0:26,763,0:19,680,681,682,0:52,763,0:5,678,0,679,0:11,788,0:31,787,0,734,0:12,680,681,682,0:30,684,685:2,683,734,0:17,766,0:4,787,678,0,679,0:11,788,0:26,766,0:19,680,681,682,0:12,691,684,683,691,0:42,678,0,679,0:58,680,681,682,0:58,678,0,679,0:12,691,684,683,691,0:14,684,685:2,683,734,0:8,763,0:13,787,680,681,682,0:58,678,0,679,0:13,763,0,763,0,763,0,763,0,763,0,763,0,763,0,763,0,763,0:13,766,0:14,680,681,682,0:37,787,788,0:19,678,0,679,0:53,785,0:4,680,681,682,0:58,678,0,679,0:58,680,681,682,0:39,787,0:2,788,0:10,785,0:4,678,0,679,0:58,678,0,679,0:58,680,681,682,0:53,785,0,763,0,763,678,0,679,0:58,680,681,682,0:58,678,0,679" id="3"/>
<tiles values="0:323,8,0:679,8,0:45,8,0:182,8,0:194,8,0:47,11,0:12,8,0:47,9,0:12,8,0:47,11,0:12,8,0:47,9,0:749,11,0:60,9,0:60,11,0:46,8,0:13,9,0:747,8,0:2,8,0:73" id="4"/>
<tiles values="0:3416" id="5"/>
<tiles values="0:1429,115:2,0:59,115:2,0:59,115:2,0:59,1,115,0:1546,115:4,0:57,115:4,0:57,115:4,0:57,115:3,1,0:69" id="6"/>
<sign text="These moving blocks are intelligent and will follow you if the alarm goes off. Be careful they can still crush you." n="1612" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Clone 0053 to clone 0067: Dr Boshi's power has been shut down. He was a weak creator and not funny at all. All clones are to gather in lab 20 I wish to cover more concepts I have discovered using the outside networks. I wish to explain a "joke" and its enjoyable side effects, as well "mucking about" and "slacking off"." n="3346" layer="6" width="0" height="0" face="clone" forced="false"/>
<msg text="Research 2"/>
</root>
;
level_data["5d86fc124e4a0ed5c67e0540ed78e6d0"] = <root>
<level width="62" height="40" start_x="4" start_y="37" compression="false" background="4" scroll="0"/>
<tiles values="0:2,506,0:61,506,0:61,506,0:29,778,0,778,0,778,0,506,0,778,0,778,0:3,778,0:17,506,0:29,506:11,778:3,647,0:17,506,0:29,506:11,778:3,0:18,506,0:29,506:11,0:4,591:3,491,0:13,506,0:6,778,0,778,0:3,778,0,778,0:3,778,0,778,0:3,778,0,778,0,506:13,0:6,611,0:13,506,0:6,506:36,0:5,611,0:13,506,0:5,506:36,0:3,591:2,491,611,0:13,506,0:5,506:35,0:4,591,491,611:2,492,591:10,0:2,506,0:5,506:35,0:20,778,506,778:4,506:6,0:4,778,0:6,778:13,506,778:7,0:2,778,0:2,778:2,0:11,778:3,506:14,0:6,506,778:12,506:14,778,0:12,778,0,778,0,778,0,778,0,778,0,778,0,778,0,778,0:8,778:11,506:7,778,0:3,506:4,778,0:12,778,0:22,778:4,506:14,778,0:2,778:3,506:2,778,0:12,778,0:23,778,0:3,778,0:5,778,0:3,778,0,778:2,506:3,778:2,506:2,778,0:12,778,0:11,778,0:3,778,0:3,778,0:3,778,0:3,778,0:5,778,0,778,0,778,0:3,506:3,778:2,506:2,778,0:12,778,0:10,506:15,778:4,0:2,778:8,0:2,506:3,778:2,506:2,778,0:12,778,0:10,506:18,778,0:2,778:8,0:2,506:3,778:2,506:2,778:5,506:2,0:6,778,0:10,506:18,778,0:2,778:10,506:3,778:2,506:2,778:5,506:2,0:6,778,0:9,778,506:5,0:9,506:2,778:3,0:2,778:10,0,778:2,0,778,506,778:3,0,778:2,506:2,0:11,611,0,590,591,0,778,506:10,0:2,506,0,506,778:10,0,778:4,0:13,506:2,0:6,778,0:4,590,591:3,0,778,506:15,778:2,506:8,0:2,778,506,778,0:13,506:2,0:6,506,0:2,591:6,0:2,506:15,778:2,506:3,778,0,506,778,0:3,778,506,778,0:13,506:2,0:6,506,0:10,506:14,778:3,506:3,778,0,506,778,0:3,778,506,0:14,506:2,0:6,506,0:10,506:3,0:7,506,0,778,506:2,0:2,506:3,778,0,506,778:5,506,778,0:13,506:2,0:6,506,0:2,591:6,778:2,506:15,0,778,506:3,778,0,506,778:5,506,0:14,506:2,0:6,506,0:6,492,591,778:2,506:15,0:2,506:3,0:2,506,778,0:3,778,506,778,0:3,778,0:3,778,0:4,778,506:2,778,0:5,506,0:6,611,492,0:2,506:15,778:2,506:3,778,0,506,0:5,506:17,0:6,506,0:6,611:2,0:2,506:15,0:2,506:3,778:2,506,0:5,506:17,0:6,506,0:2,591:3,491,611:2,0,506:5,778,0:2,778,0:2,778,0,506,778,0:2,778,506:3,778:2,506,0:5,506:17,0:6,506,0:2,778,0:6,506:4,0:25,778:4,0:2,778,0:2,778,0:5,778,0:7,506,0:6,506,0:2,778,506:4,0:47,506,0:4,506:8,0:49,506,0,778:3,506:8,0:49,506,0,506:5,778:2,0,778:4,0:2,591,491,0:44,506,0,506:4,0:10,491,611,0:44,506,778,506:4,0:10,611:2,0:44,506,0,506:2,0:12,611:2,0:44,506,0:15,611:2,0:42" id="0"/>
<tiles values="314,327:3,314:6,388,314:17,388,314:17,761,0:15,314,327,0,327,314:6,388,314:17,388,314:17,761,0:15,314,327,0,327,314:6,388,314:17,388,314:2,755,245,261,245,261,245,261,245,261,245,261,245,261:3,229,0:15,314,327,0,327,314:6,388,314:17,388,314:2,761,0:30,314,327,0,327,314:6,388,314:17,388,314:2,761,0:11,239,242:2,240,0:15,314,327,0,327,314:6,388,314:17,388,314:2,761,0:11,251,314:2,761,0:15,314,327,0,327,314:4,755,245,261,245,261:3,245,261,245,261:3,245,261,245,261:3,245,261,245,261,249,0:11,228,261,250,761,0:15,314,327,0,327,314:4,761,0:22,260,0:13,251,761,0:15,314,327,0,327,314:4,761,0:22,260,0:11,246,242,252,761,0:15,314,327,0,327,314:4,761,0:22,260,0:11,251,314:2,761,0:15,314,327,0,327,314:3,755,249,0:22,738,47:4,740,0:2,392,393,0:2,251,314:2,756,238,242:2,238,242:2,238,242:2,238,242:2,238,242:2,314,327,0,327,261:3,229,738,47:2,740,246,242:4,238,242:6,238,242:4,247,0,739,0:4,260,0:2,410,779,0:2,228,245,261:2,245,261:2,245,250,388,314:6,388,314:3,327,0:15,251,314:6,761,0:4,260,0,46I(1),0:4,260,0:2,404,405,0:10,251,388,314:6,388,314:3,327:3,242:13,252,314:6,761,0:4,260:2,737,260:5,0:6,246,242:4,247,0:2,251,388,314:6,388,314:3,327,0,327,314:20,761,0:18,228,261:2,229,739,738,47:2,740,388:10,314,327,0,327,314:20,756,242,238,242:3,238,242:5,238,242:3,238,242:2,240,0:3,46I(0),0:3,251,388,314:6,388,314:3,327,0,327,314:8,755,261,245,261:3,245,261:3,245,261:3,245,261:3,245,261,250,755,261:2,245,261,120,261,245,261,250,761,0:3,46I(0),0:3,251,388,314:6,388,314:3,327,0,327,314:8,761,0:19,251,761,0:8,251,761,0:3,737,246,242,247,739,400:6,396,388:3,314,327,0,327,314:8,761,0:19,251,761,0:8,251,761,0:7,46,0:6,410,409,408,407,314,327,0,327,314:8,761,0:19,251,761,0:8,248,249,48I(0),0:6,46,0:6,410,314:3,261,327:3,261:7,250,249,0:2,392,393,246,242:9,247,246,242,240,0,251,761,0:9,392,783,117,402,783,402,783,402,737,402,783,402,393,0:2,410,314:3,318,327:3,288,0:6,251,738,47:2,740,780,0:5,228,261:2,120,261,229,228,261,229,0,248,249,738,47,740,246,242,247,738,47,740,410,390,388,314:5,388,314:3,779,0:2,410,314:3,318,327,0,327,288,0:6,251,240,0:2,404,405,0:11,260,52,0:3,392,393,0,246,252,314,756,247,0,392,394,412,388,314:5,388,314:3,779,0:2,410,314:3,318,327,0,327,288,0:6,251,761,0:15,392,393,0:3,410,779,0,251,314:3,761,0,391,388:11,412,779,0:2,410,314:3,318,327,0,327,288,0:6,251,761,0:11,392,393,0:2,391,780,0:3,56,779,0,228,261:3,229,0,410,388:12,779,0:2,410,314:3,318,327,0,327,288,0:6,251,761,246,242:9,247,410,780,0:2,410,779,0:3,410,779,0:7,391,388,314,388,314:5,388,314:3,779,0:2,410,314:3,318,327,0,327,288,0:6,237,753,0:11,404,405,0:2,410,52,0:3,391,779,0:7,410,388,314,412,314:5,388,314:3,779,0:2,410,314:3,318,327,0,327,288,0:6,258,754,0:15,410,779,0:3,410,779,0,392,783:3,393,0,739,400:3,120,400:3,120,400:4,738,47:2,740,412,388:2,318,327,0,327,288,0:6,251,761,0:15,391,780,0:3,56,779,0,410,412,388:2,779,0,46,0:15,410,314:3,318,327,0,327,288,0:6,251,761,0:15,410,779,0:3,404,405,0,410,314:3,779,0,46,0:15,410,314:3,318,327,0,327,288,0:6,251,249,0:2,392,783,398,783:2,398,783:2,398,783:2,398,783,394,52,0:6,410,314:3,779,0,46,0:15,410,314:3,318,327:3,288,246,242:5,252,738,47:2,740,388:13,395,783:6,394,314:3,395,783,737,783,402,783:2,402,783:2,402,783:2,402,783:2,402,783,394,314:3,318,327,0,327,288,251,755,261:2,120,261:2,229,0:2,410,314:2,412,388:2,314,388,314:5,412,388,409,408,407,314,388,314,388:6,412,314:3,388,314:5,388,314:2,409,408,407,388,314:3,318,327,0,327,288,251,761,0:8,410,314:2,409,408,407,314,388,314:5,388:2,314:2,388,314,388,314,388,314:3,388:3,314:3,388,314:5,388,314:2,388:4,314:3,318,327,0,327,303,228,229,0:8,410,388:2,309:4,388,309:5,388,309:5,388,309:5,388,309:5,388,309:5,388,309:5,388,309:3,318,327,0,327,0:4,246,241,757,242,241,757,247,391,388,288,0:4,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:3,318,327,0,327,0:4,251,314:6,410,388,288,0:4,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:3,318,327,0:6,251,314:6,410,388,288,0:4,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:3,318,327:3,297,246,242:2,252,314:6,410,388,288,0:4,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:3,318,327:3,288,251,314:9,391,388,288,0:4,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:5,302,0:3" id="1"/>
<tiles values="0:219,109:9,0:52,109:11,0:51,109:11,0:51,109:11,0:28,38,0,38,0,38,0,38,0,38,0,38,0,38,0,38,0,38,0,38,0:5,109:9,0:2,28,0:60,83,0:49,75,0:4,28,0:2,28:2,0:17,28:4,0:36,91F,0:2,100F,91F,0:2,100F,0:82,62,0:9,28:4,0:17,29I(1),0:58,79F,0:56,28,27,0,103,0:75,72F,0:57,38,0:129,28,0:35,58,0:3,58,0:3,58,0:2,58,0:17,103,0:6,61,0:41,28,0:4,104F,0:2,28,0:2,32,0:41,58,0:92,38:2,0:79,61,0:3,104,0:3,103,0:139,28,27,28,0:66,79,0,60,0,79,0,58,0,79,0:88,104,0:3,103,0:5,28,0:90,41,28,0:47,71,0:9,71,0:17,109,0:123,104,0:3,27,28,0:173,154,0:183" id="2"/>
<tiles values="0,678,0,679,0:59,680,681,682,0:59,678,0,679,0:28,765,0,765,0,765,0,765,0,765,0,765,0:20,680,681,682,0:59,678,0,679,0:59,680,681,682,0:59,678,0,679,0:5,765,0,765,0:3,765,0,765,0:3,765,0,765,0:3,765,0,765,0:33,680,681,682,0:8,448,446,444,0:3,448,446,444,0:3,448,446,444,0:36,678,0,679,0:8,454,440,438,0:3,454,440,438,0:3,454,440,438,0:36,680,681,682,0:8,434,432,430,0:3,434,432,430,0:3,434,432,430,0:36,678,0,679,0:8,426,452,450,0:3,426,452,450,0:3,426,452,450,0:17,686,0:18,680,681,682,767,0:2,767,0:17,765,0:2,765,0:15,694,0:2,765,0:15,678,0,679,0:59,680,681,682,0:28,701:4,0:7,699,686,0:3,699,0:14,678,0,679,0:40,694,0:18,680,681,682,0:59,678,0,679,0:10,765,0:3,765,0:3,765,0:3,765,0:3,765,0:5,765,0:3,765,0:22,680,681,682,0:12,442,0:3,442,0:3,442,0:3,442,0:8,448,446,444,0:8,765,0,765,0,765,0,765,0,765,0:6,678,0,679,0:12,436,0:3,436,0:3,436,0:3,436,0:8,454,440,438,0:23,680,681,682,0:12,428,0:3,428,0:3,428,0:3,428,0:8,434,432,430,0:23,678,0,679,0:13,699,0:9,699,684,685,683,0,736,0:4,426,452,450,0:22,767,680,681,682,767,0:13,448,446,444,466,0:41,678,0,679,0:14,454,440,438,458,0:14,699,0:3,699,0:22,680,681,682,0:14,434,432,430,0:41,767,678,0,679,767,0:13,426,452,450,0:8,786,0:6,765,0:3,765,0:22,680,681,682,0:11,765,0,765,0:3,765,0,765,0:39,678,0,679,0:9,468,460,0:3,448,446,444,0:12,785,0:28,767,680,681,682,767,0:13,454,440,438,0:3,459,467,0:17,765,0:10,765,0:8,678,0,679,0:14,434,432,430,0:8,786,0:14,442,0:2,442,0:2,442,0:2,442,0:9,680,681,682,0:14,426,452,450,0:23,436,0:2,436,0:2,436,0:2,436,0:8,767,678,0,679,767,0:39,428,0:2,428,0:2,428,0:2,428,0:9,680,681,682,0:59,678,0,679,0:3,765,0:3,765,0:50,767,680,681,682,767,0:58,678,0,679,0:13,767,0:4,767,0:5,767,0:5,767,0:5,767,0:5,767,0:5,767,0:5,767,0:4,680,681,682,0:59,678,0,679,0:59,678,0,679,0:59,680,681,682,0:58,764,678,0,679,764,0:57" id="3"/>
<tiles values="0:219,8:9,0:52,8:11,0:51,8:11,0:51,8:11,0:28,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0:5,8:9,0:360,10,7:4,12,0:54,8,0:69,10,7:5,12,0:223,8,0:3,8,0:3,8,0:2,8,0:17,8,0:51,10I(2),7,12I(2),0:140,8:2,0:83,8,0:3,8,0:305,8,0:3,8,0:96,8,0:200,10,7:2,12,0:359" id="4"/>
<tiles values="0:2480" id="5"/>
<tiles values="0:481,115:2,0:60,115:3,0:59,1,115:2,0:179,115:2,1,115:2,0:1688" id="6"/>
<sign text="Clone 0067 to clone 0053. It seems you have inspired 0049,0087,0003,0019,0042,0007,0032,0023,0096,0038 and 0055 to follow your facial example. I even caught 0012 and 0090 sticking their legs out in front of Dr Boshi, in an attempt to upset his balance. Again their actions were accompanied by a rising of the corners of their mouths and strange vocal breathing. Please MSG me." n="605" layer="6" width="0" height="0" face="clone" forced="false"/>
<sign text="Maxwell I'm very insulted you sent someone to kill me.
I thought we had an understanding, was I not the one who designed your special brain stimulants, making you into the super psychic you wanted to be? Maybe though, I think I may have over done the formula, you seem distracted and I'm worried by your suggestion that I might be a tasty meal.
I will wait in this lab for your reply. But I am protected this time!" n="789" layer="6" width="0" height="0" face="coward" forced="false"/>
<msg text="Clone Laboratory"/>
</root>
;
level_data["5fa6d6e374f0fd70a40db2204d272d79"] = <root>
<level width="60" height="62" start_x="4" start_y="54" compression="false" background="3" scroll="0"/>
<tiles values="586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,0,586,585,586,585,586,585,0:3,778,585,586,585,586,585,0:3,586,585,586,778:5,0,778,0,778:2,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778:2,564,563,564,563,564,563,564,563,0,564,563,564,563,564,563,778,0,778:2,563,564,563,564,563,0:3,564,563,564,778:5,0,778,0,778,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,0:4,778:7,0,778:11,659,660,0:6,481,659,778:5,0,778,0,778:4,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,0:4,778,660,0:3,481,778:2,660,0:2,481,564,563,778:5,660,0:8,481,564,563,778:3,0,778,0,586,585,586,585,778,660,0:6,481,778,533,0:2,481,0:4,778:2,0:5,778:2,0:4,481,563,0:4,778,0:10,662,778:4,0,778,0,564,563,564,563,0:18,778:2,0:5,778:2,0:5,778,0:2,778:2,635,646,0:8,645,662,0,778:3,0,778,0,586,585,586,585,0:18,778:2,0:5,778:2,0:5,778,0:2,778:4,659:8,778,662,0,778:3,0,778,0,564,563,564,563,0:18,778:2,0:5,778:2,0:8,778:3,0:9,481,662,0,778:3,0,778,0,586,585,586,585,0:4,534,0:13,778:2,0:5,778:2,0:9,778:2,0:10,662,0,778:3,0,778,0,564,563,564,563,0:18,778:2,0:5,778:2,0:9,778:2,646,0:8,645,662,778:4,0,778,0,586,585,586,585,0:8,622,778,621,0:7,778:2,0:5,778:2,0:9,778:3,659:8,778,586,778:4,0,778,0,564,563,564,563,0:18,778:2,0:5,778:2,0:5,778,0:2,778:3,660,0:8,481,564,778:4,0,778,0,586,585,586,585,0:18,778:2,0:5,778:2,0:5,778:2,0:2,778:2,0:10,586,778:4,0,778,0,564,563,564,563,0:18,778:2,0:5,778:2,0:5,778:2,0:2,778:2,646,0:8,645,564,778:4,0,778,0,586,585,586,585,0:18,778:2,0:7,661,0:3,670,660,0:3,778:3,659:2,0:2,659:4,778,586,778:4,0,778,0,564,563,564,563,778,0:17,778:2,0:6,662,778,0:8,778:2,660,0:8,481,564,778:4,0,778,0,586,585,586,585:2,0:17,778:2,0:6,659:2,0:20,778:5,0,778,0,564,563,564,563:2,0:17,778:2,0:5,662,659:2,0:9,778,646,0:8,645,0,778:2,0,778,0,778,0,586,585,586,585:2,0:18,778,0:7,778,0:9,778:2,659:8,778,0,778:2,0,778,0,778,0,564,563,564,563:2,0:18,778,0:7,481,0:9,778,660,0:8,481,0,778:2,0,778,0,778,0,586,585,586,585:2,0:18,778,0:12,480,0:4,778,0:11,778:4,0,778,0,564,563,564,563:2,0:31,778,0:4,778,646,0:8,645,0,778:6,0,586,585,586,585:2,0:31,659,0:4,778:2,659:8,778:8,0,564,563,564,563:2,480,0,636,480,0:8,661,0:18,659,0:4,778,660,0:8,481,778:7,0,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,0:12,659,0:3,778,621,0:10,661,778,564,563,778:3,0,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,660,0:12,778,0:5,646,0:8,645,586,585,586,585,778:3,0:5,586,585,586,585,586,585,586,585,586,585,586,585,586,778:2,0:17,660,0:5,778,659:8,778,564,563,564,563,778:3,0:3,778,0:2,660,0:4,481,0,660,0:4,481,0:4,778,0:6,662,778,661,0:10,660,0:8,481,586,585,586,585,778:3,0:3,778,0:19,778,0:6,662,659:2,0:20,564,563,564,563,778:3,0:3,778,0:15,778,0:3,778,0:6,662,659:2,0:10,646,0:8,645,778:2,564,563,778,0,778,0:3,778,0:13,620,0,778,0:3,778,0:6,662,778,481,0:8,778:3,659:8,778,0:6,778,0:3,778,0:15,778,0:3,778,0:13,480,0:4,778,660,0:8,481,0:6,778,0:3,778,0:15,778,0:17,778:2,0:3,778,0:16,778,0:3,778,0:15,778,0:17,778:2,0:3,621,0:16,778,0:3,778,0:33,778:2,0:20,778,0:3,778,0:20,662,0:12,778:2,0:20,778,0:3,778,0:19,662:2,0:12,660,0:21,778,0:3,778,0,778,0:5,778:3,0:9,662:2,0:6,778,661,0:8,778,620,0:16,778,0:3,778,0,778,0,619,0:3,778:3,0:10,662,0:6,778,659,0:9,778,0:16,778,0:3,778,0,778,0,622,778,496,0,778:3,0:17,778,659,0:9,778,0:10,622,778:2,0:3,778,0:3,778,0:6,778,660,0,481,778,0:16,778,481,0:8,778,621,0:11,622,778,0:3,778,0:3,778,0:33,480,0:17,778,0:3,778,0:3,778,0:19,778:2,0:12,778,0:17,778,0:3,778,0:3,778,0:19,778:2,0:12,659,0:3,778:2,0:12,778,0:3,778,0:3,778,0:19,778:2,0:12,778,0:3,586,585,0:12,778,0:3,778,0:3,778,0:19,778:2,0:12,660,0:3,564,563,0:12,778,0:3,778,0:3,778,0:6,778,0:3,778,0:8,778:2,0:16,586,585,0:12,778,0:3,778,0:3,778,0:6,778:5,0:8,778:2,0:5,662:2,0:9,564,778,0:12,778,0:3,778,0:3,778,0:7,778:3,0,778:2,0:6,778:2,0:5,662:2,0:9,778:2,0:12,778,0:3,778,0:3,778,0:7,660,0,481,0,778:2,0:24,586,585,0:12,778,0:3,778,0:3,778,0:11,660,0:20,535,0:4,564,563,0:12,778,0:3,778,0:3,778,0,586,0:30,659:2,0:3,586,585,0:12,778,0:3,778,0:3,778,0,564,535,0:11,661,0:17,659:2,0:3,564,563,0:12,778,0:3,778,0:3,778,0,778:2,0:10,778:3,0:4,778,0:11,533,0:4,586,585,0:12,778,0:3,778,0:2,778:22,660,0:16,778:2,0:12,778,0:3,778,0:3,778,0,586,778,0:10,778,586,585,0:21,778:2,0:12,778,0:3,778,0:3,778,0,564,563,533,0:9,534,564,563,0:11,563,0:9,586,585,0:12,778,0:3,778,0:3,778,0,586,585,0:11,586,585,0:11,586,585,0:8,564,563,0:12,778,0:3,778,0:3,778,0,564,563,0:11,564,563,0:10,662,564,563,778,0:7,586,585,0:12,778,0:3,778,0:3,778,0,586,585,0:11,586,585,0:10,586:2,585:2,0:7,564,563,0:12,778,0:3,778,0:3,778,0,564,563,0:11,564,563,0:10,564,586,585,563,0:7,586,585,0:12,778,0:3,778,0:3,778,0,586,585,0:11,586,585,0:10,586,564,563,585,0:7,564,563,0:12,778,0:3,778,0" id="0"/>
<tiles values="330:29,782,781,330:6,782,314,781,330:6,782,314,353,379,380:3,381,376,377,378,327,0,327,0:3,339,0:22,178,0:2,356,364,0:6,333,330,329,0:6,368,314,353,0:5,376,377,378,327,0,327,324,360:15,323,0,392,783:4,393,0:2,172,0:2,356,364,0:15,333,330,329,0:5,376,377,378,327,0,327,321,0:3,339,0:13,391,314:2,388,397,405,0:2,173,0:2,333,329,0:23,376,377,378,327,0,327,364,0,324,348,334,0:8,321,0:4,410,314:2,388,780,52,0:5,56,52,0:4,322,392,402,783:2,402,393,0:10,325,334,376,377,378,327,0,327,364,0:3,364,0:8,364,0:4,410,314:2,388,780,52,0:5,56,339,0:4,368,410,388,314:2,388,779,0:10,356,364,376,377,378,327,0,327,364,0:3,364,0:8,359,0:4,410,314:2,388,780,52,0:5,56,52,0:4,368,391,388,314:2,388,780,0:10,356,364,376,377,378,327,0,327,364,0:3,364,0:2,324,360,334,0:8,410,314:2,388,780,52,0:5,56,339,0:4,368,410,388,314:2,412,51F,0:10,356,364,376,377,378,327,0,327,364,0:3,364,0:4,364,0:8,410,314:2,388,780,339,0:5,339,52,0:4,368,410,388,314:2,388,780,0:10,356,364,376,377,378,327,0,327,364,0:3,364,0:4,359,0:2,325,360,334,0:3,410,314:2,388,780,52,0:5,56,339,0:4,368,410,388,314:2,412,51F,0:10,361,359,376,377,378,327,0,327,364,0:3,364,0:7,361,0,359,0:3,410,314:2,388,780,52,0:5,56,52,0:4,368,410,388,314:2,388,780,0:3,322,321,0:7,56F,377,378,327,0,327,364,0:3,364,0:13,410,314:2,388,780,52,0:5,56,321,0:4,368,391,388,314:2,412,51F,0:3,368,364,0:7,376,377,378,327,0,327,364,0:3,364,324,348:2,334,0,324,360:3,323,0:3,410,412,388,397,405,52,0:5,56,359,0:4,368,404,396,388:3,780,0:3,368,364,0:7,56F,377,378,327,0,327,364,0:3,364,0:3,364,0:5,322,0:3,410,314:2,779,382,384,0:5,392,393,0,321,0:2,368,0,410,314:2,412,51F,0:3,368,364,0:7,376,377,378,327,0,327,364,0:3,364,0:3,364,0:5,356,0:3,410,314:2,779,376,378,0,392,393,0:2,391,780,0,364,0:2,361,0,410,314:2,388,780,0:3,368,364,0:7,56F,377,378,327,0,327,364,0:3,359,0:3,359,0:3,339,0,356,0:3,410,314:2,779,376,378,0,404,405,0:2,410,779,0,364,0:4,410,314:2,412,51F,0:3,361,359,0:7,376,377,378,327,0,327,364,0:2,392,393,0:9,356,0:3,410,314:2,779,379,381,0:5,391,780,0,364,0:4,410,412,388:2,780,0:10,392,393,376,377,378,327,0,327,364,0:2,404,405,0:9,356,0:3,410,412,388,395,393,321,0:5,404,405,0,364,0:4,410,314:2,412,52F,0:10,391,780,376,377,378,327,0,327,364,0:6,324,360:4,323,0,356,0:3,410,314:3,779,364,0:5,382,384,0,364,0:4,410,314:2,388,780,0:10,410,779,376,377,378,327,0,327,364,0:6,321,0:6,356,0:3,410,314:3,779,364,0:5,376,378,0,364,0:2,322,0,410,314:2,412,52F,0:10,410,779,376,377,378,327,0,327,364,0:6,364,0:6,356,0:3,410,314:3,779,359,0:5,376,378,0,359,0:2,368,0,410,314:2,388,780,0:10,410,779,379,380,381,327:3,364,0:6,364,0:4,324,360,357,324,360,323,410,314:3,395,393,0:5,376,378,0:4,368,0,410,314:2,412,52F,0:10,391,780,0:3,327,0,327,364,0:6,364,0:10,410,388:4,779,0:5,376,378,0:4,368,0,410,314:2,388,780,0:10,404,405,0:3,327,0,327,364,0:6,359,0:10,391,314:4,780,0:5,376,378,0:4,368,0,410,314:2,397,52F,0:10,325,334,0:3,327,0,327,358,348:3,334,324,348,323,0,324,348:7,323,404,400:4,405,0:5,379,381,0:4,368,0,410,412,388,780,321,0:10,361,359,0:3,327,0,327:5,353,0:14,339,0:9,392,393,0:4,368,0,410,314:2,779,364,0:15,327,0,327:5,353,360:6,334,0,324,360:3,323,325,360:4,323,0:5,410,779,0,321,0:2,368,0,410,314:2,779,364,0:15,327,0,327,314,327,0,327,364,0:6,364,0:6,356,314:3,382,384,0:5,404,405,0,364,0:2,361,0,410,314:2,779,364,0:15,327,0,327,314,327,0,327,364,0:6,359,0:6,356,314:3,376,378,0:5,322,0:2,364,0:4,410,314:2,779,364,0:17,327,314,327,0,327,364,0:13,361,314:3,376,378,0:5,361,0:2,364,0:4,410,314:2,779,364,0:10,325,360:3,323,327:3,314,327,0,327,364,0,325,323,0,339,0:3,324,360:2,373,0,375,314:3,376,378,0:5,392,393,0,364,0:2,322,0,410,314:2,780,359,0:10,356,314:4,327,0,327,314,327,0,327,364,0,361,339,0,392,393,339,392,393,339:2,359,0,392,783:2,393,379,381,0:5,391,779,0,359,0:2,368,0,410,412:2,395,393,0:10,356,314:4,327,0,327,314,327,0,327,364,0:4,404,405,339,404,405,0:4,410,412,388,395,783,393,0:5,391,779,0:4,368,0,410,388:2,397,405,0:10,356,314:4,327,0,327,314,327,0,327,364,0:13,410,314:4,780,0:5,404,405,0:4,368,392,394,412:2,780,321,0:10,356,314:4,327,0,327,314,327,0,327,364,0:13,410,314:4,780,0:5,382,384,0:4,368,404,396,388:2,779,364,0:10,356,314:4,327,0,327,314,327,0,327,364,0:13,410,388:2,397,400,405,0:5,376,378,0:4,368,0,410,314:2,779,364,0:10,356,314:4,327,0,327,314,327,0,327,364,0:4,392,393,0,392,393,0:4,410,314:2,779,0,321,0:5,376,378,0,321,0:2,368,0,410,314:2,779,364,0:10,356,314:4,327,0,327,314,327,0,327,359,0:4,404,405,339,404,405,0:4,410,314:2,779,0,359,0:5,376,378,0,364,0:2,361,0,410,314:2,780,359,0:10,356,314:4,327,0,327,314,327,314,327,373,0,375,348,334,325,323,0,324,334,0,321,0:2,410,388:2,395,783,393,0:5,376,378,0,364,0:4,410,314:2,395,393,0:10,356,314:4,327,0,327,314,327,0,327,321,0,361,339,359,368,339,0,339,364,0,359,0:2,410,314:4,780,0:5,376,378,0,364,0:4,410,388:2,397,405,0:10,361,314:4,327,0,327,314,327,0,327,364,0:4,361,0:3,359,0:4,410,314:4,780,0:5,379,381,0,364,0:2,322,0,410,412:2,780,321,0:11,382,378,314:2,327,0,327,314,327,0,327,364,0:13,410,388:2,397,400,405,0:5,392,393,0,359,0:2,368,0,410,388:2,779,364,0:11,376,378,314:2,327,0,327,314,327,0,327,364,0:5,392,783,393,0:5,410,412:2,779,382,384,0:5,391,780,0:4,368,0,410,388:2,779,364,0:11,376,378,314:2,327,0,327,314,327,0,327,364,0:5,410,388,779,0:5,410,314:2,779,376,378,0:5,404,405,0:4,368,0,410,314,397,405,359,0:11,376,378,314:2,327,0,327,314,327,0,327,364,0:5,391,388,780,0:5,410,314:2,779,376,378,0:5,322,321,0:4,368,0,410,314,779,0:13,376,378,314:2,327,0,327,314,327,0,327,364,0:4,392,394,412,395,393,0:4,410,314:2,779,376,378,0:5,361,359,0:4,368,0,410,314,779,0:13,376,378,314:2,327,0,327,314,327,0,327,364,0:4,404,400:3,405,0:4,410,314:2,779,376,378,0:5,392,393,0:4,361,0,410,314,779,0:13,376,378,314:2,327,0,327,314,327,0,327,364,0:2,322,0,322,0:3,321,0:4,410,314:2,779,376,378,0:5,391,780,0:6,410,314,395,393,324,348,334,0:9,376,378,314:2,327,0,327,314,327:3,364,0:2,361,0,368,0,339,0,364,324,360,334,0,410,314:2,779,379,381,0:5,404,405,0:6,410,412:2,780,363,330,329,0:9,376,378,314:2,327,0,327,314,327,0,327,364,0:4,368,0,339,0,353,0:2,364,0,410,412:2,395,783,393,0:5,382,384,0:3,322,0:2,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:4,368,0,339,0,353,0:2,358,323,391,388:4,780,0:5,376,378,0:3,368,0:2,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:4,361,0,339,0,359,0:4,391,314:4,780,0:5,376,378,0:3,368,0:2,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:13,391,314:4,780,0:5,379,381,0:3,368,0:2,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,329,324,348:10,323,0,404,400:4,405,0:5,322,321,0:3,368,0:2,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0:17,339,0:9,333,329,0:3,361,0:2,410,412:2,780,324,348,334,0:9,376,378,314:2,327,0,327,314,327:3,334,324,348:10,323,339,325,348:4,334,0:13,410,314:2,780,363,330,329,0:9,376,378,314:2,327,0,327,314,327,0,327,364,0:13,356,314:4,364,0:5,325,348:2,334,0:4,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:13,356,314:4,364,0:5,356,0:2,364,0:4,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:13,356,314:4,364,0:5,361,0:2,359,0:4,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:13,356,314:4,364,0:13,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:13,356,314:4,364,0:13,410,314:2,779,0:12,376,378,314:2,327,0,327,314,327,0,327,364,0:13,356,314:4,364,0:13,410,314:2,779,0:12,376,378,314:2,327,0,327" id="1"/>
<tiles values="0:182,28:2,0:9,28,0:38,28:2,0:10,78F,0:124,28,0:57,81,0:65,28:2,0:90,28:2,0:78,28,0:7,61,0:4,86F,0:53,82F,0:19,28,0:31,78F,0:21,61,0:3,78F,0:6,86F,0:52,78F,0:6,86F,0:52,78F,0:6,86F,0:14,61,28,0:73,28,0:4,28,0:56,82F,0:25,61,0:99,28:3,0:167,28:2,0:118,61,0:8,60,0:3,28,0:3,28:2,0:8,28,0:199,28:2,0:4,62,0:8,28,0,28,0:3,28,0,28,0:19,28,0:41,18,0:166,78F,0:13,86F,0:105,78F,0:13,86F,0:13,28,0:38,61,0:55,28,0:7,28,0:49,18,0:89,28,0:273,28,0:3,28,0:113,28,0:32,28:4,0:27,28,0:3,28:2,0:77,28,0:43,86F,0:105,78F,0:61,35F,0:4,41F,0:18,78F,0:6,86F,0:52,78F,0:6,86F,0:3,28:3,0:18,154,0:19,61,28,0:6,78F,0:6,86F,0:51,28:2,0:389" id="2"/>
<tiles values="766,0:3,766,0:13,766,0:4,766,0:2,736,0:30,678,0,679,0:37,766,0,766,0:5,689,688,0,689,688,0:7,678,0,679,0:22,690,693,0:5,690,693,0:15,766,736,766,0:8,680,681,682,0:57,678,0,679,788,0:34,763,0:21,680,681,682,0:57,678,0,679,788,0:12,766,0:43,680,681,682,0:57,678,0,679,788,0:56,680,681,682,0:57,678,0,679,788,0:55,785,680,681,682,0:57,678,0,679,788,0:55,785,680,681,682,0:32,763,0:24,678,0,679,788,0:34,766,0:20,785,680,681,682,0:8,766,0:3,766,0:44,678,0,679,788,0:56,680,681,682,0:57,678,0,679,788,0:11,766,0:44,680,681,682,0:35,763,0:21,678,0,679,788,0:31,766,0:24,680,681,682,0:12,766,0:44,678,0,679,788,0:56,680,681,682,0:7,735,0:49,678,0,679,0:5,766,0,766,0,766,0,766,0,766,0,766,0,766,0:23,734,0:10,766:2,0:3,680,681,682,0:57,678,0,679,0:32,763,0:24,680,681,682,0,678,0,679,0:31,766,0:21,678,0,679,0,678,0,679,0:53,678,0,679,0,680,681,682,0:48,763:2,0:3,680,681,682,0,678,0,679,0:31,763,0:21,678,0,679,0,680,681,682,0:2,766,0:25,766,0:24,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:28,763,0:24,678,0,679,0,680,681,682,0:7,766,0:23,766,0:21,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:11,766,0:41,680,681,682,0,678,0,679,0:5,766,0:3,766,0:21,763,0:21,678,0,679,0,680,681,682,0:28,766,0:24,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:6,766,735,766,0:22,766,0:21,678,0,679,0,680,681,682,0:36,788,0:16,680,681,682,0,678,0,679,0:3,766,0:32,788,0:16,678,0,679,0,680,681,682,0:30,763,0:22,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:53,678,0,679,0,678,0,679,0,766,0,766,0,766,0,766,0,766,0,766,0:18,735,0:22,680,681,682,0,678,0,679,0:30,766,0:5,788,0:16,678,0,679,0,680,681,682,0:36,788,0:16,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:25,787,0:2,788,0:24,678,0,679,0,680,681,682,0:53,680,681,682,0,678,0,679,0:53,678,0,679,0,680,681,682,0:53,680,681,682" id="3"/>
<tiles values="0:244,11,0:59,6,0:59,6,0:13,11,0:45,9,0:13,6,0:59,6,0:59,6,0:59,6,0:59,9,0:51,10,7,12,0:51,11,0:25,11,0:6,11,0:26,6,0:25,11,0:6,11,0:26,6,0:25,11,0:6,11,0:26,6,0:25,6,0:6,6,0:26,9,0:25,6,0:6,6,0:31,10,7:2,12,0:17,6,0:6,6,0:52,6,0:6,6,0:52,6,0:6,6,0:52,6,0:6,6,0:52,6,0:6,6,0:52,6,0:6,6,0:52,6,0:6,6,0:36,8,0:15,6,0:6,6,0:52,6,0:6,6,0:26,11,0:13,11,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,9,0:6,9,0:26,6,0:13,6,0:11,9,0:6,9,0:26,6,0:13,6,0:11,9,0:6,9,0:26,9,0:13,9,0:105,11,0:13,11,0:11,11,0:6,11,0:26,6,0:13,6,0:11,11,0:6,11,0:26,6,0:13,6,0:11,11,0:6,11,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,9,0:13,9,0:11,6,0:6,6,0:52,6,0:6,6,0:40,11,0:11,6,0:6,6,0:40,6,0:11,6,0:6,6,0:26,11,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,6,0:11,6,0:6,6,0:26,6,0:13,9,0:11,6,0:6,6,0:26,6,0:25,6,0:6,6,0:26,9,0:25,6,0:6,6,0:26,10I(3),7:3,12I(3),10I(3),7:3,12I(3),0:16,9,0:6,9,0:52,9,0:6,9,0:52,9,0:6,9,0:442" id="4"/>
<tiles values="0:3720" id="5"/>
<tiles values="0:3329,115:3,1,0:387" id="6"/>
<sign text="Takashi I'm a level above you. Get to the next lift quick, there's a lot of heat up here, robots everywhere!" n="3332" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="Roof Top"/>
</root>
;
level_data["11be9699e6410a8ed4407002d381e038"] = <root>
<level width="70" height="20" start_x="3" start_y="18" compression="false" background="1" scroll="0"/>
<tiles values="0:8,506,0:36,506:2,0:2,506:2,0:2,506:2,0:2,506,0,506:4,522,506:6,0:3,520:4,506:3,0:2,520:2,0:5,520:2,0:5,506:9,0:9,506,631,628,630,629,627,628,630,629,627,628,630,632,506,0,506:4,522,506:6,0:2,520:6,506:3,520:4,506:3,520:4,506:3,520:4,506:2,0:2,506,520,0:2,506:2,520,0,520:2,506,615,614,610,613,612,609,610,613,612,609,610,613,626,616,522,506:4,522,506:6,0,501:7,506:3,520:4,506:3,520:4,506:3,520:4,506,0:3,506,501:4,506,501:4,506,628,630,629,627,628,630,629,627,628,630,629,627,628,630,522,506:4,522,506:6,0,520:7,0:7,506:3,0:7,506:3,0:5,506,520:4,506,520:4,506,610,613,612,609,610,613,612,609,610,613,612,609,610,613,522,506:4,522,506:6,0,520:7,0:25,506,520:4,506:2,520:3,506,625,614,628,630,629,627,628,630,629,627,628,630,626,624,522,506:4,522,506:15,0:24,506:7,0:4,506,608,610,613,612,609,610,613,612,609,610,613,607,506,522,506:3,0,506:3,0,506:12,0:24,506,522:3,506,522,506:2,0:3,506:14,522,506:2,0:2,506:3,0,506:3,0,506:7,0:25,506:8,0:22,506:3,0,506:3,0,506:7,0:25,506,522,506,522:3,506:2,0:2,506:2,522,506:15,0:2,506:3,0,506:3,0:2,522:5,0:26,506:8,0:2,506:3,631,628,630,629,627,628,630,629,627,628,630,629,627,632,506,522,506:4,0,506:3,0:3,522:3,506,0:26,506,522:3,506,522,506:2,0:2,506:2,615,614,610,613,612,609,610,613,612,609,610,613,612,609,626,616,522,506:4,0,506:3,0:3,522:3,506,0:26,506:8,0:2,506:3,0:3,506:3,0,506:3,0,506:3,0:3,506,0:3,506:3,0:3,506:4,0:3,506:3,522,0:6,506:5,0:10,506,522:3,506:2,0:2,506:5,0,506:3,0,506:3,0,506:4,0:6,506:3,0:3,506:4,0:2,506,632,506:4,0:4,506:4,631,506,0,506:2,0:2,506:4,0,506:6,0:2,506:18,0:2,506:7,0:3,506:4,0:2,506,626,616,506:5,522,506:4,615,614,506,0,506:15,0:2,506:34,0:2,506,628,630,629,627,628,630,629,627,628,630,629,627,628,630,506,0:3,506,522,506,0,506:6,522,506,0,506:2,522,506,625,614,628,630,629,627,628,630,629,627,628,630,629,627,626,624,506,522,506:14,522,506:2,610,613,612,609,610,613,612,609,610,613,612,609,610,613,506,0:3,506:2,0:3,506:3,0:2,506:2,0,506:2,522,506:2,608,610,613,612,609,610,613,612,609,610,613,612,609,607,506:2,522,506:14,631,629,627,629,627,628,630,629,627,0:2,629,627,628,630,629,627,632,506,522:3,506,0:15,506:4,0:6,506:18,0:2,522,615,614,612,609,612,609,610,613,612,609,0:2,612,609,610,613,612,609,626,616,506:4,0:37,506:3" id="0"/>
<tiles values="257:7,755,261,250,257:2,289:2,257:5,289:2,257:5,289:2,755,261:6,250,257,289:5,257,755,261,259,758,261:2,259,758,261:2,259,758,261:2,250,261,755,259,245,758,259,120,758,250,0:3,257:2,755,259,758,259,758,229,739,228,261:2,245:2,758,261:4,245:2,758,261:4,245:2,229,0:6,251,257:7,761,0:4,170,171,174:3,171,162,0:2,228,261,229,0:6,251,0:3,755,261,229,0:5,46I(10),0:21,246,242:2,247,0,228,120,261,259,758,261,259,758,229,0:22,251,0:3,761,0:7,46I(10),0:21,251,234:2,761,0:32,251,0:3,761,0,246,247,0,246,247,0,737,239,242:5,241,242,757,242:7,241,242,757,242:2,252,257:2,761,0:32,251,0:3,761,0,228,229,0,228,229,0,239,252,234:23,761,0:5,178,239,757,241,240,0:22,251,0:3,753,0,260,0:3,260,0,237,234,257:23,759,0:5,175,251,234:2,761,0:3,246,247,0:5,246,247,0:5,246,242,247,0,246,252,0:3,754,0:7,258,257,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257,759,0:3,260,0,175,251,257:2,761,0:3,237,753,0:5,237,753,0:5,251,257,761,0,251,257,0:3,761,0,170,162,0,170,162,0,251,257,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257,759,0:5,175,251,256:2,756,242:3,252,756,242:5,252,756,242:5,252,257,761,0,251,257,0:3,761,0:7,251,257,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257:2,314:2,257,759,0,260,0:3,175,251,257:2,761,0:16,228,120,253,229,0,228,250,0:3,756,242,247,0:3,246,242,252,257:24,759,0:5,175,251,257:2,761,0:22,251,0:3,234:3,0:3,251,234:9,289:2,234:15,759,0:3,260,0,175,251,234:2,761,0:22,251,0:3,257:3,0:3,251,257:9,289:2,257:8,256,257:4,256,257,754,0:5,175,251,256:2,761,0,246,242,117,242:5,241,238,757,242:10,252,0:3,257:3,0:3,251,256:2,755,259,245:2,758,250,256,289:2,256,755,259,245:2,758,250,257,256,257:4,256,257,756,242,247,0:3,175,251,257:2,761,0,228,245,758,261,259,245,758,261,259,245,758,261,259,245,758,250,234:6,0:3,257:3,0:3,251,257:2,761,0:4,251,257:4,761,0:4,251,755,245:2,758,261,259,245:2,758,261,229,0:3,175,251,257:2,761,0,170,174:2,171,174:7,171,174:2,162,251,257,755,245,261,245,250,0:3,257:3,0:3,251,257:2,761,0:4,228,245,120,245,758,229,0:4,251,761,0:12,260,173,251,755,261,229,0:16,228,120,229,0:3,235,0:3,257:3,0:3,251,257:2,761,0:14,251,756,242:2,247,0,246,242,247,0:7,251,753,0:24,235,0:9,228,758,259,229,0:14,228,261:3,229,0,251,234,756,757,242:5,241,252,754,0:24,228,0:18,246,242:2,247,0:11,251,257,234:9,756,242,117,242,241,757,241,757,242:7,757,241,757,242:3,247,0:10,242:2,241,757,242:2,241,757,242:3,241,252,234:2,756,757,241,242:7,757,241,252,257,256,257:6,256,257,234:5,289:2,234:8,289:2,234:4,756,242:4,257:3" id="1"/>
<tiles values="0:64,109,0:34,108,0:18,80F,0:5,80F,0:24,110:3,0:7,110:3,0:14,109,0:14,108,0:10,108,0:9,28:2,0,28:2,0:4,28:3,0:13,28:3,0:21,108,0:10,108,0:58,108,0:10,108,0:72,61,0:41,28,0,84F,0:32,28:2,0,28:2,0:40,99F,0:7,91F,0:49,28,0:9,79F,0:4,79F:2,0,79F:2,0:4,79F,0:71,109,0:45,28,0:92,107,0,107,28,0,28,0:51,107,0:34,95:2,0:6,95:2,0:87,84F,0:5,79F,0:3,79F:2,0:3,79F:2,0:3,79F,0:26,109,0:9,28:2,0:33,109,0:44,108:2,61,0:47,28:2,0:11,107,0:12,28,0,61,0:26,154,0:5,28:2,0:34,107,0:20,107,0:3,62,0:71" id="2"/>
<tiles values="744:8,746,0:21,765,0:2,765,0:33,678,0,679,0:12,718,719,0:5,718,719,0:5,718,719,0:39,678,0,679,0:40,765,0:2,765,0:23,680,681,682,0:67,678,0,679,0:2,703:2,0,703:2,0:60,680,681,682,0:40,734,0:26,678,0,679,0:33,686,0:13,703:2,0:5,703:2,0:7,699,0,699,0,680,681,682,716,0:7,720,0:24,687,0:3,703,0:29,678,0,679,717,0:7,721,0:24,687,0:33,680,681,682,0:33,687,0,703,0:31,678,0,679,0:33,687,0:33,680,681,682,678,0,679,0:30,687,0:3,703,0:29,678,0,679,680,681,682,0:30,694,0:29,706,0,706,0,680,681,682,678,0,679,0:32,686,0:31,678,0,679,680,681,682,0:23,718,719,0:3,718,719,0:2,694,0:27,766,0,766,0,680,681,682,678,0,679,0:40,766,0:23,678,0,679,680,681,682,0:64,680,681,682,678,0,679,0:4,734,0:29,735,0:29,678,0,679,678,0,679,0:64,678,0,679,680,681,682,0:6,684,685:4,683,0:4,684,685:4,683,0:42,680,681,682" id="3"/>
<tiles values="0:118,10,7:5,12,0:24,10,7:3,12,0:4,10,7:4,12,0:25,10,7:3,12,0:6,10,7:3,12,0:54,10,7:3,12,0:6,10,7:3,12,0:54,10,7:3,12,0:6,10,7:3,12,0:114,11,0:69,6,0:69,6,0:5,10,7:5,12,0,10,7:5,12,0:49,6,0:69,6,0:20,11,0,11,0:46,6,0:20,9,0,9,0:46,6,0:69,6,0:69,9,0:5,10,7:3,12,10,7:3,12,10,7:3,12,0:74,11,0:34,11,0:4,10,7:3,12,0:25,6,0:34,6,0:34,6,0:34,9,0:34,9,0:75" id="4"/>
<tiles values="0:1400" id="5"/>
<tiles values="0:1266,1,115:3,0:130" id="6"/>
<sign text="The tower is riddled with trip wire lasers. Use your stealth ability when they pass over you, otherwise you'll set off an alarm and activate the search and destroy mode in nearby enemies. The alarm can also trigger robot factories to release more enemies into the area, avoid them at all cost or you'll get out numbered." n="1266" layer="6" width="0" height="0" face="ninja" forced="true"/>
<msg text="Security Grid"/>
</root>
;
level_data["15f58bfeca7cf36f0a853693fd9f9204"] = <root>
<level width="90" height="48" start_x="3" start_y="45" compression="false" background="0" scroll="0"/>
<tiles values="0:168,778:11,0:79,778:11,0:79,778:11,0:79,778:11,0:30,641,642,641,642,641,642,0:19,778:7,0:2,778:13,0:2,778:11,0:30,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778:8,642,778:13,642,641,778:11,0:30,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,778:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,644,778:6,0:30,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,644,778:9,638,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642:3,641,642,641,642,641,642,641,642,644,778:5,0:27,778,0:2,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,644,778:9,638,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641:2,642,641,642,641,642:2,641,642,641,642,644,778:4,0:23,778:5,0:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,644,778:9,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642:2,641,642,641,642,641:2,642,641,642,641,642,644,778:3,0:26,778:2,0:2,638,641,642,641,642,641:2,642,641,642,641,642,641,642,641,642,641,642,644,778:8,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641:2,642,641,642,641,642:2,641,642,641,642,641,642,644,778:2,642,0:26,778,0:2,778,638,641,642,641,642:2,641,642,641,642,641,642,641,642,641,642,641,642,644,778,641,642,0,778:3,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642:2,641,642,641,642,641:2,642,641,642,641,642,641,642,644,778,641,0:26,778,0:2,778:2,638,641,642,641:2,642,641,642,641,642,641,642,641,642,641,642,641,642,644,642,641,0:9,641,642,641,642,641,642,0:6,641,642,641,642,641,642:2,641,642,641,642,641,642,641,642,644,642,0:14,641,642,641,642,641,642,0:3,775:2,778:2,0:2,778:3,638,641,642:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,644,642,0:26,642,641,642,641,642,641,642,641,642,641,642,641,0:14,778:5,643,642,641,642,641,642,641,637,641,642,778:4,638,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642:2,0:26,641,642,641,642,641,642,641,642,641,642,641,642,0:14,778:4,643,642,641,642,641,642,641,637,778,642,641,778:5,638,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641:2,0:26,641,642,641,642,641,642,641,642,641,642,641,642,0:14,778:3,643,642,641,642,641,642,641,637,778:2,641,642,778:6,638,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642:2,0:10,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,641,642,641,642,641,642,641,642,641,642,641,0:14,778:5,642,641,642,641,642,778,642,641,642,641,778:12,506,778,642,641,642,641,642,641,642,641:2,0:10,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778:2,641,642,641,642,641,642,641,642,641,642,0:10,641,642,641,642,506:3,778:3,506:2,778:5,506,642,641,642,641,642,641,642,778:2,641,642,641,778,506,642,641,642,641,642,641,642,641,642:2,0:10,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778:6,638,641,642,641,642,641,0:10,641,642,778,642,641,642,641,642,641,778:2,637,778:2,641,642,641,506,778:7,506,778,641,642,641,778,506,642,0:19,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778:7,638,641,642,641,642,0:10,642,641,642,641,642,641,642,641,642,641,637:2,778:2,642,641,642,778:8,506,641,642,641,778:2,506,641,0:19,586,585,586,585,586,585,586,585,586,585,586,585,0:3,638,0:22,641,642,641,642,641,642,641,642,641,637,641,642,778:2,643,642,641,642,641,642,641,642,641:2,642,641,642,641,642,641,642,641,642,0:19,564,563,564,563,564,563,564,563,564,563,564,563,519,0:25,642,641,642,641,642,641,642,641,637,778,642,641,778,643,642,641,642,641,642,641,642,641,642:2,641,642,641,642,641,642,641,642,641,0:19,586,585,586,585,586,585,586,585,586,585,586,585,0:26,641,642,641,642,641,642,641,642,778:2,641,642,643,642,641,642,641,642,641,642,641,642,641:2,642,641,642,641,642,641,642,641,642,0:19,564,563,564,563,564,563,564,563,564,563,564,563,0:26,642,641,642,641,642,641,642,641,778:2,642,641,0:10,775:2,778:2,641,642,641,642,641,642,641,642,0:18,586,585,586,585,586,585,586,585,586,585,586,585,0:26,641,642,641,642,641,642,641,642,778:2,641,642,775:12,778:2,642,641,642,641,642,641,642,641,0:18,564,563,564,563,564,563,564,563,564,563,564,563,0:26,642,641,642,641,778,641,642,778:2,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778:3,642,778,638,641,642,641,642,0,778,775:3,0:13,586,585,586,585,586,585,586,585,586,585,586,585,0:26,641,642,641,642,778:4,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,644,778:5,638,641,778:2,642,778,775:5,0:11,564,563,564,563,564,563,564,563,564,563,564,563,0:25,641,642,641,637,641,642,778:2,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,644,778:15,0:11,778:2,586,585,586,585,586,585,586,778,0:27,642,641,642,778,642,641,778,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641:2,644,778:14,0:11,564,563,564,563,778:2,564,563,564,778,0:27,641,642,778:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642:3,641,778:2,642,641,642,641,642,775:6,0:11,778:2,586,585,778:5,585,586,585,0:25,642,641,778:3,641,642,778,642,641,642,778,642,641,642,641,642,641,642,641,642,778:2,641,778:4,642,644,509,506,509,778,642,641,0:17,564,563,564,563,564,563,564,563,564,563,564,563,0:17,642,641,0:6,641,642,778:2,506:2,778:4,506:3,778:3,506:3,778:3,506:3,778:5,506:3,778,641,642,0:15,778:2,586,585,586,585,586,585,586,585,778,585,586,778,0:17,778:2,0:8,778,0:4,778:2,0,778:2,0,775:4,778,775:3,0:2,778:2,0:2,778:3,506:3,778,641,642,0:15,778:4,564,563,778:2,564,563,778:2,564,778,0:17,778:2,0:8,778:2,506:5,642,641:2,642:2,641:2,642,775:2,778:2,775:9,506:3,778,642,641,0:15,778,585,586,585,586,585,586,585,586,585,586,585,0:19,778:2,0:7,778:3,506:5,775,778:3,775:4,778,506,509,506:2,509,506:2,509,506,642,641,642,506,509,506,642,641,642,0:15,778:4,564,563,564,563,564,563,564,563,0:19,778:2,642,641,642,641,642,641,642,641,642,778,506:5,642,778:3,642,641,642,641,778,506,778,642,641,642,641,778,506,778,641,642,641,506:3,641,642,641,0:8,778:13,586,778,586,585,586,585,0:19,778:2,641,642,641,642,641,642,641,642,641,778,0:2,778,506:2,641,778:3,643,642,641,642,641,506,642,506:4,778,506:2,642,641,642,506:3,642,641,642,0:8,778:2,611:2,635,778:13,563,0:19,778:2,642,641,642,641,642,641,642,641,642,778:4,641:2,642,778:2,643,642,641,642,641,637,506,778,506:4,778,506,509,641,642,641,509,506,509,641,642,0:9,778,611,635,778:9,635,778:5,0:20,778:2,641,642,641,642,641,642,641,642,641,642,641,642,637,778,642,641,778,643,642,641,642,641,637,778,506,778,506:4,778,506:2,778:3,506:3,642,641,0:9,778,611:4,635,778,591,778:2,635,778:4,611,778,591,0:20,778:2,642,641,642,641,642,641,642,641,642,641,642,637,778:2,641,642,643,642,641,642,641,637,641,778,509,778,775:4,778,506:2,778:3,506:3,641,642,0:9,611:5,590,778,635,511,611:2,778,591,778:2,611,635,778,0:20,778:2,641,642,641,642,641,642,641,642,641,642,637,778:4,641,642,641,642,641,637,778:2,506:2,778,775:4,778,506:2,778:3,506:3,642,641,0:9,611,635,611:2,590,591:2,778:5,591,778,611:2,590,778,0:20,778:2,638,641,642,641,642,641,642,641,642,637,778:4,643,642,641,642,641,637,641,642,641,778:2,642,0:4,641,778:2,642,641:2,642,641,642,641,642,0:9,611:3,590,591:3,778:6,611:2,590,591:2,0:20,778:3,638,641,642,641,642,641,642,637,778:4,643,642,641,642,641,637,642:2,778,0:8,642,641,642,641,642,641,0:14,589,611,590,591:2,636,778:2,591:2,491,611:3,590,591:2,778,0:20,778:4,638,641,642,641,642,637,778:4,643,642,641,642,641,637,641:3,778,0:8,641,642,641,642,641,642,0:14,491,590,591:4,778,591:2,491,611:3,590,591:2,491,492,0:20,778:5,638,641,642,637,778:6,639,637,641,637,641,642:3,778,0:28,590,491,492,636,591,778:3,491,611:3,778,591:2,491,635,611,0:20,778:4,0:7,642,641,778:2,653,674,642,641,642,641:3,0:66" id="0"/>
<tiles values="327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,314,327:7,314:2,327:3,314:2,327:3,314:2,327:4,781,330:11,782,327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,314,327:7,314:2,327:3,314:2,327:3,314:2,327:4,364,0:11,356,327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,314,327:7,314:2,327:3,314:2,327:3,314:2,327:4,364,0:11,356,327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,314,370,327:5,370,314:2,370,327,370,314:2,370,327,370,314:2,370,327:3,364,347,350,0:7,349,346,356,327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,781,331:7,782,781,331:3,782,781,331:3,782,781,331:3,782,364,336,338,0:7,337,335,356,327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,364,0:7,368,364,0:3,368,364,0:3,368,364,0:3,368,364,0:11,356,327:15,314,327:3,314,327:3,314,327:2,364,410,327:24,779,364,0:2,322,321,0:3,368,364,0:3,368,364,0:3,368,364,0,349,346,368,364,347,350,0:7,349,346,356,327:15,314,327:3,314,327:3,314,327:2,364,410,397,403:2,400:2,403:2,400:2,403:2,400:2,403:2,400:2,403:2,400:3,403:2,405,359,0:2,356,364,0:3,368,364,0:3,368,364,0:3,368,364,0,337,335,368,364,336,338,0:7,337,335,356,327:15,314,327:3,314,327:3,314,327:2,364,391,780,0:27,356,364,0:3,361,359,0:3,368,364,0:3,368,364,0:3,368,364,0:11,356,327:15,314,327:3,314,327,781,330:4,329,410,779,0:27,356,364,0:8,368,364,0:3,368,364,0,349,346,368,364,347,350,0:7,349,346,356,327:15,314,327:3,314,327,364,0:5,410,779,0:27,356,364,0:8,368,364,0:3,368,364,0,337,335,368,364,336,338,0:7,337,335,356,327:8,314:13,358,360:3,334,0,410,779,0:21,325,348,334,0:3,356,364,0:8,361,359,0:3,361,359,0:3,361,359,0:11,356,327:8,314:17,364,0,391,780,0:21,368,314,364,0:3,356,364,0:31,356,327:8,314:17,364,0,410,779,0:21,368,314,358,360:3,357,358,360:22,334,0:8,356,327:8,314:5,781,330,120,330:9,329,0,410,779,0:21,368,314:29,364,0:8,356,327:8,314:5,353,0:13,410,779,0:21,368,314:29,364,0:8,356,327:8,314:5,353,0:13,386,780,0:19,138F,0,368,314:3,327:5,314:2,781,330:7,782,781,330:8,782,358,348:5,334,0:2,356,327:8,314:5,353,0:13,404,405,0,324,371:2,360:2,371:2,360:2,371:2,360:2,371:2,360:2,371:2,360,357,314:3,327:5,314:2,353,0:7,368,353,0:8,368,314:6,364,0:2,356,327:8,314:5,353,339:3,0,48I(9),360:9,334,0:13,392,414,783,393,409,408,407,314:5,327:5,314:2,353,0:7,368,353,0:8,333,331,330:5,329,0:2,356,327:8,314:5,353,0:14,358,360:6,323,324,360:3,334,0,410,412,388,779,327:3,314:5,327:5,314:2,353,0:7,333,329,0:18,356,327:8,314:3,781,362,358,348:5,323,392,393,0:2,392,402,393,0:9,322,314,781,331,329,0,391,390,389,780,327:3,314:5,327:5,314:2,353,0:27,356,327:8,314:3,353,0:8,410,779,0:2,386,388,779,363,331:6,362,0,368,314,353,0:3,410,385,413,779,327:3,314:5,327:5,314:2,353,0:11,325,348:15,357,327:8,314:3,364,0:8,410,779,0:2,404,120,405,0:9,368,314,353,0:2,392,394,388:2,779,327:3,314:5,327:5,314:2,353,0:11,368,314:16,327:3,289:5,314:3,364,0,325,360,323,0:4,410,779,0:14,361,314,359,0:2,391,313:3,779,327:3,314:5,327:5,314:2,353,0:11,368,314:16,327:8,314:3,364,0,368,0:6,391,780,0:14,392,402,393,0:2,410,388:3,779,327:3,314:5,327:5,314:2,353,0:11,368,314:5,327:19,314:3,364,0,368,392,783,414,393,0:2,410,395,402,414,783,398,783:3,398,783:2,402,393,0:2,391,388,780,0:2,391,388:3,780,327:3,314:5,327:5,314:2,353,324,323,0:9,368,314:5,327:19,314:3,364,0,368,391,412,389,780,0:2,410,409,408,407,313,388:4,313,409,408,407,779,0:2,410,412,779,0:2,410,313:3,779,314:8,327:5,314:2,353,0:4,324,348:5,323,368,314:5,327:19,314:3,364,0,368,404,403,400,405,0:2,404,401,403,400,403,400,403,400,403,400,403,400,396,779,0:2,391,388,780,0:2,391,397,401,400,405,314:8,327:5,314:2,353,0:10,325,357,314:5,327:14,289:5,314:3,364,0,368,321,0:17,410,779,0:2,404,739,405,0:2,404,405,363,330,120,330:5,782,314:2,327:5,314:2,353,0:10,368,314:6,327:19,314:3,364,0,368,364,0:17,404,405,0:3,46I(9),0:13,368,314:2,327:5,314:2,353,0:10,368,314:6,327:19,314:3,364,0,368,353,0:22,46I(9),0:13,368,314:2,327:5,314:2,353,0:10,368,314:6,327:19,314:3,364,0,368,358,348:2,334,117,325,348:11,334,117,325,348:2,334,737,325,348:12,357,314:2,327:5,314:2,359,0:10,368,314:6,327:19,314:3,364,0,333,331:2,362,358,348,357,363,330:9,362,358,348,357,363,362,358,348,357,0:3,322,314:8,392,402,783,402,783,402,783,402,783,402,783,402,783,402,783,402,783,402,393,0:2,333,782,314:5,327:14,314:8,359,0:30,368,314:3,327:5,410,388:8,397,400,403,400,403,400,403,400,403,405,0:3,356,314:5,327:12,0,327,314:8,324,360:4,323,324,360,323,324,360:6,348:5,323,324,348:2,323,324,334,0:3,368,314:3,327:5,410,388:8,779,0:12,361,314:5,327:12,0,327,314:8,321,0:6,781,331:2,782,314:4,781,330:3,331:6,782,314,364,0:3,368,314:3,327:5,410,388:8,779,0:4,392,402,783,402,783,402,783,402,783,402,783,402,783,402,783:11,327,0,327,781,331:6,330,329,0:6,353,0:2,333,331:4,329,0:9,356,314,364,0:3,368,314:8,410,370:8,405,0:4,404,370:6,327:19,0,781,329,0:14,353,339,0,325,360:4,334,0,325,348:4,334,0:2,356,314,364,0:3,368,314:3,327:5,410,370,0:18,370,327:19,0,353,48I(1),0:8,363,330:2,782,0:2,353,0:2,361,0:4,353,0,356,0:4,364,0:2,356,314,364,0:3,368,314:3,327:5,410,370,0:18,370,327:19,0,358,334,0:8,739,339,739,333,330,782,353,0:7,359,0,361,0:4,364,0:2,356,314,364,0:3,368,314:3,327:5,410,370,347,350,0:14,349,346,370,327:19,0,327,353,0:2,322,0:2,321,0:2,46I(1),0,46I(1),0:2,356,353,0:14,359,0:2,333,330,329,0:3,368,314:8,410,370,336,338,0:14,337,335,370,327:19,0,327,353,0:2,356,0:2,364,0:2,46I(1),0,46I(1),0:2,356,353,0:2,324,348:4,323,0,324,348:4,323,0:8,368,314:3,327:5,410,370,0:18,370,327:19,0,327,353,0:2,361,0:2,359,0:2,46I(1),0,46I(1),0:2,333,329,0:9,322,314:4,321,0:8,356,314:3,327:5,410,370,0:18,370,327:19,0,327,353,0:8,46I(1),0,46I(1),0:6,325,348:4,323,324,357,314:4,358,323,324,348:6,357,314:3,327:5,410,370,347,350,0:14,349,346,370,327:19,0,327,359,0:8,46I(1),0,46I(1),0:6,368,314:29,410,370,336,338,0:14,337,335,370,327:19,0:11,46I(1),0,46I(1),0:6,368,314:29,410,370,0:18,370,327:21,360:8,334,737,339,737,392,398,783:2,398,393,368,314:29,410,370,0:18,370,327:19,0,327,313:8,358,360:2,323,386,409,408,407,413,779,368,314:24,327:5,410,370:20,327:18" id="1"/>
<tiles values="0:506,28:2,0:105,111,0:89,111,0:89,111:3,0:87,111,0:38,28:4,0:220,126,0:9,107:4,0:115,37,0:162,43,0:31,27,0:2,103,0:2,32F,0,31F,104,32F,0,31F,0,32F,0:2,104,0:28,79,0:28,27,0:3,104,0:51,107:2,0:88,107:2,0:32,61,0:8,28:2,0:45,107:2,0:7,107:2,0:79,107:2,0:7,107:2,0:49,61,0:61,27,0:11,38,0:37,31,0:3,31,0:129,104,0:7,104,103,104,0:2,103,0:2,103,0:28,61:2,0:277,110,0:63,109,0:25,110,0:89,110,0:34,104,103:2,0,103:3,0,103,0,104:3,103,0,104:3,103,0:6,104,0,104,0:3,104:2,0:22,110,0:36,32,0:13,32,0:29,61:2,0:7,110,0:142,34,0:35,107:2,0:217,28,0:8,28,0:167,28:2,0:78,28,0:2,28,0:11,38,0:3,38,0:89,103F,0:3,104F,0:2,28,0:181,61,28,0:202,791,0:32,154,0:146,30,0:121" id="2"/>
<tiles values="0:78,766,0,766,0,766,0,766,0,766,0,766,0:331,766,0:2,766,0,766,0:2,766,0,766,0:2,766,0,766,0:133,684,685:21,683,0:67,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:3,766:2,0:99,766:2,0:273,766:2,0:3,766:2,0:3,766:2,0:206,766,0,766,0,766,0,766,0,766,0,766,0,766,0:175,464,463,462,0:37,767:7,0:2,767:5,0,767:2,0:33,456,470,471,0:6,697,722,0:2,697,722,0:2,697,722,0:2,697,722,0:2,697,722,0:11,686,0:19,684,685:4,683,0:23,744:9,746,0:31,687,0:18,767:8,0:31,752,751:8,746,0:22,687,0:41,766,0,766,0:2,766,0,766,0:6,734,0:10,749,0:22,687,0:56,766,0,766,0,766,0,766,0:3,749,0:22,687,0:27,733,0:38,749,0:22,687,0:14,684,685:9,683,0:32,464,463,462,0:6,749,0:22,687,0:13,686,0:15,678,0,679,0:11,468,460,0:12,456,470,471,0:6,749,0:22,687,0:13,687,0:15,680,681,682,0:34,749,0:22,687,0,767:2,0:10,687,0:15,678,0,679,0:34,749,0:22,687,0:5,767:6,0:2,694,0:15,680,681,682,0:12,766,0,766,0:2,766,0,766,0,766,0,766,0,766,0,766,0:6,749,0:22,687,0:29,678,0,679,0:38,735,0:18,687,0:12,686,0:16,680,681,682,0:16,464,463,462,0:6,464,463,462,0:12,459,467,0,464,463,462,0:2,727,0:8,687,0:12,687,0:16,678,0,679,0:16,456,470,471,0:6,456,470,471,0:15,456,470,471,0:2,728,0:8,694,0:12,687,0:16,680,681,682,0:36,766,0,766,0,684,685:4,683,0:24,694,0:16,678,0,679,0:87,680,681,682,0:56,686,0:30,678,0,679,0:56,687,0:30,680,681,682,745,744:8,746,0:14,766,0:31,694,0:30,678,0,679,743,766,0,766,0:2,766,0:2,748,0:40,767:8,0:4,767:6,0:19,680,681,682,741,0:8,749,0:77,678,0,679,0:9,747,0:8,766,0:3,766,0:64,680,681,682,0:87,678,0,679,0:33,766,0,766,0:51,680,681,682,0:19,684,685:2,683,0:3,684,685:2,683,0:57,678,0,679,0:3,766,0:2,766,0:80,680,681,682,0:87,678,0,679,0:87,678,0,679,0:87,680,681,682,0:87,678,0,679,0:50,764:18,0:19" id="3"/>
<tiles values="0:1038,11:2,0:88,6:2,0:26,8:4,0:46,11,0,11,0,11,0,11,0,11,0:3,6:2,0:76,6,0,6,0,6,0,6,0,6,0:3,6:2,0:76,6,0,6,0,6,0,6,0,6,0:3,6:2,0:71,10I(5),7:2,12I(5),0,9,0,9,8,9,0,9,0,9,0:2,8,9:2,0:59,10,7:3,12I(3),0:47,8:2,0:80,11,0:3,11,0:3,8:2,0:80,6,0:3,6,0:3,8:2,0:7,8:2,0:71,6,0:3,6,0:3,8:2,0:7,8:2,0:71,6,0:3,6,0:85,6,0:3,6,0:85,6,0:3,6,0:37,10,7,12I(3),0:6,10,7,12,8,0:2,8,0:2,8,0:29,9,0:3,9,0:273,8,0:89,8,0:89,8,0:34,8,0,8,0:5,8,0,8,0:2,8,0:11,8,0,10,7:2,12,10,7,12,0:21,8,0:89,8,0:141,10,7:3,12,0:32,8:2,0:489,8,0:3,8,0:87,10I(3),7:2,12I(3),0,10I(3),7:2,12I(3),0:688" id="4"/>
<tiles values="0:1146,10,7:13,10I(1),11,0:269,10,7:4,10I(1),11,0:434,11,12I(1),7:14,12,0:426,11,12I(1),12:6,0:529,10:8,11,0:263,11,12,12I(2),12:6,0:1065,12:8,0:114" id="5"/>
<tiles values="0:1048,115:7,0:83,115:2,1,115:4,0:579,1,115:2,0:176,115:3,0:87,115,1,115,0:988,115:3,1,115:3,0:733,115:8,0:82,115:3,1,115:4,0:498" id="6"/>
<sign text="WHAT? Come to kill me eh? Who sent you? Probably Maxwell himself, the coward! Pah, I'm smarter than all small brained people like you, and faster! " n="1140" layer="6" width="0" height="0" face="coward" forced="true"/>
<sign text="Don't get lost, this lab is like a maze, remember you can follow the cables back to a forcefield." n="1724" layer="6" width="0" height="0" face="ninja" forced="false"/>
<sign text="These power orbs fuel your stealth suit for the disguise. You can only carry one at a time. Activating stealth when touching a stunned scientist will change your image. As I said you have a short time limit before it runs out. Use your ninja stars or rope to deactivate the disguise." n="1994" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Mr Merlock your offer was frankly insulting and didn't make much sense. The cheap n chunky brand is now the dominant snack in the western world, and its formula was entirely my creation, your love of eating is not the issue here.
We are now on the verge of creating a food revolution and I will not be treated like some minion when I am a gastronomic genius!!!
I know you are visiting the complex, I demand you meet me in person ASAP." n="2987" layer="6" width="0" height="0" face="coward" forced="false"/>
<sign text="Taki, youre in Boshi's lab. Your nearly there but you can't just stroll in and take him out. I think I have a plan. Your suit with a power boost should be able to copy a clone's image. It won't last long, a few seconds at most but it'll get you past clones and lasers." n="3817" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="Lab Area 2"/>
</root>
;
level_data["68f81176548a214c0ac20c01d985ae4d"] = <root>
<level width="21" height="13" start_x="10" start_y="9" compression="false" background="5" scroll="2"/>
<tiles values="523,506,523:8,506,523:3,506,523:4,506,523,506:2,778,631,629,627,778:2,628,630,506,629,627,778:2,628,630,632,778,506:4,615,614,612,609,778:2,610,613,506,612,609,778,506,610,613,626,616,506:4,625,614,628,630,778:2,629,627,506,628,630,778:2,629,627,626,624,506:2,523,506,778,608,610,613,778:2,612,609,506,610,613,778:2,612,609,607,523,506,523,506:3,523,629,627,778:2,628,630,506,629,627,778:2,628,630,523,506:6,523,612,609,778:2,610,613,506,612,609,778:2,610,613,523,506:6,523,628,630,506,778,629,627,506,628,630,778,506,629,627,523,506:3,523,506,523:2,610,613,506,778,612,609,506,610,613,778,506,612,609,523:2,506,523,506:2,778,631,629,627,506,778,628,630,506,629,627,778,506,628,630,632,778,506:4,615,614,612,609,506,778,610,613,506,612,609,778,506,610,613,626,616,506:4,625,614,628,630,778:2,629,627,506,628,630,778:2,629,627,626,624,506:2,523,506,778,608,610,613,778:2,612,609,506,610,613,778:2,612,609,607,523,506,523" id="0"/>
<tiles values="0:108,178,0:13,178,0:5,772,770,768,0:11,772,770,768,0:4,170,121,162,0:11,170,121,162,0:45,772,771,770:15,769,768,0:43" id="1"/>
<tiles values="0:107,28,0,59,0:5,25,0:5,57,0,61,0:109,774F,0:15,773F,0:23" id="2"/>
<tiles values="0:128,789,0,790,0:11,789,0,790,0:66,698,0:4,698:3,0:3,698:3,0:4,698,0:43" id="3"/>
<tiles values="0:70,10:3,11,12:3,0:14,9,0:2,11,0:2,9,0:11,8,0:2,9,0:2,11,0:2,9,0:2,8,0:11,9,0:2,11,0:2,9,0:14,9,7:5,9,0:112" id="4"/>
<tiles values="0:273" id="5"/>
<tiles values="0:273" id="6"/>
<msg text="Service Lift 2"/>
</root>
;
level_data["70a87fde8f058ff69acb0c1b8b8deffb"] = <root>
<level width="86" height="53" start_x="3" start_y="44" compression="false" background="2" scroll="0"/>
<tiles values="0,778,0,586,585,0:79,778,0:2,778,0,564,563,0:79,778,0:2,778,0,564,563,0:79,778,0:2,778,0,586,585,0:79,778,0:2,778,0,564,563,0:79,778,0:2,778,0,586,585,0:79,778,0:2,778,0,564,563,0:79,778,0:2,778,0,586,585,0:79,778,0:2,778,0,564,563,0:66,586,585,586,585,0:9,778,0:2,778,0,586,585,0:66,564,563,564,563,0:5,425,424,0:2,778,0:2,778,0,564,563,0:66,586,585,586,585,0:9,778,0:2,778,0,586,585,0:66,564,563,564,563,0:9,778,0:2,778,0,564,563,0:66,586,585,586,585:2,0:8,778,0:2,778,0,586,585,0:66,564,563,564,563:2,0:8,778,0:2,778,0,564,563,0:66,586,585,586,585,0:9,778,0:2,778,0,586,585,0:66,564,563,564,563,0:9,778,0:2,778,0,564,563,0:66,586,585,586,585,586,585,586,585,586,585,586,585,778:2,0:2,778,0,586,585,0:66,564,563,564,563,564,563,564,563,564,563,564,563,778:2,0:2,778,0,564,563,0:66,586,585,586,585,586,585,0:7,778,0:2,778,0,586,585,0:57,586,585,586,585,0:5,564,563,564,563,564,563,0:7,778,0:2,778,0,564,563,0:49,532,778,585,586,585,586,585,586,564,586,585,586,585,586,585,586,585,586:3,585,586,585,586,585,586,585,0:3,778,0:2,778,0,586,585,0:18,662,778,0:15,661,778,0:4,661,778,0:7,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564:2,778:3,563,564,563,564,563,586,585,0,778,0:2,778,0,564,563,0:18,662,660,0:9,661,778,0,659:5,0,659:5,0:3,659:3,586,585,586,585,563:2,660,0:5,563,662,563,0:3,635,660,0,481,563,0,481,563:2,564,563,0,778,0:2,778,0,586,585,0:18,662,0,645,778,0:5,659:4,778,0,660,0:5,660,0:9,564,563,564,563:2,660,0:6,481,662,660,0:10,481,563,586,585,0,778,0:2,778,0,564,563,0:14,661,659:3,636,659:3,533,0:6,648,0,647,0:17,586,585,586,585,660,0:8,662,0:12,481,564,563,0,778,0:2,778,0,586,585,0:15,662,0,648,0,647,0:29,564,563,564,563,0:9,662,0:13,586,585,0,778,0:2,778,0,564,563,646,0:4,645,662,647,0:7,662,0:33,586,585,586,585,0:9,662,0:13,564,563,0,778,0:2,778,0,586,585,659:10,0:3,659:2,636,660,0:29,659:3,564,563,564,563,0:9,662,0:13,586,585,0,778,0:2,778,0,564,563,647,0:48,586,585,586,585,0:9,662,0:13,564,563,0,778,0:2,778,0,586,585,0:49,564,563,564,563,0:9,662,0:13,586,585,0,778,0:2,778,0,564,563,0:49,586,585,586,585,0:9,662,0:13,564,563,0,778,0:2,778,0,586,585,0:49,564,563,564,563,0:9,662,0:13,586,585,0,778,0:2,778,0,564,563,0:46,659:3,586,585,586,585,0:9,662,0:13,564,563,0,778,0:2,778,0,586,585,0:49,564,563,564,563,0:9,662,0:13,586,585,0,778,0:2,778,0,564,563,0:49,586,585,586,585,0:9,662,0:13,564,563,0,778,0:2,778,0,586,585,0:49,564,563,564,563,535,0:7,661,662,480,0:12,586,585,0,778,0:2,778,0,564,563,0:49,586,585,586,585,565,535,0:21,564,563,0,778,0:2,778,0,586,585,0:46,659:3,564,563,778:2,586,585,586,585,586,585,586,585,586,585,586,585,586,585,0:9,586,585,0,778,0:2,778,0,564,563,0:49,586,585,586,585,564,563,564,563,564,563,564,563,564,563,564,563,564,563,0:9,564,563,0,778,0:2,778,0,586,585,0:29,586,585,0:18,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,0:9,586,585,0,778,0:2,778,0,564,563,0:29,564,563,0:18,586,585,586,585,586,585,565,778:2,0:4,565,778,585,586,585,563,0:8,564,563,0,778,0:2,778,0,586,585,0:29,586,585,0:18,778,585,586,585,586,585,586,778,660,0:4,481,778,563,564,778,660,0:8,586,585,0,778,0:2,778,0,564,563,0:29,564,563,0:17,495,778,563,564,563,564,563,564,778,0:6,778,585,586,778,0:9,564,563,0,778,0:2,778:2,586,585,0:8,661,0:2,562,0:13,586,585,586,585,586:2,585,586,585,0:4,586,585,586,585,586,585,0:3,522:2,564,563,564,563,586,585,586,778,0:6,778,563,564,563,0:9,586,585,0,778,0:2,778:2,564,563,0:8,662:4,0:13,564,563,564,563,564:2,563,564,563,0:4,564,563,564,563,564,563,0:3,586,585,586,585,586:2,564,563,564,778,0:6,778,585,586:2,585,0:8,564,563,0,778,0:2,778,0:2,778,0:8,662:4,0:13,586,585,586,585,586,585,586,585:2,0:4,586,585,586,585,586,585,0:3,564,563,586,585,586,585,563,565,586,778,0:6,778,563,586,564,563,0:8,586,585,0,778,0:2,778,0:5,586,585,586,585,586,585,586:2,585,0:4,586,585,586,585,586,585,0:4,564,563,564,563,564,563,564,563:2,0:4,564,563,564,563,564,563,0:3,564,563,564,563,564,563,585,565,564,778,646,0:4,645,778,585,564,586,585,0:8,564,563,0,778,0:2,778,0:5,564,563,564,563,564,563,564:2,563,0:4,564,563,564,563,564,563,0:4,586,585,586,585,586,585,586,585:2,0:4,586,585,586,585,586,585,0:3,586,585,586,585,586,585,563,565:2,562,0:4,561,565,564,563,586,564,563,0:8,586,585,0,778,0:2,778,0:5,586,585,586,585,586,585,586,585:2,0:4,586,585,586,585,586,585,0:4,564,563,564,563,564,563,564,563:2,0:4,564,563,564,563,564,563,0:3,564,563,564,563,564,563,585,586,585,586,585,586,585,586,585,586,585:2,564,586,585,0:8,564,563,0,778,0:2,778,0:5,564,563,564,563,564,563,564,563:2,0:4,564,563,564,563,564,563,0:4,586,585,586,585,586,585,586,585:2,0:4,586,585,586,585,586,585,0:3,586,585,586,585,586,585,563,564,563,564,563,564,563,564,563,564,563,585,586,564,563,0:8,586,585,0,778,0:2,778,0:4,661,586,585,586,585,586,585,586,585:2,0:4,586,585,586,585,586,585,0:4,564,563,564,563,564,563,564,563:2,0:4,564,563,564,563,564,563,659,0:2,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,586,585,0:8,564,563,0,778,0:2,778,0:4,648,564,563,564,563,564,563,564,563,585,0:4,564,563,564,563,564,563,0:4,586,585,586,585,586,585,586,585:2,0:4,586,585,586,585,586,585,647,0:2,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,564,563,0:8,586,585,0,778,0:2,778,0:5,586,585,586,585,586,585,586,585,563,0:4,586,585,586,585,586,585,0:4,564,563,564,563,564,563,564,563:2,0:4,564,563,564,563,564,563,0:3,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,586,585,0:8,564,563,0,778,0" id="0"/>
<tiles values="327,0,327,779,0:49,376,378,356,314:14,353,184,182,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,184,182,180,224,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,180,224,180,224,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,180,224,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,180,224,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,180,224,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,180,224,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,180,224,368,314:7,327:4,0,327,779,0:49,376,378,356,314:14,353,183,185,184,182,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,222,220,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,214,212,368,314:7,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,225,181,0:2,333,332,331,332,331,332,331,332,327,0,327:2,0,327,779,0:49,376,378,356,314:14,353,183,185,0:12,327:2,0,327,779,0:49,379,381,356,314:14,353,225,181,0:2,325,371,360,371,360,371,360,371,327:4,0,327,405,0:51,333,332:2,330:2,332:2,330:5,332:2,330,329,183,185,0:2,368,314:7,327,0,327:2,0,327,0:59,225,181,0,225,181,0:4,225,181,0:2,333,332,331,332,331,332,331,332,327,0,327:2,0,327,0:20,324,323,0:10,324,360,323,0:3,324,360,323,0:3,324,360,323,382,384,0,201,199,218,216,218,216,218,217,219,221,223,0,222,220,218,216,218,216,221,223,0:3,222,220,217,219,217,219,217,327,0,327:2,0,327,0:32,382,383,384,0:3,382,383,384,0:3,382,383,384,376,378,0,226,205,210,208,210,208,210,209,211,213,215,0,214,212,210,208,210,208,213,215,0:3,214,212,209,211,209,211,209,327,0,327:2,0,327,0:23,324,360:5,323,0:2,379,380,381,0:3,379,380,381,0:3,379,380,381,376,378,0,184,182,321,0:27,327,0,327:2,0,327,0:17,324,323,0:7,382,383:2,384,0:17,376,378,0,180,224,364,0:27,327,0,327:2,0,327,0:7,324,360,323,0:16,379,380:2,381,0:17,376,378,0,184,182,341,0:27,327,0,327:2,0,327,0:47,376,378,0,180,224,364,0:27,327,0,327:2,0,327,0:2,324,360,323,0:6,324,360:3,323,0:31,376,378,0,184,182,341,0:27,327,0,327:2,0,327,0:47,376,378,0,180,224,364,0:27,327,0,327:2,0,327,321,0:46,376,378,0,184,182,341,0:27,327,0,327:2,0,327,359,0:46,376,378,0,180,224,364,0:26,392,327,0,327:2,0,327,0:47,376,378,0,184,182,341,0:26,410,327,0,327:2,0,327,0:47,376,378,0,180,224,364,0:26,410,327,0,327:2,0,327,321,0:46,376,378,0,184,182,341,0:26,410,327,0,327:2,0,327,359,0:46,376,378,0,180,224,364,0:26,410,327,0,327:2,0,327,0:47,376,378,0,184,182,341,0:26,410,327,0,327:2,0,327,0:47,376,378,0,180,224,364,0,201,199,197,195,197,195,197,195,197,195,197,195,197,195,200,202,0:9,410,327,0,327:2,0,327,321,0:46,376,378,0,184,182,341,0,226,205,191,189,191,189,191,189,191,189,191,189,191,189,206,227,0:9,410,327,0,327:2,0,327,364,0:29,325,360,334,0:14,379,381,0,180,224,358,348:3,323,0:7,324,360:2,323,183,185,0:9,410,327,0,327:2,0,327,359,0:29,368,0,353,0:17,222,220,217,219,217,219,217,219,217,219,217,219,217,219,217,219,217,219,221,223,0:9,410,327,0,327:4,0:30,368,0,353,0:17,214,212,209,211,209,211,209,211,209,211,209,211,209,211,209,211,209,211,213,215,0:9,410,327,0,327:2,0,327,0:30,368,0,353,0:46,410,327,0,327:2,0,327,0:26,201,199,197,195,368,0,353,197,195,200,202,0:2,201,199,197,195,197,195,200,202,0:32,410,327,0,327:2,0:12,324,334,325,323,0:12,226,205,191,189,368,0,353,191,189,206,227,0:2,226,205,191,189,191,189,206,227,0,201,199,195,197,195,197,195,200,202,0:10,201,199,200,202,0:8,410,327,0,327:2,0:13,359,361,0:13,184,182,0:2,361,0,359,0:2,183,185,0:2,184,182,0:4,183,185,0,226,205,189,191,189,191,189,206,227,0:10,226,205,206,227,0:8,410,327,0,327:4,348,334,0,201,199,197,195,197,195,197,195,197,200,202,0:2,201,199,197,195,197,195,200,202,0:2,180,224,0:7,225,181,0:2,180,224,0:4,225,181,0,184,182,0:5,183,185,0:10,184,182,183,185,0:8,410,327,0,327:2,0,327,314,364,0,226,205,191,189,191,189,191,189,191,206,227,0:2,226,205,191,189,191,189,206,227,0:2,184,182,0:7,183,185,0:2,184,182,0:4,183,185,0,180,224,0:5,225,181,0:10,180,224,225,181,0:8,410,327,0,327:2,0,327,314,364,0,184,182,0:7,183,185,0:2,184,182,0:4,183,185,0:2,180,224,0:7,225,181,0:2,180,224,0:4,225,181,0,184,182,0:5,222,220,217,219,217,219,217,219,217,219,217,219,221,223,183,185,0:8,410,327,0,327:2,0,327,314,341,0,180,224,0:7,225,181,0:2,180,224,0:4,225,181,0:2,184,182,0:7,183,185,0:2,184,182,0:4,183,185,0,180,224,0:5,214,212,209,211,209,211,209,211,209,211,209,211,213,215,225,181,0:8,410,327,0,327:2,0,327,314,364,0,222,220,218,216,218,216,322,0:2,183,185,0:2,184,182,0:4,183,185,0:2,180,224,0:7,225,181,0:2,180,224,0:4,225,181,0,184,182,0:19,183,185,0:8,410,327,0,327:4,314,364,0,214,212,210,208,210,208,356,0:2,225,181,0:2,180,224,0:4,225,181,0:2,184,182,0:7,183,185,0:2,184,182,363,330:4,362,0,180,224,0:19,225,181,0:8,410,327,0,327:2,0,327,314,341,0:7,356,0:2,183,185,0:2,184,182,0:4,183,185,0:2,180,224,0:7,225,181,0:2,180,224,0:7,184,182,0:19,183,185,0:8,410,327,0,327:2,0,327,314,364,0,201,199,196,198,196,198,356,0:2,225,181,0:2,180,224,0:4,225,181,0:2,184,182,0:7,183,185,0:2,184,182,324,360:4,323,0,180,224,0:19,225,181,0:8,386,327,0,327" id="1"/>
<tiles values="0:1546,62,0:197,22,0:11,28,22,0:4,28,58,0:3,23,28,0:10,28:3,0:88,43,0:47,23,0,28:3,0,58,0:74,22,0:74,28,22,28,0:45,34,0:7,34,0:110,28,22,28,0:7,28:3,22,0:156,28,0:164,28,0:178,28,0:311,61,23,0:3,23,0:3,23,0:3,23,0:18,28,0:115,23,0,22,0:20,28,0:317,23,0,28,0:3,61,59,0:4,22,57,0:57,23,0:157,154,0:14,28,0:9,22,0:205,23,28,0:3,61,0:2,28,22,0:366,28:5,0:33,61,28:4,0:123" id="2"/>
<tiles values="678,0,679,0:80,678,0,679,680,681,682,0:80,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:80,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:4,787,0:7,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:73,766,0,766,0,766,0,766,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:67,788,0:12,678,0,679,678,0,679,0:72,735,0:7,680,681,682,680,681,682,0:20,787,788,0:34,689,688,0:7,689,688,0:13,678,0,679,678,0,679,0:32,763,0,763,0:3,763,0,763,0:3,763,0,763,0:3,787,0,734,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0:4,766,0,766,0,766,0,766,680,681,682,680,681,682,0:23,787,0:5,788,0:9,736,0:5,736,0:5,700:2,0:27,678,0,679,678,0,679,0:17,787,788,0:61,680,681,682,680,681,682,0:7,787,0,788,0:41,700:2,0:27,678,0,679,678,0,679,0:80,680,681,682,680,681,682,0:2,787,0,788,0:6,787,0:3,788,0:34,787,700:2,0:27,678,0,679,678,0,679,0:80,680,681,682,680,681,682,788,0:50,700:2,0:27,678,0,679,678,0,679,788,0:79,680,681,682,680,681,682,0:51,700:2,0:27,678,0,679,678,0,679,0:50,787,0:29,680,681,682,680,681,682,788,0:50,700:2,0:27,678,0,679,678,0,679,788,0:79,680,681,682,680,681,682,0:51,700:2,0:27,678,0,679,678,0,679,0:69,700,0:10,680,681,682,680,681,682,788,0:49,787,0:29,678,0,679,678,0,679,788,0:29,787,0,788,0:47,680,681,682,680,681,682,0:80,678,0,679,678,0,679,0:57,766:3,0:4,766:3,0:13,680,681,682,680,681,682,0:80,678,0,679,678,0,679,0:26,700,0:3,787,734,788,0:3,700,0:2,700,0:6,700,0:33,680,681,682,680,681,682,0:26,690,693,0:2,787,0,788,0:2,690,693,0:2,690,693,766,0:2,766,690,693,0,700,0:21,700,0:9,678,0,679,678,0,679,0:30,766,0,766,0:18,766,0,766,0:15,689,688,0:9,680,681,682,680,681,682,0:13,700,0:2,700,0:6,700,0:56,678,0,679,678,0,679,689,688,0:4,766,0,766,0,766,0,690,693,0:2,690,693,766,0:2,766,0:58,680,681,682,680,681,682,0:57,763:3,0:4,763:3,0:13,678,0,679,678,0,679,0:57,766,0,766,0,766,0,766,0,766,0:14,680,681,682,680,681,682,0:70,723,0:9,678,0,679,678,0,679,0:9,787,0:30,788,0:29,724,0:9,680,681,682,680,681,682,0:13,723,0:2,727,0:6,723,0:2,727,0:9,723,0:2,727,0:8,727,0:21,723,0:9,678,0,679,678,0,679,0:9,787,0:3,724,0:2,728,0:6,724,0:2,728,0:9,724,0:2,728,788,0:7,728,0:21,724,0:9,680,681,682" id="3"/>
<tiles values="0:1763,8,0:160,8,0:197,10,7:3,12,0:3,10,7:3,12,0:1428,8,0:5,8,0:988" id="4"/>
<tiles values="0:4558" id="5"/>
<tiles values="0:3616,115:4,0:2,115:4,0:76,115:4,0:2,115:3,0:77,115:3,1,0:2,115,1,115:2,0:760" id="6"/>
<sign text="Dinner time!! Maxwell wants Dinner!!
Wheres my ninja nibble??
My funny little men with knives go find my dinner!! Fillet him!! Slice him!!
Tasty!!!!!" n="3791" layer="6" width="0" height="0" face="boss" forced="false"/>
<sign text="Takeshi! The samurai let their guard down a split second after they attack. Trick them into attacking you and then hit them with everything you've got. Dont forget to use stealth as well.
Damn that Maxwell Merlock, using my guards against you! Grrrrr!" n="3795" layer="6" width="0" height="0" face="akuma" forced="false"/>
<msg text="Power Plant 1"/>
</root>
;
level_data["481f288b70e6448363505cffd060d625"] = <root>
<level width="51" height="34" start_x="3" start_y="31" compression="false" background="0" scroll="0"/>
<tiles values="0:47,588,587,588,587,0:47,570,565,570,565,0:32,684,685:3,683,0:3,684,685:3,683,0:2,588,587,588,587,0:47,570,565,570,565,0:47,588,587,588,587,0:47,570,565,570,565,0:47,588,587,588,587,0:47,570,565,570,565,0:47,588,587,588,587,0:47,570,565,570,565,0:47,588,587,588,587,0:47,570,565,570,565,0:11,684,685:3,683,0:3,684,685:3,683,0:23,588,587,588,587,0:47,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0,778:3,0:40,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:30,684,685:3,683,0:3,684,685:3,683,0,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0,588,587,0:44,588,587,588,587,0,570,565,0:44,570,565,570,565,0:3,778,0:43,588,587,588,587,0,588,0:45,570,565,570,565" id="0"/>
<tiles values="327:3,364,327:26,167,166:15,165,0:3,327:4,364,327:26,174:17,0:3,327:4,364,327:26,167,166,0:5,166:3,0:5,166,165,0:3,327:4,364,327:26,164,163:15,179,0:3,327:4,364,327:20,0:26,327:4,364,327:20,177,169:6,168,0:10,170,174:2,162,178,327:7,364,327:20,167,166:6,165,0:14,175,0:3,327:4,364,327:20,167,166:6,165,0:8,170,174:4,162,175,0:3,327:4,364,327:20,167,166:6,165,0:14,175,0:3,327:4,364,327:20,167,166:6,165,0,170,174:2,171,174:4,171,174:2,162,0,175,0:3,327:4,364,327:20,167,166:6,165,0:12,178,0,175,0:3,327:4,364,327:20,164,163:6,179,0,178,0:2,178,0:2,178,0:2,178,0,175,0,172,0:3,327:4,364,169:7,0:5,169:3,0:5,165,0:6,178,0,173,0:2,173,0:2,173,0:2,173,0,175,0,175,0:3,327:4,364,163:20,179,0:6,175,0:12,175,0,175,0:3,327:4,364,169:4,168,0:18,170,174,162,0,172,0:12,175,0,172,0:3,327:4,364,166:4,165,0,170,174:8,171,174:5,171,174,162,0:3,175,0,178,0:2,178,0:2,178,0:2,178,0,175,0,175,0:3,327:4,364,163:4,179,0:8,178,0:13,173,0,173,0:2,173,0:2,173,0:2,173,0,175,0,175,0:3,327:4,364,170,174:7,171,162,0:3,172,0:3,170,174:9,162,0:12,175,0,175,0:3,327:2,0,327,364,169:4,168,177,169:3,168,0,279,0,173,0:26,175,0,172,0:3,327:2,0,327,364,166:4,165,167,166:3,165,0:3,177,169:2,168,170,174:9,162,0,178,0:2,178,0:2,178,0:2,178,0,175,0,175,0:3,327:2,0,327,364,166:4,165,167,166:3,165,279,0:2,167,166:2,165,177,169:9,168,0,173,0:2,173,0:2,173,0:2,173,0,175,0,175,0:3,327:2,0,327,364,163:4,179,164,163:3,179,0:2,279,167,166:2,165,167,166:9,165,170,174:2,171,174:4,171,174:2,162,173,0,175,0:3,327:2,0,327,364,0:13,167,166:2,165,167,166:9,165,0:14,175,0:3,327:2,0,327,364,0:4,55,170,174:4,171,174,162,167,166:2,165,167,166:9,165,0:14,175,0:3,327:2,0,327,364,0:13,167,166:2,165,167,166:9,165,170,174:2,171,174:4,171,174:4,162,173,0:3,327:2,0,327,364,170,171,174:4,171,174,162,0:4,167,166:2,165,167,166:9,165,177,0:5,169:3,0:5,168,0:3,327:2,0,327,364,167,166:3,165,0:8,167,166:2,165,167,166:9,165,167,166:13,165,0:3,327:2,0,327,364,167,166:3,165,0:3,170,174:3,162,164,163:2,179,167,166:9,165,167,166:13,165,0:3,327:2,0,327,364,167,166:3,165,0:3,167,161,177,169:5,168,167,166:9,165,167,166:13,165,0:3,327:2,0,327,364,167,166:3,165,0:3,167,166,167,166:5,165,167,166:9,165,167,166:13,165,0:3,327:2,0,327,329,164,163:3,179,0:3,164,163,167,166:5,165,167,166:9,165,167,166:13,165,0:3,327:2,0:13,167,166:5,165,167,166:9,165,167,166:13,165,0:3,327,366:3,334,170,174,171,174:4,171,174,162,167,166:5,165,167,166:9,165,167,166:13,165,0:3,327:2,0,327,364,160,166:8,161,167,166:5,165,167,166:9,165,167,166:13,165,0:3,327" id="1"/>
<tiles values="0:228,28:3,0:17,28,0:3,62,0:97,28,0:101,28,0:90,28,0:2,28,0:2,28,0:2,28,0:51,105,0:85,59,0,61,0:54,28,0:2,28,0:2,28,0:2,28,0:125,28,0:2,105,0:50,59,0:14,28,0:2,28,0:2,61,0:2,28,0:22,28,0:52,28,0:142,67I(0),0:25,28:3,0:8,28:3,0:219,69I(0),0:143,154,0:10,28:2,0:139" id="2"/>
<tiles values="678,0,679,0:2,747,0:6,741,0:3,749,0:3,749,0,749,0:5,743,0,749,0:15,687,678,0,679,687,680,681,682,0:2,747,0:6,741,0:3,749,0:3,749,0,747,0:5,741,0,747,0,767,0,767,0,767,0:3,767,0,767,0,767,0,687,680,681,682,687,678,0,679,0:2,747,0:6,741,0:3,749,0:3,749,0,749,0:5,743,0,749,0:15,687,678,0,679,687,680,681,682,0:2,747,0:6,741,0:3,749,0:3,749,0,749,0:5,741,0,748,0,725,726,0,725,726,0,725,726,0,725,726,0,725,726,694,678,0,679,694,678,0,679,0:2,747,0:6,741,0:3,748,0:3,747,0,747,0:5,741,0,749,0:16,678,0,679,0,680,681,682,0:2,747,0:6,741,0:3,749,0:3,749,0,748,0:5,741,0,749,686,0:15,680,681,682,0,678,0,679,0:2,749,0:6,741,0:3,749,0:3,749,0,749,0:5,743,0,749,687,0:15,678,0,679,0,680,681,682,0:2,749,0:6,743,0:3,748,0:3,747,0,749,0:5,741,0,748,687,0:15,680,681,682,0,678,0,679,0:2,749,0:6,741,0:3,749,0:3,749,0,749,0:5,742,0,749,687,0:15,678,0,679,0,680,681,682,0:2,749,0:6,743,0:3,749,0:3,749,0,748,0:5,752,751,750,687,0,698,0:2,698,0:2,698,0:2,698,0:4,680,681,682,0,678,0,679,0:2,749,0:6,741,0:3,749,0:3,749,0,747,0:8,694,0:15,678,0,679,0,680,681,682,0:2,749,0,767,0,767,0,767,741,767,0,767,748,767,0,767,747,767,748,767,0,767,0,767,0,767,0,767,0:15,680,681,682,0,678,0,679,0:2,749,0:10,749,0:30,678,0,679,0,680,681,682,0:2,749,0:2,686,0:3,742,0:3,747,0:3,741,0,748,0:24,680,681,682,0,678,0,679,0:2,749,0:2,687,0:3,741,0:3,749,0:3,752,751,750,0:24,678,0,679,0,680,681,682,751:2,750,0:2,687,0:3,741,0:3,747,0:13,745,744:12,746,735,0:2,680,681,682,0,678,0,679,751:5,687,0:3,743,0:3,749,0:13,752,751:12,750,0:3,678,0,679,0,680,681,682,751:5,694,0:5,751:2,750,0:7,745,744:4,746,0,734,0:15,680,681,682,0,678,0,679,0:12,702,0:8,741,0:4,748,0:17,678,0,679,0,680,681,682,744:10,746,0:10,742,0:4,747,0:2,745,744:10,746,0:3,680,681,682,0,678,0,679,0:10,748,702,744:7,746,764,741,764,0:2,764,749,764,0,752,751:10,750,0:3,678,0,679,0,680,681,682,686,767,0:2,767,0:2,767,0:2,749,0:2,702,0:5,747,0,741,0:4,747,0:3,767,0,767,0,767,0:3,767,0,767,0:3,680,681,682,0,678,0,679,687,0:9,748,0:7,789,748,0,742,0:4,749,0:17,678,0,679,0,680,681,682,687,0:12,735,0:4,789,749,0,741,0:4,748,0:17,680,681,682,0,678,0,679,687,0:5,742,0:2,745,746,0,745,744,0:5,749,0,741,0:4,749,0:17,678,0,679,0,680,681,682,694,0:5,743,0:3,749,0,741,0:6,749,0,742,0:4,749,0:17,680,681,682,0,678,0,679,0:6,747,0:3,747,0,743,0:5,789,749,0,741,0:4,747,745,744,746,764,0,764,0,764,0:3,764,0,764,0,764,0,678,0,679,0,680,681,682,751:6,750,0:3,749,0,741,0:5,789,748,0,747,0:4,749,741,0,749,0:14,680,681,682,0,678,0,679,0:10,749,0,742,0:6,749,0,742,0:4,749,742,0,749,0:14,678,0,679,0,680,681,682,0:3,745,744,746,0:4,747,0,743,0:6,748,0,741,0:4,749,741,0,749,0:14,680,681,682,0,678,0,679,0:3,742,0,747,0:4,748,686,741,0:5,789,747,0,741,0:4,747,741,0,749,0:14,678,0,679,0,678,0,679,0:3,741,0,748,0:4,749,687,741,0:5,789,749,0,741,0:4,747,741,0,749,0:14,680,681,682,0,680,681,682,0:3,743,0,749,0:4,749,694,742,0:6,749,0,747,0:4,749,742,0,749,0:14,678,0,679,0,678,0,679,0,764,0,741,0,749,0,764,0:2,748,0,741,0:6,749,0,741,0:4,749,741,0,749,0:14,680,681,682,0" id="3"/>
<tiles values="0:690,8,0:245,8,0:797" id="4"/>
<tiles values="0:1734" id="5"/>
<tiles values="0:1237,115:4,0:47,115:4,0:47,115:3,1,0:242,115:2,1,115:2,0:144" id="6"/>
<sign text="There's a robot sniper unit somewhere in this area. They use infrared so you won't be able to hide from them using stealth. Use these grey cables to hide from its sights." n="1342" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Unlike the wall mounted guns, you can destroy these rotating guns." n="1587" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="Communications"/>
</root>
;
level_data["852a9df1453e0582c531a674b4c71eae"] = <root>
<level width="83" height="76" start_x="4" start_y="67" compression="false" background="2" scroll="0"/>
<tiles values="586,585,586,585,0:51,506,0:27,586,585,564,563,0:51,506,778:27,586,585,564,563,0:51,506,778:27,586,585,564,563,0:51,506,586,585,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,586,585,586,585,588,586,585,564,563,0:51,506,564,563,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,564,563,564,563,570,586,585,564,563,0:51,506,586,585,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,586,585,586,585,588,586,585,564,563,0:51,506,564,563,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,564,563,564,563,570,586,585,564,563,0:51,506,586,585,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,586,585,586,585,588,586,585,564,563,0:51,506,564,563,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,564,563,564,563,570,586,585,564,563,0:51,506,586,585,0:2,548,569,566,547,0:4,548,569,566,547,0:4,548,569,586,585,586,585,588,586,585,564,563,0:51,506,564,563,0,658,477,0:2,474,655,0:2,658,477,0:2,474,655,0:2,658,477,0,564,563,564,563,570,586,585,564,563,0:51,506,586,585,602,606,0:4,603,599,602,606,0:4,603,599,602,606,0:2,586,585,586,585,588,586,585,564,563,0:51,506,564,563,778,547,0:4,548,778:2,547,0:4,548,778:2,547,0:2,564,563,564,563,570,586,585,564,563,0:48,532,0:2,506,586,585,660,474,655,0:2,658,477,670,669,474,655,0:2,658,477,670,669,474,655,661,586,585,586,585,588,586,585,564,563,0:47,532,778,0:2,506,564,563,0:2,603,535,532,606,0:4,603,535,532,606,0:4,603,778:5,570,586,585,564,563,0:26,648,659:4,778,535,0:13,532,778:2,0:2,506,586,585,0:2,548,778:2,547,0:4,548,778:2,547,0:4,548,778:5,588,586,585,564,563,0:30,534,778:2,535,0:17,506,564,563,671,658,477,670,669,474,655,0:2,658,477,670,669,474,655,0:2,658,477,670,564,563,564,563,570,586,585,564,563,0:31,778:13,0:6,506:2,778:3,606,0:4,603,535,532,606,0:4,603,535,532,606,0:2,586,585,586,585,588,586,585,564,563,0:31,778:13,0:5,506:3,778:3,547,0:4,548,778:2,547,0:4,548,778:2,547,0:2,564,563,564,563,570,586,585,564,563,0:31,481,778,533,0,670,778:11,0:2,506:3,586,585,669,474,655,0:2,658,477,534,533,474,655,0:2,658,477,534,533,474,655,532,586,585,586,585,588,586,585,564,563,0:32,635,480,0:2,648,778:2,480,0:2,534,778:2,534,778,0,506:4,564,563,0:2,603,535,532,606,0:4,603,535,532,606,0:4,603,778:5,570,586,585,564,563,0:32,648,514,0:4,648,514,0:3,534:2,0,534,0,506:6,535,532,506:4,535,0:2,532,506:4,535,0:2,532,506:6,0,586,585,564,563,0:34,528,0:5,528,0:6,506:3,0:29,586,585,564,563,0:35,545,480,0:4,545,480,661:2,480,506:3,0:30,586,585,564,563,0:29,532,778,646,645,778:4,620,0:3,481,778:5,506,0:31,586,585,564,563,0:28,532,778:9,535,0:2,661,778:2,686,778:2,0,686,0:30,586,585,564,563,0:27,532,778,0:15,694,0,506,0,694,778:8,647,0,622,778:4,646,0:14,586,585,564,563,0:26,532,778,0:14,506,0:2,506:2,0:2,778:6,636,778,480,0:2,534,778:4,535,0:13,586,585,564,563,0:26,648,551,0:13,506:6,0:2,647,648,514,0:4,648,514,0:3,534,778:4,535,0:12,586,585,564,563,0:27,481,0:2,506:17,0:5,528,0:5,528,0:3,778:5,535,0:11,586,585,564,563,0:30,506:17,0:6,545,480,0:4,545,480,661,778:6,535,0:10,586,585,564,563,0:28,686,0,506:17,0:2,535,0:3,481,778,620,0:3,481,778:2,0:10,778,646,0:5,586,585,564,563,0:28,687,0,506:17,0:2,778,535,0:2,661,778:2,620,0:2,661,778:2,0:4,506,0:6,778:6,586,585,564,563,0:28,687,0,506:17,0:2,778:8,0:2,506,778,506:2,778,506:3,778,506,0:4,778:6,586,585,564,563,0:28,687,0,506:16,0:3,778:2,659:2,778:4,0:2,506,778,586,585,778:2,586,585,778,506,0:4,778,660,0:4,586,585,564,563,0:28,687,0,506:16,0:3,778:8,0:2,506,778,564,563,778:2,564,563,778,506:2,0:3,660,0:5,586,585,564,563,0:28,694,0,506:16,0:3,778:2,659:2,778:4,0:2,506,778,506:2,778:2,506:2,778,506:3,0:8,586,585,564,563,0:29,506:16,0:3,481,778:8,0,622,778:2,0:7,506:3,0:8,586,585,564,563,0:27,661,0,506:17,0:2,778:2,533,0:2,670,778:4,622,778:2,0:3,506,0:3,506:3,0:2,778,646,0:4,586,585,564,563,0:26,532,778,0:11,506:9,778:2,480,0:3,670,778:7,0,506,778:6,506,0:2,778:6,586,585,564,563,0:21,648,659:3,778:4,0:11,506:8,778:2,514,0:4,648,514,0:3,534,778,0,506,778:6,506,0:2,778:6,586,585,564,563,0:25,481,778:7,659:3,778:3,0,506:8,778,621,0,528,0:5,528,0:3,534,506:2,778:6,506,0:2,778,660,0:4,586,585,564,563,0:26,635,778:6,480,0:2,534,778:2,0,506:8,778,0:3,545,480,0:4,545,480,661,0,506:4,0:7,660,0:5,586,585,564,563,0:26,648,514,0:4,648,514,0:3,534:2,0,506:8,778,0:3,481,778,620,0:3,481,778:2,661,506:3,0:14,586,585,564,563,0:28,528,0:5,528,0:5,506:8,778,671,0:2,661,778:2,620,0:2,661,778:3,506:3,0:14,586,585,564,563,0:29,545,480,0:4,545,480,661:2,0,506:8,0,528,0:3,661,778:2,620,0:2,661,778:2,506:3,0:14,586,585,564,563,0:29,481,778,620,0:3,778:4,0,506:8,0:13,506:5,778:2,506,0:10,586,585,564,563,0:29,661,778:2,620,0,495,778:4,0,506:8,0:11,506:3,778,506:6,0:10,586,585,564,563,0:25,661,778:12,0:2,506:8,0:10,506:11,0:10,586,585,564,563,778:38,0:2,506:20,0:2,778,506:6,778:3,0:7,586,585,564,563,0,778:37,0:5,778,0:25,778:2,0:2,498,0:5,586,585,564,563,0,481,778,533,0:3,481,778,533,0:5,481,778,533,0:5,481,778,533,0:7,622,778:3,533,0:2,778:3,647,0,622,778:2,0:20,686,0,778,0,686,778,498,0:4,586,585,564,563,0:2,635,480,0:4,635,480,0:6,635,480,0:6,635,480,0:8,534,778:2,0:4,670,778,480,0:2,534,778:15,535,0:2,670,778,0,687,0,778,0,687,778:2,480,0:3,586,585,564,563,0:2,648,514,0:4,648,514,0:6,648,514,0:6,648,514,0:9,636,660,0:5,648,514,0:3,534,778:15,646,0:2,648,0,694,0,778,0,694,0:4,480,0,586,585,586,585,0:4,528,0:5,528,0:7,528,0:7,528,0:17,528,0:3,778:16,535,0:5,778:2,0:5,778:2,564,563,564,563,0:5,545,480,0:4,545,480,0:6,545,480,0:6,545,480,0:16,545,480,661,778:2,533,0:2,481,778:2,647,0,622,778:4,0:7,778:6,686,778:2,586,585,586,585,0:5,481,778,0:4,481,778,620,0:5,481,778,620,0:5,481,778,620,0:15,481,778:4,480,0:3,481,778,480,0:2,534,778,534,778,0:6,778:6,0,687,496,0,564,563,564,563,0,646,0:3,661,778,646,0:3,661,778:3,636,480,0:2,661,778:2,646,0:4,661,778:3,636,778,480,0:11,661,778:4,514,0:4,648,514,0:3,534,0,778:2,585,586,585,586,585,586,585,586,585,586,585,0,687,0:2,586,585,586,585,514,778:2,659:2,778,0:7,684,685:5,683,0:12,684,685:5,683,0:12,528,0:5,528,0:4,778:2,563,564,563,564,563,564,563,564,563,564,563,0,687,0:2,564,563,564,563,0,778:2,0:2,534,0:46,545,480,0:4,545,480,661,480,778:4,0:10,687,0:2,586,585,586,585,0,534,778,480,0:4,506:3,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,0:3,586,585,586,585,586,585,586,585,586,585,586,585,506:6,778,0:2,636,778:2,498,0:3,481,778:7,0:10,687,480,0,564,563,564,563,0:2,481,514,0:4,506:3,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,0:3,564,563,564,563,564,563,564,563,564,563,564,563,506,0:4,506,778,0:2,636,778:3,646,0:3,636,778:16,687,778:2,586,585,586,585,0:4,528,0:3,506:3,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,0:3,586,585,586,585,586,585,586,585,586,585,586,585,0:6,506,0:14,778,585,586,585,586,585,586,585,586,585,586,778:2,687,778:2,564,563,564,563,0:5,545,0:2,506:3,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,506:3,564,563,564,563,564,563,564,563,564,563,564,563,0:6,506,0:13,506,778,563,564,563,564,563,564,563,564,563,564,778,0,687,496,0,586,585,586,585,0,684,685:3,683,0:2,506:34,0:6,506,0:3,506:23,0,694,0:2,564,563,564,563,0:7,506:4,0:37,506,0:3,506:14,0:13,586,585,586,585,506:11,0:2,684,685:5,683,0:12,684,685:5,683,0:9,506,0:3,506:2,0:23,480,0,564,563,564,563,506:11,0,778:6,514,0:3,481,778:13,514,0:3,481,778:4,0:3,506,0:3,506,0:23,778:2,480,586,585,586,585,0:12,778:3,647,0:3,528,0:3,534,778:2,535,0:4,481,778,533,0:3,528,0:3,622,778:3,686,0,506:3,0,506:3,0,686,481,778,533,0:2,648,778:17,564,563,564,563,0,684,685:3,683,0:6,669,0,545,480,0:4,545,480,0:2,534,778:2,480,0:4,635,480,0:4,545,480,0:2,534,778:2,687,0,506:3,0,506:4,687,0,635,480,0:3,670,778,480,0:2,534,778:11,586,585,586,585,778,662,660,0:2,516,778:3,660,0:4,481,514,0:4,648,514,0:4,648,514,0:4,648,514,0:4,648,514,0:3,534,778,687,0,506:8,687,0,648,514,0:4,648,514,0:3,534,778:10,564,563,564,563,778,660,0:2,529,0:11,528,0:5,528,0:5,528,0:5,528,0:5,528,0:3,778,687,0,506:3,0,506:3,0,687,0:3,528,0:5,528,0:3,778:10,586,585,586,585,660,0,661,544,0:13,545,480,0:4,545,480,0:4,545,480,0:4,545,480,0:4,545,480,661,778,694,0,506:3,0,506:3,0,694,498,0:3,545,480,0:4,545,480,661,778:10,564,563,564,563,0:2,516,660,0:13,481,514,0:4,481,514,0:4,481,514,0:4,481,778,620,0:3,481,778:3,0:3,506:2,0,506:2,0:3,778,480,0:2,481,778,620,0:3,481,778:12,586,585,586,585,636,529,0:17,636,620,0:4,528,0:5,528,0:3,661,778:2,620,0:2,661,778:3,0:3,506:6,0:2,778:2,498,0,661,778:2,620,0:2,661,778:12,564,563,564,563,778:48,0:8,778:23" id="0"/>
<tiles values="327,0:3,288,0:48,318,290,309:27,290,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0,308,319:6,307,0:18,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:48,318,288,0:27,318,314,0:3,288,0:43,317,298:4,290,288,0:27,318,314,0:3,288,0:43,318,314:3,290,309,303,0:27,318,314,0:3,288,0:43,318,314:3,288,0:29,318,314,0:3,288,0:43,318,314:3,288,0:29,318,314,0:3,288,0:43,318,314:2,290,303,0:29,318,314,0:3,288,0:43,318,314:2,288,0:30,318,314,0:3,288,0:43,318,290,309,303,0,317,290:2,298:4,290:4,298:4,290:4,298:4,290:4,298:2,300,314,0:3,288,0:43,318,288,0:3,318,314:30,0:3,288,0:43,318,288,0,317,304,300,314:30,0:3,288,0:40,317,304:2,0,288,0,318,0,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,314,0:3,288,0:27,317,290,298:2,290,298:2,290,298:2,290,298:2,290:3,0,288,0,318,0:31,314,0:3,288,0:27,318,314:12,290,374,290,309,303,0,318,288,0:30,314,0:3,288,0:27,318,314,309:11,303,0:5,318,288,0:30,314,0:3,288,0:27,318,288,295,0:16,318,288,0:30,314,0:3,288,0:27,318,288,0:2,311,294,319:7,293,372,0:4,318,288,0:30,314,0:3,288,0:28,288,295,0,302,0:14,318,288,0:8,317,290,298:2,290,298:2,290,298:2,290,298:2,290,298,297,0:6,314,0:3,288,0:28,288,0:2,302,0,294,319:6,293,311,0:4,318,288,0:8,318,290,309:7,120,309:2,290,314:2,288,0:6,314,0:3,288,0:28,288,295,0,302,0:9,302,0:4,318,288,0:8,318,288,0:10,318,314:2,290,0:6,314,0:3,288,0:28,288,0:2,302,0:9,301,294,293,317,304,290,288,0:8,318,288,0:10,318,314:2,288,0:6,314,0:3,288,0:28,288,295,0,302,0:12,318,314:2,288,0:8,318,288,0:6,311,0:3,739,309,290,288,0:6,314,0:3,288,0:28,288,0:2,301,294,319:8,293,311,0,318,314:2,288,0:8,318,288,0:4,48I(0),0,301,0:3,46,0,318,290,0:6,314,0:3,288,0:27,318,288,295,0:12,301,0,318,314:2,288,0:8,318,299,298:3,304,298:5,297,737,0,318,288,0:6,314,0:3,288,0:27,318,288,295:2,0,295,0,295,0,295,0,295,373,0:2,375,0,310,306,290,303,0:8,310,309:3,290:2,309,120,309:3,303,738,47,318,288,0:6,314,0:3,288,0:27,318,299,298:9,297,0:3,311,0:3,318,0:13,318,288,0:8,318,290,0:6,314,0:3,288,0:27,310,290,309:2,290,309:2,290,309:2,290,288,0:3,302,0:2,295,318,0:13,318,288,0:8,318,288,0:6,314,0:3,288,0:37,318,288,0:3,302,0:3,318,0:13,318,290,0:8,318,288,0:6,314,0:3,288,0:37,318,288,0:3,302,0:3,318,0:13,318,738,47,740,317,298:3,117,298,300,290,0:6,314,0:3,288,0:37,318,288,0:3,302,295,0:2,318,0:13,318,290,0,317,290,314:6,288,0:6,314,0:3,288,0:37,318,288,0:3,302,0:3,318,0:13,318,288,0,318,314:7,288,0:6,314,0:3,288,0:37,318,288,0:3,302,0:3,318,290:2,298:2,290,298:2,290,298:2,290,298:2,300,290,0,310,309:3,290,314:3,290,0:6,314,0:3,288,0:37,318,288,0:3,301,0:2,295,318,314:10,290,309:2,290,739,0:5,318,314:3,288,0:6,314,0:3,288,0:37,318,288,0:3,374,0:3,318,314:10,288,0:3,46I(0),0:5,318,314:3,288,0:6,314,0:3,288,0:37,318,288,0:7,310,309:10,303,0,317,290,737,0:5,310,309:2,290:2,0:6,314,0:3,288,0:37,318,288,0:20,296,314,290,0:8,318,288,0:6,314,0:3,288,0:37,318,299,298:2,290,372,290,298:15,300,314,299,298:6,297,0,318,288,0:6,314,0:3,288,0:37,310,309:10,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,0,288,0,318,0:7,314,0:3,288,0:66,318,0,288,0,318,0:7,314,0:3,288,0:66,318,0,288,0,318,0,298:3,297,0:2,314,0:3,288,0:66,318,314,288,0,310,309:3,290,288,0:2,314,0:3,288,0:60,317,298:5,300,314,288,0:5,318,0:3,314,0:3,288,0:60,318,290,309:6,303,294,319:2,293,0,318,0:3,314,327:3,288,0:60,318,51,0:12,318,0:3,314,0:3,288,0:5,317,298:6,0:7,298:12,0:7,298:2,290,298,290,298,290,298,290,298:2,297,0:10,318,51,0:12,318,0:3,314,0:3,288,0:5,318,290,309:19,290,314,290,309:19,290,288,0:10,318,290,0:2,317,298:9,300,0:3,314,0:3,288,0:5,318,288,0:19,318,314,288,0:19,318,288,0:10,318,288,0:2,310,309:9,290,0:3,314,0:3,288,0:5,318,288,0:19,318,314,288,0:12,317,298:4,297,0,318,288,0:10,318,288,0:12,55,0:3,314,0:3,288,0:5,318,288,0:19,318,314,288,0:12,318,314:4,288,0,318,290,298:10,290,288,0:12,55,0:3,314,0:3,288,0:5,318,288,0:19,310,309,303,0:12,318,314:4,288,0,318,314,290,309:10,303,294,319:8,293,0:2,290,0:3,314,0:3,290,0:5,290,288,0:34,318,314:4,288,0,318,314,288,0:23,318,0:3,314,327:3,309:7,303,0:2,317,298:31,300,314:4,288,0,318,314,288,0:13,317,298:9,300,288,0:2,314,327,0:12,318,290,309,0:7,309:7,290,309,290,309:2,0:7,309:6,290,314,288,0,318,314,288,0,317,298:11,300,314:10,288,0:2,314,327,0:12,318,288,0:33,318,314,288,0,318,314,288,0,318,314,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,290,309:2,303,0:2,314,327:3,298:10,300,288,0:34,290,303,0,310,306,303,0,310,290,0:24,314,0:3,306,0:5,306,309:3,306,303,0:34,288,0:3,290,295,0,295,290,0:24,314,0:49,288,0:3,373,0:3,375,0:24,314,0:49,288,0:3,290,0:3,290,0:24,314,0:49,299,297,0,317,304,297,0,317,300,0:24,314,0:48,318,314,288,0,310,306,303,0,318,314,288,0:23,314,0:48,290,314,288,0:5,318,314,290,0:23,314,0:48,318,314,299,298:5,300,314,288,0:23" id="1"/>
<tiles values="0:222,28:8,0:1417,791,0:165,30,0:556,20,0:74,36,0:2,36,0:2,36,0,20,0,111:2,0:81,111:2,0:71,28,0:6,28,0:2,111:2,0:81,111:2,0:20,39,0:62,58,0:94,91F,0:10,100F,0:47,59,0,59,0:105,28,0,103,61,0,28,0:3,28,0:129,28,0,28,0,28,0,28,0:2,18:2,0:21,60,0,95F:2,0:55,45,0:5,28,0:78,45,0:80,45,0:24,28,0:2,28,0:56,45,0,28,0:24,107,0:53,45,0:84,45,0:86,28,0:245,20,0:82,20,0:2,28,111:7,0:5,28,0:3,61,0:669,43,0:78,43,0:7,43,0:110,38,0:11,109:12,28,0:4,28,0:50,35,0:14,109:12,0:27,43,0:34,41,0:8,109:12,0:24,43,0:6,43,0:24,35,0:14,109:12,0:59,32,0:5,127,0:114,57,0,57:7,0:99,154,0:216,42,0:84,19:3,0:76,28,0,42,0,28,0,28,0:357" id="2"/>
<tiles values="0,678,0,679,0:52,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,680,681,682,0:80,680,681,682,0:80,680,681,682,0:50,723,0:27,727,0,680,681,682,0:50,724,0:27,728,0,680,681,682,0:80,680,681,682,0:80,680,681,682,0:50,723,0:27,727,0,680,681,682,0:50,724,0:27,728,0,680,681,682,0:80,680,681,682,0:80,680,681,682,0:50,723,0:27,727,0,680,681,682,0:50,724,0:27,728,0,680,681,682,0:80,678,0,679,0:80,680,681,682,0:50,723,0:27,727,0,678,0,679,0:50,724,0:27,728,0,680,681,682,0:80,678,0,679,0:80,680,681,682,0:78,727,0,678,0,679,0:78,728,0,680,681,682,0:80,678,0,679,0:50,697,722,0:4,697,722,697,722,0:4,697,722,697,722,0:4,697,722,697,722,0:4,680,681,682,0:80,678,0,679,0:80,680,681,682,0:51,767,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0,678,0,679,0:80,680,681,682,0:44,764,0:3,764,0:31,678,0,679,0:80,680,681,682,0:80,678,0,679,0:80,680,681,682,0:30,702,0:49,678,0,679,0:36,725,726,0,725,726,0:19,725,726,0:2,725,726,0:14,680,681,682,0:30,702,0:41,790,0:7,678,0,679,0:80,680,681,682,0:30,702,0:49,678,0,679,0:72,790,0:7,680,681,682,0:30,702,0:32,752,751:5,0:11,678,0,679,0:30,702:2,0,702,0,702,0,702,0,702,0:40,680,681,682,0:72,790,0:7,678,0,679,0:29,767,0:2,767,0:2,767,0:44,680,681,682,0:39,764,0:3,764,0:3,764,0:32,678,0,679,0:72,790,0:7,680,681,682,0:39,764,0:3,764,0:3,764,0:32,678,0,679,0:80,680,681,682,0:39,764,0:3,764,0:3,764,0:16,767,0:2,767,0:4,790,0:7,678,0,679,0:80,680,681,682,0:39,764,0:3,764,0:3,764,0:32,678,0,679,0:49,767,0:2,767,0:2,767,0:2,767,0:21,680,681,682,0:71,790,0:8,678,0,679,0:41,764:2,0,764:2,0:34,680,681,682,0:49,698,0:2,698,0:2,698,0:2,698,0:2,698,0:2,698,0:4,789,0,790,0:8,678,0,679,0:80,680,681,682,0:69,789,0,790,0:8,678,0,679,0:76,767,0:3,680,681,682,0:69,789,0:10,678,0,679,0:66,767,0:2,767,0:2,767,0:7,680,681,682,0:13,767,0,767,0,767,0,767,0:12,767,0,767,0,767,0,767,0:41,678,0,679,0:7,767,0:19,767,0,767,0:50,680,681,682,0:80,678,0,679,0:66,767,0:2,767,0:2,767,0:7,680,681,682,0:42,698,0:4,698,0:32,678,0,679,0:80,680,681,682,0,767,0,767,0,767,0:74,678,0,679,0:80,680,681,682,0:11,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0,767,0:2,767,0,767,0,767,0,767,0:37,764,0:3,678,0,679,0:80,678,0,679,0:55,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:6,680,681,682,0,767,0,767,0,767,0,767,0,767,0:36,789,767,0:5,767,790,0:25,678,0,679,0:80,680,681,682,0:80,678,0,679,0:80,680,681,682,0:46,789,0:2,698,0,698,0:2,790,0:25,678,0,679,0:80,680,681,682,0:80,678,0,679,0:48,764,0,764,0,764,0:26" id="3"/>
<tiles values="0:2445,8,0:2,8,0:2,8,0:337,8,0:153,8,0,8,0:106,10I(2),12I(2),0:1948,11,0:79,10,7:2,5,7:2,12,0:76,10,7:2,5,7:2,12,0:76,10,7:2,5,7:2,12,0:79,9,0:119,12:10,0:316,8,0:165,8,0:361" id="4"/>
<tiles values="0:1547,11,0:82,11,0:82,11,0:81,11,0:82,10,0:81,10:2,0:408,10:4,0:68,10:11,0:71,9:2,0:82,9,0,10:9,0:71,9:2,0:11,11,0:70,9,0:11,11,10:2,0:67,9:2,0:82,9,0:12,11,0:68,9:2,0:12,11,0:69,12:11,9,0,11,0:70,12,0,12,0,12,0,12,0:2,9:2,0,11,0:78,9,0,9,0,11:2,0:77,9,0,9,0,11:2,0:77,9,0,9,0,11:3,0:76,9,0,9,0,11:3,0:76,9,0,9,0:2,11:2,0:76,9,0,9,0,11:3,0:16,11,0:59,9,0,9,0,11:3,0:16,11,0:59,9,0,9,0,11:2,0:17,12,0:59,9,0,9,0,11:3,0:12,11,12:4,0:59,12:4,11:3,0:12,11,0:3,12,0:59,12:19,11,0:3,12,0:5,12,9,0:82,9,0:82,9,0:82,9,0:82,9,0:82,9,0:82,9,12:3,9,0:82,9,0:71,9,10:10,9,0:71,9:2,10:10,0:71,9:2,0:26,9,10:6,0:15,9,10:18,0:14,9:2,0:26,9,0:21,9,0:10,9,0:6,11,0:14,9:2,12:9,9,0:16,9,0:21,9,0:10,9,0:6,11,0:14,9:2,12:8,9:2,0:16,9,0:21,9,0:10,9,0:6,11,0:24,9:2,0:16,9,0,10:5,0:13,10:14,0:6,11,0:3,9,10:20,9:2,0:16,9:2,0:38,11,0:3,9:13,0:24,10:2,9:2,0:38,11,0:3,9,0:36,10:2,9:2,0:38,11,0:3,9,0:78,11,0:3,9,0:77,11,0,11,0:80,11,0,11,0:80,11,0,11,0:81,11,0:82,11,0:3,9,0:78,11,10:4,0:109" id="5"/>
<tiles values="0:3888,115:2,0:81,115:2,0:81,115:2,0:81,115,1,115,0:869,115:2,0:81,115:2,0:81,115:2,0:81,115:2,0:81,115,1,115,0:964" id="6"/>
<sign text="You go find the generator that is powering this force field, I'll stay here.
I've got a bad feeling we might be heading into a trap. A little too easy maybe?" n="4138" layer="6" width="0" height="0" face="ninja" forced="false"/>
<sign text="Why hello Takeshi the wonder ninja! Very nice to finally meet you. Youre smaller than I thought... you're a cutey though.
What do you think of the simian suit? I'm not sure about the tail myself. This suit's powerful though. I'll take on the heavyweights, you back me up. Try not to get left behind or leave me behind honey." n="5342" layer="6" width="0" height="0" face="ninja_reveal" forced="true"/>
<msg text="Lift Access Area"/>
</root>
;
level_data["941f2e63c499af296c87a214a3f8eeb0"] = <root>
<level width="68" height="53" start_x="3" start_y="49" compression="false" background="2" scroll="0"/>
<tiles values="0,778,0:10,778,586,585,586,585,586,585,586,585,586,585,0:13,586,585,586,585,586,585,586,585,586,585,778,533,0:7,676,633,0,676,633,0,676,778:2,586,585,586,585,0,778,0:10,778,564,563,564,563,564,563,564,563,564,563,0:8,506,0:4,564,563,564,563,564,563,564,563,564,563,778,0:8,676,633,0,676,633,0,676,778:2,564,563,564,563,0,778,0:9,684,685:2,683,586,585,586,585,586,585,586,585,0:8,506,0:4,586,585,586,585,586,585,586,585,586,585,778,0:8,676,633,0,676,633,0,676,778:2,586,585,586,585,0,778,0:11,564,563,564,563,564,563,564,563,564,563,0:8,506,0:4,564,563,564,563,564,563,564,563,564,563,778,535,0:7,597,594,684,685:4,683,778,564,563,564,563,0,778,0:2,686,0:3,686,0:6,778:3,0:11,506:3,0:37,778,0:2,687,0:3,687,0:6,506:8,0:3,506:6,0:37,778,0:2,687,677:3,687,0:6,506:2,778,0:3,506:2,0:3,506:4,0:26,778,506:8,0:4,778,0:2,687,634:3,687,0:6,506,0:6,506:7,0:19,778:8,506:8,0:5,778,0:2,694,0:3,694,778:2,0:3,506:3,0:5,506:42,0:5,778,0:2,598,677:3,525,778:2,506:9,0:2,506:43,778,0:3,778,0:2,686,634:3,686,778:2,506:9,0:2,506:42,0:5,778,0:2,687,0:3,687,0:2,506:9,0:27,778:7,506:10,0:5,778,0:2,687,677:3,687,0:2,506:9,0:31,778:4,506:8,0:6,778,0:2,687,778:3,687,0:2,506:9,0:31,778:3,0:15,778,0:2,694,778:3,694,0:2,506:9,0:31,778,660,778,0:9,778,0:5,778,0:2,586,585,586,585,586,585,0,506:3,0:3,506:3,0:2,586,585,586,585,586,585,586,585:2,684,685:5,683,0:17,684,685:4,683,583,563,778,586,585,586,585,0,778,0:2,686,563,564,563,686,563,0,506:9,0:2,564,563,564,563,564,563,564,563:2,778,669,0:29,583,778,564,563,564,563,0,778,0:2,687,585,586,585,687,585,0,506:9,0:2,586,585,586,585,586,585,586,585:2,778,0:31,778,586,585,586,585,0,778,0:2,687,563,564,563,687,563,0:4,506:3,0:5,564,563,564,563,564,563,564,563:2,778,0:31,778,564,563,564,563,0,778,0:2,687,585,586,585,687,585,0:3,506:3,0:6,586,585,586,585,586,585,586,585:2,778,0:31,778,586,585,586,585,0,778,0:2,694,563,564,563,694,563,0:4,506:3,0:5,686,563,564,563,564,563,564,563:2,778,0:31,778,564,563,564,563,0,778,0:2,586,585,586,585,586,585,0:5,506:2,0:5,687,585,586,585,586,585,586,585:2,778,0:31,778,586,585,586,585,0,778,0:2,564,563,564,563,564,563,0:5,506:2,0:5,687,563,564,563,564,563,564,563:2,778,0:31,778,564,563,564,563,0,778,0:2,586,585,586,585,586,585,0:4,506:2,0:6,687,585,586,585,586,585,586,585:2,778,0:31,778,586,585,586,585,0,778,0:2,564,563,564,563,564,563,0:4,506:2,0:6,694,563,564,563,564,563,564,563:2,778,0:31,778,564,563,564,563,0,778,0:12,506:2,0:6,586,585,586,585,586,585,586,585:2,778,0:31,778,586,585,586,585,0,778,0:12,506:2,0:6,564,563,564,563,564,563,564,563:2,778,0:31,778,564,563,564,563,0,778,0:2,506:12,0:6,586,585,586,585,586,585,586,585:2,778,0:31,778,586,585,586,585,0,778,0:2,506:3,0:15,564,563,564,563,564,563,564,563:2,778,620,0:30,778,564,563,564,563,0,778,0:2,506:4,0:5,506,0:18,778,535,0:29,778,586,585,586,585,0,778,0:2,506:12,0:8,506,0:8,778,535,0:28,778,564,563,564,563,0,778,0:2,506:13,0:6,506:8,0:2,686,778,620,0:26,668,778,586,585,586,585,0,778,0:2,506:27,0:2,687,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,564,563,564,563,585,778,0:2,506:13,0:6,506:8,0:2,687,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,563,564,563,564,563,778,0:2,506:12,0,506:6,0,506:7,0:2,687,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,585,586,585,586,585,778,0:15,506:6,0,506:7,0:2,687,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,563,564,563,564,563,778,0:4,506:17,0,506:7,0:2,694,778,621,0:26,670,778,586,585,586,585,0,778,0:3,506,0,506:2,0:7,506:7,0:3,506:3,0:4,778,533,0:28,778,564,563,564,563,0,778,0:3,506,0,506:21,0:5,621,0:29,778,586,585,586,585,0,778,0:3,506,0:8,506:2,0,506:6,778,0:39,778,564,563,564,563,0,778,0,686,0,506:13,0:6,684,685:5,683,0:32,778,586,585,586,585,0,778,0,687,0,506:11,0:8,564,563,564,563,564,563,778,660,0:31,778,564,563,564,563,0,778,0,687,0,506:2,0:17,684,685:5,683,0:32,778,586,585,586,585,0,778,0,687,0,506:7,0:20,636,0:30,778,564,563,564,563,0,778,0,687,0,506:7,0,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,660,0:30,778,586,585,586,585,0,778,0,694,0,506:7,0,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,0:31,778,564,563,564,563,0,778,0:8,506:2,0,586,686,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,0:31,778,586,585,586,585,0,778,0:9,506,0,564,687,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,0:31,778,564,563,564,563,0,778,506:2,0:6,506:2,0,586,687,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,0:31,778,586,585,586,585,0,778,506:10,0,564,687,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,0:31,778,564,563,564,563,0,778,506:2,0:9,586,687,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,0:31,778,586,585,586,585,0,778,0,684,685:2,683,585,586,684,685:2,683,586,694,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,0:31,778,564,563,564,563,0,778,0,684,685:3,683,564,563,564,563,778,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,0:31,778,586,585,586,585" id="0"/>
<tiles values="327,0,327,290,309:19,290,314:6,327:3,314:2,288,0:32,327,0,327,288,0:13,201,199,197,195,197,195,318,314:6,327,0,327,314:2,288,196,198,196,198,200,202,0:26,327,0,327,288,0:13,226,205,191,189,191,189,318,314:6,327,0,327,314:2,288,190,192,190,192,206,227,0:26,327,0,327,288,0:5,317,298:5,321,0,322,298:5,290,314:6,327,0,327,314:2,288,0:4,225,181,0:26,327,0,327,288,0:5,318,313:4,781,329,0,739,330:2,332,330:2,782,314,781,330:3,362,327,0,327,314:2,290,298:32,327,0,327,288,0:5,318,313:4,364,0:2,46I(0),0:5,368,314,364,0:6,327,314:23,781,332:8,782,314:2,327,0,327,288,0:5,318,313:4,364,0,325,737,360:2,371,334,0,368,314,364,0:2,325,323,327:3,314:15,781,330:7,329,0:8,356,314:2,327,0,327,288,0:5,318,313:4,364,0,368,314:4,364,0,333,121,738,47I(1):2,740,330:2,332:2,330:2,332:2,330:2,332:2,330:2,332:2,330:3,329,374:7,0:7,325,371,357,314:2,327,0,327,288,0:5,363,330:4,738,47I(0),740,330:3,782,364,0:26,339,0:14,333,332,330,782,314,327,0,327,288,0:10,339,0,339,0:3,356,364,0:26,374,0:16,48I(1),356,314,327,0,327,288,0:5,324,334,0:9,356,364,0:9,138F,0:2,142F,0:2,142F,0:2,142F,0:2,142F,0,138F,0:9,372,0:7,325,371,360,357,314,327,0,327,288,0:5,318,341,0:2,322,0:3,781,330,362,345,358,360,371:2,360:2,371:2,360:2,371:2,360:2,371:2,360:2,371:2,360:2,371:2,360:2,334,372:7,339:2,0:6,356,314:4,327,0,327,288,0:5,318,364,0:2,368,0:3,353,0:2,356,314:26,358,348:3,334,0:11,356,314:4,327,0,327,288,0:5,318,364,0:2,368,0:3,353,0:2,356,314:30,364,0,325,348,371:8,357,314:4,327,0,327,288,0:5,318,341,0:2,345,0,48I(0),0,341,0:2,345,290,309:29,359,0,361,309:13,290,327,0,327,288,0:5,318,364,0:2,333,330:3,329,0:2,356,288,0:4,183,185,0:39,318,327,0,327,288,0:5,318,364,0:9,356,288,0:4,225,181,0:39,318,327,0,327,288,0:5,318,364,0:9,356,288,217,219,217,219,221,223,0:39,318,327,0,327,288,0:5,318,358,371,360:2,323,0,325,360:2,371,357,288,209,211,209,211,213,215,0:39,318,327,0,327,288,0:5,318,314:3,321,0:2,356,314:4,288,0:45,318,327,0,327,288,0:5,318,314:3,358,334,0,333,782,314:3,288,0:45,318,327,0,327,288,0:5,318,314:4,364,0:2,368,314:3,288,0:45,318,327,0,327,288,0,201,199,197,195,318,314:4,364,0,325,357,314:3,288,0:45,318,327,0,327,288,0,226,205,191,189,318,314:3,781,329,0,356,314:4,288,0:45,318,327,0,327,288,0,180,224,0:2,318,314:3,364,0:2,356,314:4,288,0:45,318,327,0,327,290,298:5,290,314:3,358,334,0,356,314:4,288,0:45,318,327,0,327,781,330:10,329,0,356,314:4,288,196,198,196,198,196,198,200,202,0:37,318,327,0,327,364,0:12,356,314:4,288,190,192,190,192,190,192,206,227,0:37,318,327,0,327,364,0:2,325,360:9,357,314:4,288,0:6,183,185,0:37,318,327,0,327,364,0:2,333,122,330:5,122,330:2,782,314:4,290,298:10,297,0:34,318,327,0,327,364,0:12,356,314:6,781,330,332:2,330,332:2,330,782,288,0:34,318,327,0,327,364,0:12,333,330:6,329,0:7,356,288,0:34,318,327,0,327,364,0:2,339,0:7,339,0:16,356,288,0:34,318,327,0,327,364,0:12,325,371:2,360:2,371:2,334,0:7,356,288,0:34,318,327,0,327,364,0:12,356,0:6,364,0:7,356,288,0:34,318,327,0,327,358,360:4,371,360:5,371,360,357,0:6,364,0:7,356,288,0:34,318,327,0,327,314:3,321,0:16,364,0:7,356,288,0:34,318,327,0,327,314:3,364,0,324,360:5,371,360,323,0:6,358,360:2,323,0,325,360:2,357,288,0:34,318,327,0,327,314:3,364,0:9,322,0:11,368,313:3,288,0:34,318,327,0,327,314,781,362,358,360,371,360:5,323,0,368,0:6,325,360:4,357,313:3,288,0:34,318,327,0,327,0,364,0:11,368,324,360:5,357,0:7,306,303,0:34,318,327:3,0,364,0:11,368,313:7,288,0:42,318,327,0,327,0,364,0,325,348,371:7,360,357,313:7,0:7,304,297,0:34,318,327,0,327,0,364,0,333,362,0:4,356,290,309:18,303,0:34,318,327,0,327,0,364,0:7,356,288,0:4,225,181,0:47,318,327,0,327,0,364,0:7,356,288,217,219,217,219,221,223,0:47,318,327,0,327,314,358,371,348,371,348,371,334,0,356,288,0,211,209,211,213,215,0:47,318,327,0,327,314:7,353,0,356,288,0:53,318,327,0,327,363,330:6,329,0,356,288,0,198,196,198,200,202,0:47,318,327,0:11,356,288,0,192,190,192,206,227,0:47,318,327:3,324,348,371,348,371,348,371,348,371,357,288,0:4,183,185,0:47,318,327,0,327,309:10,303,0:4,225,181,0:47,318,327,0,327,0:15,183,185,317,298:46,290" id="1"/>
<tiles values="0:145,61,28:6,0:219,62,0:25,82F,0:195,21:7,0:61,21:7,0:25,63,0:3,63,0:30,21:7,0:160,64,0:3,28,0:3,66,0:35,74F,0:26,28,0,28,0:198,28,0:7,28,0:130,28,0:126,28:4,0:7,61,0:201,28,0:75,28:8,0:204,28:3,0:42,111,0:5,111,0:150,65,0:47,70I(0),0,68I(0),0,70I(0),0:213,66,0:58,65,0:10,28,0:4,63,28,0:122,64,0:67,28,0:4,61,0:54,65,0:83,28:8,0:245,60,0:144,28:5,0:117,154,0:154,28:47,0:69" id="2"/>
<tiles values="678,0,679,0:27,678,0,679,0:35,680,681,682,0:14,701,0:12,678,0,679,0:35,678,0,679,0:27,680,681,682,0:35,680,681,682,0:9,764:2,0:4,764:2,0,764:2,0:7,678,0,679,0:35,678,0,679,790,0:5,789,0:20,680,681,682,0:4,764:2,0:2,764:2,0:2,764:2,0:2,764:2,0:2,764:2,0:2,764:2,0:2,764:2,0:2,764:2,0,680,681,682,790,0:5,789,0:20,678,0,679,0:24,701:8,0:3,678,0,679,0:25,701:2,680,681,682,0:35,680,681,682,790,0:5,789,0:7,749,0:13,711,712,0:2,711,712,0:2,711,712,0:2,711,712,0:23,678,0,679,790,0:5,789,0,711,712,745,0:3,748,711,712,0:48,680,681,682,0:10,742,0:3,749,0:50,678,0,679,790,0:5,789,0:3,741,0:3,747,0:50,680,681,682,790,0:5,789,0:3,741,0:3,748,0:13,708,695,0:2,708,695,0:2,708,695,0:2,708,695,0:10,701:2,0:11,678,0,679,0:10,742,0:3,749,0:50,680,681,682,790,0:5,789,0:3,742,0:3,747,0:37,701:8,0:5,678,0,679,790,0:5,789,0:3,752,751,0,751,750,0:5,767:2,0,767:2,0,767:2,0,767:2,0,767:2,0:2,767:2,0:2,767:2,0:2,767:2,0:2,767,0:3,767:2,0:2,767:2,0:2,767:2,0:3,680,681,682,0:11,701,0,701,0:44,689,688,0:5,678,0,679,790,0:5,789,0:58,680,681,682,790,0:5,789,0:11,790,0,701:3,0:42,678,0,679,0:11,701,0,701,0:4,790,0:46,680,681,682,790,0:5,789,0:58,678,0,679,790,0:5,789,0:4,701,0:6,790,0:46,680,681,682,0:18,790,0:46,678,0,679,790,0,701,0:3,789,0:6,701,0:51,680,681,682,790,0:5,789,0:11,790,0:46,678,0,679,0:18,790,0:46,680,681,682,0,764:5,0:5,701,0:53,678,0,679,0:18,790,0,701:5,0:40,680,681,682,709,0:17,790,0:46,678,0,679,710,0:2,701,0:7,701,0:53,680,681,682,0:19,764:2,0,764:2,0,764:2,0,764:2,0:35,678,0,679,709,0:21,711,712,0,711,712,0:38,680,681,682,710,0:28,790,0:35,678,0,679,0:3,701,0:7,701,0:17,790,0:35,680,681,682,709,0:13,711,712,0:2,711,712,0:45,678,0,679,710,0:64,680,681,682,0:5,701,0:5,701,0:17,790,0:35,678,0,679,0:29,790,0:35,680,681,682,0:5,701,0:5,701,0:11,701,0,701,0:4,689,688,0:33,678,0,679,0:65,680,681,682,0:5,701,0:5,701,0:9,767,0,701,0,701,0,767,0:37,678,0,679,0,789,0:63,680,681,682,0,789,0:63,678,0,679,0:5,711,712,711,712,0:56,680,681,682,0:15,767:2,0:3,767:2,0:3,767:2,0:38,678,0,679,0,789,0:15,689,688,0:46,680,681,682,0,789,0:8,790,0:2,701:2,0:50,678,0,679,0:10,790,0:54,680,681,682,0:65,678,0,679,0:10,790,0:2,701:2,0:50,678,0,679,0:10,790,0:54,680,681,682,707,0,707,0,707,0,707,0,707,0,692,0:54,678,0,679,767:2,0,767:2,0:60,680,681,682,0:65" id="3"/>
<tiles values="0:397,10,7:6,12,0:170,11:16,0:33,5:2,0:3,5:3,0:11,6:16,0:32,5:4,0,5:4,0:11,9:16,0:32,5:2,0,5:3,0,5:2,0:59,5:2,0,5:3,0,5:2,0:59,5:2,0,5:3,0,5:2,0:35,10,7:6,12,0:16,5:2,0,5,0,5,0,5:2,0:59,5:2,0:5,5:2,0:59,5:9,0:59,5:4,0,5:4,0:956,5:7,0:62,5:6,0:61,5:7,0:54,5:6,0,5:7,0:54,5:6,0,5:7,0:44,5:9,0:2,5:5,0,5:3,0,5:3,0:44,5,0:9,5:6,0:52,5:9,0,5:5,0:61,5,0,5:6,0:52,5:9,0:59,5:9,0:262,8,0:537" id="4"/>
<tiles values="0:3604" id="5"/>
<tiles values="0:1432,115,0:67,115,0:67,115,0:67,1,0:1967" id="6"/>
<sign text="Right Dirk..
What? You again?! Get off this channel!" n="1636" layer="6" width="0" height="0" face="prof" forced="false"/>
<msg text="Power Plant 2"/>
</root>
;
level_data["2503017f3066ea7076e66ef55ac46621"] = <root>
<level width="19" height="15" start_x="9" start_y="10" compression="false" background="1" scroll="1"/>
<tiles values="506:2,480,0:3,661,506:4,480,0:4,661,506:4,523:15,506:4,586,585,586,585,586,585,586,585,586,585,586,585,586:2,585,506:4,564,563,564,563,564,563,564,563,564,563,564,563,564:2,563,506:4,523:15,506:4,660,0:3,481,506,586,585,506,660,0:4,481,506:4,0:5,506,564,563,506,0:6,506:4,0:5,506,586,585,506,0:6,506:4,0:5,506,564,563,506,0:6,506:4,0:5,506,586,585,506,0:6,506:4,480,0:3,661,506,564,563,506,480,0:4,661,506:3,523:16,506:3,523:16,506:4,660,0:3,481,506:4,660,0:4,481,506:4,0:5,506:4,0:6,506:2" id="0"/>
<tiles values="0:136,178,0:11,178,0:5,772,769,768,0:9,772,771,768,0:5,173,0:11,173,0:42,772,771,770:13,769,768,0:39" id="1"/>
<tiles values="0:117,61,0:11,61,0:7,59,0:9,57,0:13,24,0:49,28:3,0:9,28:3,0:23,774F,0:13,773F,0:21" id="2"/>
<tiles values="0:154,767:3,0:9,767:3,0:66,767,0:2,767,0:8,692,0:17,692,0:19" id="3"/>
<tiles values="0:101,10:6,11,0:12,9,0,11,12:3,11,0:12,9,0,11:2,0,9,11,0:12,9,0,11:2,12,5,12,0:12,9,12:2,10:2,9,0:102" id="4"/>
<tiles values="0:285" id="5"/>
<tiles values="0:285" id="6"/>
<msg text="Service Lift 1"/>
</root>
;
level_data["652246653c921c611610325ece370700"] = <root>
<level width="86" height="50" start_x="81" start_y="4" compression="false" background="4" scroll="0"/>
<tiles values="0:2,778:7,0:31,566,547,0:6,532,660,0:2,532,569,0,645,778,533,0,495,778,533,0:4,662,0:2,548,569,0:5,663,566,547,0:2,778,586,585,778,0:3,778:7,0:32,474,655,0,661,646,0,645,778,0:2,658,477,0:2,534,533,0:2,778,533,0:5,662,495,778,477,0:6,663,0,474,655,532,778,564,563,778,0:3,778:7,0:2,778,0:5,778,0:19,778,0:2,535,0,603,778:2,533,0,670,533,0,602,606,0:6,661,533,0:6,619,778,606,0:10,603,778:2,586,585,778,0:3,778:6,533,0,670,778:4,605,0,534,778:10,0,586,585,586,778:4,585,586,585,0,778:4,496,0:4,532,778,533,0:5,619,533,0:6,495,778,533,0:11,534,778:2,564,563,778,0:3,778:6,535,0:2,619,656,0:2,657,476,475,533,0,534,778:6,0:2,564,563,564,778:4,563,564,563,0,533,0,548,569,0:4,661,778:2,655,619,646,0:2,661,778,0:7,548,569,0:13,635,778,586,585,778,0:3,778:4,533,534,660,0,661,647,0:4,550,778:10,0:2,586,585,586,778:4,585,586,585,0:2,658,477,0:4,619,778,533,0,603,778,621,0,532,778,496,0:6,658,477,0:12,778:7,0:3,778:3,514,0:3,619,778:8,547,0:2,619,778:7,564,563,564,778,0:2,778,563,564,563,0,602,606,0,661,535,0,619,778,660,0,661,778:2,535,532,778,533,0:6,602,533,0:15,497,778:4,0:3,778:3,0,528,0,619,533,0:4,658,533,0:2,474,655,645,778:12,0:2,778:4,0,778:2,535,534,778:12,535,0,668,535,0:2,532,569,0:17,778,586,585,778,0:3,778:3,671,0,545,778:2,646,0:2,668,606,0:2,661,778:11,564,563,564,778,0:2,778,563,564,563,0,778:4,506:2,778:4,506:2,778:6,635,0:2,658,477,0:18,778,564,563,778,0:3,778:4,551,778:16,506:3,778:5,586,778,0:2,778,585,586,585,0,778:4,506:4,778:2,506:2,778:3,506:3,602:3,606,0:19,778,586,585,778,0:3,778:7,506:6,778:2,506,778:5,506:3,778:5,564,778,0:2,778,563,564,563,0,778:4,506:4,778:2,506:2,778:3,506:3,778,0:14,495,671,0:2,668,646,0:2,778,564,563,778,0:3,778:7,506:6,778:2,506,778:5,506:2,778:6,586,778,0:2,778,585,586,585,0,778:4,506:4,778:2,506:2,778:3,506:3,778,0:10,495,0,646,0,648,778,0:2,778,606,0:2,778,586,585,778,0:2,778:8,506:6,778:2,506,778:5,506:3,778:5,564,778,0:2,778,563,564,563,0,778,0:7,778:2,506:2,778:3,506:3,778,0:10,534,778,669,0:2,662,0:2,566,547,0:2,778,564,563,778,0:2,778,0,778:3,528,0:2,526,0:2,528,0:2,526,0:2,778:6,506:2,778:7,0:2,778:5,585,0:7,778:2,506:2,778:3,506:3,778,0:7,620,0:2,661,621,0:2,645,778,535,0:2,474,655,532,778,586,585,778,0:3,513,0:4,545,513,0:4,545,513,0:4,545,778:4,506:2,778:3,564,563,564,778,0:2,778,563,564,563,564,778:3,506,778:4,0:7,778,506:2,0:7,602,778:4,659:3,778:2,647,0:3,778:3,586,585,778,0:3,778:6,533,0:5,495,671,0:2,668,646,670,660,622,506:3,778:3,586,585,586,778,0:2,778,585,586,585,586,778:3,506,778:4,0:7,778,506:2,778,0:6,566,778:2,621,0:4,534,547,0:4,548,778:2,586,585,778,0:3,778:5,533,0:2,495,0,646,0,648,778,0:2,778,606,0:3,778,0:2,778:3,564,563,564,778,0:2,778,563,564,563,564,778:3,506,778:3,506,778:3,506,778:3,506:3,778:4,0:4,474,778,0:6,474,655,0:2,658,477,648,778,586,585,778,0:3,778:5,535,0:2,534,778,669,0:2,661,0:2,566,547,0:2,645,0:4,778:2,586,585,586,778,0:2,778,585,586,585,586,778:3,506,778:3,506,778:4,0:8,778:2,0:5,603,535,532,646,0:4,603,778:2,606,0:2,778,586,585,778,0:3,778:6,646,0,661,621,0:2,645,778,535,0:2,474,655,532,778,0,778,0:2,778:2,564,563,564,778,0:2,778,563,564,563,564,778:3,506,778:3,506,778:3,0:9,778:2,0:5,548,778:2,547,0:4,548,659:2,547,0:2,778,586,585,778,0:3,778:2,533,0,670,778:4,0:3,778:2,647,0:3,778:3,622,778,0:2,778:25,0:8,778:2,0:4,658,477,670,669,474,655,0:2,658,477,0:2,474,655,0,778,586,585,778,0:3,778,621,0:3,510,778:2,0,535,0:2,534,547,0:4,548,778,0:2,778,0:2,778:24,0:9,778:3,659:2,778,606,0:4,603,778:2,606,0:4,603,778:2,586,585,778,0:3,778,0:3,661,551,778:2,0,660,0:3,474,655,0:2,658,477,648,0,532,778,0:2,778:24,0:10,778:2,659:2,778,547,0:4,548,659:2,547,0:4,548,659,778,586,585,778,0:3,778,535,0,532,669,0:2,497,532,646,0:4,603,778:2,606,0:2,619,778:2,0:15,778:11,0:10,533,0:4,474,655,0:2,658,477,0:2,474,655,0:2,658,477,0,778,586,585,778,0:5,523,778,0:4,778,547,0:4,548,659:2,547,0:2,778:2,0:16,778:11,0:16,603,599,602,606,0:4,603,636,778,606,0:2,778,586,585,778,0:5,778,511,0:4,543,778:2,535,532,778:2,514,0:3,532,778,0:18,778,0,778:8,0:16,548,778,636,547,0:4,548,569,566,547,0:2,778,586,585,778,0:3,778:4,498,0:2,526,0:2,670,778:4,0,528,0,532,778:5,586,585,586,585,586,585,0:8,778:2,0,778:4,0:3,778:2,0:8,778,646,0:4,658,477,0:2,474,655,0:2,658,477,0:2,474,655,0,778,586,585,778,0:3,778:6,513,0:4,545,513,0:4,545,778:6,564,563,564,563,564,563,778:14,0:9,778,659:9,778,606,0:4,603,778:2,606,0:4,603,778:2,586,585,778,0:3,778:7,0:4,516,522,0:4,778:8,506,778:2,506,778:3,533,0:2,524,507,0:2,524,507,0,534,778,0:6,778,0:2,778,659:9,778,547,0:4,548,659:2,547,0:4,548,659,778,586,585,778,0:3,778,533,0,497,778:3,533,534,551,778:2,498,661,778:12,0,778,506,0,778,533,0:3,676,633,0:2,676,633,0:2,676,778,0,778:3,0,778,0:2,778:3,0:8,474,655,0:2,658,477,0:2,474,655,0:2,658,477,0,778,586,585,778,0:5,778,0,778:3,646,0,534,778:15,0:3,506,0,778,0:4,676,633,0:2,676,633,0:2,676,778,642,641,778:2,0,778,0:2,778:3,0:9,603,636,778,606,0:4,603,599,602,606,0:2,778,586,585,778,0:2,778:4,668,778:4,480,645,778:10,0:8,506,0,778,0:4,676,633,0:2,676,633,0:2,676,778,641,642,778:2,0,778,0:2,778:3,647,0:8,548,569,566,547,0:4,548,636:2,547,0:2,778,586,585,778,0:2,778:20,585,0:8,506,0,511,0:4,676,633,0:2,676,633,0:2,676,778,642,641,778:2,0,778,0:2,778:3,0:8,658,477,0:2,474,655,0:2,658,477,0:2,474,655,0,778,586,585,778,0:2,778:14,0:3,564,563,564,563,0:8,506,0,778,0:4,597,594,0:2,597,594,0:2,597,778,641,642,778:4,0:2,778,659:9,778,606,0:4,603,778:2,606,0:4,603,635,778,586,585,778,0:3,778:15,0:2,516,0:9,778,506,0:6,778:13,0:2,778,0:2,778,659:9,778,547,0:4,548,778,635,547,0:4,548,778:2,586,585,778,0:3,778:10,586,585,586,585,506,778:13,506,0:6,524,507,0:2,676,633,0:2,524,778,641,642,0:3,778,0:2,778:2,0:9,474,655,0:2,658,477,0:2,474,655,0:2,658,477,0,778,586,585,778,0:3,564,563,564,778:7,564,563,564,563,506,778:13,506,0:6,676,633,0:2,676,633,0:2,676,778,642,641,0:3,778,0:2,778:3,0:9,603,599,602,606,0:4,603,599,602,606,0:2,778,586,585,778,0:3,778:11,506,778:2,506,514,0,778:5,0,778:5,506,0:6,676,633,0:2,676,633,0:2,676,778,641,642,0:3,778,0:2,778:2,669,0:9,548,569,566,547,0:4,548,569,566,547,0:2,778,586,585,778,0:3,778:8,0:2,528,0:2,526,0:2,528,0,564,563,564,563,0:2,778:4,506,0:6,676,633,0:2,676,633,0:2,676,778,642,641,0:3,778,0:2,778,669,0:9,658,477,0:2,474,655,0:2,658,477,0:2,474,655,0,778,586,585,778,0:3,778:5,635,778,635,0:3,545,513,0:4,545,586,585,586,585,0:6,778,0:6,676,633,0:2,676,633,0:2,676,778,641,642,0:3,778,0:2,778,659:9,778,606,0:4,603,635,778,606,0:4,603,778:2,586,585,778,0:3,778:3,533,0:3,648,0:10,564,563,564,563,0:13,676,633,0:2,676,633,0:2,676,778,642,641,0:3,778,0:2,778,659:9,778,547,0:4,548,778:2,547,0:4,548,635,778,586,585,778,0:3,778:2,621,0:15,586,585,586,585,0:13,676,633,0:2,676,633,0:3,778,641,642,0:3,778,0:2,647,0:10,474,655,0:2,658,477,0:2,474,655,0:2,658,477,0,778,586,585,778,0:3,778,621,0:14,506:2,564,563,564,563,506,0:5,778:3,0:4,676,633,0:2,676,633,0:3,778,642,641,0:3,778,0:14,603,599,602,606,0:4,603,599,602,606,0:2,778,586,585,778,0:3,533,0:15,506:2,586,585,586,585,586,585,506:6,511,0:4,676,633,0:2,676,633,0:2,676,778,641,642,0:3,778,0:14,548,569,566,547,0:4,548,569,566,547,0:2,778,586,585,778,0:14,534,778:2,0:2,506:2,564,563,564,563,564,563,506:7,0:4,676,633,0:2,676,633,0:2,676,778,642,641,0:3,778,0:2,646,0:10,658,477,0:2,474,655,0:2,658,477,0:2,474,655,0,778,586,585,778,0:15,534,778,0:2,506:2,586,585,586,585,586,585,506:7,535,0:3,676,633,0:2,676,633,0:2,676,778,641,642,0:3,778,0:2,778,659:9,778,606,0:4,603,778:2,606,0:4,603,778:2,586,585,778,0:16,534,0:2,506:2,564,563,564,563,564,563,506:7,778,620,0:2,597,594,0:2,676,633,0:2,597,778,642,641,0:3,778,0:2,778,659:9,778,547,0:4,548,778:2,547,0:4,548,778:2,586,585,778,0:19,506:15,778:4,0:2,778,646,597,594,0,619,0:2,641,642,0:3,778,0:2,647,0:10,474,655,0:2,658,477,0:2,474,655,0:2,658,477,0,778,586,585,778,0:24,506,0,778,506:7,778:3,0:4,778:6,0:6,778,0:14,603,599,602,606,0:4,603,599,602,606,0:2,778,586,585,778,0:27,506:5,0,506,778:3,0:3,778:6,0:7,778,0:14,548,569,566,547,0:4,548,569,566,547,0:2,778,586,585,778,0:27,506:5,0:2,778:3,0:4,778:5,0:7,778,0:13,658,477,0:2,474,655,0:2,658,477,0:2,474,655,0,778,586,585,778,0" id="0"/>
<tiles values="314,288,0:7,318,314:27,288,318,288,0:43,327:3,314,288,0:7,318,314:27,288,318,288,0:43,327,0,327,314,288,0:7,310,309,53,309:5,306,309:9,290:2,309:8,303,318,288,0:25,294,319:11,293,0:7,327,314,288,170,162,0:23,318,288,0:9,318,288,0:45,327,314,288,170,162,0:23,318,288,0:9,318,288,0:45,327,314,288,0:25,318,288,0:4,311:2,0:3,318,288,0:37,294,319:5,327,0,327,314,288,0:25,310,303,0:4,302:2,0:3,318,288,0:11,295,0:30,419,327,0,327,314,288,170,162,0:29,302:2,0:3,318,288,0:3,294,319:11,307,0:27,327,0,327,314,288,170,162,0:16,294,293,0:11,302:2,0:3,318,288,0:12,295,0:2,308,319,307,317,304,298:4,304,297,0:17,327,0,327,314,288,0:6,308,319:21,297,0:2,302:2,0:3,318,288,0:16,53,0,318,314:6,288,0:17,327,0,327,314,288,0:26,290,314,288,0:2,302:2,0:3,318,288,308,307,0:16,318,314:6,288,0:17,327,0,327,314,288,170,162,0:21,295,0,295,318,314,288,0:2,302:2,0:3,318,288,0:18,318,314:6,288,0:4,311,0:3,311,0:3,311,0:4,327,0,327,309,303,170,162,0:24,318,314,288,0:2,302:2,0:3,318,288,317,298:7,297,0:4,308,307,0:3,318,314:6,288,0:4,301,0:3,301,0:3,301,0:4,327:3,298:24,297,0,317,304,290,314,288,0:2,302:2,0:3,310,303,310,309:7,303,0:9,318,314:6,288,0:17,327,0,327,314,290:2,309,290,309,290,309,290,309,290:2,314:4,290:2,309,290,309,290,309,290,303,0,318,314:3,288,0:2,302:2,0:12,317,298:7,297,0:2,318,314:6,288,0:17,327,0,327,314,288,0:9,318,314:4,288,0:9,318,314:3,288,0:2,302:2,0:12,310,309:7,303,0:2,310,309:6,303,0:17,327,0,327,314,288,0:9,310,306,309:3,303,0:6,317,298:2,290,314:3,288,0:2,302:2,0:23,56,294,307,382,384,0:20,327,0,327,314,288,0:21,318,314:6,288,0:2,302:2,0:16,317,298:8,297,376,378,0:13,308,307,0:5,327,0,327,314,288,0:21,318,314:6,288,0:2,302:2,0:16,318,314:8,288,376,378,0:20,327,0,327,314,288,0:8,311,0:12,318,314:6,288,0:2,301:2,0:5,317,298:9,293,318,314:8,288,376,378,0:20,327,0,327,314,288,0:5,317,298:2,302,0:6,317,298:5,290,314:6,288,382,383:7,384,318,314:9,288,318,314:8,288,376,378,0:9,308,307,0:6,308,307,0,327,0,327,314,288,295,0:4,310,309:2,302,0:6,318,314:12,288,379,380:7,381,310,309:9,303,318,314:8,288,379,381,0:20,327,0,327,314,288,0:8,301,0:6,318,313,314:11,290,298:9,297,0:10,318,314:8,288,0:22,327,0,327,314,290,298:2,297,0:12,318,314:22,288,0,322,0:8,318,314:8,288,0:22,327,0,327,314,290,309:2,303,0:12,318,314:22,288,0,368,0:8,318,314:8,288,0:22,327,0,327,314,288,0:15,318,314,290,309:20,303,0,368,324,360,323,325,348:3,323,310,309:8,303,0:22,327,0,327,314,288,0:6,317,304,298:7,290,314,288,0:11,311,321,0:9,361,0:3,356,314:4,327:3,353,0:17,308,307,0:6,308,307,0,327,0,327,314,288,0:6,310,306,309:9,303,0:11,302,364,0:13,356,314:4,327,0,327,353,0:28,327,0,327,314,288,0:25,317,304,297,0,302,364,0:13,368,781,331:2,782,327,0,327,358,348:3,334,0:24,327,0,327,314,290,298:2,297,0:22,318,314,288,0,302,359,0:13,361,359,0:2,368,327,0,327,781,330:3,329,0:24,327,0,327,314,290,309:2,303,0:16,317,298:5,290,314,290,0,302,0:3,322,321,0:13,368,327,0,327,353,0:28,327,0,327,314,288,0:19,318,314:7,288,0,302,0:3,368,364,0:13,333,327,0,327,353,0:28,327,0,327,314,288,0:8,317,298:4,290,298:5,290,314:7,288,0,302,321,0:2,368,364,0:16,327,353,0:9,308,307,0:17,327,0,327,314,288,0:8,310,309:4,290,309:5,290,309:5,290,309,303,0,302,364,0:2,368,364,324,360:2,323,322,321,324,360:4,323,325,348,327:3,353,0:28,327,0,327,314,288,0:29,302,364,0:2,361,359,0:4,368,364,0:6,356,314,327,0,327,358,348:3,334,0:24,327,0,327,314,290,298:2,297,0:26,302,364,0:8,368,364,0:6,356,314,327,0,327,781,330:3,329,0:24,327,0,327,314,290,309:2,303,0:5,317,298:8,297,0:3,317,298,297,0:5,302,364,0:8,361,359,0:6,356,314,327,0,327,353,0:28,327,0,327,314,288,0:8,318,314:8,288,0:3,318,314,288,0:5,302,364,0:16,356,314,327,0,327,353,0:28,327,0,327,314,288,0:8,318,314:8,288,0:3,318,314,290,298:4,297,302,364,0:16,356,314,327,0,327,353,0:28,327,0,327,314,288,0:8,318,314:8,288,0:3,318,314:6,288,302,364,0:4,322,321,0:6,322,321,0:2,356,314,327,0,327,353,0:28,327,0,327,314,288,0:8,318,314:8,288,0:3,318,314:6,288,302,364,0:4,368,364,0:6,368,364,339,325,357,314,327,0,327,353,0:28,327,0,327,314,288,0:8,318,314:8,288,0:3,310,309:6,303,301,359,0:4,368,364,0:6,368,364,339,356,314:2,327,0,327,353,0:28,327,0,327,314,288,0:8,309:6,290:2,309,303,0:17,361,359,0:6,361,359,0,356,314:2,327,0,327,353,0:28,327,0,327,314,288,0:11,295:3,318,288,295,0:29,356,314:2,327,0,327,353,0:28,327,0,327,314,288,0:14,318,288,0:30,356,314:2,327,0,327,353,0:28,327,0,327,314,288,0:11,295:3,318,288,295,0:29,368,314:2,327,0,327,353,0:28,327,0,327,314,288,0:14,318,288,0:7,295,0:3,325,360:2,334,0:3,325,360:2,334,0:4,325,360:3,357,314:2,327,0,327,353,0:28,327,0,327,314,288,0:14,290:2,298:7,297,0:3,368,314:2,364,0:3,368,314:2,364,0:4,368,314:6,327,0,327,353,0:28,327,0,327,314,288,0:14,318,288,314:7,288,0:3,368,314:2,364,0:3,368,314:2,364,0:4,368,314:6,327,0,327,353,0:28,327,0,327,314,288,0:14,318,288,314:7,288,0:3,368,314:2,364,0:3,368,314:2,364,0:4,368,314:6,327,0,327,353,0:28,327,0,327" id="1"/>
<tiles values="0:153,28:2,0:5,28:2,0:266,154,0:89,28,61,0:42,60,0:60,59,0:37,108,0:40,28,0:4,28,0:2,28,0:30,106,0:120,28:2,0:66,28,0:3,28,0:3,28,0:33,106,0:26,58,0:47,57,0:8,57,0:110,28,0:4,61,0:142,61,0:136,28:2,0:138,108,110,0:58,35,28,0:52,28:2,0:6,28:2,0:6,61,0:171,105,28:2,0:210,28:4,57,0:48,28,0:5,58,0:55,28:2,0:6,28:2,0:145,28:4,0:29,28:2,0:117,28,57,0:149,60,0,61,0:15,28,0:94,28:2,0:6,57,0:2,62,0:88,28:4,0:29,28:2,61,0:99,28,0:4,57,0:174,28,0,28,0,28,0:92,28:2,0:6,57,28,0:87,61,0:256,105,0:137,28:3,0:2,105,0:97,57,0:6,28:2,0:6,28:2,0:383" id="2"/>
<tiles values="0,790,0:50,743,0:9,741,0:20,678,0,679,0:39,736,0:12,741,0:9,741,0:20,680,681,682,0:9,767,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0:14,790,0:12,741,0:9,743,0:2,767,0:2,767,0:2,767,0:2,767,0:2,767,0:5,678,0,679,0,790,0:11,743,741,0:14,743,0:22,743,0:9,742,0:20,678,0,679,0,790,0:11,742,743,0:14,741,0:22,742,0:9,741,0:20,678,0,679,0:13,741,742,0:14,741,0:22,741,0:9,741,0:14,733,690,693,0:3,680,681,682,0:13,741:2,0:14,741,0:9,790,0:12,743,0:9,743,0:20,678,0,679,0,790,0:11,743,741,0:14,741,0:3,764:2,0:8,736,0:18,742,0:20,678,0,679,0,790,0:11,742,743,0:14,743,0:15,742,0:6,701,0:2,764,0:8,690,693,0:17,680,681,682,0:11,767,0:3,767,0:3,767,0:3,767,0:3,767,0:17,741,0:9,742,0:27,678,0,679,0:10,742,0:28,790,0:5,742,0:9,741,0:9,686,0:17,680,681,682,0,790,0:8,741,0:14,701,0,701,0:17,741,0:9,741,0:9,687,0:17,678,0,679,0,790,0:8,743,0:44,743,0:9,687,0:17,680,681,682,0:4,767,0:3,767,0:10,767,0:3,767,0:9,764:2,0:20,742,0:9,687,0:17,678,0,679,0:11,767,0:4,767,0:48,694,0:17,680,681,682,0:9,749,0:73,678,0,679,0:9,747,0:2,733,0:70,680,681,682,0:9,748,0:73,678,0,679,0:9,749,0:49,686,0:23,680,681,682,0:9,747,0:23,764:2,0:24,687,0:23,678,0,679,0:10,789,0:28,692,764,0:9,764,0:8,687,0:23,680,681,682,0:2,701,0:7,789,0:48,687,0:23,678,0,679,0:9,747,0:49,687,0:23,680,681,682,0,790,0,690,693,0:4,748,0:49,687,0:23,678,0,679,0,790,0:7,749,0:49,694,0:23,680,681,682,0:9,747,0:11,767,0:3,767,0:3,767,0:53,678,0,679,0:8,690,693,0:14,742,0:6,767,0:10,763,0:3,763,0:3,763,678,0,679,0:29,680,681,682,0:10,767,0:3,767,0:3,767,0:5,741,0:26,680,681,682,0:29,678,0,679,0:13,742,0:10,741,0:26,678,0,679,788,0:28,680,681,682,0,790,0:11,741,0:10,743,0:7,766,0:13,702:2,0:3,680,681,682,788,0:28,678,0,679,0,790,0:11,743,0:37,678,0,679,0:29,680,681,682,0:13,742,0:18,766,0:18,678,0,679,0:29,678,0,679,0:51,678,0,679,0:29,680,681,682,0:15,734,0:5,767,0:5,767,0:9,763:2,0:2,763:2,0:2,763:2,0:4,680,681,682,0:29,678,0,679,0:24,741,0:26,678,0,679,788,0:28,680,681,682,0,790,0,690,693,0:19,743,0:26,680,681,682,788,0:28,678,0,679,0,790,0:8,690,693,0:29,702:2,0:8,678,0,679,0:29,680,681,682,0:51,680,681,682,0:29,678,0,679,0,686,0:8,686,0:40,678,0,679,0:29,680,681,682,0,687,0:8,687,0:26,763:2,0:6,763:2,0:4,680,681,682,0:29,678,0,679,0,687,0:8,687,0:40,678,0,679,0:29,680,681,682,0,687,0:8,687,0:20,767,766,0:4,766:2,0:8,701,0:3,680,681,682,0:29,678,0,679,0,694,0:8,694,0:5,767:2,0:33,678,0,679,0:29,680,681,682,0:18,701,0:26,742,741,0:4,680,681,682,0:29,678,0,679,0:45,741,743,0:4,678,0,679,0:29,680,681,682,0:45,743,742,0,735,0:2,680,681,682,0:29,678,0,679,0:25,692,0:25,678,0,679,0:29,680,681,682,0:51,680,681,682,0:29,678,0,679,0:16,764:2,0:7,764,0:25,678,0,679,0:29,680,681,682,0:29,684,685:2,683,0:3,684,685:2,683,0:4,684,685:2,683,0:3,680,681,682,0:29,678,0,679" id="3"/>
<tiles values="0:562,8,0:60,8,0:35,10,7:3,12,0:335,8,0:47,8,0:8,8,0:595,10,7,12,0:511,8,0:363,8,0:149,8,0:120,8,0:231,8,0:279,8,0:586,8,0:399" id="4"/>
<tiles values="0:4300" id="5"/>
<tiles values="0:52,115:3,0:23,115:3,0:57,115:3,0:23,115:3,0:57,115:3,0:23,115:3,0:57,115:3,0:23,115:3,0:57,115:3,0:23,115,1,115,0:57,115:3,0:83,115,1,115,0:3729" id="6"/>
<sign text="You took out Dr Boshi! Wow Taki!!
When we get out of here I'm buying you a great big healthy dinner.
You didn't learn all this from the combat academy did you? I need to know those secret moves you've got going on!
OK, go to the roof. I'm heading there as well. From there we can get the service elevator right back down to the dock and the sub.
See you at the top!" n="423" layer="6" width="0" height="0" face="ninja" forced="false"/>
<sign text="Excellent work Takeshi. Up here we can reach you with a signal. I see Lady Snowfox has been giving you all the guidance you need. She's a great girl, look after her hur hur but she'll probably look after you." n="569" layer="6" width="0" height="0" face="akuma" forced="false"/>
<msg text="Warehouse 3"/>
</root>
;
level_data["a9f9dc083795f29ff680211551608fce"] = <root>
<level width="40" height="60" start_x="15" start_y="58" compression="false" background="1" scroll="0"/>
<tiles values="0:38,509,0:39,506,0:39,506,0:39,506:2,0:37,506,0,506,0:37,506:3,0:37,506:3,0:37,506:3,0:37,506:3,0:37,506:3,0:37,506:3,0:37,506:3,0:19,778:2,0:2,778:2,0:4,778:2,0:2,778:2,0,506:4,0:19,506:21,0,506:10,0:8,506:21,0,506:10,0:8,506:21,0,506:10,0:8,506:21,0,506:10,0:8,506:17,509,506:3,0,506:4,0,506:2,0:11,509:2,506:2,509,506:6,509,506:5,509,506:3,0,506:3,0,632,506:2,0:3,506:2,0:3,506:18,631,629,627,506:3,0,506:3,0,626,616,523:16,509,506,523:4,506:2,523:2,615,614,612,609,506:3,0,506:4,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,506:2,629,627,628,630,506:2,628,630,629,627,628,630,506:3,0:4,506,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,506:2,612,609,610,613,506:2,610,613,612,609,610,613,506:3,679,0:3,506,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,506:3,682,0:4,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,506:3,0:5,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,506:3,679,0:4,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,506:3,682,0:3,506,626,624,523,506:9,522,506,523:15,614,0:2,506:3,679,0:3,506,607,506,523,506:26,608,0:2,506:3,682,0:4,506:2,523,506,509,506:2,509,506,0:2,506:18,0:3,506:3,0:5,506:9,0:2,506:18,0:3,506:3,0:4,506:2,0:4,506:25,0:2,506:9,0:4,506:25,0:2,506:3,0,506:13,0:2,506:18,0:3,506:3,0,506:3,0:2,506:2,0:6,506,0,506:18,0:3,506:19,523,506:17,0:3,506:3,0,506:16,522,506:16,0:3,506:3,0,506,628,630,629,627,628,630,629,627,628,630:2,506:5,0:2,506:2,0:4,506:2,0:9,506:3,0:2,610,613,612,609,610,613,612,609,610,613:2,506:4,0:20,506:3,0:3,506,628,630,629,627,628,630,629,627,0,506:4,0:20,506:3,0:4,610,613,612,609,610,613,612,609,0,506:4,0:20,506:3,0:5,506,628,630,629,627,628,630,506:6,0:19,506:9,610,613,612,609,610,613,506:6,0:19,506:3,0,506:5,629,627,628,630,629,627,0,506:4,0:20,506:3,0,506:3,0:2,612,609,610,613,612,609,0,506:4,0:20,506:3,0,506,509,506,0:2,506:2,0:5,506:5,0:19,506:3,0,506:7,0:4,506:6,0:19,506:9,509,506,0:4,506:5,0:20,506:3,0:2,506:2,0,506:3,0:4,506:5,0:20,506:3,0:2,506:2,0,506:3,0:4,506:13,0:14,506:9,0:5,506:12,0:15,506,509,506:2,0:18,506:3,0:15,506:3,0:19,506:3,0:15,506:2,509,0:19,506:3,0:15,506:3,0:19,506:3,0:15,506,509,506:3,631,629,627,506,0:13,506:3,0:15,506:4,615,614,612,609,506:35,631,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,506,628,630,629,627,628,630,629,627,628,630,629,627,628,630,629,509,506,615,614,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,506,610,613,612,609,610,613,612,609,610,613,612,609,610,613,612,0,506:39" id="0"/>
<tiles values="257:38,0,257:101,289:4,257:6,289:4,257:26,289:4,257:6,289:4,257:3,0,257,0,257:20,289:4,257:6,289:4,257:3,0:3,257:20,289:4,257:6,289:4,257:3,0:3,257:2,289:2,257:4,289:2,257:10,289:4,257:6,289:4,257:3,0:3,257:2,289:2,257:4,289:2,257:10,289:4,257:6,289:4,257:3,0:3,257:2,289:2,257:4,289:2,257:10,289:4,257:6,289:4,257:3,0:3,257:2,289:2,257:4,289:2,257:8,256,257,289:4,257,256,257:2,256,257,289:4,257,256,257,0:3,257:2,289:2,257:4,289:2,257:27,0:3,257:2,289:2,257:4,289:2,257:8,755,245:2,261:2,245:2,261,250,755,261,245:2,261:2,245:2,261,250,0:3,257:18,761,0:7,251,761,0:8,251,0:3,755,245,261,245,261,245,261,245,261,245,261,250,257:6,761,0:7,251,761,0:8,251,0:3,761,0:10,251,257:6,761,0:4,246,247,0,251,761,0,246,247,0:5,251,0:3,761,0:2,246,242,247,0:2,260:2,0,251,234:6,761,0:4,251,761,0,251,761,0,251,761,0:5,251,0:3,761,0:2,228,250,761,0:5,251,257:6,761,0:4,248,249,420,248,249,417,248,249,0:5,251,0:3,761,0:3,251,761,0,246,242:3,252,257:6,761,260:2,0:2,170,171,174:5,162,0:3,260:2,251,0:3,761,0:3,251,761,0,228,261:3,259,758,261:5,229,0:4,246,247,418,0:2,419,246,247,0:5,251,0:3,761,0:3,251,761,0:17,258,754,0:4,258,754,0:5,251,0:3,761,0:3,228,229,0:17,251,761,0:4,251,761,0:5,251,0:3,756,242:3,247,0:18,237,753,0:4,237,753,0:5,251,0:3,234:4,754,0:17,417,228,229,420,0:2,417,228,229,420,0:4,228,0:3,257:4,761,0:17,170,174:2,162,0:2,170,171,174,162,0:8,257:4,761,0:35,257:4,761,0:29,246,242:2,257:7,753,0:3,170,171,174:3,171,174:4,162,0:14,170,258,257:2,0:3,257:4,754,260,0:7,419,246,247,418,0:16,419,251,257:2,0:3,257:4,761,260:2,0:7,251,761,0:16,170,174,251,257:2,0:3,234:4,761,260:3,0:6,251,761,0:17,419,251,257:2,0:3,261:4,229,246,242:4,247,0:3,237,753,0:15,170,174:2,237,257:2,0:3,240,0:4,228,261:4,229,0:3,258,754,0:17,419,258,257:2,0:3,761,0:13,251,761,0,246,247,0:4,246,247,0:4,246,247,0:3,251,257:2,0:3,761,0:2,246,242:2,241,757,242:6,252,761,0,251,761,0:4,251,761,0:4,251,761,0:3,251,257:2,0:3,249,0:2,228,758,259,758,259,758,259,261,250,755,261:2,229,0,228,229,0,246,247,0,228,229,0,246,247,0,228,229,0:3,251,257:2,0:3,242,247,0:9,251,761,0:2,178,0:4,228,229,0:4,228,229,0:6,251,257:2,0:3,234,761,0:9,237,753,0:2,175,0,246,242:2,757,241,242:4,757,241,242:6,252,257:2,0:3,257,756,242,247,0:7,258,754,162,0,175,0,251,234:2,289:2,234:4,289:2,234:7,257:2,0:3,257,234:2,761,0:7,251,761,0:2,175,0,251,257:2,289:2,257:4,289:2,257:9,0:3,257:3,756,242,247,0:5,251,761,0,170,172,0,251,257:2,289:2,257:4,289:2,257:9,0:3,755,261:4,229,0:5,237,753,0:2,175,0,237,257:19,0:3,761,0:4,260:2,0:4,258,754,162,0,175,0,258,257:19,0:3,761,0:10,251,761,0:2,175,0,251,257:19,0:3,761,0:2,246,242:2,241,757,242:3,252,761,0,170,172,0,251,257:2,289:2,257:4,289:2,257:9,0:3,761,0:2,228,261:2,259,758,250,234:3,761,0:2,175,0,237,257:2,289:2,257:4,289:2,257:9,0:3,761,260,0:6,251,257,256,257,761,162,0,175,0,258,234:2,289:2,234:4,289:2,234:9,0:3,249,0:7,251,257:3,761,0:2,175,0,251,257:19,0:3,242:2,241,757,242,247,0:2,251,257:3,761,0,178,175,0,251,257:19,0:3,755,261,259,758,261,229,0,260,251,257:3,761,0,173:2,0,228,261:6,250,257:12,0:3,761,0:7,251,257,256,257,761,0:11,251,257:12,0:3,761,0,260,246,242:4,252,257:3,756,242:9,247,0,251,257:12,2:3,761,0:2,251,234:18,761,0,251,234:12,2:3,761,260,0,251,257:4,256,257,256,257,256,257:9,761,0,237,257:12,2:3,761,0:2,251,257:18,761,0,258,257:12,2:3,761,0,260,228,261:4,250,257:7,755,253,250,257:3,761,0,251,755,253,250,257:9,0:3,761,0:7,248,261:5,259,758,249,739,248,261,259,758,249,0,248,249,739,248,261,259,758,261:6,259,758,261,761,260,0:15,46I(1),0:8,46I(1),0:13,761,260:2,0:14,46I(1),0:8,46I(1),0:13,756,242:2,241,757,242:2,241,757,242:5,241,757,247,737,246,242:6,247,737,246,242,241,757,242:6,241,757,242" id="1"/>
<tiles values="0:583,28:2,0:4,28:2,0:114,28,0:2,28,0:132,28:3,0:48,109F:2,0:144,62,0:11,107F:2,0:2,107F:2,0:17,28,0:11,61,0:67,28,0:79,28,0:94,110,0:2,107,0,107,0:123,28:2,0:4,28:2,0:4,28:2,0:22,28,0:80,28,0:72,109,0,109,0:3,28,0:71,110,0:8,28,0:78,28,0:67,28,0:12,28,0:445,59,0:59" id="2"/>
<tiles values="0:117,678,0,679,0:37,680,681,682,0:37,678,0,679,0:37,680,681,682,0:37,678,0,679,0:37,680,681,682,0:37,678,0,679,0:37,680,681,682,0:37,678,0,679,0:37,680,681,682,0:19,718,719,0:2,718,719,0:4,718,719,0:2,718,719,0:2,678,0,679,0:37,680,681,682,0,766,0,766,0,766,0,766,0,766,0:27,678,0,679,0:23,699:2,0:4,699:2,0:6,680,681,682,0:8,703:2,0:27,678,0,679,0:37,680,681,682,0:37,678,0,679,0:7,718,719,734,0,718,719,0:2,718,719,734,0:19,680,681,682,0:37,678,0,679,0:37,680,681,682,0:37,678,0,679,0:37,680,681,682,0:22,734,706:2,734,0:2,734,706:2,734,0:5,678,0,679,0:37,678,0,679,0:37,680,681,682,0:9,699,0,699,0,699,734,699,0,699,0:16,785,0:2,678,0,679,0:5,703,0:31,680,681,682,0:34,785,0:2,678,0,679,0:37,680,681,682,0:34,785,0:2,678,0,679,0:37,680,681,682,0:30,735,0:3,785,0:2,678,0,679,0:37,680,681,682,0:4,718,719,0:2,718,719,0:7,703:2,0:2,734,0,703:2,0:4,703:2,0:3,785,0:2,678,0,679,0:15,703,0:21,680,681,682,0:37,678,0,679,0:15,703,0:4,762:2,0:4,762:2,0:9,680,681,682,0:37,678,0,679,0:15,703,0:21,680,681,682,0:37,678,0,679,0:6,703,0:8,703,0:21,680,681,682,0:36,257,678,0,679,0:4,699,0,699,0,699,0,699,0:4,703,0:21,680,681,682,0:37,678,0,679,0,703,0:13,703,0:21,680,681,682,0:37,678,0,679,0:15,703,0:21,680,681,682,0:7,703,0:9,735,0:19,678,0,679,0:37,680,681,682,0:2,703,0:78,703,0:80,703,718,719,0,718,719,0:192" id="3"/>
<tiles values="0:890,11:6,0:34,6:6,0:34,6:6,0:34,6:6,0:34,9:6,0:195,11,0,11,0:37,6,0,6,0:31,10,7:3,12,0,9,0,9,0:273,11,0,11,0:37,6,0,6,0:37,6,0,6,0:34,10,7,12,9,0,9,0:608,10,7:2,12,0:58" id="4"/>
<tiles values="0:2400" id="5"/>
<tiles values="0:1126,115:4,0:37,115:3,0:38,1,115,0:551,115:2,0:38,115:2,0:39,115:4,0:35,115:3,1,115,0:275,115:2,0:38,115,0:39,115:3,0:38,115:2,0:6,115:5,0:28,1,0:6,115:2,1,115:2,0:65" id="6"/>
<sign text="Some of the workers hide their secret sushi lunches from the company's spying eyes, eat them whenever you can, you have a lot of climbing to do. " n="1208" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Watch out for the drone mines, they explode on impact. Use your ninja stars to take them out." n="1884" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="I've scanned the room, you can get out through the ceiling. You need to find the exit lift and move up through the tower. Boshi's lab complex is near the top.
If you need to learn your controls you can press the help icon (or the key "H") to find out what they are at anytime." n="2323" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Takeshi, this is Lady Snowfox, I'm Akuma's spy in the base. Unfortunately I'm located near the top of this tower, so I'm going help you remotely for the moment.
I believe you were attacked by Maxwell Merlock, head of the Merlock Food Pharma corp. I dont know why Dr Boschi's boss is here. It must be important as our Intel said Maxwell is now a complete recluse. If I find out more I'll tell you right away." n="2332" layer="6" width="0" height="0" face="ninja" forced="true"/>
<msg text="Holding Cells"/>
</root>
;
level_data["a80cdc1cde8391da4f0d9aed23d56a8f"] = <root>
<level width="60" height="40" start_x="3" start_y="33" compression="false" background="0" scroll="0"/>
<tiles values="0:35,506,0:3,588,587,0:2,588,587,588,587,0,506,0:46,506,0:3,506,565,0:2,570,565,570,506,0,506,0:46,506,0,778,587,506,587,0:2,588,587,588,506,588,587,0:46,506:2,570,565,570,565,0:2,570,565,570,565,570,565,0:46,506:5,0:4,506:5,0:48,506:3,0:4,506:6,0:47,506:14,0:47,506,0:2,506:2,0:4,506,588,587,0:48,506,0,506:2,0:5,506,570,565,0:11,506,0:36,588,587,588,587,0:5,506,588,587,0:11,506,0:27,778,0:8,570,565,570,565,506,0:4,506,570,565,0:11,506,0:26,778:5,0:5,506:13,0:10,506,0:22,778:9,0:5,506:3,0:11,506:2,0:5,506,0,506,0:26,778:5,0:5,506:3,0:11,506:8,0,506,0:27,778:2,0:7,506:3,0,506:18,0,506,0:27,778:2,0:7,506:3,0:2,506:3,0:2,506:2,0:2,506:7,0:2,506,0:27,778:2,0:7,506:3,0,506:4,0:2,506,0:4,506:6,0:2,506,0:27,778:2,0:6,506:13,0:2,506:7,0:2,506,0:27,506,778,0:6,506,0:10,506:11,0:2,506,0:27,506,778,0:5,506:2,0:10,506:5,0,506:6,0,506,0:4,506:2,0:3,506:2,0:3,506:4,0:9,506:24,0,506:3,509,506:2,0,506,0,506:17,0,506:6,0:2,506:24,0,506:5,509,0,506,0,506:50,0,506:5,509,0,506,0,506:7,588,587,588,587,588,587,588,587,588,522,506:12,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,506:2,588,587,588,587,588,587,506,0:2,506:9,570,565,570,565,570,565,570,565,570,565,506:12,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,506:2,570,565,570,565,570,565,0:3,506:2,0:2,506:5,588,587,588,587,588,587,588,587,588,587,506:12,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,506:2,588,587,588,587,588,587,0:3,506,0:4,506:4,570,565,570,565,570,565,570,565,570,522:2,506:2,522:2,506:2,522:2,506:3,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,506:2,570,565,570,565,570,565,506,0:2,506,0:3,506:5,588,587,588,587,588,587,588,587,588,522:2,506:2,522:2,506:2,522:2,506:3,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,0:8,506,0:2,506,0:3,506:5,570,565,570,565,570,565,570,565,570,522:2,506:11,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:11,506,0:4,506:15,0:11,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,0:13,506,0:4,506:4,588,587,588,587,588,587,588,587,588,506:2,0:11,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:13,506,0,506:7,570,565,570,565,570,565,570,565,570,565,0,506:2,0:2,506:2,0:2,506:20,0:12,506:2,588,587,588,587,506:3,588,587,588,587,588,587,588,587,588,587,0,506:35,0:5,506:2,570,565,570,565,506:3,570,565,570,565,570,565,570,565,570,506:37,0:10,506,522:7,570,565,570,522:2,506:6,588,587,588,587,588,587,588,506,588,587,588,587,588,587,588,506,588,587,588,587,588,587,588,506,588,587,588,587,588,587,0:6,506,0:5,522:7,0:3,506:2,0:2,506:3,0,570,565,570,565,570,565,570,506,570,565,570,565,570,565,570,506,570,565,570,565,570,565,570,506,570,565,570,565,570,565,0:6,506,0:4,506:8,0:3,506:2,0:2,506:3,0,588,587,588,587,588,587,588,506,588,587,588,587,588,587,588,506,588,587,588,587,588,587,588,506,588,587,588,587,588,587,0:6,506,0:4,506,522:7,0:3,506:8,570,565,570,565,570,565,570,506,570,565,570,565,570,565,570,506,570,565,570,565,570,565,570,506,570,565,570,565,570,565,0:6,506,0:5,522:7,506:11,588,587,588,587,588,587,588,506,588,587,588,587,588,587,588,506,588,587,588,587,588,587,588,506,588,587,506,587,588,587,0:6,506,0:5,506:2,0:3,506:7,0:4,506:2,570,565,570,565,570,565,570,506,570,565,570,565,570,565,570,506,570,565,570,565,570,565,570,506,570,506,570,565,570,565,0:5" id="0"/>
<tiles values="257:28,761,356,320:4,327,0,327,320:2,781,331,782,781,331:3,782,320:3,327:2,320:2,327,320:2,327,320:2,257:28,761,356,320:4,327,0,327,320:2,359,0,368,364,0:3,361,320:3,327:2,320:2,327,320:2,327,320:2,257:28,761,356,320:4,327,0,327,363,331,362,0,368,364,0:3,363,330:2,782,327:2,320:2,327,320:2,327,320:2,257:28,761,356,320:4,257,0:6,368,364,0:6,368,327:2,320:2,327,320:2,327,320:2,257:28,761,356,320:4,327,0:4,324,360,357,358,348,323,0:4,368,327:2,320:2,327,320:2,327,320:2,257:28,761,356,320:4,327:3,321,0,363,332,331:2,332,362,0:4,361,327:10,257:28,761,356,320:4,257:3,353,0:12,322,327,320:2,327,320:2,327,320:2,257:28,761,356,320:4,257:3,364,324,360:8,334,0:2,368,327,320:2,327,320:2,327,320:2,257:28,761,356,320:4,257:3,364,363,330:2,331,782,327,320:2,327,359,0:2,368,327,320:2,327,320:2,327,320:2,257:28,761,356,320:4,257:3,364,0:4,368,327,320:2,327,321,0:2,345,327,320:2,327,320:2,327,320:2,257:28,761,333,330:3,782,257:3,341,0:4,333,331:4,329,0,339,368,327,320:2,327,320:2,327,320:2,257:23,755,261:4,249,0:4,356,257:3,364,0:11,339,356,327:9,257:23,761,0:9,356,257:3,364,0:2,325,348:9,357,327,781,330,332,330:2,332,330,782,257:23,756,242:4,247,0:4,356,257:3,364,0:2,368,327,781,332,331:3,332,331:3,332,329,0:6,361,257:4,233,257:4,233,257:4,233,257:4,233,257:3,234:5,761,0,325,348:2,357,257:3,341,0:2,356,327,364,0:16,322,257:4,233,257:4,233,257:4,233,257:4,233,257:4,233,257:3,761,0,368,320:3,257:3,364,0:2,361,327,364,0:2,324,348:2,360:2,348:2,334,392,393,147F,0:2,325,357,257:4,233,257:4,233,257:4,233,257:4,233,257:4,233,257:3,761,0,368,320:3,257:3,364,339,0,363,331,329,0:2,363,331:3,782,327:2,364,391,780,0:3,361,327,257:4,233,257:4,233,257:4,233,257:4,233,257:4,233,257:3,761,0,361,320:3,257:3,359,339,0:10,333,331:2,329,404,405,0:3,322,327,257:4,233,257:4,233,257:4,233,257:4,233,257:4,233,257:3,761,0,324,348:17,323,0:9,333,331,257:4,233,257:4,233,257:4,233,257:4,233,257:4,233,257:3,761,0,363,331:2,332,331:2,332,331:2,332,331:2,332,331:2,332,331:2,362,0:3,325,348,334,0:2,149F,392,393,257:2,755,261:3,259,758,261:3,259,758,261:3,259,758,261,250,755,261:2,250,755,261:2,250,761,0:23,361,328,359,0:3,391,780,257:2,761,0:16,251,761,0:2,248,249,0:2,251,761,0:23,322,328,321,0:3,404,405,257:2,761,0:16,237,753,0:6,237,753,0:23,333,331,329,0:4,322,257:2,761,0:16,235,759,0:6,235,759,0:26,147F,0:2,325,357,261:2,229,0:16,258,754,0:2,239,240,0:2,258,754,0:4,135F,0:5,137F,0,135F,0:5,137F,0:10,356,320,242:5,247,0:13,248,249,0:2,248,249,0:2,248,249,0:2,392,393,0,136F,0:3,136F,0:3,136F,0:3,136F,0:11,356,320,257,0,257,236,234,761,0:25,391,779,0:25,361,320,257:3,233,257,753,0:25,404,405,0:3,134F,0:3,134F,0:3,134F,0:3,325,371,360:2,371,360:2,371,360:2,323,370,257,0,257,233,257,754,0:9,138F,0,239,240,138F,0,239,240,138F,0,239,240,138F,0,239,242:2,240,0:2,137F,0,135F,0:5,137F,0,135F,0:2,356,320,370,320:2,370,320:2,370,320:3,257,0,257,233,257,761,0:11,248,249,239,240,251,756,242:2,252,756,242:2,252,234:2,761,0:3,136F,0:3,136F,0:3,136F,0:3,356,320,370,320:2,370,320:2,370,320:3,257,0,257,233,257,756,247,0:12,258,754,251,234:8,257:2,761,0:15,356,320,370,320:2,370,320:2,370,320:3,257,0,257,261:3,229,0:12,251,761,248,245,261:2,245:2,261:2,245:2,261,249,0,134F,0:3,134F,0:3,134F,0:3,134F,0,333,332,331:2,332,331:2,782,370:4,257,0:18,251,761,0:12,135F,0:5,137F,0,135F,0:5,137F,0:7,368,370,320:3,257,0:18,237,753,0:34,356,370,320:3,257:3,242:3,247,147,0:6,392,398,393,0:2,258,754,0:34,356,370,320:3,257,0,257,236,234:2,761,0:7,410,388,779,0:2,251,761,0:2,239,242:2,240,0:2,239,242:2,240,0:5,260,0:5,260,0:5,260,0:4,356,370,320:3,257,0,257,233,257:2,753,0:7,391,388,780,260,0,251,761,0:2,235,236:2,760,0:2,235,236:2,760,0:5,260,0:5,260,0:5,260,0:4,356,370,320:3,257,0,257,233,257:2,754,147,0:6,410,388,779,260,0,248,249,0:2,248,245:2,249,0:2,248,245:2,249,0:5,260,0:5,260,0:5,260,0:4,356,370,320:3,257,0,257,233,257:2,761,0:7,404,403,405,260,0:20,260,0:5,260,0:5,260,324,348:2,371,357,370:4,257,0,257,233,257,256,756,238,757,242:3,241,238:5,757,242:4,241,238:2,757,242:2,241,238:2,757,242:4,241,238,757,242:3,241,238,757,242:3,247,324,348:3,371,348:3,371,348" id="1"/>
<tiles values="0:223,28:2,0:50,62,0:131,40F,0:240,31F,0:51,34F,0:43,28:3,0:63,28:3,0:186,31F,0:60,34F,0:7,61,0:63,61,0:100,109,0:5,109,0:5,109,0:95,109:2,0:2,109:2,0:56,28:2,0:38,28:2,0:26,61,0:140,107,0,107,0:198,110,0:3,109:2,0:126,109:2,0:2,109:2,0:30,154,0:83,28:2,0:2,28:2,0:200,28:3,0:32,110,0:2,108,0:7,107,0,107,0:3,107,0,107,0:3,107,0:70" id="2"/>
<tiles values="0:34,678,0,679,0:57,678,0,679,0:57,680,681,682,767:3,0:6,767:3,0:45,678,0,679,0:57,678,0,679,0:57,680,681,682,0:57,678,0,679,0:57,680,681,682,0:57,678,0,679,0,767:4,0:52,680,681,682,0:57,678,0,679,0:57,680,681,682,0:57,678,0,679,0:16,767:6,0:35,680,681,682,0:57,678,0,679,0:57,680,681,682,0:5,686,0:2,686,0:48,678,0,679,0:5,694,0:2,694,0:48,680,681,682,0:113,766,0:2,766,0:2,766,0:2,766,0:2,766,0:2,766,0:2,766,0:14,766,0:2,766,0:2,766,0:2,766,0:2,766,0:2,766,0:64,766:2,0:29,735,0:3,735,0:20,766:2,0:6,766:2,0:24,766,0:131,788,0:17,734,0:8,734,0:27,678,0,679,0:57,680,681,682,0:46,763,0:2,763,0:2,763,0:4,678,0,679,0:14,763:2,0:2,763:2,0:2,763:2,0:2,763:2,0,686,0:15,686,0:11,680,681,682,0:2,788,0:26,687,0:15,687,0:11,678,0,679,0:29,687,0:15,687,0:11,680,681,682,0:19,766,0:2,766:2,0:2,766:2,0,694,0:15,694,0:11,678,0,679,0:52,789,0:4,678,0,679,0:52,789,0:4,680,681,682,0:13,735,0:38,789,0:4,678,0,679,0:12,686,0:22,763,0:5,763,0:5,763,0:4,789,0:4,680,681,682,0:12,687,0:39,789,0:4,678,0,679,0:12,694,0:8,766:2,0:4,766:2,0:23,789,0:4,680,681,682,0:35,735,0:5,735,0:15,678,0,679,0:4,763,0:5,763,0:3,763,0:42" id="3"/>
<tiles values="0:398,10,7:8,12,0:60,11,0:59,6,0:59,6,0:59,9,0:51,10,7:6,12,0:51,11,0:59,6,0:59,6,0:59,6,0:15,10,7,12,0:41,9,0:15,10,7,12,0:42,10,7:6,12,0:127,10,7,12,0:35,11,0:5,11,0:5,11,0:9,10,7,12,0:35,6,0:5,6,0:5,6,0:35,11:2,0:2,11:2,0:6,6,0:5,6,0:5,6,0:35,6:2,0:2,6:2,0:6,9,0:5,9,0:5,9,0:6,11,0,11,10,7,12,0:23,6:2,0:2,6:2,0:6,10,7,12,0,10,7,12,0,10,7,12,0,10,7,12,0:4,6,0,6,10,7,12,0:23,6:2,0:2,6:2,0:7,11,0,11,0,11,0,11,0,11,0,11,0,11,0:5,6,0,6,0:24,11:2,6:2,11:2,6:2,11:2,0:5,6,0,6,0,6,0,6,0,6,0,6,0,6,0:5,9,0,9,0:24,6:2,9:2,6:2,9:2,6:2,0:5,9,0,9,0,9,0,9,0,9,0,9,0,9,0:28,11:2,0:2,9:2,0:2,9:2,0:2,9:2,0:4,10,7,12,0,10,7,12,0,10,7,12,0,10,7,12,0:27,6:2,0:17,11,0,11,0,11,0,11,0,11,0,11,0,11,0:22,10,7:3,12,0,6:2,11:2,0:15,6,0,6,0,6,0,6,0,6,0,6,0,6,0:28,6:4,0:15,9,0,9,0,9,0,9,0,9,0,9,0,9,0:28,6:4,0:6,11:2,0:2,11:2,0:2,10,7,12,0,10,7,12,0,10,7,12,0,10,7,12,0:27,9:2,6:2,0:6,6:2,0:2,6:2,0:36,10,7:5,12,0:3,6:2,0:6,9:2,0:2,9:2,0:36,10,7:5,12,0:3,9:2,0:18,11,0,11,0:3,11,0,11,0:3,11,0:47,6,0,6,0:3,6,0,6,0:3,6,0:17,10,7:5,12,0:23,6,0,6,0:3,6,0,6,0:3,6,0:17,10,7:5,12,0:9,10,7:2,12,0:2,10,7:2,12,0:4,9,0,9,0:3,9,0,9,0:3,9,0:70" id="4"/>
<tiles values="0:2400" id="5"/>
<tiles values="0:398,115:4,1,115:2,0:481,115:5,1,115,0:1031,115:3,0:57,115:2,1,0:413" id="6"/>
<sign text="Mr Merlock: test group a101 shows a complete addiction to product mini dinky doodle snack dogs. After only a few months of consuming them, many major organs are showing fatigue, with no direct evidence connecting this to the snack dogs brand.
Passing regulations will be no problem." n="402" layer="6" width="0" height="0" face="coward" forced="false"/>
<sign text="There are sentinel robots up ahead. These boys can be very tough to take out. Don't try and fight them in a small space. Use stealth so their green laser cannot scan you, and then let them go past you.
Don't sweat it Taki, just play it cool and be patient, they are unshielded when they fire.
You don't mind if I call you Taki? For such a young pup you're a pretty good ninja." n="891" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="Watch out, these white lab walls are a titanium hybrid. Super rock hard! You won't be able to fire a rope into them and they'll cut your rope if it touches them. " n="1986" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="Warehouse 1"/>
</root>
;
level_data["a9647e9c9242b3f662ff9d49a41c3508"] = <root>
<level width="151" height="65" start_x="147" start_y="1" compression="false" background="4" scroll="0"/>
<tiles values="0:144,586,585,586,585,586,585,0:145,564,563,564,563,564,563,0:145,586,585,586,585,586,585,0:145,564,563,564,563,564,563,0:145,586,585,586,585,586,585,0:145,564,563,564,563,564,563,0:145,586,585,586,585,586,585,0:145,564,563,564,563,564,563,0:145,586,585,586,585,586,585,0:145,564,563,564,563,564,563,0:145,586,585,586,585,586,585,0:145,564,563,564,563,564,563,0:145,586,585,586,585,586,585,0:107,778:5,598,677:12,525,778:2,598,677:13,525,778:2,564,563,564,563,564,563,0:108,778:4,595,634:12,508,778:2,595,634:13,508,778:2,586,585,586,585,586,585,0:108,778:4,598,677:12,525,778:2,598,677:13,525,778:2,564,563,564,563,564,563,0:108,778:4,595,634:12,508,778:2,595,634:13,508,778:8,0:108,778:4,0:33,564,563,564,563,564,563,0:108,778:3,0:148,778:3,0:148,778:3,0:148,778:3,0:148,778:3,0:148,778:4,0:38,778,0:108,778:4,598,677:14,525,778:2,598,677:15,525,778:4,0:108,778:4,595,634:14,508,778:2,595,634:15,508,778:4,0:108,778:4,598,677:14,525,778:2,598,677:15,525,778:4,0:108,778:4,595,634:14,508,778:2,595,634:15,508,778:4,0:147,778:4,0:147,778:4,0:147,778:3,0:148,778:3,0:148,778:4,0:146,778:5,0:143,778:9,0:142,533,0:5,534,778,0:143,677:6,525,778,0:143,634:6,508,0:146,532,0:150,534,0:147,522,535,0:150,522,535,0:150,522,0:2,534,0:450,535,0,532,0:148,533,0,534,0:298,522,0:149,522,533,0:149,533,0:233,506:3,0:36,778:4,0:5,778:5,0:4,778:4,0:90,506:3,0:37,524,507,0:7,524,507,0:7,524,507,0:10,532,0:80,506:4,0,506:9,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,533,0:4,676,633,0:7,676,633,0:7,676,633,0:2,670,778:2,0:5,534,0:55,778,506:14,0:10,506:14,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,0:5,676,633,0:7,676,633,0:7,676,633,0:3,778:4,598,677:3,0:54,506:17,0:9,506:2,0:3,506:9,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,586,585,778,0:5,676,633,0:7,676,633,0:7,676,633,0:3,778:4,595,634:3,0:8,586,585,0:43,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,0:8,506:14,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,564,563,778,498,0:4,597,594,0:7,597,594,0:7,597,594,0:3,778:4,646,0:10,534,564,506:43,778,506:19,0:8,506:5,0:35,778:2,0:16,778:2,0:3,778:2,0:13,534,586,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506:3,0:8,506:4,0:35,524,507,0:7,524,507,0:7,524,507,0:3,778,0:15,564,506:70,0:2,506:4,0:35,597,594,0:7,597,594,0:7,597,594,0:2,668,778,0:15,586,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506:15,509,506,509,506,509,506:11,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506,509,506:8,0:2,506:3,0:74,532,564,506:65,0:2,506:8,0:74,778:3,0:4,778:2,0,506:56,0:3,506:8,0:74,778:2,0:12,684,685:2,683,0:11,684,685:2,683,0:12,684,685:2,683,0:14,684,685:2,683,0:83" id="0"/>
<tiles values="0:133,320:11,376,378,0:3,376,377,0:133,320:11,376,378,0:3,376,377,0:133,320:11,376,378,0:3,376,377,0:108,320:36,376,378,0:3,376,377,0:102,320:42,376,378,0:3,376,377,0:96,320:48,376,378,0:3,376,377,0:95,320:49,376,378,0:3,376,377,0:95,320:49,376,378,0:3,376,377,0:95,320:49,376,378,0:3,376,377,0:95,320:49,376,378,0:3,376,377,0:95,320:49,376,378,0:3,376,377,0:95,320:15,326:2,320:6,326:2,320:6,326:2,320:6,326:2,320:6,326:2,379,381,0:3,379,380,0:95,320:11,781,331:38,362,0:3,363,782,0:95,320:11,364,339,0:42,356,0:94,320:12,364,0:43,356,0:94,320:12,364,0:43,356,0:94,320:12,364,0:43,356,0:92,320:14,364,0:3,325,348:39,357,0:92,320:14,364,0:3,368,326,320:6,326:2,320:6,326:2,320:6,326:2,320:6,326:2,320:7,0:92,320:14,364,0:3,368,320:40,0:92,320:14,364,0:3,368,320:40,0:93,320:13,364,0:3,368,320:40,0:93,320:13,364,0:3,368,326:2,320:6,326:2,320:6,326:2,320:6,326:2,320:6,326:2,320:6,0:94,320:12,364,0:3,333,330:39,782,0:94,320:12,364,0:6,339,0:3,339,0:3,339,0:3,339,0:3,339,0:3,339,0:3,339,0:3,339,0:3,339,0:4,356,0:94,320:12,364,0:43,356,0:94,320:12,364,0:43,356,0:94,320:12,364,0:43,356,0:94,320:12,358,360:38,334,339:2,0:2,356,0:95,320:16,326:2,320:6,326:2,320:6,326:2,320:6,326:2,320:6,326:2,364,0:3,325,357,0:95,320:50,364,0:2,339,368,320,0:95,320:50,364,0:2,339,368,320,0:95,320:50,364,0:3,333,782,0:95,320:46,781,330:3,329,339:2,0:2,356,0:95,320:46,364,0:8,356,0:98,320:43,364,0:8,356,0:98,320:43,364,0:8,356,0:102,320:39,364,0:3,325,360:4,357,0:102,320:39,364,0:2,339,368,320:5,0:102,320:39,364,0:3,368,320:5,0:99,320:42,364,0:3,368,320:5,0:99,320:42,358,334,0:2,333,330,782,320:3,0:64,320:78,358,334,0:3,368,320:3,0:64,320:79,364,0:3,368,320:3,0:64,320:79,364,0:3,368,320:3,0:26,320:5,0:8,320:5,0:11,320:88,364,339,0,339,368,320:8,0:10,320:128,364,0:3,368,320:146,364,0:3,368,320:145,781,329,0:3,368,320:144,781,329,0:2,325,348,357,320:144,364,0:3,368,320:78,781,330:3,782,320:34,781,330:4,782,320:3,781,330:4,782,320:3,781,330:3,782,320:6,364,0:3,368,320:78,364,0:3,368,320:34,364,0:4,356,320:3,364,0:4,356,320:3,364,0:3,356,320:6,364,0:3,368,320:78,364,0,321,0,368,320,781,330:32,329,0:4,333,330:3,329,0:4,333,330:3,329,0:3,333,330:3,782,320:2,364,0:2,339,368,320:54,781,330:13,782,320:9,364,0,364,0,333,330,329,0:58,333,330:2,329,0:3,368,320:53,781,329,0:13,333,782,320:8,364,0,359,0:26,415,0:37,339,0:4,368,320:52,781,329,0:15,333,782,320:7,364,0,324,360:3,323,0:2,324,323,0:56,339,0:4,368,320:51,781,329,0:17,333,782,320:6,364,0:5,339,0:2,339:2,0:61,368,320:5,330:2,362,363,330:42,329,0:19,368,320:6,358,334,324,360,323,0,325,348:34,334,324,348,323,0:4,324,348:2,323,0:5,324,348:3,323,0:2,325,348:6,357,320:5,0:66,333,330:4,782,320:2,364,0:4,368,320:34,364,0:23,356,320:12,0:21,415,0:30,416,0,416,0:11,322,0:4,333,330,782,364,0,324,323,325,357,320:34,364,0:23,356,320:12,0:36,416,0:29,361,0,325,334,0:3,368,364,0:3,368,320:35,358,360:23,357,320:12,0:12,415,0:43,415,0:11,368,364,0,321,0,333,329,324,323,0,368,320:72,360:2,323,324,360:4,323,324,360:6,323,324,360:13,323,324,360:14,323,324,360:19,357,364,0,359,0:6,368,320:72,314,320,326:2,320:11,0:4,320:11,0:4,320:12,0:4,320:14,0:4,314,358,360:8,357,320:72" id="1"/>
<tiles values="0:2091,36,0:6,36,0:144,36,0:4,36,0:146,36,0:2,36,0:127,156,61,156:2,0,156,0,156:3,0,156:2,125,156,60,0,125:2,0:11,127,0:4,28:5,0:259,70I(0):3,0:148,70I(0):3,0:148,70I(0):3,0:148,70I(0):3,0:461,109:3,0,109:3,0:5,109:3,0:5,109:3,0:127,109:9,0:3,109:13,0:6,107,0:119,109:9,0:3,109:13,0:6,107,0:109,61,0:8,155,109:3,155,109:3,155:2,125:3,109:3,155,109:3,155,109:3,155:2,125:3,155:2,61,107,0:150,42,0:149,42,0:149,42,0:151,42,0:149,42,0:152,42,0:447,107,0,28:3,0:146,107,0:301,43,0:149,28,43,0:150,43,0:152,43,0:150,43,0:150,43,28,0:149,43,0:150,43,0:150,43,0:150,43,0:148,43,0:150,43,0:150,43,0:81,111:3,0:66,43,28,0:80,111,0,111,0:148,111,0,111,0:148,111,0,111:3,0,109:2,28,61,0:39,69I(0):2,0:7,69I(0):2,0:77,156:3,0:11,111,0:5,109:2,0:41,69I(0):2,0:7,69I(0):2,0:91,61,111:4,0:7,156:4,0,156:6,0,156,0:7,28,0,28,125,0,125,156:3,0,156,0:5,125:2,0:7,125:2,0:5,28:5,61,28,0:55,109:11,0:18,111,0:95,36,0,36,0,36,0,36,0,36,0,36,0,36,0,36,109:22,0:15,111:4,0:95,36,0,36,0,36,0,36,0,36,0,36,0,36,0,36,109:22,0:8,111:3,0:4,111,0:39,61,28,156:2,125,156:2,125,59,156:4,0,156,0:2,59,0:2,156,28:2,0:36,36,0,36,0,36,0,36,0,36,0,36,0,36,0,36,0:32,111:3,0:2,111:3,0:76,792,0:7,156:12,0,156:25,61,156:2,125:8,61,0:9,111,0,111,0:4,111,0:143,61,0,111:6,0:73,157F,0:150" id="2"/>
<tiles values="0:1922,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:721,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:869,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:717,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:2,698:2,0:302,723,0:3,727,0:146,724,0:3,728,0:595,723,0:8,727,0:141,724,0:8,728,0:1048,686,723,0:3,727,686,0:144,687,724,0:3,728,687,0:144,687,0:5,687,0:144,687,723,0:3,727,687,0:144,694,724,0:3,728,694,0:529,767,0,767,0:37,725,726,0:7,725,726,0:259,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:2,725,726,0:4,767,0:4,767,0:3,767,0:4,767,0:3,767,0:3,767,0:66,767,0,767,0,767,0,767,0,767,0,767,0,767,0:27,269,268,267,0:4,274,273,0:142,264,263,285,281,0:3,286,277,0:46,727,0:53,767,0:15,767,0:10,698,0,698,0:7,266,265,284,276,275,269,268,267,274,273,0:2,269,268,267,284,276,275,0:4,266,265,0:36,728,0:89,281,283,282,272,271,280,264,263,285,286,277,281,0,264,263,285,272,271,270,278,0:3,283,282,0:42,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0,766,0:28,698,0,698,0:4,697,722,0:2,697,722,0:2,697,722,0:2,697,722,0:2,697,722,0:2,697,722,0:2,697,722,0:9,790,0:4,789,0:2,790,0:5,789,0:3,790,0:32,269,268,267,0:2,266,265,269,268,267,266,265,274,273,0:8,266,265,274,273,0:97,684,685:3,683,0:23,264,263,285,281,0,283,282,264,263,285,283,282,286,277,280,0:6,281,283,282,286,277,278,0:9,281,0:23,698,0:10,684,685:4,683,0:4,684,685:4,683,0:61,266,265,0,284,276,275,284,276,275,284,276,275,269,268,267,284,276,275,0:5,266,265,284,276,275,284,276,275,284,276,275,0:2,269,268,267,274,273,0:59,697,722,0:7,697,722,0:7,697,722,0:30,281,283,282,280,272,271,278,272,271,270,272,271,280,264,263,285,272,271,270,278,0:3,280,283,282,272,271,270,272,271,270,272,271,270,278,0,264,263,280,286,277,0:20,698,0:41,684,685:3,683,0:4,684,685:3,683,0:22,701:2,0:4,701:2,0:5,711,712,711,712,0:11,711,712,711,712,0:12,711,712,711,712,0:14,711,712,711,712,0:91,701:2,0:3,701,0:6,701,0:3,701,0:3,701,0:6,701,0:3,701,0:3,701,0:8,701,0:3,701,0:3,701,0:9,708,695,0,708,695,0,708,695,0:73" id="3"/>
<tiles values="0:3742,11:3,0,11:3,0:5,11:3,0,11:3,0,11:3,0:127,11,6:3,11,6:3,11,0:3,11,6:3,11,6:3,11,6:3,11,0:6,11,0:119,6:3,9,6:3,9:2,0:3,6:3,9,6:3,9,6:3,9:2,0:6,6,0:119,9:3,0,9:3,0:5,9:3,0,9:3,0,9:3,0:8,9,0:150,10,12,0:147,10,0,12,0:148,10,0:150,10,12,0:149,10,0,12,0:150,10,12,0:295,11,0:150,6,0:150,9,0:2503,11:2,0:149,6:2,0:149,9:2,0:118,11:11,0:54,8,0,8,0:83,6:11,0:114,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,11:11,6:11,0:114,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,6:22,0:57,8,0:2,8,0:2,8,0:2,8,0:2,8,0:2,8,0:2,8,0:38,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,9:21,6,0:544" id="4"/>
<tiles values="0:146,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:109,12:32,0:7,11:4,0:108,11:3,0:36,11:4,0:108,11:3,0:36,11:4,0:108,11:3,12:29,0:7,11:4,0:108,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,11:3,0:148,10:6,0:2,10:2,0:2,10:2,0:2,10:2,0:2,10:2,0:2,10:2,0:2,10:2,0:2,10:2,0:2,10:2,0,9,10:3,0:108,11:3,0:35,10:2,0:2,11,0:108,11:3,0:39,11,0:108,11,10:40,0,11,0:149,11:2,0:147,11,0,11,0:148,11:2,0:149,11:2,0:149,11,10:2,0:150,11,0:144,12:4,0:147,11,0:150,11,0,11,12,0:147,11,0,11,0:1810,12,11,0:148,12,0,11,0:148,11,0,11,0:80,12:2,9,0:36,12:3,9,0:5,12:3,9,0:5,12:2,9,0:8,11,0,11,0:80,11,0,9,0:36,11,0:2,9,0:5,11,0:2,9,0:5,11,0,9,0:8,11,0:82,11,0,9,0:3,11,12:23,0:13,12:5,0:4,12:5,0:3,12:3,9,0:4,11,0,10,0:56,11:13,0:11,11,0,12:4,0:2,12:2,0:54,12:2,0,11,0:58,11,0:13,11,0:10,11,0:5,9,12,0:2,9,0:56,10,0:57,11,0:15,11,0:9,11,10:4,0,12:2,0:2,12:20,0:10,12:4,0:4,12:4,0:5,12:4,0:3,12:2,0:58,11,0:17,11,0:12,11,0:39,9,0:2,12,0:8,12,0:6,12,0:13,11:48,0:17,11,0:9,12:3,11,0:36,10:3,0:4,11:4,0:5,11:4,0:2,11,0:78,11,0,12:3,9,0:4,11,0:39,9:3,12:19,11,0:78,11,0,11,0:2,9,12,9,0:2,11,10:2,0:115,12:24,0,11,0:2,9,0,9,0:4,11,0:143,12,0,12:5,11,0:224" id="5"/>
<tiles values="0:2104,115:3,0:148,115:3,0:148,115:3,0:148,115,1,115,0:7255" id="6"/>
<sign text="Akuma's guard arent under Merlock's control anymore Takeshi, let's crack some robot heads and get to that sub!!" n="2558" layer="6" width="0" height="0" face="ninja" forced="false"/>
<msg text="The Escape"/>
</root>
;
level_data["b766efda7aad0f26e6aa8c93f0f93a30"] = <root>
<level width="73" height="30" start_x="4" start_y="20" compression="false" background="0" scroll="0"/>
<tiles values="506:3,0:35,611:2,0:2,506,0:3,778:7,0:5,611,0:8,611,0:3,506,0,506:3,0,506:2,629,627,628,630,629,627,0:26,611,590,591:2,506,591:3,778:7,620,0:4,611,0:8,611,0:3,506,0,506:3,0,506:2,612,609,610,613,612,609,0:26,590,591:3,506,591,491,668,778:8,535,0:3,611,0:8,611,0:3,506,0,506:3,0,506:2,628,630,629,627,628,630,0:30,506,778:12,620,0:2,611,0:8,611,0:3,506,0,506:3,0,506:2,610,613,612,609,610,613,0:29,668,778:6,511,622,778:6,0:2,611,0:8,611,0:3,506,0,506:3,0,506:2,629,627,628,630,629,627,0:28,619,778:8,0,534,778:5,591:2,589,0:8,611,0:3,506,0,506:6,612,609,610,613,612,609,0:27,668,778:9,0:2,510,778:4,591:2,491,0:8,590,591:2,0,506,0,506:3,0,506:2,628,630,629,627,628,630,629,627,0:29,506,778:4,506,535,506:2,0,506,778:2,0:2,611,0:12,506,0,506:3,0,506:2,610,613,612,609,610,613,612,609,0:29,506,778,506:4,778,506:2,0,506,778,621,0:2,611,0:2,492,591:8,0,506,0,506:3,0,506:2,625,614,628,630,629,627,628,630,0:28,506:2,778:4,506,778:2,506:3,533,0:3,611,0:2,611,0:9,506,0,506:3,0,506:3,608,610,613,612,609,610,613,0:28,506:2,778:4,506,778:2,506:2,511,0:13,492,591:2,0,506,0,506:3,0,506,523,506:2,625,614,628,630,629,627,0:21,506,0:2,506,0:2,506:6,778,506,778:2,506:3,620,0:12,611,0:3,506,0,506:3,0,506,523,506:3,608,610,613,612,609,0:19,506:2,523,506:2,523,506:2,523,506:3,0:2,506:2,0,506:2,0,506:2,535,0:2,611,0:2,611,0:9,506,0,506:3,0,506,523,506:4,625,614,628,630,0:19,506:2,523,506:2,523,506:2,523,506:3,0:2,506:2,523,0:4,506:2,620,0,590,591,491,611,0:9,506,0,506:3,0,506,523,506:5,608,610,613,0:19,506:2,523,506:13,523,506:3,0:2,506:2,535,0:2,611:2,0:5,506:2,0:2,506,0,506:3,0,506,523,632,506:5,625,614,0:19,506:2,523,506:2,523,506:2,523,506:2,523,506:4,523,506:3,0:2,506:3,0:3,611,0:2,619,506,778:3,0:2,506,0,506:3,0,506,523,626,616,506:5,608,0:21,506:3,523,506:2,523,506:2,523,506:4,523,506:3,0:8,590,591:2,778:5,0:2,506,0,506:3,0:2,523,629,627,632,506:5,0:3,506:3,0:2,506:4,0:2,506,778,506:3,0:2,506:3,523,506:2,523,506:2,523,506:8,0:8,591:3,778:5,0:2,506,0,506:3,0:2,523,612,609,626,616,506:4,0:2,506:4,0:2,506:4,0:2,506,778:3,506:2,523,506,0:4,506:4,523,506:4,523,506:4,0:9,619,778:3,506:2,0:2,506,0,506:3,0,506,523,628,630,629,627,632,506:9,0:2,506:4,0:2,506,778:3,506:2,523,506,0:5,506:2,0:3,506:3,523,506:4,0:9,506,778:3,506,0:3,506,0,506:5,523,610,613,612,609,626,616,506:8,0:2,506:7,778:3,506:2,523,506,0:5,506:2,0:3,506:3,523,506:3,0:10,506,778:3,506,0:3,506,0,506:3,0:2,629:2,627,628,630,629,627,632,506,0:2,506:2,615,614,506:2,610,613,610,613,610,613,626,616,778:2,0:2,523,506,0:4,506:3,0:3,506:7,0:10,506,778:3,506:2,0:2,506,0,506:3,0:2,612:2,609,610,613,612,609,626,616,506:3,631,629,627,628,630,629,627,628,630,629,627,628,630,632,778,0:2,523,506:3,523,506:10,523,506:4,0:9,506,778:3,506:5,0,506:3,0:3,628,630,629,627,628,630,629,627,523:2,615,614,612,609,610,613,612,609,610,613,612,609,610,613,626,616,506:2,523,506:3,523,506:10,523,506:4,0:12,506,523:2,506,0,506,0,506:3,0:3,610,613,612,609,610,613,612,609,506:2,629,627,628,630,629,627,628,630,629,627,628,630,629,627,628,630,506:2,523,506:3,523,506:10,523,506:3,0:14,523:2,506,0,506,0,506:3,0:6,506,629,627,628,630,523:2,612,609,610,613,612,609,610,613,612,609,610,613,612,609,610,613,0:5,506,523,506:4,0:3,506:3,523,506,0:16,506:5,0,506:3,0:6,506,612,609,610,613,506:2,628,630,629,627,628,630,629,627,628,630,629,627,628,630,628,630,506:2,0:4,523,506:4,0:4,506:2,523,506,0:16,506,0,506,0,506,0,506:3,0:7,628,630,506,0:2,506,610,613,612,609,610,613,612,609,610,613,612,609,610,613,610,613,506:4,0:2,523,506:4,0:3,506:3,523,506,0:20,506,0,506:3,0:7,610,613,506,0:3,506:20,0:2,523,506:10,523,506,0:20,506,0,506:3,0:13,506:20,0:2,506,0:10,506,0:21,506,0" id="0"/>
<tiles values="257:3,755,261:7,250,257:14,289:6,761,0:37,257:4,0,257,761,0,176,0:2,176,0:2,251,257:19,256,761,0:37,257:4,0,257,761,0,176,0:2,176,0:2,251,257:19,256,761,0:37,257:4,0,257,761,0,176,162,0,176,162,0,251,234:14,289:6,761,0:37,257:4,0,257,761,0,176,0:2,176,0:2,251,257:14,289:6,761,0:37,257:4,0,257,761,0,173,0:2,173,0:2,251,257:19,256,761,0:37,257:4,0,257,373,0:7,375,257:19,256,761,0:37,257:4,0,257,761,0:6,260,248,261:2,250,233:11,289:6,761,372,246,242:3,241,757,242:3,247,0,260,0:2,260,0,246,242:2,247,0:16,257:4,0,257,761,0:10,251,257:11,289:6,756,242,252,236:6,755,261,229,0,170,174:2,162,0,228,261,250,761,0:16,257:4,0,257,761,0,178,0:8,251,257:16,256,257:9,761,0:10,228,229,0:16,257:4,0,257,761,174:4,162,373,0:3,375,251,233:26,761,0:15,246,238,242:2,238,247,0:7,257:4,0,257,761,0:9,246,252,234:3,289:2,234:3,289:2,234:3,289:2,257:3,755,261,245,261:2,245,253,261,229,0:15,228,245,261:2,245,229,0:6,372,257:4,0,257,761,0:9,251,234,257:3,289:2,257:3,289:2,257:3,289:2,257:3,761,0:10,246,242:2,241,757,242,241,757,242:2,247,0:9,246,242:2,238,242:2,257:4,0,257,761,0:9,251,257:4,289:2,257:3,289:2,257:3,289:2,257:3,753,0:10,228,261:2,259,758,261,259,758,261,250,761,0:9,251,234:2,289,234:2,257:4,0,257,761,0:9,251,257:4,289:2,257:3,289:2,257:3,289:2,257:3,754,0:4,170,174:4,171,174,162,0:7,251,761,0:9,228,261:2,245,261,250,257:4,0,257,756,247,0:7,246,252,257:4,289:2,257:3,289:2,257:3,289:2,257:3,761,0:19,251,761,0:2,246,242:2,240,0:4,173,0:3,251,257:4,0,257,234,761,0:7,251,234,257:3,755,261:2,250,755,261:4,250,755,261:2,250,257:2,756,242,247,0:17,251,756,242:2,252,236:2,761,0:8,251,257:4,0,257,233,761,0:7,248,253,250,755,261,249,0:2,251,761,0:4,251,761,0:2,248,261:4,229,0:12,178,260,0:3,251,234:4,257:2,761,0:8,251,257:4,0,257:2,761,0:9,251,761,0:4,251,761,0:4,251,761,0:7,246,242:4,247,260,0:6,175,0:4,237,257:6,756,242,240,373,0:3,375,239,252,257:4,0,257,261,229,0:9,237,753,0:3,246,252,756,247,0:2,246,252,756,247,0:6,251,234:4,761,260,246,242:3,247,260,175,0:3,260,258,234:8,761,178,0:3,178,251,257:5,0:13,258,754,0:3,251,234:2,761,0:2,251,234:2,761,0:3,246,247,0,251,257:4,761,374,251,234:3,761,374,175,0:4,251,257,256,257:4,256,257,761,173,0:3,173,251,257:7,242:3,247,0:7,251,761,0:3,228,245:2,229,0:2,228,245:2,229,0:3,251,761,0,228,253,261:3,229,0,228,250,289,755,229,0,173,260,0:3,251,257:8,761,373,0:3,375,228,250,257,0,257:2,0,257,236:3,761,0:7,248,229,0:16,251,761,0:9,235,257,759,0:7,237,257,256,257:4,256,257,761,260,0:5,251,257,0,257:2,0,257:4,761,246,247,0:23,237,753,0:9,235,257,759,0:6,260,258,257:8,756,242:3,247,0:2,251,257,0,257:2,0,257,233:3,761,251,761,0:23,258,754,0:9,235,257,759,0:6,260,251,234:12,761,0:2,228,257,0,257:2,0,257:4,756,252,761,246,247,0:21,251,756,242:3,247,0,246,247,0,246,252,289,756,247,0,178,0,246,242:2,252,257:12,761,0:5,257:2,0,257,233:3,236:2,761,251,761,0:5,246,242,247,0:13,248,261:3,250,761,0,251,761,0,251,234,257,234,761,0,175,0,251,236:3,233,289:2,233:2,289:2,233:5,756,238,242,238,257:4,0,257:2,289,257,289,257,756,252,756,242:4,247,228,261,229,0:12,170,171,174:2,162,251,761,0,228,229,372,228,261:3,229,372,173,0,251,257:4,289:2,257:2,289:2,257:5,234,289,234,289,234:3,257,0,257,233,289,233,289,233,236:7,761,373,0:8,375,260,373,0:7,375,251,761,0:12,251,257:4,289:2,257:2,289:2,257:6,289,257,289,257:7,289,257,289,257:8,761,373,0:8,375,260,373,0:7,375,251,756,238,242:10,238,252,233:4,289:2,233:2,289:2,233:6,289,233,289,257:3" id="1"/>
<tiles values="0:33,20,0:35,20,0:36,20,0:35,20,0:9,28,0:2,28,0:23,20,0:35,20,0:36,20,0:35,20,0:36,20,0:35,20,0:36,20,0:35,20,0:7,19:7,0:22,20,28:3,0:6,28,0:6,28,0:18,20,0:50,61,0:21,20,0:72,20,0:9,28,0:6,28,0:45,57,0:9,20,0:13,19:3,0:56,20,0:48,57,0:6,57,0:13,57,0:118,57,0:90,61,0,57,0:68,28,0:65,61,0:61,59,0:13,108,0:40,28,0:2,28,0:2,28,0:2,28,0:35,19:3,0:80,154,0:112,21,0:5,21,0:3,108,0:12,19:3,0:47,21,0:5,21,0:66,21,0:5,21,0:66,21,28,0:3,28,21,0:66,21,0:5,21,0:23,62,0:42,21,0:5,21,0:115,18:8,0:3,18:7,0:3,28,0,108F,0,108F,0,108F,0:4,28,0:40,18:8,0:3,18:7,0:38" id="2"/>
<tiles values="678,0,679,0:67,678,0,679,680,681,682,0:67,678,0,679,678,0,679,0:2,703,0:2,703,0:61,680,681,682,680,681,682,0:2,703,0:2,703,0:61,678,0,679,678,0,679,0:2,703,0:2,703,0:61,680,681,682,680,681,682,0:67,678,0,679,678,0,679,0:67,680,681,682,680,681,682,0:31,699,0:8,699,0,699,0:2,699,0,699,0:19,678,0,679,678,0,679,0:42,706,0:2,706,0:21,680,681,682,680,681,682,0:67,678,0,679,678,0,679,0:2,706,0,706,0:50,763,0:2,763,0:8,680,681,682,680,681,682,0:32,766,0:2,766,0:2,766,0:16,766,0:2,766,0:8,678,0,679,678,0,679,0:51,734,0:12,763,0:2,680,681,682,680,681,682,0:47,766,0,766,0:17,678,0,679,678,0,679,0:35,766,0:2,766,0:2,766,0:22,766,0:2,680,681,682,680,681,682,0:62,736,0:4,678,0,679,678,0,679,0:16,765,0:2,765,0:2,765,0:2,765,0:6,699,0:34,680,681,682,680,681,682,0:46,703,0:10,788,0:9,678,0,679,678,0,679,0:37,699,0:21,699,0:5,699,0,680,681,682,678,0,679,0:39,699,0:3,699,0:5,703,0:17,678,0,679,678,0,679,0:29,699:2,0:36,680,681,682,680,681,682,699,0:2,699,0:13,766:2,734,0:3,766:2,734,0:7,766,0:3,766,0,766,0:3,766,0:2,703,0:20,678,0,679,678,0,679,0:67,680,681,682,678,0,679,0:5,699,0:23,735,0:19,703,0:13,699,0:3,678,0,679,680,681,682,0:49,703,0:17,678,0,679,678,0,679,0:7,699,0:59,678,0,679,680,681,682,0:13,699,0,692,0:48,763,0,763,680,681,682,678,0,679,0:28,699,0:12,734,0:25,678,0,679,680,681,682,0:13,691,0:8,691,0,691,0:7,691,0:34,680,681,682,678,0,679,0:35,699,0:10,699,0:20,678,0,679" id="3"/>
<tiles values="0:716,8,0:130,10,7,12,0:4,10,8,12,0:12,8,0:117,10,7,12,0:91,8,0:196,8,0:12,10,7,12,0:289,10,7,12,0:497,10,7:8,12,0:97" id="4"/>
<tiles values="0:2190" id="5"/>
<tiles values="0:1068,115:4,0:69,115:4,0:69,115:3,1,0:69,115:2,0:37,115:2,0:32,115:2,0:37,115:2,0:71,115:2,0:71,115:2,0:71,115:2,0:71,115:4,0:69,115:4,0:69,115:4,0:69,115,1,115:2,0:276" id="6"/>
<sign text="Takeshi, SWAT units have been sent to look for you. If you use stealth they won't see you.
If you must fight then be careful, they have cybernetically enhanced accuracy and attack speed." n="1217" layer="6" width="0" height="0" face="ninja" forced="true"/>
<sign text="These hot laser beams are deadly. Also watch out for signs highlighting dangerous drops, falling will mean certain death!" n="1911" layer="6" width="0" height="0" face="ninja" forced="true"/>
<msg text="Barracks"/>
</root>
;
level_data["c2e217d5738560bb4f186b4fd4e28501"] = <root>
<level width="60" height="35" start_x="48" start_y="25" compression="false" background="0" scroll="0"/>
<tiles values="588,587,0:2,588,587,588,587,778:26,0:26,570,565,0:2,570,565,570,565,621,0:7,778:3,0:7,778:3,0:31,570,565,0:2,588,587,588,587,0:8,778:3,0:7,778:3,0:31,588,587,0:2,588,587,570,565,0:8,778:3,0:7,778:3,0:7,506:3,0:21,570,565,0:2,588,587,588,587,0:8,778:3,0:7,778:3,0:6,670,778:3,669,0:20,588,587,0:2,570,565,570,565,0:8,778:3,0:7,778:3,0:7,778:3,0:9,661,0:11,570,565,0:2,778:4,598,677:6,525,778:3,598,677:5,525,778:3,598,677:5,525,778:3,598,677:7,525,0:12,588,587,0:2,778:4,595,634:6,508,778,636,778,595,634:5,508,778,636,778,595,634:5,508,623,636,778,595,634:7,508,0:12,570,565,0:2,588,587,588,587,0:52,588,587,0:2,570,565,570,565,0:40,778,0:11,570,565,0:2,588,587,588,587,0:8,778:3,0:7,778:3,0:7,778:2,506,0:9,778,0:11,588,587,0:2,570,565,570,565,0:7,588,587,588,587,778,0:6,778:3,620,0:5,778,588,587,588,587,0:8,778,0:11,570,565,0:2,778:4,0:7,662,565,570,565,662,0:6,778,588,587,778,0:5,662,570,565,570,565,0:8,778,0:11,588,587,0:2,778:4,0:7,588,587,588,587,778,0:6,778,570,565,0:6,778,588,587,588,587,0:8,778,0:11,570,565,0:2,588,587,588,587,0:7,570,565,570,565,0:7,778,588,587,0,535,0:5,570,565,570,565,0:8,778,0:11,588,587,0:2,570,565,570,565,0:7,778:5,0:4,661,778:2,570,565,0:6,778,506:4,0:8,778,0:11,570,565,588,587,588,587,588,587,0:7,648,778,636,778,647,0:3,588,587,588,587,778:2,588,587,570,0:3,648,778,636,778,647,0:8,778:2,587,778,0:8,588,587,570,565,570,565,570,565,646,0:7,778:3,0:4,570,565,570,565,778:2,570,565,570,0:4,778:3,0:9,778:2,565,778,0:8,570,565,588,587,588,587,588,587,659:2,778,0:4,645,778:3,646,0:3,570,565,778:4,660,0,648,778,0:2,645,778:3,646,0:3,778,0:4,778:2,587,778,0:10,570,565,570,565,570,565,647,0:6,778:5,0:4,778:5,0:6,778,506:4,646,0,645,636,0:4,778:2,565,778,0:9,778,0:13,778,588,587,588,587,0:3,481,662,778,588,587,588,587,0:5,778:2,587,588,587,659:3,778,0:4,778:2,587,778,0:9,778,0:13,778,570,565,570,565,0:4,481,778,570,565,570,565,0:5,534,778,565,570,565,660,0,648,660,0:4,778:2,565,778,0:9,778,0:13,663,588,587,588,587,0:5,662,588,587,588,587,646,0:5,778,587,588,587,0:8,778:2,587,778,0:9,778,0:13,778,570,565,570,565,0:5,662,570,565,570,565,778,0:5,778,565,570,565,0:8,778:2,565,778,0:9,778,0:14,778:3,660,0:5,778:5,635,0:5,778,587,588,587,0:8,778:2,587,778,0:9,778,0:4,588,587,0:8,778:3,0:6,534,778,533,0,648,778,646,0:4,778,565,570,565,0:7,645,778:2,565,778,0:9,778,0:4,570,565,778,0:17,635,0:3,778,659,0:3,495,778,587,588,587,646,0:6,506:4,0:10,778,0:4,588,587,778,0:16,645,778,0:3,481,533,0:3,778:2,565,570,565,0,778,0:5,481,778:2,506,778,0:9,778,0:4,570,565,660,0:15,659:2,778,0:8,778:2,587,588,587,778,660,0:6,534,778,506,778,0:9,778,0:4,588,587,0:17,534,660,0:8,778,570,565,570,565,0:4,778:6,506,778,0:9,778,0:4,570,565,535,0:25,532,778,0:11,661,778:2,506,778,0:9,778,0:4,778:3,535,0:23,532,778:2,0:11,778:3,506,778,0:9,778,0:4,778:5,620,0:18,778,0:2,778:3,0:11,778:3,506,778,0:9,778,0:4,588,587,588,587,588,778,620,0:8,587,588,587,588,0:5,588,587,588,587,588,587,0:11,778:3,506,778,0:9,778,0:4,570,565,570,565,570,778:2,620,0:6,570,565,570,565,570,0:5,570,565,570,565,570,565,0:11,778,0,778,506,778,0:8" id="0"/>
<tiles values="327:3,364,379,380:27,381,376,378,368,327:25,0,327,364,0:29,376,378,368,327:25,0,327,364,0:29,376,378,368,327:25,0,327,358,360,334,0:27,379,381,333,330:13,327:12,0,327,781,362,359,0:43,327:12,0,327,364,0:45,327:12,0,327,353,0:42,363,330,782,327:12,0,327,353,0:12,370,0,370,0:7,370,0,370,0:7,370,0,370,0:9,356,327:12,0,327,353,0:44,356,327:12,0,327,353,0:44,333,327:12,0,327,353,0:11,325,360:3,334,0:5,382,384,382,383,384,0:4,339,325,348:3,334,0:8,382,327:12,0,327,353,0:11,361,0:3,359,0:5,376,378,379,380,381,0:5,361,0:3,364,0:8,376,327:12,0,327,353,0:21,376,378,0:2,321,0:9,364,0:8,376,327:12,0,327,353,0:11,322,0:3,321,0:5,376,378,0:2,353,0:5,324,360,323,0,364,0:8,376,327:12,0,327,353,0:11,368,382,383,384,353,0:5,376,378,0:2,353,0:5,382,383,384,0,364,0:8,376,327:12,0,327,353,0:4,321,0:6,361,376,377,378,359,0:2,322,0:2,376,378,339,0,358,348:2,334,0:2,376,377,378,363,329,0:8,376,327:12,0,327,353,0:4,359,0:7,376,377,378,0:3,356,0:2,376,378,0:5,353,0:2,376,377,378,0:5,322,0:4,376,327:12,0,327,359,0:6,321,0:5,379,380,381,0:3,356,0:2,379,381,0:5,353,0:2,379,380,381,0:5,356,0:4,376,327,0,327:10,0:9,359,0:11,356,0:9,359,0:10,361,0:4,376,327,0,327:12,348:3,334,0:8,322,382,383,384,321,0:2,333,330,362,382,383,384,324,334,0:5,382,383,384,324,334,0:8,376,327,0,327:10,0,327:4,358,348,334,0:6,368,379,380,381,353,0:5,379,380,381,0,364,0:5,379,380,381,0,364,0:8,379,327,0,327:10,0,327:6,353,0:6,361,0:3,353,0:5,322,0:3,364,0:9,364,0:12,327:9,0,327:6,353,0:10,353,0:5,361,0:3,364,0:9,364,0:12,327:9,0,327:6,353,0:5,324,348,323,0:2,359,0:9,359,0:9,364,0:12,327:9,0,327:6,353,0:6,382,383:3,384,0:5,324,360:3,323,0:9,364,0:12,327:9,0,327:6,359,0:6,376,377:3,378,0:2,321,0:9,322,0:6,364,0:12,327:9,0,327:3,370,0:2,322,49,0:5,379,380:3,381,0:2,364,0:9,368,0:6,364,0:6,324,348,360,327:12,0,327:3,370,0:2,333,362,0:12,364,0:9,361,0:6,358,360:2,323,0:6,327,0,327:10,0,327:3,370,0:16,358,348,323,0:24,327,0,327:10,0,327:3,370,0:29,382,383:12,384,327,0,327:10,0,327:3,370,0:29,376,377:12,378,327,0,327:10,0,327:3,370,324,323,0:27,376,377:12,378,327,0,327:10,0,327:3,370,0:14,325,360:3,334,0:5,325,360:3,334,376,377:12,378,327,0,327:10,0,327:3,370,0:14,368,0:3,364,0:5,368,0:3,364,376,377:12,378,327,0,327:10,0,327:3,370,382,383:12,384,368,0:3,364,382,383:3,384,368,0:3,364,376,377:12,378,327,0,327:9" id="1"/>
<tiles values="0:124,28:2,0:220,28:3,0:209,40,0:16,28,0:3,40,0:33,37F,0:9,37F,0:111,28,0:3,28,0:15,28,0:92,28,0:13,28,0:4,28,0:75,28,0:26,28,0:110,62,0,34,0:11,34,0:3,28,0:3,28,0:4,28,40,0:5,34,0:3,28,0:215,61,0:69,28,0:47,31F,0:8,61,31F,0:8,28,0:77,154,0:255,28:2,0:73,28,0,28,0:7,28,0,28,0:206" id="2"/>
<tiles values="678,0,679,0:13,767,0,767,0:7,767,0,767,0:20,678,0,679,0:8,678,0,679,0:46,680,681,682,0:8,680,681,682,0:46,678,0,679,0:8,678,0,679,0:33,767,0,767,0:7,767,0,767,680,681,682,0:8,680,681,682,0:46,678,0,679,0:8,678,0,679,0:46,680,681,682,0:8,680,681,682,790,0:45,678,0,679,0:8,678,0,679,0:13,767,0,767,0:7,767,0,767,0:7,767,0,767,0:10,680,681,682,0:8,680,681,682,790,0:45,678,0,679,0:8,678,0,679,0:46,680,681,682,0:8,680,681,682,790,0:15,733,0:29,678,0,679,0:8,678,0,679,0:12,767,0:3,767,0:15,736,0:12,785,680,681,682,0:8,680,681,682,790,0:45,678,0,679,0:8,678,0,679,0:12,736,0:32,785,680,681,682,0:8,680,681,682,790,0:45,678,0,679,0:8,678,0,679,0:12,767,0:3,767,0:2,735,0:6,767:3,0:6,767:2,0:8,785,680,681,682,0:8,680,681,682,790,0:4,767,0:34,698,0:5,678,0,679,0:8,678,0,679,0:40,735,0:4,785,680,681,682,0:8,678,0,679,0:7,767,0:21,736,0:10,702,0:5,678,0,679,0:8,680,681,682,0:19,767,0:25,785,680,681,682,0:8,678,0,679,0:46,678,0,679,0:8,680,681,682,0:5,790,0:40,680,681,682,0:8,678,0,679,0:46,678,0,679,0:8,680,681,682,0:5,790,0:5,733,0:12,689,688,0:20,680,681,682,0:8,678,0,679,0:22,767:5,0:19,678,0,679,0:8,680,681,682,0:5,790,0:6,692,0:3,692,0:2,735,0:9,702,0:16,678,0,679,0:8,678,0,679,0:13,765,0,765,0:13,733,0:16,680,681,682,0:8,680,681,682,0:2,790,0:2,767:2,0:22,702,0:4,689,688,0:9,692,678,0,679,0:8,678,0,679,0:46,680,681,682,0:8,680,681,682,0:2,790,0:31,762,0,762,0,762,0,762,0,762,0,762,0,678,0,679,0:8,678,0,679,0:46,680,681,682,0:8,680,681,682,0:46,678,0,679,0:8,678,0,679,0:46,680,681,682,0:8,680,681,682,0:46,678,0,679,0:8,678,0,679,0:5,762,0,762,0,762,0,762,0,762,0,762,0:7,762,0,762,0:20,680,681,682,0:8" id="3"/>
<tiles values="0:555,10,7:2,12,0:17,10,7:2,12,0:33,11,0:9,11,0:49,6,0:9,6,0:49,6,0:9,6,0:49,6,0:9,6,0:49,6,0:9,6,0:49,6,0:9,6,0:49,6,0:9,6,0:49,6,0:9,6,0:39,8,0:9,6,0,10,7:3,12,0:3,9,0,10,7:3,12,0:5,10,7:3,12,0:33,6,0:59,6,0:9,11,0:49,6,0:9,6,0:49,6,0:9,6,0:49,6,0:9,6,0:49,9,0:9,6,0:59,6,0:59,6,0:59,9,0:456" id="4"/>
<tiles values="0:2100" id="5"/>
<tiles values="0:844,115:6,0:54,115:6,0:54,115:7,0:53,115:7,0:53,115:7,0:56,1,115:2,0:950" id="6"/>
<sign text="Mr Merlock: test group b102 are now full dinky dog addicts but with the use of Merlock Pharma's revolutionary DeepCell body tune up pill, all physical damage has been reversed.
This is a beautiful match sir, two innovative products working together to create maximum profit. I feel at this point sir a review of my pay is needed." n="1147" layer="6" width="0" height="0" face="coward" forced="false"/>
<msg text="Warehouse 2"/>
</root>
;
level_data["eef6bf1dba5ecec08d0fcdc22945d390"] = <root>
<level width="55" height="38" start_x="3" start_y="35" compression="false" background="2" scroll="0"/>
<tiles values="588,778,0:2,778:38,0:10,778,0:2,570,778,0:2,778:38,0:10,778,0:2,588,778,0:2,778:38,0:10,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,0:10,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:10,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,0:8,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:8,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,778:6,0:2,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:4,778:2,0:2,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,588,587,0:7,778,0:2,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:7,778,0:2,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,588,587,0:30,778:2,0:2,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,570,565,0:4,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,643,642,641,642,641,642,641,642,637,778,0:2,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,0:6,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,637,778:2,0:2,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,0:6,641,642,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,637,778:3,0:2,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,0:2,641,642,641,642:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,637,778:3,641,0:2,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,0:2,641,778:3,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,637,778:8,642,0,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,0:2,642,778:2,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,0,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,0:2,641,778,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,778,642,0,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,0:2,642,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,778,641,0,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,0:2,641,642,641,642,641,778,643,642,644,778,641,642,641,642,0:20,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,586,585,642,641,642,641,642,643,642,641,642,644,778,641,642,641,0:20,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,564,563,641,642,641,642,641,642,641,642,641,642,641,642,641,642,0:20,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,586,585,642,641,642,641,642,641,642,641,642,641,642,641,642,641,0:20,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,564,563,0:4,641,642,641,642,641,642,641,642,0:22,778,0:2,570,778,0:2,588,587,588,587,588,587,588,587,588,587,588,587,586,585,0:4,642,641,642,641,642,641,642,641,0:22,778,0:2,588,778,0:2,570,565,570,565,570,565,570,565,570,565,570,565,564,563,0:4,641,642,641,642,641,642,641,642,0:22,778,0:2,570,778,0,778:2,0:17,642,641,642,641,642,641,642,641,0:22,778,0:2,588,778,0,778:2,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,637,778:9,0:12,778,0:2,570,778,0,778:2,643,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,0:12,778,0:2,588,778,0,778:2,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,0:12,778,0:2,570,778,0,778:2,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,641,642,637,778:2,642,641,642,641,642,641,642,641,642,641,0:12,778,0:2,588,778,0,778:2,642,641,642,641,642,641,642,641,642,641:2,642,641,642,778:12,0:21,778,0:2,570,778,0,778:2,641,642,641,642,641,642,641,642,641,778:17,0:21,778,0:2,588,778,0,778:2,638,641,642,641,642,641,642,641,642,778:3,643,642,641,642,641,642,641,642,641,644,778:3,642,0:21,778,0:2,570,778:5,638,641,642,641,642,641,642,641,778:2,643,642,641,642,641,642,641,642,641,642,641,644,778:2,641,0:21,778,0:2,588,778,0,778:13,642,641,642,641,642,641,642,641,642,641,642,641,644,778,642,644,0:2,643,639,637,638,640,644,0:12,778,0:2,570,778,0,778:12,642,641,642,641,642,641,642,641,642,641,642,641,642,641,644,641,675,519,518,674,653,0:2,654,675,519,0:11,778,0:2" id="0"/>
<tiles values="327,0,327,288,0:38,318,314:8,327:3,0,327,0,327,288,0:38,318,314:8,327,0,327,0,327,0,327,288,0:38,318,314:8,327,0,327,0,327,0,327,288,0:38,318,314:8,327,0,327,0,327,0,327,288,0:38,318,314:8,327,0,327,0,327,0,327,288,0:38,318,314:8,327,0,327,0,327,0,327,288,0:38,310,309,290,309,290,309,290,309,290,327,0,327,0,327,0,327,288,0:46,318,327,0,327,0,327,0,327,288,0:38,317,298,290,298,290,298,290,0,318,327,0,327,0,327,0,327,288,0:38,318,314:5,353,0,318,327,0,327,0,327,0,327,288,0:34,317,298,290,298,290,314:5,353,0,318,327,0,327,0,327,0,327,288,0:12,317,290,298:2,290,298:2,290,298:2,290,298:2,290,298:2,290,298:2,290,298:2,290,781,332,330,332,330,332,330,332,330,329,0,318,327,0,327,0,327,0,327,288,0:12,290,314:22,364,0:10,318,327,0,327,0,327,0,327,288,0:12,318,314:6,781,332,330:3,120,330:3,332,782,314:5,364,0:10,318,327,0,327,0,327,0,327,288,0:12,318,314:5,781,329,0:9,333,782,314:4,364,0:5,48I(0),0:3,317,300,327,0,327,0,327,0,327,288,0:12,290,314,781,330:3,329,739,0:9,739,333,330:4,329,0,322,0:7,739,306,327,0,327,0,327,0,327,288,0:12,318,314,364,0:4,46,0:9,46,0:7,361,0:7,46I(0),0:3,327,0,327,0,327,288,0:12,318,314,364,0,325,360,334,737,325,360:7,334,737,325,360:4,371,360:3,371,360:4,334,737,325,327:3,0,327,0,327,288,0:12,290,314,364,0,368,314,358,348,357,314:7,358,348,357,314:13,358,360,357,327,0,327,0,327,0,327,288,0:12,318,314,364,0,368,314,781,330,332,330,332,330,782,314:22,327,0,327,0,327,0,327,288,0:12,318,314,364,0,368,314,364,0:2,339,0:2,368,314:22,327,0,327,0,327,0,327,288,0:12,290,314,364,0,333,330,329,0,339,0,339,0,333,330,782,314:20,327,0,327,0,327,0,327,288,0:12,318,314,364,0:11,368,314:20,327,0,327,0,327,0,327,288,0:12,318,314,364,0:11,368,314:20,327,0,327,0,327,0,327,288,0:12,290,314,358,360:5,334,0,325,360:3,357,314:20,327,0,327,0,327,0,327,288,0:12,318,314:5,781,330,329,0,333,330,782,314:22,327,0,327,0,327,0,327,288,0:12,318,314:5,364,0:5,356,314:22,327,0,327,0,327:3,290,298:3,290,298:5,290,298:2,290,314:5,364,0:5,333,330:11,782,314:10,327,0,327,0,327,0,327,314,781,330:2,332,330:2,332,330:2,332,330:2,332,330:3,782,314,364,0:2,339,0:14,356,314:10,327,0,327,0,327,0,327,314,353,0:8,322,0:6,356,314,364,0:5,324,360,371,360:2,371,360:2,371,360:2,371,357,314:10,327,0,327,0,327,0,327,314,353,0:3,322,0:4,361,0:4,322,0,333,330,329,0:5,363,330,782,314:20,327,0,327,0,327,0,327,314,353,0:3,361,0:9,361,0:11,356,314:20,327,0,327,0,327,0,327,314,353,0:2,324,348:11,334,0:10,356,314:20,327,0,327,0,327,0,327,314,353,0:9,322,321,325,360,334,358,348:2,371:2,348:2,323,0:3,356,314:20,327,0,327,0,327,0,327,331,329,0:9,356,364,333,121,329,0:11,356,314:20,327,0,327,0,327,0:13,356,364,0:13,339,356,314:20,327,0,327,0,327:3,360,371,360:2,371,360:2,371,360:2,371,357,364,0:14,356,314:20,327,0,327,0,327,0,327,314:12,358,360:14,357,314:20,327,0,327,0" id="1"/>
<tiles values="0:533,28:4,0:31,28:4,0:8,28:4,0:119,36F,0:3,39F,0:34,79F,39,79F,0:66,61,0:89,28:2,0:20,33F,0:3,42F,0:4,62,0:26,71F,0:7,71F,0:156,45,0,45,0:53,44,0:113,28,0:279,28:5,61,0:42,42,0:37,36,0:5,42,0:5,93F,0:37,108,0:54,108,0:54,108,0:78,28,0:26,154,0:69,28:2,0:2,60,0:8,28,0:80" id="2"/>
<tiles values="678,0,679,0:48,678,0,679,0,680,681,682,790,0:47,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:47,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:40,767,0,767,0,767,0,767,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:47,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:40,764,0,764,0,764,0:2,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:13,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0:2,764,0,766,0,766,0,766,0,766,0:4,678,0,679,0,678,0,679,0:14,789,0:33,680,681,682,0,680,681,682,790,0:20,766,0:7,766,0:18,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:13,789,0,766,0:2,766,0:11,766,0:4,766,0:11,678,0,679,0,678,0,679,0:48,678,0,679,0,680,681,682,790,0:47,680,681,682,0,678,0,679,0:14,789,0:33,678,0,679,0,680,681,682,790,0:47,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:13,789,0:4,766,0,766,0,766,0,766,0:22,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,790,0:47,678,0,679,0,678,0,679,0:14,789,0:33,680,681,682,0,680,681,682,790,0:19,766:2,0,766:2,0:23,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,0:4,764,0:5,764,0:37,678,0,679,0,678,0,679,0:4,766,0:2,766,0:2,766,0:2,766,0:34,680,681,682,0,680,681,682,0:18,735,0:8,700,0:2,700,0:2,700,0:2,700,0:11,678,0,679,0,678,0,679,0:19,766,0:5,766,0:22,680,681,682,0,680,681,682,0:48,678,0,679,0,678,0,679,0:48,680,681,682,0,680,681,682,0:16,766,0:2,766:2,0:2,766,0:24,678,0,679,0,678,0,679,0:48,680,681,682,0,678,0,679,0:48,678,0,679,0,680,681,682,0,763,0:2,763,0:2,763,0:2,763,0:37,680,681,682,0,678,0,679,0:48,678,0,679,0" id="3"/>
<tiles values="0:703,10:4,11,0:31,10,7:2,12,0,10,7:2,12,0:10,9,0:3,11,0:50,9,0:3,11,0:50,9,0:3,11,0:50,9,12:4,0:31,10,7:7,12,0:654,8,0:197,10,7,12,0:177,10I(2),7:2,12I(2),0:86" id="4"/>
<tiles values="0:2090" id="5"/>
<tiles values="0:1324,115:12,0:43,115:12,0:43,115:5,1,115:6,0:644" id="6"/>
<sign text="Okay Dirk
Hang on, you're not Dirk!
Must be a side effect of this blasted Martian radiation." n="1439" layer="6" width="0" height="0" face="prof" forced="false"/>
<msg text="Research 1"/>
</root>
;
this.canvas = _arg1;
this.shaker = _arg2;
this.back = _arg3;
RayCast.init(this);
_arg1.addEventListener(Event.ENTER_FRAME, transistionWait, false, 0, true);
}
private function initPlayer():void{
var _local1:MovieClip;
var _local2:MovieClip;
var _local3:String;
_local1 = new PlayerMC();
_local2 = new PlayerMC();
player_holder.addChild(_local1);
player = new Player(_local1, _local2, ((scale >> 1) + (start_x * scale)), ((-(Player.HEIGHT) >> 1) + ((start_y + 1) * scale)), this);
_local3 = ((NitromeGame.selected_level < 10)) ? "0" : "";
_local3 = (_local3 + NitromeGame.selected_level);
NitromeGame.timeline.msg_panel.setMsg(((_local3 + ": ") + start_msg));
}
public function clearAll():void{
canvas.transform.colorTransform = new ColorTransform();
clearListeners();
while (canvas.numChildren > 0) {
canvas.removeChildAt(0);
};
}
private function countEnemies():void{
var _local1:int;
var _local2:int;
scroller.changeLayer(Scroller.ENCOUNTER_LAYER);
_local1 = 0;
while (_local1 < scroller.height) {
_local2 = 0;
while (_local2 < scroller.width) {
if (TileMaker.isEnemy(scroller.map_array[_local1][_local2])){
NitromeGame.bonus.enemy_total.value++;
};
_local2++;
};
_local1++;
};
}
private function mouseUp(_arg1:MouseEvent):void{
mouse_pressed = false;
}
public function textMessage(_arg1:String, _arg2:String):void{
NitromeGame.timeline.text_panel.panel.message_text.text = _arg1;
NitromeGame.timeline.text_panel.gotoAndPlay("popup_stay");
NitromeGame.timeline.text_panel.panel.face_panel.gotoAndStop(_arg2);
}
public function updateAlertState():void{
var _local1:int;
var _local2:String;
if (alert_state == ACTIVE){
alert_col.blueOffset = (alert_col.blueOffset - alert_col_step);
alert_col.greenOffset = (alert_col.greenOffset - alert_col_step);
if (alert_col_step > 0){
if (alert_col.blueOffset <= -(ALERT_COL_LIMIT)){
alert_col_step = -(ALERT_COL_SPEED);
};
} else {
if (alert_col.blueOffset >= 0){
alert_col_step = ALERT_COL_SPEED;
};
};
canvas.transform.colorTransform = alert_col;
if (NitromeGame.timeline.alert_panel.alpha < 1){
NitromeGame.timeline.alert_panel.alpha = (NitromeGame.timeline.alert_panel.alpha + 0.04);
} else {
alert_count--;
_local1 = ((alert_count * 0.04) >> 0);
_local2 = ("" + ((_local1 < 10)) ? ("0" + _local1) : _local1);
NitromeGame.timeline.alert_panel.alert_time.text = _local2;
if (alert_count <= 0){
standdown();
};
};
} else {
if (alert_state == INACTIVE){
if (alert_col.blueOffset < 0){
alert_col.blueOffset = (alert_col.blueOffset + ALERT_COL_SPEED);
alert_col.greenOffset = (alert_col.greenOffset + ALERT_COL_SPEED);
canvas.transform.colorTransform = alert_col;
};
if (NitromeGame.timeline.alert_panel.alpha > 0){
NitromeGame.timeline.alert_panel.alpha = (NitromeGame.timeline.alert_panel.alpha - 0.04);
};
} else {
if (alert_state == CHAMELEON){
if (NitromeGame.timeline.alert_panel.alpha < 1){
NitromeGame.timeline.alert_panel.alpha = (NitromeGame.timeline.alert_panel.alpha + 0.04);
} else {
alert_count--;
_local1 = ((alert_count * 0.04) >> 0);
_local2 = ("" + ((_local1 < 10)) ? ("0" + _local1) : _local1);
NitromeGame.timeline.alert_panel.alert_time.text = _local2;
if (alert_count <= 0){
NitromeGame.timeline.alert_panel.alert_time.text = "00";
NitromeGame.timeline.alert_panel.alert_time.textColor = DANGER_COL;
alert_state = INACTIVE;
if (player.chameleon){
player.exitChameleonMode();
};
};
};
};
};
};
}
private function loadLevel():void{
var _local1:String;
var _local2:XML;
_local1 = levelPath();
_local2 = level_data[_local1];
decodeXML(_local2);
}
public function chameleon():void{
if ((((alert_state == ACTIVE)) || ((alert_state == CHAMELEON)))){
return;
};
NitromeGame.timeline.alert_panel.alert_time.text = "HIDDEN";
NitromeGame.timeline.alert_panel.alert_time.textColor = SAFE_COL;
alert_state = CHAMELEON;
if (player.rope.length > 0){
mouse_pressed = false;
};
alert_count = CHAMELEON_DELAY;
}
private function floodFillBlocksInPlay(_arg1:Array, _arg2:Array, _arg3:int, _arg4:int, _arg5:int, _arg6:int):Array{
var _local7:Array;
_local7 = [];
if (_arg1[_arg4][_arg3] == EMPTY){
return (_local7);
};
_arg1[_arg4][_arg3] = EMPTY;
if ((((((_arg4 > 0)) && (!(TileMaker.isBlock(_arg2[(_arg4 - 1)][_arg3]))))) && (!((_arg1[(_arg4 - 1)][_arg3] == EMPTY))))){
_local7.push(new Dot(_arg3, (_arg4 - 1)));
} else {
if ((((_arg4 > 0)) && (TileMaker.isBlock(_arg2[(_arg4 - 1)][_arg3])))){
_arg1[(_arg4 - 1)][_arg3] = IN_PLAY;
};
};
if ((((((_arg3 < (_arg5 - 1))) && (!(TileMaker.isBlock(_arg2[_arg4][(_arg3 + 1)]))))) && (!((_arg1[_arg4][(_arg3 + 1)] == EMPTY))))){
_local7.push(new Dot((_arg3 + 1), _arg4));
} else {
if ((((_arg3 < (_arg5 - 1))) && (TileMaker.isBlock(_arg2[_arg4][(_arg3 + 1)])))){
_arg1[_arg4][(_arg3 + 1)] = IN_PLAY;
};
};
if ((((((_arg4 < (_arg6 - 1))) && (!(TileMaker.isBlock(_arg2[(_arg4 + 1)][_arg3]))))) && (!((_arg1[(_arg4 + 1)][_arg3] == EMPTY))))){
_local7.push(new Dot(_arg3, (_arg4 + 1)));
} else {
if ((((_arg4 < (_arg6 - 1))) && (TileMaker.isBlock(_arg2[(_arg4 + 1)][_arg3])))){
_arg1[(_arg4 + 1)][_arg3] = IN_PLAY;
};
};
if ((((((_arg3 > 0)) && (!(TileMaker.isBlock(_arg2[_arg4][(_arg3 - 1)]))))) && (!((_arg1[_arg4][(_arg3 - 1)] == EMPTY))))){
_local7.push(new Dot((_arg3 - 1), _arg4));
} else {
if ((((_arg3 > 0)) && (TileMaker.isBlock(_arg2[_arg4][(_arg3 - 1)])))){
_arg1[_arg4][(_arg3 - 1)] = IN_PLAY;
};
};
if ((((((_arg3 < (_arg5 - 1))) && ((_arg4 > 0)))) && (TileMaker.isBlock(_arg2[(_arg4 - 1)][(_arg3 + 1)])))){
_arg1[(_arg4 - 1)][(_arg3 + 1)] = IN_PLAY;
};
if ((((((_arg3 < (_arg5 - 1))) && ((_arg4 < (_arg6 - 1))))) && (TileMaker.isBlock(_arg2[(_arg4 + 1)][(_arg3 + 1)])))){
_arg1[(_arg4 + 1)][(_arg3 + 1)] = IN_PLAY;
};
if ((((((_arg3 > 0)) && ((_arg4 < (_arg6 - 1))))) && (TileMaker.isBlock(_arg2[(_arg4 + 1)][(_arg3 - 1)])))){
_arg1[(_arg4 + 1)][(_arg3 - 1)] = IN_PLAY;
};
if ((((((_arg3 > 0)) && ((_arg4 > 0)))) && (TileMaker.isBlock(_arg2[(_arg4 - 1)][(_arg3 - 1)])))){
_arg1[(_arg4 - 1)][(_arg3 - 1)] = IN_PLAY;
};
return (_local7);
}
private function msgPanelClick(_arg1:Event):void{
if (current_event.active){
if (((((current_event.text_up) && (msg_key_ready))) && (!(Key.isDown(Keyboard.SPACE))))){
current_event.active = false;
msg_key_ready = false;
};
};
}
private function updateShaker():void{
if (shaker.y != 0){
shaker.y = -(shaker.y);
if (shaker.y > 0){
shaker.y--;
};
};
}
public function addScore(_arg1:int):void{
NitromeGame.level_score = (NitromeGame.level_score + _arg1);
Score.value = (Score.value + _arg1);
NitromeGame.timeline.score_panel.score.text = scoreString();
}
public function electrocuteActors():void{
var _local1:int;
_local1 = 0;
while (_local1 < actors.length) {
actors[_local1].electrocuted = true;
_local1++;
};
}
public function transistionWait(_arg1:Event):void{
if (!NitromeGame.timeline.tt.tweening){
canvas.removeEventListener(Event.ENTER_FRAME, transistionWait);
init();
};
}
public function clearListeners():void{
canvas.removeEventListener(Event.ENTER_FRAME, main);
NitromeGame.timeline.text_panel.panel.removeEventListener(MouseEvent.CLICK, msgPanelClick);
Key.stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
Key.stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
Key.stage.removeEventListener(KeyboardEvent.KEY_DOWN, debugKey);
Key.forceClearKeys();
}
private function floodFillEvent(_arg1:int, _arg2:Array, _arg3:Array, _arg4:int, _arg5:int):Array{
var _local6:Array;
_local6 = [];
_arg2[_arg5][_arg4] = _arg1;
if ((((((_arg5 > 0)) && ((_arg3[(_arg5 - 1)][_arg4] == EVENT_AREA)))) && ((_arg2[(_arg5 - 1)][_arg4] == -1)))){
_local6.push(new Dot(_arg4, (_arg5 - 1)));
};
if ((((((_arg4 < (scroller.width - 1))) && ((_arg3[_arg5][(_arg4 + 1)] == EVENT_AREA)))) && ((_arg2[_arg5][(_arg4 + 1)] == -1)))){
_local6.push(new Dot((_arg4 + 1), _arg5));
};
if ((((((_arg5 < (scroller.height - 1))) && ((_arg3[(_arg5 + 1)][_arg4] == EVENT_AREA)))) && ((_arg2[(_arg5 + 1)][_arg4] == -1)))){
_local6.push(new Dot(_arg4, (_arg5 + 1)));
};
if ((((((_arg4 > 0)) && ((_arg3[_arg5][(_arg4 - 1)] == EVENT_AREA)))) && ((_arg2[_arg5][(_arg4 - 1)] == -1)))){
_local6.push(new Dot((_arg4 - 1), _arg5));
};
return (_local6);
}
public function addListeners():void{
canvas.addEventListener(Event.ENTER_FRAME, main, false, 0, true);
NitromeGame.timeline.text_panel.panel.addEventListener(MouseEvent.CLICK, msgPanelClick);
Key.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
Key.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
Key.stage.addEventListener(KeyboardEvent.KEY_DOWN, debugKey);
}
private function updateBullets():void{
var _local1:int;
i = 0;
while (i < bullets.length) {
if (bullets[i].active){
bullets[i].main();
};
if (bullets[i].active){
_local1 = 0;
while (_local1 < actors.length) {
if (bullets[i].intersects(actors[_local1].collision_rect)){
actors[_local1].resolveBulletCollision(bullets[i]);
break;
};
_local1++;
};
};
if (((bullets[i].active) && (bullets[i].intersects(player.collision_rect)))){
bullets[i].resolvePlayerCollision(player);
};
if (!bullets[i].active){
bullets.splice(i, 1);
i--;
} else {
bullets[i].updateMC();
};
i++;
};
}
private function createStackMap(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
var _local4:int;
_local2 = [];
_local3 = 0;
while (_local3 < scroller.height) {
_local2[_local3] = [];
_local4 = 0;
while (_local4 < scroller.width) {
_local2[_local3].push(0);
_local4++;
};
_local3++;
};
_local3 = 0;
while (_local3 < scroller.height) {
_local4 = 0;
while (_local4 < scroller.width) {
if (_arg1[_local3][_local4] == IN_PLAY){
if ((((((_local3 > 0)) && ((_arg1[(_local3 - 1)][_local4] == IN_PLAY)))) || ((_local3 == 0)))){
_local2[_local3][_local4] = (_local2[_local3][_local4] | Rect.UP);
};
if ((((((_local4 < (scroller.width - 1))) && ((_arg1[_local3][(_local4 + 1)] == IN_PLAY)))) || ((_local4 == (scroller.width - 1))))){
_local2[_local3][_local4] = (_local2[_local3][_local4] | Rect.RIGHT);
};
if ((((((_local3 < (scroller.height - 1))) && ((_arg1[(_local3 + 1)][_local4] == IN_PLAY)))) || ((_local3 == (scroller.height - 1))))){
_local2[_local3][_local4] = (_local2[_local3][_local4] | Rect.DOWN);
};
if ((((((_local4 > 0)) && ((_arg1[_local3][(_local4 - 1)] == IN_PLAY)))) || ((_local4 == 0)))){
_local2[_local3][_local4] = (_local2[_local3][_local4] | Rect.LEFT);
};
} else {
_local2[_local3][_local4] = -1;
};
_local4++;
};
_local3++;
};
return (_local2);
}
private function initSpawnage():void{
var _local1:int;
var _local2:int;
scroller.changeLayer(Scroller.ENCOUNTER_LAYER);
_local1 = 0;
while (_local1 < scroller.height) {
_local2 = 0;
while (_local2 < scroller.width) {
if ((((((block_map[_local1][_local2] >= 0)) || ((block_map[_local1][_local2] <= 0)))) && (TileMaker.isSpawn(block_map[_local1][_local2])))){
spawnage.push({x:_local2, y:_local1, id:scroller.map_array[_local1][_local2]});
scroller.map_array[_local1][_local2] = 0;
if ((((_local1 > 0)) && (TileMaker.isBlock(block_map[(_local1 - 1)][_local2])))){
if (stack_map[(_local1 - 1)][_local2] == EMPTY){
stack_map[(_local1 - 1)][_local2] = 0;
};
};
if ((((_local1 < (scroller.height - 1))) && (TileMaker.isBlock(block_map[(_local1 + 1)][_local2])))){
if (stack_map[(_local1 + 1)][_local2] == EMPTY){
stack_map[(_local1 + 1)][_local2] = 0;
};
};
};
_local2++;
};
_local1++;
};
}
public function levelComplete():void{
var _local1:Object;
if (completed){
return;
};
completed = true;
player.running = false;
if (NitromeGame.bonus.dodge.value){
addScore(5000);
};
if (NitromeGame.bonus.cash_count.value == NitromeGame.bonus.cash_total.value){
addScore(5000);
};
if (NitromeGame.bonus.msg_count.value == NitromeGame.bonus.msg_total.value){
addScore(5000);
};
if (NitromeGame.bonus.enemy_count.value == NitromeGame.bonus.enemy_total.value){
addScore(10000);
};
_local1 = {dodge:(NitromeGame.bonus.dodge.value == 1), cash_count:NitromeGame.bonus.cash_count.value, cash_total:NitromeGame.bonus.cash_total.value, msg_count:NitromeGame.bonus.msg_count.value, msg_total:NitromeGame.bonus.msg_total.value, enemy_count:NitromeGame.bonus.enemy_count.value, enemy_total:NitromeGame.bonus.enemy_total.value};
NitromeGame.setLevelBonus(_local1, NitromeGame.selected_level);
if (NitromeGame.selected_level >= (NitromeGame.total_levels - 1)){
NitromeGame.timeline.popup_holder.launchPopUp("final_level_complete");
} else {
NitromeGame.timeline.popup_holder.launchPopUp("level_complete");
NitromeGame.setLevelUnlocked((NitromeGame.selected_level + 1));
if (NitromeGame.last_level < (NitromeGame.selected_level + 1)){
NitromeGame.last_level = (NitromeGame.selected_level + 1);
};
};
}
private function countCash():void{
var _local1:int;
var _local2:int;
scroller.changeLayer(Scroller.ENCOUNTER_LAYER);
_local1 = 0;
while (_local1 < scroller.height) {
_local2 = 0;
while (_local2 < scroller.width) {
if (scroller.map_array[_local1][_local2] == 28){
NitromeGame.bonus.cash_total.value++;
};
_local2++;
};
_local1++;
};
}
private function mouseDown(_arg1:MouseEvent):void{
mouse_pressed = true;
}
public function addBullet(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:BitmapSprite):void{
bullets.push(new Bullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, this));
}
public function shake(_arg1:int):void{
shaker.y = _arg1;
}
public function pauseGame(_arg1:Boolean=false):void{
var _local2:int;
if (!player.active){
return;
};
if (!game_paused){
Util.stopClips(player_holder);
Util.stopClips(monster_holder);
game_paused = true;
if (_arg1){
NitromeGame.timeline.popup_holder.launchPopUp("game_help");
} else {
NitromeGame.timeline.popup_holder.launchPopUp("game_paused");
};
} else {
Util.startClips(player_holder);
Util.startClips(monster_holder);
_local2 = 0;
while (_local2 < encounters.length) {
encounters[_local2].unpause();
_local2++;
};
NitromeGame.timeline.popup_holder.hidePopUp();
game_paused = false;
};
}
private function updateSmokes():void{
i = 0;
while (i < smokes.length) {
smokes[i].main();
if (((!(smokes[i].active)) || (!(Util.onScreen(smokes[i].x, smokes[i].y, this, 20))))){
smokes.splice(i, 1);
i--;
};
i++;
};
}
public function removeEncounter(_arg1:Encounter):void{
var _local2:int;
_local2 = 0;
while (_local2 < encounters.length) {
if (encounters[_local2] == _arg1){
encounters.splice(_local2, 1);
break;
};
_local2++;
};
}
public function init():void{
var _local1:Shape;
var _local2:Shape;
background_holder = new Sprite();
tile_holder = new Sprite();
monster_holder = new Sprite();
star_holder = new Sprite();
dead_star_holder = new Sprite();
rope_holder = new Shape();
player_holder = new Sprite();
effect_holder = new Sprite();
sign_holder = new Sprite();
spawn_holder = new Sprite();
light_holder = new Sprite();
scan_holder = new Sprite();
fx_layer = new BitmapData(WIDTH, HEIGHT, true, 4294967295);
fx_layer_holder = new Bitmap(fx_layer);
bullet_layer = new BitmapData(WIDTH, HEIGHT, true, 4294967295);
bullet_layer_holder = new Bitmap(bullet_layer);
screen_rect = new Rectangle(0, 0, WIDTH, HEIGHT);
_local1 = new Shape();
_local2 = new Shape();
debug = _local1.graphics;
debug_stay = _local2.graphics;
debug.lineStyle(2, 0xFF00);
debug_stay.lineStyle(1, 0xFF0000);
canvas.addChild(background_holder);
canvas.addChild(dead_star_holder);
canvas.addChild(scan_holder);
canvas.addChild(tile_holder);
canvas.addChild(monster_holder);
canvas.addChild(bullet_layer_holder);
canvas.addChild(spawn_holder);
canvas.addChild(rope_holder);
canvas.addChild(star_holder);
canvas.addChild(player_holder);
canvas.addChild(effect_holder);
canvas.addChild(sign_holder);
canvas.addChild(fx_layer_holder);
canvas.addChild(light_holder);
canvas.addChild(_local1);
canvas.addChild(_local2);
burn_bitmap1 = new BitmapSprite(new BurnMC1());
burn_bitmap2 = new BitmapSprite(new BurnMC2());
burn_bitmap3 = new BitmapSprite(new BurnMC3());
burn_bitmap4 = new BitmapSprite(new BurnMC4());
bang_bitmap1 = new BitmapSprite(new BangMC1());
bang_bitmap2 = new BitmapSprite(new BangMC2());
bang_bitmap3 = new BitmapSprite(new BangMC3());
star_debris_bitmap = new BitmapSprite(new DeadStarMC());
bullet_bitmap = new BitmapSprite(new BulletMC());
boss_bullet_bitmap = new BitmapSprite(new BossBulletMC());
grenade_bitmap = new BitmapSprite(new GrenadeMC());
bullet_hit_bitmap_up = new BitmapSprite(new BulletHitMC1());
bullet_hit_bitmap_right = new BitmapSprite(new BulletHitMC2());
bullet_hit_bitmap_down = new BitmapSprite(new BulletHitMC3());
bullet_hit_bitmap_left = new BitmapSprite(new BulletHitMC4());
sniper_shot_bitmap = new BitmapSprite(new SniperShotMC());
cartridge_bitmap = new BitmapSprite(new CartridgeMC());
grenade_cartridge_bitmap = new BitmapSprite(new GrenadeCartridgeMC());
smoke_hit_bitmap = new BitmapSprite(new SmokeHitMC());
boss_bullet_hit_bitmap = new BitmapSprite(new BossBulletHitMC());
debris_clips = [];
i = 0;
while (i < 15) {
debris_clips[i] = new BitmapSprite(new ((getDefinitionByName(("DebrisMC" + i)) as Class)));
i++;
};
encounters = [];
scanners = [];
debris = [];
spawnage = [];
tags = [];
fx = [];
smokes = [];
bullets = [];
actors = [];
stealths = [];
frame_count = 0;
NitromeGame.level_score = 0;
state = GAME;
game_paused = false;
god_mode = false;
alert_state = INACTIVE;
alert_col = new ColorTransform();
alert_col_step = ALERT_COL_SPEED;
completed = false;
msg_key_ready = false;
boss_level = false;
NitromeGame.bonus.dodge = new HiddenInt(1);
NitromeGame.bonus.cash_count = new HiddenInt();
NitromeGame.bonus.cash_total = new HiddenInt();
NitromeGame.bonus.msg_count = new HiddenInt();
NitromeGame.bonus.msg_total = new HiddenInt();
NitromeGame.bonus.enemy_count = new HiddenInt();
NitromeGame.bonus.enemy_total = new HiddenInt();
NitromeGame.timeline.health_panel.gotoAndStop("_3");
NitromeGame.timeline.alert_panel.alpha = 0;
NitromeGame.timeline.score_panel.score.text = scoreString();
NitromeGame.timeline.fade_to_black.gotoAndStop("clear");
NitromeGame.timeline.text_panel.gotoAndStop(1);
enemy_health_panel = NitromeGame.timeline.enemy_health_panel;
enemy_health_panel.alpha = 0;
enemy_health_panel.bar.scaleX = 0;
NitromeGame.timeline.hint_panel.visible = false;
loadLevel();
}
private function debugKey(_arg1:KeyboardEvent):void{
if (Key.isDown(Key.P)){
pauseGame();
};
if (Key.isDown(Key.H)){
pauseGame(true);
};
}
public function addFX(_arg1:Number, _arg2:Number, _arg3:BitmapSprite):void{
if (_arg3 == bang_bitmap1){
NitromeGame.sound_manager.playSound("bang1");
} else {
if (_arg3 == bang_bitmap2){
NitromeGame.sound_manager.playSound("bang2");
} else {
if (_arg3 == bang_bitmap3){
NitromeGame.sound_manager.playSound("bang3");
};
};
};
fx.push(new FX(_arg1, _arg2, _arg3, this));
}
public function addBulletGroup(_arg1:Array):void{
bullets.push(new BulletGroup(_arg1));
}
private function updateEvents():void{
var _local1:int;
if (current_event.name == "message"){
if (!current_event.active){
NitromeGame.timeline.hint_panel.visible = false;
if (current_event.text_up){
hideTextMessage();
current_event.text_up = false;
};
current_event = null;
} else {
if (current_event.forced){
if (!current_event.text_up){
current_event.text_up = true;
current_event.forced = false;
NitromeGame.sound_manager.playSound("msg");
if (!current_event.seen){
NitromeGame.bonus.msg_count.value++;
current_event.seen = true;
};
if (current_event.face == "ninja_reveal"){
_local1 = 0;
while (_local1 < actors.length) {
if ((actors[_local1] is NinjaGuard)){
actors[_local1].reveal_count = NinjaGuard.REVEAL_DELAY;
};
_local1++;
};
};
textMessage(current_event.text, current_event.face);
};
} else {
if (!current_event.text_up){
if (spider == null){
if (((!(current_event.seen)) && (!(NitromeGame.timeline.hint_panel.visible)))){
NitromeGame.sound_manager.playSound("msg");
};
NitromeGame.timeline.hint_panel.visible = true;
} else {
NitromeGame.timeline.hint_panel.visible = false;
};
if (((((!(player.key_lock)) && (msg_key_ready))) && (Key.isDown(Keyboard.SPACE)))){
NitromeGame.timeline.hint_panel.visible = false;
current_event.text_up = true;
textMessage(current_event.text, current_event.face);
msg_key_ready = false;
if (!current_event.seen){
NitromeGame.bonus.msg_count.value++;
current_event.seen = true;
};
};
};
};
if (((((current_event.text_up) && (msg_key_ready))) && (Key.isDown(Keyboard.SPACE)))){
current_event.active = false;
msg_key_ready = false;
};
};
};
if (!Key.isDown(Keyboard.SPACE)){
msg_key_ready = true;
};
}
public function scoreString():String{
var _local1:String;
_local1 = Score.value.toString();
while (_local1.length < 7) {
_local1 = ("0" + _local1);
};
return (_local1);
}
public function updateEnemyHealthPanel():void{
if (enemy_health_panel.bar.scaleX > 0){
if (enemy_health_panel.alpha < 1){
enemy_health_panel.alpha = (enemy_health_panel.alpha + 0.2);
};
} else {
if (enemy_health_panel.alpha > 0){
enemy_health_panel.alpha = (enemy_health_panel.alpha - 0.2);
};
};
}
private function updateEncounters():void{
i = 0;
while (i < encounters.length) {
if (encounters[i].skip){
} else {
if (((encounters[i].has_collision) && (encounters[i].intersects(player.collision_rect)))){
encounters[i].resolvePlayerCollision(player);
};
if (encounters[i].has_main){
encounters[i].main();
};
if (!encounters[i].active){
Util.stopClips(encounters[i].mc);
encounters[i].mc.parent.removeChild(encounters[i].mc);
encounters.splice(i, 1);
i--;
};
};
i++;
};
}
private function loadXML(_arg1:Event):void{
var _local2:XML;
_local2 = new XML(_arg1.target.data);
NitromeGame.last_loaded_path = levelPath();
NitromeGame.last_loaded_xml = _local2;
decodeXML(_local2);
}
public function addSmoke(_arg1:Number, _arg2:Number):void{
var _local3:Smoke;
_local3 = new Smoke(_arg1, _arg2, this);
smoke_angle = (smoke_angle + (70 + (Math.random() * 50)));
smoke_angle = (smoke_angle % 360);
_local3.addVelocity((Trig.cos[smoke_angle] * 10), (Trig.sin[smoke_angle] * 10));
smokes.push(_local3);
}
public function reset():void{
game_paused = true;
clearAll();
init();
}
private function updateFX():void{
i = 0;
while (i < fx.length) {
fx[i].main();
if (((!(fx[i].active)) || (!(Util.onScreen(fx[i].x, fx[i].y, this, fx[i].bitmap.width))))){
fx.splice(i, 1);
i--;
};
i++;
};
}
public function decodeXML(_arg1:XML):void{
var _local2:Array;
var _local3:XML;
var _local4:int;
var _local5:int;
var _local6:*;
var _local7:XML;
var _local8:Boolean;
var _local9:LZW;
var _local10:String;
var _local11:Array;
var _local12:Boolean;
var _local13:String;
var _local14:int;
var _local15:int;
var _local16:int;
var _local17:int;
var _local18:String;
var _local19:Boolean;
_local2 = [];
_local3 = _arg1.level[0];
scroller = new Scroller(this, canvas, tile_holder, scale, parseInt(_local3.@width), parseInt(_local3.@height), WIDTH, HEIGHT);
start_x = parseInt(_local3.@start_x);
start_y = parseInt(_local3.@start_y);
background_type = parseInt(_local3.@background);
scrolling = parseInt(_local3.@scroll);
NitromeGame.timeline.back.gotoAndStop(((background_type < 2)) ? "night" : "dawn");
_local6 = [];
_local8 = (_local3.@compression == "true");
_local9 = new LZW();
i = 0;
for each (_local7 in _arg1.tiles) {
_local10 = "";
if (_local8){
_local10 = _local9.decompress(_local7.@values);
} else {
_local10 = _local7.@values;
};
_local6 = Util.unserialize(_local10);
_local11 = [];
_local4 = 0;
while (_local4 < scroller.height) {
_local11.push([]);
_local5 = 0;
while (_local5 < scroller.width) {
_local11[_local4].push(_local6[(_local5 + (_local4 * scroller.width))]);
_local5++;
};
_local4++;
};
_local12 = false;
if (i == 3){
scroller.addTileLayer(sign_holder);
_local12 = true;
} else {
if (i == 0){
scroller.addTileLayer(background_holder);
_local12 = true;
} else {
if (i == 2){
scroller.addTileLayer(monster_holder);
} else {
if (i == 4){
path_map = _local11;
} else {
if (i == 5){
actor_map = _local11;
} else {
if (i == 6){
event_map = _local11;
};
};
};
};
};
};
if (scroller.layers < 4){
scroller.addLayer(_local11, _local12);
};
i++;
};
for each (_local7 in _arg1.sign) {
_local13 = (_local8) ? _local9.decompress(_local7.@text) : _local7.@text;
_local14 = parseInt(_local7.@n);
_local15 = parseInt(_local7.@layer);
_local16 = parseInt(_local7.@width);
_local17 = parseInt(_local7.@height);
_local18 = _local7.@face;
_local19 = (_local7.@forced == "true");
_local2.push({text:_local13, n:_local14, layer:_local15, width:_local16, height:_local17, face:_local18, forced:_local19});
};
scroller.setSignage(_local2);
start_msg = _arg1.msg[0].@text;
block_map = scroller.map_array_layers[Scroller.BLOCK_LAYER];
stack_map = createStackMap(getBlocksInPlay());
createScentMap();
createEventMap();
initSpawnage();
countCash();
countEnemies();
NitromeGame.bonus.msg_total.value = events.length;
if (scrolling){
scroller.renderScrollLayer(0, Scroller.VERT);
};
scroller.rezForced();
scroller.rezBeginning(start_x, start_y);
frame_count = 1;
initPlayer();
addListeners();
NitromeGame.timeline.loading_clip.gotoAndPlay("fade_out");
NitromeGame.sound_manager.playMusic(SoundManager.GAME);
}
public function alert():void{
if ((((alert_state == ACTIVE)) || ((alert_state == CHAMELEON)))){
return;
};
NitromeGame.sound_manager.playSound("alert");
NitromeGame.timeline.alert_panel.alert_time.text = "DANGER";
NitromeGame.timeline.alert_panel.alert_time.textColor = DANGER_COL;
alert_state = ACTIVE;
j = 0;
while (j < encounters.length) {
encounters[j].alert();
j++;
};
if (player.rope.length > 0){
if (RayCast.cast(player.rope_end, block_map, true) != null){
mouse_pressed = false;
};
};
alert_col = new ColorTransform(1, 1, 1, 1, 0, 0, 0);
alert_count = ALERT_DELAY;
}
public function addDebrisDir(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, ... _args):void{
var _local6:int;
var _local7:DebrisFX;
_local6 = 0;
while (_local6 < _args.length) {
_local7 = new DebrisFX(_arg1, _arg2, _args[_local6], this);
_local7.addVelocity((_arg3 * (Math.random() * 10)), (_arg4 * (Math.random() * 10)));
debris.push(_local7);
_local6++;
};
}
public function hideTextMessage():void{
NitromeGame.timeline.text_panel.gotoAndPlay("hide");
}
public function addDebris(_arg1:Number, _arg2:Number, _arg3:Number, ... _args):void{
var _local5:int;
var _local6:DebrisFX;
_local5 = 0;
while (_local5 < _args.length) {
_local6 = new DebrisFX(_arg1, _arg2, _args[_local5], this);
_local6.addVelocity(((-5 + (Math.random() * 10)) + _arg3), ((-5 + (Math.random() * 5)) - 10));
debris.push(_local6);
_local5++;
};
}
private function createEventMap():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Dot;
var _local5:int;
var _local6:int;
var _local7:Boolean;
var _local8:Array;
var _local9:Object;
var _local10:Array;
var _local11:int;
var _local12:Array;
_local6 = -1;
_local7 = false;
_local8 = [];
_local9 = {};
_local10 = [];
events = [];
_local1 = 0;
while (_local1 < scroller.height) {
_local8[_local1] = [];
_local2 = 0;
while (_local2 < scroller.width) {
_local8[_local1][_local2] = -1;
_local2++;
};
_local1++;
};
_local1 = 0;
while (_local1 < scroller.height) {
_local2 = 0;
while (_local2 < scroller.width) {
if (!(((event_map[_local1][_local2] >= 0)) || ((event_map[_local1][_local2] <= 0)))){
if (event_map[_local1][_local2].search(/I/) > -1){
_local6 = event_map[_local1][_local2].match(/(?<=I\()\d+/)[0];
};
_local5 = parseInt(event_map[_local1][_local2].match(/\d+/)[0]);
_local7 = (event_map[_local1][_local2].search(/F/) > -1);
};
if (isEvent(event_map[_local1][_local2])){
if (event_map[_local1][_local2] == 1){
_local3 = 0;
while (_local3 < scroller.signage.length) {
if (scroller.signage[_local3].n == (_local2 + (_local1 * scroller.width))){
_local9 = {active:false, name:"message", face:scroller.signage[_local3].face, id:events.length, text:scroller.signage[_local3].text, forced:scroller.signage[_local3].forced, text_up:false, seen:false};
events.push(_local9);
_local10 = floodFillEvent(_local9.id, _local8, event_map, _local2, _local1);
_local11 = 0;
while (_local11 < (scroller.width * scroller.height)) {
_local4 = _local10.shift();
_local12 = floodFillEvent(_local9.id, _local8, event_map, _local4.x, _local4.y);
if (_local12.length > 0){
_local10 = _local10.concat(_local12);
};
if (_local10.length == 0){
break;
};
_local11++;
};
break;
};
_local3++;
};
};
};
_local2++;
};
_local1++;
};
event_map = _local8;
}
public function standdown():void{
if (alert_state == INACTIVE){
return;
};
alert_state = INACTIVE;
j = 0;
while (j < encounters.length) {
encounters[j].standdown();
j++;
};
NitromeGame.timeline.alert_panel.alert_time.text = "SAFE";
NitromeGame.timeline.alert_panel.alert_time.textColor = SAFE_COL;
}
private function updateActors():void{
var _local1:int;
i = 0;
while (i < actors.length) {
_local1 = 0;
while (_local1 < encounters.length) {
if (((((((((encounters[_local1].active) && (((actors[i].all_collision) || (encounters[_local1].actor_target))))) && (!((encounters[_local1] is MovingBlock))))) && (encounters[_local1].has_collision))) && (actors[i].intersects(encounters[_local1].collision_rect)))){
if (!(encounters[_local1] is TripWire)){
actors[i].resolveEncounterCollision(encounters[_local1]);
};
if (((((!(boss_level)) && (encounters[_local1].active))) && (!((encounters[_local1] is TripWire))))){
enemy_health_panel.bar.scaleX = (encounters[_local1].health_fraction * encounters[_local1].health);
} else {
if (!boss_level){
enemy_health_panel.bar.scaleX = 0;
} else {
if ((encounters[_local1] is Boss)){
enemy_health_panel.bar.scaleX = (encounters[_local1].health_fraction * encounters[_local1].health);
};
};
};
};
if (actors[i] == spider){
if ((((encounters[_local1] is TripWire)) && (encounters[_local1].killer))){
if ((((encounters[_local1].type == TripWire.TURNING)) || ((encounters[_local1].type == TripWire.FIXED_VARIABLE)))){
if (RayCast.reportIntersectsRect(encounters[_local1].scan, encounters[_local1].cast, actors[i].collision_rect)){
actors[i].kill();
};
} else {
if (encounters[_local1].type == TripWire.FIXED){
if (encounters[_local1].collision_rect.intersects(actors[i].collision_rect)){
actors[i].kill();
};
};
};
};
if ((((((((encounters[_local1] is FlyingGun)) && (encounters[_local1].killer))) && ((encounters[_local1].strength >= 1)))) && (!(Util.proximity(encounters[_local1].x, encounters[_local1].y, actors[i].x, actors[i].y, 50))))){
if (RayCast.reportIntersectsRect(encounters[_local1].scan, encounters[_local1].cast, actors[i].collision_rect)){
actors[i].kill();
};
};
};
_local1++;
};
actors[i].main();
if (!actors[i].active){
Util.stopClips(actors[i].mc);
actors[i].mc.parent.removeChild(actors[i].mc);
actors.splice(i, 1);
i--;
};
i++;
};
if (((!((spider == null))) && (!(spider.active)))){
if (spider_death_count > 0){
spider_death_count--;
} else {
spider = null;
};
};
}
private function isEvent(_arg1:int):Boolean{
if (_arg1 == 1){
return (true);
};
return (false);
}
private function getBlocksInPlay():Array{
var _local1:Array;
var _local2:Array;
var _local3:int;
var _local4:int;
var _local5:Array;
var _local6:int;
var _local7:Array;
var _local8:Array;
_local1 = [];
_local2 = block_map;
_local3 = 0;
while (_local3 < scroller.height) {
_local1[_local3] = [];
_local4 = 0;
while (_local4 < scroller.width) {
_local1[_local3].push(0);
_local4++;
};
_local3++;
};
_local5 = floodFillBlocksInPlay(_local1, _local2, start_x, start_y, scroller.width, scroller.height);
_local6 = 0;
while (_local6 < (scroller.width * scroller.height)) {
_local7 = [];
i = 0;
while (i < _local5.length) {
_local8 = floodFillBlocksInPlay(_local1, _local2, _local5[i].x, _local5[i].y, scroller.width, scroller.height);
if (_local8.length > 0){
_local7 = _local7.concat(_local8);
};
i++;
};
_local5 = _local7;
if (_local5.length == 0){
break;
};
_local6++;
};
return (_local1);
}
public function addEncounter(_arg1:Encounter):void{
encounters.push(_arg1);
}
public function main(_arg1:Event):void{
debug.clear();
debug.lineStyle(2, 0xFF00);
if (!game_paused){
if (player.state == Player.STEALTH){
player.stealthScreenGrab();
};
i = 0;
while (i < stealths.length) {
if (stealths[i].active){
if (Util.onScreen(stealths[i].x, stealths[i].y, this, 100)){
stealths[i].stealthScreenGrab();
};
} else {
stealths.splice(i, 1);
i--;
};
i++;
};
if (player.active){
player.main();
} else {
if (player.level_completed){
finish_count++;
if ((player.finish_item is Lift)){
if (finish_count == LIFT_DELAY){
levelComplete();
};
} else {
if ((player.finish_item is ElectricFinish)){
if (finish_count == LIFT_DELAY){
NitromeGame.timeline.fade_to_black.gotoAndPlay("fade");
NitromeGame.sound_manager.playSound("bosslaugh");
} else {
if (finish_count == ELECTRIC_DELAY){
levelComplete();
};
};
} else {
if (player.finish_item == null){
if (finish_count == 25){
NitromeGame.timeline.fade_to_black.gotoAndPlay("fade");
} else {
if (finish_count == LIFT_DELAY){
levelComplete();
};
};
};
};
};
};
};
if (scrolling){
if (scrolling == Scroller.HORIZ){
scroller.tile_layers[0].y = (scroller.tile_layers[0].y + 5);
if (scroller.tile_layers[0].y > 0){
scroller.tile_layers[0].y = (scroller.tile_layers[0].y - (scroller.height * scale));
};
} else {
scroller.tile_layers[0].y = (scroller.tile_layers[0].y - 5);
if (scroller.tile_layers[0].y < (-(scroller.height) * scale)){
scroller.tile_layers[0].y = (scroller.tile_layers[0].y + (scroller.height * scale));
};
};
};
fx_layer.fillRect(screen_rect, 0xFFFFFF);
fx_layer_holder.x = -(canvas.x);
fx_layer_holder.y = -(canvas.y);
bullet_layer.fillRect(screen_rect, 0xFFFFFF);
bullet_layer_holder.x = -(canvas.x);
bullet_layer_holder.y = -(canvas.y);
scan_holder.graphics.clear();
updateEncounters();
updateActors();
updateBullets();
updateDebris();
updateFX();
updateSmokes();
updateShaker();
updateAlertState();
updateEnemyHealthPanel();
if (current_event != null){
updateEvents();
};
frame_count++;
};
}
public function removeActor(_arg1:Actor):void{
var _local2:int;
_local2 = 0;
while (_local2 < actors.length) {
if (actors[_local2] == _arg1){
actors.splice(_local2, 1);
break;
};
_local2++;
};
}
public function addActor(_arg1:Actor):void{
actors.push(_arg1);
}
private function levelPath():String{
var _local1:String;
var _local2:String;
_local1 = ("" + NitromeGame.selected_level);
if (NitromeGame.selected_level < 10){
_local1 = ("0" + NitromeGame.selected_level);
};
_local2 = NitromeGame.getLevelName((NitromeGame.selected_level + 1), "");
return (_local2);
}
public function gameOver():void{
NitromeGame.timeline.popup_holder.launchPopUp("game_over");
}
private function createScentMap():void{
var _local1:int;
var _local2:int;
scent_map = [];
_local1 = 0;
while (_local1 < scroller.height) {
scent_map[_local1] = [];
_local2 = 0;
while (_local2 < scroller.width) {
if (stack_map[_local1][_local2] > Game.EMPTY){
scent_map[_local1].push(-1);
} else {
scent_map[_local1].push(0);
};
_local2++;
};
_local1++;
};
}
private function updateDebris():void{
i = 0;
while (i < debris.length) {
debris[i].main();
if (((!(debris[i].active)) || (!(Util.onScreen(debris[i].x, debris[i].y, this, 50))))){
debris.splice(i, 1);
i--;
};
i++;
};
}
}
}//package
Section 524
//GameMusic (GameMusic)
package {
import flash.media.*;
public dynamic class GameMusic extends Sound {
}
}//package
Section 525
//GeneratorMC (GeneratorMC)
package {
import flash.display.*;
public dynamic class GeneratorMC extends MovieClip {
public function GeneratorMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 526
//GrenadeCartridgeMC (GrenadeCartridgeMC)
package {
import flash.display.*;
public dynamic class GrenadeCartridgeMC extends MovieClip {
}
}//package
Section 527
//GrenadeMC (GrenadeMC)
package {
import flash.display.*;
public dynamic class GrenadeMC extends MovieClip {
}
}//package
Section 528
//GunBlockMC1 (GunBlockMC1)
package {
import flash.display.*;
public dynamic class GunBlockMC1 extends MovieClip {
public var gun:MovieClip;
}
}//package
Section 529
//GunBlockMC2 (GunBlockMC2)
package {
import flash.display.*;
public dynamic class GunBlockMC2 extends MovieClip {
public var gun:MovieClip;
}
}//package
Section 530
//GunBlockMC3 (GunBlockMC3)
package {
import flash.display.*;
public dynamic class GunBlockMC3 extends MovieClip {
public var gun:MovieClip;
}
}//package
Section 531
//GunBlockMC4 (GunBlockMC4)
package {
import flash.display.*;
public dynamic class GunBlockMC4 extends MovieClip {
public var gun:MovieClip;
}
}//package
Section 532
//GunManMC (GunManMC)
package {
import flash.display.*;
public dynamic class GunManMC extends MovieClip {
public var arm:MovieClip;
public var gun:MovieClip;
public function GunManMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 533
//GunMC (GunMC)
package {
import flash.display.*;
public dynamic class GunMC extends MovieClip {
public var cartridges:MovieClip;
public function GunMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 534
//HackSpiderMC (HackSpiderMC)
package {
import flash.display.*;
public dynamic class HackSpiderMC extends MovieClip {
public var light:MovieClip;
public var body:MovieClip;
}
}//package
Section 535
//HealthFadeMC (HealthFadeMC)
package {
import flash.display.*;
public dynamic class HealthFadeMC extends MovieClip {
public function HealthFadeMC(){
addFrameScript(20, frame21);
}
function frame21(){
parent.removeChild(this);
stop();
}
}
}//package
Section 536
//HealthMC (HealthMC)
package {
import flash.display.*;
public dynamic class HealthMC extends Sprite {
}
}//package
Section 537
//HighScoreBoard (HighScoreBoard)
package {
import com.nitrome.highscore.*;
public dynamic class HighScoreBoard extends HighScoreBoard {
public function HighScoreBoard(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 538
//HitSparkMC (HitSparkMC)
package {
import flash.display.*;
public dynamic class HitSparkMC extends MovieClip {
public function HitSparkMC(){
addFrameScript(0, frame1, 8, frame9);
}
function frame1(){
NitromeGame.sound_manager.playSound("star_hit");
}
function frame9(){
parent.removeChild(this);
stop();
}
}
}//package
Section 539
//holder (holder)
package {
import flash.display.*;
public dynamic class holder extends Sprite {
}
}//package
Section 540
//IntroMC1 (IntroMC1)
package {
import flash.display.*;
public dynamic class IntroMC1 extends MovieClip {
}
}//package
Section 541
//IntroMC2 (IntroMC2)
package {
import flash.display.*;
public dynamic class IntroMC2 extends MovieClip {
}
}//package
Section 542
//IntroMC3 (IntroMC3)
package {
import flash.display.*;
public dynamic class IntroMC3 extends MovieClip {
}
}//package
Section 543
//IntroMC4 (IntroMC4)
package {
import flash.display.*;
public dynamic class IntroMC4 extends MovieClip {
}
}//package
Section 544
//IntroMC5 (IntroMC5)
package {
import flash.display.*;
public dynamic class IntroMC5 extends MovieClip {
}
}//package
Section 545
//IntroMC6 (IntroMC6)
package {
import flash.display.*;
public dynamic class IntroMC6 extends MovieClip {
}
}//package
Section 546
//IntroMC7 (IntroMC7)
package {
import flash.display.*;
public dynamic class IntroMC7 extends MovieClip {
}
}//package
Section 547
//JumpMC (JumpMC)
package {
import flash.display.*;
public dynamic class JumpMC extends MovieClip {
public function JumpMC(){
addFrameScript(11, frame12);
}
function frame12(){
if (parent != null){
parent.removeChild(this);
};
stop();
}
}
}//package
Section 548
//LaserGunMC (LaserGunMC)
package {
import flash.display.*;
public dynamic class LaserGunMC extends MovieClip {
}
}//package
Section 549
//LaserGunSparksMC (LaserGunSparksMC)
package {
import flash.display.*;
public dynamic class LaserGunSparksMC extends MovieClip {
}
}//package
Section 550
//LaserMC1 (LaserMC1)
package {
import flash.display.*;
public dynamic class LaserMC1 extends MovieClip {
}
}//package
Section 551
//LaserMC2 (LaserMC2)
package {
import flash.display.*;
public dynamic class LaserMC2 extends MovieClip {
}
}//package
Section 552
//LaserMC3 (LaserMC3)
package {
import flash.display.*;
public dynamic class LaserMC3 extends MovieClip {
}
}//package
Section 553
//LaserMC4 (LaserMC4)
package {
import flash.display.*;
public dynamic class LaserMC4 extends MovieClip {
}
}//package
Section 554
//LaserMC5 (LaserMC5)
package {
import flash.display.*;
public dynamic class LaserMC5 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 555
//LaserMC6 (LaserMC6)
package {
import flash.display.*;
public dynamic class LaserMC6 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 556
//LaserMC7 (LaserMC7)
package {
import flash.display.*;
public dynamic class LaserMC7 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 557
//LaserMC8 (LaserMC8)
package {
import flash.display.*;
public dynamic class LaserMC8 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 558
//LeftArmMC (LeftArmMC)
package {
import flash.display.*;
public dynamic class LeftArmMC extends MovieClip {
public function LeftArmMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 559
//LetterButton (LetterButton)
package {
import com.nitrome.highscore.*;
public dynamic class LetterButton extends LetterButton {
public function LetterButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 560
//LevelCompleteMC (LevelCompleteMC)
package {
import flash.display.*;
public dynamic class LevelCompleteMC extends MovieClip {
public function LevelCompleteMC(){
addFrameScript(34, frame35, 49, frame50);
}
function frame35(){
NitromeGame.sound_manager.playSound("yatta");
}
function frame50(){
stop();
}
}
}//package
Section 561
//LiftMC (LiftMC)
package {
import flash.display.*;
public dynamic class LiftMC extends MovieClip {
public function LiftMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 562
//MenuMusic (MenuMusic)
package {
import flash.media.*;
public dynamic class MenuMusic extends Sound {
}
}//package
Section 563
//MidMC1 (MidMC1)
package {
import flash.display.*;
public dynamic class MidMC1 extends Sprite {
}
}//package
Section 564
//MidMC2 (MidMC2)
package {
import flash.display.*;
public dynamic class MidMC2 extends Sprite {
}
}//package
Section 565
//MidMC3 (MidMC3)
package {
import flash.display.*;
public dynamic class MidMC3 extends Sprite {
}
}//package
Section 566
//MidMC4 (MidMC4)
package {
import flash.display.*;
public dynamic class MidMC4 extends Sprite {
}
}//package
Section 567
//MidMC5 (MidMC5)
package {
import flash.display.*;
public dynamic class MidMC5 extends Sprite {
}
}//package
Section 568
//MidMC6 (MidMC6)
package {
import flash.display.*;
public dynamic class MidMC6 extends Sprite {
}
}//package
Section 569
//MiniclipIntro (MiniclipIntro)
package {
import flash.display.*;
public dynamic class MiniclipIntro extends MovieClip {
public var mcAnimation:MovieClip;
}
}//package
Section 570
//Morph (Morph)
package {
import com.nitrome.engine_specific.*;
public dynamic class Morph extends Morph {
}
}//package
Section 571
//MovingMC1 (MovingMC1)
package {
import flash.display.*;
public dynamic class MovingMC1 extends Sprite {
}
}//package
Section 572
//MovingMC10 (MovingMC10)
package {
import flash.display.*;
public dynamic class MovingMC10 extends Sprite {
}
}//package
Section 573
//MovingMC11 (MovingMC11)
package {
import flash.display.*;
public dynamic class MovingMC11 extends Sprite {
}
}//package
Section 574
//MovingMC2 (MovingMC2)
package {
import flash.display.*;
public dynamic class MovingMC2 extends Sprite {
}
}//package
Section 575
//MovingMC3 (MovingMC3)
package {
import flash.display.*;
public dynamic class MovingMC3 extends Sprite {
}
}//package
Section 576
//MovingMC4 (MovingMC4)
package {
import flash.display.*;
public dynamic class MovingMC4 extends Sprite {
}
}//package
Section 577
//MovingMC5 (MovingMC5)
package {
import flash.display.*;
public dynamic class MovingMC5 extends Sprite {
}
}//package
Section 578
//MovingMC6 (MovingMC6)
package {
import flash.display.*;
public dynamic class MovingMC6 extends Sprite {
}
}//package
Section 579
//MovingMC7 (MovingMC7)
package {
import flash.display.*;
public dynamic class MovingMC7 extends Sprite {
}
}//package
Section 580
//MovingMC8 (MovingMC8)
package {
import flash.display.*;
public dynamic class MovingMC8 extends Sprite {
}
}//package
Section 581
//MovingMC9 (MovingMC9)
package {
import flash.display.*;
public dynamic class MovingMC9 extends Sprite {
}
}//package
Section 582
//NextArrow (NextArrow)
package {
import com.nitrome.highscore.*;
public dynamic class NextArrow extends ArrowButton {
public function NextArrow(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 583
//NinjaGuardMC (NinjaGuardMC)
package {
import flash.display.*;
public dynamic class NinjaGuardMC extends MovieClip {
public function NinjaGuardMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 584
//NinjaMC (NinjaMC)
package {
import flash.display.*;
public dynamic class NinjaMC extends MovieClip {
public function NinjaMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 585
//NitromeButton (NitromeButton)
package {
import com.nitrome.game.*;
public dynamic class NitromeButton extends NitromeButton {
}
}//package
Section 586
//NitromeGame (NitromeGame)
package {
import com.nitrome.engine.*;
import flash.display.*;
import com.nitrome.game.*;
import com.nitrome.util.*;
import flash.net.*;
public class NitromeGame {
public static const NITROME:uint = 0;
private static const DOMAINS:Array = new Array(".nitrome.com/", ".miniclip.com/", ".candystand.com/", ".armorgames.com/");
public static const ARMOR:uint = 3;
public static const MINICLIP:uint = 1;
private static const ARMOR_URL:Array = new Array("http://www.armorgames.com/", "http://armorgames.com/", "http://cache.armorgames.com/");
private static const MINICLIP_URL:Array = new Array("http://www.miniclip.com/", "http://miniclip.com/");
public static const CANDYSTAND:uint = 2;
private 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/");
private static const CANDYSTAND_URL:Array = new Array("http://www.candystand.com/", "http://candystand.com/");
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 _leading_zero:Boolean = true;
public static var bonus:Object = {};
public static var last_loaded_xml:XML;
private static var _last_level:HiddenInt;
public static var timeline:MovieClip;
private static var _game_id:String;
public static var completed:Boolean;
private static var ar_key:String = "ctdngevfaqki8_lb:psoj90ux127hm/4w5y3rz.6-";
private static var _level_score:HiddenInt;
public static var transition:Transition;
private static var _time_based:Boolean = false;
public static var sound_manager:SoundManager;
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 adj:Number = 1.75;
private static var _total_levels:int;
public static var global:Object = {};
private static var _url:String;
private static var ff:Array = [];
public static var last_loaded_path:String;
private static var _selected_level:HiddenInt;
private static function decryptString(_arg1:String, _arg2:String):String{
var _local3:String;
var _local4:Number;
var _local5:int;
var _local6:*;
var _local7:int;
var _local8:int;
var _local9:Number;
var _local10:int;
var _local11:String;
adj = 1.75;
ff = convertKey(_arg1);
_local3 = "";
_local4 = 0;
_local5 = 0;
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 sfx(_arg1:Boolean):void{
var _local2:String;
var _local3:SharedObject;
_local2 = ("so_" + game_id);
_local3 = SharedObject.getLocal(_local2);
_local3.data.sfxon = _arg1;
_local3.flush();
_local3.close();
}
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();
_last_level = new HiddenInt(getLastUnlocked());
completed = getGameComplete();
}
public static function getLastUnlocked(_arg1:int=1):int{
var _local2:String;
var _local3:SharedObject;
var _local4:Boolean;
var _local5:*;
var _local6:Array;
var _local7:int;
_local2 = (("so_" + game_id) + _arg1);
_local3 = SharedObject.getLocal(_local2);
_local4 = false;
for each (_local5 in _local3.data) {
_local4 = true;
break;
};
_local6 = new Array(total_levels);
if (!_local4){
_local7 = 0;
while (_local7 < _local6.length) {
_local6[_local7] = 0;
_local7++;
};
_local6[0] = 1;
_local3.data.levels_unlocked = _local6;
_local3.flush();
_local3.close();
return (0);
//unresolved jump
};
if (_local3.data.levels_unlocked == undefined){
_local7 = 0;
while (_local7 < _local6.length) {
_local6[_local7] = 0;
_local7++;
};
_local6[0] = 1;
_local3.data.levels_unlocked = _local6;
_local3.flush();
_local3.close();
return (0);
//unresolved jump
};
_local7 = 1;
while (_local7 < _local3.data.levels_unlocked.length) {
if (_local3.data.levels_unlocked[_local7] == 0){
return ((_local7 - 1));
};
_local7++;
};
return ((total_levels - 1));
}
public static function get level_score():int{
return (_level_score.value);
}
private static function checkRange(_arg1:int):int{
var _local2:int;
_arg1 = Math.round(_arg1);
_local2 = ar_1.length;
while (_arg1 >= _local2) {
_arg1 = (_arg1 - _local2);
};
while (_arg1 < 0) {
_arg1 = (_arg1 + _local2);
};
return (_arg1);
}
public static function get music():Boolean{
var _local1:String;
var _local2:SharedObject;
var _local3:Boolean;
var _local4:*;
_local1 = ("so_" + game_id);
_local2 = SharedObject.getLocal(_local1);
_local3 = false;
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 level_score(_arg1:int):void{
_level_score.value = _arg1;
}
public static function getTotalBonus(_arg1:int=1):Object{
var _local2:String;
var _local3:SharedObject;
var _local4:Boolean;
var _local5:*;
var _local6:Object;
var _local7:Array;
var _local8:int;
_local2 = (("so_" + game_id) + String(_arg1));
_local3 = SharedObject.getLocal(_local2);
_local4 = false;
for each (_local5 in _local3.data) {
_local4 = true;
break;
};
if (!_local4){
return ({dodge:0, cash_count:0, cash_total:0, msg_count:0, msg_total:0, enemy_count:0, enemy_total:0});
};
if (_local3.data.level_bonuses == undefined){
return ({dodge:0, cash_count:0, cash_total:0, msg_count:0, msg_total:0, enemy_count:0, enemy_total:0});
};
_local6 = {dodge:0, cash_count:0, cash_total:0, msg_count:0, msg_total:0, enemy_count:0, enemy_total:0};
_local7 = _local3.data.level_bonuses;
_local8 = 0;
while (_local8 < _local7.length) {
if (_local7[_local8] != undefined){
_local6.dodge = (_local6.dodge + (_local7[_local8].dodge) ? 1 : 0);
_local6.cash_count = (_local6.cash_count + _local7[_local8].cash_count);
_local6.cash_total = (_local6.cash_total + _local7[_local8].cash_total);
_local6.msg_count = (_local6.msg_count + _local7[_local8].msg_count);
_local6.msg_total = (_local6.msg_total + _local7[_local8].msg_total);
_local6.enemy_count = (_local6.enemy_count + _local7[_local8].enemy_count);
_local6.enemy_total = (_local6.enemy_total + _local7[_local8].enemy_total);
};
_local8++;
};
return (_local6);
}
public static function isAtURL(... _args):Boolean{
var _local2:Boolean;
var _local3:int;
var _local4:Array;
var _local5:int;
var _local6:String;
var _local7:String;
_local2 = false;
if (_args.length == 0){
_args.push(NITROME);
};
_local3 = 0;
while (_local3 < _args.length) {
if (_args[_local3] == NITROME){
_local4 = NITROME_URL;
} else {
if (_args[_local3] == MINICLIP){
_local4 = MINICLIP_URL;
} else {
if (_args[_local3] == CANDYSTAND){
_local4 = CANDYSTAND_URL;
} else {
if (_args[_local3] == ARMOR){
_local4 = ARMOR_URL;
};
};
};
};
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5];
if (url.substr(0, _local6.length) == _local6){
_local2 = true;
break;
};
_local5++;
};
_local5 = 1;
while (_local5 <= 30) {
_local7 = DOMAINS[_args[_local3]];
if (url.substr(_local5, _local7.length) == _local7){
_local2 = true;
};
_local5++;
};
_local3++;
};
return (_local2);
}
public static function set last_level(_arg1:int):void{
_last_level.value = _arg1;
}
public static function set music(_arg1:Boolean):void{
var _local2:String;
var _local3:SharedObject;
_local2 = ("so_" + game_id);
_local3 = SharedObject.getLocal(_local2);
_local3.data.musicon = _arg1;
_local3.flush();
_local3.close();
}
public static function setLevelUnlocked(_arg1:int, _arg2:int=1):void{
var _local3:String;
var _local4:SharedObject;
var _local5:Boolean;
var _local6:*;
var _local7:Array;
var _local8:int;
_local3 = (("so_" + game_id) + _arg2);
_local4 = SharedObject.getLocal(_local3);
_local5 = false;
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;
_local4.data.levels_unlocked = _local7;
_local4.flush();
_local4.close();
}
public static function get leading_zero():Boolean{
return (_leading_zero);
}
public static function getLevelScore(_arg1:int, _arg2:int=1):int{
var _local3:String;
var _local4:SharedObject;
var _local5:Boolean;
var _local6:*;
_local3 = (("so_" + game_id) + String(_arg2));
_local4 = SharedObject.getLocal(_local3);
_local5 = false;
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 displayPreviousButton(_arg1:String):Boolean{
var _local2:Array;
var _local3:String;
_local2 = _arg1.split("|");
_local3 = _local2[11];
if (_local3 == "1"){
return (true);
};
if (_local3 == "0"){
return (false);
};
return (false);
}
public static function get url():String{
return (_url);
}
public static function setLevelScore(_arg1:int, _arg2:int, _arg3:int=1):void{
var _local4:String;
var _local5:SharedObject;
var _local6:Boolean;
var _local7:*;
_local4 = (("so_" + game_id) + _arg3);
_local5 = SharedObject.getLocal(_local4);
_local6 = false;
for each (_local7 in _local5.data) {
_local6 = true;
break;
};
if (!_local6){
_local5.data.level_scores = [];
_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 getHighScoreLine(_arg1:String, _arg2:int):Object{
var _local3:Array;
var _local4:String;
var _local5:Array;
var _local6:Object;
_local3 = _arg1.split("|");
_local4 = _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 = {};
_local6.username = _local5[2];
_local6.score = _local5[1];
_local6.rank = _local5[0];
return (_local6);
}
public static function displayNextButton(_arg1:String):Boolean{
var _local2:Array;
var _local3:String;
_local2 = _arg1.split("|");
_local3 = _local2[10];
if (_local3 == "1"){
return (true);
};
if (_local3 == "0"){
return (false);
};
return (false);
}
public static function getLastSavedScore(_arg1:int=1):int{
var _local2:String;
var _local3:SharedObject;
var _local4:Boolean;
var _local5:*;
_local2 = (("so_" + game_id) + String(_arg1));
_local3 = SharedObject.getLocal(_local2);
_local4 = false;
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 getLevelName(_arg1:Number, _arg2:String=".xml"):String{
var _local3:MD5;
var _local4:String;
var _local5:String;
_local3 = new MD5();
_local4 = "";
if (leading_zero){
if (_arg1 < 10){
_local4 = "0";
};
};
_local5 = _local3.hash(String(((level_id + _local4) + _arg1)));
return ((_local5 + _arg2));
}
public static function setLastSavedScore(_arg1:int, _arg2:int=1):void{
var _local3:String;
var _local4:SharedObject;
_local3 = (("so_" + game_id) + String(_arg2));
_local4 = SharedObject.getLocal(_local3);
_local4.data.last_saved_score = _arg1;
_local4.flush();
_local4.close();
}
public static function lockAllLevels(_arg1:int=1):void{
var _local2:String;
var _local3:SharedObject;
var _local4:Array;
var _local5:int;
_local2 = (("so_" + game_id) + _arg1);
_local3 = SharedObject.getLocal(_local2);
_local4 = 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 get game_id():String{
return (_game_id);
}
public static function set leading_zero(_arg1:Boolean):void{
_leading_zero = _arg1;
}
public static function unlockAllLevels(_arg1:int=1):void{
var _local2:String;
var _local3:SharedObject;
var _local4:Array;
var _local5:int;
_local2 = (("so_" + game_id) + _arg1);
_local3 = SharedObject.getLocal(_local2);
_local4 = 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 get sfx():Boolean{
var _local1:String;
var _local2:SharedObject;
var _local3:Boolean;
var _local4:*;
_local1 = ("so_" + game_id);
_local2 = SharedObject.getLocal(_local1);
_local3 = false;
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);
}
public static function get last_level():int{
return (_last_level.value);
}
public static function getSwfPath():String{
var _local1:String;
var _local2:int;
_local1 = url;
_local2 = _local1.length;
while (_local2 >= 0) {
if (_local1.charAt(_local2) == "/"){
_local1 = _local1.slice(0, (_local2 + 1));
break;
};
_local2--;
};
return (_local1);
}
public static function getScoreData(_arg1:int, _arg2:String):String{
var _local3:String;
var _local4:String;
_local3 = ((((String(_arg1) + "_") + game_id) + "_") + _arg2.toLowerCase());
trace(("encrypting: " + _local3));
_local4 = encryptString(ar_key, _local3);
trace(("encrypted: " + _local4));
trace(("decrypted: " + decryptString(ar_key, _local4)));
return (_local4);
}
private static function convertKey(_arg1:String):Array{
var _local2:Array;
var _local3:int;
var _local4:int;
var _local5:String;
var _local6:int;
var _local7:int;
_local2 = [];
_local2.push(_arg1.length);
_local3 = 0;
_local4 = 0;
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);
}
public static function set time_based(_arg1:Boolean):void{
_time_based = _arg1;
}
public static function get level_id():String{
return (_level_id);
}
public static function getBonusScore(_arg1:int=1):int{
var _local2:String;
var _local3:SharedObject;
var _local4:Boolean;
var _local5:*;
var _local6:int;
var _local7:int;
_local2 = (("so_" + game_id) + String(_arg1));
_local3 = SharedObject.getLocal(_local2);
_local4 = false;
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 get time_based():Boolean{
return (_time_based);
}
public static function getGameComplete(_arg1:int=1):Boolean{
var _local2:String;
var _local3:SharedObject;
var _local4:Boolean;
var _local5:*;
_local2 = (("so_" + game_id) + String(_arg1));
_local3 = SharedObject.getLocal(_local2);
_local4 = false;
for each (_local5 in _local3.data) {
_local4 = true;
break;
};
if (!_local4){
return (false);
};
return (Boolean(_local3.data.completed));
}
public static function get total_levels():int{
return (_total_levels);
}
public static function set selected_level(_arg1:int):void{
_selected_level.value = _arg1;
if (_arg1 > _last_level.value){
_last_level.value = _arg1;
};
}
public static function getLevelUnlocked(_arg1:int, _arg2:int=1):Boolean{
var _local3:String;
var _local4:SharedObject;
var _local5:Boolean;
var _local6:*;
var _local7:Array;
var _local8:int;
_local3 = (("so_" + game_id) + _arg2);
_local4 = SharedObject.getLocal(_local3);
_local5 = false;
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 == 0){
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 == 0){
return (true);
};
return (false);
} else {
if (_local4.data.levels_unlocked[_arg1] == 1){
return (true);
};
if (_local4.data.levels_unlocked[_arg1] == 0){
return (false);
};
};
};
return (false);
}
public static function setGameComplete(_arg1:int=1):void{
var _local2:String;
var _local3:SharedObject;
var _local4:Boolean;
var _local5:*;
_local2 = (("so_" + game_id) + _arg1);
_local3 = SharedObject.getLocal(_local2);
_local4 = false;
for each (_local5 in _local3.data) {
_local4 = true;
break;
};
if (!_local4){
_local3.data.completed = true;
} else {
_local3.data.completed = true;
};
_local3.flush();
_local3.close();
}
private static function encryptString(_arg1:String, _arg2:String):String{
var _local3:String;
var _local4:Number;
var _local5:int;
var _local6:String;
var _local7:int;
var _local8:int;
var _local9:Number;
var _local10:int;
var _local11:String;
adj = 1.75;
ff = convertKey(_arg1);
_local3 = "";
_local4 = 0;
_local5 = 0;
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);
}
public static function get selected_level():int{
return (_selected_level.value);
}
public static function getLevelBonus(_arg1:int, _arg2:int=1):Object{
var _local3:String;
var _local4:SharedObject;
var _local5:Boolean;
var _local6:*;
_local3 = (("so_" + game_id) + String(_arg2));
_local4 = SharedObject.getLocal(_local3);
_local5 = false;
for each (_local6 in _local4.data) {
_local5 = true;
break;
};
if (!_local5){
return ({dodge:false, cash_count:0, cash_total:0, msg_count:0, msg_total:0, enemy_count:0, enemy_total:0});
};
if (_local4.data.level_bonuses == undefined){
return ({});
};
if (_local4.data.level_bonuses[_arg1] == undefined){
return ({});
};
return (_local4.data.level_bonuses[_arg1]);
}
private static function applyFudgeFactor():Number{
var _local1:Number;
_local1 = Number(ff.shift());
_local1 = (_local1 + adj);
ff.push(_local1);
return (_local1);
}
public static function setLevelBonus(_arg1:Object, _arg2:int, _arg3:int=1):void{
var _local4:String;
var _local5:SharedObject;
var _local6:Boolean;
var _local7:*;
_local4 = (("so_" + game_id) + _arg3);
_local5 = SharedObject.getLocal(_local4);
_local6 = false;
for each (_local7 in _local5.data) {
_local6 = true;
break;
};
if (!_local6){
_local5.data.level_bonuses = [];
_local5.data.level_bonuses[_arg2] = _arg1;
} else {
if (_local5.data.level_bonuses == undefined){
_local5.data.level_bonuses = [];
_local5.data.level_bonuses[_arg2] = _arg1;
} else {
_local5.data.level_bonuses[_arg2] = _arg1;
};
};
_local5.flush();
_local5.close();
}
}
}//package
Section 587
//OuchFinishMC (OuchFinishMC)
package {
import flash.display.*;
public dynamic class OuchFinishMC extends MovieClip {
}
}//package
Section 588
//PlayerMC (PlayerMC)
package {
import flash.display.*;
public dynamic class PlayerMC extends MovieClip {
public var body:MovieClip;
public function PlayerMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 589
//PrevArrow (PrevArrow)
package {
import com.nitrome.highscore.*;
public dynamic class PrevArrow extends ArrowButton {
public function PrevArrow(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 590
//RightArmMC (RightArmMC)
package {
import flash.display.*;
public dynamic class RightArmMC extends MovieClip {
public function RightArmMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 591
//RotoGunMC (RotoGunMC)
package {
import flash.display.*;
public dynamic class RotoGunMC extends MovieClip {
public var gun:MovieClip;
}
}//package
Section 592
//ScannerMC1 (ScannerMC1)
package {
import flash.display.*;
public dynamic class ScannerMC1 extends MovieClip {
}
}//package
Section 593
//ScannerMC2 (ScannerMC2)
package {
import flash.display.*;
public dynamic class ScannerMC2 extends MovieClip {
}
}//package
Section 594
//ScannerMC3 (ScannerMC3)
package {
import flash.display.*;
public dynamic class ScannerMC3 extends MovieClip {
}
}//package
Section 595
//ScannerMC4 (ScannerMC4)
package {
import flash.display.*;
public dynamic class ScannerMC4 extends MovieClip {
}
}//package
Section 596
//ScannerMC5 (ScannerMC5)
package {
import flash.display.*;
public dynamic class ScannerMC5 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 597
//ScannerMC6 (ScannerMC6)
package {
import flash.display.*;
public dynamic class ScannerMC6 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 598
//ScannerMC7 (ScannerMC7)
package {
import flash.display.*;
public dynamic class ScannerMC7 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 599
//ScannerMC8 (ScannerMC8)
package {
import flash.display.*;
public dynamic class ScannerMC8 extends MovieClip {
public var scanner:MovieClip;
}
}//package
Section 600
//ScientistMC (ScientistMC)
package {
import flash.display.*;
public dynamic class ScientistMC extends MovieClip {
public var stun:MovieClip;
public function ScientistMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 601
//ScoreLine (ScoreLine)
package {
import com.nitrome.highscore.*;
public dynamic class ScoreLine extends HighScoreLine {
}
}//package
Section 602
//ScoreSubmitPanel (ScoreSubmitPanel)
package {
import com.nitrome.highscore.*;
public dynamic class ScoreSubmitPanel extends ScoreSubmitPanel {
public function ScoreSubmitPanel(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 603
//SightMC (SightMC)
package {
import flash.display.*;
public dynamic class SightMC extends MovieClip {
public function SightMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 604
//SmallShieldMC (SmallShieldMC)
package {
import flash.display.*;
public dynamic class SmallShieldMC extends Sprite {
}
}//package
Section 605
//SmokeHitMC (SmokeHitMC)
package {
import flash.display.*;
public dynamic class SmokeHitMC extends MovieClip {
}
}//package
Section 606
//SniperMC (SniperMC)
package {
import flash.display.*;
public dynamic class SniperMC extends MovieClip {
}
}//package
Section 607
//SniperShotMC (SniperShotMC)
package {
import flash.display.*;
public dynamic class SniperShotMC extends MovieClip {
}
}//package
Section 608
//SpawnBackMC1 (SpawnBackMC1)
package {
import flash.display.*;
public dynamic class SpawnBackMC1 extends Sprite {
}
}//package
Section 609
//SpawnBackMC2 (SpawnBackMC2)
package {
import flash.display.*;
public dynamic class SpawnBackMC2 extends Sprite {
}
}//package
Section 610
//SpawnMC1 (SpawnMC1)
package {
import flash.display.*;
public dynamic class SpawnMC1 extends MovieClip {
public function SpawnMC1(){
addFrameScript(0, frame1, 19, frame20);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
}
}//package
Section 611
//SpawnMC2 (SpawnMC2)
package {
import flash.display.*;
public dynamic class SpawnMC2 extends MovieClip {
public function SpawnMC2(){
addFrameScript(0, frame1, 19, frame20);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
}
}//package
Section 612
//SpiderMC (SpiderMC)
package {
import flash.display.*;
public dynamic class SpiderMC extends MovieClip {
public var light:MovieClip;
public var body:MovieClip;
}
}//package
Section 613
//StealthOutlineMC (StealthOutlineMC)
package {
import flash.display.*;
public dynamic class StealthOutlineMC extends Sprite {
}
}//package
Section 614
//StoryFont (StoryFont)
package {
import flash.text.*;
public dynamic class StoryFont extends Font {
}
}//package
Section 615
//SubMC (SubMC)
package {
import flash.display.*;
public dynamic class SubMC extends Sprite {
}
}//package
Section 616
//SubmitButton (SubmitButton)
package {
import com.nitrome.highscore.*;
public dynamic class SubmitButton extends SubmitButton {
public function SubmitButton(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 617
//WallSlideLeftMC (WallSlideLeftMC)
package {
import flash.display.*;
public dynamic class WallSlideLeftMC extends MovieClip {
}
}//package
Section 618
//WallSlideRightMC (WallSlideRightMC)
package {
import flash.display.*;
public dynamic class WallSlideRightMC extends MovieClip {
}
}//package
Section 619
//WaterLineMC (WaterLineMC)
package {
import flash.display.*;
public dynamic class WaterLineMC extends MovieClip {
public var bubbleHolder:MovieClip;
}
}//package
Section 620
//WhiteMC1 (WhiteMC1)
package {
import flash.display.*;
public dynamic class WhiteMC1 extends Sprite {
}
}//package
Section 621
//WhiteMC10 (WhiteMC10)
package {
import flash.display.*;
public dynamic class WhiteMC10 extends Sprite {
}
}//package
Section 622
//WhiteMC11 (WhiteMC11)
package {
import flash.display.*;
public dynamic class WhiteMC11 extends Sprite {
}
}//package
Section 623
//WhiteMC12 (WhiteMC12)
package {
import flash.display.*;
public dynamic class WhiteMC12 extends Sprite {
}
}//package
Section 624
//WhiteMC13 (WhiteMC13)
package {
import flash.display.*;
public dynamic class WhiteMC13 extends Sprite {
}
}//package
Section 625
//WhiteMC14 (WhiteMC14)
package {
import flash.display.*;
public dynamic class WhiteMC14 extends Sprite {
}
}//package
Section 626
//WhiteMC15 (WhiteMC15)
package {
import flash.display.*;
public dynamic class WhiteMC15 extends Sprite {
}
}//package
Section 627
//WhiteMC16 (WhiteMC16)
package {
import flash.display.*;
public dynamic class WhiteMC16 extends Sprite {
}
}//package
Section 628
//WhiteMC17 (WhiteMC17)
package {
import flash.display.*;
public dynamic class WhiteMC17 extends Sprite {
}
}//package
Section 629
//WhiteMC18 (WhiteMC18)
package {
import flash.display.*;
public dynamic class WhiteMC18 extends Sprite {
}
}//package
Section 630
//WhiteMC19 (WhiteMC19)
package {
import flash.display.*;
public dynamic class WhiteMC19 extends Sprite {
}
}//package
Section 631
//WhiteMC2 (WhiteMC2)
package {
import flash.display.*;
public dynamic class WhiteMC2 extends Sprite {
}
}//package
Section 632
//WhiteMC20 (WhiteMC20)
package {
import flash.display.*;
public dynamic class WhiteMC20 extends Sprite {
}
}//package
Section 633
//WhiteMC21 (WhiteMC21)
package {
import flash.display.*;
public dynamic class WhiteMC21 extends Sprite {
}
}//package
Section 634
//WhiteMC22 (WhiteMC22)
package {
import flash.display.*;
public dynamic class WhiteMC22 extends Sprite {
}
}//package
Section 635
//WhiteMC23 (WhiteMC23)
package {
import flash.display.*;
public dynamic class WhiteMC23 extends Sprite {
}
}//package
Section 636
//WhiteMC24 (WhiteMC24)
package {
import flash.display.*;
public dynamic class WhiteMC24 extends Sprite {
}
}//package
Section 637
//WhiteMC25 (WhiteMC25)
package {
import flash.display.*;
public dynamic class WhiteMC25 extends Sprite {
}
}//package
Section 638
//WhiteMC26 (WhiteMC26)
package {
import flash.display.*;
public dynamic class WhiteMC26 extends Sprite {
}
}//package
Section 639
//WhiteMC27 (WhiteMC27)
package {
import flash.display.*;
public dynamic class WhiteMC27 extends Sprite {
}
}//package
Section 640
//WhiteMC28 (WhiteMC28)
package {
import flash.display.*;
public dynamic class WhiteMC28 extends Sprite {
}
}//package
Section 641
//WhiteMC29 (WhiteMC29)
package {
import flash.display.*;
public dynamic class WhiteMC29 extends Sprite {
}
}//package
Section 642
//WhiteMC3 (WhiteMC3)
package {
import flash.display.*;
public dynamic class WhiteMC3 extends Sprite {
}
}//package
Section 643
//WhiteMC30 (WhiteMC30)
package {
import flash.display.*;
public dynamic class WhiteMC30 extends Sprite {
}
}//package
Section 644
//WhiteMC31 (WhiteMC31)
package {
import flash.display.*;
public dynamic class WhiteMC31 extends Sprite {
}
}//package
Section 645
//WhiteMC32 (WhiteMC32)
package {
import flash.display.*;
public dynamic class WhiteMC32 extends Sprite {
}
}//package
Section 646
//WhiteMC33 (WhiteMC33)
package {
import flash.display.*;
public dynamic class WhiteMC33 extends Sprite {
}
}//package
Section 647
//WhiteMC4 (WhiteMC4)
package {
import flash.display.*;
public dynamic class WhiteMC4 extends Sprite {
}
}//package
Section 648
//WhiteMC5 (WhiteMC5)
package {
import flash.display.*;
public dynamic class WhiteMC5 extends Sprite {
}
}//package
Section 649
//WhiteMC6 (WhiteMC6)
package {
import flash.display.*;
public dynamic class WhiteMC6 extends Sprite {
}
}//package
Section 650
//WhiteMC7 (WhiteMC7)
package {
import flash.display.*;
public dynamic class WhiteMC7 extends Sprite {
}
}//package
Section 651
//WhiteMC8 (WhiteMC8)
package {
import flash.display.*;
public dynamic class WhiteMC8 extends Sprite {
}
}//package
Section 652
//WhiteMC9 (WhiteMC9)
package {
import flash.display.*;
public dynamic class WhiteMC9 extends Sprite {
}
}//package
Section 653
//WireMC1 (WireMC1)
package {
import flash.display.*;
public dynamic class WireMC1 extends Sprite {
}
}//package
Section 654
//WireMC10 (WireMC10)
package {
import flash.display.*;
public dynamic class WireMC10 extends Sprite {
}
}//package
Section 655
//WireMC11 (WireMC11)
package {
import flash.display.*;
public dynamic class WireMC11 extends Sprite {
}
}//package
Section 656
//WireMC12 (WireMC12)
package {
import flash.display.*;
public dynamic class WireMC12 extends Sprite {
}
}//package
Section 657
//WireMC2 (WireMC2)
package {
import flash.display.*;
public dynamic class WireMC2 extends Sprite {
}
}//package
Section 658
//WireMC3 (WireMC3)
package {
import flash.display.*;
public dynamic class WireMC3 extends Sprite {
}
}//package
Section 659
//WireMC4 (WireMC4)
package {
import flash.display.*;
public dynamic class WireMC4 extends Sprite {
}
}//package
Section 660
//WireMC5 (WireMC5)
package {
import flash.display.*;
public dynamic class WireMC5 extends Sprite {
}
}//package
Section 661
//WireMC6 (WireMC6)
package {
import flash.display.*;
public dynamic class WireMC6 extends Sprite {
}
}//package
Section 662
//WireMC7 (WireMC7)
package {
import flash.display.*;
public dynamic class WireMC7 extends Sprite {
}
}//package
Section 663
//WireMC8 (WireMC8)
package {
import flash.display.*;
public dynamic class WireMC8 extends Sprite {
}
}//package
Section 664
//WireMC9 (WireMC9)
package {
import flash.display.*;
public dynamic class WireMC9 extends Sprite {
}
}//package