Frame 2
function clearMenus() {
var _local2 = new ContextMenu();
_local2.hideBuiltInItems();
var _local3 = new ContextMenuItem("Heli Attack 3 - Produced by squarecircleco.", function () {
});
_local2.customItems.push(_local3);
_root.menu = _local2;
}
function checkVer() {
var _local1 = getVersion().split(" ");
var _local2 = _local1[1].split(",");
return(new Number(_local2[0]));
}
Stage.scaleMode = "noScale";
clearMenus();
System.security.allowDomain("shockwave.com");
System.security.allowDomain("www.shockwave.com");
gameValid = true;
if (this._url.indexOf("file://") != 0) {
localGame = false;
} else {
localGame = true;
}
tabEnabled = false;
_quality = "best";
Mouse.addListener(this);
Key.addListener(this);
endGame();
spw = 448;
sph = 320;
onEnterFrame = function () {
if (isLoaded) {
if (checkVer() >= 7) {
gotoAndStop ("init");
} else {
gotoAndStop ("version");
}
delete onEnterFrame;
}
};
onEnterFrame();
Instance of Symbol 12 MovieClip in Frame 2
//component parameters
onClipEvent (construct) {
variableLocation = "isLoaded";
drawBackground = false;
backgroundStay = false;
}
Frame 3
gotoAndStop(_currentframe - 1);
Frame 5
delete onEnterFrame;
Instance of Symbol 17 MovieClip in Frame 5
on (release) {
getURL ("http://www.macromedia.com/go/getflashplayer/");
}
Frame 10
Frame 15
function copyArray(arr, w, h) {
var _local4 = new Array();
var _local2 = 0;
while (_local2 < arr.length) {
_local4[_local2] = new Array();
var _local1 = 0;
while (_local1 < arr[_local2].length) {
_local4[_local2][_local1] = arr[_local2][_local1];
_local1++;
}
_local2++;
}
return(_local4);
}
function blankArray(w, h, l) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < h) {
_local3[_local2] = new Array();
var _local1 = 0;
while (_local1 < w) {
_local3[_local2][_local1] = 0;
_local1++;
}
_local2++;
}
return(_local3);
}
function drawMap(clip, display, collision, clipname, depth, tileset, realMap) {
var _local4 = clip.createEmptyMovieClip(clipname, depth);
var _local5 = display[0].length;
var _local8 = display.length;
if (realMap) {
w = (_local4.w = _local5);
h = (_local4.h = _local8);
} else {
_local4.w = _local5;
_local4.h = _local8;
}
_local4.map = display;
_local4.col = collision;
var _local2 = 0;
while ((_local2 < (sth + 1)) && (_local2 < _local8)) {
var _local1 = 0;
while ((_local1 < (stw + 1)) && (_local1 < _local5)) {
var _local3 = _local4.attachMovie(tileset, (("t_" + _local2) + "_") + _local1, ((_local2 * _local5) + _local1) + 1);
_local3._y = (_local2 * th) - 1;
_local3._x = (_local1 * tw) - 1;
_local3.gotoAndStop(display[_local2][_local1] + 1);
_local1++;
}
_local2++;
}
_local4.x = (_local4.y = 0);
_local4.ox = (_local4.oy = 0);
_local4.pw = _local4.w * tw;
_local4.ph = _local4.h * th;
return(_local4);
}
function scroll(clip) {
clip.x = int((-clip._x) / tw);
while (clip.x != clip.ox) {
var _local5 = clip.y;
var _local7 = (stw + 1) * tw;
if (clip.ox < clip.x) {
var _local11 = clip.ox;
var _local9 = (_local11 + stw) + 1;
var _local2 = _local5;
while (_local2 < ((_local5 + sth) + 1)) {
var _local4 = clip[(("t_" + _local2) + "_") + _local11];
_local4._x = _local4._x + _local7;
_local4.gotoAndStop(clip.map[_local2][_local9] + 1);
_local4._name = (("t_" + _local2) + "_") + _local9;
_local2++;
}
clip.ox++;
}
if (clip.ox > clip.x) {
var _local11 = clip.ox + stw;
var _local9 = (_local11 - stw) - 1;
var _local2 = _local5;
while (_local2 < ((_local5 + sth) + 1)) {
var _local4 = clip[(("t_" + _local2) + "_") + _local11];
_local4._x = _local4._x - _local7;
_local4.gotoAndStop(clip.map[_local2][_local9] + 1);
_local4._name = (("t_" + _local2) + "_") + _local9;
_local2++;
}
clip.ox--;
}
}
clip.y = int((-clip._y) / th);
while (clip.y != clip.oy) {
var _local6 = clip.ox;
var _local7 = (sth + 1) * th;
if (clip.oy < clip.y) {
var _local10 = clip.oy;
var _local8 = (_local10 + sth) + 1;
var _local3 = _local6;
while (_local3 < ((_local6 + stw) + 1)) {
var _local4 = clip[(("t_" + _local10) + "_") + _local3];
_local4._y = _local4._y + _local7;
_local4.gotoAndStop(clip.map[_local8][_local3] + 1);
_local4._name = (("t_" + _local8) + "_") + _local3;
_local3++;
}
clip.oy++;
}
if (clip.oy > clip.y) {
var _local10 = clip.oy + sth;
var _local8 = (_local10 - sth) - 1;
var _local3 = _local6;
while (_local3 < ((_local6 + stw) + 1)) {
var _local4 = clip[(("t_" + _local10) + "_") + _local3];
_local4._y = _local4._y - _local7;
_local4.gotoAndStop(clip.map[_local8][_local3] + 1);
_local4._name = (("t_" + _local8) + "_") + _local3;
_local3++;
}
clip.oy--;
}
}
}
function playerCam(timeStep, move, perc) {
if ((ct == undefined) || (ct == null)) {
ct = dct;
}
var _local2 = (-(ct._x + ct.w2)) + (spw / 2);
var _local1 = ((-((ct._y + ct.h) - 25)) + (sph / 2)) + (ct.h * 1.3);
if (ct.xcamdif != undefined) {
_local2 = _local2 + ct.xcamdif;
}
if (_local2 < ((-clr) + (stw * tw))) {
_local2 = (-clr) + (stw * tw);
}
if (_local2 > (-cll)) {
_local2 = -cll;
}
if (_local1 > 0) {
_local1 = 0;
}
if (ct.ycamdif != undefined) {
_local1 = _local1 + ct.ycamdif;
}
if (_local1 < ((-(h - sth)) * th)) {
_local1 = (-(h - sth)) * th;
}
camshake = Math.max(baseshake, camshake);
if (camshake) {
var _local3 = Math.min(camshake, 50);
if (move) {
camshake--;
csx = ((-_local3) + random(_local3 * 2)) * timeStep;
csy = ((-_local3) + random(_local3 * 2)) * timeStep;
}
_local2 = _local2 + csx;
_local1 = _local1 + csy;
}
if (((_local2 != fg._x) || (perc == 1)) || (levelScroll)) {
var _local5 = (_local2 - fg._x) / perc;
fg._x = fg._x + _local5;
if (stats.drawbg) {
bg._x = bg._x + (_local5 / 2);
bg._x = bg._x - levelScroll;
while (bg._x > 0) {
bg._x = bg._x - ((bg.w / 2) * tw);
}
while (bg._x < ((-(bg.w / 2)) * tw)) {
bg._x = bg._x + ((bg.w / 2) * tw);
}
}
}
if ((_local1 != fg._y) || (perc == 1)) {
var _local8 = (_local1 - fg._y) / perc;
fg._y = fg._y + _local8;
if (stats.drawbg) {
var _local6 = (-(h - sth)) * th;
var _local7 = fg._y - _local6;
bg._y = Math.min(0, ((-(bg.h - sth)) * th) + (_local7 / 2));
}
}
return(1);
}
function drawEntities(clip, ents) {
playerArr = new Array();
enemyArr = new Array();
bulletArr = new Array();
particleArr = new Array();
entityArr = new Array();
powerups = new Array();
timeSink = false;
camshake = 0;
baseshake = 0;
ct = (dct = null);
etw = stw + 1;
eth = sth + 1;
ew = Math.ceil(w / etw);
eh = Math.ceil(h / eth);
entities = new Array();
var _local5 = 0;
while (_local5 < eh) {
var _local6 = 0;
while (_local6 < ew) {
entities[(_local5 * ew) + _local6] = new Array();
_local6++;
}
_local5++;
}
var _local2 = new Array();
_local2 = ents.split("|");
var _local1 = 0;
while (_local1 < _local2.length) {
_local2[_local1] = _local2[_local1].split(",");
var _local8 = [];
var _local3 = 4;
while (_local3 < _local2[_local1].length) {
_local8.push(_local2[_local1][_local3]);
_local3++;
}
var _local4 = {t:int(_local2[_local1][0]), x:int(_local2[_local1][1]), y:int(_local2[_local1][2]), p:int(_local2[_local1][3]), a:_local8};
var _local6 = int(_local4.x / etw);
_local5 = int(_local4.y / eth);
if (_local4.t & PLAYERSTART) {
spawnEntity(_local4);
} else {
entities[(_local5 * ew) + _local6].push(_local4);
}
_local1++;
}
}
function spawnEntity(o) {
if (o.t & PLAYERSTART) {
player = overgame.attachMovie("player", "player", overgame.getNextHighestDepth());
player.x = o.x;
player.y = o.y;
airdrop = false;
if (o.p & TRAINING) {
setupPlayer(player, true);
} else {
setupPlayer(player, false);
if (o.p & AIRDROP) {
airdrop = true;
}
}
playerArr.push(player);
cam = playerCam;
player.hit._visible = false;
ct = (dct = player);
cll = 0;
clr = w * tw;
cam(1, 1, 1);
return(1);
}
if (o.t & ENEMY) {
return(addEnemy(o));
}
if (o.t & HELISPAWNER) {
return(addSpawner(o));
}
if (o.t & TARGETSPAWNER) {
return(addTargetSpawner(o));
}
if (o.t & TARGET) {
return(addTarget(o));
}
if (o.t & HELPER) {
return(addHelper(o));
}
if (o.t & BUTTON) {
return(addButton(o));
}
if (o.t & LEVELFLAG) {
return(addLevelFlag(o));
}
if (o.t & ENEMYSPAWNER) {
return(addEnemySpawner(o));
}
if (o.t & PICKUP) {
return(addPickup(o));
}
return(0);
}
function entityFrame() {
var _local6 = fg.x;
var _local5 = fg.y;
var _local8 = fg.x + stw;
var _local7 = fg.y + sth;
var _local9 = int(_local6 / etw);
var _local11 = int(_local5 / eth);
var _local10 = int(_local8 / etw);
var _local12 = int(_local7 / eth);
var _local4 = _local11;
while (_local4 <= _local12) {
var _local3 = _local9;
while (_local3 <= _local10) {
var _local2 = (_local4 * ew) + _local3;
for (z in entities[_local2]) {
var _local1 = entities[_local2][z];
if ((((_local1.x >= (_local6 - 2)) && (_local1.x <= (_local8 + 2))) && (_local1.y >= (_local5 - 2))) && (_local1.y <= (_local7 + 2))) {
if (spawnEntity(_local1)) {
entities[_local2].splice(z, 1);
}
}
}
_local3++;
}
_local4++;
}
}
function spawnerFrame() {
if (this.current._x == undefined) {
if (this.num != -1) {
this.num--;
if (this.num < 0) {
cll = 0;
clr = w * tw;
heliSpawner = false;
removeArrayNoClip(this, entityArr);
if (!gameOver) {
nextLevel();
}
return(undefined);
}
}
var _local2;
if ((random(100) > 50) || (this.destroyed == 0)) {
_local2 = {t:ENEMY, x:(fg.x + stw) + 2, y:fg.y + 2, p:this.types};
} else {
_local2 = {t:ENEMY, x:fg.x - 4, y:fg.y + 2, p:this.types};
}
if (this.destroyed == 0) {
if (this.types >= ENEMY_HELI) {
this.nextHealth = 14;
this.dropItemNum = 2;
} else {
this.nextHealth = 30;
this.dropItemNum = 3;
}
}
heliSpawnerKilled = this.destroyed;
this.destroyed++;
if (this.num != 0) {
if ((this.destroyed % this.dropItemNum) == 0) {
_local2.p = _local2.p | ENEMY_DROPITEM;
if (this.destroyed == this.nextHealth) {
this.nextHealth = this.nextHealth * 2;
_local2.a = [-1];
} else {
_local2.a = [-2];
}
}
}
this.current = spawnEntity(_local2);
}
}
function addSpawner(o) {
var _local1 = o.x * tw;
var _local5 = (_local1 + (o.p * tw)) + (stw * tw);
var _local3 = int(o.a[0]);
var _local8 = int(o.a[1]);
if ((-fg._x) >= _local1) {
if (o.p != -1) {
cll = _local1;
clr = _local5;
}
var _local4 = {frame:spawnerFrame, num:_local3, types:_local8, destroyed:0};
entityArr.push(_local4);
heliSpawner = true;
heliSpawnerTotal = _local3;
heliSpawnerKilled = 0;
return(1);
}
return(0);
}
function addButton(o) {
var d = game.getNextHighestDepth();
var t = game.attachMovie("button", "button" + d, d);
if (o.p & BUTTON_HIDDEN) {
t._visible = false;
}
if (o.p & BUTTON_SHOOT) {
var h = t.createEmptyMovieClip("hit", 0);
with (h) {
lineStyle(0, 0, 0);
beginFill(0, 0);
moveTo(0, 0);
lineTo(32, 0);
lineTo(32, 32);
lineTo(0, 32);
lineTo(0, 0);
endFill();
}
}
t.w = 32;
t.h = 32;
t.w2 = t.w / 2;
t.h2 = t.h / 2;
t._x = o.x * tw;
t._y = ((o.y * th) - (t.h - th)) + 1;
t.stop();
t.frame = buttonFrame;
t.o = o;
t.t = 0;
t.stop();
if (t.o.p & BUTTON_SPENT) {
t.touch = 32;
particleArr.push(t);
t.health = Number.POSITIVE_INFINITY;
if (t.o.p & BUTTON_SHOOT) {
t.gotoAndStop(3);
}
t.nextFrame();
} else {
t.touch = 0;
if (t.o.p & BUTTON_SHOOT) {
t.health = 1;
enemyArr.push(t);
t.gotoAndStop(3);
} else {
particleArr.push(t);
t.health = Number.POSITIVE_INFINITY;
}
}
t.blackhole = true;
return(t);
}
function buttonFrame(timeStep, move) {
var _local2 = int((this._y + this.h2) / th);
var _local3 = int((this._x + this.w2) / tw);
if ((this.hitTest(player.hit) || (this.health <= 0)) && (!(this.o.p & BUTTON_SPENT))) {
if (this.health != Number.POSITIVE_INFINITY) {
this.health = Number.POSITIVE_INFINITY;
removeArrayNoClip(this, enemyArr);
particleArr.push(this);
}
var _local6 = this.o.a[5];
destructo(int(this.o.a[1]), int(this.o.a[2]), int(this.o.a[3]), int(this.o.a[4]), int(this.o.a[0]), _local6);
this.o.p = this.o.p | BUTTON_SPENT;
this.nextFrame();
}
_local3 = int(this._x / tw);
_local2 = int(this._y / th);
if ((((_local3 < (fg.x - 4)) || (_local3 > ((fg.x + stw) + 4))) || (_local2 < (fg.y - 4))) || (_local2 > ((fg.y + sth) + 4))) {
var _local5 = int(_local3 / etw);
var _local4 = int(_local2 / eth);
if ((this.o.p & BUTTON_HIDDEN) && (this.o.p & BUTTON_SPENT)) {
} else {
entities[(_local4 * ew) + _local5].push(this.o);
}
if (this.health == Number.POSITIVE_INFINITY) {
removeArray(this, particleArr);
} else {
removeArray(this, enemyArr);
}
}
}
function destructo(x1, y1, x2, y2, timer, type) {
if (type & DESTRUCTO_CRUMBLE) {
var _local1 = new Object();
_local1.t = 0;
_local1.x1 = x1;
_local1.x2 = x2;
_local1.y1 = y1;
_local1.y2 = y2;
_local1.timer = timer;
_local1.type = type;
_local1.frame = collapseFrame;
entityArr.push(_local1);
} else if (DESTRUCTO_FADE) {
var _local2 = convertArea(game, x1, y1, x2, y2, true);
_local2.frame = fadeFrame;
_local2.yspeed = 0;
_local2.rspeed = 5;
_local2.t = 0;
_local2.arr = particleArr;
particleArr.push(_local2);
}
}
function convertArea(clip, x1, y1, x2, y2, clear) {
var _local15 = clip.getNextHighestDepth();
var _local14 = clip.createEmptyMovieClip("area" + _local15, _local15);
var _local6 = _local14.createEmptyMovieClip("gfx", 0);
var _local8 = x1;
var _local7 = y1;
var _local2 = y1;
while (_local2 <= y2) {
var _local1 = x1;
while (_local1 <= x2) {
var _local4 = _local1 - _local8;
var _local3 = _local2 - _local7;
var _local5 = _local6.attachMovie(tileset, (("t_" + _local3) + "_") + _local4, (_local3 * w) + _local4);
_local5._x = _local4 * tw;
_local5._y = _local3 * th;
_local5.gotoAndStop(map[_local2][_local1] + 1);
if (clear) {
map[_local2][_local1] = 0;
col[_local2][_local1] = 0;
fg[(("t_" + _local2) + "_") + _local1].gotoAndStop(1);
}
_local1++;
}
_local2++;
}
var w = _local6._width;
var _local17 = _local6._height;
_local14._x = ((_local8 * tw) - 1) + (w / 2);
_local14._y = ((_local7 * th) - 1) + (w / 2);
_local6._x = (-w) / 2;
_local6._y = (-w) / 2;
return(_local14);
}
function collapseFrame(timeStep, move) {
if (move) {
this.t++;
if ((this.t % this.timer) == 0) {
var _local2 = this.y2;
while (_local2 >= this.y1) {
var _local3 = this.x1;
while (_local3 <= this.x2) {
if (_local2 == this.y1) {
map[_local2][_local3] = 0;
col[_local2][_local3] = 0;
} else {
map[_local2][_local3] = map[_local2 - 1][_local3];
col[_local2][_local3] = col[_local2 - 1][_local3];
}
fg[(("t_" + _local2) + "_") + _local3].gotoAndStop(map[_local2][_local3] + 1);
_local3++;
}
_local2--;
}
this.y1++;
if (this.y1 > this.y2) {
removeArrayNoClip(this, entityArr);
}
}
if (this.type & DESTRUCTO_EXPLODE) {
if ((this.t % 3) == 0) {
if ((this.y2 > (fg.y - 4)) && (this.y2 < ((fg.y + sth) + 4))) {
var _local5 = this.x1 + random(this.x2 - this.x1);
var _local3 = this.x1 - 1;
while (_local3 <= (this.x2 + 1)) {
if ((_local3 > (fg.x - 4)) && (_local3 < ((fg.x + stw) + 4))) {
if (_local3 == _local5) {
addExplosion("explosion", (_local3 * tw) + random(tw), (this.y2 * th) + random(th), 0, 0);
}
if (!col[this.y2][_local3]) {
addParticle(1, tileset + "Crumble", (_local3 * tw) + random(tw), (this.y2 * th) + random(th), 4, 4, 10);
}
}
_local3++;
}
}
}
addCamShake(2, true);
} else {
var _local5 = this.x1 + random(this.x2 - this.x1);
var _local4 = addObject("smoke", (_local5 * tw) + random(tw), (this.y2 * th) + th, particleArr, smokeFrame);
_local4.scale(50);
_local4._alpha = 50;
}
}
}
function addLevelFlag(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("levelFlag", "levelFlag" + _local2, _local2);
_local1.w = 32;
_local1.h = 32;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1._x = o.x * tw;
_local1._y = ((o.y * th) - (_local1.h - th)) + 1;
_local1.stop();
_local1.frame = levelFlagFrame;
_local1.o = o;
_local1.t = 0;
_local1.stop();
_local1.blackhole = true;
particleArr.push(_local1);
return(_local1);
}
function levelFlagFrame(timeStep, move) {
var _local2 = int((this._y + this.h2) / th);
var _local3 = int((this._x + this.w2) / tw);
if (this.hitTest(player.hit)) {
nextLevel();
}
_local3 = int(this._x / tw);
_local2 = int(this._y / th);
if ((((_local3 < (fg.x - 4)) || (_local3 > ((fg.x + stw) + 4))) || (_local2 < (fg.y - 4))) || (_local2 > ((fg.y + sth) + 4))) {
var _local5 = int(_local3 / etw);
var _local4 = int(_local2 / eth);
entities[(_local4 * ew) + _local5].push(this.o);
removeArray(this, particleArr);
}
}
function targetSpawnerFrame(timeStep, move) {
if (this.current._x == undefined) {
if ((this.t > 100) || (this.t == 0)) {
var _local4;
_local4 = {t:TARGET, x:this.x, y:this.y, p:0};
this.current = spawnEntity(_local4);
this.current._alpha = 0;
}
if (move) {
this.t++;
}
} else {
if (this.current.vis == undefined) {
this.current._alpha = Math.min(100, this.current._alpha + (10 * timeStep));
if (this.current._alpha >= 100) {
this.current.vis = true;
}
}
this.t = 1;
}
if ((((this.x < (fg.x - 4)) || (this.x > ((fg.x + stw) + 4))) || (this.y < (fg.y - 4))) || (this.y > ((fg.y + sth) + 4))) {
var _local3 = int(this.x / etw);
var _local2 = int(this.y / eth);
entities[(_local2 * ew) + _local3].push(this.o);
this.current.bar.removeMovieClip("");
removeArray(this.current, enemyArr);
removeArrayNoClip(this, entityArr);
}
}
function addTargetSpawner(o) {
var _local1 = {frame:targetSpawnerFrame, x:o.x, y:o.y, o:o, t:0};
entityArr.push(_local1);
return(1);
}
function enemySpawnerFrame(timeStep, move) {
if (move) {
this.t++;
}
if (((((this.x > (fg.x - 4)) && (this.x < ((fg.x + stw) + 4))) && (this.y > (fg.y - 4))) && (this.y < ((fg.y + sth) + 10))) || (this.current._x != undefined)) {
if (this.current._x == undefined) {
if (this.t > this.o.a[0]) {
var _local2;
_local2 = {t:ENEMY, x:this.x, y:this.y, p:this.o.p, f:true};
this.current = spawnEntity(_local2);
this.current._alpha = 0;
}
} else {
if (this.current.vis == undefined) {
this.current._alpha = Math.min(100, this.current._alpha + (10 * timeStep));
if (this.current._alpha >= 100) {
this.current.vis = true;
}
}
this.t = 1;
}
} else {
this.t = Number.POSITIVE_INFINITY;
}
}
function addEnemySpawner(o) {
var _local1 = {frame:enemySpawnerFrame, x:o.x, y:o.y, o:o, t:Number.POSITIVE_INFINITY};
entityArr.push(_local1);
return(1);
}
function addPickup(o) {
if (o.a[0] != undefined) {
dropItem((o.x * tw) + (tw / 2), o.y * th, o.p, true);
} else {
dropItem((o.x * tw) + (tw / 2), o.y * th, o.p, false);
}
return(1);
}
function old(clip) {
clip.ox = int((clip._x + clip.w2) / tw);
clip.ol = int((clip._x + 1) / tw);
clip.orr = int(((clip._x + clip.w) - 1) / tw);
clip.ot = int((clip._y + 1) / th);
clip.ob = int(((clip._y + clip.h) - 1) / th);
}
function setupPlayer(clip, training) {
clip.fr = "stand";
clip.of = "stand";
clip.stop();
clip.torso.stop();
clip.legs.stop();
clip.nw = 32;
clip.nh = 48;
clip.cw = 32;
clip.ch = 32;
clip.w = clip.nw;
clip.h = clip.nh;
clip.w2 = clip.w / 2;
clip.h2 = clip.h / 2;
clip._x = clip.x * tw;
clip._y = (clip.y * th) - (clip.h - th);
clip.realgunrotation = 0;
clip.yspeed = 0;
clip.xspeed = 0;
clip.forcexspeed = 0;
clip.forcestop = 1;
clip.onGround = 0;
clip.crouch = 0;
clip.jumpSpeed = 8;
clip.maxJump = 5;
clip.jumps = 3;
clip.jumptime = 0;
clip.hyperJump = 0;
clip.lockAim = 0;
clip.speed = 5;
clip.crouchSpeed = 2;
clip.frame = playerFrame;
clip.func = playerNormal;
clip.realguns = guns;
clip.guns = [];
var _local2 = 0;
while (_local2 < guns.length) {
if (training) {
worldTraining = true;
if (stats.guns[_local2].unlocked) {
clip.guns.push({reloadtime:Number.POSITIVE_INFINITY, bullets:Number.POSITIVE_INFINITY});
} else {
clip.guns.push({reloadtime:Number.POSITIVE_INFINITY, bullets:0});
}
} else {
worldTraining = false;
if (stats.guns[_local2].unlocked) {
clip.guns.push({reloadtime:Number.POSITIVE_INFINITY, bullets:stats.guns[_local2].ammo});
} else {
clip.guns.push({reloadtime:Number.POSITIVE_INFINITY, bullets:0});
}
}
_local2++;
}
clip.cgun = stats.cgun;
if (clip.guns[gunsGren].bullets < guns[gunsGren].clip) {
clip.guns[gunsGren].bullets = guns[gunsGren].clip;
}
clip.lgun = 0;
clip.recoil = 0;
clip.recoiltime = 0;
clip.maxHealth = 100;
clip.health = clip.maxHealth;
clip.lastHealth = clip.health;
clip.crouchAction = playerCrouch;
clip.move = playerMove;
clip.air = playerAir;
clip.checkDown = checkDown;
clip.ground = playerGround;
clip.action = clip.air;
clip.aim = playerAim;
clip.aimDo = playerAimDo;
clip.shoot = playerShoot;
clip.hudUpdate = hudUpdate;
clip.hudScore = score;
clip.maxTimeDistortTime = 150;
clip.maxHyperJumpTime = 150;
clip.hyperJumpTime = clip.maxHyperJumpTime;
clip.timeDistortTime = clip.maxTimeDistortTime;
clip.xcamdif = 0;
clip.ycamdif = 0;
clip.camtimer = 0;
clip.crouchtimer = 0;
clip.ob = Number.NEGATIVE_INFINITY;
clip.ggun = -1;
}
function playerCrouch(go) {
if (go) {
if (!this.crouch) {
this.crouch = 1;
this.w = this.cw;
this.h = this.ch;
this.w2 = this.w / 2;
this.h2 = this.h / 2;
this._y = this._y + (this.nh - this.ch);
this.fr = "crouch";
this.torso.stop();
this.legs.stop();
}
this.crouchtimer++;
} else {
this.crouchtimer = 0;
if (this.crouch) {
var _local3 = int((this._x + this.w2) / tw);
var _local2 = int((this._y - (this.nh - this.ch)) / th);
if (!(col[_local2][_local3] & DOWN)) {
this.crouch = 0;
this.w = this.nw;
this.h = this.nh;
this.w2 = this.w / 2;
this.h2 = this.h / 2;
this._y = this._y - (this.nh - this.ch);
this.fr = "stand";
this.torso.stop();
this.legs.stop();
} else {
return(0);
}
}
}
return(1);
}
function playerMove(timeStep, move) {
if (move) {
var _local8 = this.speed;
if (this.crouch && (this.action != this.air)) {
_local8 = this.crouchSpeed;
}
if (KeyisDown(leftKey)) {
this.xspeed = -_local8;
this.legs._xscale = -100;
this.legs._x = this.w;
if (this.crouch) {
this.fr = "crunning";
} else {
this.fr = "running";
}
}
if (KeyisDown(rightKey)) {
this.xspeed = _local8;
this.legs._xscale = 100;
this.legs._x = 0;
if (this.crouch) {
this.fr = "crunning";
} else {
this.fr = "running";
}
}
if (((!KeyisDown(rightKey)) && (!KeyisDown(leftKey))) || (KeyisDown(rightKey) && (KeyisDown(leftKey)))) {
this.xspeed = 0;
if (this.crouch) {
this.fr = "crouch";
} else {
this.fr = "stand";
}
}
}
var _local6 = (this.xspeed + this.forcexspeed) * timeStep;
if (move) {
if (this.forcestop) {
if (this.forcexspeed >= 1) {
this.forcexspeed--;
} else if (this.forcexspeed <= -1) {
this.forcexspeed++;
} else {
this.forcexspeed = 0;
}
} else {
this.forcestop = 1;
}
if (this.forcexspeed > 16) {
this.forcexspeed = 16;
}
if (this.forcexspeed < -16) {
this.forcexspeed = -16;
}
}
if (_local6 < 0) {
var _local3 = int(((this._x + this.w2) + _local6) / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if ((col[_local2][_local3] & RIGHT) && (_local3 < this.ox)) {
this.xspeed = 0;
this._x = ((_local3 + 1) * tw) - this.w2;
_local4++;
if (col[_local2][_local3] & CLIMB) {
if (_local4 == ((_local5 - _local7) + 1)) {
this.hyperJump = 0;
this.onx = this.ox;
this.climbx = _local3;
this.climbj = rightKey;
this.xspeed = (this.yspeed = 0);
this.func = playerClimb;
this.action = this.air;
this.crouchAction(0);
this.lockAim = 1;
}
} else {
break;
}
}
_local2++;
}
if (!_local4) {
this._x = this._x + _local6;
} else {
_local6 = 0;
}
} else if (_local6 > 0) {
var _local3 = int(((this._x + this.w2) + _local6) / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if ((col[_local2][_local3] & LEFT) && (_local3 > this.ox)) {
this.xspeed = 0;
this._x = ((_local3 * tw) - this.w2) - 1;
_local4++;
if (col[_local2][_local3] & CLIMB) {
if (_local4 == ((_local5 - _local7) + 1)) {
this.hyperJump = 0;
this.climbx = _local3;
this.onx = this.ox;
this.climbj = leftKey;
this.xspeed = (this.yspeed = 0);
this.func = playerClimb;
this.action = this.air;
this.crouchAction(0);
this.lockAim = 2;
}
} else {
break;
}
}
_local2++;
}
if (!_local4) {
this._x = this._x + _local6;
} else {
_local6 = 0;
}
}
if ((_local6 > 0) && (KeyisDown(rightKey))) {
if (this.camtimer >= 0) {
this.camtimer++;
} else {
this.camtimer = 0;
}
} else if ((_local6 < 0) && (KeyisDown(leftKey))) {
if (this.camtimer <= 0) {
this.camtimer--;
} else {
this.camtimer = 0;
}
}
if ((this.camtimer > 50) || (this.camtimer < -50)) {
if (this.camtimer > 50) {
if (_local6 > 0) {
this.camtimer = 150;
}
this.xcamdif = this.xcamdif + ((-40 - this.xcamdif) / 20);
}
if (this.camtimer < 50) {
if (_local6 < 0) {
this.camtimer = -150;
}
this.xcamdif = this.xcamdif + ((40 - this.xcamdif) / 20);
}
} else {
this.xcamdif = this.xcamdif + ((-this.xcamdif) / 20);
}
this.xcamdif = int(this.xcamdif);
if (this._x < cll) {
this._x = cll;
}
if ((this._x + this.w) > clr) {
this._x = clr - this.w;
}
}
function playerClimb(timeStep, move) {
if (move) {
var _local4 = this.crouchSpeed;
if (KeyisDown(upKey)) {
this.fr = "climbMove";
this.yspeed = -_local4;
if (KeyisDown(this.climbj)) {
jumpKeyD = 0;
this.jump = this.jumps - 1;
this.jumptime = 0;
this.xspeed = (this.jumpSpeed / 2) * (this.onx - this.climbx);
this.yspeed = -this.jumpSpeed;
this.func = playerNormal;
this.action = this.air;
this.lockAim = 0;
return(undefined);
}
} else {
jumpKeyD = 1;
}
if (KeyisDown(downKey)) {
this.yspeed = _local4;
this.fr = "climbMove";
}
if (((!KeyisDown(upKey)) && (!KeyisDown(downKey))) || (KeyisDown(upKey) && (KeyisDown(downKey)))) {
this.yspeed = 0;
this.fr = "climb";
}
}
var _local2 = this.yspeed * timeStep;
if (_local2 < 0) {
var _local6 = this.climbx;
var _local5 = this.onx;
var _local7 = int((this._y + 1) / th);
if (col[_local7][_local5] & DOWN) {
} else {
this._y = this._y + _local2;
if (!(col[_local7][_local6] & CLIMB)) {
this.jump = this.jumps - 1;
this.jumptime = 0;
this.func = playerNormal;
this.yspeed = -this.jumpSpeed;
this.lockAim = 0;
c = 1;
}
}
} else {
var _local6 = this.climbx;
var _local5 = this.onx;
var _local7 = int(((this._y + 1) + _local2) / th);
var _local3 = int((((this._y + this.h) - 1) + _local2) / th);
if (col[_local3][_local5] & UP) {
this.jump = 0;
this.jumptime = 0;
this.func = playerNormal;
this.action = this.ground;
this._y = (_local3 * th) - this.h;
this.lockAim = 0;
} else {
this._y = this._y + _local2;
if (!(col[_local3][_local6] & CLIMB)) {
this.jump = this.jumps;
this.jumptime = this.maxJump;
this.func = playerNormal;
this.lockAim = 0;
c = 1;
}
}
}
}
function checkDown(x, y, timeStep, overShoot) {
var _local5 = 0;
var _local9 = 0;
if ((col[y][x] & UP) && (y > this.ob)) {
_local5 = (y * th) - this.h;
return(_local5);
}
if (col[y][x] & PUSHUP) {
_local5 = (y * th) - this.h;
return(_local5);
}
if (col[y][x] & ANGLEUP) {
var _local8 = (this._x + this.w2) % tw;
var _local7 = (((y + 1) * th) - this.h) - _local8;
if ((this._y >= (_local7 - (10 * timeStep))) || (overShoot)) {
return(_local7);
}
} else if (col[y][x] & ANGLEDOWN) {
var _local8 = (this._x + this.w2) % tw;
var _local7 = (((y + 1) * th) - this.h) - (tw - _local8);
if ((this._y >= (_local7 - (10 * timeStep))) || (overShoot)) {
return(_local7);
}
} else if (col[y][x] & SOFTANGLEUPSTART) {
var _local8 = (this._x + this.w2) % tw;
var _local7 = (((y + 1) * th) - this.h) - (_local8 / 2);
if ((this._y >= (_local7 - (10 * timeStep))) || (overShoot)) {
return(_local7);
}
} else if (col[y][x] & SOFTANGLEUPEND) {
var _local8 = (this._x + this.w2) % tw;
var _local7 = ((((y + 1) * th) - this.h) - (_local8 / 2)) - (th / 2);
if ((this._y >= (_local7 - (10 * timeStep))) || (overShoot)) {
return(_local7);
}
} else if (col[y][x] & SOFTANGLEDOWNSTART) {
var _local8 = (this._x + this.w2) % tw;
var _local7 = ((((y + 1) * th) - this.h) - ((tw - _local8) / 2)) - (th / 2);
if ((this._y >= (_local7 - (10 * timeStep))) || (overShoot)) {
return(_local7);
}
} else if (col[y][x] & SOFTANGLEDOWNEND) {
var _local8 = (this._x + this.w2) % tw;
var _local7 = (((y + 1) * th) - this.h) - ((tw - _local8) / 2);
if ((this._y >= (_local7 - (10 * timeStep))) || (overShoot)) {
return(_local7);
}
}
return(0);
}
function playerAir(timeStep, move) {
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + 1;
}
if (KeyisDown(upKey)) {
if ((this.jump < this.jumps) && (this.jumptime < this.maxJump)) {
if (this.hyperJump) {
this.jumptime = this.jumptime + 0.5;
this.yspeed = (-this.jumpSpeed) * 2;
} else {
this.yspeed = -this.jumpSpeed;
this.jumptime++;
}
} else if (jumpKeyD) {
jumpKeyD = 0;
this.jump++;
this.jumptime = 0;
}
} else {
jumpKeyD = 1;
this.jumptime = this.maxJump;
}
if (KeyisDown(downKey)) {
this.crouchAction(1);
} else {
this.crouchAction(0);
}
}
if (this.crouch) {
this.fr = "jumpCrouch";
} else {
this.fr = "jump";
}
var _local2 = this.yspeed * timeStep;
if (_local2 < 0) {
var _local7 = int((this._x + this.w2) / tw);
var _local5 = int((this._y + _local2) / th);
if ((col[_local5][_local7] & DOWN) && (_local5 < this.ot)) {
this.yspeed = 0;
this._y = (_local5 + 1) * th;
this.jump = this.jumps;
this.jumptime = this.maxJump;
} else {
this._y = this._y + _local2;
}
} else {
var _local7 = int((this._x + this.w2) / tw);
var _local5 = int(((this._y + this.h) + _local2) / th);
var _local4 = false;
var _local6 = int((((this._y + this.h) + (_local2 * 2)) + 1) / th);
if (_local6 != _local5) {
_local4 = true;
}
var _local3 = this.checkDown(_local7, _local5, timeStep, _local4);
if (_local3) {
this._y = _local3;
this.yspeed = 0;
this.action = this.ground;
this.hyperJump = 0;
this.jump = 0;
this.jumptime = 0;
} else {
this._y = this._y + _local2;
}
}
}
function playerGround(timeStep, move) {
var _local3 = int((this._x + this.w2) / tw);
var _local2 = int(((this._y + this.h) - 1) / th);
var _local5 = 0;
if (move) {
if (KeyisDown(upKey)) {
if (jumpKeyD) {
jumpKeyD = 0;
if (KeyisDown(specialKey) && (this.hyperJumpTime >= this.maxHyperJumpTime)) {
sb.start("sHyperJump");
this.yspeed = (-this.jumpSpeed) * 2;
this.action = this.air;
this.jump = this.jumps - 1;
this.hyperJump = 1;
this.hyperJumpTime = 0;
} else {
this.yspeed = -this.jumpSpeed;
this.action = this.air;
}
return(undefined);
}
} else {
jumpKeyD = 1;
}
if (KeyisDown(downKey)) {
if (KeyisDown(specialKey) && (col[_local2 + 1][_local3] & FALLTHROUGH)) {
this.jump = this.jumps;
this.jumptime = this.maxJump;
this.yspeed = 0;
this._y = this._y + 2;
this.action = this.air;
return(undefined);
}
this.crouchAction(1);
} else {
this.crouchAction(0);
}
}
do {
if (col[_local2][_local3] & UP) {
if (this.angle) {
this._y = (_local2 * tw) - this.h;
this.angle = 0;
}
return(undefined);
}
if (col[_local2][_local3] & ANGLEUP) {
if (move && (col[_local2][_local3] & SLIDE)) {
this.forcexspeed = this.forcexspeed - 1;
if (KeyisDown(downKey)) {
this.forcestop = 0;
}
}
this.angle = 1;
var _local6 = (this._x + this.w2) % tw;
this._y = (((_local2 + 1) * th) - this.h) - _local6;
return(undefined);
}
if (col[_local2][_local3] & ANGLEDOWN) {
if (move && (col[_local2][_local3] & SLIDE)) {
this.forcexspeed = this.forcexspeed + 1;
if (KeyisDown(downKey)) {
this.forcestop = 0;
}
}
this.angle = 1;
var _local6 = (this._x + this.w2) % tw;
this._y = (((_local2 + 1) * th) - this.h) - (tw - _local6);
return(undefined);
}
if (col[_local2][_local3] & SOFTANGLEUPSTART) {
if (move && (col[_local2][_local3] & SLIDE)) {
this.forcexspeed = this.forcexspeed - 0.5;
if (KeyisDown(downKey)) {
this.forcestop = 0;
}
}
this.angle = 1;
var _local6 = (this._x + this.w2) % tw;
this._y = (((_local2 + 1) * th) - this.h) - (_local6 / 2);
return(undefined);
}
if (col[_local2][_local3] & SOFTANGLEUPEND) {
if (move && (col[_local2][_local3] & SLIDE)) {
this.forcexspeed = this.forcexspeed - 0.5;
if (KeyisDown(downKey)) {
this.forcestop = 0;
}
}
this.angle = 1;
var _local6 = (this._x + this.w2) % tw;
this._y = ((((_local2 + 1) * th) - this.h) - (_local6 / 2)) - (th / 2);
return(undefined);
}
if (col[_local2][_local3] & SOFTANGLEDOWNSTART) {
if (move && (col[_local2][_local3] & SLIDE)) {
this.forcexspeed = this.forcexspeed + 0.5;
if (KeyisDown(downKey)) {
this.forcestop = 0;
}
}
this.angle = 1;
var _local6 = (this._x + this.w2) % tw;
this._y = ((((_local2 + 1) * th) - this.h) - ((tw - _local6) / 2)) - (th / 2);
return(undefined);
}
if (col[_local2][_local3] & SOFTANGLEDOWNEND) {
if (move && (col[_local2][_local3] & SLIDE)) {
this.forcexspeed = this.forcexspeed + 0.5;
if (KeyisDown(downKey)) {
this.forcestop = 0;
}
}
this.angle = 1;
var _local6 = (this._x + this.w2) % tw;
this._y = (((_local2 + 1) * th) - this.h) - ((tw - _local6) / 2);
return(undefined);
}
_local2++;
_local5++;
if (_local5 > 1) {
break;
}
} while (_local5);
this.angle = 0;
this.jump = 0;
this.jumptime = this.maxJump;
this.action = this.air;
}
function playerAim(timeStep, move) {
var _local12 = this.torso.gfx;
var _local9 = this.torso.arm;
var _local11 = this.torso.arm.gun;
var _local5 = false;
if (KeyisDown(grenadeKey)) {
if (grenadeK) {
if (this.cgun != gunsGren) {
if (this.guns[gunsGren].bullets > 0) {
this.cgun = gunsGren;
}
} else {
this.cgun = this.lgun;
}
_local5 = true;
mouseD = 0;
this.gunframe = 1;
this.recoiltime = 0;
this.recoil = 0;
if (this.guns[this.cgun].reloadtime < guns[this.cgun].reloadtime) {
this.guns[this.cgun].reloadtime = 0;
}
}
grenadeK = 0;
} else {
grenadeK = 1;
}
var _local8 = this.guns[this.cgun].bullets;
if (!KeyisDown(specialKey)) {
if (KeyisDown(switchKey)) {
if (switchK) {
mouseW = 1;
}
switchK = 0;
} else {
switchK = 1;
}
if (KeyisDown(switchDownKey)) {
if (switchDownK) {
mouseW = -1;
}
switchDownK = 0;
} else {
switchDownK = 1;
}
}
var _local6 = false;
if (stats.weaponswitch && (this.ggun != -1)) {
if (this.ggun > this.cgun) {
this.cgun = this.ggun;
_local6 = true;
}
this.ggun = -1;
}
if ((_local6 || (mouseW != 0)) || (_local8 <= 0)) {
if (_local6) {
} else if ((mouseW >= 0) && (_local8 > 0)) {
do {
this.cgun++;
if (this.cgun >= this.guns.length) {
this.cgun = 0;
}
} while (this.guns[this.cgun].bullets <= 0);
} else {
do {
this.cgun--;
if (this.cgun < 0) {
this.cgun = this.guns.length - 1;
}
} while (this.guns[this.cgun].bullets <= 0);
}
this.lgun = this.cgun;
_local5 = true;
mouseD = 0;
this.gunframe = 1;
this.recoiltime = 0;
this.recoil = 0;
if (this.guns[this.cgun].reloadtime < guns[this.cgun].reloadtime) {
this.guns[this.cgun].reloadtime = 0;
}
mouseW = 0;
}
this.gunrotation = (360 - ((Math.atan2(((fg._x + this._x) + _local9._x) - _root._xmouse, ((fg._y + this._y) + _local9._y) - _root._ymouse) * 180) / Math.PI)) - 90;
if (_local5) {
if (this.torso._xscale > 0) {
this.gunrotation = (this.realgunrotation = 89);
} else {
this.gunrotation = (this.realgunrotation = 91);
}
}
var _local3 = this.gunrotation;
var _local7 = this.realgunrotation;
_local3 = (_local3 + 360) % 360;
_local7 = (_local7 + 360) % 360;
if (this.lockAim == 1) {
if ((_local3 <= 290) && (_local3 >= 180)) {
_local3 = 291;
} else if ((_local3 < 180) && (_local3 >= 60)) {
_local3 = 59;
}
this.torso._xscale = 100;
this.torso._x = 0;
}
if (this.lockAim == 2) {
if (_local3 >= 250) {
_local3 = 249;
} else if (_local3 <= 120) {
_local3 = 121;
}
this.torso._xscale = -100;
this.torso._x = this.w;
}
var _local4 = _local3 - _local7;
_local4 = ((_local4 > 179) ? (-360 + _local4) : (_local4));
_local4 = ((_local4 < -179) ? (360 + _local4) : (_local4));
if (this.recoiltime) {
if (move) {
this.torso.arm.gun.gfx.gotoAndStop(this.gunframe++);
this.recoiltime--;
if (this.recoiltime == 0) {
this.gunframe = 1;
this.torso.arm.gun.gfx.gotoAndStop(1);
}
}
this.realgunrotation = this.realgunrotation + ((_local4 / 10) * timeStep);
} else {
this.realgunrotation = this.realgunrotation + ((_local4 / 2) * timeStep);
}
if (this.realgunrotation < -180) {
this.realgunrotation = this.realgunrotation + 360;
}
if (this.realgunrotation > 180) {
this.realgunrotation = this.realgunrotation - 360;
}
}
function playerAimDo() {
var _local10 = this.torso.arm.gun.gfx.start._currentframe;
if (this.of != this.fr) {
var _local6 = this.torso._xscale;
var _local8 = this.legs._xscale;
var _local9 = this.torso._x;
var _local7 = this.legs._x;
this.gotoAndStop(this.fr);
this.torso._xscale = _local6;
this.legs._xscale = _local8;
this.torso._x = _local9;
this.legs._x = _local7;
this.of = this.fr;
}
var _local5 = this.torso.gfx;
var _local11 = this.torso.arm;
var _local3 = this.torso.arm.gun;
_local3.gotoAndStop(guns[this.cgun].name);
_local3.gfx.start.gotoAndStop(_local10 + 1);
_local3.gfx.gotoAndStop(this.gunframe);
var _local2 = this.realgunrotation;
var _local4 = ((_local2 + 90) + 360) % 360;
if ((_local2 > 90) || (_local2 < -90)) {
this.realgunrotation = this.realgunrotation + this.recoil;
if (((_local2 + this.recoil) > -91) && (_local2 < 0)) {
this.realgunrotation = -91;
_local2 = -91;
}
if (((_local2 + this.recoil) < 91) && (_local2 > 0)) {
this.realgunrotation = 91;
_local2 = 91;
}
this.recoil = 0;
_local5.gotoAndStop(360 - int(_local4));
if (this.lockAim == 0) {
this.torso._xscale = -100;
this.torso._x = this.w;
}
} else {
this.realgunrotation = this.realgunrotation - this.recoil;
if ((_local2 - this.recoil) < -89) {
this.realgunrotation = -89;
_local2 = -89;
}
if ((_local2 - this.recoil) > 89) {
this.realgunrotation = 89;
_local2 = 89;
}
this.recoil = 0;
_local5.gotoAndStop(int(_local4));
if (this.lockAim == 0) {
this.torso._xscale = 100;
this.torso._x = 0;
}
}
if (this.torso._xscale == 100) {
_local3._rotation = _local2;
} else {
_local3._rotation = 180 - _local2;
}
}
function playerShoot(timeStep, move) {
if (move) {
this.guns[this.cgun].reloadtime++;
}
if (mouseD) {
if (move) {
if (this.guns[this.cgun].bullets > 0) {
if (this.guns[this.cgun].reloadtime >= guns[this.cgun].reloadtime) {
t = {x:0, y:0};
var _local2 = 0;
var _local3 = this.torso.arm.gun.c;
if (_local3 != undefined) {
_local3.localToGlobal(t);
_local2 = col[int((t.y - fg._y) / th)][int((t.x - fg._x) / tw)];
} else {
_local2 = -1;
}
if ((((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) || (_local2 == -1)) {
_local2 = 0;
}
if (_local2 == 0) {
point = {x:0, y:0};
this.torso.arm.gun.barrel.localToGlobal(point);
point.x = point.x - fg._x;
point.y = point.y - fg._y;
if (_local3 != undefined) {
_local2 = col[int(point.y / th)][int(point.x / tw)];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = 0;
}
}
if (_local2 == 0) {
this.guns[this.cgun].reloadtime = 0;
this.guns[this.cgun].bullets--;
if (this.guns[this.cgun].bullets <= 0) {
this.guns[this.cgun].reloadtime = Number.POSITIVE_INFINITY;
throwGun(guns[this.cgun].name, this._x + this.w2, this._y + this.h2);
}
guns[this.cgun].gun(point.x, point.y, this.realgunrotation, guns[this.cgun].speed, guns[this.cgun].damage, guns[this.cgun].aim, enemyArr, true);
stats.guns[this.cgun].shotsfired++;
var _local4 = guns[this.cgun].flash;
if (_local4) {
var _local5 = addObject("muzzleFlash", point.x, point.y, particleArr, muzzleFrame);
_local5._rotation = this.realgunrotation;
_local5.gotoAndStop(_local4);
}
this.recoil = guns[this.cgun].recoil;
this.recoiltime = guns[this.cgun].recoiltime;
this.torso.arm.gun.gfx.gotoAndStop((this.gunframe = 2));
}
}
}
}
}
}
}
function playerNormal(timeStep, move) {
this.move(timeStep, move);
this.action(timeStep, move);
old(this);
}
function playerFrame(timeStep, move) {
this.aim(timeStep, move);
this.func(timeStep, move);
this.aimDo();
this.shoot(timeStep, move);
this.hudUpdate(move);
if (move) {
if (this.torso._currentframe == this.torso._totalframes) {
this.torso.gotoAndStop(1);
} else {
this.torso.nextFrame();
}
if (this.legs._currentframe == this.legs._totalframes) {
this.legs.gotoAndStop(1);
} else {
this.legs.nextFrame();
}
this.torso.arm.gun.gfx.gotoAndStop(this.gunframe);
if (this.hyperJumpTime < this.maxHyperJumpTime) {
this.hyperJumpTime++;
}
if (this.hitFlash) {
this.hitFlash = false;
var _local4 = new Color(world);
_local4.setTransform(normalColor);
}
if (this.health != this.lastHealth) {
if (invulnerable && (this.health < this.lastHealth)) {
this.health = this.lastHealth;
}
if (this.health < this.lastHealth) {
this.hitFlash = true;
var _local4 = new Color(world);
_local4.setTransform(hitColor);
sb.start("sPlayerHit");
var _local3 = addObjectOver("blood", this._x + this.w2, this._y + this.h2, particleArr, objectFrame);
if (random(10) > 5) {
_local3._xscale = -100;
}
}
this.lastHealth = this.health;
}
}
if (this._y > ((fg.h + 2) * th)) {
this.health = this.health - 50;
}
if (this.health <= 0) {
death(false);
}
}
function playerDeath(timeStep, move) {
this.gotoAndStop("dead");
this.gfx.stop();
if (move) {
if ((this.gfx._currentframe < 19) || (this.deadfloor)) {
this.gfx.nextFrame();
}
if (this.gfx._currentframe == this.gfx._totalframes) {
deathDo();
}
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + 1;
}
}
if (this.deadfloor == false) {
var _local2 = this.yspeed * timeStep;
if (_local2 < 0) {
var _local7 = int((this._x + this.w2) / tw);
var _local5 = int((this._y + _local2) / th);
if ((col[_local5][_local7] & DOWN) && (_local5 < this.ot)) {
this.yspeed = 0;
this._y = (_local5 + 1) * th;
this.jump = this.jumps;
this.jumptime = this.maxJump;
} else {
this._y = this._y + _local2;
}
} else {
var _local7 = int((this._x + this.w2) / tw);
var _local5 = int(((this._y + this.h) + _local2) / th);
var _local4 = false;
var _local6 = int((((this._y + this.h) + (_local2 * 2)) + 1) / th);
if (_local6 != _local5) {
_local4 = true;
}
var _local3 = this.checkDown(_local7, _local5, timeStep, _local4);
if (_local3) {
this._y = _local3;
this.deadfloor = true;
} else {
this._y = this._y + _local2;
}
}
}
}
function addEnemy(o) {
var _local3 = 0;
var _local1 = null;
if (o.p & ENEMY_WALKER) {
_local1 = addWalker(o);
} else if (o.p & ENEMY_DRONE) {
_local1 = addDrone(o);
} else if (o.p & ENEMY_SNIPER) {
_local1 = addSniper(o);
} else if (o.p & ENEMY_HELI) {
_local1 = addHeli(o);
} else if (o.p & ENEMY_HELI2) {
_local1 = addHeli2(o);
} else if (o.p & ENEMY_HELI3) {
_local1 = addHeli3(o);
} else if (o.p & ENEMY_CRITTER) {
_local1 = addCritter(o);
}
_local1.hit._visible = false;
_local1.frame(0, 0);
_local1.bar = null;
_local1.bartime = 0;
_local1.healthCheck = healthCheck;
_local1.barUpdate = barUpdate;
_local1.kill = enemyKill;
_local1.o = o;
enemyArr.push(_local1);
return(_local1);
}
function barUpdate(move) {
if (move && (this.hitFlash)) {
this.hitFlash = false;
var _local4 = new Color(this);
_local4.setTransform(normalColor);
}
if (this.health != this.lastHealth) {
if (triDamage) {
var _local3 = this.lastHealth - this.health;
this.health = this.health - (_local3 * 2);
}
if (this.health > 0) {
this.lastHealth = this.health;
this.hitFlash = true;
var _local4 = new Color(this);
_local4.setTransform(whiteColor);
if (this.bar == null) {
if (stats.drawhealthbar) {
var _local2 = overgame.getNextHighestDepth();
this.bar = overgame.attachMovie("bar", "bar" + _local2, _local2);
}
}
this.bartime = 0;
sb.start("sMetal" + random(4));
} else {
this.hitFlash = false;
var _local4 = new Color(this);
_local4.setTransform(normalColor);
this.bar.removeMovieClip("");
}
} else if (move) {
this.bartime++;
}
if (this.bartime > 50) {
this.bar.removeMovieClip("");
this.bar = null;
} else {
this.bar._x = this._x - 5;
this.bar._y = this._y + 5;
this.bar._xscale = 4;
this.bar._yscale = (this.health / this.maxHealth) * this.h2;
}
}
function enemyShoot(enemy, barrel, reloadTime, func, speed, damage, aim, flash, rot) {
enemy.reloadTime++;
if (enemy.reloadTime >= reloadTime) {
point = {x:0, y:0};
barrel.localToGlobal(point);
point.x = point.x - fg._x;
point.y = point.y - fg._y;
if (rot != undefined) {
func(point.x, point.y, rot, speed, damage, aim, playerArr, false);
} else {
func(point.x, point.y, enemy.realgunrotation, speed, damage, aim, playerArr, false);
}
if (flash) {
var _local1 = addObject("muzzleFlash", point.x, point.y, particleArr, muzzleFrame);
if (rot != undefined) {
_local1._rotation = rot;
} else {
_local1._rotation = enemy.realgunrotation;
}
_local1.gotoAndStop(flash);
}
if (reloadTime != -1) {
enemy.reloadTime = 0;
}
}
}
function enemyFall(timeStep, move) {
if (move) {
if (((this.t++) % 3) == 0) {
if ((this.t % 6) == 1) {
addParticle(1, "metalShard", this._x + random(this.w), this._y + random(this.h), 6, -6, 10);
} else {
addObject("explosion", this._x + random(this.w), this._y + random(this.h), bulletArr, objectFrame).scale(this.w / 2);
}
}
if (this.yspeed < (tw / 2)) {
this.yspeed++;
}
}
this._y = this._y + (this.yspeed * timeStep);
var _local5 = int((this._x + this.w2) / tw);
var _local4 = int((this._y + this.h2) / th);
if (col[_local4][_local5] != 0) {
var _local3 = addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
attachEnvFlare(Number.POSITIVE_INFINITY, _local3);
addParticle(this.particles, "metalShard", this._x + this.w2, (_local4 * th) - 2, 6, -6, 10);
removeArray(this, particleArr);
}
this._x = this._x + (this.xspeed * timeStep);
_local5 = int(this._x / tw);
_local4 = int(this._y / th);
if (col[_local4][_local5] != 0) {
this._x = this._x - (this.xspeed * timeStep);
this.xspeed = this.xspeed * 0.5;
}
this.gfx._rotation = this.gfx._rotation + (this.rspeed * timeStep);
if (this._y > ((-fg._y) + (sph * 2))) {
this.bar.removeMovieClip("");
removeArray(this, particleArr);
}
}
function enemyKill(drawPoints) {
var _local2 = this.maxHealth + (-this.health);
score = score + _local2;
player.timeDistortTime = Math.min(player.maxTimeDistortTime, player.timeDistortTime + Math.max(25, Math.floor(_local2 / 10)));
var _local3 = 0;
if (stats.drawpoints && (drawPoints)) {
_local3 = _local3 + addCenteredPopUp(this._x + this.w2, this._y + this.h2, ("+" + int(_local2)) + "00", true)._height;
}
if (player.hyperJump) {
player.guns[gunsHyper[0]].bullets = player.guns[gunsHyper[0]].bullets + gunsHyper[1];
addCenteredPopUp(this._x + this.w2, (this._y + this.h2) + _local3, guns[gunsHyper[0]].name, true);
}
if (this.o.p & ENEMY_DROPITEM) {
dropItem(this._x + this.w2, this._y + this.h2, int(this.o.a[0]), false);
}
}
function addCritter(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemyCritter", "enemy" + _local2, _local2);
_local1.w = 32;
_local1.h = 30;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.dir = -1;
_local1.yspeed = 0;
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.state = 0;
_local1.gotoAndStop("normal");
_local1.gfx.stop();
_local1.frame = enemyCritter;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 10));
_local1.hitFlash = false;
_local1.t = 0;
return(_local1);
}
function enemyCritter(timeStep, move) {
if (move) {
}
this.gfx.stop();
var _local10 = player._x;
var _local14 = player._y;
var _local15 = Math.abs(this._x - _local10);
var _local3 = Math.abs(this._y - _local14);
var _local5 = 0;
if (this._x > (_local10 + 1)) {
this.dir = -1;
this._xscale = -100;
this.gfx._x = -this.w;
this.hit._x = (-this.w) + 5;
} else if (this._x < (_local10 - 1)) {
this.dir = 1;
this._xscale = 100;
this.gfx._x = 0;
this.hit._x = 5;
} else {
this.dir = 0;
}
_local5 = this.dir * 1;
if (_local5 < 0) {
var _local8 = int(((this._x + this.w2) + _local5) / tw);
var _local7 = int((this._y + 1) / th);
var _local12 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local12) {
if (col[_local2][_local8]) {
if (_local3 >= 100) {
this.dir = 1;
}
this._x = ((_local8 + 1) * tw) - this.w2;
_local4++;
break;
}
_local2++;
}
if (!_local4) {
var _local6 = col[_local12 + 1][_local8];
if ((_local6 >= ANGLEUP) && (_local6 < BREAKABLE)) {
_local6 = 0;
}
if (_local6) {
this._x = this._x + _local5;
if (move) {
if (this.gfx._currentframe == this.gfx._totalframes) {
this.gfx.gotoAndStop(1);
} else {
this.gfx.nextFrame();
}
}
} else {
this.gfx.gotoAndStop(1);
}
}
} else if (_local5 > 0) {
var _local8 = int(((this._x + this.w2) + _local5) / tw);
var _local7 = int((this._y + 1) / th);
var _local12 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local12) {
if (col[_local2][_local8]) {
if (_local3 >= 100) {
this.dir = -1;
}
this._x = ((_local8 * tw) - this.w2) - 1;
_local4++;
break;
}
_local2++;
}
if (!_local4) {
var _local6 = col[_local12 + 1][_local8];
if ((_local6 >= ANGLEUP) && (_local6 < BREAKABLE)) {
_local6 = 0;
}
if (_local6) {
this._x = this._x + _local5;
if (move) {
if (this.gfx._currentframe == this.gfx._totalframes) {
this.gfx.gotoAndStop(1);
} else {
this.gfx.nextFrame();
}
}
} else {
this.gfx.gotoAndStop(1);
}
}
}
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + 1;
}
}
var _local11 = this.yspeed * timeStep;
var _local8 = int((this._x + this.w2) / tw);
var _local7 = int(((this._y + this.h) + _local11) / th);
if (col[_local7][_local8]) {
this._y = ((_local7 - 1) * th) - (this.h - th);
this.yspeed = 0;
} else {
this._y = this._y + _local11;
}
if (this.dir <= 0) {
this._xscale = -100;
this.gfx._x = -this.w;
this.hit._x = (-this.w) + 5;
this.barrel._x = 0;
} else {
this._xscale = 100;
this.gfx._x = 0;
this.hit._x = 5;
this.barrel._x = this.w;
}
_local7 = int((this._y + this.h2) / th);
_local8 = int((this._x + this.w2) / tw);
this.barUpdate(move);
if (this.health <= 0) {
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(3, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
removeArray(this, enemyArr);
stats.totalenemies++;
}
if ((((_local8 < (fg.x - 4)) || (_local8 > ((fg.x + stw) + 4))) || (_local7 < (fg.y - 4))) || (_local7 > ((fg.y + sth) + 10))) {
this.o.x = _local8;
this.o.y = _local7;
var _local13 = int(_local8 / etw);
var _local12 = int(_local7 / eth);
if (this.o.f != true) {
entities[(_local12 * ew) + _local13].push(this.o);
}
this.bar.removeMovieClip("");
removeArray(this, enemyArr);
}
}
function addWalker(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemyWalker", "enemy" + _local2, _local2);
_local1.w = 32;
_local1.h = 38;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.dir = -1;
_local1.yspeed = 0;
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.state = 0;
_local1.gotoAndStop("normal");
_local1.gfx.stop();
_local1.legs.stop();
_local1.cgun = 0;
_local1.reloadTime = Number.POSITIVE_INFINITY;
_local1.realgunrotation = 180;
_local1.frame = enemyWalker;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 20));
_local1.hitFlash = false;
_local1.t = 0;
return(_local1);
}
function enemyWalker(timeStep, move) {
if (move) {
if (this.state == 0) {
this.gfx.gotoAndStop(1);
} else if (this.state == 1) {
if (this.gfx._currentframe == this.gfx._totalframes) {
this.state = 2;
this.gotoAndStop("fire");
this.t = 0;
} else {
this.gfx.nextFrame();
}
} else if (this.state == 2) {
if (this.gfx._currentframe == this.gfx._totalframes) {
this.gfx.gotoAndStop(1);
} else {
this.gfx.nextFrame();
}
} else if (this.state == 3) {
if (this.gfx._currentframe == this.gfx._totalframes) {
this.reloadTime = Number.POSITIVE_INFINITY;
this.state = 0;
this.gotoAndStop("normal");
} else {
this.gfx.nextFrame();
}
}
}
this.legs.stop();
this.gfx.stop();
var _local11 = player._x;
var _local15 = player._y;
var _local10 = Math.abs(this._x - _local11);
var _local3 = Math.abs(this._y - _local15);
var _local4 = 0;
if (_local3 < 100) {
if (_local11 < this._x) {
this.dir = -1;
this.realgunrotation = 180;
this._xscale = -100;
this.gfx._x = -this.w;
this.legs._x = -this.w;
this.hit._x = (-this.w) + 5;
this.barrel._x = 0;
} else {
this.dir = 1;
this.realgunrotation = 0;
this._xscale = 100;
this.gfx._x = 0;
this.legs._x = 0;
this.hit._x = 5;
this.barrel._x = this.w;
}
if (this.state == 0) {
if (_local10 < 200) {
this.state = 1;
this.gotoAndStop("open");
}
} else if (this.state == 2) {
if (move) {
enemyShoot(this, this.barrel, 120, machineGun, 5, 5, 2, 1);
}
if (_local10 > 250) {
this.state = 3;
this.gotoAndStop("close");
}
}
if (_local10 > 150) {
_local4 = _local4 + ((this.dir * 2) * timeStep);
} else {
legs.gotoAndStop(1);
}
} else {
if (this.state != 0) {
this.state = 3;
this.gotoAndStop("close");
}
_local4 = _local4 + ((this.dir * 2) * timeStep);
}
if (_local4 < 0) {
var _local9 = int(((this._x + this.w2) + _local4) / tw);
var _local8 = int((this._y + 1) / th);
var _local13 = int(((this._y + this.h) - 1) / th);
var _local5 = 0;
var _local2 = _local8;
while (_local2 <= _local13) {
if (col[_local2][_local9]) {
if (_local3 >= 100) {
this.dir = 1;
}
this._x = ((_local9 + 1) * tw) - this.w2;
_local5++;
break;
}
_local2++;
}
if (!_local5) {
var _local6 = col[_local13 + 1][_local9];
if ((_local6 >= ANGLEUP) && (_local6 < BREAKABLE)) {
_local6 = 0;
}
if (_local6) {
this._x = this._x + _local4;
if (move) {
if (this.legs._currentframe == this.legs._totalframes) {
this.legs.gotoAndStop(1);
} else {
this.legs.nextFrame();
}
}
} else {
this.legs.gotoAndStop(1);
}
}
} else if (_local4 > 0) {
var _local9 = int(((this._x + this.w2) + _local4) / tw);
var _local8 = int((this._y + 1) / th);
var _local13 = int(((this._y + this.h) - 1) / th);
var _local5 = 0;
var _local2 = _local8;
while (_local2 <= _local13) {
if (col[_local2][_local9]) {
if (_local3 >= 100) {
this.dir = -1;
}
this._x = ((_local9 * tw) - this.w2) - 1;
_local5++;
break;
}
_local2++;
}
if (!_local5) {
var _local6 = col[_local13 + 1][_local9];
if ((_local6 >= ANGLEUP) && (_local6 < BREAKABLE)) {
_local6 = 0;
}
if (_local6) {
this._x = this._x + _local4;
if (move) {
if (this.legs._currentframe == this.legs._totalframes) {
this.legs.gotoAndStop(1);
} else {
this.legs.nextFrame();
}
}
} else {
this.legs.gotoAndStop(1);
}
}
}
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + 1;
}
}
var _local12 = this.yspeed * timeStep;
var _local9 = int((this._x + this.w2) / tw);
var _local8 = int(((this._y + this.h) + _local12) / th);
if (col[_local8][_local9]) {
this._y = ((_local8 - 1) * th) - (this.h - th);
this.yspeed = 0;
} else {
this._y = this._y + _local12;
}
if (this.dir <= 0) {
this.realgunrotation = 180;
this._xscale = -100;
this.gfx._x = -this.w;
this.legs._x = -this.w;
this.hit._x = (-this.w) + 5;
this.barrel._x = 0;
} else {
this.realgunrotation = 0;
this._xscale = 100;
this.gfx._x = 0;
this.legs._x = 0;
this.hit._x = 5;
this.barrel._x = this.w;
}
_local8 = int((this._y + this.h2) / th);
_local9 = int((this._x + this.w2) / tw);
this.barUpdate(move);
if (this.health <= 0) {
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(3, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
removeArray(this, enemyArr);
stats.totalenemies++;
}
if ((((_local9 < (fg.x - 4)) || (_local9 > ((fg.x + stw) + 4))) || (_local8 < (fg.y - 4))) || (_local8 > ((fg.y + sth) + 10))) {
this.o.x = _local9;
this.o.y = _local8;
var _local14 = int(_local9 / etw);
var _local13 = int(_local8 / eth);
if (this.o.f != true) {
entities[(_local13 * ew) + _local14].push(this.o);
}
this.bar.removeMovieClip("");
removeArray(this, enemyArr);
}
}
function addSniper(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemySniper", "enemy" + _local2, _local2);
_local1.w = 38;
_local1.h = 21;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.yspeed = 0;
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.reloadTime = 0;
_local1.realgunrotation = 180;
_local1.dir = 1;
_local1.frame = enemySniper;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 10));
_local1.hitFlash = false;
_local1.t = 0;
_local1.stop();
_local1.gfx.stop();
return(_local1);
}
function enemySniper(timeStep, move) {
if (move) {
t = {x:0, y:0};
this.gfx.c.localToGlobal(t);
if (!col[int((t.y - fg._y) / th)][int((t.x - fg._x) / tw)]) {
enemyShoot(this, this.gfx.barrel, 60, machineGun, 5, 5, 4, 1);
}
}
this.legs.stop();
this.gfx.stop();
var _local12 = player._x;
var _local10 = player._y;
var _local14 = Math.abs(this._x - _local12);
var _local13 = Math.abs(this._y - _local10);
if (this._x > player._x) {
if (this.dir == 1) {
this.legs._xscale = -100;
this.legs._x = this.legs._x + this.w;
this.gfx._yscale = -100;
this.gfx._x = this.gfx._x - 15;
this.dir = -1;
}
} else if (this._x < player._x) {
if (this.dir == -1) {
this.legs._xscale = 100;
this.legs._x = this.legs._x - this.w;
this.gfx._yscale = 100;
this.gfx._x = this.gfx._x + 15;
this.dir = 1;
}
}
this.gunrotation = (360 - ((Math.atan2((this._x + this.gfx._x) - (player._x + player.w2), (this._y + this.gfx._y) - (player._y + player.h2)) * 180) / Math.PI)) - 90;
var _local5 = this.gunrotation;
var _local6 = this.realgunrotation;
_local5 = (_local5 + 360) % 360;
_local6 = (_local6 + 360) % 360;
var _local2 = _local5 - _local6;
_local2 = ((_local2 > 179) ? (-360 + _local2) : (_local2));
_local2 = ((_local2 < -179) ? (360 + _local2) : (_local2));
this.realgunrotation = this.realgunrotation + ((_local2 / 2) * timeStep);
if (this.realgunrotation < -180) {
this.realgunrotation = this.realgunrotation + 360;
}
if (this.realgunrotation > 180) {
this.realgunrotation = this.realgunrotation - 360;
}
this.gfx._rotation = this.realgunrotation;
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + 1;
}
}
var _local7 = this.yspeed * timeStep;
var _local4 = int((this._x + this.w2) / tw);
var _local3 = int(((this._y + this.h) + _local7) / th);
if (col[_local3][_local4]) {
this._y = ((_local3 - 1) * th) - (this.h - th);
this.yspeed = 0;
} else {
this._y = this._y + _local7;
}
_local3 = int((this._y + this.h2) / th);
_local4 = int((this._x + this.w2) / tw);
this.barUpdate(move);
if (this.health <= 0) {
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(3, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
removeArray(this, enemyArr);
stats.totalenemies++;
}
if ((((_local4 < (fg.x - 4)) || (_local4 > ((fg.x + stw) + 4))) || (_local3 < (fg.y - 4))) || (_local3 > ((fg.y + sth) + 10))) {
this.o.x = _local4;
this.o.y = _local3;
var _local9 = int(_local4 / etw);
var _local8 = int(_local3 / eth);
if (this.o.f != true) {
entities[(_local8 * ew) + _local9].push(this.o);
}
this.bar.removeMovieClip("");
removeArray(this, enemyArr);
}
}
function addDrone(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemyDrone", "enemy" + _local2, _local2);
_local1.w = 46;
_local1.h = 30;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.dir = 1;
_local1.yspeed = 0;
_local1.xspeed = 0;
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.reloadTime = 0;
_local1.realgunrotation = 180;
_local1.frame = enemyDrone;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 50));
_local1.hitFlash = false;
_local1.f = true;
_local1.t = 0;
_local1.stop();
_local1.gfx.stop();
return(_local1);
}
function enemyDrone(timeStep, move) {
if (move) {
enemyShoot(this, this.gfx.barrel, 25, machineGun, 5, 5, 15, 1);
this.t++;
if (this.t > 5) {
this.t = 0;
var _local4 = addObject("smoke", (this._x + this.w2) - this.xspeed, this._y + this.h2, particleArr, smokeFrame);
_local4.scale(25);
}
}
if (this.dir == 1) {
var _local12 = int(((this._x + this.w) + this.xspeed) / tw);
var _local11 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local11;
while (_local2 <= _local5) {
if (col[_local2][_local12]) {
_local4++;
break;
}
_local2++;
}
if ((this.f || (_local4)) || (this._x > (((-fg._x) + spw) + this.w))) {
this.f = false;
this.body._xscale = -100;
this.body._x = this.body._x + this.w;
this.gfx._yscale = -100;
this.dir = -1;
}
}
if (this.dir == -1) {
var _local12 = int((this._x + this.xspeed) / tw);
var _local11 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local11;
while (_local2 <= _local5) {
if (col[_local2][_local12]) {
_local4++;
break;
}
_local2++;
}
if (_local4 || (this._x < ((-fg._x) - this.w))) {
this.body._xscale = 100;
this.body._x = this.body._x - this.w;
this.gfx._yscale = 100;
this.dir = 1;
}
}
if (move) {
this.xspeed = this.xspeed + this.dir;
if (this.xspeed > 5) {
this.xspeed = 5;
}
if (this.xspeed < -5) {
this.xspeed = -5;
}
}
this.yspeed = 0;
if (this._y > ((fg.y + 4) * th)) {
this.yspeed = this.yspeed - (2 * timeStep);
} else if (this._y < ((fg.y + 2) * th)) {
this.yspeed = this.yspeed + (2 * timeStep);
}
if (((this._y + this.h) < (-fg._y)) || (this._y > ((-fg._y) + sph))) {
this.yspeed = this.yspeed * 2;
}
this._y = this._y + this.yspeed;
var _local8 = this.xspeed * timeStep;
if (((this._x + this.w) < (-fg._x)) || (this._x > ((-fg._x) + spw))) {
_local8 = _local8 * 2;
}
this._x = this._x + _local8;
this.gunrotation = (360 - ((Math.atan2((this._x + this.gfx._x) - (player._x + player.w2), (this._y + this.gfx._y) - (player._y + player.h2)) * 180) / Math.PI)) - 90;
var _local6 = (this.gunrotation - 15) + random(30);
var _local7 = this.realgunrotation;
_local6 = (_local6 + 360) % 360;
_local7 = (_local7 + 360) % 360;
var _local3 = _local6 - _local7;
_local3 = ((_local3 > 179) ? (-360 + _local3) : (_local3));
_local3 = ((_local3 < -179) ? (360 + _local3) : (_local3));
this.realgunrotation = this.realgunrotation + ((_local3 / 5) * timeStep);
if (this.realgunrotation < -180) {
this.realgunrotation = this.realgunrotation + 360;
}
if (this.realgunrotation > 180) {
this.realgunrotation = this.realgunrotation - 360;
}
this.gfx._rotation = this.realgunrotation;
var _local11 = int((this._y + this.h2) / th);
var _local12 = int((this._x + this.w2) / tw);
this.barUpdate(move);
if (this.health <= 0) {
this.gotoAndStop("dead");
this.gfx._xscale = this.dir * 100;
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(3, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
stats.totalenemies++;
this.particles = 6;
this.frame = enemyFall;
removeArrayNoClip(this, enemyArr);
particleArr.push(this);
this.rspeed = this.xspeed * 2;
}
}
function addHeli(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemyHeli", "enemy" + _local2, _local2);
_local1.w = 100;
_local1.h = 60;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.dir = 1;
_local1.ydir = 0;
_local1.yspeed = 0;
_local1.xspeed = 0;
if (random(100) > 50) {
_local1.vdir = -1;
} else {
_local1.vdir = 1;
}
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.reloadTime = 0;
_local1.realgunrotation = 180;
_local1.frame = enemyHeli;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 300));
_local1.hitFlash = false;
_local1.t = 0;
_local1.stop();
_local1.body.gun.stop();
_local1.middle = 100 + random(150);
_local1.xd = -150 + random(300);
_local1.yd = -200 + random(50);
_local1.collision = 0;
return(_local1);
}
function enemyHeli(timeStep, move) {
sbt.addTransformStartLoop("sHeli", sbt.STOPLOOP, 350, 0);
if (move) {
enemyShoot(this, this.body.gun.barrel, 26, machineGun, 5, 5, 10, 1);
if (this.health < 150) {
this.t++;
if (this.t > 5) {
this.t = 0;
var _local4 = addObject("smoke", (this._x + this.w2) - this.xspeed, this._y + this.h2, particleArr, smokeFrame);
_local4.scale(50);
}
}
}
if ((this.collision--) < 0) {
if ((this.middle--) > 0) {
if ((this.middle % 125) == 0) {
this.xd = -150 + random(300);
this.yd = -200 + random(50);
}
if (this._x > ((player._x + player.w2) + this.xd)) {
this.dir = -1;
} else if (this._x < (((player._x + player.w2) + this.xd) - 30)) {
this.dir = 1;
} else {
this.dir = 0;
this.xd = -150 + random(300);
}
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
} else if (this._y < (((player._y + player.h2) + this.yd) - 30)) {
this.ydir = 1;
} else {
this.ydir = 0;
}
} else {
if (this.ydir == 1) {
this.ydir = -1 + random(2);
}
if (this._y < ((-fg._y) - (this.h * 1.5))) {
this.ydir = 0;
}
if (this.dir == 0) {
if (random(100) > 50) {
this.dir = -1;
} else {
this.dir = 1;
}
}
if ((this._x > (((-fg._x) + spw) + this.w)) || (this._x < ((-fg._x) - this.w))) {
this.ydir = -1;
if (this._x > (((-fg._x) + spw) + this.w)) {
this.dir = -1;
} else {
this.dir = 1;
}
this.middle = 100 + random(150);
if (random(100) > 50) {
this.vdir = 1;
} else {
this.vdir = -1;
}
}
}
}
if (move) {
if (this.dir == 0) {
if (this.xspeed > 0) {
this.xspeed--;
}
if (this.xspeed < 0) {
this.xspeed++;
}
}
this.xspeed = this.xspeed + this.dir;
if (this.xspeed > 7) {
this.xspeed = 7;
}
if (this.xspeed < -7) {
this.xspeed = -7;
}
if (this.ydir == 0) {
if (this.yspeed > 0) {
this.yspeed--;
}
if (this.yspeed < 0) {
this.yspeed++;
}
}
this.yspeed = this.yspeed + this.ydir;
if (this.yspeed > 2) {
this.yspeed = 2;
}
if (this.yspeed < -2) {
this.yspeed = -2;
}
}
var _local9 = this.xspeed * timeStep;
if (((this._x + this.w) < (-fg._x)) || (this._x > ((-fg._x) + spw))) {
_local9 = _local9 * 2;
}
if (this.bombs) {
_local9 = _local9 * 1.2;
}
var _local10 = false;
if (this.xd >= 0) {
var _local13 = (this._x + this.w) + this.xd;
if (_local13 < clr) {
var _local8 = int(_local13 / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if (col[_local2][_local8]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
_local10 = true;
this.dir = -1;
this.ydir = -1;
this.collision = 10;
}
}
}
if ((_local10 == false) && (this.xd < 0)) {
var _local13 = this._x + this.xd;
if (_local13 > cll) {
var _local8 = int(_local13 / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if (col[_local2][_local8]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.dir = 1;
this.ydir = -1;
_local10 = true;
this.collision = 10;
}
}
}
this._x = this._x + _local9;
var _local18 = false;
if (this.ydir == 1) {
var _local7 = int(((this._y + this.h) + this.yspeed) / th);
var _local8 = int((this._x + 1) / tw);
var _local6 = int(((this._x + this.w) - 1) / th);
var _local4 = 0;
var _local2 = _local8;
while (_local2 <= _local6) {
if (col[_local7][_local2]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.yspeed = 0;
this.ydir = -1;
this.collision = 10;
}
}
if (this.ydir == -1) {
var _local7 = int((this._y - this.yspeed) / th);
var _local8 = int((this._x + 1) / tw);
var _local6 = int(((this._x + this.w) - 1) / th);
var _local4 = 0;
var _local2 = _local8;
while (_local2 <= _local6) {
if (col[_local7][_local2]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.yspeed = 0;
this.ydir = 1;
this.collision = 10;
}
}
this._y = this._y + (this.yspeed * timeStep);
this.body._rotation = this.xspeed;
var _local15 = 0;
var _local14 = 0;
this.gunrotation = (360 - ((Math.atan2((this._x + this.body._x) - ((player._x + player.w2) + _local15), (this._y + this.body._y) - ((player._y + player.h2) + _local14)) * 180) / Math.PI)) - 90;
var _local11 = (this.gunrotation - 5) + random(10);
var _local12 = this.realgunrotation;
_local11 = (_local11 + 360) % 360;
_local12 = (_local12 + 360) % 360;
var _local3 = _local11 - _local12;
_local3 = ((_local3 > 179) ? (-360 + _local3) : (_local3));
_local3 = ((_local3 < -179) ? (360 + _local3) : (_local3));
this.realgunrotation = this.realgunrotation + ((_local3 / 4) * timeStep);
if (this.realgunrotation < -180) {
this.realgunrotation = this.realgunrotation + 360;
}
if (this.realgunrotation > 180) {
this.realgunrotation = this.realgunrotation - 360;
}
if (this.vdir == 1) {
this.body._xscale = 100;
this.body.gun._rotation = this.realgunrotation;
this.hit._x = 30;
} else {
this.body._xscale = -100;
this.body.gun._rotation = 180 - this.realgunrotation;
this.hit._x = 0;
}
this.barUpdate(move);
if (this.health <= 0) {
this.gotoAndStop("dead");
this.gfx._xscale = this.vdir * 100;
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(5, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
sb.start("sBigExplosion");
stats.totalhelis++;
this.particles = 10;
this.frame = enemyFall;
removeArrayNoClip(this, enemyArr);
particleArr.push(this);
this.rspeed = this.xspeed * 2;
}
}
function addHeli2(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemyHeli2", "enemy" + _local2, _local2);
_local1.w = 130;
_local1.h = 70;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.dir = 1;
_local1.ydir = 0;
_local1.yspeed = 0;
_local1.xspeed = 0;
if (random(100) > 50) {
_local1.vdir = -1;
} else {
_local1.vdir = 1;
}
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.reloadTime = 0;
_local1.realgunrotation = 180;
_local1.frame = enemyHeli2;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 450));
_local1.hitFlash = false;
_local1.t = 0;
_local1.stop();
_local1.body.gun.stop();
_local1.middle = 100 + random(150);
_local1.xd = -150 + random(300);
_local1.yd = -200 + random(50);
_local1.collision = 0;
_local1.bombs = false;
_local1.bombtimer = 300 + random(300);
return(_local1);
}
function rocketLauncherNoSplash(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, rot, speed, rocketSetup, rocketFrameNoSplash, 3, damage, tarr, player);
if (player) {
ejectBrass(3, 0, 1);
addCamShake(5, true);
sb.start("sRocketlauncher");
}
}
function rocketFrameNoSplash(timeStep, move) {
if (move) {
this.t++;
if (this.t > 3) {
this.t = 0;
var _local8 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local8.scale(25);
}
}
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local5 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local6 = col[_local5][_local4];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = this.checkDown(_local4, _local5, timeStep);
}
for (var _local7 in this.arr) {
if (this.hitTest(this.arr[_local7].hit)) {
this.arr[_local7].health = this.arr[_local7].health - this.damage;
if (this.arr == enemyArr) {
stats.shotshit++;
}
_local6 = 1;
}
}
if ((((_local6 || (_local4 < (fg.x - 5))) || (_local4 > ((fg.x + stw) + 5))) || (_local5 < (fg.y - 5))) || (_local5 > ((fg.y + sth) + 5))) {
_local4 = int(this._x / tw);
_local5 = int(this._y / th);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local5) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("explosion", this._x, this._y, 0, 12);
removeArray(this, bulletArr);
}
}
function bombDrop(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, rot, speed, rocketSetup, bombFrame, 2, damage, tarr, player);
}
function bombFrame(timeStep, move) {
if (move) {
this.t++;
if (this.t > 3) {
this.t = 0;
var _local8 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local8.scale(25);
}
this.yspeed = this.yspeed + 0.5;
}
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local5 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local6 = col[_local5][_local4];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = this.checkDown(_local4, _local5, timeStep);
}
for (var _local7 in this.arr) {
if (this.hitTest(this.arr[_local7].hit)) {
this.arr[_local7].health = this.arr[_local7].health - this.damage;
if (this.arr == enemyArr) {
stats.shotshit++;
}
_local6 = 1;
}
}
if ((((_local6 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local5 < (fg.y - 2))) || (_local5 > ((fg.y + sth) + 2))) {
_local4 = int(this._x / tw);
_local5 = int(this._y / th);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local5) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("explosion", this._x, this._y, 0, 12);
removeArray(this, bulletArr);
}
}
function enemyHeli2(timeStep, move) {
sbt.addTransformStartLoop("sHeli", sbt.STOPLOOP, 350, 0);
if (move) {
this.bombtimer++;
if (this.bombs) {
if (this.bombtimer == 20) {
enemyShoot(this, this.body.bomb, -1, bombDrop, 1, 10, 0, 19, 90);
sb.start("sAirstrike");
this.bombtimer = 0;
}
}
enemyShoot(this, this.body.gun.barrel, 22, machineGun, 5, 5, 10, 1);
if (this.health < 150) {
this.t++;
if (this.t > 5) {
this.t = 0;
var _local4 = addObject("smoke", (this._x + this.w2) - this.xspeed, this._y + this.h2, particleArr, smokeFrame);
_local4.scale(50);
}
}
}
if ((this.collision--) < 0) {
if (this.bombs) {
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
} else if (this._y < (((player._y + player.h2) + this.yd) - 30)) {
this.ydir = 1;
} else {
this.ydir = 0;
}
if (((this.dir == 1) && (this._x > (((-fg._x) + spw) + this.w))) || ((this.dir == -1) && (this._x < ((-fg._x) - this.w)))) {
this.bombs = false;
this.middle = 0;
}
} else if ((this.middle--) > 0) {
if ((this.middle % 125) == 0) {
this.xd = -150 + random(300);
this.yd = -200 + random(50);
}
if (this._x > ((player._x + player.w2) + this.xd)) {
this.dir = -1;
} else if (this._x < (((player._x + player.w2) + this.xd) - 30)) {
this.dir = 1;
} else {
this.dir = 0;
this.xd = -150 + random(300);
}
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
} else if (this._y < (((player._y + player.h2) + this.yd) - 30)) {
this.ydir = 1;
} else {
this.ydir = 0;
}
} else {
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
}
if (this._y < ((-fg._y) - (this.h * 1.5))) {
if (this.bombtimer > 600) {
this.ydir = 1;
} else {
this.ydir = 1;
this.middle = 100 + random(150);
if (random(100) > 50) {
this.vdir = 1;
} else {
this.vdir = -1;
}
}
}
if (this.dir == 0) {
if (random(100) > 50) {
this.dir = -1;
} else {
this.dir = 1;
}
}
if ((this._x > (((-fg._x) + spw) + this.w)) || (this._x < ((-fg._x) - this.w))) {
this.ydir = -1;
if (this._x > (((-fg._x) + spw) + this.w)) {
this.dir = -1;
} else {
this.dir = 1;
}
if (this.bombtimer > (600 + random(150))) {
this.bombs = true;
this.bombtimer = 0;
}
this.middle = 100 + random(150);
if (random(100) > 50) {
this.vdir = 1;
} else {
this.vdir = -1;
}
}
}
}
if (move) {
if (this.dir == 0) {
if (this.xspeed > 0) {
this.xspeed--;
}
if (this.xspeed < 0) {
this.xspeed++;
}
}
this.xspeed = this.xspeed + this.dir;
if (this.xspeed > 6) {
this.xspeed = 6;
}
if (this.xspeed < -6) {
this.xspeed = -6;
}
if (this.ydir == 0) {
if (this.yspeed > 0) {
this.yspeed--;
}
if (this.yspeed < 0) {
this.yspeed++;
}
}
this.yspeed = this.yspeed + this.ydir;
if (this.yspeed > 2) {
this.yspeed = 2;
}
if (this.yspeed < -2) {
this.yspeed = -2;
}
}
var _local9 = this.xspeed * timeStep;
if (((this._x + this.w) < (-fg._x)) || (this._x > ((-fg._x) + spw))) {
_local9 = _local9 * 2;
}
if (this.bombs) {
_local9 = _local9 * 1.2;
}
var _local10 = false;
if (this.xd >= 0) {
var _local13 = (this._x + this.w) + this.xd;
if (_local13 < clr) {
var _local8 = int(_local13 / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if (col[_local2][_local8]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
_local10 = true;
this.dir = -1;
this.ydir = -1;
this.collision = 10;
this.bombs = false;
}
}
}
if ((_local10 == false) && (this.xd < 0)) {
var _local13 = this._x + this.xd;
if (_local13 > cll) {
var _local8 = int(_local13 / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if (col[_local2][_local8]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.dir = 1;
this.ydir = -1;
_local10 = true;
this.collision = 10;
this.bombs = false;
}
}
}
this._x = this._x + _local9;
var _local18 = false;
if (this.ydir == 1) {
var _local7 = int(((this._y + this.h) + this.yspeed) / th);
var _local8 = int((this._x + 1) / tw);
var _local6 = int(((this._x + this.w) - 1) / th);
var _local4 = 0;
var _local2 = _local8;
while (_local2 <= _local6) {
if (col[_local7][_local2]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.yspeed = 0;
this.ydir = -1;
this.collision = 10;
this.bombs = false;
}
}
if (this.ydir == -1) {
var _local7 = int((this._y - this.yspeed) / th);
var _local8 = int((this._x + 1) / tw);
var _local6 = int(((this._x + this.w) - 1) / th);
var _local4 = 0;
var _local2 = _local8;
while (_local2 <= _local6) {
if (col[_local7][_local2]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.yspeed = 0;
this.ydir = 1;
this.collision = 10;
this.bombs = false;
}
}
this._y = this._y + (this.yspeed * timeStep);
this.body._rotation = this.xspeed;
var _local15 = 0;
var _local14 = 0;
this.gunrotation = (360 - ((Math.atan2((this._x + this.body._x) - ((player._x + player.w2) + _local15), (this._y + this.body._y) - ((player._y + player.h2) + _local14)) * 180) / Math.PI)) - 90;
var _local11 = this.gunrotation;
var _local12 = this.realgunrotation;
_local11 = (_local11 + 360) % 360;
_local12 = (_local12 + 360) % 360;
var _local3 = _local11 - _local12;
_local3 = ((_local3 > 179) ? (-360 + _local3) : (_local3));
_local3 = ((_local3 < -179) ? (360 + _local3) : (_local3));
this.realgunrotation = this.realgunrotation + ((_local3 / 3) * timeStep);
if (this.realgunrotation < -180) {
this.realgunrotation = this.realgunrotation + 360;
}
if (this.realgunrotation > 180) {
this.realgunrotation = this.realgunrotation - 360;
}
if (this.vdir == 1) {
this.body._xscale = 100;
this.body.gun._rotation = this.realgunrotation;
this.hit._x = 30;
} else {
this.body._xscale = -100;
this.body.gun._rotation = 180 - this.realgunrotation;
this.hit._x = 0;
}
this.barUpdate(move);
if (this.health <= 0) {
this.gotoAndStop("dead");
this.gfx._xscale = this.vdir * 100;
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(5, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
sb.start("sBigExplosion");
stats.totalhelis++;
this.particles = 10;
this.frame = enemyFall;
removeArrayNoClip(this, enemyArr);
particleArr.push(this);
this.rspeed = this.xspeed * 1.5;
}
}
function addHeli3(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("enemyHeli3", "enemy" + _local2, _local2);
_local1.w = 215;
_local1.h = 90;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1.dir = 1;
_local1.ydir = 0;
_local1.yspeed = 0;
_local1.xspeed = 0;
if (random(100) > 50) {
_local1.vdir = -1;
} else {
_local1.vdir = 1;
}
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.reloadTime = 0;
_local1.realgunrotation = 180;
_local1.frame = enemyHeli3;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 600));
_local1.hitFlash = false;
_local1.t = 0;
_local1.stop();
_local1.body.gun.stop();
_local1.middle = 100 + random(150);
_local1.xd = -150 + random(300);
_local1.yd = -200 + random(50);
_local1.collision = 0;
_local1.bombs = false;
_local1.bombtimer = random(900);
_local1.spintimer = random(800);
_local1.spin = false;
return(_local1);
}
function enemyHeli3(timeStep, move) {
sbt.addTransformStartLoop("sHeli", sbt.STOPLOOP, 350, 0);
if (move) {
this.bombtimer++;
this.spintimer++;
if (this.bombs) {
if (this.bombtimer == 13) {
var _local16;
if (this.vdir == 1) {
_local16 = 25;
} else {
_local16 = 155;
}
enemyShoot(this, this.body.bomb, -1, rocketLauncherNoSplash, 10, 10, 5, 6, _local16);
sb.start("sRocketlauncher");
this.bombtimer = 0;
}
}
enemyShoot(this, this.body.gun.barrel, 20, machineGun, 5, 5, 10, 1);
if (this.health < 150) {
this.t++;
if (this.t > 5) {
this.t = 0;
var _local4 = addObject("smoke", (this._x + this.w2) - this.xspeed, this._y + this.h2, particleArr, smokeFrame);
_local4.scale(50);
}
}
}
if ((this.collision--) < 0) {
if (this.bombs) {
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
} else if (this._y < (((player._y + player.h2) + this.yd) - 30)) {
this.ydir = 1;
} else {
this.ydir = 0;
}
if (((this.dir == 1) && (this._x > (((-fg._x) + spw) + this.w))) || ((this.dir == -1) && (this._x < ((-fg._x) - this.w)))) {
this.bombs = false;
this.middle = 0;
}
} else if ((this.middle--) > 0) {
if ((this.middle % 125) == 0) {
this.xd = -150 + random(300);
this.yd = -250 + random(50);
}
if (this.spin == false) {
if (this.spintimer > (400 + random(400))) {
this.spin = true;
this.spinangle = 0;
this.middle++;
}
} else {
this.middle++;
}
if (this._x > ((player._x + player.w2) + this.xd)) {
this.dir = -1;
} else if (this._x < (((player._x + player.w2) + this.xd) - 30)) {
this.dir = 1;
} else {
this.dir = 0;
this.xd = -150 + random(300);
}
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
} else if (this._y < (((player._y + player.h2) + this.yd) - 30)) {
this.ydir = 1;
} else {
this.ydir = 0;
}
} else {
if (this._y > ((player._y + player.h2) + this.yd)) {
this.ydir = -1;
}
if (this._y < ((-fg._y) - (this.h * 1.5))) {
if (this.bombtimer > 800) {
this.ydir = 1;
} else {
this.ydir = 1;
this.middle = 100 + random(150);
if (random(100) > 50) {
this.vdir = 1;
} else {
this.vdir = -1;
}
}
}
if (this.dir == 0) {
if (random(100) > 50) {
this.dir = -1;
} else {
this.dir = 1;
}
}
if ((this._x > (((-fg._x) + spw) + this.w)) || (this._x < ((-fg._x) - this.w))) {
if (this._x > (((-fg._x) + spw) + this.w)) {
this.dir = -1;
} else {
this.dir = 1;
}
this.middle = 100 + random(150);
if (random(100) > 50) {
this.vdir = 1;
} else {
this.vdir = -1;
}
if (this.bombtimer > (600 + random(300))) {
this.bombs = true;
this.bombtimer = 0;
if (this.dir == 1) {
this.vdir = 1;
} else {
this.vdir = -1;
}
}
}
}
}
if (move) {
if (this.dir == 0) {
if (this.xspeed > 0) {
this.xspeed--;
}
if (this.xspeed < 0) {
this.xspeed++;
}
}
this.xspeed = this.xspeed + this.dir;
if (this.xspeed > 5) {
this.xspeed = 5;
}
if (this.xspeed < -5) {
this.xspeed = -5;
}
if (this.ydir == 0) {
if (this.yspeed > 0) {
this.yspeed--;
}
if (this.yspeed < 0) {
this.yspeed++;
}
}
this.yspeed = this.yspeed + this.ydir;
if (this.yspeed > 2) {
this.yspeed = 2;
}
if (this.yspeed < -2) {
this.yspeed = -2;
}
}
var _local9 = this.xspeed * timeStep;
if (((this._x + this.w) < (-fg._x)) || (this._x > ((-fg._x) + spw))) {
_local9 = _local9 * 2;
}
if (this.bombs) {
_local9 = _local9 * 1.2;
}
var _local10 = false;
if (this.xd >= 0) {
var _local13 = (this._x + this.w) + this.xd;
if (_local13 < clr) {
var _local8 = int(_local13 / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if (col[_local2][_local8]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
_local10 = true;
this.dir = -1;
this.ydir = -1;
this.collision = 10;
this.bombs = false;
}
}
}
if ((_local10 == false) && (this.xd < 0)) {
var _local13 = this._x + this.xd;
if (_local13 > cll) {
var _local8 = int(_local13 / tw);
var _local7 = int((this._y + 1) / th);
var _local5 = int(((this._y + this.h) - 1) / th);
var _local4 = 0;
var _local2 = _local7;
while (_local2 <= _local5) {
if (col[_local2][_local8]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.dir = 1;
this.ydir = -1;
_local10 = true;
this.collision = 10;
this.bombs = false;
}
}
}
this._x = this._x + _local9;
var _local19 = false;
if (this.ydir == 1) {
var _local7 = int(((this._y + this.h) + this.yspeed) / th);
var _local8 = int((this._x + 1) / tw);
var _local6 = int(((this._x + this.w) - 1) / th);
var _local4 = 0;
var _local2 = _local8;
while (_local2 <= _local6) {
if (col[_local7][_local2]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.yspeed = 0;
this.ydir = -1;
this.collision = 10;
this.bombs = false;
}
}
if (this.ydir == -1) {
var _local7 = int((this._y - this.yspeed) / th);
var _local8 = int((this._x + 1) / tw);
var _local6 = int(((this._x + this.w) - 1) / th);
var _local4 = 0;
var _local2 = _local8;
while (_local2 <= _local6) {
if (col[_local7][_local2]) {
_local4++;
break;
}
_local2++;
}
if (_local4) {
this.yspeed = 0;
this.ydir = 1;
this.collision = 10;
this.bombs = false;
}
}
this._y = this._y + (this.yspeed * timeStep);
var _local15 = player.xspeed * 2;
var _local14 = player.yspeed * 2;
if (this.spin) {
this.gunrotation = this.gunrotation + 5;
this.spinangle = this.spinangle + 5;
if (this.reloadTime < 18) {
this.reloadTime = 18;
}
if (this.spinangle > 720) {
this.spin = false;
this.spintimer = 0;
}
} else if (this.bombs) {
var _local16 = this.vdir * 25;
this.body._rotation = this.xspeed + _local16;
this.gunrotation = ((360 - ((Math.atan2((this._x + this.body._x) - ((player._x + player.w2) + _local15), (this._y + this.body._y) - ((player._y + player.h2) + _local14)) * 180) / Math.PI)) - 90) + _local16;
} else {
this.body._rotation = this.xspeed;
this.gunrotation = (360 - ((Math.atan2((this._x + this.body._x) - ((player._x + player.w2) + _local15), (this._y + this.body._y) - ((player._y + player.h2) + _local14)) * 180) / Math.PI)) - 90;
}
var _local11 = this.gunrotation;
var _local12 = this.realgunrotation;
_local11 = (_local11 + 360) % 360;
_local12 = (_local12 + 360) % 360;
var _local3 = _local11 - _local12;
_local3 = ((_local3 > 179) ? (-360 + _local3) : (_local3));
_local3 = ((_local3 < -179) ? (360 + _local3) : (_local3));
this.realgunrotation = this.realgunrotation + ((_local3 / 2) * timeStep);
if (this.realgunrotation < -180) {
this.realgunrotation = this.realgunrotation + 360;
}
if (this.realgunrotation > 180) {
this.realgunrotation = this.realgunrotation - 360;
}
if (this.vdir == 1) {
this.body._xscale = 100;
this.body.gun._rotation = this.realgunrotation;
this.hit._x = 30;
} else {
this.body._xscale = -100;
this.body.gun._rotation = 180 - this.realgunrotation;
this.hit._x = 0;
}
this.barUpdate(move);
if (this.health <= 0) {
this.gotoAndStop("dead");
this.gfx._xscale = this.vdir * 100;
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(5, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
this.kill(true);
sb.start("sBigExplosion");
stats.totalhelis++;
this.particles = 10;
this.frame = enemyFall;
removeArrayNoClip(this, enemyArr);
particleArr.push(this);
this.rspeed = this.xspeed;
}
}
function addTarget(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("target", "target" + _local2, _local2);
_local1.w = 32;
_local1.h = 32;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1._x = o.x * tw;
_local1._y = (o.y * th) - (_local1.h - th);
_local1.stop();
_local1.frame = targetFrame;
_local1.health = (_local1.lastHealth = (_local1.maxHealth = 25));
_local1.hitFlash = false;
_local1.t = 0;
_local1.o = o;
_local1.hit._visible = false;
_local1.frame(0, 0);
_local1.bar = null;
_local1.bartime = 0;
_local1.healthCheck = healthCheck;
_local1.barUpdate = barUpdate;
enemyArr.push(_local1);
return(_local1);
}
function targetFrame(timeStep, move) {
if (move) {
if (this._currentframe == this._totalframes) {
this.gotoAndStop(1);
} else {
this.nextFrame();
}
}
var _local3 = int((this._y + this.h2) / th);
var _local4 = int((this._x + this.w2) / tw);
this.barUpdate(move);
if (this.health <= 0) {
addExplosion("explosion", this._x + this.w2, this._y + this.h2, 0, 5);
addParticle(3, "metalShard", this._x + this.w2, this._y + this.h2, 6, 6, 10);
removeArray(this, enemyArr);
this._alpha = 0;
}
}
function addHelper(o) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie("helper", "helper" + _local2, _local2);
if (o.p & HELPER_HIDDEN) {
_local1._visible = false;
}
_local1.w = 32;
_local1.h = 32;
_local1.w2 = _local1.w / 2;
_local1.h2 = _local1.h / 2;
_local1._x = o.x * tw;
_local1._y = ((o.y * th) - (_local1.h - th)) + 1;
_local1.stop();
_local1.frame = helperFrame;
_local1.o = o;
_local1.t = 0;
particleArr.push(_local1);
_local1.blackhole = true;
return(_local1);
}
function helperFrame(timeStep, move) {
var _local2 = int((this._y + this.h2) / th);
var _local3 = int((this._x + this.w2) / tw);
if (this.hitTest(player.hit)) {
if (this.popup) {
removeArray(this.popup, particleArr);
}
if (this.o.p & HELPER_ONCE) {
this.popup = addCenteredPopUp(this._x + this.w2, this._y - this.h2, this.o.a[0], false, 0);
removeArray(this, particleArr);
} else {
this.popup = addCenteredPopUp(this._x + this.w2, this._y - this.h2, this.o.a[0], false, 65280, 75);
}
} else {
removeArray(this.popup, particleArr);
this.popup = false;
}
if ((((_local3 < (fg.x - 4)) || (_local3 > ((fg.x + stw) + 4))) || (_local2 < (fg.y - 4))) || (_local2 > ((fg.y + sth) + 4))) {
var _local5 = int(_local3 / etw);
var _local4 = int(_local2 / eth);
entities[(_local4 * ew) + _local5].push(this.o);
removeArray(this, particleArr);
}
}
enemyhitsound = 0;
function addBullet(x, y, rot, realrot, speed, setup, func, frame, damage, tarr, player) {
var _local2 = game.getNextHighestDepth();
var _local1 = null;
if (player) {
_local1 = game.attachMovie("bullet", "bullet_" + _local2, _local2);
} else {
_local1 = game.attachMovie("enemyBullet", "bullet_" + _local2, _local2);
}
_local1._x = x;
_local1._y = y;
_local1.sped = speed;
_local1.xspeed = speed * Math.cos(rot * pi180);
_local1.yspeed = speed * Math.sin(rot * pi180);
_local1.gotoAndStop(frame);
_local1._rotation = realrot;
_local1.frame = func;
_local1.damage = damage;
setup(_local1);
_local1.checkDown = checkDown;
_local1.w2 = 0;
_local1.h = 4;
_local1.ob = Number.NEGATIVE_INFINITY;
_local1.arr = tarr;
bulletArr.push(_local1);
return(_local1);
}
function aBombLauncher(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = addBullet(x, y, rot, rot, speed, rocketSetup, aBombFrame, 9, damage, tarr, player);
if (player) {
ejectBrass(3, 0, 1);
addCamShake(5, true);
attachEnvFlare(30, _local1);
sb.start("sABomb");
sb.start("sRocketlauncher");
}
}
function rocketLauncher(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, rot, speed, rocketSetup, rocketFrame, 3, damage, tarr, player);
if (player) {
ejectBrass(3, 0, 1);
addCamShake(5, true);
sb.start("sRocketlauncher");
}
}
function rocketSetup(clip) {
clip.t = 0;
}
function rocketFrame(timeStep, move) {
if (move) {
this.t++;
if (this.t > 3) {
this.t = 0;
var _local8 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local8.scale(25);
}
}
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local5 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local6 = col[_local5][_local4];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = this.checkDown(_local4, _local5, timeStep);
}
for (var _local7 in this.arr) {
if (this.hitTest(this.arr[_local7].hit)) {
this.arr[_local7].health = this.arr[_local7].health - this.damage;
stats.shotshit++;
_local6 = 1;
}
}
if ((((_local6 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local5 < (fg.y - 2))) || (_local5 > ((fg.y + sth) + 2))) {
_local4 = int(this._x / tw);
_local5 = int(this._y / th);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local5) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("explosion", this._x, this._y, 5, 12);
removeArray(this, bulletArr);
}
}
function guidedLauncher(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, rot, speed, rocketSetup, guidedFrame, 5, damage, tarr, player);
if (player) {
ejectBrass(3, 0, 1);
addCamShake(5, true);
sb.start("sRocketlauncher");
}
}
function seekerLauncher(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, rot, speed, rocketSetup, seekerFrame, 11, damage, tarr, player);
if (player) {
ejectBrass(3, 0, 1);
addCamShake(5, true);
sb.start("sRocketlauncher");
}
}
function guidedFrame(timeStep, move) {
if (move) {
this.t++;
if ((this.t % 3) == 0) {
var _local13 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local13.scale(25);
}
}
var _local10 = (360 - ((Math.atan2((fg._x + this._x) - _root._xmouse, (fg._y + this._y) - _root._ymouse) * 180) / Math.PI)) - 90;
var _local11 = this._rotation;
_local10 = (_local10 + 360) % 360;
_local11 = (_local11 + 360) % 360;
var _local8 = _local10 - _local11;
_local8 = ((_local8 > 179) ? (-360 + _local8) : (_local8));
_local8 = ((_local8 < -179) ? (360 + _local8) : (_local8));
this._rotation = this._rotation + ((_local8 / 10) * timeStep);
this.xspeed = this.sped * Math.cos(this._rotation * pi180);
this.yspeed = this.sped * Math.sin(this._rotation * pi180);
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local6 = int(this._y / th);
var _local5 = int(this._x / tw);
var _local7 = col[_local6][_local5];
if (((_local7 != 0) && (_local7 >= ANGLEUP)) && (_local7 < BREAKABLE)) {
_local7 = this.checkDown(_local5, _local6, timeStep);
}
for (var _local9 in this.arr) {
if (this.hitTest(this.arr[_local9].hit)) {
this.arr[_local9].health = this.arr[_local9].health - this.damage;
stats.shotshit++;
_local7 = 1;
}
}
if ((((((this.t > 320) || (_local7)) || (_local5 < (fg.x - 2))) || (_local5 > ((fg.x + stw) + 2))) || (_local6 < (fg.y - 2))) || (_local6 > ((fg.y + sth) + 2))) {
_local5 = int(this._x / tw);
_local6 = int(this._y / th);
var _local4 = _local6 - 1;
while (_local4 < (_local6 + 2)) {
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
if ((_local4 == _local6) || (_local3 == _local5)) {
breakTile(_local3, _local4);
}
_local3++;
}
_local4++;
}
addExplosion("explosion", this._x, this._y, 5, 12);
removeArray(this, bulletArr);
}
}
function seekerFrame(timeStep, move) {
if (move) {
this.t++;
if ((this.t % 3) == 0) {
var _local14 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local14.scale(25);
}
}
if (this.targets == null) {
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
} else {
var _local12 = (360 - ((Math.atan2(this._x - (this.targets._x + this.targets.w2), this._y - (this.targets._y + this.targets.h2)) * 180) / Math.PI)) - 90;
var _local13 = this._rotation;
_local12 = (_local12 + 360) % 360;
_local13 = (_local13 + 360) % 360;
var _local9 = _local12 - _local13;
_local9 = ((_local9 > 179) ? (-360 + _local9) : (_local9));
_local9 = ((_local9 < -179) ? (360 + _local9) : (_local9));
this._rotation = this._rotation + ((_local9 / 15) * timeStep);
this.xspeed = this.sped * Math.cos(this._rotation * pi180);
this.yspeed = this.sped * Math.sin(this._rotation * pi180);
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
}
var _local5 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local8 = col[_local5][_local4];
if (((_local8 != 0) && (_local8 >= ANGLEUP)) && (_local8 < BREAKABLE)) {
_local8 = this.checkDown(_local4, _local5, timeStep);
}
var _local7 = Number.POSITIVE_INFINITY;
this.targets = null;
for (var _local11 in this.arr) {
if (this.hitTest(this.arr[_local11].hit)) {
this.arr[_local11].health = this.arr[_local11].health - this.damage;
stats.shotshit++;
_local8 = 1;
}
var _local6 = Math.abs(this._x - this.arr[_local11]._x) + Math.abs(this._y - this.arr[_local11]._y);
if (_local6 < _local7) {
_local7 = _local6;
this.targets = this.arr[_local11];
}
}
if ((((((this.t > 320) || (_local8)) || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local5 < (fg.y - 2))) || (_local5 > ((fg.y + sth) + 2))) {
_local4 = int(this._x / tw);
_local5 = int(this._y / th);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local5) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("explosion", this._x, this._y, 5, 12);
removeArray(this, bulletArr);
}
}
function drunkenSetup(clip) {
clip.t = 0;
clip.rt = 0;
clip.re = random(35);
clip.rd = random(2);
clip.rs = 1 + random(2);
clip.rocket = rocketFrame;
}
function drunkenLauncher(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, rot, speed, drunkenSetup, drunkenFrame, 6, damage, tarr, player);
addBullet(x, y, rot, rot, speed, drunkenSetup, drunkenFrame, 6, damage, tarr, player);
addBullet(x, y, rot, rot, speed, drunkenSetup, drunkenFrame, 6, damage, tarr, player);
if (player) {
ejectBrass(3, 0, 1);
addCamShake(5, true);
sb.start("sRocketlauncher");
}
}
function drunkenFrame(timeStep, move) {
if (move) {
this.rt++;
if (this.rt > this.re) {
this.rd = !this.rd;
this.re = random(35);
this.rs = 1 + random(2);
this.rt = 0;
}
}
if (this.rd == 0) {
this._rotation = this._rotation + (this.rs * timeStep);
} else {
this._rotation = this._rotation - (this.rs * timeStep);
}
this.xspeed = this.sped * Math.cos(this._rotation * pi180);
this.yspeed = this.sped * Math.sin(this._rotation * pi180);
this.rocket(timeStep, move);
}
function RPG(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), random(360), speed, rocketSetup, RPGFrame, 8, damage, tarr, player);
sb.start("sGrenade");
}
function RPGFrame(timeStep, move) {
if (move) {
this.t++;
if ((this.t > 5) && (this.t < 12)) {
this.xspeed = this.xspeed * 2;
this.yspeed = this.yspeed * 2;
}
if ((this.t > 7) && ((this.t % 2) == 0)) {
var _local13 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local13.scale(25);
}
}
var _local10 = this._x + (this.xspeed * timeStep);
var _local9 = this._y + (this.yspeed * timeStep);
this._rotation = this._rotation + (Math.abs(this.xspeed + this.yspeed) * timeStep);
var _local5 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local8 = col[_local5][_local4];
if (((_local8 != 0) && (_local8 >= ANGLEUP)) && (_local8 < BREAKABLE)) {
_local8 = this.checkDown(_local4, _local5, timeStep);
}
for (var _local11 in this.arr) {
var _local6 = this.arr[_local11].hit;
var _local7 = _local6.getBounds(fg);
if (lineRectangleHitTest(_local7.xMin, _local7.yMin, _local6._width, _local6._height, this._x, this._y, _local10, _local9)) {
this.arr[_local11].health = this.arr[_local11].health - this.damage;
_local8 = -1;
break;
}
}
if ((((_local8 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local5 < (fg.y - 2))) || (_local5 > ((fg.y + sth) + 2))) {
breakTile(_local4, _local5);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local5) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("explosion", this._x, this._y, 5, 12);
removeArray(this, bulletArr);
}
this._x = _local10;
this._y = _local9;
}
function aBombFrame(timeStep, move) {
if (move) {
this.t++;
if (this.t > 3) {
this.t = 0;
var _local9 = addObject("smoke", this._x, this._y, particleArr, smokeFrame);
_local9.scale(35);
}
}
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local5 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local6 = col[_local5][_local4];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = this.checkDown(_local4, _local5, timeStep);
}
for (var _local7 in this.arr) {
if (this.hitTest(this.arr[_local7].hit)) {
this.arr[_local7].health = this.arr[_local7].health - this.damage;
stats.shotshit++;
_local6 = 1;
}
}
if ((((_local6 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local5 < (fg.y - 2))) || (_local5 > ((fg.y + sth) + 2))) {
_local4 = int(this._x / tw);
_local5 = int(this._y / th);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
breakTile(_local2, _local3);
_local2++;
}
_local3++;
}
var _local8 = addExplosion("nuke", this._x, this._y, 50, 0);
_local8.scale(150);
_local8._rotation = 0;
sb.start("sBigExplosion");
attachEnvFlare(Number.POSITIVE_INFINITY, _local8);
addCamShake(50, false);
removeArray(this, bulletArr);
}
}
function grenadeLauncher(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), random(360), speed, grenadeSetup, grenadeFrame, 7, damage, tarr, player);
sb.start("sGrenade");
}
function grenade(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), random(360), speed, grenadeSetup, grenadeFrame, 2, damage, tarr, player);
sb.start("sKnife");
}
function grenadeSetup(clip) {
clip.hits = 0;
}
function grenadeFrame(timeStep, move) {
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed++;
}
}
var _local4 = int((this._x + (this.xspeed * timeStep)) / tw);
var _local5 = int(this._y / th);
var _local6 = col[_local5][_local4];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = 0;
}
if (_local6) {
this.hits++;
if (_local6 & BREAKABLE) {
this.hits = Number.POSITIVE_INFINITY;
this._x = this._x + (this.xspeed * timeStep);
}
this.xspeed = this.xspeed * -1;
} else {
this._x = this._x + (this.xspeed * timeStep);
}
_local4 = int(this._x / tw);
_local5 = int((this._y + (this.yspeed * timeStep)) / th);
_local6 = col[_local5][_local4];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = this.checkDown(_local4, _local5, timeStep);
if (_local6) {
this._y = this._y + ((this.yspeed * timeStep) * -1);
}
}
if (_local6) {
this.hits++;
if (_local6 & BREAKABLE) {
this.hits = Number.POSITIVE_INFINITY;
this._y = this._y + (this.yspeed * timeStep);
}
this.yspeed = this.yspeed * -0.5;
} else {
this._y = this._y + (this.yspeed * timeStep);
}
this._rotation = this._rotation + (Math.abs(this.xspeed + this.yspeed) * timeStep);
for (var _local8 in this.arr) {
if (this.hitTest(this.arr[_local8].hit)) {
this.arr[_local8].health = this.arr[_local8].health - this.damage;
stats.shotshit++;
this.hits = Number.POSITIVE_INFINITY;
}
}
if (((((this.hits >= 4) || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local5 < (fg.y - 2))) || (_local5 > ((fg.y + sth) + 2))) {
_local4 = int(this._x / tw);
_local5 = int(this._y / th);
var _local3 = _local5 - 1;
while (_local3 < (_local5 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local5) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("explosion", this._x, this._y, 5, 12);
removeArray(this, bulletArr);
}
}
function sparkPlug(x, y, rot, speed, damage, aim, tarr, player) {
sparkSetup(addBullet(x, y, rot, rot, speed, null, sparkFrame, 12, damage, tarr, player), -4, -1);
sparkSetup(addBullet(x, y, rot, rot, speed, null, sparkFrame, 12, damage, tarr, player), 4, 1);
sb.start("sSparkplug");
}
function sparkSetup(clip, pspeed, gravity) {
clip.x = clip._x;
clip.y = clip._y;
clip.phasespeed = pspeed;
clip.grav = pspeed + gravity;
clip.xspeed2 = 1 * Math.cos((clip._rotation + 90) * pi180);
clip.yspeed2 = 1 * Math.sin((clip._rotation + 90) * pi180);
}
function sparkFrame(timeStep, move) {
if (move) {
if (this.phasespeed > 0) {
this.grav--;
} else {
this.grav++;
}
}
this.phasespeed = this.phasespeed + (this.grav * timeStep);
this.x = this.x + (this.xspeed * timeStep);
this.y = this.y + (this.yspeed * timeStep);
this._x = this.x + (this.xspeed2 * this.phasespeed);
this._y = this.y + (this.yspeed2 * this.phasespeed);
var _local3 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local2 = col[_local3][_local4];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local4, _local3, timeStep);
}
for (var _local5 in this.arr) {
if (this.hitTest(this.arr[_local5].hit)) {
this.arr[_local5].health = this.arr[_local5].health - this.damage;
stats.shotshit++;
_local2 = 1;
}
}
if ((((_local2 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local3 < (fg.y - 2))) || (_local3 > ((fg.y + sth) + 2))) {
breakTile(_local4, _local3);
removeArray(this, bulletArr);
}
}
function railGun(dx, dy, rot, speed, damage, aim, arr) {
var _local10 = addObject("bullet", dx, dy, particleArr, fadeFrame);
_local10._rotation = rot;
_local10.gotoAndStop(10);
var _local7 = dx + (speed * Math.cos(rot * pi180));
var _local6 = dy + (speed * Math.sin(rot * pi180));
for (var _local9 in arr) {
var _local1 = arr[_local9].hit;
var _local2 = _local1.getBounds(fg);
if (lineRectangleHitTest(_local2.xMin, _local2.yMin, _local1._width, _local1._height, dx, dy, _local7, _local6)) {
arr[_local9].health = arr[_local9].health - damage;
}
}
sb.start("sRailgun");
}
function enemySuckFrame(timeStep, move) {
this.gotoAndStop("dead");
this.gfx._rotation = this.gfx._rotation + (5 * timeStep);
this._alpha = this._alpha - (5 * timeStep);
this._x = this._x + (((this.targetx - this._x) / 10) * timeStep);
this._y = this._y + (((this.targety - this._y) / 10) * timeStep);
if ((this._x > (this.targetx - 5)) && (this._x < (this.targetx + 5))) {
if ((this._y > (this.targety - 5)) && (this._y < (this.targety + 5))) {
if (this._alpha <= 0) {
removeArray(this, particleArr);
}
}
}
}
function suckFrame(timeStep, move) {
this._rotation = this._rotation + (5 * timeStep);
this._alpha = this._alpha - (5 * timeStep);
this._x = this._x + (((this.targetx - this._x) / 10) * timeStep);
this._y = this._y + (((this.targety - this._y) / 10) * timeStep);
if ((this._x > (this.targetx - 5)) && (this._x < (this.targetx + 5))) {
if ((this._y > (this.targety - 5)) && (this._y < (this.targety + 5))) {
if (this._alpha <= 0) {
removeArray(this, particleArr);
}
}
}
}
function blackHoleFrame(timeStep, move) {
if (this.t < 50) {
for (var _local3 in enemyArr) {
if (enemyArr[_local3].blackhole != true) {
if (this.hitTest(enemyArr[_local3].hit)) {
var _local2 = enemyArr[_local3];
_local2.health = 0;
_local2.kill(true);
_local2.frame = enemySuckFrame;
_local2.targetx = this._x;
_local2.targety = this._y;
_local2.blackhole = true;
particleArr.push(_local2);
_local2.bar.removeMovieClip("");
enemyArr.splice(Number(_local3), 1);
}
}
}
for (var _local3 in bulletArr) {
if (bulletArr[_local3].blackhole != true) {
if (this.hitTest(bulletArr[_local3])) {
var _local2 = bulletArr[_local3];
_local2.frame = suckFrame;
_local2.targetx = this._x;
_local2.targety = this._y;
_local2.blackhole = true;
particleArr.push(_local2);
bulletArr.splice(Number(_local3), 1);
}
}
}
for (var _local3 in particleArr) {
if (particleArr[_local3].blackhole != true) {
if (this.hitTest(particleArr[_local3])) {
var _local2 = particleArr[_local3];
_local2.frame = suckFrame;
_local2.targetx = this._x;
_local2.targety = this._y;
_local2.blackhole = true;
particleArr.push(_local2);
particleArr.splice(Number(_local3), 1);
}
}
}
}
this._rotation = this._rotation + (1 * timeStep);
if ((this.t == 0) && (this._xscale < 2000)) {
this._xscale = (this._yscale = this._yscale + ((this._yscale / 10) * timeStep));
} else {
if (move) {
this.t++;
}
if (this.t > 75) {
this._alpha = this._alpha - (10 * timeStep);
this._xscale = (this._yscale = this._yscale - (200 * timeStep));
this._rotation = this._rotation + (5 * timeStep);
if (this._alpha <= 0) {
removeArray(this, bulletArr);
}
}
}
}
function blackHoleGenerator(dx, dy, rot, speed, damage, aim, arr) {
var _local1 = addObject("blackHole", dx, dy, bulletArr, blackHoleFrame);
_local1.t = 0;
_local1._rotation = random(360);
_local1.blackhole = true;
attachEnvFlare(125, player);
addCamShake(125, false);
sb.start("sBlackhole");
}
function airStrikeFrame(timeStep, move) {
if (move) {
this.t++;
if (this.t > 40) {
if ((this.t % 4) == 0) {
var _local2 = 90;
var _local3 = int((fg.y * th) / th);
if ((this.t % 8) == 0) {
sb.start("sAirstrike");
}
if (this.dir == 1) {
var _local4 = int((((this._x - (spw / 2)) + ((this.t - 39) * 10)) - player.xcamdif) / th);
if (!col[_local3][_local4]) {
addBullet(((this._x - (spw / 2)) + ((this.t - 39) * 10)) - player.xcamdif, fg.y * th, _local2, _local2, 5, rocketSetup, bombFrame, 23, 50, enemyArr, true);
}
} else {
var _local4 = int((((this._x + (spw / 2)) - ((this.t - 39) * 10)) - player.xcamdif) / th);
if (!col[_local3][_local4]) {
addBullet(((this._x + (spw / 2)) - ((this.t - 39) * 10)) - player.xcamdif, fg.y * th, _local2, _local2, 5, rocketSetup, bombFrame, 23, 50, enemyArr, true);
}
}
}
}
if (this.t > 87) {
removeArray(this, bulletArr);
}
}
}
function airStrike(dx, dy, rot, speed, damage, aim, tarr, player) {
var _local1 = addBullet(dx, dy, rot, rot, speed, rocketSetup, airStrikeFrame, 13, damage, tarr, player);
_local1.dir = random(2);
attachEnvFlare(10, _local1);
sb.start("sAirstrikeCall");
}
function knife(dx, dy, rot, speed, damage, aim, arr) {
var _local15 = (tw / 2) * Math.cos(rot * pi180);
var _local13 = (th / 2) * Math.sin(rot * pi180);
var _local5 = dx + (speed * Math.cos(rot * pi180));
var _local4 = dy + (speed * Math.sin(rot * pi180));
var _local11 = int(dy / th);
var _local12 = int(dx / tw);
breakTile(_local12, _local11);
_local11 = int(_local4 / th);
_local12 = int(_local5 / tw);
breakTile(_local12, _local11);
for (var _local9 in arr) {
var _local1 = arr[_local9].hit;
var _local2 = _local1.getBounds(fg);
if (lineRectangleHitTest(_local2.xMin, _local2.yMin, _local1._width, _local1._height, dx, dy, _local5, _local4)) {
arr[_local9].health = arr[_local9].health - damage;
}
}
sb.start("sKnife");
}
function flameSetup(clip) {
clip.g = true;
clip._xscale = (clip._yscale = 10);
}
function flameFrame(timeStep, move) {
this.scale(this._xscale + (5 * timeStep));
this._alpha = ((1 - (this._xscale / 150)) * 100) * 1.5;
var _local5 = int((this._y + this.yspeed) / th);
var _local6 = int((this._x + this.xspeed) / tw);
var _local2 = col[_local5][_local6];
if ((((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) || (_local2 & BREAKABLE)) {
_local2 = this.checkDown(_local6, _local5, timeStep);
}
if (_local2) {
this._rotation = this._rotation + (150 + random(60));
this.sped = this.sped * 0.5;
this.xspeed = this.sped * Math.cos(this._rotation * pi180);
this.yspeed = this.sped * Math.sin(this._rotation * pi180);
} else {
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
}
for (var _local4 in this.arr) {
if (this.hitTest(this.arr[_local4].hit)) {
this.arr[_local4].health = this.arr[_local4].health - ((this.damage * (1 - (this._xscale / 150))) * timeStep);
if (this.g) {
stats.shotshit++;
this.g = false;
}
_local2 = 1;
}
}
breakTile(_local6, _local5);
if (this._xscale > 120) {
removeArray(this, bulletArr);
}
}
function flameThrower(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), rot, speed, flameSetup, flameFrame, 4, damage, tarr, player);
sbt.addTransformStartLoop("sFlame", sbt.STOPLOOP, 350, 0);
}
function mac10(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = random(aim * 2);
addBullet(x, y, (rot - aim) + _local1, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, (rot - aim) + _local1, 0, speed, null, bulletFrame, 1, damage, tarr, player).frame(1, 1);
if (player) {
brass++;
if (brass > 5) {
brass = 0;
ejectBrass(2, -0.5 + (Math.random() * 1), -6);
ejectBrass(2, -0.5 + (Math.random() * 1), -3);
}
sb.start("sBulletSmall" + random(4));
}
}
function machineGun(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), 0, speed, null, bulletFrame, 1, damage, tarr, player);
if (player) {
brass++;
if (brass > 3) {
brass = 0;
ejectBrass(2, -0.5 + (Math.random() * 1), -6);
}
sb.start("sBulletSmall" + random(4));
}
}
function shotGunRockets(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot - 10, rot - 10, speed, rocketSetup, rocketFrame, 3, damage, tarr, player).scale(75);
addBullet(x, y, rot, rot, speed, rocketSetup, rocketFrame, 3, damage, tarr, player).scale(75);
addBullet(x, y, rot + 10, rot + 10, speed, rocketSetup, rocketFrame, 3, damage, tarr, player).scale(75);
sb.start("sShotgun");
}
function shotGun(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot - 6, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot - 2, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot + 2, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot + 6, 0, speed, null, bulletFrame, 1, damage, tarr, player);
sb.start("sShotgun");
}
function doubleShotGun(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot - 15, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot - 10, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot - 5, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot + 5, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot + 10, 0, speed, null, bulletFrame, 1, damage, tarr, player);
addBullet(x, y, rot + 15, 0, speed, null, bulletFrame, 1, damage, tarr, player);
sb.start("sShotgun");
}
function bowArrow(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = (-aim) + random(aim * 2);
addBullet(x, y, rot + _local1, rot + _local1, speed, arrowSetup, arrowFrame, 14, damage, tarr, player);
sb.start("sKnife");
}
function arrowSetup(clip) {
clip.t = 0;
}
function arrowFrameStuck(timeStep, move) {
if (move) {
this.t++;
}
if (this.t > 90) {
this._alpha = this._alpha - (10 * timeStep);
}
if (((((this.x < (fg.x - 2)) || (this.x > ((fg.x + stw) + 2))) || (this.y < (fg.y - 2))) || (this.y > ((fg.y + sth) + 2))) || (this.t > 100)) {
removeArray(this, bulletArr);
}
}
function arrowFrame(timeStep, move) {
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + (0.5 * timeStep);
}
this._rotation = ((Math.atan2(this._y - (this._y + this.yspeed), this._x - (this._x + this.xspeed)) * 180) / Math.PI) + 180;
var _local3 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local2 = col[_local3][_local4];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local4, _local3, timeStep);
if (_local2) {
this._y = _local2;
this.t = 0;
this.x = _local4;
this.y = _local3;
this.frame = arrowFrameStuck;
}
}
for (var _local5 in this.arr) {
if (this.hitTest(this.arr[_local5].hit)) {
this.arr[_local5].health = this.arr[_local5].health - this.damage;
stats.shotshit++;
_local2 = -1;
}
}
if ((((_local2 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local3 < (fg.y - 2))) || (_local3 > ((fg.y + sth) + 2))) {
if ((!breakTile(_local4, _local3)) && (_local2 != -1)) {
this.t = 0;
this.x = _local4;
this.y = _local3;
this.frame = arrowFrameStuck;
} else {
removeArray(this, bulletArr);
}
}
}
function anytime(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = (-aim) + random(aim * 2);
var _local2 = addBullet(x, y, rot + _local1, rot + _local1, speed, null, anytimeFrame, 17, damage, tarr, player);
attachEnvFlare(Number.POSITIVE_INFINITY, _local2);
sb.start("sRailgun");
}
function anytimeFrame(timeStep, move) {
var _local10 = this._x + (this.xspeed * timeStep);
var _local9 = this._y + (this.yspeed * timeStep);
var _local6 = int(_local9 / th);
var _local4 = int(_local10 / tw);
var _local8 = col[_local6][_local4];
if (((_local8 != 0) && (_local8 >= ANGLEUP)) && (_local8 < BREAKABLE)) {
_local8 = this.checkDown(_local4, _local6, timeStep);
}
for (var _local12 in this.arr) {
var _local5 = this.arr[_local12].hit;
var _local7 = _local5.getBounds(fg);
if (lineRectangleHitTest(_local7.xMin, _local7.yMin, _local5._width, _local5._height, this._x, this._y, _local10, _local9)) {
this.arr[_local12].health = this.arr[_local12].health - (this.damage * timeStep);
_local8 = -1;
}
}
if ((_local8 & BREAKABLE) || (_local8 == -1)) {
if (_local8 & BREAKABLE) {
_local8 = 0;
}
var _local3 = _local6 - 1;
while (_local3 < (_local6 + 2)) {
var _local2 = _local4 - 1;
while (_local2 < (_local4 + 2)) {
if ((_local3 == _local6) || (_local2 == _local4)) {
breakTile(_local2, _local3);
}
_local2++;
}
_local3++;
}
addExplosion("purpleExplosion", _local10, _local9, 5, 12);
}
if ((((_local4 < (fg.x - 2)) || (_local4 > ((fg.x + stw) + 2))) || (_local6 < (fg.y - 2))) || (_local6 > ((fg.y + sth) + 2))) {
addExplosion("purpleExplosion", _local10, _local9, 5, 12);
removeArray(this, bulletArr);
}
this._x = _local10;
this._y = _local9;
}
function flakCannon(x, y, rot, speed, damage, aim, tarr, player) {
var _local2 = 0;
while (_local2 < 20) {
var _local1 = (-aim) + random(aim * 2);
addBullet(x, y, rot + _local1, rot + _local1, speed + random(speed), null, flakFrame, 16, damage, tarr, player).rspeed = 10 + random(20);
_local2++;
}
if (player) {
ejectBrass(3, -0.5 + (Math.random() * 1), -6);
addCamShake(5, true);
sb.start("sBullet");
}
}
function flakFrame(timeStep, move) {
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + (0.5 * timeStep);
}
this._rotation = this._rotation + (this.rspeed * timeStep);
var _local3 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local2 = col[_local3][_local4];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local4, _local3, timeStep);
}
for (var _local5 in this.arr) {
if (this.hitTest(this.arr[_local5].hit)) {
this.arr[_local5].health = this.arr[_local5].health - this.damage;
stats.shotshit++;
_local2 = -1;
}
}
if ((((_local2 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local3 < (fg.y - 2))) || (_local3 > ((fg.y + sth) + 2))) {
breakTile(_local4, _local3);
removeArray(this, bulletArr);
}
}
function laserShotGun(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot - 10, rot - 10, speed, rocketSetup, laserFrame, 15, damage, tarr, player);
addBullet(x, y, rot, rot, speed, rocketSetup, laserFrame, 15, damage, tarr, player);
addBullet(x, y, rot + 10, rot + 10, speed, rocketSetup, laserFrame, 15, damage, tarr, player);
sb.start("sLaser");
sb.start("sShotgun");
}
function sniperGun(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), 0, speed, null, sniperFrame, 1, damage, tarr, player);
if (player) {
ejectBrass(2, -0.5 + (Math.random() * 1), -6);
sb.start("sBullet");
}
}
function sniperFrame(timeStep, move) {
var _local6 = this._x + (this.xspeed * timeStep);
var _local5 = this._y + (this.yspeed * timeStep);
var _local7 = int(_local5 / th);
var _local8 = int(_local6 / tw);
var _local4 = col[_local7][_local8];
if (((_local4 != 0) && (_local4 >= ANGLEUP)) && (_local4 < BREAKABLE)) {
_local4 = this.checkDown(_local8, _local7, timeStep);
}
for (var _local9 in this.arr) {
var _local2 = this.arr[_local9].hit;
var _local3 = _local2.getBounds(fg);
if (lineRectangleHitTest(_local3.xMin, _local3.yMin, _local2._width, _local2._height, this._x, this._y, _local6, _local5)) {
this.arr[_local9].health = this.arr[_local9].health - this.damage;
_local4 = -1;
break;
}
}
if ((((_local4 || (_local8 < (fg.x - 2))) || (_local8 > ((fg.x + stw) + 2))) || (_local7 < (fg.y - 2))) || (_local7 > ((fg.y + sth) + 2))) {
breakTile(_local8, _local7);
removeArray(this, bulletArr);
}
this._x = _local6;
this._y = _local5;
}
function laserGun(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = (-aim) + random(aim * 2);
addBullet(x, y, rot + _local1, rot + _local1, speed, rocketSetup, laserFrame, 15, damage, tarr, player);
sb.start("sLaser");
}
function laserFrame(timeStep, move) {
var _local5 = this._x + (this.xspeed * timeStep);
var _local4 = this._y + (this.yspeed * timeStep);
var _local8 = int(_local4 / th);
var _local9 = int(_local5 / tw);
var _local7 = col[_local8][_local9];
if (((_local7 != 0) && (_local7 >= ANGLEUP)) && (_local7 < BREAKABLE)) {
_local7 = this.checkDown(_local9, _local8, timeStep);
}
for (var _local10 in this.arr) {
var _local2 = this.arr[_local10].hit;
var _local3 = _local2.getBounds(fg);
if (lineRectangleHitTest(_local3.xMin, _local3.yMin, _local2._width, _local2._height, this._x, this._y, _local5, _local4)) {
this.arr[_local10].health = this.arr[_local10].health - (this.damage * timeStep);
if (this.shotshityo == undefined) {
stats.shotshit++;
this.shotshityo = true;
}
}
}
if ((((_local7 || (_local9 < (fg.x - 2))) || (_local9 > ((fg.x + stw) + 2))) || (_local8 < (fg.y - 2))) || (_local8 > ((fg.y + sth) + 2))) {
breakTile(_local9, _local8);
removeArray(this, bulletArr);
}
this._x = _local5;
this._y = _local4;
}
function bulletFrame(timeStep, move) {
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local3 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local2 = col[_local3][_local4];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local4, _local3, timeStep);
}
for (var _local5 in this.arr) {
if (this.hitTest(this.arr[_local5].hit)) {
this.arr[_local5].health = this.arr[_local5].health - this.damage;
if (this.arr == enemyArr) {
stats.shotshit++;
}
_local2 = 1;
}
}
if ((((_local2 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local3 < (fg.y - 2))) || (_local3 > ((fg.y + sth) + 2))) {
breakTile(_local4, _local3);
removeArray(this, bulletArr);
}
}
function gooGun(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, (rot - aim) + random(aim * 2), rot, speed, gooSetup, gooFrame, 19, damage, tarr, player);
sb.start("sGooGun");
}
function gooSetup(clip) {
clip.t = 0;
}
function gooFrameStuck(timeStep, move) {
if (move) {
this.t++;
}
var _local2 = 0;
for (var _local3 in this.arr) {
if (this.hitTest(this.arr[_local3].hit)) {
this.arr[_local3].health = this.arr[_local3].health - this.damage;
stats.shotshit++;
_local2 = -1;
}
}
if (((((_local2 || (this.x < (fg.x - 2))) || (this.x > ((fg.x + stw) + 2))) || (this.y < (fg.y - 2))) || (this.y > ((fg.y + sth) + 2))) || (this.t > 250)) {
addExplosion("gooSplat", this._x, this._y, 0, 0);
removeArray(this, bulletArr);
}
}
function gooFrame(timeStep, move) {
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
if (this.yspeed < (tw / 2)) {
this.yspeed = this.yspeed + (0.5 * timeStep);
}
this._rotation = ((Math.atan2(this._y - (this._y + this.yspeed), this._x - (this._x + this.xspeed)) * 180) / Math.PI) + 180;
var _local3 = int(this._y / th);
var _local4 = int(this._x / tw);
var _local2 = col[_local3][_local4];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local4, _local3, timeStep);
if (_local2) {
this.x = _local4;
this.y = _local3;
this._y = _local2;
this.frame = gooFrameStuck;
sb.start("sGooHit");
}
}
for (var _local5 in this.arr) {
if (this.hitTest(this.arr[_local5].hit)) {
this.arr[_local5].health = this.arr[_local5].health - this.damage;
stats.shotshit++;
_local2 = -1;
}
}
if ((((_local2 || (_local4 < (fg.x - 2))) || (_local4 > ((fg.x + stw) + 2))) || (_local3 < (fg.y - 2))) || (_local3 > ((fg.y + sth) + 2))) {
if ((!breakTile(_local4, _local3)) && (_local2 != -1)) {
this.x = _local4;
this.y = _local3;
this._x = this._x - ((this.xspeed * timeStep) / 2);
this.frame = gooFrameStuck;
sb.start("sGooHit");
} else {
addExplosion("gooSplat", this._x, this._y, 0, 0);
removeArray(this, bulletArr);
}
}
}
function taser(x, y, rot, speed, damage, aim, tarr, player) {
addBullet(x, y, rot, 0, speed, taserSetup, taserFrame, 18, damage, tarr, player).gfx._rotation = rot;
sb.start("sTaser");
}
function taserSetup(clip) {
clip.target = null;
clip.xd = 0;
clip.yd = 0;
clip.t = 0;
}
function taserStuckFrame(timeStep, move) {
this.clear();
this.lineStyle(2, 0, 100);
this.moveTo(0, 0);
this.lineTo((player._x + player.w2) - this._x, (player._y + player.h2) - this._y);
this._x = this.target._x + this.xd;
this._y = this.target._y + this.yd;
this._rotation = this.target._rotation;
if (move) {
this.t++;
this.target.health = this.target.health - this.damage;
}
if ((this.t % 2) == 0) {
if ((this.t % 4) == 0) {
var _local2 = new Color(this.target);
_local2.setTransform(normalColor);
} else {
var _local2 = new Color(this.target);
_local2.setTransform(invColor);
}
}
if ((this.target.health <= 0) || (this.t > 500)) {
removeArray(this, bulletArr);
}
}
function taserFrame(timeStep, move) {
var _local5 = this._x + (this.xspeed * timeStep);
var _local4 = this._y + (this.yspeed * timeStep);
var _local8 = int(_local4 / th);
var _local9 = int(_local5 / tw);
var _local6 = col[_local8][_local9];
if (((_local6 != 0) && (_local6 >= ANGLEUP)) && (_local6 < BREAKABLE)) {
_local6 = this.checkDown(_local9, _local8, timeStep);
}
for (var _local7 in this.arr) {
var _local2 = this.arr[_local7].hit;
var _local3 = _local2.getBounds(fg);
if (lineRectangleHitTest(_local3.xMin, _local3.yMin, _local2._width, _local2._height, this._x, this._y, _local5, _local4)) {
this.frame = taserStuckFrame;
this.target = this.arr[_local7];
this._x = _local5;
this._y = _local4;
this.xd = this._x - this.target._x;
this.yd = this._y - this.target._y;
attachEnvFlare(Number.POSITIVE_INFINITY, this);
}
}
if ((((_local6 || (_local9 < (fg.x - 2))) || (_local9 > ((fg.x + stw) + 2))) || (_local8 < (fg.y - 2))) || (_local8 > ((fg.y + sth) + 2))) {
removeArray(this, bulletArr);
}
this._x = _local5;
this._y = _local4;
this.clear();
this.lineStyle(2, 0, 100);
this.moveTo(0, 0);
this.lineTo((player._x + player.w2) - this._x, (player._y + player.h2) - this._y);
}
function bladerang(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = (-aim) + random(aim * 2);
addBullet(x, y, rot + _local1, rot + _local1, speed, bladerangSetup, bladerangFrame, 20, damage, tarr, player);
sb.start("sBladerang");
}
function bladerangSetup(clip) {
clip.tspeed = 20;
clip.addy = 0;
}
function bladerangFrame(timeStep, move) {
this._x = this._x + ((this.tspeed * this.xspeed) * timeStep);
this._y = this._y + (((this.tspeed * this.yspeed) + this.addy) * timeStep);
if (move) {
if (this.tspeed < -15) {
this.addy = this.addy + 0.5;
} else {
this.tspeed--;
}
}
var _local4 = int(this._y / th);
var _local5 = int(this._x / tw);
var _local2 = col[_local4][_local5];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local5, _local4, timeStep);
}
for (var _local6 in this.arr) {
if (this.hitTest(this.arr[_local6].hit)) {
this.arr[_local6].health = this.arr[_local6].health - (this.damage * timeStep);
if (this.shotshityo == undefined) {
stats.shotshit++;
this.shotshityo = true;
}
_local2 = -1;
}
}
if ((((_local2 || (_local5 < (fg.x - 2))) || (_local5 > ((fg.x + stw) + 2))) || (_local4 < (fg.y - 2))) || (_local4 > ((fg.y + sth) + 2))) {
if ((_local2 == -1) || (breakTile(_local5, _local4))) {
} else {
removeArray(this, bulletArr);
}
}
}
function soundwaave(x, y, rot, speed, damage, aim, tarr, player) {
var _local1 = (rot - aim) + random(aim * 2);
addBullet(x, y, _local1, _local1, speed, null, waveFrame, 21, damage, tarr, player).scale(50);
sbt.addTransformStartLoop("sSoundwaave", sbt.STOPLOOP, 350, 0);
}
function waveFrame(timeStep, move) {
this.scale(Math.min(150, this._xscale + (5 * timeStep)));
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local4 = int(this._y / th);
var _local5 = int(this._x / tw);
var _local2 = col[_local4][_local5];
if (((_local2 != 0) && (_local2 >= ANGLEUP)) && (_local2 < BREAKABLE)) {
_local2 = this.checkDown(_local5, _local4, timeStep);
}
for (var _local6 in this.arr) {
if (this.hitTest(this.arr[_local6].hit)) {
this.arr[_local6].health = this.arr[_local6].health - (this.damage * timeStep);
if (this.shotshityo == undefined) {
stats.shotshit++;
this.shotshityo = true;
}
_local2 = -1;
}
}
breakTile(_local5, _local4);
if ((((_local5 < (fg.x - 2)) || (_local5 > ((fg.x + stw) + 2))) || (_local4 < (fg.y - 2))) || (_local4 > ((fg.y + sth) + 2))) {
removeArray(this, bulletArr);
}
}
brass = 0;
function outcode(x, y, w, h, lx, ly) {
var _local1 = 0;
if (w <= 0) {
_local1 = _local1 | (OUT_LEFT | OUT_RIGHT);
} else if (lx < x) {
_local1 = _local1 | OUT_LEFT;
} else if (lx > (x + w)) {
_local1 = _local1 | OUT_RIGHT;
}
if (h <= 0) {
_local1 = _local1 | (OUT_TOP | OUT_BOTTOM);
} else if (ly < y) {
_local1 = _local1 | OUT_TOP;
} else if (ly > (y + h)) {
_local1 = _local1 | OUT_BOTTOM;
}
return(_local1);
}
function lineRectangleHitTest(tx, ty, tw, th, x1, y1, x2, y2) {
var _local3;
var _local12;
_local12 = outcode(tx, ty, tw, th, x2, y2);
if (_local12 == 0) {
return(true);
}
while (_local3 = outcode(tx, ty, tw, th, x1, y1) , _local3 != 0) {
if ((_local3 & _local12) != 0) {
return(false);
}
if ((_local3 & (OUT_LEFT | OUT_RIGHT)) != 0) {
var _local5 = tx;
if ((_local3 & OUT_RIGHT) != 0) {
_local5 = _local5 + tw;
}
y1 = y1 + (((_local5 - x1) * (y2 - y1)) / (x2 - x1));
x1 = _local5;
} else {
var _local4 = ty;
if ((_local3 & OUT_BOTTOM) != 0) {
_local4 = _local4 + th;
}
x1 = x1 + (((_local4 - y1) * (x2 - x1)) / (y2 - y1));
y1 = _local4;
}
}
return(true);
}
function addPopUp(clip, depth, x, y, string, align, w, txtcol, col, alf) {
var _local1 = clip.createEmptyMovieClip("textbox_" + depth, depth);
_local1._x = x;
_local1._y = y;
var _local2 = new TextFormat();
_local2.font = "Arial";
_local2.size = 12;
if (align == 1) {
_local2.align = "right";
} else if (align == 2) {
_local2.align = "center";
}
_local2.color = txtcol;
if (w) {
_local1.createTextField("txt", 0, 0, 0, w, 1000);
} else {
_local1.createTextField("txt", 0, 0, 0, 1000, 1000);
}
txt = _local1.txt;
txt.multiline = true;
txt.wordWrap = true;
txt.embedFonts = true;
txt.selectable = false;
txt.text = string;
txt.setTextFormat(_local2);
if (!w) {
txt._width = txt.textWidth + 6;
}
txt._height = txt.textHeight + 6;
_local1.drawButton(col, alf);
_local1.blackhole = true;
return(_local1);
}
function addObjectUnder(name, x, y, arr, func) {
var _local2 = undergame.getNextHighestDepth();
var _local1 = undergame.attachMovie(name, name + _local2, _local2);
_local1._x = x;
_local1._y = y;
_local1.frame = func;
_local1.arr = arr;
arr.push(_local1);
return(_local1);
}
function addObject(name, x, y, arr, func) {
var _local2 = game.getNextHighestDepth();
var _local1 = game.attachMovie(name, name + _local2, _local2);
_local1._x = x;
_local1._y = y;
_local1.frame = func;
_local1.arr = arr;
arr.push(_local1);
return(_local1);
}
function addObjectOver(name, x, y, arr, func) {
var _local2 = overgame.getNextHighestDepth();
var _local1 = overgame.attachMovie(name, name + _local2, _local2);
_local1._x = x;
_local1._y = y;
_local1.frame = func;
_local1.arr = arr;
arr.push(_local1);
return(_local1);
}
function addCamShake(num, trim) {
if (trim) {
if (camshake < 15) {
camshake = Math.min(camshake + num, 15);
}
} else {
camshake = camshake + num;
}
}
function throwGun(gun, x, y) {
var _local1 = addObjectOver("weapons", x, y, particleArr, particleFrame);
_local1.gotoAndStop(gun);
_local1.xspeed = 2;
_local1.yspeed = -5 - random(-5);
_local1._rotation = _local1._rotation + (-10 + random(20));
_local1.rspeed = -5 + random(10);
}
function addParticle(num, type, x, y, xr, yr, rotr) {
if (stats.drawparticles) {
var _local3 = 0;
while (_local3 < num) {
var _local1 = addObject(type, x, y, particleArr, particleFrame);
_local1.gotoAndStop(1 + random(_local1._totalframes));
_local1.xspeed = (-xr) + random(xr * 2);
if (yr < 0) {
_local1.yspeed = -random(-yr);
} else {
_local1.yspeed = (-yr) + random(yr * 2);
}
_local1._rotation = random(360);
_local1.rspeed = (-rotr) + random(rotr * 2);
_local3++;
}
}
}
function ejectBrass(frame, xs, ys) {
if (stats.drawbrass) {
var _local2 = {x:0, y:0};
var _local3 = player.torso.arm.gun.e;
_local3.localToGlobal(_local2);
var _local1 = addObject("brass", _local2.x - fg._x, _local2.y - fg._y, particleArr, particleFrame);
_local1.gotoAndStop(frame);
_local1.xspeed = xs;
_local1.yspeed = ys;
_local1._rotation = random(360);
_local1.rspeed = -10 + random(20);
}
}
function addExplosion(clip, x, y, damage, shake) {
var _local1 = addObject(clip, x, y, bulletArr, explosionFrame);
_local1.stop();
_local1.damage = damage;
_local1._rotation = random(360);
addCamShake(shake, true);
sb.start("sExplosion");
return(_local1);
}
function dropItem(x, y, type, under) {
if (type == -2) {
type = random(guns.length - 2) + 3;
while ((!stats.guns[type].unlocked) && (type < guns.length)) {
type = random(guns.length - 3) + 3;
}
}
if (type == 3) {
type = 2;
}
var _local2;
if (under) {
_local2 = addObjectUnder("weaponBox", x, y, particleArr, itemFrame);
} else {
_local2 = addObject("weaponBox", x, y, particleArr, itemFrame);
}
_local2.blackhole = true;
_local2.type = type;
_local2.t = 0;
_local2.yspeed = 0;
if (type == -1) {
_local2.gotoAndStop("health");
} else if (type >= guns.length) {
_local2.gotoAndStop("powerup");
} else {
_local2.gotoAndStop(guns[type].name);
}
if ((((type >= 0) && (type < guns.length)) && (player.guns[type].bullets <= 0)) && (type != gunsGren)) {
var _local3 = _local2.attachMovie("weapons", "weapons", 0);
_local3.gotoAndStop(guns[type].name);
_local3._y = _local3._y - Math.max(0, (_local3._height - th) / 2);
_local3._x = _local3._x - Math.max(0, (_local3._width - tw) / 2);
}
}
function removeArray(clip, arr) {
for (var _local3 in arr) {
if (arr[_local3] == clip) {
arr.splice(Number(_local3), 1);
break;
}
}
clip.removeMovieClip();
}
function removeArrayNoClip(clip, arr) {
for (var _local3 in arr) {
if (arr[_local3] == clip) {
arr.splice(Number(_local3), 1);
break;
}
}
}
function timedFrame(timeStep, move) {
if (move) {
this.t++;
}
if (this.t > 100) {
this._alpha = this._alpha - (10 * timeStep);
if (this._alpha <= 0) {
removeArray(this, particleArr);
}
}
}
function timedMoveFrame(timeStep, move) {
if (move) {
this.t++;
}
if (this.t > 50) {
this._alpha = this._alpha - (10 * timeStep);
if (this._alpha < 0) {
removeArray(this, particleArr);
}
}
this._y = this._y - (1 * timeStep);
}
function fadeFrame(timeStep, move) {
this._alpha = this._alpha - (10 * timeStep);
if (this._alpha < 0) {
removeArray(this, this.arr);
}
}
function smokeFrame(timeStep, move) {
this.scale(this._xscale + (5 * timeStep));
this._alpha = this._alpha - (10 * timeStep);
if (this._alpha < 0) {
removeArray(this, this.arr);
}
}
function objectFrame(timeStep, move) {
if (move) {
this.nextFrame();
}
if (this._currentframe == this._totalframes) {
removeArray(this, this.arr);
}
}
function particleFrame(timeStep, move) {
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed++;
}
}
this._y = this._y + (this.yspeed * timeStep);
var _local4 = int(this._x / tw);
var _local3 = int(this._y / th);
if (col[_local3][_local4] != 0) {
this._y = this._y - (this.yspeed * timeStep);
this.yspeed = this.yspeed * -0.5;
if (this.yspeed > -2) {
removeArray(this, this.arr);
}
}
this._x = this._x + (this.xspeed * timeStep);
_local4 = int(this._x / tw);
_local3 = int(this._y / th);
if (col[_local3][_local4] != 0) {
this._x = this._x - (this.xspeed * timeStep);
this.xspeed = this.xspeed * 0.5;
}
this._rotation = this._rotation + (this.rspeed * timeStep);
if (this._y > ((-fg._y) + (sph * 2))) {
removeArray(this, this.arr);
}
}
function addCenteredPopUp(x, y, string, animate, color, alpha) {
var _local2 = 0;
var _local3 = 50;
if (color) {
_local2 = color;
}
if (alpha) {
_local3 = alpha;
}
var _local1 = addPopUp(game, game.getNextHighestDepth(), x, y, string, 2, 0, 16777215, _local2, _local3, false);
_local1._y = _local1._y - _local1._height;
_local1._x = _local1._x - (_local1._width / 2);
var _local4 = _local1.getBounds(fg);
if (_local4.xMin < 0) {
_local1._x = 0;
}
if (animate) {
_local1.frame = timedMoveFrame;
} else {
_local1.frame = timedFrame;
}
_local1.t = 0;
particleArr.push(_local1);
return(_local1);
}
function itemFrame(timeStep, move) {
if (move) {
if (this.yspeed < (tw / 2)) {
this.yspeed++;
}
}
if (this._x < cll) {
this._x = cll;
}
if ((this._x + this._width) > clr) {
this._x = clr - this._width;
}
this._y = this._y + (this.yspeed * timeStep);
var _local4 = int(this._x / tw);
var _local3 = int((this._y + (this._height / 2)) / th);
if (col[_local3][_local4] != 0) {
this._y = this._y - (this.yspeed * timeStep);
this.yspeed = this.yspeed * -0.5;
if (this.yspeed > -2) {
this.yspeed = 0;
this._y = (_local3 * th) - (this._height / 2);
}
}
if (this.hitTest(player.hit)) {
if (this.type == -1) {
player.health = Math.min(player.maxHealth, player.health + 30);
addCenteredPopUp(this._x + 16, this._y + 16, "Health", true);
} else if (this.type >= guns.length) {
var _local2 = 1 << random(3);
if (_local2 & POWERUP_TIMESINK) {
powerups.push({powerup:_local2, t:frameRate * 10});
addCenteredPopUp(this._x + 16, this._y + 16, "TimeSink", true);
} else if (_local2 & POWERUP_INVULNERABLE) {
powerups.push({powerup:_local2, t:frameRate * 15});
addCenteredPopUp(this._x + 16, this._y + 16, "Invulnerable", true);
} else if (_local2 & POWERUP_TRIDAMAGE) {
powerups.push({powerup:_local2, t:frameRate * 10});
addCenteredPopUp(this._x + 16, this._y + 16, "TriDamage", true);
}
} else {
player.ggun = this.type;
player.guns[this.type].bullets = player.guns[this.type].bullets + guns[this.type].clip;
if (!stats.guns[this.type].unlocked) {
stats.guns[this.type].unlocked = true;
addCenteredPopUp(this._x + 16, this._y + 16, guns[this.type].name + " Unlocked!", true);
} else {
addCenteredPopUp(this._x + 16, this._y + 16, guns[this.type].name, true);
}
}
sb.start("sPickup");
score = score + 10;
removeArray(this, this.arr);
}
if ((((_local4 < (fg.x - 2)) || (_local4 > ((fg.x + stw) + 2))) || (_local3 < (fg.y - 2))) || (_local3 > ((fg.y + sth) + 2))) {
this._visible = false;
} else {
this._visible = true;
}
}
function explosionFrame(timeStep, move) {
if (move) {
this.nextFrame();
}
if (this._currentframe == this._totalframes) {
removeArray(this, this.arr);
}
if (this._currentframe < (this._totalframes / 2)) {
for (var _local3 in enemyArr) {
if (this.hitTest(enemyArr[_local3])) {
enemyArr[_local3].health = enemyArr[_local3].health - (this.damage * timeStep);
}
}
}
}
function muzzleFrame(timeStep, move) {
if (move) {
this._alpha = this._alpha - 25;
}
if (this._alpha <= 0) {
removeArray(this, this.arr);
}
}
function breakTile(x, y) {
if (col[y][x] & BREAKABLE) {
col[y][x] = 0;
map[y][x] = 0;
fg[(("t_" + y) + "_") + x].gotoAndStop(1);
addParticle(1, tileset + "Crumble", (x * tw) + (tw / 2), (y * th) + (th / 2), 4, 4, 10);
addCamShake(7, true);
return(true);
}
return(false);
}
function addEnvObject(name, x, y, setup, func) {
var _local2 = environment.getNextHighestDepth();
var _local1 = environment.attachMovie(name, name + _local2, _local2);
_local1._x = x;
_local1._y = y;
_local1.frame = func;
_local1.arr = envArr;
setup(_local1);
envArr.push(_local1);
return(_local1);
}
function setupEnvSnow() {
envArr = [];
envTimer = 0;
}
function envSnow(timeStep, move) {
if (move) {
envTimer++;
if (((envTimer % 15) == 0) && (envArr.length < 10)) {
addEnvObject("snowFlake", (-fg._x) + random(spw * 1.25), -fg._y, snowFlakeSetup, snowFlakeFrame);
}
}
for (var _local3 in envArr) {
envArr[_local3].frame(timeStep, move);
}
}
function snowFlakeSetup(clip) {
clip.yspeed = 2;
clip.speed = -2;
clip.xspeed = clip.speed;
clip.cycle = 0;
clip.gotoAndStop(1 + random(clip._totalframes));
}
function snowFlakeFrame(timeStep, move) {
if (move) {
this.cycle = this.cycle + 0.1;
this.xspeed = this.speed + (2 * Math.sin(this.cycle));
}
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
var _local3 = int(this._x / tw);
var _local2 = int(this._y / th);
if (((((col[_local2][_local3] != 0) || (this._x < (-fg._x))) || (this._x > ((-fg._x) + (spw * 1.25)))) || (this._y < ((-fg._y) - 50))) || (this._y > ((-fg._y) + sph))) {
removeArray(this, this.arr);
}
}
function setupEnvLeaf() {
envArr = [];
envTimer = 0;
}
function envLeaf(timeStep, move) {
if (move) {
envTimer++;
if (((envTimer % 30) == 0) && (envArr.length < 10)) {
addEnvObject("leaf", ((-fg._x) - (spw * 0.25)) + random(spw * 1.5), -fg._y, leafSetup, leafFrame);
}
}
for (var _local3 in envArr) {
envArr[_local3].frame(timeStep, move);
}
}
function leafSetup(clip) {
clip.speed = -2;
clip.xspeed = clip.speed;
clip.rot = -5 + random(10);
clip.gotoAndStop(1 + random(clip._totalframes));
}
function leafFrame(timeStep, move) {
if (move) {
this.cycle = this.cycle + 0.1;
this.xspeed = this.speed * Math.cos(this._rotation * pi180);
this.yspeed = (this.speed * Math.sin(this._rotation * pi180)) + 2;
}
this._x = this._x + (this.xspeed * timeStep);
this._y = this._y + (this.yspeed * timeStep);
this._rotation = this._rotation + this.rot;
var _local3 = int(this._x / tw);
var _local2 = int(this._y / th);
if (((((col[_local2][_local3] != 0) || (this._x < ((-fg._x) - (spw * 0.25)))) || (this._x > ((-fg._x) + (spw * 1.25)))) || (this._y < ((-fg._y) - 50))) || (this._y > ((-fg._y) + sph))) {
removeArray(this, this.arr);
}
}
function togglePause() {
if (!gamePaused) {
doPause();
} else {
undoPause();
}
}
function undoPause() {
if (gamePaused) {
setKeys();
toggleBG(true);
toggleEnvironment(true);
if (gamePausedFunction != null) {
onEnterFrame = gamePausedFunction;
gamePausedFunction = null;
}
pauseMenu.removeMovieClip("");
}
gamePaused = false;
mb.start(backgroundmusic, 5, 90);
}
function doPause() {
if (!gamePaused) {
gamePausedFunction = onEnterFrame;
onEnterFrame = null;
pauseMenu = world.createEmptyMovieClip("pauseMenu", 128);
pauseMenu.onEnterFrame = function () {
this.clear();
var _local2 = this._height;
var _local3 = this._width;
this.lineStyle(1, "0x000000", 0);
this.beginFill("0x000000", 75);
this.moveTo(-5, -5);
this.lineTo(_local3 + 5, -5);
this.lineTo(_local3 + 5, _local2 + 5);
this.lineTo(-5, _local2 + 5);
this.endFill();
this._x = (spw - _local3) / 2;
this._y = (sph - _local2) / 2;
};
drawPauseMenu(pauseMenu);
pauseMenu.onEnterFrame();
}
gamePaused = true;
mb.start("sMenuLoop", 5, 100);
}
function toggleBG(notoggle) {
if (!notoggle) {
stats.drawbg = !stats.drawbg;
}
var _local2 = bg._x;
var _local1 = bg._y;
if (stats.drawbg) {
bg = drawMap(world, back, null, "bg", 1, tileset, false);
bg._x = _local2;
bg._y = _local1;
scroll(bg);
} else {
bg = world.createEmptyMovieClip("bg", 1);
bg._x = _local2;
bg._y = _local1;
}
}
function toggleEnvironment(notoggle) {
if (!notoggle) {
stats.drawenvironment = !stats.drawenvironment;
}
var _local2 = bg._x;
var _local1 = bg._y;
environment = fg.createEmptyMovieClip("environment", (w * h) + 3);
if (stats.drawenvironment && (mapenv)) {
if (mapenv & ENVIRONMENT_SNOW) {
setupEnvSnow();
envFrame = envSnow;
} else if (mapenv & ENVIRONMENT_LEAF) {
setupEnvLeaf();
envFrame = envLeaf;
} else {
envFrame = null;
}
} else {
envFrame = null;
}
}
function keys() {
if (KeyisDown(pauseKey)) {
togglePause();
}
}
function endGameFrame() {
if ((egf++) > (frameRate * 2)) {
nextLevelDo();
}
}
function gameFrame() {
if (shouldPause == true) {
doPause();
shouldPause = false;
return(undefined);
}
if (worldTraining) {
timeSink = true;
}
var _local2 = 0;
if (KeyisDown(specialKey)) {
if (KeyisDown(switchKey)) {
if (switchK) {
mouseW = 1;
}
switchK = 0;
} else {
switchK = 1;
}
if (KeyisDown(switchDownKey)) {
if (switchDownK) {
mouseW = -1;
}
switchDownK = 0;
} else {
switchDownK = 1;
}
}
if (KeyisDown(specialKey) && (mouseW)) {
if (tMK) {
tMK = 0;
if (mouseW >= 0) {
timeMode++;
if (timeMode > 2) {
timeMode = 0;
}
} else {
timeMode--;
if (timeMode < 0) {
timeMode = 2;
}
}
stats.ctimemode = timeMode;
mouseW = 0;
}
} else {
tMK = 1;
}
if ((KeyisDown(timeKey) && (player.timeDistortTime > 0)) && (timeKeyD)) {
cSpeed = cSpeed - 0.1;
if (timeMode == 0) {
if (!timeSink) {
player.timeDistortTime--;
}
if (cSpeed < minGameSpeed) {
cSpeed = minGameSpeed;
}
} else if (timeMode == 1) {
if (!timeSink) {
player.timeDistortTime--;
}
_local2 = 1;
if (cSpeed < minGameSpeed) {
if (!timeSink) {
player.timeDistortTime--;
}
cSpeed = minGameSpeed;
}
} else if (timeMode == 2) {
if (!timeSink) {
player.timeDistortTime--;
}
_local2 = 2;
if (cSpeed < 0) {
if (!timeSink) {
player.timeDistortTime = player.timeDistortTime - 2;
}
cSpeed = 0;
}
}
} else {
if (!KeyisDown(timeKey)) {
timeKeyD = true;
}
if (cSpeed < 1) {
if (timeMode == 1) {
_local2 = 1;
} else if (timeMode == 2) {
_local2 = 2;
}
cSpeed = cSpeed + 0.1;
} else {
cSpeed = 1;
moveStep = 0;
}
}
moveStep = moveStep + cSpeed;
var _local1 = 0;
if (moveStep >= 1) {
_local1 = 1;
moveStep = moveStep - 1;
}
entityFrame();
if (cSpeed > 0) {
for (var _local3 in enemyArr) {
enemyArr[_local3].frame(cSpeed, _local1);
}
for (var _local3 in bulletArr) {
bulletArr[_local3].frame(cSpeed, _local1);
}
for (var _local3 in particleArr) {
particleArr[_local3].frame(cSpeed, _local1);
}
for (var _local3 in entityArr) {
entityArr[_local3].frame(cSpeed, _local1);
}
envFrame(cSpeed, _local1);
}
if (_local2) {
for (var _local3 in playerArr) {
playerArr[_local3].frame(1, 1);
}
} else {
for (var _local3 in playerArr) {
playerArr[_local3].frame(cSpeed, _local1);
}
}
if (cam(cSpeed, _local1, 2)) {
scroll(fg);
if (stats.drawbg) {
scroll(bg);
}
}
gametime = gametime + cSpeed;
}
function uncompress(str) {
var _local6 = new Array();
var _local9 = str.split(",");
var _local7 = _local9[0];
var _local11 = _local9[1];
_local9.splice(0, 2);
var _local5 = 0;
while (_local5 < _local9.length) {
var _local4 = _local9[_local5];
if (_local4 < 0) {
_local4 = _local4 * -1;
var _local8 = _local9[_local5 + 1];
var _local3 = 0;
while (_local3 < _local4) {
_local6.push(_local8);
_local3++;
}
_local5++;
} else {
_local6.push(_local4);
}
_local5++;
}
var _local10 = new Array();
var _local2 = 0;
while (_local2 < _local11) {
_local10[_local2] = new Array();
var _local1 = 0;
while (_local1 < _local7) {
_local10[_local2][_local1] = int(_local6[(_local2 * _local7) + _local1]);
_local1++;
}
_local2++;
}
return(_local10);
}
function nextLevel() {
var _local2 = hud.getNextHighestDepth();
var _local1 = hud.attachMovie("levelDisplay", "levelDisplay" + _local2, _local2);
_local1._x = int((spw - _local1._width) / 2);
_local1._y = int((sph - _local1._height) / 2);
_local1.mapd.gotoAndStop(levels[stats.level].mapd + 1);
mb.stop(5);
sb.start("sEndLevel");
egf = 0;
onEnterFrame = endGameFrame;
}
function nextLevelDo() {
if (!worldTraining) {
var _local1 = 0;
while (_local1 < guns.length) {
stats.guns[_local1].ammo = player.guns[_local1].bullets;
_local1++;
}
if (stats.guns[player.cgun].ammo > 0) {
stats.cgun = player.cgun;
} else {
stats.cgun = 2;
}
}
healthbonus = int((player.health / player.maxHealth) * 100);
score = score + healthbonus;
stats.level++;
stats.levels[stats.level] = true;
stats.currentGame = true;
stats.score = score;
stats.gametime = gametime;
endGame();
gotoAndStop ("nextLevel");
}
function death(force) {
gameOver = true;
submitscore = score * 100;
stats.score = score;
stats.gametime = gametime;
stats.totalscore = stats.totalscore + stats.score;
if (stats.highscore < stats.score) {
stats.highscore = stats.score;
}
stats.totaltime = stats.totaltime + stats.gametime;
if (stats.besttime < stats.gametime) {
stats.besttime = stats.gametime;
}
if (!force) {
if ((stats.worsttime > stats.gametime) || (stats.worsttime == 0)) {
stats.worsttime = stats.gametime;
}
}
player.deadfloor = false;
player.frame = playerDeath;
var _local1 = new Color(world);
_local1.setTransform(hitColor);
throwGun(guns[player.cgun].name, player._x + player.w2, player._y + player.h2);
}
function deathDo() {
endGame();
gotoAndStop ("gameOver");
}
function deathFrame() {
moveStep = moveStep + 0.5;
var _local1 = 0;
if (moveStep >= 1) {
_local1 = 1;
moveStep = moveStep - 1;
}
for (var _local2 in enemyArr) {
enemyArr[_local2].frame(cSpeed, _local1);
}
for (var _local2 in bulletArr) {
bulletArr[_local2].frame(cSpeed, _local1);
}
for (var _local2 in particleArr) {
particleArr[_local2].frame(cSpeed, _local1);
}
envFrame(cSpeed, _local1);
for (var _local2 in playerArr) {
playerArr[_local2].frame(cSpeed, _local1);
}
if (cam(cSpeed, _local1, 2)) {
scroll(fg);
if (stats.drawbg) {
scroll(bg);
}
}
gametime = gametime + cSpeed;
}
function startGame(l) {
inGameMenu();
_quality = "low";
stw = Math.ceil(spw / tw);
sth = Math.ceil(sph / th);
gameSpeed = 1;
minGameSpeed = 0.2;
mouseW = 0;
setKeys();
gameOver = false;
stats.currentGame = false;
so.flush();
loadLevel(l);
}
function loadLevel(l) {
var _local1;
if (l >= 0) {
_local1 = levels[l];
} else {
var _local3 = importstring.split("|||");
var _local2 = new Object();
_local2.d = _local3[0];
_local2.c = _local3[1];
_local2.b = _local3[2];
_local2.e = _local3[3];
_local2.t = _local3[4];
_local2.bg = "canyonBG";
_local2.bs = 0;
_local2.s = 0;
_local2.env = 0;
_local1 = _local2;
}
mb.instantStart(_local1.bgm, 125);
mb.start(_local1.bgm, 100, 90);
backgroundmusic = _local1.bgm;
map = uncompress(_local1.d);
col = uncompress(_local1.c);
back = uncompress(_local1.b);
tileset = _local1.t;
mapenv = _local1.env;
world = createEmptyMovieClip("world", 0);
sbg = world.attachMovie(_local1.bg, "sbg", 0);
sbg._x = (sbg._y = -1);
if (stats.drawbg) {
bg = drawMap(world, back, null, "bg", 1, tileset, false);
} else {
bg = world.createEmptyMovieClip("bg", 1);
}
fg = drawMap(world, map, col, "fg", 2, tileset, true);
undergame = fg.createEmptyMovieClip("undergame", 0);
game = fg.createEmptyMovieClip("game", (w * h) + 1);
overgame = fg.createEmptyMovieClip("overgame", (w * h) + 2);
environment = fg.createEmptyMovieClip("environment", (w * h) + 3);
if (stats.drawenvironment && (mapenv)) {
if (mapenv & ENVIRONMENT_SNOW) {
setupEnvSnow();
envFrame = envSnow;
} else if (mapenv & ENVIRONMENT_LEAF) {
setupEnvLeaf();
envFrame = envLeaf;
} else {
envFrame = null;
}
} else {
envFrame = null;
}
heliSpawner = false;
hud = world.attachMovie("HUD", "HUD", 32);
hud.hudscore = score;
cSpeed = 1;
moveStep = 0;
timeMode = stats.ctimemode;
gamePaused = false;
shouldPause = false;
onKeyDown = keys;
baseshake = _local1.bs;
levelScroll = _local1.s;
drawEntities(game, _local1.e);
if (airdrop == true) {
adopy = player._y;
adopx = player._x;
player._y = 0;
player._x = player._x + (spw / 2);
var _local4 = undergame.getNextHighestDepth();
chute = undergame.attachMovie("parachute", "parachute" + _local4, _local4);
chute._x = player._x;
chute._y = player._y;
onEnterFrame = airDropFrame;
player.hudUpdate(1, 1);
player.gotoAndStop("chute");
hud.heli._visible = false;
hud.helis = "";
} else {
onEnterFrame = gameFrame;
}
cam(1, 1, 1);
scroll(fg);
if (stats.drawbg) {
scroll(bg);
}
gotoAndStop ("game");
}
function airDropFrame() {
player._x = player._x - 1;
player._y = player._y + 2;
chute._x = player._x;
chute._y = player._y;
if (player._x < adopx) {
player._x = adopx;
player.gotoAndStop("jump");
player.gunrotation = (player.realgunrotation = 89);
chute.arr = particleArr;
particleArr.push(chute);
chute.frame = function (timeStep, move) {
this._x = this._x - (1 * timeStep);
this._y = this._y - (1 * timeStep);
this._xscale = this._xscale - 1;
if (this._x < (-this._width)) {
removeArray(this, this.arr);
}
};
onEnterFrame = gameFrame;
}
if (cam(cSpeed, move, 2)) {
scroll(fg);
if (stats.drawbg) {
scroll(bg);
}
}
}
function endGame() {
clearMenus();
_quality = "best";
clearInterval(fpsI);
onKeyDown = null;
onEnterFrame = null;
world.removeMovieClip("");
so.flush();
}
function fpsf() {
overlay.fps = "fps: " + overlay.f;
overlay.f = 0;
}
function gunDisplay(string) {
if (stats.drawweaponnames) {
if (gunDisplayClip) {
removeArray(gunDisplayClip, particleArr);
}
var _local1 = addPopUp(hud, 32, 0, 0, string, 0, 0, 16777215, 0, 0, false);
_local1._y = (sph - 30) - _local1._height;
_local1._x = spw - _local1._width;
_local1.frame = timedFrame;
_local1.t = 0;
particleArr.push(_local1);
gunDisplayClip = _local1;
}
}
function displayHelis(num) {
helisshow = hud.createEmptyMovieClip("helisshow", hud.getNextHighestDepth());
var _local2 = helisshow.attachMovie("HelisDisplay", "Display", 0);
var _local4 = _local2._width;
if (num > 0) {
_local2.gotoAndStop(1);
var _local3 = num.toString();
var _local1 = 0;
while (_local1 < _local3.length) {
_local2 = helisshow.attachMovie("HelisNumber", "Number" + _local1, _local1 + 1);
_local2.gotoAndStop(_local3.charCodeAt(_local1) - 47);
_local2._x = _local4 + (_local1 * _local2._width);
_local1++;
}
} else {
_local2.gotoAndStop(2);
}
helisshow._x = (spw - helisshow._width) / 2;
helisshow._y = (sph - helisshow._height) / 2;
displayHelisBackup = onEnterFrame;
onEnterFrame = displayHelisCounter;
displayHelisTimer = 0;
mouseD = 0;
}
function displayHelisCounter() {
displayHelisTimer++;
if ((displayHelisTimer > 40) || (mouseD)) {
helisshow.removeMovieClip("");
onEnterFrame = displayHelisBackup;
}
}
function hudUpdate(move) {
if (score > 0) {
if (hud.hudscore < score) {
hud.hudscore = hud.hudscore + 10;
}
if (hud.hudscore > score) {
hud.hudscore = score;
}
hud.score = int(hud.hudscore) + "00";
} else {
hud.hudscore = 0;
hud.score = 0;
}
if (heliSpawner) {
hud.heli._visible = true;
hud.helis = heliSpawnerKilled;
if (heliSpawnerTotal > 0) {
hud.helis = hud.helis + ("/" + heliSpawnerTotal);
}
} else {
hud.heli._visible = false;
hud.helis = "";
}
var _local11 = this.guns[this.cgun].bullets;
if (_local11 != Number.POSITIVE_INFINITY) {
hud.ammo = _local11 + " x";
} else {
hud.ammo = "Infinite x";
}
hud.weapon.gotoAndStop(this.realguns[this.cgun].name);
var _local8 = this.realguns[this.cgun].name;
if (this.lastGunName != _local8) {
this.lastGunName = _local8;
gunDisplay(_local8);
}
var _local10 = 55 + Math.min(45, ((this.guns[this.cgun].reloadtime + moveStep) / this.realguns[this.cgun].reloadtime) * 45);
hud.reload.mask._yscale = _local10;
hud.reload.gfxOff.gotoAndStop("reload");
if (_local10 >= 100) {
hud.reload.gfxOn.gotoAndStop("ready");
} else {
hud.reload.gfxOn.gotoAndStop("reload");
}
var _local9 = Math.min(100, Math.max(0, (this.health / this.maxHealth) * 100));
hud.health.mask._xscale = _local9;
hud.health.gfxOn.gotoAndStop("health");
hud.health.gfxOff.gotoAndStop("health");
hud.port.gotoAndStop(int(_local9));
if (timeMode == 0) {
hud.two.gfxOn.gotoAndStop("timedistort");
hud.two.gfxOff.gotoAndStop("timedistort");
} else if (timeMode == 1) {
hud.two.gfxOn.gotoAndStop("timerift");
hud.two.gfxOff.gotoAndStop("timerift");
} else if (timeMode == 2) {
hud.two.gfxOn.gotoAndStop("timebreak");
hud.two.gfxOff.gotoAndStop("timebreak");
}
hud.two.mask._xscale = (this.timeDistortTime / this.maxTimeDistortTime) * 100;
hud.one._visible = true;
hud.one.gfxOn.gotoAndStop("hyperjump");
hud.one.gfxOff.gotoAndStop("hyperjump");
hud.one.mask._xscale = (this.hyperJumpTime / this.maxHyperJumpTime) * 100;
timeSink = false;
invulnerable = false;
triDamage = false;
var _local5 = 0;
var _local3 = 0;
hud.poweruptext = "";
if (powerups.length > 0) {
var _local4 = new Color(world);
_local4.setTransform(normalColor);
}
for (var _local7 in powerups) {
var _local2 = powerups[_local7];
if (move) {
_local2.t--;
}
if (_local2.t <= 0) {
if (_local2.powerup & POWERUP_TIMESINK) {
timeKeyD = false;
}
removeArrayNoClip(_local2, powerups);
} else {
_local5 = _local5 + _local2.t;
if (_local2.powerup & POWERUP_TIMESINK) {
timeSink = true;
var _local4 = new Color(world);
_local4.setTransform(timeSinkColor);
hud.poweruptext = hud.poweruptext + " TimeSink";
_local3 = _local3 + (frameRate * 10);
} else if (_local2.powerup & POWERUP_INVULNERABLE) {
invulnerable = true;
var _local4 = new Color(world);
_local4.setTransform(invulnerableColor);
hud.poweruptext = hud.poweruptext + " Invulnerable";
_local3 = _local3 + (frameRate * 15);
} else if (_local2.powerup & POWERUP_TRIDAMAGE) {
triDamage = true;
var _local4 = new Color(world);
_local4.setTransform(triDamageColor);
hud.poweruptext = hud.poweruptext + " TriDamage";
_local3 = _local3 + (frameRate * 10);
}
}
}
if (_local3) {
hud.powerup._visible = true;
hud.poweruptime._visible = true;
hud.poweruptime.gfxOn.gotoAndStop("powerup");
hud.poweruptime.gfxOff.gotoAndStop("powerup");
hud.poweruptime.mask._yscale = (_local5 / _local3) * 100;
hud.powerup.gotoAndStop("powerup");
} else {
hud.powerup._visible = false;
hud.poweruptime._visible = false;
}
}
function newPlayer(name, qual) {
var _local6 = new Array();
var _local1 = 0;
while (_local1 < guns.length) {
_local6[_local1] = {unlocked:guns[_local1].unlocked, shotsfired:0, ammo:0};
_local1++;
}
var _local5 = new Array();
_local1 = 0;
while (_local1 < levels.length) {
_local5[_local1] = false;
_local1++;
}
_local5[0] = true;
var _local7 = {name:name, score:0, level:0, drawbg:true, drawenvironment:true, drawbrass:true, drawparticles:true, drawsound:true, drawmusic:true, drawhealthbar:true, drawpoints:true, drawweaponnames:true, drawcoronas:false, weaponswitch:false, leftKey:65, rightKey:68, upKey:87, downKey:83, timeKey:16, specialKey:32, switchKey:69, switchDownKey:81, grenadeKey:70, pauseKey:80, guns:_local6, levels:_local5, cgun:2, ctimemode:0, currentgame:false, gametime:0, shotshit:0, gamesplayed:0, timesplayed:1, totalenemies:0, totalhelis:0, totaltime:0, besttime:0, worsttime:0, totalscore:0, highscore:0};
if (qual < 2) {
(_local7.drawbrass = false);
(_local7.drawenvironment = false);
}
if (qual < 1) {
(_local7.drawbg = false);
(_local7.drawparticles = false);
}
return(_local7);
}
function setKeys() {
leftKey = stats.leftKey;
rightKey = stats.rightKey;
upKey = stats.upKey;
downKey = stats.downKey;
timeKey = stats.timeKey;
switchKey = stats.switchKey;
switchDownKey = stats.switchDownKey;
specialKey = stats.specialKey;
grenadeKey = stats.grenadeKey;
pauseKey = stats.pauseKey;
}
function isShared(so) {
if (so.data.players == undefined) {
return(false);
}
var _local3 = false;
var _local1 = 0;
while (_local1 < so.data.players.length) {
if (so.data.players[_local1] != undefined) {
_local3 = true;
break;
}
_local1++;
}
return(_local3);
}
function addPlayer(so, ob) {
so.data.players.push(ob);
so.data.player = so.data.players.length - 1;
return(ob);
}
function createSharedObject(so) {
so.data.players = new Array();
so.data.player = -1;
so.flush();
}
function getPlayer(so, num) {
var _local1 = so.data.players[num];
if (_local1 == undefined) {
return(null);
}
so.data.player = num;
so.flush();
return(_local1);
}
function getLastPlayer(so) {
return(so.data.players[so.data.player]);
}
function updatePlayer(so) {
so.data.players[so.data.player] = stats;
so.flush();
}
function deleteLastPlayer(so) {
so.data.players.splice(so.data.player, 1);
if (so.data.players.length > 0) {
so.data.player = Math.max(0, so.data.player - 1);
} else {
so.data.player = -1;
}
return(so.data.players.length > 0);
}
function numPlayers(so) {
return(so.data.players.length);
}
function clearSharedObject(so) {
so.clear();
so.data.players = new Array();
so.data.player = -1;
so.flush();
}
function menuSetup(clip) {
clip.i = 0;
}
function menuAddToggle(clip, name, variable) {
var _local2 = clip.attachMovie("MenuToggle", "i_" + clip.i, clip.i);
_local2._y = _local2._height * clip.i;
_local2.name = name;
_local2.variable = variable;
_local2.status = ((stats[variable] == true) ? "On" : "Off");
_local2.onRelease = function () {
stats[this.variable] = !stats[this.variable];
this.status = ((stats[this.variable] == true) ? "On" : "Off");
};
clip.i++;
}
function menuAddToggleTrigger(clip, name, variable) {
var _local2 = clip.attachMovie("MenuToggle", "i_" + clip.i, clip.i);
_local2._y = _local2._height * clip.i;
_local2.name = name;
_local2.variable = variable;
_local2.status = ((stats[variable] == true) ? "On" : "Off");
_local2.onRelease = function () {
stats[this.variable] = !stats[this.variable];
this.status = ((stats[this.variable] == true) ? "On" : "Off");
menuToggle();
};
clip.i++;
}
function menuToggle() {
mb.setActive(stats.drawmusic);
sb.setActive(stats.drawsound);
}
function menuAddSpacer(clip) {
clip.i++;
}
function menuAddButton(clip, name, func) {
var _local1 = clip.attachMovie("MenuOption", "i_" + clip.i, clip.i);
_local1._y = _local1._height * clip.i;
_local1.name = name;
_local1.onRelease = func;
clip.i++;
}
function menuAddLabel(clip, name) {
var _local2 = new TextFormat();
_local2.font = "Arial";
_local2.size = 12;
_local2.color = 16777215 /* 0xFFFFFF */;
clip.createTextField("txt" + clip.i, clip.i, 0, 0, 10, 10);
txt = clip["txt" + clip.i];
txt.embedFonts = true;
txt.selectable = false;
txt.text = name;
txt.setTextFormat(_local2);
txt._height = txt.textHeight * 1.2;
txt._width = txt.textWidth * 1.1;
txt._y = txt._height * clip.i;
clip.i++;
}
function grabKey() {
var _local2 = Key.getCode();
stats[this.variable] = _local2;
this.status = keynames[_local2];
this.defaultStatus = this.status;
this.onKeyDown = null;
onKeyDown = this.oldKeyDown;
}
function menuAddControl(clip, name, variable) {
var _local2 = clip.attachMovie("MenuToggle", "i_" + clip.i, clip.i);
_local2._y = _local2._height * clip.i;
_local2.name = name;
_local2.variable = variable;
_local2.status = (_local2.defaultStatus = keynames[stats[variable]]);
_local2.onPress = function () {
controlChanger.reset();
controlChanger = this;
this.status = "Press a key..";
this.onKeyDown = grabKey;
};
_local2.reset = function () {
this.status = this.defaultStatus;
this.onKeyDown = null;
};
Key.addListener(_local2);
clip.i++;
}
function drawPauseMenu(clip) {
menuSetup(clip);
menuAddLabel(clip, "Pause Menu");
menuAddSpacer(clip);
menuAddButton(clip, "Options", function () {
clearMenu(clip);
drawOptions(clip, false);
clip.onEnterFrame();
});
menuAddButton(clip, "Controls", function () {
clearMenu(clip);
drawControls(clip, false);
clip.onEnterFrame();
});
menuAddButton(clip, "Quit", function () {
clearMenu(clip);
drawQuitConfirm(clip);
clip.onEnterFrame();
});
menuAddSpacer(clip);
menuAddButton(clip, "Continue", function () {
clearMenu(clip);
togglePause();
});
}
function drawOptions(clip, full) {
menuSetup(clip);
if (!full) {
menuAddLabel(clip, "Options");
menuAddSpacer(clip);
}
menuAddToggle(clip, "Draw Background:", "drawbg");
menuAddToggle(clip, "Draw Particles:", "drawparticles");
menuAddToggle(clip, "Draw Environment:", "drawenvironment");
menuAddToggle(clip, "Draw Brass:", "drawbrass");
menuAddToggle(clip, "Draw Coronas:", "drawcoronas");
menuAddToggle(clip, "Draw Enemy Health:", "drawhealthbar");
menuAddToggle(clip, "Draw Point Popups:", "drawpoints");
menuAddToggle(clip, "Draw Weapon Names:", "drawweaponnames");
menuAddToggleTrigger(clip, "Music:", "drawmusic");
menuAddToggleTrigger(clip, "Sound:", "drawsound");
menuAddToggle(clip, "Auto Weapon Switch:", "weaponswitch");
menuAddSpacer(clip);
if (!full) {
menuAddButton(clip, "Back", function () {
clearMenu(clip);
drawPauseMenu(clip);
clip.onEnterFrame();
});
}
}
function drawControls(clip, full) {
menuSetup(clip);
if (full) {
menuAddLabel(clip, "Controls: (Click to change)");
} else {
menuAddLabel(clip, "Controls (Click to change)");
menuAddSpacer(clip);
}
menuAddControl(clip, "Move Left", "leftKey");
menuAddControl(clip, "Move Right", "rightKey");
menuAddControl(clip, "Jump", "upKey");
menuAddControl(clip, "Crouch", "downKey");
menuAddControl(clip, "TimeDistort", "timeKey");
menuAddControl(clip, "Next Weapon", "switchKey");
menuAddControl(clip, "Previous Weapon", "switchDownKey");
menuAddControl(clip, "Modify", "specialKey");
menuAddControl(clip, "Grenade Switch", "grenadeKey");
menuAddControl(clip, "Pause Menu", "pauseKey");
menuAddSpacer(clip);
if (!full) {
menuAddButton(clip, "Back", function () {
clearMenu(clip);
drawPauseMenu(clip);
clip.onEnterFrame();
});
}
}
function drawQuitConfirm(clip) {
menuAddLabel(clip, "Are you sure you want to quit?");
menuAddSpacer(clip);
menuAddLabel(clip, "This will end current game and");
menuAddLabel(clip, "you will not be able to continue.");
menuAddSpacer(clip);
menuAddButton(clip, "Quit", function () {
clearMenu(clip);
togglePause();
death(true);
});
menuAddButton(clip, "Back", function () {
clearMenu(clip);
drawPauseMenu(clip);
clip.onEnterFrame();
});
}
function clearMenu(clip) {
var _local1 = 0;
while (_local1 < clip.i) {
clip["i_" + _local1].removeMovieClip("");
_local1++;
}
clip.i = 0;
}
function resetSurvival() {
score = 0;
stats.score = 0;
stats.level = 0;
var _local1 = 0;
while (_local1 < stats.levels.length) {
if (stats.levels[_local1]) {
stats.level = _local1;
}
_local1++;
}
gametime = 0;
stats.gametime = 0;
stats.gamesplayed++;
stats.currentGame = false;
_local1 = 0;
while (_local1 < guns.length) {
stats.guns[_local1].ammo = 0;
_local1++;
}
stats.guns[0].ammo = Number.POSITIVE_INFINITY;
stats.guns[1].ammo = Number.POSITIVE_INFINITY;
stats.guns[2].ammo = Number.POSITIVE_INFINITY;
stats.guns[3].ammo = Number.POSITIVE_INFINITY;
stats.guns[gunsGren].ammo = guns[gunsGren].clip;
stats.cgun = 3;
}
function resumeSurvival() {
score = stats.score;
gametime = stats.gametime;
}
function inGameMenu() {
var _local2 = new ContextMenu();
_local2.hideBuiltInItems();
var _local4 = new ContextMenuItem("Heli Attack 3", function () {
});
var _local3 = new ContextMenuItem("Pause Menu", togglePause);
_local3.separatorBefore = true;
_local2.customItems.push(_local4);
_local2.customItems.push(_local3);
_root.menu = _local2;
}
function dist(x1, y1, x2, y2) {
return(Math.sqrt(((x1 - x2) * (x1 - x2)) + ((y2 - y1) * (y2 - y1))));
}
function attachFlare(clip, x, y, vx, vy, perc, frame, scale, rot, perc2) {
perc = perc * perc2;
var _local2 = clip.getNextHighestDepth();
var _local1 = clip.attachMovie("flare", "flare" + _local2, _local2);
_local1._x = x + (vx * perc);
_local1._y = y + (vy * perc);
_local1.gotoAndStop(frame);
_local1._xscale = (_local1._yscale = scale);
_local1._rotation = rot;
}
function drawLenseFlare(clip, depth, x, y, perc, alp) {
var _local2 = clip.createEmptyMovieClip("lenseFlare" + depth, depth);
var _local1 = (360 - ((Math.atan2((spw / 2) - x, (sph / 2) - y) * 180) / Math.PI)) + 90;
var _local7 = dist(x, y, spw / 2, sph / 2);
var _local4 = 1 * Math.cos(_local1 * pi180);
var _local3 = 1 * Math.sin(_local1 * pi180);
attachFlare(_local2, x, y, _local4, _local3, 0, 1, 100, _local1 * 2, perc);
attachFlare(_local2, x, y, _local4, _local3, -0.4 * _local7, 2, 70, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 0.3 * _local7, 1, 30, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, -0.7 * _local7, 4, 40, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 2.1 * _local7, 2, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.9 * _local7, 3, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, -0.3 * _local7, 3, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 0.5 * _local7, 4, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 0.8 * _local7, 4, 140, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.3 * _local7, 5, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.1 * _local7, 5, 120, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 2.7 * _local7, 6, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 0.7 * _local7, 2, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.2 * _local7, 6, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, -0.65 * _local7, 6, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.5 * _local7, 3, 100, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.7 * _local7, 4, 50, _local1, perc);
attachFlare(_local2, x, y, _local4, _local3, 1.8 * _local7, 1, 25, _local1, perc);
_local2._alpha = alp;
return(_local2);
}
function attachEnvFlare(t, targ) {
if (stats.drawcoronas) {
var _local2 = hud.getNextHighestDepth();
var _local1 = {clip:hud, dep:_local2, flare:t, frame:envFlareFrame, targ:targ, bit:0};
_local1.frame(1, true);
playerArr.push(_local1);
}
}
function envFlareFrame(timeStep, move) {
if (move) {
this.flare--;
this.bit = 0;
} else {
this.bit = this.bit + timeStep;
}
if (this.targ._x != undefined) {
this.x = this.targ._x + fg._x;
this.y = this.targ._y + fg._y;
} else if (this.flare > 10) {
this.flare = 10;
}
var _local3 = this.x;
var _local2 = this.y;
if (this.flare > 10) {
this.lf = drawLenseFlare(this.clip, this.dep, _local3, _local2, 1, 100);
} else if ((this.flare < 11) && (this.flare > 0)) {
var _local4 = (10 - (this.flare - this.bit)) / 10;
this.lf = drawLenseFlare(this.clip, this.dep, _local3, _local2, 1 + _local4, (this.flare - this.bit) * 10);
} else {
this.lf.removeMovieClip("");
removeArrayNoClip(this, playerArr);
}
}
OUT_LEFT = 1;
OUT_TOP = 2;
OUT_RIGHT = 4;
OUT_BOTTOM = 8;
MovieClip.prototype.scale = function (n) {
this._xscale = (this._yscale = n);
};
MovieClip.prototype.drawButton = function (col, alf) {
var _local3 = this._width;
var _local2 = this._height;
this.clear();
this.lineStyle(0, 0, 0);
this.beginFill(col, alf);
this.moveTo(0, 0);
this.lineTo(_local3, 0);
this.lineTo(_local3, _local2);
this.lineTo(0, _local2);
this.lineTo(0, 0);
this.endFill();
};
sign = function (i) {
if (i > 0) {
return(1);
}
if (i < 0) {
return(-1);
}
return(0);
};
var sb = new SoundBoard(_root, 32, true);
var sbt = new SoundBoardTransform(sb);
var mb = new MusicBoard(sb, sbt, true);
sb.attachSound("sIntro", true);
sb.attachSound("sMenuLoop", true);
sb.attachSound("sLevelLoopHardcore", true);
sb.attachSound("sLevelLoopEvil", true);
sb.attachSound("sLevelLoopJungle", true);
sb.attachSound("sLevelSelectLoop", true);
sb.attachSound("sLevelLoopTraining", true);
sb.attachSound("sEndLevel", true);
sb.attachSound("sABomb");
sb.attachSound("sAirstrike");
sb.attachSound("sAirstrikeCall");
sb.attachSound("sBigExplosion");
sb.attachSound("sBlackhole");
sb.attachSound("sBladerang");
sb.attachSound("sBullet");
sb.attachSound("sBulletSmall0");
sb.attachSound("sBulletSmall1");
sb.attachSound("sBulletSmall2");
sb.attachSound("sBulletSmall3");
sb.attachSound("sFlame");
sb.attachSound("sGooGun");
sb.attachSound("sGooHit");
sb.attachSound("sTaser");
sb.attachSound("sGrenade");
sb.attachSound("sKnife");
sb.attachSound("sLaser");
sb.attachSound("sRailgun");
sb.attachSound("sRocketlauncher");
sb.attachSound("sShotgun");
sb.attachSound("sExplosion");
sb.attachSound("sSoundwaave");
sb.attachSound("sSparkplug");
sb.attachSound("sPlayerHit");
sb.attachSound("sHyperJump");
sb.attachSound("sHeli");
sb.attachSound("sMetal0");
sb.attachSound("sMetal1");
sb.attachSound("sMetal2");
sb.attachSound("sMetal3");
sb.attachSound("sPickup");
function bitOR(a, b) {
var _local1 = (a & 1) | (b & 1);
var _local2 = (a >>> 1) | (b >>> 1);
return((_local2 << 1) | _local1);
}
function bitXOR(a, b) {
var _local1 = (a & 1) ^ (b & 1);
var _local2 = (a >>> 1) ^ (b >>> 1);
return((_local2 << 1) | _local1);
}
function bitAND(a, b) {
var _local1 = (a & 1) & (b & 1);
var _local2 = (a >>> 1) & (b >>> 1);
return((_local2 << 1) | _local1);
}
function addme(x, y) {
var _local1 = (x & 65535) + (y & 65535);
var _local2 = ((x >> 16) + (y >> 16)) + (_local1 >> 16);
return((_local2 << 16) | (_local1 & 65535));
}
function rhex(num) {
str = "";
j = 0;
while (j <= 3) {
str = str + (hex_chr.charAt((num >> ((j * 8) + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15));
j++;
}
return(str);
}
function str2blks_MD5(str) {
nblk = ((str.length + 8) >> 6) + 1;
blks = new Array(nblk * 16);
i = 0;
while (i < (nblk * 16)) {
blks[i] = 0;
i++;
}
i = 0;
while (i < str.length) {
blks[i >> 2] = blks[i >> 2] | (str.charCodeAt(i) << ((((str.length * 8) + i) % 4) * 8));
i++;
}
blks[i >> 2] = blks[i >> 2] | (128 << ((((str.length * 8) + i) % 4) * 8));
var _local2 = str.length * 8;
blks[(nblk * 16) - 2] = _local2 & 255;
blks[(nblk * 16) - 2] = blks[(nblk * 16) - 2] | (((_local2 >>> 8) & 255) << 8);
blks[(nblk * 16) - 2] = blks[(nblk * 16) - 2] | (((_local2 >>> 16) & 255) << 16);
blks[(nblk * 16) - 2] = blks[(nblk * 16) - 2] | (((_local2 >>> 24) & 255) << 24);
return(blks);
}
function rol(num, cnt) {
return((num << cnt) | (num >>> (32 - cnt)));
}
function cmn(q, a, b, x, s, t) {
return(addme(rol(addme(addme(a, q), addme(x, t)), s), b));
}
function ff(a, b, c, d, x, s, t) {
return(cmn(bitOR(bitAND(b, c), bitAND(~b, d)), a, b, x, s, t));
}
function gg(a, b, c, d, x, s, t) {
return(cmn(bitOR(bitAND(b, d), bitAND(c, ~d)), a, b, x, s, t));
}
function hh(a, b, c, d, x, s, t) {
return(cmn(bitXOR(bitXOR(b, c), d), a, b, x, s, t));
}
function ii(a, b, c, d, x, s, t) {
return(cmn(bitXOR(c, bitOR(b, ~d)), a, b, x, s, t));
}
function calcMD5(str) {
x = str2blks_MD5(str);
a = 1732584193 /* 0x67452301 */;
b = -271733879;
c = -1732584194;
d = 271733878 /* 0x10325476 */;
var _local1;
i = 0;
while (i < x.length) {
olda = a;
oldb = b;
oldc = c;
oldd = d;
_local1 = 0;
a = ff(a, b, c, d, x[i + 0], 7, -680876936);
d = ff(d, a, b, c, x[i + 1], 12, -389564586);
c = ff(c, d, a, b, x[i + 2], 17, 606105819);
b = ff(b, c, d, a, x[i + 3], 22, -1044525330);
a = ff(a, b, c, d, x[i + 4], 7, -176418897);
d = ff(d, a, b, c, x[i + 5], 12, 1200080426);
c = ff(c, d, a, b, x[i + 6], 17, -1473231341);
b = ff(b, c, d, a, x[i + 7], 22, -45705983);
a = ff(a, b, c, d, x[i + 8], 7, 1770035416);
d = ff(d, a, b, c, x[i + 9], 12, -1958414417);
c = ff(c, d, a, b, x[i + 10], 17, -42063);
b = ff(b, c, d, a, x[i + 11], 22, -1990404162);
a = ff(a, b, c, d, x[i + 12], 7, 1804603682);
d = ff(d, a, b, c, x[i + 13], 12, -40341101);
c = ff(c, d, a, b, x[i + 14], 17, -1502002290);
b = ff(b, c, d, a, x[i + 15], 22, 1236535329);
a = gg(a, b, c, d, x[i + 1], 5, -165796510);
d = gg(d, a, b, c, x[i + 6], 9, -1069501632);
c = gg(c, d, a, b, x[i + 11], 14, 643717713);
b = gg(b, c, d, a, x[i + 0], 20, -373897302);
a = gg(a, b, c, d, x[i + 5], 5, -701558691);
d = gg(d, a, b, c, x[i + 10], 9, 38016083);
c = gg(c, d, a, b, x[i + 15], 14, -660478335);
b = gg(b, c, d, a, x[i + 4], 20, -405537848);
a = gg(a, b, c, d, x[i + 9], 5, 568446438);
d = gg(d, a, b, c, x[i + 14], 9, -1019803690);
c = gg(c, d, a, b, x[i + 3], 14, -187363961);
b = gg(b, c, d, a, x[i + 8], 20, 1163531501);
a = gg(a, b, c, d, x[i + 13], 5, -1444681467);
d = gg(d, a, b, c, x[i + 2], 9, -51403784);
c = gg(c, d, a, b, x[i + 7], 14, 1735328473);
b = gg(b, c, d, a, x[i + 12], 20, -1926607734);
a = hh(a, b, c, d, x[i + 5], 4, -378558);
d = hh(d, a, b, c, x[i + 8], 11, -2022574463);
c = hh(c, d, a, b, x[i + 11], 16, 1839030562);
b = hh(b, c, d, a, x[i + 14], 23, -35309556);
a = hh(a, b, c, d, x[i + 1], 4, -1530992060);
d = hh(d, a, b, c, x[i + 4], 11, 1272893353);
c = hh(c, d, a, b, x[i + 7], 16, -155497632);
b = hh(b, c, d, a, x[i + 10], 23, -1094730640);
a = hh(a, b, c, d, x[i + 13], 4, 681279174);
d = hh(d, a, b, c, x[i + 0], 11, -358537222);
c = hh(c, d, a, b, x[i + 3], 16, -722521979);
b = hh(b, c, d, a, x[i + 6], 23, 76029189);
a = hh(a, b, c, d, x[i + 9], 4, -640364487);
d = hh(d, a, b, c, x[i + 12], 11, -421815835);
c = hh(c, d, a, b, x[i + 15], 16, 530742520);
b = hh(b, c, d, a, x[i + 2], 23, -995338651);
a = ii(a, b, c, d, x[i + 0], 6, -198630844);
d = ii(d, a, b, c, x[i + 7], 10, 1126891415);
c = ii(c, d, a, b, x[i + 14], 15, -1416354905);
b = ii(b, c, d, a, x[i + 5], 21, -57434055);
a = ii(a, b, c, d, x[i + 12], 6, 1700485571);
d = ii(d, a, b, c, x[i + 3], 10, -1894986606);
c = ii(c, d, a, b, x[i + 10], 15, -1051523);
b = ii(b, c, d, a, x[i + 1], 21, -2054922799);
a = ii(a, b, c, d, x[i + 8], 6, 1873313359);
d = ii(d, a, b, c, x[i + 15], 10, -30611744);
c = ii(c, d, a, b, x[i + 6], 15, -1560198380);
b = ii(b, c, d, a, x[i + 13], 21, 1309151649);
a = ii(a, b, c, d, x[i + 4], 6, -145523070);
d = ii(d, a, b, c, x[i + 11], 10, -1120210379);
c = ii(c, d, a, b, x[i + 2], 15, 718787259);
b = ii(b, c, d, a, x[i + 9], 21, -343485551);
a = addme(a, olda);
b = addme(b, oldb);
c = addme(c, oldc);
d = addme(d, oldd);
i = i + 16;
}
return(((rhex(a) + rhex(b)) + rhex(c)) + rhex(d));
}
stop();
var hex_chr = "0123456789abcdef";
pi180 = (Math.PI/180);
KeyisDown = Key.isDown;
keynames = ["0", "1", "2", "3", "4", "5", "6", "7", "Backspace", "Tab", "10", "11", "Center", "Enter", "14", "15", "Shift", "Control", "Alt", "Pause", "Caps Lock", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "Space", "Page Up", "Page Down", "End", "Home", "Left", "Up", "Right", "Down", "41", "42", "43", "44", "Insert", "Delete", "47", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "58", "59", "60", "61", "62", "63", "64", "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", "Windows", "Windows", "Menu", "94", "95", "Num 0", "Num 1", "Num 2", "Num 3", "Num 4", "Num 5", "Num 6", "Num 7", "Num 8", "Num 9", "Num *", "Num +", "108", "Num -", "Num .", "Num /", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "Num Lock", "Scroll Lock", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", ";", "+", ",", "-", ".", "/", "~", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "[", "\\", "]", "'", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", "253", "254", "255"];
UP = 1;
DOWN = 2;
LEFT = 4;
RIGHT = 8;
SLIDE = 16;
CLIMB = 32;
ANGLEUP = 64;
ANGLEDOWN = 128;
SOFTANGLEUPSTART = 256;
SOFTANGLEUPEND = 512;
SOFTANGLEDOWNSTART = 1024;
SOFTANGLEDOWNEND = 2048;
BREAKABLE = 4096;
FALLTHROUGH = 8192;
PUSHUP = 16384;
PLAYERSTART = 1;
ENEMY = 2;
HELISPAWNER = 4;
TARGETSPAWNER = 8;
TARGET = 16;
HELPER = 32;
BUTTON = 64;
LEVELFLAG = 128;
ENEMYSPAWNER = 256;
PICKUP = 512;
AIRDROP = 16;
TRAINING = 32;
ENEMY_WALKER = 1;
ENEMY_DRONE = 2;
ENEMY_SNIPER = 4;
ENEMY_HELI = 8;
ENEMY_HELI2 = 16;
ENEMY_HELI3 = 32;
ENEMY_CRITTER = 64;
ENEMY_DROPITEM = 128;
HELPER_HIDDEN = 1;
HELPER_ONCE = 2;
BUTTON_HIDDEN = 1;
BUTTON_SHOOT = 2;
BUTTON_SPENT = 4;
DESTRUCTO_CRUMBLE = 1;
DESTRUCTO_EXPLODE = 2;
DESTRUCTO_FADE = 4;
ENVIRONMENT_SNOW = 1;
ENVIRONMENT_LEAF = 2;
POWERUP_TIMESINK = 1;
POWERUP_INVULNERABLE = 2;
POWERUP_TRIDAMAGE = 4;
gunsGren = 2;
guns = new Array();
guns[0] = {name:"Knife", gun:knife, reloadtime:15, recoil:0, recoiltime:15, speed:20, damage:50, aim:0, flash:0, clip:Number.POSITIVE_INFINITY, unlocked:true, info:"A simple melee weapon and the last line of defense, it does high damage for it's reload time, however you must be extremely close to the enemy for it to do damage"};
guns[1] = {name:"Bow&Arrow", gun:bowArrow, reloadtime:20, recoil:-5, recoiltime:10, speed:12, damage:30, aim:6, flash:0, clip:Number.POSITIVE_INFINITY, unlocked:false, info:"A primitive weapon, it does good damage, but it is hard to aim"};
guns[2] = {name:"Grenade", gun:grenade, reloadtime:20, recoil:-50, recoiltime:12, speed:12, damage:50, aim:2, flash:0, clip:25, unlocked:true, info:"The basic explosive weapon, does high damage, but is hard to aim. After the initial damage, the explosion itself will also damage an enemy"};
guns[3] = {name:"Pistol", gun:machineGun, reloadtime:8, recoil:10, recoiltime:6, speed:10, damage:10, aim:4, flash:1, clip:Number.POSITIVE_INFINITY, unlocked:true, info:"The work-horse of weapons. Good damage, fast reload and easy to aim. The Pistol is usually the most used weapon in a soldiers arsenal"};
guns[4] = {name:"MachineGun", gun:machineGun, reloadtime:5, recoil:5, recoiltime:3, speed:10, damage:10, aim:2, flash:2, clip:150, unlocked:true, info:"Fast firing, good damage and fast reload. A great all purpose weapon."};
guns[5] = {name:"AkimboMac10's", gun:mac10, reloadtime:4, recoil:4, recoiltime:2, speed:10, damage:8, aim:10, flash:8, clip:75, unlocked:true, info:"For the action movie fan, fast firing, two bullets per shot"};
guns[6] = {name:"ChainGun", gun:machineGun, reloadtime:2, recoil:3, recoiltime:2, speed:10, damage:10, aim:6, flash:5, clip:100, unlocked:false, info:"Fires bullets faster than any other gun, has high recoil so aim carefully"};
guns[7] = {name:"Shotgun", gun:shotGun, reloadtime:25, recoil:15, recoiltime:15, speed:10, damage:15, aim:0, flash:3, clip:20, unlocked:true, info:"Shoots 4 bullets at once, aim carefully, they spread"};
guns[8] = {name:"DoubleShotgun", gun:doubleShotGun, reloadtime:35, recoil:20, recoiltime:15, speed:10, damage:10, aim:0, flash:4, clip:15, unlocked:false, info:"The super shotgun! Shoots 8 bullets at once with heavy spread"};
guns[9] = {name:"SniperRifle", gun:sniperGun, reloadtime:20, recoil:30, recoiltime:25, speed:75, damage:75, aim:0, flash:5, clip:12, unlocked:false, info:"Super accurate weapon with laser sight, almost impossible to miss with"};
guns[10] = {name:"GrenadeLauncher", gun:grenadeLauncher, reloadtime:30, recoil:30, recoiltime:20, speed:18, damage:75, aim:4, flash:10, clip:15, unlocked:true, info:"Fires grenades at moderate speeds with an arc, aim carefully. Great for taking out ground troops"};
guns[11] = {name:"RPG", gun:RPG, reloadtime:25, recoil:35, recoiltime:25, speed:1, damage:85, aim:4, flash:10, clip:15, unlocked:true, info:"Rocket Propelled Grenades, for when you need a grenade to get there on time. The grenade leaves the gun at a very low speed, but accelerates to incredible speeds"};
guns[12] = {name:"RocketLauncher", gun:rocketLauncher, reloadtime:40, recoil:50, recoiltime:30, speed:6, damage:100, aim:0, flash:6, clip:11, unlocked:true, info:"The standard launcher, shoots slow straight firing rockets"};
guns[13] = {name:"SeekerLauncher", gun:seekerLauncher, reloadtime:50, recoil:50, recoiltime:30, speed:6, damage:100, aim:0, flash:6, clip:7, unlocked:true, info:"Shoots rockets which automatically seek the closest enemy, almost guaranteed to hit"};
guns[14] = {name:"DrunkenLauncher", gun:drunkenLauncher, reloadtime:60, recoil:50, recoiltime:30, speed:6, damage:50, aim:0, flash:6, clip:6, unlocked:false, info:"Fires 3 drunken rockets that fly around randomly, very hard to aim"};
guns[15] = {name:"GuidedLauncher", gun:guidedLauncher, reloadtime:50, recoil:50, recoiltime:30, speed:6, damage:100, aim:0, flash:6, clip:9, unlocked:false, info:"Guided rockets are special, fire them and they follow where you aim, keep your aim on an enemy, and it will aim to it"};
guns[16] = {name:"FlakCannon", gun:flakCannon, reloadtime:50, recoil:50, recoiltime:30, speed:9, damage:10, aim:20, flash:10, clip:8, unlocked:false, info:"Shoots 20 separate pieces of flak at random speeds and trajectories. Extremely hard to aim with, get up close to do maximum damage"};
guns[17] = {name:"ShotgunRockets", gun:shotGunRockets, reloadtime:40, recoil:30, recoiltime:20, speed:7, damage:25, aim:0, flash:9, clip:7, unlocked:true, info:"Fires three small rockets, a devastating weapon"};
guns[18] = {name:"FlameThrower", gun:flameThrower, reloadtime:2, recoil:1, recoiltime:1, speed:8, damage:2, aim:10, flash:7, clip:150, unlocked:true, info:"For when you want to make toast from your enemies. Does its damage over its entire life, but does less damage the bigger the flame"};
guns[19] = {name:"SparkPlug", gun:sparkPlug, reloadtime:15, recoil:20, recoiltime:10, speed:10, damage:30, aim:0, flash:11, clip:30, unlocked:false, info:"Shoots two sparks which do equal damage"};
guns[20] = {name:"GooGun", gun:gooGun, reloadtime:10, recoil:10, recoiltime:10, speed:15, damage:50, aim:10, flash:16, clip:25, unlocked:false, info:"Goo is a strange substance, it will stick to the ground and do damage to anything that walks over it"};
guns[21] = {name:"Bladerang", gun:bladerang, reloadtime:50, recoil:50, recoiltime:30, speed:1, damage:20, aim:2, flash:10, clip:7, unlocked:false, info:"An extremely tricky gun to use, the projectile fires out forwards but soon returns like a boomerang. Aim it carefully, and you can hit your enemy twice!"};
guns[22] = {name:"LaserRifle", gun:laserGun, reloadtime:16, recoil:10, recoiltime:10, speed:50, damage:30, aim:2, flash:13, clip:25, unlocked:false, info:"The laser is one of the fastest moving projectiles, and it will pass through multiple enemies. It can do its damage multiple times to the same enemy"};
guns[23] = {name:"AutoLaserRifle", gun:laserGun, reloadtime:8, recoil:10, recoiltime:10, speed:50, damage:20, aim:10, flash:14, clip:25, unlocked:false, info:"Shoots lasers faster than the standard rifle, but is very inaccurate"};
guns[24] = {name:"ShotgunLasers", gun:laserShotGun, reloadtime:30, recoil:30, recoiltime:15, speed:50, damage:20, aim:0, flash:15, clip:12, unlocked:false, info:"Fires 3 lasers at once, in a large spread pattern"};
guns[25] = {name:"RailGun", gun:railGun, reloadtime:75, recoil:40, recoiltime:20, speed:500, damage:200, aim:0, flash:0, clip:6, unlocked:true, info:"Instant rail delivery. Fires depleted uranium slugs at near light-speed. If your aim is correct it is guaranteed to hit, even through walls"};
guns[26] = {name:"Anytime", gun:anytime, reloadtime:150, recoil:50, recoiltime:30, speed:100, damage:130, aim:4, flash:17, clip:5, unlocked:false, info:"It has been done, an upgraded RailGun! Anytime fires similar slugs to the RailGun, but they detonate when they come in contact with an enemy and do more damage. This added explosive power slows the shots down enough to be seen in slowed time"};
guns[27] = {name:"AirStrike", gun:airStrike, reloadtime:40, recoil:-10, recoiltime:5, speed:0, damage:0, aim:0, flash:0, clip:4, unlocked:false, info:"While this device does no damage by itself, it calls down an AirStrike which bombards the field with rockets which do high damage each"};
guns[28] = {name:"Taser", gun:taser, reloadtime:200, recoil:10, recoiltime:10, speed:30, damage:5, aim:0, flash:0, clip:2, unlocked:true, info:"A large socket is fired at high speeds, when it comes in contact with an enemy, the Taser fires electricity over time that shocks the enemy. If the Taser is attached to an enemy, it is guaranteed to kill them"};
guns[29] = {name:"Soundwaave", gun:soundwaave, reloadtime:10, recoil:10, recoiltime:10, speed:15, damage:10, aim:0, flash:18, clip:30, unlocked:false, info:"Uber bass! Fires large waves of sound which do constant damage to enemies, and also shoots through walls"};
guns[30] = {name:"A-BombLauncher", gun:aBombLauncher, reloadtime:300, recoil:80, recoiltime:40, speed:4, damage:500, aim:0, flash:6, clip:3, unlocked:false, info:"U235 harnessed in the worst possible way. Fires extremely slow moving projectiles, that do incredible amounts of damage. The explosion fallout does equally high damage also"};
guns[31] = {name:"BlackHoleGenerator", gun:blackHoleGenerator, reloadtime:600, recoil:100, recoiltime:50, speed:0, damage:0, aim:0, flash:12, clip:1, unlocked:false, info:"The ultimate weapon. Nothing commands as much fear as this weapon. It fires a micro sized black-hole which will suck up all enemies that come in contact with it"};
gunsHyper = [4, 25];
levels = new Array();
levels[0] = {d:"104,20,41,-37,33,40,41,-9,33,40,41,-29,33,40,13,41,-20,33,40,38,-14,0,30,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,39,-14,0,29,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,38,-14,0,29,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,38,-14,0,29,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,38,-14,0,29,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,39,-14,0,29,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,38,-14,0,29,-22,0,31,38,-9,0,31,38,-16,0,8,9,10,-10,0,31,13,38,-20,0,31,39,-14,0,28,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,38,-14,0,27,-22,0,31,38,-9,0,31,38,-29,0,31,13,38,-20,0,31,39,-37,0,34,37,-9,0,31,38,-29,0,31,13,38,-20,0,31,38,-13,0,48,43,51,-15,0,48,42,63,-14,0,31,38,-29,0,31,13,38,-20,0,31,38,-13,0,31,13,38,-15,0,31,13,60,-14,0,34,37,-29,0,31,13,38,-20,0,31,38,-8,0,48,42,43,42,42,49,13,39,-15,0,31,13,60,-8,0,48,42,63,-34,0,31,13,38,-20,0,31,50,42,44,-3,42,43,42,44,49,16,-5,13,38,-10,0,62,42,43,42,42,49,13,60,-8,0,31,13,60,-34,0,32,13,39,-20,0,31,14,-11,13,14,16,13,15,50,42,43,51,-7,0,56,-6,13,60,-8,0,31,13,60,-34,0,35,33,36,-20,0,31,-5,13,15,-5,13,14,-7,13,38,-7,0,56,-6,13,60,-8,0,31,13,60,-7,0,2,3,46,43,47,6,-15,0,30,-5,0,65,66,64,-15,0,48,42,43,42,42,49,-7,13,16,15,-5,13,15,13,13,16,13,38,-7,0,56,-6,13,50,-6,42,43,42,49,13,61,-5,0,2,3,-6,13,6,-13,0,30,28,-5,0,66,64,65,-10,0,48,42,43,42,42,49,16,-3,13,15,-3,13,15,-15,13,38,0,0,48,43,51,0,0,56,-17,13,60,-3,0,2,3,-9,13,6,-5,0,7,-5,0,7,27,27,-5,0,65,66,64,-5,0,48,42,43,42,42,49,-23,13,15,-5,13,50,42,42,49,13,50,42,42,49,-17,13,50,42,43,42,49,-10,13,50,44,42,43,44,42,43,42,42,43,-3,42,44,43,42,42,43,-7,42,43,42,42,49,-6,13,15,-5,13,14,13,13", c:"104,20,-105,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-16,0,-3,15,-10,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-14,0,15,-22,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-37,0,15,15,-9,0,15,15,-29,0,-3,15,-20,0,15,15,-13,0,-3,15,-15,0,15,15,47,-14,0,15,15,-29,0,-3,15,-20,0,15,15,-13,0,-3,15,-15,0,15,15,47,-14,0,15,15,-29,0,-3,15,-20,0,15,15,-8,0,-8,15,-15,0,15,15,47,-8,0,15,15,47,-34,0,-3,15,-20,0,-18,15,-10,0,47,-6,15,47,-8,0,15,15,47,-34,0,-3,15,-20,0,-21,15,-7,0,47,-6,15,47,-8,0,15,15,47,-34,0,-3,15,-20,0,-21,15,-7,0,47,-7,15,-8,0,15,15,47,-7,0,256,512,16385,15,16385,144,-15,0,15,-5,0,-3,4111,-15,0,-7,15,-19,4111,-7,0,47,-17,15,47,-5,0,256,512,16385,-4,15,16385,144,-13,0,15,15,-5,0,-3,4111,-10,0,-12,15,-19,4111,0,0,-3,15,0,0,-19,15,-3,0,256,512,16385,-7,15,16385,144,-5,0,15,-5,0,-3,15,-5,0,-3,4111,-5,0,-120,15", b:"44,20,-14,0,67,69,-20,0,67,69,-20,0,73,75,-20,0,73,75,-52,0,67,69,-20,0,67,69,-20,0,73,75,-4,0,67,69,-14,0,73,75,-4,0,67,69,-20,0,73,75,-6,0,67,69,-12,0,73,75,-6,0,67,69,-20,0,73,75,-20,0,73,75,-97,0,67,69,-10,0,67,69,-8,0,67,69,-10,0,67,69,-8,0,73,75,-5,0,67,69,-3,0,73,75,-8,0,73,75,-5,0,67,69,-3,0,73,75,-5,0,67,69,-8,0,73,75,-10,0,67,69,-8,0,73,75,-10,0,73,75,-20,0,73,75,-69,0,67,69,-7,0,67,69,-11,0,67,69,-7,0,67,69,-11,0,73,75,-7,0,70,72,-11,0,73,75,-7,0,70,72,-10,0,67,68,69,-7,0,73,75,0,67,69,-7,0,67,68,69,-7,0,73,75,0,67,69,0,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70", e:"1,1,13,32|8,74,15,0|8,66,17,0|8,66,11,0|8,74,9,0|32,6,13,0,Jump to get up here\n(Default W)|32,11,12,0,Hold Jump to jump higher|32,14,10,0,Crouch to get through here\n(Default S)|32,23,17,0,Jump into this wall to start climbing\nPress Jump and Left/Right to\njump off walls while climbing|32,47,18,0,Simply walk up angled floors|32,56,15,0,Crouch to slide down certain angled floors|32,29,13,0,You can jump twice while your mid-air\nTriple jump over this wall|32,77,18,0,Some walls can be destroyed|32,63,18,0,Aim with the mouse and Click to shoot|32,69,18,0,Change weapons with the Buttons or Mouse Wheel\n(Default Q & E)|32,111,18,0,Walk over a button to activate it|32,90,17,0,You can change your controls\nselect options or quit at\nany time in the Pause Menu\n(Default P)|32,95,16,0,Touch the flag to finish your training|32,85,18,0,Use the TimeDistort button\nto trigger time powers\n(Default Shift)\nHold Modify and change weapon\nto change time powers\n(Default Space + Q or E)|512,2,19,6,1|512,68,6,16|128,100,15,0|32,1,13,0,Press Left and Right to move\n(Default A & D)|32,41,16,0,Hold Modify and press Jump to HyperJump\n(Default Space + W)\nHold Jump to HyperJump higher", t:"trainingTiles", bg:"trainingBG", bs:0, s:0, env:0, name:"Training Zone", gunUnlock:-1, bgm:"sLevelLoopTraining", mapd:0, mapdx:26, mapdy:10};
levels[1] = {d:"42,20,-589,0,81,82,83,-7,0,84,-3,0,79,80,-9,0,81,82,83,-9,0,79,80,-3,0,95,96,97,-7,0,98,-3,0,93,94,-9,0,95,96,97,-9,0,93,94,-3,0,109,110,111,84,-6,0,112,-3,0,107,108,84,-7,0,84,109,110,111,-5,0,86,87,91,0,107,108,-4,0,124,125,98,-6,0,112,-3,0,121,122,98,-7,0,98,0,124,125,-4,0,53,55,90,102,0,121,122,0,0,34,36,31,29,31,33,36,31,32,33,34,35,36,38,0,121,122,112,-7,0,112,0,124,37,33,35,36,38,113,114,50,52,37,31,33,35,34,71,72,1,74,1,57,58,1,75,76,77,78,1,46,33,36,31,32,31,29,31,32,33,35,34,35,36,31,45,75,76,77,46,33,35,34,36,45,71,72,1,1", c:"42,20,-706,0,15,15,-39,0,-3,15,-6,0,-14,15,-14,0,-56,15", b:"56,20,-513,0,81,82,83,-12,0,79,80,-11,0,81,82,83,-12,0,79,80,-11,0,95,96,97,-12,0,93,94,-11,0,95,96,97,-12,0,93,94,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112", e:"1,0,17,16|4,0,17,-1,6,2", t:"snowTiles", bg:"snowBG", bs:0, s:0, env:ENVIRONMENT_SNOW, name:"Zone 1-1", gunUnlock:1, bgm:"sLevelLoopHardcore", mapd:1, mapdx:85, mapdy:8};
levels[2] = {d:"42,20,-586,0,82,83,0,0,84,-36,0,95,96,97,0,0,98,-10,0,84,-12,0,84,-12,0,109,110,111,0,0,112,0,0,99,86,87,91,-4,0,98,-12,0,98,-13,0,124,125,35,34,36,30,38,53,55,50,51,52,-3,0,112,-3,0,86,87,86,87,91,-4,0,112,-13,0,124,125,15,75,78,15,64,113,114,115,116,37,32,29,31,30,31,38,53,55,115,114,50,51,52,-3,0,112,-4,0,37,32,32,29,38,-4,0,124,125,71,72,1,74,46,33,34,35,36,45,77,78,1,71,72,46,31,32,33,34,34,36,31,29,30,31,32,30,33,35,36,45,-3,15,46,33,34,35,36,29,31", c:"42,20,-678,0,15,15,-34,0,-10,15,-7,0,-4,15,-21,0,-23,15,-8,0,-5,15,-6,0,-42,15", b:"56,20,-513,0,81,82,83,-12,0,79,80,-11,0,81,82,83,-12,0,79,80,-11,0,95,96,97,-12,0,93,94,-11,0,95,96,97,-12,0,93,94,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112", e:"1,0,16,0|4,0,16,-1,9,2|256,13,17,64,1000|256,26,18,64,1000", t:"snowTiles", bg:"snowBG", bs:0, s:0, env:ENVIRONMENT_SNOW, name:"Zone 1-2", gunUnlock:6, bgm:"sLevelLoopHardcore", mapd:1, mapdx:87, mapdy:11};
levels[3] = {d:"50,20,-602,0,84,-49,0,98,-49,0,112,-31,0,79,80,-16,0,112,-12,0,3,4,32,9,10,0,0,86,87,68,69,-8,0,93,94,-5,0,84,-7,0,79,31,29,32,32,31,32,31,38,-6,0,37,17,71,72,23,24,40,41,103,50,51,54,51,52,86,87,91,-3,0,107,108,-5,0,98,-7,0,93,57,58,-5,1,12,13,27,13,42,13,13,14,71,72,46,59,49,0,88,89,90,105,0,0,99,103,50,54,52,0,0,121,122,-5,0,112,-4,0,86,87,105,107,-4,1,71,72,1,62,0,0,39,38,0,0,67,59,1,1,64,0,0,113,114,101,116,0,0,113,114,115,116,-3,0,121,122,0,3,4,31,29,31,48,0,0,113,114,115,116,121,1,75,76,77,77,78,1,63,-3,0,65,46,30,45,73,1,60,46,32,33,36,31,92,29,33,34,36,31,92,31,32,29,31,31,30,31,17,18,71,72,1,47,33,34,35,34,36,29,31", c:"50,20,-765,0,272,528,16385,1040,2064,0,0,15,15,-26,0,-8,15,-6,0,-16,15,-20,0,-12,15,8193,8193,-6,15,0,0,-10,15,-14,0,15,15,0,0,-12,15,0,0,-5,4111,-3,0,-8,15,-7,0,272,528,16385,15,16385,144,-3,0,15,15,0,0,-50,15", b:"56,20,-513,0,81,82,83,-12,0,79,80,-11,0,81,82,83,-12,0,79,80,-11,0,95,96,97,-12,0,93,94,-11,0,95,96,97,-12,0,93,94,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112", e:"1,0,15,0|4,0,15,-1,12,2|512,20,18,19|256,11,16,64,1000|256,34,18,64,1000|256,27,15,64,1000|", t:"snowTiles", bg:"snowBG", bs:0, s:0, env:ENVIRONMENT_SNOW, name:"Zone 1-3", gunUnlock:8, bgm:"sLevelLoopHardcore", mapd:1, mapdx:90, mapdy:7};
levels[4] = {d:"45,20,-583,0,84,-9,0,84,-12,0,81,82,83,-5,0,79,80,-12,0,98,-9,0,98,0,84,-10,0,95,96,97,-5,0,93,94,-12,0,112,-9,0,112,0,98,-10,0,109,110,111,-5,0,107,108,-12,0,112,0,34,35,36,31,29,9,10,0,112,0,112,-9,0,84,0,124,125,-4,0,84,121,122,-7,0,3,4,29,33,34,35,36,1,15,57,58,15,23,24,33,35,36,29,31,48,-7,0,98,0,124,125,84,-3,0,98,121,122,0,2,33,36,29,30,31,17,18,1,15,1,57,58,71,72,1,15,61,74,1,59,1,71,72,1,46,33,34,35,34,36,9,10,112,0,124,125,98,3,4,31,29,31,33,36,16,59,74,75,77,78,1,1,15,71,72,15,1,1,75,76,77,78,15,1,73,1,74,15,1,15,1,60,1,74,1,23,24,33,34,35,34,36,17,18,71,72,1,74,1,15,73,15,1,60,1,15,1,61,-3,1,76", c:"45,20,-720,0,-4,15,16385,1040,2064,-31,0,272,528,16385,-15,15,16385,144,-19,0,80,16385,-28,15,16385,1040,2064,-5,0,272,528,16385,-62,15", b:"56,20,-513,0,81,82,83,-12,0,79,80,-11,0,81,82,83,-12,0,79,80,-11,0,95,96,97,-12,0,93,94,-11,0,95,96,97,-12,0,93,94,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-11,0,109,110,111,84,-7,0,81,82,83,0,107,108,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,84,-4,0,124,125,98,-7,0,95,110,97,0,121,122,-7,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,98,-4,0,124,125,112,0,0,81,82,83,0,0,109,110,111,0,121,122,0,84,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,-5,0,112,-3,0,84,124,125,112,0,0,95,110,97,-3,0,124,125,0,121,122,0,98,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,81,82,83,0,112,79,80,0,98,124,125,112,79,80,109,110,111,79,80,0,124,125,0,121,122,0,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,0,95,96,97,0,112,93,94,0,112,124,125,112,93,94,0,124,125,93,94,84,124,125,0,121,122,84,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,84,109,110,111,0,112,107,108,84,112,124,125,112,107,108,0,124,125,107,108,98,124,125,0,121,122,98,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112,98,123,124,125,84,112,121,122,98,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,-3,112,123,124,125,98,112,121,122,112,112,124,125,112,121,122,0,124,125,121,122,112,124,125,0,121,122,112,112", e:"1,0,15,0|4,0,11,-1,6,8", t:"snowTiles", bg:"snowBG", bs:0, s:0, env:ENVIRONMENT_SNOW, name:"Zone 1-4", gunUnlock:9, bgm:"sLevelLoopHardcore", mapd:1, mapdx:90, mapdy:9};
levels[5] = {d:"50,30,-886,0,83,91,92,94,-10,0,94,78,0,76,92,91,-10,0,76,78,0,0,78,0,92,94,-12,0,76,86,37,38,91,92,94,-7,0,29,30,50,37,38,90,0,0,78,92,94,92,91,80,0,52,37,26,13,27,13,13,28,38,84,-6,0,97,94,0,79,48,30,29,43,12,13,28,38,77,0,78,0,82,83,37,90,34,63,43,12,-3,13,28,26,13,13,28,26,27,13,14,45,70,0,0,69,51,44,49,92,93,94,0,0,79,37,38,48,29,62,29,29,43,44,32,43,12,13,27,13,27,13,13,14,0,0,86,39,44,62,29,29,43,12,13,27,14,40,91,92,39,46,84,0,0,55,39,44,63,29,57,58,59,59,60,43,44,29,29,35,87,15,39,46,15,39,45,70,-5,0,39,0,0,87,39,45,15,1,15,39,40,0,69,51,40,1,1,41,40,-4,0,39,46,15,1,71,72,73,72,74,41,40,15,90,0,0,87,51,40,1,41,45,56,-4,0,55,51,0,0,69,51,40,90,88,1,39,40,56,55,41,40,1,54,39,40,70,0,0,55,39,45,1,90,87,1,1,85,87,39,45,1,56,0,0,69,39,40,1,39,40,-5,0,69,39,-3,0,39,46,70,0,87,39,45,0,69,39,46,90,83,39,40,84,0,0,83,39,40,1,70,0,87,1,1,56,51,40,90,-4,0,39,40,1,39,40,56,-4,0,83,39,0,0,55,39,40,0,0,55,39,40,84,0,39,40,0,69,39,45,56,-3,0,41,40,89,-3,0,87,85,0,39,40,70,-3,0,55,39,40,1,51,40,-6,0,39,0,0,83,41,40,56,0,0,51,40,70,0,41,40,70,83,39,46,-4,0,39,40,56,-4,0,68,55,39,46,56,-4,0,41,40,1,39,46,-5,0,55,41,-3,0,39,45,84,0,69,39,46,0,55,39,40,56,69,39,40,56,0,0,69,39,45,70,-6,0,39,40,-4,0,69,39,45,1,39,40,70,-4,0,83,39,0,0,83,51,40,-3,0,39,40,70,83,39,45,0,83,39,40,84,-3,0,51,40,84,-5,0,83,39,40,84,-4,0,51,40,1,39,40,84,-5,0,39,0,0,69,39,40,70,0,69,39,40,70,69,39,40,70,69,39,40,70,0,0,55,39,40,70,-5,0,69,39,40,70,-3,0,83,39,40,88,39,40,70,-4,0,69,39", c:"50,30,-938,0,15,15,-10,0,-5,15,-11,0,-8,15,-11,0,-8,15,-6,0,-26,15,-6,0,-469,15", b:"40,30,-10,0,101,103,-18,0,101,103,-17,0,101,102,102,107,103,-3,0,101,107,104,-9,0,101,102,102,107,103,-3,0,101,107,104,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-3,102,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-6,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-5,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-3,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,-6,0,101,107,105,0,101,107,109,0,115,117,0,101,103,-7,0,101,107,105,0,101,107,109,0,115,117,0,101,103,0,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,-6,102,117,114,-5,102,103,0,101,102,117,115,-7,102,117,114,-5,102,103,0,101,102,117,115,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-3,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-7,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,105,-12,0,101,-6,102,105,-12,0,101,-6,102,119,-11,0,101,-7,102,119,-11,0,101,-6,102,119,-11,0,101,102,102,117,115,-3,102,119,-11,0,101,102,102,117,115,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,102,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-3,102,115,-13,102,105,100,-3,102,117,115,-13,102,105,100,-3,102,117,0,115,121,-4,102,121,121,-9,102,117,0,0,115,121,-4,102,121,121,-9,102,117,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-5,0,115,118,-7,0,115,102,118,115,102,102,103,-4,0,115,118,-7,0,115,102,118,115,102,102,103,103,-10,0,101,107,107,102,105,101,-3,102,103,-10,0,101,107,107,102,105,101,-3,102,117,-9,0,101,-7,102,121,121,117,-9,0,101,-7,102,121,121,-9,0,101,102,121,117,115,121,102,102,117,-11,0,101,102,121,117,115,121,102,102,117,-10,0,101,102,117,-3,0,110,102,102,103,-10,0,101,102,117,-3,0,110,102,102,103,0,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,-6,102,107,107,102,102,103,0,115,102,102,103,101,-9,102,107,107,102,102,103,0,115,102,102,103,101,-3,102", e:"1,0,18,16|4,0,18,-1,8,8", t:"jungleTiles", bg:"jungleBG", bs:0, s:0, env:ENVIRONMENT_LEAF, name:"Zone 2-1", gunUnlock:15, bgm:"sLevelLoopJungle", mapd:2, mapdx:30, mapdy:47};
levels[6] = {d:"80,30,-1280,0,93,94,-75,0,95,94,0,-3,29,49,0,0,92,91,-68,0,83,37,38,91,1,37,38,75,48,49,37,38,-66,0,79,80,81,39,44,35,1,39,44,63,62,63,43,44,7,8,-47,0,79,92,93,94,-5,0,95,94,-5,0,83,37,26,13,14,40,0,1,41,40,1,54,1,39,40,21,22,11,-41,0,79,-5,0,37,38,85,78,-3,0,83,37,38,93,94,-3,0,95,39,44,31,43,40,56,1,39,40,85,0,86,39,40,1,1,25,7,8,0,80,97,98,-10,0,92,91,82,-4,0,82,-11,0,92,94,77,0,0,5,6,-5,29,43,44,31,29,35,48,30,49,53,12,-4,13,27,13,14,40,1,39,40,0,1,39,40,1,91,87,41,40,-3,1,21,22,50,37,38,90,-7,0,80,81,79,37,26,13,13,27,33,29,31,49,-9,0,79,37,38,0,5,6,19,20,34,50,87,1,1,43,40,90,0,47,62,31,63,43,40,70,-4,0,69,39,40,1,39,40,70,86,51,40,1,90,55,39,40,1,1,90,67,48,62,43,44,-6,29,49,48,57,58,60,43,40,91,-3,0,68,68,75,-7,0,5,6,49,39,42,48,19,20,1,90,0,61,0,87,1,39,40,0,92,75,87,1,1,39,40,56,-5,0,39,40,1,39,40,56,87,39,42,89,0,69,51,46,1,90,0,97,61,48,43,40,93,94,80,77,0,0,75,61,71,72,74,39,45,1,91,-3,0,79,75,-5,0,5,6,19,21,62,43,44,62,35,64,65,0,48,62,35,69,1,39,42,0,86,75,0,87,1,39,40,-6,0,39,40,1,39,40,0,69,39,40,56,0,83,39,44,29,29,32,29,62,62,43,44,29,31,29,35,0,0,75,75,87,1,15,39,44,29,57,58,60,29,29,62,29,35,48,29,29,19,20,-3,1,51,40,1,70,-3,0,75,0,0,69,1,39,40,0,86,75,0,0,87,39,40,84,-4,0,69,39,40,54,39,40,0,55,39,40,70,0,69,39,40,-6,1,51,40,90,66,34,29,31,29,63,62,49,87,1,39,40,1,71,73,74,1,1,89,0,0,75,37,38,-3,1,90,83,41,40,90,-4,0,75,-3,0,88,39,44,29,29,62,-3,29,43,40,-5,0,55,39,40,69,39,40,0,0,41,40,-3,0,39,40,90,64,65,87,1,1,39,40,29,57,58,59,58,60,35,0,61,0,87,51,40,-5,1,89,0,0,34,62,41,40,1,90,66,0,0,39,40,56,-3,0,34,63,-4,29,41,40,-6,1,39,40,70,-5,0,39,40,0,39,40,56,69,39,40,84,0,69,39,40,-4,0,87,1,41,45,1,71,72,73,72,74,84,0,75,0,0,39,42,54,-3,1,89,-5,0,51,40,90,-3,0,55,39,45,-6,0,-3,66,0,39,45,-6,1,39,40,56,-4,0,69,39,40,56,39,40,70,0,39,40,70,0,55,39,40,84,-4,0,87,39,40,-3,1,54,1,89,0,83,75,0,83,39,40,0,88,89,68,-5,0,55,39,42,-5,0,39,40,56,-8,0,83,39,40,-6,1,39,40,-6,0,39,40,0,39,40,0", c:"80,30,-1360,0,-4,15,-73,0,15,15,0,-8,15,-69,0,-11,15,1024,2048,-64,0,-15,15,16385,128,-47,0,15,15,-6,0,15,15,-6,0,-16,15,16385,1024,2048,-38,0,256,512,16385,15,-3,8193,-38,15,-11,0,15,15,-3,8193,-4,15,-10,0,15,15,0,256,512,16385,-3,15,-3,0,15,15,0,0,-47,15,-6,0,4111,-7,0,256,512,16385,-9,15,-3,0,4111,4111,0,0,4111,-3,0,-43,15,-6,0,4111,-5,0,256,512,16385,-12,15,0,0,4111,4111,0,0,4111,-3,0,-68,15,-4,0,4111,4111,0,0,4111,-3,0,-68,15,-4,0,-114,15,0,-9,15,0,-125,15,0,-11,15", b:"40,30,-10,0,101,103,-18,0,101,103,-17,0,101,102,102,107,103,-3,0,101,107,104,-9,0,101,102,102,107,103,-3,0,101,107,104,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-3,102,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-6,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-5,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-3,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,-6,0,101,107,105,0,101,107,109,0,115,117,0,101,103,-7,0,101,107,105,0,101,107,109,0,115,117,0,101,103,0,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,-6,102,117,114,-5,102,103,0,101,102,117,115,-7,102,117,114,-5,102,103,0,101,102,117,115,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-3,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-7,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,105,-12,0,101,-6,102,105,-12,0,101,-6,102,119,-11,0,101,-7,102,119,-11,0,101,-6,102,119,-11,0,101,102,102,117,115,-3,102,119,-11,0,101,102,102,117,115,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,102,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-3,102,115,-13,102,105,100,-3,102,117,115,-13,102,105,100,-3,102,117,0,115,121,-4,102,121,121,-9,102,117,0,0,115,121,-4,102,121,121,-9,102,117,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-5,0,115,118,-7,0,115,102,118,115,102,102,103,-4,0,115,118,-7,0,115,102,118,115,102,102,103,103,-10,0,101,107,107,102,105,101,-3,102,103,-10,0,101,107,107,102,105,101,-3,102,117,-9,0,101,-7,102,121,121,117,-9,0,101,-7,102,121,121,-9,0,101,102,121,117,115,121,102,102,117,-11,0,101,102,121,117,115,121,102,102,117,-10,0,101,102,117,-3,0,110,102,102,103,-10,0,101,102,117,-3,0,110,102,102,103,0,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,-6,102,107,107,102,102,103,0,115,102,102,103,101,-9,102,107,107,102,102,103,0,115,102,102,103,101,-3,102", e:"1,0,16,0|4,0,16,-1,10,8|512,64,25,20|256,21,22,64,1000|256,71,20,64,1000|256,63,20,64,1000|256,47,21,64,1000", t:"jungleTiles", bg:"jungleBG", bs:0, s:0, env:ENVIRONMENT_LEAF, name:"Zone 2-2", gunUnlock:16, bgm:"sLevelLoopJungle", mapd:2, mapdx:32, mapdy:49};
levels[7] = {d:"49,30,-520,0,92,94,-45,0,92,93,37,38,56,-10,0,76,-3,0,92,94,-6,0,92,94,-19,0,55,37,38,51,44,49,-9,0,5,6,11,77,69,37,38,0,92,93,94,80,92,37,38,95,94,-16,0,76,2,43,40,39,42,61,94,77,-6,0,2,19,20,25,29,29,43,12,29,29,31,29,32,29,43,44,57,60,9,10,0,76,77,-9,0,80,81,48,16,51,42,39,44,63,31,49,77,0,0,79,3,4,16,90,68,34,29,30,43,40,85,66,87,1,90,88,51,40,91,74,23,24,49,48,49,0,92,94,77,-3,0,5,6,29,29,62,29,43,40,39,40,90,34,63,9,10,80,2,17,18,90,-3,0,66,88,39,44,67,0,0,67,0,69,39,40,90,64,65,34,63,62,63,49,37,38,95,98,5,6,19,20,90,87,1,1,39,40,39,40,70,0,88,23,24,32,16,90,68,-5,0,69,39,40,-5,0,69,39,45,70,0,0,69,37,38,48,62,43,44,29,29,19,20,90,67,0,0,87,1,39,46,39,40,56,0,0,-4,68,-7,0,69,39,40,-5,0,55,39,40,-4,0,39,44,63,35,39,40,85,64,65,67,-5,0,87,39,40,51,45,70,-13,0,83,39,42,-6,0,39,40,56,0,0,69,39,46,56,69,39,46,89,-8,0,69,39,40,39,40,-14,0,69,39,40,-5,0,34,43,40,56,0,0,69,41,40,70,69,39,40,70,-9,0,39,45,41,40,56,-14,0,51,40,-5,0,55,39,40,84,-3,0,39,40,56,55,39,42,-9,0,69,39,40,39,40,56,-13,0,55,39,40,-5,0,55,39,42,-3,0,69,39,45,0,69,39,40,70,-8,0,69,51,40,39,42,-14,0,69,39,40,-6,0,39,40,84,0,0,69,39,40,70,55,51,40,56,-9,0,39,40,39,12,13,27,13,27,13,27,13,13,27,13,27,13,27,13,13,14,40,-5,0,83,41,40,70,0,0,83,39,40,56,69,39,40,-10,0,41,40,39,45,70,-13,0,55,39,40,-5,0,69,39,44,57,58,59,60,43,46,56,69,39,40,70,-8,0,69,39,40,39,40,-14,0,69,39,42,-5,0,83,39,45,71,72,73,74,39,40,0,0,41,40,56,-9,0,39,40,51,40,70,-13,0,69,39,40,-6,0,39,40,89,64,65,86,39,40,56,55,39,46,70,-8,0,69,51,40,39,40,56,-14,0,39,40,-5,0,83,39,40,70,0,0,87,39,42,70,69,39,40,56,-8,0,69,39,40,39,45,84,-13,0,55,51,40,-5,0,52,53,40,56,0,0,69,39,40,56,69,39,40,70,-8,0,69,39,40,39,40,-15,0,39,40", c:"49,30,-569,0,15,15,-45,0,-5,15,-9,0,256,512,128,0,0,15,15,-6,0,15,15,-19,0,64,-5,15,-8,0,64,16385,-15,15,16385,1024,2048,-14,0,-9,15,-4,0,256,512,16385,-22,15,-7,0,256,512,16385,-10,15,1024,2048,0,64,16385,-27,15,0,0,256,512,16385,-39,15,0,-558,15,0,-64,15", b:"40,30,-10,0,101,103,-18,0,101,103,-17,0,101,102,102,107,103,-3,0,101,107,104,-9,0,101,102,102,107,103,-3,0,101,107,104,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-3,102,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-6,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-5,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-3,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,-6,0,101,107,105,0,101,107,109,0,115,117,0,101,103,-7,0,101,107,105,0,101,107,109,0,115,117,0,101,103,0,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,-6,102,117,114,-5,102,103,0,101,102,117,115,-7,102,117,114,-5,102,103,0,101,102,117,115,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-3,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-7,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,105,-12,0,101,-6,102,105,-12,0,101,-6,102,119,-11,0,101,-7,102,119,-11,0,101,-6,102,119,-11,0,101,102,102,117,115,-3,102,119,-11,0,101,102,102,117,115,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,102,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-3,102,115,-13,102,105,100,-3,102,117,115,-13,102,105,100,-3,102,117,0,115,121,-4,102,121,121,-9,102,117,0,0,115,121,-4,102,121,121,-9,102,117,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-5,0,115,118,-7,0,115,102,118,115,102,102,103,-4,0,115,118,-7,0,115,102,118,115,102,102,103,103,-10,0,101,107,107,102,105,101,-3,102,103,-10,0,101,107,107,102,105,101,-3,102,117,-9,0,101,-7,102,121,121,117,-9,0,101,-7,102,121,121,-9,0,101,102,121,117,115,121,102,102,117,-11,0,101,102,121,117,115,121,102,102,117,-10,0,101,102,117,-3,0,110,102,102,103,-10,0,101,102,117,-3,0,110,102,102,103,0,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,-6,102,107,107,102,102,103,0,115,102,102,103,101,-9,102,107,107,102,102,103,0,115,102,102,103,101,-3,102", e:"1,0,13,0|4,0,13,-1,12,8|256,16,15,64,1000|256,37,15,64,1000|256,29,11,64,1000|256,7,12,64,1000", t:"jungleTiles", bg:"jungleBG", bs:0, s:0, env:ENVIRONMENT_LEAF, name:"Zone 2-3", gunUnlock:21, bgm:"sLevelLoopJungle", mapd:2, mapdx:37, mapdy:51};
levels[8] = {d:"72,30,-1331,0,92,94,-62,0,92,91,82,-4,0,92,37,38,0,82,0,0,76,92,94,-28,0,93,94,-19,0,92,93,94,0,80,81,86,37,26,-5,13,14,12,-5,13,28,38,94,-3,0,92,93,94,77,-18,0,92,93,37,38,98,0,0,78,0,92,94,-5,0,76,77,-3,0,82,69,37,26,-3,13,27,13,14,40,-5,0,39,44,35,-3,0,55,39,12,13,13,27,13,13,28,38,70,0,80,81,0,92,93,94,-4,0,76,77,0,80,81,0,76,37,38,39,12,13,27,-3,13,28,38,94,0,76,77,110,37,26,-5,13,14,40,70,-3,0,69,39,42,70,-3,0,55,41,40,70,-3,0,34,43,40,70,-3,0,55,51,12,27,-4,13,28,38,1,91,0,79,95,37,26,-3,13,27,13,14,40,41,40,-4,0,83,39,12,-5,13,14,40,70,-3,0,83,41,45,56,48,30,29,32,43,44,29,50,0,0,34,43,40,84,-4,0,41,42,70,-4,0,39,45,70,-3,0,83,39,12,-5,13,14,40,84,-3,0,83,39,40,39,40,70,-3,0,34,43,40,93,94,0,0,52,53,45,84,-3,0,83,39,44,29,62,29,31,29,43,45,54,61,-3,0,39,40,56,-3,0,69,39,40,56,-3,0,55,39,44,31,29,35,0,69,41,40,70,-3,0,55,39,44,31,30,-3,29,43,40,39,42,56,-3,0,69,39,12,-3,13,27,13,14,40,56,-4,0,39,42,-4,0,83,39,40,56,75,0,0,69,39,40,-4,0,55,39,40,56,-4,0,39,40,84,-3,0,69,39,40,56,-3,0,69,39,40,-4,0,69,39,40,51,40,-4,0,55,41,40,56,-3,0,83,39,42,-4,0,55,39,40,56,-3,0,69,39,40,84,75,0,0,55,39,45,70,-3,0,83,51,45,-4,0,69,41,40,56,-3,0,55,51,40,84,-4,0,39,40,70,-3,0,83,39,40,39,40,84,-4,0,39,45,-4,0,69,51,40,56,-3,0,34,43,40,84,-4,0,41,40,0,75,0,0,69,39,40,-5,0,39,40,-4,0,83,39,42,70,-4,0,39,45,-4,0,83,39,40,70,-4,0,39,40,39,45,70,-3,0,69,51,40,56,-4,0,39,45,70,-3,0,69,39,40,70,-4,0,51,45,56,75,-3,0,41,40,70,-3,0,55,39,40,70,-3,0,69,51,45,-4,0,55,51,40,70,-4,0,39,40,84,-3,0,83,39,40,39,40,56,-3,0,83,39,42,70,-3,0,55,41,40,56,-3,0,55,39,45,56,-3,0,69,39,40,70,75,0,0,55,51,40,56,-3,0,69,39,40,-4,0,55,39,40,56,-4,0,39,40,-4,0,69,39,40,-5,0,39,40", c:"72,30,-1403,0,15,15,-63,0,-16,15,-28,0,15,15,-19,0,-30,15,-19,0,-11,15,-5,0,-44,15,-5,0,-64,15,0,-448,15", b:"40,30,-10,0,101,103,-18,0,101,103,-17,0,101,102,102,107,103,-3,0,101,107,104,-9,0,101,102,102,107,103,-3,0,101,107,104,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-3,102,104,101,103,0,101,103,-3,0,-5,102,103,0,101,-6,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-5,102,107,102,102,111,0,0,115,121,121,-3,102,107,102,121,-3,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,102,122,-3,102,117,-6,0,115,-3,102,117,0,115,102,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,117,0,115,122,117,-8,0,115,102,102,123,0,0,115,-6,0,101,107,105,0,101,107,109,0,115,117,0,101,103,-7,0,101,107,105,0,101,107,109,0,115,117,0,101,103,0,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,107,104,101,107,105,101,-3,102,107,102,102,103,-3,0,101,102,102,107,-6,102,117,114,-5,102,103,0,101,102,117,115,-7,102,117,114,-5,102,103,0,101,102,117,115,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,118,114,-4,102,103,101,-3,102,118,115,102,108,102,102,104,101,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-3,102,104,101,-6,102,117,115,102,103,101,102,117,68,114,-7,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,118,113,121,117,0,0,115,121,121,117,-3,0,114,-6,102,105,-12,0,101,-6,102,105,-12,0,101,-6,102,119,-11,0,101,-7,102,119,-11,0,101,-6,102,119,-11,0,101,102,102,117,115,-3,102,119,-11,0,101,102,102,117,115,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,115,102,118,0,0,100,103,-7,0,106,-3,102,103,0,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,101,102,123,0,101,102,102,109,-7,0,115,-3,102,103,102,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,123,106,-3,102,103,0,101,107,107,103,-3,0,115,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-5,102,103,101,-4,102,107,-4,102,105,0,0,100,-3,102,115,-13,102,105,100,-3,102,117,115,-13,102,105,100,-3,102,117,0,115,121,-4,102,121,121,-9,102,117,0,0,115,121,-4,102,121,121,-9,102,117,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-4,0,115,102,102,118,0,0,115,-3,122,-5,102,103,-5,0,115,118,-7,0,115,102,118,115,102,102,103,-4,0,115,118,-7,0,115,102,118,115,102,102,103,103,-10,0,101,107,107,102,105,101,-3,102,103,-10,0,101,107,107,102,105,101,-3,102,117,-9,0,101,-7,102,121,121,117,-9,0,101,-7,102,121,121,-9,0,101,102,121,117,115,121,102,102,117,-11,0,101,102,121,117,115,121,102,102,117,-10,0,101,102,117,-3,0,110,102,102,103,-10,0,101,102,117,-3,0,110,102,102,103,0,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,106,107,103,101,107,111,0,106,102,102,111,101,-3,107,-3,102,103,0,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,101,-4,102,103,0,110,102,102,111,115,-3,102,117,115,102,102,103,-6,102,107,107,102,102,103,0,115,102,102,103,101,-9,102,107,107,102,102,103,0,115,102,102,103,101,-3,102", e:"1,0,20,0|4,0,13,-1,6,16", t:"jungleTiles", bg:"jungleBG", bs:0, s:0, env:ENVIRONMENT_LEAF, name:"Zone 2-4", gunUnlock:22, bgm:"sLevelLoopJungle", mapd:2, mapdx:36, mapdy:52};
levels[9] = {d:"42,20,-703,0,97,-9,0,62,-10,0,97,-9,0,62,59,66,96,-6,0,62,32,33,12,-6,0,62,30,-8,0,98,62,57,66,-5,0,97,97,62,30,37,30,65,-5,0,62,28,58,53,98,-5,0,62,30,16,59,58,57,58,56,60,59,57,57,29,36,31,60,61,60,57,56,57,58,30,16,15,37,27,59,61,58,56,57,57,25,61,25,58,56,58,32,33,56,30,21,20", c:"42,20,-713,0,15,-20,0,-3,15,-7,0,-4,15,-6,0,15,15,-9,0,-3,15,-7,0,-5,15,-5,0,-4,15,-6,0,-45,15", b:"80,20,-749,0,100,101,104,-37,0,100,101,104,-34,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0", e:"1,0,18,16|4,0,12,-1,12,2|256,10,17,1,1000|256,21,16,1,1000|256,36,18,1,1000", t:"canyonTiles", bg:"canyonBG", bs:0, s:0, env:0, name:"Zone 3-1", gunUnlock:23, bgm:"sLevelLoopEvil", mapd:3, mapdx:68, mapdy:24};
levels[10] = {d:"65,32,-1370,0,97,-53,0,96,-8,0,98,0,62,57,66,0,0,96,-42,0,96,-3,0,62,60,66,-3,0,98,0,57,56,57,57,58,57,28,-3,57,32,33,82,-39,0,81,56,58,57,58,30,59,31,58,58,57,57,56,25,61,37,36,23,37,30,38,31,30,34,35,78,-7,0,96,-23,0,96,-7,0,74,29,13,15,16,13,20,13,24,16,13,19,13,28,29,17,31,28,30,17,18,13,31,25,29,77,0,96,0,0,98,62,56,66,96,97,-17,0,96,97,0,98,62,60,66,-3,0,97,96,74,30,19,13,22,15,14,15,37,17,22,15,13,36,24,20,31,34,30,22,16,19,15,17,14,31,60,56,57,58,60,29,31,58,32,33,56,58,82,-13,0,79,57,56,60,61,57,59,57,60,61,57,60,60,30,14,17,16,19,13,18,13,13,17,19,13,16,18,36,17,16,14,17,19,27,17,19,16,16,13,16,31,32,33,28,34,27,19,13,31,25,28,78,-7,0,96,-5,0,74,28,58,61,58,59,57,61,59,58,58,30,17,13,15,14,24,31,58,57,29,15,20,20,19,13,22,16,19,20,17,16,14,36,15,13,18,13,17,20,31,34,35,28,29,36,20,16,13,36,61,78,0,0,98,0,0,62,58,66,0,0,97,0,0,74,25,30,15,31,61,27,31,57,30,13,19,20,19,18,18,31,-3,58,57,29,13,16,17,13,14,17,13,18,13,20,18,20,17,16,17,14,15,15,16,18,36,14,19,17,22,23,20,19,18,31,-5,58,32,33,25,-5,58,30,29,26,24,17,16,36,14,19,22,17,15,16,22,15,13,31,56,57,58,56,30,16,23,19,22,19,17,18,14,31,58,60,30,19,17,15,13,16,22,16,13,17,15,16,17,31,28,30,16,20,31,58,29,31,61,28,34,35,14,18,31,28,61,30,14,30,18,36,15,22,20,16,17,16,20,24,18,14,17,13,18,16,31,56,29,16,22,37,15,13,13,20,16,31,60,58,58,29,18,20,16,18,13,17,14,16,19,18,20,16,18,38,16,13,14,14,36,14,18,14,38,-3,14,19,14,22,14,18,14,29,15,20,18,19,17,15,19,13,15,36,19,16,14,19,15,13,19,17,13,19,13,15,13,13", c:"65,32,-1435,0,-3,15,-49,0,-3,15,-5,0,-12,15,47,-39,0,47,-24,15,47,-39,0,47,-25,15,-5,0,-3,15,-23,0,-3,15,-5,0,-38,15,47,-13,0,47,-50,15,47,-13,0,47,-51,15,-5,0,-3,15,-5,0,-221,15", b:"80,20,-749,0,100,101,104,-37,0,100,101,104,-34,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0", e:"1,0,20,0|4,0,20,-1,12,8|256,6,21,1,750|256,19,24,1,750|256,32,27,1,750|256,45,24,1,750|256,58,21,1,750", t:"canyonTiles", bg:"canyonBG", bs:0, s:0, env:0, name:"Zone 3-2", gunUnlock:24, bgm:"sLevelLoopEvil", mapd:3, mapdx:70, mapdy:22};
levels[11] = {d:"64,30,-873,0,96,-60,0,79,60,57,58,82,-59,0,74,30,13,31,78,-6,0,98,-49,0,97,96,0,74,30,13,31,78,97,96,-4,0,62,58,82,-45,0,62,-4,57,58,30,15,31,-3,58,56,-3,57,58,61,78,-35,0,96,98,62,58,90,-5,91,95,30,13,31,57,30,13,13,18,37,37,38,28,31,30,14,31,61,78,-5,0,98,62,57,58,57,58,57,0,96,-4,0,96,0,98,-3,0,62,57,66,-5,0,97,96,0,62,59,58,59,53,0,96,-3,0,46,30,13,31,57,30,15,13,22,13,15,14,36,14,14,16,14,61,57,57,58,56,-3,58,30,31,29,36,22,14,57,57,66,97,98,62,59,90,93,91,91,93,95,58,90,91,93,-3,91,95,59,57,57,58,30,31,58,58,90,-3,91,94,30,13,22,-4,13,15,13,22,-3,13,22,13,13,15,31,28,30,31,30,15,13,13,-3,14,16,23,58,57,57,58,-3,57,53,-4,0,46,58,53,-5,0,45,28,58,9,10,8,10,9,58,53,-3,0,46,30,31,57,9,57,30,13,13,18,13,13,15,13,13,18,13,-3,15,14,-3,15,22,18,14,16,31,30,58,57,30,22,36,38,31,58,52,-4,0,46,57,53,-5,0,46,28,53,-5,0,46,53,-3,0,46,30,31,53,98,46,30,23,24,13,24,13,23,13,15,13,22,-3,13,22,13,16,13,16,-3,13,53,0,46,19,15,13,24,13,31,58,53,-4,0,46,58,53,-5,0,45,36,53,-3,0,98,96,46,90,-3,91,94,30,31,58,9,58,9,10,61,9,57,61,9,61,61,57,9,10,10,9,57,10,9,10,9,57,10,9,51,0,46,22,16,23,38,19,31,59,53,-4,0,46,59,52,-4,0,98,46,14,31,57,57,-4,58,53,-3,0,46,30,31,53,0,40,0,0,98,0,40,-4,0,39,0,96,0,0,39,-3,0,96,40,0,0,97,0,40,13,31,57,30,22,19,27,52,-4,0,46,57,90,92,91,91,93,91,95,-7,13,31,53,-3,0,46,30,31,53,0,39,0,62,66,0,39,0,62,66,0,40,0,62,60,60,53,-3,0,62,53,0,62,66,0,46,31,57,58,57,30,13,31,53,-3,0,62,58,58,53,-5,0,46,30,-6,13,31,53,-3,0,46,30,31,53,0,40,0,48,51,0,40,0,48,51,0,39,0,46,30,13,53,0,11,8,9,53,0,48,51,0,46,19,31,58,57,30,16,17,52,-3,0,46,57,59,53,-5,0,46,30,-6,13,31,53,-3,0,46,30,31,53,0,40,0,0,96,0,39,0,96,97,0,40,0,46,30,13,53,0,97,96,0,40,-4,0,40,13,16,31,27,30,15,13,52,-3,0,46,58,59,53,-5,0,46,30,-6,13,31,53,-3,0,46,30,31,-5,58,60,58,53,0,63,60,-3,58,57,30,13,-5,60,28,-4,60,57,-3,13,36,13,13,31,53,-3,0,46,58,57,90,92,92,93,92,92,94,30,-6,13,31,53,-3,0,46,30,13,13,18,13,13,18,13,13,53,0,46,13,13,18,-3,13,18,-4,13,18,13,13,18,13,22,13", c:"64,30,-934,0,47,-3,15,47,-59,0,47,-3,15,47,-59,0,-5,15,-6,0,15,15,47,-45,0,-18,15,47,-37,0,-27,15,-6,0,-6,15,-12,0,-3,15,-8,0,-44,15,0,0,-10,15,-5,8193,-59,15,-5,0,-59,15,-5,0,-3,15,-5,0,-35,15,0,-15,15,-5,0,-3,15,-5,0,-51,15,-5,0,-3,15,4111,4111,-54,15,-5,8193,-3,15,4111,4111,-54,15,-5,0,-3,15,4111,4111,-54,15,-5,0,-5,4111,-54,15,-5,0,-5,4111,-13,15,0,-11,15,0,0,-12,15,0,-47,15,0,-15,15", b:"80,20,-749,0,100,101,104,-37,0,100,101,104,-34,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0", e:"1,0,19,0|4,0,19,-1,8,16|256,13,18,1,750|256,26,17,1,750|256,35,16,1,750|256,46,16,1,750|256,55,18,1,750|512,26,23,16", t:"canyonTiles", bg:"canyonBG", bs:0, s:0, env:0, name:"Zone 3-3", gunUnlock:26, bgm:"sLevelLoopEvil", mapd:3, mapdx:72, mapdy:21};
levels[12] = {d:"81,30,-1659,0,96,98,-76,0,96,0,1,60,58,60,4,97,96,-67,0,96,97,2,3,57,58,57,60,58,60,58,60,58,57,56,6,5,0,97,96,-55,0,97,0,98,2,3,57,58,57,58,57,30,15,15,18,15,13,13,15,13,16,31,58,58,60,58,57,6,5,0,0,98,-47,0,97,2,3,58,57,58,57,57,30,31,13,18,15,15,16,13,18,13,13,24,13,14,14,13,14,16,13,13,31,58,57,56,58,56,6,5,0,96,-37,0,97,98,2,3,57,58,57,57,60,58,57,58,57,61,57,30,15,22,13,15,22,13,15,21,31,58,29,15,18,16,14,13,22,18,13,13,31,57,57,60,57,56,58,58,57,6,5,98,-29,0,96,2,3,57,58,-3,57,28,58,61,58,61,58,56,58,30,15,38,18,13,13,16,21,15,31,58,58,57,28,57,30,15,13,13,16,16,13,13,15,14,31,60,57,60,30,13,16,31,56,60,58,57,58,6,5,97,98,96,-15,0,98,0,0,2,3,57,58,57,58,57,30,37,38,23,38,36,31,58,57,30,38,31,61,58,30,15,13,15,21,18,16,18,15,31,57,58,60,57,58,57,30,18,13,18,22,13,16,18,14,15,18,36,13,15,13,18,31,59,59,28,61,57,58,56,58,56,6,5,96,-7,0,97,96,0,2,3,57,58,-3,57,30,15,13,31,32,33,57,58,29,16,15,18,16,15,13,16,13,18,13,16,18,13,16,13,13,22,18,21,15,38,13,16,18,13,38,18,15,14,16,13,16,13,15,13,16,22,15,16,14,22,16,13,18,13,36,31,60,58,60,60,58,56,57,58,58,56,6,5,0,98,96,57,56,58,56,60,60,57,57,30,15,18,22,16,31,34,35,58,57,30,13,13,16,13,21,22,13,15,21,13,15,13,13,15,13,15,13,16,16,13,18,15,16,15,18,16,15,13,15,13,15,13,18,14,15,13,13,16,13,18,15,18,16,15,31,61,58,57,58,60,57,58,59,59,57,56,57,56,60,57,58,56", c:"81,30,-1739,0,64,16385,15,16385,128,-71,0,256,512,16385,-9,15,16385,1024,2048,-61,0,256,512,16385,-19,15,16385,1024,2048,-51,0,256,512,16385,-29,15,16385,1024,2048,-41,0,256,512,16385,-39,15,16385,1024,2048,-31,0,256,512,16385,-49,15,16385,1024,2048,-21,0,256,512,16385,-59,15,16385,1024,2048,-11,0,256,512,16385,-16,15,0,-52,15,16385,1024,2048,-3,0,-81,15", b:"80,20,-749,0,100,101,104,-37,0,100,101,104,-34,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,99,103,0,108,106,109,0,0,99,101,102,103,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-28,0,105,107,0,110,111,112,0,0,108,125,106,109,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-24,0,124,124,0,0,110,112,0,113,114,115,0,0,110,111,117,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,99,101,102,102,103,100,104,-5,0,136,133,137,0,0,113,115,124,116,117,118,0,0,113,114,120,107,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,-11,0,105,106,117,106,135,133,112,-5,0,119,120,115,0,0,119,127,129,130,125,121,124,0,116,131,111,112,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,99,102,103,-6,0,108,114,-3,106,114,115,-5,0,122,126,123,124,0,116,121,0,119,120,127,128,129,130,126,125,118,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,110,111,112,0,0,124,-3,0,113,117,106,-3,114,123,-5,0,119,126,131,134,133,135,123,0,122,126,123,0,0,119,114,117,121,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,113,117,115,124,136,133,137,0,0,119,135,-3,126,120,121,0,99,102,103,0,122,126,127,128,128,130,121,0,122,120,121,0,0,122,126,114,115,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,119,131,127,128,130,125,121,0,0,122,106,126,106,131,114,118,0,110,111,112,0,119,126,115,0,0,116,131,134,135,117,131,134,132,133,120,120,118,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0,116,114,115,0,119,131,121,0,0,116,117,106,127,129,130,123,0,113,114,118,0,122,126,123,0,0,122,120,117,120,120,126,125,120,120,126,114,123,0,0", e:"1,0,28,0|4,0,28,-1,6,32", t:"canyonTiles", bg:"canyonBG", bs:0, s:0, env:0, name:"Zone 3-4", gunUnlock:27, bgm:"sLevelLoopEvil", mapd:3, mapdx:74, mapdy:22};
levels[13] = {d:"78,30,-1637,0,65,-76,0,64,66,-4,42,51,-33,0,64,65,-8,0,48,43,51,-22,0,48,-4,42,-4,13,50,-4,42,51,-3,0,48,43,51,-13,0,48,43,51,-4,0,64,65,66,64,66,64,-3,0,48,42,42,49,13,50,42,42,51,-5,0,66,-7,0,48,43,51,-3,0,31,-5,13,16,-7,13,50,-3,42,49,13,50,-4,42,51,-5,0,48,42,42,49,13,50,42,42,51,66,65,64,65,66,48,-4,42,49,-3,13,16,-3,13,38,66,-3,0,66,65,64,-3,0,48,42,42,49,13,50,-3,42,49,16,13,14,-4,13,14,-12,13,14,-3,13,50,-5,42,49,-6,13,14,50,-5,42,49,-11,13,15,50,-10,42,49,-19,13,15,-6,13,16,-6,13,15,-11,13,16,-14,13,14,-18,13,14,13,13,15,-34,13,14,-11,13,15,-16,13,14,-4,13,15,-18,13,15,-8,13,14,-11,13,16,-7,13,15,-11,13,16,-9,13,14,-20,13,14,13,13,15,-7,13,16,-6,13,15,-5,13,14,-21,13,14,-3,13,15,-17,13,14,13,16,-12,13", c:"78,30,-1637,0,4111,-76,0,4111,4111,-5,15,-33,0,4111,4111,-8,0,-3,15,-22,0,-15,15,-3,0,-3,15,-13,0,-3,15,-4,0,-6,4111,-3,0,-9,15,-5,0,4111,-7,0,-3,15,-3,0,-26,15,-5,0,-9,15,-5,4111,-14,15,4111,-3,0,-3,4111,-3,0,-404,15", b:"44,20,-14,0,67,69,-20,0,67,69,-20,0,73,75,-20,0,73,75,-52,0,67,69,-20,0,67,69,-20,0,73,75,-4,0,67,69,-14,0,73,75,-4,0,67,69,-20,0,73,75,-6,0,67,69,-12,0,73,75,-6,0,67,69,-20,0,73,75,-20,0,73,75,-97,0,67,69,-10,0,67,69,-8,0,67,69,-10,0,67,69,-8,0,73,75,-5,0,67,69,-3,0,73,75,-8,0,73,75,-5,0,67,69,-3,0,73,75,-5,0,67,69,-8,0,73,75,-10,0,67,69,-8,0,73,75,-10,0,73,75,-20,0,73,75,-69,0,67,69,-7,0,67,69,-11,0,67,69,-7,0,67,69,-11,0,73,75,-7,0,70,72,-11,0,73,75,-7,0,70,72,-10,0,67,68,69,-7,0,73,75,0,67,69,-7,0,67,68,69,-7,0,73,75,0,67,69,0,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70", e:"1,0,21,16|4,0,21,-1,14,8|256,14,22,4,1500|256,30,22,4,1500|256,49,21,4,1500|256,68,22,4,1500", t:"trainingTiles", bg:"trainingBG", bs:0, s:0, env:0, name:"Zone 4-1", gunUnlock:29, bgm:"sLevelLoopTraining", mapd:4, mapdx:108, mapdy:37};
levels[14] = {d:"86,30,-1782,0,48,-3,42,51,-9,0,48,-3,42,51,-10,0,48,-3,42,51,-9,0,48,-3,42,51,-19,0,48,-3,42,51,-9,0,48,-4,42,49,-3,13,38,-3,0,48,43,51,-3,0,31,-3,13,50,-10,42,49,-3,13,39,-3,0,48,43,51,-3,0,31,-3,13,50,-4,42,51,-9,0,48,-4,42,49,-3,13,38,-3,0,48,43,51,-3,0,31,-8,13,50,-3,42,49,13,50,-3,42,49,-18,13,50,-3,42,49,13,50,-3,42,49,-8,13,39,-3,0,48,43,51,-3,0,31,-8,13,50,-3,42,49,13,50,-3,42,49,-29,13,16,-26,13,50,-3,42,49,13,50,-3,42,49,-10,13,16,-24,13,16,13,14,-12,13,14,-12,13,14,-16,13,14,-18,13,15,-39,13,15,-6,13,16,-6,13,15,-11,13,16,-14,13,14,-18,13,14,13,13,15,-42,13,14,-11,13,15,-16,13,14,-4,13,15,-26,13,15,-8,13,14,-11,13,16,-7,13,15,-11,13,16,-9,13,14,-20,13,14,13,13,15,-15,13,16,-6,13,15,-5,13,14,-21,13,14,-3,13,15,-17,13,14,13,16,-20,13", c:"86,30,-1782,0,-5,15,-9,0,-5,15,-10,0,-5,15,-9,0,-5,15,-19,0,-5,15,-9,0,-10,15,-3,0,-3,15,-3,0,-20,15,-3,0,-3,15,-3,0,-10,15,-9,0,-10,15,-3,0,-3,15,-3,0,-58,15,-3,0,-3,15,-3,0,-564,15", b:"44,20,-14,0,67,69,-20,0,67,69,-20,0,73,75,-20,0,73,75,-52,0,67,69,-20,0,67,69,-20,0,73,75,-4,0,67,69,-14,0,73,75,-4,0,67,69,-20,0,73,75,-6,0,67,69,-12,0,73,75,-6,0,67,69,-20,0,73,75,-20,0,73,75,-97,0,67,69,-10,0,67,69,-8,0,67,69,-10,0,67,69,-8,0,73,75,-5,0,67,69,-3,0,73,75,-8,0,73,75,-5,0,67,69,-3,0,73,75,-5,0,67,69,-8,0,73,75,-10,0,67,69,-8,0,73,75,-10,0,73,75,-20,0,73,75,-69,0,67,69,-7,0,67,69,-11,0,67,69,-7,0,67,69,-11,0,73,75,-7,0,70,72,-11,0,73,75,-7,0,70,72,-10,0,67,68,69,-7,0,73,75,0,67,69,-7,0,67,68,69,-7,0,73,75,0,67,69,0,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70", e:"1,0,21,0|4,0,21,-1,10,16|256,71,20,4,1500|256,52,21,4,1500|256,33,22,4,1500|256,14,21,4,1500", t:"trainingTiles", bg:"trainingBG", bs:0, s:0, env:0, name:"Zone 4-2", gunUnlock:30, bgm:"sLevelLoopTraining", mapd:4, mapdx:110, mapdy:39};
levels[15] = {d:"86,30,-1720,0,-4,42,51,-81,0,-4,13,18,9,9,12,42,51,-5,0,48,42,11,9,10,-66,0,13,14,13,13,38,0,0,31,13,18,9,10,7,8,9,19,13,38,0,0,48,42,11,9,9,10,-5,0,8,9,9,12,42,51,-24,0,8,9,10,-22,0,-3,13,16,38,0,0,31,16,38,-5,0,31,13,38,0,0,31,14,21,-11,22,23,16,18,9,9,10,-15,0,48,42,11,-3,9,10,0,8,-3,9,12,42,51,-13,0,48,42,42,14,-3,13,38,0,0,31,13,38,-5,0,31,13,38,0,0,31,13,38,-11,0,31,13,38,-3,0,48,42,51,-7,0,48,42,20,22,22,23,13,38,-9,0,31,13,38,-8,0,8,-4,9,19,-6,13,38,0,0,31,13,38,-5,0,31,13,38,0,0,31,13,38,-11,0,31,13,38,-3,0,31,13,18,9,9,10,7,8,9,9,19,14,38,0,0,31,14,38,-9,0,31,13,21,-5,22,24,42,51,-5,0,31,-4,13,14,13,38,0,0,31,13,38,-5,0,31,16,38,0,0,31,13,38,-11,0,31,13,38,-3,0,31,13,38,-7,0,31,13,38,0,0,31,13,38,-9,0,31,13,38,-5,0,31,13,38,-5,0,31,-6,13,38,0,0,31,13,38,-5,0,31,13,38,0,0,31,16,38,-11,0,31,13,38,-3,0,31,14,38,-7,0,31,16,38,0,0,31,16,38,-9,0,31,13,38,-5,0,31,13,38,-5,0,31,-3,13,16,13,13,38,0,0,31,14,38,-5,0,31,14,38,0,0,31,13,38,-11,0,31,14,38,-3,0,31,13,38,-7,0,31,13,38,0,0,31,13,38,-9,0,31,13,38,-5,0,31,13,38,-5,0,31,-6,13,38,0,0,31,13,38,-5,0,31,13,38,0,0,31,13,38,-11,0,31,13,38,-3,0,31,13,38,-7,0,31,13,38,0,0,31,14,38,-9,0,31,13,38,-5,0,31,13,38,-5,0,31,13,13", c:"86,30,-1720,0,-5,15,-81,0,-10,15,-5,0,-5,15,-66,0,-26,15,-5,0,-6,15,-24,0,-3,15,-22,0,-40,15,-15,0,-15,15,-13,0,-46,15,-7,0,-20,15,-8,0,-389,15,0,-48,15", b:"44,20,-14,0,67,69,-20,0,67,69,-20,0,73,75,-20,0,73,75,-52,0,67,69,-20,0,67,69,-20,0,73,75,-4,0,67,69,-14,0,73,75,-4,0,67,69,-20,0,73,75,-6,0,67,69,-12,0,73,75,-6,0,67,69,-20,0,73,75,-20,0,73,75,-97,0,67,69,-10,0,67,69,-8,0,67,69,-10,0,67,69,-8,0,73,75,-5,0,67,69,-3,0,73,75,-8,0,73,75,-5,0,67,69,-3,0,73,75,-5,0,67,69,-8,0,73,75,-10,0,67,69,-8,0,73,75,-10,0,73,75,-20,0,73,75,-69,0,67,69,-7,0,67,69,-11,0,67,69,-7,0,67,69,-11,0,73,75,-7,0,70,72,-11,0,73,75,-7,0,70,72,-10,0,67,68,69,-7,0,73,75,0,67,69,-7,0,67,68,69,-7,0,73,75,0,67,69,0,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70", e:"1,0,19,0|4,0,19,-1,8,32|256,12,21,4,1500|256,28,22,4,1500|256,46,24,4,1500|256,62,21,4,1500|256,80,23,4,1500", t:"trainingTiles", bg:"trainingBG", bs:0, s:0, env:0, name:"Zone 4-3", gunUnlock:31, bgm:"sLevelLoopTraining", mapd:4, mapdx:114, mapdy:42};
levels[16] = {d:"86,30,-1766,0,66,64,-83,0,64,65,66,64,-82,0,65,66,64,66,65,65,-78,0,65,66,66,64,66,48,42,63,-30,0,48,42,43,42,42,-42,0,65,66,64,48,42,42,49,16,60,-20,0,48,42,43,42,51,-5,0,31,-3,13,16,-35,0,48,42,43,42,11,9,10,7,8,9,19,15,-3,13,60,-5,0,48,43,51,-12,0,31,13,14,13,50,-5,42,49,13,13,15,13,-19,0,48,42,43,42,51,-6,0,48,42,43,42,42,49,13,13,16,39,-5,0,31,13,13,14,13,50,-5,42,49,13,50,-4,42,11,10,8,12,-4,42,49,-14,13,-11,0,48,43,51,-5,0,31,-3,13,38,-6,0,31,16,13,14,13,13,15,13,41,36,-4,0,64,35,40,-6,13,15,13,13,15,-6,13,18,9,9,19,-9,13,16,-8,13,14,-6,0,48,42,43,42,44,49,16,50,47,46,43,47,46,49,13,13,14,50,-6,42,49,-4,13,16,13,13,38,-4,0,66,65,66,31,13,13,14,13,13,16,-7,13,15,13,14,38,0,0,31,13,16,14,13,13,15,-5,13,15,-3,13,16,-3,13,44,-5,42,49,13,15,-3,13,14,13,13,15,-4,13,16,-5,13,14,-3,13,14,13,13,15,13,14,13,15,21,-7,22,23,16,13,15,-7,13,14,16,-4,13,38,0,0,31,-7,13,14,-5,13,15,-5,13", c:"86,30,-1766,0,4111,4111,-83,0,-4,4111,-82,0,-6,4111,-78,0,-5,4111,15,15,47,-30,0,-5,15,-42,0,-3,4111,-5,15,47,-20,0,-5,15,-5,0,-5,15,-35,0,-16,15,-5,0,-3,15,-12,0,-15,15,-19,0,-5,15,-6,0,-56,15,-11,0,-3,15,-5,0,-5,15,-6,0,-56,15,-6,0,-166,15", b:"44,20,-14,0,67,69,-20,0,67,69,-20,0,73,75,-20,0,73,75,-52,0,67,69,-20,0,67,69,-20,0,73,75,-4,0,67,69,-14,0,73,75,-4,0,67,69,-20,0,73,75,-6,0,67,69,-12,0,73,75,-6,0,67,69,-20,0,73,75,-20,0,73,75,-97,0,67,69,-10,0,67,69,-8,0,67,69,-10,0,67,69,-8,0,73,75,-5,0,67,69,-3,0,73,75,-8,0,73,75,-5,0,67,69,-3,0,73,75,-5,0,67,69,-8,0,73,75,-10,0,67,69,-8,0,73,75,-10,0,73,75,-20,0,73,75,-69,0,67,69,-7,0,67,69,-11,0,67,69,-7,0,67,69,-11,0,73,75,-7,0,70,72,-11,0,73,75,-7,0,70,72,-10,0,67,68,69,-7,0,73,75,0,67,69,-7,0,67,68,69,-7,0,73,75,0,67,69,0,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,68,68,69,-3,0,70,71,72,0,0,67,69,0,0,67,68,68,69,70,72,67,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,71,71,72,0,67,69,70,71,72,67,69,70,72,0,0,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70,74,74,75,69,73,75,73,74,75,73,75,73,75,69,69,70,71,71,72,70,72,70", e:"1,0,28,0|4,0,28,-1,-1,32|512,2,28,-2|256,12,26,4,1500|256,57,24,4,1500|256,72,23,1,750|256,37,24,1,750|256,21,25,1,750|256,83,22,4,1500", t:"trainingTiles", bg:"trainingBG", bs:0, s:0, env:0, name:"Zone X - Warning", gunUnlock:-1, bgm:"sLevelLoopTraining", mapd:5, mapdx:132, mapdy:54};
tw = (th = 32);
gamePaused = false;
gamePausedFunction = null;
mouseD = 0;
onMouseDown = function () {
mouseD = 1;
};
onMouseUp = function () {
mouseD = 0;
};
mouseW = 0;
onMouseWheel = function (delta) {
mouseW = sign(delta);
};
darkColor = {ra:"50", rb:"0", ga:"50", gb:"0", ba:"50", bb:"0", aa:"100", ab:"0"};
whiteColor = {ra:"100", rb:"100", ga:"100", gb:"100", ba:"100", bb:"100", aa:"100", ab:"0"};
normalColor = {ra:"100", rb:"0", ga:"100", gb:"0", ba:"100", bb:"0", aa:"100", ab:"0"};
hitColor = {ra:"100", rb:"150", ga:"100", gb:"0", ba:"100", bb:"0", aa:"100", ab:"0"};
triDamageColor = {ra:"100", rb:"0", ga:"100", gb:"0", ba:"100", bb:"150", aa:"100", ab:"0"};
invulnerableColor = {ra:"100", rb:"150", ga:"100", gb:"0", ba:"100", bb:"0", aa:"100", ab:"0"};
timeSinkColor = {ra:"100", rb:"0", ga:"100", gb:"150", ba:"100", bb:"0", aa:"100", ab:"0"};
invColor = {ra:"-100", rb:"255", ga:"-100", gb:"255", ba:"-100", bb:"255", aa:"100", ab:"0"};
frameRate = 32;
so = SharedObject.getLocal("heliattack3");
gotoAndStop ("menuintro");
Frame 19
gotoAndStop ("menuintro");
Frame 20
stop();
Frame 21
gotoAndStop ("menuintro");
Frame 22
delete onKeyDown;
if (isShared(so)) {
stats = getLastPlayer(so);
stats.timesplayed++;
menuToggle();
if (numPlayers(so) > 1) {
gotoAndStop ("select");
} else {
gotoAndStop ("menu");
}
} else {
gotoAndStop ("new");
}
mb.instantStart("sMenuLoop", 100);
clearMenus();
Frame 24
gotoAndStop ("menu");
Frame 25
function changeBGColor(num) {
flash.gotoAndPlay(1);
bgcolor.gotoAndStop(num);
logo.gotoAndStop(num);
}
mb.start("sMenuLoop", 5, 100);
changeBGColor(1);
playerD.name = "Current Player: " + stats.name;
stop();
Frame 26
gotoAndStop ("menu");
Frame 29
gotoAndStop ("start");
Frame 30
flash.gotoAndPlay(1);
playerD.name = "Current Player: " + stats.name;
if (stats.currentGame == true) {
contc.onRelease = function () {
resumeSurvival();
gotoAndStop ("levelSelect");
};
} else {
contc._visible = false;
}
Frame 31
gotoAndStop ("start");
Frame 34
gotoAndStop ("instructions");
Instance of Symbol 1848 MovieClip in Frame 34
//component parameters
onClipEvent (construct) {
child = "instructions";
height = 170;
}
Frame 35
changeBGColor(5);
playerD.name = "Current Player: " + stats.name;
instructions.text = "Use the movement keys to move your player, Left and Right keys to move. Press the Jump key to jump, or hold it to jump higher. Hold the Crouch key to lower your height and dodge bullets, you can also crouch mid-air for highly evasive jumps. These keys are changeable in the options menu.";
instructions.text = instructions.text + "\n\nUse the mouse to aim and click the mouse button to shoot your weapon. Change weapons with the mousewheel.";
instructions.text = instructions.text + "\n\nThe Time Mode key triggers time modes which will slow down time to help you dodge and aim.";
instructions.text = instructions.text + "\n\nUse the Modify key to change actions. Modify+Jump will hyperJump and Modify+ChangeWeapon will change time modes. Modify+Crouch will let you drop through certain floors.";
instructions.text = instructions.text + "\n\nEvery time you destroy 2 helicopters, an item will drop. Unlock weapons by defeating levels, this will increase the variety of weapons that can be dropped.";
instructions.text = instructions.text + "\n\nUse the options menu to change settings, you can toggle graphical effects that can speed up gameplay when turned off (background, brass, particles, coronas), and toggle sound and music. You can also toggle automatic weapon switching, which will automatically switch your weapon if you pick up a better one.";
instructions.text = instructions.text + "\n\nUse the controls menu to change your controls, click a control you wish to change, and press a key to bind that control to that key.";
Frame 36
gotoAndStop ("instructions");
Frame 39
gotoAndStop ("highscores");
Frame 40
function playAgain() {
disabler._visible = false;
_level0.gotoAndStop("menu");
}
changeBGColor(3);
playerD.name = "Current Player: " + stats.name;
_level0.swHighScoreObject = new Object();
_level0.swHighScoreObject.showTab = "view";
_level0.swHighScoreObject.gameId = "heliattack3";
_level0.swHighScoreObject.gameTitle = "Heli Attack 3";
_level0.swHighScoreObject.screenWidth = 448;
_level0.swHighScoreObject.screenHeight = 320;
_level0.swHighScoreObject.scoreDescriptor = "points";
_level0.swHighScoreObject.numPlayers = 0;
_level0.swHighScoreObject.player1Score = 0;
_level0.swHighScoreObject.player2Score = 0;
_level0.swHighScoreObject.player3Score = 0;
_level0.swHighScoreObject.player4Score = 0;
_level0.HSHubURL = "http://www.shockwave.com/content/highscores/scorez-2002.swf";
loadMovieNum (_root.HSHubURL, 2);
disabler.docount = true;
disabler.trycount = 0;
disabler.onEnterFrame = function () {
if (this.docount) {
this.trycount++;
if ((_level2.getBytesTotal() == -1) && (this.trycount > 60)) {
this.docount = false;
this.trycount = 0;
this._visible = false;
}
}
};
Frame 41
gotoAndStop ("highscores");
Frame 44
gotoAndStop ("options");
Frame 45
changeBGColor(4);
playerD.name = "Current Player: " + stats.name;
drawOptions(opt, true);
drawControls(cont, true);
Frame 46
gotoAndStop ("options");
Frame 49
gotoAndStop ("stats");
Instance of Symbol 1848 MovieClip in Frame 49
//component parameters
onClipEvent (construct) {
child = "statsd";
height = 170;
}
Frame 50
changeBGColor(6);
playerD.name = "Current Player: " + stats.name;
statsd.text = ("Statistics for " + stats.name) + ":";
statsd.text = statsd.text + ("\n\tTimes Played: " + stats.timesplayed);
statsd.text = statsd.text + (("\n\tGames Played: " + stats.gamesplayed) + newline);
statsd.text = statsd.text + (("\n\tTotal Time Played: " + int(stats.totaltime / frameRate)) + " seconds");
statsd.text = statsd.text + (("\n\tBest Time: " + int(stats.besttime / frameRate)) + " seconds");
statsd.text = statsd.text + (("\n\tWorst Time: " + int(stats.worsttime / frameRate)) + " seconds\n");
if (stats.totalscore == 0) {
statsd.text = statsd.text + "\n\tTotal Score: 0";
statsd.text = statsd.text + "\n\tHigh Score: 0\n";
} else {
statsd.text = statsd.text + (("\n\tTotal Score: " + int(stats.totalscore)) + "00");
statsd.text = statsd.text + (("\n\tHigh Score: " + int(stats.highscore)) + "00\n");
}
statsd.text = statsd.text + ("\n\tHelis Destroyed: " + stats.totalhelis);
statsd.text = statsd.text + (("\n\tEnemies Destroyed: " + stats.totalenemies) + newline);
var s = 0;
var o = "";
var n = 0;
var max = 0;
var maxi = 0;
var i = 0;
while (i < guns.length) {
if (stats.guns[i].unlocked) {
n++;
o = o + ("\n\t\t" + guns[i].name);
s = s + stats.guns[i].shotsfired;
if (stats.guns[i].shotsfired > max) {
maxi = i;
max = stats.guns[i].shotsfired;
}
}
i++;
}
statsd.text = statsd.text + ((((("\n\t" + n) + "/") + guns.length) + " Weapons Unlocked:") + o);
if (n == guns.length) {
statsd.text = statsd.text + "\n\tAll Weapons Unlocked!";
}
statsd.text = statsd.text + newline;
statsd.text = statsd.text + ("\n\tShots Fired: " + s);
statsd.text = statsd.text + ("\n\tShots Hit: " + stats.shotshit);
if (s > 0) {
statsd.text = statsd.text + (("\n\tAccuracy: " + Math.round((stats.shotshit / s) * 100)) + "%");
} else {
statsd.text = statsd.text + "\n\tAccuracy: n/a";
}
if (max > 0) {
statsd.text = statsd.text + ("\n\tMost used weapon: " + guns[maxi].name);
}
Frame 51
gotoAndStop ("stats");
Frame 54
gotoAndStop ("new");
Frame 55
changeBGColor(1);
newname = "Player";
if (isShared(so)) {
canc.onRelease = function () {
gotoAndStop ("players");
};
} else {
canc._visible = false;
createSharedObject(so);
}
qual = 0;
quals.gotoAndStop(qual + 1);
quals.onRelease = function () {
qual++;
if (qual > 2) {
qual = 0;
}
this.gotoAndStop(qual + 1);
};
Frame 56
gotoAndStop ("new");
Frame 59
gotoAndStop ("del");
Frame 60
changeBGColor(2);
delname = stats.name + "?";
Frame 61
gotoAndStop ("del");
Frame 64
gotoAndStop ("players");
Frame 65
changeBGColor(7);
playerD.name = "Current Player: " + stats.name;
Frame 66
gotoAndStop ("players");
Frame 69
gotoAndStop ("change");
Frame 70
function showPlayers() {
var _local4 = numPlayers(so);
var _local2 = 0;
while (_local2 < _local4) {
var _local3 = playersDisplay.attachMovie("playerDisplay", "d_" + _local2, _local2);
_local3._x = ((-(_local3._width * (_local4 - 1))) / 2) + (_local2 * _local3._width);
_local3.name = so.data.players[_local2].name;
_local3.i = _local2;
_local3.onRelease = function () {
stats = getPlayer(so, this.i);
menuToggle();
gotoAndStop ("players");
};
_local2++;
}
}
changeBGColor(1);
showPlayers();
Frame 71
gotoAndStop ("change");
Frame 74
gotoAndStop ("error");
Frame 75
changeBGColor(2);
Frame 76
gotoAndStop ("error");
Frame 79
gotoAndStop ("select");
Frame 80
function showPlayers() {
var _local4 = numPlayers(so);
var _local2 = 0;
while (_local2 < _local4) {
var _local3 = playersDisplay.attachMovie("playerDisplay", "d_" + _local2, _local2);
_local3._x = ((-(_local3._width * (_local4 - 1))) / 2) + (_local2 * _local3._width);
_local3.name = so.data.players[_local2].name;
_local3.i = _local2;
_local3.onRelease = function () {
stats = getPlayer(so, this.i);
menuToggle();
gotoAndStop ("menu");
};
_local2++;
}
}
changeBGColor(1);
showPlayers();
Frame 81
gotoAndStop ("select");
Frame 84
gotoAndStop ("credits");
Instance of Symbol 1848 MovieClip in Frame 84
//component parameters
onClipEvent (construct) {
child = "credits";
height = 170;
}
Frame 85
changeBGColor(32);
credits.text = "Heli Attack 3 - Produced by squarecircleco.";
credits.text = credits.text + "\n\nGame Design & Programming:";
credits.text = credits.text + "\n\tChristopher 'iopred' Rhodes";
credits.text = credits.text + "\n\nArtwork:";
credits.text = credits.text + "\n\tChristian 'DayDream' Hildenbrand";
credits.text = credits.text + "\n\nSound & Music:";
credits.text = credits.text + "\n\tDavid 'Psykopig' Desi";
credits.text = credits.text + "\n\tChristopher 'iopred' Rhodes";
credits.text = credits.text + "\n\nSpecial thanks goes to:";
credits.text = credits.text + "\n\tDan 'Samurai' MacDonald";
credits.text = credits.text + "\n\tJason 'Visual Mirage' Mitsios";
credits.text = credits.text + "\n\tCraig 'Kludos' McPhee";
credits.text = credits.text + "\n\tChris 'Cookie' Tran";
credits.text = credits.text + "\n\tEric 'brimstone' He Song";
credits.text = credits.text + "\n\tNathan 'dstrek' Miller";
credits.text = credits.text + "\n\tRichard 'Squize' Myles";
credits.text = credits.text + "\n\tChris 'Pixelsumo' O'shea";
credits.text = credits.text + "\n\tJeremy 'Feanor' La Camera";
credits.text = credits.text + "\n\tSasha 'Skulky' Brejnev";
credits.text = credits.text + "\n\tLuke 'Lukstr' Rewega";
credits.text = credits.text + "\n\tHeli Attack 3 Beta testers";
credits.text = credits.text + "\n\tThe Stimunation crew";
credits.text = credits.text + "\n\tEveryone at FlashKit";
credits.text = credits.text + "\n\tAll the Miniclip supporters";
credits.text = credits.text + "\n\tEverybody who played and loved Heli Attack 2";
Frame 86
gotoAndStop ("credits");
Frame 89
gotoAndStop ("levelselect");
Frame 90
mb.start("sLevelSelectLoop", 5, 100);
function mapdd(x, y) {
mapd.small.circle._x = (mapd.large.circle._x = x);
mapd.small.circle._y = (mapd.large.circle._y = y);
mapd.large._x = ((-x) * 9.5) + 250;
mapd.large._y = ((-y) * 9.5) + 50;
mapd.large._xscale = (mapd.large._yscale = 950);
mapd.large.circle._xscale = (mapd.large.circle._yscale = 50);
}
changeBGColor(1);
playerD.name = "Current Player: " + stats.name;
if (stats.currentGame == false) {
if (stats.levels[1]) {
if (stats.level > 0) {
prevc._visible = true;
} else {
prevc._visible = false;
}
if (stats.levels[stats.level + 1] == true) {
nextc._visible = true;
} else {
nextc._visible = false;
}
prevc.onRelease = function () {
stats.level--;
if (stats.level < 0) {
stats.level = 0;
}
if (stats.level == 0) {
prevc._visible = false;
}
currentLevel = levels[stats.level].name;
mapd.gotoAndStop(levels[stats.level].mapd + 1);
mapdd(levels[stats.level].mapdx, levels[stats.level].mapdy);
nextc._visible = true;
};
nextc.onRelease = function () {
if (stats.levels[stats.level + 1]) {
stats.level++;
}
if (stats.level > (levels.length - 1)) {
stats.level = levels.length - 1;
}
if ((!stats.levels[stats.level + 1]) || (stats.level == (levels.length - 1))) {
nextc._visible = false;
}
currentLevel = levels[stats.level].name;
mapd.gotoAndStop(levels[stats.level].mapd + 1);
mapdd(levels[stats.level].mapdx, levels[stats.level].mapdy);
prevc._visible = true;
};
} else {
prevc._visible = false;
nextc._visible = false;
}
savec._visible = false;
backc._visible = true;
backc.onRelease = function () {
gotoAndStop ("menu");
};
newc._visible = false;
} else {
prevc._visible = false;
nextc._visible = false;
backc._visible = false;
savec._visible = true;
savec.onRelease = function () {
gotoAndStop ("menu");
};
newc._visible = false;
}
newStart = false;
startc.onRelease = function () {
startGame(stats.level);
};
currentLevel = levels[stats.level].name;
mapd.gotoAndStop(levels[stats.level].mapd + 1);
mapdd(levels[stats.level].mapdx, levels[stats.level].mapdy);
Frame 91
gotoAndStop ("levelselect");
Frame 94
gotoAndStop ("nextLevel");
Instance of Symbol 1848 MovieClip in Frame 94
//component parameters
onClipEvent (construct) {
child = "leveld";
height = 170;
}
Frame 95
mb.start("sLevelSelectLoop", 5, 100);
changeBGColor(1);
playerD.name = "Current Player: " + stats.name;
var lc = (stats.level - 1);
leveld.text = levels[lc].name + " completed!\n";
leveld.text = leveld.text + (("\nCurrent time: " + int(stats.gametime / frameRate)) + " seconds\n");
leveld.text = leveld.text + (("\nHealth bonus: " + healthbonus) + "00");
leveld.text = leveld.text + "\nCurrent score: ";
if (score == 0) {
leveld.text = leveld.text + 0;
} else {
leveld.text = leveld.text + (int(stats.score) + "00");
}
var gu = levels[lc].gunUnlock;
if (gu >= 0) {
if (!stats.guns[gu].unlocked) {
if (gu != -1) {
leveld.text = leveld.text + (("\n\n" + guns[gu].name) + " unlocked!");
if (gu > 2) {
leveld.text = leveld.text + "\n(This gun can now drop from enemies)\n\n";
} else {
leveld.text = leveld.text + "\n\n";
}
leveld.text = leveld.text + (guns[gu].name + " weapon data:\n");
leveld.text = leveld.text + (guns[gu].info + newline);
leveld.text = leveld.text + "\tAdditional data:\n";
leveld.text = leveld.text + (("\t\tClip size: " + guns[gu].clip) + newline);
leveld.text = leveld.text + (("\t\tDamage: " + guns[gu].damage) + newline);
leveld.text = leveld.text + (("\t\tReload time: " + (guns[gu].reloadtime / frameRate)) + " seconds");
stats.guns[gu].unlocked = true;
if (gu == 1) {
stats.guns[gu].ammo = Number.POSITIVE_INFINITY;
}
}
}
}
Frame 96
gotoAndStop ("nextLevel");
Frame 99
gotoAndStop ("gameOver");
Instance of Symbol 1848 MovieClip in Frame 99
//component parameters
onClipEvent (construct) {
child = "scored";
height = 140;
}
Frame 100
mb.start("sLevelSelectLoop", 5, 100);
changeBGColor(2);
playerD.name = "Current Player: " + stats.name;
scored.text = "You have died, game over.\n";
scored.text = scored.text + (("\nFinal time: " + int(stats.gametime / frameRate)) + " seconds");
if (stats.score == 0) {
scored.text = scored.text + "\nFinal score: 0";
} else {
scored.text = scored.text + (("\nFinal score: " + int(stats.score)) + "00");
}
Frame 101
gotoAndStop ("gameOver");
Frame 109
gotoAndStop ("weapons");
Instance of Symbol 1848 MovieClip in Frame 109
//component parameters
onClipEvent (construct) {
child = "weaponsd";
height = 170;
}
Frame 110
changeBGColor(6);
playerD.name = "Current Player: " + stats.name;
weapond.text = "";
var i = 0;
while (i < guns.length) {
if (stats.guns[i].unlocked) {
weaponsd.text = weaponsd.text + (guns[i].name + ":\n");
weaponsd.text = weaponsd.text + (guns[i].info + newline);
weaponsd.text = weaponsd.text + "\tAdditional data:\n";
weaponsd.text = weaponsd.text + (("\t\tClip size: " + guns[i].clip) + newline);
weaponsd.text = weaponsd.text + (("\t\tDamage: " + guns[i].damage) + newline);
weaponsd.text = weaponsd.text + (("\t\tReload time: " + (guns[i].reloadtime / frameRate)) + " seconds\n\n");
}
i++;
}
Frame 111
gotoAndStop ("weapons");
Frame 114
gotoAndStop ("weapons");
Frame 115
function playAgain() {
disabler._visible = false;
_level0.gotoAndStop("menu");
}
changeBGColor(3);
playerD.name = "Current Player: " + stats.name;
_level0.swHighScoreObject = new Object();
_level0.swHighScoreObject.showTab = "submit";
_level0.swHighScoreObject.gameId = "heliattack3";
_level0.swHighScoreObject.gameTitle = "Heli Attack 3";
_level0.swHighScoreObject.screenWidth = 448;
_level0.swHighScoreObject.screenHeight = 320;
_level0.swHighScoreObject.scoreDescriptor = "points";
_level0.swHighScoreObject.numPlayers = 1;
_level0.swHighScoreObject.player1Score = submitscore;
_level0.swHighScoreObject.player2Score = 0;
_level0.swHighScoreObject.player3Score = 0;
_level0.swHighScoreObject.player4Score = 0;
_level0.HSHubURL = "http://www.shockwave.com/content/highscores/scorez-2002.swf";
loadMovieNum (_root.HSHubURL, 2);
disabler.docount = true;
disabler.trycount = 0;
disabler.onEnterFrame = function () {
if (this.docount) {
this.trycount++;
if ((_level2.getBytesTotal() == -1) && (this.trycount > 60)) {
this.docount = false;
this.trycount = 0;
this._visible = false;
}
}
};
Frame 116
gotoAndStop ("weapons");
Frame 120
gotoAndStop ("initgame");
Frame 121
startGame(l);
gotoAndStop ("game");
Frame 122
gotoAndStop ("initgame");
Frame 124
gotoAndStop ("game");
Frame 125
stop();
Frame 126
gotoAndStop ("game");
Symbol 1924 MovieClip [__Packages.MusicBoard] Frame 0
class MusicBoard
{
var sb, sbt, music, vol, active;
function MusicBoard (sb, sbt, active) {
this.sb = sb;
this.sbt = sbt;
music = null;
vol = 0;
this.active = active;
}
function start(soundName, speed, vol) {
this.vol = vol;
if (!active) {
music = soundName;
return(undefined);
}
if (soundName == music) {
sbt.addTransform(soundName, sbt.FADETO, speed, vol);
return(undefined);
}
if (music != null) {
sbt.addTransform(music, sbt.FADEOUT, speed, 0);
}
sb.setVolume(soundName, 0);
sb.start(soundName, 0, 99999, true);
sbt.addTransform(soundName, sbt.FADEIN, speed, vol);
music = soundName;
}
function stop(speed) {
sbt.addTransform(music, sbt.FADEOUT, speed, 0);
}
function instantStart(soundName, vol) {
this.vol = vol;
if (!active) {
music = soundName;
return(undefined);
}
if (soundName == music) {
sb.setVolume(soundName, vol);
return(undefined);
}
if (music != null) {
sb.stop(music);
}
sb.setVolume(soundName, vol);
sb.start(soundName, 0, 99999, true);
music = soundName;
}
function instantIntroStart(soundName, soundName2, vol) {
this.vol = vol;
if (!active) {
music = soundName;
return(undefined);
}
if (soundName == music) {
sb.setVolume(soundName, vol);
return(undefined);
}
if (music != null) {
sb.stop(music);
}
sb.setVolume(soundName, vol);
sb.setVolume(soundName2, vol);
music = soundName2;
var _local5 = sb.getSound(soundName);
_local5.onSoundComplete = function () {
_root.sb.start(soundName2, 0, 99999, true);
};
sb.start(soundName, 0, 0, true);
}
function setActive(active) {
var _local2 = this.active;
this.active = active;
if (music == null) {
return(undefined);
}
if (this.active) {
if (!_local2) {
sb.setVolume(music, 0);
sb.start(music, 0, 99999, true);
sbt.addTransform(music, sbt.FADEIN, 5, vol);
}
} else {
stop(1);
}
}
}
Symbol 1925 MovieClip [__Packages.SoundBoard] Frame 0
class SoundBoard
{
var sounds, soundsClip, active;
function SoundBoard (clip, depth, active) {
sounds = new Array();
soundsClip = clip.createEmptyMovieClip("SoundBoard" + depth, depth);
this.active = active;
}
function attachSound(soundName, unForce) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
return(sounds[_local2].soundVar);
}
_local2++;
}
var _local4 = new Object();
_local4.soundName = soundName;
var _local6 = soundsClip.createEmptyMovieClip(soundName, sounds.length);
var _local5 = new Sound(_local6);
_local5.attachSound(soundName);
_local4.soundVar = _local5;
if (unForce == true) {
_local4.unForce = true;
} else {
_local4.unForce = false;
}
sounds.push(_local4);
return(_local5);
}
function getSound(soundName) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
return(sounds[_local2].soundVar);
}
_local2++;
}
}
function start(soundName, secondsOffset, loops, forceActive) {
if (active || (forceActive)) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
sounds[_local2].soundVar.stop();
sounds[_local2].soundVar.start(secondsOffset, loops);
break;
}
_local2++;
}
}
}
function stop(soundName) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
sounds[_local2].soundVar.stop();
break;
}
_local2++;
}
}
function setVolume(soundName, vol) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
sounds[_local2].soundVar.setVolume(vol);
}
_local2++;
}
}
function getVolume(soundName, vol) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
return(sounds[_local2].soundVar.getVolume());
}
_local2++;
}
}
function setPan(soundName, pan) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
sounds[_local2].soundVar.setPan(pan);
}
_local2++;
}
}
function getPan(soundName, vol) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
return(sounds[_local2].soundVar.getPan());
}
_local2++;
}
}
function setTransform(soundName, trans) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
sounds[_local2].soundVar.setTransform(trans);
}
_local2++;
}
}
function getTransform(soundName, vol) {
var _local2 = 0;
while (_local2 < sounds.length) {
if (sounds[_local2].soundName == soundName) {
return(sounds[_local2].soundVar.getTransform());
}
_local2++;
}
}
function stopAllSounds() {
var _local2 = 0;
while (_local2 < sounds.length) {
if (!sounds[_local2].unForce) {
sounds[_local2].soundVar.stop();
}
_local2++;
}
}
function setActive(active) {
this.active = active;
if (!this.active) {
stopAllSounds();
}
}
}
Symbol 1926 MovieClip [__Packages.SoundBoardTransform] Frame 0
class SoundBoardTransform
{
var sb, transformations;
function SoundBoardTransform (sb) {
this.sb = sb;
transformations = new Array();
}
function addTransform(soundName, transform, speed, target) {
var _local2 = 0;
while (_local2 < transformations.length) {
if (transformations[_local2].soundName == soundName) {
clearInterval(transformations[_local2].interval);
transformations[_local2] = null;
}
_local2++;
}
var _local3 = new Object();
var _local5 = setInterval(this, "doTransform", speed, transformations.length);
_local3.interval = _local5;
_local3.soundName = soundName;
_local3.transform = transform;
_local3.target = target;
transformations.push(_local3);
}
function addTransformStartLoop(soundName, transform, speed, target) {
var _local3 = false;
var _local2 = 0;
while (_local2 < transformations.length) {
if (transformations[_local2].soundName == soundName) {
clearInterval(transformations[_local2].interval);
transformations[_local2] = null;
_local3 = true;
}
_local2++;
}
if (!_local3) {
sb.start(soundName, 0, 99999);
}
var _local5 = new Object();
var _local6 = setInterval(this, "doTransform", speed, transformations.length);
_local5.interval = _local6;
_local5.soundName = soundName;
_local5.transform = transform;
_local5.target = target;
transformations.push(_local5);
}
function doTransform(intervalID) {
var _local3 = transformations[intervalID];
var _local4 = _local3.transform;
var _local2 = sb.getSound(_local3.soundName);
if (_local4 & FADEIN) {
_local2.setVolume(_local2.getVolume() + 1);
if (_local2.getVolume() >= _local3.target) {
clearInterval(_local3.interval);
transformations[intervalID] = null;
clearTransforms();
}
} else if (_local4 & FADEOUT) {
_local2.setVolume(_local2.getVolume() - 1);
if (_local2.getVolume() <= _local3.target) {
_local2.stop();
clearInterval(_local3.interval);
transformations[intervalID] = null;
clearTransforms();
}
} else if (_local4 & FADETO) {
if (_local2.getVolume() > _local3.target) {
_local2.setVolume(_local2.getVolume() - 1);
} else {
_local2.setVolume(_local2.getVolume() + 1);
}
if (_local2.getVolume() == _local3.target) {
clearInterval(_local3.interval);
transformations[intervalID] = null;
clearTransforms();
}
} else if (_local4 & STOPLOOP) {
_local2.stop();
clearInterval(_local3.interval);
transformations[intervalID] = null;
clearTransforms();
}
}
function clearTransforms() {
var _local2 = 0;
while (_local2 < transformations.length) {
if (transformations[_local2] != null) {
return(undefined);
}
_local2++;
}
transformations = new Array();
}
var FADEIN = 1;
var FADEOUT = 2;
var FADETO = 4;
var STOPLOOP = 8;
}
Symbol 11 MovieClip Frame 1
_visible = false;
Symbol 12 MovieClip Frame 1
function drawBar(clip, width, height) {
with (clip) {
clear();
lineStyle();
beginFill(0, 10);
moveTo(0, 0);
var curveSize = Math.min(50, Math.min(width, height / 5));
lineTo(width, 0);
lineTo(width, height - curveSize);
curveTo(width, height, width - curveSize, height);
lineTo(0, height);
lineTo(0, 0);
}
}
spw = Stage.width;
sph = Stage.height;
if (drawBackground) {
background = createEmptyMovieClip("background", 1);
with (background) {
colors = [16777215, 15658734];
alphas = [100, 100];
ratios = [0, 255];
matrix = {matrixType:"box", x:0, y:0, w:spw, h:sph, r:(Math.PI/2)};
beginGradientFill("linear", colors, alphas, ratios, matrix);
moveTo(0, 0);
lineTo(spw, 0);
lineTo(spw, sph);
lineTo(0, sph);
lineTo(0, 0);
endFill();
}
}
if (_parent.getBytesLoaded() < _parent.getBytesTotal()) {
_parent[variableLocation] = false;
_parent.stop();
var tf = new TextFormat();
tf.font = "Arial";
tf.size = 12;
tf.color = 0;
progressBar = createEmptyMovieClip("bar", 2);
progressTextBox = createEmptyMovieClip("progressTextBox", 3);
progressTextBox.createTextField("textBox", 0, 0, 0, 100, 100);
textBox = progressTextBox.textBox;
textBox.selectable = false;
textBox.setTextFormat(tf);
_x = 0;
_y = 0;
onEnterFrame = function () {
var _local2 = _parent.getBytesLoaded() / _parent.getBytesTotal();
var _local3 = Math.floor(_local2 * 100);
textBox.text = ("Loading " + _local3) + "%";
textBox.setTextFormat(tf);
textBox._width = textBox.textWidth + 5;
textBox._height = textBox.textHeight + 5;
textBox._x = Math.floor(spw * _local2);
if ((textBox._x + textBox._width) > spw) {
textBox._x = spw - textBox._width;
}
textBox._y = (sph / 2) - (textBox._height / 2);
drawBar(progressBar, Math.floor(spw * _local2), sph);
if (_parent.getBytesLoaded() >= _parent.getBytesTotal()) {
progressTextBox.removeMovieClip("");
if (drawBackground) {
if (!backgroundStay) {
background._alpha = background._alpha - 10;
}
}
progressBar._alpha = progressBar._alpha - 10;
if (progressBar._alpha <= 0) {
_parent.play();
_parent[variableLocation] = true;
onEnterFrame = null;
}
}
};
} else {
_parent.play();
_parent[variableLocation] = true;
if (drawBackground) {
if (!backgroundStay) {
background.removeMovieClip("");
}
}
}
Symbol 41 MovieClip Frame 1
stop();
Symbol 57 MovieClip Frame 1
stop();
Symbol 57 MovieClip Frame 15
stop();
Symbol 62 MovieClip Frame 1
stop();
Symbol 73 MovieClip Frame 1
stop();
Symbol 73 MovieClip Frame 7
_root.ejectBrass(1, -0.5 + (Math.random() * 1), -6);
Symbol 78 MovieClip Frame 1
stop();
Symbol 78 MovieClip Frame 7
_root.ejectBrass(1, -0.5 + (Math.random() * 1), -6);
Symbol 78 MovieClip Frame 15
_root.ejectBrass(1, -0.5 + (Math.random() * 1), -6);
Symbol 87 MovieClip Frame 1
stop();
Symbol 87 MovieClip Frame 7
_root.ejectBrass(3, -0.5 + (Math.random() * 1), -6);
Symbol 117 MovieClip Frame 1
stop();
Symbol 128 MovieClip Frame 1
stop();
Symbol 128 MovieClip Frame 7
_root.ejectBrass(3, -0.5 + (Math.random() * 1), -6);
Symbol 141 MovieClip Frame 1
stop();
Symbol 222 MovieClip [gooSplat] Frame 1
stop();
Symbol 287 MovieClip [Bullet] Frame 1
stop();
Symbol 315 MovieClip [explosion] Frame 1
stop();
Symbol 440 MovieClip [HUD] Frame 1
stop();
port.gotoAndStop(100);
port.gotoAndStop(100);
heli._visible = false;
powerup._visible = false;
poweruptime._visible = false;
Symbol 545 MovieClip [purpleExplosion] Frame 1
stop();
Symbol 565 MovieClip [enemyBullet] Frame 1
stop();
Symbol 1661 MovieClip Frame 1
stop();
Symbol 1754 MovieClip Frame 4
stop();
Symbol 1773 MovieClip Frame 1
stop();
Symbol 1779 MovieClip Frame 590
gotoAndPlay (1);
Symbol 1794 MovieClip Frame 15
stop();
Symbol 1801 MovieClip Frame 93
if (!_root.gameValid) {
stop();
}
Symbol 1801 MovieClip Frame 105
stop();
Symbol 1808 MovieClip Frame 41
stop();
Symbol 1823 MovieClip Frame 1
stop();
Symbol 1824 MovieClip Frame 1
if (!_root.gameValid) {
stop();
}
Symbol 1824 MovieClip Frame 106
_parent.mb.instantIntroStart("sIntro", "sMenuLoop", 100);
Symbol 1824 MovieClip Frame 213
!!!ERROR
Symbol 1828 Button
on (release) {
!!!ERROR
Symbol 1829 Button
on (release) {
!!!ERROR
Symbol 1830 Button
on (release) {
!!!ERROR
Symbol 1833 Button
on (release) {
!!!ERROR
Symbol 1834 Button
on (release) {
!!!ERROR
Symbol 1835 Button
on (release) {
!!!ERROR
Symbol 1838 MovieClip Frame 1
!!!ERROR
Symbol 1848 MovieClip Frame 1
bstart._y = 0;
drag._y = bstart._y + bstart._height;
drag._yscale = Math.max(10, height / _parent[child].maxscroll);
bend._y = drag._y + height;
scrollnum = 1;
Mouse.addListener(this);
this.onMouseWheel = function (delt) {
scrollnum = _parent[child].scroll - delt;
if (scrollnum > _parent[child].maxscroll) {
scrollnum = _parent[child].maxscroll;
} else if (scrollnum < 0) {
scrollnum = 0;
}
};
onEnterFrame = function () {
drag._yscale = Math.max(10, height / _parent[child].maxscroll);
if (drag.drag == 1) {
scrollnum = Math.ceil(((drag._y - 10) / (height - drag._yscale)) * _parent[child].maxscroll);
} else {
drag._y = (10 + (scrollnum * (height / _parent[child].maxscroll))) - (height / _parent[child].maxscroll);
drag.snap();
}
_parent[child].scroll = scrollnum;
y = _y;
};
Instance of Symbol 1843 MovieClip "drag" in Symbol 1848 MovieClip Frame 1
onClipEvent (load) {
function snap() {
if (_y < (_parent.bstart._y + _parent.bstart._height)) {
_y = (_parent.bstart._y + _parent.bstart._height);
}
if ((_y + _height) > _parent.bend._y) {
_y = (_parent.bend._y - _height);
}
}
}
onClipEvent (mouseDown) {
if (hitTest(_root._xmouse, _root._ymouse)) {
drag = 1;
_y = ((_root._ymouse - _parent._y) - (_height / 2));
snap();
}
}
onClipEvent (mouseUp) {
!!!ERROR
Instance of Symbol 1845 MovieClip "bstart" in Symbol 1848 MovieClip Frame 1
onClipEvent (mouseDown) {
if (hitTest(_root._xmouse, _root._ymouse)) {
drag = 1;
}
}
onClipEvent (mouseUp) {
!!!ERROR
Instance of Symbol 1847 MovieClip "bend" in Symbol 1848 MovieClip Frame 1
onClipEvent (mouseDown) {
if (hitTest(_root._xmouse, _root._ymouse)) {
drag = 1;
}
}
onClipEvent (mouseUp) {
!!!ERROR
Symbol 1850 Button
on (release) {
!!!ERROR
Symbol 1862 Button
on (release, keyPress "<Enter>") {
if (newname == "") {
newname = "Player";
}
stats = addPlayer(so, newPlayer(newname, qual));
menuToggle();
if (numPlayers(so) > 1) {
gotoAndStop ("players");
} else {
gotoAndStop ("menu");
}
}
Symbol 1878 Button
on (release) {
if (!deleteLastPlayer(so)) {
gotoAndStop ("new");
} else {
stats = getLastPlayer(so);
if (true || (numPlayers(so) > 1)) {
gotoAndStop ("change");
} else {
gotoAndStop ("players");
}
}
}
Symbol 1881 Button
on (release) {
!!!ERROR
Symbol 1882 Button
on (release) {
!!!ERROR
Symbol 1883 Button
on (release) {
!!!ERROR
Symbol 1884 Button
on (release) {
!!!ERROR
Symbol 1885 Button
on (release) {
!!!ERROR
Symbol 1888 Button
on (release) {
!!!ERROR
Symbol 1914 Button
on (release) {
!!!ERROR
Symbol 1920 Button
on (release) {
!!!ERROR