Section 1
//Bullet (classes.Bullet)
package classes {
import flash.display.*;
import flash.events.*;
public class Bullet extends MovieClip {
public var BULLETMOVE_FASTER:int;// = 2
public var origWidth:Number;
public var PARTICLE_DAMAGESMOKE:int;// = 2
public var STATE_REMOVE:int;// = 3
public var gameMC:MovieClip;
public var PARTICLE_LINE:int;// = 3
public var currRotationRadian:Number;
public var currSpeed:Number;
public var currRotationDegrees:Number;
public var speedModifier:Number;
public var PARTICLE_SMOKE:int;// = 1
public var stopTimer:int;
public var particleSystem:int;
public var damage:int;
public var currState:int;
public var posX:Number;
public var posY:Number;
public var STATE_DIE:int;// = 2
public var isHoming:Boolean;
public var isRotating:Boolean;
public var BULLETMOVE_CONSISTENT:int;// = 1
public var removeNow:Boolean;
public var isYours:Boolean;
public var sprite:Sprite;
public var homingTimer:int;
public var origHeight:Number;
public var bulletMovement:int;
public var incRotate:Number;
public var STATE_MOVE:int;// = 1
public var targetMC:MovieClip;
public var BULLETMOVE_STOP:int;// = 3
public function Bullet(_arg1:Class, _arg2:int, _arg3:int, _arg4:int, _arg5:Number, _arg6:Boolean, _arg7:Boolean, _arg8:Number, _arg9:int, _arg10:Boolean, _arg11:int, _arg12:MovieClip, _arg13:int, _arg14:Number){
var _local15:int;
STATE_MOVE = 1;
STATE_DIE = 2;
STATE_REMOVE = 3;
PARTICLE_SMOKE = 1;
PARTICLE_DAMAGESMOKE = 2;
PARTICLE_LINE = 3;
BULLETMOVE_CONSISTENT = 1;
BULLETMOVE_FASTER = 2;
BULLETMOVE_STOP = 3;
super();
this.posX = _arg2;
this.posY = _arg3;
this.x = _arg2;
this.y = _arg3;
this.isYours = _arg10;
this.damage = _arg11;
this.isHoming = _arg6;
this.isRotating = _arg7;
this.incRotate = ((this.incRotate / 2) + ((Math.random() * this.incRotate) / 2));
this.incRotate = ((_arg8 * Math.PI) / 180);
if (this.isHoming){
this.incRotate = Math.abs(this.incRotate);
};
this.particleSystem = _arg9;
sprite = new (_arg1);
this.addChild(sprite);
this.currRotationRadian = ((_arg4 * Math.PI) / 180);
this.currRotationDegrees = ((this.currRotationRadian * 180) / Math.PI);
this.rotation = this.currRotationDegrees;
this.currSpeed = _arg5;
if (_arg13 != BULLETMOVE_STOP){
this.currSpeed = (this.currSpeed + 2);
};
this.gameMC = _arg12;
this.gameMC.gameEngine.bulletLayer.addChild(this);
this.homingTimer = 0;
this.origWidth = this.width;
this.origHeight = this.height;
this.removeNow = false;
this.currState = this.STATE_MOVE;
if (this.isYours){
_local15 = Math.round((Math.random() * (this.gameMC.gameEngine.enemyArray.length - 1)));
this.targetMC = this.gameMC.gameEngine.enemyArray[_local15];
} else {
this.targetMC = this.gameMC.gameEngine.yourShip;
};
this.addParticleGenerator(this.particleSystem, (0 - (sprite.width / 4)), 0, true, true);
this.stopTimer = 0;
this.bulletMovement = _arg13;
this.speedModifier = _arg14;
}
public function addParticleGenerator(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
var _local6:Array;
_local6 = this.gameMC.gameEngine.particleGeneratorArray;
switch (_arg1){
case this.PARTICLE_SMOKE:
_local6.push(new ParticleGeneratorSmoke(_arg2, _arg3, this.sprite, _arg4, _arg5, this.gameMC));
break;
case this.PARTICLE_DAMAGESMOKE:
_local6.push(new ParticleGeneratorDamageSmoke(_arg2, _arg3, this.sprite, _arg4, _arg5, this.gameMC));
break;
case this.PARTICLE_LINE:
_local6.push(new ParticleGeneratorLine(_arg2, _arg3, this.sprite, _arg4, _arg5, this.gameMC));
break;
};
}
public function specialrender(){
}
public function render(){
var _local1:Number;
var _local2:Number;
switch (this.bulletMovement){
case BULLETMOVE_CONSISTENT:
break;
case BULLETMOVE_FASTER:
this.currSpeed = (this.currSpeed * this.speedModifier);
break;
case BULLETMOVE_STOP:
this.stopTimer++;
if (this.stopTimer > 100){
if (this.currSpeed < 1){
this.currSpeed = 1;
};
this.currSpeed = (this.currSpeed * this.speedModifier);
} else {
if (this.stopTimer > 20){
this.currSpeed = (this.currSpeed + ((0 - this.currSpeed) * 0.2));
};
};
break;
};
switch (this.currState){
case this.STATE_MOVE:
if (isHoming){
if (this.homingTimer < 60){
if (this.targetMC == null){
this.homingTimer = 9999;
} else {
_local1 = Math.atan2((this.targetMC.y - this.y), (this.targetMC.x - this.x));
_local2 = (_local1 - this.currRotationRadian);
if (Math.abs(_local2) > Math.PI){
if (_local1 > Math.PI){
_local1 = (_local1 - (2 * Math.PI));
} else {
_local1 = (_local1 + (2 * Math.PI));
};
_local2 = (_local1 - this.currRotationRadian);
};
if (this.incRotate > Math.abs(_local2)){
this.currRotationRadian = _local1;
} else {
if (_local1 > this.currRotationRadian){
this.currRotationRadian = (this.currRotationRadian + this.incRotate);
} else {
this.currRotationRadian = (this.currRotationRadian - this.incRotate);
};
if (this.currRotationRadian > (2 * Math.PI)){
this.currRotationRadian = (this.currRotationRadian - (2 * Math.PI));
} else {
if (this.currRotationRadian < 0){
this.currRotationRadian = (this.currRotationRadian + (2 * Math.PI));
};
};
};
this.rotation = ((this.currRotationRadian * 180) / Math.PI);
this.homingTimer++;
};
};
} else {
if (isRotating){
this.currRotationRadian = (this.currRotationRadian + this.incRotate);
this.rotation = ((this.currRotationRadian * 180) / Math.PI);
};
};
this.posX = (this.posX + (this.currSpeed * Math.cos(this.currRotationRadian)));
this.posY = (this.posY + (this.currSpeed * Math.sin(this.currRotationRadian)));
this.x = Math.round(this.posX);
this.y = Math.round(this.posY);
break;
case this.STATE_DIE:
if ((this.scaleX - 0.2) < 0){
this.scaleX = 0;
this.scaleY = this.scaleX;
this.currState = this.STATE_REMOVE;
} else {
this.scaleX = (this.scaleX - 0.2);
this.scaleY = this.scaleX;
};
break;
case this.STATE_REMOVE:
break;
};
}
}
}//package classes
Section 2
//BulletGenerator (classes.BulletGenerator)
package classes {
import flash.display.*;
import flash.events.*;
import flash.media.*;
public class BulletGenerator {
public var offsetAngle:int;
public var gameMC:MovieClip;
public var ownerMC:MovieClip;
public var isYours:Boolean;
public var bulletSoundChannel:SoundChannel;
public var maxTick:int;
public var isRotating:Boolean;
public var offsetX:int;
public var isHoming:Boolean;
public var offsetY:int;
public var bulletSound:Sound;
public var speedModifier:Number;
public var particleSystem:int;
public var bulletMovement:int;
public var incRotate:Number;
public var shootTick:int;
public var bulletSpeed:int;
public var targetShip:CharShip;
public var BULLETMOVE_STOP:int;// = 3
public var damage:int;
public var BULLETMOVE_FASTER:int;// = 2
public var currTick:int;
public var bulletArray:Array;
public var BulletClass:Class;
public var BULLETMOVE_CONSISTENT:int;// = 1
public function BulletGenerator(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean, _arg6:Number, _arg7:int, _arg8:int, _arg9:int, _arg10:Boolean, _arg11:int, _arg12:Class, _arg13:MovieClip, _arg14:int, _arg15:Number){
BULLETMOVE_CONSISTENT = 1;
BULLETMOVE_FASTER = 2;
BULLETMOVE_STOP = 3;
super();
this.gameMC = _arg13.gameMC;
this.bulletSpeed = _arg3;
if (_arg10){
this.shootTick = _arg1;
this.maxTick = _arg2;
} else {
this.shootTick = Math.ceil((_arg1 / 2));
this.maxTick = Math.ceil((_arg2 / 2));
};
this.currTick = 0;
this.BulletClass = _arg12;
this.ownerMC = _arg13;
this.bulletArray = new Array();
this.bulletMovement = _arg14;
this.speedModifier = _arg15;
this.offsetAngle = 0;
this.isYours = _arg10;
this.damage = _arg11;
this.offsetX = _arg8;
this.offsetY = _arg9;
this.isHoming = _arg4;
this.isRotating = _arg5;
this.incRotate = _arg6;
this.particleSystem = _arg7;
if (this.isYours){
} else {
bulletSound = new sndEnemyFire();
};
}
public function render(){
var _local1:*;
this.currTick++;
if (this.currTick == this.shootTick){
generateBulletPattern();
if (this.gameMC.jukebox.isMute == false){
if (this.isYours){
} else {
bulletSoundChannel = bulletSound.play(0, 0, new SoundTransform(0.5, 0));
};
};
};
if (this.currTick >= this.maxTick){
this.currTick = -1;
};
_local1 = 0;
while (_local1 < this.bulletArray.length) {
bulletArray[_local1].render();
_local1++;
};
}
public function generateBulletPattern(){
}
public function generateBullet(_arg1:int, _arg2:int, _arg3:int, _arg4:int){
var _local5:Bullet;
_local5 = new Bullet(this.BulletClass, _arg1, _arg2, _arg3, _arg4, this.isHoming, this.isRotating, this.incRotate, this.particleSystem, this.isYours, this.damage, this.ownerMC.gameMC, this.bulletMovement, this.speedModifier);
this.gameMC.gameEngine.addBullet(_local5);
}
}
}//package classes
Section 3
//BulletGeneratorAngle (classes.BulletGeneratorAngle)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class BulletGeneratorAngle extends BulletGenerator {
public var incAngle:int;
public var numBullets:int;
public function BulletGeneratorAngle(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean, _arg6:Number, _arg7:int, _arg8:int, _arg9:int, _arg10:Boolean, _arg11:int, _arg12:Class, _arg13:MovieClip, _arg14:int, _arg15:Number, _arg16:int, _arg17:int, _arg18:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15);
this.numBullets = _arg16;
this.incAngle = _arg17;
this.offsetAngle = _arg18;
}
override public function generateBulletPattern(){
var _local1:Number;
var _local2:int;
var _local3:Number;
var _local4:Point;
var _local5:Point;
var _local6:Number;
_local1 = 0;
if ((this.numBullets % 2) == 0){
_local1 = (_local1 + (this.incAngle / 2));
_local2 = 0;
while (_local2 < ((this.numBullets - 2) / 2)) {
_local1 = (_local1 + this.incAngle);
_local2++;
};
} else {
_local2 = 0;
while (_local2 < ((this.numBullets - 1) / 2)) {
_local1 = (_local1 + this.incAngle);
_local2++;
};
};
_local3 = (this.offsetAngle - _local1);
if (this.ownerMC.followEnemy){
this.targetShip = this.gameMC.gameEngine.yourShip;
_local6 = Math.atan2((this.targetShip.y - this.ownerMC.y), (this.targetShip.x - this.ownerMC.x));
_local6 = ((_local6 * 180) / Math.PI);
_local3 = (_local3 + (_local6 - 90));
};
_local4 = new Point(this.offsetX, this.offsetY);
_local5 = this.ownerMC.localToGlobal(_local4);
this.ownerMC.localToGlobal(_local4).x = (_local5.x + this.gameMC.x);
_local5.y = (_local5.y + this.gameMC.y);
_local2 = 0;
while (_local2 < this.numBullets) {
generateBullet(_local5.x, _local5.y, _local3, this.bulletSpeed);
_local3 = (_local3 + this.incAngle);
_local2++;
};
}
public function cloneMe():BulletGeneratorAngle{
var _local1:BulletGeneratorAngle;
_local1 = new BulletGeneratorAngle(this.shootTick, this.maxTick, this.bulletSpeed, this.isHoming, this.isRotating, this.incRotate, this.particleSystem, this.offsetX, this.offsetY, this.isYours, this.damage, this.BulletClass, this.ownerMC, this.bulletMovement, this.speedModifier, this.numBullets, this.incAngle, this.offsetAngle);
_local1.targetShip = this.targetShip;
_local1.offsetAngle = this.offsetAngle;
return (_local1);
}
}
}//package classes
Section 4
//BulletGeneratorCircular (classes.BulletGeneratorCircular)
package classes {
import flash.display.*;
import flash.geom.*;
public class BulletGeneratorCircular extends BulletGenerator {
public var numBullets:int;
public function BulletGeneratorCircular(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean, _arg6:Number, _arg7:int, _arg8:int, _arg9:int, _arg10:Boolean, _arg11:int, _arg12:Class, _arg13:MovieClip, _arg14:int, _arg15:Number, _arg16:int, _arg17:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15);
this.numBullets = _arg16;
this.offsetAngle = _arg17;
}
override public function generateBulletPattern(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Point;
var _local7:Point;
var _local8:*;
_local1 = (360 / this.numBullets);
_local2 = this.offsetAngle;
_local6 = new Point(this.offsetX, this.offsetY);
_local7 = this.ownerMC.localToGlobal(_local6);
this.ownerMC.localToGlobal(_local6).x = (_local7.x + this.gameMC.x);
_local7.y = (_local7.y + this.gameMC.y);
_local8 = 0;
while (_local8 < this.numBullets) {
_local5 = ((_local2 * Math.PI) / 180);
_local3 = (50 * Math.cos(_local5));
_local4 = (50 * Math.sin(_local5));
generateBullet((_local7.x + _local3), (_local7.y + _local4), _local2, this.bulletSpeed);
_local2 = (_local2 + _local1);
_local8++;
};
}
public function cloneMe():BulletGeneratorCircular{
var _local1:BulletGeneratorCircular;
_local1 = new BulletGeneratorCircular(this.shootTick, this.maxTick, this.bulletSpeed, this.isHoming, this.isRotating, this.incRotate, this.particleSystem, this.offsetX, this.offsetY, this.isYours, this.damage, this.BulletClass, this.ownerMC, this.bulletMovement, this.speedModifier, this.numBullets, this.offsetAngle);
_local1.targetShip = this.targetShip;
_local1.offsetAngle = this.offsetAngle;
return (_local1);
}
}
}//package classes
Section 5
//BulletGeneratorRandom (classes.BulletGeneratorRandom)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class BulletGeneratorRandom extends BulletGenerator {
public var minAngle:int;
public var numBullets:int;
public var maxAngle:int;
public function BulletGeneratorRandom(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean, _arg6:Number, _arg7:int, _arg8:int, _arg9:int, _arg10:Boolean, _arg11:int, _arg12:Class, _arg13:MovieClip, _arg14:int, _arg15:Number, _arg16:int, _arg17:int, _arg18:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15);
this.numBullets = _arg16;
this.minAngle = _arg17;
this.maxAngle = _arg18;
}
function randRange(_arg1:Number, _arg2:Number){
var _local3:Number;
_local3 = ((Math.random() * (_arg2 - _arg1)) + _arg1);
return (_local3);
}
override public function generateBulletPattern(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Number;
var _local8:Point;
var _local9:Point;
_local2 = this.minAngle;
_local3 = this.maxAngle;
if (this.ownerMC.followEnemy){
_local4 = (90 - _local2);
_local5 = (_local3 - _local2);
this.targetShip = this.gameMC.gameEngine.yourShip;
_local7 = Math.atan2((this.targetShip.y - this.ownerMC.y), (this.targetShip.x - this.ownerMC.x));
_local7 = ((_local7 * 180) / Math.PI);
_local6 = _local7;
_local2 = (_local6 - _local4);
_local3 = (_local2 + _local5);
};
_local8 = new Point(this.offsetX, this.offsetY);
_local9 = this.ownerMC.localToGlobal(_local8);
this.ownerMC.localToGlobal(_local8).x = (_local9.x + this.gameMC.x);
_local9.y = (_local9.y + this.gameMC.y);
_local1 = 0;
while (_local1 < this.numBullets) {
generateBullet(_local9.x, _local9.y, randRange(_local2, _local3), this.bulletSpeed);
_local1++;
};
}
public function cloneMe():BulletGeneratorRandom{
var _local1:BulletGeneratorRandom;
_local1 = new BulletGeneratorRandom(this.shootTick, this.maxTick, this.bulletSpeed, this.isHoming, this.isRotating, this.incRotate, this.particleSystem, this.offsetX, this.offsetY, this.isYours, this.damage, this.BulletClass, this.ownerMC, this.bulletMovement, this.speedModifier, this.numBullets, this.minAngle, this.maxAngle);
_local1.targetShip = this.targetShip;
_local1.offsetAngle = this.offsetAngle;
return (_local1);
}
}
}//package classes
Section 6
//BulletGeneratorRotate (classes.BulletGeneratorRotate)
package classes {
import flash.display.*;
import flash.geom.*;
public class BulletGeneratorRotate extends BulletGenerator {
public var incAngle:int;
public var currAngle:int;
public function BulletGeneratorRotate(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean, _arg6:Number, _arg7:int, _arg8:int, _arg9:int, _arg10:Boolean, _arg11:int, _arg12:Class, _arg13:MovieClip, _arg14:int, _arg15:Number, _arg16:int, _arg17:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15);
this.incAngle = _arg16;
this.currAngle = _arg17;
}
override public function generateBulletPattern(){
var _local1:Point;
var _local2:Point;
currAngle = (currAngle + incAngle);
if (currAngle > 360){
currAngle = (currAngle - 360);
};
_local1 = new Point(this.offsetX, this.offsetY);
_local2 = this.ownerMC.localToGlobal(_local1);
_local2.x = (_local2.x + this.gameMC.x);
_local2.y = (_local2.y + this.gameMC.y);
generateBullet(_local2.x, _local2.y, currAngle, this.bulletSpeed);
}
public function cloneMe():BulletGeneratorRotate{
var _local1:BulletGeneratorRotate;
_local1 = new BulletGeneratorRotate(this.shootTick, this.maxTick, this.bulletSpeed, this.isHoming, this.isRotating, this.incRotate, this.particleSystem, this.offsetX, this.offsetY, this.isYours, this.damage, this.BulletClass, this.ownerMC, this.bulletMovement, this.speedModifier, this.incAngle, this.offsetAngle);
_local1.targetShip = this.targetShip;
_local1.offsetAngle = this.offsetAngle;
return (_local1);
}
}
}//package classes
Section 7
//CharShip (classes.CharShip)
package classes {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.ui.*;
public class CharShip extends MovieClip {
public var origWidth:Number;
public var absorbTimer:int;
public var dyAbsorb:int;
public var posXArray:Array;
public var isMovingLeft:Boolean;
public var followEnemy:Boolean;
public var absorbPercent:Number;
public var currLife:int;
public var speed:Number;
public var absorbAngleArray:Array;
public var prevMouseX:int;
public var prevMouseY:int;
public var soundAbsorbChannel:SoundChannel;
public var COOLDOWN_DEATH:int;// = 30
public var posX:int;
public var posY:int;
public var COOLDOWN_INVULNERABLE:int;// = 100
public var BULLETMOVE_CONSISTENT:int;// = 1
public var optionAbsorbY:Number;
public var cooldownTimer:int;
public var optionAbsorbX:Number;
public var isShooting:Boolean;
public var dySpeed:int;
public var shieldMC:ShieldMC;
public var isAbsorbLock:Boolean;
public var whichOptionAbsorb:int;
public var currAbsorbEnemy:MovieClip;
public var optionMC:MovieClip;
public var BULLETGENERATOR_RANDOM:int;// = 4
public var isMovingUp:Boolean;
public var posYArray:Array;
public var origHeight:Number;
public var isMovingDown:Boolean;
public var isMovingRight:Boolean;
public var BULLETGENERATOR_ANGLE:int;// = 3
public var bulletGeneratorArray:Array;
public var optionArray:Array;
public var BULLETMOVE_STOP:int;// = 3
public var STATE_EXPLODE:int;// = 4
public var isShielded:Boolean;
public var gameMC:MovieClip;
public var soundAbsorb:Sound;
public var MAX_LIFE:int;// = 15
public var ABSORB_NONE:int;// = 1
public var BULLETGENERATOR_CIRCULAR:int;// = 1
public var STATE_INVULNERABLE:int;// = 2
public var soundConfirmAbsorb:Sound;
public var ABSORB_DONE:int;// = 4
public var STATE_ALIVE:int;// = 3
public var shieldTimer:int;
public var absorbState:int;
public var BULLETGENERATOR_ROTATE:int;// = 2
public var STATE_COOLDOWN:int;// = 5
public var currState:int;
public var ABSORB_FIND:int;// = 2
public var BORDER_LIMITX:int;// = 10
public var BORDER_LIMITY:int;// = 15
public var justAbsorbed:Boolean;
public var isAbsorbing:Boolean;
public var removeNow:Boolean;
public var STATE_CANMOVE:int;// = 1
public var ABSORB_FOUND:int;// = 3
public var soundConfirmAbsorbChannel:SoundChannel;
public var BULLETMOVE_FASTER:int;// = 2
public function CharShip(_arg1:int, _arg2:int, _arg3:MovieClip){
var _local4:*;
STATE_CANMOVE = 1;
STATE_INVULNERABLE = 2;
STATE_ALIVE = 3;
STATE_EXPLODE = 4;
STATE_COOLDOWN = 5;
BULLETGENERATOR_CIRCULAR = 1;
BULLETGENERATOR_ROTATE = 2;
BULLETGENERATOR_ANGLE = 3;
BULLETGENERATOR_RANDOM = 4;
BULLETMOVE_CONSISTENT = 1;
BULLETMOVE_FASTER = 2;
BULLETMOVE_STOP = 3;
COOLDOWN_DEATH = 30;
COOLDOWN_INVULNERABLE = 100;
BORDER_LIMITX = 10;
BORDER_LIMITY = 15;
ABSORB_NONE = 1;
ABSORB_FIND = 2;
ABSORB_FOUND = 3;
ABSORB_DONE = 4;
MAX_LIFE = 15;
super();
this.posX = _arg1;
this.posY = _arg2;
this.speed = 8;
this.currState = STATE_CANMOVE;
this.bulletGeneratorArray = new Array();
this.isMovingUp = false;
this.isMovingDown = false;
this.isMovingLeft = false;
this.isMovingRight = false;
this.isShooting = false;
this.justAbsorbed = false;
this.isAbsorbing = false;
this.dyAbsorb = 0;
this.isAbsorbLock = false;
this.isShielded = false;
this.optionArray = new Array();
this.followEnemy = false;
this.addChild(new Fairy());
this.x = this.posX;
this.y = this.posY;
_arg3.gameEngine.shipLayer.addChild(this);
this.gameMC = _arg3;
this.addBulletGeneratorManual(this.BULLETGENERATOR_ANGLE, 7, 10, 15, false, false, 10, 0, 0, -25, 1, BulletPointyNormal, BULLETMOVE_CONSISTENT, 0, 2, 3, 270);
this.absorbAngleArray = new Array();
this.absorbAngleArray.push(new Array(Math.PI, 0.1, 0.6));
this.absorbAngleArray.push(new Array(0, 0.05, 0.4));
this.absorbAngleArray.push(new Array(Math.PI, -0.1, 0.8));
this.absorbAngleArray.push(new Array(0, -0.065, 0.4));
this.absorbAngleArray.push(new Array(Math.PI, 0.03, 0.6));
this.absorbAngleArray.push(new Array(0, 0.2, 1));
this.absorbAngleArray.push(new Array(Math.PI, -0.3, 0.8));
this.absorbAngleArray.push(new Array(0, -0.2, 0.4));
this.absorbPercent = 0.5;
this.origWidth = 10;
this.origHeight = 10;
this.removeNow = false;
this.absorbState = ABSORB_NONE;
this.shieldTimer = -1;
soundAbsorb = new sndAbsorbing();
soundAbsorbChannel = null;
soundConfirmAbsorb = new sndConfirmAbsorb();
soundConfirmAbsorbChannel = null;
posXArray = new Array(50);
posYArray = new Array(50);
_local4 = 0;
while (_local4 < posXArray.length) {
posXArray[_local4] = this.x;
posYArray[_local4] = this.y;
_local4++;
};
currLife = MAX_LIFE;
this.gameMC.treeMC.txtLife.text = currLife;
this.optionArray.push(new Option(OptionNormal, this.gameMC));
this.optionArray.push(new Option(OptionNormal, this.gameMC));
this.optionArray.push(new Option(OptionNormal, this.gameMC));
this.optionArray.push(new Option(OptionNormal, this.gameMC));
this.optionArray.push(new Option(OptionNormal, this.gameMC));
prevMouseX = -5000;
prevMouseY = -5000;
}
public function shootBullet(){
var _local1:int;
var _local2:int;
_local2 = 0;
while (_local2 < this.optionArray.length) {
this.optionArray[_local2].render();
_local1 = ((posXArray.length - 1) - ((_local2 + 1) * 6));
this.optionArray[_local2].x = posXArray[_local1];
this.optionArray[_local2].y = posYArray[_local1];
_local2++;
};
if (this.isShooting){
_local2 = 0;
while (_local2 < this.bulletGeneratorArray.length) {
this.bulletGeneratorArray[_local2].render();
_local2++;
};
};
}
public function moveShipByMouse(_arg1:int, _arg2:int){
var _local3:int;
var _local4:int;
var _local5:Boolean;
_local3 = this.posX;
_local4 = this.posY;
_local5 = false;
this.posX = _arg1;
this.posY = _arg2;
if ((((Math.abs((_arg1 - prevMouseX)) >= (speed - 2))) || ((Math.abs((_arg2 - prevMouseY)) >= (speed - 2))))){
prevMouseX = _arg1;
prevMouseY = _arg2;
posXArray.shift();
posYArray.shift();
posXArray.push(this.x);
posYArray.push(this.y);
};
if ((((this.posX < BORDER_LIMITX)) || ((this.posX > (this.gameMC.STAGE_WIDTH - BORDER_LIMITX))))){
this.posX = _local3;
_local5 = true;
};
if ((((this.posY < BORDER_LIMITY)) || ((this.posY > (this.gameMC.STAGE_HEIGHT - BORDER_LIMITY))))){
this.posY = _local4;
_local5 = true;
};
if (this.gameMC.gameEngine.currState == this.gameMC.gameEngine.STATE_PAUSE){
_local5 = true;
};
if (_local5){
Mouse.show();
} else {
Mouse.hide();
};
this.x = this.posX;
this.y = this.posY;
}
public function unshieldMe(){
this.shieldTimer = 30;
this.removeChild(shieldMC);
}
public function drawAbsorbLineFind(){
var _local1:Sprite;
_local1 = this.gameMC.gameEngine.absorbLayer;
_local1.graphics.clear();
_local1.graphics.lineStyle(3, 15379655, 1);
_local1.graphics.moveTo(this.x, this.y);
_local1.graphics.lineTo(this.x, (this.y - this.dyAbsorb));
}
public function disableAllOptions(){
var _local1:*;
_local1 = 0;
while (_local1 < optionArray.length) {
optionArray[_local1].alpha = 0;
optionArray[_local1].removeAllBulletGenerator();
_local1++;
};
}
public function shieldMe(){
this.isShielded = true;
shieldMC = new ShieldMC();
shieldMC.x = 0;
shieldMC.y = 0;
this.addChild(shieldMC);
}
public function addBulletGeneratorManual(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Boolean, _arg6:Boolean, _arg7:Number, _arg8:int, _arg9:int, _arg10:int, _arg11:int, _arg12:Class, _arg13:int, _arg14:Number, ... _args){
switch (_arg1){
case BULLETGENERATOR_CIRCULAR:
addBulletGenerator(new BulletGeneratorCircular(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1]));
break;
case BULLETGENERATOR_ROTATE:
addBulletGenerator(new BulletGeneratorRotate(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1]));
break;
case BULLETGENERATOR_ANGLE:
addBulletGenerator(new BulletGeneratorAngle(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1], _args[2]));
break;
case BULLETGENERATOR_RANDOM:
addBulletGenerator(new BulletGeneratorAngle(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1], _args[2]));
break;
};
}
public function addBulletGenerator(_arg1:BulletGenerator){
_arg1.offsetAngle = 270;
_arg1.ownerMC = this;
this.bulletGeneratorArray.push(_arg1);
}
public function drawAbsorbLine(_arg1:int, _arg2:int, _arg3:MovieClip, _arg4:Boolean){
var _local5:Sprite;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Point;
var _local13:Point;
var _local14:*;
var _local15:Number;
var _local16:Number;
var _local17:Number;
_local5 = this.gameMC.gameEngine.absorbLayer;
_local5.graphics.clear();
if (_arg4){
_local6 = _arg3.x;
_local7 = _arg3.y;
_local8 = (_local6 - _arg1);
_local9 = (_local7 - _arg2);
_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
_local11 = Math.atan2(_local9, _local8);
_local12 = new Point();
_local13 = new Point();
if (this.absorbPercent < 0.2){
this.absorbPercent = 0.8;
};
_local5.graphics.lineStyle(3, 15379655, 1);
_local14 = 0;
while (_local14 < absorbAngleArray.length) {
_local15 = this.absorbAngleArray[_local14][0];
_local16 = this.absorbAngleArray[_local14][1];
_local17 = this.absorbAngleArray[_local14][2];
this.absorbAngleArray[_local14][0] = (this.absorbAngleArray[_local14][0] + this.absorbAngleArray[_local14][1]);
if ((_local14 % 2) == 0){
_local12.x = ((Math.cos((_local11 + this.absorbAngleArray[_local14][0])) * (_local10 * 0.2)) + _arg1);
_local12.y = ((Math.sin((_local11 + this.absorbAngleArray[_local14][0])) * (_local10 * 0.2)) + _arg2);
_local5.graphics.moveTo(_arg1, _arg2);
_local5.graphics.curveTo(_local12.x, _local12.y, _local6, _local7);
} else {
_local12.x = ((Math.cos((_local11 + this.absorbAngleArray[_local14][0])) * _arg3.origWidth) + _local6);
_local12.y = ((Math.sin((_local11 + this.absorbAngleArray[_local14][0])) * _arg3.origHeight) + _local7);
_local5.graphics.moveTo(_local13.x, _local13.y);
_local5.graphics.curveTo(_local12.x, _local12.y, _local6, _local7);
};
_local13 = _local12;
_local14++;
};
};
}
public function enableAllOptions(){
var _local1:*;
_local1 = 0;
while (_local1 < optionArray.length) {
optionArray[_local1].alpha = 1;
optionArray[_local1].x = this.x;
optionArray[_local1].y = this.y;
_local1++;
};
}
public function moveShip(){
var _local1:int;
var _local2:int;
_local1 = this.posX;
_local2 = this.posY;
if (isMovingUp){
this.posY = (this.posY - speed);
};
if (isMovingDown){
this.posY = (this.posY + speed);
};
if (isMovingLeft){
this.posX = (this.posX - speed);
};
if (isMovingRight){
this.posX = (this.posX + speed);
};
if (((!((_local1 == this.posX))) || (!((_local2 == this.posY))))){
posXArray.shift();
posYArray.shift();
posXArray.push(this.x);
posYArray.push(this.y);
};
if ((((this.posX < BORDER_LIMITX)) || ((this.posX > (this.gameMC.STAGE_WIDTH - BORDER_LIMITX))))){
this.posX = _local1;
};
if ((((this.posY < BORDER_LIMITY)) || ((this.posY > (this.gameMC.STAGE_HEIGHT - BORDER_LIMITY))))){
this.posY = _local2;
};
this.x = this.posX;
this.y = this.posY;
}
public function render(){
var _local1:int;
var _local2:*;
if (shieldTimer >= 0){
this.shieldTimer--;
if (this.shieldTimer == 0){
this.shieldTimer = -1;
this.isShielded = false;
};
};
switch (this.currState){
case this.STATE_CANMOVE:
this.currState = this.STATE_ALIVE;
break;
case this.STATE_INVULNERABLE:
moveShip();
absorbAttack();
shootBullet();
this.cooldownTimer++;
if (this.cooldownTimer > this.COOLDOWN_INVULNERABLE){
this.cooldownTimer = 0;
this.currState = this.STATE_ALIVE;
};
break;
case this.STATE_ALIVE:
moveShip();
absorbAttack();
shootBullet();
break;
case this.STATE_EXPLODE:
this.cooldownTimer = 0;
this.gameMC.gameEngine.addExplosion(this.x, this.y, 1, true);
this.alpha = 0;
this.posX = this.x;
this.posY = this.y;
disableAllOptions();
if (this.gameMC.gameEngine.currLevel != 0){
currLife--;
this.gameMC.treeMC.txtLife.text = currLife;
if (currLife <= 0){
this.gameMC.gameEngine.quitGame(6);
};
};
this.currState = this.STATE_COOLDOWN;
break;
case this.STATE_COOLDOWN:
this.cooldownTimer++;
if (this.cooldownTimer > this.COOLDOWN_DEATH){
this.cooldownTimer = 0;
this.currState = this.STATE_INVULNERABLE;
this.alpha = 1;
this.x = (this.gameMC.STAGE_WIDTH / 2);
this.y = (this.gameMC.STAGE_HEIGHT - 50);
_local2 = 0;
while (_local2 < posXArray.length) {
posXArray[_local2] = this.x;
posYArray[_local2] = this.y;
_local2++;
};
this.posX = this.x;
this.posY = this.y;
enableAllOptions();
};
break;
};
}
public function absorbAttack(){
var _local1:Array;
var _local2:int;
var _local3:int;
var _local4:*;
if (this.isAbsorbing){
if ((((this.absorbState == this.ABSORB_NONE)) && ((this.isAbsorbLock == false)))){
this.absorbState = this.ABSORB_FIND;
this.dyAbsorb = 0;
this.dySpeed = 10;
};
} else {
if (((!((this.absorbState == this.ABSORB_NONE))) && (!((this.absorbState == this.ABSORB_DONE))))){
drawAbsorbLine(0, 0, null, false);
this.absorbState = this.ABSORB_NONE;
this.gameMC.treeMC.absorbMC.absorbFillMC.alpha = 1;
this.gameMC.treeMC.absorbMC.absorbFillMC.y = 90;
};
};
switch (this.absorbState){
case this.ABSORB_NONE:
if (soundAbsorbChannel != null){
soundAbsorbChannel.stop();
soundAbsorbChannel = null;
};
break;
case this.ABSORB_FIND:
this.dyAbsorb = (this.dyAbsorb + this.dySpeed);
this.dySpeed = (this.dySpeed + 2);
if ((this.y - this.dyAbsorb) < -100){
this.isAbsorbing = false;
drawAbsorbLine(0, 0, null, false);
this.absorbState = this.ABSORB_NONE;
this.isAbsorbLock = true;
} else {
drawAbsorbLineFind();
_local1 = this.gameMC.gameEngine.enemyArray;
_local2 = 0;
while (_local2 < _local1.length) {
if (_local1[_local2].isAbsorbable){
if (this.gameMC.gameEngine.isCollidePoint(_local1[_local2], this.x, (this.y - this.dyAbsorb), 5, 5, 0)){
currAbsorbEnemy = _local1[_local2];
this.absorbState = this.ABSORB_FOUND;
absorbTimer = 0;
if (soundAbsorbChannel == null){
if (this.gameMC.jukebox.isMute == false){
soundAbsorbChannel = soundAbsorb.play(0, int.MAX_VALUE, new SoundTransform(0.6, 0));
};
};
break;
};
};
_local2++;
};
};
break;
case this.ABSORB_FOUND:
if (currAbsorbEnemy == null){
this.isAbsorbing = false;
drawAbsorbLine(0, 0, null, false);
this.absorbState = this.ABSORB_NONE;
this.isAbsorbLock = true;
} else {
drawAbsorbLine(this.x, this.y, currAbsorbEnemy, true);
absorbTimer++;
this.gameMC.treeMC.absorbMC.absorbFillMC.y = (90 + ((absorbTimer * -90) / currAbsorbEnemy.absorbTimer));
if (absorbTimer >= currAbsorbEnemy.absorbTimer){
absorbTimer = 0;
this.gameMC.treeMC.absorbMC.finishedAbsorb();
this.optionAbsorbX = currAbsorbEnemy.x;
this.optionAbsorbY = currAbsorbEnemy.y;
this.optionMC = new OptionNormal();
this.optionMC.x = this.optionAbsorbX;
this.optionMC.y = this.optionAbsorbY;
this.optionMC.gotoAndStop(2);
this.optionMC.origWidth = this.optionMC.width;
this.optionMC.origHeight = this.optionMC.height;
this.gameMC.gameEngine.absorbLayer.addChild(this.optionMC);
this.isAbsorbLock = true;
this.absorbState = this.ABSORB_DONE;
if (soundAbsorbChannel != null){
soundAbsorbChannel.stop();
soundAbsorbChannel = null;
};
_local3 = 0;
_local4 = 1;
while (_local4 < this.optionArray.length) {
if (optionArray[_local4].optionTimer < optionArray[_local3].optionTimer){
_local3 = _local4;
};
_local4++;
};
whichOptionAbsorb = _local3;
};
};
break;
case this.ABSORB_DONE:
this.optionAbsorbX = (this.optionAbsorbX + ((optionArray[whichOptionAbsorb].x - this.optionAbsorbX) * 0.25));
this.optionAbsorbY = (this.optionAbsorbY + ((optionArray[whichOptionAbsorb].y - this.optionAbsorbY) * 0.25));
if ((((Math.abs((this.optionAbsorbX - optionArray[whichOptionAbsorb].x)) < 8)) && ((Math.abs((this.optionAbsorbY - optionArray[whichOptionAbsorb].y)) < 8)))){
if (this.gameMC.jukebox.isMute == false){
soundConfirmAbsorb.play(500, 0);
};
if (currAbsorbEnemy.isShielded){
this.shieldMe();
currAbsorbEnemy.unshieldMe();
} else {
optionArray[whichOptionAbsorb].removeAllBulletGenerator();
optionArray[whichOptionAbsorb].addBulletGenerator(currAbsorbEnemy.absorbReward);
};
this.gameMC.gameEngine.absorbLayer.removeChild(this.optionMC);
this.isAbsorbing = false;
drawAbsorbLine(0, 0, null, false);
this.absorbState = this.ABSORB_NONE;
this.isAbsorbLock = false;
} else {
this.optionMC.x = this.optionAbsorbX;
this.optionMC.y = this.optionAbsorbY;
drawAbsorbLine(this.x, this.y, this.optionMC, true);
};
break;
};
}
}
}//package classes
Section 8
//CheckPoint (classes.CheckPoint)
package classes {
public class CheckPoint {
public var posX:int;
public var posY:int;
public var howLong:int;
public var movementMode:int;
public var speed:Number;
public var speedModifier:Number;
public function CheckPoint(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Number, _arg6:int){
this.posX = _arg1;
this.posY = _arg2;
this.howLong = _arg3;
this.speed = _arg4;
this.speedModifier = _arg5;
this.movementMode = _arg6;
}
}
}//package classes
Section 9
//Enemy (classes.Enemy)
package classes {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
public class Enemy extends MovieClip {
public var origWidth:Number;
public var DIFFICULTY_EASY:int;// = 1
public var STATE_KILLED:int;// = 2
public var PARTICLE_LINE:int;// = 3
public var isVulnerable:Boolean;
public var currRotationRadian:Number;
public var absorbTimer:int;
public var MOVEMENT_CONSISTENT:int;// = 1
protected var currCheckPointTimer:int;
public var CHKPOINT_IMMEDIATE:int;// = 9999
public var isQuarterLife:Boolean;
public var rotationMode:int;
public var followEnemy:Boolean;
public var PARTICLE_SMOKE:int;// = 1
public var currLife:int;
public var MOVEMENT_ACCELERATE:int;// = 3
public var explosionMagnitude:int;
public var BULLETMOVE_CONSISTENT:int;// = 1
public var DIFFICULTY_MEDIUM:int;// = 2
public var BULLET_SIMPLE2:int;// = 2
public var maxLife:int;
public var difficultyLevel:int;
public var score:int;
public var howLongSurvive:int;
public var groupNo:int;
public var isShooting:Boolean;
public var shieldMC:ShieldMC;
public var absorbReward:Array;
public var PARTICLE_FAIRY:int;// = 4
public var origHeight:Number;
public var BULLETGENERATOR_RANDOM:int;// = 4
public var incRotate:Number;
protected var startShoot:Boolean;
public var STATE_MOVE:int;// = 1
public var SCORE_SMALL:int;// = 10
public var BULLETGENERATOR_ANGLE:int;// = 3
public var bulletGeneratorArray:Array;
public var isAbsorbable:Boolean;
public var BULLETMOVE_STOP:int;// = 3
public var DIFFICULTY_HARD:int;// = 3
public var gameMC:MovieClip;
public var STATE_OUTOFSTAGE:int;// = 3
public var isHalfLife:Boolean;
public var SCORE_BOSS:int;// = 1000
public var PARTICLE_DAMAGESMOKE:int;// = 2
public var isShielded:Boolean;
public var BULLETGENERATOR_CIRCULAR:int;// = 1
public var isRammable:Boolean;
protected var currCheckPoint:int;
public var isNormalEnemy:Boolean;
public var layer:Sprite;
public var isHittable:Boolean;
public var BULLETGENERATOR_ROTATE:int;// = 2
public var alreadyCreated:Boolean;// = false
public var ROTATION_NONE:int;// = 1
public var BULLET_CANGGIH:int;// = 3
public var SCORE_COMBO:int;// = 5
public var shotAnimationStage:int;
public var currState:int;
public var BULLET_SIMPLE:int;// = 1
public var isHarmful:Boolean;
public var SCORE_BIG:int;// = 100
public var mc:MovieClip;
public var CHKPOINT_END:int;// = -1
public var removeNow:Boolean;
public var MOVEMENT_DECELERATE:int;// = 2
public var MOVEMENT_FOLLOWROTATION:int;// = 4
public var ROTATION_NOTSHOOTING:int;// = 3
public var SCORE_MEDIUM:int;// = 50
public var chkPointArray:Array;
public var ROTATION_ALWAYS:int;// = 2
public var BULLETMOVE_FASTER:int;// = 2
public function Enemy(_arg1:Class, _arg2:int, _arg3:MovieClip){
alreadyCreated = false;
STATE_MOVE = 1;
STATE_KILLED = 2;
STATE_OUTOFSTAGE = 3;
BULLETGENERATOR_CIRCULAR = 1;
BULLETGENERATOR_ROTATE = 2;
BULLETGENERATOR_ANGLE = 3;
BULLETGENERATOR_RANDOM = 4;
BULLET_SIMPLE = 1;
BULLET_SIMPLE2 = 2;
BULLET_CANGGIH = 3;
BULLETMOVE_CONSISTENT = 1;
BULLETMOVE_FASTER = 2;
BULLETMOVE_STOP = 3;
ROTATION_NONE = 1;
ROTATION_ALWAYS = 2;
ROTATION_NOTSHOOTING = 3;
DIFFICULTY_EASY = 1;
DIFFICULTY_MEDIUM = 2;
DIFFICULTY_HARD = 3;
MOVEMENT_CONSISTENT = 1;
MOVEMENT_DECELERATE = 2;
MOVEMENT_ACCELERATE = 3;
MOVEMENT_FOLLOWROTATION = 4;
CHKPOINT_END = -1;
CHKPOINT_IMMEDIATE = 9999;
PARTICLE_SMOKE = 1;
PARTICLE_DAMAGESMOKE = 2;
PARTICLE_LINE = 3;
PARTICLE_FAIRY = 4;
SCORE_SMALL = 10;
SCORE_MEDIUM = 50;
SCORE_BIG = 100;
SCORE_BOSS = 1000;
SCORE_COMBO = 5;
super();
this.gameMC = _arg3;
this.mc = new (_arg1);
this.addChild(this.mc);
this.rotationMode = this.ROTATION_NONE;
this.isShooting = false;
this.followEnemy = false;
this.chkPointArray = new Array();
this.bulletGeneratorArray = new Array();
this.currCheckPoint = 0;
this.currCheckPointTimer = 0;
this.currState = this.STATE_MOVE;
this.startShoot = false;
this.currRotationRadian = 0;
this.incRotate = 0;
this.origWidth = (this.width * 0.8);
this.origHeight = (this.height * 0.8);
this.removeNow = false;
setLife(10, true);
this.absorbTimer = 20;
this.absorbReward = new Array();
this.shotAnimationStage = 0;
this.isHalfLife = false;
this.isQuarterLife = false;
this.isNormalEnemy = true;
this.isVulnerable = true;
this.difficultyLevel = _arg2;
this.explosionMagnitude = 1;
this.layer = this.gameMC.gameEngine.shipLayer;
this.groupNo = 0;
this.isHarmful = true;
this.isShielded = false;
this.isRammable = false;
this.isAbsorbable = true;
this.isHittable = true;
this.score = SCORE_SMALL;
this.howLongSurvive = 0;
}
public function addParticleGenerator(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
var _local6:Array;
_local6 = this.gameMC.gameEngine.particleGeneratorArray;
switch (_arg1){
case this.PARTICLE_SMOKE:
_local6.push(new ParticleGeneratorSmoke(_arg2, _arg3, this, _arg4, _arg5, this.gameMC));
break;
case this.PARTICLE_DAMAGESMOKE:
_local6.push(new ParticleGeneratorDamageSmoke(_arg2, _arg3, this, _arg4, _arg5, this.gameMC));
break;
case this.PARTICLE_LINE:
_local6.push(new ParticleGeneratorLine(_arg2, _arg3, this, _arg4, _arg5, this.gameMC));
break;
case this.PARTICLE_FAIRY:
_local6.push(new ParticleGeneratorFairy(_arg2, _arg3, this, _arg4, _arg5, this.gameMC));
break;
};
}
public function beingShot(_arg1:Bullet){
if (isVulnerable){
this.currLife = (this.currLife - _arg1.damage);
if (this.currLife <= 0){
if (this.currState == this.STATE_MOVE){
killMe();
};
} else {
if (this.shotAnimationStage == 0){
this.shotAnimationStage = 1;
};
if (this.isNormalEnemy){
if (this.isHalfLife){
if (this.isQuarterLife){
} else {
if (this.currLife <= (this.maxLife / 4)){
this.isQuarterLife = true;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, (Math.random() * (this.origWidth / 2)), ((Math.random() * this.origHeight) - (this.origHeight / 2)), true, true);
};
};
} else {
if (this.currLife <= (this.maxLife / 2)){
this.isHalfLife = true;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, (0 - (Math.random() * (this.origWidth / 2))), ((Math.random() * this.origHeight) - (this.origHeight / 2)), true, true);
};
};
};
};
};
}
public function removeAllBullets(){
var _local1:Array;
var _local2:*;
_local1 = this.gameMC.gameEngine.bulletArray;
_local2 = (_local1.length - 1);
while (_local2 >= 0) {
if (_local1[_local2].isYours == false){
_local1[_local2].currState = _local1[_local2].STATE_DIE;
};
_local2--;
};
}
public function setLife(_arg1:int, _arg2:Boolean){
if (_arg2){
this.maxLife = _arg1;
};
this.currLife = _arg1;
}
public function unshieldMe(){
this.isShielded = false;
this.removeChild(shieldMC);
}
public function addCheckPoint(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Number, _arg6:int){
var _local7:CheckPoint;
if (this.chkPointArray.length == 0){
this.x = _arg1;
this.y = _arg2;
gameMC.gameEngine.shipLayer.addChild(this);
};
_local7 = new CheckPoint(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
this.chkPointArray.push(_local7);
}
public function addBulletGenerator(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Boolean, _arg6:Boolean, _arg7:Number, _arg8:int, _arg9:int, _arg10:int, _arg11:int, _arg12:Class, _arg13:int, _arg14:Number, ... _args){
switch (_arg1){
case BULLETGENERATOR_CIRCULAR:
this.bulletGeneratorArray.push(new BulletGeneratorCircular(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, false, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1]));
break;
case BULLETGENERATOR_ROTATE:
this.bulletGeneratorArray.push(new BulletGeneratorRotate(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, false, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1]));
break;
case BULLETGENERATOR_ANGLE:
this.bulletGeneratorArray.push(new BulletGeneratorAngle(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, false, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1], _args[2]));
break;
case BULLETGENERATOR_RANDOM:
this.bulletGeneratorArray.push(new BulletGeneratorRandom(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, false, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1], _args[2]));
break;
};
}
public function addNiceExplosion(_arg1:Number, _arg2:Number){
var _local3:Point;
_local3 = this.localToGlobal(new Point(_arg1, _arg2));
this.gameMC.gameEngine.addExplosion(_local3.x, _local3.y, 2, false);
}
public function addNiceExplosionFairy(_arg1:Number, _arg2:Number){
var _local3:Point;
_local3 = this.localToGlobal(new Point(_arg1, _arg2));
this.gameMC.gameEngine.addExplosion(_local3.x, _local3.y, 2, true);
}
public function shieldMe(){
this.isShielded = true;
shieldMC = new ShieldMC();
shieldMC.x = 0;
shieldMC.y = 0;
this.addChild(shieldMC);
}
public function animateShot(){
var _local1:sndReflect;
switch (this.shotAnimationStage){
case 0:
break;
case 1:
this.filters = [new ColorMatrixFilter([1.5, 0, 0, 0, 0, 0, 1.5, 0, 0, 0, 0, 0, 1.5, 0, 0, 0, 0, 0, 1, 0])];
if (this.gameMC.gameEngine.bossLifeMC.y > 0){
this.gameMC.gameEngine.bossLifeMC.bossLifeBgMC.filters = [new ColorMatrixFilter([1.5, 0, 0, 0, 0, 0, 1.5, 0, 0, 0, 0, 0, 1.5, 0, 0, 0, 0, 0, 1, 0])];
};
this.shotAnimationStage = 2;
if (this.gameMC.jukebox.isMute == false){
_local1 = new sndReflect();
_local1.play(0, 0, new SoundTransform(0.5, 0));
};
break;
case 2:
this.filters = null;
this.gameMC.gameEngine.bossLifeMC.bossLifeBgMC.filters = null;
this.shotAnimationStage = 0;
break;
};
}
public function specialrender(){
}
public function getBulletGenerator(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Boolean, _arg6:Boolean, _arg7:Number, _arg8:int, _arg9:int, _arg10:int, _arg11:int, _arg12:Class, _arg13:int, _arg14:Number, ... _args):BulletGenerator{
switch (_arg1){
case BULLETGENERATOR_CIRCULAR:
return (new BulletGeneratorCircular(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1]));
case BULLETGENERATOR_ROTATE:
return (new BulletGeneratorRotate(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1]));
case BULLETGENERATOR_ANGLE:
return (new BulletGeneratorAngle(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1], _args[2]));
case BULLETGENERATOR_RANDOM:
return (new BulletGeneratorRandom(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, true, _arg11, _arg12, this, _arg13, _arg14, _args[0], _args[1], _args[2]));
default:
return (null);
};
}
public function render(){
var _local1:Number;
var _local2:CheckPoint;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:*;
this.howLongSurvive++;
if (this.isNormalEnemy){
if (this.followEnemy){
_local1 = Math.atan2((gameMC.gameEngine.yourShip.y - this.y), (gameMC.gameEngine.yourShip.x - this.x));
this.rotation = (((_local1 * 180) / Math.PI) - 90);
};
animateShot();
switch (this.currState){
case this.STATE_MOVE:
specialrender();
_local2 = this.chkPointArray[this.currCheckPoint];
this.currCheckPointTimer++;
if ((((this.currCheckPointTimer > _local2.howLong)) && (!((_local2.howLong == -1))))){
this.currCheckPoint++;
this.currCheckPointTimer = 0;
} else {
switch (_local2.movementMode){
case this.MOVEMENT_CONSISTENT:
_local4 = (_local2.posX - this.x);
_local5 = (_local2.posY - this.y);
_local3 = Math.atan2(_local5, _local4);
_local6 = (Math.cos(_local3) * _local2.speed);
_local7 = (Math.sin(_local3) * _local2.speed);
if (Math.abs(_local4) > Math.abs(_local6)){
this.x = (this.x + (Math.cos(_local3) * _local2.speed));
} else {
this.x = _local2.posX;
};
if (Math.abs(_local5) > Math.abs(_local7)){
this.y = (this.y + (Math.sin(_local3) * _local2.speed));
} else {
this.y = _local2.posY;
};
break;
case this.MOVEMENT_DECELERATE:
this.x = (this.x + ((_local2.posX - this.x) * _local2.speedModifier));
this.y = (this.y + ((_local2.posY - this.y) * _local2.speedModifier));
break;
case this.MOVEMENT_ACCELERATE:
_local4 = (_local2.posX - this.x);
_local5 = (_local2.posY - this.y);
_local3 = Math.atan2(_local5, _local4);
_local6 = (Math.cos(_local3) * _local2.speed);
_local7 = (Math.sin(_local3) * _local2.speed);
if (_local4 > _local6){
this.x = (this.x + (Math.cos(_local3) * _local2.speed));
} else {
this.x = _local2.posX;
};
if (_local5 > _local7){
this.y = (this.y + (Math.sin(_local3) * _local2.speed));
} else {
this.y = _local2.posY;
};
_local2.speed = (_local2.speed * (1 + _local2.speedModifier));
break;
case this.MOVEMENT_FOLLOWROTATION:
_local8 = Math.atan2((_local2.posY - this.y), (_local2.posX - this.x));
_local9 = (_local8 - this.currRotationRadian);
if (Math.abs(_local9) > Math.PI){
if (_local8 > Math.PI){
_local8 = (_local8 - (2 * Math.PI));
} else {
_local8 = (_local8 + (2 * Math.PI));
};
_local9 = (_local8 - this.currRotationRadian);
};
if (this.incRotate > Math.abs(_local9)){
this.currRotationRadian = _local8;
} else {
if (_local8 > this.currRotationRadian){
this.currRotationRadian = (this.currRotationRadian + this.incRotate);
} else {
this.currRotationRadian = (this.currRotationRadian - this.incRotate);
};
if (this.currRotationRadian > (2 * Math.PI)){
this.currRotationRadian = (this.currRotationRadian - (2 * Math.PI));
} else {
if (this.currRotationRadian < 0){
this.currRotationRadian = (this.currRotationRadian + (2 * Math.PI));
};
};
};
this.rotation = (((this.currRotationRadian * 180) / Math.PI) - 90);
this.x = (this.x + (_local2.speed * Math.cos(this.currRotationRadian)));
this.y = (this.y + (_local2.speed * Math.sin(this.currRotationRadian)));
break;
};
if (this.currCheckPoint == 1){
if ((((Math.abs((_local2.posX - this.x)) < 10)) && ((Math.abs((_local2.posY - this.y)) < 10)))){
startShoot = true;
};
};
if (((this.startShoot) && (((!((_local2.howLong == this.CHKPOINT_END))) || ((_local2.movementMode == this.MOVEMENT_FOLLOWROTATION)))))){
_local10 = 0;
while (_local10 < this.bulletGeneratorArray.length) {
this.bulletGeneratorArray[_local10].render();
_local10++;
};
};
if (_local2.howLong == this.CHKPOINT_END){
if (this.gameMC.gameEngine.isInside(this)){
} else {
this.currState = this.STATE_OUTOFSTAGE;
};
} else {
if (_local2.howLong == this.CHKPOINT_IMMEDIATE){
if ((((Math.abs((_local2.posX - this.x)) < 40)) && ((Math.abs((_local2.posY - this.y)) < 40)))){
this.currCheckPoint++;
this.currCheckPointTimer = 0;
};
};
};
};
break;
case this.STATE_KILLED:
this.currState = this.STATE_OUTOFSTAGE;
break;
case this.STATE_OUTOFSTAGE:
break;
};
} else {
if (this.followEnemy){
_local1 = Math.atan2((gameMC.gameEngine.yourShip.y - this.y), (gameMC.gameEngine.yourShip.x - this.x));
this.rotation = (((_local1 * 180) / Math.PI) - 90);
};
specialrender();
animateShot();
_local10 = 0;
while (_local10 < this.bulletGeneratorArray.length) {
this.bulletGeneratorArray[_local10].render();
_local10++;
};
};
}
public function killMe(){
var _local1:Number;
var _local2:int;
this.currState = this.STATE_KILLED;
this.gameMC.gameEngine.addExplosion(this.x, this.y, this.explosionMagnitude, false);
if (this.gameMC.gameEngine.currLevel != 0){
_local1 = 1;
if (this.gameMC.gameEngine.yourShip.currLife > this.gameMC.gameEngine.yourShip.MAX_LIFE){
_local1 = 0.5;
};
this.gameMC.gameEngine.addScore("ENEMY DESTROYED", (((this.score * this.difficultyLevel) * this.gameMC.gameEngine.currLevel) * _local1));
if (this.gameMC.gameEngine.prevEnemyGroupNo == this.groupNo){
this.gameMC.gameEngine.enemyGroupCombo++;
this.gameMC.gameEngine.addScore((this.gameMC.gameEngine.enemyGroupCombo + "X COMBO"), (((SCORE_COMBO * this.gameMC.gameEngine.enemyGroupCombo) * this.difficultyLevel) * _local1));
} else {
this.gameMC.gameEngine.enemyGroupCombo = 1;
this.gameMC.gameEngine.prevEnemyGroupNo = this.groupNo;
};
_local2 = (((this.maxLife * 20) - this.howLongSurvive) / 10);
if (_local2 > 0){
this.gameMC.gameEngine.addScore("TIME BONUS", ((_local2 * this.difficultyLevel) * _local1));
};
};
}
public function removeAllBulletGenerator(){
var _local1:int;
_local1 = (this.bulletGeneratorArray.length - 1);
while (_local1 >= 0) {
this.bulletGeneratorArray[_local1] = null;
this.bulletGeneratorArray.splice(_local1, 1);
_local1--;
};
}
}
}//package classes
Section 10
//EnemyAtoB (classes.EnemyAtoB)
package classes {
import flash.display.*;
public class EnemyAtoB extends Enemy {
public function EnemyAtoB(_arg1:Class, _arg2:int, _arg3:MovieClip, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int){
var _local9:Number;
super(_arg1, _arg2, _arg3);
this.addCheckPoint(_arg5, _arg6, 0, 0, 0, 0);
this.addCheckPoint(_arg7, _arg8, this.CHKPOINT_IMMEDIATE, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.addCheckPoint(_arg7, _arg8, this.CHKPOINT_END, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.currRotationRadian = Math.atan2((_arg8 - _arg6), (_arg7 - _arg5));
this.rotationMode = this.ROTATION_NONE;
_local9 = ((this.currRotationRadian * 180) / Math.PI);
this.rotation = _local9;
this.startShoot = true;
}
override public function specialrender(){
}
}
}//package classes
Section 11
//EnemyScanAndGo (classes.EnemyScanAndGo)
package classes {
import flash.display.*;
import flash.events.*;
public class EnemyScanAndGo extends Enemy {
public function EnemyScanAndGo(_arg1:Class, _arg2:int, _arg3:MovieClip, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int, _arg9:Number, _arg10:int, _arg11:int){
var _local12:int;
super(_arg1, _arg2, _arg3);
_local12 = ((_arg9 > 0)) ? this.MOVEMENT_DECELERATE : this.MOVEMENT_CONSISTENT;
if (_arg4 < (_arg3.STAGE_WIDTH / 2)){
this.addCheckPoint(_arg4, (0 - this.height), 0, 0, 0, 0);
this.addCheckPoint(_arg4, _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint(_arg6, _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint((_arg3.STAGE_WIDTH - _arg6), _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint(_arg6, _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint(_arg6, (_arg3.STAGE_HEIGHT + this.height), this.CHKPOINT_END, _arg11, _arg9, this.MOVEMENT_CONSISTENT);
this.rotationMode = _arg10;
} else {
this.addCheckPoint(_arg4, (0 - this.height), 0, 0, 0, 0);
this.addCheckPoint(_arg4, _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint((_arg3.STAGE_WIDTH - _arg6), _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint(_arg6, _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint((_arg3.STAGE_WIDTH - _arg6), _arg5, _arg8, _arg7, _arg9, _local12);
this.addCheckPoint((_arg3.STAGE_WIDTH - _arg6), (_arg3.STAGE_HEIGHT + this.height), this.CHKPOINT_END, _arg11, _arg9, this.MOVEMENT_CONSISTENT);
this.rotationMode = _arg10;
};
}
override public function specialrender(){
}
}
}//package classes
Section 12
//EnemyStopAndGo (classes.EnemyStopAndGo)
package classes {
import flash.display.*;
public class EnemyStopAndGo extends Enemy {
public function EnemyStopAndGo(_arg1:Class, _arg2:int, _arg3:MovieClip, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int, _arg9:int, _arg10:int, _arg11:Number, _arg12:int, _arg13:int){
super(_arg1, _arg2, _arg3);
this.addCheckPoint(_arg4, _arg5, 0, 0, 0, 0);
this.addCheckPoint(_arg6, _arg7, _arg10, 0, _arg11, this.MOVEMENT_DECELERATE);
this.addCheckPoint(_arg8, _arg9, this.CHKPOINT_END, _arg13, 0, this.MOVEMENT_CONSISTENT);
this.rotationMode = _arg12;
}
override public function specialrender(){
}
}
}//package classes
Section 13
//EnemyZPattern (classes.EnemyZPattern)
package classes {
import flash.display.*;
import flash.events.*;
public class EnemyZPattern extends Enemy {
public function EnemyZPattern(_arg1:Class, _arg2:int, _arg3:MovieClip, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int, _arg9:Number, _arg10:Boolean){
var _local11:Number;
super(_arg1, _arg2, _arg3);
if (_arg10){
this.addCheckPoint(_arg5, _arg6, 0, 0, 0, 0);
this.addCheckPoint((_arg3.STAGE_WIDTH - _arg7), (_arg6 + _arg8), this.CHKPOINT_IMMEDIATE, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.addCheckPoint(_arg7, ((_arg6 + _arg8) + _arg8), this.CHKPOINT_IMMEDIATE, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.addCheckPoint((_arg3.STAGE_WIDTH + (this.width * 2)), (((_arg6 + _arg8) + _arg8) + _arg8), this.CHKPOINT_END, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.currRotationRadian = 0;
} else {
this.addCheckPoint(_arg5, _arg6, 0, 0, 0, 0);
this.addCheckPoint(_arg7, (_arg6 + _arg8), this.CHKPOINT_IMMEDIATE, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.addCheckPoint((_arg3.STAGE_WIDTH - _arg7), ((_arg6 + _arg8) + _arg8), this.CHKPOINT_IMMEDIATE, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.addCheckPoint((0 - (this.width * 2)), (((_arg6 + _arg8) + _arg8) + _arg8), this.CHKPOINT_END, _arg4, 0, this.MOVEMENT_FOLLOWROTATION);
this.currRotationRadian = Math.PI;
};
this.rotationMode = this.ROTATION_NONE;
this.incRotate = _arg9;
_local11 = ((this.currRotationRadian * 180) / Math.PI);
this.rotation = _local11;
this.startShoot = true;
}
override public function specialrender(){
}
}
}//package classes
Section 14
//Jukebox (classes.Jukebox)
package classes {
import flash.display.*;
import flash.events.*;
import flash.media.*;
public class Jukebox {
public var soundLvl2Fast:sndLvl2Fast;
public var EVENT_TUTORIAL:int;// = 14
public var EVENT_MENU:int;// = 1
public var currEvent:int;
public var EVENT_NOSOUND:int;// = 0
public var currSound:Sound;
public var soundTutorial:sndTutorial;
public var EVENT_LEVEL1FAST:int;// = 3
public var EVENT_LEVEL4FAST:int;// = 9
public var EVENT_BOSSSLOW:int;// = 10
public var soundLvl3Fast:sndLvl3Fast;
public var soundLvl4Fast:sndLvl4Fast;
public var EVENT_LEVEL2FAST:int;// = 5
public var soundBossFast:sndBossFast;
public var c1PrevVol:Number;
public var soundBossVerySlow:sndBossVerySlow;
public var channel1:SoundChannel;
public var EVENT_LEVEL3FAST:int;// = 7
public var soundLvl3Slow:sndLvl3Slow;
public var EVENT_BOSSVERYFAST:int;// = 12
public var prevEvent:int;
public var soundLvl4Slow:sndLvl4Slow;
public var c2CurrVol:Number;
public var soundLvl1Slow:sndLvl1Slow;
public var soundLvl2Slow:sndLvl2Slow;
public var channel2:SoundChannel;
public var EVENT_LEVEL1SLOW:int;// = 2
public var EVENT_LEVEL2SLOW:int;// = 4
public var EVENT_LEVEL3SLOW:int;// = 6
public var EVENT_LEVEL4SLOW:int;// = 8
public var c1CurrVol:Number;
public var soundBossSlow:sndBossSlow;
public var EVENT_REALLYNOSOUND:int;// = -1
public var baseMC:MovieClip;
public var soundLvl1Fast:sndLvl1Fast;
public var soundHurricane:sndHurricane;
public var FADE_IN:Number;// = 0.05
public var savedSound:Sound;
public var nextSound:Sound;
public var isMute:Boolean;
public var EVENT_BOSSFAST:int;// = 11
public var c2PrevVol:Number;
public var FADE_OUT:Number;// = 0.005
public var soundBossVeryFast:sndBossVeryFast;
public var EVENT_BOSSDEAD:int;// = 13
public var prevIsMute:Boolean;
public function Jukebox(_arg1:MovieClip){
EVENT_REALLYNOSOUND = -1;
EVENT_NOSOUND = 0;
EVENT_MENU = 1;
EVENT_LEVEL1SLOW = 2;
EVENT_LEVEL1FAST = 3;
EVENT_LEVEL2SLOW = 4;
EVENT_LEVEL2FAST = 5;
EVENT_LEVEL3SLOW = 6;
EVENT_LEVEL3FAST = 7;
EVENT_LEVEL4SLOW = 8;
EVENT_LEVEL4FAST = 9;
EVENT_BOSSSLOW = 10;
EVENT_BOSSFAST = 11;
EVENT_BOSSVERYFAST = 12;
EVENT_BOSSDEAD = 13;
EVENT_TUTORIAL = 14;
FADE_IN = 0.05;
FADE_OUT = 0.005;
super();
soundHurricane = new sndHurricane();
soundLvl1Slow = new sndLvl1Slow();
soundLvl1Fast = new sndLvl1Fast();
soundLvl2Slow = new sndLvl2Slow();
soundLvl2Fast = new sndLvl2Fast();
soundLvl3Slow = new sndLvl3Slow();
soundLvl3Fast = new sndLvl3Fast();
soundLvl4Slow = new sndLvl4Slow();
soundLvl4Fast = new sndLvl4Fast();
soundBossSlow = new sndBossSlow();
soundBossFast = new sndBossFast();
soundBossVeryFast = new sndBossVeryFast();
soundBossVerySlow = new sndBossVerySlow();
soundTutorial = new sndTutorial();
currEvent = EVENT_NOSOUND;
prevEvent = EVENT_NOSOUND;
this.baseMC = _arg1;
this.baseMC.addEventListener(Event.ENTER_FRAME, doEveryFrame);
currSound = null;
nextSound = null;
channel1 = null;
channel2 = null;
isMute = false;
prevIsMute = false;
}
public function doEveryFrame(_arg1:Event){
processMusic();
if (prevEvent != currEvent){
prevEvent = currEvent;
if (currEvent == EVENT_NOSOUND){
currSound = null;
nextSound = null;
} else {
if (currEvent == EVENT_REALLYNOSOUND){
currSound = null;
nextSound = null;
if (channel1 != null){
channel1.stop();
channel1 = null;
};
if (channel2 != null){
channel2.stop();
channel2 = null;
};
} else {
switch (currEvent){
case EVENT_MENU:
nextSound = soundHurricane;
break;
case EVENT_TUTORIAL:
nextSound = soundTutorial;
break;
case EVENT_LEVEL1SLOW:
nextSound = soundLvl1Slow;
break;
case EVENT_LEVEL1FAST:
nextSound = soundLvl1Fast;
break;
case EVENT_LEVEL2SLOW:
nextSound = soundLvl2Slow;
break;
case EVENT_LEVEL2FAST:
nextSound = soundLvl2Fast;
break;
case EVENT_LEVEL3SLOW:
nextSound = soundLvl3Slow;
break;
case EVENT_LEVEL3FAST:
nextSound = soundLvl3Fast;
break;
case EVENT_LEVEL4SLOW:
nextSound = soundLvl4Slow;
break;
case EVENT_LEVEL4FAST:
nextSound = soundLvl4Fast;
break;
case EVENT_BOSSSLOW:
nextSound = soundBossSlow;
break;
case EVENT_BOSSFAST:
nextSound = soundBossFast;
break;
case EVENT_BOSSVERYFAST:
nextSound = soundBossVeryFast;
break;
case EVENT_BOSSDEAD:
nextSound = soundBossVerySlow;
break;
};
if (((!((channel1 == null))) && (!((channel2 == null))))){
channel1.stop();
channel1 = channel2;
channel2 = null;
} else {
if ((((channel1 == null)) && ((channel2 == null)))){
currSound = nextSound;
nextSound = null;
} else {
if (((!((channel1 == null))) && ((currSound == null)))){
channel1.stop();
channel1 = null;
currSound = nextSound;
nextSound = null;
};
};
};
};
};
};
}
public function processMusic(){
var _local1:int;
var _local2:int;
if (currSound == null){
if (channel1 == null){
} else {
if ((c1CurrVol - FADE_OUT) < 0){
channel1.stop();
channel1 = null;
} else {
c1CurrVol = (c1CurrVol - FADE_OUT);
};
};
} else {
if (channel1 == null){
c1CurrVol = 0.3;
c1PrevVol = 0;
if (isMute){
channel1 = currSound.play(0, int.MAX_VALUE, new SoundTransform(0, 0));
} else {
channel1 = currSound.play(0, int.MAX_VALUE, new SoundTransform(c1CurrVol, 0));
};
} else {
if (channel2 == null){
if ((c1CurrVol + FADE_IN) >= getMaxVolume(currSound)){
c1CurrVol = getMaxVolume(currSound);
} else {
c1CurrVol = (c1CurrVol + FADE_IN);
};
};
};
};
if (nextSound == null){
if (channel1 == null){
};
if (channel2 == null){
} else {
channel2.stop();
channel2 = null;
};
} else {
if (channel2 == null){
c2CurrVol = 0.3;
c2PrevVol = 0;
if (isMute){
channel2 = nextSound.play(0, int.MAX_VALUE, new SoundTransform(0, 0));
} else {
_local1 = (channel1.position % currSound.length);
_local2 = ((_local1 <= nextSound.length)) ? _local1 : 0;
if ((((((currEvent == EVENT_LEVEL1FAST)) || ((currEvent == EVENT_LEVEL3FAST)))) || ((currEvent == EVENT_LEVEL4FAST)))){
} else {
_local2 = 0;
};
if (_local2 == 0){
channel2 = nextSound.play(0, int.MAX_VALUE, new SoundTransform(c2CurrVol, 0));
} else {
channel2 = nextSound.play(_local1, 0, new SoundTransform(c2CurrVol, 0));
channel2.addEventListener(Event.SOUND_COMPLETE, onComplete);
savedSound = nextSound;
};
};
} else {
if (channel1 == null){
c2CurrVol = 1;
channel1 = channel2;
channel2 = null;
currSound = nextSound;
nextSound = null;
} else {
if ((c2CurrVol + FADE_IN) >= getMaxVolume(nextSound)){
c2CurrVol = getMaxVolume(nextSound);
c1CurrVol = getMaxVolume(nextSound);
c1PrevVol = -1;
channel1.stop();
channel1 = channel2;
channel2 = null;
currSound = nextSound;
nextSound = null;
} else {
c2CurrVol = (c2CurrVol + FADE_IN);
c1CurrVol = (1 - c2CurrVol);
};
};
};
};
if (channel1 != null){
if (isMute){
if (prevIsMute){
} else {
prevIsMute = true;
channel1.soundTransform = new SoundTransform(0, 0);
};
} else {
if (prevIsMute){
prevIsMute = false;
c1PrevVol = c1CurrVol;
channel1.soundTransform = new SoundTransform(c1CurrVol, 0);
} else {
if (c1PrevVol != c1CurrVol){
c1PrevVol = c1CurrVol;
channel1.soundTransform = new SoundTransform(c1CurrVol, 0);
};
};
};
};
if (channel2 != null){
if (isMute){
if (prevIsMute){
} else {
prevIsMute = true;
channel2.soundTransform = new SoundTransform(0, 0);
};
} else {
if (prevIsMute){
prevIsMute = false;
c2PrevVol = c2CurrVol;
channel2.soundTransform = new SoundTransform(c2CurrVol, 0);
} else {
if (c2PrevVol != c2CurrVol){
c2PrevVol = c2CurrVol;
channel2.soundTransform = new SoundTransform(c2CurrVol, 0);
};
};
};
};
}
public function onComplete(_arg1:Event){
_arg1.target.removeEventListener(Event.SOUND_COMPLETE, onComplete);
if (nextSound == null){
channel1.stop();
channel1 = null;
if (isMute){
channel1 = savedSound.play(0, int.MAX_VALUE, new SoundTransform(0, 0));
} else {
channel1 = savedSound.play(0, int.MAX_VALUE, new SoundTransform(c1CurrVol, 0));
};
} else {
channel2.stop();
channel2 = null;
if (isMute){
channel2 = savedSound.play(0, int.MAX_VALUE, new SoundTransform(0, 0));
} else {
channel2 = savedSound.play(0, int.MAX_VALUE, new SoundTransform(c2CurrVol, 0));
};
};
}
public function getMaxVolume(_arg1:Sound):Number{
switch (_arg1){
case soundLvl2Slow:
return (0.6);
case soundLvl2Fast:
return (0.6);
default:
return (1);
};
}
}
}//package classes
Section 15
//Lvl0Medium (classes.Lvl0Medium)
package classes {
import flash.display.*;
public class Lvl0Medium extends EnemyScanAndGo {
public function Lvl0Medium(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl1MediumEnemy, _arg1, _arg2, _arg3, _arg4, 100, 3, int.MAX_VALUE, 0.05, this.ROTATION_ALWAYS, 6);
this.groupNo = 4;
this.origWidth = 70;
this.origHeight = 50;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 15, 9, false, false, 5, 0, -20, 0, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 1, 8, 280));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 15, 9, false, false, 5, 0, 20, 0, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 1, 8, 260));
this.addParticleGenerator(this.PARTICLE_SMOKE, -39, -15, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 39, -15, true, false);
this.setLife(50, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_MEDIUM;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 5, 0, 38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 5, 0, -38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
}
}
}//package classes
Section 16
//Lvl0SmallDozer (classes.Lvl0SmallDozer)
package classes {
import flash.display.*;
public class Lvl0SmallDozer extends EnemyStopAndGo {
public function Lvl0SmallDozer(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl1SmallEnemy1, _arg1, _arg2, _arg3, -50, _arg3, _arg4, _arg3, 600, int.MAX_VALUE, 0.1, this.ROTATION_NONE, 6);
this.groupNo = 3;
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -28, true, false);
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 25, 9, false, false, 5, 0, 0, -3, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 1, 10, 270));
this.setLife(10, true);
this.absorbTimer = this.currLife;
}
}
}//package classes
Section 17
//Lvl1Big (classes.Lvl1Big)
package classes {
import flash.display.*;
import flash.events.*;
public class Lvl1Big extends EnemyStopAndGo {
public function Lvl1Big(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl1BigEnemy, _arg1, _arg2, _arg3, -50, _arg3, _arg4, _arg3, 650, 1000, 0.01, this.ROTATION_NONE, 6);
this.groupNo = 5;
this.origWidth = 190;
this.origHeight = 86;
this.startShoot = true;
this.explosionMagnitude = 2;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 9, false, false, 5, 0, 0, 0, 5, BulletSimpleMissileFriendly, BULLETMOVE_CONSISTENT, 0, 1, 8, 270));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 25, 7, false, false, 5, 0, 0, 0, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 3, 5, 270));
this.setLife(100, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_BIG;
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -73, true, false);
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 150, 150, 6, false, false, 5, this.PARTICLE_DAMAGESMOKE, 24, 60, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 150, 150, 6, false, false, 5, this.PARTICLE_DAMAGESMOKE, -19, 60, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, 24, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 5, 15, 50);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, -19, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 5, 15, 130);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 150, 150, 6, false, false, 5, this.PARTICLE_DAMAGESMOKE, 24, 60, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 150, 150, 6, false, false, 5, this.PARTICLE_DAMAGESMOKE, -19, 60, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, 24, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 5, 15, 50);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, -19, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 5, 15, 130);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 4, false, false, 5, 0, 24, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 4, 15, 60);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 4, false, false, 5, 0, -19, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 4, 15, 120);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 150, 150, 6, false, false, 5, this.PARTICLE_DAMAGESMOKE, 24, 60, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 150, 150, 6, false, false, 5, this.PARTICLE_DAMAGESMOKE, -19, 60, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, 24, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 10, 50);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, -19, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 10, 130);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 4, false, false, 5, 0, 24, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 10, 60);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 4, false, false, 5, 0, -19, 60, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 10, 120);
break;
};
}
override public function specialrender(){
this.mc.blade1MC.rotation = (this.mc.blade1MC.rotation + 5);
this.mc.blade2MC.rotation = (this.mc.blade2MC.rotation - 5);
}
}
}//package classes
Section 18
//Lvl1Boss (classes.Lvl1Boss)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Lvl1Boss extends Enemy {
public var PHASE_ATTACK3:int;// = 7
public var PHASE_ATTACK4:int;// = 9
public var currBallAngle:Number;
public var PHASE_ATTACK2:int;// = 5
public var explosionTimerMax:int;
public var PHASE_ATTACK1:int;// = 3
public var SUPER_ATTACK2:int;// = 998
public var ballStringLayer:Sprite;
public var SUPER_ATTACK3:int;// = 997
public var currPhase:int;
public var PHASE_DEATH:int;// = 11
public var ballAttackTimer:int;
public var posX:Number;
public var posY:Number;
public var ballLayer:Sprite;
public var centerY:int;
public var appearTimer:int;
public var centerX:int;
public var explosionNumber:int;
public var SHAKE:Number;// = 0.2
public var PHASE_ARRIVAL:int;// = 1
public var PHASE_INTERMISSION2:int;// = 6
public var PHASE_INTERMISSION3:int;// = 8
public var PHASE_INTERMISSION4:int;// = 10
public var totalBallAngle:Number;
public var readyBallAttack:Boolean;
public var currFloatAnimX:Number;
public var currFloatAnimY:Number;
public var PHASE_INTERMISSION1:int;// = 4
public var explosionTimer:int;
public var ORIG_INCBALLANGLE:Number;// = -0.14
public var SHAKE_DIST:int;// = 15
public var floatAnimX:Number;
public var floatAnimY:Number;
public var PHASE_BALLAPPEARS:int;// = 2
public var SUPER_ATTACK:int;// = 999
public var currBallLength:Number;
public var incBallAngle:Number;
public var ballMC:Enemy;
public var BALLATTACK_TIMER:int;// = 150
public function Lvl1Boss(_arg1:int, _arg2:MovieClip){
PHASE_ARRIVAL = 1;
PHASE_BALLAPPEARS = 2;
PHASE_ATTACK1 = 3;
PHASE_INTERMISSION1 = 4;
PHASE_ATTACK2 = 5;
PHASE_INTERMISSION2 = 6;
PHASE_ATTACK3 = 7;
PHASE_INTERMISSION3 = 8;
PHASE_ATTACK4 = 9;
PHASE_INTERMISSION4 = 10;
PHASE_DEATH = 11;
SUPER_ATTACK = 999;
SUPER_ATTACK2 = 998;
SUPER_ATTACK3 = 997;
SHAKE = 0.2;
SHAKE_DIST = 15;
BALLATTACK_TIMER = 150;
ORIG_INCBALLANGLE = -0.14;
super(Lvl1BossEnemy, _arg1, _arg2);
this.groupNo = 6;
this.origWidth = 120;
this.origHeight = 70;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, 0, 0, 0, 5, BulletSimpleMissileFriendly, BULLETMOVE_CONSISTENT, 0, 1, 8, 270));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 15, 50, 8, false, false, 5, 0, 0, 0, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 6, 8, 270));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 30, 50, 8, false, false, 5, 0, 0, 0, 2, BulletDrillFriendly, BULLETMOVE_CONSISTENT, 0, 4, 8, 270));
this.setLife(1000, true);
this.absorbTimer = 150;
this.score = this.SCORE_BOSS;
this.currPhase = this.PHASE_ARRIVAL;
this.scaleX = 0.1;
this.scaleY = 0.1;
this.x = (this.gameMC.STAGE_WIDTH / 2);
this.y = -150;
this.posX = this.x;
this.posY = this.y;
this.gameMC.gameEngine.shipLayer.addChild(this);
this.isNormalEnemy = false;
this.ballMC = new Enemy(Lvl1BossEnemy_ball, _arg1, _arg2);
this.ballMC.isNormalEnemy = false;
this.ballMC.isVulnerable = false;
this.ballMC.absorbTimer = 1000;
this.incBallAngle = ORIG_INCBALLANGLE;
this.currBallAngle = 0;
this.currBallLength = 100;
this.ballMC.alpha = 0;
this.gameMC.gameEngine.enemyArray.push(this.ballMC);
this.ballMC.isAbsorbable = false;
this.ballStringLayer = new Sprite();
this.ballStringLayer.x = 0;
this.ballStringLayer.y = 0;
this.gameMC.addChild(this.ballStringLayer);
this.ballLayer = new Sprite();
this.ballLayer.x = 0;
this.ballLayer.y = 0;
this.gameMC.addChild(this.ballLayer);
this.ballMC.layer = this.ballLayer;
this.ballLayer.addChild(this.ballMC);
this.ballMC.isHarmful = false;
this.centerX = 0;
this.centerY = -22;
this.currFloatAnimX = 0;
this.currFloatAnimY = 0;
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
}
public function shake(){
var _local1:Boolean;
var _local2:Boolean;
_local1 = (Math.abs((this.floatAnimX - this.currFloatAnimX)) < this.SHAKE);
_local2 = (Math.abs((this.floatAnimY - this.currFloatAnimY)) < this.SHAKE);
if (_local1 == false){
if (this.currFloatAnimX < this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX + this.SHAKE);
} else {
if (this.currFloatAnimX > this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX - this.SHAKE);
};
};
};
if (_local2 == false){
if (this.currFloatAnimY < this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY + this.SHAKE);
} else {
if (this.currFloatAnimY > this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY - this.SHAKE);
};
};
};
if (((_local1) && (_local2))){
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
};
}
public function checkBall(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = (this.gameMC.gameEngine.yourShip.x - ballMC.x);
_local2 = (this.gameMC.gameEngine.yourShip.y - ballMC.y);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if (_local3 < (ballMC.height * 0.5)){
if (this.gameMC.gameEngine.yourShip.currState == this.gameMC.gameEngine.yourShip.STATE_ALIVE){
this.gameMC.gameEngine.yourShip.currState = this.gameMC.gameEngine.yourShip.STATE_EXPLODE;
};
};
}
public function processBossLifeBar(){
var _local1:BossLifeMC;
var _local2:int;
_local1 = this.gameMC.gameEngine.bossLifeMC;
switch (currPhase){
case PHASE_ARRIVAL:
_local1.y = -100;
_local1.life1MC.scaleX = 1;
_local1.life2MC.scaleX = 1;
_local1.life3MC.scaleX = 1;
_local1.life4MC.scaleX = 1;
break;
case PHASE_ATTACK1:
_local1.y = (_local1.y + ((20 - _local1.y) * 0.2));
_local2 = (this.currLife - ((this.maxLife * 3) / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life4MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION1:
_local1.life4MC.scaleX = 0;
_local1.life3MC.alpha = this.alpha;
break;
case PHASE_ATTACK2:
if (_local1.life3MC.alpha != 1){
_local1.life3MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 2));
if (_local2 < 0){
_local2 = 0;
};
_local1.life3MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION2:
_local1.life3MC.scaleX = 0;
_local1.life2MC.alpha = this.alpha;
break;
case PHASE_ATTACK3:
if (_local1.life2MC.alpha != 1){
_local1.life2MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life2MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION3:
_local1.life2MC.scaleX = 0;
_local1.life1MC.alpha = this.alpha;
break;
case PHASE_ATTACK4:
if (_local1.life1MC.alpha != 1){
_local1.life1MC.alpha = 1;
};
_local2 = this.currLife;
if (_local2 < 0){
_local2 = 0;
};
_local1.life1MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_DEATH:
_local1.life1MC.scaleX = 0;
_local1.y = (_local1.y + ((-100 - _local1.y) * 0.05));
break;
};
}
public function spinBall(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
this.currBallAngle = (this.currBallAngle + this.incBallAngle);
if (this.currBallAngle > (2 * Math.PI)){
this.currBallAngle = (this.currBallAngle - (2 * Math.PI));
} else {
if (this.currBallAngle < 0){
this.currBallAngle = (this.currBallAngle + (2 * Math.PI));
};
};
ballMC.x = ((this.x + this.centerX) + (Math.cos(this.currBallAngle) * this.currBallLength));
ballMC.y = ((this.y + this.centerY) + (Math.sin(this.currBallAngle) * this.currBallLength));
_local1 = (Math.abs(this.incBallAngle) * 3);
_local2 = ((this.x + this.centerX) + ((Math.cos((this.currBallAngle - _local1)) * this.currBallLength) / 2));
_local3 = ((this.y + this.centerY) + ((Math.sin((this.currBallAngle - _local1)) * this.currBallLength) / 2));
if (this.ballStringLayer != null){
this.ballStringLayer.graphics.clear();
this.ballStringLayer.graphics.lineStyle(3);
this.ballStringLayer.graphics.moveTo((this.x + this.centerX), (this.y + this.centerY));
this.ballStringLayer.graphics.curveTo(_local2, _local3, this.ballMC.x, this.ballMC.y);
};
}
override public function specialrender(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Point;
var _local5:Point;
processBossLifeBar();
switch (this.currPhase){
case PHASE_ARRIVAL:
this.gameMC.gameEngine.vTreeAngle = -0.02;
this.isVulnerable = false;
this.ballMC.isHarmful = false;
this.scaleX = (this.scaleX + 0.01);
this.scaleY = this.scaleX;
this.posX = (this.posX + (((this.gameMC.STAGE_WIDTH / 2) - this.posX) * 0.05));
this.posY = (this.posY + ((170 - this.posY) * 0.05));
if (this.scaleX >= 1){
this.scaleX = 1;
this.scaleY = this.scaleX;
this.appearTimer = 0;
this.currPhase = PHASE_BALLAPPEARS;
};
break;
case PHASE_BALLAPPEARS:
this.isVulnerable = false;
this.ballMC.isHarmful = false;
this.appearTimer++;
if ((this.appearTimer % 4) < 2){
this.ballMC.alpha = 1;
} else {
this.ballMC.alpha = 0;
};
if (this.appearTimer > 100){
this.ballMC.alpha = 1;
this.currPhase = this.PHASE_ATTACK1;
this.readyBallAttack = false;
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
changeWeapon(this.PHASE_ATTACK1);
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSSLOW;
};
spinBall();
break;
case PHASE_ATTACK1:
this.isVulnerable = true;
this.ballMC.isHarmful = true;
if (this.readyBallAttack){
this.totalBallAngle = (this.totalBallAngle + Math.abs(this.incBallAngle));
this.currBallLength = (this.currBallLength + ((300 - this.currBallLength) * 0.1));
if ((((this.currBallAngle > (Math.PI / 4))) && ((this.currBallAngle < Math.PI)))){
this.incBallAngle = (ORIG_INCBALLANGLE / 4);
};
if (this.totalBallAngle > (2 * Math.PI)){
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.readyBallAttack = false;
changeWeapon(this.currPhase);
this.incBallAngle = ORIG_INCBALLANGLE;
};
} else {
this.ballAttackTimer--;
this.currBallLength = (this.currBallLength + ((100 - this.currBallLength) * 0.03));
if ((((this.ballAttackTimer < 0)) && ((this.currBallAngle < (Math.PI / 4))))){
this.readyBallAttack = true;
this.totalBallAngle = 0;
changeWeapon(-1);
};
if (this.currLife < ((this.maxLife * 3) / 4)){
this.setLife(((this.maxLife * 3) / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION1;
this.incBallAngle = (ORIG_INCBALLANGLE * 2);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -59, -36, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 111, 3, true, true);
addNiceExplosion(-59, -36);
addNiceExplosion(111, 3);
removeAllBullets();
};
};
checkBall();
spinBall();
break;
case PHASE_INTERMISSION1:
this.gameMC.gameEngine.vTreeAngle = -0.02;
this.isVulnerable = false;
this.ballMC.isHarmful = false;
this.currBallLength = (this.currBallLength + ((50 - this.currBallLength) * 0.03));
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
this.ballMC.alpha = 1;
} else {
this.alpha = 0.5;
this.ballMC.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK2;
changeWeapon(PHASE_ATTACK2);
this.alpha = 1;
this.ballMC.alpha = 1;
this.incBallAngle = ORIG_INCBALLANGLE;
this.readyBallAttack = false;
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.gameMC.gameEngine.vTreeAngle = -0.015;
};
spinBall();
break;
case PHASE_ATTACK2:
this.isVulnerable = true;
this.ballMC.isHarmful = true;
if (this.readyBallAttack){
this.totalBallAngle = (this.totalBallAngle + Math.abs(this.incBallAngle));
this.currBallLength = (this.currBallLength + ((300 - this.currBallLength) * 0.1));
if ((((this.currBallAngle > (Math.PI / 4))) && ((this.currBallAngle < Math.PI)))){
this.incBallAngle = (ORIG_INCBALLANGLE / 4);
};
if (this.totalBallAngle > (2 * Math.PI)){
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.readyBallAttack = false;
changeWeapon(this.currPhase);
this.incBallAngle = ORIG_INCBALLANGLE;
};
} else {
this.ballAttackTimer--;
this.currBallLength = (this.currBallLength + ((100 - this.currBallLength) * 0.03));
if ((((this.ballAttackTimer < 0)) && ((this.currBallAngle < (Math.PI / 4))))){
this.readyBallAttack = true;
this.totalBallAngle = 0;
changeWeapon(SUPER_ATTACK);
};
if (this.currLife < (this.maxLife / 2)){
this.setLife((this.maxLife / 2), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION2;
this.incBallAngle = (ORIG_INCBALLANGLE * 2);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -113, -75, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -61, 6, true, true);
addNiceExplosion(-113, -75);
addNiceExplosion(-61, 6);
removeAllBullets();
};
};
checkBall();
spinBall();
break;
case PHASE_INTERMISSION2:
this.gameMC.gameEngine.vTreeAngle = -0.02;
this.isVulnerable = false;
this.ballMC.isHarmful = false;
this.currBallLength = (this.currBallLength + ((50 - this.currBallLength) * 0.03));
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
this.ballMC.alpha = 1;
} else {
this.alpha = 0.5;
this.ballMC.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK3;
changeWeapon(PHASE_ATTACK3);
this.alpha = 1;
this.ballMC.alpha = 1;
this.incBallAngle = ORIG_INCBALLANGLE;
this.readyBallAttack = false;
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.gameMC.gameEngine.vTreeAngle = -0.015;
};
spinBall();
break;
case PHASE_ATTACK3:
this.isVulnerable = true;
this.ballMC.isHarmful = true;
if (this.readyBallAttack){
this.totalBallAngle = (this.totalBallAngle + Math.abs(this.incBallAngle));
this.currBallLength = (this.currBallLength + ((300 - this.currBallLength) * 0.1));
if ((((this.currBallAngle > (Math.PI / 4))) && ((this.currBallAngle < Math.PI)))){
this.incBallAngle = (ORIG_INCBALLANGLE / 4);
};
if (this.totalBallAngle > (2 * Math.PI)){
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.readyBallAttack = false;
changeWeapon(this.currPhase);
this.incBallAngle = ORIG_INCBALLANGLE;
};
} else {
this.ballAttackTimer--;
this.currBallLength = (this.currBallLength + ((100 - this.currBallLength) * 0.03));
if ((((this.ballAttackTimer < 0)) && ((this.currBallAngle < (Math.PI / 4))))){
this.readyBallAttack = true;
this.totalBallAngle = 0;
changeWeapon(SUPER_ATTACK2);
};
if (this.currLife < (this.maxLife / 4)){
this.setLife((this.maxLife / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION3;
this.incBallAngle = (ORIG_INCBALLANGLE * 2);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 108, -85, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 40, -46, true, true);
addNiceExplosion(108, -85);
addNiceExplosion(40, -46);
removeAllBullets();
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSFAST;
};
};
checkBall();
spinBall();
break;
case PHASE_INTERMISSION3:
this.gameMC.gameEngine.vTreeAngle = -0.04;
this.isVulnerable = false;
this.ballMC.isHarmful = false;
this.currBallLength = (this.currBallLength + ((50 - this.currBallLength) * 0.03));
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
this.ballMC.alpha = 1;
} else {
this.alpha = 0.5;
this.ballMC.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK4;
changeWeapon(PHASE_ATTACK4);
this.alpha = 1;
this.ballMC.alpha = 1;
this.incBallAngle = ORIG_INCBALLANGLE;
this.readyBallAttack = false;
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.gameMC.gameEngine.vTreeAngle = -0.03;
};
spinBall();
break;
case PHASE_ATTACK4:
this.isVulnerable = true;
this.ballMC.isHarmful = true;
if (this.readyBallAttack){
this.totalBallAngle = (this.totalBallAngle + Math.abs(this.incBallAngle));
this.currBallLength = (this.currBallLength + ((300 - this.currBallLength) * 0.1));
if ((((this.currBallAngle > (Math.PI / 4))) && ((this.currBallAngle < Math.PI)))){
this.incBallAngle = (ORIG_INCBALLANGLE / 4);
};
if (this.totalBallAngle > (2 * Math.PI)){
this.ballAttackTimer = ((Math.random() * BALLATTACK_TIMER) + BALLATTACK_TIMER);
this.readyBallAttack = false;
changeWeapon(this.currPhase);
this.incBallAngle = ORIG_INCBALLANGLE;
};
} else {
this.ballAttackTimer--;
this.currBallLength = (this.currBallLength + ((100 - this.currBallLength) * 0.03));
if ((((this.ballAttackTimer < 0)) && ((this.currBallAngle < (Math.PI / 4))))){
this.readyBallAttack = true;
this.totalBallAngle = 0;
changeWeapon(SUPER_ATTACK3);
};
if (this.currLife < 0){
this.setLife(0, false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_DEATH;
this.incBallAngle = (ORIG_INCBALLANGLE / 8);
this.explosionTimer = 0;
this.explosionNumber = 0;
this.explosionTimerMax = 100;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSDEAD;
removeAllBullets();
};
};
checkBall();
spinBall();
break;
case PHASE_DEATH:
this.gameMC.gameEngine.vTreeAngle = -0.002;
this.isHarmful = false;
this.ballMC.isHarmful = false;
spinBall();
this.currBallLength = (this.currBallLength + ((50 - this.currBallLength) * 0.03));
this.scaleX = (this.scaleX - 0.001);
this.scaleY = this.scaleX;
this.ballMC.scaleX = this.scaleX;
this.ballMC.scaleY = this.scaleY;
this.rotation = (this.rotation + 0.1);
this.posY = (this.posY + 0.2);
this.explosionTimer++;
if (this.explosionTimer > this.explosionTimerMax){
this.explosionTimer = 0;
this.explosionNumber++;
switch (this.explosionNumber){
case 1:
_local1 = -50;
_local2 = -50;
_local3 = 2;
this.explosionTimerMax = 40;
break;
case 2:
_local1 = 100;
_local2 = 50;
_local3 = 2;
this.explosionTimerMax = 35;
break;
case 3:
_local1 = -100;
_local2 = 30;
_local3 = 2;
this.explosionTimerMax = 30;
break;
case 4:
_local1 = 50;
_local2 = -100;
_local3 = 2;
this.explosionTimerMax = 25;
break;
case 5:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 20;
break;
case 6:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 15;
break;
case 7:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 10;
break;
case 8:
_local1 = 25;
_local2 = 10;
_local3 = 2;
this.explosionTimerMax = 40;
break;
case 9:
_local1 = 0;
_local2 = 0;
_local3 = 4;
this.explosionTimerMax = 150;
this.gameMC.removeChild(this.ballLayer);
this.gameMC.removeChild(this.ballStringLayer);
this.ballLayer = null;
this.ballStringLayer = null;
this.gameMC.gameEngine.shipLayer.addChild(this.ballMC);
this.ballMC.layer = this.gameMC.gameEngine.shipLayer;
break;
case 10:
this.currState = this.STATE_OUTOFSTAGE;
this.ballMC.currState = this.STATE_OUTOFSTAGE;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_NOSOUND;
break;
};
if (this.explosionNumber <= 9){
_local4 = new Point((_local1 * this.scaleX), (_local2 * this.scaleY));
_local5 = this.localToGlobal(_local4);
this.gameMC.gameEngine.addExplosion(_local5.x, _local5.y, _local3, false);
};
};
break;
};
shake();
this.x = (this.posX + this.currFloatAnimX);
this.y = (this.posY + this.currFloatAnimY);
}
public function changeWeapon(_arg1:int){
this.removeAllBulletGenerator();
switch (this.difficultyLevel){
case this.DIFFICULTY_EASY:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 100, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 100, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 200, 4, false, false, 5, 0, -40, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 30, 90);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 100, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, -40, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 30, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 100, 200, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 6, 4, false, false, 5, 0, this.centerX, this.centerY, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 25, 0);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 100, 3, false, false, 0.7, this.PARTICLE_SMOKE, this.centerX, this.centerY, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 8, 0);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 70, 3, false, false, 0.7, this.PARTICLE_SMOKE, this.centerX, this.centerY, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 12, 0);
break;
};
break;
case this.DIFFICULTY_MEDIUM:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, -40, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 30, 90);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 5, 0, -40, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 30, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 50, 100, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 3, 4, false, false, 5, 0, this.centerX, this.centerY, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 25, 0);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 50, 3, false, false, 0.7, this.PARTICLE_SMOKE, this.centerX, this.centerY, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 8, 0);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 3, 3, false, false, 5, 0, this.centerX, this.centerY, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 25, 40);
break;
};
break;
case this.DIFFICULTY_HARD:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 25, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 25, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 4, false, false, 5, 0, -40, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 30, 90);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 25, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 4, false, false, 5, 0, -40, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 8, 30, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 25, 50, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 3, 4, false, false, 5, 0, this.centerX, this.centerY, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 15, 30);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 25, 3, true, false, 0.7, this.PARTICLE_SMOKE, this.centerX, this.centerY, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 8, 0);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, -90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, this.PARTICLE_DAMAGESMOKE, 90, 9, 1, BulletSimpleMissile, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 25, 3, true, false, 0.7, this.PARTICLE_SMOKE, this.centerX, this.centerY, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 8, 0);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 3, 3, false, false, 5, 0, this.centerX, this.centerY, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 20, 40);
break;
};
break;
};
}
}
}//package classes
Section 19
//Lvl1Medium (classes.Lvl1Medium)
package classes {
import flash.display.*;
public class Lvl1Medium extends EnemyScanAndGo {
public function Lvl1Medium(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl1MediumEnemy, _arg1, _arg2, _arg3, _arg4, 100, 3, 200, 0.05, this.ROTATION_ALWAYS, 6);
this.groupNo = 4;
this.origWidth = 70;
this.origHeight = 50;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 15, 9, false, false, 5, 0, -20, 0, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 1, 8, 280));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 15, 9, false, false, 5, 0, 20, 0, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 1, 8, 260));
this.addParticleGenerator(this.PARTICLE_SMOKE, -39, -15, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 39, -15, true, false);
this.setLife(50, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_MEDIUM;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 5, 0, 38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 5, 0, -38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 5, 0, 38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 100);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 5, 0, -38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 80);
break;
case this.DIFFICULTY_HARD:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 5, 0, 38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 100);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 5, 0, -38, 40, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 8, 80);
break;
};
}
}
}//package classes
Section 20
//Lvl1SmallDozer (classes.Lvl1SmallDozer)
package classes {
import flash.display.*;
public class Lvl1SmallDozer extends EnemyAtoB {
public function Lvl1SmallDozer(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(Lvl1SmallEnemy1, _arg1, _arg2, 2, _arg3, _arg4, _arg5, _arg6);
this.groupNo = 1;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 25, 9, false, false, 5, 0, 0, -3, 1, BulletStickFriendly, BULLETMOVE_CONSISTENT, 0, 1, 10, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, -5, -25, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 5, -25, true, false);
this.setLife(10, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 5, 0, 1, 2, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 10, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 5, 0, 1, 2, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 1, 10, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 4, false, false, 5, 0, 1, 2, 1, BulletStick, BULLETMOVE_CONSISTENT, 0, 3, 10, 90);
break;
};
}
}
}//package classes
Section 21
//Lvl1SmallDriller (classes.Lvl1SmallDriller)
package classes {
import flash.display.*;
public class Lvl1SmallDriller extends EnemyStopAndGo {
public function Lvl1SmallDriller(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl1SmallEnemy2, _arg1, _arg2, _arg3, -50, _arg3, _arg4, _arg3, 600, 400, 0.1, this.ROTATION_NONE, 6);
this.groupNo = 3;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 25, 9, true, false, 2, 0, 0, 0, 5, BulletDrillFriendly, BULLETMOVE_CONSISTENT, 0, 1, 20, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, -4, -28, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 4, -28, true, false);
this.setLife(10, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 5, 50, 7, false, false, 0.2, PARTICLE_SMOKE, 0, 14, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 1, 20, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 5, 50, 7, true, false, 0.2, PARTICLE_SMOKE, 0, 14, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 1, 20, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 5, 50, 7, true, false, 0.2, PARTICLE_SMOKE, 0, 14, 1, BulletDrill, BULLETMOVE_CONSISTENT, 0, 3, 20, 90);
break;
};
}
}
}//package classes
Section 22
//Lvl1SmallTruck (classes.Lvl1SmallTruck)
package classes {
import flash.display.*;
public class Lvl1SmallTruck extends EnemyZPattern {
public function Lvl1SmallTruck(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:Boolean){
super(Lvl1SmallEnemy3, _arg1, _arg2, 5, _arg3, _arg4, 70, 40, 0.1, _arg5);
this.groupNo = 2;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 5, 0, 0, -3, 1, BulletRockFriendly, BULLETMOVE_CONSISTENT, 0, 1, 0, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, -7, -25, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 7, -25, true, false);
this.setLife(10, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 5, false, false, 0.5, 0, 0, -13, 1, BulletRock, BULLETMOVE_CONSISTENT, 0, 1, 0, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 5, false, false, 0.5, 0, 0, -13, 1, BulletRock, BULLETMOVE_CONSISTENT, 0, 1, 0, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 25, 4, false, false, 0.5, 0, 0, -13, 1, BulletRock, BULLETMOVE_CONSISTENT, 0, 1, 0, 90);
break;
};
}
}
}//package classes
Section 23
//Lvl2Big (classes.Lvl2Big)
package classes {
import flash.display.*;
public class Lvl2Big extends EnemyScanAndGo {
public function Lvl2Big(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl2BigMC, _arg1, _arg2, _arg3, _arg4, 150, 5, 400, 0.05, this.ROTATION_ALWAYS, 6);
this.groupNo = 25;
this.origWidth = 94;
this.origHeight = 67;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 40, 2, true, false, 2, 0, 0, 0, 1, BulletSquareArrowFriendly, BULLETMOVE_FASTER, 1.05, 2, 80, 270));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 10, 6, false, false, 0.5, 0, 0, 0, 1, BulletStickRedFriendly, BULLETMOVE_CONSISTENT, 1.05, 1, 250, 290));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 0.5, 0, 0, 0, 3, BulletEnergyMissileFriendly, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -38, true, false);
this.setLife(100, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_BIG;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 160, 2, false, false, 0.5, PARTICLE_LINE, -82, 36, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 160, 2, false, false, 0.5, PARTICLE_LINE, 82, 36, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 6, false, false, 0.5, 0, -57, 26, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 6, false, false, 0.5, 0, 57, 26, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 200, 6, false, false, 0.5, PARTICLE_LINE, 0, 50, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 2, true, false, 0.5, PARTICLE_LINE, -82, 36, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 2, true, false, 0.5, PARTICLE_LINE, 82, 36, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 6, false, false, 0.5, 0, -57, 26, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 1.05, 1, 70, 110);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 6, false, false, 0.5, 0, 57, 26, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 1.05, 1, 70, 110);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 0.5, PARTICLE_LINE, 0, 50, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 2, true, false, 0.5, PARTICLE_LINE, -82, 36, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 2, true, false, 0.5, PARTICLE_LINE, 82, 36, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 15, 6, false, false, 0.5, 0, -57, 26, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 1.05, 1, 70, 110);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 7, 15, 6, false, false, 0.5, 0, 57, 26, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 1.05, 1, 70, 110);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 0.5, PARTICLE_LINE, 0, 50, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
break;
};
}
}
}//package classes
Section 24
//Lvl2Boss (classes.Lvl2Boss)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Lvl2Boss extends Enemy {
public var PHASE_ATTACK2:int;// = 5
public var PHASE_ATTACK3:int;// = 7
public var PHASE_ATTACK4:int;// = 9
public var STATE_SCANSTOP:int;// = 0
public var PHASE_ATTACK1:int;// = 3
public var STATE_REMOVE:int;// = 4
public var scannerMC:MovieClip;
public var posX:Number;
public var posY:Number;
public var STATE_SCANNING:int;// = 1
public var currDetectTimer:int;
public var PHASE_ARRIVAL:int;// = 1
public var scannerSpeed:int;
public var yourShip:CharShip;
public var PHASE_INTERMISSION2:int;// = 6
public var PHASE_INTERMISSION3:int;// = 8
public var PHASE_INTERMISSION4:int;// = 10
public var STATE_SPECIALREST:int;// = 6
public var PHASE_INTERMISSION1:int;// = 4
public var STATE_SPECIALDETECT:int;// = 7
public var explosionTimer:int;
public var hasBeenScanned:Boolean;
public var SCANNER_MAXY:int;// = 344
public var scannerGoingDown:Boolean;
public var specialAttackPhase:int;
public var PHASE_BALLAPPEARS:int;// = 2
public var STATE_RESTING:int;// = 3
public var scanThingMC:MovieClip;
public var currRestTimer:int;
public var soundScanAlarm:sndScanAlarm;
public var currScanState:int;
public var SUPER_ATTACK3:int;// = 997
public var specialScanTimer:int;
public var explosionTimerMax:int;
public var SUPER_ATTACK2:int;// = 998
public var SCANNER_MINY:int;// = 70
public var turret2MC:Lvl2BossTurret;
public var currPhase:int;
public var PHASE_DEATH:int;// = 11
public var STATE_DETECTED:int;// = 2
public var turret1MC:Lvl2BossTurret;
public var scannerMC2:MovieClip;
public var centerX:int;
public var centerY:int;
public var appearTimer:int;
public var explosionNumber:int;
public var SHAKE:Number;// = 0.2
public var currFloatAnimX:Number;
public var currFloatAnimY:Number;
public var scanThingMC2:MovieClip;
public var SHAKE_DIST:int;// = 15
public var floatAnimX:Number;
public var scannerRestTimer:int;
public var floatAnimY:Number;
public var SUPER_ATTACK:int;// = 999
public var prevFriendX:Number;
public var prevFriendY:Number;
public var STATE_SPECIALSCAN:int;// = 5
public function Lvl2Boss(_arg1:int, _arg2:MovieClip){
PHASE_ARRIVAL = 1;
PHASE_BALLAPPEARS = 2;
PHASE_ATTACK1 = 3;
PHASE_INTERMISSION1 = 4;
PHASE_ATTACK2 = 5;
PHASE_INTERMISSION2 = 6;
PHASE_ATTACK3 = 7;
PHASE_INTERMISSION3 = 8;
PHASE_ATTACK4 = 9;
PHASE_INTERMISSION4 = 10;
PHASE_DEATH = 11;
SUPER_ATTACK = 999;
SUPER_ATTACK2 = 998;
SUPER_ATTACK3 = 997;
SHAKE = 0.2;
SHAKE_DIST = 15;
STATE_SCANSTOP = 0;
STATE_SCANNING = 1;
STATE_DETECTED = 2;
STATE_RESTING = 3;
STATE_REMOVE = 4;
STATE_SPECIALSCAN = 5;
STATE_SPECIALREST = 6;
STATE_SPECIALDETECT = 7;
SCANNER_MINY = 70;
SCANNER_MAXY = 344;
super(Lvl2BossEnemy, _arg1, _arg2);
this.groupNo = 6;
this.origWidth = 310;
this.origHeight = 78;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 30, 10, false, false, 5, 0, 0, 0, 1, BulletSquareArrowFriendly, BULLETMOVE_CONSISTENT, 1.05, 5, 250, 290));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 6, false, false, 0.5, 0, 0, 0, 2, BulletEnergyMissileFriendly, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 270));
this.currPhase = this.PHASE_ARRIVAL;
this.x = (this.gameMC.STAGE_WIDTH / 2);
this.y = -500;
this.posX = this.x;
this.posY = this.y;
this.gameMC.gameEngine.shipLayer.addChild(this);
this.isNormalEnemy = false;
this.turret1MC = new Lvl2BossTurret(_arg1, _arg2, this, -140, 14);
this.turret2MC = new Lvl2BossTurret(_arg1, _arg2, this, 140, 14);
this.centerX = 0;
this.centerY = -22;
this.currFloatAnimX = 0;
this.currFloatAnimY = 0;
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.setLife(1000, true);
this.absorbTimer = 150;
this.score = this.SCORE_BOSS;
this.scannerMC = this.mc.scannerMC;
this.scannerMC2 = this.mc.scannerMC2;
this.scannerMC.alpha = 0;
this.scannerMC2.alpha = 0;
this.currScanState = STATE_SCANSTOP;
this.scanThingMC = this.mc.scanThingMC;
this.scanThingMC2 = this.mc.scanThingMC2;
this.yourShip = this.gameMC.gameEngine.yourShip;
this.hasBeenScanned = false;
this.soundScanAlarm = new sndScanAlarm();
}
public function processBossLifeBar(){
var _local1:BossLifeMC;
var _local2:int;
_local1 = this.gameMC.gameEngine.bossLifeMC;
switch (currPhase){
case PHASE_ARRIVAL:
_local1.y = -100;
_local1.life1MC.scaleX = 1;
_local1.life2MC.scaleX = 1;
_local1.life3MC.scaleX = 1;
_local1.life4MC.scaleX = 1;
break;
case PHASE_ATTACK1:
_local1.y = (_local1.y + ((20 - _local1.y) * 0.2));
_local2 = (this.currLife - ((this.maxLife * 3) / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life4MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION1:
_local1.life4MC.scaleX = 0;
_local1.life3MC.alpha = this.alpha;
break;
case PHASE_ATTACK2:
if (_local1.life3MC.alpha != 1){
_local1.life3MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 2));
if (_local2 < 0){
_local2 = 0;
};
_local1.life3MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION2:
_local1.life3MC.scaleX = 0;
_local1.life2MC.alpha = this.alpha;
break;
case PHASE_ATTACK3:
if (_local1.life2MC.alpha != 1){
_local1.life2MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life2MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION3:
_local1.life2MC.scaleX = 0;
_local1.life1MC.alpha = this.alpha;
break;
case PHASE_ATTACK4:
if (_local1.life1MC.alpha != 1){
_local1.life1MC.alpha = 1;
};
_local2 = this.currLife;
if (_local2 < 0){
_local2 = 0;
};
_local1.life1MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_DEATH:
_local1.life1MC.scaleX = 0;
_local1.y = (_local1.y + ((-100 - _local1.y) * 0.05));
break;
};
}
public function isScanned():Boolean{
if (Math.abs(((this.y + this.scannerMC.y) - this.yourShip.y)) < 20){
prevFriendX = this.yourShip.x;
prevFriendY = this.yourShip.y;
return (true);
};
return (false);
}
public function changeWeapon(_arg1:int){
this.removeAllBulletGenerator();
switch (this.difficultyLevel){
case this.DIFFICULTY_EASY:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 80, 4, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 80, 4, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 80, 4, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 80, 4, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 80, 2, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 80, 2, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 80, 2, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 80, 2, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 80, 4, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 80, 4, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 80, 4, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 80, 4, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 0.5, PARTICLE_LINE, -15, 70, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 0.5, PARTICLE_LINE, 15, 70, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
break;
case this.PHASE_ATTACK4:
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 8, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 1, 30, ((Math.random() * 30) + 50));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 7, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 1, 30, ((Math.random() * 30) + 50));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 8, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 1, 30, ((Math.random() * 30) + 100));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 7, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 1, 30, ((Math.random() * 30) + 100));
break;
case this.SUPER_ATTACK2:
break;
case this.SUPER_ATTACK3:
break;
};
break;
case this.DIFFICULTY_MEDIUM:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 5, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 40, 5, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 40, 5, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 40, 5, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 2, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 40, 2, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 40, 2, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 40, 2, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 4, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 40, 4, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 40, 4, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 40, 4, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 8, false, false, 0.5, PARTICLE_LINE, -15, 70, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 8, false, false, 0.5, PARTICLE_LINE, 15, 70, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
break;
case this.PHASE_ATTACK4:
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 8, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 2, 30, ((Math.random() * 30) + 50));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 7, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 2, 30, ((Math.random() * 30) + 50));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 8, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 2, 30, ((Math.random() * 30) + 100));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 7, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.05, 2, 30, ((Math.random() * 30) + 100));
break;
case this.SUPER_ATTACK2:
break;
case this.SUPER_ATTACK3:
break;
};
break;
case this.DIFFICULTY_HARD:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 5, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 40, 5, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 40, 5, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 40, 5, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 90, 120);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 2, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 40, 2, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 40, 2, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 40, 2, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 90, 120);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 4, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 10, 40, 4, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 20, 40, 4, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 30, 40, 4, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 2, 90, 120);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 60, 8, false, false, 0.5, PARTICLE_LINE, -15, 70, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 60, 8, false, false, 0.5, PARTICLE_LINE, 15, 70, 1, BulletEnergyMissile, BULLETMOVE_CONSISTENT, 1.05, 1, 1, 90);
break;
case this.PHASE_ATTACK4:
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 8, false, false, 5, this.PARTICLE_LINE, -110, 24, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.1, 4, 30, ((Math.random() * 30) + 50));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 7, false, false, 5, this.PARTICLE_LINE, -77, 11, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.1, 4, 30, ((Math.random() * 30) + 50));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 8, false, false, 5, this.PARTICLE_LINE, 110, 24, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.1, 4, 30, ((Math.random() * 30) + 100));
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 1000, 7, false, false, 5, this.PARTICLE_LINE, 77, 11, 1, BulletSquareArrow, BULLETMOVE_STOP, 1.1, 4, 30, ((Math.random() * 30) + 100));
break;
case this.SUPER_ATTACK2:
break;
case this.SUPER_ATTACK3:
break;
};
break;
};
}
public function shake(){
var _local1:Boolean;
var _local2:Boolean;
_local1 = (Math.abs((this.floatAnimX - this.currFloatAnimX)) < this.SHAKE);
_local2 = (Math.abs((this.floatAnimY - this.currFloatAnimY)) < this.SHAKE);
if (_local1 == false){
if (this.currFloatAnimX < this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX + this.SHAKE);
} else {
if (this.currFloatAnimX > this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX - this.SHAKE);
};
};
};
if (_local2 == false){
if (this.currFloatAnimY < this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY + this.SHAKE);
} else {
if (this.currFloatAnimY > this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY - this.SHAKE);
};
};
};
if (((_local1) && (_local2))){
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
};
}
override public function specialrender(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Point;
var _local5:Point;
processBossLifeBar();
if (this.currPhase != this.PHASE_DEATH){
renderScanner();
};
switch (this.currPhase){
case PHASE_ARRIVAL:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.posY = (this.posY + ((110 - this.posY) * 0.03));
if (Math.abs((110 - this.posY)) < 2){
this.posY = 110;
this.appearTimer = 0;
this.currPhase = PHASE_ATTACK1;
changeWeapon(PHASE_ATTACK1);
this.gameMC.gameEngine.vTreeAngle = -0.006;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSSLOW;
};
break;
case PHASE_ATTACK1:
this.isVulnerable = true;
if (this.currLife < ((this.maxLife * 3) / 4)){
this.setLife(((this.maxLife * 3) / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION1;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 116, -17, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -113, 24, true, true);
addNiceExplosion(116, -17);
addNiceExplosion(-113, 24);
removeAllBullets();
};
break;
case PHASE_INTERMISSION1:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK2;
changeWeapon(PHASE_ATTACK2);
this.alpha = 1;
this.currScanState = STATE_RESTING;
this.scannerSpeed = 5;
this.scannerRestTimer = 100;
this.currRestTimer = 0;
this.gameMC.gameEngine.vTreeAngle = -0.006;
};
break;
case PHASE_ATTACK2:
this.isVulnerable = true;
if (this.currLife < (this.maxLife / 2)){
this.setLife((this.maxLife / 2), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION2;
this.currScanState = STATE_SCANSTOP;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 177, 106, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 150, -8, true, true);
addNiceExplosion(177, 106);
addNiceExplosion(150, -8);
removeAllBullets();
this.turret1MC.enableWeapon(false);
this.turret2MC.enableWeapon(false);
};
break;
case PHASE_INTERMISSION2:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK3;
changeWeapon(PHASE_ATTACK3);
this.alpha = 1;
this.currScanState = STATE_RESTING;
this.scannerSpeed = 5;
this.scannerRestTimer = 100;
this.currRestTimer = 0;
this.gameMC.gameEngine.vTreeAngle = -0.006;
};
break;
case PHASE_ATTACK3:
this.isVulnerable = true;
if (this.currLife < (this.maxLife / 4)){
this.setLife((this.maxLife / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION3;
this.currScanState = STATE_SCANSTOP;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -165, 252, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 0, -33, true, true);
addNiceExplosion(-165, 252);
addNiceExplosion(0, -33);
removeAllBullets();
this.turret1MC.enableWeapon(false);
this.turret2MC.enableWeapon(false);
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSFAST;
};
break;
case PHASE_INTERMISSION3:
this.gameMC.gameEngine.vTreeAngle = -0.03;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK4;
changeWeapon(PHASE_ATTACK4);
this.alpha = 1;
specialScanTimer = 0;
scannerGoingDown = true;
this.currScanState = STATE_SPECIALREST;
this.scannerMC.y = SCANNER_MINY;
this.scannerMC2.y = SCANNER_MINY;
specialAttackPhase = 0;
};
break;
case PHASE_ATTACK4:
this.isVulnerable = true;
specialScanTimer++;
switch (specialAttackPhase){
case 0:
if (specialScanTimer > 100){
changeWeapon(SUPER_ATTACK);
specialScanTimer = 0;
specialAttackPhase = 1;
};
break;
case 1:
if (specialScanTimer > 30){
changeWeapon(-1);
if (this.currScanState != this.STATE_SPECIALDETECT){
this.currScanState = STATE_SPECIALSCAN;
};
specialAttackPhase = 2;
specialScanTimer = 0;
};
break;
case 2:
if (specialScanTimer > 130){
scannerGoingDown = false;
if (this.currScanState == this.STATE_SPECIALSCAN){
this.currScanState = STATE_SPECIALREST;
};
specialAttackPhase = 0;
specialScanTimer = 0;
};
break;
};
if (this.currLife < 0){
this.setLife(0, false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_DEATH;
this.explosionTimer = 0;
this.explosionNumber = 0;
this.explosionTimerMax = 100;
this.currScanState = STATE_SCANSTOP;
this.turret1MC.enableWeapon(false);
this.turret2MC.enableWeapon(false);
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSDEAD;
removeAllBullets();
};
break;
case PHASE_DEATH:
this.gameMC.gameEngine.vTreeAngle = -0.002;
this.isHarmful = false;
this.scaleX = (this.scaleX - 0.002);
this.scaleY = this.scaleX;
this.turret1MC.scaleX = this.scaleX;
this.turret1MC.scaleY = this.scaleY;
this.turret2MC.scaleX = this.scaleX;
this.turret2MC.scaleY = this.scaleY;
this.rotation = (this.rotation + 0.15);
this.turret1MC.rotation = this.rotation;
this.turret2MC.rotation = this.rotation;
this.posY = (this.posY + 0.2);
this.explosionTimer++;
if (this.explosionTimer > this.explosionTimerMax){
this.explosionTimer = 0;
this.explosionNumber++;
switch (this.explosionNumber){
case 1:
_local1 = -50;
_local2 = -50;
_local3 = 2;
this.explosionTimerMax = 40;
break;
case 2:
_local1 = 100;
_local2 = 50;
_local3 = 2;
this.explosionTimerMax = 35;
break;
case 3:
_local1 = -100;
_local2 = 30;
_local3 = 2;
this.explosionTimerMax = 30;
break;
case 4:
_local1 = 50;
_local2 = -100;
_local3 = 2;
this.explosionTimerMax = 25;
break;
case 5:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 20;
break;
case 6:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 15;
break;
case 7:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 10;
break;
case 8:
_local1 = 25;
_local2 = 10;
_local3 = 2;
this.explosionTimerMax = 40;
break;
case 9:
_local1 = 0;
_local2 = 200;
_local3 = 4;
this.explosionTimerMax = 150;
break;
case 10:
this.currState = this.STATE_OUTOFSTAGE;
this.turret1MC.currState = this.STATE_OUTOFSTAGE;
this.turret2MC.currState = this.STATE_OUTOFSTAGE;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_NOSOUND;
break;
};
if (this.explosionNumber <= 9){
_local4 = new Point((_local1 * this.scaleX), (_local2 * this.scaleY));
_local5 = this.localToGlobal(_local4);
this.gameMC.gameEngine.addExplosion(_local5.x, _local5.y, _local3, false);
};
};
break;
};
shake();
this.x = (this.posX + this.currFloatAnimX);
this.y = (this.posY + this.currFloatAnimY);
}
public function renderScanner(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
switch (this.currScanState){
case this.STATE_SCANSTOP:
if (this.scannerMC.alpha != 0){
this.scannerMC.alpha = 0;
this.scannerMC2.alpha = 0;
};
break;
case this.STATE_SCANNING:
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
if (this.scannerMC.y > SCANNER_MAXY){
this.scannerMC.alpha = (this.scannerMC.alpha - 0.1);
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
if (this.scannerMC.alpha <= 0){
this.scannerMC.alpha = 0;
this.scannerMC2.alpha = 0;
this.currScanState = this.STATE_RESTING;
this.currRestTimer = 0;
};
} else {
this.scannerMC.y = (this.scannerMC.y + this.scannerSpeed);
};
if (hasBeenScanned){
_local1 = (this.yourShip.x - prevFriendX);
_local2 = (this.yourShip.y - prevFriendY);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if ((((_local3 > 5)) || (this.yourShip.isShooting))){
soundScanAlarm.play();
this.currScanState = this.STATE_DETECTED;
this.currRestTimer = 0;
this.turret1MC.enableWeapon(true);
this.turret2MC.enableWeapon(true);
};
};
hasBeenScanned = false;
if (isScanned()){
hasBeenScanned = true;
};
break;
case this.STATE_SPECIALSCAN:
this.scannerMC.y = (this.scannerMC.y + (((this.yourShip.y - this.y) - this.scannerMC.y) * 0.1));
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
if (hasBeenScanned){
_local4 = (this.yourShip.x - prevFriendX);
_local5 = (this.yourShip.y - prevFriendY);
_local6 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
if ((((_local6 > 5)) || (this.yourShip.isShooting))){
soundScanAlarm.play();
this.currScanState = this.STATE_SPECIALDETECT;
this.currRestTimer = 0;
this.turret1MC.enableWeapon(true);
this.turret2MC.enableWeapon(true);
};
};
hasBeenScanned = false;
if (isScanned()){
hasBeenScanned = true;
};
break;
case this.STATE_DETECTED:
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
hasBeenScanned = false;
currRestTimer++;
if ((currRestTimer % 8) < 4){
this.scannerMC.alpha = 1;
this.scannerMC2.alpha = this.scannerMC.alpha;
} else {
this.scannerMC.alpha = 0.2;
this.scannerMC2.alpha = this.scannerMC.alpha;
};
if (currRestTimer > 100){
this.currRestTimer = 0;
this.turret1MC.enableWeapon(false);
this.turret2MC.enableWeapon(false);
this.currScanState = STATE_RESTING;
this.scannerMC.alpha = 0;
this.scannerMC2.alpha = 0;
};
break;
case this.STATE_SPECIALDETECT:
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
hasBeenScanned = false;
currRestTimer++;
if ((currRestTimer % 8) < 4){
this.scannerMC.alpha = 1;
this.scannerMC2.alpha = this.scannerMC.alpha;
} else {
this.scannerMC.alpha = 0.2;
this.scannerMC2.alpha = this.scannerMC.alpha;
};
if (currRestTimer > 100){
this.currRestTimer = 0;
this.turret1MC.enableWeapon(false);
this.turret2MC.enableWeapon(false);
this.scannerMC.y = SCANNER_MINY;
this.scannerMC2.y = SCANNER_MINY;
this.currScanState = STATE_SPECIALREST;
this.scannerMC.alpha = 0;
this.scannerMC2.alpha = 0;
this.scannerGoingDown = true;
};
break;
case this.STATE_RESTING:
hasBeenScanned = false;
this.currRestTimer++;
if (this.currRestTimer > this.scannerRestTimer){
this.scannerMC.y = SCANNER_MINY;
this.scannerMC2.y = SCANNER_MINY;
this.scannerMC.alpha = (this.scannerMC.alpha + 0.1);
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
if (this.scannerMC.alpha >= 1){
this.scannerMC.alpha = 1;
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
this.currScanState = this.STATE_SCANNING;
};
};
break;
case this.STATE_SPECIALREST:
if (this.scannerMC.alpha <= 1){
this.scannerMC.alpha = (this.scannerMC.alpha + 0.1);
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
};
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
if (scannerGoingDown){
this.scannerMC.y = (this.scannerMC.y + 8);
if (this.scannerMC.y > (SCANNER_MINY + ((SCANNER_MAXY - SCANNER_MINY) / 3))){
scannerGoingDown = false;
};
} else {
this.scannerMC.y = (this.scannerMC.y - 8);
if (this.scannerMC.y < SCANNER_MINY){
scannerGoingDown = true;
};
};
if (hasBeenScanned){
_local7 = (this.yourShip.x - prevFriendX);
_local8 = (this.yourShip.y - prevFriendY);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
if ((((_local9 > 5)) || (this.yourShip.isShooting))){
soundScanAlarm.play();
this.currScanState = this.STATE_SPECIALDETECT;
this.currRestTimer = 0;
this.turret1MC.enableWeapon(true);
this.turret2MC.enableWeapon(true);
};
};
hasBeenScanned = false;
if (isScanned()){
hasBeenScanned = true;
};
break;
};
if (this.yourShip.currState == this.yourShip.STATE_ALIVE){
if (isCollideScanner()){
this.yourShip.currState = this.yourShip.STATE_EXPLODE;
};
};
}
public function isCollideScanner():Boolean{
var _local1:Point;
var _local2:Point;
_local1 = new Point(this.scanThingMC.x, this.scanThingMC.y);
_local2 = new Point(this.scanThingMC2.x, this.scanThingMC2.y);
_local1 = this.localToGlobal(_local1);
_local2 = this.localToGlobal(_local2);
if ((((Math.abs((_local1.x - this.yourShip.x)) < ((this.scanThingMC.width / 2) + (this.yourShip.origWidth / 2)))) && ((Math.abs((_local1.y - this.yourShip.y)) < ((this.scanThingMC.height / 2) + (this.yourShip.origHeight / 2)))))){
return (true);
};
if ((((Math.abs((_local2.x - this.yourShip.x)) < ((this.scanThingMC2.width / 2) + (this.yourShip.origWidth / 2)))) && ((Math.abs((_local2.y - this.yourShip.y)) < ((this.scanThingMC2.height / 2) + (this.yourShip.origHeight / 2)))))){
return (true);
};
return (false);
}
}
}//package classes
Section 25
//Lvl2BossTurret (classes.Lvl2BossTurret)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Lvl2BossTurret extends Enemy {
public var posX:int;
public var posY:int;
public var hostMC:Enemy;
public function Lvl2BossTurret(_arg1:int, _arg2:MovieClip, _arg3:Enemy, _arg4:int, _arg5:int){
super(Lvl2BossEnemy_turret, _arg1, _arg2);
this.hostMC = _arg3;
this.posX = _arg4;
this.posY = _arg5;
this.gameMC.gameEngine.shipLayer.addChild(this);
this.isNormalEnemy = false;
this.gameMC.gameEngine.enemyArray.push(this);
this.isVulnerable = false;
this.isAbsorbable = false;
}
override public function specialrender(){
var _local1:Point;
_local1 = new Point(this.posX, this.posY);
_local1 = this.hostMC.localToGlobal(_local1);
this.x = _local1.x;
this.y = _local1.y;
}
public function enableWeapon(_arg1:Boolean){
var _local2:*;
if (_arg1){
switch (difficultyLevel){
case this.DIFFICULTY_EASY:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 0.5, PARTICLE_LINE, 0, 46, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 0, 1, 10, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 0.5, PARTICLE_LINE, 0, 46, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 0, 1, 10, 90);
break;
case this.DIFFICULTY_HARD:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 0.5, PARTICLE_LINE, 0, 46, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 0, 3, 10, 90);
break;
};
} else {
this.followEnemy = false;
_local2 = this.bulletGeneratorArray.length;
while (_local2 >= 0) {
this.bulletGeneratorArray[_local2] = null;
this.bulletGeneratorArray.splice(_local2, 1);
_local2--;
};
};
}
}
}//package classes
Section 26
//Lvl2Medium (classes.Lvl2Medium)
package classes {
import flash.display.*;
public class Lvl2Medium extends EnemyScanAndGo {
public function Lvl2Medium(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl2MediumMC, _arg1, _arg2, _arg3, _arg4, 100, 5, 200, 0.1, this.ROTATION_ALWAYS, 6);
this.groupNo = 24;
this.origWidth = 15;
this.origHeight = 70;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 40, 2, true, false, 2, 0, -14, -10, 1, BulletSquareArrowFriendly, BULLETMOVE_FASTER, 1.05, 2, 80, 270));
this.absorbTimer = 100;
this.addParticleGenerator(this.PARTICLE_SMOKE, -19, -17, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 19, -17, true, false);
this.setLife(50, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_MEDIUM;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 160, 1, true, false, 0.5, PARTICLE_LINE, -14, -10, 1, BulletSquareArrow, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 160, 1, true, false, 0.5, PARTICLE_LINE, 14, -10, 1, BulletSquareArrow, BULLETMOVE_FASTER, 1.05, 1, 8, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 1, true, false, 0.5, PARTICLE_LINE, -14, -10, 1, BulletSquareArrow, BULLETMOVE_FASTER, 1.05, 2, 8, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 1, true, false, 0.5, PARTICLE_LINE, 14, -10, 1, BulletSquareArrow, BULLETMOVE_FASTER, 1.05, 2, 8, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 1, true, false, 0.5, PARTICLE_LINE, -14, -10, 1, BulletSquareArrow, BULLETMOVE_FASTER, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 1, true, false, 0.5, PARTICLE_LINE, 14, -10, 1, BulletSquareArrow, BULLETMOVE_FASTER, 1.05, 5, 20, 90);
break;
};
}
}
}//package classes
Section 27
//Lvl2Scanner (classes.Lvl2Scanner)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Lvl2Scanner extends MovieClip {
public var gameMC:MovieClip;
public var scannerMC:MovieClip;
public var yourShip:MovieClip;
public var hasBeenScanned:Boolean;
public var STATE_REMOVE:int;// = 4
public var SCANNER_MAXY:int;// = 244
public var speed:Number;
public var scanThingMC2:MovieClip;
public var layer:Sprite;
public var tutorialMC:MovieClip;
public var currState:int;
public var difficultyLevel:int;
public var STATE_DETECTED:int;// = 2
public var prevX:Number;
public var prevY:Number;
public var scannerRestTimer:int;
public var scannerMC2:MovieClip;
public var STATE_RESTING:int;// = 3
public var SCANNER_MINY:int;// = 34
public var scanThingMC:MovieClip;
public var currRestTimer:int;
public var soundScanAlarm:sndScanAlarm;
public var STATE_SCANNING:int;// = 1
public var scannerSpeed:int;
public function Lvl2Scanner(_arg1:int, _arg2:MovieClip, _arg3:Number, _arg4:int, _arg5:int, _arg6:Boolean){
STATE_SCANNING = 1;
STATE_DETECTED = 2;
STATE_RESTING = 3;
STATE_REMOVE = 4;
SCANNER_MINY = 34;
SCANNER_MAXY = 244;
super();
this.difficultyLevel = _arg1;
this.gameMC = _arg2;
this.speed = _arg3;
this.scannerSpeed = _arg4;
this.scannerRestTimer = _arg5;
this.x = 5;
this.y = (0 - this.height);
this.gameMC.gameEngine.shipLayer.addChild(this);
this.currRestTimer = 0;
this.currState = STATE_RESTING;
this.yourShip = this.gameMC.gameEngine.yourShip;
this.layer = this.gameMC.gameEngine.shipLayer;
this.hasBeenScanned = false;
this.soundScanAlarm = new sndScanAlarm();
if (_arg6){
this.tutorialMC.alpha = 0.8;
} else {
this.tutorialMC.alpha = 0;
};
}
public function isScanned():Boolean{
if (Math.abs(((this.y + this.scannerMC.y) - this.yourShip.y)) < 20){
prevX = this.yourShip.x;
prevY = this.yourShip.y;
return (true);
};
return (false);
}
public function isCollide():Boolean{
var _local1:Point;
var _local2:Point;
_local1 = new Point(this.scanThingMC.x, this.scanThingMC.y);
_local2 = new Point(this.scanThingMC2.x, this.scanThingMC2.y);
_local1 = this.localToGlobal(_local1);
_local2 = this.localToGlobal(_local2);
if ((((Math.abs((_local1.x - this.yourShip.x)) < ((this.scanThingMC.width / 2) + (this.yourShip.origWidth / 2)))) && ((Math.abs((_local1.y - this.yourShip.y)) < ((this.scanThingMC.height / 2) + (this.yourShip.origHeight / 2)))))){
return (true);
};
if ((((Math.abs((_local2.x - this.yourShip.x)) < ((this.scanThingMC2.width / 2) + (this.yourShip.origWidth / 2)))) && ((Math.abs((_local2.y - this.yourShip.y)) < ((this.scanThingMC2.height / 2) + (this.yourShip.origHeight / 2)))))){
return (true);
};
return (false);
}
public function render(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
switch (this.currState){
case this.STATE_SCANNING:
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
if (this.scannerMC.y > SCANNER_MAXY){
this.scannerMC.alpha = (this.scannerMC.alpha - 0.1);
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
if (this.scannerMC.alpha <= 0){
this.scannerMC.alpha = 0;
this.scannerMC2.alpha = 0;
this.currState = this.STATE_RESTING;
this.currRestTimer = 0;
};
} else {
this.scannerMC.y = (this.scannerMC.y + this.scannerSpeed);
};
if (hasBeenScanned){
_local1 = (this.yourShip.x - prevX);
_local2 = (this.yourShip.y - prevY);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if ((((_local3 > 5)) || (this.yourShip.isShooting))){
soundScanAlarm.play();
this.currState = this.STATE_DETECTED;
this.gameMC.gameEngine.enemyArray.push(new Lvl2SecurityBot(this.difficultyLevel, this.gameMC, 70, 100));
this.gameMC.gameEngine.enemyArray.push(new Lvl2SecurityBot(this.difficultyLevel, this.gameMC, (this.gameMC.STAGE_WIDTH - 70), 100));
currRestTimer = 0;
};
};
hasBeenScanned = false;
if (isScanned()){
hasBeenScanned = true;
};
break;
case this.STATE_DETECTED:
this.scannerMC2.y = (this.scannerMC2.y + ((this.scannerMC.y - this.scannerMC2.y) * 0.3));
hasBeenScanned = false;
currRestTimer++;
if ((currRestTimer % 8) < 4){
this.scannerMC.alpha = 1;
this.scannerMC2.alpha = this.scannerMC.alpha;
} else {
this.scannerMC.alpha = 0.2;
this.scannerMC2.alpha = this.scannerMC.alpha;
};
break;
case this.STATE_RESTING:
hasBeenScanned = false;
this.currRestTimer++;
if (this.currRestTimer > this.scannerRestTimer){
this.scannerMC.y = SCANNER_MINY;
this.scannerMC2.y = SCANNER_MINY;
this.scannerMC.alpha = (this.scannerMC.alpha + 0.1);
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
if (this.scannerMC.alpha >= 1){
this.scannerMC.alpha = 1;
this.scannerMC2.alpha = (this.scannerMC.alpha / 4);
this.currState = this.STATE_SCANNING;
};
};
break;
};
if (this.yourShip.currState == this.yourShip.STATE_ALIVE){
if (isCollide()){
this.yourShip.currState = this.yourShip.STATE_EXPLODE;
};
};
this.y = (this.y + this.speed);
if (this.y > this.gameMC.STAGE_HEIGHT){
this.currState = this.STATE_REMOVE;
};
}
}
}//package classes
Section 28
//Lvl2SecurityBot (classes.Lvl2SecurityBot)
package classes {
import flash.display.*;
public class Lvl2SecurityBot extends EnemyStopAndGo {
public function Lvl2SecurityBot(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl2Small1, _arg1, _arg2, _arg3, -100, _arg3, _arg4, _arg3, -100, 400, 0.1, this.ROTATION_NONE, 6);
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 10, 10, false, false, 0.5, 0, 0, 0, 1, BulletSquareArrowFriendly, BULLETMOVE_CONSISTENT, 1.05, 1, 250, 290));
this.absorbTimer = 70;
this.setLife(70, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 5, false, false, 0.5, PARTICLE_LINE, 0, 18, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 70, 110);
break;
case this.DIFFICULTY_MEDIUM:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 15, 6, false, false, 0.5, PARTICLE_LINE, 0, 18, 1, BulletSquareArrow, BULLETMOVE_CONSISTENT, 1.05, 1, 10, 90);
break;
case this.DIFFICULTY_HARD:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 15, 5, false, false, 0.5, PARTICLE_LINE, 0, 18, 1, BulletSquareArrow, BULLETGENERATOR_ANGLE, 1.05, 3, 70, 110);
break;
};
}
}
}//package classes
Section 29
//Lvl2SmallInterceptor (classes.Lvl2SmallInterceptor)
package classes {
import flash.display.*;
public class Lvl2SmallInterceptor extends EnemyStopAndGo {
public function Lvl2SmallInterceptor(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl2SmallInterceptorMC, _arg1, _arg2, _arg3, -50, _arg3, _arg4, _arg3, 700, 400, 0.1, this.ROTATION_NONE, 6);
this.groupNo = 21;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 10, true, false, 1, 0, 0, 14, 1, BulletGlowCircle2Friendly, BULLETMOVE_FASTER, 1.02, 2, 20, 270));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 10, true, false, 1, 0, 0, 14, 1, BulletGlowCircle2Friendly, BULLETMOVE_FASTER, 1.02, 2, 20, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, -4, -21, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 4, -21, true, false);
this.followEnemy = true;
this.setLife(20, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 5, 50, 4, false, false, 0.5, PARTICLE_LINE, 3, 25, 1, BulletGlowCircle2, BULLETMOVE_CONSISTENT, 1.05, 1, 20, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 5, 20, 2, false, false, 0.5, PARTICLE_LINE, 3, 25, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 20, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 5, 20, 2, false, false, 0.5, PARTICLE_LINE, 3, 25, 1, BulletGlowCircle2, BULLETMOVE_FASTER, 1.05, 1, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 15, 20, 6, false, false, 0.5, PARTICLE_LINE, 3, 25, 1, BulletGlowCircle2, BULLETMOVE_CONSISTENT, 1.05, 2, 10, 90);
break;
};
}
}
}//package classes
Section 30
//Lvl2SmallPursuit (classes.Lvl2SmallPursuit)
package classes {
import flash.display.*;
public class Lvl2SmallPursuit extends EnemyAtoB {
public function Lvl2SmallPursuit(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(Lvl2SmallScoutMC, _arg1, _arg2, 5, _arg3, _arg4, _arg5, _arg6);
this.groupNo = 22;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 25, 8, false, false, 5, 0, 0, 0, 1, BulletStickRedFriendly, BULLETMOVE_CONSISTENT, 0, 3, 250, 290));
this.addParticleGenerator(this.PARTICLE_SMOKE, 19, -10, true, false);
this.setLife(5, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 80, 4, false, false, 5, 0, 4, 5, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 0, 1, 70, 110);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 50, 4, false, false, 5, 0, 4, 5, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 0, 3, 70, 110);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 50, 6, false, false, 5, 0, 4, 5, 1, BulletStickRed, BULLETMOVE_CONSISTENT, 0, 5, 60, 120);
break;
};
}
}
}//package classes
Section 31
//Lvl2SmallScout (classes.Lvl2SmallScout)
package classes {
import flash.display.*;
public class Lvl2SmallScout extends EnemyZPattern {
public function Lvl2SmallScout(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:Boolean){
super(Lvl2SmallPursuitMC, _arg1, _arg2, 6, _arg3, _arg4, 70, 60, 0.2, _arg5);
this.groupNo = 23;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 15, 8, false, false, 0.5, 0, 0, 0, 1, BulletGlowCircleFriendly, BULLETMOVE_CONSISTENT, 0, 1, 0, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -30, true, false);
this.setLife(5, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 100, 4, false, false, 0.5, 0, 0, 15, 1, BulletGlowCircle, BULLETMOVE_CONSISTENT, 0, 1, 0, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, ((Math.random() * 20) + 35), 4, false, false, 0.5, 0, 0, 15, 1, BulletGlowCircle, BULLETMOVE_CONSISTENT, 0, 1, 0, 90);
break;
case this.DIFFICULTY_HARD:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, ((Math.random() * 20) + 35), 5, false, false, 0.5, 0, 0, 15, 1, BulletGlowCircle, BULLETMOVE_CONSISTENT, 0, 1, 0, 90);
break;
};
}
}
}//package classes
Section 32
//Lvl3Big (classes.Lvl3Big)
package classes {
import flash.display.*;
public class Lvl3Big extends EnemyScanAndGo {
public var turret3MC:Enemy;
public var turret2MC:Enemy;
public var turret1MC:Enemy;
public function Lvl3Big(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl3BigMC, _arg1, _arg2, _arg3, _arg4, 150, 5, 400, 0.05, this.ROTATION_ALWAYS, 6);
this.groupNo = 35;
this.turret1MC = new Lvl3BigTurret(_arg1, _arg2, this, 0, 11);
this.turret2MC = new Lvl3BigTurret(_arg1, _arg2, this, -39, 29);
this.turret3MC = new Lvl3BigTurret(_arg1, _arg2, this, 39, 29);
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 2, false, false, 2, 0, 0, 0, 1, BulletCrescentFriendly, BULLETMOVE_FASTER, 1.05, 8, 10, 270));
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 10, 20, 8, false, false, 2, 0, 0, 0, 1, BulletRadarFriendly, BULLETMOVE_FASTER, 1.05, 4, 10, 270));
this.setLife(100, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_BIG;
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -38, true, false);
this.turret1MC.followEnemy = true;
this.turret2MC.followEnemy = true;
this.turret3MC.followEnemy = true;
this.setLife(200, true);
switch (_arg1){
case this.DIFFICULTY_EASY:
this.turret1MC.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 2, false, false, 0.5, 0, 0, 22, 1, BulletRadar, BULLETMOVE_FASTER, 1.05, 2, 30, 90);
this.turret2MC.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 80, 4, true, false, 0.5, 0, 0, 22, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.05, 3, 60, 120);
this.turret3MC.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 80, 3, true, false, -0.5, 0, 0, 22, 1, BulletCrescent, BULLETMOVE_STOP, 1.1, 1, 60, 120);
break;
case this.DIFFICULTY_MEDIUM:
this.turret1MC.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 2, false, false, 0.5, 0, 0, 22, 1, BulletRadar, BULLETMOVE_FASTER, 1.05, 4, 30, 90);
this.turret2MC.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 80, 4, true, false, 0.5, 0, 0, 22, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.05, 5, 60, 120);
this.turret3MC.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 80, 3, true, false, -0.5, 0, 0, 22, 1, BulletCrescent, BULLETMOVE_STOP, 1.1, 2, 60, 120);
break;
case this.DIFFICULTY_HARD:
this.turret1MC.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 2, false, false, 0.5, 0, 0, 22, 1, BulletRadar, BULLETMOVE_FASTER, 1.05, 5, 30, 90);
this.turret2MC.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 80, 4, true, false, 0.5, 0, 0, 22, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.05, 5, 60, 120);
this.turret3MC.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 3, true, false, -0.5, 0, 0, 22, 1, BulletCrescent, BULLETMOVE_STOP, 1.1, 5, 20, 90);
break;
};
}
override public function specialrender(){
this.turret1MC.currState = this.currState;
this.turret2MC.currState = this.currState;
this.turret3MC.currState = this.currState;
}
}
}//package classes
Section 33
//Lvl3BigTurret (classes.Lvl3BigTurret)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Lvl3BigTurret extends Enemy {
public var posX:int;
public var posY:int;
public var hostMC:Enemy;
public function Lvl3BigTurret(_arg1:int, _arg2:MovieClip, _arg3:Enemy, _arg4:int, _arg5:int){
super(Lvl3BigTurretMC, _arg1, _arg2);
this.hostMC = _arg3;
this.posX = _arg4;
this.posY = _arg5;
this.gameMC.gameEngine.shipLayer.addChild(this);
this.isNormalEnemy = false;
this.gameMC.gameEngine.enemyArray.push(this);
this.isVulnerable = false;
}
override public function specialrender(){
var _local1:Point;
_local1 = new Point(this.posX, this.posY);
_local1 = this.hostMC.localToGlobal(_local1);
this.x = _local1.x;
this.y = _local1.y;
this.currState = this.hostMC.currState;
}
}
}//package classes
Section 34
//Lvl3Boss (classes.Lvl3Boss)
package classes {
import flash.display.*;
import flash.events.*;
public class Lvl3Boss extends Enemy {
public var PHASE_ATTACK2:int;// = 5
public var PHASE_ATTACK3:int;// = 7
public var PHASE_ATTACK4:int;// = 9
public var STATE_SCANSTOP:int;// = 0
public var PHASE_ATTACK1:int;// = 3
public var STATE_REMOVE:int;// = 4
public var scannerMC:MovieClip;
public var maxTimer:int;
public var dialogueTimer:int;
public var posX:Number;
public var posY:Number;
public var PHASE_REALLYDEATH:int;// = 13
public var STATE_SCANNING:int;// = 1
public var currDetectTimer:int;
public var PHASE_ARRIVAL:int;// = 1
public var scannerSpeed:int;
public var yourShip:CharShip;
public var PHASE_INTERMISSION2:int;// = 6
public var PHASE_INTERMISSION3:int;// = 8
public var PHASE_INTERMISSION4:int;// = 10
public var STATE_SPECIALREST:int;// = 6
public var PHASE_INTERMISSION1:int;// = 4
public var STATE_SPECIALDETECT:int;// = 7
public var explosionTimer:int;
public var PHASE_SUPERDEATH:int;// = 15
public var SCANNER_MAXY:int;// = 344
public var phaseCheckpoint:int;
public var scannerGoingDown:Boolean;
public var dialogueMC:MovieClip;
public var currCheckpoint:int;
public var specialAttackPhase:int;
public var PHASE_BALLAPPEARS:int;// = 2
public var STATE_RESTING:int;// = 3
public var scanThingMC:MovieClip;
public var currRestTimer:int;
public var currScanState:int;
public var SUPER_ATTACK3:int;// = 997
public var SUPER_ATTACK4:int;// = 996
public var specialScanTimer:int;
public var explosionTimerMax:int;
public var SUPER_ATTACK2:int;// = 998
public var SCANNER_MINY:int;// = 70
public var PHASE_TAKEAWAY:int;// = 14
public var origPosX:int;
public var currPhase:int;
public var PHASE_DEATH:int;// = 11
public var origPosY:int;
public var Lvl4Medium:MovieClip;
public var dialoguePhase:int;
public var STATE_DETECTED:int;// = 2
public var scannerMC2:MovieClip;
public var centerX:int;
public var centerY:int;
public var pointArray:Array;
public var appearTimer:int;
public var explosionNumber:int;
public var timerCheckpoint:int;
public var SHAKE:Number;// = 0.2
public var currFloatAnimX:Number;
public var currFloatAnimY:Number;
public var scanThingMC2:MovieClip;
public var SHAKE_DIST:int;// = 15
public var floatAnimX:Number;
public var scannerRestTimer:int;
public var PHASE_DIALOGUE1:int;// = 12
public var floatAnimY:Number;
public var SUPER_ATTACK:int;// = 999
public var STATE_SPECIALSCAN:int;// = 5
public function Lvl3Boss(_arg1:int, _arg2:MovieClip){
PHASE_ARRIVAL = 1;
PHASE_BALLAPPEARS = 2;
PHASE_ATTACK1 = 3;
PHASE_INTERMISSION1 = 4;
PHASE_ATTACK2 = 5;
PHASE_INTERMISSION2 = 6;
PHASE_ATTACK3 = 7;
PHASE_INTERMISSION3 = 8;
PHASE_ATTACK4 = 9;
PHASE_INTERMISSION4 = 10;
PHASE_DEATH = 11;
PHASE_DIALOGUE1 = 12;
PHASE_REALLYDEATH = 13;
PHASE_TAKEAWAY = 14;
PHASE_SUPERDEATH = 15;
SUPER_ATTACK = 999;
SUPER_ATTACK2 = 998;
SUPER_ATTACK3 = 997;
SUPER_ATTACK4 = 996;
SHAKE = 0.2;
SHAKE_DIST = 15;
STATE_SCANSTOP = 0;
STATE_SCANNING = 1;
STATE_DETECTED = 2;
STATE_RESTING = 3;
STATE_REMOVE = 4;
STATE_SPECIALSCAN = 5;
STATE_SPECIALREST = 6;
STATE_SPECIALDETECT = 7;
SCANNER_MINY = 70;
SCANNER_MAXY = 344;
super(EnemyFairy, _arg1, _arg2);
this.groupNo = 999;
this.origWidth = this.width;
this.origHeight = this.height;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 10, false, false, 5, 0, 0, 0, 1, BulletCrescentFriendly, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 270));
this.currPhase = this.PHASE_ARRIVAL;
this.x = (this.gameMC.STAGE_WIDTH / 2);
this.y = -500;
this.posX = this.x;
this.posY = this.y;
this.gameMC.gameEngine.shipLayer.addChild(this);
this.isNormalEnemy = false;
this.centerX = 0;
this.centerY = 0;
this.currFloatAnimX = 0;
this.currFloatAnimY = 0;
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.setLife(900, true);
this.absorbTimer = 100;
this.score = this.SCORE_BOSS;
this.yourShip = this.gameMC.gameEngine.yourShip;
this.addParticleGenerator(this.PARTICLE_FAIRY, 0, 0, true, false);
}
public function processBossLifeBar(){
var _local1:BossLifeMC;
var _local2:int;
_local1 = this.gameMC.gameEngine.bossLifeMC;
switch (currPhase){
case PHASE_ARRIVAL:
_local1.y = -100;
_local1.life1MC.scaleX = 1;
_local1.life2MC.scaleX = 1;
_local1.life3MC.scaleX = 1;
_local1.life4MC.scaleX = 1;
break;
case PHASE_ATTACK1:
_local1.y = (_local1.y + ((20 - _local1.y) * 0.2));
_local2 = (this.currLife - ((this.maxLife * 3) / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life4MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION1:
_local1.life4MC.scaleX = 0;
_local1.life3MC.alpha = this.alpha;
break;
case PHASE_ATTACK2:
if (_local1.life3MC.alpha != 1){
_local1.life3MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 2));
if (_local2 < 0){
_local2 = 0;
};
_local1.life3MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION2:
_local1.life3MC.scaleX = 0;
_local1.life2MC.alpha = this.alpha;
break;
case PHASE_ATTACK3:
if (_local1.life2MC.alpha != 1){
_local1.life2MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life2MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION3:
_local1.life2MC.scaleX = 0;
_local1.life1MC.alpha = this.alpha;
break;
case PHASE_ATTACK4:
if (_local1.life1MC.alpha != 1){
_local1.life1MC.alpha = 1;
};
_local2 = this.currLife;
if (_local2 < 0){
_local2 = 0;
};
_local1.life1MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_DEATH:
_local1.life1MC.scaleX = 0;
_local1.y = (_local1.y + ((-100 - _local1.y) * 0.05));
break;
};
}
public function processAttack(){
if (currCheckpoint == 0){
this.posX = (this.posX + ((this.origPosX - this.posX) * 0.3));
this.posY = (this.posY + ((this.origPosY - this.posY) * 0.3));
} else {
this.posX = (this.posX + ((pointArray[currCheckpoint].posX - this.posX) * pointArray[currCheckpoint].speedModifier));
this.posY = (this.posY + ((pointArray[currCheckpoint].posY - this.posY) * pointArray[currCheckpoint].speedModifier));
};
switch (phaseCheckpoint){
case 0:
timerCheckpoint++;
if (timerCheckpoint > pointArray[currCheckpoint].howLong){
phaseCheckpoint = 0;
timerCheckpoint = 0;
if (currCheckpoint == 0){
switch (currPhase){
case PHASE_ATTACK1:
changeWeapon(SUPER_ATTACK);
break;
case PHASE_ATTACK2:
changeWeapon(SUPER_ATTACK2);
break;
case PHASE_ATTACK3:
changeWeapon(SUPER_ATTACK3);
break;
case PHASE_ATTACK4:
changeWeapon(SUPER_ATTACK4);
break;
};
};
currCheckpoint++;
if (currCheckpoint >= pointArray.length){
currCheckpoint = 0;
changeWeapon(currPhase);
};
};
break;
case 1:
currCheckpoint = 0;
break;
};
}
public function changeWeapon(_arg1:int){
this.removeAllBulletGenerator();
switch (this.difficultyLevel){
case this.DIFFICULTY_EASY:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 50, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 50, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 50, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 80, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
break;
case this.SUPER_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 80, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletDoughnutBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 0, 180);
break;
};
break;
case this.DIFFICULTY_MEDIUM:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 30, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 30, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 30, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
break;
case this.SUPER_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 5, false, false, 5, 0, 0, 0, 1, BulletDoughnutBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 0, 180);
break;
};
break;
case this.DIFFICULTY_HARD:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 10, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 9, 10, 90);
break;
case this.PHASE_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 10, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 9, 10, 90);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 10, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 9, 10, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 10, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, false, 5, 0, 0, 0, 1, BulletCloverBoss4, BULLETMOVE_CONSISTENT, 1.05, 9, 10, 90);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 16, 60, 90);
break;
case this.SUPER_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 16, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 5, false, false, 5, 0, 0, 0, 1, BulletDoughnutBoss4, BULLETMOVE_CONSISTENT, 1.05, 4, 0, 180);
break;
};
break;
};
}
public function shake(){
var _local1:Boolean;
var _local2:Boolean;
_local1 = (Math.abs((this.floatAnimX - this.currFloatAnimX)) < this.SHAKE);
_local2 = (Math.abs((this.floatAnimY - this.currFloatAnimY)) < this.SHAKE);
if (_local1 == false){
if (this.currFloatAnimX < this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX + this.SHAKE);
} else {
if (this.currFloatAnimX > this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX - this.SHAKE);
};
};
};
if (_local2 == false){
if (this.currFloatAnimY < this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY + this.SHAKE);
} else {
if (this.currFloatAnimY > this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY - this.SHAKE);
};
};
};
if (((_local1) && (_local2))){
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
};
}
override public function specialrender(){
processBossLifeBar();
switch (this.currPhase){
case PHASE_ARRIVAL:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.posY = (this.posY + ((110 - this.posY) * 0.1));
if (Math.abs((110 - this.posY)) < 2){
this.posY = 110;
this.origPosX = this.x;
this.origPosY = this.posY;
this.currPhase = PHASE_DIALOGUE1;
dialogueMC = new FairyDialogue();
dialogueMC.x = (this.x + 20);
dialogueMC.y = (this.y + 20);
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueTimer = 0;
this.gameMC.gameEngine.interfaceLayer.addChild(dialogueMC);
dialogueMC.gotoAndStop(2);
};
break;
case PHASE_DIALOGUE1:
maxTimer = 100;
if (dialogueMC.currentFrame == 2){
maxTimer = 50;
};
dialogueTimer++;
if (dialogueTimer > maxTimer){
if (dialogueMC.currentFrame >= dialogueMC.totalFrames){
dialogueMC.scaleX = (dialogueMC.scaleX + ((0 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = (dialogueMC.scaleY + ((0 - dialogueMC.scaleY) * 0.4));
if (dialogueMC.scaleX < 0.1){
this.gameMC.gameEngine.interfaceLayer.removeChild(dialogueMC);
dialogueMC = null;
this.appearTimer = 0;
this.currPhase = PHASE_ATTACK1;
changeWeapon(PHASE_ATTACK1);
this.gameMC.gameEngine.vTreeAngle = -0.006;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(50, origPosY, 50, 0, 0.05, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), origPosY, 50, 0, 0.05, 0));
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSSLOW;
};
} else {
dialogueTimer = 0;
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueMC.gotoAndStop((dialogueMC.currentFrame + 1));
};
} else {
dialogueMC.scaleX = (dialogueMC.scaleX + ((1 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = dialogueMC.scaleX;
};
break;
case PHASE_ATTACK1:
this.isVulnerable = true;
processAttack();
if (this.currLife < ((this.maxLife * 3) / 4)){
this.setLife(((this.maxLife * 3) / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION1;
addNiceExplosionFairy(0, 0);
removeAllBullets();
};
break;
case PHASE_INTERMISSION1:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK2;
changeWeapon(PHASE_ATTACK2);
this.alpha = 1;
this.currRestTimer = 0;
this.gameMC.gameEngine.vTreeAngle = -0.006;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(50, (origPosY + 75), 50, 0, 0.05, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 75), 50, 0, 0.05, 0));
};
break;
case PHASE_ATTACK2:
this.isVulnerable = true;
processAttack();
if (this.currLife < (this.maxLife / 2)){
this.setLife((this.maxLife / 2), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = PHASE_INTERMISSION2;
addNiceExplosionFairy(0, 0);
removeAllBullets();
};
break;
case PHASE_INTERMISSION2:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK3;
changeWeapon(PHASE_ATTACK3);
this.alpha = 1;
this.currRestTimer = 0;
this.gameMC.gameEngine.vTreeAngle = -0.006;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(50, (origPosY + 50), 50, 0, 0.2, 0));
pointArray.push(new CheckPoint(origPosX, (origPosY + 100), 50, 0, 0.2, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 50), 50, 0, 0.2, 0));
};
break;
case PHASE_ATTACK3:
this.isVulnerable = true;
processAttack();
if (this.currLife < (this.maxLife / 4)){
this.setLife((this.maxLife / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION3;
addNiceExplosionFairy(0, 0);
removeAllBullets();
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSFAST;
};
break;
case PHASE_INTERMISSION3:
this.gameMC.gameEngine.vTreeAngle = -0.03;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK4;
changeWeapon(PHASE_ATTACK4);
this.alpha = 1;
specialAttackPhase = 0;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(100, (origPosY + 75), 40, 0, 0.2, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 40), 40, 0, 0.2, 0));
pointArray.push(new CheckPoint(50, (origPosY + 75), 40, 0, 0.2, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 40), 40, 0, 0.2, 0));
};
break;
case PHASE_ATTACK4:
this.isVulnerable = true;
processAttack();
switch (specialAttackPhase){
case 0:
break;
case 1:
break;
case 2:
break;
};
if (this.currLife < 0){
this.setLife(0, false);
this.changeWeapon(-1);
addNiceExplosionFairy(0, 0);
removeAllBullets();
phaseCheckpoint = 1;
if ((((Math.abs((this.origPosX - this.posX)) < 2)) && ((Math.abs((this.origPosY - this.posY)) < 2)))){
this.appearTimer = 0;
this.currPhase = this.PHASE_DEATH;
this.explosionTimer = 0;
this.explosionNumber = 0;
this.explosionTimerMax = 100;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSDEAD;
dialogueMC = new FairyDialogue2();
dialogueMC.x = (this.x + 20);
dialogueMC.y = (this.y + 20);
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueTimer = 0;
this.gameMC.gameEngine.interfaceLayer.addChild(dialogueMC);
dialogueMC.gotoAndStop(2);
};
};
break;
case PHASE_DEATH:
maxTimer = 100;
dialogueTimer++;
if (dialogueTimer > maxTimer){
if (dialogueMC.currentFrame >= dialogueMC.totalFrames){
dialogueMC.scaleX = (dialogueMC.scaleX + ((0 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = (dialogueMC.scaleY + ((0 - dialogueMC.scaleY) * 0.4));
if (dialogueMC.scaleX < 0.1){
this.gameMC.gameEngine.interfaceLayer.removeChild(dialogueMC);
dialogueMC = null;
Lvl4Medium = new Lvl4MediumMC();
Lvl4Medium.x = (this.gameMC.STAGE_WIDTH / 2);
Lvl4Medium.y = (0 - Lvl4Medium.height);
this.gameMC.gameEngine.shipLayer.addChild(Lvl4Medium);
this.currPhase = this.PHASE_REALLYDEATH;
};
} else {
dialogueTimer = 0;
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueMC.gotoAndStop((dialogueMC.currentFrame + 1));
};
} else {
dialogueMC.scaleX = (dialogueMC.scaleX + ((1 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = dialogueMC.scaleX;
};
break;
case PHASE_REALLYDEATH:
if ((Lvl4Medium.y + 3) >= this.y){
Lvl4Medium.y = this.y;
this.currPhase = PHASE_TAKEAWAY;
dialogueMC = new FairyDialogue3();
dialogueMC.x = this.yourShip.x;
dialogueMC.y = this.yourShip.y;
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
this.gameMC.gameEngine.interfaceLayer.addChild(dialogueMC);
dialogueMC.gotoAndStop(2);
} else {
Lvl4Medium.y = (Lvl4Medium.y + 3);
};
break;
case PHASE_TAKEAWAY:
Lvl4Medium.y = (Lvl4Medium.y - 3);
this.posY = Lvl4Medium.y;
dialogueMC.x = this.yourShip.x;
dialogueMC.y = this.yourShip.y;
dialogueMC.scaleX = (dialogueMC.scaleX + ((1 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = dialogueMC.scaleX;
if (Lvl4Medium.y < (0 - Lvl4Medium.height)){
this.gameMC.gameEngine.interfaceLayer.removeChild(dialogueMC);
dialogueMC = null;
this.gameMC.gameEngine.shipLayer.removeChild(Lvl4Medium);
Lvl4Medium = null;
this.currPhase = PHASE_SUPERDEATH;
this.currState = this.STATE_OUTOFSTAGE;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_NOSOUND;
};
break;
case PHASE_SUPERDEATH:
break;
};
shake();
this.x = (this.posX + this.currFloatAnimX);
this.y = (this.posY + this.currFloatAnimY);
}
}
}//package classes
Section 35
//Lvl3Medium (classes.Lvl3Medium)
package classes {
import flash.display.*;
public class Lvl3Medium extends EnemyStopAndGo {
public function Lvl3Medium(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl3MediumMC, _arg1, _arg2, _arg3, -50, _arg3, _arg4, _arg3, 800, 400, 0.1, this.ROTATION_NONE, 6);
this.groupNo = 34;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 0.5, 0, 0, 0, 1, BulletCrescentFriendly, BULLETMOVE_CONSISTENT, 1.1, 4, 10, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -24, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -24, true, false);
this.setLife(100, true);
this.absorbTimer = this.currLife;
this.score = this.SCORE_MEDIUM;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 80, 4, false, true, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 0);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 20, 80, 4, false, true, -0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 4);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 80, 4, false, false, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 0);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 20, 80, 4, false, true, -0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 4);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 40, 80, 4, false, true, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 8);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 60, 80, 4, false, true, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 12);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 80, 8, false, false, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 0);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 20, 80, 8, false, true, -0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 4);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 40, 80, 8, false, true, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 8);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 60, 80, 8, false, true, 0.5, 0, 0, 0, 1, BulletCrescent, BULLETMOVE_CONSISTENT, 1.1, 8, 12);
break;
};
}
}
}//package classes
Section 36
//Lvl3SmallConiferous (classes.Lvl3SmallConiferous)
package classes {
import flash.display.*;
public class Lvl3SmallConiferous extends EnemyAtoB {
public function Lvl3SmallConiferous(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(Lvl3SmallConiferousMC, _arg1, _arg2, 2, _arg3, _arg4, _arg5, _arg6);
this.groupNo = 31;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 30, 8, false, false, 5, 0, 0, 0, 1, BulletRadarFriendly, BULLETMOVE_CONSISTENT, 0, 8, 0));
this.addParticleGenerator(this.PARTICLE_SMOKE, 26, 34, true, false);
this.setLife(15, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 100, 3, false, false, 5, 0, 0, 0, 1, BulletRadar, BULLETMOVE_CONSISTENT, 0, 8, 0);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 50, 3, false, false, 5, 0, 0, 0, 1, BulletRadar, BULLETMOVE_CONSISTENT, 0, 8, 0);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 80, 4, false, false, 5, 0, 0, 0, 1, BulletRadar, BULLETMOVE_CONSISTENT, 0, 12, 0);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 40, 80, 4, false, false, 5, 0, 0, 0, 1, BulletRadar, BULLETMOVE_CONSISTENT, 0, 12, 15);
break;
};
}
}
}//package classes
Section 37
//Lvl3SmallRaptorial (classes.Lvl3SmallRaptorial)
package classes {
import flash.display.*;
public class Lvl3SmallRaptorial extends EnemyStopAndGo {
public function Lvl3SmallRaptorial(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl3SmallRaptorialMC, _arg1, _arg2, _arg3, -50, _arg3, _arg4, _arg3, 800, 400, 0.1, this.ROTATION_NONE, 6);
this.groupNo = 32;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalFriendly, BULLETMOVE_CONSISTENT, 1.1, 3, 250, 290));
this.setLife(20, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 80, 2, false, true, 0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 80, 2, false, true, -0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_STOP, 1.1, 1, 20, 160);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 2, false, true, 0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 3, false, true, -0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_STOP, 1.1, 1, 20, 160);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 2, false, true, 0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 3, false, true, -0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 40, 6, false, true, -0.5, PARTICLE_LINE, 0, 45, 1, BulletGlowOval, BULLETMOVE_CONSISTENT, 1.1, 6, (Math.random() * 60));
break;
};
}
}
}//package classes
Section 38
//Lvl3SmallScavenging (classes.Lvl3SmallScavenging)
package classes {
import flash.display.*;
public class Lvl3SmallScavenging extends EnemyZPattern {
public function Lvl3SmallScavenging(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:Boolean){
var _local6:int;
super(Lvl3SmallScavengingMC, _arg1, _arg2, 5, _arg3, _arg4, 70, 60, 0.1, _arg5);
this.groupNo = 33;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 15, 4, false, false, 0.5, 0, 0, 15, 1, BulletCloverFriendly, BULLETMOVE_CONSISTENT, 0, 2, 260, 280));
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, 37, true, false);
this.setLife(5, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 40, 4, false, true, 0.5, 0, 0, 15, 1, BulletClover, BULLETMOVE_CONSISTENT, 0, ((Math.random() * 30) + 30), (Math.random() * 360));
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 15, 4, false, true, 0.5, 0, 0, 15, 1, BulletClover, BULLETMOVE_CONSISTENT, 0, ((Math.random() * 30) + 30), (Math.random() * 360));
break;
case this.DIFFICULTY_HARD:
_local6 = ((Math.random() * 30) + 30);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 15, 4, false, true, 0.5, 0, 0, 15, 1, BulletClover, BULLETMOVE_CONSISTENT, 0, _local6, 0);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 15, 4, false, true, 0.5, 0, 0, 15, 1, BulletClover, BULLETMOVE_CONSISTENT, 0, _local6, 180);
break;
};
}
}
}//package classes
Section 39
//Lvl4Boss (classes.Lvl4Boss)
package classes {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Lvl4Boss extends Enemy {
public var PHASE_ATTACK2:int;// = 5
public var PHASE_ATTACK3:int;// = 7
public var PHASE_ATTACK4:int;// = 9
public var STATE_SCANSTOP:int;// = 0
public var PHASE_ATTACK1:int;// = 3
public var STATE_REMOVE:int;// = 4
public var scannerMC:MovieClip;
public var maxTimer:int;
public var dialogueTimer:int;
public var posX:Number;
public var posY:Number;
public var STATE_SCANNING:int;// = 1
public var currDetectTimer:int;
public var PHASE_ARRIVAL:int;// = 1
public var scannerSpeed:int;
public var yourShip:CharShip;
public var PHASE_INTERMISSION2:int;// = 6
public var PHASE_INTERMISSION3:int;// = 8
public var PHASE_INTERMISSION4:int;// = 10
public var STATE_SPECIALREST:int;// = 6
public var PHASE_INTERMISSION1:int;// = 4
public var STATE_SPECIALDETECT:int;// = 7
public var explosionTimer:int;
public var SCANNER_MAXY:int;// = 344
public var phaseCheckpoint:int;
public var scannerGoingDown:Boolean;
public var dialogueMC:MovieClip;
public var currCheckpoint:int;
public var specialAttackPhase:int;
public var PHASE_BALLAPPEARS:int;// = 2
public var STATE_RESTING:int;// = 3
public var scanThingMC:MovieClip;
public var AnotherFairyMC:MovieClip;
public var currRestTimer:int;
public var currScanState:int;
public var SUPER_ATTACK3:int;// = 997
public var SUPER_ATTACK4:int;// = 996
public var specialScanTimer:int;
public var explosionTimerMax:int;
public var SUPER_ATTACK2:int;// = 998
public var SCANNER_MINY:int;// = 70
public var origPosX:int;
public var currPhase:int;
public var PHASE_DEATH:int;// = 11
public var origPosY:int;
public var dialoguePhase:int;
public var STATE_DETECTED:int;// = 2
public var scannerMC2:MovieClip;
public var centerX:int;
public var centerY:int;
public var pointArray:Array;
public var appearTimer:int;
public var explosionNumber:int;
public var timerCheckpoint:int;
public var SHAKE:Number;// = 0.2
public var currFloatAnimX:Number;
public var currFloatAnimY:Number;
public var scanThingMC2:MovieClip;
public var SHAKE_DIST:int;// = 15
public var floatAnimX:Number;
public var scannerRestTimer:int;
public var PHASE_DIALOGUE1:int;// = 12
public var PHASE_DIALOGUE2:int;// = 13
public var floatAnimY:Number;
public var SUPER_ATTACK:int;// = 999
public var STATE_SPECIALSCAN:int;// = 5
public function Lvl4Boss(_arg1:int, _arg2:MovieClip){
PHASE_ARRIVAL = 1;
PHASE_BALLAPPEARS = 2;
PHASE_ATTACK1 = 3;
PHASE_INTERMISSION1 = 4;
PHASE_ATTACK2 = 5;
PHASE_INTERMISSION2 = 6;
PHASE_ATTACK3 = 7;
PHASE_INTERMISSION3 = 8;
PHASE_ATTACK4 = 9;
PHASE_INTERMISSION4 = 10;
PHASE_DEATH = 11;
PHASE_DIALOGUE1 = 12;
PHASE_DIALOGUE2 = 13;
SUPER_ATTACK = 999;
SUPER_ATTACK2 = 998;
SUPER_ATTACK3 = 997;
SUPER_ATTACK4 = 996;
SHAKE = 0.2;
SHAKE_DIST = 15;
STATE_SCANSTOP = 0;
STATE_SCANNING = 1;
STATE_DETECTED = 2;
STATE_RESTING = 3;
STATE_REMOVE = 4;
STATE_SPECIALSCAN = 5;
STATE_SPECIALREST = 6;
STATE_SPECIALDETECT = 7;
SCANNER_MINY = 70;
SCANNER_MAXY = 344;
super(Lvl4BossMC, _arg1, _arg2);
this.groupNo = 999;
this.origWidth = this.width;
this.origHeight = (this.mc.hatchMC.height / 2);
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletArrowFriendly, BULLETMOVE_CONSISTENT, 1.05, 4, 10, 270));
this.absorbTimer = 150;
this.currPhase = this.PHASE_ARRIVAL;
this.x = (this.gameMC.STAGE_WIDTH / 2);
this.y = -500;
this.posX = this.x;
this.posY = this.y;
this.gameMC.gameEngine.shipLayer.addChild(this);
this.isNormalEnemy = false;
this.centerX = 0;
this.centerY = 0;
this.currFloatAnimX = 0;
this.currFloatAnimY = 0;
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.setLife(1200, true);
this.score = this.SCORE_BOSS;
this.yourShip = this.gameMC.gameEngine.yourShip;
}
public function processBossLifeBar(){
var _local1:BossLifeMC;
var _local2:int;
_local1 = this.gameMC.gameEngine.bossLifeMC;
switch (currPhase){
case PHASE_ARRIVAL:
_local1.y = -100;
_local1.life1MC.scaleX = 1;
_local1.life2MC.scaleX = 1;
_local1.life3MC.scaleX = 1;
_local1.life4MC.scaleX = 1;
break;
case PHASE_ATTACK1:
_local1.y = (_local1.y + ((20 - _local1.y) * 0.2));
_local2 = (this.currLife - ((this.maxLife * 3) / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life4MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION1:
_local1.life4MC.scaleX = 0;
_local1.life3MC.alpha = this.alpha;
break;
case PHASE_ATTACK2:
if (_local1.life3MC.alpha != 1){
_local1.life3MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 2));
if (_local2 < 0){
_local2 = 0;
};
_local1.life3MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION2:
_local1.life3MC.scaleX = 0;
_local1.life2MC.alpha = this.alpha;
break;
case PHASE_ATTACK3:
if (_local1.life2MC.alpha != 1){
_local1.life2MC.alpha = 1;
};
_local2 = (this.currLife - (this.maxLife / 4));
if (_local2 < 0){
_local2 = 0;
};
_local1.life2MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_INTERMISSION3:
_local1.life2MC.scaleX = 0;
_local1.life1MC.alpha = this.alpha;
break;
case PHASE_ATTACK4:
if (_local1.life1MC.alpha != 1){
_local1.life1MC.alpha = 1;
};
_local2 = this.currLife;
if (_local2 < 0){
_local2 = 0;
};
_local1.life1MC.scaleX = (_local2 / (this.maxLife / 4));
break;
case PHASE_DEATH:
_local1.life1MC.scaleX = 0;
_local1.y = (_local1.y + ((-100 - _local1.y) * 0.05));
break;
};
}
public function processAttack(){
if (currCheckpoint == 0){
this.posX = (this.posX + ((this.origPosX - this.posX) * 0.3));
this.posY = (this.posY + ((this.origPosY - this.posY) * 0.3));
} else {
this.posX = (this.posX + ((pointArray[currCheckpoint].posX - this.posX) * pointArray[currCheckpoint].speedModifier));
this.posY = (this.posY + ((pointArray[currCheckpoint].posY - this.posY) * pointArray[currCheckpoint].speedModifier));
};
switch (phaseCheckpoint){
case 0:
timerCheckpoint++;
if (timerCheckpoint > pointArray[currCheckpoint].howLong){
phaseCheckpoint = 0;
timerCheckpoint = 0;
if (currCheckpoint == 0){
switch (currPhase){
case PHASE_ATTACK1:
changeWeapon(SUPER_ATTACK);
break;
case PHASE_ATTACK2:
changeWeapon(SUPER_ATTACK2);
break;
case PHASE_ATTACK3:
changeWeapon(SUPER_ATTACK3);
break;
case PHASE_ATTACK4:
changeWeapon(SUPER_ATTACK4);
break;
};
};
currCheckpoint++;
if (currCheckpoint >= pointArray.length){
currCheckpoint = 0;
changeWeapon(currPhase);
};
};
break;
};
}
public function changeWeapon(_arg1:int){
this.removeAllBulletGenerator();
this.followEnemy = false;
switch (this.difficultyLevel){
case this.DIFFICULTY_EASY:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 160, 5, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 160, 5, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 160, 3, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 160, 3, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 160, 5, false, true, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 160, 5, false, true, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
break;
case this.PHASE_ATTACK2:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 4, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 3, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 100, 120, 4, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 3, 90, 180);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 120, 2, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 2, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 120, 1, false, false, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 3, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 60, 120, 1, false, false, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 3, 90, 180);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 160, 5, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 160, 5, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 160, 3, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 160, 3, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 160, 5, false, true, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 160, 5, false, true, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 4, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 2, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 100, 120, 4, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 2, 90, 180);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 120, 2, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 2, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 120, 1, false, false, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 2, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 60, 120, 1, false, false, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 2, 90, 180);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 20, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 20, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 40, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
break;
case this.SUPER_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 20, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 40, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 40, 5, false, false, 5, 0, 0, 0, 1, BulletDoughnutBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 0, 180);
break;
};
break;
case this.DIFFICULTY_MEDIUM:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
break;
case this.PHASE_ATTACK2:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 4, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 5, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 100, 120, 4, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 5, 90, 180);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 120, 2, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 2, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 120, 1, false, false, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 5, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 60, 120, 1, false, false, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 5, 90, 180);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 4, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 3, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 100, 120, 4, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 3, 90, 180);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 120, 2, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 2, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 120, 1, false, false, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 3, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 60, 120, 1, false, false, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 3, 90, 180);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
break;
case this.SUPER_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 1, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 8, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 5, false, false, 5, 0, 0, 0, 1, BulletDoughnutBoss4, BULLETMOVE_CONSISTENT, 1.05, 2, 0, 180);
break;
};
break;
case this.DIFFICULTY_HARD:
switch (_arg1){
case this.PHASE_ATTACK1:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
break;
case this.PHASE_ATTACK2:
this.followEnemy = true;
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 4, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 8, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 100, 120, 4, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 8, 90, 180);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 120, 2, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 2, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 8, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 120, 1, false, false, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 8, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 60, 120, 1, false, false, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 8, 90, 180);
break;
case this.PHASE_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 80, 5, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 80, 3, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 80, 5, false, true, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_CONSISTENT, 1.05, 6, 20, 90);
break;
case this.PHASE_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 4, false, false, 5, 0, -157, -32, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 5, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 100, 120, 4, false, false, 5, 0, 169, -39, 1, BulletArrowRed, BULLETMOVE_STOP, 1.1, 5, 90, 180);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 120, 2, false, false, 5, 0, -121, -95, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 2, false, false, 5, 0, 113, -97, 1, BulletArrowBlue, BULLETMOVE_CONSISTENT, 1.05, 5, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 40, 120, 1, false, false, 0.5, 0, -79, -139, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 5, 0, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 60, 120, 1, false, false, -0.5, 0, 82, -135, 1, BulletArrowOrange, BULLETMOVE_FASTER, 1.05, 5, 90, 180);
break;
case this.SUPER_ATTACK:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 60, 90);
break;
case this.SUPER_ATTACK2:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
break;
case this.SUPER_ATTACK3:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ROTATE, 1, 7, 6, false, false, 0.5, 0, 0, 0, 1, BulletGlowOvalBoss4, BULLETMOVE_CONSISTENT, 1.05, 10, 20);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 16, 60, 90);
break;
case this.SUPER_ATTACK4:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 1, 10, 8, false, false, 5, 0, 0, 0, 1, BulletCrescentBoss4, BULLETMOVE_CONSISTENT, 1.05, 3, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_CIRCULAR, 1, 20, 6, false, false, 5, 0, 0, 0, 1, BulletRadarBoss4, BULLETMOVE_CONSISTENT, 1.05, 16, 60, 90);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 20, 5, false, false, 5, 0, 0, 0, 1, BulletDoughnutBoss4, BULLETMOVE_CONSISTENT, 1.05, 4, 0, 180);
break;
};
break;
};
}
public function shake(){
var _local1:Boolean;
var _local2:Boolean;
_local1 = (Math.abs((this.floatAnimX - this.currFloatAnimX)) < this.SHAKE);
_local2 = (Math.abs((this.floatAnimY - this.currFloatAnimY)) < this.SHAKE);
if (_local1 == false){
if (this.currFloatAnimX < this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX + this.SHAKE);
} else {
if (this.currFloatAnimX > this.floatAnimX){
this.currFloatAnimX = (this.currFloatAnimX - this.SHAKE);
};
};
};
if (_local2 == false){
if (this.currFloatAnimY < this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY + this.SHAKE);
} else {
if (this.currFloatAnimY > this.floatAnimY){
this.currFloatAnimY = (this.currFloatAnimY - this.SHAKE);
};
};
};
if (((_local1) && (_local2))){
this.floatAnimX = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
this.floatAnimY = ((Math.random() * SHAKE_DIST) - (SHAKE_DIST / 2));
};
}
override public function specialrender(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Point;
var _local5:Point;
processBossLifeBar();
switch (this.currPhase){
case PHASE_ARRIVAL:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.posY = (this.posY + ((190 - this.posY) * 0.1));
if (Math.abs((190 - this.posY)) < 2){
this.posY = 190;
this.origPosX = this.x;
this.origPosY = this.posY;
this.currPhase = PHASE_DIALOGUE1;
dialogueMC = new Boss4Dialogue();
dialogueMC.x = (this.x + 20);
dialogueMC.y = (this.y + 50);
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueTimer = 0;
this.gameMC.gameEngine.interfaceLayer.addChild(dialogueMC);
dialogueMC.gotoAndStop(2);
};
break;
case PHASE_DIALOGUE1:
maxTimer = 100;
dialogueTimer++;
if (dialogueTimer > maxTimer){
if (dialogueMC.currentFrame >= dialogueMC.totalFrames){
dialogueMC.scaleX = (dialogueMC.scaleX + ((0 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = (dialogueMC.scaleY + ((0 - dialogueMC.scaleY) * 0.4));
if (dialogueMC.scaleX < 0.1){
this.gameMC.gameEngine.interfaceLayer.removeChild(dialogueMC);
dialogueMC = null;
this.appearTimer = 0;
this.currPhase = PHASE_ATTACK1;
changeWeapon(PHASE_ATTACK1);
this.gameMC.gameEngine.vTreeAngle = -0.006;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(origPosX, origPosY, 200, 0, 0.05, 0));
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSSLOW;
};
} else {
dialogueTimer = 0;
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueMC.gotoAndStop((dialogueMC.currentFrame + 1));
};
} else {
dialogueMC.scaleX = (dialogueMC.scaleX + ((1 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = dialogueMC.scaleX;
};
break;
case PHASE_ATTACK1:
this.isVulnerable = true;
if (this.currLife < ((this.maxLife * 3) / 4)){
this.setLife(((this.maxLife * 3) / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION1;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -84, -12, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -7, -81, true, true);
addNiceExplosion(-84, -12);
addNiceExplosion(-7, -81);
removeAllBullets();
};
break;
case PHASE_INTERMISSION1:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK2;
changeWeapon(PHASE_ATTACK2);
this.alpha = 1;
this.currRestTimer = 0;
this.gameMC.gameEngine.vTreeAngle = -0.006;
};
break;
case PHASE_ATTACK2:
this.isVulnerable = true;
if (this.currLife < (this.maxLife / 2)){
this.setLife((this.maxLife / 2), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = PHASE_INTERMISSION2;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSDEAD;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 55, -34, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 82, 0, true, true);
addNiceExplosion(55, -34);
addNiceExplosion(82, 0);
removeAllBullets();
};
break;
case PHASE_INTERMISSION2:
this.gameMC.gameEngine.vTreeAngle = -0.015;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.alpha = 1;
this.currPhase = PHASE_DIALOGUE2;
dialogueMC = new Boss4Dialogue2();
dialogueMC.x = (this.x + 20);
dialogueMC.y = (this.y + 50);
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueTimer = 0;
this.gameMC.gameEngine.interfaceLayer.addChild(dialogueMC);
dialogueMC.gotoAndStop(2);
};
break;
case PHASE_DIALOGUE2:
maxTimer = 100;
this.mc.fairyMC.alpha = 100;
this.rotation = (this.rotation + ((0 - this.rotation) * 0.3));
dialogueTimer++;
if (dialogueTimer > maxTimer){
if (dialogueMC.currentFrame >= dialogueMC.totalFrames){
dialogueMC.scaleX = (dialogueMC.scaleX + ((0 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = (dialogueMC.scaleY + ((0 - dialogueMC.scaleY) * 0.4));
if (dialogueMC.scaleX < 0.1){
this.gameMC.gameEngine.interfaceLayer.removeChild(dialogueMC);
dialogueMC = null;
this.currPhase = PHASE_ATTACK3;
changeWeapon(PHASE_ATTACK3);
this.alpha = 1;
this.currRestTimer = 0;
this.gameMC.gameEngine.vTreeAngle = -0.006;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(50, (origPosY + 50), 50, 0, 0.2, 0));
pointArray.push(new CheckPoint(origPosX, (origPosY + 100), 50, 0, 0.2, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 50), 50, 0, 0.2, 0));
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSFAST;
};
} else {
dialogueTimer = 0;
dialogueMC.scaleX = 0;
dialogueMC.scaleY = 0;
dialogueMC.gotoAndStop((dialogueMC.currentFrame + 1));
if (dialogueMC.currentFrame == 3){
this.mc.hatchMC.gotoAndPlay(2);
};
};
} else {
dialogueMC.scaleX = (dialogueMC.scaleX + ((1 - dialogueMC.scaleX) * 0.4));
dialogueMC.scaleY = dialogueMC.scaleX;
};
break;
case PHASE_ATTACK3:
this.isVulnerable = true;
processAttack();
if (this.currLife < (this.maxLife / 4)){
this.setLife((this.maxLife / 4), false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_INTERMISSION3;
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, 26, -30, true, true);
this.addParticleGenerator(this.PARTICLE_DAMAGESMOKE, -93, -60, true, true);
addNiceExplosion(26, -30);
addNiceExplosion(-93, -60);
removeAllBullets();
};
break;
case PHASE_INTERMISSION3:
this.gameMC.gameEngine.vTreeAngle = -0.03;
this.isVulnerable = false;
this.appearTimer++;
if ((this.appearTimer % 20) < 10){
this.alpha = 1;
} else {
this.alpha = 0.5;
};
if (this.appearTimer > 150){
this.currPhase = PHASE_ATTACK4;
changeWeapon(PHASE_ATTACK4);
this.alpha = 1;
specialAttackPhase = 0;
currCheckpoint = 0;
phaseCheckpoint = 0;
timerCheckpoint = 0;
pointArray = new Array();
pointArray.push(new CheckPoint(0, 0, 200, 0, 0.05, 0));
pointArray.push(new CheckPoint(100, (origPosY + 80), 40, 0, 0.2, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 40), 40, 0, 0.2, 0));
pointArray.push(new CheckPoint(50, (origPosY + 80), 40, 0, 0.2, 0));
pointArray.push(new CheckPoint((this.gameMC.STAGE_WIDTH - 50), (origPosY + 40), 40, 0, 0.2, 0));
};
break;
case PHASE_ATTACK4:
this.isVulnerable = true;
processAttack();
switch (specialAttackPhase){
case 0:
break;
case 1:
break;
case 2:
break;
};
if (this.currLife < 0){
this.setLife(0, false);
this.changeWeapon(-1);
this.appearTimer = 0;
this.currPhase = this.PHASE_DEATH;
this.explosionTimer = 0;
this.explosionNumber = 0;
this.explosionTimerMax = 100;
AnotherFairyMC = new EnemyFairy();
AnotherFairyMC.x = this.x;
AnotherFairyMC.y = this.y;
this.gameMC.gameEngine.shipLayer.addChild(AnotherFairyMC);
this.mc.fairyMC.alpha = 0;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSDEAD;
removeAllBullets();
};
break;
case PHASE_DEATH:
this.gameMC.gameEngine.vTreeAngle = -0.002;
this.isHarmful = false;
AnotherFairyMC.x = (AnotherFairyMC.x + (((this.gameMC.STAGE_WIDTH / 2) - AnotherFairyMC.x) * 0.02));
AnotherFairyMC.y = (AnotherFairyMC.y + (((this.gameMC.STAGE_HEIGHT - 150) - AnotherFairyMC.y) * 0.02));
this.scaleX = (this.scaleX - 0.002);
this.scaleY = this.scaleX;
this.rotation = (this.rotation + 0.15);
this.posY = (this.posY + 0.2);
this.explosionTimer++;
if (this.explosionTimer > this.explosionTimerMax){
this.explosionTimer = 0;
this.explosionNumber++;
switch (this.explosionNumber){
case 1:
_local1 = -50;
_local2 = -50;
_local3 = 2;
this.explosionTimerMax = 40;
break;
case 2:
_local1 = 100;
_local2 = 50;
_local3 = 2;
this.explosionTimerMax = 35;
break;
case 3:
_local1 = -100;
_local2 = 30;
_local3 = 2;
this.explosionTimerMax = 30;
break;
case 4:
_local1 = 50;
_local2 = -100;
_local3 = 2;
this.explosionTimerMax = 25;
break;
case 5:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 20;
break;
case 6:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 15;
break;
case 7:
_local1 = -32;
_local2 = -93;
_local3 = 2;
this.explosionTimerMax = 10;
break;
case 8:
_local1 = 25;
_local2 = 10;
_local3 = 2;
this.explosionTimerMax = 40;
break;
case 9:
_local1 = 0;
_local2 = 0;
_local3 = 4;
this.explosionTimerMax = 150;
break;
case 10:
this.currState = this.STATE_OUTOFSTAGE;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_NOSOUND;
break;
};
if (this.explosionNumber <= 9){
_local4 = new Point((_local1 * this.scaleX), (_local2 * this.scaleY));
_local5 = this.localToGlobal(_local4);
this.gameMC.gameEngine.addExplosion(_local5.x, _local5.y, _local3, false);
};
};
break;
};
shake();
this.x = (this.posX + this.currFloatAnimX);
this.y = (this.posY + this.currFloatAnimY);
}
}
}//package classes
Section 40
//Lvl4SmallBomber (classes.Lvl4SmallBomber)
package classes {
import flash.display.*;
public class Lvl4SmallBomber extends EnemyAtoB {
public function Lvl4SmallBomber(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(Lvl4SmallBomberMC, _arg1, _arg2, 2, _arg3, _arg4, _arg5, _arg6);
this.groupNo = 41;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_ANGLE, 15, 30, 8, false, false, 5, 0, 0, 0, 1, BulletSmallDoughnutFriendly, BULLETMOVE_CONSISTENT, 1.05, 4, 20, 270));
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -28, true, false);
this.setLife(15, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 50, 4, false, false, 5, 0, 0, 30, 1, BulletSmallDoughnut, BULLETMOVE_CONSISTENT, 1.05, 4, 20, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 10, 100, 3, true, false, 1, 0, 0, 30, 1, BulletSmallDoughnut, BULLETMOVE_CONSISTENT, 1.05, 3, 40, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 50, 4, false, false, 5, 0, 0, 30, 1, BulletSmallDoughnut, BULLETMOVE_CONSISTENT, 1.05, 4, 20, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 10, 100, 4, true, false, 1, 0, 0, 30, 1, BulletSmallDoughnut, BULLETMOVE_CONSISTENT, 1.05, 6, 40, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 20, 40, 6, false, false, 5, 0, 0, 30, 1, BulletSmallDoughnut, BULLETMOVE_CONSISTENT, 1.05, 4, 20, 90);
break;
};
}
}
}//package classes
Section 41
//Lvl4SmallBomberShield (classes.Lvl4SmallBomberShield)
package classes {
import flash.display.*;
public class Lvl4SmallBomberShield extends Lvl4SmallBomber {
public function Lvl4SmallBomberShield(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
this.shieldMe();
}
}
}//package classes
Section 42
//Lvl4SmallFighter (classes.Lvl4SmallFighter)
package classes {
import flash.display.*;
public class Lvl4SmallFighter extends EnemyScanAndGo {
public function Lvl4SmallFighter(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
super(Lvl4SmallFighterMC, _arg1, _arg2, _arg3, _arg4, 100, 5, 200, 0.1, this.ROTATION_ALWAYS, 6);
this.groupNo = 42;
this.origWidth = 34;
this.origHeight = 36;
this.absorbReward.push(getBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 30, 8, false, false, -0.5, 0, 0, 0, 1, BulletSakuraFriendly, BULLETMOVE_CONSISTENT, 1.05, 8, 230, 310));
this.addParticleGenerator(this.PARTICLE_SMOKE, 0, -17, true, false);
this.setLife(30, true);
this.absorbTimer = this.currLife;
switch (_arg1){
case this.DIFFICULTY_EASY:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 3, false, false, -0.5, 0, -17, 17, 1, BulletSakuraRed, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 3, false, false, 0.5, 0, 17, 17, 1, BulletSakuraRed, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 120, 6, false, false, -0.5, 0, -17, 17, 1, BulletSakuraBlue, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 120, 6, false, false, 0.5, 0, 17, 17, 1, BulletSakuraBlue, BULLETMOVE_CONSISTENT, 1.05, 2, 20, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 6, false, false, 1, 0, -17, 17, 1, BulletSakuraOrange, BULLETMOVE_CONSISTENT, 1.05, 1, 40, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 6, false, false, 1, 0, 17, 17, 1, BulletSakuraOrange, BULLETMOVE_CONSISTENT, 1.05, 1, 40, 90);
break;
case this.DIFFICULTY_MEDIUM:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 3, false, false, -0.5, 0, -17, 17, 1, BulletSakuraRed, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 3, false, false, 0.5, 0, 17, 17, 1, BulletSakuraRed, BULLETMOVE_STOP, 1.1, 1, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 120, 6, false, true, -0.5, 0, -17, 17, 1, BulletSakuraBlue, BULLETMOVE_CONSISTENT, 1.05, 2, 15, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 120, 6, false, true, 0.5, 0, 17, 17, 1, BulletSakuraBlue, BULLETMOVE_CONSISTENT, 1.05, 2, 15, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 6, true, false, 1, 0, -17, 17, 1, BulletSakuraOrange, BULLETMOVE_CONSISTENT, 1.05, 1, 40, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 6, true, false, 1, 0, 17, 17, 1, BulletSakuraOrange, BULLETMOVE_CONSISTENT, 1.05, 1, 40, 90);
break;
case this.DIFFICULTY_HARD:
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 3, false, false, -0.5, 0, -17, 17, 1, BulletSakuraRed, BULLETMOVE_STOP, 1.1, 3, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_RANDOM, 1, 120, 3, false, false, 0.5, 0, 17, 17, 1, BulletSakuraRed, BULLETMOVE_STOP, 1.1, 3, 20, 160);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 120, 6, false, true, -0.5, 0, -17, 17, 1, BulletSakuraBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 15, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 40, 120, 6, false, true, 0.5, 0, 17, 17, 1, BulletSakuraBlue, BULLETMOVE_CONSISTENT, 1.05, 3, 15, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 6, true, false, 1, 0, -17, 17, 1, BulletSakuraOrange, BULLETMOVE_CONSISTENT, 1.05, 2, 40, 90);
this.addBulletGenerator(this.BULLETGENERATOR_ANGLE, 80, 120, 6, true, false, 1, 0, 17, 17, 1, BulletSakuraOrange, BULLETMOVE_CONSISTENT, 1.05, 2, 40, 90);
break;
};
}
}
}//package classes
Section 43
//Lvl4SmallRammer (classes.Lvl4SmallRammer)
package classes {
import flash.display.*;
import flash.events.*;
public class Lvl4SmallRammer extends EnemyAtoB {
public var MAX_SPEED:int;// = 12
public var MIN_SPEED:int;// = 4
public function Lvl4SmallRammer(_arg1:int, _arg2:MovieClip){
var _local3:Number;
var _local4:Number;
MIN_SPEED = 4;
MAX_SPEED = 12;
switch (_arg1){
case this.DIFFICULTY_EASY:
MIN_SPEED = (MIN_SPEED / 2);
MAX_SPEED = (MAX_SPEED / 2);
break;
case this.DIFFICULTY_MEDIUM:
break;
case this.DIFFICULTY_HARD:
MIN_SPEED = (MIN_SPEED * 1.5);
MAX_SPEED = (MAX_SPEED * 1.5);
break;
};
_local3 = (Math.random() * _arg2.STAGE_WIDTH);
_local4 = ((Math.random() * (MAX_SPEED - MIN_SPEED)) + MIN_SPEED);
super(Lvl4SmallRammerMC, _arg1, _arg2, _local4, _local3, -100, _local3, (_arg2.STAGE_HEIGHT + 100));
this.groupNo = 43;
this.addParticleGenerator(this.PARTICLE_SMOKE, -6, -26, true, false);
this.addParticleGenerator(this.PARTICLE_SMOKE, 6, -26, true, false);
this.setLife(1000, true);
this.origWidth = this.width;
this.origHeight = this.height;
this.isRammable = true;
this.isHittable = false;
this.isAbsorbable = false;
}
}
}//package classes
Section 44
//MainGame (classes.MainGame)
package classes {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import explosionpackage.*;
import flash.filters.*;
import flash.ui.*;
public class MainGame {
public var DIFFICULTY_EASY:int;// = 1
public var bgElemMedium:Array;
public var ENEMY_2PURSUIT:int;// = 23
public var LEVEL_PIC:int;// = 999
public var ENEMY_2INTERCEPTOR:int;// = 22
public var bgLayer:Sprite;
public var ENEMY_4BOSS:int;// = 46
public var levelTimer:int;
public var bossEnemy:Enemy;
public var absorbLayer:Sprite;
public var bgElemLarge:Array;
public var ENEMY_4BOMBER:int;// = 41
public var bgRed:Number;
public var ENEMY_1SMALLDOZER:int;// = 1
public var isParticlePressed:Boolean;
public var STATE_GAMEPLAY:int;// = 3
public var prevState:int;
public var txtBonusArray:Array;
public var MAX_VTREE:int;// = 1
public var currPicTimer:int;
public var isWholeGame:Boolean;
public var ENEMY_3BIG:int;// = 35
public var lastTxtBonus:int;
public var bgBlue:Number;
public var explosionArray:Array;
public var treeScale:Number;
public var QUIT_KEY:int;// = 81
public var ENEMY_2MEDIUM:int;// = 25
public var ENEMY_1SMALLTRUCK:int;// = 2
public var PAUSE_KEY:int;// = 80
public var ENEMY_4RAMMER:int;// = 43
public var ENEMY_2SCANNER:int;// = 21
public var quitPressTimer:int;
public var currLevel:int;
public var shipLayer:Sprite;
public var bulletArray:Array;
public var DIFFICULTY_MEDIUM:int;// = 2
public var treeX:int;
public var treeY:int;
public var STATE_SHOWBOSSWARNING:int;// = 5
public var STATE_PAUSE:int;// = 6
public var ENEMY_3BOSS:int;// = 36
public var STATE_SHOWLEVELPIC:int;// = 4
public var bossApproachMC:MovieClip;
public var prevvTreeAngle:Number;
public var ENEMY_4BOMBERSHIELD:int;// = 47
public var sinTree:Number;
public var degreeTree:Number;
public var tutorialSpacebarEnabled:Boolean;
public var PARTICLE_LIMIT:int;// = 80
public var ENEMY_2SCOUT:int;// = 24
public var tutorialTarget:MovieClip;
public var isBossFight:Boolean;
public var ENEMY_4BIG:int;// = 45
public var shootKey2:int;
public var bgSmallLayer:Sprite;
public var tutorialFrame:int;
public var tutorialSpacePressed:Boolean;
public var tutorialPhase:int;
public var ENEMY_2SCANNERTUTORIAL:int;// = 28
public var tutorialEnemy:Enemy;
public var ENEMY_4MEDIUM:int;// = 44
public var newScore:int;
public var ENEMY_3CONIFEROUS:int;// = 31
public var QUALITY_KEY:int;// = 85
public var ENEMY_4FIGHTER:int;// = 42
public var DIFFICULTY_HARD:int;// = 3
public var STATE_WIN:int;// = 7
public var STATE_START:int;// = 1
public var particleUpperLayer:Sprite;
public var MAX_PARTICLE_LIMIT:int;// = 80
public var bgLargeLayer:Sprite;
public var STAGE_WIDTH:int;// = 430
public var PARTICLE_KEY:int;// = 73
public var obstacleArray:Array;
public var bgArray:Array;
public var ENEMY_1MEDIUM:int;// = 4
public var ENEMY_2BOSS:int;// = 27
public var yourShip:CharShip;
public var gameMC:MovieClip;
public var textureLayer:Sprite;
public var ENEMY_3SCAVENGING:int;// = 33
public var bulletSound:sndFriendShot;
public var txtBonusTimer:int;
public var levelArray:Array;
public var enemyRestTimer:int;
public var startEnemyRest:Boolean;
public var explosionLayer:Sprite;
public var ENEMY_3RAPTORIAL:int;// = 32
public var tutorialPanel:HowToPlayPanel;
public var bgMediumLayer:Sprite;
public var isQuitPressed:Boolean;
public var bossLifeMC:BossLifeMC;
public var particleGeneratorArray:Array;
public var bulletLayer:Sprite;
public var particleArray:Array;
public var nextLevelTimer:int;
public var ENEMY_1SMALLDRILLER:int;// = 3
public var currState:int;
public var ENEMY_1BIG:int;// = 5
public var ENEMY_1BOSS:int;// = 6
public var currDifficulty:int;
public var SKIP_KEY:int;// = 75
public var currScore:Number;
public var ENEMY_3MEDIUM:int;// = 34
public var interfaceLayer:Sprite;
public var bulletChannel:SoundChannel;
public var isPausePressed:Boolean;
public var STAGE_HEIGHT:int;// = 480
public var enemyArray:Array;
public var levelPicPhase:int;
public var bgGreen:Number;
public var currTreeAngle:Number;
public var cosTree:Number;
public var shootKey:int;
public var levelPicSprite:Sprite;
public var treeRadius:int;
public var prevEnemyGroupNo:int;
public var bgColorLayer:Sprite;
public var ENEMY_2BIG:int;// = 26
public var STATE_SETSTAGE:int;// = 2
public var isQualityPressed:Boolean;
public var absorbKey:int;
public var bgElemSmall:Array;
public var enemyGroupCombo:int;
public var particleLowerLayer:Sprite;
public var vTreeAngle:Number;
public function MainGame(_arg1:MovieClip, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
var _local6:Boolean;
var _local7:*;
DIFFICULTY_EASY = 1;
DIFFICULTY_MEDIUM = 2;
DIFFICULTY_HARD = 3;
PARTICLE_LIMIT = 80;
MAX_PARTICLE_LIMIT = 80;
STATE_START = 1;
STATE_SETSTAGE = 2;
STATE_GAMEPLAY = 3;
STATE_SHOWLEVELPIC = 4;
STATE_SHOWBOSSWARNING = 5;
STATE_PAUSE = 6;
STATE_WIN = 7;
STAGE_WIDTH = 430;
STAGE_HEIGHT = 480;
ENEMY_1SMALLDOZER = 1;
ENEMY_1SMALLTRUCK = 2;
ENEMY_1SMALLDRILLER = 3;
ENEMY_1MEDIUM = 4;
ENEMY_1BIG = 5;
ENEMY_1BOSS = 6;
ENEMY_2SCANNER = 21;
ENEMY_2SCANNERTUTORIAL = 28;
ENEMY_2INTERCEPTOR = 22;
ENEMY_2PURSUIT = 23;
ENEMY_2SCOUT = 24;
ENEMY_2MEDIUM = 25;
ENEMY_2BIG = 26;
ENEMY_2BOSS = 27;
ENEMY_3CONIFEROUS = 31;
ENEMY_3RAPTORIAL = 32;
ENEMY_3SCAVENGING = 33;
ENEMY_3MEDIUM = 34;
ENEMY_3BIG = 35;
ENEMY_3BOSS = 36;
ENEMY_4BOMBER = 41;
ENEMY_4FIGHTER = 42;
ENEMY_4RAMMER = 43;
ENEMY_4MEDIUM = 44;
ENEMY_4BIG = 45;
ENEMY_4BOSS = 46;
ENEMY_4BOMBERSHIELD = 47;
LEVEL_PIC = 999;
MAX_VTREE = 1;
PAUSE_KEY = 80;
QUIT_KEY = 81;
SKIP_KEY = 75;
QUALITY_KEY = 85;
PARTICLE_KEY = 73;
super();
_local6 = false;
if (_local6){
shootKey = 88;
shootKey2 = 89;
absorbKey = 68;
} else {
shootKey = 90;
shootKey2 = 89;
absorbKey = 88;
};
this.gameMC = _arg1;
this.currDifficulty = _arg2;
this.currLevel = _arg3;
this.isWholeGame = _arg4;
this.currState = this.STATE_START;
this.enemyArray = new Array();
this.bulletArray = new Array();
this.particleGeneratorArray = new Array();
this.particleArray = new Array();
this.obstacleArray = new Array();
this.bgColorLayer = new Sprite();
this.bgColorLayer.x = 0;
this.bgColorLayer.y = 0;
this.gameMC.addChild(this.bgColorLayer);
this.bgColorLayer.graphics.beginFill(0xFFFFFF);
this.bgColorLayer.graphics.drawRect(0, 0, 640, 480);
this.bgColorLayer.graphics.endFill();
this.bgRed = 0xFF;
this.bgGreen = 0xFF;
this.bgBlue = 0xFF;
this.bgColorLayer.transform.colorTransform = new ColorTransform(0, 0, 0, 0, this.bgRed, this.bgGreen, this.bgBlue, 0xFF);
this.bgLayer = new Sprite();
this.bgLayer.x = 0;
this.bgLayer.y = 0;
this.bgLayer.alpha = 0;
this.gameMC.addChild(this.bgLayer);
this.bgLargeLayer = new Sprite();
this.bgLargeLayer.x = 0;
this.bgLargeLayer.y = 0;
this.bgLargeLayer.alpha = 1;
this.bgLayer.addChild(this.bgLargeLayer);
this.bgMediumLayer = new Sprite();
this.bgMediumLayer.x = 0;
this.bgMediumLayer.y = 0;
this.bgMediumLayer.alpha = 1;
this.bgLayer.addChild(this.bgMediumLayer);
this.bgSmallLayer = new Sprite();
this.bgSmallLayer.x = 0;
this.bgSmallLayer.y = 0;
this.bgSmallLayer.alpha = 1;
this.bgLayer.addChild(this.bgSmallLayer);
this.textureLayer = new Sprite();
this.textureLayer.x = 0;
this.textureLayer.y = 0;
this.textureLayer.alpha = 1;
this.textureLayer.graphics.beginFill(0x222222, 0.6);
this.textureLayer.graphics.drawRect(0, 0, 640, this.gameMC.STAGE_HEIGHT);
this.textureLayer.graphics.endFill();
this.gameMC.addChild(this.textureLayer);
this.particleLowerLayer = new Sprite();
this.particleLowerLayer.x = 0;
this.particleLowerLayer.y = 0;
this.gameMC.addChild(this.particleLowerLayer);
this.absorbLayer = new Sprite();
this.absorbLayer.x = 0;
this.absorbLayer.y = 0;
this.gameMC.addChild(this.absorbLayer);
this.shipLayer = new Sprite();
this.shipLayer.x = 0;
this.shipLayer.y = 0;
this.gameMC.addChild(this.shipLayer);
this.bulletLayer = new Sprite();
this.bulletLayer.x = 0;
this.bulletLayer.y = 0;
this.gameMC.addChild(this.bulletLayer);
this.particleUpperLayer = new Sprite();
this.particleUpperLayer.x = 0;
this.particleUpperLayer.y = 0;
this.gameMC.addChild(this.particleUpperLayer);
this.explosionLayer = new Sprite();
this.explosionLayer.x = 0;
this.explosionLayer.y = 0;
this.gameMC.addChild(this.explosionLayer);
this.explosionArray = new Array();
this.interfaceLayer = new Sprite();
this.interfaceLayer.x = 0;
this.interfaceLayer.y = 0;
this.gameMC.addChild(this.interfaceLayer);
this.bossLifeMC = new BossLifeMC();
this.bossLifeMC.x = (this.gameMC.STAGE_WIDTH / 2);
this.bossLifeMC.y = -100;
this.interfaceLayer.addChild(this.bossLifeMC);
_arg1.addEventListener(Event.ENTER_FRAME, render);
_arg1.stage.addEventListener(KeyboardEvent.KEY_DOWN, pressMovement);
_arg1.stage.addEventListener(KeyboardEvent.KEY_UP, releaseMovement);
_arg1.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMovement);
bgElemSmall = new Array();
bgElemMedium = new Array();
bgElemLarge = new Array();
bgElemSmall[0] = new Array(bg0s_1, bg0s_2);
bgElemMedium[0] = new Array(bg0m_1);
bgElemLarge[0] = new Array(bg0l_1);
bgElemSmall[1] = new Array(bg1s_1, bg1s_2, bg1s_3, bg1s_4, bg1s_5, bg1s_6, bg1s_7, bg1s_8, bg1s_9, bg1s_10);
bgElemMedium[1] = new Array(bg1m_1, bg1m_2, bg1m_3, bg1m_4, bg1m_5, bg1m_6);
bgElemLarge[1] = new Array(bg1l_1, bg1l_2, bg1l_3, bg1l_4);
bgElemSmall[2] = new Array(bg2s_1, bg2s_2, bg2s_3, bg2s_4, bg2s_5, bg2s_6, bg2s_7, bg2s_8, bg2s_9, bg2s_10);
bgElemMedium[2] = new Array(bg2m_1, bg2m_2, bg2m_3, bg2m_4, bg2m_5, bg2m_6);
bgElemLarge[2] = new Array(bg2l_1, bg2l_2, bg2l_3, bg2l_4);
bgElemSmall[3] = new Array(bg3s_1, bg3s_2, bg3s_3, bg3s_4, bg3s_5, bg3s_6, bg3s_7, bg3s_8, bg3s_9, bg3s_10);
bgElemMedium[3] = new Array(bg3m_1, bg3m_2, bg3m_3, bg3m_4, bg3m_5, bg3m_6);
bgElemLarge[3] = new Array(bg3l_1, bg3l_2, bg3l_3, bg3l_4);
bgElemSmall[4] = new Array(bg4s_1, bg4s_2, bg4s_3, bg4s_4, bg4s_5, bg4s_6, bg4s_7, bg4s_8, bg4s_9, bg4s_10);
bgElemMedium[4] = new Array(bg4m_1, bg4m_2, bg4m_3, bg4m_4, bg4m_5, bg4m_6);
bgElemLarge[4] = new Array(bg4l_1, bg4l_2, bg4l_3, bg4l_4);
this.bgArray = new Array();
this.treeX = 640;
this.treeY = (this.gameMC.STAGE_HEIGHT / 2);
this.treeRadius = (this.treeX - this.gameMC.STAGE_WIDTH);
this.cosTree = 0;
this.sinTree = 0;
this.bgLayer.alpha = 0;
this.isBossFight = _arg5;
bulletSound = new sndFriendShot();
bulletChannel = null;
this.currScore = 0;
this.newScore = 0;
this.gameMC.treeMC.txtScore.text = "00000000";
this.txtBonusArray = new Array(this.gameMC.treeMC.txtBonus1, this.gameMC.treeMC.txtBonus2, this.gameMC.treeMC.txtBonus3, this.gameMC.treeMC.txtBonus4, this.gameMC.treeMC.txtBonus5);
_local7 = 0;
while (_local7 < this.txtBonusArray.length) {
this.txtBonusArray[_local7].text = "";
_local7++;
};
this.lastTxtBonus = 0;
this.txtBonusTimer = 0;
this.prevEnemyGroupNo = -1;
this.enemyGroupCombo = 1;
isPausePressed = false;
isQuitPressed = false;
isQualityPressed = false;
isParticlePressed = false;
quitPressTimer = 9999;
if (this.gameMC.isQualityHigh){
this.gameMC.treeMC.txtQuality.text = "QUALITY : HIGH";
} else {
this.gameMC.treeMC.txtQuality.text = "QUALITY : LOW";
};
if (this.gameMC.isParticleOn){
this.gameMC.treeMC.txtParticles.text = "PARTICLES : ON";
PARTICLE_LIMIT = MAX_PARTICLE_LIMIT;
} else {
this.gameMC.treeMC.txtParticles.text = "PARTICLES : OFF";
PARTICLE_LIMIT = 0;
};
}
public function isCollideObject(_arg1:MovieClip, _arg2:MovieClip):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local3 = Math.abs((_arg2.x - _arg1.x));
_local4 = Math.abs((_arg2.y - _arg1.y));
_local5 = ((_arg1.origWidth > _arg1.origHeight)) ? _arg1.origWidth : _arg1.origHeight;
_local6 = ((_arg2.origWidth > _arg2.origHeight)) ? _arg2.origWidth : _arg2.origHeight;
_local7 = (_local5 + _local6);
if ((((_local3 < _local7)) && ((_local4 < _local7)))){
return (isCollide(_arg1.x, _arg1.y, _arg1.origWidth, _arg1.origHeight, _arg1.rotation, _arg2.x, _arg2.y, _arg2.origWidth, _arg2.origHeight, _arg2.rotation));
};
return (false);
}
public function RotateVector2DClockwise(_arg1:Point, _arg2:Number):Point{
var _local3:Number;
var _local4:Number;
var _local5:*;
_local4 = Math.cos(_arg2);
_local5 = Math.sin(_arg2);
_local3 = _arg1.x;
_arg1.x = ((_local3 * _local4) + (_arg1.y * _local5));
_arg1.y = ((-(_local3) * _local5) + (_arg1.y * _local4));
return (_arg1);
}
public function pressMovement(_arg1:KeyboardEvent){
var _local2:*;
switch (_arg1.keyCode){
case Keyboard.UP:
this.yourShip.isMovingUp = true;
break;
case Keyboard.DOWN:
this.yourShip.isMovingDown = true;
break;
case Keyboard.LEFT:
this.yourShip.isMovingLeft = true;
break;
case Keyboard.RIGHT:
this.yourShip.isMovingRight = true;
break;
case shootKey:
case (shootKey + 32):
case shootKey2:
case (shootKey2 + 32):
if ((((this.yourShip.isShooting == false)) && ((((this.yourShip.absorbState == this.yourShip.ABSORB_NONE)) || ((this.yourShip.absorbState == this.yourShip.ABSORB_DONE)))))){
this.yourShip.isShooting = true;
if (bulletChannel == null){
if (this.gameMC.jukebox.isMute == false){
bulletChannel = bulletSound.play(0, int.MAX_VALUE, new SoundTransform(0.4, 0));
};
};
};
break;
case absorbKey:
case (absorbKey + 32):
this.yourShip.isAbsorbing = true;
this.yourShip.isShooting = false;
break;
case PAUSE_KEY:
case (PAUSE_KEY + 32):
if (this.isPausePressed == false){
this.isPausePressed = true;
if (currState == STATE_PAUSE){
currState = prevState;
} else {
prevState = currState;
currState = STATE_PAUSE;
};
};
break;
case QUIT_KEY:
case (QUIT_KEY + 32):
if (this.isQuitPressed == false){
this.isQuitPressed = true;
if (quitPressTimer < 50){
quitGame(3);
} else {
quitPressTimer = 0;
};
};
break;
case QUALITY_KEY:
case (QUALITY_KEY + 32):
if (this.isQualityPressed == false){
this.isQualityPressed = true;
this.gameMC.setQuality(!(this.gameMC.isQualityHigh));
if (this.gameMC.isQualityHigh){
this.gameMC.treeMC.txtQuality.text = "QUALITY : HIGH";
} else {
this.gameMC.treeMC.txtQuality.text = "QUALITY : LOW";
};
};
break;
case PARTICLE_KEY:
case (PARTICLE_KEY + 32):
if (this.isParticlePressed == false){
this.isParticlePressed = true;
this.gameMC.setParticle(!(this.gameMC.isParticleOn));
if (this.gameMC.isParticleOn){
this.gameMC.treeMC.txtParticles.text = "PARTICLES : ON";
PARTICLE_LIMIT = MAX_PARTICLE_LIMIT;
} else {
this.gameMC.treeMC.txtParticles.text = "PARTICLES : OFF";
PARTICLE_LIMIT = 0;
};
};
break;
case Keyboard.SPACE:
if (tutorialSpacePressed == false){
if (currState == STATE_GAMEPLAY){
if (tutorialSpacebarEnabled){
tutorialSpacePressed = true;
tutorialPhase++;
};
};
};
break;
case SKIP_KEY:
case (SKIP_KEY + 32):
if (currLevel == 0){
if (tutorialPanel != null){
tutorialPanel.scaleX = (tutorialPanel.scaleY = 0);
interfaceLayer.removeChild(tutorialPanel);
tutorialPanel = null;
};
tutorialEnemy = null;
_local2 = 0;
while (_local2 < yourShip.optionArray.length) {
yourShip.optionArray[_local2].removeAllBulletGenerator();
_local2++;
};
if (currState == STATE_SHOWLEVELPIC){
this.interfaceLayer.removeChild(this.levelPicSprite);
this.treeScale = 1;
this.levelPicSprite = null;
this.currPicTimer = 0;
this.levelPicPhase = -1;
this.currState = this.STATE_GAMEPLAY;
};
nextLevel();
};
break;
};
}
public function nextLevel(){
this.currLevel++;
if ((((this.currLevel > 4)) || ((this.isWholeGame == false)))){
currState = STATE_WIN;
quitGame(7);
} else {
totalCleanup();
init2();
currState = STATE_SETSTAGE;
};
}
public function isCollidePoint(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local7 = Math.abs((_arg2 - _arg1.x));
_local8 = Math.abs((_arg3 - _arg1.y));
_local9 = ((_arg1.origWidth > _arg1.origHeight)) ? _arg1.origWidth : _arg1.origHeight;
_local10 = ((_arg4 > _arg5)) ? _arg4 : _arg5;
_local11 = (_local9 + _local10);
if ((((_local7 < _local11)) && ((_local8 < _local11)))){
return (isCollide(_arg1.x, _arg1.y, _arg1.origWidth, _arg1.origHeight, _arg1.rotation, _arg2, _arg3, _arg4, _arg5, _arg6));
};
return (false);
}
public function changeBgColor():Boolean{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Boolean;
_local4 = true;
this.bgLayer.alpha = (this.bgLayer.alpha + ((0 - this.bgLayer.alpha) * 0.3));
if (currLevel == 4){
this.textureLayer.visible = false;
};
switch (currLevel){
case 0:
_local1 = 0;
_local2 = 0;
_local3 = 0;
break;
case 1:
_local1 = 69;
_local2 = 62;
_local3 = 0;
break;
case 2:
_local1 = 75;
_local2 = 87;
_local3 = 108;
break;
case 3:
_local1 = 90;
_local2 = 91;
_local3 = 82;
break;
case 4:
_local1 = 246;
_local2 = 249;
_local3 = 215;
break;
};
if (Math.abs((_local1 - this.bgRed)) < 3){
this.bgRed = _local1;
} else {
_local4 = false;
};
if (Math.abs((_local2 - this.bgGreen)) < 3){
this.bgGreen = _local2;
} else {
_local4 = false;
};
if (Math.abs((_local3 - this.bgBlue)) < 3){
this.bgBlue = _local3;
} else {
_local4 = false;
};
if (Math.abs(this.bgLayer.alpha) < 0.1){
this.bgLayer.alpha = 0;
} else {
_local4 = false;
};
this.bgRed = (this.bgRed + ((_local1 - this.bgRed) * 0.1));
this.bgGreen = (this.bgGreen + ((_local2 - this.bgGreen) * 0.1));
this.bgBlue = (this.bgBlue + ((_local3 - this.bgBlue) * 0.1));
this.bgColorLayer.transform.colorTransform = new ColorTransform(0, 0, 0, 0, Math.round(this.bgRed), Math.round(this.bgGreen), Math.round(this.bgBlue), 0xFF);
return (_local4);
}
public function showBossWarning(){
if (this.gameMC.jukebox.isMute){
bossApproachMC = new BossApproachNoSound();
} else {
bossApproachMC = new BossApproach();
};
bossApproachMC.x = (this.STAGE_WIDTH / 2);
bossApproachMC.y = (this.STAGE_HEIGHT / 2);
interfaceLayer.addChild(bossApproachMC);
currState = STATE_SHOWBOSSWARNING;
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_REALLYNOSOUND;
}
public function designLevel(){
this.levelArray = new Array();
if (this.isBossFight){
this.levelArray.push(new Array(50, LEVEL_PIC));
switch (currLevel){
case 1:
this.levelArray.push(new Array(50000, ENEMY_1BOSS));
break;
case 2:
this.levelArray.push(new Array(50000, ENEMY_2BOSS));
break;
case 3:
this.levelArray.push(new Array(50000, ENEMY_3BOSS));
break;
case 4:
this.levelArray.push(new Array(50000, ENEMY_4BOSS));
break;
};
} else {
switch (currLevel){
case 0:
this.levelArray.push(new Array(20, LEVEL_PIC));
break;
case 1:
this.levelArray.push(new Array(30, ENEMY_1SMALLDOZER, -100, 50, (this.STAGE_WIDTH + 200), 150));
this.levelArray.push(new Array(80, ENEMY_1SMALLDOZER, -100, 100, (this.STAGE_WIDTH + 200), 200));
this.levelArray.push(new Array(130, ENEMY_1SMALLDOZER, -100, 150, (this.STAGE_WIDTH + 200), 250));
this.levelArray.push(new Array(180, ENEMY_1SMALLDOZER, -100, 200, (this.STAGE_WIDTH + 200), 300));
this.levelArray.push(new Array(1000, LEVEL_PIC));
this.levelArray.push(new Array(2000, ENEMY_1MEDIUM, 210, 100));
this.levelArray.push(new Array(3000, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(3020, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(3040, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(3060, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(3080, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(4030, ENEMY_1SMALLDOZER, -100, 150, (this.STAGE_WIDTH + 200), 250));
this.levelArray.push(new Array(4080, ENEMY_1SMALLDOZER, -100, 200, (this.STAGE_WIDTH + 200), 300));
this.levelArray.push(new Array(4130, ENEMY_1SMALLDOZER, -100, 250, (this.STAGE_WIDTH + 200), 350));
this.levelArray.push(new Array(4180, ENEMY_1SMALLDOZER, -100, 300, (this.STAGE_WIDTH + 200), 400));
this.levelArray.push(new Array(4200, ENEMY_1MEDIUM, 210, 100));
this.levelArray.push(new Array(5000, ENEMY_1SMALLDRILLER, 100, 150));
this.levelArray.push(new Array(6000, ENEMY_1SMALLDRILLER, 200, 150));
this.levelArray.push(new Array(7000, ENEMY_1SMALLDRILLER, 300, 150));
this.levelArray.push(new Array(8000, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(8020, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(8040, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(8060, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(8080, ENEMY_1SMALLTRUCK, -50, 200, true));
this.levelArray.push(new Array(8100, ENEMY_1MEDIUM, 100, 100));
this.levelArray.push(new Array(8100, ENEMY_1MEDIUM, (this.STAGE_WIDTH - 100), 100));
this.levelArray.push(new Array(10000, ENEMY_1BIG, 215, 150));
this.levelArray.push(new Array(12030, ENEMY_1SMALLDOZER, -100, 150, (this.STAGE_WIDTH + 200), 250));
this.levelArray.push(new Array(12080, ENEMY_1SMALLDOZER, -100, 200, (this.STAGE_WIDTH + 200), 300));
this.levelArray.push(new Array(12130, ENEMY_1SMALLDOZER, -100, 250, (this.STAGE_WIDTH + 200), 350));
this.levelArray.push(new Array(12180, ENEMY_1SMALLDOZER, -100, 300, (this.STAGE_WIDTH + 200), 400));
this.levelArray.push(new Array(12200, ENEMY_1SMALLDRILLER, 100, 150));
this.levelArray.push(new Array(12200, ENEMY_1SMALLDRILLER, 200, 150));
this.levelArray.push(new Array(12200, ENEMY_1SMALLDRILLER, 300, 150));
this.levelArray.push(new Array(13000, ENEMY_1MEDIUM, 150, 100));
this.levelArray.push(new Array(13000, ENEMY_1MEDIUM, 100, 200));
this.levelArray.push(new Array(13000, ENEMY_1MEDIUM, (this.STAGE_WIDTH - 150), 100));
this.levelArray.push(new Array(13000, ENEMY_1MEDIUM, (this.STAGE_WIDTH - 100), 200));
this.levelArray.push(new Array(50000, ENEMY_1BOSS));
break;
case 2:
this.levelArray.push(new Array(50, ENEMY_2SCANNERTUTORIAL, 2, 4, 50));
this.levelArray.push(new Array(350, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(350, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(370, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(370, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(390, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(390, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(410, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(410, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(430, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(430, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(1000, LEVEL_PIC));
this.levelArray.push(new Array(2100, ENEMY_2PURSUIT, 200, -100, 300, (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(2100, ENEMY_2PURSUIT, 100, -100, 200, (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(2100, ENEMY_2PURSUIT, 300, -100, 100, (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(2200, ENEMY_2PURSUIT, 250, -100, 150, (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(2200, ENEMY_2PURSUIT, 200, -100, 200, (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(2200, ENEMY_2PURSUIT, 300, -100, 100, (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(3050, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(3050, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(3070, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(3070, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(3090, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(3090, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(3110, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(3110, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(3130, ENEMY_2SCOUT, -50, 100, true));
this.levelArray.push(new Array(3130, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(4000, ENEMY_2INTERCEPTOR, 215, 150));
this.levelArray.push(new Array(5000, ENEMY_2SCANNER, 2, 5, 50));
this.levelArray.push(new Array(5050, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(5070, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(5090, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(5110, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(5130, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(6000, ENEMY_2MEDIUM, 210, 150));
this.levelArray.push(new Array(6000, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6000, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6100, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6100, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6100, ENEMY_2SCANNER, 2, 6, 50));
this.levelArray.push(new Array(6200, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6200, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6300, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6300, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(0x1900, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(0x1900, ENEMY_2PURSUIT, ((Math.random() * 200) + 200), -100, ((Math.random() * 200) + 200), (this.STAGE_HEIGHT + 100)));
this.levelArray.push(new Array(6450, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(6470, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(6490, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(6410, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(6430, ENEMY_2SCOUT, (this.STAGE_WIDTH + 50), 100, false));
this.levelArray.push(new Array(7000, ENEMY_2INTERCEPTOR, 50, 200));
this.levelArray.push(new Array(7000, ENEMY_2INTERCEPTOR, (this.STAGE_WIDTH - 50), 200));
this.levelArray.push(new Array(7200, ENEMY_2BIG, 210, 150));
this.levelArray.push(new Array(50000, ENEMY_2BOSS));
break;
case 3:
this.levelArray.push(new Array(50, ENEMY_3CONIFEROUS, 200, -100, 300, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(50, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(80, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(110, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(140, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(170, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(1000, LEVEL_PIC));
this.levelArray.push(new Array(2000, ENEMY_3CONIFEROUS, 100, -100, 200, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(2100, ENEMY_3CONIFEROUS, 200, -100, 300, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(2200, ENEMY_3CONIFEROUS, 300, -100, 400, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(2300, ENEMY_3CONIFEROUS, 300, -100, 400, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(2400, ENEMY_3RAPTORIAL, 210, 150));
this.levelArray.push(new Array(2550, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(2580, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(2610, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(2700, ENEMY_3MEDIUM, 210, 150));
this.levelArray.push(new Array(4000, ENEMY_3RAPTORIAL, 100, 150));
this.levelArray.push(new Array(4000, ENEMY_3RAPTORIAL, (this.STAGE_WIDTH - 100), 150));
this.levelArray.push(new Array(4100, ENEMY_3CONIFEROUS, 100, -100, 200, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(4100, ENEMY_3CONIFEROUS, 200, -100, 300, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(5000, ENEMY_3BIG, 210, 150));
this.levelArray.push(new Array(7000, ENEMY_3MEDIUM, 100, 150));
this.levelArray.push(new Array(7000, ENEMY_3MEDIUM, (this.STAGE_WIDTH - 100), 150));
this.levelArray.push(new Array(8000, ENEMY_3MEDIUM, 210, 150));
this.levelArray.push(new Array(8000, ENEMY_3CONIFEROUS, 100, -100, 200, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(8100, ENEMY_3CONIFEROUS, 200, -100, 300, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(8200, ENEMY_3CONIFEROUS, 300, -100, 400, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(8300, ENEMY_3CONIFEROUS, 300, -100, 400, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(8400, ENEMY_3RAPTORIAL, 210, 150));
this.levelArray.push(new Array(10000, ENEMY_3CONIFEROUS, 100, -100, 100, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(10000, ENEMY_3CONIFEROUS, 300, -100, 300, (this.STAGE_HEIGHT + 200)));
this.levelArray.push(new Array(10050, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(10080, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(10110, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(10140, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(10170, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(90000, ENEMY_3BOSS));
break;
case 4:
this.levelArray.push(new Array(50, ENEMY_4BOMBER, 100, -100, 350, (this.STAGE_HEIGHT + 150)));
this.levelArray.push(new Array(50, ENEMY_4BOMBER, 350, -100, 100, (this.STAGE_HEIGHT + 150)));
this.levelArray.push(new Array(1000, LEVEL_PIC));
this.levelArray.push(new Array(2000, ENEMY_4FIGHTER, 150, 100));
this.levelArray.push(new Array(2000, ENEMY_4BOMBER, 100, -100, 350, (this.STAGE_HEIGHT + 150)));
this.levelArray.push(new Array(3000, ENEMY_4FIGHTER, 100, 50));
this.levelArray.push(new Array(3000, ENEMY_4FIGHTER, (this.STAGE_WIDTH - 100), 50));
this.levelArray.push(new Array(3000, ENEMY_4FIGHTER, 50, 100));
this.levelArray.push(new Array(3000, ENEMY_4FIGHTER, (this.STAGE_WIDTH - 50), 100));
this.levelArray.push(new Array(4000, ENEMY_4BOMBER, 350, -100, 100, (this.STAGE_HEIGHT + 150)));
this.levelArray.push(new Array(4050, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(4080, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(4110, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(4140, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(4170, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5000, ENEMY_4FIGHTER, 100, 150));
this.levelArray.push(new Array(5000, ENEMY_4FIGHTER, 350, 150));
this.levelArray.push(new Array(5050, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5080, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5110, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(0x1414, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5170, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5250, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5280, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5310, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5340, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(5370, ENEMY_3SCAVENGING, -50, 100, true));
this.levelArray.push(new Array(10000, ENEMY_4BOSS));
break;
};
};
}
public function AddVectors2D(_arg1:Point, _arg2:Point):Point{
_arg1.x = (_arg1.x + _arg2.x);
_arg1.y = (_arg1.y + _arg2.y);
return (_arg1);
}
public function addScore(_arg1:String, _arg2:int){
var _local3:*;
newScore = (newScore + _arg2);
if (lastTxtBonus >= txtBonusArray.length){
_local3 = 0;
while (_local3 < (txtBonusArray.length - 1)) {
txtBonusArray[_local3].text = txtBonusArray[(_local3 + 1)].text;
_local3++;
};
lastTxtBonus = (txtBonusArray.length - 1);
};
txtBonusArray[lastTxtBonus].text = ((_arg1 + ": ") + _arg2);
lastTxtBonus++;
txtBonusTimer = 0;
}
public function mouseMovement(_arg1:MouseEvent){
if (currState == STATE_PAUSE){
Mouse.show();
} else {
if (this.yourShip != null){
this.yourShip.isMovingUp = false;
this.yourShip.isMovingDown = false;
this.yourShip.isMovingLeft = false;
this.yourShip.isMovingRight = false;
this.yourShip.moveShipByMouse(this.gameMC.mouseX, this.gameMC.mouseY);
};
};
}
public function transferBulletGenerator(_arg1:Enemy):BulletGenerator{
var _local2:BulletGenerator;
var _local3:*;
_local2 = _arg1.bulletGeneratorArray[0];
_local3 = (_arg1.bulletGeneratorArray.length - 1);
while (_local3 >= 0) {
_arg1.bulletGeneratorArray[_local3] = null;
_arg1.bulletGeneratorArray.splice(_local3, 1);
_local3--;
};
return (_local2);
}
public function cleanup(){
var _local1:int;
var _local2:int;
var _local3:Particle;
_local1 = (bulletArray.length - 1);
while (_local1 >= 0) {
if (bulletArray[_local1].currState == bulletArray[_local1].STATE_REMOVE){
_local2 = (this.particleGeneratorArray.length - 1);
while (_local2 >= 0) {
if (this.particleGeneratorArray[_local2].ownerMC == bulletArray[_local1].sprite){
this.particleGeneratorArray.splice(_local2, 1);
};
_local2--;
};
bulletArray[_local1].removeChild(bulletArray[_local1].sprite);
bulletArray[_local1].sprite = null;
this.bulletLayer.removeChild(bulletArray[_local1]);
bulletArray[_local1] = null;
bulletArray.splice(_local1, 1);
};
_local1--;
};
_local1 = (enemyArray.length - 1);
while (_local1 >= 0) {
if (enemyArray[_local1].currState == enemyArray[_local1].STATE_OUTOFSTAGE){
_local2 = (this.particleGeneratorArray.length - 1);
while (_local2 >= 0) {
if (this.particleGeneratorArray[_local2].ownerMC == enemyArray[_local1]){
this.particleGeneratorArray.splice(_local2, 1);
};
_local2--;
};
enemyArray[_local1].removeAllBulletGenerator();
enemyArray[_local1].removeChild(enemyArray[_local1].mc);
enemyArray[_local1].mc = null;
enemyArray[_local1].layer.removeChild(enemyArray[_local1]);
enemyArray[_local1] = null;
enemyArray.splice(_local1, 1);
};
_local1--;
};
_local1 = (explosionArray.length - 1);
while (_local1 >= 0) {
if (explosionArray[_local1].removeMe){
explosionArray[_local1].removeChild(explosionArray[_local1].bmp);
this.explosionLayer.removeChild(explosionArray[_local1]);
explosionArray[_local1] = null;
explosionArray.splice(_local1, 1);
};
_local1--;
};
while (particleArray.length > this.PARTICLE_LIMIT) {
_local3 = particleArray.shift();
_local3.targetMC.removeChild(_local3.clip);
_local3.clip = null;
_local3 = null;
};
_local1 = (particleArray.length - 1);
while (_local1 >= 0) {
if (particleArray[_local1].removeMe){
this.particleArray[_local1].targetMC.removeChild(particleArray[_local1].clip);
this.particleArray[_local1].clip = null;
this.particleArray[_local1] = null;
particleArray.splice(_local1, 1);
};
_local1--;
};
_local1 = (obstacleArray.length - 1);
while (_local1 >= 0) {
if (obstacleArray[_local1].currState == obstacleArray[_local1].STATE_REMOVE){
this.obstacleArray[_local1].layer.removeChild(obstacleArray[_local1]);
this.obstacleArray[_local1] = null;
obstacleArray.splice(_local1, 1);
};
_local1--;
};
}
public function totalCleanup(){
var _local1:int;
var _local2:int;
_local1 = (bulletArray.length - 1);
while (_local1 >= 0) {
bulletArray[_local1].removeChild(bulletArray[_local1].sprite);
bulletArray[_local1].sprite = null;
this.bulletLayer.removeChild(bulletArray[_local1]);
bulletArray[_local1] = null;
bulletArray.splice(_local1, 1);
_local1--;
};
_local1 = (enemyArray.length - 1);
while (_local1 >= 0) {
enemyArray[_local1].removeAllBulletGenerator();
enemyArray[_local1].removeChild(enemyArray[_local1].mc);
enemyArray[_local1].mc = null;
enemyArray[_local1].layer.removeChild(enemyArray[_local1]);
enemyArray[_local1] = null;
enemyArray.splice(_local1, 1);
_local1--;
};
_local1 = (explosionArray.length - 1);
while (_local1 >= 0) {
explosionArray[_local1].removeChild(explosionArray[_local1].bmp);
this.explosionLayer.removeChild(explosionArray[_local1]);
explosionArray[_local1] = null;
explosionArray.splice(_local1, 1);
_local1--;
};
_local1 = (this.particleGeneratorArray.length - 1);
while (_local1 >= 0) {
this.particleGeneratorArray[_local1] = null;
this.particleGeneratorArray.splice(_local1, 1);
_local1--;
};
_local1 = (particleArray.length - 1);
while (_local1 >= 0) {
this.particleArray[_local1].targetMC.removeChild(particleArray[_local1].clip);
this.particleArray[_local1].clip = null;
this.particleArray[_local1] = null;
particleArray.splice(_local1, 1);
_local1--;
};
_local1 = (obstacleArray.length - 1);
while (_local1 >= 0) {
this.obstacleArray[_local1].layer.removeChild(obstacleArray[_local1]);
this.obstacleArray[_local1] = null;
obstacleArray.splice(_local1, 1);
_local1--;
};
}
public function quitGame(_arg1:int){
totalCleanup();
if (bulletChannel != null){
bulletChannel.stop();
bulletChannel = null;
};
if (yourShip.soundAbsorbChannel != null){
yourShip.soundAbsorbChannel.stop();
yourShip.soundAbsorbChannel = null;
};
Mouse.show();
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_MENU;
gameMC.removeEventListener(Event.ENTER_FRAME, render);
gameMC.stage.removeEventListener(KeyboardEvent.KEY_DOWN, pressMovement);
gameMC.stage.removeEventListener(KeyboardEvent.KEY_UP, releaseMovement);
gameMC.stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMovement);
MovieClip(gameMC.parent).currScore = this.newScore;
gameMC.gameEngine = null;
MovieClip(gameMC.parent).changeSection(_arg1);
}
public function addBullet(_arg1:Bullet){
bulletArray.push(_arg1);
}
public function processBackground(){
var _local1:int;
var _local2:Sprite;
var _local3:int;
var _local4:int;
var _local5:Class;
var _local6:int;
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
this.currTreeAngle = (this.currTreeAngle + Math.abs(this.vTreeAngle));
if (this.prevvTreeAngle != this.vTreeAngle){
this.prevvTreeAngle = this.vTreeAngle;
this.cosTree = Math.cos(this.vTreeAngle);
this.sinTree = Math.sin(this.vTreeAngle);
this.degreeTree = ((this.vTreeAngle * 180) / Math.PI);
};
if (currTreeAngle > MAX_VTREE){
currTreeAngle = 0;
_local6 = this.gameMC.STAGE_WIDTH;
_local7 = ((this.treeY - treeRadius) - (_local6 / 2));
_local3 = getRandomInt(1, 1);
_local4 = (bgElemLarge[currLevel].length - 1);
_local1 = 0;
while (_local1 < _local3) {
_local5 = bgElemLarge[currLevel][getRandomInt(0, _local4)];
_local2 = new (_local5);
_local2.x = getRandomInt((this.treeX - 150), (this.treeX + 50));
_local2.y = getRandomInt((_local7 - (_local6 / 2)), (_local7 + (_local6 / 2)));
_local2.rotation = getRandomInt(70, 110);
_local2.scaleX = this.treeScale;
_local2.scaleY = _local2.scaleX;
this.bgLargeLayer.addChild(_local2);
bgArray.push(_local2);
_local1++;
};
_local3 = getRandomInt(1, 2);
_local4 = (bgElemMedium[currLevel].length - 1);
_local1 = 0;
while (_local1 < _local3) {
_local5 = bgElemMedium[currLevel][getRandomInt(0, _local4)];
_local2 = new (_local5);
_local2.x = getRandomInt((this.treeX - 150), (this.treeX + 150));
_local2.y = getRandomInt((_local7 - (_local6 / 2)), (_local7 + (_local6 / 2)));
if ((((currLevel == 2)) || ((currLevel == 4)))){
_local2.rotation = (getRandomInt(1, 3) * 90);
} else {
_local2.rotation = getRandomInt(0, 360);
};
_local2.scaleX = this.treeScale;
_local2.scaleY = _local2.scaleX;
this.bgMediumLayer.addChild(_local2);
bgArray.push(_local2);
_local1++;
};
_local3 = getRandomInt(4, 6);
_local4 = (bgElemSmall[currLevel].length - 1);
_local1 = 0;
while (_local1 < _local3) {
_local5 = bgElemSmall[currLevel][getRandomInt(0, _local4)];
_local2 = new (_local5);
_local2.x = getRandomInt((this.treeX - 200), (this.treeX + 200));
_local2.y = getRandomInt((_local7 - (_local6 / 2)), (_local7 + (_local6 / 2)));
if ((((currLevel == 2)) || ((currLevel == 4)))){
_local2.rotation = (getRandomInt(1, 2) * 90);
} else {
_local2.rotation = getRandomInt(0, 360);
};
_local2.scaleX = this.treeScale;
_local2.scaleY = _local2.scaleX;
this.bgSmallLayer.addChild(_local2);
bgArray.push(_local2);
_local1++;
};
};
_local1 = (bgArray.length - 1);
while (_local1 >= 0) {
_local2 = bgArray[_local1];
_local8 = (_local2.x - treeX);
_local9 = (_local2.y - treeY);
_local10 = ((cosTree * _local8) - (sinTree * _local9));
_local11 = ((cosTree * _local9) + (sinTree * _local8));
_local2.x = (treeX + _local10);
_local2.y = (treeY + _local11);
if (currLevel == 3){
if (Sprite(_local2.parent) == this.bgSmallLayer){
_local2.x = (_local2.x + 0.2);
_local2.y = (_local2.y + 0.2);
};
};
_local2.rotation = (_local2.rotation + this.degreeTree);
if (currLevel == 4){
if (Sprite(_local2.parent) == this.bgSmallLayer){
_local12 = (((_local2.rotation + 90) * Math.PI) / 180);
_local2.x = (_local2.x + (Math.cos(_local12) * 1));
_local2.y = (_local2.y + (Math.sin(_local12) * 1));
};
};
_local2.scaleX = this.treeScale;
_local2.scaleY = _local2.scaleX;
if ((((_local2.x > (this.gameMC.STAGE_WIDTH + 100))) && ((_local2.y > (this.gameMC.STAGE_HEIGHT / 2))))){
Sprite(_local2.parent).removeChild(_local2);
bgArray[_local1] = null;
bgArray.splice(_local1, 1);
};
_local1--;
};
}
public function getRandomNum(_arg1:int, _arg2:int):Number{
return (((Math.random() * (_arg2 - _arg1)) + _arg1));
}
public function init(){
this.yourShip = new CharShip((this.STAGE_WIDTH / 2), (this.STAGE_HEIGHT - 50), this.gameMC);
if (this.currDifficulty == 0){
this.yourShip.currLife = 99;
this.gameMC.treeMC.txtLife.text = this.yourShip.currLife;
this.currDifficulty = 1;
};
designLevel();
this.levelTimer = 0;
this.currTreeAngle = this.MAX_VTREE;
this.prevvTreeAngle = -1;
this.treeScale = 1;
this.vTreeAngle = -0.04;
this.nextLevelTimer = 0;
this.enemyRestTimer = 0;
this.startEnemyRest = false;
this.tutorialPhase = 0;
this.tutorialSpacePressed = false;
this.tutorialFrame = -1;
this.tutorialSpacebarEnabled = true;
}
public function init2(){
this.levelArray = new Array();
designLevel();
this.levelTimer = 0;
this.currTreeAngle = this.MAX_VTREE;
this.prevvTreeAngle = -1;
this.treeScale = 1;
this.vTreeAngle = -0.04;
this.nextLevelTimer = 0;
this.enemyRestTimer = 0;
this.startEnemyRest = false;
}
public function updateScore(){
var _local1:String;
var _local2:int;
var _local3:*;
if (newScore != currScore){
currScore = (currScore + ((newScore - currScore) * 0.2));
if (Math.abs((newScore - currScore)) < 5){
currScore = newScore;
};
_local2 = int(currScore);
if (_local2 > 9999999){
_local1 = String(_local2);
} else {
if (_local2 > 999999){
_local1 = ("0" + String(_local2));
} else {
if (_local2 > 99999){
_local1 = ("00" + String(_local2));
} else {
if (_local2 > 9999){
_local1 = ("000" + String(_local2));
} else {
if (_local2 > 999){
_local1 = ("0000" + String(_local2));
} else {
if (_local2 > 99){
_local1 = ("00000" + String(_local2));
} else {
if (_local2 > 9){
_local1 = ("000000" + String(_local2));
} else {
_local1 = ("0000000" + String(_local2));
};
};
};
};
};
};
};
this.gameMC.treeMC.txtScore.text = _local1;
};
if (lastTxtBonus > 0){
txtBonusTimer++;
if (txtBonusTimer > 60){
txtBonusTimer = 0;
_local3 = 0;
while (_local3 < (txtBonusArray.length - 1)) {
txtBonusArray[_local3].text = txtBonusArray[(_local3 + 1)].text;
_local3++;
};
txtBonusArray[(txtBonusArray.length - 1)].text = "";
lastTxtBonus--;
};
};
}
public function getRandomInt(_arg1:int, _arg2:int):int{
return (Math.round(((Math.random() * (_arg2 - _arg1)) + _arg1)));
}
public function addExplosion(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean){
var _local5:int;
var _local6:int;
switch (_arg3){
case 2:
_local5 = 100;
_local6 = 100;
break;
case 3:
_local5 = 200;
_local6 = 200;
break;
case 4:
_local5 = 300;
_local6 = 300;
break;
default:
_local5 = 100;
_local6 = 100;
break;
};
this.explosionArray.push(new ExplosionEngine((_arg1 - (_local5 / 2)), (_arg2 - (_local6 / 2)), _local5, _local6, this.explosionLayer, _arg3, _arg4));
}
public function SubVectors2D(_arg1:Point, _arg2:Point):Point{
_arg1.x = (_arg1.x - _arg2.x);
_arg1.y = (_arg1.y - _arg2.y);
return (_arg1);
}
public function render(_arg1:Event){
var _local2:int;
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:*;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Bullet;
if (quitPressTimer != 9999){
quitPressTimer++;
if (quitPressTimer > 50){
quitPressTimer = 9999;
};
};
switch (currState){
case STATE_PAUSE:
break;
case STATE_START:
init();
currState = STATE_SETSTAGE;
break;
case STATE_SETSTAGE:
if (changeBgColor()){
currState = STATE_GAMEPLAY;
switch (currLevel){
case 0:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_TUTORIAL;
break;
case 1:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL1SLOW;
break;
case 2:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL2SLOW;
break;
case 3:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL3SLOW;
break;
case 4:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL4SLOW;
break;
};
};
break;
case STATE_SHOWLEVELPIC:
case STATE_SHOWBOSSWARNING:
case STATE_GAMEPLAY:
processBackground();
updateScore();
this.gameMC.txtStatus.text = "";
if (currLevel == 0){
switch (tutorialPhase){
case 0:
tutorialTarget = null;
tutorialFrame = -1;
break;
case 1:
tutorialTarget = null;
tutorialPanel = new HowToPlayPanel();
tutorialPanel.x = ((this.gameMC.STAGE_WIDTH / 2) + 75);
tutorialPanel.y = ((this.gameMC.STAGE_HEIGHT / 2) - 100);
tutorialPanel.scaleX = (tutorialPanel.scaleY = 0);
tutorialFrame = 2;
interfaceLayer.addChild(tutorialPanel);
tutorialPhase = 2;
break;
case 2:
tutorialTarget = null;
tutorialPanel.scaleX = (tutorialPanel.scaleY = (tutorialPanel.scaleY + 0.1));
if (tutorialPanel.scaleX >= 1){
tutorialPanel.scaleX = (tutorialPanel.scaleY = 1);
tutorialPhase = 3;
};
break;
case 3:
tutorialSpacebarEnabled = true;
break;
case 4:
tutorialFrame = 3;
tutorialTarget = this.yourShip;
tutorialSpacebarEnabled = true;
break;
case 5:
tutorialEnemy = new Lvl0SmallDozer(this.currLevel, this.gameMC, 100, 150);
enemyArray.push(tutorialEnemy);
tutorialSpacebarEnabled = false;
tutorialPhase = 6;
break;
case 6:
tutorialFrame = 4;
tutorialTarget = tutorialEnemy;
tutorialSpacebarEnabled = true;
break;
case 7:
tutorialEnemy.addBulletGenerator(tutorialEnemy.BULLETGENERATOR_ANGLE, 1, 100, 6, false, false, 5, 0, 1, 2, 1, BulletStick, tutorialEnemy.BULLETMOVE_CONSISTENT, 0, 2, 10, 90);
tutorialSpacebarEnabled = false;
tutorialPhase = 8;
break;
case 8:
tutorialFrame = 5;
if (this.bulletArray.length > 1){
tutorialTarget = this.bulletArray[(this.bulletArray.length - 2)];
} else {
tutorialTarget = null;
};
tutorialSpacebarEnabled = true;
break;
case 9:
tutorialFrame = 6;
tutorialTarget = null;
tutorialSpacebarEnabled = false;
if (this.enemyArray.length <= 0){
tutorialPhase = 10;
};
break;
case 10:
tutorialFrame = 7;
tutorialTarget = null;
tutorialSpacebarEnabled = true;
break;
case 11:
tutorialEnemy = new Lvl0Medium(this.currLevel, this.gameMC, 100, 150);
enemyArray.push(tutorialEnemy);
tutorialSpacebarEnabled = false;
tutorialPhase = 12;
break;
case 12:
tutorialFrame = 8;
tutorialTarget = tutorialEnemy;
tutorialSpacebarEnabled = true;
break;
case 13:
tutorialFrame = 9;
tutorialTarget = null;
tutorialSpacebarEnabled = false;
if (yourShip.optionArray[0].optionTimer > 0){
tutorialPhase = 14;
};
break;
case 14:
tutorialFrame = 10;
tutorialTarget = yourShip.optionArray[0];
tutorialSpacebarEnabled = true;
break;
case 15:
tutorialFrame = 11;
tutorialTarget = null;
tutorialSpacebarEnabled = false;
if (this.enemyArray.length <= 0){
tutorialPhase = 16;
};
break;
case 16:
tutorialFrame = 12;
tutorialTarget = null;
tutorialSpacebarEnabled = true;
break;
case 17:
tutorialFrame = 13;
tutorialTarget = null;
tutorialSpacebarEnabled = true;
break;
case 18:
tutorialFrame = 14;
tutorialTarget = yourShip.optionArray[0];
tutorialSpacebarEnabled = true;
break;
case 19:
tutorialFrame = 15;
tutorialTarget = null;
tutorialSpacebarEnabled = true;
break;
case 20:
tutorialFrame = 16;
tutorialTarget = null;
tutorialSpacebarEnabled = true;
break;
case 21:
tutorialFrame = 16;
tutorialTarget = null;
tutorialSpacebarEnabled = false;
break;
};
if (tutorialPhase >= 1){
if (tutorialPanel.tutorialMC.currentFrame != tutorialFrame){
tutorialPanel.tutorialMC.gotoAndStop(tutorialFrame);
};
if (tutorialPanel.tutorialMC.spacebarMC.visible != tutorialSpacebarEnabled){
tutorialPanel.tutorialMC.spacebarMC.visible = tutorialSpacebarEnabled;
};
};
if (tutorialTarget == null){
if (tutorialPhase >= 1){
tutorialPanel.arrowMC.alpha = 0;
};
} else {
_local4 = (tutorialTarget.x - tutorialPanel.x);
_local5 = (tutorialTarget.y - tutorialPanel.y);
_local6 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
_local7 = Math.atan2(_local5, _local4);
_local8 = (_local6 - (30 + (tutorialTarget.width / 2)));
_local6 = ((_local8 > 0)) ? _local8 : 0;
tutorialPanel.arrowMC.rotation = ((_local7 * 180) / Math.PI);
tutorialPanel.arrowMC.arrowInsideMC.width = _local6;
tutorialPanel.arrowMC.alpha = 1;
};
if (tutorialPhase == 21){
tutorialPanel.scaleX = (tutorialPanel.scaleY = (tutorialPanel.scaleY - 0.1));
if (tutorialPanel.scaleX <= 0){
tutorialPanel.scaleX = (tutorialPanel.scaleY = 0);
tutorialEnemy = null;
interfaceLayer.removeChild(tutorialPanel);
tutorialPanel = null;
_local9 = 0;
while (_local9 < yourShip.optionArray.length) {
yourShip.optionArray[_local9].removeAllBulletGenerator();
_local9++;
};
nextLevel();
};
};
};
if (currState == STATE_SHOWLEVELPIC){
switch (levelPicPhase){
case 0:
this.levelPicSprite.alpha = (this.levelPicSprite.alpha + 0.1);
if (this.levelPicSprite.alpha >= 1){
this.levelPicSprite.alpha = 1;
this.currPicTimer = 0;
this.levelPicPhase = 1;
};
break;
case 1:
currPicTimer++;
if (currPicTimer > 150){
this.levelPicPhase = 2;
if (this.isBossFight == false){
switch (currLevel){
case 0:
tutorialPhase = 1;
break;
case 1:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL1FAST;
break;
case 2:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL2FAST;
break;
case 3:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL3FAST;
break;
case 4:
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_LEVEL4FAST;
break;
};
};
this.currPicTimer = 0;
this.vTreeAngle = -0.004;
};
break;
case 2:
this.levelPicSprite.alpha = (this.levelPicSprite.alpha - 0.1);
this.bgLayer.alpha = (1 - this.levelPicSprite.alpha);
this.treeScale = (1 + (this.levelPicSprite.alpha / 8));
if (this.levelPicSprite.alpha <= 0){
this.interfaceLayer.removeChild(this.levelPicSprite);
this.bgLayer.alpha = 1;
this.treeScale = 1;
this.levelPicSprite = null;
this.currPicTimer = 0;
this.levelPicPhase = -1;
this.currState = this.STATE_GAMEPLAY;
};
break;
};
} else {
if (currState == STATE_SHOWBOSSWARNING){
if (bossApproachMC.currentFrame >= bossApproachMC.totalFrames){
addBoss();
};
} else {
this.levelTimer++;
};
};
if (this.levelArray.length > 0){
if (((!((currState == STATE_SHOWLEVELPIC))) && (!((currState == STATE_SHOWBOSSWARNING))))){
if (startEnemyRest){
if ((((enemyArray.length == 0)) && ((obstacleArray.length == 0)))){
enemyRestTimer++;
if (enemyRestTimer > 50){
this.levelTimer = this.levelArray[0][0];
};
} else {
enemyRestTimer = 0;
};
};
};
while ((((this.levelArray.length > 0)) && ((this.levelTimer >= this.levelArray[0][0])))) {
processAsset(this.levelArray[0]);
levelArray.splice(0, 1);
startEnemyRest = true;
};
};
yourShip.render();
_local2 = 0;
while (_local2 < enemyArray.length) {
enemyArray[_local2].render();
if (yourShip.currState == yourShip.STATE_ALIVE){
if (((enemyArray[_local2].isRammable) && (yourShip.isShielded))){
_local10 = (enemyArray[_local2].x - yourShip.x);
_local11 = (enemyArray[_local2].y - yourShip.y);
if ((((_local10 < yourShip.shieldMC.width)) && ((_local11 < yourShip.shieldMC.height)))){
_local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
if (_local12 < yourShip.shieldMC.width){
enemyArray[_local2].currState = enemyArray[_local2].STATE_OUTOFSTAGE;
_local13 = new Bullet(BulletRammer, enemyArray[_local2].x, enemyArray[_local2].y, 270, 6, false, false, 0, enemyArray[_local2].PARTICLE_DAMAGESMOKE, true, 100, this.gameMC, 1, 0);
this.addBullet(_local13);
if (yourShip.shieldTimer == -1){
yourShip.unshieldMe();
};
};
};
} else {
if (enemyArray[_local2].isHarmful){
if (isCollideObject(yourShip, enemyArray[_local2])){
yourShip.currState = yourShip.STATE_EXPLODE;
};
};
};
};
_local2++;
};
_local2 = 0;
while (_local2 < obstacleArray.length) {
obstacleArray[_local2].render();
_local2++;
};
_local2 = 0;
while (_local2 < bulletArray.length) {
bulletArray[_local2].render();
if (bulletArray[_local2].currState == bulletArray[_local2].STATE_MOVE){
if (bulletArray[_local2].isYours){
_local3 = 0;
while (_local3 < enemyArray.length) {
if (enemyArray[_local3].isHittable){
if (isCollideObject(enemyArray[_local3], bulletArray[_local2])){
if (enemyArray[_local3].currState != enemyArray[_local3].STATE_OUTOFSTAGE){
bulletArray[_local2].currState = bulletArray[_local2].STATE_DIE;
if (enemyArray[_local3].isShielded == false){
enemyArray[_local3].beingShot(bulletArray[_local2]);
};
};
break;
};
};
_local3++;
};
} else {
if (yourShip.currState == yourShip.STATE_ALIVE){
if (isCollideObject(yourShip, bulletArray[_local2])){
bulletArray[_local2].currState = bulletArray[_local2].STATE_DIE;
if (yourShip.isShielded == false){
yourShip.currState = yourShip.STATE_EXPLODE;
} else {
if (yourShip.shieldTimer == -1){
yourShip.unshieldMe();
};
};
};
} else {
bulletArray[_local2].currState = bulletArray[_local2].STATE_DIE;
};
};
if (isInside(bulletArray[_local2]) == false){
bulletArray[_local2].currState = bulletArray[_local2].STATE_REMOVE;
};
};
_local2++;
};
_local2 = 0;
while (_local2 < this.particleGeneratorArray.length) {
this.particleGeneratorArray[_local2].render();
_local2++;
};
_local2 = 0;
while (_local2 < particleArray.length) {
particleArray[_local2].update();
_local2++;
};
_local2 = 0;
while (_local2 < explosionArray.length) {
explosionArray[_local2].render();
_local2++;
};
if (this.currLevel != 0){
if ((((this.levelArray.length == 0)) && ((this.enemyArray.length == 0)))){
this.nextLevelTimer++;
if (this.nextLevelTimer > 200){
this.nextLevelTimer = 0;
nextLevel();
};
};
};
break;
};
cleanup();
}
public function isCollide(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number):Boolean{
var _local11:Point;
var _local12:Point;
var _local13:Point;
var _local14:Point;
var _local15:Point;
var _local16:Number;
var _local17:Number;
var _local18:Point;
var _local19:Point;
var _local20:Point;
var _local21:Point;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
_local11 = new Point();
_local12 = new Point();
_local16 = ((_arg5 * Math.PI) / 180);
_local17 = ((_arg10 * Math.PI) / 180);
_local18 = new Point(_arg1, _arg2);
_local19 = new Point(_arg6, _arg7);
_local20 = new Point(_arg3, _arg4);
_local21 = new Point(_arg8, _arg9);
_local22 = (_local16 - _local17);
_local23 = Math.cos(_local22);
_local24 = Math.sin(_local22);
_local26 = 0;
_local13 = _local19;
_local13 = SubVectors2D(_local13, _local18);
_local13 = RotateVector2DClockwise(_local13, _local17);
_local15 = _local13;
_local14 = _local15;
_local14 = SubVectors2D(_local14, _local21);
_local15 = AddVectors2D(_local15, _local21);
_local11.x = (-(_local20.y) * _local24);
_local12.x = _local11.x;
_local25 = (_local20.x * _local23);
_local11.x = (_local11.x + _local25);
_local12.x = (_local12.x - _local25);
_local11.y = (_local20.y * _local23);
_local12.y = _local11.y;
_local25 = (_local20.x * _local24);
_local11.y = (_local11.y + _local25);
_local12.y = (_local12.y - _local25);
_local25 = (_local24 * _local23);
if (_local25 < 0){
_local25 = _local11.x;
_local11.x = _local12.x;
_local12.x = _local25;
_local25 = _local11.y;
_local11.y = _local12.y;
_local12.y = _local25;
};
if (_local24 < 0){
_local12.x = -(_local12.x);
_local12.y = -(_local12.y);
};
if ((((_local12.x > _local15.x)) || ((_local12.x > -(_local14.x))))){
return (false);
};
if (_local25 == 0){
_local29 = _local11.y;
_local30 = -(_local29);
} else {
_local26 = (_local14.x - _local11.x);
_local27 = (_local15.x - _local11.x);
_local29 = _local11.y;
if ((_local27 * _local26) > 0){
_local28 = _local11.x;
if (_local26 < 0){
_local28 = (_local28 - _local12.x);
_local29 = (_local29 - _local12.y);
_local26 = _local27;
} else {
_local28 = (_local28 + _local12.x);
_local29 = (_local29 + _local12.y);
};
_local29 = (_local29 * _local26);
_local29 = (_local29 / _local28);
_local29 = (_local29 + _local11.y);
};
_local26 = (_local14.x + _local11.x);
_local27 = (_local15.x + _local11.x);
_local30 = -(_local11.y);
if ((_local27 * _local26) > 0){
_local28 = -(_local11.x);
if (_local26 < 0){
_local28 = (_local28 - _local12.x);
_local30 = (_local30 - _local12.y);
_local26 = _local27;
} else {
_local28 = (_local28 + _local12.x);
_local30 = (_local30 + _local12.y);
};
_local30 = (_local30 * _local26);
_local30 = (_local30 / _local28);
_local30 = (_local30 - _local11.y);
};
};
return (!((((((_local29 < _local14.y)) && ((_local30 < _local14.y)))) || ((((_local29 > _local15.y)) && ((_local30 > _local15.y)))))));
}
public function addBoss(){
interfaceLayer.removeChild(bossApproachMC);
bossApproachMC = null;
currState = STATE_GAMEPLAY;
enemyArray.push(bossEnemy);
this.gameMC.jukebox.currEvent = this.gameMC.jukebox.EVENT_BOSSDEAD;
}
public function processAsset(_arg1:Array){
switch (_arg1[1]){
case LEVEL_PIC:
this.currState = STATE_SHOWLEVELPIC;
currPicTimer = 0;
levelPicPhase = 0;
switch (currLevel){
case 0:
this.levelPicSprite = new Level0Pic();
break;
case 1:
this.levelPicSprite = new Level1Pic();
break;
case 2:
this.levelPicSprite = new Level2Pic();
break;
case 3:
this.levelPicSprite = new Level3Pic();
break;
case 4:
this.levelPicSprite = new Level4Pic();
break;
};
this.levelPicSprite.x = 0;
this.levelPicSprite.y = (this.gameMC.STAGE_HEIGHT / 2);
this.levelPicSprite.alpha = 0;
this.interfaceLayer.addChild(this.levelPicSprite);
break;
case ENEMY_1SMALLDOZER:
enemyArray.push(new Lvl1SmallDozer(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], _arg1[5]));
break;
case ENEMY_1SMALLTRUCK:
enemyArray.push(new Lvl1SmallTruck(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4]));
break;
case ENEMY_1SMALLDRILLER:
enemyArray.push(new Lvl1SmallDriller(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_1MEDIUM:
enemyArray.push(new Lvl1Medium(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_1BIG:
enemyArray.push(new Lvl1Big(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_1BOSS:
bossEnemy = new Lvl1Boss(this.currDifficulty, this.gameMC);
showBossWarning();
break;
case ENEMY_2SCANNER:
obstacleArray.push(new Lvl2Scanner(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], false));
break;
case ENEMY_2SCANNERTUTORIAL:
obstacleArray.push(new Lvl2Scanner(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], true));
break;
case ENEMY_2BOSS:
bossEnemy = new Lvl2Boss(this.currDifficulty, this.gameMC);
showBossWarning();
break;
case ENEMY_2INTERCEPTOR:
enemyArray.push(new Lvl2SmallInterceptor(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_2PURSUIT:
enemyArray.push(new Lvl2SmallPursuit(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], _arg1[5]));
break;
case ENEMY_2SCOUT:
enemyArray.push(new Lvl2SmallScout(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4]));
break;
case ENEMY_2MEDIUM:
enemyArray.push(new Lvl2Medium(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_2BIG:
enemyArray.push(new Lvl2Big(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_3CONIFEROUS:
enemyArray.push(new Lvl3SmallConiferous(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], _arg1[5]));
break;
case ENEMY_3RAPTORIAL:
enemyArray.push(new Lvl3SmallRaptorial(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_3SCAVENGING:
enemyArray.push(new Lvl3SmallScavenging(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4]));
break;
case ENEMY_3MEDIUM:
enemyArray.push(new Lvl3Medium(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_3BIG:
enemyArray.push(new Lvl3Big(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_3BOSS:
bossEnemy = new Lvl3Boss(this.currDifficulty, this.gameMC);
showBossWarning();
break;
case ENEMY_4BOMBER:
enemyArray.push(new Lvl4SmallBomber(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], _arg1[5]));
break;
case ENEMY_4BOMBERSHIELD:
enemyArray.push(new Lvl4SmallBomberShield(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3], _arg1[4], _arg1[5]));
break;
case ENEMY_4FIGHTER:
enemyArray.push(new Lvl4SmallFighter(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_4RAMMER:
enemyArray.push(new Lvl4SmallRammer(this.currDifficulty, this.gameMC));
break;
case ENEMY_4MEDIUM:
enemyArray.push(new Lvl1SmallDriller(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_4BIG:
enemyArray.push(new Lvl1SmallDriller(this.currDifficulty, this.gameMC, _arg1[2], _arg1[3]));
break;
case ENEMY_4BOSS:
bossEnemy = new Lvl4Boss(this.currDifficulty, this.gameMC);
showBossWarning();
break;
};
}
public function isInside(_arg1:DisplayObject):Boolean{
if (((((((((_arg1.x + (_arg1.width / 2)) > 0)) && (((_arg1.x - (_arg1.width / 2)) < this.STAGE_WIDTH)))) && (((_arg1.y + (_arg1.height / 2)) > 0)))) && (((_arg1.y - (_arg1.height / 2)) < this.STAGE_HEIGHT)))){
return (true);
};
return (false);
}
public function releaseMovement(_arg1:KeyboardEvent){
var _local2:*;
switch (_arg1.keyCode){
case Keyboard.UP:
this.yourShip.isMovingUp = false;
break;
case Keyboard.DOWN:
this.yourShip.isMovingDown = false;
break;
case Keyboard.LEFT:
this.yourShip.isMovingLeft = false;
break;
case Keyboard.RIGHT:
this.yourShip.isMovingRight = false;
break;
case shootKey:
case (shootKey + 32):
case shootKey2:
case (shootKey2 + 32):
if (this.yourShip.isShooting){
this.yourShip.isShooting = false;
if (bulletChannel != null){
bulletChannel.stop();
bulletChannel = null;
};
_local2 = 0;
while (_local2 < this.yourShip.bulletGeneratorArray.length) {
this.yourShip.bulletGeneratorArray[_local2].currTick = 0;
_local2++;
};
};
break;
case absorbKey:
case (absorbKey + 32):
this.yourShip.isAbsorbing = false;
this.yourShip.isAbsorbLock = false;
break;
case PAUSE_KEY:
case (PAUSE_KEY + 32):
this.isPausePressed = false;
break;
case QUIT_KEY:
case (QUIT_KEY + 32):
this.isQuitPressed = false;
break;
case QUALITY_KEY:
case (QUALITY_KEY + 32):
this.isQualityPressed = false;
break;
case PARTICLE_KEY:
case (PARTICLE_KEY + 32):
this.isParticlePressed = false;
break;
case Keyboard.SPACE:
tutorialSpacePressed = false;
break;
};
}
}
}//package classes
Section 45
//Option (classes.Option)
package classes {
import flash.display.*;
import flash.filters.*;
import flash.utils.*;
public class Option extends MovieClip {
public var gameMC:MovieClip;
public var STATE_OUTOFSTAGE:int;// = 3
public var currRotationRadian:Number;
public var currTimer:int;
public var followEnemy:Boolean;// = false
public var anchorRotationRadian:Number;
public var currState:int;
public var STATE_FINISHED:int;// = 2
public var OPTION_TIMERMAX:int;// = 1500
public var ROTATION_LIMIT:Number;// = 1.5707963267949
public var mc:MovieClip;
public var removeNow:Boolean;
public var optionTimer:int;
public var incRotate:Number;
public var glowTimer:int;
public var STATE_MOVE:int;// = 1
public var bulletGeneratorArray:Array;
public function Option(_arg1:Class, _arg2:MovieClip){
var _local3:int;
ROTATION_LIMIT = (Math.PI / 2);
STATE_MOVE = 1;
STATE_FINISHED = 2;
STATE_OUTOFSTAGE = 3;
OPTION_TIMERMAX = 1500;
followEnemy = false;
super();
this.gameMC = _arg2;
mc = new (_arg1);
mc.x = 0;
mc.y = 0;
this.addChild(mc);
this.gameMC.gameEngine.shipLayer.addChild(this);
this.bulletGeneratorArray = new Array();
this.currState = this.STATE_MOVE;
this.removeNow = false;
optionTimer = -999;
glowTimer = -999;
}
public function addBulletGenerator(_arg1:Array){
var _local2:*;
var _local3:BulletGenerator;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2].cloneMe();
_local3.ownerMC = this;
this.bulletGeneratorArray.push(_local3);
_local2++;
};
this.mc.gotoAndStop(2);
optionTimer = OPTION_TIMERMAX;
glowTimer = 20;
}
public function removeAllBulletGenerator(){
var _local1:*;
_local1 = (this.bulletGeneratorArray.length - 1);
while (_local1 >= 0) {
this.bulletGeneratorArray[_local1] = null;
this.bulletGeneratorArray.splice(_local1, 1);
_local1--;
};
optionTimer = -999;
this.mc.gotoAndStop(1);
}
public function render(){
var _local1:*;
var _local2:GlowFilter;
switch (this.currState){
case this.STATE_MOVE:
if (this.gameMC.gameEngine.yourShip.isShooting){
_local1 = 0;
while (_local1 < this.bulletGeneratorArray.length) {
this.bulletGeneratorArray[_local1].render();
_local1++;
};
};
if (optionTimer == -999){
} else {
if (this.gameMC.gameEngine.currLevel != 0){
optionTimer--;
};
if (optionTimer <= 0){
removeAllBulletGenerator();
} else {
if (optionTimer <= (OPTION_TIMERMAX / 4)){
if (this.mc.currentFrame != 4){
this.mc.gotoAndStop(4);
};
} else {
if (optionTimer <= (OPTION_TIMERMAX / 2)){
if (this.mc.currentFrame != 3){
this.mc.gotoAndStop(3);
};
};
};
};
};
if (glowTimer != -999){
glowTimer--;
if (glowTimer <= 0){
glowTimer = -999;
this.mc.filters = null;
} else {
_local2 = new GlowFilter(13434777, 1, 8, 8, (glowTimer / 4));
this.mc.filters = [_local2];
};
};
break;
case this.STATE_FINISHED:
this.currState = this.STATE_OUTOFSTAGE;
break;
case this.STATE_OUTOFSTAGE:
break;
};
}
}
}//package classes
Section 46
//Particle (classes.Particle)
package classes {
import flash.display.*;
public class Particle {
public var fade:Number;// = 1
public var xVel:Number;
public var shrink:Number;// = 1
public var gravity:Number;// = 0
public var clip:Sprite;
public var yVel:Number;
public var targetMC:Sprite;
public var drag:Number;// = 1
public var directionRotate:Boolean;// = false
public var removeMe:Boolean;
public function Particle(_arg1:Class, _arg2:Sprite, _arg3:Number, _arg4:Number){
drag = 1;
fade = 1;
shrink = 1;
gravity = 0;
directionRotate = false;
super();
clip = new (_arg1);
this.targetMC = _arg2;
this.removeMe = false;
this.targetMC.addChild(clip);
clip.x = _arg3;
clip.y = _arg4;
}
public function destroy():void{
this.targetMC.removeChild(clip);
}
public function setScale(_arg1:Number){
clip.scaleX = (clip.scaleY = _arg1);
}
public function update(){
clip.x = (clip.x + xVel);
clip.y = (clip.y + yVel);
xVel = (xVel * drag);
yVel = (yVel * drag);
clip.alpha = (((clip.alpha * 1000) * fade) / 1000);
clip.scaleX = (clip.scaleY = (clip.scaleY * shrink));
yVel = (yVel + gravity);
if (directionRotate){
updateRotation();
};
if (clip.alpha < 0.1){
this.removeMe = true;
};
}
public function setVel(_arg1:Number, _arg2:Number){
xVel = _arg1;
yVel = _arg2;
}
public function updateRotation(){
clip.rotation = (Math.atan2(yVel, xVel) * (180 / Math.PI));
}
}
}//package classes
Section 47
//ParticleGenerator (classes.ParticleGenerator)
package classes {
import flash.display.*;
import flash.geom.*;
public class ParticleGenerator {
public var isHigher:Boolean;
public var posX:int;
public var posY:int;
public var gameMC:MovieClip;
public var ownerMC:DisplayObject;
public var targetMC:Sprite;
public var hasOwner:Boolean;
public var isRelative:Boolean;
public function ParticleGenerator(_arg1:int, _arg2:int, _arg3:DisplayObject, _arg4:Boolean, _arg5:Boolean, _arg6:MovieClip){
this.posX = _arg1;
this.posY = _arg2;
this.ownerMC = _arg3;
if (this.ownerMC == null){
this.hasOwner = false;
} else {
this.hasOwner = true;
};
this.isRelative = _arg4;
this.isHigher = _arg5;
this.gameMC = _arg6;
if (_arg5){
this.targetMC = this.gameMC.gameEngine.particleUpperLayer;
} else {
this.targetMC = this.gameMC.gameEngine.particleLowerLayer;
};
}
public function createParticle(_arg1:int, _arg2:int):Particle{
return (null);
}
public function addParticle(_arg1:int){
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Point;
var _local6:Point;
_local2 = this.posX;
_local3 = this.posY;
if (this.ownerMC != null){
if (this.isRelative){
_local5 = new Point(_local2, _local3);
_local6 = this.ownerMC.localToGlobal(_local5);
_local2 = _local6.x;
_local3 = _local6.y;
} else {
_local2 = (_local2 + ownerMC.x);
_local3 = (_local3 + ownerMC.y);
};
};
_local4 = 0;
while (_local4 < _arg1) {
this.gameMC.gameEngine.particleArray.push(createParticle(_local2, _local3));
_local4++;
};
}
public function render(){
}
function randRange(_arg1:Number, _arg2:Number){
var _local3:Number;
_local3 = ((Math.random() * (_arg2 - _arg1)) + _arg1);
return (_local3);
}
}
}//package classes
Section 48
//ParticleGeneratorDamageSmoke (classes.ParticleGeneratorDamageSmoke)
package classes {
import flash.display.*;
public class ParticleGeneratorDamageSmoke extends ParticleGenerator {
public function ParticleGeneratorDamageSmoke(_arg1:int, _arg2:int, _arg3:DisplayObject, _arg4:Boolean, _arg5:Boolean, _arg6:MovieClip){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
override public function createParticle(_arg1:int, _arg2:int):Particle{
var _local3:Particle;
_local3 = new Particle(DamageSmoke, this.targetMC, _arg1, _arg2);
_local3.setVel(randRange(-0.3, 0.3), 0);
_local3.clip.scaleX = (_local3.clip.scaleY = randRange(0.5, 1));
_local3.clip.alpha = 0.4;
_local3.drag = 0.99;
_local3.fade = 0.9;
_local3.shrink = 1.02;
_local3.gravity = -0.5;
return (_local3);
}
override public function render(){
addParticle(1);
}
}
}//package classes
Section 49
//ParticleGeneratorFairy (classes.ParticleGeneratorFairy)
package classes {
import flash.display.*;
public class ParticleGeneratorFairy extends ParticleGenerator {
public var renderTimer:int;
public function ParticleGeneratorFairy(_arg1:int, _arg2:int, _arg3:DisplayObject, _arg4:Boolean, _arg5:Boolean, _arg6:MovieClip){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
renderTimer = 0;
}
override public function render(){
renderTimer++;
if (renderTimer > 5){
renderTimer = 0;
addParticle(1);
};
}
override public function createParticle(_arg1:int, _arg2:int):Particle{
var _local3:Particle;
_local3 = new Particle(FrozenFairy_inside, this.targetMC, _arg1, _arg2);
_local3.setVel(0, 0);
_local3.clip.scaleX = (_local3.clip.scaleY = 1);
_local3.clip.alpha = randRange(0.5, 0.7);
_local3.drag = 0.99;
_local3.fade = 0.9;
_local3.shrink = 1;
_local3.gravity = 0;
return (_local3);
}
}
}//package classes
Section 50
//ParticleGeneratorLine (classes.ParticleGeneratorLine)
package classes {
import flash.display.*;
public class ParticleGeneratorLine extends ParticleGenerator {
public function ParticleGeneratorLine(_arg1:int, _arg2:int, _arg3:DisplayObject, _arg4:Boolean, _arg5:Boolean, _arg6:MovieClip){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
override public function createParticle(_arg1:int, _arg2:int):Particle{
var _local3:Particle;
_local3 = new Particle(LineParticle, this.targetMC, _arg1, _arg2);
_local3.setVel(0, 0);
_local3.clip.scaleX = (_local3.clip.scaleY = randRange(2, 3));
_local3.clip.alpha = randRange(0.8, 1);
_local3.drag = 0.99;
_local3.fade = 0.95;
_local3.shrink = 1;
_local3.gravity = 0;
return (_local3);
}
override public function render(){
addParticle(1);
}
}
}//package classes
Section 51
//ParticleGeneratorSmoke (classes.ParticleGeneratorSmoke)
package classes {
import flash.display.*;
public class ParticleGeneratorSmoke extends ParticleGenerator {
public function ParticleGeneratorSmoke(_arg1:int, _arg2:int, _arg3:DisplayObject, _arg4:Boolean, _arg5:Boolean, _arg6:MovieClip){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
override public function createParticle(_arg1:int, _arg2:int):Particle{
var _local3:Particle;
_local3 = new Particle(Smoke2, this.targetMC, _arg1, _arg2);
_local3.setVel(randRange(-0.3, 0.3), 0);
_local3.clip.scaleX = (_local3.clip.scaleY = randRange(0.1, 0.4));
_local3.clip.alpha = 0.2;
_local3.drag = 0.99;
_local3.fade = 0.95;
_local3.shrink = 1.02;
_local3.gravity = -0.05;
return (_local3);
}
override public function render(){
addParticle(1);
}
}
}//package classes
Section 52
//Explosion (explosionpackage.Explosion)
package explosionpackage {
import flash.display.*;
import flash.geom.*;
public class Explosion {
private var P_COUNT:int;// = 3000
private var EXPLOSION_MAX_VELOCITY:Number;// = 2
public var c_particles:Array;
private var EXPLOSION_MAX_HEAT:int;// = 0
private var PARTICLE_DAMP_MOVE:Number;// = 0.99
private var EXPLOSION_RADIUS:int;// = 40
private var PARTICLE_DAMP_ENERGIE:Number;// = 0.995
private var t_particles:Array;
private var transform:ColorTransform;
private var energie:Number;
private var PARTICLE_CHAOTIC_MOVE:Number;// = 0.1
private var PCOUNT_EACH_FRAME:int;// = 100
public function Explosion(_arg1:Number, _arg2:Number, _arg3:int){
EXPLOSION_RADIUS = 40;
EXPLOSION_MAX_VELOCITY = 2;
EXPLOSION_MAX_HEAT = 0;
PARTICLE_CHAOTIC_MOVE = 0.1;
PARTICLE_DAMP_MOVE = 0.99;
PARTICLE_DAMP_ENERGIE = 0.995;
P_COUNT = 3000;
PCOUNT_EACH_FRAME = 100;
super();
switch (_arg3){
case 2:
EXPLOSION_RADIUS = 20;
EXPLOSION_MAX_VELOCITY = 2;
EXPLOSION_MAX_HEAT = 0;
PARTICLE_CHAOTIC_MOVE = 0.1;
PARTICLE_DAMP_MOVE = 0.99;
PARTICLE_DAMP_ENERGIE = 0.93;
P_COUNT = 1500;
PCOUNT_EACH_FRAME = 0;
break;
case 3:
EXPLOSION_RADIUS = 20;
EXPLOSION_MAX_VELOCITY = 2;
EXPLOSION_MAX_HEAT = 0;
PARTICLE_CHAOTIC_MOVE = 0.1;
PARTICLE_DAMP_MOVE = 0.99;
PARTICLE_DAMP_ENERGIE = 0.99;
P_COUNT = 1500;
PCOUNT_EACH_FRAME = 0;
break;
case 4:
EXPLOSION_RADIUS = 40;
EXPLOSION_MAX_VELOCITY = 2;
EXPLOSION_MAX_HEAT = 0;
PARTICLE_CHAOTIC_MOVE = 0.1;
PARTICLE_DAMP_MOVE = 0.99;
PARTICLE_DAMP_ENERGIE = 0.995;
P_COUNT = 3000;
PCOUNT_EACH_FRAME = 100;
break;
default:
EXPLOSION_RADIUS = 40;
EXPLOSION_MAX_VELOCITY = 8;
EXPLOSION_MAX_HEAT = 0;
PARTICLE_CHAOTIC_MOVE = 0.1825;
PARTICLE_DAMP_MOVE = 0.99;
PARTICLE_DAMP_ENERGIE = 0.88;
P_COUNT = 500;
PCOUNT_EACH_FRAME = 0;
break;
};
init(_arg1, _arg2);
}
private function init(_arg1:Number, _arg2:Number):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Particle;
var _local7:int;
t_particles = new Array();
c_particles = new Array();
energie = 1;
_local7 = 0;
while (_local7 < P_COUNT) {
_local3 = ((Math.random() * Math.PI) * 2);
_local4 = (Math.random() * EXPLOSION_MAX_VELOCITY);
_local5 = (Math.random() * EXPLOSION_RADIUS);
_local6 = new Particle((_arg1 + (Math.sin(_local3) * _local5)), (_arg2 + (Math.cos(_local3) * _local5)), (Math.sin(_local3) * _local4), ((Math.cos(_local3) * _local4) - (Math.random() * EXPLOSION_MAX_HEAT)), 1, PARTICLE_DAMP_ENERGIE);
t_particles.push(_local6);
_local7++;
};
}
public function render(_arg1:BitmapData):void{
var _local2:Particle;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:int;
if (t_particles.length >= PCOUNT_EACH_FRAME){
c_particles = c_particles.concat(t_particles.splice(-(PCOUNT_EACH_FRAME)));
} else {
if (t_particles.length > 0){
c_particles = t_particles.splice();
};
};
_local8 = c_particles.length;
while (--_local8 > -1) {
_local2 = c_particles[_local8];
_local3 = _local2.sx;
_local4 = _local2.sy;
_local5 = _local2.vx;
_local6 = _local2.vy;
_local5 = (_local5 + ((Math.random() / (0.5 / PARTICLE_CHAOTIC_MOVE)) - PARTICLE_CHAOTIC_MOVE));
_local6 = (_local6 + ((Math.random() / (0.5 / PARTICLE_CHAOTIC_MOVE)) - PARTICLE_CHAOTIC_MOVE));
if (_local2.energie < 0.1){
c_particles.splice(_local8, 1);
};
_local2.energie = (_local2.energie * _local2.energieDamp);
_arg1.setPixel(_local3, _local4, int((_local2.energie * 0xFF)));
_local3 = (_local3 + _local5);
_local4 = (_local4 + _local6);
_local5 = (_local5 * PARTICLE_DAMP_MOVE);
_local6 = (_local6 * PARTICLE_DAMP_MOVE);
_local2.sx = _local3;
_local2.sy = _local4;
_local2.vx = _local5;
_local2.vy = _local6;
};
}
}
}//package explosionpackage
Section 53
//ExplosionEngine (explosionpackage.ExplosionEngine)
package explosionpackage {
import flash.display.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
public class ExplosionEngine extends Sprite {
private const EXPLOSION_BLUR_QUALITY:int = 1;
private const ORIGIN:Point;
private const HEIGHT:int = 480;
private const EXPLOSION_BLUR_STRENGTH:int = 2;
private const WIDTH:int = 640;
private var output:BitmapData;
private var explosions:Array;
public var magnitude:int;
public var removeMe:Boolean;
public var removeTimer:int;
private var buffer:BitmapData;
private var blur:BlurFilter;
private var fireColors:Array;
public var bmp:Bitmap;
private var explosionSound:Sound;
private var ExplosionSoundAsset:Class;
public function ExplosionEngine(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Sprite, _arg6:int, _arg7:Boolean){
var _local8:Sound;
ORIGIN = new Point();
super();
buffer = new BitmapData(_arg3, _arg4, true, 1426063360);
output = new BitmapData(_arg3, _arg4, true, 1426063360);
blur = new BlurFilter(EXPLOSION_BLUR_STRENGTH, EXPLOSION_BLUR_STRENGTH, EXPLOSION_BLUR_QUALITY);
if (_arg7){
fireColors = Gradient.getArray([0, 0, 0x333333, 0xFF, 0xFFFF, 0xFFFFFF], [0, 0, 1, 1, 1, 1], [0, 34, 68, 85, 136, 0xFF]);
if (MovieClip(_arg5.parent).jukebox.isMute == false){
_local8 = new sndFriendlyExplosion();
_local8.play(0, 1, new SoundTransform(0.5, 0));
};
} else {
fireColors = Gradient.getArray([0, 0, 0x333333, 0xFF0000, 0xFFFF00, 0xFFFFFF], [0, 0, 1, 1, 1, 1], [0, 34, 68, 85, 136, 0xFF]);
if (MovieClip(_arg5.parent).jukebox.isMute == false){
switch (_arg6){
case 2:
case 3:
_local8 = new sndMediumExplosion();
_local8.play(0, 1, new SoundTransform(0.5, 0));
break;
case 4:
_local8 = new sndBigExplosion();
_local8.play(0, 1, new SoundTransform(0.5, 0));
break;
default:
_local8 = new sndSmallExplosion();
_local8.play(0, 1, new SoundTransform(0.5, 0));
break;
};
};
};
this.bmp = new Bitmap(output);
this.addChild(bmp);
explosions = new Array();
this.x = _arg1;
this.y = _arg2;
_arg5.addChild(this);
this.magnitude = _arg6;
createExplosion();
this.removeMe = false;
this.removeTimer = 0;
}
private function createExplosion():void{
var _local1:Explosion;
_local1 = new Explosion((this.width / 2), (this.height / 2), this.magnitude);
explosions.push(_local1);
}
public function render():void{
var _local1:Explosion;
var _local2:int;
_local2 = explosions.length;
while (--_local2 > -1) {
_local1 = explosions[_local2];
_local1.render(buffer);
if (_local1.c_particles.length <= 0){
this.removeTimer++;
if (this.removeTimer > 20){
this.removeMe = true;
};
};
};
buffer.applyFilter(buffer, buffer.rect, ORIGIN, blur);
output.copyPixels(buffer, buffer.rect, ORIGIN);
output.paletteMap(output, output.rect, ORIGIN, [], [], fireColors, []);
}
}
}//package explosionpackage
Section 54
//Gradient (explosionpackage.Gradient)
package explosionpackage {
import flash.display.*;
import flash.geom.*;
public class Gradient {
private static const IDENTITY:Matrix = new Matrix();
public static function getArray(_arg1:Array, _arg2:Array, _arg3:Array):Array{
var _local4:Array;
var _local5:Shape;
var _local6:Matrix;
var _local7:BitmapData;
var _local8:Graphics;
var _local9:uint;
var _local10:int;
_local4 = new Array();
_local5 = new Shape();
_local6 = new Matrix();
_local7 = new BitmapData(0x0100, 1, true, 0);
_local8 = _local5.graphics;
_local6.createGradientBox(0x0100, 0x0100, 0, 0, 0);
_local8.clear();
_local8.beginGradientFill("linear", _arg1, _arg2, _arg3, _local6);
_local8.drawRect(0, 0, 0x0100, 0x0100);
_local8.endFill();
_local7.draw(_local5, IDENTITY);
_local10 = 0;
while (_local10 < 0x0100) {
_local9 = _local7.getPixel32(_local10, 0);
_local4.push(_local9);
_local10++;
};
return (_local4);
}
}
}//package explosionpackage
Section 55
//Particle (explosionpackage.Particle)
package explosionpackage {
public class Particle {
public var vx:Number;
public var vy:Number;
public var sx:Number;
public var sy:Number;
public var energie:Number;
public var energieDamp:Number;
public function Particle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
this.sx = _arg1;
this.sy = _arg2;
this.vx = _arg3;
this.vy = _arg4;
this.energie = _arg5;
this.energieDamp = _arg6;
}
}
}//package explosionpackage
Section 56
//MochiScores (mochi.MochiScores)
package mochi {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var options = _arg1;
if (options != null){
if (options.clip != null){
if ((options.clip is Sprite)){
MochiServices.setContainer(options.clip);
};
delete options.clip;
} else {
MochiServices.setContainer();
};
MochiServices.stayOnTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
//unresolved jump
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
//unresolved jump
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
//unresolved jump
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
_local2 = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (_arg1 != null){
if (_arg1.error != null){
if (_arg1.error == true){
if (onErrorHandler != null){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
};
};
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi
Section 57
//MochiServices (mochi.MochiServices)
package mochi {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _sendChannel:LocalConnection;
private static var _rcvChannelName:String;
private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf";
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _id:String;
private static var _listenChannel:LocalConnection;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _startTime:Number;
private static var _connecting:Boolean = false;
public static var onError:Object;
private static var _listenChannelName:String = "__mochiservices";
private static var _rcvChannel:LocalConnection;
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
onError("NotConnected");
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
public static function get connected():Boolean{
return (_connected);
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (_clip != null){
if (_clip._queue != null){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
public static function get childClip():Object{
return (_clip);
}
public static function get id():String{
return (_id);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function getVersion():String{
return ("1.31");
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_listenChannel.close();
_rcvChannel.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
Security.allowDomain("*");
Security.allowInsecureDomain("*");
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
return (_local2);
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
if (_clip.parent != null){
Sprite(_clip.parent).removeChild(_clip);
};
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function onStatus(_arg1:StatusEvent):void{
switch (_arg1.level){
case "error":
_connected = false;
_listenChannel.connect(_listenChannelName);
break;
};
}
private static function initComChannels():void{
if (!_connected){
_sendChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus);
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()});
_rcvChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus);
_clip.onReceive = function (_arg1:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var methodName:String;
var obj:Object;
var pkg = _arg1;
cb = pkg.callbackID;
cblst = this.client._callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
methodName = "";
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
//unresolved jump
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
};
};
};
delete this.client._callbacks[cb];
};
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
_rcvChannel.connect(_rcvChannelName);
_connecting = false;
_connected = true;
_listenChannel.close();
while (_clip._queue.length > 0) {
_sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function listen():void{
_listenChannel = new LocalConnection();
_listenChannel.client = _clip;
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
_listenChannel.allowDomain("*", "localhost");
_listenChannel.allowInsecureDomain("*", "localhost");
_listenChannel.connect(_listenChannelName);
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
_rcvChannelName = _arg1;
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var clipname:String;
var f:Function;
var req:URLRequest;
var id = _arg1;
var clip = _arg2;
clipname = ("_mochiservices_com_" + id);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
MochiServices.allowDomains(_gatewayURL);
_clip = createEmptyMovieClip(clip, clipname, 10336, false);
_loader = new Loader();
_timer = new Timer(1000, 0);
_startTime = getTimer();
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
f = function (_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
MochiServices.disconnect();
MochiServices.onError("IOError");
};
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
req = new URLRequest(_gatewayURL);
_loader.load(req);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_rcvChannel = new LocalConnection();
_rcvChannel.allowDomain("*", "localhost");
_rcvChannel.allowInsecureDomain("*", "localhost");
_rcvChannel.client = _clip;
_clip._nextcallbackID = 0;
_clip._callbacks = {};
listen();
return (_clip);
}
public static function bringToTop(_arg1:Event):void{
var e = _arg1;
if (MochiServices.clip != null){
if (MochiServices.childClip != null){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
};
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
_connecting = true;
init(id, clip);
};
//unresolved jump
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
};
};
};
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var mc:MovieClip;
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
mc = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function connectWait(_arg1:TimerEvent):void{
if ((getTimer() - _startTime) > 10000){
if (!_connected){
_clip._mochiad_ctr_failed = true;
MochiServices.disconnect();
MochiServices.onError("IOError");
};
_timer.stop();
};
}
}
}//package mochi
Section 58
//AbsorbInterface_151 (thelastcanopyng_fla.AbsorbInterface_151)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
public dynamic class AbsorbInterface_151 extends MovieClip {
public var absorbFillMC:MovieClip;
public function AbsorbInterface_151(){
addFrameScript(0, frame1);
}
public function finishedAbsorb(){
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
function frame1(){
stop();
}
public function doEveryFrame(_arg1:Event){
this.absorbFillMC.alpha = (this.absorbFillMC.alpha - 0.1);
if (this.absorbFillMC.alpha <= 0){
this.absorbFillMC.y = 90;
this.absorbFillMC.alpha = 1;
this.removeEventListener(Event.ENTER_FRAME, doEveryFrame);
};
}
}
}//package thelastcanopyng_fla
Section 59
//btnBackToMainMenu_155 (thelastcanopyng_fla.btnBackToMainMenu_155)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class btnBackToMainMenu_155 extends MovieClip {
public function btnBackToMainMenu_155(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package thelastcanopyng_fla
Section 60
//btnSubmitScore_156 (thelastcanopyng_fla.btnSubmitScore_156)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class btnSubmitScore_156 extends MovieClip {
public function btnSubmitScore_156(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package thelastcanopyng_fla
Section 61
//button2_mc_131 (thelastcanopyng_fla.button2_mc_131)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public dynamic class button2_mc_131 extends MovieClip {
public var button_mc:MovieClip;
public function button2_mc_131(){
addFrameScript(0, frame1);
}
public function cgdc5Event(_arg1:Event):void{
navigateToURL(new URLRequest("http://jayisgames.com/cgdc5/?ref=e875ab05"), "_blank");
}
function frame1(){
button_mc.buttonMode = true;
button_mc.addEventListener(MouseEvent.CLICK, cgdc5Event);
MochiBot.track(this, "e875ab05");
}
}
}//package thelastcanopyng_fla
Section 62
//difficultychoicemenu_145 (thelastcanopyng_fla.difficultychoicemenu_145)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class difficultychoicemenu_145 extends MovieClip {
public var detect1MC:MovieClip;
public var diffBarMC:MovieClip;
public var detect0MC:MovieClip;
public var detect3MC:MovieClip;
public var detect2MC:MovieClip;
}
}//package thelastcanopyng_fla
Section 63
//endingSequence_157 (thelastcanopyng_fla.endingSequence_157)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
public dynamic class endingSequence_157 extends MovieClip {
public var isDown:Boolean;
public var currSequence:int;
public var DIFFICULTYBAR_EASY_Y:int;
public var DIFFICULTYBAR_MEDIUM_Y:int;
public var intro3MC:MovieClip;
public var currTimer:int;
public var intro2MC:MovieClip;
public var INC_ALPHA:Number;
public var isUp:Boolean;
public var difficultyMC:MovieClip;
public var currDifficulty:int;
public var intro1MC:MovieClip;
public var TIMER_EVERYFRAME:int;
public var DIFFICULTYBAR_HARD_Y:int;
public var targetY:int;
public function endingSequence_157(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
currSequence = 1;
currTimer = 0;
TIMER_EVERYFRAME = 150;
INC_ALPHA = 0.1;
DIFFICULTYBAR_EASY_Y = 48;
DIFFICULTYBAR_MEDIUM_Y = 72;
DIFFICULTYBAR_HARD_Y = 96;
currDifficulty = 2;
targetY = DIFFICULTYBAR_MEDIUM_Y;
isUp = false;
isDown = false;
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
public function doEveryFrame(_arg1:Event){
switch (currSequence){
case 1:
if ((intro1MC.alpha + INC_ALPHA) >= 1){
intro1MC.alpha = 1;
currSequence = 2;
} else {
intro1MC.alpha = (intro1MC.alpha + INC_ALPHA);
};
break;
case 2:
currTimer++;
if (currTimer > TIMER_EVERYFRAME){
currTimer = 0;
currSequence = 3;
};
break;
case 3:
if ((intro2MC.alpha + INC_ALPHA) >= 1){
intro2MC.alpha = 1;
currSequence = 4;
} else {
intro2MC.alpha = (intro2MC.alpha + INC_ALPHA);
};
intro1MC.alpha = (1 - intro2MC.alpha);
break;
case 4:
currTimer++;
if (currTimer > TIMER_EVERYFRAME){
currTimer = 0;
currSequence = 5;
};
break;
case 5:
if ((intro3MC.alpha + INC_ALPHA) >= 1){
intro3MC.alpha = 1;
currSequence = 6;
} else {
intro3MC.alpha = (intro3MC.alpha + INC_ALPHA);
};
intro2MC.alpha = (1 - intro3MC.alpha);
break;
case 6:
currTimer++;
if (currTimer > TIMER_EVERYFRAME){
currTimer = 0;
currSequence = 7;
};
break;
case 7:
if ((difficultyMC.alpha + INC_ALPHA) >= 1){
difficultyMC.alpha = 1;
this.removeEventListener(Event.ENTER_FRAME, doEveryFrame);
} else {
difficultyMC.alpha = (difficultyMC.alpha + INC_ALPHA);
};
break;
case 8:
break;
};
}
}
}//package thelastcanopyng_fla
Section 64
//gameField_149 (thelastcanopyng_fla.gameField_149)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import classes.*;
import flash.geom.*;
import explosionpackage.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class gameField_149 extends MovieClip {
public var STAGE_WIDTH:int;
public var DIFFICULTY_EASY:int;
public var txtStatus:TextField;
public var DIFFICULTY_MEDIUM:int;
public var STAGE_HEIGHT:int;
public var isQualityHigh:Boolean;
public var treeMC:MovieClip;
public var jukebox:Jukebox;
public var isParticleOn:Boolean;
public var gameEngine:MainGame;
public var DIFFICULTY_HARD:int;
public function gameField_149(){
addFrameScript(0, frame1);
}
public function setParticle(_arg1:Boolean){
isParticleOn = _arg1;
MovieClip(this.parent).isParticleOn = _arg1;
}
public function setQuality(_arg1:Boolean){
isQualityHigh = _arg1;
MovieClip(this.parent).isQualityHigh = _arg1;
if (_arg1){
stage.quality = StageQuality.MEDIUM;
} else {
stage.quality = StageQuality.LOW;
};
}
function frame1(){
stop();
STAGE_WIDTH = 430;
STAGE_HEIGHT = 480;
DIFFICULTY_EASY = 1;
DIFFICULTY_MEDIUM = 2;
DIFFICULTY_HARD = 3;
isQualityHigh = MovieClip(this.parent).isQualityHigh;
isParticleOn = MovieClip(this.parent).isParticleOn;
treeMC = MovieClip(this.parent).treeMC;
if (MovieClip(this.parent).currDifficulty <= DIFFICULTY_EASY){
gameEngine = new MainGame(this, MovieClip(this.parent).currDifficulty, 0, true, false);
} else {
gameEngine = new MainGame(this, MovieClip(this.parent).currDifficulty, 1, true, false);
};
jukebox = MovieClip(this.parent).jukebox;
}
}
}//package thelastcanopyng_fla
Section 65
//GameOverScreen_153 (thelastcanopyng_fla.GameOverScreen_153)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class GameOverScreen_153 extends MovieClip {
public var txtScore:TextField;
public var pressAnyKeyMC:MovieClip;
public var timerAnyKey:int;
public function GameOverScreen_153(){
addFrameScript(0, frame1);
}
public function submitHighScore(_arg1:MouseEvent){
MovieClip(this.parent).changeSection(8);
removeButtonListeners();
}
public function removeButtonListeners(){
pressAnyKeyMC.mainMenuMC.removeEventListener(MouseEvent.CLICK, clickBackToMainMenu);
pressAnyKeyMC.mainMenuMC.removeEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.mainMenuMC.removeEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
pressAnyKeyMC.submitScoreMC.removeEventListener(MouseEvent.CLICK, submitHighScore);
pressAnyKeyMC.submitScoreMC.removeEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.submitScoreMC.removeEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
}
public function rollOutButton(_arg1:MouseEvent){
_arg1.currentTarget.gotoAndStop(1);
}
public function addButtonListeners(){
pressAnyKeyMC.mainMenuMC.buttonMode = true;
pressAnyKeyMC.mainMenuMC.addEventListener(MouseEvent.CLICK, clickBackToMainMenu);
pressAnyKeyMC.mainMenuMC.addEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.mainMenuMC.addEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
pressAnyKeyMC.submitScoreMC.buttonMode = true;
pressAnyKeyMC.submitScoreMC.addEventListener(MouseEvent.CLICK, submitHighScore);
pressAnyKeyMC.submitScoreMC.addEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.submitScoreMC.addEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
}
function frame1(){
stop();
timerAnyKey = 0;
txtScore.text = (("Your score is " + MovieClip(this.parent).currScore) + ". Please try again!");
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
public function clickBackToMainMenu(_arg1:MouseEvent){
MovieClip(this.parent).changeSection(3);
removeButtonListeners();
}
public function rollOverButton(_arg1:MouseEvent){
_arg1.currentTarget.gotoAndStop(2);
}
public function doEveryFrame(_arg1:Event){
timerAnyKey++;
if (timerAnyKey > 50){
pressAnyKeyMC.alpha = (pressAnyKeyMC.alpha + 0.1);
if (pressAnyKeyMC.alpha >= 1){
pressAnyKeyMC.alpha = 1;
addButtonListeners();
this.removeEventListener(Event.ENTER_FRAME, doEveryFrame);
};
};
}
}
}//package thelastcanopyng_fla
Section 66
//introSequence_140 (thelastcanopyng_fla.introSequence_140)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class introSequence_140 extends MovieClip {
public var isDown:Boolean;
public var DIFFICULTYBAR_SUPEREASY_Y:int;
public var currSequence:int;
public var DIFFICULTYBAR_EASY_Y:int;
public var DIFFICULTYBAR_MEDIUM_Y:int;
public var intro3MC:MovieClip;
public var currTimer:int;
public var intro2MC:MovieClip;
public var INC_ALPHA:Number;
public var isUp:Boolean;
public var difficultyMC:MovieClip;
public var currDifficulty:int;
public var intro1MC:MovieClip;
public var TIMER_EVERYFRAME:int;
public var DIFFICULTYBAR_HARD_Y:int;
public var targetY:int;
public function introSequence_140(){
addFrameScript(0, frame1);
}
public function pressKey(_arg1:KeyboardEvent){
switch (_arg1.keyCode){
case Keyboard.UP:
if (isUp == false){
isUp = true;
currDifficulty--;
if (currDifficulty < 0){
currDifficulty = 0;
};
if (currDifficulty == 1){
targetY = DIFFICULTYBAR_EASY_Y;
} else {
if (currDifficulty == 2){
targetY = DIFFICULTYBAR_MEDIUM_Y;
} else {
if (currDifficulty == 0){
targetY = DIFFICULTYBAR_SUPEREASY_Y;
};
};
};
};
break;
case Keyboard.DOWN:
if (isDown == false){
isDown = true;
currDifficulty++;
if (currDifficulty > 3){
currDifficulty = 3;
};
if (currDifficulty == 1){
targetY = DIFFICULTYBAR_EASY_Y;
} else {
if (currDifficulty == 2){
targetY = DIFFICULTYBAR_MEDIUM_Y;
} else {
if (currDifficulty == 3){
targetY = DIFFICULTYBAR_HARD_Y;
};
};
};
};
break;
case 90:
case 122:
endIntro();
break;
};
}
public function releaseKey(_arg1:KeyboardEvent){
switch (_arg1.keyCode){
case Keyboard.UP:
isUp = false;
break;
case Keyboard.DOWN:
isDown = false;
break;
};
}
public function endIntro(){
difficultyMC.detect0MC.removeEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect1MC.removeEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect2MC.removeEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect3MC.removeEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect0MC.removeEventListener(MouseEvent.MOUSE_UP, selectByMouse);
difficultyMC.detect1MC.removeEventListener(MouseEvent.MOUSE_UP, selectByMouse);
difficultyMC.detect2MC.removeEventListener(MouseEvent.MOUSE_UP, selectByMouse);
difficultyMC.detect3MC.removeEventListener(MouseEvent.MOUSE_UP, selectByMouse);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, pressKey);
stage.removeEventListener(KeyboardEvent.KEY_UP, releaseKey);
MovieClip(this.parent).currDifficulty = currDifficulty;
this.removeEventListener(Event.ENTER_FRAME, doEveryFrame);
MovieClip(this.parent).changeSection(5);
}
function frame1(){
stop();
currSequence = 1;
currTimer = 0;
TIMER_EVERYFRAME = 50;
INC_ALPHA = 0.1;
DIFFICULTYBAR_SUPEREASY_Y = 24;
DIFFICULTYBAR_EASY_Y = 48;
DIFFICULTYBAR_MEDIUM_Y = 72;
DIFFICULTYBAR_HARD_Y = 96;
currDifficulty = 1;
targetY = DIFFICULTYBAR_EASY_Y;
isUp = false;
isDown = false;
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
public function chooseByMouse(_arg1:MouseEvent){
switch (_arg1.target.id){
case 0:
currDifficulty = 0;
targetY = DIFFICULTYBAR_SUPEREASY_Y;
break;
case 1:
currDifficulty = 1;
targetY = DIFFICULTYBAR_EASY_Y;
break;
case 2:
currDifficulty = 2;
targetY = DIFFICULTYBAR_MEDIUM_Y;
break;
case 3:
currDifficulty = 3;
targetY = DIFFICULTYBAR_HARD_Y;
break;
};
}
public function selectByMouse(_arg1:MouseEvent){
endIntro();
}
public function doEveryFrame(_arg1:Event){
switch (currSequence){
case 1:
if ((intro1MC.alpha + INC_ALPHA) >= 1){
intro1MC.alpha = 1;
currSequence = 2;
} else {
intro1MC.alpha = (intro1MC.alpha + INC_ALPHA);
};
break;
case 2:
currTimer++;
if (currTimer > TIMER_EVERYFRAME){
currTimer = 0;
currSequence = 3;
};
break;
case 3:
if ((intro2MC.alpha + INC_ALPHA) >= 1){
intro2MC.alpha = 1;
currSequence = 4;
} else {
intro2MC.alpha = (intro2MC.alpha + INC_ALPHA);
};
intro1MC.alpha = (1 - intro2MC.alpha);
break;
case 4:
currTimer++;
if (currTimer > TIMER_EVERYFRAME){
currTimer = 0;
currSequence = 5;
};
break;
case 5:
if ((intro3MC.alpha + INC_ALPHA) >= 1){
intro3MC.alpha = 1;
currSequence = 6;
} else {
intro3MC.alpha = (intro3MC.alpha + INC_ALPHA);
};
intro2MC.alpha = (1 - intro3MC.alpha);
break;
case 6:
currTimer++;
if (currTimer > TIMER_EVERYFRAME){
currTimer = 0;
currSequence = 7;
};
break;
case 7:
if ((difficultyMC.alpha + INC_ALPHA) >= 1){
difficultyMC.alpha = 1;
currSequence = 8;
stage.addEventListener(KeyboardEvent.KEY_DOWN, pressKey);
stage.addEventListener(KeyboardEvent.KEY_UP, releaseKey);
difficultyMC.detect0MC.id = 0;
difficultyMC.detect1MC.id = 1;
difficultyMC.detect2MC.id = 2;
difficultyMC.detect3MC.id = 3;
difficultyMC.detect0MC.buttonMode = true;
difficultyMC.detect1MC.buttonMode = true;
difficultyMC.detect2MC.buttonMode = true;
difficultyMC.detect3MC.buttonMode = true;
difficultyMC.detect0MC.addEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect1MC.addEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect2MC.addEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect3MC.addEventListener(MouseEvent.MOUSE_OVER, chooseByMouse);
difficultyMC.detect0MC.addEventListener(MouseEvent.MOUSE_UP, selectByMouse);
difficultyMC.detect1MC.addEventListener(MouseEvent.MOUSE_UP, selectByMouse);
difficultyMC.detect2MC.addEventListener(MouseEvent.MOUSE_UP, selectByMouse);
difficultyMC.detect3MC.addEventListener(MouseEvent.MOUSE_UP, selectByMouse);
} else {
difficultyMC.alpha = (difficultyMC.alpha + INC_ALPHA);
};
break;
case 8:
difficultyMC.diffBarMC.y = (difficultyMC.diffBarMC.y + ((targetY - difficultyMC.diffBarMC.y) * 0.2));
break;
};
}
}
}//package thelastcanopyng_fla
Section 67
//lovelybuttons_154 (thelastcanopyng_fla.lovelybuttons_154)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class lovelybuttons_154 extends MovieClip {
public var mainMenuMC:MovieClip;
public var submitScoreMC:MovieClip;
}
}//package thelastcanopyng_fla
Section 68
//Lvl4BossMC_hatch_117 (thelastcanopyng_fla.Lvl4BossMC_hatch_117)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class Lvl4BossMC_hatch_117 extends MovieClip {
public function Lvl4BossMC_hatch_117(){
addFrameScript(0, frame1, 1, frame2, 11, frame12);
}
function frame12(){
stop();
}
function frame1(){
stop();
}
function frame2(){
play();
}
}
}//package thelastcanopyng_fla
Section 69
//MainTimeline (thelastcanopyng_fla.MainTimeline)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import classes.*;
import flash.geom.*;
import mochi.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var STAGE_WIDTH:int;
public var DIFFICULTY_EASY:int;
public var STATE_FADEIN:int;
public var STATE_CHANGE:int;
public var whichFrame:int;
public var isWin:Boolean;
public var STATE_FADEOUT:int;
public var currState:int;
public var currScore:int;
public var DIFFICULTY_MEDIUM:int;
public var STAGE_HEIGHT:int;
public var currDifficulty:int;
public var isQualityHigh:Boolean;
public var treeMC:MovieClip;
public var gameFieldMC:MovieClip;
public var jukebox:Jukebox;
public var isParticleOn:Boolean;
public var soundMC:MovieClip;
public var STATE_IDLE:int;
public var DIFFICULTY_HARD:int;
public function MainTimeline(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 7, frame8);
}
public function startJukebox(){
jukebox = new Jukebox(this);
}
function frame2(){
stop();
}
public function changeSection(_arg1:int){
whichFrame = _arg1;
currState = STATE_FADEOUT;
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
function frame3(){
stop();
soundMC.addEventListener(MouseEvent.CLICK, toggleVolume);
soundMC.buttonMode = true;
jukebox.currEvent = jukebox.EVENT_MENU;
}
public function toggleVolume(_arg1:MouseEvent){
jukebox.isMute = !(jukebox.isMute);
if (jukebox.isMute){
_arg1.target.gotoAndStop(2);
} else {
_arg1.target.gotoAndStop(1);
};
}
function frame8(){
MochiScores.showLeaderboard({boardID:"9058501ee510b782", score:currScore, onClose:goBackToMainMenu});
}
public function endGame(_arg1:Boolean){
isWin = _arg1;
}
function frame1(){
stop();
stage.quality = StageQuality.MEDIUM;
STAGE_WIDTH = 430;
STAGE_HEIGHT = 480;
DIFFICULTY_EASY = 1;
DIFFICULTY_MEDIUM = 2;
DIFFICULTY_HARD = 3;
currDifficulty = DIFFICULTY_MEDIUM;
STATE_IDLE = 0;
STATE_FADEOUT = 1;
STATE_CHANGE = 2;
STATE_FADEIN = 3;
currState = STATE_IDLE;
currScore = 0;
isQualityHigh = true;
isParticleOn = true;
MochiAd.showPreGameAd({clip:root, id:"f104a9f155b7adb5", res:"640x480"});
MochiServices.connect("f104a9f155b7adb5", root);
}
public function goBackToMainMenu(){
changeSection(3);
}
public function doEveryFrame(_arg1:Event){
switch (currState){
case STATE_IDLE:
break;
case STATE_FADEOUT:
this.alpha = (this.alpha - 0.1);
if (this.alpha <= 0){
this.alpha = 0;
currState = STATE_CHANGE;
};
break;
case STATE_CHANGE:
this.gotoAndStop(whichFrame);
this.currState = STATE_FADEIN;
break;
case STATE_FADEIN:
this.alpha = (this.alpha + 0.1);
if (this.alpha >= 1){
this.alpha = 1;
this.removeEventListener(Event.ENTER_FRAME, doEveryFrame);
};
break;
};
}
}
}//package thelastcanopyng_fla
Section 70
//mc_logo_animation_123 (thelastcanopyng_fla.mc_logo_animation_123)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class mc_logo_animation_123 extends MovieClip {
public function mc_logo_animation_123(){
addFrameScript(110, frame111);
}
function frame111(){
MovieClip(this.parent).startJukebox();
MovieClip(this.parent).changeSection(3);
}
}
}//package thelastcanopyng_fla
Section 71
//menuAnim_127 (thelastcanopyng_fla.menuAnim_127)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class menuAnim_127 extends MovieClip {
public var menu3MC:MovieClip;
public var menu2MC:MovieClip;
public var menu1MC:MovieClip;
}
}//package thelastcanopyng_fla
Section 72
//menuMC_126 (thelastcanopyng_fla.menuMC_126)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class menuMC_126 extends MovieClip {
public var voteMC:MovieClip;
public var currMenuPic:int;
public var i:int;
public var menuArray:Array;
public var menuAnimMC:MovieClip;
public var animTimer:int;
public var btnClickHere:MovieClip;
public var animPhase:int;
public var prevMenuPic:int;
public function menuMC_126(){
addFrameScript(0, frame1);
}
public function gotoGame(_arg1:MouseEvent){
MovieClip(this.parent).changeSection(4);
}
public function gotoURL(_arg1:MouseEvent){
var url:String;
var request:URLRequest;
var e = _arg1;
url = "http://jayisgames.com/cgdc5/?gameID=5";
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
}
function frame1(){
stop();
menuArray = new Array(menuAnimMC.menu1MC, menuAnimMC.menu2MC, menuAnimMC.menu3MC);
currMenuPic = 0;
prevMenuPic = 0;
animPhase = 0;
animTimer = 0;
menuArray[0].alpha = 1;
menuArray[1].alpha = 0.5;
menuArray[2].alpha = 0.5;
voteMC.addEventListener(MouseEvent.CLICK, gotoURL);
voteMC.buttonMode = true;
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
btnClickHere.addEventListener(MouseEvent.CLICK, gotoGame);
btnClickHere.buttonMode = true;
}
public function doEveryFrame(_arg1:Event){
switch (animPhase){
case 0:
animTimer++;
if (animTimer > 20){
animTimer = 0;
animPhase = 1;
prevMenuPic = currMenuPic;
currMenuPic++;
if (currMenuPic >= menuArray.length){
currMenuPic = 0;
};
menuArray[currMenuPic].alpha = 0;
if (menuAnimMC.getChildIndex(menuArray[currMenuPic]) < (menuAnimMC.numChildren - 1)){
menuAnimMC.swapChildren(menuArray[currMenuPic], menuAnimMC.getChildAt((menuAnimMC.numChildren - 1)));
};
};
break;
case 1:
menuArray[currMenuPic].alpha = (menuArray[currMenuPic].alpha + 0.1);
if (menuArray[currMenuPic].alpha >= 1){
menuArray[currMenuPic].alpha = 1;
animPhase = 0;
};
break;
};
}
}
}//package thelastcanopyng_fla
Section 73
//musicLoad_122 (thelastcanopyng_fla.musicLoad_122)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class musicLoad_122 extends MovieClip {
public function musicLoad_122(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package thelastcanopyng_fla
Section 74
//soundButton_139 (thelastcanopyng_fla.soundButton_139)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class soundButton_139 extends MovieClip {
public function soundButton_139(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package thelastcanopyng_fla
Section 75
//treebarkcopy_150 (thelastcanopyng_fla.treebarkcopy_150)
package thelastcanopyng_fla {
import flash.display.*;
import flash.text.*;
public dynamic class treebarkcopy_150 extends MovieClip {
public var txtScore:TextField;
public var txtParticles:TextField;
public var txtQuality:TextField;
public var txtBonus2:TextField;
public var txtBonus3:TextField;
public var absorbMC:MovieClip;
public var txtBonus1:TextField;
public var txtBonus5:TextField;
public var txtBonus4:TextField;
public var txtLife:TextField;
}
}//package thelastcanopyng_fla
Section 76
//tutorial_inside_173 (thelastcanopyng_fla.tutorial_inside_173)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class tutorial_inside_173 extends MovieClip {
public var spacebarMC:MovieClip;
public function tutorial_inside_173(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package thelastcanopyng_fla
Section 77
//tutorialarrow_171 (thelastcanopyng_fla.tutorialarrow_171)
package thelastcanopyng_fla {
import flash.display.*;
public dynamic class tutorialarrow_171 extends MovieClip {
public var arrowInsideMC:MovieClip;
}
}//package thelastcanopyng_fla
Section 78
//YouWinScreen_161 (thelastcanopyng_fla.YouWinScreen_161)
package thelastcanopyng_fla {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
import flash.text.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
import flash.system.*;
import flash.external.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class YouWinScreen_161 extends MovieClip {
public var txtScore:TextField;
public var pressAnyKeyMC:MovieClip;
public var timerAnyKey:int;
public function YouWinScreen_161(){
addFrameScript(0, frame1);
}
public function submitHighScore(_arg1:MouseEvent){
MovieClip(this.parent.parent).changeSection(8);
removeButtonListeners();
}
public function removeButtonListeners(){
pressAnyKeyMC.mainMenuMC.removeEventListener(MouseEvent.CLICK, clickBackToMainMenu);
pressAnyKeyMC.mainMenuMC.removeEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.mainMenuMC.removeEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
pressAnyKeyMC.submitScoreMC.removeEventListener(MouseEvent.CLICK, submitHighScore);
pressAnyKeyMC.submitScoreMC.removeEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.submitScoreMC.removeEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
}
public function rollOutButton(_arg1:MouseEvent){
_arg1.currentTarget.gotoAndStop(1);
}
public function addButtonListeners(){
pressAnyKeyMC.mainMenuMC.buttonMode = true;
pressAnyKeyMC.mainMenuMC.addEventListener(MouseEvent.CLICK, clickBackToMainMenu);
pressAnyKeyMC.mainMenuMC.addEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.mainMenuMC.addEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
pressAnyKeyMC.submitScoreMC.buttonMode = true;
pressAnyKeyMC.submitScoreMC.addEventListener(MouseEvent.CLICK, submitHighScore);
pressAnyKeyMC.submitScoreMC.addEventListener(MouseEvent.MOUSE_OVER, rollOverButton);
pressAnyKeyMC.submitScoreMC.addEventListener(MouseEvent.MOUSE_OUT, rollOutButton);
}
function frame1(){
stop();
timerAnyKey = 0;
txtScore.text = (("Your score is " + MovieClip(this.parent.parent).currScore) + ". Congratulations!");
this.addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
public function clickBackToMainMenu(_arg1:MouseEvent){
MovieClip(this.parent.parent).changeSection(3);
removeButtonListeners();
}
public function rollOverButton(_arg1:MouseEvent){
_arg1.currentTarget.gotoAndStop(2);
}
public function doEveryFrame(_arg1:Event){
timerAnyKey++;
if (timerAnyKey > 50){
pressAnyKeyMC.alpha = (pressAnyKeyMC.alpha + 0.1);
if (pressAnyKeyMC.alpha >= 1){
pressAnyKeyMC.alpha = 1;
addButtonListeners();
this.removeEventListener(Event.ENTER_FRAME, doEveryFrame);
};
};
}
}
}//package thelastcanopyng_fla
Section 79
//bg0l_1 (bg0l_1)
package {
import flash.display.*;
public dynamic class bg0l_1 extends MovieClip {
}
}//package
Section 80
//bg0m_1 (bg0m_1)
package {
import flash.display.*;
public dynamic class bg0m_1 extends MovieClip {
}
}//package
Section 81
//bg0s_1 (bg0s_1)
package {
import flash.display.*;
public dynamic class bg0s_1 extends MovieClip {
}
}//package
Section 82
//bg0s_2 (bg0s_2)
package {
import flash.display.*;
public dynamic class bg0s_2 extends MovieClip {
}
}//package
Section 83
//bg1l_1 (bg1l_1)
package {
import flash.display.*;
public dynamic class bg1l_1 extends MovieClip {
}
}//package
Section 84
//bg1l_2 (bg1l_2)
package {
import flash.display.*;
public dynamic class bg1l_2 extends MovieClip {
}
}//package
Section 85
//bg1l_3 (bg1l_3)
package {
import flash.display.*;
public dynamic class bg1l_3 extends MovieClip {
}
}//package
Section 86
//bg1l_4 (bg1l_4)
package {
import flash.display.*;
public dynamic class bg1l_4 extends MovieClip {
}
}//package
Section 87
//bg1m_1 (bg1m_1)
package {
import flash.display.*;
public dynamic class bg1m_1 extends MovieClip {
}
}//package
Section 88
//bg1m_2 (bg1m_2)
package {
import flash.display.*;
public dynamic class bg1m_2 extends MovieClip {
}
}//package
Section 89
//bg1m_3 (bg1m_3)
package {
import flash.display.*;
public dynamic class bg1m_3 extends MovieClip {
}
}//package
Section 90
//bg1m_4 (bg1m_4)
package {
import flash.display.*;
public dynamic class bg1m_4 extends MovieClip {
}
}//package
Section 91
//bg1m_5 (bg1m_5)
package {
import flash.display.*;
public dynamic class bg1m_5 extends MovieClip {
}
}//package
Section 92
//bg1m_6 (bg1m_6)
package {
import flash.display.*;
public dynamic class bg1m_6 extends MovieClip {
}
}//package
Section 93
//bg1s_1 (bg1s_1)
package {
import flash.display.*;
public dynamic class bg1s_1 extends MovieClip {
}
}//package
Section 94
//bg1s_10 (bg1s_10)
package {
import flash.display.*;
public dynamic class bg1s_10 extends MovieClip {
}
}//package
Section 95
//bg1s_2 (bg1s_2)
package {
import flash.display.*;
public dynamic class bg1s_2 extends MovieClip {
}
}//package
Section 96
//bg1s_3 (bg1s_3)
package {
import flash.display.*;
public dynamic class bg1s_3 extends MovieClip {
}
}//package
Section 97
//bg1s_4 (bg1s_4)
package {
import flash.display.*;
public dynamic class bg1s_4 extends MovieClip {
}
}//package
Section 98
//bg1s_5 (bg1s_5)
package {
import flash.display.*;
public dynamic class bg1s_5 extends MovieClip {
}
}//package
Section 99
//bg1s_6 (bg1s_6)
package {
import flash.display.*;
public dynamic class bg1s_6 extends MovieClip {
}
}//package
Section 100
//bg1s_7 (bg1s_7)
package {
import flash.display.*;
public dynamic class bg1s_7 extends MovieClip {
}
}//package
Section 101
//bg1s_8 (bg1s_8)
package {
import flash.display.*;
public dynamic class bg1s_8 extends MovieClip {
}
}//package
Section 102
//bg1s_9 (bg1s_9)
package {
import flash.display.*;
public dynamic class bg1s_9 extends MovieClip {
}
}//package
Section 103
//bg2l_1 (bg2l_1)
package {
import flash.display.*;
public dynamic class bg2l_1 extends MovieClip {
}
}//package
Section 104
//bg2l_2 (bg2l_2)
package {
import flash.display.*;
public dynamic class bg2l_2 extends MovieClip {
}
}//package
Section 105
//bg2l_3 (bg2l_3)
package {
import flash.display.*;
public dynamic class bg2l_3 extends MovieClip {
}
}//package
Section 106
//bg2l_4 (bg2l_4)
package {
import flash.display.*;
public dynamic class bg2l_4 extends MovieClip {
}
}//package
Section 107
//bg2m_1 (bg2m_1)
package {
import flash.display.*;
public dynamic class bg2m_1 extends MovieClip {
}
}//package
Section 108
//bg2m_2 (bg2m_2)
package {
import flash.display.*;
public dynamic class bg2m_2 extends MovieClip {
}
}//package
Section 109
//bg2m_3 (bg2m_3)
package {
import flash.display.*;
public dynamic class bg2m_3 extends MovieClip {
}
}//package
Section 110
//bg2m_4 (bg2m_4)
package {
import flash.display.*;
public dynamic class bg2m_4 extends MovieClip {
}
}//package
Section 111
//bg2m_5 (bg2m_5)
package {
import flash.display.*;
public dynamic class bg2m_5 extends MovieClip {
}
}//package
Section 112
//bg2m_6 (bg2m_6)
package {
import flash.display.*;
public dynamic class bg2m_6 extends MovieClip {
}
}//package
Section 113
//bg2s_1 (bg2s_1)
package {
import flash.display.*;
public dynamic class bg2s_1 extends MovieClip {
}
}//package
Section 114
//bg2s_10 (bg2s_10)
package {
import flash.display.*;
public dynamic class bg2s_10 extends MovieClip {
}
}//package
Section 115
//bg2s_2 (bg2s_2)
package {
import flash.display.*;
public dynamic class bg2s_2 extends MovieClip {
}
}//package
Section 116
//bg2s_3 (bg2s_3)
package {
import flash.display.*;
public dynamic class bg2s_3 extends MovieClip {
}
}//package
Section 117
//bg2s_4 (bg2s_4)
package {
import flash.display.*;
public dynamic class bg2s_4 extends MovieClip {
}
}//package
Section 118
//bg2s_5 (bg2s_5)
package {
import flash.display.*;
public dynamic class bg2s_5 extends MovieClip {
}
}//package
Section 119
//bg2s_6 (bg2s_6)
package {
import flash.display.*;
public dynamic class bg2s_6 extends MovieClip {
}
}//package
Section 120
//bg2s_7 (bg2s_7)
package {
import flash.display.*;
public dynamic class bg2s_7 extends MovieClip {
}
}//package
Section 121
//bg2s_8 (bg2s_8)
package {
import flash.display.*;
public dynamic class bg2s_8 extends MovieClip {
}
}//package
Section 122
//bg2s_9 (bg2s_9)
package {
import flash.display.*;
public dynamic class bg2s_9 extends MovieClip {
}
}//package
Section 123
//bg3l_1 (bg3l_1)
package {
import flash.display.*;
public dynamic class bg3l_1 extends MovieClip {
}
}//package
Section 124
//bg3l_2 (bg3l_2)
package {
import flash.display.*;
public dynamic class bg3l_2 extends MovieClip {
}
}//package
Section 125
//bg3l_3 (bg3l_3)
package {
import flash.display.*;
public dynamic class bg3l_3 extends MovieClip {
}
}//package
Section 126
//bg3l_4 (bg3l_4)
package {
import flash.display.*;
public dynamic class bg3l_4 extends MovieClip {
}
}//package
Section 127
//bg3m_1 (bg3m_1)
package {
import flash.display.*;
public dynamic class bg3m_1 extends MovieClip {
}
}//package
Section 128
//bg3m_2 (bg3m_2)
package {
import flash.display.*;
public dynamic class bg3m_2 extends MovieClip {
}
}//package
Section 129
//bg3m_3 (bg3m_3)
package {
import flash.display.*;
public dynamic class bg3m_3 extends MovieClip {
}
}//package
Section 130
//bg3m_4 (bg3m_4)
package {
import flash.display.*;
public dynamic class bg3m_4 extends MovieClip {
}
}//package
Section 131
//bg3m_5 (bg3m_5)
package {
import flash.display.*;
public dynamic class bg3m_5 extends MovieClip {
}
}//package
Section 132
//bg3m_6 (bg3m_6)
package {
import flash.display.*;
public dynamic class bg3m_6 extends MovieClip {
}
}//package
Section 133
//bg3s_1 (bg3s_1)
package {
import flash.display.*;
public dynamic class bg3s_1 extends MovieClip {
}
}//package
Section 134
//bg3s_10 (bg3s_10)
package {
import flash.display.*;
public dynamic class bg3s_10 extends MovieClip {
}
}//package
Section 135
//bg3s_2 (bg3s_2)
package {
import flash.display.*;
public dynamic class bg3s_2 extends MovieClip {
}
}//package
Section 136
//bg3s_3 (bg3s_3)
package {
import flash.display.*;
public dynamic class bg3s_3 extends MovieClip {
}
}//package
Section 137
//bg3s_4 (bg3s_4)
package {
import flash.display.*;
public dynamic class bg3s_4 extends MovieClip {
}
}//package
Section 138
//bg3s_5 (bg3s_5)
package {
import flash.display.*;
public dynamic class bg3s_5 extends MovieClip {
}
}//package
Section 139
//bg3s_6 (bg3s_6)
package {
import flash.display.*;
public dynamic class bg3s_6 extends MovieClip {
}
}//package
Section 140
//bg3s_7 (bg3s_7)
package {
import flash.display.*;
public dynamic class bg3s_7 extends MovieClip {
}
}//package
Section 141
//bg3s_8 (bg3s_8)
package {
import flash.display.*;
public dynamic class bg3s_8 extends MovieClip {
}
}//package
Section 142
//bg3s_9 (bg3s_9)
package {
import flash.display.*;
public dynamic class bg3s_9 extends MovieClip {
}
}//package
Section 143
//bg4l_1 (bg4l_1)
package {
import flash.display.*;
public dynamic class bg4l_1 extends MovieClip {
}
}//package
Section 144
//bg4l_2 (bg4l_2)
package {
import flash.display.*;
public dynamic class bg4l_2 extends MovieClip {
}
}//package
Section 145
//bg4l_3 (bg4l_3)
package {
import flash.display.*;
public dynamic class bg4l_3 extends MovieClip {
}
}//package
Section 146
//bg4l_4 (bg4l_4)
package {
import flash.display.*;
public dynamic class bg4l_4 extends MovieClip {
}
}//package
Section 147
//bg4m_1 (bg4m_1)
package {
import flash.display.*;
public dynamic class bg4m_1 extends MovieClip {
}
}//package
Section 148
//bg4m_2 (bg4m_2)
package {
import flash.display.*;
public dynamic class bg4m_2 extends MovieClip {
}
}//package
Section 149
//bg4m_3 (bg4m_3)
package {
import flash.display.*;
public dynamic class bg4m_3 extends MovieClip {
}
}//package
Section 150
//bg4m_4 (bg4m_4)
package {
import flash.display.*;
public dynamic class bg4m_4 extends MovieClip {
}
}//package
Section 151
//bg4m_5 (bg4m_5)
package {
import flash.display.*;
public dynamic class bg4m_5 extends MovieClip {
}
}//package
Section 152
//bg4m_6 (bg4m_6)
package {
import flash.display.*;
public dynamic class bg4m_6 extends MovieClip {
}
}//package
Section 153
//bg4s_1 (bg4s_1)
package {
import flash.display.*;
public dynamic class bg4s_1 extends MovieClip {
}
}//package
Section 154
//bg4s_10 (bg4s_10)
package {
import flash.display.*;
public dynamic class bg4s_10 extends MovieClip {
}
}//package
Section 155
//bg4s_2 (bg4s_2)
package {
import flash.display.*;
public dynamic class bg4s_2 extends MovieClip {
}
}//package
Section 156
//bg4s_3 (bg4s_3)
package {
import flash.display.*;
public dynamic class bg4s_3 extends MovieClip {
}
}//package
Section 157
//bg4s_4 (bg4s_4)
package {
import flash.display.*;
public dynamic class bg4s_4 extends MovieClip {
}
}//package
Section 158
//bg4s_5 (bg4s_5)
package {
import flash.display.*;
public dynamic class bg4s_5 extends MovieClip {
}
}//package
Section 159
//bg4s_6 (bg4s_6)
package {
import flash.display.*;
public dynamic class bg4s_6 extends MovieClip {
}
}//package
Section 160
//bg4s_7 (bg4s_7)
package {
import flash.display.*;
public dynamic class bg4s_7 extends MovieClip {
}
}//package
Section 161
//bg4s_8 (bg4s_8)
package {
import flash.display.*;
public dynamic class bg4s_8 extends MovieClip {
}
}//package
Section 162
//bg4s_9 (bg4s_9)
package {
import flash.display.*;
public dynamic class bg4s_9 extends MovieClip {
}
}//package
Section 163
//Boss4Dialogue (Boss4Dialogue)
package {
import flash.display.*;
public dynamic class Boss4Dialogue extends MovieClip {
public function Boss4Dialogue(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 164
//Boss4Dialogue2 (Boss4Dialogue2)
package {
import flash.display.*;
public dynamic class Boss4Dialogue2 extends MovieClip {
public function Boss4Dialogue2(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 165
//BossApproach (BossApproach)
package {
import flash.display.*;
public dynamic class BossApproach extends MovieClip {
public function BossApproach(){
addFrameScript(0, frame1, 119, frame120);
}
function frame1(){
play();
}
function frame120(){
stop();
}
}
}//package
Section 166
//BossApproachNoSound (BossApproachNoSound)
package {
import flash.display.*;
public dynamic class BossApproachNoSound extends MovieClip {
public function BossApproachNoSound(){
addFrameScript(0, frame1, 119, frame120);
}
function frame1(){
play();
}
function frame120(){
stop();
}
}
}//package
Section 167
//BossLifeMC (BossLifeMC)
package {
import flash.display.*;
public dynamic class BossLifeMC extends MovieClip {
public var life1MC:MovieClip;
public var bossLifeBgMC:MovieClip;
public var life4MC:MovieClip;
public var life3MC:MovieClip;
public var life2MC:MovieClip;
}
}//package
Section 168
//BulletArrowBlue (BulletArrowBlue)
package {
import flash.display.*;
public dynamic class BulletArrowBlue extends MovieClip {
}
}//package
Section 169
//BulletArrowFriendly (BulletArrowFriendly)
package {
import flash.display.*;
public dynamic class BulletArrowFriendly extends MovieClip {
}
}//package
Section 170
//BulletArrowOrange (BulletArrowOrange)
package {
import flash.display.*;
public dynamic class BulletArrowOrange extends MovieClip {
}
}//package
Section 171
//BulletArrowRed (BulletArrowRed)
package {
import flash.display.*;
public dynamic class BulletArrowRed extends MovieClip {
}
}//package
Section 172
//BulletClover (BulletClover)
package {
import flash.display.*;
public dynamic class BulletClover extends MovieClip {
}
}//package
Section 173
//BulletCloverBoss4 (BulletCloverBoss4)
package {
import flash.display.*;
public dynamic class BulletCloverBoss4 extends MovieClip {
}
}//package
Section 174
//BulletCloverFriendly (BulletCloverFriendly)
package {
import flash.display.*;
public dynamic class BulletCloverFriendly extends MovieClip {
}
}//package
Section 175
//BulletCrescent (BulletCrescent)
package {
import flash.display.*;
public dynamic class BulletCrescent extends MovieClip {
}
}//package
Section 176
//BulletCrescentBoss4 (BulletCrescentBoss4)
package {
import flash.display.*;
public dynamic class BulletCrescentBoss4 extends MovieClip {
}
}//package
Section 177
//BulletCrescentFriendly (BulletCrescentFriendly)
package {
import flash.display.*;
public dynamic class BulletCrescentFriendly extends MovieClip {
}
}//package
Section 178
//BulletCrystalBall (BulletCrystalBall)
package {
import flash.display.*;
public dynamic class BulletCrystalBall extends MovieClip {
}
}//package
Section 179
//BulletCrystalBallFriendly (BulletCrystalBallFriendly)
package {
import flash.display.*;
public dynamic class BulletCrystalBallFriendly extends MovieClip {
}
}//package
Section 180
//BulletDoughnut (BulletDoughnut)
package {
import flash.display.*;
public dynamic class BulletDoughnut extends MovieClip {
}
}//package
Section 181
//BulletDoughnutBoss4 (BulletDoughnutBoss4)
package {
import flash.display.*;
public dynamic class BulletDoughnutBoss4 extends MovieClip {
}
}//package
Section 182
//BulletDoughnutFriendly (BulletDoughnutFriendly)
package {
import flash.display.*;
public dynamic class BulletDoughnutFriendly extends MovieClip {
}
}//package
Section 183
//BulletDrill (BulletDrill)
package {
import flash.display.*;
public dynamic class BulletDrill extends MovieClip {
}
}//package
Section 184
//BulletDrillFriendly (BulletDrillFriendly)
package {
import flash.display.*;
public dynamic class BulletDrillFriendly extends MovieClip {
public function BulletDrillFriendly(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 185
//BulletElegant (BulletElegant)
package {
import flash.display.*;
public dynamic class BulletElegant extends MovieClip {
}
}//package
Section 186
//BulletElegantFriendly (BulletElegantFriendly)
package {
import flash.display.*;
public dynamic class BulletElegantFriendly extends MovieClip {
}
}//package
Section 187
//BulletEnergyMissile (BulletEnergyMissile)
package {
import flash.display.*;
public dynamic class BulletEnergyMissile extends MovieClip {
}
}//package
Section 188
//BulletEnergyMissileFriendly (BulletEnergyMissileFriendly)
package {
import flash.display.*;
public dynamic class BulletEnergyMissileFriendly extends MovieClip {
}
}//package
Section 189
//BulletGlowCircle (BulletGlowCircle)
package {
import flash.display.*;
public dynamic class BulletGlowCircle extends MovieClip {
}
}//package
Section 190
//BulletGlowCircle2 (BulletGlowCircle2)
package {
import flash.display.*;
public dynamic class BulletGlowCircle2 extends MovieClip {
}
}//package
Section 191
//BulletGlowCircle2Friendly (BulletGlowCircle2Friendly)
package {
import flash.display.*;
public dynamic class BulletGlowCircle2Friendly extends MovieClip {
}
}//package
Section 192
//BulletGlowCircleFriendly (BulletGlowCircleFriendly)
package {
import flash.display.*;
public dynamic class BulletGlowCircleFriendly extends MovieClip {
}
}//package
Section 193
//BulletGlowOval (BulletGlowOval)
package {
import flash.display.*;
public dynamic class BulletGlowOval extends MovieClip {
}
}//package
Section 194
//BulletGlowOvalBoss4 (BulletGlowOvalBoss4)
package {
import flash.display.*;
public dynamic class BulletGlowOvalBoss4 extends MovieClip {
}
}//package
Section 195
//BulletGlowOvalFriendly (BulletGlowOvalFriendly)
package {
import flash.display.*;
public dynamic class BulletGlowOvalFriendly extends MovieClip {
}
}//package
Section 196
//BulletPointy (BulletPointy)
package {
import flash.display.*;
public dynamic class BulletPointy extends MovieClip {
}
}//package
Section 197
//BulletPointyBlue (BulletPointyBlue)
package {
import flash.display.*;
public dynamic class BulletPointyBlue extends MovieClip {
}
}//package
Section 198
//BulletPointyNormal (BulletPointyNormal)
package {
import flash.display.*;
public dynamic class BulletPointyNormal extends MovieClip {
}
}//package
Section 199
//BulletRadar (BulletRadar)
package {
import flash.display.*;
public dynamic class BulletRadar extends MovieClip {
}
}//package
Section 200
//BulletRadarBoss4 (BulletRadarBoss4)
package {
import flash.display.*;
public dynamic class BulletRadarBoss4 extends MovieClip {
}
}//package
Section 201
//BulletRadarFriendly (BulletRadarFriendly)
package {
import flash.display.*;
public dynamic class BulletRadarFriendly extends MovieClip {
}
}//package
Section 202
//BulletRammer (BulletRammer)
package {
import flash.display.*;
public dynamic class BulletRammer extends MovieClip {
}
}//package
Section 203
//BulletRock (BulletRock)
package {
import flash.display.*;
public dynamic class BulletRock extends MovieClip {
}
}//package
Section 204
//BulletRockFriendly (BulletRockFriendly)
package {
import flash.display.*;
public dynamic class BulletRockFriendly extends MovieClip {
}
}//package
Section 205
//BulletSakuraBlue (BulletSakuraBlue)
package {
import flash.display.*;
public dynamic class BulletSakuraBlue extends MovieClip {
}
}//package
Section 206
//BulletSakuraFriendly (BulletSakuraFriendly)
package {
import flash.display.*;
public dynamic class BulletSakuraFriendly extends MovieClip {
}
}//package
Section 207
//BulletSakuraOrange (BulletSakuraOrange)
package {
import flash.display.*;
public dynamic class BulletSakuraOrange extends MovieClip {
}
}//package
Section 208
//BulletSakuraRed (BulletSakuraRed)
package {
import flash.display.*;
public dynamic class BulletSakuraRed extends MovieClip {
}
}//package
Section 209
//BulletSimple (BulletSimple)
package {
import flash.display.*;
public dynamic class BulletSimple extends MovieClip {
}
}//package
Section 210
//BulletSimpleMissile (BulletSimpleMissile)
package {
import flash.display.*;
public dynamic class BulletSimpleMissile extends MovieClip {
public function BulletSimpleMissile(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 211
//BulletSimpleMissileFriendly (BulletSimpleMissileFriendly)
package {
import flash.display.*;
public dynamic class BulletSimpleMissileFriendly extends MovieClip {
}
}//package
Section 212
//BulletSmallDoughnut (BulletSmallDoughnut)
package {
import flash.display.*;
public dynamic class BulletSmallDoughnut extends MovieClip {
}
}//package
Section 213
//BulletSmallDoughnutFriendly (BulletSmallDoughnutFriendly)
package {
import flash.display.*;
public dynamic class BulletSmallDoughnutFriendly extends MovieClip {
}
}//package
Section 214
//BulletSquareArrow (BulletSquareArrow)
package {
import flash.display.*;
public dynamic class BulletSquareArrow extends MovieClip {
}
}//package
Section 215
//BulletSquareArrowFriendly (BulletSquareArrowFriendly)
package {
import flash.display.*;
public dynamic class BulletSquareArrowFriendly extends MovieClip {
}
}//package
Section 216
//BulletStick (BulletStick)
package {
import flash.display.*;
public dynamic class BulletStick extends MovieClip {
}
}//package
Section 217
//BulletStickFriendly (BulletStickFriendly)
package {
import flash.display.*;
public dynamic class BulletStickFriendly extends MovieClip {
public function BulletStickFriendly(){
addFrameScript(9, frame10);
}
function frame10(){
stop();
}
}
}//package
Section 218
//BulletStickRed (BulletStickRed)
package {
import flash.display.*;
public dynamic class BulletStickRed extends MovieClip {
}
}//package
Section 219
//BulletStickRedFriendly (BulletStickRedFriendly)
package {
import flash.display.*;
public dynamic class BulletStickRedFriendly extends MovieClip {
}
}//package
Section 220
//BulletV (BulletV)
package {
import flash.display.*;
public dynamic class BulletV extends MovieClip {
}
}//package
Section 221
//button1_mc (button1_mc)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.external.*;
public dynamic class button1_mc extends MovieClip {
public var button_mc:MovieClip;
public var answered:Boolean;
public function button1_mc(){
addFrameScript(0, frame1);
}
public function cgdc5Event(_arg1:Event):void{
if (ExternalInterface.available){
ExternalInterface.call("cgdc5close");
};
setTimeout(noResponse, 500);
}
public function noResponse(){
if (!answered){
navigateToURL(new URLRequest("http://jayisgames.com/cgdc5/?ref=e875ab05"), "_blank");
};
}
function frame1(){
answered = false;
button_mc.buttonMode = true;
button_mc.addEventListener(MouseEvent.CLICK, cgdc5Event);
if (ExternalInterface.available){
ExternalInterface.addCallback("answer", answer);
};
MochiBot.track(this, "e875ab05");
}
public function answer(){
answered = true;
}
}
}//package
Section 222
//DamageSmoke (DamageSmoke)
package {
import flash.display.*;
public dynamic class DamageSmoke extends MovieClip {
}
}//package
Section 223
//EnemyFairy (EnemyFairy)
package {
import flash.display.*;
public dynamic class EnemyFairy extends MovieClip {
}
}//package
Section 224
//EnemyLackey1 (EnemyLackey1)
package {
import flash.display.*;
public dynamic class EnemyLackey1 extends MovieClip {
}
}//package
Section 225
//EnemyLackey2 (EnemyLackey2)
package {
import flash.display.*;
public dynamic class EnemyLackey2 extends MovieClip {
}
}//package
Section 226
//EnemyLackey3 (EnemyLackey3)
package {
import flash.display.*;
public dynamic class EnemyLackey3 extends MovieClip {
}
}//package
Section 227
//EnemyStar (EnemyStar)
package {
import flash.display.*;
public dynamic class EnemyStar extends MovieClip {
}
}//package
Section 228
//Fairy (Fairy)
package {
import flash.display.*;
public dynamic class Fairy extends MovieClip {
}
}//package
Section 229
//FairyDialogue (FairyDialogue)
package {
import flash.display.*;
public dynamic class FairyDialogue extends MovieClip {
public function FairyDialogue(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 230
//FairyDialogue2 (FairyDialogue2)
package {
import flash.display.*;
public dynamic class FairyDialogue2 extends MovieClip {
public function FairyDialogue2(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 231
//FairyDialogue3 (FairyDialogue3)
package {
import flash.display.*;
public dynamic class FairyDialogue3 extends MovieClip {
public function FairyDialogue3(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 232
//FrozenFairy_inside (FrozenFairy_inside)
package {
import flash.display.*;
public dynamic class FrozenFairy_inside extends MovieClip {
}
}//package
Section 233
//HowToPlayPanel (HowToPlayPanel)
package {
import flash.display.*;
public dynamic class HowToPlayPanel extends MovieClip {
public var arrowMC:MovieClip;
public var tutorialMC:MovieClip;
}
}//package
Section 234
//Level0Pic (Level0Pic)
package {
import flash.display.*;
public dynamic class Level0Pic extends MovieClip {
}
}//package
Section 235
//Level1Pic (Level1Pic)
package {
import flash.display.*;
public dynamic class Level1Pic extends MovieClip {
}
}//package
Section 236
//Level2Pic (Level2Pic)
package {
import flash.display.*;
public dynamic class Level2Pic extends MovieClip {
}
}//package
Section 237
//Level3Pic (Level3Pic)
package {
import flash.display.*;
public dynamic class Level3Pic extends MovieClip {
}
}//package
Section 238
//Level4Pic (Level4Pic)
package {
import flash.display.*;
public dynamic class Level4Pic extends MovieClip {
}
}//package
Section 239
//LineParticle (LineParticle)
package {
import flash.display.*;
public dynamic class LineParticle extends MovieClip {
}
}//package
Section 240
//Lvl1BigEnemy (Lvl1BigEnemy)
package {
import flash.display.*;
public dynamic class Lvl1BigEnemy extends MovieClip {
public var blade2MC:MovieClip;
public var blade1MC:MovieClip;
}
}//package
Section 241
//Lvl1BossEnemy (Lvl1BossEnemy)
package {
import flash.display.*;
public dynamic class Lvl1BossEnemy extends MovieClip {
}
}//package
Section 242
//Lvl1BossEnemy_ball (Lvl1BossEnemy_ball)
package {
import flash.display.*;
public dynamic class Lvl1BossEnemy_ball extends MovieClip {
}
}//package
Section 243
//Lvl1MediumEnemy (Lvl1MediumEnemy)
package {
import flash.display.*;
public dynamic class Lvl1MediumEnemy extends MovieClip {
}
}//package
Section 244
//Lvl1SmallEnemy1 (Lvl1SmallEnemy1)
package {
import flash.display.*;
public dynamic class Lvl1SmallEnemy1 extends MovieClip {
}
}//package
Section 245
//Lvl1SmallEnemy2 (Lvl1SmallEnemy2)
package {
import flash.display.*;
public dynamic class Lvl1SmallEnemy2 extends MovieClip {
}
}//package
Section 246
//Lvl1SmallEnemy3 (Lvl1SmallEnemy3)
package {
import flash.display.*;
public dynamic class Lvl1SmallEnemy3 extends MovieClip {
}
}//package
Section 247
//Lvl2BigMC (Lvl2BigMC)
package {
import flash.display.*;
public dynamic class Lvl2BigMC extends MovieClip {
}
}//package
Section 248
//Lvl2BossEnemy (Lvl2BossEnemy)
package {
import flash.display.*;
public dynamic class Lvl2BossEnemy extends MovieClip {
public var scannerMC:MovieClip;
public var scanThingMC2:MovieClip;
public var scannerMC2:MovieClip;
public var scanThingMC:MovieClip;
}
}//package
Section 249
//Lvl2BossEnemy_turret (Lvl2BossEnemy_turret)
package {
import flash.display.*;
public dynamic class Lvl2BossEnemy_turret extends MovieClip {
}
}//package
Section 250
//Lvl2MediumMC (Lvl2MediumMC)
package {
import flash.display.*;
public dynamic class Lvl2MediumMC extends MovieClip {
}
}//package
Section 251
//Lvl2Small1 (Lvl2Small1)
package {
import flash.display.*;
public dynamic class Lvl2Small1 extends MovieClip {
}
}//package
Section 252
//Lvl2SmallInterceptorMC (Lvl2SmallInterceptorMC)
package {
import flash.display.*;
public dynamic class Lvl2SmallInterceptorMC extends MovieClip {
}
}//package
Section 253
//Lvl2SmallPursuitMC (Lvl2SmallPursuitMC)
package {
import flash.display.*;
public dynamic class Lvl2SmallPursuitMC extends MovieClip {
}
}//package
Section 254
//Lvl2SmallScoutMC (Lvl2SmallScoutMC)
package {
import flash.display.*;
public dynamic class Lvl2SmallScoutMC extends MovieClip {
}
}//package
Section 255
//Lvl3BigMC (Lvl3BigMC)
package {
import flash.display.*;
public dynamic class Lvl3BigMC extends MovieClip {
}
}//package
Section 256
//Lvl3BigTurretMC (Lvl3BigTurretMC)
package {
import flash.display.*;
public dynamic class Lvl3BigTurretMC extends MovieClip {
}
}//package
Section 257
//Lvl3MediumMC (Lvl3MediumMC)
package {
import flash.display.*;
public dynamic class Lvl3MediumMC extends MovieClip {
}
}//package
Section 258
//Lvl3SmallConiferousMC (Lvl3SmallConiferousMC)
package {
import flash.display.*;
public dynamic class Lvl3SmallConiferousMC extends MovieClip {
}
}//package
Section 259
//Lvl3SmallRaptorialMC (Lvl3SmallRaptorialMC)
package {
import flash.display.*;
public dynamic class Lvl3SmallRaptorialMC extends MovieClip {
}
}//package
Section 260
//Lvl3SmallScavengingMC (Lvl3SmallScavengingMC)
package {
import flash.display.*;
public dynamic class Lvl3SmallScavengingMC extends MovieClip {
}
}//package
Section 261
//Lvl4BigMC (Lvl4BigMC)
package {
import flash.display.*;
public dynamic class Lvl4BigMC extends MovieClip {
}
}//package
Section 262
//Lvl4BigTurretMC (Lvl4BigTurretMC)
package {
import flash.display.*;
public dynamic class Lvl4BigTurretMC extends MovieClip {
}
}//package
Section 263
//Lvl4BossMC (Lvl4BossMC)
package {
import flash.display.*;
public dynamic class Lvl4BossMC extends MovieClip {
public var fairyMC:MovieClip;
public var hatchMC:MovieClip;
}
}//package
Section 264
//Lvl4MediumMC (Lvl4MediumMC)
package {
import flash.display.*;
public dynamic class Lvl4MediumMC extends MovieClip {
}
}//package
Section 265
//Lvl4SmallBomberMC (Lvl4SmallBomberMC)
package {
import flash.display.*;
public dynamic class Lvl4SmallBomberMC extends MovieClip {
}
}//package
Section 266
//Lvl4SmallFighterMC (Lvl4SmallFighterMC)
package {
import flash.display.*;
public dynamic class Lvl4SmallFighterMC extends MovieClip {
}
}//package
Section 267
//Lvl4SmallRammerMC (Lvl4SmallRammerMC)
package {
import flash.display.*;
public dynamic class Lvl4SmallRammerMC extends MovieClip {
}
}//package
Section 268
//MochiAd (MochiAd)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.system.*;
public class MochiAd {
public static function getVersion():String{
return ("2.2");
}
public static function showTimedAd(_arg1:Object):void{
MochiAd.showInterLevelAd(_arg1);
}
public static function _allowDomains(_arg1:String):String{
var _local2:String;
_local2 = _arg1.split("/")[2].split(":")[0];
Security.allowDomain("*");
Security.allowDomain(_local2);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(_local2);
return (_local2);
}
public static function load(_arg1:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var depth:Number;
var mc:MovieClip;
var wh:Array;
var lv:URLVariables;
var k:String;
var server:String;
var hostname:String;
var lc:LocalConnection;
var name:String;
var loader:Loader;
var f:Function;
var g:Function;
var req:URLRequest;
var v:Object;
var options = _arg1;
DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
if (!MochiAd._isNetworkAvailable()){
return (null);
};
try {
if (clip._mochiad_loaded){
return (null);
};
} catch(e:Error) {
throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, "_mochiad", depth);
wh = MochiAd._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
};
lv = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
lv.lc = name;
lv.st = getTimer();
loader = new Loader();
f = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
mc._mochiad_ctr_failed = true;
};
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
g = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
MochiAd.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest((server + ".swf"));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.load(req);
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function sendHighScore(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{
var _local4:MovieClip;
_local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id});
if (!_local4){
return (false);
};
_local4.doSend(["sendHighScore", _arg1], _arg2, _arg3);
return (true);
}
public static function _parseOptions(_arg1:Object, _arg2:Object):Object{
var _local3:Object;
var _local4:String;
var _local5:Array;
var _local6:Number;
var _local7:Array;
_local3 = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
if (_arg1){
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
};
if (_local3.clip == undefined){
throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite."));
};
_arg1 = _local3.clip.loaderInfo.parameters.mochiad_options;
if (_arg1){
_local5 = _arg1.split("&");
_local6 = 0;
while (_local6 < _local5.length) {
_local7 = _local5[_local6].split("=");
_local3[unescape(_local7[0])] = unescape(_local7[1]);
_local6++;
};
};
if (_local3.id == "test"){
};
return (_local3);
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function _cleanup(_arg1:Object):void{
var idx:Number;
var k:String;
var lc:LocalConnection;
var f:Function;
var mc = _arg1;
if (("lc" in mc)){
lc = mc.lc;
f = function ():void{
try {
lc.client = null;
lc.close();
} catch(e:Error) {
};
};
setTimeout(f, 0);
};
idx = DisplayObjectContainer(mc).numChildren;
while (idx > 0) {
idx = (idx - 1);
DisplayObjectContainer(mc).removeChildAt(idx);
};
for (k in mc) {
delete mc[k];
};
}
public static function unload(_arg1:Object):Boolean{
if (((_arg1.clip) && (_arg1.clip._mochiad))){
_arg1 = _arg1.clip;
};
if (!_arg1._mochiad){
return (false);
};
if (_arg1._mochiad.onUnload){
_arg1._mochiad.onUnload();
};
delete _arg1._mochiad_loaded;
delete _arg1._mochiad;
return (true);
}
public static function showInterLevelAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var options = _arg1;
DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
options.ad_finished();
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
_local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object;
_local2 = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = (_arg1 - 250);
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Number;
var _local3:Boolean;
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
_local1 = this.parent._mochiad_ctr;
_local2 = (getTimer() - this.started);
_local3 = false;
if (!chk.showing){
_local4 = _local1.loaderInfo.bytesTotal;
if ((((_local4 > 0)) || (("number" == "undefined")))){
chk.showing = true;
chk.started = getTimer();
} else {
if (_local2 > chk.ad_timeout){
_local3 = true;
};
};
};
if ((((_local2 > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){
_local3 = true;
};
if (_local3){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _getRes(_arg1:Object, _arg2:Object):Array{
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Array;
_local3 = _arg2.getBounds(_arg2.root);
_local4 = 0;
_local5 = 0;
if (typeof(_arg1.res) != "undefined"){
_local6 = _arg1.res.split("x");
_local4 = parseFloat(_local6[0]);
_local5 = parseFloat(_local6[1]);
} else {
_local4 = (_local3.xMax - _local3.xMin);
_local5 = (_local3.yMax - _local3.yMin);
};
if ((((_local4 == 0)) || ((_local5 == 0)))){
_local4 = _arg2.stage.stageWidth;
_local5 = _arg2.stage.stageHeight;
};
return ([_local4, _local5]);
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{
var _local4:MovieClip;
_local4 = new MovieClip();
if (((false) && (_arg3))){
_arg1.addChildAt(_local4, _arg3);
} else {
_arg1.addChild(_local4);
};
_arg1[_arg2] = _local4;
_local4["_name"] = _arg2;
return (_local4);
}
public static function _loadCommunicator(_arg1:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var clipname:String;
var server:String;
var depth:Number;
var mc:MovieClip;
var lv:URLVariables;
var k:String;
var lc:LocalConnection;
var name:String;
var req:URLRequest;
var loader:Loader;
var options = _arg1;
DEFAULTS = {com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
clipname = ("_mochiad_com_" + options.id);
if (!MochiAd._isNetworkAvailable()){
return (null);
};
if (clip[clipname]){
return (clip[clipname]);
};
server = (options.com_server + options.id);
MochiAd._allowDomains(server);
delete options.id;
delete options.com_server;
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, clipname, depth);
lv = new URLVariables();
for (k in options) {
lv[k] = options[k];
};
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.name = name;
mc.lc = lc;
lv.lc = name;
mc._id = 0;
mc._queue = [];
mc.rpcResult = function (_arg1:Object):void{
var _local3:Array;
var _local4:Array;
var _local5:Number;
var _local6:Object;
var _local7:Object;
_arg1 = parseInt(_arg1.toString());
_local3 = mc._callbacks[_arg1];
if (typeof(_local3) == "undefined"){
return;
};
delete mc._callbacks[_arg1];
_local4 = [];
_local5 = 2;
while (_local5 < _local3.length) {
_local4.push(_local3[_local5]);
_local5++;
};
_local5 = 1;
while (_local5 < arguments.length) {
_local4.push(arguments[_local5]);
_local5++;
};
_local6 = _local3[1];
_local7 = _local3[0];
if (((_local7) && ((typeof(_local6) == "string")))){
_local6 = _local7[_local6];
};
if (typeof(_local6) == "function"){
_local6.apply(_local7, _local4);
};
};
mc._didConnect = function (_arg1:String):void{
var _local2:Array;
var _local3:Function;
var _local4:Number;
var _local5:Array;
mc._endpoint = _arg1;
_local2 = mc._queue;
delete mc._queue;
_local3 = mc.doSend;
_local4 = 0;
while (_local4 < _local2.length) {
_local5 = _local2[_local4];
_local3.apply(this, _local5);
_local4++;
};
};
mc.doSend = function (_arg1:Array, _arg2:Object, _arg3:Object):void{
var _local5:Number;
var _local6:LocalConnection;
var _local7:Array;
var _local8:Number;
if (mc._endpoint == null){
_local7 = [];
_local8 = 0;
while (_local8 < arguments.length) {
_local7.push(arguments[_local8]);
_local8++;
};
mc._queue.push(_local7);
return;
};
mc._id = (mc._id + 1);
_local5 = mc._id;
mc._callbacks[_local5] = [_arg2, ((_arg3) || (_arg2))];
_local6 = new LocalConnection();
_local6.send(mc._endpoint, "rpc", _local5, _arg1);
};
mc._callbacks = {};
mc._callbacks[0] = [mc, "_didConnect"];
lv.st = getTimer();
req = new URLRequest((server + ".swf"));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader = new Loader();
loader.load(req);
mc.addChild(loader);
mc._mochiad_com = loader;
return (mc);
}
public static function showPreGameAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var bar:MovieClip;
var bar_color:Number;
var bar_background:Number;
var bar_outline:Number;
var backing_mc:MovieClip;
var backing:Object;
var inside_mc:MovieClip;
var inside:Object;
var outline_mc:MovieClip;
var outline:Object;
var complete:Boolean;
var unloaded:Boolean;
var f:Function;
var r:MovieClip;
var options = _arg1;
DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
var fn:Function;
MochiAd._cleanup(mc);
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.x = (w * -0.5);
chk.y = (h * -0.5);
bar = createEmptyMovieClip(chk, "_mochiad_bar", 4);
bar.x = 10;
bar.y = (h - 20);
bar_color = options.color;
delete options.color;
bar_background = options.background;
delete options.background;
bar_outline = options.outline;
delete options.outline;
backing_mc = createEmptyMovieClip(bar, "_outline", 1);
backing = backing_mc.graphics;
backing.beginFill(bar_background);
backing.moveTo(0, 0);
backing.lineTo((w - 20), 0);
backing.lineTo((w - 20), 10);
backing.lineTo(0, 10);
backing.lineTo(0, 0);
backing.endFill();
inside_mc = createEmptyMovieClip(bar, "_inside", 2);
inside = inside_mc.graphics;
inside.beginFill(bar_color);
inside.moveTo(0, 0);
inside.lineTo((w - 20), 0);
inside.lineTo((w - 20), 10);
inside.lineTo(0, 10);
inside.lineTo(0, 0);
inside.endFill();
inside_mc.scaleX = 0;
outline_mc = createEmptyMovieClip(bar, "_outline", 3);
outline = outline_mc.graphics;
outline.lineStyle(0, bar_outline, 100);
outline.moveTo(0, 0);
outline.lineTo((w - 20), 0);
outline.lineTo((w - 20), 10);
outline.lineTo(0, 10);
outline.lineTo(0, 0);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number;
_local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
complete = false;
unloaded = false;
f = function (_arg1:Event):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
complete = true;
if (unloaded){
MochiAd.unload(clip);
};
};
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
if ((clip.root is MovieClip)){
r = (clip.root as MovieClip);
if (r.framesLoaded >= r.totalFrames){
complete = true;
};
};
mc.unloadAd = function ():void{
unloaded = true;
if (complete){
MochiAd.unload(clip);
};
};
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object;
_local2 = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = _arg1;
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Object;
var _local3:Number;
var _local4:Boolean;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Object;
var _local10:Number;
var _local11:Number;
if (!this.parent.parent){
delete this["onEnterFrame"];
return;
};
_local1 = this.parent.parent.root;
_local2 = this.parent._mochiad_ctr;
_local3 = (getTimer() - this.started);
_local4 = false;
_local5 = _local1.loaderInfo.bytesTotal;
_local6 = _local1.loaderInfo.bytesLoaded;
if (complete){
_local6 = Math.max(1, _local6);
_local5 = _local6;
};
_local7 = ((100 * _local6) / _local5);
_local8 = ((100 * _local3) / chk.ad_msec);
_local9 = this._mochiad_bar._inside;
_local10 = Math.min(100, Math.min(((_local7) || (0)), _local8));
_local10 = Math.max(this.last_pcnt, _local10);
this.last_pcnt = _local10;
_local9.scaleX = (_local10 * 0.01);
if (!chk.showing){
_local11 = _local2.loaderInfo.bytesTotal;
if ((((_local11 > 0)) || (("number" == "undefined")))){
chk.showing = true;
chk.started = getTimer();
} else {
if (_local3 > chk.ad_timeout){
_local4 = true;
};
};
};
if ((((_local3 > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){
_local4 = true;
};
if (((complete) && (_local4))){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(_arg1:Object):void{
MochiAd.showPreGameAd(_arg1);
}
public static function fetchHighScores(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{
var _local4:MovieClip;
_local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id});
if (!_local4){
return (false);
};
_local4.doSend(["fetchHighScores", _arg1], _arg2, _arg3);
return (true);
}
public static function doOnEnterFrame(_arg1:MovieClip):void{
var f:Function;
var mc = _arg1;
f = function (_arg1:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
}
}//package
Section 269
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 270
//OptionNormal (OptionNormal)
package {
import flash.display.*;
public dynamic class OptionNormal extends MovieClip {
public function OptionNormal(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 271
//sandTexture (sandTexture)
package {
import flash.display.*;
public dynamic class sandTexture extends Sprite {
}
}//package
Section 272
//ShieldMC (ShieldMC)
package {
import flash.display.*;
public dynamic class ShieldMC extends MovieClip {
public function ShieldMC(){
addFrameScript(9, frame10);
}
function frame10(){
stop();
}
}
}//package
Section 273
//Smoke (Smoke)
package {
import flash.display.*;
public dynamic class Smoke extends Sprite {
}
}//package
Section 274
//Smoke2 (Smoke2)
package {
import flash.display.*;
public dynamic class Smoke2 extends Sprite {
}
}//package
Section 275
//Smoke3 (Smoke3)
package {
import flash.display.*;
public dynamic class Smoke3 extends MovieClip {
public function Smoke3(){
addFrameScript(99, frame100);
}
function frame100(){
stop();
}
}
}//package
Section 276
//sndAbsorbing (sndAbsorbing)
package {
import flash.media.*;
public dynamic class sndAbsorbing extends Sound {
}
}//package
Section 277
//sndBigExplosion (sndBigExplosion)
package {
import flash.media.*;
public dynamic class sndBigExplosion extends Sound {
}
}//package
Section 278
//sndBossFast (sndBossFast)
package {
import flash.media.*;
public dynamic class sndBossFast extends Sound {
}
}//package
Section 279
//sndBossSlow (sndBossSlow)
package {
import flash.media.*;
public dynamic class sndBossSlow extends Sound {
}
}//package
Section 280
//sndBossVeryFast (sndBossVeryFast)
package {
import flash.media.*;
public dynamic class sndBossVeryFast extends Sound {
}
}//package
Section 281
//sndBossVerySlow (sndBossVerySlow)
package {
import flash.media.*;
public dynamic class sndBossVerySlow extends Sound {
}
}//package
Section 282
//sndConfirmAbsorb (sndConfirmAbsorb)
package {
import flash.media.*;
public dynamic class sndConfirmAbsorb extends Sound {
}
}//package
Section 283
//sndEnemyFire (sndEnemyFire)
package {
import flash.media.*;
public dynamic class sndEnemyFire extends Sound {
}
}//package
Section 284
//sndFriendlyExplosion (sndFriendlyExplosion)
package {
import flash.media.*;
public dynamic class sndFriendlyExplosion extends Sound {
}
}//package
Section 285
//sndFriendShot (sndFriendShot)
package {
import flash.media.*;
public dynamic class sndFriendShot extends Sound {
}
}//package
Section 286
//sndHurricane (sndHurricane)
package {
import flash.media.*;
public dynamic class sndHurricane extends Sound {
}
}//package
Section 287
//sndLvl1Fast (sndLvl1Fast)
package {
import flash.media.*;
public dynamic class sndLvl1Fast extends Sound {
}
}//package
Section 288
//sndLvl1Slow (sndLvl1Slow)
package {
import flash.media.*;
public dynamic class sndLvl1Slow extends Sound {
}
}//package
Section 289
//sndLvl2Fast (sndLvl2Fast)
package {
import flash.media.*;
public dynamic class sndLvl2Fast extends Sound {
}
}//package
Section 290
//sndLvl2Slow (sndLvl2Slow)
package {
import flash.media.*;
public dynamic class sndLvl2Slow extends Sound {
}
}//package
Section 291
//sndLvl3Fast (sndLvl3Fast)
package {
import flash.media.*;
public dynamic class sndLvl3Fast extends Sound {
}
}//package
Section 292
//sndLvl3Slow (sndLvl3Slow)
package {
import flash.media.*;
public dynamic class sndLvl3Slow extends Sound {
}
}//package
Section 293
//sndLvl4Fast (sndLvl4Fast)
package {
import flash.media.*;
public dynamic class sndLvl4Fast extends Sound {
}
}//package
Section 294
//sndLvl4Slow (sndLvl4Slow)
package {
import flash.media.*;
public dynamic class sndLvl4Slow extends Sound {
}
}//package
Section 295
//sndMediumExplosion (sndMediumExplosion)
package {
import flash.media.*;
public dynamic class sndMediumExplosion extends Sound {
}
}//package
Section 296
//sndReflect (sndReflect)
package {
import flash.media.*;
public dynamic class sndReflect extends Sound {
}
}//package
Section 297
//sndScanAlarm (sndScanAlarm)
package {
import flash.media.*;
public dynamic class sndScanAlarm extends Sound {
}
}//package
Section 298
//sndSmallExplosion (sndSmallExplosion)
package {
import flash.media.*;
public dynamic class sndSmallExplosion extends Sound {
}
}//package
Section 299
//sndTutorial (sndTutorial)
package {
import flash.media.*;
public dynamic class sndTutorial extends Sound {
}
}//package