Section 1
//SFCAbstract (com.fingertime.core.loader.SFCAbstract)
package com.fingertime.core.loader {
public class SFCAbstract {
private var achievements:Array;
public var currentScore:int;// = 0
public function SFCAbstract(){
currentScore = 0;
super();
}
public function updateScore(_arg1:int):void{
trace(("updateScore called with value : " + _arg1));
}
public function achievement(_arg1:int):void{
var _local2:Boolean;
var _local3:int;
if (achievements == null){
achievements = new Array();
};
_local2 = false;
_local3 = 0;
while (_local3 < achievements.length) {
if (achievements[_local3] == _arg1){
_local2 = true;
};
_local3++;
};
if (!_local2){
trace(("achievement called with id : " + _arg1));
achievements.push(_arg1);
};
}
}
}//package com.fingertime.core.loader
Section 2
//SFCLoader (com.fingertime.core.loader.SFCLoader)
package com.fingertime.core.loader {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class SFCLoader extends MovieClip {
public var checkLoginOn:Boolean;// = true
public var achievementsOn:Boolean;// = true
public var vAlign:String;// = "bottom"
public var minorVersion:Number;// = 0
public var checkSecurity:Boolean;// = true
public var hAlign:String;// = "center"
public var gatewayUrl:String;// = "http://beta.fingertime.com/amfphp/gateway.php"
public var lowerIsBest:Boolean;// = false
public var highScoresOn:Boolean;// = true
public var achievementDelay:Number;// = 5
public var gameID:Number;
public var checkVersion:Boolean;// = true
public var margin:Number;// = 24
public var majorVersion:Number;// = 9
public var maxMessageBoxSize:Number;// = 265
public static var stage_width:Number;
public static var stage_height:Number;
public static var core;
public function SFCLoader(){
checkLoginOn = true;
checkSecurity = true;
checkVersion = true;
majorVersion = 9;
minorVersion = 0;
gatewayUrl = "http://beta.fingertime.com/amfphp/gateway.php";
achievementsOn = true;
highScoresOn = true;
lowerIsBest = false;
vAlign = "bottom";
hAlign = "center";
margin = 24;
achievementDelay = 5;
maxMessageBoxSize = 265;
super();
addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init(_arg1:Event):void{
trace("core loader initialised");
removeEventListener(Event.ADDED_TO_STAGE, init);
if (checkLoginOn){
if (checkSecurity){
if (stage.loaderInfo.url.indexOf("fingertime.com") == -1){
navigateToURL(new URLRequest("http://www.fingertime.com"));
};
};
x = (y = 0);
Security.allowDomain("*");
stage_width = stage.stageWidth;
stage_height = stage.stageHeight;
trace(("core = " + core));
if (Security.sandboxType == Security.REMOTE){
initCore();
} else {
core = new SFCAbstract();
};
};
}
public function initCore():void{
core.achievementsOn = achievementsOn;
core.achievementDelay = achievementDelay;
core.checkSecurity = checkSecurity;
core.gameID = gameID;
core.gatewayUrl = gatewayUrl;
core.hAlign = hAlign;
core.vAlign = vAlign;
core.margin = margin;
core.highScoresOn = highScoresOn;
core.lowestIsBest = lowerIsBest;
core.maxMessageBoxSize = maxMessageBoxSize;
core.majorVersion = majorVersion;
core.minorVersion = minorVersion;
core.checkLoginOn = checkLoginOn;
core.init();
}
public static function go(){
return (core);
}
}
}//package com.fingertime.core.loader
Section 3
//PreloaderPiece (com.fingertime.core.PreloaderPiece)
package com.fingertime.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class PreloaderPiece extends MovieClip {
public var active:Boolean;// = false
public var vis:Boolean;// = false
private var speed:Number;
private var t:int;// = 0
public var target:Point;
public function PreloaderPiece(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
t = 0;
active = false;
vis = false;
super();
x = (_arg1 + (Math.random() * 5));
y = (_arg2 + (Math.random() * 8));
target = new Point(_arg3, _arg4);
}
public function destroy():void{
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, step);
};
}
private function step(_arg1:Event):void{
t++;
x = ease(t, x, (-(x) + target.x), speed);
y = ease(t, y, (-(y) + target.y), speed);
if (t > speed){
x = target.x;
y = target.y;
active = false;
removeEventListener(Event.ENTER_FRAME, step);
};
}
private function ease(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1)==0) ? _arg2 : ((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2));
}
public function go(_arg1:Number):void{
this.speed = (_arg1 + (Math.random() * _arg1));
active = true;
addEventListener(Event.ENTER_FRAME, step);
t = 0;
vis = true;
}
}
}//package com.fingertime.core
Section 4
//SFPreloader (com.fingertime.core.SFPreloader)
package com.fingertime.core {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
public class SFPreloader extends MovieClip {
private var pY:Number;
public var bar:MovieClip;
private var barHeight:Number;// = 8
private var bmp_data:BitmapData;
private var newPixelsReady:int;// = 0
public var bg:MovieClip;
private var percent:Number;// = 0
private var bytesLoaded:Number;// = 0
private var previousPercent:Number;// = 0
private var morePixels:Boolean;// = true
private var barWidth:Number;// = 278
private var bytesTotal:Number;// = INF
private var bmp:Bitmap;
private var pixels:Array;
private var first:Boolean;// = true
private var drawClip:Sprite;
private var pixelReady:int;// = 0
public var sting:MovieClip;
private var pX:Number;
private var mouseIsDown:Boolean;// = false
public function SFPreloader(){
mouseIsDown = false;
pixels = new Array();
pixelReady = 0;
newPixelsReady = 0;
barWidth = 278;
barHeight = 8;
previousPercent = 0;
percent = 0;
morePixels = true;
bytesLoaded = 0;
bytesTotal = Number.POSITIVE_INFINITY;
first = true;
super();
}
public function init():void{
var _local1:Matrix;
var _local2:Number;
var _local3:Number;
var _local4:PreloaderPiece;
_local1 = new Matrix();
_local1.createGradientBox(stage.stageWidth, stage.stageHeight, 90, 0, 0);
bg.graphics.beginGradientFill(GradientType.LINEAR, new Array(16261, 26316, 754941), new Array(1, 1, 1), new Array(0, 127, 0xFF), _local1);
bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
bg.graphics.endFill();
drawClip = new Sprite();
bmp_data = new BitmapData(parent.stage.stageWidth, parent.stage.stageHeight, true, 0);
bmp = new Bitmap(bmp_data);
addEventListener(Event.ENTER_FRAME, step);
bar.x = ((stage.stageWidth / 2) - (274 / 2));
sting.x = ((stage.stageWidth / 2) - 5);
sting.y = (parent.stage.stageHeight / 2);
bar.y = (sting.y + 30);
stage.addEventListener(MouseEvent.MOUSE_DOWN, draw);
stage.addEventListener(MouseEvent.MOUSE_UP, stopDraw);
addChild(bmp);
_local2 = 0;
while (_local2 < barWidth) {
_local3 = 0;
while (_local3 < barHeight) {
_local4 = new PreloaderPiece(barWidth, 0, _local2, _local3);
pixels.push(_local4);
_local3++;
};
_local2++;
};
}
public function goodbye():void{
if (bar.currentFrame == 23){
finished();
};
removeChild(bar);
if (parent.stage.hasEventListener(MouseEvent.MOUSE_DOWN)){
parent.stage.removeEventListener(MouseEvent.MOUSE_DOWN, draw);
parent.stage.removeEventListener(MouseEvent.MOUSE_UP, stopDraw);
};
}
private function draw(_arg1:MouseEvent):void{
mouseIsDown = true;
}
private function stopDraw(_arg1:MouseEvent):void{
mouseIsDown = false;
}
private function finished():void{
var _local1:int;
removeEventListener(Event.ENTER_FRAME, step);
if (pixels != null){
_local1 = 0;
while (_local1 < pixels.length) {
if (pixels[_local1].active){
pixels[_local1].destroy();
bar.bar.removeChild(pixels[_local1]);
};
_local1++;
};
pixels.splice(0);
};
}
public function update(_arg1:Number, _arg2:Number):void{
bytesLoaded = _arg1;
bytesTotal = _arg2;
}
private function step(_arg1:Event):void{
var _local2:Number;
var _local3:Number;
var _local4:PreloaderPiece;
var _local5:int;
if (((morePixels) && ((bar.currentFrame == 23)))){
percent = Math.round(((bytesLoaded / bytesTotal) * 100));
_local2 = (barWidth * barHeight);
newPixelsReady = Math.round(((percent - previousPercent) * (_local2 / 100)));
_local3 = 0;
while (_local3 < newPixelsReady) {
if ((pixelReady + _local3) >= pixels.length){
morePixels = false;
break;
} else {
_local4 = pixels[(pixelReady + _local3)];
if (bar.bar != null){
if (first){
trace(("percent" + percent));
_local5 = 0;
while (_local5 < pixels.length) {
if (pixels[_local5].target.x <= ((percent * barWidth) / 100)){
pixels[_local5].go(((Math.random() * 20) + 10));
bar.bar.addChild(pixels[_local5]);
trace((" add me " + _local5));
};
_local5++;
};
first = false;
};
bar.bar.addChild(_local4);
};
_local4.go(((Math.random() * 20) + 10));
};
_local3++;
};
pixelReady = (pixelReady + newPixelsReady);
previousPercent = percent;
};
drawClip.graphics.clear();
drawClip.graphics.lineStyle((Math.random() * 6), 0xFFFFFF);
drawClip.graphics.moveTo(pX, pY);
if (mouseIsDown){
drawClip.graphics.curveTo(((mouseX - 20) + (Math.random() * 40)), ((mouseY - 20) + (Math.random() * 40)), mouseX, mouseY);
bmp_data.draw(drawClip, drawClip.transform.matrix);
};
bmp_data.applyFilter(bmp_data, bmp_data.rect, new Point(0, 0), new BlurFilter(2, 2, 3));
pX = mouseX;
pY = mouseY;
if (bytesLoaded >= bytesTotal){
removeEventListener(Event.ENTER_FRAME, step);
};
}
}
}//package com.fingertime.core
Section 5
//GameTitle (com.playerthree.overkill.GameTitle)
package com.playerthree.overkill {
import flash.display.*;
public class GameTitle extends MovieClip {
public var p3link_mc:MovieClip;
public var clickthru_mc:MovieClip;
public var finglink_mc:MovieClip;
public function GameTitle(){
addFrameScript(0, frame1, 29, frame30);
x = (Settings.ScreenW / 2);
y = 140;
}
function frame1(){
stop();
}
function frame30(){
stop();
}
public function update():Boolean{
if (currentFrame == 30){
stop();
};
if (currentFrame >= 47){
return (false);
};
if (Score.PlayState == 1){
if (currentFrame < 31){
gotoAndPlay(31);
};
};
return (true);
}
}
}//package com.playerthree.overkill
Section 6
//Score (com.playerthree.overkill.Score)
package com.playerthree.overkill {
import com.fingertime.core.loader.*;
public class Score {
private static var NEW_LIFE_NUM:int = 0;
private static var silverScore:int = 400000;
private static var silverId:int = 142;
private static var LAST_SCORE:int;
private static var __RANK:int = 0;
private static var SHOTS:int = 0;
private static var goldId:int = 141;
private static var bronzeScore:int = 200000;
private static var goldScore:int = 800000;
private static var platScore:int = 1000000;
private static var PLAY_STATE:int = 0;
public static var TOTAL:int = 0;
private static var platId:int = 126;
private static var LAST_RANK:int;
public static var OLD_SCORE:int = 0;
private static var SPAWN_NEW_LIFE:Boolean = false;
private static var LIFE_THRESHOLD:int = 2;
private static var THRESHOLD:int = 30000;
private static var HIT_SHOTS:int = 0;
private static var AMMO:Array = new Array();
private static var MENU_SELECT:int = 0;
private static var EN_DESTROYED:int = 0;
private static var LEVEL:int = 0;
private static var LIVES:int = 0;
private static var bronzeId:int = 143;
private static var ATTACK_ID:int = 0;
public static var NEW_SCORE:int = 0;
public static function get Att():int{
return (ATTACK_ID);
}
public static function setEnHits(_arg1:int):void{
EN_DESTROYED = (EN_DESTROYED + _arg1);
}
public static function get AmmoArr():Array{
return (AMMO);
}
public static function get PlayState():int{
return (PLAY_STATE);
}
public static function get Accuracy():Number{
if (SHOTS == 0){
return (0);
};
if (HIT_SHOTS == 0){
return (0);
};
return (Math.ceil(((HIT_SHOTS / SHOTS) * 100)));
}
public static function get Shot():int{
return (SHOTS);
}
public static function set MenuSelect(_arg1:int):void{
MENU_SELECT = _arg1;
}
public static function get MenuYPos():int{
switch (MENU_SELECT){
case 0:
return ((Settings.ScreenH / 2));
case 1:
return (((Settings.ScreenH / 2) + 36));
case 2:
return (((Settings.ScreenH / 2) + 72));
default:
return ((Settings.ScreenH / 2));
};
}
public static function setLevel(_arg1:int):void{
LEVEL = _arg1;
}
public static function setLives(_arg1:int){
LIVES = _arg1;
}
public static function setHits(_arg1:int):void{
HIT_SHOTS = (HIT_SHOTS + _arg1);
}
public static function get LifeNum():int{
return (LIVES);
}
public static function setAmmo(_arg1:Array):void{
AMMO = _arg1;
}
public static function get Ens():int{
return (EN_DESTROYED);
}
public static function get Rank():int{
return (__RANK);
}
public static function reset():void{
LAST_RANK = __RANK;
LAST_SCORE = TOTAL;
SPAWN_NEW_LIFE = false;
NEW_LIFE_NUM = (__RANK = (EN_DESTROYED = (OLD_SCORE = (NEW_SCORE = (TOTAL = (SHOTS = (HIT_SHOTS = (ATTACK_ID = (LEVEL = 0)))))))));
}
public static function setAttack(_arg1:int):void{
_arg1 = (_arg1 % 4);
ATTACK_ID = _arg1;
}
public static function setScore(_arg1:int):void{
NEW_SCORE = (OLD_SCORE + _arg1);
if ((((NEW_SCORE > THRESHOLD)) && (((NEW_SCORE % THRESHOLD) < (OLD_SCORE % THRESHOLD))))){
__RANK++;
if (NEW_LIFE_NUM < LIFE_THRESHOLD){
NEW_LIFE_NUM++;
trace((" new life num = " + NEW_LIFE_NUM));
} else {
SPAWN_NEW_LIFE = true;
NEW_LIFE_NUM = (NEW_LIFE_NUM - (NEW_LIFE_NUM - 1));
trace(" spawn new life ");
};
};
OLD_SCORE = NEW_SCORE;
if (NEW_SCORE >= platScore){
SFCLoader.go().achievement(platId);
} else {
if (NEW_SCORE >= goldScore){
SFCLoader.go().achievement(goldId);
} else {
if (NEW_SCORE >= silverScore){
SFCLoader.go().achievement(silverId);
} else {
if (NEW_SCORE >= bronzeScore){
SFCLoader.go().achievement(bronzeId);
};
};
};
};
TOTAL = NEW_SCORE;
}
public static function get Hits():int{
return (HIT_SHOTS);
}
public static function get SpawnNewLife():Boolean{
var _local1:Boolean;
_local1 = SPAWN_NEW_LIFE;
if (_local1){
SPAWN_NEW_LIFE = false;
};
return (_local1);
}
public static function setShots(_arg1:int):void{
SHOTS = (SHOTS + _arg1);
}
public static function setPlayState(_arg1:String):void{
switch (_arg1){
case "Menu":
PLAY_STATE = 0;
break;
case "Play":
PLAY_STATE = 1;
break;
case "Over":
PLAY_STATE = 2;
break;
};
}
public static function get Lev():int{
return (LEVEL);
}
}
}//package com.playerthree.overkill
Section 7
//Settings (com.playerthree.overkill.Settings)
package com.playerthree.overkill {
public final class Settings {
private static var MIN_X_SCROLL:int = 200;
private static var HOMING_SPEED:Number = 1.6;
private static var STAGE_INTERVAL:int = 160;
private static var MAX_Y_SCROLL:int = 400;
private static var LASER_INIT:int = 12;
private static var HEIGHT:int = 400;
private static var ITEM_TYPES:Array = [0, 1, 2, 3, 4, 5, 6, 7, 10, 11];
private static var MAX_X_SCROLL:int = 300;
private static var DECAY_TIME:int = 600;
private static var BOSS_INTERVAL:int = 180;
private static var GRID_SIZE:int = 64;
private static var BOMB_RATE:int = 12;
private static var HOMING_RATE:int = 24;
private static var GRAV:Number = 0.2;
private static var CREATE_ARR1:Array = [[30, 30, 30, 300, 30], [30, 30, 30, 30, 30], [5, 5, 5, 5, 5], [1, 0, 0, 0, 1], [1, 1, 1, 1, 1]];
private static var MISSILE_RATE:int = 16;
private static var CREATE_ARR:Array = [30, 50, 75, 125];
private static var INIT_WEAPONS:Array = [-1, 50, 50, 50, 0, 0];
private static var ENEMY_TOTAL:int = 1000;
private static var MAX_BULLETS:int = 60;
private static var GAME_SPEED:Number = 0.6;
private static var BATCH_ARR:Array = [[[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]], [[2, 2, 1, 2, 2], [2, 3, 1, 2, 2], [4, 3, 1, 3, 2]], [[2, 2, 1, 2, 3], [2, 3, 1, 2, 2], [4, 3, 1, 3, 2]], [[2, 3, 1, 2, 3], [2, 3, 1, 2, 2], [4, 3, 1, 3, 2]], [[2, 4, 1, 2, 4], [2, 3, 1, 2, 2], [4, 3, 1, 3, 2]]];
private static var BADGE_Y:int = 9;
private static var BADGE_X:int = 320;
private static var WIDTH:int = 720;
private static var BULLET_SPEED:int = 12;
private static var OVER_X:int = 8;
private static var FADE_TIME:int = 175;
private static var OVER_Y:int = 8;
private static var SEEKER_RATE:int = 8;
private static var FLOOR_Y:int = 390;
private static var BUILDING_SPEED:Number = -16;
private static var BULLET_STRENGTH:Array = [1, 5, 25, 50, 5, 16, 16, 17, 18, 19, 10, 32, 24, 32, 24, 10];
private static var MIN_Y_SCROLL:int = 300;
private static var INIT_X:int = 130;
private static var INIT_Y:int = 130;
private static var IS_DEBUG:Boolean = true;
private static var RESTART:Boolean = false;
private static var INIT_LIVES:int = 3;
private static var BULLET_RATE:int = 3;
public static function get HomingRate():int{
return (HOMING_RATE);
}
public static function get MissileRate():int{
return (MISSILE_RATE);
}
public static function get Batch():Array{
return (BATCH_ARR.slice());
}
public static function get Create():Array{
return (CREATE_ARR.slice());
}
public static function get InitX():int{
return (INIT_X);
}
public static function get BulletRate():int{
return (BULLET_RATE);
}
public static function get Gravity():Number{
return (GRAV);
}
public static function get InitY():int{
return (INIT_Y);
}
public static function get Debug():Boolean{
return (IS_DEBUG);
}
public static function get BadgeX():int{
return (BADGE_X);
}
public static function get BadgeY():int{
return (BADGE_Y);
}
public static function get OverlayX():int{
return (OVER_X);
}
public static function get ScreenH():int{
return (HEIGHT);
}
public static function get OverlayY():int{
return (OVER_Y);
}
public static function setGameSpeed(_arg1:Number):void{
GAME_SPEED = _arg1;
}
public static function get BulletSpeed():int{
return (BULLET_SPEED);
}
public static function get ScreenW():int{
return (WIDTH);
}
public static function setRestart():void{
RESTART = true;
}
public static function get GameSpeed():Number{
return (GAME_SPEED);
}
public static function get LaserInit():int{
return (LASER_INIT);
}
public static function get MinX():int{
return (MIN_X_SCROLL);
}
public static function get Strength():Array{
return (BULLET_STRENGTH);
}
public static function set Debug(_arg1:Boolean):void{
IS_DEBUG = _arg1;
}
public static function get MinY():int{
return (MIN_Y_SCROLL);
}
public static function get BossInterval():int{
return (BOSS_INTERVAL);
}
public static function get GridSize():int{
return (GRID_SIZE);
}
public static function get FadeTime():int{
return (FADE_TIME);
}
public static function get InitWeapons():Array{
return (INIT_WEAPONS.slice());
}
public static function get MaxX():int{
return (MAX_X_SCROLL);
}
public static function get MaxY():int{
return (MAX_Y_SCROLL);
}
public static function get DecayTime():int{
return (DECAY_TIME);
}
public static function get RandomItem():int{
return (ITEM_TYPES[Math.floor((Math.random() * ITEM_TYPES.length))]);
}
public static function get HomingSpeed():Number{
return (HOMING_SPEED);
}
public static function get InitLives():int{
return (INIT_LIVES);
}
public static function get BombRate():int{
return (BOMB_RATE);
}
public static function get SeekerRate():int{
return (SEEKER_RATE);
}
public static function get StageInterval():int{
return (STAGE_INTERVAL);
}
public static function get EnemyTotal():int{
return (ENEMY_TOTAL);
}
public static function get MaxBullets():int{
return (MAX_BULLETS);
}
public static function get BuildingSpeed():Number{
return (BUILDING_SPEED);
}
public static function get DoRestart():Boolean{
var _local1:Boolean;
_local1 = RESTART;
if (RESTART == true){
RESTART = false;
};
return (_local1);
}
public static function get Floor():int{
return (FLOOR_Y);
}
}
}//package com.playerthree.overkill
Section 8
//KeyState (com.playerthree.util.KeyState)
package com.playerthree.util {
import flash.events.*;
public class KeyState {
public var spacebar:Boolean;
public var left:Boolean;
public var two:Boolean;
public var up:Boolean;
public var right:Boolean;
public var three:Boolean;
public var down:Boolean;
public var c:Boolean;
public var one:Boolean;
public var ctrl:Boolean;
public var four:Boolean;
public var u:Boolean;
public var z:Boolean;
public var x:Boolean;
public function KeyState(){
left = (right = (up = (down = (spacebar = (ctrl = (z = (x = false)))))));
}
public function onKeyDown(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case 37:
case 65:
left = true;
break;
case 39:
case 68:
right = true;
break;
case 38:
case 87:
up = true;
break;
case 40:
case 83:
down = true;
break;
case 32:
spacebar = true;
break;
case 17:
ctrl = true;
break;
case 85:
u = true;
break;
case 67:
c = true;
break;
case 88:
x = true;
break;
case 90:
z = true;
break;
case 97:
case 49:
one = true;
break;
case 98:
case 50:
two = true;
break;
case 99:
case 51:
three = true;
break;
case 100:
case 52:
four = true;
break;
};
}
public function onKeyUp(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case 37:
case 65:
left = false;
break;
case 39:
case 68:
right = false;
break;
case 38:
case 87:
up = false;
break;
case 40:
case 83:
down = false;
break;
case 32:
spacebar = false;
break;
case 17:
ctrl = false;
break;
case 85:
u = false;
break;
case 67:
c = false;
break;
case 88:
x = false;
break;
case 90:
z = false;
break;
case 97:
case 49:
one = false;
break;
case 98:
case 50:
two = false;
break;
case 99:
case 51:
three = false;
break;
case 100:
case 52:
four = false;
break;
};
}
}
}//package com.playerthree.util
Section 9
//MouseState (com.playerthree.util.MouseState)
package com.playerthree.util {
import flash.events.*;
public class MouseState {
private var _clicked:Boolean;// = false
public var x:int;
public var y:int;
public function MouseState(){
_clicked = false;
super();
}
public function mouseclick(_arg1:MouseEvent):void{
_clicked = true;
x = _arg1.localX;
y = _arg1.localY;
}
public function pos(_arg1:Number, _arg2:Number):void{
this.x = int(_arg1);
this.y = int(_arg2);
}
public function isClicked():Boolean{
var _local1:Boolean;
_local1 = _clicked;
_clicked = false;
return (_local1);
}
}
}//package com.playerthree.util
Section 10
//Vector (com.playerthree.util.Vector)
package com.playerthree.util {
public class Vector {
public var x:Number;
public var y:Number;
public function Vector(_arg1:Number, _arg2:Number){
this.x = _arg1;
this.y = _arg2;
}
}
}//package com.playerthree.util
Section 11
//PM_PRNG (de.polygonal.math.PM_PRNG)
package de.polygonal.math {
public class PM_PRNG {
public var seed:uint;
public function PM_PRNG(){
seed = 1;
}
public function nextIntRange(_arg1:Number, _arg2:Number):uint{
_arg1 = (_arg1 - 0.4999);
_arg2 = (_arg2 + 0.4999);
return (Math.round((_arg1 + ((_arg2 - _arg1) * nextDouble()))));
}
public function nextDouble():Number{
return ((gen() / 2147483647));
}
public function nextDoubleRange(_arg1:Number, _arg2:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * nextDouble())));
}
public function nextInt():uint{
return (gen());
}
private function gen():uint{
return ((seed = ((seed * 16807) % 2147483647)));
}
}
}//package de.polygonal.math
Section 12
//Exponential (fl.motion.easing.Exponential)
package fl.motion.easing {
public class Exponential {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1 == _arg4)) ? (_arg2 + _arg3) : ((_arg3 * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1 == 0)) ? _arg2 : ((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg1 == 0){
return (_arg2);
};
if (_arg1 == _arg4){
return ((_arg2 + _arg3));
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2));
};
--_arg1;
return ((((_arg3 / 2) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 13
//TweenLite (gs.TweenLite)
package gs {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.geom.*;
import flash.utils.*;
public class TweenLite {
public var delay:Number;
protected var _initted:Boolean;
protected var _subTweens:Array;
public var startTime:int;
public var target:Object;
public var duration:Number;
protected var _hst:Boolean;
protected var _active:Boolean;
public var vars:Object;
public var tweens:Array;
public var initTime:int;
private static var _timer:Timer = new Timer(2000);
private static var _classInitted:Boolean;
public static var defaultEase:Function = TweenLite.easeOut;
public static var version:Number = 6.35;
private static var _sprite:Sprite = new Sprite();
protected static var _all:Dictionary = new Dictionary();
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
protected static var _curTime:uint;
private static var _listening:Boolean;
public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){
if (_arg1 == null){
return;
};
if (((((!((_arg3.overwrite == false))) && (!((_arg1 == null))))) || ((_all[_arg1] == undefined)))){
delete _all[_arg1];
_all[_arg1] = new Dictionary();
};
_all[_arg1][this] = this;
this.vars = _arg3;
this.duration = ((_arg2) || (0.001));
this.delay = ((_arg3.delay) || (0));
_active = (((_arg2 == 0)) && ((this.delay == 0)));
this.target = _arg1;
if (!(this.vars.ease is Function)){
this.vars.ease = defaultEase;
};
if (this.vars.easeParams != null){
this.vars.proxiedEase = this.vars.ease;
this.vars.ease = easeProxy;
};
if (!isNaN(Number(this.vars.autoAlpha))){
this.vars.alpha = Number(this.vars.autoAlpha);
this.vars.visible = (this.vars.alpha > 0);
};
this.tweens = [];
_subTweens = [];
_hst = (_initted = false);
if (!_classInitted){
_curTime = getTimer();
_sprite.addEventListener(Event.ENTER_FRAME, executeAll);
_classInitted = true;
};
this.initTime = _curTime;
if ((((((this.vars.runBackwards == true)) && (!((this.vars.renderOnStart == true))))) || (_active))){
initTweenVals();
this.startTime = _curTime;
if (_active){
render((this.startTime + 1));
} else {
render(this.startTime);
};
if (((!((this.vars.visible == undefined))) && ((this.vars.runBackwards == true)))){
this.target.visible = this.vars.visible;
};
};
if (((!(_listening)) && (!(_active)))){
_timer.addEventListener("timer", killGarbage);
_timer.start();
_listening = true;
};
}
protected function addSubTween(_arg1:Function, _arg2:Object, _arg3:Object, _arg4:Object=null):void{
var _local5:Object;
var _local6:String;
_local5 = {proxy:_arg1, target:_arg2, info:_arg4};
_subTweens.push(_local5);
for (_local6 in _arg3) {
if (typeof(_arg3[_local6]) == "number"){
this.tweens.push({o:_arg2, p:_local6, s:_arg2[_local6], c:(_arg3[_local6] - _arg2[_local6]), sub:_local5});
} else {
this.tweens.push({o:_arg2, p:_local6, s:_arg2[_local6], c:Number(_arg3[_local6]), sub:_local5});
};
};
_hst = true;
}
public function initTweenVals(_arg1:Boolean=false, _arg2:String=""):void{
var _local3:Boolean;
var _local4:String;
var _local5:int;
var _local6:Array;
var _local7:ColorTransform;
var _local8:ColorTransform;
var _local9:Object;
_local3 = (this.target is DisplayObject);
if ((this.target is Array)){
_local6 = ((this.vars.endArray) || ([]));
_local5 = 0;
while (_local5 < _local6.length) {
if (((!((this.target[_local5] == _local6[_local5]))) && (!((this.target[_local5] == undefined))))){
this.tweens.push({o:this.target, p:_local5.toString(), s:this.target[_local5], c:(_local6[_local5] - this.target[_local5])});
};
_local5++;
};
} else {
for (_local4 in this.vars) {
if ((((((((((((((((((((((((((((((((((((((((_local4 == "ease")) || ((_local4 == "delay")))) || ((_local4 == "overwrite")))) || ((_local4 == "onComplete")))) || ((_local4 == "onCompleteParams")))) || ((_local4 == "onCompleteScope")))) || ((_local4 == "runBackwards")))) || ((_local4 == "visible")))) || ((_local4 == "parsed_visible")))) || ((_local4 == "onUpdate")))) || ((_local4 == "onUpdateParams")))) || ((_local4 == "onUpdateScope")))) || ((_local4 == "autoAlpha")))) || ((_local4 == "onStart")))) || ((_local4 == "onStartParams")))) || ((_local4 == "onStartScope")))) || ((_local4 == "renderOnStart")))) || ((_local4 == "proxiedEase")))) || ((_local4 == "easeParams")))) || (((_arg1) && (!((_arg2.indexOf(((" " + _local4) + " ")) == -1))))))){
} else {
if ((((_local4 == "tint")) && (_local3))){
_local7 = this.target.transform.colorTransform;
_local8 = new ColorTransform();
if (this.vars.alpha != undefined){
_local8.alphaMultiplier = this.vars.alpha;
delete this.vars.alpha;
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
if (this.tweens[_local5].p == "alpha"){
this.tweens.splice(_local5, 1);
break;
};
_local5--;
};
} else {
_local8.alphaMultiplier = this.target.alpha;
};
if (((((!((this.vars[_local4] == null))) && (!((this.vars[_local4] == ""))))) || ((this.vars[_local4] == 0)))){
_local8.color = this.vars[_local4];
};
addSubTween(tintProxy, {progress:0}, {progress:1}, {target:this.target, color:_local7, endColor:_local8});
} else {
if ((((_local4 == "frame")) && (_local3))){
addSubTween(frameProxy, {frame:this.target.currentFrame}, {frame:this.vars[_local4]}, {target:this.target});
} else {
if ((((_local4 == "volume")) && (((_local3) || ((this.target is SoundChannel)))))){
addSubTween(volumeProxy, this.target.soundTransform, {volume:this.vars[_local4]}, {target:this.target});
} else {
if (typeof(this.vars[_local4]) == "number"){
this.tweens.push({o:this.target, p:_local4, s:this.target[_local4], c:(this.vars[_local4] - this.target[_local4])});
} else {
this.tweens.push({o:this.target, p:_local4, s:this.target[_local4], c:Number(this.vars[_local4])});
};
};
};
};
};
};
};
if (this.vars.runBackwards == true){
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local9 = this.tweens[_local5];
this.tweens[_local5].s = (_local9.s + _local9.c);
_local9.c = (_local9.c * -1);
_local5--;
};
};
if (this.vars.visible == true){
this.target.visible = true;
};
_initted = true;
}
public function get active():Boolean{
if (_active){
return (true);
};
if (((_curTime - this.initTime) / 1000) > this.delay){
_active = true;
this.startTime = (this.initTime + (this.delay * 1000));
if (!_initted){
initTweenVals();
} else {
if (this.vars.visible != undefined){
this.target.visible = true;
};
};
if (this.vars.onStart != null){
this.vars.onStart.apply(this.vars.onStartScope, this.vars.onStartParams);
};
if (this.duration == 0.001){
this.startTime = (this.startTime - 1);
};
return (true);
//unresolved jump
};
return (false);
}
public function render(_arg1:uint):void{
var _local2:Number;
var _local3:Number;
var _local4:Object;
var _local5:int;
_local2 = ((_arg1 - this.startTime) / 1000);
if (_local2 >= this.duration){
_local2 = this.duration;
_local3 = 1;
} else {
_local3 = this.vars.ease(_local2, 0, 1, this.duration);
};
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local4 = this.tweens[_local5];
_local4.o[_local4.p] = (_local4.s + (_local3 * _local4.c));
_local5--;
};
if (_hst){
_local5 = (_subTweens.length - 1);
while (_local5 > -1) {
_subTweens[_local5].proxy(_subTweens[_local5]);
_local5--;
};
};
if (this.vars.onUpdate != null){
this.vars.onUpdate.apply(this.vars.onUpdateScope, this.vars.onUpdateParams);
};
if (_local2 == this.duration){
complete(true);
};
}
protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
public function complete(_arg1:Boolean=false):void{
if (!_arg1){
if (!_initted){
initTweenVals();
};
this.startTime = (_curTime - (this.duration * 1000));
render(_curTime);
return;
};
if (this.vars.visible != undefined){
if (((!((this.vars.autoAlpha == undefined))) && ((this.target.alpha == 0)))){
this.target.visible = false;
} else {
if (this.vars.runBackwards != true){
this.target.visible = this.vars.visible;
};
};
};
removeTween(this);
if (this.vars.onComplete != null){
this.vars.onComplete.apply(this.vars.onCompleteScope, this.vars.onCompleteParams);
};
}
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function frameProxy(_arg1:Object):void{
_arg1.info.target.gotoAndStop(Math.round(_arg1.target.frame));
}
public static function removeTween(_arg1:TweenLite=null):void{
if (((!((_arg1 == null))) && (!((_all[_arg1.target] == undefined))))){
delete _all[_arg1.target][_arg1];
};
}
public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{
var _local3:Object;
var _local4:*;
if (((!((_arg1 == null))) && (!((_all[_arg1] == undefined))))){
if (_arg2){
_local3 = _all[_arg1];
for (_local4 in _local3) {
_local3[_local4].complete(false);
};
};
delete _all[_arg1];
};
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4=null):TweenLite{
return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, onCompleteScope:_arg4, overwrite:false}));
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
_arg3.runBackwards = true;
return (new TweenLite(_arg1, _arg2, _arg3));
}
public static function executeAll(_arg1:Event=null):void{
var _local2:uint;
var _local3:Dictionary;
var _local4:Object;
var _local5:Object;
_local2 = (_curTime = getTimer());
if (_listening){
_local3 = _all;
for each (_local4 in _local3) {
for (_local5 in _local4) {
if (((!((_local4[_local5] == undefined))) && (_local4[_local5].active))){
_local4[_local5].render(_local2);
};
};
};
};
}
public static function volumeProxy(_arg1:Object):void{
_arg1.info.target.soundTransform = _arg1.target;
}
public static function killGarbage(_arg1:TimerEvent):void{
var _local2:uint;
var _local3:Boolean;
var _local4:Object;
var _local5:Object;
var _local6:Object;
_local2 = 0;
for (_local4 in _all) {
_local3 = false;
for (_local5 in _all[_local4]) {
_local3 = true;
break;
};
if (!_local3){
delete _all[_local4];
} else {
_local2++;
};
};
if (_local2 == 0){
_timer.removeEventListener("timer", killGarbage);
_timer.stop();
_listening = false;
};
}
public static function tintProxy(_arg1:Object):void{
var _local2:Number;
var _local3:Number;
var _local4:Object;
var _local5:Object;
_local2 = _arg1.target.progress;
_local3 = (1 - _local2);
_local4 = _arg1.info.color;
_local5 = _arg1.info.endColor;
_arg1.info.target.transform.colorTransform = new ColorTransform(((_local4.redMultiplier * _local3) + (_local5.redMultiplier * _local2)), ((_local4.greenMultiplier * _local3) + (_local5.greenMultiplier * _local2)), ((_local4.blueMultiplier * _local3) + (_local5.blueMultiplier * _local2)), ((_local4.alphaMultiplier * _local3) + (_local5.alphaMultiplier * _local2)), ((_local4.redOffset * _local3) + (_local5.redOffset * _local2)), ((_local4.greenOffset * _local3) + (_local5.greenOffset * _local2)), ((_local4.blueOffset * _local3) + (_local5.blueOffset * _local2)), ((_local4.alphaOffset * _local3) + (_local5.alphaOffset * _local2)));
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
return (new TweenLite(_arg1, _arg2, _arg3));
}
}
}//package gs
Section 14
//mc_29 (oa2_demo_fla.mc_29)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_29 extends MovieClip {
public function mc_29(){
addFrameScript(79, frame80);
}
function frame80(){
stop();
}
}
}//package oa2_demo_fla
Section 15
//mc_4 (oa2_demo_fla.mc_4)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_4 extends MovieClip {
public function mc_4(){
addFrameScript(0, frame1, 4, frame5);
}
function frame1(){
stop();
}
function frame5(){
this.gotoAndPlay("loop");
}
}
}//package oa2_demo_fla
Section 16
//mc_51 (oa2_demo_fla.mc_51)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_51 extends MovieClip {
public function mc_51(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package oa2_demo_fla
Section 17
//mc_59 (oa2_demo_fla.mc_59)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_59 extends MovieClip {
public function mc_59(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package oa2_demo_fla
Section 18
//mc_73 (oa2_demo_fla.mc_73)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_73 extends MovieClip {
public function mc_73(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package oa2_demo_fla
Section 19
//mc_75 (oa2_demo_fla.mc_75)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_75 extends MovieClip {
public var digit_mc:MovieClip;
}
}//package oa2_demo_fla
Section 20
//mc_85 (oa2_demo_fla.mc_85)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_85 extends MovieClip {
public var plum:MovieClip;
}
}//package oa2_demo_fla
Section 21
//mc_86 (oa2_demo_fla.mc_86)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_86 extends MovieClip {
public var num0:MovieClip;
public var num1:MovieClip;
public var num2:MovieClip;
}
}//package oa2_demo_fla
Section 22
//mc_93 (oa2_demo_fla.mc_93)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_93 extends MovieClip {
public function mc_93(){
addFrameScript(59, frame60);
}
function frame60(){
stop();
}
}
}//package oa2_demo_fla
Section 23
//mc_94 (oa2_demo_fla.mc_94)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_94 extends MovieClip {
public function mc_94(){
addFrameScript(59, frame60);
}
function frame60(){
stop();
}
}
}//package oa2_demo_fla
Section 24
//mc_96 (oa2_demo_fla.mc_96)
package oa2_demo_fla {
import flash.display.*;
public dynamic class mc_96 extends MovieClip {
public var bar:MovieClip;
public function mc_96(){
addFrameScript(22, frame23);
}
function frame23(){
stop();
}
}
}//package oa2_demo_fla
Section 25
//AmmoCounterSprite (AmmoCounterSprite)
package {
import flash.display.*;
public dynamic class AmmoCounterSprite extends MovieClip {
public var num2_mc:MovieClip;
public var num0_mc:MovieClip;
public var num1_mc:MovieClip;
}
}//package
Section 26
//ArcLoopSound (ArcLoopSound)
package {
import flash.media.*;
public dynamic class ArcLoopSound extends Sound {
}
}//package
Section 27
//ArcStopSound (ArcStopSound)
package {
import flash.media.*;
public dynamic class ArcStopSound extends Sound {
}
}//package
Section 28
//Beam (Beam)
package {
import com.playerthree.util.*;
import flash.display.*;
public class Beam {
private const COLOURS:Array;
private const LINE_WIDTH:int = 6;
private const LINE_ALPHA:int = 100;
private const RAD:int = 728;
private var _origin:Vector;
private var _live:Boolean;
private var _rot:Number;
private var _friendly:Boolean;
public var canvas:Shape;
private var _remove:Boolean;// = false
private var _cindex:int;// = 0
private var _target:Vector;
public function Beam(_arg1:Vector, _arg2:Number, _arg3:Boolean=true){
COLOURS = [1065152, 1077488, 2142448, 5296368, 0xF0F0F0];
_cindex = 0;
_remove = false;
super();
canvas = new Shape();
_origin = new Vector(_arg1.x, _arg1.y);
_target = new Vector(0, 0);
_rot = _arg2;
_friendly = _arg3;
_live = true;
}
public function get remove():Boolean{
return (_remove);
}
public function set remove(_arg1:Boolean):void{
_remove = _arg1;
}
public function update(_arg1:Vector, _arg2:Number):void{
var _local3:Number;
var _local4:int;
_origin.x = _arg1.x;
_origin.y = _arg1.y;
_rot = _arg2;
_local3 = Globals.to_radians(_rot);
_local4 = (_friendly) ? 1 : -1;
_target.x = (_origin.x + ((RAD * Math.cos(_local3)) * _local4));
_target.y = (_origin.y + ((RAD * Math.sin(_local3)) * _local4));
}
public function get target():Vector{
return (_target);
}
public function render():void{
if (!_live){
canvas.graphics.clear();
return;
};
_cindex++;
_cindex = (_cindex % 5);
canvas.graphics.clear();
canvas.graphics.lineStyle(LINE_WIDTH, COLOURS[_cindex], LINE_ALPHA);
canvas.graphics.moveTo(_origin.x, _origin.y);
canvas.graphics.lineTo(_target.x, _target.y);
_cindex++;
_cindex = (_cindex % 5);
canvas.graphics.lineStyle((LINE_WIDTH - 1), COLOURS[_cindex], (LINE_ALPHA - 20));
canvas.graphics.moveTo(_origin.x, _origin.y);
canvas.graphics.lineTo(_target.x, _target.y);
_cindex++;
_cindex = (_cindex % 5);
canvas.graphics.lineStyle((LINE_WIDTH - 2), COLOURS[_cindex], LINE_ALPHA);
canvas.graphics.moveTo(_origin.x, _origin.y);
canvas.graphics.lineTo(_target.x, _target.y);
}
public function kill():void{
remove = true;
}
public function get friendly():Boolean{
return (_friendly);
}
public function get origin():Vector{
return (_origin);
}
public function collision(_arg1):Boolean{
var _local2:Vector;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
if (!_live){
return (false);
};
_local2 = new Vector(0, 0);
_local3 = (_arg1.pos.x - _origin.x);
_local4 = (_arg1.pos.y - _origin.y);
_local7 = (_target.x - _origin.x);
_local8 = (_target.y - _origin.y);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
if (_local9 > 0){
_local5 = (_local7 / _local9);
_local6 = (_local8 / _local9);
} else {
_local6 = 0;
_local5 = _local6;
};
_local10 = ((_local3 * _local5) + (_local4 * _local6));
if (_local10 < 0){
_local2.x = _local3;
_local2.y = _local4;
} else {
_local3 = (_arg1.pos.x - _target.x);
_local4 = (_arg1.pos.y - _target.y);
_local10 = ((_local3 * _local5) + (_local4 * _local6));
if (_local10 > 0){
_local2.x = _local3;
_local2.y = _local4;
} else {
_local13 = _local6;
_local14 = -(_local5);
_local10 = ((_local3 * _local13) + (_local4 * _local14));
_local2.x = (_local10 * _local13);
_local2.y = (_local10 * _local14);
};
};
_local11 = Math.sqrt(((_local2.x * _local2.x) + (_local2.y * _local2.y)));
_local12 = (_arg1.rad - _local11);
if (_local12 >= 0){
return (true);
};
return (false);
}
}
}//package
Section 29
//BeamPool (BeamPool)
package {
import flash.display.*;
public class BeamPool {
private var _enship:Array;
private var _beams:Array;
public var mc:Sprite;
public function BeamPool(){
_beams = new Array();
_enship = new Array();
super();
mc = new Sprite();
}
public function update(_arg1:EnemyPool, _arg2:BossManager, _arg3:Ship, _arg4:ExplosionPool, _arg5:ItemPool, _arg6:Scroller):void{
var _local7:int;
var _local8:Beam;
var _local9:int;
var _local10:Enemy;
var _local11:Boss;
var _local12:int;
_local7 = _beams.length;
while (--_local7 > -1) {
_local8 = _beams[_local7];
_local8.update(_enship[_local7].pos, _enship[_local7].rot);
if (_local8.friendly){
_local9 = _arg1.enemies.length;
while (--_local9 > -1) {
_local10 = _arg1.enemies[_local9];
if (((!(_local10.remove)) && (!((_local10.type == EnemyType.DROP_SHIP))))){
if (_local8.collision(_local10)){
_local10.damage(3);
if (_local10.health < 0){
_local10.kill();
Globals.add_score(_local10.value);
_arg4.create(ExplosionType.AIR1, _local10.pos);
if (_local10.canspawnitem){
if (Math.random() < 0.1){
_arg5.create_item(Globals.get_pickup(), _local10.pos);
};
};
_arg6.burn_background(_local8.origin, _local8.target);
} else {
_local10.flash(1, 2, Math.random(), 1);
};
};
};
};
_local9 = _arg2.bosses.length;
while (--_local9 > -1) {
_local11 = _arg2.bosses[_local9];
if (!_local11.remove){
if (_local8.collision(_local11)){
_local11.damage(1);
if (_local11.health < 0){
_local11.kill();
Globals.add_score(_local11.value);
_arg4.create(ExplosionType.BIG_UPWARDS, _local11.pos);
} else {
_local11.flash(1, 2, Math.random(), 1);
};
};
};
};
} else {
if (!_arg3.dead){
if (_local8.collision(_arg3)){
_arg3.damage(3);
if (_arg3.health < 0){
_arg3.kill();
_arg4.create(ExplosionType.BIG_AIR, _arg3.pos);
_local12 = _arg3.ammo.length;
while (--_local12 > -1) {
if (_arg3.ammo[_local12]){
_arg5.create_item(_local12, _arg3.pos);
};
};
if (Math.random() < 0.1){
_arg5.create_item(Globals.get_pickup(), _arg3.pos);
};
_arg6.burn_background(_local8.origin, _local8.target);
} else {
_arg3.flash(1, 2, Math.random(), 1);
};
};
};
};
if (_local8.remove){
_enship.splice(_local7, 1);
_beams.splice(_local7, 1);
mc.removeChild(_local8.canvas);
};
};
}
public function create_beam(_arg1, _arg2:Boolean=true):void{
var _local3:Beam;
_local3 = new Beam(_arg1.pos, 0, _arg2);
_beams.push(_local3);
mc.addChild(_local3.canvas);
_enship.push(_arg1);
}
public function render():void{
var _local1:int;
var _local2:Beam;
_local1 = _beams.length;
while (--_local1 > -1) {
_local2 = _beams[_local1];
_local2.render();
};
}
public function kill(_arg1):void{
var _local2:int;
_local2 = _beams.length;
while (--_local2 > -1) {
if (_arg1 == _enship[_local2]){
_beams[_local2].kill();
break;
};
};
}
}
}//package
Section 30
//BitmapScore (BitmapScore)
package {
import flash.display.*;
import flash.geom.*;
public class BitmapScore {
private const OFFSET_X:Array;
private const OFFSET_Y:Array;
private const COLS:Array;
private const CHARS:int = 10;
private var off_x:Number;
private var pt:Point;
public var bmp:Bitmap;
private var _livesbuffer:BitmapData;
public var livesbmp:Bitmap;
private var _buffer:BitmapData;
private var block_rc:Rectangle;
private var _src:BitmapData;
private var h:Number;
private var off_y:Number;
private var _scorearr:Array;
private var rc:Rectangle;
private var cw:Number;
private var w:Number;
private var col:Number;
public function BitmapScore(){
var _local1:int;
var _local2:int;
OFFSET_X = [0, 0];
OFFSET_Y = [9, 30];
COLS = [7, 2];
super();
_src = new NumbersBitmap(0, 0);
this.w = _src.width;
this.cw = (w / CHARS);
this.h = _src.height;
off_x = 48;
off_y = 5;
_buffer = new BitmapData(w, h, true, 0);
_livesbuffer = new BitmapData((cw * 2), h, true, 0);
bmp = new Bitmap(_buffer);
bmp.x = off_x;
bmp.y = off_y;
_local1 = 65;
_local2 = 26;
livesbmp = new Bitmap(_livesbuffer);
livesbmp.x = _local1;
livesbmp.y = _local2;
rc = new Rectangle(0, 0, cw, h);
pt = new Point(0, off_y);
block_rc = new Rectangle(0, 0, w, h);
col = COLS[0];
}
public function update(_arg1:int):void{
var _local2:int;
var _local3:Array;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Array;
_local2 = Globals.get_score();
_local3 = _local2.toString().split("");
_local4 = _local3.length;
_local5 = 8;
_buffer.fillRect(new Rectangle(0, 0, w, h), 0);
while (--_local5 > -1) {
_local4--;
_local6 = ((_local3[_local4])!=undefined) ? _local3[_local4] : 0;
_buffer.copyPixels(_src, new Rectangle((_local6 * 8), 0, 8, 10), new Point((_local5 * 8), 0));
};
_local7 = _arg1.toString().split("");
_local4 = _local7.length;
_local5 = 2;
while (--_local5 > -1) {
_local4--;
_local6 = ((_local7[_local4])!=undefined) ? _local7[_local4] : 0;
_livesbuffer.copyPixels(_src, new Rectangle((_local6 * 8), 0, 8, 10), new Point((_local5 * 8), 0));
};
}
}
}//package
Section 31
//BombPickupSound (BombPickupSound)
package {
import flash.media.*;
public dynamic class BombPickupSound extends Sound {
}
}//package
Section 32
//Boss (Boss)
package {
import com.playerthree.util.*;
import flash.display.*;
import flash.geom.*;
public class Boss {
private var _beamrot:Number;// = 0
private var _inithealth:int;// = 1000
private var _startpos:Vector;
private var _movetimer:int;// = 0
public var mc:MovieClip;
private var _rot:Number;
private var _type:int;
private var _shoot:Boolean;// = false
private var _remove:Boolean;// = false
private var _beams:BeamPool;
private var _aabb:Boolean;// = false
private var _width:Number;
public var oldpos:Vector;
private var _defaultcolour:ColorTransform;
public var pos:Vector;
private var _height:Number;
private var _rad:Number;// = 60
private var _movestate:int;// = 0
public var accel:Vector;
private var _isbeaming:Boolean;// = false
private var _value:int;
public var gridy:int;
private var _flashnum:int;
public var gridx:int;
private var _health:int;// = 1000
public function Boss(_arg1:int, _arg2:Vector, _arg3:BeamPool){
_movestate = 0;
_movetimer = 0;
_rad = 60;
_health = 1000;
_inithealth = 1000;
_isbeaming = false;
_remove = false;
_shoot = false;
_aabb = false;
_beamrot = 0;
super();
_startpos = new Vector(_arg2.x, _arg2.y);
this._beams = _arg3;
this._type = _arg1;
if (_type == 0){
_aabb = true;
_width = 168;
_height = 140;
} else {
if (_arg1 == 2){
_rad = 64;
_width = 200;
_height = 290;
} else {
if (_arg1 == 3){
_rad = 32;
_width = 40;
_height = 40;
} else {
_rad = 64;
_width = 40;
_height = 240;
};
};
};
_value = ((Globals.LEVEL + 1) * 250);
if (_value > 1000){
_value = 950;
};
mc = new BossSprite();
mc.gotoAndStop((_arg1 + 1));
pos = new Vector(_startpos.x, _startpos.y);
oldpos = new Vector(pos.x, pos.y);
accel = new Vector(0, 0);
_defaultcolour = mc.transform.colorTransform;
_rot = mc.rotation;
}
public function get remove():Boolean{
return (_remove);
}
public function set remove(_arg1:Boolean):void{
_remove = _arg1;
}
public function get shoot():Boolean{
return (_shoot);
}
public function get rad():int{
return (_rad);
}
public function get height():Number{
return (_height);
}
public function render():void{
mc.x = pos.x;
mc.y = pos.y;
if (_type == 3){
mc.rotation = (accel.x * 1.4);
};
_rot = mc.rotation;
}
private function attackmove():void{
switch (_type){
case 0:
big_tank();
break;
case 1:
zeppelin();
break;
case 2:
boat();
break;
case 3:
apache();
break;
};
}
public function set health(_arg1:int):void{
_health = _arg1;
}
public function collision(_arg1:Ship):int{
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:int;
_local2 = 0;
if (!_aabb){
if (_arg1.gridy == gridy){
if (_arg1.gridx == gridx){
_local5 = ((_arg1.rad * _arg1.rad) + (rad * rad));
_local3 = (_arg1.oldpos.x - oldpos.x);
_local4 = (_arg1.oldpos.y - oldpos.y);
_local6 = (((_local3 * _local3) + (_local4 * _local4)) - _local5);
if (_local6 < 0){
_local2 = 1;
};
};
};
} else {
_local10 = pos.y;
_local9 = (pos.x + (mc.width / 2));
_local7 = (pos.x - (mc.width / 2));
_local8 = (pos.y - mc.height);
if (_arg1.pos.x > _local7){
if (_arg1.pos.x < _local9){
if (_arg1.pos.y > _local8){
if (_arg1.pos.y < _local10){
_local2 = 1;
};
};
};
};
};
return (_local2);
}
public function get type():int{
return (_type);
}
private function reset_colour():void{
var _local1:Transform;
var _local2:ColorTransform;
if (_flashnum > 1){
_flashnum--;
return;
};
_flashnum--;
_local1 = new Transform(mc);
_local2 = _defaultcolour;
_local1.colorTransform = _local2;
}
public function set shoot(_arg1:Boolean):void{
_shoot = _arg1;
}
public function get beamrot():Number{
return (_beamrot);
}
private function big_tank():void{
switch (_movestate){
case 0:
accel.x = -1;
_movestate = 1;
break;
case 1:
if (pos.x < 640){
_movestate = 2;
accel.x = 1;
};
break;
case 2:
if (pos.x > 690){
_movestate = 0;
};
break;
default:
_movestate = 0;
};
}
private function boat():void{
_movetimer++;
if (!(_movetimer % 22)){
shoot = true;
};
if (_movetimer == 160){
if (!_isbeaming){
_beams.create_beam(this, false);
_isbeaming = true;
};
} else {
if (_movetimer == 240){
if (_isbeaming){
_beams.kill(this);
_isbeaming = false;
_movetimer = 0;
};
};
};
switch (_movestate){
case 0:
accel.x = -1;
if (pos.x < 650){
shoot = true;
_movestate = 1;
};
break;
case 1:
accel.x = 1;
if (pos.x > 700){
_movestate = 0;
};
break;
};
}
public function get rot():Number{
return (_rot);
}
public function update():void{
if (_flashnum > 0){
reset_colour();
};
oldpos.x = pos.x;
oldpos.y = pos.y;
attackmove();
pos.x = (pos.x + accel.x);
pos.y = (pos.y + accel.y);
gridx = Math.floor((pos.x / Globals.GRID_SIZE));
gridy = Math.floor((pos.y / Globals.GRID_SIZE));
}
public function get health():int{
return (_health);
}
private function apache():void{
_movetimer++;
switch (_movestate){
case 0:
accel.x = -12;
accel.y = 2;
_movestate = 1;
break;
case 1:
accel.x = (accel.x * 0.95);
accel.y = (accel.y * 0.95);
if (accel.x > -1){
shoot = true;
accel.x = 0;
accel.y = 0;
_movestate = 2;
};
break;
case 2:
if (accel.x < 3){
accel.x = (accel.x + 0.1);
if (accel.y > -2){
accel.y = (accel.y - 0.1);
};
} else {
if (Globals.LEVEL > 1){
if (!_isbeaming){
_beams.create_beam(this, false);
_isbeaming = true;
};
};
shoot = true;
_movestate = 3;
};
break;
case 3:
accel.x = (accel.x * 0.95);
accel.y = (accel.y * 0.95);
if (accel.x < 1){
shoot = true;
accel.x = 0;
accel.y = 0;
_movestate = 4;
};
break;
case 4:
if (accel.x > -1){
accel.x = (accel.x - 0.1);
};
if (accel.y < 2){
accel.y = (accel.y + 0.1);
} else {
accel.x = (accel.y = 0);
_movestate = 5;
};
break;
case 5:
accel.x = (accel.x * 0.95);
accel.y = (accel.y * 0.95);
if (accel.y < 1){
accel.y = (accel.x = 0);
if (_isbeaming){
_beams.kill(this);
_isbeaming = false;
};
_movestate = 6;
shoot = true;
};
break;
case 6:
if (accel.x < 4){
accel.x = (accel.x + 0.15);
if (accel.y < 2){
accel.y = (accel.y + 0.25);
};
} else {
_movestate = 7;
};
break;
case 7:
accel.x = (accel.x * 0.8);
accel.y = (accel.y * 0.8);
if (accel.x < 1){
_movestate = 8;
};
break;
case 8:
if (accel.x > -12){
if (accel.y < 2){
accel.y = (accel.y + 0.2);
};
accel.x = (accel.x - 0.25);
} else {
_movestate = 9;
};
break;
case 9:
accel.x = (accel.x * 0.95);
accel.y = (accel.y * 0.95);
if (accel.x > -1){
accel.x = (accel.y = 0);
shoot = true;
_movestate = 10;
};
break;
case 10:
if (!(_movetimer % 9)){
shoot = true;
};
if (accel.x < 12){
if (accel.y > -4){
accel.y = (accel.y - 0.5);
};
accel.x = (accel.x + 0.15);
} else {
_movestate = 11;
};
break;
case 11:
accel.x = (accel.x * 0.95);
accel.y = (accel.y * 0.95);
if (accel.x < 1){
accel.x = (accel.y = 0);
pos.x = _startpos.x;
pos.y = _startpos.y;
_movestate = 12;
};
break;
case 12:
if (accel.x > -2){
accel.x = (accel.x - 0.1);
} else {
_movestate = 0;
};
break;
default:
_movestate = 0;
};
}
public function get width():Number{
return (_width);
}
public function aabb():Boolean{
return (_aabb);
}
public function kill():void{
remove = true;
if (_isbeaming){
_beams.kill(this);
_isbeaming = false;
};
}
public function damage(_arg1:int):void{
health = (health - _arg1);
}
public function flash(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Transform;
var _local6:ColorTransform;
_local5 = new Transform(mc);
_local6 = _local5.colorTransform;
_local6.redMultiplier = _arg1;
_local6.greenMultiplier = _arg2;
_local6.blueMultiplier = _arg3;
_local6.alphaMultiplier = _arg4;
_local5.colorTransform = _local6;
_flashnum = 10;
}
private function zeppelin():void{
_movetimer++;
if (!(_movetimer % 22)){
};
switch (_movestate){
case 0:
accel.x = -3;
accel.y = 0.025;
_movestate = 1;
break;
case 1:
if (pos.x < 600){
_movestate = 2;
};
break;
case 2:
accel.x = 1;
if (pos.x > 660){
accel.y = 1;
_movestate = 3;
};
break;
case 3:
accel.x = (accel.x * 0.9);
if (!(_movetimer % 12)){
shoot = true;
};
if (pos.y > 140){
shoot = true;
_movestate = 4;
};
break;
case 4:
accel.y = -1;
accel.x = 0.5;
if (pos.y < 5){
_movestate = 0;
};
break;
};
}
public function get value():int{
return (_value);
}
public function get pc():int{
return (Math.floor(((_health / _inithealth) * 100)));
}
}
}//package
Section 33
//BossManager (BossManager)
package {
import com.playerthree.util.*;
import flash.display.*;
public class BossManager {
private const startpositions:Array;
private const max_enemies:int = 48;
public var mc:Sprite;
private var _spawntimer:int;// = 0
private var _timer:int;// = 0
private var _paused:Boolean;// = false
private var enemies_spawned:int;// = 0
private var _spawnid:int;// = 0
private var _levelover:Boolean;// = false
private var _ship:Ship;
private var _bosses:Array;
private var _explosions:ExplosionPool;
private var _sounds:SoundManager;
private var _beams:BeamPool;
private var _enemies:EnemyPool;
private var _bullets:BulletPool;
private var _liveboss:Boolean;// = false
public function BossManager(_arg1:Ship, _arg2:BeamPool, _arg3:BulletPool, _arg4:EnemyPool, _arg5:SoundManager, _arg6:ExplosionPool){
_bosses = new Array();
startpositions = [new Vector(800, 320), new Vector(800, -20), new Vector(800, 320), new Vector(800, 120)];
_liveboss = false;
_levelover = false;
_spawntimer = 0;
_spawnid = 0;
enemies_spawned = 0;
_timer = 0;
_paused = false;
super();
mc = new Sprite();
this._ship = _arg1;
this._beams = _arg2;
this._bullets = _arg3;
this._enemies = _arg4;
this._explosions = _arg6;
this._sounds = _arg5;
}
public function unpause():void{
_paused = false;
}
private function fire(_arg1:Vector, _arg2:int, _arg3:int, _arg4:int):void{
var _local5:Vector;
var _local6:Vector;
var _local7:Vector;
var _local8:Vector;
var _local9:Vector;
if ((((_arg2 == 0)) || ((_arg2 == 3)))){
_bullets.create_bullet(_arg1, (_arg2 - 1), _arg4, false);
} else {
if (_arg2 == 2){
_arg4 = 1;
_local5 = new Vector((_arg1.x - 9), _arg1.y);
_local6 = new Vector(_arg1.x, _arg1.y);
_local7 = new Vector((_arg1.x + 7), _arg1.y);
_local8 = new Vector((_arg1.x + 7), (_arg1.y - 16));
_local9 = new Vector((_arg1.x + 21), (_arg1.y - 16));
_bullets.create_bullet(_local5, 12, _arg4, false);
_bullets.create_bullet(_local6, 12, _arg4, false);
_bullets.create_bullet(_local7, 12, _arg4, false);
_bullets.create_bullet(_local8, 12, _arg4, false);
_bullets.create_bullet(_local9, 12, _arg4, false);
};
};
}
public function get levelover():Boolean{
return (_levelover);
}
public function reset():void{
var _local1:int;
var _local2:Boss;
_liveboss = false;
_levelover = false;
_local1 = _bosses.length;
while (--_local1 > -1) {
_local2 = _bosses[_local1];
_bosses.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
_spawntimer = 0;
}
public function get liveboss():Boolean{
return (_liveboss);
}
public function update(_arg1:ExplosionPool, _arg2:ItemPool):void{
var _local3:int;
var _local4:Boss;
var _local5:int;
if (_paused){
return;
};
if (_liveboss){
_spawntimer++;
if (((!((_spawntimer % 72))) && ((enemies_spawned < max_enemies)))){
_enemies.create_enemy(new Vector(800, 200), EnemyType.HOMING, 1, (_spawnid % 3), 1);
enemies_spawned++;
_spawnid++;
};
};
_timer++;
_local3 = _bosses.length;
while (--_local3 > -1) {
_local4 = _bosses[_local3];
_local4.update();
if (_local4.shoot){
fire(_local4.pos, _local4.type, 0, -1);
_local4.shoot = false;
};
if (_local4.pc < 40){
if (!(_timer % (int((_local4.pc / 10)) + 2))){
_explosions.create_smoke(1, new Vector((_local4.pos.x + (Math.random() * 4)), (_local4.pos.y + (Math.random() * 4))));
};
} else {
if (_local4.pc < 75){
if (!(_timer % (int((_local4.pc / 10)) + 2))){
_explosions.create_smoke(0, new Vector((_local4.pos.x + (Math.random() * 4)), (_local4.pos.y + (Math.random() * 4))));
};
};
};
if (_local4.collision(_ship)){
_ship.kill();
_arg1.create(ExplosionType.KILL, _ship.pos);
_local5 = _ship.ammo.length;
while (--_local5 > -1) {
if (_ship.ammo[_local5]){
_arg2.create_item(_local5, _ship.pos);
};
};
};
if (_local4.remove){
_bosses.splice(_local3, 1);
_local4.kill();
_sounds.play_sound(OSounds.HA);
mc.removeChild(_local4.mc);
_enemies.kill_boss_enemies(_local4.pos.x, _local4.pos.y);
_levelover = true;
};
};
if ((((_bosses.length < 1)) && ((_enemies.bossdeathtimer < 1)))){
_liveboss = false;
_levelover = false;
};
}
public function get bosses():Array{
return (_bosses);
}
public function render():void{
var _local1:int;
var _local2:Boss;
_local1 = _bosses.length;
while (--_local1 > -1) {
_local2 = _bosses[_local1];
_local2.render();
};
}
public function create(_arg1:int):void{
var _local2:Vector;
var _local3:Vector;
var _local4:Boss;
var _local5:Vector;
_local2 = startpositions[_arg1];
_local4 = new Boss(_arg1, _local2, _beams);
if (_arg1 == 0){
_local3 = new Vector((_local2.x - 42), (_local2.y + 24));
_enemies.create_enemy(_local3, EnemyType.TURRET, -1, 0, -1, 0, _local4);
_local5 = new Vector((_local2.x - 26), (_local2.y - 51));
_enemies.create_enemy(_local5, EnemyType.LASER, -1, 0, -1, 0, _local4);
} else {
if (_arg1 == 1){
_local3 = new Vector((_local2.x - 30), (_local2.y - 30));
_enemies.create_enemy(_local3, EnemyType.TURRET, -1, 0, -1, 0, _local4);
_local3 = new Vector((_local2.x + 15), (_local2.y - 30));
_enemies.create_enemy(_local3, EnemyType.TURRET, -1, 0, -1, 0, _local4);
};
};
_bosses.push(_local4);
mc.addChild(_local4.mc);
_liveboss = true;
_spawntimer = 0;
}
public function pause():void{
_paused = true;
}
}
}//package
Section 34
//BossSprite (BossSprite)
package {
import flash.display.*;
public dynamic class BossSprite extends MovieClip {
}
}//package
Section 35
//Bullet (Bullet)
package {
import com.playerthree.util.*;
import flash.display.*;
public class Bullet {
private const PLEN:int = 22;
private var _points:Array;
private var _friendly:Boolean;
public var skip_draw:Boolean;// = false
public var remove:Boolean;
public var rad:int;// = 2
public var mc:MovieClip;
public var id:int;
private var _strength:int;
public var startpos:Vector;
private var _lifespan:int;// = 180
public var type:int;
public var oldpos:Vector;
private var _dir:int;
public var pos:Vector;
private var _timer:int;// = 0
public var canvas:Shape;
private var _fireangle:Number;
private var _movestate:int;// = 0
public var sine_rad:int;// = 1
private var _pointindex:int;// = 0
public var accel:Vector;
public var gridx:int;
private var _targpos:Vector;
public var gridy:int;
private static var ID:int = 0;
public function Bullet(_arg1, _arg2:int, _arg3:int, _arg4:Boolean=true, _arg5:Vector=null){
sine_rad = 1;
_points = new Array();
_pointindex = 0;
skip_draw = false;
rad = 2;
_timer = 0;
_movestate = 0;
_lifespan = 180;
super();
this._dir = _arg3;
this.pos = _arg1;
this.oldpos = _arg1;
this.type = _arg2;
this._friendly = _arg4;
this._targpos = _arg5;
ID++;
id = ID;
startpos = new Vector(pos.x, pos.y);
this.mc = new BulletSprite();
mc.scaleX = (mc.scaleX * _arg3);
canvas = new Shape();
remove = false;
strength = Globals.get_strength(_arg2);
accel = new Vector((Globals.FIRE_SPEED * _arg3), 0);
mc.gotoAndStop((_arg2 + 1));
if (_arg2 == 3){
rad = 6;
};
}
public function set strength(_arg1:int):void{
_strength = _arg1;
}
public function get dir():int{
return (_dir);
}
public function render():void{
mc.x = pos.x;
mc.y = pos.y;
}
public function get friendly():Boolean{
return (_friendly);
}
public function collision(_arg1):int{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
_local2 = 0;
if (_arg1.gridy != gridy){
return (0);
};
if (_arg1.gridx != gridx){
return (0);
};
if (_arg1.aabb){
_local6 = (_arg1.pos.y + (_arg1.height / 2));
_local4 = (_arg1.pos.y - (_arg1.height / 2));
_local5 = (_arg1.pos.x + (_arg1.width / 2));
_local3 = (_arg1.pos.x - (_arg1.width / 2));
if (pos.x > _local3){
if (pos.x < _local5){
if (pos.y > _local4){
if (pos.y < _local6){
_local2 = 1;
return (_local2);
};
};
};
};
} else {
_local9 = ((_arg1.pos.x - _arg1.oldpos.x) - (pos.x - oldpos.x));
_local10 = ((_arg1.pos.y - _arg1.oldpos.y) - (pos.y - oldpos.y));
_local7 = (_arg1.oldpos.x - oldpos.x);
_local8 = (_arg1.oldpos.y - oldpos.y);
_local11 = ((_arg1.rad * _arg1.rad) + (rad * rad));
_local12 = (((_local7 * _local7) + (_local8 * _local8)) - _local11);
if (_local12 < 0){
_local2 = 1;
return (_local2);
};
_local13 = ((_local7 * _local9) + (_local8 * _local10));
if (_local13 >= 0){
_local2 = 0;
return (_local2);
};
return (0);
};
return (_local2);
}
public function get strength():int{
return (_strength);
}
private function draw_path():void{
var _local1:int;
var _local2:Object;
if (!skip_draw){
canvas.graphics.clear();
canvas.graphics.moveTo(_points[1].x, _points[1].y);
_local1 = 0;
while (_local1 < _points.length) {
_local2 = _points[_local1];
canvas.graphics.lineStyle(_local2.wid, 0xF0F0F0, (_local2.fade / 100));
canvas.graphics.lineTo(_local2.x, _local2.y);
if (_points[_local1].fade > 0){
_points[_local1].fade = (_points[_local1].fade - 6);
};
_points[_local1].wid++;
_points[_local1].y = (_points[_local1].y - 4);
_points[_local1].x = (_points[_local1].x * ((dir)==1) ? 0.95 : 1.03);
_local1++;
};
} else {
skip_draw = false;
};
}
private function on_screen():Boolean{
if (pos.x > Overkill.SW){
return (false);
};
if (pos.y < 0){
return (false);
};
if (pos.y > Overkill.SH){
return (false);
};
if (pos.x < 0){
return (false);
};
return (true);
}
public function kill():void{
remove = true;
}
public function update():void{
var _local1:int;
var _local2:Object;
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:int;
_timer++;
if (_timer > _lifespan){
kill();
};
if (!on_screen()){
kill();
};
oldpos.x = pos.x;
oldpos.y = pos.y;
switch (type){
case 0:
break;
case 1:
switch (_movestate){
case 0:
if (!(id % 2)){
sine_rad = (sine_rad * -1);
};
_movestate = 1;
break;
case 1:
pos.y = (startpos.y - ((Math.cos((_timer * 0.1)) * sine_rad) * 10));
break;
};
break;
case 2:
switch (_movestate){
case 0:
accel.y = 10;
accel.x = (-10 * dir);
_points.push({x:pos.x, y:pos.y, wid:1, fade:80});
_points.push({x:pos.x, y:pos.y, wid:1, fade:80});
_movestate = 1;
break;
case 1:
accel.x = (accel.x * 0.8);
accel.y = (accel.y * 0.7);
_local1 = ((accel.y ^ (accel.y >> 31)) - (accel.y >> 31));
if (_local1 < 1){
accel.y = 0;
accel.x = (1 * dir);
_movestate = 2;
};
break;
case 2:
accel.x = (accel.x * 1.4);
_local1 = ((accel.x ^ (accel.x >> 31)) - (accel.x >> 31));
if (_local1 > 22){
accel.x = (35 * dir);
_movestate = 3;
};
break;
case 3:
break;
};
if (!(_timer % 2)){
_pointindex++;
_local2 = {x:pos.x, y:pos.y, wid:1, fade:80};
_local3 = (_pointindex % PLEN);
if (!_local3){
skip_draw = true;
};
_points[_local3] = _local2;
};
draw_path();
break;
case 3:
switch (_movestate){
case 0:
accel.x = 0;
_movestate = 1;
break;
case 1:
accel.y = (accel.y + 0.5);
break;
};
break;
case 4:
switch (_movestate){
case 0:
_fireangle = 90;
accel.x = Math.random();
accel.y = Math.random();
_movestate = 1;
break;
case 1:
_fireangle++;
accel.x = (accel.x + (Math.sin((_fireangle * 10)) * 1.1));
accel.y = (accel.y + (Math.cos((_fireangle * 10)) * 1.1));
_local4 = (_targpos.x - pos.x);
_local5 = (_targpos.y - pos.y);
_local6 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
_local4 = (_local4 / _local6);
_local5 = (_local5 / _local6);
_local7 = 3;
accel.x = (_local10 * _local7);
accel.y = (_local11 * _local7);
break;
};
break;
case 5:
switch (_movestate){
case 0:
_movestate = 1;
_local8 = 4;
_local9 = ((Globals.get_ang(_targpos, pos) * 180) / Math.PI);
pos.x = (pos.x - (_local8 * Math.cos(_local9)));
pos.y = (pos.y - (_local8 * Math.sin(_local9)));
_local10 = (_targpos.x - pos.x);
_local11 = (_targpos.y - pos.y);
_local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local12);
_local11 = (_local11 / _local12);
_local13 = 5;
accel.x = (_local10 * _local13);
accel.y = (_local11 * _local13);
break;
case 1:
break;
};
break;
case 11:
switch (_movestate){
case 0:
accel.x = -25;
accel.y = -5;
mc.scaleX = (mc.scaleX * -1);
pos.x = (pos.x - 18);
pos.y = (pos.y - 82);
_movestate = 1;
break;
case 1:
break;
};
break;
case 12:
switch (_movestate){
case 0:
accel.x = -7.5;
accel.y = -5;
pos.x = (pos.x - 34);
pos.y = (pos.y - 32);
_movestate = 1;
break;
case 1:
break;
};
break;
case 13:
switch (_movestate){
case 0:
accel.y = (((id % 3) + 1) * -1);
accel.x = -5;
_movestate = 1;
break;
case 1:
accel.y = (accel.y * 1.1);
break;
};
break;
};
pos.x = (pos.x + accel.x);
pos.y = (pos.y + accel.y);
gridx = Math.floor((pos.x / Globals.GRID_SIZE));
gridy = Math.floor((pos.y / Globals.GRID_SIZE));
}
}
}//package
Section 36
//BulletPool (BulletPool)
package {
import com.playerthree.util.*;
import flash.display.*;
public class BulletPool {
private const colours:Array;
private var _nuke:Boolean;// = false
private var _beziertimer:int;// = 0
private var _paused:Boolean;// = false
private var _arcenabled:Boolean;// = false
public var canvas:Sprite;
public var mc:Sprite;
public var bullets:Array;
private var _bezierswitch:int;// = 0
private var _drawidx:int;// = 0
public function BulletPool(){
bullets = new Array();
colours = [1065152, 1077488, 2142448, 5296368, 0xF0F0F0];
_nuke = false;
_paused = false;
_arcenabled = false;
_beziertimer = 0;
_bezierswitch = 0;
_drawidx = 0;
super();
mc = new Sprite();
canvas = new Sprite();
mc.addChild(canvas);
}
public function update(_arg1:EnemyPool, _arg2:Ship, _arg3:ExplosionPool, _arg4:ItemPool, _arg5:BossManager, _arg6:PlumPool):void{
var _local7:int;
var _local8:Bullet;
var _local9:int;
var _local10:Enemy;
var _local11:int;
var _local12:Boss;
var _local13:int;
if (_arcenabled){
if (((!((_arg1.targ == null))) && (!(_arg1.targ.remove)))){
bezier_laser(_arg2, _arg1.targ);
_arg1.targ.damage(1);
if (_arg1.targ.health < 1){
_arg1.targ.kill();
_arg3.create(ExplosionType.UPWARDS, _arg1.targ.pos);
Globals.add_score(_arg1.targ.value);
_arg6.create(_arg1.targ.pos, _arg1.targ.value);
_arg1.kill_target();
} else {
_arg1.targ.flash(1.6, 1.6, 1.6, 1);
};
} else {
canvas.graphics.clear();
};
};
_local7 = bullets.length;
while (--_local7 > -1) {
_local8 = bullets[_local7];
if (_nuke){
_local8.kill();
};
_local8.update();
if (_local8.friendly){
_local9 = 0;
while (_local9 < _arg1.enemies.length) {
_local10 = _arg1.enemies[_local9];
if (!_local10.remove){
_local11 = _local8.collision(_local10);
if (_local11 > 0){
_local8.kill();
_local10.damage(_local8.strength);
if (_local10.health < 1){
_local10.kill();
Globals.add_score(_local10.value);
_arg6.create(_local10.pos, _local10.value);
_arg3.create(_local10.explosion_type, _local10.pos);
if (_local10.canspawnitem){
if (Math.random() < 0.3){
_arg4.create_item(Globals.get_pickup(), _local10.pos);
};
};
} else {
_arg3.create(ExplosionType.RICOCHET, _local10.pos);
_local10.flash(2, 0.6, 0.6, 1);
};
};
};
_local9++;
};
_local9 = 0;
while (_local9 < _arg5.bosses.length) {
_local12 = _arg5.bosses[_local9];
if (!_local12.remove){
if (_local8.collision(_local12)){
_local8.kill();
_local12.damage(_local8.strength);
if (_local12.health < 1){
_local12.kill();
Globals.add_score(_local12.value);
_arg3.create(ExplosionType.BIG_UPWARDS, _local12.pos);
} else {
_arg3.create(ExplosionType.SMALL, _local12.pos);
_local12.flash(1.8, 1.3, 1.8, 1);
};
};
};
_local9++;
};
} else {
if (_local8.collision(_arg2)){
_local8.kill();
_arg2.damage(_local8.strength);
if (_arg2.health < 1){
_arg2.kill();
_arg3.create(ExplosionType.KILL, _arg2.pos);
_local13 = _arg2.ammo.length;
while (--_local13 > -1) {
if (_arg2.ammo[_local13]){
_arg4.create_item(_local13, _arg2.pos);
};
};
} else {
_arg2.flash(1.6, 1.6, 1.6, 1);
_arg3.create(ExplosionType.SMALL, _arg2.pos);
};
};
};
if (_local8.type == 3){
if (_local8.pos.y > 390){
_local8.kill();
_arg3.create(ExplosionType.GROUND1, _local8.pos);
};
};
if (_local8.remove){
bullets.splice(_local7, 1);
mc.removeChild(_local8.mc);
mc.removeChild(_local8.canvas);
};
};
if (_nuke){
_arg1.nuke();
_nuke = false;
};
}
private function draw_laser(_arg1:Array, _arg2:Array):void{
var _local3:int;
var _local4:Boolean;
_drawidx++;
_drawidx = (_drawidx % 5);
_local3 = 30;
_local4 = true;
canvas.graphics.clear();
canvas.graphics.lineStyle(_drawidx, colours[_drawidx], 0.8);
while (--_local3 > -1) {
if (_local4){
canvas.graphics.moveTo(_arg1[_local3], _arg2[_local3]);
_local4 = false;
} else {
canvas.graphics.lineTo(_arg1[_local3], _arg2[_local3]);
};
};
}
public function reset():void{
var _local1:int;
var _local2:Bullet;
_local1 = bullets.length;
while (--_local1 > -1) {
_local2 = bullets[_local1];
bullets.splice(_local1, 1);
mc.removeChild(_local2.mc);
mc.removeChild(_local2.canvas);
};
_nuke = false;
}
public function nuke():void{
_nuke = true;
}
public function create_bullet(_arg1:Vector, _arg2:int, _arg3:int=1, _arg4:Boolean=true, _arg5:Vector=null):void{
var _local6:Vector;
var _local7:Bullet;
_local6 = new Vector(_arg1.x, _arg1.y);
_local7 = new Bullet(_local6, _arg2, _arg3, _arg4, _arg5);
mc.addChild(_local7.mc);
mc.addChild(_local7.canvas);
bullets.push(_local7);
}
private function bezier_laser(_arg1:Ship, _arg2:Enemy):void{
var _local3:Number;
var _local4:Number;
var _local5:Array;
var _local6:Array;
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
_local20 = _arg1.pos.x;
_local21 = _arg1.pos.y;
_local22 = _arg2.pos.x;
_local23 = _arg2.pos.y;
_local3 = 0;
_local7 = 30;
_local4 = (1 / _local7);
_local5 = [];
_local6 = [];
_beziertimer++;
if (!(_beziertimer % 6)){
_bezierswitch = ((_bezierswitch)==0) ? 1 : 0;
};
if (_bezierswitch == 0){
_local8 = (_local20 + ((_local22 - _local20) / 2));
};
if (_bezierswitch == 1){
_local8 = (_local20 + ((_local22 + _local20) / 2));
};
_local9 = _local23;
_local10 = (_local8 - _local20);
_local11 = (_local9 - _local21);
_local12 = (_local22 - _local8);
_local13 = (_local23 - _local9);
while (--_local7 > -1) {
_local14 = (_local20 + (_local10 * _local3));
_local15 = (_local21 + (_local11 * _local3));
_local16 = (_local8 + (_local12 * _local3));
_local17 = (_local9 + (_local13 * _local3));
_local18 = (_local16 - _local14);
_local19 = (_local17 - _local15);
_local3 = (_local3 + _local4);
_local5[_local7] = (_local14 + (_local18 * _local3));
_local6[_local7] = (_local15 + (_local19 * _local3));
};
draw_laser(_local5, _local6);
}
public function enable_arc():void{
_arcenabled = true;
_beziertimer = 0;
_bezierswitch = 0;
}
public function pause():void{
var _local1:int;
var _local2:Bullet;
_paused = true;
_local1 = bullets.length;
while (--_local1 > -1) {
_local2 = bullets[_local1];
bullets.splice(_local1, 1);
mc.removeChild(_local2.mc);
mc.removeChild(_local2.canvas);
};
}
public function render():void{
var _local1:int;
var _local2:Bullet;
_local1 = bullets.length;
while (--_local1 > -1) {
_local2 = bullets[_local1];
_local2.render();
};
}
public function disable_arc():void{
_arcenabled = false;
canvas.graphics.clear();
}
public function unpause():void{
_paused = true;
}
}
}//package
Section 37
//BulletSprite (BulletSprite)
package {
import flash.display.*;
public dynamic class BulletSprite extends MovieClip {
public var clip:MovieClip;
}
}//package
Section 38
//BulletType (BulletType)
package {
public class BulletType {
public static var MG_HARD:int = 9;
public static var MG_MEDIUM:int = 8;
public static var MG:int = 0;
public static var MG_STRONG:int = 10;
}
}//package
Section 39
//ChopperLoopSound (ChopperLoopSound)
package {
import flash.media.*;
public dynamic class ChopperLoopSound extends Sound {
}
}//package
Section 40
//Debris (Debris)
package {
import com.playerthree.util.*;
import flash.display.*;
public class Debris {
private var _framewait:int;// = 0
public var remove:Boolean;// = false
public var accel:Vector;
public var floory:int;// = 390
public var pos:Vector;
public var oldpos:Vector;
public var mc:MovieClip;
public function Debris(_arg1:Vector){
var _local2:Number;
pos = new Vector(0, 0);
oldpos = new Vector(0, 0);
accel = new Vector(0, 0);
remove = false;
floory = 390;
_framewait = 0;
super();
mc = new DebrisSprite();
mc.visible = false;
pos.x = _arg1.x;
pos.y = _arg1.y;
oldpos.x = pos.x;
oldpos.y = pos.y;
accel.y = 0;
accel.x = (-9 + (Math.random() * 14));
if (pos.y < floory){
_local2 = ((Math.round(Math.random()) * 2) - 1);
accel.y = (_local2 * (6 + (Math.random() * 6)));
} else {
accel.y = (-6 + (Math.random() * -6));
};
}
public function update():void{
var _local1:int;
if (_framewait < 3){
_framewait++;
if (_framewait == 1){
_local1 = (Math.floor((Math.random() * 10)) + 1);
mc.gotoAndStop(_local1);
mc.visible = true;
};
};
accel.y++;
oldpos.x = pos.x;
oldpos.y = pos.y;
pos.x = (pos.x + accel.x);
pos.y = (pos.y + accel.y);
mc.rotation = (mc.rotation + accel.x);
if (Globals.LEVEL != 2){
if (pos.y > floory){
pos.y = floory;
if (accel.y > 7){
accel.y = (accel.y * -0.5);
accel.x = (accel.x - 8);
} else {
kill();
};
};
} else {
if (pos.y > floory){
kill();
};
};
mc.x = pos.x;
mc.y = pos.y;
}
public function kill():void{
remove = true;
}
}
}//package
Section 41
//DebrisManager (DebrisManager)
package {
import com.playerthree.util.*;
import flash.display.*;
public class DebrisManager {
private var _smoke:Array;
public var mc:Sprite;
private var _debris:Array;
public function DebrisManager(_arg1:Sprite){
_debris = new Array();
_smoke = new Array();
super();
this.mc = _arg1;
}
public function update():void{
var _local1:int;
var _local2:Debris;
_local1 = _debris.length;
while (--_local1 > -1) {
_local2 = _debris[_local1];
_local2.update();
if (_local2.remove){
_debris.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
};
}
public function reset():void{
var _local1:int;
var _local2:Debris;
_local1 = _debris.length;
while (--_local1 > -1) {
_local2 = _debris[_local1];
_debris.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
}
public function create_debris(_arg1:Vector):void{
var _local2:Debris;
if (_debris.length > 3){
return;
};
_local2 = new Debris(_arg1);
_debris.push(_local2);
mc.addChild(_local2.mc);
}
}
}//package
Section 42
//DebrisSprite (DebrisSprite)
package {
import flash.display.*;
public dynamic class DebrisSprite extends MovieClip {
}
}//package
Section 43
//Enemy (Enemy)
package {
import com.playerthree.util.*;
import flash.display.*;
import flash.geom.*;
public class Enemy {
public var rad:int;
private var _rot:Number;
public var id:int;
private var _canspawnitem:Boolean;// = false
private var _shoot:Boolean;
public var set_num:int;
public var explosion_type:int;
public var ax:Number;// = 0
private var _aabb:Boolean;// = false
public var type:int;
private var _timer:int;// = 0
public var ay:Number;// = 0
private var _boss:Boss;
private var _defaultcolour:ColorTransform;
public var pos:Vector;
private var _targeted:Boolean;// = false
private var _paused:Boolean;// = false
private var _value:int;// = 100
private var _health:int;
private var _delay:int;
private var _attackmode:int;// = 0
private var _saveframe:int;
private var _movetimer:int;// = 0
public var mc:MovieClip;
private var _savey:Number;
private var _remove:Boolean;// = false
private var _targetpos:Vector;
private var _savex:Number;
public var oldpos:Vector;
private var _dir:int;
private var _movestate:int;// = 0
private var _framewait:int;// = 0
public var gridx:int;
public var gridy:int;
private var _flashnum:int;
public var start_pos:Vector;
private var _currframe:int;
public static var AMP:Number = 0.005;
public function Enemy(_arg1:int, _arg2:Vector, _arg3:int=0, _arg4:int=0, _arg5:int=-1, _arg6:int=0, _arg7:Boss=null, _arg8:int=0){
ax = 0;
ay = 0;
_timer = 0;
_remove = false;
_attackmode = 0;
_movestate = 0;
_movetimer = 0;
_aabb = false;
_value = 100;
_canspawnitem = false;
_targetpos = new Vector(0, 0);
_framewait = 0;
_paused = false;
_targeted = false;
super();
this.type = _arg1;
this.id = _arg4;
this._dir = _arg5;
this._delay = _arg6;
this._boss = _arg7;
this.set_num = _arg8;
this.start_pos = _arg2;
switch (_arg1){
case EnemyType.TORNADO:
explosion_type = ExplosionType.AIR1;
_value = 150;
break;
case EnemyType.CHOPPER:
explosion_type = ExplosionType.AIR1;
_value = 100;
_canspawnitem = true;
break;
case EnemyType.HOMING:
_canspawnitem = true;
_value = 50;
break;
case EnemyType.ROCKETJET:
case EnemyType.BALLOON:
_canspawnitem = true;
explosion_type = ExplosionType.BIG_AIR;
_value = 75;
break;
case EnemyType.TURRET:
case EnemyType.LASER:
_canspawnitem = true;
explosion_type = ExplosionType.BIG_AIR;
_value = 500;
break;
case 0:
case 1:
case 2:
case EnemyType.TANK:
case EnemyType.GUNSHIP:
explosion_type = ExplosionType.GROUND1;
_canspawnitem = true;
_value = 250;
break;
case EnemyType.SNOW_RUIN:
explosion_type = ExplosionType.UPWARDS;
_value = 20;
break;
default:
explosion_type = ExplosionType.AIR1;
_value = 25;
};
pos = new Vector(0, 0);
oldpos = new Vector(0, 0);
pos.x = _arg2.x;
pos.y = _arg2.y;
oldpos.x = pos.x;
oldpos.y = pos.y;
rad = Globals.get_enemyrad(_arg1);
health = Globals.get_health(_arg1);
mc = new EnemySprite();
mc.gotoAndStop((_arg1 + 1));
ax = 0;
attackmode = _arg3;
_rot = mc.rotation;
_defaultcolour = mc.transform.colorTransform;
if (_arg1 == EnemyType.SNOW_RUIN){
set_aabb();
};
}
public function unpause():void{
var _local1:MovieClip;
if (!_paused){
return;
};
_local1 = mc.clip;
if (_local1 == null){
return;
};
_local1.gotoAndPlay(_saveframe);
_paused = false;
}
private function big_circ():void{
var _local1:Number;
_movetimer++;
switch (_movestate){
case 0:
ax = (((6 + (set_num * 5)) + (id * 2)) * -1);
_delay = ((1 + id) * 5);
_movestate++;
break;
case 1:
if (_movetimer > 20){
_savey = pos.y;
_savex = pos.x;
ax = 0;
_movestate = 2;
};
break;
case 2:
_local1 = 100;
circular_motion(_savex, (_savey + (_local1 / 2)), _local1, 1.2, 1, true);
if (_movetimer > 100){
if (_movetimer == 50){
shoot = true;
};
ax = -5;
_movestate = 3;
};
break;
case 3:
ax = (ax * 1.05);
break;
};
}
public function set_target():void{
_targeted = true;
}
public function set remove(_arg1:Boolean):void{
_remove = _arg1;
}
public function get shoot():Boolean{
return (_shoot);
}
public function set_aabb():void{
aabb = true;
}
private function prong():void{
var _local1:int;
_movetimer++;
switch (_movestate){
case 0:
_delay = (id * 10);
ax = -12;
_movestate = 1;
break;
case 1:
ax = (ax * 0.6);
if (_movetimer > 6){
_movestate = 2;
_local1 = 1;
if (!(id % 2)){
_local1 = (_local1 * -1);
};
ay = (1 * _local1);
shoot = true;
};
break;
case 2:
ax = (ax * 1.01);
ay = (ay * 0.9);
if (ay < 0.1){
_movestate = 3;
ay = 0;
};
break;
case 3:
ax = (ax * 1.15);
break;
};
}
public function get height():Number{
return (mc.height);
}
public function collision(_arg1:Ship):int{
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
if (type == EnemyType.LASER){
if (_framewait < 2){
_framewait++;
return (0);
};
if ((((mc.clip.currentFrame > 5)) && ((mc.clip.currentFrame < 37)))){
_local3 = (pos.y - (mc.height / 2));
_local4 = (pos.y + mc.height);
if ((((_arg1.pos.y > _local3)) && ((_arg1.pos.y < _local4)))){
return (1);
};
return (0);
} else {
return (0);
};
};
_local2 = 0;
if (!_aabb){
if (_arg1.gridy == gridy){
if (_arg1.gridx == gridx){
_local7 = ((_arg1.rad * _arg1.rad) + (rad * rad));
_local5 = (_arg1.oldpos.x - oldpos.x);
_local6 = (_arg1.oldpos.y - oldpos.y);
_local8 = (((_local5 * _local5) + (_local6 * _local6)) - _local7);
if (_local8 < 0){
_local2 = 1;
};
};
};
} else {
_local12 = pos.y;
_local11 = (pos.x + (mc.width / 2));
_local9 = (pos.x - (mc.width / 2));
_local10 = (pos.y - mc.height);
if (_arg1.pos.x > _local9){
if (_arg1.pos.x < _local11){
if (_arg1.pos.y > _local10){
if (_arg1.pos.y < _local12){
_local2 = 1;
};
};
};
};
};
return (_local2);
}
public function get canspawnitem():Boolean{
return (_canspawnitem);
}
public function set shoot(_arg1:Boolean):void{
_shoot = _arg1;
}
public function get health():int{
return (_health);
}
private function circular_motion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int=1, _arg6:Boolean=false):void{
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local7 = (_arg6) ? 8 : 1;
_local8 = (((0.001 * 2) * Math.PI) / _arg4);
_local9 = ((_movetimer * 10) * _local8);
_local10 = (_arg1 - ((Math.sin(_local9) * _arg3) * _arg5));
_local11 = (_arg2 - ((Math.cos(_local9) * _arg3) * _arg5));
pos.x = (pos.x + ((_local10 - pos.x) / _local7));
pos.y = (pos.y + ((_local11 - pos.y) / _local7));
}
public function kill():void{
remove = true;
}
private function sine_y():void{
switch (_movestate){
case 0:
ax = -10;
_movestate = 1;
break;
case 1:
pos.y = (start_pos.y - (Math.cos((_timer * (0.075 + AMP))) * 18));
break;
};
}
public function get aabb():Boolean{
return (_aabb);
}
public function is_boss():Boolean{
if (_boss != null){
return (true);
};
return (false);
}
private function boss_move():void{
if (_boss == null){
return;
};
ax = _boss.accel.x;
ay = _boss.accel.y;
_movetimer++;
if (!(_movetimer % 12)){
shoot = true;
};
}
public function unset_target():void{
_targeted = false;
}
private function attack_move():void{
if (_delay > 0){
_delay--;
return;
};
switch (_attackmode){
case -1:
boss_move();
break;
case 0:
sine_y();
break;
case 1:
flat();
break;
case 2:
sweep();
break;
case 3:
firing();
break;
case 4:
prong();
break;
case 5:
big_circ();
break;
};
}
public function damage(_arg1:int):void{
health = (health - _arg1);
}
public function get value():int{
return (_value);
}
private function firing():void{
_movetimer++;
switch (_movestate){
case 0:
ax = (((16 + (set_num * 10)) + (id * 2)) * -1);
_movestate = 1;
break;
case 1:
ax = (ax * 0.9);
if (_movetimer > (60 + (set_num * 10))){
ax = -2;
shoot = true;
_movestate = 2;
};
break;
case 2:
ay = -0.8;
ax = (ax * 1.1);
break;
};
}
private function flat():void{
_movetimer++;
switch (type){
case EnemyType.HOMING:
switch (_movestate){
case 0:
ax = -8;
mc.scaleX = (mc.scaleX * -1);
_movestate = 1;
break;
case 1:
ay = ((_targetpos.y - pos.y) / 16);
break;
case 2:
break;
};
break;
case 0:
case 1:
case 2:
case EnemyType.BOAT:
case EnemyType.BOAT_TURRET:
switch (_movestate){
case 0:
ax = -10;
_movestate = 1;
break;
case 1:
break;
};
break;
case EnemyType.MAN:
switch (_movestate){
case 0:
_movestate = 1;
ax = -12;
break;
case 1:
break;
};
break;
case EnemyType.CHOPPER:
case EnemyType.TORNADO:
switch (_movestate){
case 0:
ax = -8;
_movestate = 1;
break;
case 1:
if (_movetimer > 30){
ax = -10;
switch (id){
case 0:
ay = -0.5;
break;
case 1:
ay = -0.25;
break;
case 2:
ay = -0.175;
break;
default:
ay = -0.06;
};
_movestate = 2;
};
break;
case 2:
ay = (ay * 1.05);
break;
};
break;
case EnemyType.ROCKETJET:
switch (_movestate){
case 0:
ax = -3;
ay = -1;
_movestate = 1;
break;
case 1:
ay = (ay * 0.95);
break;
};
break;
case EnemyType.BALLOON:
switch (_movestate){
case 0:
ay = (((id + 1) * 2) * -1);
ax = (-2 - (id * 2));
if (ax < -10){
ax = -10;
};
_movestate = 1;
break;
case 1:
ay = (ay * 0.9);
if (Math.abs(ay) < 0.01){
ay = 1;
_movestate = 2;
};
break;
case 2:
ay = (ay * 0.9);
if (ay < 0.01){
ay = -1;
_movestate = 1;
};
break;
};
break;
case EnemyType.SNOW_RUIN:
case EnemyType.JUNGLE_RUIN:
case EnemyType.SEA_RUIN:
case EnemyType.DESERT_RUIN:
switch (_movestate){
case 0:
ax = -16;
_movestate = 1;
break;
case 1:
if (_movetimer > 10){
if (!(_movetimer % Globals.get_fire_interval())){
shoot = true;
};
if (_movetimer > 30){
_movetimer = 0;
};
};
break;
};
break;
case EnemyType.DROP_SHIP:
if (!(_movetimer % 12)){
shoot = true;
};
switch (_movestate){
case 0:
ax = 6;
_movestate = 1;
break;
case 1:
ax = (ax * 1.02);
if (ax > 8){
ax = 8;
_movestate = 2;
};
break;
case 2:
break;
};
break;
case EnemyType.TANK:
switch (_movestate){
case 0:
ax = ((dir)<0) ? ax : 3;
_movestate = 1;
break;
case 1:
if (!(_movetimer % 46)){
shoot = true;
};
break;
};
break;
case EnemyType.GUNSHIP:
switch (_movestate){
case 0:
ax = ((dir)<0) ? ax : 3;
_movestate = 1;
break;
case 1:
if (_movetimer == 160){
shoot = true;
};
break;
};
break;
case EnemyType.PARATROOPER:
switch (_movestate){
case 0:
ax = (((Math.random() * 2) + 2) * -1);
ay = (5 + (Math.random() * 5));
_movestate = 1;
break;
case 1:
ax = (((Math.random() * 2) + 4) * -1);
ay = (ay * 0.95);
break;
};
break;
};
}
public function get remove():Boolean{
return (_remove);
}
public function get dir():int{
return (_dir);
}
public function render():void{
var _local1:Number;
mc.x = pos.x;
mc.y = pos.y;
if ((((type == EnemyType.TANK)) || ((type == EnemyType.GUNSHIP)))){
mc.parent.setChildIndex(mc, (mc.parent.numChildren - 1));
} else {
if (type == EnemyType.SNOW_RUIN){
mc.parent.setChildIndex(mc, 0);
} else {
if (type == EnemyType.TURRET){
_local1 = ((Globals.get_ang(_targetpos, pos) * 180) / Math.PI);
_local1 = Math.floor((_local1 / 45));
if (_framewait < 2){
_framewait++;
} else {
mc.clip.gotoAndStop((_local1 + 5));
};
mc.parent.setChildIndex(mc, (mc.parent.numChildren - 1));
};
};
};
_rot = mc.rotation;
}
public function set health(_arg1:int):void{
_health = _arg1;
}
private function reset_colour():void{
var _local1:Transform;
var _local2:ColorTransform;
if (_flashnum > 1){
_flashnum--;
return;
};
_flashnum--;
_local1 = new Transform(mc);
_local2 = _defaultcolour;
_local1.colorTransform = _local2;
}
public function set aabb(_arg1:Boolean):void{
_aabb = _arg1;
}
public function get width():Number{
return (mc.width);
}
public function update(_arg1:Vector):void{
_timer++;
if (_flashnum > 0){
reset_colour();
};
this._targetpos.x = _arg1.x;
this._targetpos.y = _arg1.y;
oldpos.x = pos.x;
oldpos.y = pos.y;
attack_move();
pos.x = (pos.x + ax);
pos.y = (pos.y + ay);
gridx = Math.floor((pos.x / Globals.GRID_SIZE));
gridy = Math.floor((pos.y / Globals.GRID_SIZE));
if (pos.x < -150){
kill();
};
if (pos.x > 900){
kill();
};
}
public function set attackmode(_arg1:int):void{
_attackmode = _arg1;
}
public function get rot():Number{
return (_rot);
}
private function sweep():void{
var _local1:Number;
_movetimer++;
if (!(_movetimer % Globals.get_shootinterval())){
shoot = true;
};
switch (_movestate){
case 0:
ax = -10;
if (_movetimer > ((id + 1) * 50)){
_movestate++;
_savey = pos.y;
_savex = pos.x;
ax = 0;
_movetimer = 0;
};
break;
case 1:
_local1 = 70;
circular_motion(_savex, (_savey + (_local1 / 2)), _local1, 1.1, 1, true);
if (_movetimer > 130){
_movestate++;
_movetimer = 0;
};
break;
case 2:
ax = -10;
break;
};
}
public function flash(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Transform;
var _local6:ColorTransform;
_local5 = new Transform(mc);
_local6 = _local5.colorTransform;
_local6.redMultiplier = _arg1;
_local6.greenMultiplier = _arg2;
_local6.blueMultiplier = _arg3;
_local6.alphaMultiplier = _arg4;
_local5.colorTransform = _local6;
_flashnum = 10;
}
public function pause():void{
var _local1:MovieClip;
if (_paused){
return;
};
_local1 = mc.clip;
if (_local1 == null){
return;
};
_saveframe = _local1.currentFrame;
_local1.gotoAndStop(_saveframe);
_paused = true;
}
public function get attackmode():int{
return (_attackmode);
}
public function get targeted():Boolean{
return (_targeted);
}
}
}//package
Section 44
//EnemyPool (EnemyPool)
package {
import com.playerthree.util.*;
import flash.display.*;
import de.polygonal.math.*;
public class EnemyPool {
public const NUKE_TIME:int = 40;
private var _spacing:int;// = 72
private var _pausespawn:Boolean;// = false
private var _waiting:Boolean;// = false
private var _waitinterval:int;// = 3
private var _prng:PM_PRNG;
private var _ship:Ship;
private var _max_groundtype:int;// = 4
private var _tanktimer:int;// = 0
private var _interval:int;// = 24
public var enemies:Array;
private var _airstrikepos:Vector;
private var nuke_mc:MovieClip;
private var _nuke:Boolean;// = false
private var _targ:Enemy;
private var _max_yrange:int;// = 4
private var _timer:int;// = 0
private var _nukepausetimer:int;// = 0
private var _wait:int;// = 0
private var _paused:Boolean;// = false
private var _groundtimer:int;// = 0
private var _sounds:SoundManager;
private var _groundinterval:int;// = 32
private var _min_groundtype:int;// = 0
private var _airstriketimer:int;// = 0
private var _bossorigin:Vector;
private var _currenttype:int;
private var _bullets:BulletPool;
private var _tankinterval:int;// = 384
private var _min_yrange:int;// = 0
private var nuke_flash:Number;// = 0
private var _groundtypes:Array;
public var mc:Sprite;
private var _scroller:Scroller;
private var _bossdeathtimer:int;// = 0
private var _max_xrange:int;// = 10
private var _set:int;// = 0
private var _beams:BeamPool;
private var _set_total:int;// = 1
private var _oldlen:Number;// = 1000
private var _minmode:int;// = 0
private var _items:ItemPool;
private var _tankwait:int;// = 0
private var _maxmode:int;// = 5
private var _groundbuildpos:Vector;
private var _wave:int;// = 0
private var _currentmode:int;
private var _groundpos:Vector;
private var _min_xrange:int;// = 0
private var start_xs:Array;
private var _tankset:int;// = 0
private var _tankpos:Vector;
private static const GROUND_INTERVAL:int = 64;
public function EnemyPool(_arg1:Ship, _arg2:BeamPool, _arg3:BulletPool, _arg4:Scroller, _arg5:PM_PRNG, _arg6:ItemPool, _arg7:SoundManager){
enemies = new Array();
_timer = 0;
_interval = 24;
_min_xrange = 0;
_max_xrange = 10;
_min_yrange = 0;
_max_yrange = 4;
_spacing = 72;
start_xs = [760, -40];
_airstrikepos = new Vector(-80, -30);
_airstriketimer = 0;
_groundinterval = 32;
_groundtimer = 0;
_groundpos = new Vector(790, 365);
_groundbuildpos = new Vector(790, 390);
_groundtypes = EnemyType.GROUND_TYPES;
_min_groundtype = 0;
_max_groundtype = 4;
_set = 0;
_set_total = 1;
_waiting = false;
_waitinterval = 3;
_wait = 0;
_minmode = 0;
_maxmode = 5;
_tanktimer = 0;
_tankinterval = 384;
_tankpos = new Vector(-50, 365);
_tankwait = 0;
_tankset = 0;
_wave = 0;
_nuke = false;
_nukepausetimer = 0;
nuke_flash = 0;
_bossdeathtimer = 0;
_oldlen = 1000;
_pausespawn = false;
_paused = false;
super();
mc = new Sprite();
this._ship = _arg1;
this._beams = _arg2;
this._bullets = _arg3;
this._scroller = _arg4;
this._prng = _arg5;
this._items = _arg6;
this._sounds = _arg7;
_currentmode = 0;
_currenttype = EnemyType.CHOPPER;
}
public function get wave():int{
return (_wave);
}
public function pause_spawn():void{
if (!_pausespawn){
_pausespawn = true;
};
}
private function get_bullet(_arg1:int, _arg2:int):int{
var _local3:int;
switch (_arg2){
case EnemyType.TORNADO:
switch (_arg1){
case 3:
_local3 = 2;
break;
default:
_local3 = 5;
};
break;
case EnemyType.CHOPPER:
switch (_arg1){
case 0:
_local3 = 1;
break;
case 1:
_local3 = 3;
break;
default:
_local3 = 1;
};
break;
case EnemyType.TANK:
switch (_arg1){
case 0:
case 1:
_local3 = 12;
break;
default:
_local3 = 12;
};
};
return (_local3);
}
public function create_airstrike():void{
var _local1:Enemy;
_local1 = new Enemy(EnemyType.DROP_SHIP, _airstrikepos, 1, 0);
mc.addChild(_local1.mc);
enemies.push(_local1);
_airstriketimer = 200;
}
public function get settotal():int{
return (_set_total);
}
public function create_ground_enemy(_arg1:Vector, _arg2:int, _arg3:int, _arg4:int):void{
var _local5:Enemy;
_local5 = new Enemy(_arg2, _arg1, _arg3, _arg4);
_local5.set_aabb();
mc.addChild(_local5.mc);
enemies.push(_local5);
}
public function fire(_arg1:Vector, _arg2:int, _arg3:int, _arg4:int, _arg5:MovieClip=null):void{
var _local6:int;
var _local7:Vector;
var _local8:Vector;
var _local9:Vector;
var _local10:Vector;
switch (_arg2){
case EnemyType.SNOW_RUIN:
case EnemyType.DESERT_RUIN:
case EnemyType.JUNGLE_RUIN:
_bullets.create_bullet(_arg1, 11, _arg4, false);
_sounds.play_sound(OSounds.TANK_FIRE);
break;
case EnemyType.TORNADO:
trace((((" sappening. mode " + _arg3) + ", type ") + _arg2));
_local6 = get_bullet(_arg3, _arg2);
trace((" sappening result " + _local6));
_bullets.create_bullet(_arg1, _local6, _arg4, false, new Vector(_ship.pos.x, _ship.pos.y));
break;
case EnemyType.CHOPPER:
_bullets.create_bullet(_arg1, get_bullet(_arg3, _arg2), _arg4, false);
break;
case EnemyType.TANK:
_bullets.create_bullet(_arg1, get_bullet(_arg3, _arg2), _arg4, false);
_sounds.play_sound(OSounds.TANK_FIRE);
break;
case EnemyType.TURRET:
_bullets.create_bullet(_arg1, 5, 1, false, new Vector(_ship.pos.x, _ship.pos.y));
break;
case EnemyType.DROP_SHIP:
_local7 = new Vector(_arg1.x, (_arg1.y + 100));
_bullets.create_bullet(_local7, 3, _arg4, false);
break;
case EnemyType.GUNSHIP:
_local8 = new Vector((_arg1.x - 20), (_arg1.y - 2));
_local9 = new Vector((_arg1.x - 37), (_arg1.y - 2));
_local10 = new Vector((_arg1.x - 3), (_arg1.y - 2));
_bullets.create_bullet(_local8, 13, 1, false);
_bullets.create_bullet(_local9, 13, 1, false);
_bullets.create_bullet(_local10, 13, 1, false);
_arg5.gotoAndStop((EnemyType.GUNSHIP_EMPTY + 1));
break;
};
}
public function reset():void{
var _local1:int;
var _local2:Enemy;
_currentmode = 0;
_currenttype = EnemyType.CHOPPER;
_wave = 0;
_set = 0;
_set_total = 3;
_timer = 0;
_tanktimer = 0;
_groundtimer = 0;
_wait = 0;
_airstriketimer = 0;
_nuke = false;
nuke_flash = 0;
_local1 = enemies.length;
while (--_local1 > -1) {
_local2 = enemies[_local1];
enemies.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
}
public function get currentset():int{
return (_set);
}
public function nuke():void{
_nuke = true;
_nukepausetimer = NUKE_TIME;
nuke_flash = 0;
_sounds.play_sound(OSounds.NUKE);
pause_toggle();
_scroller.pause();
}
public function get targ():Enemy{
return (_targ);
}
private function spawn_enemy_set(_arg1:int, _arg2:int, _arg3:int):void{
var _local4:int;
var _local5:Vector;
_local4 = _arg1;
while (--_local4 > -1) {
_local5 = new Vector(start_xs[0], ((1 + _local4) * _spacing));
create_enemy(_local5, _arg2, _arg3, _local4, -1, (_local4 * 5));
};
}
public function get bossdeathtimer():int{
return (_bossdeathtimer);
}
public function get nuketimer():int{
return (_nukepausetimer);
}
public function create_enemy(_arg1:Vector, _arg2:int, _arg3:int, _arg4:int, _arg5:int=-1, _arg6:int=0, _arg7:Boss=null):void{
var _local8:Enemy;
_local8 = new Enemy(_arg2, _arg1, _arg3, _arg4, _arg5, _arg6, _arg7, _set_total);
mc.addChild(_local8.mc);
enemies.push(_local8);
}
private function check_spawn():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Vector;
var _local5:int;
if (_ship.movingscreen){
return;
};
if (_pausespawn){
return;
};
_timer++;
if (!(_timer % _interval)){
if (!_waiting){
_local3 = Globals.get_batchtotal();
_local1 = _currenttype;
_local2 = _currentmode;
spawn_enemy_set(_local3, _local1, _local2);
if (_set_total > 0){
_set_total--;
} else {
_waiting = true;
_wait = _waitinterval;
};
} else {
if (_wait > 0){
_wait--;
} else {
_waiting = false;
_set++;
if (_set > 5){
_wave++;
_set = 0;
spawn_jetmissile_set();
};
_set_total = Math.min(_wave, Globals.get_maxsettotal());
_currenttype = ((_currenttype)==EnemyType.CHOPPER) ? EnemyType.TORNADO : EnemyType.CHOPPER;
_currentmode = _prng.nextIntRange(_minmode, _maxmode);
};
};
};
_groundtimer++;
if (!(_groundtimer % _groundinterval)){
_local1 = EnemyType.get_groundenemy(_prng.nextIntRange(_min_groundtype, _max_groundtype));
_local2 = 1;
if ((((((((_local1 == EnemyType.SNOW_RUIN)) || ((_local1 == EnemyType.DESERT_RUIN)))) || ((_local1 == EnemyType.SEA_RUIN)))) || ((_local1 == EnemyType.JUNGLE_RUIN)))){
_local4 = _groundbuildpos;
create_ground_enemy(_local4, _local1, _local2, 0);
} else {
_local4 = _groundpos;
create_enemy(_local4, _local1, _local2, 0);
};
};
_tanktimer++;
if (!(_tanktimer % _tankinterval)){
if (_tankwait > 0){
_tankwait--;
} else {
_local5 = Globals.get_tanktotal();
_local1 = ((Globals.LEVEL)!=2) ? EnemyType.TANK : EnemyType.GUNSHIP;
spawn_tank_set(_local5, _local1);
_tankset++;
if (_tankset > 2){
_tankwait = 4;
};
};
};
}
public function kill_boss_enemies(_arg1:Number, _arg2:Number):void{
var _local3:int;
var _local4:Enemy;
_bossdeathtimer = 80;
_bossorigin = new Vector(_arg1, _arg2);
_local3 = enemies.length;
while (--_local3 > -1) {
_local4 = enemies[_local3];
if (_local4.is_boss()){
enemies.splice(_local3, 1);
mc.removeChild(_local4.mc);
};
};
}
public function kill_target():void{
_targ = null;
}
public function render():void{
var _local1:int;
var _local2:Enemy;
_local1 = enemies.length;
while (--_local1 > -1) {
_local2 = enemies[_local1];
_local2.render();
};
}
private function check_bossdeath(_arg1:ExplosionPool):void{
if (_bossdeathtimer > 0){
_bossdeathtimer--;
if (!(_bossdeathtimer % 20)){
_arg1.create(ExplosionType.KILL, _bossorigin);
};
};
}
public function unpause_spawn():void{
if (_pausespawn){
_pausespawn = false;
};
}
public function pause_toggle():void{
var _local1:int;
var _local2:Enemy;
_local1 = enemies.length;
while (--_local1 > -1) {
_local2 = enemies[_local1];
if (_paused){
_local2.unpause();
} else {
_local2.pause();
};
};
_paused = !(_paused);
}
public function update(_arg1:ExplosionPool, _arg2:PlumPool):void{
var _local3:int;
var _local4:int;
var _local5:Enemy;
var _local6:Enemy;
var _local7:int;
var _local8:int;
if (nuke_mc != null){
if (nuke_mc.currentFrame == (nuke_mc.totalFrames - 1)){
mc.removeChild(nuke_mc);
nuke_mc = null;
};
};
if (_paused){
if (_nukepausetimer > 0){
_nukepausetimer--;
nuke_flash = (nuke_flash + 0.03);
_ship.flash((1 + nuke_flash), (1 + nuke_flash), (1 + nuke_flash), 1);
_local4 = enemies.length;
while (--_local4 > -1) {
_local5 = enemies[_local4];
_local5.flash((1 + nuke_flash), (1 + nuke_flash), (1 + nuke_flash), 1);
};
} else {
pause_toggle();
_scroller.unpause();
nuke_mc = new NukeSprite();
nuke_mc.x = (Overkill.SW * 0.5);
nuke_mc.y = (Overkill.SH * 0.5);
mc.addChild(nuke_mc);
};
return;
};
check_spawn();
check_bossdeath(_arg1);
_oldlen = 1000;
_local3 = enemies.length;
while (--_local3 > -1) {
_local6 = enemies[_local3];
_local6.update(_ship.pos);
get_closest_en(_local6);
if (_nuke){
_local6.kill();
Globals.add_score(_local6.value);
_arg2.create(_local6.pos, _local6.value);
if (_local6.targeted){
_targ = null;
_local6.unset_target();
};
_arg1.create(ExplosionType.AIR1, _local6.pos);
};
if (_local6.shoot){
fire(_local6.pos, _local6.type, _local6.attackmode, _local6.dir, _local6.mc);
_local6.shoot = false;
};
if (_local6.remove){
enemies.splice(_local3, 1);
mc.removeChild(_local6.mc);
} else {
if (_local6.collision(_ship)){
if (_local6.type != EnemyType.LASER){
_local6.kill();
Globals.add_score(_local6.value);
_arg2.create(_local6.pos, _local6.value);
if (_local6.targeted){
_targ = null;
_local6.unset_target();
};
_ship.damage(35);
} else {
if (!_ship.dead){
_ship.damage(5);
_arg1.shake(6);
};
};
if (_ship.health < 1){
if (_local6.type != EnemyType.LASER){
_ship.kill();
_arg1.create(ExplosionType.KILL, _ship.pos);
_local7 = _ship.ammo.length;
while (--_local7 > -1) {
if (_ship.ammo[_local7]){
_items.create_item(_local7, _ship.pos);
};
};
} else {
if (!_ship.dead){
_ship.kill();
_arg1.create(ExplosionType.KILL, _ship.pos);
_local8 = _ship.ammo.length;
while (--_local8 > -1) {
if (_ship.ammo[_local8]){
_items.create_item(_local8, _ship.pos);
};
};
};
};
} else {
_ship.flash(1.6, 1.6, 1.6, 1);
_arg1.create(ExplosionType.SMALL, _ship.pos);
};
};
};
};
if (_nuke){
_nuke = false;
};
}
private function spawn_tank_set(_arg1:int, _arg2:int):void{
var _local3:int;
var _local4:int;
_local3 = _arg1;
while (--_local3 > -1) {
_local4 = (_local3 * 48);
create_enemy(_tankpos, _arg2, 1, _local3, 1, _local4);
};
}
private function spawn_jetmissile_set():void{
var _local1:int;
var _local2:int;
var _local3:Array;
var _local4:Array;
var _local5:Vector;
var _local6:int;
_local1 = 9;
_local3 = [50, 50, 100, 100, 150, 200, 200, 250, 250];
_local4 = [0, 32, 8, 24, 16, 8, 24, 0, 32];
while (--_local1 > -1) {
_local5 = new Vector(740, (_local3[_local1] + 25));
_local6 = ((Globals.LEVEL)!=2) ? EnemyType.ROCKETJET : EnemyType.BALLOON;
create_enemy(_local5, _local6, 1, _local1, -1, _local4[_local1]);
};
}
public function airstrike_fin():Boolean{
if (_airstriketimer < 1){
return (true);
};
_airstriketimer--;
return (false);
}
function get_closest_en(_arg1:Enemy):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
if (_arg1.type == EnemyType.DROP_SHIP){
return;
};
_local3 = (_arg1.pos.x - _ship.pos.x);
_local4 = (_arg1.pos.y - _ship.pos.y);
_local2 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
if (_local2 < _oldlen){
_oldlen = _local2;
_targ = _arg1;
_arg1.set_target();
};
}
}
}//package
Section 45
//EnemySprite (EnemySprite)
package {
import flash.display.*;
public dynamic class EnemySprite extends MovieClip {
public var goat_clip:MovieClip;
public var clip:MovieClip;
}
}//package
Section 46
//EnemyType (EnemyType)
package {
public class EnemyType {
public static var PARATROOPER:int = 34;
public static var BOAT:int = 29;
public static var DROP_SHIP:int = 53;
public static var LASER:int = 25;
public static var BALLOON:int = 33;
public static var SEA_RUIN:int = 17;
public static var GUNSHIP_EMPTY:int = 32;
public static var DESERT_RUIN:int = 42;
public static var BOAT_TURRET:int = 30;
public static var GUNSHIP:int = 31;
public static var GROUND_TYPES:Array = [0, 1, 2, SNOW_RUIN, MAN];
public static var HOMING:int = 9;
public static var SNOW_RUIN:int = 36;
public static var ROCKETJET:int = 10;
public static var TANK:int = 7;
public static var TURRET:int = 5;
private static var RUINS:Array = [SNOW_RUIN, JUNGLE_RUIN, SEA_RUIN, DESERT_RUIN];
public static var TORNADO:int = 4;
public static var CHOPPER:int = 3;
public static var JUNGLE_RUIN:int = 38;
public static var MAN:int = 35;
public static function get_groundenemy(_arg1:int):int{
switch (_arg1){
case 0:
if (Globals.LEVEL != 2){
return (0);
};
return (BOAT);
case 1:
if (Globals.LEVEL != 2){
return (1);
};
return (BOAT);
case 2:
if (Globals.LEVEL != 2){
return (2);
};
return (BOAT_TURRET);
case 3:
return (RUINS[Globals.LEVEL]);
case 4:
if (Globals.LEVEL != 2){
return (MAN);
};
return (BOAT);
default:
return (0);
};
}
}
}//package
Section 47
//EngineTroubleSound (EngineTroubleSound)
package {
import flash.media.*;
public dynamic class EngineTroubleSound extends Sound {
}
}//package
Section 48
//ExplodeBigSound (ExplodeBigSound)
package {
import flash.media.*;
public dynamic class ExplodeBigSound extends Sound {
}
}//package
Section 49
//ExplodeLongSound (ExplodeLongSound)
package {
import flash.media.*;
public dynamic class ExplodeLongSound extends Sound {
}
}//package
Section 50
//ExplodeShortSound (ExplodeShortSound)
package {
import flash.media.*;
public dynamic class ExplodeShortSound extends Sound {
}
}//package
Section 51
//Explosion (Explosion)
package {
import flash.events.*;
import com.playerthree.util.*;
import flash.display.*;
public class Explosion {
private var _added:Boolean;// = false
private var _remove:Boolean;// = false
private var _wait:int;// = 0
public var pos:Vector;
public var mc:MovieClip;
public var type:int;
public function Explosion(_arg1:int, _arg2:Vector){
_remove = false;
_added = false;
_wait = 0;
super();
this.type = _arg1;
this.pos = _arg2;
mc = new ExplosionSprite();
mc.gotoAndStop((_arg1 + 1));
mc.x = _arg2.x;
mc.y = _arg2.y;
mc.addEventListener(Event.ADDED_TO_STAGE, on_screen);
}
public function set remove(_arg1:Boolean):void{
_remove = _arg1;
}
public function get remove():Boolean{
return (_remove);
}
public function kill():void{
remove = true;
}
public function update():void{
if (!_added){
return;
};
_wait++;
if (_wait < 2){
return;
};
if (mc.clip.currentFrame == (mc.clip.totalFrames - 1)){
kill();
};
}
public function on_screen(_arg1:Event):void{
mc.removeEventListener(Event.ADDED_TO_STAGE, on_screen);
_added = true;
}
}
}//package
Section 52
//ExplosionPool (ExplosionPool)
package {
import com.playerthree.util.*;
import flash.display.*;
public class ExplosionPool {
private const SHAKE_TIME:int = 24;
private var _smokes:Array;
private var _shakeforce:int;
private var _sprites:Sprite;
private var _paused:Boolean;// = false
public var mc:Sprite;
private var _shaketimer:int;// = 0
private var _sounds:SoundManager;
private var _explosions:Array;
private var _debrismgr:DebrisManager;
public function ExplosionPool(_arg1:SoundManager, _arg2:Sprite){
_explosions = new Array();
_shaketimer = 0;
_paused = false;
_smokes = new Array();
super();
mc = new Sprite();
_debrismgr = new DebrisManager(mc);
this._sounds = _arg1;
this._sprites = _arg2;
}
public function update():void{
var _local1:int;
var _local2:Number;
var _local3:Number;
var _local4:Explosion;
var _local5:Smoke;
if (_paused){
return;
};
_debrismgr.update();
if (_shaketimer > 0){
_shaketimer--;
_local2 = (Math.random() * _shakeforce);
_local2 = ((_local2)>(_shakeforce / 2)) ? _local2 = (_local2 - _shakeforce);
_local2 : _local2;
_local3 = (Math.random() * _shakeforce);
_local3 = ((_local3)>(_shakeforce / 2)) ? _local3 = (_local3 - _shakeforce);
_local3 : _local3;
_sprites.x = _local2;
_sprites.y = _local3;
if (_shaketimer == 1){
_sprites.x = 0;
_sprites.y = 0;
};
};
_local1 = _explosions.length;
while (--_local1 > -1) {
_local4 = _explosions[_local1];
_local4.update();
if (_local4.remove){
_explosions.splice(_local1, 1);
mc.removeChild(_local4.mc);
};
};
_local1 = _smokes.length;
while (--_local1 > -1) {
_local5 = _smokes[_local1];
_local5.update();
if (_local5.remove){
_smokes.splice(_local1, 1);
mc.removeChild(_local5.mc);
};
};
}
public function reset():void{
var _local1:int;
var _local2:Explosion;
var _local3:Smoke;
_local1 = _explosions.length;
while (--_local1 > -1) {
_local2 = _explosions[_local1];
_explosions.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
_local1 = _smokes.length;
while (--_local1 > -1) {
_local3 = _smokes[_local1];
_smokes.splice(_local1, 1);
mc.removeChild(_local3.mc);
};
_debrismgr.reset();
}
public function shake(_arg1:int):void{
if (_shaketimer > 0){
return;
};
_shakeforce = _arg1;
_shaketimer = SHAKE_TIME;
}
public function create(_arg1:int, _arg2:Vector):void{
var _local3:Explosion;
var _local4:int;
var _local5:String;
_local3 = new Explosion(_arg1, _arg2);
if (_arg1 == ExplosionType.KILL){
_sounds.play_sound(OSounds.EXP_DEAD);
} else {
if ((((((_arg1 == ExplosionType.AIR1)) || ((_arg1 == ExplosionType.SMALL)))) || ((_arg1 == ExplosionType.GROUND1)))){
_sounds.play_sound(OSounds.EXP_SHORT);
_debrismgr.create_debris(_arg2);
} else {
if ((((_arg1 == ExplosionType.BIG_AIR)) || ((_arg1 == ExplosionType.BIG_UPWARDS)))){
_sounds.play_sound(OSounds.EXP_LONG);
_debrismgr.create_debris(_arg2);
} else {
if (_arg1 == ExplosionType.UPWARDS){
_sounds.play_sound(OSounds.EXP_SHORT);
} else {
if (Math.random() < 0.25){
_local4 = Math.floor((Math.random() * 4));
_local4 = (_local4 + 1);
_local5 = ("RIC" + _local4);
_sounds.play_sound(OSounds[_local5]);
};
};
};
};
};
mc.addChild(_local3.mc);
_explosions.push(_local3);
}
public function pause():void{
var _local1:int;
var _local2:Explosion;
var _local3:Smoke;
_paused = true;
_local1 = _explosions.length;
while (--_local1 > -1) {
_local2 = _explosions[_local1];
_explosions.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
_local1 = _smokes.length;
while (--_local1 > -1) {
_local3 = _smokes[_local1];
_smokes.splice(_local1, 1);
mc.removeChild(_local3.mc);
};
}
public function create_smoke(_arg1:int, _arg2:Vector):void{
var _local3:Smoke;
_local3 = new Smoke(_arg1, _arg2);
mc.addChild(_local3.mc);
_smokes.push(_local3);
}
public function unpause():void{
_paused = false;
}
}
}//package
Section 53
//ExplosionSprite (ExplosionSprite)
package {
import flash.display.*;
public dynamic class ExplosionSprite extends MovieClip {
public var clip:MovieClip;
}
}//package
Section 54
//ExplosionType (ExplosionType)
package {
public class ExplosionType {
public static var BIG_UPWARDS:int = 7;
public static var AIR1:int = 1;
public static var GROUND1:int = 0;
public static var BIG_AIR:int = 6;
public static var FIRE:int = 5;
public static var RICOCHET:int = 2;
public static var UPWARDS:int = 4;
public static var KILL:int = 9;
public static var SMALL:int = 3;
}
}//package
Section 55
//GameMusicSound (GameMusicSound)
package {
import flash.media.*;
public dynamic class GameMusicSound extends Sound {
}
}//package
Section 56
//GameOverSprite (GameOverSprite)
package {
import flash.display.*;
public dynamic class GameOverSprite extends MovieClip {
public function GameOverSprite(){
addFrameScript(38, frame39);
}
function frame39(){
stop();
}
}
}//package
Section 57
//Globals (Globals)
package {
import com.playerthree.util.*;
public class Globals {
public static var MISSILE_RATE:int = 16;
private static var SCORE:int = 0;
public static var E_HEALTH:Array = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10];
public static var DECAY:Number = 0.6;
public static var B_STRENGTH:Array = [1, 5, 25, 50, 5, 16, 16, 17, 18, 19, 10, 32, 24, 32, 24, 10];
public static var GROUND_Y:int = 385;
public static var TANK_TOTALS:Array = [2, 3, 3, 5];
public static var MID_BOSS:int = 3;
private static var RANK:int = 0;
private static var JET_TOTALS:Array = [5, 10, 14, 22];
public static var MACHINE_GUN_RATE:int = 3;
public static var MAX_VOL:Number = 0.75;
private static var TYPE3:Array = [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12];
public static var SEEKER_RATE:int = 20;
private static var TYPE1:Array = [0, 1, 2, 3, 5, 6, 7, 10, 11, 12];
private static var TYPE2:Array = [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12];
private static var TYPE4:Array = [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12];
private static var THRESHOLD:int = 10000;
private static var SET_TOTALS:Array = [2, 3, 4, 5];
private static var BATCHES:Array = [2, 3, 4, 5];
private static var OLD_SCORE:int = 0;
private static var TYPES:Array = [TYPE1, TYPE2, TYPE3, TYPE4];
public static var GRID_SIZE:int = 132;
public static var BOMB_RATE:int = 12;
public static var FIRE_SPEED:int = 16;
public static var LEVEL:int = 0;
public static var FIRE_INTERVALS:Array = [12, 10, 10, 8];
public static var SEED:int = 2;
public static var INIT_DELAY:int = 140;
public static var SHOOT_INTERVALS:Array = [32, 24, 20, 16];
private static var LAST_TYPES:Array = new Array();
public static function get_fire_interval():int{
return (FIRE_INTERVALS[Globals.LEVEL]);
}
public static function get_tanktotal():int{
return (TANK_TOTALS[Globals.LEVEL]);
}
public static function get_strength(_arg1:int):int{
if (_arg1 == BulletType.MG_MEDIUM){
return (3);
};
if (_arg1 == BulletType.MG_HARD){
return (5);
};
return (B_STRENGTH[_arg1]);
}
public static function get_shootinterval():int{
return (SHOOT_INTERVALS[Globals.LEVEL]);
}
public static function get_ang(_arg1:Vector, _arg2:Vector):Number{
var _local3:Number;
var _local4:Number;
_local3 = (_arg1.x - _arg2.x);
_local4 = (_arg1.y - _arg2.y);
return (Math.atan2(_local4, -(_local3)));
}
public static function get_pickup():int{
var _local1:Array;
var _local2:int;
var _local3:int;
_local1 = TYPES[Globals.LEVEL];
_local2 = _local1[Math.floor((Math.random() * _local1.length))];
if (_local2 == 12){
_local3 = LAST_TYPES.length;
while (--_local3 > -1) {
if (LAST_TYPES[_local3] == 12){
_local2 = 6;
break;
};
};
};
LAST_TYPES.push(_local2);
if (LAST_TYPES.length > 9){
LAST_TYPES.shift();
};
return (_local2);
}
public static function get_rankframe():int{
return ((RANK + 1));
}
public static function reset_score():void{
SCORE = (OLD_SCORE = 0);
RANK = 0;
}
public static function add_score(_arg1:int):void{
SCORE = (OLD_SCORE + _arg1);
if ((((SCORE > THRESHOLD)) && (((SCORE % THRESHOLD) < (OLD_SCORE % THRESHOLD))))){
RANK++;
};
OLD_SCORE = SCORE;
}
public static function to_radians(_arg1:Number):Number{
return ((_arg1 * (Math.PI / 180)));
}
public static function get_batchtotal():int{
return (BATCHES[Globals.LEVEL]);
}
public static function get_jetset():int{
return (JET_TOTALS[Globals.LEVEL]);
}
public static function get_maxsettotal():int{
return (SET_TOTALS[Globals.LEVEL]);
}
public static function get_score():int{
return (SCORE);
}
public static function get_health(_arg1:int):int{
var _local2:int;
switch (_arg1){
case EnemyType.CHOPPER:
_local2 = 8;
break;
case EnemyType.TORNADO:
_local2 = 10;
break;
case EnemyType.LASER:
_local2 = 64;
break;
case EnemyType.TURRET:
_local2 = 64;
break;
case EnemyType.TANK:
_local2 = 16;
break;
case EnemyType.ROCKETJET:
_local2 = 18;
break;
case 0:
case 1:
case 2:
_local2 = 6;
break;
default:
_local2 = 10;
};
return (_local2);
}
public static function get_enemyrad(_arg1:int):int{
var _local2:int;
switch (_arg1){
case EnemyType.CHOPPER:
case EnemyType.TORNADO:
case EnemyType.ROCKETJET:
_local2 = 28;
break;
case 0:
case 1:
case 2:
case EnemyType.TANK:
_local2 = 24;
break;
case EnemyType.LASER:
_local2 = 32;
break;
case EnemyType.DROP_SHIP:
_local2 = 40;
break;
case EnemyType.TURRET:
_local2 = 18;
break;
default:
_local2 = 20;
};
return (_local2);
}
}
}//package
Section 58
//GunSprite (GunSprite)
package {
import flash.display.*;
public dynamic class GunSprite extends MovieClip {
}
}//package
Section 59
//HaSound (HaSound)
package {
import flash.media.*;
public dynamic class HaSound extends Sound {
}
}//package
Section 60
//HealthSound (HealthSound)
package {
import flash.media.*;
public dynamic class HealthSound extends Sound {
}
}//package
Section 61
//HeavyMGPickupSound (HeavyMGPickupSound)
package {
import flash.media.*;
public dynamic class HeavyMGPickupSound extends Sound {
}
}//package
Section 62
//Item (Item)
package {
import com.playerthree.util.*;
import flash.display.*;
public class Item {
public var oldpos:Vector;
public var pos:Vector;
private var _timer:int;// = 0
public var mc:MovieClip;
private var _hitground:Boolean;// = false
public var rad:int;// = 12
private var _remove:Boolean;// = false
public var accel:Vector;
private var _movestate:int;// = 0
public var type:int;
public function Item(_arg1:int, _arg2:Vector){
_remove = false;
_hitground = false;
_timer = 0;
rad = 12;
_movestate = 0;
super();
this.type = _arg1;
this.pos = _arg2;
accel = new Vector((Math.random() * -1), 3);
oldpos = new Vector(_arg2.x, _arg2.y);
mc = new ItemSprite();
mc.gotoAndStop((_arg1 + 1));
}
public function get remove():Boolean{
return (_remove);
}
public function set remove(_arg1:Boolean):void{
_remove = _arg1;
}
public function update():void{
_timer++;
switch (_movestate){
case 0:
accel.y = -6;
accel.x = (-2 * Math.random());
_movestate = 1;
break;
case 1:
accel.y = (accel.y * 0.8);
if (Math.abs(accel.y) < 0.001){
_movestate = 2;
};
break;
case 2:
accel.y = (accel.y + 0.015);
break;
};
if (!(_timer % 88)){
accel.x = (Math.random() * -2);
};
oldpos.x = pos.x;
oldpos.y = pos.y;
pos.x = (pos.x + accel.x);
pos.y = (pos.y + accel.y);
if (pos.y > Globals.GROUND_Y){
hitground = true;
kill();
};
}
public function render():void{
mc.x = pos.x;
mc.y = pos.y;
}
public function kill():void{
remove = true;
}
public function get hitground():Boolean{
return (_hitground);
}
public function collision(_arg1:Ship):int{
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local2 = 0;
_local5 = ((_arg1.rad * _arg1.rad) + (rad * rad));
_local3 = (_arg1.oldpos.x - oldpos.x);
_local4 = (_arg1.oldpos.y - oldpos.y);
_local6 = (((_local3 * _local3) + (_local4 * _local4)) - _local5);
if (_local6 < 0){
_local2 = 1;
};
return (_local2);
}
public function set hitground(_arg1:Boolean){
_hitground = _arg1;
}
}
}//package
Section 63
//ItemPool (ItemPool)
package {
import com.playerthree.util.*;
import flash.display.*;
public class ItemPool {
private var _items:Array;
private var _paused:Boolean;// = false
public var mc:Sprite;
private var _ship:Ship;
private var _explosions:ExplosionPool;
public function ItemPool(_arg1:Ship, _arg2:ExplosionPool){
_items = new Array();
_paused = false;
super();
mc = new Sprite();
this._ship = _arg1;
this._explosions = _arg2;
}
public function render():void{
var _local1:int;
var _local2:Item;
_local1 = _items.length;
while (--_local1 > -1) {
_local2 = _items[_local1];
_local2.render();
};
}
public function unpause():void{
_paused = false;
}
public function create_item(_arg1:int, _arg2:Vector):void{
var _local3:Item;
_local3 = new Item(_arg1, _arg2);
mc.addChild(_local3.mc);
_items.push(_local3);
}
public function update():void{
var _local1:int;
var _local2:Item;
if (_paused){
return;
};
_local1 = _items.length;
while (--_local1 > -1) {
_local2 = _items[_local1];
_local2.update();
if (_local2.collision(_ship)){
_local2.kill();
_ship.pickup(_local2.type);
};
if (_local2.remove){
_items.splice(_local1, 1);
mc.removeChild(_local2.mc);
if (_local2.hitground){
_explosions.create(ExplosionType.GROUND1, _local2.pos);
};
};
};
}
public function pause():void{
_paused = true;
}
public function reset():void{
var _local1:int;
var _local2:Item;
_local1 = _items.length;
while (--_local1 > -1) {
_local2 = _items[_local1];
_items.splice(_local1, 1);
mc.removeChild(_local2.mc);
};
}
}
}//package
Section 64
//ItemSprite (ItemSprite)
package {
import flash.display.*;
public dynamic class ItemSprite extends MovieClip {
}
}//package
Section 65
//LaserLoopSound (LaserLoopSound)
package {
import flash.media.*;
public dynamic class LaserLoopSound extends Sound {
}
}//package
Section 66
//LaserPickupSound (LaserPickupSound)
package {
import flash.media.*;
public dynamic class LaserPickupSound extends Sound {
}
}//package
Section 67
//LaserStartSound (LaserStartSound)
package {
import flash.media.*;
public dynamic class LaserStartSound extends Sound {
}
}//package
Section 68
//LaserStopSound (LaserStopSound)
package {
import flash.media.*;
public dynamic class LaserStopSound extends Sound {
}
}//package
Section 69
//LevelManager (LevelManager)
package {
public class LevelManager {
private var _currwave:int;
private var _overkill:Overkill;
private var _midbossmode:Boolean;
private var _gameoverwait:int;// = 0
private var _ship:Ship;
private var _explosions:ExplosionPool;
private var _scroller:Scroller;
private var _vol:Number;// = 0
private var _gameover:Boolean;// = false
private var _ui:UI;
private var _items:ItemPool;
private var _timer:int;// = 0
private var _bossmgr:BossManager;
private var _transitiontimer:int;// = 0
private var _sounds:SoundManager;
private var _pan:Number;// = 0
private var _enemies:EnemyPool;
private var _bossmode:Boolean;
private var _bullets:BulletPool;
private var _transition:Boolean;// = false
private var _totalwaves:int;
private var _midbossdone:Boolean;
private var _airstrike:Boolean;
private var _airstrikedone:Boolean;
private static const TOTAL_WAVES:Array = [6, 8, 12, 16];
public function LevelManager(_arg1:Overkill, _arg2:Ship, _arg3:EnemyPool, _arg4:ItemPool, _arg5:ExplosionPool, _arg6:BossManager, _arg7:BulletPool, _arg8:SoundManager, _arg9:Scroller, _arg10:UI){
_timer = 0;
_transition = false;
_transitiontimer = 0;
_gameoverwait = 0;
_gameover = false;
_vol = 0;
_pan = 0;
super();
this._overkill = _arg1;
this._ship = _arg2;
this._enemies = _arg3;
this._items = _arg4;
this._explosions = _arg5;
this._ui = _arg10;
this._bossmgr = _arg6;
this._bullets = _arg7;
this._sounds = _arg8;
this._scroller = _arg9;
init_level();
}
public function init_level():void{
_currwave = 0;
_totalwaves = TOTAL_WAVES[Globals.LEVEL];
_bossmode = false;
_midbossmode = false;
_midbossdone = false;
_airstrikedone = false;
_airstrike = false;
_timer = 0;
_vol = 0;
_transition = false;
_enemies.unpause_spawn();
}
private function update_sound():void{
if (_vol < Globals.MAX_VOL){
_vol = (_vol + 0.025);
};
_sounds.update(_vol, _pan);
}
public function update():void{
_timer++;
if (_enemies.nuketimer > 0){
if (_enemies.nuketimer == (_enemies.NUKE_TIME - 1)){
_pan = -1;
_explosions.pause();
_items.pause();
_ship.pause();
_bullets.pause();
_bossmgr.pause();
};
_pan = (_pan + 0.05);
if (_enemies.nuketimer == 1){
_pan = 0;
_vol = 0;
_explosions.unpause();
_items.unpause();
_ship.unpause();
_bullets.unpause();
_bossmgr.unpause();
};
};
if (_gameover){
if (_gameoverwait == 200){
_ship.pause();
_bullets.pause();
_ui.gameover();
_ui.blackout(true);
};
if (_gameoverwait > 0){
_gameoverwait--;
} else {
Globals.LEVEL = 0;
Globals.reset_score();
_overkill.reset_game();
_ship.reset();
_enemies.reset();
_bossmgr.reset();
_bullets.reset();
_explosions.reset();
_items.reset();
_scroller.reset();
_ui.reset();
init_level();
_explosions.unpause();
_items.unpause();
_ship.unpause();
_bullets.unpause();
_bossmgr.unpause();
_gameover = false;
_ui.blackout(false);
};
return;
};
if (_ship.gameover){
_gameover = true;
_gameoverwait = 200;
};
update_sound();
_currwave = _enemies.wave;
if (!_airstrikedone){
if (!_airstrike){
if (_currwave == int((_totalwaves / 2))){
_enemies.pause_spawn();
_airstrike = true;
_enemies.create_airstrike();
};
} else {
if (_enemies.airstrike_fin()){
_airstrikedone = true;
_enemies.unpause_spawn();
};
};
};
if (!_midbossdone){
if (!_midbossmode){
if (_currwave == (_totalwaves - 2)){
_enemies.pause_spawn();
_midbossmode = true;
_bossmgr.create(Globals.MID_BOSS);
_sounds.play_sound(OSounds.SPECIALOPS);
};
} else {
if (!_bossmgr.liveboss){
_enemies.unpause_spawn();
_midbossdone = true;
};
};
};
if (!_bossmode){
if (_currwave == _totalwaves){
_enemies.pause_spawn();
_bossmode = true;
_bossmgr.create(Globals.LEVEL);
};
} else {
if (!_bossmgr.liveboss){
trace(" go to new level ");
_gameover = true;
_gameoverwait = 200;
};
};
}
public function get currentwave():int{
return (_currwave);
}
public static function get totalwaves():int{
return (TOTAL_WAVES[Globals.LEVEL]);
}
}
}//package
Section 70
//LockLoadSound (LockLoadSound)
package {
import flash.media.*;
public dynamic class LockLoadSound extends Sound {
}
}//package
Section 71
//Main (Main)
package {
import com.playerthree.util.*;
import flash.display.*;
import de.polygonal.math.*;
public class Main {
private var _items:ItemPool;
private var _ui:UI;
private var _bossmgr:BossManager;
private var _background:Sprite;
private var _maus:MouseState;
private var _keys:KeyState;
public var buffer:Sprite;
private var _sprites:Sprite;
private var _scroller:Scroller;
private var _prng:PM_PRNG;
private var _ship:Ship;
private var _explosions:ExplosionPool;
private var _plums:PlumPool;
private var _sounds:SoundManager;
private var _beams:BeamPool;
private var _enemies:EnemyPool;
private var _overkill:Overkill;
private var _bmpscore:BitmapScore;
private var _bullets:BulletPool;
private var _levelmgr:LevelManager;
private var _uilayer:Sprite;
public function Main(_arg1:KeyState, _arg2:MouseState, _arg3:SoundManager, _arg4:Overkill){
this._keys = _arg1;
this._maus = _arg2;
this._sounds = _arg3;
this._overkill = _arg4;
_prng = new PM_PRNG();
_prng.seed = Globals.SEED;
buffer = new Sprite();
_background = new Sprite();
_sprites = new Sprite();
_plums = new PlumPool();
_scroller = new Scroller();
_explosions = new ExplosionPool(_arg3, _sprites);
_bullets = new BulletPool();
_beams = new BeamPool();
_ship = new Ship(_arg1, _beams, _bullets, _arg3, _explosions);
_items = new ItemPool(_ship, _explosions);
_enemies = new EnemyPool(_ship, _beams, _bullets, _scroller, _prng, _items, _arg3);
_bossmgr = new BossManager(_ship, _beams, _bullets, _enemies, _arg3, _explosions);
_bmpscore = new BitmapScore();
_ui = new UI(_ship, _enemies, _bmpscore, _levelmgr);
_levelmgr = new LevelManager(_arg4, _ship, _enemies, _items, _explosions, _bossmgr, _bullets, _arg3, _scroller, _ui);
_background.addChild(_scroller.mc);
_sprites.addChild(_bossmgr.mc);
_sprites.addChild(_enemies.mc);
_sprites.addChild(_items.mc);
_sprites.addChild(_bullets.mc);
_sprites.addChild(_beams.mc);
_sprites.addChild(_ship.mc);
_sprites.addChild(_explosions.mc);
_sprites.addChild(_plums.mc);
buffer.addChild(_background);
buffer.addChild(_sprites);
buffer.addChild(_ui.mc);
buffer.addChild(_bmpscore.bmp);
buffer.addChild(_bmpscore.livesbmp);
}
public function update():void{
_levelmgr.update();
_ship.update();
_items.update();
_enemies.update(_explosions, _plums);
_bossmgr.update(_explosions, _items);
_bullets.update(_enemies, _ship, _explosions, _items, _bossmgr, _plums);
_beams.update(_enemies, _bossmgr, _ship, _explosions, _items, _scroller);
_explosions.update();
_scroller.update();
_plums.update();
_ui.update();
}
public function render():void{
_ship.render();
_items.render();
_beams.render();
_enemies.render();
_bossmgr.render();
_bullets.render();
}
}
}//package
Section 72
//MediumMGPickupSound (MediumMGPickupSound)
package {
import flash.media.*;
public dynamic class MediumMGPickupSound extends Sound {
}
}//package
Section 73
//Menu (Menu)
package {
import flash.events.*;
import flash.display.*;
import gs.*;
import fl.motion.easing.*;
import flash.net.*;
public class Menu {
private const BUTTONS_NUM:int = 4;
private const soundstr:String = "SOUND ON / OFF";
private const fullversionstr:String = "PLAY THE FULL VERSION";
private const musicstr:String = "MUSIC ON / OFF";
private var _buttons:Array;
private var _button_mc:MovieClip;
private var _menuapache:MenuApache;
private var _overkill:Overkill;
public var mc:MovieClip;
private var _sounds:SoundManager;
private var _onscreen:Boolean;// = false
private var _transition:Boolean;// = false
private var _menu_mc:MovieClip;
private var _volume:Number;// = 0
public function Menu(_arg1:Overkill, _arg2:SoundManager){
_transition = false;
_onscreen = false;
_buttons = new Array();
_volume = 0;
super();
this._overkill = _arg1;
this._sounds = _arg2;
_menu_mc = new MenuSprite();
_menu_mc.title_mc.clickthru_mc.visible = false;
_menu_mc.title_mc.finglink_mc.addEventListener(MouseEvent.MOUSE_UP, go_fing);
_menu_mc.title_mc.p3link_mc.addEventListener(MouseEvent.MOUSE_UP, go_p3);
_menu_mc.title_mc.finglink_mc.buttonMode = true;
_menu_mc.title_mc.p3link_mc.buttonMode = true;
_button_mc = new MovieClip();
_button_mc.x = (Overkill.SW * 0.5);
_button_mc.y = (Overkill.SH * 0.5);
_button_mc.y = (_button_mc.y + 35);
_menuapache = new MenuApache();
mc = new MovieClip();
mc.addChild(_menu_mc);
mc.addChild(_button_mc);
mc.alpha = 0;
_menu_mc.background_mc.alpha = 0.5;
init_buttons();
_menu_mc.title_mc.gotoAndPlay(2);
mc.addChild(_menuapache.mc);
}
private function fin():void{
_transition = false;
}
private function go_fing(_arg1:MouseEvent):void{
var _local2:String;
var _local3:URLRequest;
_local2 = "http://www.fingertime.com/";
_local3 = new URLRequest(_local2);
navigateToURL(_local3, "_blank");
}
private function init_buttons():void{
var _local1:int;
var _local2:Array;
var _local3:Array;
var _local4:MenuButton;
_local1 = BUTTONS_NUM;
_local2 = ["play", musicstr, soundstr, fullversionstr];
_local3 = [play_game, music_toggle, sound_toggle, go_fullgame];
while (--_local1 > -1) {
_local4 = new MenuButton(_local1, _local2[_local1], _local3[_local1], _menuapache, _sounds);
_button_mc.addChild(_local4.mc);
_buttons.push(_local4);
};
}
public function hide():void{
if (_transition){
return;
};
_sounds.stop_menu_music();
_volume = 0;
_menu_mc.title_mc.gotoAndPlay("off");
_transition = true;
TweenLite.to(mc, 0.5, {ease:Exponential.easeIn, alpha:0, onComplete:fin});
_onscreen = false;
deactivate_buttons();
mc.removeEventListener(Event.ENTER_FRAME, update);
}
private function music_toggle():void{
SoundManager.mtoggle();
if (SoundManager.MUSIC_MUTE){
_buttons[2].toggle_display();
_sounds.stop_menu_music();
_volume = 0;
} else {
_buttons[2].toggle_display();
_sounds.play_menu_music();
};
}
private function sound_toggle():void{
SoundManager.stoggle();
if (SoundManager.MUTE){
_buttons[1].toggle_display();
} else {
_buttons[1].toggle_display();
};
}
private function play_game():void{
_overkill.play_game();
}
public function update(_arg1:Event):void{
_menuapache.update();
if (!SoundManager.MUSIC_MUTE){
if (_volume < 1){
_volume = (_volume + 0.05);
};
};
_sounds.update(_volume, 0);
}
private function go_p3(_arg1:MouseEvent):void{
var _local2:String;
var _local3:URLRequest;
_local2 = "http://www.playerthree.com/";
_local3 = new URLRequest(_local2);
navigateToURL(_local3, "_blank");
}
private function activate_buttons():void{
var _local1:int;
var _local2:MenuButton;
fin();
_local1 = BUTTONS_NUM;
while (--_local1 > -1) {
_local2 = _buttons[_local1];
_local2.show();
};
}
private function deactivate_buttons():void{
var _local1:int;
var _local2:MenuButton;
_local1 = BUTTONS_NUM;
while (--_local1 > -1) {
_local2 = _buttons[_local1];
_local2.hide();
};
}
private function go_fullgame():void{
var _local1:String;
var _local2:URLRequest;
_local1 = "http://www.fingertime.com/overkillapache2";
_local2 = new URLRequest(_local1);
navigateToURL(_local2, "_blank");
}
public function show():void{
if (_transition){
return;
};
_sounds.play_menu_music();
_volume = 0;
_menu_mc.title_mc.gotoAndPlay(2);
_transition = true;
TweenLite.to(mc, 0.5, {ease:Exponential.easeOut, alpha:1, onComplete:activate_buttons});
mc.addEventListener(Event.ENTER_FRAME, update);
_onscreen = true;
}
}
}//package
Section 74
//MenuApache (MenuApache)
package {
import com.playerthree.util.*;
import flash.display.*;
import flash.filters.*;
public class MenuApache {
public var remove:Boolean;// = false
public var oldpos:Vector;
private var _bounce:Boolean;// = false
public var accel:Vector;
private var _first:Boolean;// = true
public var pos:Vector;
public var mc:MovieClip;
public var target:Vector;
private var _dropshadow:DropShadowFilter;
public function MenuApache(){
_first = true;
pos = new Vector(0, 0);
oldpos = new Vector(0, 0);
accel = new Vector(0, 0);
target = new Vector(225, 212.5);
_bounce = false;
remove = false;
super();
mc = new MenuApacheSprite();
_dropshadow = new DropShadowFilter(16, 45, 0, 1, 8, 8);
mc.filters = [_dropshadow];
}
public function kill():void{
remove = true;
}
public function set_target(_arg1:Vector):void{
target.x = _arg1.x;
target.y = _arg1.y;
}
public function update():void{
if (_first){
pos.x = -100;
pos.y = 0;
_bounce = false;
mc.x = pos.x;
mc.y = pos.y;
_first = false;
};
if (_bounce){
accel.y = (accel.y + ((target.y - pos.y) / 5));
accel.y = (accel.y * 0.7);
} else {
accel.y = ((target.y - pos.y) / 5);
};
accel.x = Math.min(20, ((target.x - pos.x) / 5));
oldpos.x = pos.x;
oldpos.y = pos.y;
pos.x = (pos.x + accel.x);
pos.y = (pos.y + accel.y);
mc.rotation = (accel.x + accel.y);
mc.x = pos.x;
mc.y = pos.y;
if (pos.x > 760){
kill();
};
}
}
}//package
Section 75
//MenuApacheSprite (MenuApacheSprite)
package {
import flash.display.*;
public dynamic class MenuApacheSprite extends MovieClip {
}
}//package
Section 76
//MenuButton (MenuButton)
package {
import flash.events.*;
import com.playerthree.util.*;
import flash.display.*;
import gs.*;
import flash.geom.*;
import fl.motion.easing.*;
import flash.text.*;
public class MenuButton {
private const OFF_SCREEN:int = 1000;
private const SPACING:int = 36;
public var name:String;
private var _defcolour:uint;// = 0xFFCC00
public var id:int;
private var _callback:Function;
public var mc:MovieClip;
private var _sounds:SoundManager;
private var _colour:uint;// = 0xFFFFFF
private var _apache:MenuApache;
private var _on:Boolean;// = false
private var _btn_mc:MovieClip;
public function MenuButton(_arg1:int, _arg2:String, _arg3:Function, _arg4:MenuApache, _arg5:SoundManager){
var _local6:*;
var _local7:TextFormat;
var _local8:TextFormat;
_colour = 0xFFFFFF;
_defcolour = 0xFFCC00;
_on = false;
super();
this.id = _arg1;
this.name = _arg2.toUpperCase();
this._callback = _arg3;
mc = new MovieClip();
_btn_mc = new MenuButtonSprite();
_btn_mc.button_txt.text = this.name;
mc.y = OFF_SCREEN;
mc.addChild(_btn_mc);
mc.mouseChildren = false;
if ((((_arg1 > 0)) && ((_arg1 < 3)))){
_local6 = new TextFormat();
_local6.size = 24;
_local6.color = _defcolour;
_btn_mc.button_txt.setTextFormat(_local6);
_local7 = new TextFormat();
_local7.size = 24;
_local7.color = _colour;
_btn_mc.button_txt.setTextFormat(_local7, 5, 8);
} else {
if (_arg1 == 0){
_local8 = new TextFormat();
_local8.color = 0xFFFFFF;
_btn_mc.button_txt.defaultTextFormat = _local8;
};
};
_apache = _arg4;
this._sounds = _arg5;
}
private function activate():void{
mc.addEventListener(MouseEvent.MOUSE_UP, action);
mc.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);
mc.addEventListener(MouseEvent.MOUSE_OUT, mouse_out);
mc.buttonMode = true;
}
public function show():void{
TweenLite.to(mc, 0.5, {ease:Exponential.easeOut, delay:(id * 0.01), y:(id * SPACING), onComplete:activate});
}
public function hide():void{
deactivate();
TweenLite.to(mc, 0.5, {ease:Exponential.easeIn, delay:(id * 0.01), y:OFF_SCREEN});
}
public function toggle_display():void{
var _local1:TextFormat;
var _local2:TextFormat;
var _local3:int;
var _local4:int;
_local1 = new TextFormat();
_local1.size = 24;
_local1.color = _defcolour;
_local2 = new TextFormat();
_local2.size = 24;
_local2.color = _colour;
_btn_mc.button_txt.setTextFormat(_local1);
if (_on){
_local3 = 5;
_local4 = 8;
_on = false;
} else {
_local3 = 10;
_local4 = _btn_mc.button_txt.length;
_on = true;
};
_btn_mc.button_txt.setTextFormat(_local2, _local3, _local4);
}
public function set_name(_arg1:String):void{
name = _arg1.toUpperCase();
_btn_mc.button_txt.text = name;
}
private function mouse_over(_arg1:MouseEvent):void{
var _local2:Point;
var _local3:Point;
_local2 = new Point((mc.x - 100), mc.y);
_local3 = mc.localToGlobal(_local2);
if (id == 3){
_apache.set_target(new Vector(175, ((id * SPACING) + 225)));
} else {
_apache.set_target(new Vector(225, ((id * SPACING) + 225)));
};
_sounds.play_sound(OSounds.LOCK);
}
private function deactivate():void{
mc.removeEventListener(MouseEvent.MOUSE_UP, action);
mc.removeEventListener(MouseEvent.MOUSE_OVER, mouse_over);
mc.removeEventListener(MouseEvent.MOUSE_OUT, mouse_out);
mc.buttonMode = false;
}
private function mouse_out(_arg1:MouseEvent):void{
}
private function action(_arg1:MouseEvent):void{
if (_callback != null){
_callback();
};
}
}
}//package
Section 77
//MenuButtonSprite (MenuButtonSprite)
package {
import flash.display.*;
import flash.text.*;
public dynamic class MenuButtonSprite extends MovieClip {
public var button_txt:TextField;
}
}//package
Section 78
//MenuMusicIntroSound (MenuMusicIntroSound)
package {
import flash.media.*;
public dynamic class MenuMusicIntroSound extends Sound {
}
}//package
Section 79
//MenuMusicSound (MenuMusicSound)
package {
import flash.media.*;
public dynamic class MenuMusicSound extends Sound {
}
}//package
Section 80
//MenuSprite (MenuSprite)
package {
import flash.display.*;
import com.playerthree.overkill.*;
public dynamic class MenuSprite extends MovieClip {
public var background_mc:MovieClip;
public var title_mc:GameTitle;
}
}//package
Section 81
//MetalBack (MetalBack)
package {
import flash.display.*;
public dynamic class MetalBack extends MovieClip {
public function MetalBack(){
addFrameScript(27, frame28);
}
function frame28(){
stop();
}
}
}//package
Section 82
//MG1Sound (MG1Sound)
package {
import flash.media.*;
public dynamic class MG1Sound extends Sound {
}
}//package
Section 83
//MG2Sound (MG2Sound)
package {
import flash.media.*;
public dynamic class MG2Sound extends Sound {
}
}//package
Section 84
//MG3Sound (MG3Sound)
package {
import flash.media.*;
public dynamic class MG3Sound extends Sound {
}
}//package
Section 85
//MissilePickupSound (MissilePickupSound)
package {
import flash.media.*;
public dynamic class MissilePickupSound extends Sound {
}
}//package
Section 86
//MissileSound (MissileSound)
package {
import flash.media.*;
public dynamic class MissileSound extends Sound {
}
}//package
Section 87
//MissionStatusSprite (MissionStatusSprite)
package {
import flash.display.*;
public dynamic class MissionStatusSprite extends MovieClip {
public var mission4_mc:MovieClip;
public var mission2_mc:MovieClip;
public var mission3_mc:MovieClip;
public var mission1_mc:MovieClip;
}
}//package
Section 88
//NeededSound (NeededSound)
package {
import flash.media.*;
public dynamic class NeededSound extends Sound {
}
}//package
Section 89
//NuclearPickupSound (NuclearPickupSound)
package {
import flash.media.*;
public dynamic class NuclearPickupSound extends Sound {
}
}//package
Section 90
//NukeSound (NukeSound)
package {
import flash.media.*;
public dynamic class NukeSound extends Sound {
}
}//package
Section 91
//NukeSprite (NukeSprite)
package {
import flash.display.*;
public dynamic class NukeSprite extends MovieClip {
}
}//package
Section 92
//NumbersBitmap (NumbersBitmap)
package {
import flash.display.*;
public dynamic class NumbersBitmap extends BitmapData {
public function NumbersBitmap(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 93
//OSounds (OSounds)
package {
public class OSounds {
public static var EXP_LONG:int = 11;
public static var F_MISSILE:int = 3;
public static var MISSILES:int = 13;
public static var EXP_SHORT:int = 10;
public static var MED_MG:int = 17;
public static var TRUBS:int = 24;
public static var LASER:int = 15;
public static var OVERKILL:int = 19;
public static var NEEDED:int = 25;
public static var CHOPPER:int = 4;
public static var LOCK:int = 27;
public static var HEAVY_MG:int = 18;
public static var RIC1:int = 5;
public static var RIC2:int = 6;
public static var RIC3:int = 7;
public static var RIC4:int = 8;
public static var NUCLEAR:int = 16;
public static var MG1:int = 0;
public static var MG2:int = 1;
public static var MG3:int = 2;
public static var HEALTH:int = 22;
public static var SPECIALOPS:int = 26;
public static var NUKE:int = 20;
public static var EXP_DEAD:int = 9;
public static var TANK_FIRE:int = 21;
public static var BOMBS:int = 14;
public static var HA:int = 23;
public static var ROCKETS:int = 12;
}
}//package
Section 94
//Overkill (Overkill)
package {
import flash.events.*;
import com.playerthree.util.*;
import flash.display.*;
import com.fingertime.core.*;
public class Overkill extends MovieClip {
private var _maus:MouseState;
private var _menu:Menu;
private var _sounds:SoundManager;
private var _main:Main;
private var _screen:Sprite;
private var _keys:KeyState;
private var _sfpreloader:SFPreloader;
public static var SW:int = 720;
public static var SH:int = 400;
public function Overkill(){
addFrameScript(0, frame1);
stop();
addEventListener(Event.ADDED_TO_STAGE, added);
}
private function added(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, added);
_keys = new KeyState();
_maus = new MouseState();
_sounds = new SoundManager();
_screen = new Sprite();
_screen.visible = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, _keys.onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, _keys.onKeyUp);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
addFrameScript(9, init_game);
init_preloader();
}
private function init_preloader():void{
_sfpreloader = new SFPreloader();
_sfpreloader.addEventListener(Event.ADDED_TO_STAGE, init_preloader_events);
addChild(_sfpreloader);
}
public function play_game():void{
_screen.visible = true;
_menu.hide();
_sounds.play_game_music();
addEventListener(Event.ENTER_FRAME, update);
}
private function load_progress(_arg1:ProgressEvent):void{
_sfpreloader.update(_arg1.bytesLoaded, _arg1.bytesTotal);
}
private function init_preloader_events(_arg1:Event):void{
_sfpreloader.init();
_sfpreloader.removeEventListener(Event.ADDED_TO_STAGE, init_preloader_events);
loaderInfo.addEventListener(ProgressEvent.PROGRESS, load_progress);
loaderInfo.addEventListener(Event.COMPLETE, load_complete);
}
function frame1(){
}
private function load_complete(_arg1:Event):void{
removeChild(_sfpreloader);
play();
}
private function init_game():void{
trace(" hi demo init ");
stop();
_sounds.init();
_main = new Main(_keys, _maus, _sounds, this);
_screen.addChild(_main.buffer);
addChild(_screen);
_menu = new Menu(this, _sounds);
addChild(_menu.mc);
_menu.show();
}
private function update(_arg1:Event):void{
_main.update();
_main.render();
}
public function reset_game():void{
_screen.visible = false;
_sounds.stop_game_music();
_menu.show();
removeEventListener(Event.ENTER_FRAME, update);
}
}
}//package
Section 95
//OverkillPickupSound (OverkillPickupSound)
package {
import flash.media.*;
public dynamic class OverkillPickupSound extends Sound {
}
}//package
Section 96
//Plum (Plum)
package {
import com.playerthree.util.*;
import flash.display.*;
public class Plum {
public var pos:Vector;
public var mc:MovieClip;
public function Plum(_arg1:Vector, _arg2:int){
this.pos = new Vector(_arg1.x, _arg1.y);
mc = new PlumSprite();
mc.x = _arg1.x;
mc.y = _arg1.y;
display_value(_arg2);
}
private function display_value(_arg1:int):void{
var _local2:String;
var _local3:Array;
var _local4:int;
_local2 = _arg1.toString();
_local3 = _local2.split("");
_local4 = (int(_local3[0]) + 1);
mc.plum_mc.plum.num0.gotoAndStop(_local4);
_local4 = (int(_local3[1]) + 1);
mc.plum_mc.plum.num1.gotoAndStop(_local4);
_local4 = (int(_local3[2]) + 1);
mc.plum_mc.plum.num2.gotoAndStop(_local4);
if (_local2.length < 3){
mc.plum_mc.plum.num2.visible = false;
};
}
public function kill():void{
mc.parent.removeChild(mc);
delete ??getglobalscope
[this];
}
}
}//package
Section 97
//PlumPool (PlumPool)
package {
import com.playerthree.util.*;
import flash.display.*;
public class PlumPool {
private var _plums:Array;
public var mc:Sprite;
public function PlumPool(){
_plums = new Array();
super();
mc = new Sprite();
}
public function update():void{
var _local1:int;
var _local2:Plum;
_local1 = 0;
while (_local1 < _plums.length) {
_local2 = _plums[_local1];
if (_local2.mc.currentFrame > 25){
_plums.splice(_local1, 1);
_local2.kill();
};
_local1++;
};
}
public function create(_arg1:Vector, _arg2:int):void{
var _local3:Plum;
_local3 = new Plum(_arg1, _arg2);
mc.addChild(_local3.mc);
_plums.push(_local3);
}
}
}//package
Section 98
//PlumSprite (PlumSprite)
package {
import flash.display.*;
public dynamic class PlumSprite extends MovieClip {
public var plum_mc:MovieClip;
}
}//package
Section 99
//ProgressBar (ProgressBar)
package {
import flash.display.*;
import flash.geom.*;
public class ProgressBar {
public var bmp:Bitmap;
private var _data:BitmapData;
public function ProgressBar(){
_data = new BitmapData(0x0100, 6, false, 0);
bmp = new Bitmap(_data);
bmp.x = 600;
bmp.y = 14;
}
public function update(_arg1:int, _arg2:int):void{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:uint;
_data.fillRect(new Rectangle(0, 0, 0x0100, 6), 0);
_local3 = 0;
while (_local3 < _arg2) {
_local4 = (1 + (_local3 * 6));
if (_local3 > _arg1){
_local6 = 0xFFFFFF;
} else {
if (_local3 == _arg1){
_local6 = 0xFF0000;
} else {
_local6 = 0xFFFF00;
};
};
_data.fillRect(new Rectangle(_local4, 1, 4, 4), _local6);
_local3++;
};
}
}
}//package
Section 100
//Ricochet1Sound (Ricochet1Sound)
package {
import flash.media.*;
public dynamic class Ricochet1Sound extends Sound {
}
}//package
Section 101
//Ricochet2Sound (Ricochet2Sound)
package {
import flash.media.*;
public dynamic class Ricochet2Sound extends Sound {
}
}//package
Section 102
//Ricochet3Sound (Ricochet3Sound)
package {
import flash.media.*;
public dynamic class Ricochet3Sound extends Sound {
}
}//package
Section 103
//Ricochet4Sound (Ricochet4Sound)
package {
import flash.media.*;
public dynamic class Ricochet4Sound extends Sound {
}
}//package
Section 104
//RocketPickupSound (RocketPickupSound)
package {
import flash.media.*;
public dynamic class RocketPickupSound extends Sound {
}
}//package
Section 105
//ScoreOverlaySprite (ScoreOverlaySprite)
package {
import flash.display.*;
import flash.text.*;
public dynamic class ScoreOverlaySprite extends MovieClip {
public var deb:TextField;
public var nuke_mc:MovieClip;
public var badge_mc:MovieClip;
public var currentwave_txt:TextField;
}
}//package
Section 106
//Scroller (Scroller)
package {
import com.playerthree.util.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
public class Scroller {
private var _skies:Array;
private var _snowroad:BitmapData;
private var _fxcanvas:Sprite;
private var _mids:Array;
private var _bgs:Array;
private var _currentfar:BitmapData;
private var _fars:Array;
public var mc:Sprite;
private var _snowmid:BitmapData;
private var _currentsky:BitmapData;
private var _tx:Number;
private var _fadeshape:Shape;
private var _current:BitmapData;
private var _fadetimer:int;// = 0
private var _paused:Boolean;// = false
private var _currentmid:BitmapData;
private var _mx:Number;
private var _roads:Array;
private var _fxblur:BlurFilter;
private var _currentroad:BitmapData;
private var _buffer:BitmapData;
private var _snow:BitmapData;
private var _skybmp:Bitmap;
private var _rx:Number;
private var _fx:Number;
private var _snowfar:BitmapData;
private var _sky:BitmapData;
private var _snowsky:BitmapData;
public static var FY:Array = [320];
public static var TY:Array = [340];
public static var RY:Array = [320];
public static var MY:Array = [300];
public function Scroller(){
_snowsky = new SnowSkyBmp(0, 0);
_snow = new SnowBmp(0, 0);
_snowmid = new SnowMidBmp(0, 0);
_snowfar = new SnowFarBmp(0, 0);
_snowroad = new SnowRoadBmp(0, 0);
_mids = [_snowmid];
_fars = [_snowfar];
_roads = [_snowroad];
_bgs = [_snow];
_skies = [_snowsky];
_fadetimer = 0;
_paused = false;
_sky = new BitmapData(Overkill.SW, Overkill.SH, false, 0);
_buffer = new BitmapData(Overkill.SW, Overkill.SH, false, 0);
super();
mc = new Sprite();
init();
mc.addChild(_skybmp);
}
public function init():void{
_fxblur = new BlurFilter(8, 8, 1);
_fxcanvas = new Sprite();
_fxcanvas.filters = [_fxblur];
_fadeshape = new Shape();
_fxcanvas.addChild(_fadeshape);
init_level();
}
public function init_level():void{
var _local1:int;
_current = _bgs[Globals.LEVEL];
_currentfar = _fars[Globals.LEVEL];
_currentmid = _mids[Globals.LEVEL];
_currentroad = _roads[Globals.LEVEL];
_currentsky = _skies[Globals.LEVEL];
_fx = (_mx = (_tx = (_rx = 0)));
_local1 = Math.ceil((Overkill.SW / 5));
while (--_local1 > -1) {
_sky.copyPixels(_currentsky, new Rectangle(0, 0, 5, Overkill.SH), new Point((_local1 * 5), 0));
};
_buffer.copyPixels(_currentfar, new Rectangle(0, 0, _currentfar.width, _currentfar.height), new Point(0, FY[Globals.LEVEL]));
_buffer.copyPixels(_current, new Rectangle(0, 0, _current.width, _current.height), new Point(0, TY[Globals.LEVEL]));
_buffer.copyPixels(_currentmid, new Rectangle(0, 0, _currentmid.width, _currentmid.height), new Point(0, MY[Globals.LEVEL]));
_buffer.copyPixels(_currentroad, new Rectangle(0, 0, _currentroad.width, _currentroad.height), new Point(0, RY[Globals.LEVEL]));
_skybmp = new Bitmap(_buffer);
}
public function burn_background(_arg1:Vector, _arg2:Vector):void{
_fadeshape.graphics.clear();
_fadeshape.graphics.lineStyle(5, 0xFFFFFF, 1);
_fadeshape.graphics.moveTo(_arg1.x, _arg1.y);
_fadeshape.graphics.lineTo(_arg2.x, _arg2.y);
_fadetimer = 100;
}
public function update():void{
var _local1:Rectangle;
var _local2:Point;
var _local3:int;
var _local4:int;
if (_paused){
return;
};
_buffer.copyPixels(_sky, new Rectangle(0, 0, Overkill.SW, Overkill.SH), new Point(0, 0));
if (_fadetimer > 0){
_fxcanvas.alpha = (_fadetimer * 0.01);
_buffer.draw(_fxcanvas, _fxcanvas.transform.matrix, _fxcanvas.transform.colorTransform, BlendMode.OVERLAY);
_fadetimer = (_fadetimer - 5);
if (_fadetimer == 1){
};
};
_local1 = new Rectangle(0, 0, _currentfar.width, _currentfar.height);
_local2 = new Point(0, 0);
_fx = (((_fx + 0.25))<_currentfar.width) ? (_fx + 0.25) : 0;
_local2.x = int(-(_fx));
_local2.y = FY[Globals.LEVEL];
_buffer.copyPixels(_currentfar, _local1, _local2);
_local2.x = int((-(_fx) + _currentfar.width));
_buffer.copyPixels(_currentfar, _local1, _local2);
_local1 = new Rectangle(0, 0, _currentmid.width, _currentmid.height);
_mx = (((_mx + 0.5))<_currentmid.width) ? (_mx + 0.5) : 0;
_local2.x = int(-(_mx));
_local2.y = MY[Globals.LEVEL];
_buffer.copyPixels(_currentmid, _local1, _local2);
_local2.x = int(((-(_mx) + _currentmid.width) - 2));
_buffer.copyPixels(_currentmid, _local1, _local2);
_local3 = ((Globals.LEVEL)==0) ? 1 : 2;
_local1 = new Rectangle(0, 0, _current.width, _current.height);
_tx = (((_tx + _local3))<_current.width) ? (_tx + _local3) : 0;
_local2.x = int(-(_tx));
_local2.y = TY[Globals.LEVEL];
_buffer.copyPixels(_current, _local1, _local2);
_local2.x = (int((-(_tx) + _current.width)) - 2);
_buffer.copyPixels(_current, _local1, _local2);
_local1 = new Rectangle(0, 0, _currentroad.width, _currentroad.height);
_local4 = ((Globals.LEVEL)==0) ? 7 : 16;
_rx = (((_rx + _local4))<_currentroad.width) ? (_rx + _local4) : 0;
_local2.x = int(-(_rx));
_local2.y = RY[Globals.LEVEL];
_buffer.copyPixels(_currentroad, _local1, _local2);
_local2.x = int((-(_rx) + _currentroad.width));
_buffer.copyPixels(_currentroad, _local1, _local2);
}
public function reset():void{
init_level();
}
public function pause():void{
if (_paused){
return;
};
_paused = true;
}
public function unpause():void{
if (!_paused){
return;
};
_paused = false;
}
}
}//package
Section 107
//Ship (Ship)
package {
import com.playerthree.util.*;
import flash.display.*;
import flash.geom.*;
public class Ship {
private const initial_ammo:Array;
public var ammo_pickup:Array;
private var _lives:int;// = 3
private var _rot:Number;
private var _gameover:Boolean;// = false
private var _lowhealth:Boolean;// = false
public var ax:Number;// = 0
public var ay:Number;// = 0
public var type:int;// = 0
private var _aabb:Boolean;// = false
public var gun:MovieClip;
private var _brate:int;// = 0
private var _timer:int;// = 0
private var _initmove:Boolean;// = false
private var _dead:Boolean;// = false
private var _paused:Boolean;// = false
private var _defaultcolour:ColorTransform;
private var _rad:int;// = 32
private var _sounds:SoundManager;
private var _initx:Number;
private var _inity:Number;
private var _arcing:Boolean;// = false
private var _bullets:BulletPool;
private var _mgsound:int;
private var _health:int;// = 100
public var tx:Number;// = 0
public var ty:Number;// = 0
private var _movetimer:int;// = 0
public var mc:MovieClip;
private var _explosions:ExplosionPool;
private var _beams:BeamPool;
private var _xheld:Boolean;// = false
private var _spaceheld:Boolean;// = false
private var _ftimer:int;// = 0
private var _rate:int;// = 0
private var _hasnuke:Boolean;// = false
private var _outx:Number;
private var _outy:Number;// = 50
private var _live:Boolean;// = false
private var _mrate:int;// = 0
private var _movedelay:int;// = 0
public var ammo:Array;
private var _keys:KeyState;
private var _outmove:Boolean;// = false
private var _movestate:int;// = 0
private var _srate:int;// = 0
private var _savemgsound:int;
public var ox:Number;// = 0
private var _isbeaming:Boolean;// = false
public var oy:Number;// = 0
public var gridx:int;
private var _mgtype:int;
private var _flashnum:int;// = 0
public var gridy:int;
private static const MAX_SPEED:int = 10;
public function Ship(_arg1:KeyState, _arg2:BeamPool, _arg3:BulletPool, _arg4:SoundManager, _arg5:ExplosionPool){
ax = 0;
ay = 0;
ox = 0;
oy = 0;
tx = 0;
ty = 0;
type = 0;
_spaceheld = false;
_xheld = false;
_rate = 0;
_mrate = 0;
_brate = 0;
_srate = 0;
_ftimer = 0;
_dead = false;
_health = 100;
_rad = 32;
_timer = 0;
_gameover = false;
_paused = false;
_flashnum = 0;
_lives = 3;
_isbeaming = false;
_aabb = false;
_hasnuke = false;
_initmove = false;
_initx = (Overkill.SW * 0.25);
_inity = (Overkill.SH * 0.5);
_live = false;
_outmove = false;
_outx = (Overkill.SW + 100);
_outy = 50;
_movetimer = 0;
_movestate = 0;
_movedelay = 0;
_lowhealth = false;
_arcing = false;
_mgtype = BulletType.MG;
_mgsound = OSounds.MG1;
_savemgsound = OSounds.MG1;
initial_ammo = [50, 0, 0, 0, 0];
ammo = initial_ammo.slice();
ammo_pickup = [OSounds.ROCKETS, OSounds.MISSILES, OSounds.BOMBS, OSounds.LASER, OSounds.LASER];
super();
this._keys = _arg1;
this._beams = _arg2;
this._bullets = _arg3;
this._sounds = _arg4;
this._explosions = _arg5;
mc = new ShipSprite();
_defaultcolour = mc.transform.colorTransform;
gun = mc.machine_mc;
gun.gotoAndStop(1);
_rot = mc.rotation;
reset_pos();
}
private function reset_colour():void{
var _local1:Transform;
var _local2:ColorTransform;
if (_flashnum > 1){
_flashnum--;
return;
};
_flashnum--;
_local1 = new Transform(mc);
_local2 = _defaultcolour;
_local1.colorTransform = _local2;
}
public function unpause():void{
_paused = false;
}
public function pause():void{
_paused = true;
stop_fire();
stop_secondary_fire();
_sounds.stop_sound(_savemgsound);
}
public function render():void{
var _local1:int;
mc.x = tx;
mc.y = ty;
_local1 = 2;
if (ay < -1){
_local1 = 1;
};
if (ay > 1){
_local1 = 3;
};
mc.rotation = (ax * 1.5);
gun.rotation = -(mc.rotation);
mc.gotoAndStop(_local1);
_rot = mc.rotation;
mc.blade.visible = !(mc.blade.visible);
}
public function get lives():int{
return (_lives);
}
public function get rad():int{
return (_rad);
}
private function secondary_fire():void{
var _local1:Point;
_local1 = mc.localToGlobal(new Point(gun.x, gun.y));
if (ammo[3] > 0){
if (!_arcing){
_sounds.play_arc_sound();
_bullets.enable_arc();
_arcing = true;
};
var _local2 = ammo;
var _local3 = 3;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
} else {
if (_arcing){
_sounds.stop_arc_sound();
_bullets.disable_arc();
_arcing = false;
};
};
if (ammo[4] > 0){
if (!_isbeaming){
_sounds.play_laser_sound();
_beams.create_beam(this);
_isbeaming = true;
};
_local2 = ammo;
_local3 = 4;
_local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
} else {
if (_isbeaming){
_sounds.stop_laser_sound();
_beams.kill(this);
_isbeaming = false;
};
};
}
public function fire():void{
var _local1:Point;
_local1 = mc.localToGlobal(new Point(gun.x, gun.y));
if (_rate == 0){
_bullets.create_bullet(new Vector(_local1.x, _local1.y), _mgtype);
_rate = Globals.MACHINE_GUN_RATE;
};
gun.gotoAndStop(((_ftimer % 3) + 1));
_ftimer++;
if (ammo[0] > 0){
if (_srate == 0){
_bullets.create_bullet(new Vector(_local1.x, _local1.y), 1);
_bullets.create_bullet(new Vector(_local1.x, _local1.y), 1);
var _local2 = ammo;
var _local3:int;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
_srate = Globals.SEEKER_RATE;
};
};
if (ammo[1] > 0){
if (_mrate == 0){
_bullets.create_bullet(new Vector(_local1.x, _local1.y), 2);
_local2 = ammo;
_local3 = 1;
_local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
_sounds.play_sound(OSounds.F_MISSILE);
_mrate = Globals.MISSILE_RATE;
};
};
if (ammo[2] > 0){
if (_brate == 0){
_bullets.create_bullet(new Vector((_local1.x - 10), (_local1.y + 6)), 3);
_local2 = ammo;
_local3 = 2;
_local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
_brate = Globals.BOMB_RATE;
};
};
}
public function get movingscreen():Boolean{
if (_initmove){
return (true);
};
return (false);
}
public function reset():void{
_lives = 3;
_flashnum = 0;
reset_pos();
health = 100;
dead = false;
_gameover = false;
_movestate = 0;
_rate = (_srate = (_mrate = (_brate = (_ftimer = 0))));
_mgtype = BulletType.MG;
_mgsound = OSounds.MG1;
_savemgsound = OSounds.MG1;
}
public function stop_fire():void{
gun.gotoAndStop(1);
}
public function get pos():Vector{
return (new Vector(tx, ty));
}
public function kill():void{
dead = true;
}
public function get aabb():Boolean{
return (_aabb);
}
private function nuke():void{
if (hasnuke){
_bullets.nuke();
_hasnuke = false;
};
}
public function get dead():Boolean{
return (_dead);
}
public function get health():int{
return (_health);
}
public function get initdelay():int{
return (_movedelay);
}
public function pickup(_arg1:int):void{
var _local2:int;
if (_arg1 < 6){
if (_arg1 > 0){
ammo[(_arg1 - 1)] = (ammo[(_arg1 - 1)] + 50);
_sounds.play_sound(ammo_pickup[(_arg1 - 1)]);
} else {
if (_mgtype != BulletType.MG_HARD){
_mgtype = BulletType.MG_MEDIUM;
_mgsound = OSounds.MG2;
if (_spaceheld){
_sounds.stop_sound(_savemgsound);
_sounds.play_sound(_mgsound, true);
_savemgsound = _mgsound;
};
_sounds.play_sound(OSounds.MED_MG);
};
};
} else {
switch (_arg1){
case 6:
if (health < 25){
_sounds.play_sound(OSounds.NEEDED);
} else {
_sounds.play_sound(OSounds.HEALTH);
};
health = (health + 35);
if (health > 100){
health = 100;
};
break;
case 7:
_mgtype = BulletType.MG_HARD;
_mgsound = OSounds.MG3;
_sounds.play_sound(OSounds.HEAVY_MG);
if (_spaceheld){
_sounds.stop_sound(_savemgsound);
_sounds.play_sound(_mgsound, true);
_savemgsound = _mgsound;
};
break;
case 8:
ammo[1] = (ammo[1] + 50);
_sounds.play_sound(OSounds.MISSILES);
break;
case 9:
ammo[1] = (ammo[1] + 50);
_sounds.play_sound(OSounds.MISSILES);
break;
case 10:
_local2 = ammo.length;
while (--_local2 > -1) {
ammo[_local2] = (ammo[_local2] + 100);
};
_xheld = false;
_sounds.play_sound(OSounds.OVERKILL);
break;
case 11:
enable_nuke();
_sounds.play_sound(OSounds.NUCLEAR);
break;
case 12:
_sounds.play_sound(OSounds.HA);
_lives++;
break;
};
};
}
public function damage(_arg1:int):void{
if (!_live){
return;
};
health = (health - _arg1);
}
private function reset_pos():void{
ox = (tx = -50);
oy = (ty = (Overkill.SH * 0.5));
ax = (ay = 0);
gridx = 0;
gridy = 0;
gun.gotoAndStop(1);
_live = false;
_initmove = true;
_movedelay = Globals.INIT_DELAY;
}
private function move_offscreen():void{
_movetimer++;
switch (_movestate){
case 0:
ax = 5;
ay = -2;
_movestate = 1;
break;
case 1:
ax = (ax * 1.05);
ay = (ay * 0.95);
if (pos.x > _outx){
reset_pos();
_movestate = 0;
_movetimer = 0;
_outmove = false;
};
break;
};
}
public function enable_nuke():void{
_hasnuke = true;
}
public function set health(_arg1:int):void{
_health = _arg1;
}
private function move_onscreen():void{
if (_movedelay > 0){
_movedelay--;
return;
};
_movetimer++;
switch (_movestate){
case 0:
_sounds.play_chopper_sound();
ax = 20;
ay = 0;
_movestate = 1;
break;
case 1:
ax = (ax * 0.9);
if (!(_movetimer % 3)){
flash(1.6, 1.6, 1.6, 0.6);
} else {
flash(1, 1, 1, 1);
};
if (ax < 1){
_live = true;
_initmove = false;
_movestate = 0;
_movetimer = 0;
};
break;
};
}
public function get beamrot():Number{
return (_rot);
}
public function get gameover():Boolean{
return (_gameover);
}
public function set dead(_arg1:Boolean):void{
_dead = _arg1;
}
public function update():void{
var _local1:Vector;
if (_paused){
return;
};
if (dead){
_lives--;
if (_lives > -1){
reset_pos();
health = 100;
dead = false;
_hasnuke = false;
_sounds.stop_sound(_savemgsound);
ammo = initial_ammo.slice();
_mgtype = BulletType.MG;
_mgsound = OSounds.MG1;
_savemgsound = _mgsound;
_lowhealth = false;
_sounds.stop_chopper_sound();
if (_spaceheld){
_sounds.stop_sound(_savemgsound);
_spaceheld = false;
};
stop_fire();
stop_secondary_fire();
} else {
trace(" game over ");
if (!_gameover){
reset_pos();
_lowhealth = false;
_sounds.stop_chopper_sound();
_sounds.stop_all();
if (_spaceheld){
_sounds.stop_sound(_savemgsound);
_spaceheld = false;
};
trace(" stop chopper sound? ");
stop_fire();
stop_secondary_fire();
_gameover = true;
};
return;
};
};
if (_flashnum > 0){
reset_colour();
};
if (((!(_initmove)) && (!(_outmove)))){
input();
} else {
if (_initmove){
move_onscreen();
} else {
move_offscreen();
};
};
if (_rate > 0){
_rate--;
};
if (_mrate > 0){
_mrate--;
};
if (_brate > 0){
_brate--;
};
if (_srate > 0){
_srate--;
};
ox = tx;
oy = ty;
tx = (tx + ax);
ty = (ty + ay);
if (_live){
if (tx < 50){
tx = 50;
};
if (ty < 30){
ty = 30;
};
if (ty > 340){
ty = 340;
};
if (tx > 690){
tx = 690;
};
};
_timer++;
gridx = Math.floor((tx / Globals.GRID_SIZE));
gridy = Math.floor((ty / Globals.GRID_SIZE));
_local1 = new Vector(0, 0);
if (health < 25){
if (!_lowhealth){
_sounds.play_sound(OSounds.TRUBS);
_lowhealth = true;
};
if (!(_timer % 2)){
_local1.x = (pos.x + (Math.random() * 3));
_local1.y = (pos.y + (Math.random() * 3));
_explosions.create_smoke(1, _local1);
_local1.x = (pos.x - (Math.random() * 3));
_local1.y = (pos.y - (Math.random() * 3));
_explosions.create_smoke(0, _local1);
};
} else {
if (health < 50){
if (!(_timer % 6)){
_local1.x = (pos.x + (Math.random() * 3));
_local1.y = (pos.y + (Math.random() * 3));
_explosions.create_smoke(1, _local1);
_local1.x = (pos.x - (Math.random() * 3));
_local1.y = (pos.y - (Math.random() * 3));
_explosions.create_smoke(0, _local1);
};
};
};
}
private function input():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local3 = Globals.DECAY;
_local2 = 0;
_local1 = _local2;
if (_keys.left){
_local1 = (-1 * 2);
};
if (_keys.right){
_local1 = (1 * 2);
};
if (_local1 != 0){
ax = (ax + _local1);
ax = Math.max(-(MAX_SPEED), Math.min(MAX_SPEED, ax));
} else {
ax = (ax * _local3);
};
if (_keys.up){
_local2 = -1;
};
if (_keys.down){
_local2 = 1;
};
if (_local2 != 0){
ay = (ay + (_local2 * 2));
ay = Math.max(-(MAX_SPEED), Math.min(MAX_SPEED, ay));
} else {
ay = (ay * _local3);
};
if (_keys.c){
nuke();
};
if (_keys.x){
secondary_fire();
if (!_xheld){
_xheld = true;
};
} else {
if (_xheld){
_xheld = false;
stop_secondary_fire();
};
};
if (_keys.z){
fire();
if (!_spaceheld){
_sounds.play_sound(_mgsound, true);
_savemgsound = _mgsound;
_spaceheld = true;
};
} else {
if (_spaceheld){
_spaceheld = false;
stop_fire();
_sounds.stop_sound(_savemgsound);
};
};
}
public function get rot():Number{
return (_rot);
}
public function get oldpos():Vector{
return (new Vector(ox, oy));
}
public function moveout():void{
_outmove = true;
_live = false;
if (_spaceheld){
_sounds.stop_sound(_savemgsound);
_spaceheld = false;
};
stop_fire();
stop_secondary_fire();
}
public function flash(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Transform;
var _local6:ColorTransform;
_local5 = new Transform(mc);
_local6 = _local5.colorTransform;
_local6.redMultiplier = _arg1;
_local6.greenMultiplier = _arg2;
_local6.blueMultiplier = _arg3;
_local6.alphaMultiplier = _arg4;
_local5.colorTransform = _local6;
_flashnum = 10;
}
public function get hasnuke():Boolean{
return (_hasnuke);
}
private function stop_secondary_fire():void{
if (_isbeaming){
_beams.kill(this);
_isbeaming = false;
_sounds.stop_laser_sound();
};
if (_arcing){
_sounds.stop_arc_sound();
_bullets.disable_arc();
_arcing = false;
};
}
}
}//package
Section 108
//ShipSprite (ShipSprite)
package {
import flash.display.*;
public dynamic class ShipSprite extends MovieClip {
public var blade:MovieClip;
public var apache:MovieClip;
public var gattling_mc:MovieClip;
public var machine_mc:GunSprite;
}
}//package
Section 109
//Smoke (Smoke)
package {
import com.playerthree.util.*;
import flash.display.*;
public class Smoke {
public var remove:Boolean;// = false
public var accel:Vector;
public var oldpos:Vector;
public var pos:Vector;
private var _movetimer:int;// = 0
public var mc:MovieClip;
private var _movestate:int;// = 0
public function Smoke(_arg1:int, _arg2:Vector){
_movestate = 0;
_movetimer = 0;
remove = false;
super();
this.pos = new Vector(_arg2.x, _arg2.y);
if (_arg1 == 0){
mc = new SmokeSprite();
} else {
mc = new SmokeHeavySprite();
};
oldpos = new Vector(_arg2.x, _arg2.y);
accel = new Vector(-5, 0);
mc.x = _arg2.x;
mc.y = _arg2.y;
}
public function kill():void{
remove = true;
}
public function update():void{
oldpos.x = pos.x;
oldpos.y = pos.y;
switch (_movestate){
case 0:
_movestate = 1;
accel.y = -1;
break;
case 1:
accel.x = (accel.x * 1.1);
accel.y = (accel.y * 1.05);
break;
};
pos.x = (pos.x + accel.x);
pos.y = (pos.y + accel.y);
mc.x = pos.x;
mc.y = pos.y;
if (mc.currentFrame == mc.totalFrames){
kill();
};
}
}
}//package
Section 110
//SmokeHeavySprite (SmokeHeavySprite)
package {
import flash.display.*;
public dynamic class SmokeHeavySprite extends MovieClip {
}
}//package
Section 111
//SmokeSprite (SmokeSprite)
package {
import flash.display.*;
public dynamic class SmokeSprite extends MovieClip {
}
}//package
Section 112
//SnowBmp (SnowBmp)
package {
import flash.display.*;
public dynamic class SnowBmp extends BitmapData {
public function SnowBmp(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 113
//SnowFarBmp (SnowFarBmp)
package {
import flash.display.*;
public dynamic class SnowFarBmp extends BitmapData {
public function SnowFarBmp(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 114
//SnowMidBmp (SnowMidBmp)
package {
import flash.display.*;
public dynamic class SnowMidBmp extends BitmapData {
public function SnowMidBmp(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 115
//SnowRoadBmp (SnowRoadBmp)
package {
import flash.display.*;
public dynamic class SnowRoadBmp extends BitmapData {
public function SnowRoadBmp(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 116
//SnowSkyBmp (SnowSkyBmp)
package {
import flash.display.*;
public dynamic class SnowSkyBmp extends BitmapData {
public function SnowSkyBmp(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 117
//SoundManager (SoundManager)
package {
import flash.events.*;
import flash.media.*;
public class SoundManager {
private var _musichannel:SoundChannel;
private var _chns:Array;
private var _laserstop:Sound;
private var _snds:Array;
private var _chopperchn:SoundChannel;
private var _arcstop:Sound;
private var _laserstart:Sound;
private var _choppertrans:SoundTransform;
private var _choppersnd:Sound;
private var _arcloopchn:SoundChannel;
private var _globaltrans:SoundTransform;
private var _laserloop:Sound;
private var _arcloop:Sound;
private var _laserloopchn:SoundChannel;
public static var MUSIC_MUTE:Boolean = false;
public static var MUTE:Boolean = false;
public function SoundManager(){
_snds = new Array();
_chns = new Array();
super();
}
function play_menu_loop(_arg1:Event):void{
var _local2:Sound;
_local2 = new MenuMusicSound();
_musichannel.removeEventListener(Event.SOUND_COMPLETE, play_menu_loop);
_musichannel = _local2.play(0, 999);
}
public function stop_chopper_sound():void{
if (MUTE){
return;
};
if (_chopperchn != null){
_chopperchn.stop();
_chopperchn = null;
};
}
function play_game_music():void{
var _local1:Sound;
if (MUSIC_MUTE){
return;
};
_local1 = new GameMusicSound();
_musichannel = _local1.play(0, 999);
}
public function play_sound(_arg1:int, _arg2:Boolean=false):void{
var _local3:int;
if (MUTE){
return;
};
_local3 = (_arg2) ? 999 : 1;
_chns[_arg1] = _snds[_arg1].play(0, _local3, _globaltrans);
}
public function stop_laser_sound():void{
if (MUTE){
return;
};
if (_laserloopchn == null){
trace(" error in laser sound ");
return;
};
_laserloopchn.stop();
_laserstop.play();
_laserloopchn = null;
}
public function init():void{
var _local1:Sound;
var _local2:Sound;
var _local3:Sound;
var _local4:Sound;
var _local5:Sound;
var _local6:Sound;
var _local7:Sound;
var _local8:Sound;
var _local9:Sound;
var _local10:Sound;
var _local11:Sound;
var _local12:Sound;
var _local13:Sound;
var _local14:Sound;
var _local15:Sound;
var _local16:Sound;
var _local17:Sound;
var _local18:Sound;
var _local19:Sound;
var _local20:*;
var _local21:Sound;
var _local22:Sound;
var _local23:Sound;
var _local24:Sound;
var _local25:Sound;
var _local26:Sound;
var _local27:Sound;
var _local28:Sound;
_local1 = new MG1Sound();
_local2 = new MG2Sound();
_local3 = new MG3Sound();
_local4 = new MissileSound();
_local5 = new ChopperLoopSound();
_local6 = new Ricochet1Sound();
_local7 = new Ricochet2Sound();
_local8 = new Ricochet3Sound();
_local9 = new Ricochet4Sound();
_local10 = new ExplodeBigSound();
_local11 = new ExplodeShortSound();
_local12 = new ExplodeLongSound();
_local13 = new RocketPickupSound();
_local14 = new MissilePickupSound();
_local15 = new BombPickupSound();
_local16 = new LaserPickupSound();
_local17 = new NuclearPickupSound();
_local18 = new MediumMGPickupSound();
_local19 = new HeavyMGPickupSound();
_local20 = new OverkillPickupSound();
_local21 = new NukeSound();
_local22 = new TankFireSound();
_local23 = new HealthSound();
_local24 = new HaSound();
_local25 = new EngineTroubleSound();
_local26 = new NeededSound();
_local27 = new SpecialOpsSound();
_local28 = new LockLoadSound();
_snds.push(_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13, _local14, _local15, _local16, _local17, _local18, _local19, _local20, _local21, _local22, _local23, _local24, _local25, _local26, _local27, _local28);
_globaltrans = new SoundTransform();
_choppertrans = new SoundTransform();
_laserloop = new LaserLoopSound();
_laserstart = new LaserStartSound();
_laserstop = new LaserStopSound();
_arcloop = new ArcLoopSound();
_arcstop = new ArcStopSound();
_choppersnd = _local5;
}
public function play_chopper_sound():void{
if (MUTE){
return;
};
if (_chopperchn == null){
_chopperchn = _choppersnd.play(0, 9999, _choppertrans);
};
}
public function stop_arc_sound():void{
if (MUTE){
return;
};
if (_arcloopchn == null){
trace(" error in arc sound ");
return;
};
_arcloopchn.stop();
_arcstop.play();
_arcloopchn = null;
}
public function play_laser_sound():void{
if (MUTE){
return;
};
_laserstart.play();
_laserloopchn = _laserloop.play(0, 9999);
}
public function update(_arg1:Number, _arg2:Number, _arg3:Number=0):void{
_globaltrans.volume = _arg1;
_globaltrans.pan = _arg2;
SoundMixer.soundTransform = _globaltrans;
}
public function play_arc_sound():void{
if (MUTE){
return;
};
_arcloopchn = _arcloop.play(0, 9999);
}
function stop_menu_music():void{
if (_musichannel == null){
return;
};
_musichannel.stop();
if (_musichannel.hasEventListener(Event.SOUND_COMPLETE)){
_musichannel.removeEventListener(Event.SOUND_COMPLETE, play_menu_loop);
};
_musichannel = null;
}
public function stop_sound(_arg1:int):void{
if (MUTE){
return;
};
if (_chns[_arg1] != null){
_chns[_arg1].stop();
};
}
function stop_game_music():void{
if (MUSIC_MUTE){
return;
};
_musichannel.stop();
_musichannel = null;
}
public function stop_all():void{
var _local1:*;
var _local2:SoundChannel;
for (_local1 in _chns) {
if (_chns[_local1] != null){
if (_chns[_local1] != undefined){
_local2 = _chns[_local1];
_local2.stop();
};
};
};
stop_laser_sound();
stop_arc_sound();
stop_chopper_sound();
}
function play_menu_music():void{
var _local1:Sound;
if (MUSIC_MUTE){
return;
};
_local1 = new MenuMusicIntroSound();
_musichannel = _local1.play();
_musichannel.addEventListener(Event.SOUND_COMPLETE, play_menu_loop);
}
public static function stoggle():void{
if (MUTE){
MUTE = false;
} else {
MUTE = true;
};
}
public static function mtoggle():void{
if (MUSIC_MUTE){
MUSIC_MUTE = false;
} else {
MUSIC_MUTE = true;
};
}
}
}//package
Section 118
//SpecialOpsSound (SpecialOpsSound)
package {
import flash.media.*;
public dynamic class SpecialOpsSound extends Sound {
}
}//package
Section 119
//TankFireSound (TankFireSound)
package {
import flash.media.*;
public dynamic class TankFireSound extends Sound {
}
}//package
Section 120
//UI (UI)
package {
import flash.display.*;
import gs.*;
import flash.geom.*;
import fl.motion.easing.*;
import flash.system.*;
public class UI {
private var ammo_counters:Array;
private var _bmpscore:BitmapScore;
private var _mupdated:Array;
private var _blackout:Bitmap;
private var _overlay:MovieClip;
public var mc:Sprite;
private var _mtimer:int;// = 0
private var _missioncolour:ColorTransform;
private var _ship:Ship;
private var _progressbar:ProgressBar;
private var _healthbar:Shape;
private var _enemies:EnemyPool;
private var _first:Boolean;// = true
private var _levelmgr:LevelManager;
private var _blackoutdata:BitmapData;
private var _gameovermc:MovieClip;
private var _missionstatus:MovieClip;
public function UI(_arg1:Ship, _arg2:EnemyPool, _arg3:BitmapScore, _arg4:LevelManager){
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:ColorTransform;
var _local10:MovieClip;
ammo_counters = new Array();
_mupdated = [false, false, false, false];
_mtimer = 0;
_first = true;
super();
this._ship = _arg1;
this._enemies = _arg2;
this._levelmgr = _arg4;
_bmpscore = _arg3;
_blackoutdata = new BitmapData(Overkill.SW, Overkill.SH, false, 0);
_blackout = new Bitmap(_blackoutdata);
mc = new Sprite();
mc.addChild(_blackout);
TweenLite.to(_blackout, 0.5, {ease:Exponential.easeOut, alpha:0});
_healthbar = new Shape();
_healthbar.graphics.beginFill(0xFF0000, 0.5);
_healthbar.graphics.drawRect(9, 17, 100, 5);
_healthbar.graphics.endFill();
mc.addChild(_healthbar);
_overlay = new ScoreOverlaySprite();
_overlay.x = 8;
_overlay.y = 4;
mc.addChild(_overlay);
_overlay.nuke_mc.alpha = 0.25;
_local5 = 14;
_local6 = 38;
_local7 = 124;
_local8 = 0;
while (_local8 < 5) {
_local10 = new AmmoCounterSprite();
_local10.x = ((_local8 * _local6) + _local7);
_local10.y = _local5;
ammo_counters.push(_local10);
mc.addChild(_local10);
_local8++;
};
_missionstatus = new MissionStatusSprite();
_missionstatus.x = (Overkill.SW * 0.5);
_missionstatus.y = -100;
_missioncolour = _missionstatus.mission2_mc.transform.colorTransform;
_local9 = _missionstatus.mission1_mc.transform.colorTransform;
_local9.redMultiplier = 0.5;
_local9.greenMultiplier = 0.5;
_local9.blueMultiplier = 0.5;
_missionstatus.mission1_mc.transform.colorTransform = _local9;
_missionstatus.mission2_mc.transform.colorTransform = _local9;
_missionstatus.mission3_mc.transform.colorTransform = _local9;
_missionstatus.mission4_mc.transform.colorTransform = _local9;
_progressbar = new ProgressBar();
mc.addChild(_progressbar.bmp);
mc.addChild(_missionstatus);
_overlay.deb.visible = false;
}
public function update_mission():void{
var _local1:Boolean;
var _local2:String;
var _local3:ColorTransform;
if (_ship.initdelay > 0){
if ((((_ship.initdelay == (Globals.INIT_DELAY - 1))) && (_first))){
TweenLite.to(_missionstatus, 0.25, {ease:Exponential.easeOut, y:(Overkill.SH * 0.5)});
_first = false;
};
_local1 = _mupdated[Globals.LEVEL];
if (!_local1){
_local2 = (("mission" + (Globals.LEVEL + 1)) + "_mc");
_local3 = _missionstatus[_local2].transform.colorTransform;
if (_mtimer < 48){
_local3.redMultiplier = (_local3.redMultiplier * 1.0525);
_local3.greenMultiplier = (_local3.greenMultiplier * 1.0525);
_local3.blueMultiplier = (_local3.blueMultiplier * 1.0525);
if (_local3.redMultiplier > 1){
_local3.redMultiplier = 1;
};
if (_local3.greenMultiplier > 1){
_local3.greenMultiplier = 1;
};
if (_local3.blueMultiplier > 1){
_local3.blueMultiplier = 1;
};
_missionstatus[_local2].transform.colorTransform = _local3;
_mtimer++;
} else {
_local3.redMultiplier = 1;
_local3.greenMultiplier = 1;
_local3.blueMultiplier = 1;
_missionstatus[_local2].transform.colorTransform = _local3;
_mtimer = 0;
_mupdated[Globals.LEVEL] = true;
};
};
if (_ship.initdelay == 1){
TweenLite.to(_missionstatus, 0.25, {ease:Exponential.easeIn, y:-100});
};
};
}
private function show_num(_arg1:MovieClip, _arg2:int):void{
_arg1.digit_mc.y = (_arg2 * -10);
}
public function gameover():void{
_gameovermc = new GameOverSprite();
_gameovermc.x = (Overkill.SW * 0.5);
_gameovermc.y = (Overkill.SH * 0.5);
mc.addChild(_gameovermc);
}
public function update():void{
var _local1:String;
var _local2:int;
var _local3:int;
var _local4:int;
_local1 = ((System.totalMemory / 0x0400) / 0x0400).toFixed(2);
_local1 = (_local1 + "\n");
_local1 = (_local1 + (_enemies.wave + " < wave \n"));
_local1 = (_local1 + (_enemies.currentset + " < current set \n"));
_local1 = (_local1 + (_enemies.settotal + " < set total \n"));
_overlay.deb.text = _local1;
_local3 = LevelManager.totalwaves;
_local4 = _enemies.wave;
_progressbar.update(_local4, _local3);
if (_ship.hasnuke){
if (_overlay.nuke_mc.alpha != 1){
_overlay.nuke_mc.alpha = 1;
};
} else {
if (_overlay.nuke_mc.alpha != 0.25){
_overlay.nuke_mc.alpha = 0.25;
};
};
_overlay.badge_mc.gotoAndStop(Globals.get_rankframe());
update_mission();
_local2 = _ship.ammo.length;
while (--_local2 > -1) {
update_num(_local2, _ship.ammo[_local2]);
};
_bmpscore.update(_ship.lives);
_healthbar.graphics.clear();
_healthbar.graphics.beginFill(0xFF0000, 0.5);
_healthbar.graphics.drawRect(9, 17, _ship.health, 5);
_healthbar.graphics.endFill();
}
public function reset():void{
var _local1:ColorTransform;
if (_gameovermc != null){
mc.removeChild(_gameovermc);
_gameovermc = null;
};
_overlay.badge_mc.gotoAndStop(1);
_mupdated = [false, false, false, false];
_mtimer = 0;
_missionstatus.y = -100;
_first = true;
_local1 = _missionstatus.mission1_mc.transform.colorTransform;
_local1.redMultiplier = 0.5;
_local1.greenMultiplier = 0.5;
_local1.blueMultiplier = 0.5;
_missionstatus.mission1_mc.transform.colorTransform = _local1;
_missionstatus.mission2_mc.transform.colorTransform = _local1;
_missionstatus.mission3_mc.transform.colorTransform = _local1;
_missionstatus.mission4_mc.transform.colorTransform = _local1;
}
private function update_num(_arg1:int, _arg2:int):void{
var _local3:String;
var _local4:Array;
var _local5:MovieClip;
var _local6:int;
var _local7:String;
if (_arg2 < 0){
_arg2 = 0;
} else {
if (_arg2 > 999){
_arg2 = 999;
};
};
_local3 = ("00000000" + _arg2.toString());
_local4 = _local3.substr(-3).split("");
_local5 = ammo_counters[_arg1];
_local6 = 0;
while (_local6 < 3) {
_local7 = (("num" + _local6) + "_mc");
show_num(_local5[_local7], _local4[_local6]);
_local6++;
};
}
public function blackout(_arg1:Boolean):void{
var _local2:Object;
_local2 = {};
if (_arg1){
_local2.ease = Exponential.easeIn;
_local2.alpha = 1;
} else {
_local2.ease = Exponential.easeOut;
_local2.alpha = 0;
};
TweenLite.to(_blackout, 0.5, _local2);
}
}
}//package