Section 1
//AbilitySlot_61 (black_space_fgl_fla.AbilitySlot_61)
package black_space_fgl_fla {
import flash.display.*;
import flash.text.*;
public dynamic class AbilitySlot_61 extends MovieClip {
public var cooldown:MovieClip;
public var image:MovieClip;
public var caption:TextField;
public function AbilitySlot_61(){
addFrameScript(0, frame1);
}
function frame1(){
image.gotoAndStop(((Math.random() * image.totalFrames) + 1));
}
}
}//package black_space_fgl_fla
Section 2
//BossFinalThroat_154 (black_space_fgl_fla.BossFinalThroat_154)
package black_space_fgl_fla {
import flash.display.*;
public dynamic class BossFinalThroat_154 extends MovieClip {
public function BossFinalThroat_154(){
addFrameScript(1, frame2, 31, frame32);
}
function frame32(){
stop();
}
function frame2(){
stop();
}
}
}//package black_space_fgl_fla
Section 3
//BossSpiderEye_141 (black_space_fgl_fla.BossSpiderEye_141)
package black_space_fgl_fla {
import flash.display.*;
public dynamic class BossSpiderEye_141 extends MovieClip {
public function BossSpiderEye_141(){
addFrameScript(0, frame1, 7, frame8);
}
function frame8(){
stop();
}
function frame1(){
stop();
}
}
}//package black_space_fgl_fla
Section 4
//ClickHere_78 (black_space_fgl_fla.ClickHere_78)
package black_space_fgl_fla {
import game.*;
import flash.events.*;
import flash.display.*;
public dynamic class ClickHere_78 extends MovieClip {
public var high:SimpleButton;
public var button:SimpleButton;
public var low:SimpleButton;
public var medium:SimpleButton;
public var menu:SimpleButton;
public function ClickHere_78(){
addFrameScript(0, frame1);
}
public function buttonsOff(){
low.alpha = 0.5;
medium.alpha = 0.5;
high.alpha = 0.5;
}
function frame1(){
buttonsOff();
if (Game.instance.save.quality == 0){
low.alpha = 1;
};
if (Game.instance.save.quality == 1){
medium.alpha = 1;
};
if (Game.instance.save.quality == 2){
high.alpha = 1;
};
low.addEventListener(MouseEvent.CLICK, function (_arg1){
buttonsOff();
low.alpha = 1;
Game.instance.gameScreen.setQuality(0);
});
medium.addEventListener(MouseEvent.CLICK, function (_arg1){
buttonsOff();
medium.alpha = 1;
Game.instance.gameScreen.setQuality(1);
});
high.addEventListener(MouseEvent.CLICK, function (_arg1){
buttonsOff();
high.alpha = 1;
Game.instance.gameScreen.setQuality(2);
});
}
}
}//package black_space_fgl_fla
Section 5
//GlobalBackground_165 (black_space_fgl_fla.GlobalBackground_165)
package black_space_fgl_fla {
import flash.events.*;
import flash.display.*;
public dynamic class GlobalBackground_165 extends MovieClip {
public var caption:MovieClip;
public function GlobalBackground_165(){
addFrameScript(0, frame1);
}
function frame1(){
caption.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
});
}
}
}//package black_space_fgl_fla
Section 6
//Logo_173 (black_space_fgl_fla.Logo_173)
package black_space_fgl_fla {
import flash.events.*;
import flash.display.*;
import SWFStats.*;
import flash.net.*;
public dynamic class Logo_173 extends MovieClip {
public var button:SimpleButton;
public function Logo_173(){
addFrameScript(0, frame1, 228, frame229);
}
function frame1(){
button.addEventListener(MouseEvent.CLICK, onLogoClicked);
}
function frame229(){
(parent as MovieClip).play();
}
public function onLogoClicked(_arg1:MouseEvent){
Log.CustomMetric("Dreemchest Logo");
navigateToURL(new URLRequest("http://dreemchest.com"));
}
}
}//package black_space_fgl_fla
Section 7
//SmallLogo_73 (black_space_fgl_fla.SmallLogo_73)
package black_space_fgl_fla {
import flash.events.*;
import flash.display.*;
import SWFStats.*;
import flash.net.*;
public dynamic class SmallLogo_73 extends MovieClip {
public var button:SimpleButton;
public function SmallLogo_73(){
addFrameScript(0, frame1);
}
function frame1(){
button.addEventListener(MouseEvent.CLICK, onLogoClicked);
}
public function onLogoClicked(_arg1:MouseEvent){
Log.CustomMetric("Sponsor Logo Small");
navigateToURL(new URLRequest("http://www.jokeroo.com/"));
}
}
}//package black_space_fgl_fla
Section 8
//SoundClip_157 (black_space_fgl_fla.SoundClip_157)
package black_space_fgl_fla {
import flash.display.*;
public dynamic class SoundClip_157 extends MovieClip {
public function SoundClip_157(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package black_space_fgl_fla
Section 9
//SponsorLogo_171 (black_space_fgl_fla.SponsorLogo_171)
package black_space_fgl_fla {
import flash.events.*;
import flash.display.*;
import SWFStats.*;
import flash.net.*;
public dynamic class SponsorLogo_171 extends MovieClip {
public var button:SimpleButton;
public function SponsorLogo_171(){
addFrameScript(0, frame1);
}
function frame1(){
button.addEventListener(MouseEvent.CLICK, onLogoClicked);
}
public function onLogoClicked(_arg1:MouseEvent){
Log.CustomMetric("Sponsor Logo");
navigateToURL(new URLRequest("http://www.jokeroo.com/"));
}
}
}//package black_space_fgl_fla
Section 10
//ToggleMusic_82 (black_space_fgl_fla.ToggleMusic_82)
package black_space_fgl_fla {
import game.*;
import flash.events.*;
import flash.display.*;
public dynamic class ToggleMusic_82 extends MovieClip {
public var button:SimpleButton;
public var isOn:Boolean;
public function ToggleMusic_82(){
addFrameScript(0, frame1);
}
public function onEnterFrameHandler(_arg1:Event){
button.alpha = (GameScreen.isMusicToggled()) ? 1 : 0.5;
}
public function onClicked(_arg1:MouseEvent){
isOn = !(isOn);
GameScreen.toggleMusic();
}
function frame1(){
isOn = true;
button.addEventListener(MouseEvent.CLICK, onClicked);
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
}
}//package black_space_fgl_fla
Section 11
//ToggleSound_84 (black_space_fgl_fla.ToggleSound_84)
package black_space_fgl_fla {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
public dynamic class ToggleSound_84 extends MovieClip {
public var button:SimpleButton;
public var isOn:Boolean;
public function ToggleSound_84(){
addFrameScript(0, frame1);
}
public function onEnterFrameHandler(_arg1:Event){
button.alpha = (Engine.isSoundToggled()) ? 1 : 0.5;
}
public function onClicked(_arg1:MouseEvent){
isOn = !(isOn);
Engine.toggleSound();
}
function frame1(){
isOn = true;
button.addEventListener(MouseEvent.CLICK, onClicked);
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
}
}//package black_space_fgl_fla
Section 12
//UpgradeButton_97 (black_space_fgl_fla.UpgradeButton_97)
package black_space_fgl_fla {
import flash.events.*;
import flash.display.*;
public dynamic class UpgradeButton_97 extends MovieClip {
public var level:MovieClip;
public var back:MovieClip;
public var selected:MovieClip;
public var button:SimpleButton;
public var image:MovieClip;
public function UpgradeButton_97(){
addFrameScript(0, frame1);
}
public function onMouseOutHandler(_arg1:MouseEvent){
back.gotoAndStop(1);
}
public function onMouseOverHandler(_arg1:MouseEvent){
back.gotoAndStop(2);
}
function frame1(){
back.gotoAndStop(1);
selected.visible = false;
button.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverHandler);
button.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler);
}
}
}//package black_space_fgl_fla
Section 13
//UpgradeDescription_106 (black_space_fgl_fla.UpgradeDescription_106)
package black_space_fgl_fla {
import flash.display.*;
import flash.text.*;
import game.powerup.*;
public dynamic class UpgradeDescription_106 extends MovieClip {
public var coin:MovieClip;
public var crystal:Crystal;
public var cost:TextField;
public function UpgradeDescription_106(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package black_space_fgl_fla
Section 14
//AdLoader (CPMStar.AdLoader)
package CPMStar {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class AdLoader {
private static var cpmstarLoader:Loader;
public static function LoadAd(_arg1:int, _arg2:int):DisplayObject{
Security.allowDomain("server.cpmstar.com");
var _local3 = "http://server.cpmstar.com/adviewas3.swf";
cpmstarLoader = new Loader();
cpmstarLoader.load(new URLRequest(((((_local3 + "?poolid=") + _arg1) + "&subpoolid=") + _arg2)));
return (cpmstarLoader);
}
}
}//package CPMStar
Section 15
//Common (dreemchest.Common)
package dreemchest {
public class Common {
public static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return (Math.max(Math.min(_arg1, _arg3), _arg2));
}
public static function deg2Rad(_arg1:Number):Number{
return (((_arg1 / 180) * Math.PI));
}
public static function random(_arg1:Number, _arg2:Number):Number{
return (((Math.random() * (_arg2 - _arg1)) + _arg1));
}
public static function rad2Dad(_arg1:Number):Number{
return (((_arg1 * 180) / Math.PI));
}
public static function bit(_arg1:Number):Number{
return ((1 << _arg1));
}
}
}//package dreemchest
Section 16
//Config (dreemchest.Config)
package dreemchest {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public dynamic class Config extends EventDispatcher {
public static const LOADED:String = "Loaded";
public function loadEmbedded(_arg1:Class){
var _local2:ByteArray = (new (_arg1) as ByteArray);
processXML(this, new XML(_local2.readUTFBytes(_local2.length)));
dispatchEvent(new Event(LOADED));
}
private function addString(_arg1:String, _arg2:String){
this[_arg1] = _arg2;
}
public function load(_arg1:String){
var _local2:URLLoader = new URLLoader();
_local2.addEventListener(Event.COMPLETE, onXMLLoaded);
_local2.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local2.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
_local2.load(new URLRequest(_arg1));
}
private function addArray(_arg1:String, _arg2:String){
var _local4:int;
this[_arg1] = new Array();
var _local3:int;
while (1) {
_local4 = _arg2.indexOf(",", _local3);
if (_local4 == -1){
this[_arg1].push(Number(_arg2.substr(_local3, (_arg2.length - _local3))));
break;
};
this[_arg1].push(Number(_arg2.substr(_local3, (_local4 - _local3))));
_local3 = (_local4 + 1);
};
}
private function onSecurityError(_arg1:SecurityErrorEvent):void{
trace(("Config : " + _arg1.toString()));
}
private function addNumber(_arg1:String, _arg2:Number){
this[_arg1] = _arg2;
}
private function onIOError(_arg1:IOErrorEvent):void{
trace(("Config : " + _arg1.toString()));
}
private function onXMLLoaded(_arg1:Event){
var _local2:XML = new XML(_arg1.target.data);
var _local3:int;
processXML(this, _local2);
dispatchEvent(new Event(LOADED));
}
private function processXML(_arg1:Config, _arg2:XML){
if (_arg2.name() != "config"){
if (_arg2.@type == "Array"){
_arg1.addArray(_arg2.name(), _arg2.@value);
} else {
if (_arg2.@type == "String"){
_arg1.addString(_arg2.name(), _arg2.@value);
} else {
if (_arg2.@value == undefined){
_arg1[_arg2.name()] = new Config();
_arg1 = _arg1[_arg2.name()];
} else {
_arg1.addNumber(_arg2.name(), Number(_arg2.@value));
};
};
};
};
var _local3:XMLList = _arg2.elements();
var _local4:int;
while (_local4 < _local3.length()) {
processXML(_arg1, _local3[_local4]);
_local4++;
};
}
}
}//package dreemchest
Section 17
//Engine (dreemchest.Engine)
package dreemchest {
import flash.media.*;
import flash.display.*;
import flash.net.*;
public dynamic class Engine extends MovieClip {
protected var addThisURL:String;// = ""
protected var state:GameState;// = null
protected var sponsorURL:String;// = ""
private static var isSoundOn:Boolean = true;
public function Engine(){
new FPSCounter();
}
protected function isLocal():Boolean{
var _local1:* = stage.loaderInfo.loaderURL.split("://");
return ((_local1[0] == "file"));
}
public function lockURL(_arg1):Boolean{
var _local2:* = stage.loaderInfo.loaderURL.split("://");
var _local3:* = _local2[1].split("/");
if (_local3[0] != _arg1){
return (false);
};
return (true);
}
public function navigateToSponsor(){
navigateToURL(new URLRequest(sponsorURL));
}
protected function lockURLs(_arg1:Array):Boolean{
var _local2:int;
while (_local2 < _arg1.length) {
if (lockURL(_arg1[_local2])){
return (true);
};
_local2++;
};
return (false);
}
public function get url():String{
return (stage.loaderInfo.loaderURL);
}
public function enterState(_arg1:GameState){
if (state != null){
state.leave();
};
state = _arg1;
state.enter(this);
}
public function navigateToAddThis(){
navigateToURL(new URLRequest(addThisURL));
}
public function getState():GameState{
return (state);
}
public static function toggleSound(){
var _local1:SoundTransform = new SoundTransform();
if (isSoundOn){
_local1.volume = 0;
SoundMixer.soundTransform = _local1;
} else {
_local1.volume = 1;
SoundMixer.soundTransform = _local1;
};
isSoundOn = !(isSoundOn);
}
public static function isSoundToggled(){
return (isSoundOn);
}
}
}//package dreemchest
Section 18
//FadeToBlack (dreemchest.FadeToBlack)
package dreemchest {
import flash.events.*;
import flash.display.*;
public class FadeToBlack extends MovieClip {
public var filler:MovieClip;
private var _isFading:Boolean;// = false
private var speed:Number;// = 0.1
public static const FADED:String = "Faded";
public function FadeToBlack(){
filler.alpha = 0;
visible = false;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
public function get isFading():Boolean{
return (_isFading);
}
private function onEnterFrameHandler(_arg1:Event){
if (!visible){
return;
};
filler.alpha = (filler.alpha + speed);
if (filler.alpha >= 1){
dispatchEvent(new Event(FADED));
visible = false;
filler.alpha = 0;
_isFading = false;
};
}
public function fade(_arg1:Number){
visible = true;
speed = _arg1;
_isFading = true;
}
}
}//package dreemchest
Section 19
//Feed (dreemchest.Feed)
package dreemchest {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class Feed extends MovieClip {
private var games:Array;
private var loaded:Boolean;// = false
public function Feed(){
games = new Array();
super();
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
visible = false;
}
private function onAddedToStage(_arg1:Event){
if (!loaded){
load("http://dreemchest.com/feeds/black-space.xml");
loaded = true;
};
}
public function load(_arg1:String){
var _local2:URLLoader = new URLLoader();
_local2.addEventListener(Event.COMPLETE, onXMLLoaded);
_local2.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local2.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
_local2.load(new URLRequest(_arg1));
}
private function onSecurityError(_arg1:SecurityErrorEvent):void{
trace(_arg1.toString());
}
private function onIOError(_arg1:IOErrorEvent):void{
trace(_arg1.toString());
}
private function onXMLLoaded(_arg1:Event){
var _local3:int;
var _local4:FeedGame;
var _local2:XML = new XML(_arg1.target.data);
_local3 = 0;
while (_local2.game[_local3]) {
_local4 = new FeedGame();
_local4.x = 10;
_local4.y = (10 + ((_local4.height + 10) * _local3));
addChild(_local4);
_local4.load(_local2.game[_local3]);
_local3++;
};
visible = true;
}
}
}//package dreemchest
Section 20
//FeedGame (dreemchest.FeedGame)
package dreemchest {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
public class FeedGame extends MovieClip {
public var caption:TextField;
private var url:String;// = ""
private var desc:MovieClip;// = null
public var button:SimpleButton;
private var loader:Loader;// = null
public var image:MovieClip;
private function onImageLoaded(_arg1:Event){
var _local2:Bitmap;
_local2 = (loader.content as Bitmap);
var _local3:Number = ((image.width / scaleX) / _local2.width);
var _local4:Number = ((image.height / scaleY) / _local2.height);
if (_local2.width > _local2.height){
_local2.scaleX = (_local3 * 0.8);
_local2.scaleY = (_local3 * 0.8);
} else {
_local2.scaleX = (_local4 * 0.8);
_local2.scaleY = (_local4 * 0.8);
};
_local2.x = ((((image.width / scaleX) * 0.5) - (_local2.width * 0.5)) - 2);
_local2.y = (((image.height / scaleY) * 0.5) - (_local2.height * 0.5));
addChild(_local2);
}
private function onIOError(_arg1:IOErrorEvent):void{
trace(_arg1.toString());
}
private function onClicked(_arg1:MouseEvent){
navigateToURL(new URLRequest(url));
}
private function onMouseOutHandler(_arg1:MouseEvent){
desc.visible = false;
}
private function onMouseOverHandler(_arg1:MouseEvent){
desc.visible = true;
}
public function load(_arg1:XML){
caption.text = _arg1.@title;
url = _arg1.@url;
desc = new FeedDescription();
desc.visible = false;
desc.desc.text = _arg1;
addChild(desc);
button.addEventListener(MouseEvent.CLICK, onClicked);
button.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverHandler);
button.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler);
var _local2:LoaderContext = new LoaderContext();
_local2.checkPolicyFile = true;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
loader.load(new URLRequest(_arg1.@img), _local2);
}
private function onSecurityError(_arg1:SecurityErrorEvent):void{
trace(_arg1.toString());
}
}
}//package dreemchest
Section 21
//FPSCounter (dreemchest.FPSCounter)
package dreemchest {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.text.*;
public class FPSCounter extends MovieClip {
private var prevTime:Number;
private var minFrameTime:Number;// = 99999999999
private var FPS:TextField;
private var lastTick:Number;
private var maxFrameTime:Number;// = -1
private var FrameTime:TextField;
private var numFrames:Number;
private var framesElapsed:int;// = 0
public static var k_FrameTime:Number = 0;
public function FPSCounter(){
numFrames = 0;
prevTime = getTimer();
lastTick = getTimer();
FPS = new TextField();
FPS.selectable = false;
FrameTime = new TextField();
FrameTime.y = 20;
FrameTime.width = 200;
FrameTime.selectable = false;
FPS.textColor = 4294967295;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
public function onEnterFrameHandler(_arg1:Event):void{
numFrames++;
framesElapsed++;
var _local2:Number = getTimer();
var _local3:Number = (_local2 - prevTime);
var _local4:Number = (_local2 - lastTick);
prevTime = _local2;
if (_local4 >= 500){
lastTick = _local2;
FPS.text = ("FPS: " + (numFrames * 2));
numFrames = 0;
};
if (framesElapsed > 100){
if (_local3 > maxFrameTime){
maxFrameTime = _local3;
};
if (_local3 < minFrameTime){
minFrameTime = _local3;
};
};
k_FrameTime = (_local3 * 0.001);
FrameTime.text = (((("Frame time: " + _local3) + " ms / Avg: ") + ((minFrameTime + maxFrameTime) * 0.5)) + " ms");
}
}
}//package dreemchest
Section 22
//GameSound (dreemchest.GameSound)
package dreemchest {
import flash.media.*;
import flash.events.*;
public class GameSound {
private var resumePos:Number;// = 0
private var _isLooped:Boolean;// = false
private var sound:Sound;// = null
private var soundCh:SoundChannel;// = null
private var _isPaused:Boolean;// = false
private var _volume:Number;// = 1
private var onComplete:Function;// = null
private static var transform:SoundTransform = new SoundTransform();
public function GameSound(_arg1:Sound){
sound = _arg1;
}
public function get volume():Number{
return (soundCh.soundTransform.volume);
}
public function play(_arg1:Boolean, _arg2:Number=0){
if (soundCh){
closeSoundChannel();
};
soundCh = sound.play(Math.min(sound.length, _arg2));
_isLooped = _arg1;
if (_arg1){
soundCh.addEventListener(Event.SOUND_COMPLETE, onSoundCompleteHandler);
};
}
private function closeSoundChannel(){
soundCh.removeEventListener(Event.SOUND_COMPLETE, onSoundCompleteHandler);
soundCh.stop();
soundCh = null;
}
private function onSoundCompleteHandler(_arg1:Event){
closeSoundChannel();
soundCh = sound.play();
soundCh.addEventListener(Event.SOUND_COMPLETE, onSoundCompleteHandler);
volume = _volume;
if (onComplete != null){
onComplete(this);
};
}
public function setOnComplete(_arg1:Function){
onComplete = _arg1;
}
public function get isLooped():Boolean{
return (_isLooped);
}
public function get isPaused():Boolean{
return (_isPaused);
}
public function set volume(_arg1:Number){
var _local2:SoundTransform = soundCh.soundTransform;
_local2.volume = _arg1;
soundCh.soundTransform = _local2;
_volume = _arg1;
}
public function setSound(_arg1:Sound){
sound = _arg1;
}
public function set isPaused(_arg1:Boolean){
if (!soundCh){
return;
};
if (_arg1){
resumePos = soundCh.position;
soundCh.stop();
} else {
if (_isPaused){
play(_isLooped, resumePos);
};
};
_isPaused = _arg1;
}
public static function emitSound(_arg1:Class, _arg2:Number=1){
if (_arg1 == null){
return;
};
var _local3:Sound = new (_arg1);
transform.volume = _arg2;
_local3.play(0, 0, transform);
}
}
}//package dreemchest
Section 23
//GameState (dreemchest.GameState)
package dreemchest {
import flash.events.*;
import flash.display.*;
public class GameState extends MovieClip {
protected var _isInitialized:Boolean;// = false
protected var _isActive:Boolean;// = false
protected function update(){
}
public function get isInitialized():Boolean{
return (_isInitialized);
}
public function get isActive():Boolean{
return (_isActive);
}
public function leave(){
if (parent){
parent.removeChild(this);
};
_isActive = false;
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
onLeave();
}
public function enter(_arg1:MovieClip){
_arg1.addChild(this);
_isActive = true;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
onEnter();
}
protected function onEnter(){
}
private function onEnterFrameHandler(_arg1:Event){
if (!_isActive){
return;
};
update();
}
public function processPacket(_arg1){
}
protected function onLeave(){
}
}
}//package dreemchest
Section 24
//Input (dreemchest.Input)
package dreemchest {
import flash.events.*;
import flash.display.*;
public class Input {
public static const _0 = 48;
public static const _2 = 50;
public static const _4 = 52;
public static const _5 = 53;
public static const _6 = 54;
public static const _7 = 55;
public static const _1 = 49;
public static const _9 = 57;
public static const _3 = 51;
public static const _8 = 56;
public static const A = 65;
public static const D = 68;
public static const E = 69;
public static const F = 70;
public static const G = 71;
public static const H = 72;
public static const I = 73;
public static const C = 67;
public static const K = 75;
public static const L = 76;
public static const M = 77;
public static const N = 78;
public static const O = 79;
public static const P = 80;
public static const J = 74;
public static const R = 82;
public static const S = 83;
public static const T = 84;
public static const U = 85;
public static const V = 86;
public static const W = 87;
public static const Q = 81;
public static const Y = 89;
public static const B = 66;
public static const X = 88;
public static const Z = 90;
private static var _isMouseDown:Boolean = false;
private static var keyDown:Array = new Array();
private static var keyPressed:Array = new Array();
private static var _mouseX:Number = 0;
private static var _mouseY:Number = 0;
public static function isKeyPressed(_arg1:Number):Boolean{
if (keyDown[_arg1]){
if (!keyPressed[_arg1]){
keyPressed[_arg1] = true;
return (true);
};
} else {
keyPressed[_arg1] = false;
};
return (false);
}
private static function onKeyUpHandler(_arg1:KeyboardEvent){
keyDown[_arg1.keyCode] = false;
}
public static function initialize(_arg1:Stage){
_arg1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
_arg1.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
_arg1.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
_arg1.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
_arg1.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);
}
private static function onMouseMoveHandler(_arg1:MouseEvent){
_mouseX = _arg1.stageX;
_mouseY = _arg1.stageY;
}
public static function isKeyDown(_arg1:Number):Boolean{
return (keyDown[_arg1]);
}
public static function get mouseY():Number{
return (_mouseY);
}
public static function get isMouseDown():Boolean{
return (_isMouseDown);
}
private static function onMouseDownHandler(_arg1:MouseEvent){
_isMouseDown = true;
}
public static function get mouseX():Number{
return (_mouseX);
}
private static function onMouseUpHandler(_arg1:MouseEvent){
_isMouseDown = false;
}
private static function onKeyDownHandler(_arg1:KeyboardEvent){
keyDown[_arg1.keyCode] = true;
}
}
}//package dreemchest
Section 25
//List (dreemchest.List)
package dreemchest {
public class List {
private var _size:int;// = 0
private var _tail:ListNode;// = null
private var _head:ListNode;// = null
public function List(){
_head = new ListNode(this);
_tail = new ListNode(this);
_head.next = _tail;
_tail.prev = _head;
}
public function get size():int{
return (_size);
}
private function insertAfter(_arg1, _arg2:ListNode):ListNode{
var _local3:ListNode = new ListNode(this, _arg1);
_local3.prev = _arg2;
_local3.next = _arg2.next;
_arg2.next = _local3;
_local3.next.prev = _local3;
_size++;
return (_local3);
}
public function remove(_arg1:ListNode):ListNode{
if (_arg1.list != this){
trace("ERROR! invalid node");
return (_tail);
};
var _local2:ListNode = _arg1.next;
_arg1.prev.next = _arg1.next;
_arg1.next.prev = _arg1.prev;
_arg1.data = null;
_arg1.list = null;
_size--;
return (_local2);
}
public function get begin():ListNode{
return (_head.next);
}
public function forEach(_arg1:Function){
var _local2:ListNode = _head.next;
while (_local2 != _tail) {
_arg1(_local2);
_local2 = _local2.next;
};
}
public function traceNodes(_arg1:ListNode){
while (_arg1.data != null) {
trace(_arg1.data);
_arg1 = _arg1.next;
};
}
public function sort(_arg1:Function=null):List{
var _local2:List = mergeSort(this, _arg1);
return (_local2);
}
public function traceListBack(){
var _local1:ListNode = _tail.prev;
trace("-- List values --");
while (_local1 != _head) {
trace(((((("Value: " + _local1.data) + " Prev. data: ") + ((_local1.prev)!=null) ? _local1.prev.data : "null") + " Next data: ") + ((_local1.next)!=null) ? _local1.next.data : "null"));
_local1 = _local1.prev;
};
trace("-----------------");
}
public function traceList(){
var _local1:ListNode = _head.next;
trace((("-- List values( " + size) + " total ) --"));
while (_local1 != _tail) {
trace(((((("Value: " + _local1.data) + " Prev. data: ") + ((_local1.prev)!=null) ? _local1.prev.data : "null") + " Next data: ") + ((_local1.next)!=null) ? _local1.next.data : "null"));
_local1 = _local1.next;
};
trace("-----------------");
}
public function attach(_arg1:ListNode, _arg2:ListNode=null){
if (_arg1.list != null){
_arg1.list.detach(_arg1);
};
if (_arg2 == null){
_arg2 = _tail.prev;
};
_arg1.list = this;
_arg1.prev = _arg2;
_arg1.next = _arg2.next;
_arg2.next = _arg1;
_arg1.next.prev = _arg1;
_size++;
}
private function mergeSort(_arg1:List, _arg2:Function):List{
var _local9:*;
if (_arg1.size <= 1){
return (_arg1);
};
var _local3:List = new List();
var _local4:List = new List();
var _local5:List;
var _local6:ListNode = _arg1.begin;
var _local7:uint;
var _local8:uint = (_arg1.size / 2);
while (_local7 < _local8) {
_local9 = _local6.next;
_local3.attach(_local6);
_local6 = _local9;
_local7++;
};
while (_local6 != _arg1._tail) {
_local9 = _local6.next;
_local4.attach(_local6);
_local6 = _local9;
};
_local3 = mergeSort(_local3, _arg2);
_local4 = mergeSort(_local4, _arg2);
_local5 = mergeLists(_local3, _local4, _arg2);
return (_local5);
}
public function insert(_arg1):ListNode{
return (insertAfter(_arg1, _tail.prev));
}
public function detach(_arg1:ListNode){
_arg1.prev.next = _arg1.next;
_arg1.next.prev = _arg1.prev;
_arg1.list = null;
_size--;
}
public function get end():ListNode{
return (_tail);
}
private function mergeLists(_arg1:List, _arg2:List, _arg3:Function):List{
var _local5:int;
var _local4:List = new List();
if (_arg3 == null){
while ((((_arg1.size > 0)) && ((_arg2.size > 0)))) {
if (_arg1.begin.data <= _arg2.begin.data){
_local4.attach(_arg1.begin);
} else {
_local4.attach(_arg2.begin);
};
};
} else {
while ((((_arg1.size > 0)) && ((_arg2.size > 0)))) {
_local5 = _arg3(_arg1.begin.data, _arg2.begin.data);
if ((((_local5 == -1)) || ((_local5 == 0)))){
_local4.attach(_arg1.begin);
} else {
_local4.attach(_arg2.begin);
};
};
};
while (_arg1.size > 0) {
_local4.attach(_arg1.begin);
};
while (_arg2.size > 0) {
_local4.attach(_arg2.begin);
};
return (_local4);
}
}
}//package dreemchest
Section 26
//ListNode (dreemchest.ListNode)
package dreemchest {
public class ListNode {
public var data;// = null
public var next:ListNode;// = null
public var prev:ListNode;// = null
public var list:List;// = null
public function ListNode(_arg1:List, _arg2=null){
list = _arg1;
data = _arg2;
}
}
}//package dreemchest
Section 27
//Preloader (dreemchest.Preloader)
package dreemchest {
import flash.events.*;
import flash.display.*;
import SWFStats.*;
import CPMStar.*;
import flash.net.*;
public class Preloader extends MovieClip {
public var ad:DisplayObject;
public var CPMStarSubPoolID:int;
public var CPMStarPoolID:int;
private var target:MovieClip;// = null
public var bar:MovieClip;
public var cpmStar:MovieClip;
public static const DONE:String = "Done";
public function Preloader(){
addFrameScript(0, frame1, 280, frame281, 281, frame282);
}
function frame1(){
CPMStarPoolID = 17171;
CPMStarSubPoolID = 1;
ad = AdLoader.LoadAd(CPMStarPoolID, CPMStarSubPoolID);
cpmStar.addChild(ad);
}
private function done(){
dispatchEvent(new Event(DONE));
if (this.parent == target){
target.removeChild(this);
target.play();
};
}
public function initialize(_arg1:MovieClip){
target = _arg1;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
stop();
}
private function onEnterFrameHandler(_arg1:Event){
bar.filler.scaleX = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal);
bar.caption.text = (int((bar.filler.scaleX * 100)) + "%");
if (bar.filler.scaleX >= 1){
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
play();
};
}
function frame281(){
stop();
}
function frame282(){
done();
}
public static function put(_arg1:MovieClip){
var _local2:Preloader = new (Preloader);
_local2.initialize(_arg1);
_arg1.stop();
_arg1.addChild(_local2);
}
}
}//package dreemchest
Section 28
//RenderSurface (dreemchest.RenderSurface)
package dreemchest {
import flash.display.*;
import flash.geom.*;
public class RenderSurface extends MovieClip {
private var tr:Matrix;
private var bitmap:Bitmap;// = null
private var ct:ColorTransform;
private var _bitmapData:BitmapData;// = null
public function RenderSurface(){
tr = new Matrix();
ct = new ColorTransform();
super();
}
public function unlock(){
_bitmapData.unlock();
}
public function renderClip(_arg1:MovieClip){
tr.identity();
tr.rotate(_arg1.rotation);
tr.scale(_arg1.scaleX, _arg1.scaleY);
tr.translate(_arg1.x, _arg1.y);
ct.redMultiplier = 1;
ct.greenMultiplier = 1;
ct.blueMultiplier = 1;
ct.alphaMultiplier = _arg1.alpha;
_bitmapData.draw(_arg1, tr, ct);
}
public function get bd():BitmapData{
return (_bitmapData);
}
public function lock(){
_bitmapData.lock();
}
public function renderBitmap(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
var _local7:Number = ((_arg1.rect.width * 0.5) * _arg5);
var _local8:Number = ((_arg1.rect.height * 0.5) * _arg5);
tr.identity();
tr.scale(_arg5, _arg5);
tr.translate(-(_local7), -(_local8));
tr.rotate(Common.deg2Rad(_arg4));
tr.translate(_arg2, _arg3);
ct.redMultiplier = 1;
ct.greenMultiplier = 1;
ct.blueMultiplier = 1;
ct.alphaMultiplier = _arg6;
_bitmapData.draw(_arg1, tr, ct);
}
public function clear(_arg1:Number){
_bitmapData.fillRect(_bitmapData.rect, _arg1);
}
public function create(_arg1:MovieClip, _arg2:Number, _arg3:Number){
_bitmapData = new BitmapData(_arg2, _arg3, true, 0);
bitmap = new Bitmap(_bitmapData);
addChild(bitmap);
if (_arg1){
_arg1.addChild(this);
};
}
}
}//package dreemchest
Section 29
//Vector (dreemchest.Vector)
package dreemchest {
public class Vector {
public var x:Number;
public var y:Number;
public function Vector(_arg1:Number=0, _arg2:Number=0){
x = _arg1;
y = _arg2;
}
public function add(_arg1:Vector){
x = (x + _arg1.x);
y = (y + _arg1.y);
}
public function mul(_arg1:Number){
x = (x * _arg1);
y = (y * _arg1);
}
public function addF(_arg1:Number, _arg2:Number){
x = (x + _arg1);
y = (y + _arg2);
}
public function length():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function dirTo(_arg1:Number, _arg2:Number):Number{
x = (_arg1 - x);
y = (_arg2 - y);
return (normalize());
}
public function dot(_arg1:Vector):Number{
return (((x * _arg1.x) + (y * _arg1.y)));
}
public function normalize():Number{
var _local1:* = Math.sqrt(((x * x) + (y * y)));
if (_local1){
x = (x / _local1);
y = (y / _local1);
};
return (_local1);
}
public function equal(_arg1:Vector):Boolean{
return ((((x == _arg1.x)) && ((y == _arg1.y))));
}
public function subtract(_arg1:Vector){
x = (x - _arg1.x);
y = (y - _arg1.y);
}
public function setTo(_arg1:Number, _arg2:Number){
x = _arg1;
y = _arg2;
}
public static function angle(_arg1:Vector, _arg2:Vector):Number{
return (((Math.acos(_arg1.dot(_arg2)) * 180) / Math.PI));
}
public static function distance(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number = (_arg3 - _arg1);
var _local6:Number = (_arg4 - _arg2);
return (Math.sqrt(((_local5 * _local5) + (_local6 * _local6))));
}
public static function lerp(_arg1:Vector, _arg2:Vector, _arg3:Number):Vector{
return (new Vector(((_arg1.x * (1 - _arg3)) + (_arg2.x * _arg3)), ((_arg1.y * (1 - _arg3)) + (_arg2.y * _arg3))));
}
public static function fromAngle(_arg1:Number):Vector{
var _local2:Number = ((_arg1 / 180) * Math.PI);
return (new Vector(Math.cos(_local2), Math.sin(_local2)));
}
public static function randomDir():Vector{
var _local1:Number = (((Math.random() * 360) / 180) * Math.PI);
var _local2:Vector = new (Vector);
_local2.x = Math.sin(_local1);
_local2.y = Math.cos(_local1);
return (_local2);
}
public static function direction(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Vector{
var _local5:Number = (_arg3 - _arg1);
var _local6:Number = (_arg4 - _arg2);
var _local7:Vector = new Vector(_local5, _local6);
_local7.normalize();
return (_local7);
}
}
}//package dreemchest
Section 30
//DoubleMinigun (game.abilities.DoubleMinigun)
package game.abilities {
import dreemchest.*;
import game.*;
public class DoubleMinigun extends Minigun {
public function DoubleMinigun(_arg1:Config, _arg2:Player){
super(_arg1, _arg2, 0);
rateOfFire = 5;
_level = "2";
}
override protected function shot(_arg1:Number, _arg2:Number, _arg3:Vector){
spawnBullet(_arg1, _arg2, _arg3, 0.5, Resources.class_MinigunHit, 500);
spawnBullet(_arg1, _arg2, _arg3, -0.5, Resources.class_MinigunHit, 500);
}
}
}//package game.abilities
Section 31
//EnergyRegen (game.abilities.EnergyRegen)
package game.abilities {
import game.*;
public class EnergyRegen extends Ability {
protected var regenSpeed:Number;// = 1.5
public function EnergyRegen(_arg1:Player){
super(_arg1);
upgrade();
_cost = 0;
}
override public function update(_arg1:Number, _arg2:Number, _arg3:Number){
super.update(_arg1, _arg2, _arg3);
if (player.energy < player.maxEnergy){
player.energy = Math.min(player.maxEnergy, (player.energy + (regenSpeed * _arg3)));
};
}
}
}//package game.abilities
Section 32
//Explode (game.abilities.Explode)
package game.abilities {
import dreemchest.*;
import game.*;
public class Explode extends Ability {
private var range:Number;// = 0
private var damage:Number;// = 0
public function Explode(_arg1:Config, _arg2:Player, _arg3:int){
super(_arg2);
upgrade();
damage = _arg1.ExplodeDamage[_arg3];
range = _arg1.ExplodeRange[_arg3];
_cost = _arg1.ExplodeCost[_arg3];
maxCooldown = _arg1.ExplodeCdwn[_arg3];
}
override public function activate(_arg1:Number, _arg2:Number){
var _local5:Enemy;
var _local6:Number;
super.activate(_arg1, _arg2);
GameScreen.instance.spawnFx(Resources.class_ExplosionBlast, _arg1, _arg2);
GameScreen.instance.setShake(4);
GameSound.emitSound(Resources.sound_Bomb, 3);
var _local3:GameScreen = GameScreen.instance;
var _local4:int;
while (_local4 < _local3.totalMonsters) {
_local5 = _local3.getEnemy(_local4);
_local6 = Vector.distance(_arg1, _arg2, _local5.x, _local5.y);
if (_local6 < range){
_local5.hit((damage * (1 - (_local6 / (range * 2)))), false);
_local3.spawnFx(Resources.class_MinigunHit, _local5.x, _local5.y);
};
_local4++;
};
}
}
}//package game.abilities
Section 33
//Minigun (game.abilities.Minigun)
package game.abilities {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.utils.*;
public class Minigun extends Ability {
private var lastRateOfFire:Number;// = 0
private var powerUpTimer:Timer;
protected var rateOfFire:Number;// = 10
protected var damage:Number;// = 8
private var bulletType:int;
private var lastShotTime:int;// = -1
public function Minigun(_arg1:Config, _arg2:Player, _arg3:int){
powerUpTimer = new Timer(5000);
bulletType = Bullet.Green;
super(_arg2);
powerUpTimer.addEventListener(TimerEvent.TIMER, onPowerUpTimer);
_cost = 0;
setDamage(_arg3);
}
override public function activate(_arg1:Number, _arg2:Number){
super.activate(_arg1, _arg2);
var _local3:Number = 3;
if (lastRateOfFire == 0){
lastRateOfFire = rateOfFire;
rateOfFire = (rateOfFire * _local3);
powerUpTimer.start();
GameSound.emitSound((getDefinitionByName("SoundPowerUp") as Class), 2);
};
}
protected function spawnBullet(_arg1:Number, _arg2:Number, _arg3:Vector, _arg4:Number, _arg5:Class, _arg6:Number){
var _local7:Vector = new Vector(_arg3.y, -(_arg3.x));
var _local8:Vector = new Vector(_arg1, _arg2);
_local8.dirTo(((_arg1 + (_local7.x * _arg4)) + (_arg3.x * 10)), ((_arg2 + (_local7.y * _arg4)) + (_arg3.y * 10)));
GameScreen.instance.spawnBullet(_arg1, _arg2, _local8, bulletType, _arg5, damage, _arg6, false);
}
private function onPowerUpTimer(_arg1:TimerEvent){
rateOfFire = lastRateOfFire;
lastRateOfFire = 0;
powerUpTimer.stop();
player.resetPowerUpScore();
}
override public function update(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:Number = getTimer();
var _local5:int = Math.floor((((_local4 - lastShotTime) * rateOfFire) * 0.001));
if (player.isKilled){
return;
};
if (lastShotTime == -1){
lastShotTime = _local4;
return;
};
if (_local5 <= 0){
return (0);
};
lastShotTime = _local4;
var _local6:* = 0;
while (_local6 < _local5) {
shot(_arg1, _arg2, player.direction);
_local6++;
};
emitSound();
if (player.powerUpScore > 250){
activate(_arg1, _arg2);
};
}
protected function emitSound(){
}
public function setDamage(_arg1:int){
switch (_arg1){
case 1:
setBulletType(Bullet.Blue);
break;
case 2:
setBulletType(Bullet.Red);
break;
};
}
protected function shot(_arg1:Number, _arg2:Number, _arg3:Vector){
spawnBullet(_arg1, _arg2, _arg3, -0.5, Resources.class_MinigunHit, 500);
}
private function setBulletType(_arg1:int){
bulletType = _arg1;
switch (bulletType){
case Bullet.Green:
damage = 8;
break;
case Bullet.Blue:
damage = 14;
break;
case Bullet.Red:
damage = 20;
break;
default:
bulletType = Bullet.Green;
damage = 8;
break;
};
}
}
}//package game.abilities
Section 34
//Missiles (game.abilities.Missiles)
package game.abilities {
import dreemchest.*;
import game.*;
import flash.utils.*;
public class Missiles extends Ability {
private var lastShotTime:int;// = 0
private var count:int;// = 0
private var left:int;// = 0
private var damage:Number;// = 0
public function Missiles(_arg1:Config, _arg2:Player, _arg3:int){
super(_arg2);
upgrade();
damage = _arg1.MissilesDamage[_arg3];
count = _arg1.MissilesCount[_arg3];
_cost = _arg1.MissilesCost[_arg3];
maxCooldown = _arg1.MissilesCdwn[_arg3];
}
override public function activate(_arg1:Number, _arg2:Number){
super.activate(_arg1, _arg2);
left = count;
lastShotTime = getTimer();
}
override public function update(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:int;
var _local5:Vector;
super.update(_arg1, _arg2, _arg3);
if (left){
_local4 = getTimer();
if ((_local4 - lastShotTime) >= 100){
_local5 = new Vector((player.direction.x + ((Math.random() - 0.5) * 0.75)), (player.direction.y + ((Math.random() - 0.5) * 0.75)));
_local5.normalize();
GameSound.emitSound(Resources.sound_Rampage, 1);
GameScreen.instance.spawnBullet(_arg1, _arg2, _local5, Bullet.SMissile, Resources.class_FlameshotHit, damage, 600, false);
lastShotTime = _local4;
left--;
};
};
}
public function setCount(_arg1:int){
count = _arg1;
}
}
}//package game.abilities
Section 35
//MissileStorm (game.abilities.MissileStorm)
package game.abilities {
import dreemchest.*;
import game.*;
import flash.utils.*;
public class MissileStorm extends Ability {
private var damage:Number;// = 0
private var maxMissiles:Number;// = 0
private var count:int;// = 0
private var shotAngle:Number;// = 0
private var lastShotTime:int;// = 0
public function MissileStorm(_arg1:Config, _arg2:Player, _arg3:int){
super(_arg2);
damage = _arg1.StormDamage[_arg3];
maxMissiles = _arg1.StormCount[_arg3];
_cost = _arg1.StormCost[_arg3];
maxCooldown = _arg1.StormCdwn[_arg3];
}
override public function update(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:int;
var _local5:int;
super.update(_arg1, _arg2, _arg3);
if (count){
_local4 = getTimer();
if ((_local4 - lastShotTime) > 150){
lastShotTime = _local4;
_local5 = 0;
while (_local5 < 3) {
shot(_arg1, _arg2);
_local5++;
};
};
};
}
override public function activate(_arg1:Number, _arg2:Number){
super.activate(_arg1, _arg2);
lastShotTime = getTimer();
count = maxMissiles;
}
private function shot(_arg1:Number, _arg2:Number){
if (!count){
return;
};
GameSound.emitSound(Resources.sound_Missile);
var _local3:Bullet = GameScreen.instance.spawnBulletCls(_arg1, _arg2, Vector.fromAngle(shotAngle), BulletSeekingMissile, Resources.class_FlameshotHit, damage, 300, false);
_local3.gotoAndStop(11);
shotAngle = (shotAngle + (360 / count));
count--;
}
}
}//package game.abilities
Section 36
//Rampage (game.abilities.Rampage)
package game.abilities {
import dreemchest.*;
import game.*;
public class Rampage extends Ability {
private var count:int;// = 0
public function Rampage(_arg1:Player, _arg2:int){
super(_arg1);
count = _arg2;
_cost = 0;
}
override public function activate(_arg1:Number, _arg2:Number){
GameSound.emitSound(Resources.sound_Rampage, 2);
var _local3:Number = 0;
var _local4:Vector = new Vector();
var _local5:Number = (360 / count);
var _local6:int;
while (_local6 < count) {
_local4.x = Math.sin(_local3);
_local4.y = Math.cos(_local3);
GameScreen.instance.spawnBullet(_arg1, _arg2, _local4, Bullet.Rampage, Resources.class_FlameshotHit, 10, 600, false);
_local3 = (_local3 + _local5);
_local6++;
};
}
}
}//package game.abilities
Section 37
//Regen (game.abilities.Regen)
package game.abilities {
import dreemchest.*;
import game.*;
public class Regen extends Ability {
protected var regenSpeed:Number;// = 0
public function Regen(_arg1:Config, _arg2:Player, _arg3:int){
super(_arg2);
upgrade();
_cost = 0;
regenSpeed = _arg1.RegenSpeed[_arg3];
}
override public function update(_arg1:Number, _arg2:Number, _arg3:Number){
super.update(_arg1, _arg2, _arg3);
if (player.health < player.maxHealth){
player.health = Math.min(player.maxHealth, (player.health + (regenSpeed * _arg3)));
};
}
}
}//package game.abilities
Section 38
//SeekingMissiles (game.abilities.SeekingMissiles)
package game.abilities {
import dreemchest.*;
import game.*;
public class SeekingMissiles extends Ability {
private var count:int;// = 0
private var damage:Number;// = 0
public function SeekingMissiles(_arg1:Config, _arg2:Player, _arg3:int){
super(_arg2);
upgrade();
damage = _arg1.SMissilesDamage[_arg3];
count = _arg1.SMissilesCount[_arg3];
_cost = _arg1.SMissilesCost[_arg3];
maxCooldown = _arg1.SMissilesCdwn[_arg3];
}
override public function activate(_arg1:Number, _arg2:Number){
super.activate(_arg1, _arg2);
GameSound.emitSound(Resources.sound_Rampage, 2);
var _local3:Number = 0;
var _local4:Vector = new Vector();
var _local5:Number = (360 / count);
var _local6:int;
while (_local6 < count) {
_local4.x = Math.sin(_local3);
_local4.y = Math.cos(_local3);
GameScreen.instance.spawnBulletCls(_arg1, _arg2, _local4, BulletSeekingMissile, Resources.class_FlameshotHit, damage, 300, false);
_local3 = (_local3 + _local5);
_local6++;
};
}
public function setCount(_arg1:int){
count = _arg1;
}
}
}//package game.abilities
Section 39
//Shield (game.abilities.Shield)
package game.abilities {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.utils.*;
public class Shield extends Ability {
private var timer:Timer;
public function Shield(_arg1:Config, _arg2:Player, _arg3:int){
timer = new Timer(5000);
super(_arg2);
_cost = _arg1.ShieldCost[_arg3];
maxCooldown = _arg1.ShieldCdwn[_arg3];
timer.delay = _arg1.ShieldDuration[_arg3];
timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
}
override public function activate(_arg1:Number, _arg2:Number){
super.activate(_arg1, _arg2);
timer.start();
player.setInv(true);
}
private function onTimerHandler(_arg1:TimerEvent){
timer.stop();
player.setInv(false);
}
}
}//package game.abilities
Section 40
//TripleMinigun (game.abilities.TripleMinigun)
package game.abilities {
import dreemchest.*;
import game.*;
public class TripleMinigun extends Minigun {
public function TripleMinigun(_arg1:Config, _arg2:Player){
super(_arg1, _arg2, 0);
rateOfFire = 5;
_level = "3";
}
override protected function shot(_arg1:Number, _arg2:Number, _arg3:Vector){
spawnBullet(_arg1, _arg2, _arg3, 0.75, Resources.class_MinigunHit, 400);
spawnBullet(_arg1, _arg2, _arg3, 0, Resources.class_MinigunHit, 500);
spawnBullet(_arg1, _arg2, _arg3, -0.75, Resources.class_MinigunHit, 400);
}
}
}//package game.abilities
Section 41
//Turret (game.abilities.Turret)
package game.abilities {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Turret extends MovieClip {
private var node:ListNode;// = null
private var timer:Timer;
private var damage:Number;// = 0
private var shotAngle:Number;// = 0
private var lastShotTime:int;// = 0
public static const EXPIRED:String = "Expired";
public function Turret(){
timer = new Timer(5000);
super();
}
public function release(){
parent.removeChild(this);
timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
timer.stop();
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
private function onTimerHandler(_arg1:TimerEvent){
release();
dispatchEvent(new Event(EXPIRED));
if (((node) && (node.list))){
node.list.remove(node);
};
}
private function onEnterFrameHandler(_arg1:Event){
var _local2:int = getTimer();
if ((_local2 - lastShotTime) > 75){
lastShotTime = _local2;
GameScreen.instance.spawnBullet(x, y, Vector.fromAngle(shotAngle), 2, Resources.class_MinigunHit, damage, 300, false);
};
shotAngle = (shotAngle + (75 * FPSCounter.k_FrameTime));
}
public function spawn(_arg1:ListNode, _arg2:Number, _arg3:Number, _arg4:Number){
node = _arg1;
x = _arg2;
y = _arg3;
damage = _arg4;
timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
timer.start();
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
}
}//package game.abilities
Section 42
//TurretAbility (game.abilities.TurretAbility)
package game.abilities {
import dreemchest.*;
import game.*;
import flash.events.*;
public class TurretAbility extends Ability {
private var turrets:List;
private var damage:Number;// = 0
public function TurretAbility(_arg1:Config, _arg2:Player, _arg3:int){
turrets = new List();
super(_arg2);
damage = _arg1.TurretDamage[_arg3];
_cost = _arg1.TurretCost[_arg3];
maxCooldown = _arg1.TurretCdwn[_arg3];
}
override public function activate(_arg1:Number, _arg2:Number){
super.activate(_arg1, _arg2);
var _local3:Turret = new Turret();
_local3.spawn(turrets.insert(_local3), _arg1, _arg2, damage);
_local3.addEventListener(Turret.EXPIRED, onExpiredHandler);
GameScreen.instance.background.addChild(_local3);
}
private function onExpiredHandler(_arg1:Event){
trace("turret expired");
}
override public function release(){
trace("Destroying turrets");
var _local1:ListNode = turrets.begin;
while (_local1 != turrets.end) {
(_local1.data as Turret).release();
_local1 = turrets.remove(_local1);
};
}
}
}//package game.abilities
Section 43
//BossBase (game.boss.BossBase)
package game.boss {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class BossBase extends MovieClip {
public var eyeBig:MovieClip;
public var eyeA:MovieClip;
public var eyeB:MovieClip;
public var eye:MovieClip;
private var _health:Number;// = 500
public static const DESTROYED:String = "Destroyed";
public function setHealth(_arg1:Number){
_health = _arg1;
}
public function checkCollision(_arg1:Point):Boolean{
if (destroyed){
return (false);
};
return (getRect(GameScreen.instance.background).containsPoint(_arg1));
}
public function get destroyed():Boolean{
return ((_health <= 0));
}
public function hit(_arg1:Bullet){
play();
_health = (_health - _arg1.damage);
GameSound.emitSound(Resources.sound_BossHit);
GameScreen.instance.spawnDebris(Resources.class_DebrisMedium, _arg1.x, _arg1.y, 5);
if (_health <= 0){
GameScreen.instance.spawnFx(Resources.class_ExplosionBlastS, _arg1.x, _arg1.y);
dispatchEvent(new Event(DESTROYED));
};
}
}
}//package game.boss
Section 44
//BossPart (game.boss.BossPart)
package game.boss {
import dreemchest.*;
import game.*;
import flash.display.*;
import flash.geom.*;
public class BossPart extends MovieClip {
public var throat:MovieClip;
private var _health:Number;// = 500
public function update(_arg1:int){
}
public function checkCollision(_arg1:Point):Boolean{
if (destroyed){
return (false);
};
return (getRect(GameScreen.instance.background).containsPoint(_arg1));
}
public function get isVulnerable():Boolean{
return ((((width <= 0)) || ((height <= 0))));
}
public function get destroyed():Boolean{
return ((_health <= 0));
}
public function hit(_arg1:Bullet){
play();
_health = (_health - _arg1.damage);
GameSound.emitSound(Resources.sound_BossHit);
GameScreen.instance.spawnDebris(Resources.class_DebrisMedium, _arg1.x, _arg1.y, 5);
if (_health <= 0){
GameScreen.instance.spawnDebris(Resources.class_DebrisMedium, _arg1.x, _arg1.y, 5);
GameScreen.instance.spawnFx(Resources.class_ExplosionBlastS, _arg1.x, _arg1.y);
GameSound.emitSound(Resources.sound_Explosion);
gotoAndStop("Destroyed");
};
}
public function setHealth(_arg1:Number){
_health = _arg1;
}
}
}//package game.boss
Section 45
//MinionSpawner (game.boss.MinionSpawner)
package game.boss {
import game.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
public class MinionSpawner extends BossPart {
private var spawnPos:Point;
private var minionClass:String;// = "Cockroach"
private var minionTimer:Timer;
private var lastSpawnTime:int;// = 0
private var spawned:int;// = 0
public function MinionSpawner(){
minionTimer = new Timer(10000);
spawnPos = new Point(0, 0);
super();
lastSpawnTime = getTimer();
minionTimer.addEventListener(TimerEvent.TIMER, function (_arg1:TimerEvent){
spawned = 0;
});
minionTimer.start();
}
override public function update(_arg1:int){
var _local2:Point;
if (destroyed){
return;
};
if (((((_arg1 - lastSpawnTime) > 100)) && ((spawned < 10)))){
_local2 = localToGlobal(spawnPos);
spawnMinion((parent.x - x), (parent.y + y));
lastSpawnTime = _arg1;
spawned++;
};
}
private function spawnMinion(_arg1:Number, _arg2:Number){
if (!GameScreen.instance.canSpawnMonster()){
return;
};
GameScreen.instance.level.onEnemySpawn("");
var _local3:Enemy = GameScreen.instance.spawnEnemy(minionClass);
_local3.x = _arg1;
_local3.y = _arg2;
}
public function setClass(_arg1:String){
minionClass = _arg1;
}
}
}//package game.boss
Section 46
//RampageShooter (game.boss.RampageShooter)
package game.boss {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
public class RampageShooter extends BossPart {
private var spawnPos:Point;
private var shootTimer:Timer;
private var damage:Number;// = 3
private var timesShoot:int;// = 0
private var bulletType:int;// = 0
private var lastShotTime:int;// = 0
public function RampageShooter(){
spawnPos = new Point(0, 0);
shootTimer = new Timer(10000);
super();
lastShotTime = (getTimer() + 1000);
shootTimer.addEventListener(TimerEvent.TIMER, function (_arg1:TimerEvent){
timesShoot = 0;
});
shootTimer.start();
}
override public function update(_arg1:int){
var _local2:Point;
if (destroyed){
return;
};
if (((((_arg1 - lastShotTime) > 500)) && ((timesShoot < 5)))){
_local2 = localToGlobal(spawnPos);
fire((parent.x - x), (parent.y + y));
lastShotTime = _arg1;
timesShoot++;
};
}
private function fire(_arg1:Number, _arg2:Number){
var _local5:Vector;
var _local3 = 15;
var _local4:Number = (360 / _local3);
_local5 = new Vector();
var _local6:Number = (Math.random() * 50);
var _local7:int;
while (_local7 < _local3) {
_local5.x = Math.sin(((_local7 * _local4) + _local6));
_local5.y = Math.cos(((_local7 * _local4) + _local6));
GameScreen.instance.spawnBullet(_arg1, _arg2, _local5, bulletType, null, damage, 250, true);
_local7++;
};
GameSound.emitSound(Resources.sound_Rampage);
}
}
}//package game.boss
Section 47
//VerticalShooter (game.boss.VerticalShooter)
package game.boss {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
public class VerticalShooter extends BossPart {
private var shootTimer:Timer;
private var timesShoot:int;// = 0
private var lastShotTime:int;// = 0
public function VerticalShooter(){
shootTimer = new Timer(10000);
super();
lastShotTime = (getTimer() + 1000);
shootTimer.addEventListener(TimerEvent.TIMER, function (_arg1:TimerEvent){
timesShoot = 0;
});
shootTimer.start();
}
override public function update(_arg1:int){
var _local2:Point;
if (destroyed){
return;
};
if (((((_arg1 - lastShotTime) > 200)) && ((timesShoot < 15)))){
_local2 = localToGlobal(new Point(0, 0));
fire((parent.x - x), (parent.y + y));
lastShotTime = _arg1;
timesShoot++;
};
}
private function fire(_arg1:Number, _arg2:Number){
var _local3 = 15;
var _local4:Number = (360 / _local3);
var _local5:Vector = new Vector(0, 1);
var _local6:Number = (Math.random() * 50);
GameScreen.instance.spawnBullet(_arg1, _arg2, _local5, 0, null, 1, 250, true);
GameSound.emitSound(Resources.sound_Rampage);
}
}
}//package game.boss
Section 48
//Assault (game.enemy.Assault)
package game.enemy {
import dreemchest.*;
import game.*;
public class Assault extends Enemy {
public function Assault(){
gotoAndStop(3);
_maxHealth = 60;
speed = 150;
drop = (PowerUp.MONEY_250 | PowerUp.MONEY_500);
dropMoneyCount = 3;
explodeDamage = 30;
}
override public function update(){
var _local1:Vector = GameScreen.instance.getPlayerPos();
var _local2:Vector = new Vector(x, y);
_local2.dirTo(_local1.x, _local1.y);
_local2.normalize();
if (Math.abs((_local2.x - dir.x)) > 0.001){
dir.x = (dir.x + ((_local2.x - dir.x) * turnRate));
};
if (Math.abs((_local2.y - dir.y)) > 0.001){
dir.y = (dir.y + ((_local2.y - dir.y) * turnRate));
};
if (Math.random() < 0.01){
velocity.y = (Math.random() * 0.5);
velocity.x = (Math.random() * 0.5);
};
turnRate = 0.02;
dir.normalize();
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
fire();
super.update();
}
private function fire(){
var _local1:Number = 0.025;
if (Math.random() < _local1){
shoot(x, y, 0, 5, 250);
};
}
}
}//package game.enemy
Section 49
//Battleship (game.enemy.Battleship)
package game.enemy {
import dreemchest.*;
import game.*;
import flash.display.*;
public class Battleship extends Enemy {
public var turretLeft:MovieClip;
private var nextDir:Vector;
public var turretRight:MovieClip;
public function Battleship(){
nextDir = new Vector();
super();
gotoAndStop(1);
_maxHealth = 250;
speed = 50;
drop = (((PowerUp.MONEY_50 | PowerUp.MONEY_250) | PowerUp.MONEY_500) | PowerUp.MONEY_1000);
dropMoneyCount = 4;
maxCrystals = 3;
armor = 0.25;
explodeDamage = 75;
}
private function fire(){
var _local1:Number = 0.005;
if (Math.random() < _local1){
shoot((x + turretLeft.x), (y + turretLeft.x), 0, 10, 200);
shoot((x + turretRight.x), (y + turretRight.x), 0, 10, 200);
};
}
override public function update(){
if (Math.random() < 0.002){
nextDir.x = (Math.random() - 0.5);
nextDir.y = (Math.random() - 0.5);
nextDir.normalize();
};
dir.x = (dir.x + ((nextDir.x - dir.x) * turnRate));
dir.y = (dir.y + ((nextDir.y - dir.y) * turnRate));
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
fire();
var _local1:Vector = GameScreen.instance.getPlayerPos();
var _local2:Vector = new Vector(x, y);
_local2.dirTo(_local1.x, _local1.y);
turretLeft.rotation = (((-180 * Math.atan2(-(_local2.x), -(_local2.y))) / Math.PI) - rotation);
turretRight.rotation = (((-180 * Math.atan2(-(_local2.x), -(_local2.y))) / Math.PI) - rotation);
if (health < 150){
if (currentFrame == 1){
spawnExplosion(x, y, 10, 40);
GameScreen.instance.spawnDebris(Resources.class_DebrisMedium, x, y, 10);
};
gotoAndStop(2);
};
if (health < 100){
if (turretLeft.visible){
spawnExplosion((x + turretLeft.x), (y + turretLeft.y), 1, 0);
spawnExplosion((x + turretRight.x), (y + turretRight.y), 1, 0);
GameScreen.instance.spawnDebris(Resources.class_DebrisMedium, x, y, 10);
};
turretLeft.visible = false;
turretRight.visible = false;
};
super.update();
}
}
}//package game.enemy
Section 50
//Blind (game.enemy.Blind)
package game.enemy {
import dreemchest.*;
import game.*;
import flash.utils.*;
public class Blind extends Enemy {
private var lastTime:Number;// = 0
private var accel:Vector;
private var nextDir:Vector;
private var delta:Number;// = 2000
public function Blind(){
nextDir = new Vector();
accel = new Vector();
super();
gotoAndStop(2);
_maxHealth = 20;
speed = 100;
turnRate = 0.005;
drop = (PowerUp.MONEY_50 | PowerUp.MONEY_250);
dropMoneyCount = 2;
}
override public function update(){
if ((getTimer() - lastTime) > delta){
nextDir.x = (Math.random() - 0.5);
nextDir.y = (Math.random() - 0.5);
nextDir.normalize();
lastTime = getTimer();
delta = ((Math.random() * 1000) + 2000);
};
var _local1:Vector = GameScreen.instance.getDirToPlayer(x, y);
if (Math.abs((_local1.x - dir.x)) > 0.001){
dir.x = (dir.x + ((_local1.x - dir.x) * turnRate));
};
if (Math.abs((_local1.y - dir.y)) > 0.001){
dir.y = (dir.y + ((_local1.y - dir.y) * turnRate));
};
dir.x = (dir.x + ((nextDir.x - dir.x) * turnRate));
dir.y = (dir.y + ((nextDir.y - dir.y) * turnRate));
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
super.update();
}
override public function render(_arg1:RenderSurface){
}
}
}//package game.enemy
Section 51
//Bomb (game.enemy.Bomb)
package game.enemy {
import dreemchest.*;
import game.*;
import flash.utils.*;
public class Bomb extends Enemy {
private var nextDir:Vector;
private var lastTime:Number;// = 0
private var accel:Vector;
private var target:Vector;// = null
private var angle:Number;// = 0
private var delta:Number;// = 2000
private var angleDir:Number;// = 1
protected var range:Number;// = 100
public function Bomb(){
nextDir = new Vector();
accel = new Vector();
super();
gotoAndStop(2);
_maxHealth = 20;
speed = 25;
turnRate = 0.01;
drop = (PowerUp.MONEY_50 | PowerUp.MONEY_250);
dropMoneyCount = 2;
explodeDamage = 20;
sound_Explosion = Resources.sound_Bomb;
class_Explosion = Resources.class_ExplosionBlastS;
}
override public function update(){
var _local1:Vector;
var _local2:Vector;
if ((getTimer() - lastTime) > delta){
angleDir = ((Math.random())<0.5) ? -1 : 1;
lastTime = getTimer();
delta = ((Math.random() * 1000) + 2000);
};
if (!target){
angle = (angle + (angleDir * 0.01));
dir.x = Math.sin(angle);
dir.y = Math.cos(angle);
_local1 = GameScreen.instance.getDirToPlayer(x, y);
if (Math.abs((_local1.x - dir.x)) > 0.001){
dir.x = (dir.x + ((_local1.x - dir.x) * turnRate));
};
if (Math.abs((_local1.y - dir.y)) > 0.001){
dir.y = (dir.y + ((_local1.y - dir.y) * turnRate));
};
};
if (((!(target)) && ((GameScreen.instance.getDistanceToPlayer(x, y) < range)))){
lockTarget(GameScreen.instance.getPlayerPos());
};
if (target){
_local2 = Vector.direction(x, y, target.x, target.y);
if (_local2.dot(dir) < 0){
explode(explodeDamage, range);
};
rotation = (rotation + 10);
} else {
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
};
super.update();
}
private function lockTarget(_arg1:Vector){
GameSound.emitSound(Resources.sound_Detector, 2);
speed = 250;
target = _arg1;
dir.x = (target.x - x);
dir.y = (target.y - y);
dir.normalize();
}
}
}//package game.enemy
Section 52
//BombBlue (game.enemy.BombBlue)
package game.enemy {
import dreemchest.*;
import game.*;
public class BombBlue extends Bomb {
public function BombBlue(){
gotoAndStop(8);
range = 150;
explodeDamage = 15;
}
override protected function explode(_arg1:Number, _arg2:Number){
var _local4:Vector;
super.explode(_arg1, _arg2);
var _local3:int;
while (_local3 < 5) {
_local4 = new Vector((Math.random() - 0.5), (Math.random() - 0.5));
_local4.normalize();
GameScreen.instance.spawnBullet(x, y, _local4, 0, null, 5, 300, true);
_local3++;
};
}
}
}//package game.enemy
Section 53
//BossBlade (game.enemy.BossBlade)
package game.enemy {
import game.*;
public dynamic class BossBlade extends Boss {
public function BossBlade(){
addFrameScript(0, frame1);
}
function frame1(){
setBase(blade, 50);
}
}
}//package game.enemy
Section 54
//BossBrain (game.enemy.BossBrain)
package game.enemy {
import game.*;
public dynamic class BossBrain extends Boss {
public function BossBrain(){
addFrameScript(0, frame1);
}
function frame1(){
setBase(brain, 50);
brain.setHealth(2500);
}
}
}//package game.enemy
Section 55
//BossFinal (game.enemy.BossFinal)
package game.enemy {
import game.*;
public dynamic class BossFinal extends Boss {
public function BossFinal(){
addFrameScript(0, frame1);
}
function frame1(){
setBase(final, 0, 100);
final.setHealth(2000);
top.setHealth(2000);
basePart.setHealth(2000);
fang0.setHealth(1000);
fang1.setHealth(1000);
fang2.setHealth(1000);
fang3.setHealth(1000);
spawner0.setClass("FangLeftMinion");
spawner1.setClass("FangRightMinion");
}
}
}//package game.enemy
Section 56
//BossShooter (game.enemy.BossShooter)
package game.enemy {
import game.*;
public dynamic class BossShooter extends Boss {
public function BossShooter(){
addFrameScript(0, frame1);
}
function frame1(){
setBase(shooter, 50, 50);
}
}
}//package game.enemy
Section 57
//BossSpider (game.enemy.BossSpider)
package game.enemy {
import game.*;
public class BossSpider extends Boss {
public var spider:BossSpiderBase;
public var minions:MinionSpawner;
public function BossSpider(){
addFrameScript(0, frame1);
}
function frame1(){
setBase(spider, 50, 150);
spider.setHealth(2000);
minions.setClass("SpiderMinion");
}
}
}//package game.enemy
Section 58
//BossStone (game.enemy.BossStone)
package game.enemy {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.utils.*;
public class BossStone extends Boss {
public var closer:BossStonePartB;
private var class_Minion:Class;// = null
public var stone:BossStoneBase;
private var timer:Timer;
private var minionTimer:Timer;
private var closerDir:Number;// = 0
private var minionsSpawned:int;// = 0
public function BossStone(){
timer = new Timer(10000);
minionTimer = new Timer(250);
super();
addFrameScript(0, frame1);
timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
minionTimer.addEventListener(TimerEvent.TIMER, onMinionHandler);
timer.start();
isInvuln = true;
class_Minion = (getDefinitionByName("game.enemy.Saw") as Class);
toggleCloser();
}
override public function release(){
super.release();
timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
minionTimer.removeEventListener(TimerEvent.TIMER, onMinionHandler);
}
private function onOpened(){
timer.delay = 3000;
isInvuln = false;
minionTimer.start();
GameSound.emitSound(Resources.sound_Moan, 2);
}
private function onTimerHandler(_arg1:TimerEvent){
toggleCloser();
}
private function toggleCloser(){
if (isInvuln){
closerDir = -1;
} else {
closerDir = 1;
};
}
override public function update(){
super.update();
closer.x = (closer.x + closerDir);
if (closerDir){
if (closer.x <= -53){
closer.x = -53;
closerDir = 0;
onOpened();
} else {
if (closer.x >= -23){
closer.x = -23;
closerDir = 0;
onClosed();
};
};
};
}
private function onClosed(){
isInvuln = !(closer.destroyed);
timer.delay = 10000;
}
private function onMinionHandler(_arg1:TimerEvent){
if (minionsSpawned >= 20){
minionTimer.stop();
minionsSpawned = 0;
return;
};
GameScreen.instance.spawnEnemyClsAt(class_Minion, (Game.width / 2), -20);
minionsSpawned++;
}
function frame1(){
setBase(stone, 0, 150);
closer.setHealth(5500);
stone.setHealth(700);
}
}
}//package game.enemy
Section 59
//Cockroach (game.enemy.Cockroach)
package game.enemy {
public class Cockroach extends Orange {
override public function update(){
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
super.update();
}
override public function spawn(_arg1:Number, _arg2:Number){
play();
super.spawn(_arg1, _arg2);
}
}
}//package game.enemy
Section 60
//FangLeftMinion (game.enemy.FangLeftMinion)
package game.enemy {
public dynamic class FangLeftMinion extends FangMinion {
}
}//package game.enemy
Section 61
//FangMinion (game.enemy.FangMinion)
package game.enemy {
public class FangMinion extends Orange {
override public function update(){
rotation = (((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI) + 180);
super.update();
}
override public function spawn(_arg1:Number, _arg2:Number){
play();
super.spawn(_arg1, _arg2);
}
}
}//package game.enemy
Section 62
//FangRightMinion (game.enemy.FangRightMinion)
package game.enemy {
public dynamic class FangRightMinion extends FangMinion {
}
}//package game.enemy
Section 63
//Formation (game.enemy.Formation)
package game.enemy {
import dreemchest.*;
import game.*;
import flash.geom.*;
public class Formation extends Enemy implements IEnemyContainer {
private var nextDir:Vector;
private var temp:Enemy;// = null
protected var rotateTo:Boolean;// = true
protected var array:Array;
public function Formation(){
array = new Array();
nextDir = new Vector();
super();
gotoAndStop(5);
speed = 200;
}
override public function testCollision(_arg1:Point):Boolean{
var _local2:uint;
while (_local2 < array.length) {
if (array[_local2].testCollision(_arg1)){
return (true);
};
_local2++;
};
return (false);
}
override public function update(){
var _local4:Point;
var _local5:Point;
var _local1:Vector = GameScreen.instance.getPlayerPos();
var _local2:Vector = new Vector(x, y);
_local2.dirTo(_local1.x, _local1.y);
_local2.normalize();
if (Math.abs((_local2.x - dir.x)) > 0.001){
dir.x = (dir.x + ((_local2.x - dir.x) * turnRate));
};
if (Math.abs((_local2.y - dir.y)) > 0.001){
dir.y = (dir.y + ((_local2.y - dir.y) * turnRate));
};
if (Math.random() < 0.01){
velocity.y = (Math.random() * 0.5);
velocity.x = (Math.random() * 0.5);
};
dir.normalize();
if (rotateTo){
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
};
var _local3:uint;
while (_local3 < array.length) {
temp.x = array[_local3].userData.offsetX;
temp.y = array[_local3].userData.offsetY;
_local4 = temp.getGlobalPos();
_local5 = new Point((_local4.x - array[_local3].userData.posX), (_local4.y - array[_local3].userData.posY));
array[_local3].userData.posX = (array[_local3].userData.posX + (_local5.x * array[_local3].userData.friction));
array[_local3].userData.posY = (array[_local3].userData.posY + (_local5.y * array[_local3].userData.friction));
if (userData.overlaped){
array[_local3].x = temp.x;
array[_local3].y = temp.y;
array[_local3].userData.posX = _local4.x;
array[_local3].userData.posY = _local4.y;
} else {
_local4 = GameScreen.instance.transformTo(array[_local3].userData.posX, array[_local3].userData.posY, this);
array[_local3].x = _local4.x;
array[_local3].y = _local4.y;
};
_local3++;
};
if (userData.overlaped){
userData.overlaped = false;
};
super.update();
}
public function removeEnemy(_arg1:Enemy){
var _local2:uint;
while (_local2 < array.length) {
if (array[_local2] == _arg1){
removeChild(_arg1);
array.splice(_local2, 1);
break;
};
_local2++;
};
if (array.length == 0){
destroy();
};
}
protected function addEntry(_arg1:Enemy, _arg2:Number){
_arg1.setFormation(this);
addChild(_arg1);
var _local3:Point = _arg1.getGlobalPos();
_arg1.userData.offsetX = _arg1.x;
_arg1.userData.offsetY = _arg1.y;
_arg1.userData.posX = _local3.x;
_arg1.userData.posY = _local3.y;
_arg1.userData.friction = _arg2;
_maxHealth = (_maxHealth + _arg1.maxHealth);
array.push(_arg1);
}
override public function destroy(_arg1:Boolean=true, _arg2:Boolean=true){
var _local3:uint;
while (_local3 < array.length) {
array[_local3].destroy(_arg1, false);
_local3++;
};
super.destroy();
}
override public function spawn(_arg1:Number, _arg2:Number){
super.spawn(_arg1, _arg2);
temp = new Enemy();
temp.visible = false;
addChild(temp);
}
override public function testBulletCollision(_arg1:Bullet):Number{
var _local2:Point = new Point(_arg1.x, _arg1.y);
var _local3:uint;
while (_local3 < array.length) {
if (array[_local3].testCollision(_local2)){
array[_local3].hit(_arg1.damage, true);
return (1);
};
_local3++;
};
return (-1);
}
}
}//package game.enemy
Section 64
//FormationCross (game.enemy.FormationCross)
package game.enemy {
import game.*;
public class FormationCross extends Formation {
public function FormationCross(){
speed = 100;
rotateTo = false;
_maxHealth = 0;
}
override public function update(){
rotation++;
super.update();
}
override public function spawn(_arg1:Number, _arg2:Number){
var _local3:Array;
var _local5:int;
var _local6:Enemy;
super.spawn(_arg1, _arg2);
_local3 = [0.05, 0.06, 0.07, 0.08, 0.07, 0.06, 0.05];
var _local4:int;
_local5 = 0;
_local4 = -2;
_local5 = 0;
while (_local4 <= 2) {
_local6 = new FormationB();
_local6.x = ((_local4 * _local6.width) * 1);
_local6.y = 0;
addEntry(_local6, _local3[_local5]);
_local4++;
_local5++;
};
_local4 = -2;
_local5 = 0;
while (_local4 <= 2) {
if (_local4 == 0){
} else {
_local6 = new FormationB();
_local6.x = 0;
_local6.y = ((_local4 * _local6.width) * 1);
addEntry(_local6, _local3[_local5]);
};
_local4++;
_local5++;
};
}
}
}//package game.enemy
Section 65
//FormationEntry (game.enemy.FormationEntry)
package game.enemy {
import game.*;
public class FormationEntry extends Enemy {
public function FormationEntry(){
gotoAndPlay((Math.floor((Math.random() * totalFrames)) + 1));
}
}
}//package game.enemy
Section 66
//FormationLine (game.enemy.FormationLine)
package game.enemy {
import game.*;
public class FormationLine extends Formation {
public function FormationLine(){
speed = 100;
}
override public function spawn(_arg1:Number, _arg2:Number){
var _local5:*;
var _local6:Enemy;
super.spawn(_arg1, _arg2);
var _local3:Array = [0.05, 0.06, 0.07, 0.08, 0.07, 0.06, 0.05, 0.05];
var _local4 = -4;
_local5 = 0;
while (_local4 <= 4) {
_local6 = new FormationC();
_local6.x = ((_local4 * _local6.width) * 1);
_local6.y = 0;
_local6.setMaxHealth(30);
addEntry(_local6, _local3[_local5]);
_local4++;
_local5++;
};
}
}
}//package game.enemy
Section 67
//FormationQuad (game.enemy.FormationQuad)
package game.enemy {
import game.*;
public class FormationQuad extends Formation {
public function FormationQuad(){
speed = 100;
}
override public function spawn(_arg1:Number, _arg2:Number){
var _local3:int;
var _local4:int;
var _local5:Enemy;
super.spawn(_arg1, _arg2);
_local3 = -2;
while (_local3 <= 2) {
_local4 = -2;
while (_local4 <= 2) {
_local5 = new FormationA();
_local5.rotation = 180;
_local5.x = ((_local3 * _local5.width) * 1.5);
_local5.y = ((_local4 * _local5.height) * 1.5);
addEntry(_local5, 0.08);
_local4++;
};
_local3++;
};
}
}
}//package game.enemy
Section 68
//FormationWorm (game.enemy.FormationWorm)
package game.enemy {
import game.*;
public class FormationWorm extends Formation {
override public function spawn(_arg1:Number, _arg2:Number){
var _local3:Number;
var _local5:int;
var _local6:Enemy;
super.spawn(_arg1, _arg2);
_local3 = 0.4;
var _local4:Number = 1;
_local5 = 0;
while (_local5 < 20) {
_local6 = new Enemy();
_local6.gotoAndStop(6);
_local6.x = 0;
_local6.y = (((_local5 * _local6.height) * 0.5) * _local4);
_local6.scaleX = _local4;
_local6.scaleY = _local4;
addEntry(_local6, _local3);
_local3 = (_local3 * 0.9);
_local4 = (_local4 - 0.02);
_local5++;
};
}
}
}//package game.enemy
Section 69
//Orange (game.enemy.Orange)
package game.enemy {
import dreemchest.*;
import game.*;
import flash.geom.*;
public class Orange extends Enemy {
public function Orange(){
gotoAndStop(1);
_maxHealth = 5;
speed = 125;
drop = PowerUp.MONEY_50;
dropMoneyCount = 1;
explodeRange = 75;
explodeDamage = 10;
}
override public function update(){
var _local1:Vector = GameScreen.instance.getPlayerPos();
var _local2:Vector = new Vector(x, y);
_local2.dirTo(_local1.x, _local1.y);
_local2.normalize();
if (Math.abs((_local2.x - dir.x)) > 0.001){
dir.x = (dir.x + ((_local2.x - dir.x) * turnRate));
};
if (Math.abs((_local2.y - dir.y)) > 0.001){
dir.y = (dir.y + ((_local2.y - dir.y) * turnRate));
};
if (Math.random() < 0.01){
velocity.y = (Math.random() * 0.5);
velocity.x = (Math.random() * 0.5);
};
dir.normalize();
super.update();
}
override public function render(_arg1:RenderSurface){
matrix.identity();
matrix.translate(x, y);
_arg1.bd.copyPixels(Resources.bitmap_Orange, Resources.bitmap_Orange.rect, new Point(x, y), Resources.bitmap_Orange, null, true);
}
}
}//package game.enemy
Section 70
//Saw (game.enemy.Saw)
package game.enemy {
import game.*;
public class Saw extends Orange {
public function Saw(){
play();
_maxHealth = 25;
drop = PowerUp.MONEY_250;
explodeDamage = 10;
}
}
}//package game.enemy
Section 71
//SpiderMinion (game.enemy.SpiderMinion)
package game.enemy {
public class SpiderMinion extends Orange {
override public function update(){
rotation = ((-180 * Math.atan2(-(dir.x), -(dir.y))) / Math.PI);
super.update();
}
override public function spawn(_arg1:Number, _arg2:Number){
play();
super.spawn(_arg1, _arg2);
}
}
}//package game.enemy
Section 72
//SuperSaw (game.enemy.SuperSaw)
package game.enemy {
import game.*;
public class SuperSaw extends Orange {
public function SuperSaw(){
play();
_maxHealth = 60;
drop = (PowerUp.MONEY_250 | PowerUp.MONEY_500);
maxCrystals = 2;
armor = 0.1;
explodeDamage = 20;
}
}
}//package game.enemy
Section 73
//Turret (game.enemy.Turret)
package game.enemy {
import dreemchest.*;
import game.*;
public class Turret extends Enemy {
public function Turret(){
gotoAndStop(4);
_maxHealth = 75;
speed = 0;
drop = ((PowerUp.MONEY_50 | PowerUp.MONEY_250) | PowerUp.MONEY_500);
dropMoneyCount = 5;
explodeDamage = 50;
}
override public function update(){
var _local1:Vector = GameScreen.instance.getPlayerPos();
dir.setTo(x, y);
dir.dirTo(_local1.x, _local1.y);
fire();
super.update();
}
private function fire(){
var _local1:Number = 0.005;
if (Math.random() < _local1){
shoot(x, y, 0, 10, 200);
};
}
}
}//package game.enemy
Section 74
//LevelBoss (game.levels.LevelBoss)
package game.levels {
import game.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class LevelBoss extends Level {
private var class_Boss:Class;// = null
private var timer:Timer;
private var boss:String;// = ""
public function LevelBoss(_arg1:XML){
timer = new Timer(3000);
super(_arg1);
boss = _arg1.@boss;
}
override public function start(){
if (isStarted){
return;
};
super.start();
class_Boss = (getDefinitionByName(boss) as Class);
timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
timer.start();
}
override public function onEnemyKilled(_arg1:Enemy){
if ((_arg1 is class_Boss)){
_power = 0;
onLevelEnd();
} else {
super.onEnemyKilled(_arg1);
};
}
private function onTimerHandler(_arg1:TimerEvent){
timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
timer.stop();
GameScreen.instance.spawnEnemyCls(class_Boss);
}
override public function updateHUD(_arg1:MovieClip){
super.updateHUD(_arg1);
_arg1.stats.text = "";
}
}
}//package game.levels
Section 75
//LevelCrystals (game.levels.LevelCrystals)
package game.levels {
import game.*;
import flash.display.*;
import flash.geom.*;
import game.powerup.*;
public class LevelCrystals extends Level {
private var left:int;// = 0
private var count:int;// = 0
public function LevelCrystals(_arg1:XML){
super(_arg1);
count = _arg1.@count;
left = count;
}
override public function updateHUD(_arg1:MovieClip){
super.updateHUD(_arg1);
_arg1.stats.text = (left + " super crystals left to collect");
}
override public function start(){
if (isStarted){
return;
};
super.start();
left = count;
}
public function onCrystalPicked(){
if (left == 0){
return;
};
left--;
if (left == 0){
onLevelEnd();
};
}
override public function onEnemyKilled(_arg1:Enemy){
var _local2:Point;
super.onEnemyKilled(_arg1);
if (Math.random() < 0.1){
_local2 = _arg1.getGlobalPos();
GameScreen.instance.spawnPowerUp(SuperCrystal, _local2.x, _local2.y);
};
}
}
}//package game.levels
Section 76
//LevelHunt (game.levels.LevelHunt)
package game.levels {
import game.*;
import flash.display.*;
public class LevelHunt extends Level {
private var left:int;// = 0
private var count:int;// = 0
public function LevelHunt(_arg1:XML){
super(_arg1);
count = _arg1.@count;
left = count;
}
override public function start(){
if (isStarted){
return;
};
super.start();
left = count;
}
override public function onEnemyKilled(_arg1:Enemy){
super.onEnemyKilled(_arg1);
left = Math.max(0, (left - 1));
if (left == 0){
_power = 0;
onLevelEnd();
};
}
override public function updateHUD(_arg1:MovieClip){
super.updateHUD(_arg1);
_arg1.stats.text = (left + " kills left");
}
}
}//package game.levels
Section 77
//LevelSurvivalMode (game.levels.LevelSurvivalMode)
package game.levels {
import dreemchest.*;
import game.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import game.enemy.*;
import game.powerup.*;
import flash.ui.*;
public class LevelSurvivalMode extends Level {
private var msecond:int;// = 0
private var level:int;// = 0
private var hud:MovieClip;// = null
private var monsters:Array;
private var seconds:Timer;
public function LevelSurvivalMode(_arg1:XML){
seconds = new Timer(1000);
monsters = new Array();
super(_arg1);
monsters.push({cls:Orange, prob:1});
monsters.push({cls:Bomb, prob:1});
monsters.push({cls:Cockroach, prob:0.5});
monsters.push({cls:BombBlue, prob:1});
monsters.push({cls:FormationCross, prob:0.1});
monsters.push({cls:Assault, prob:0.1});
monsters.push({cls:Saw, prob:1});
monsters.push({cls:Turret, prob:0.2});
monsters.push({cls:SuperSaw, prob:1});
monsters.push({cls:Battleship, prob:0.75});
levelUp();
}
private function onSecondsTimerHandler(_arg1:TimerEvent){
if (hud.clickHere.visible){
return;
};
msecond = (msecond + 1000);
if (msecond == 60000){
levelUp();
msecond = 0;
GameScreen.instance.spawnHPClip();
};
}
override public function onEnemyKilled(_arg1:Enemy){
super.onEnemyKilled(_arg1);
GameScreen.instance.player.score = (GameScreen.instance.player.score + _arg1.maxHealth);
}
override public function start(){
if (isStarted){
return;
};
super.start();
hud = GameScreen.instance.getHUD();
hud.scoreDialog.addEventListener(ScoreDialog.CLOSED, onCloseScoreDialog);
seconds.addEventListener(TimerEvent.TIMER, onSecondsTimerHandler);
seconds.start();
}
private function levelUp(){
var _local5:Object;
var _local6:Enemy;
var _local1:AbilityPU;
var _local2:Vector = new Vector(200, (Game.height / 2));
var _local3:Vector = new Vector(400, (Game.height / 2));
var _local4:Vector = new Vector(300, (Game.height / 2));
switch (level){
case 1:
spawnAbility((UpgradePannel.Explode + 1), _local2);
spawnAbility((UpgradePannel.Droid + 1), _local3);
break;
case 5:
spawnAbility((UpgradePannel.Missiles + 1), _local2);
spawnAbility((UpgradePannel.SMissiles + 1), _local3);
break;
case 9:
spawnAbility((UpgradePannel.Shield + 1), _local2);
spawnAbility((UpgradePannel.Storm + 1), _local3);
break;
};
if (level < monsters.length){
_local5 = monsters[level];
_local6 = new _local5.cls();
monsterClasses.push({cls:_local5.cls, prob:_local5.prob, power:_local6.maxHealth});
prepareMonsters();
level++;
};
_maxPower = Math.min(1500, (_maxPower + 100));
GameScreen.instance.player.maxHealth = (GameScreen.instance.player.maxHealth + 10);
GameScreen.instance.player.health = (GameScreen.instance.player.health + 10);
}
private function spawnAbility(_arg1:int, _arg2:Vector){
var _local3:AbilityPU = (GameScreen.instance.spawnPowerUp(AbilityPU, _arg2.x, _arg2.y) as AbilityPU);
_local3.image.gotoAndStop(_arg1);
}
private function onCloseScoreDialog(_arg1:Event){
hud.scoreDialog.addEventListener(ScoreDialog.CLOSED, onCloseScoreDialog);
onLevelEnd();
}
override public function updateHUD(_arg1:MovieClip){
_arg1.score.text = ("Score: " + GameScreen.instance.player.score);
_arg1.stats.text = "";
_arg1.wave.visible = true;
var _local2:Number = (msecond / 60000);
_arg1.wave.filler.scaleX = _local2;
_arg1.wave.caption.text = (("Next wave in " + ((60000 - msecond) / 1000)) + " seconds");
}
override protected function onPlayerKilled(_arg1:Event){
seconds.removeEventListener(TimerEvent.TIMER, onSecondsTimerHandler);
seconds.stop();
if (!hud.scoreDialog.visible){
hud.scoreDialog.show(GameScreen.instance.player.score);
Mouse.show();
};
}
}
}//package game.levels
Section 78
//LevelSurvive (game.levels.LevelSurvive)
package game.levels {
import game.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class LevelSurvive extends Level {
private var timer:Timer;
private var hud:MovieClip;// = null
private var left:int;// = 0
private var count:int;// = 0
public function LevelSurvive(_arg1:XML){
timer = new Timer(1000);
super(_arg1);
count = _arg1.@count;
left = count;
}
override public function start(){
if (isStarted){
return;
};
super.start();
left = count;
hud = GameScreen.instance.getHUD();
timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
timer.start();
}
private function onTimerHandler(_arg1:TimerEvent){
if (hud.clickHere.visible){
return;
};
left--;
if (left == 0){
_power = 0;
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
onLevelEnd();
};
}
override public function updateHUD(_arg1:MovieClip){
super.updateHUD(_arg1);
_arg1.stats.text = (left + " seconds left");
}
}
}//package game.levels
Section 79
//AbilityPU (game.powerup.AbilityPU)
package game.powerup {
import game.*;
import flash.display.*;
import game.abilities.*;
public class AbilityPU extends PowerUp {
public var image:MovieClip;
public function AbilityPU(){
image.gotoAndStop((Math.round((Math.random() * image.totalFrames)) + 1));
}
override protected function onPicked(){
var _local1 = -1;
var _local2:Class;
switch ((image.currentFrame - 1)){
case UpgradePannel.Explode:
_local1 = Ability.Explode;
_local2 = Explode;
break;
case UpgradePannel.Droid:
_local1 = Ability.Droid;
_local2 = TurretAbility;
break;
case UpgradePannel.Missiles:
_local1 = Ability.Missiles;
_local2 = Missiles;
break;
case UpgradePannel.SMissiles:
_local1 = Ability.SMissiles;
_local2 = SeekingMissiles;
break;
case UpgradePannel.Shield:
_local1 = Ability.Shield;
_local2 = Shield;
break;
case UpgradePannel.Storm:
_local1 = Ability.MissileStorm;
_local2 = MissileStorm;
break;
case 9:
_local1 = 9;
_local2 = DoubleMinigun;
break;
case 7:
_local1 = 7;
_local2 = DoubleMinigun;
break;
case 12:
_local1 = 12;
_local2 = Regen;
break;
case 11:
_local1 = 11;
_local2 = null;
break;
};
GameScreen.instance.player.onPickedAbility(_local1, _local2);
super.onPicked();
}
}
}//package game.powerup
Section 80
//Crystal (game.powerup.Crystal)
package game.powerup {
import dreemchest.*;
import game.*;
public class Crystal extends PowerUp {
override protected function onPicked(){
GameSound.emitSound(Resources.sound_Pick[Math.floor((Math.random() * Resources.sound_Pick.length))], 2);
GameScreen.instance.player.onPickedCrystal();
super.onPicked();
}
}
}//package game.powerup
Section 81
//EnergyCell (game.powerup.EnergyCell)
package game.powerup {
import dreemchest.*;
import game.*;
public class EnergyCell extends PowerUp {
override protected function onPicked(){
GameSound.emitSound(Resources.sound_Pick[Math.floor((Math.random() * Resources.sound_Pick.length))], 2);
GameScreen.instance.player.onPickedEnergyCell();
super.onPicked();
}
}
}//package game.powerup
Section 82
//Money (game.powerup.Money)
package game.powerup {
import dreemchest.*;
import game.*;
public class Money extends PowerUp {
public function Money(){
gotoAndStop(1);
}
override protected function onPicked(){
GameSound.emitSound(Resources.sound_Pick[Math.floor((Math.random() * Resources.sound_Pick.length))], 2);
switch (currentFrame){
case 1:
GameScreen.instance.player.updateMoney(20);
break;
case 2:
GameScreen.instance.player.updateMoney(100);
break;
case 3:
GameScreen.instance.player.updateMoney(500);
break;
case 4:
GameScreen.instance.player.updateMoney(1000);
break;
case 5:
GameScreen.instance.player.updateMoney(2000);
break;
case 6:
GameScreen.instance.player.updateMoney(5000);
break;
};
super.onPicked();
}
}
}//package game.powerup
Section 83
//SuperCrystal (game.powerup.SuperCrystal)
package game.powerup {
import dreemchest.*;
import game.*;
import game.levels.*;
public class SuperCrystal extends PowerUp {
override protected function onPicked(){
GameSound.emitSound(Resources.sound_Pick[Math.floor((Math.random() * Resources.sound_Pick.length))], 2);
GameScreen.instance.player.onPickedCrystal();
(level as LevelCrystals).onCrystalPicked();
super.onPicked();
}
}
}//package game.powerup
Section 84
//Ability (game.Ability)
package game {
public class Ability {
protected var player:Player;// = null
protected var _level:String;// = ""
private var cooldown:Number;// = 0
protected var _cost:Number;// = 45
protected var maxCooldown:Number;// = 2
private var isReady:Boolean;// = false
public static const SMissiles:int = 6;
public static const Explode:int = 3;
public static const MissileStorm:int = 7;
public static const RegenE:int = 11;
public static const Shield:int = 8;
public static const RampageX32:int = 2;
public static const Droid:int = 4;
public static const Regen:int = 10;
public static const Total:int = 12;
public static const RampageX4:int = 0;
public static const RampageX8:int = 1;
public static const Missiles:int = 5;
public static const Weapon:int = 9;
public function Ability(_arg1:Player){
player = _arg1;
}
public function upgrade(){
_level = ((_level as int) + 1).toString();
}
public function get level():String{
return (_level);
}
public function release(){
}
public function update(_arg1:Number, _arg2:Number, _arg3:Number){
if (cooldown > 0){
cooldown = (cooldown - _arg3);
cooldown = Math.max(cooldown, 0);
};
}
public function get cost():Number{
return (_cost);
}
public function activate(_arg1:Number, _arg2:Number){
cooldown = maxCooldown;
player.energy = (player.energy - cost);
}
public function setPlayer(_arg1:Player){
player = _arg1;
}
public function get cooldownPcnt():Number{
return ((cooldown / maxCooldown));
}
public function isAvailable():Boolean{
return ((((cooldown == 0)) && ((cost <= player.energy))));
}
}
}//package game
Section 85
//AsteroidBackground (game.AsteroidBackground)
package game {
import flash.display.*;
public class AsteroidBackground extends MovieClip {
private var background2:MovieClip;// = null
private var background3:MovieClip;// = null
private var background4:MovieClip;// = null
public function AsteroidBackground(){
var _local2:MovieClip;
super();
background4 = new MovieClip();
addChild(background4);
background3 = new MovieClip();
addChild(background3);
background2 = new MovieClip();
addChild(background2);
GameScreen.applyBrightnessFilter(background4, 1, 1, 1, 0.5);
GameScreen.applyBrightnessFilter(background3, 1, 1, 1, 0.6);
GameScreen.applyBrightnessFilter(background2, 1, 1, 1, 0.7);
var _local1:int;
_local1 = 0;
while (_local1 < 2) {
_local2 = new Asteroid();
_local2.x = (Math.random() * 700);
_local2.y = (Math.random() * 525);
background2.addChild(_local2);
_local2.image.gotoAndStop(3);
_local1++;
};
_local1 = 0;
while (_local1 < 2) {
_local2 = new Asteroid();
_local2.x = (Math.random() * 700);
_local2.y = (Math.random() * 525);
background3.addChild(_local2);
_local2.image.gotoAndStop(2);
_local1++;
};
_local1 = 0;
while (_local1 < 2) {
_local2 = new Asteroid();
_local2.x = (Math.random() * 700);
_local2.y = (Math.random() * 525);
background4.addChild(_local2);
_local2.image.gotoAndStop(1);
_local1++;
};
}
public function scroll(_arg1:Number, _arg2:Number){
background2.x = (_arg1 * 0.5);
background2.y = (_arg2 * 0.5);
background3.x = (_arg1 * 0.25);
background3.y = (_arg2 * 0.25);
background4.x = (_arg1 * 0.125);
background4.y = (_arg2 * 0.125);
}
}
}//package game
Section 86
//Boss (game.Boss)
package game {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import game.boss.*;
public class Boss extends Enemy {
public var fang0:BossFinalFangLeft;
public var final:BossFinalBase;
public var spawner1:MinionSpawner;
public var shooter:BossShooterBase;
public var fang2:BossFinalFangLeft;
private var base:BossBase;// = null
private var time:Number;// = 0
public var top:BossFinalTop;
private var explosions:int;// = -1
public var spawner0:MinionSpawner;
private var lastExplTime:int;// = 0
private var yPos:Number;// = 250
private var _isInvuln:Boolean;// = false
public var blade:BossBladeBase;
public var basePart:BossFinalBasePart;
public var rampage2:RampageShooter;
private var isMoving:Boolean;// = false
public var rampage1:RampageShooter;
public var brain:BrainBase;
public var fang1:BossFinalFangRight;
public var fang3:BossFinalFangRight;
public function Boss(){
_health = 500;
_maxHealth = 500;
speed = 50;
randomDir = false;
class_Explosion = Resources.class_ExplosionBlastS;
}
override public function testBulletCollision(_arg1:Bullet):Number{
var _local5:DisplayObject;
var _local6:BossPart;
var _local2:Point = new Point(_arg1.x, _arg1.y);
var _local3:Boolean;
var _local4:int;
while (_local4 < numChildren) {
_local5 = getChildAt(_local4);
if ((_local5 is BossPart)){
_local6 = (_local5 as BossPart);
if (_local6.checkCollision(_local2)){
if (!isInvuln){
_local6.hit(_arg1);
};
return (1);
} else {
_local3 = ((_local3) && (((_local6.destroyed) || (_local6.isVulnerable))));
};
};
_local4++;
};
if (_local3){
if (base.checkCollision(_local2)){
if (!isInvuln){
base.hit(_arg1);
};
return (1);
};
};
return (-1);
}
public function setBase(_arg1:BossBase, _arg2:Number, _arg3:Number=250){
base = _arg1;
speed = _arg2;
yPos = _arg3;
base.addEventListener(BossBase.DESTROYED, onBaseDestroyed);
}
public function get isInvuln():Boolean{
return (_isInvuln);
}
public function set isInvuln(_arg1:Boolean){
return ((_isInvuln = _arg1));
}
override public function update(){
var _local3:DisplayObject;
y = ((Math.sin(time) * 50) + yPos);
time = (time + 0.005);
var _local1:int = getTimer();
var _local2:int;
while (_local2 < numChildren) {
_local3 = getChildAt(_local2);
if ((_local3 is BossPart)){
(_local3 as BossPart).update(_local1);
};
_local2++;
};
if (((((((_local1 - lastExplTime) > 150)) && ((explosions >= 0)))) && ((explosions < 20)))){
spawnExplosion(((x + (Math.random() * 100)) - 50), ((y + (Math.random() * 100)) - 50));
GameScreen.instance.setShake(0.5);
explosions++;
lastExplTime = _local1;
if (explosions >= 20){
GameScreen.instance.setShake(2.5);
destroy();
};
};
super.update();
}
private function onBaseDestroyed(_arg1:Event){
GameScreen.instance.setShake(5);
explosions = 0;
GameScreen.instance.player.setInv(true);
}
override public function onPlayerCollision(_arg1:Player){
}
override public function spawn(_arg1:Number, _arg2:Number){
_arg2 = 50;
_arg1 = 400;
super.spawn(_arg1, _arg2);
dir.x = -1.5;
dir.y = 0;
}
}
}//package game
Section 87
//Bullet (game.Bullet)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class Bullet extends MovieClip {
protected var hitsPlayer:Boolean;// = false
protected var hitFx:Class;// = null
protected var speed:Number;// = 500
private var node:ListNode;// = null
private var _sector:int;// = -1
protected var _damage:Number;// = 8
protected var position:Vector;
protected var type:int;// = 0
protected var direction:Vector;
public static const Green:int = 2;
public static const Red:int = 10;
public static const Blue:int = 9;
public static const SMissile:int = 8;
public static const Rampage:int = 7;
private static var matrix:Matrix = new Matrix();
public static var bullets:int = 0;
public function Bullet(){
position = new Vector();
direction = new Vector();
super();
}
protected function update(){
var _local1:Number;
if (Game.isPaused){
return;
};
position.x = (position.x + (((direction.x * speed) * FPSCounter.k_FrameTime) * Game.speed));
position.y = (position.y + (((direction.y * speed) * FPSCounter.k_FrameTime) * Game.speed));
x = position.x;
y = position.y;
rotation = ((-180 * Math.atan2(-(direction.x), -(direction.y))) / Math.PI);
_sector = (Math.floor((x / 70)) * Math.floor((y / 70)));
if (!hitsPlayer){
_local1 = GameScreen.instance.testEnemyBulletCollision(this);
if (_local1 >= 0){
if (hitFx){
GameScreen.instance.spawnFx(hitFx, ((x + (Math.random() * 10)) - 5), ((y + (Math.random() * 10)) - 5), true);
};
destroy();
};
} else {
if (GameScreen.instance.testPlayerCollision(new Point(x, y), 15)){
GameScreen.instance.player.hit(_damage);
destroy();
};
};
if ((((((((x < -50)) || ((x > (Game.width * 1.25))))) || ((y < -50)))) || ((y > (Game.height * 1.25))))){
destroy();
};
}
public function release(){
if (parent){
parent.removeChild(this);
};
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
public function get sector():int{
return (_sector);
}
protected function destroy(){
release();
if (((node) && (node.list))){
node.list.remove(node);
};
}
public function get damage():Number{
return (_damage);
}
private function onEnterFrameHandler(_arg1:Event){
if (visible){
update();
};
}
public function spawn(_arg1:ListNode, _arg2:Number, _arg3:Number, _arg4:Vector, _arg5:int, _arg6:Class, _arg7:Number, _arg8:Number, _arg9:Boolean){
node = _arg1;
x = _arg2;
y = _arg3;
position.x = x;
position.y = y;
direction.x = _arg4.x;
direction.y = _arg4.y;
type = _arg5;
_damage = _arg7;
hitsPlayer = _arg9;
hitFx = _arg6;
speed = _arg8;
visible = true;
direction.normalize();
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
if (type > 0){
gotoAndStop(type);
};
bullets++;
}
}
}//package game
Section 88
//BulletSeekingMissile (game.BulletSeekingMissile)
package game {
import flash.utils.*;
public class BulletSeekingMissile extends Bullet {
private var angleDir:Number;// = 1
private var lastTime:Number;// = 0
private var delta:Number;// = 0
private var angle:Number;// = 0
public function BulletSeekingMissile(){
gotoAndStop(8);
angle = (Math.random() * 360);
}
override protected function update(){
if ((getTimer() - lastTime) > delta){
angleDir = ((Math.random())<0.5) ? -1 : 1;
lastTime = getTimer();
delta = ((Math.random() * 50) + 50);
};
direction.x = Math.sin(angle);
direction.y = Math.cos(angle);
angle = (angle + (angleDir * 0.1));
super.update();
}
}
}//package game
Section 89
//Debris (game.Debris)
package game {
import dreemchest.*;
import flash.media.*;
import flash.events.*;
import flash.display.*;
public class Debris extends MovieClip {
private var fade:Number;// = 1
private var direction:Vector;
private var speed:Number;// = 0
private var explodes:Boolean;// = false
private var life:Number;// = 0
public static var totalDebris:int = 0;
public function Debris(){
direction = new Vector();
super();
}
private function onEnterFrameHandler(_arg1:Event){
var _local2:Sound;
if (Game.isPaused){
return;
};
x = (x + (direction.x * speed));
y = (y + (direction.y * speed));
speed = Math.max(0.1, (speed - (fade * 2)));
if (!explodes){
scaleX = (scaleX - fade);
scaleY = (scaleY - fade);
};
life = (life - fade);
fade = (fade + 0.0005);
if (((explodes) && ((life <= 0)))){
Game.instance.gameScreen.spawnFx(Resources.class_MinigunHit, x, y);
Game.instance.gameScreen.spawnDebris(Resources.class_DebrisMedium, x, y, 5, false);
_local2 = new SoundExplosion();
_local2.play();
};
if ((((((scaleX <= 0)) || ((scaleY <= 0)))) || ((life <= 0)))){
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
parent.removeChild(this);
totalDebris--;
};
}
public function spawn(_arg1:Number, _arg2:Number, _arg3:Boolean=false){
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
x = _arg1;
y = _arg2;
speed = ((Math.random() * 1) + 1);
fade = ((Math.random() * 0.01) + 0.005);
life = 1;
direction.x = (Math.random() - 0.5);
direction.y = (Math.random() - 0.5);
direction.normalize();
gotoAndStop((Math.floor((Math.random() * totalFrames)) + 1));
totalDebris++;
}
}
}//package game
Section 90
//Enemy (game.Enemy)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import game.enemy.*;
import flash.geom.*;
import game.powerup.*;
public class Enemy extends MovieClip {
protected var maxCrystals:int;// = 1
protected var _health:Number;// = 5
protected var dropMoneyCount:int;// = 0
protected var dir:Vector;
protected var isDestroyed:Boolean;// = false
private var _sectors:Array;
protected var explodeDamage:Number;// = 5
protected var formation:Formation;// = null
protected var type:int;// = 0
protected var sound_Explosion:Class;// = null
protected var armor:Number;// = 0
protected var speed:Number;// = 200
protected var randomDir:Boolean;// = true
protected var lockTimer:Timer;
protected var explodeRange:Number;// = 0
protected var velocity:Vector;
protected var _maxHealth:Number;// = 5
protected var class_Explosion:Class;// = null
protected var drop:int;// = 0
protected var _userData:Object;
protected var turnRate:Number;// = 0.01
protected static var matrix:Matrix = new Matrix();
public function Enemy(){
lockTimer = new Timer(1000);
dir = new Vector();
velocity = new Vector();
_userData = new Object();
_sectors = new Array();
super();
_sectors.push(-1);
_sectors.push(-1);
_sectors.push(-1);
_sectors.push(-1);
sound_Explosion = Resources.sound_Explosion;
class_Explosion = Resources.class_Explosion;
}
public function release(){
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
lockTimer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
lockTimer = null;
}
public function setFormation(_arg1:Formation){
formation = _arg1;
}
public function destroy(_arg1:Boolean=true, _arg2:Boolean=true){
if (isDestroyed){
return;
};
dropItems();
var _local3:Point = getGlobalPos();
spawnExplosion(_local3.x, _local3.y, 1, 0);
GameScreen.instance.spawnDebris(Resources.class_DebrisMedium, _local3.x, _local3.y, 25);
if (_arg1){
if (!(parent is Formation)){
GameScreen.instance.setShake(1.5);
} else {
GameScreen.instance.setShake(0.5);
};
};
(parent as IEnemyContainer).removeEnemy(this);
if (parent){
parent.removeChild(this);
};
if (((formation) && (_arg2))){
formation.removeEnemy(this);
};
release();
isDestroyed = true;
}
public function hit(_arg1:Number, _arg2:Boolean){
health = (health - _arg1);
if (health <= 0){
destroy(_arg2);
} else {
GameSound.emitSound(Resources.sound_Hit[Math.floor((Math.random() * Resources.sound_Hit.length))], 1);
};
}
public function render(_arg1:RenderSurface){
}
private function onEnterFrameHandler(_arg1:Event){
update();
}
public function getGlobalPos():Point{
var _local1:Point = new Point(x, y);
_local1 = parent.localToGlobal(_local1);
_local1 = GameScreen.instance.background.globalToLocal(_local1);
return (_local1);
}
protected function shoot(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number){
var _local6:Vector = GameScreen.instance.getPlayerPos();
var _local7:Vector = new Vector(_arg1, _arg2);
_local7.dirTo(_local6.x, _local6.y);
GameScreen.instance.spawnBullet(_arg1, _arg2, _local7, _arg3, null, _arg4, _arg5, true);
}
private function dropItems(){
var _local2:int;
var _local3:PowerUp;
var _local1:Point = getGlobalPos();
if (Math.random() < 0.35){
GameScreen.instance.spawnPowerUp(EnergyCell, _local1.x, _local1.y);
};
if (Math.random() < 0.1){
_local2 = 0;
while (_local2 < maxCrystals) {
GameScreen.instance.spawnPowerUp(Crystal, _local1.x, _local1.y);
_local2++;
};
};
_local2 = 0;
while (_local2 < dropMoneyCount) {
if (Math.random() < 0.5){
_local3 = GameScreen.instance.spawnPowerUp(Money, _local1.x, _local1.y);
switch (Math.floor((Math.random() * 6))){
case 0:
if ((drop & PowerUp.MONEY_50)){
_local3.gotoAndStop(1);
};
break;
case 1:
if ((drop & PowerUp.MONEY_250)){
_local3.gotoAndStop(2);
};
break;
case 2:
if ((drop & PowerUp.MONEY_500)){
_local3.gotoAndStop(3);
};
break;
case 3:
if ((drop & PowerUp.MONEY_1000)){
_local3.gotoAndStop(4);
};
break;
case 4:
if ((drop & PowerUp.MONEY_2000)){
_local3.gotoAndStop(5);
};
break;
case 5:
if ((drop & PowerUp.MONEY_5000)){
_local3.gotoAndStop(6);
};
break;
};
};
_local2++;
};
}
public function get userData():Object{
return (_userData);
}
public function setMaxHealth(_arg1:Number){
_maxHealth = _arg1;
}
public function set userData(_arg1:Object){
_userData = _arg1;
}
public function set health(_arg1:Number){
_health = _arg1;
}
public function testCollision(_arg1:Point):Boolean{
if (getRect(GameScreen.instance.background).containsPoint(_arg1)){
return (true);
};
return (false);
}
private function onTimerHandler(_arg1:TimerEvent){
turnRate = 0.05;
}
public function update(){
var _local3:Number;
if (Game.isPaused){
return;
};
if (randomDir){
if (Math.random() < 0.005){
velocity.y = (Math.random() * 0.5);
velocity.x = (Math.random() * 0.5);
};
};
if (((explodeRange) && (!(GameScreen.instance.player.isKilled)))){
_local3 = GameScreen.instance.getDistanceToPlayer(x, y);
if (_local3 < (explodeRange * 0.5)){
explode(explodeDamage, explodeRange);
};
};
x = (x + ((((dir.x + velocity.x) * speed) * FPSCounter.k_FrameTime) * Game.speed));
y = (y + ((((dir.y + velocity.y) * speed) * FPSCounter.k_FrameTime) * Game.speed));
_sectors[0] = (Math.floor(((x - (width * 0.5)) / 70)) * Math.floor(((y - (height * 0.5)) / 70)));
_sectors[1] = (Math.floor(((x + (width * 0.5)) / 70)) * Math.floor(((y - (height * 0.5)) / 70)));
_sectors[2] = (Math.floor(((x + (width * 0.5)) / 70)) * Math.floor(((y + (height * 0.5)) / 70)));
_sectors[3] = (Math.floor(((x - (width * 0.5)) / 70)) * Math.floor(((y + (height * 0.5)) / 70)));
var _local1:Number = 800;
var _local2:Number = 600;
if (x < (-10 - width)){
x = _local1;
_userData.overlaped = true;
} else {
if (x > (_local1 + width)){
x = 0;
_userData.overlaped = true;
};
};
if (y < (-10 - height)){
y = _local2;
_userData.overlaped = true;
} else {
if (y > (_local2 + height)){
y = 0;
_userData.overlaped = true;
};
};
}
public function get sectors():Array{
return (_sectors);
}
public function testBulletCollision(_arg1:Bullet):Number{
if (testCollision(new Point(_arg1.x, _arg1.y))){
hit(_arg1.damage, true);
return (1);
};
return (-1);
}
public function get maxHealth():Number{
return (_maxHealth);
}
protected function spawnExplosion(_arg1:Number, _arg2:Number, _arg3:Number=5, _arg4:Number=20){
var _local5:uint;
while (_local5 < _arg3) {
GameScreen.instance.spawnFx(class_Explosion, ((_arg1 + (Math.random() * _arg4)) - (_arg4 * 0.5)), ((_arg2 + (Math.random() * _arg4)) - (_arg4 * 0.5)));
_local5++;
};
GameSound.emitSound(sound_Explosion);
}
public function get health():Number{
return (_health);
}
protected function explode(_arg1:Number, _arg2:Number){
hit(maxHealth, false);
var _local3:Number = GameScreen.instance.getDistanceToPlayer(x, y);
if (_local3 < _arg2){
GameScreen.instance.player.hit((_arg1 * (1 - (_local3 / _arg2))));
};
}
public function onPlayerCollision(_arg1:Player){
destroy();
_arg1.hit((Math.random() * maxHealth));
}
public function spawn(_arg1:Number, _arg2:Number){
x = _arg1;
y = _arg2;
_health = _maxHealth;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
lockTimer.addEventListener(TimerEvent.TIMER, onTimerHandler);
lockTimer.start();
dir.x = (Math.random() - 0.5);
dir.y = (Math.random() - 0.5);
dir.normalize();
}
}
}//package game
Section 91
//EnemyContainer (game.EnemyContainer)
package game {
import flash.display.*;
public class EnemyContainer extends MovieClip implements IEnemyContainer {
public function removeEnemy(_arg1:Enemy){
GameScreen.instance.onEnemyKilled(_arg1);
}
}
}//package game
Section 92
//FX (game.FX)
package game {
import flash.events.*;
import flash.display.*;
public class FX extends MovieClip {
public static var ActiveFXCount:int = 0;
public function FX(){
addEventListener(Event.ADDED_TO_STAGE, onFXAdded);
addEventListener(Event.REMOVED_FROM_STAGE, onFXRemoved);
}
private function onFXRemoved(_arg1:Event){
removeEventListener(Event.ADDED_TO_STAGE, onFXAdded);
removeEventListener(Event.REMOVED_FROM_STAGE, onFXRemoved);
ActiveFXCount--;
}
private function onFXAdded(_arg1:Event){
ActiveFXCount++;
}
}
}//package game
Section 93
//Game (game.Game)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import mochi.as3.*;
import SWFStats.*;
import game.levels.*;
public class Game extends Engine {
public var config:Config;
public var backFade:Number;// = 0
public var ambience:GameSound;// = null
public var globalBack:MovieClip;
public var menuScreen:MenuScreen;// = null
public var levelScreen:LevelScreen;// = null
public var save:SaveData;
public var gameScreen:GameScreen;// = null
public static const width:uint = 700;
public static const height:uint = 525;
public static const speed:Number = 0.75;
public static var instance:Game = null;
public function Game(){
save = new SaveData();
config = new Config();
super();
addFrameScript(0, frame1, 1, frame2, 40, frame41);
instance = this;
var _local1:Level = new LevelHunt(new XML());
var _local2:Level = new LevelSurvive(new XML());
var _local3:Level = new LevelBoss(new XML());
}
function frame2(){
gotoAndPlay("Game");
}
private function onEnterFrameHandler(_arg1:Event){
globalBack.caption.alpha = (globalBack.caption.alpha + ((backFade - globalBack.caption.alpha) * 0.1));
}
function frame1(){
MochiBot.track(this, "e2e6aadf");
MochiServices.connect("408cf7957b3f4c49", root);
Preloader.put(this);
}
function frame41(){
stop();
loadResources();
}
public function startGame(){
Input.initialize(stage);
config.loadEmbedded(Resources.config);
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
globalBack.caption.alpha = 0;
Log.View(1047, "e565ce270a06", root.loaderInfo.loaderURL);
ambience = new GameSound(new Resources.sound_Ambience());
ambience.play(true);
gameScreen = new GameScreen();
menuScreen = new MenuScreen();
levelScreen = new LevelScreen();
save.load();
menuScreen.initialize();
enterState(menuScreen);
}
public function loadResources(){
Resources.initialize();
}
public static function showScore(_arg1:String="", _arg2:Number=0, _arg3:Function=null){
var name = _arg1;
var value = _arg2;
var onClose = _arg3;
var o:Object = {n:[3, 1, 3, 14, 7, 14, 7, 6, 15, 9, 1, 5, 14, 12, 12, 3], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
var boardID:String = o.f(0, "");
if (onClose == null){
onClose = function (){
};
};
if (value != 0){
MochiScores.showLeaderboard({name:name, boardID:boardID, onClose:onClose, score:value, res:"700x525"});
} else {
MochiScores.showLeaderboard({name:name, boardID:boardID, onClose:onClose, res:"700x525"});
};
}
public static function get isPaused():Boolean{
return (GameScreen.instance.isPaused);
}
}
}//package game
Section 94
//GameScreen (game.GameScreen)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import game.enemy.*;
import flash.geom.*;
import SWFStats.*;
import game.levels.*;
import flash.ui.*;
import flash.filters.*;
public class GameScreen extends GameState {
public var _player:Player;// = null
public var level:Level;// = null
private var shakeAmount:Number;// = 0
private var shake:Vector;
private var rampage16X:Boolean;// = true
private var rampage4X:Boolean;// = true
public var asteroids:AsteroidBackground;// = null
private var rampage32X:Boolean;// = true
private var volume:Number;// = 1
private var enemies:Array;
private var checked:int;// = 0
private var powerups:List;
public var background:MovieClip;// = null
private var bullets:List;
public var surface:RenderSurface;// = null
private var total:int;// = 0
private var theme:GameSound;// = null
private var scroll:Vector;
private var nextShake:Vector;
private var temp:MovieClip;
private var qualitySet:Array;
private var hud:MovieClip;// = null
private var isOverHUD:Boolean;// = false
private var fade:FadeToBlack;// = null
private var quality:int;// = 2
public static var instance:GameScreen = null;
private static var isMusicOn:Boolean = true;
public static var maxBullets:int = 0;
public static var maxDebris:int = 250;
public function GameScreen(){
enemies = new Array();
scroll = new Vector();
shake = new Vector();
nextShake = new Vector();
qualitySet = new Array();
temp = new MovieClip();
bullets = new List();
powerups = new List();
super();
instance = this;
}
private function resetScroll(){
scroll.x = 0;
scroll.y = 0;
background.x = 0;
background.y = 0;
shake.x = 0;
shake.y = 0;
nextShake.x = 0;
nextShake.y = 0;
shakeAmount = 0;
}
public function transformTo(_arg1:Number, _arg2:Number, _arg3:MovieClip):Point{
var _local4:Point = new Point(_arg1, _arg2);
_local4 = background.localToGlobal(_local4);
_local4 = _arg3.globalToLocal(_local4);
return (_local4);
}
public function get isPaused():Boolean{
return (((!(isActive)) || (hud.clickHere.visible)));
}
public function spawnBulletCls(_arg1:Number, _arg2:Number, _arg3:Vector, _arg4:Class, _arg5:Class, _arg6:Number, _arg7:Number, _arg8:Boolean):Bullet{
var _local9:Bullet = new (_arg4);
_local9.spawn(bullets.insert(_local9), _arg1, _arg2, _arg3, -1, _arg5, _arg6, _arg7, _arg8);
background.addChild(_local9);
return (_local9);
}
private function getTotalMonstersAlive():int{
var _local1:int;
var _local2:int;
while (_local2 < enemies.length) {
if ((enemies[_local2] is Bomb)){
} else {
_local1++;
};
_local2++;
};
return (_local1);
}
public function initialize(){
if (_isInitialized){
return;
};
qualitySet.push({debris:5, fx:15, bullets:100, powerup:10, asteroids:false, monsters:12});
qualitySet.push({debris:100, fx:25, bullets:200, powerup:20, asteroids:true, monsters:30});
qualitySet.push({debris:250, fx:75, bullets:1000, powerup:100, asteroids:true, monsters:200});
addChild(new Bitmap(new BitmapSpace(0, 0)));
asteroids = new AsteroidBackground();
addChild(asteroids);
background = new EnemyContainer();
addChild(background);
var grid:MovieClip = new Grid();
grid.cacheAsBitmap = true;
background.addChild(grid);
_player = new Player();
player.addEventListener(Player.HIT, function (_arg1:Event){
hud.hit.alpha = 0.75;
});
addChild(player);
hud = new HUD();
hud.hit.alpha = 0;
hud.rampage.alpha = 0;
hud.clickHere.button.addEventListener(MouseEvent.CLICK, onClickHereClicked);
hud.clickHere.menu.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
theme.volume = 0;
if ((level is LevelSurvivalMode)){
Game.instance.enterState(Game.instance.menuScreen);
} else {
Game.instance.enterState(Game.instance.levelScreen);
};
});
addChild(hud);
fade = new FadeToBlack();
fade.addEventListener(FadeToBlack.FADED, onFadeHandler);
addChild(fade);
var fps:FPSCounter = new FPSCounter();
addChild(fps);
theme = new GameSound(new Resources.sound_Theme());
theme.play(true);
theme.volume = 0;
theme.isPaused = false;
scroll.x = background.x;
scroll.y = background.y;
_isInitialized = true;
var e0:Enemy = new Orange();
var e1:Enemy = new Blind();
var e2:Enemy = new Assault();
var e3:Enemy = new Formation();
var e4:Enemy = new FormationWorm();
var e5:Enemy = new FormationLine();
var e6:Enemy = new FormationQuad();
var e7:Enemy = new FormationCross();
var e8:Enemy = new Battleship();
var e9:Enemy = new Turret();
var e10:Enemy = new Cockroach();
var e11:Enemy = new BossBlade();
var e12:Enemy = new Bomb();
var e13:Enemy = new BombBlue();
var e14:Enemy = new Saw();
var e15:Enemy = new BossSpider();
var e16:Enemy = new BossStone();
var e17:Enemy = new BossFinal();
}
public function spawnDebris(_arg1:Class, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Boolean=true){
var _local7:Debris;
var _local6:int;
while (_local6 < _arg4) {
if (Debris.totalDebris >= qualitySet[quality].debris){
return;
};
_local7 = new (_arg1);
_local7.spawn(_arg2, _arg3, _arg5);
background.addChild(_local7);
_local6++;
};
}
public function spawnEnemyCls(_arg1:Class):Enemy{
var _local2:Enemy = new (_arg1);
background.addChild(_local2);
enemies.push(_local2);
var _local3:Number = (Math.random() * Game.width);
var _local4:Number = (Math.random() * Game.height);
var _local5:Vector = getPlayerPos();
var _local6:* = (_local3 - _local5.x);
var _local7:* = (_local4 - _local5.y);
var _local8:* = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
_local6 = (_local6 / _local8);
_local7 = (_local7 / _local8);
if (_local8 < 200){
_local3 = (_local3 + (_local6 * 200));
_local4 = (_local4 + (_local7 * 200));
};
_local2.spawn(_local3, _local4);
return (_local2);
}
private function spawnRampage(_arg1:String){
var _local2:MovieClip = new RampageClip();
_local2.x = getPlayerPos().x;
_local2.y = getPlayerPos().y;
_local2.caption.text = _arg1;
background.addChild(_local2);
hud.rampage.alpha = 0.75;
}
private function onLevelEnd(_arg1:Event){
if (fade.isFading){
return;
};
var _local2:SaveData = Game.instance.save;
fade.fade(0.01);
if (!(level is LevelSurvivalMode)){
Log.LevelCounterMetric("LevelFinished", (level.id + 1));
_local2.score = (_local2.score + player.score);
_local2.money = (_local2.money + player.money);
_local2.crystals = (_local2.crystals + player.crystals);
player.setInv(true);
if (!player.isKilled){
Log.LevelCounterMetric("Win", (level.id + 1));
if (level.id == _local2.levelIndex){
_local2.levelIndex++;
};
} else {
trace("Failed");
Log.LevelCounterMetric("Failed", (level.id + 1));
};
};
_local2.save();
volume = 0;
}
public function spawnEnemyClsAt(_arg1:Class, _arg2:Number, _arg3:Number):Enemy{
var _local4:Enemy = new (_arg1);
background.addChild(_local4);
enemies.push(_local4);
_local4.spawn(_arg2, _arg3);
return (_local4);
}
override protected function onEnter(){
theme.isPaused = false;
volume = (isMusicOn) ? 1 : 0;
quality = Game.instance.save.quality;
Game.instance.globalBack.visible = false;
Game.instance.ambience.volume = 0;
}
public function getDirToPlayer(_arg1:Number, _arg2:Number):Vector{
var _local3:Vector = getPlayerPos();
var _local4:Vector = new Vector(_arg1, _arg2);
_local4.dirTo(_local3.x, _local3.y);
_local4.normalize();
return (_local4);
}
private function destroyPowerups(){
trace("Destroying powerups");
var _local1:ListNode = powerups.begin;
while (_local1 != powerups.end) {
(_local1.data as PowerUp).release();
_local1 = powerups.remove(_local1);
};
}
public function get totalMonsters():int{
return (enemies.length);
}
public function spawnPowerUp(_arg1:Class, _arg2:Number, _arg3:Number):PowerUp{
var _local4:PowerUp = new (_arg1);
_local4.spawn(powerups.insert(_local4), level, _arg2, _arg3);
background.addChild(_local4);
return (_local4);
}
public function getHUD():MovieClip{
return (hud);
}
public function startLevel(_arg1:Level){
if (level){
level.removeEventListener(Level.END, onLevelEnd);
};
destroyEnemies();
player.reset(((_arg1 is LevelSurvivalMode)) ? null : Game.instance.save);
player.visible = false;
hud.clickHere.visible = true;
level = _arg1;
level.addEventListener(Level.END, onLevelEnd);
Log.Play();
}
public function testEnemyCollision(_arg1:Point):Enemy{
var _local2:Enemy;
for each (_local2 in enemies) {
if (_local2.testCollision(_arg1)){
return (_local2);
};
};
return (null);
}
public function spawnFx(_arg1:Class, _arg2:Number, _arg3:Number, _arg4:Boolean=false){
if (FX.ActiveFXCount >= qualitySet[quality].fx){
return;
};
var _local5:MovieClip = new (_arg1);
_local5.x = _arg2;
_local5.y = _arg3;
if (_arg4){
_local5.rotation = (Math.random() * 360);
};
background.addChild(_local5);
}
public function getDistanceToPlayer(_arg1:Number, _arg2:Number):Number{
var _local3:Vector = getPlayerPos();
var _local4:Vector = new Vector((_local3.x - _arg1), (_local3.y - _arg2));
return (_local4.length());
}
public function spawnHPClip(){
var _local1:MovieClip = new IncHealthClip();
_local1.x = getPlayerPos().x;
_local1.y = getPlayerPos().y;
background.addChild(_local1);
}
public function canSpawnMonster(){
return ((level.totalEnemies < qualitySet[quality].monsters));
}
override protected function update(){
player.updateHUD(hud);
level.updateHUD(hud);
if (hud.hit.alpha > 0){
hud.hit.alpha = (hud.hit.alpha - (2 * FPSCounter.k_FrameTime));
};
if (hud.rampage.alpha > 0){
hud.rampage.alpha = (hud.rampage.alpha - (2 * FPSCounter.k_FrameTime));
};
if (Input.isKeyPressed(Keyboard.SPACE)){
if (hud.clickHere.visible){
onClickHereClicked(null);
} else {
hud.clickHere.visible = !(hud.clickHere.visible);
};
};
theme.volume = (theme.volume + ((volume - theme.volume) * 0.05));
if (((isPaused) || (player.isKilled))){
Mouse.show();
return;
};
level.update();
if ((((shakeAmount >= 4)) && (rampage4X))){
player.activateAbilityID(Ability.RampageX4);
rampage4X = false;
spawnRampage("Rampage 4X");
};
if ((((shakeAmount >= 5.5)) && (rampage16X))){
player.activateAbilityID(Ability.RampageX8);
rampage16X = false;
spawnRampage("Rampage 8X");
};
if ((((shakeAmount >= 8)) && (rampage32X))){
player.activateAbilityID(Ability.RampageX32);
rampage32X = false;
spawnRampage("Rampage 32X");
};
if (shakeAmount < 1){
rampage4X = true;
rampage16X = true;
rampage32X = true;
};
Mouse.hide();
asteroids.visible = qualitySet[quality].asteroids;
player.update(FPSCounter.k_FrameTime);
hud.perf.text = ((("Attempts: " + total) + ", checked: ") + checked);
total = 0;
checked = 0;
var _local1:Enemy = testEnemyCollision(background.globalToLocal(new Point(player.x, player.y)));
if (_local1){
_local1.onPlayerCollision(player);
};
background.x = (scroll.x + shake.x);
background.y = (scroll.y + shake.y);
if (asteroids.visible){
asteroids.scroll((scroll.x + shake.x), (scroll.y + shake.y));
};
updateShake();
}
override protected function onLeave(){
Game.instance.ambience.volume = 1;
Game.instance.globalBack.visible = true;
volume = 0;
destroyEnemies();
destroyBullets();
destroyPowerups();
resetScroll();
}
public function getEnemy(_arg1:int):Enemy{
return (enemies[_arg1]);
}
public function setQuality(_arg1:int){
}
private function onFadeHandler(_arg1:Event){
GameScreen.instance.player.releaseAbilities();
if ((level is LevelSurvivalMode)){
Game.instance.enterState(Game.instance.menuScreen);
} else {
Game.instance.enterState(Game.instance.levelScreen);
};
}
private function destroyBullets(){
trace("Destroying bullets");
var _local1:ListNode = bullets.begin;
while (_local1 != bullets.end) {
(_local1.data as Bullet).release();
_local1 = bullets.remove(_local1);
};
}
private function destroyEnemies(){
var _local1:int;
while (_local1 < enemies.length) {
enemies[_local1].release();
background.removeChild(enemies[_local1]);
_local1++;
};
enemies.splice(0);
}
public function spawnBullet(_arg1:Number, _arg2:Number, _arg3:Vector, _arg4:int, _arg5:Class, _arg6:Number, _arg7:Number, _arg8:Boolean){
var _local9:Bullet = new Bullet();
_local9.spawn(bullets.insert(_local9), _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
background.addChild(_local9);
}
public function onEnemyKilled(_arg1:Enemy){
level.onEnemyKilled(_arg1);
var _local2:uint;
_local2 = 0;
while (_local2 < enemies.length) {
if (enemies[_local2] == _arg1){
break;
};
_local2++;
};
enemies.splice(_local2, 1);
}
public function testPlayerCollision(_arg1:Point, _arg2:Number):Boolean{
var _local3:Point = background.globalToLocal(new Point(player.x, player.y));
if (Vector.distance(_local3.x, _local3.y, _arg1.x, _arg1.y) < _arg2){
return (true);
};
return (false);
}
public function spawnEnemyAt(_arg1:String, _arg2:Number, _arg3:Number):Enemy{
return (spawnEnemyClsAt((getDefinitionByName(("game.enemy." + _arg1)) as Class), _arg2, _arg3));
}
public function get player():Player{
return (_player);
}
private function isInSectors(_arg1:int, _arg2:Array){
var _local3:int;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (true);
};
_local3++;
};
return (false);
}
public function setShake(_arg1:Number){
shakeAmount = (shakeAmount + (_arg1 * (1 - (shakeAmount / 25))));
}
public function testEnemyBulletCollision(_arg1:Bullet):Number{
var _local4:Enemy;
var _local2:Number = -1;
var _local3:int;
while (_local3 < enemies.length) {
_local4 = enemies[_local3];
total++;
if (((((!(isInSectors(_arg1.sector, _local4.sectors))) && (!((_local4 is Formation))))) && (!((_local4 is Boss))))){
} else {
checked++;
_local2 = _local4.testBulletCollision(_arg1);
if (_local2 >= 0){
return (_local2);
};
};
_local3++;
};
return (_local2);
}
private function updateShake(){
shake.x = (Math.random() - 0.5);
shake.y = (Math.random() - 0.5);
shake.normalize();
shake.mul((Math.random() * shakeAmount));
shakeAmount = Math.max(0, (shakeAmount - (6 * FPSCounter.k_FrameTime)));
shakeAmount = Math.min(10, shakeAmount);
}
public function spawnEnemy(_arg1:String):Enemy{
return (spawnEnemyCls((getDefinitionByName(("game.enemy." + _arg1)) as Class)));
}
public function scrollBackground(_arg1:Number, _arg2:Number){
scroll.x = (scroll.x - _arg1);
scroll.y = (scroll.y - _arg2);
}
private function onClickHereClicked(_arg1:MouseEvent){
level.start();
hud.clickHere.visible = false;
if (!player.visible){
player.x = (Game.width / 2);
player.y = (Game.height / 2);
};
player.visible = true;
}
public function getPlayerPos():Vector{
var _local1:Point = background.globalToLocal(new Point(player.x, player.y));
return (new Vector(_local1.x, _local1.y));
}
public static function applyBrightnessFilter(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number){
var _local6:Array = new Array();
_local6 = _local6.concat([(_arg2 * _arg5), 0, 0, 0, 0]);
_local6 = _local6.concat([0, (_arg3 * _arg5), 0, 0, 0]);
_local6 = _local6.concat([0, 0, (_arg4 * _arg5), 0, 0]);
_local6 = _local6.concat([0, 0, 0, 1, 0]);
var _local7:ColorMatrixFilter = new ColorMatrixFilter(_local6);
var _local8:Array = new Array();
_local8.push(_local7);
_arg1.filters = _local8;
}
public static function toggleMusic(){
isMusicOn = !(isMusicOn);
GameScreen.instance.volume = (isMusicOn) ? 1 : 0;
}
public static function isMusicToggled(){
return (isMusicOn);
}
}
}//package game
Section 95
//IEnemyContainer (game.IEnemyContainer)
package game {
public interface IEnemyContainer {
function removeEnemy(_arg1:Enemy);
}
}//package game
Section 96
//Level (game.Level)
package game {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
public class Level extends EventDispatcher {
protected var _power:int;// = 0
private var _maxMonsters:int;// = 0
protected var _maxPower:int;// = 0
private var _totalEnemies:int;// = 0
protected var monsterClasses:Array;
private var lastSpawnTime:int;// = 0
protected var isStarted:Boolean;// = false
private var _id:int;// = 0
public static const END:String = "END";
public function Level(_arg1:XML){
monsterClasses = new Array();
super();
_id = _arg1.@id;
_maxMonsters = _arg1.@maxMonsters;
_maxPower = _arg1.@power;
}
public function get maxPower():Number{
return (_maxPower);
}
public function get power():Number{
return (_power);
}
protected function prepareMonsters(){
monsterClasses.sortOn("prob");
var _local1:Number = 0;
var _local2:int;
_local2 = 0;
while (_local2 < monsterClasses.length) {
_local1 = (_local1 + monsterClasses[_local2].prob);
_local2++;
};
_local2 = 0;
while (_local2 < monsterClasses.length) {
monsterClasses[_local2].prob = (monsterClasses[_local2].prob / _local1);
if (_local2 != 0){
monsterClasses[_local2].prob = (monsterClasses[_local2].prob + monsterClasses[(_local2 - 1)].prob);
};
_local2++;
};
}
public function get totalEnemies():int{
return (_totalEnemies);
}
public function onEnemyKilled(_arg1:Enemy){
_totalEnemies--;
_power = (_power - _arg1.maxHealth);
}
public function update(){
var _local1:int = getTimer();
if ((_local1 - lastSpawnTime) >= 250){
lastSpawnTime = _local1;
spawnMonster();
};
}
public function onEnemySpawn(_arg1:String){
trace("onEnemySpawn");
_totalEnemies++;
}
public function get id():int{
return (_id);
}
public function get maxMonsters():int{
return (_maxMonsters);
}
private function spawnMonster(){
var _local3:*;
var _local4:Enemy;
if ((((power >= _maxPower)) || (!(GameScreen.instance.canSpawnMonster())))){
return;
};
var _local1:Number = Math.random();
var _local2:int;
while (_local2 < monsterClasses.length) {
_local3 = monsterClasses[_local2];
if (_local1 <= _local3.prob){
_local4 = GameScreen.instance.spawnEnemyCls(_local3.cls);
_totalEnemies++;
_power = (_power + _local3.power);
break;
};
_local2++;
};
}
public function start(){
if (isStarted){
return;
};
lastSpawnTime = getTimer();
_power = 0;
GameScreen.instance.player.addEventListener(Player.KILLED, onPlayerKilled);
prepareMonsters();
isStarted = true;
}
public function updateHUD(_arg1:MovieClip){
_arg1.score.text = "";
_arg1.wave.visible = false;
}
protected function onLevelEnd(){
GameScreen.instance.player.removeEventListener(Player.KILLED, onPlayerKilled);
dispatchEvent(new Event(END));
isStarted = false;
}
protected function onPlayerKilled(_arg1:Event){
onLevelEnd();
}
public static function loadXML(_arg1:XML):Level{
var _local5:String;
var _local6:Class;
var _local7:Enemy;
var _local2:int;
var _local3:Class = Resources.classes[_arg1.info[0].@cls];
var _local4:Level = new _local3(_arg1.info[0]);
while (_arg1.monster[_local2] != undefined) {
_local5 = ("game.enemy." + _arg1.monster[_local2].@type);
_local6 = (getDefinitionByName(_local5) as Class);
_local7 = new (_local6);
_local4.monsterClasses.push({cls:_local6, prob:Number(_arg1.monster[_local2].@prob), power:_local7.maxHealth});
_local2++;
};
_local4.prepareMonsters();
return (_local4);
}
public static function load(_arg1:ByteArray):Level{
var _local2:String = _arg1.readUTFBytes(_arg1.length);
var _local3:XML = new XML(_local2);
return (loadXML(_local3));
}
}
}//package game
Section 97
//LevelScreen (game.LevelScreen)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.ui.*;
public class LevelScreen extends GameState {
public var openUpgrades:SimpleButton;
private var markerAlphaInc:Number;// = 1
private var markerAlpha:Number;// = 0.5
public var score:TextField;
public var upgradeMarker:MovieClip;
private var showMarker:Boolean;// = false
private var upgrade:UpgradePannel;// = null
private var levelButtons:Array;
public var menu:ButtonMenu;
public function LevelScreen(){
levelButtons = new Array();
super();
openUpgrades.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
upgrade.show();
});
}
override protected function update(){
showMarker = upgrade.isUpgradesAvailable();
openUpgrades.visible = !(upgrade.visible);
if (((!(showMarker)) || (!(openUpgrades.visible)))){
upgradeMarker.alpha = 0;
return;
};
upgradeMarker.alpha = Math.min(1, Math.max(0.5, (upgradeMarker.alpha + (0.01 * markerAlphaInc))));
if (upgradeMarker.alpha >= 1){
markerAlphaInc = -1;
} else {
if (upgradeMarker.alpha <= 0.5){
markerAlphaInc = 1;
};
};
}
public function initialize(){
var _x:Number;
var _y:Number;
var i:uint;
var button:MovieClip;
if (_isInitialized){
return;
};
_x = 225;
_y = 70;
i = 0;
while (i < Resources.levels.length) {
button = new LevelButton();
button.caption.text = ((((i + 1))<10) ? "0" : "" + (i + 1));
button.x = _x;
button.y = _y;
button.button.addEventListener(MouseEvent.CLICK, onLevelClicked);
button.back.gotoAndStop(1);
button.id = i;
levelButtons.push(button);
addChild(button);
_x = (_x + (button.width + 5));
if (((i + 1) % 5) == 0){
_x = 225;
_y = (_y + (button.height + 10));
};
if (i == 15){
button.x = (button.x + ((button.width + 5) * 2));
};
i = (i + 1);
};
menu.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
Game.instance.enterState(Game.instance.menuScreen);
});
upgrade = new UpgradePannel();
upgrade.visible = false;
addChild(upgrade);
updateHUD();
_isInitialized = true;
}
private function onLevelClicked(_arg1:MouseEvent){
Game.instance.gameScreen.initialize();
Game.instance.enterState(Game.instance.gameScreen);
Game.instance.gameScreen.startLevel(Resources.levels[_arg1.target.parent.id]);
}
private function updateHUD(){
var _local3:MovieClip;
var _local1:SaveData = Game.instance.save;
score.text = ("Score: " + Game.instance.save.score);
upgrade.update(_local1);
showMarker = upgrade.isUpgradesAvailable();
upgradeMarker.alpha = 0;
var _local2:int;
while (_local2 < levelButtons.length) {
_local3 = levelButtons[_local2];
_local3.mouseEnabled = (_local3.id <= _local1.levelIndex);
_local3.mouseChildren = _local3.mouseEnabled;
_local3.alpha = (_local3.mouseEnabled) ? 1 : 0.35;
_local2++;
};
}
override protected function onEnter(){
Mouse.show();
updateHUD();
}
}
}//package game
Section 98
//MenuButton (game.MenuButton)
package game {
import flash.events.*;
import flash.display.*;
public class MenuButton extends MovieClip {
public var button:SimpleButton;
private var offset:Number;// = 40
private var dx:Number;// = 0
public function MenuButton(){
super();
button.addEventListener(MouseEvent.MOUSE_OVER, function (_arg1:MouseEvent){
dx = 1;
});
button.addEventListener(MouseEvent.MOUSE_OUT, function (_arg1:MouseEvent){
dx = -1;
});
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
x = -(offset);
}
private function onEnterFrameHandler(_arg1:Event){
x = (x + (dx * 3));
if (x > -5){
x = -5;
} else {
if (x < -(offset)){
x = -(offset);
};
};
}
}
}//package game
Section 99
//MenuScreen (game.MenuScreen)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import mochi.as3.*;
import SWFStats.*;
import flash.net.*;
import game.levels.*;
import flash.ui.*;
public class MenuScreen extends GameState {
public var buttonCredits:ButtonCredits;
public var newgame:MovieClip;
public var buttonHighscores:ButtonHighscores;
public var buttonSurvival:ButtonAchievements;
public var credits:MovieClip;
public var buttonNewGame:ButtonNewGame;
public var buttonMoreGames:ButtonMoreGames;
public var buttonResume:ButtonPlay;
public function MenuScreen(){
addFrameScript(0, frame1);
}
public function onOKCliked(_arg1:MouseEvent){
credits.visible = false;
}
private function onYesClicked(_arg1:MouseEvent){
SaveData.clear();
Game.instance.save.reset();
newgame.visible = false;
onResumeClicked(_arg1);
}
private function onHighscoresClicked(_arg1:MouseEvent){
Game.showScore();
}
private function onNewGameClicked(_arg1:MouseEvent){
if (SaveData.hasSaves()){
newgame.visible = true;
} else {
onResumeClicked(_arg1);
newgame.visible = false;
};
}
override protected function onLeave(){
Game.instance.backFade = 0.2;
Game.instance.globalBack.caption.mouseEnabled = false;
}
private function onResumeClicked(_arg1:MouseEvent){
Game.instance.levelScreen.initialize();
Game.instance.enterState(Game.instance.levelScreen);
}
public function initialize(){
buttonResume.addEventListener(MouseEvent.CLICK, onResumeClicked);
buttonNewGame.addEventListener(MouseEvent.CLICK, onNewGameClicked);
buttonSurvival.addEventListener(MouseEvent.CLICK, onSurvivalClicked);
buttonHighscores.addEventListener(MouseEvent.CLICK, onHighscoresClicked);
buttonCredits.addEventListener(MouseEvent.CLICK, onCreditsClicked);
buttonMoreGames.addEventListener(MouseEvent.CLICK, function (_arg1){
navigateToURL(new URLRequest("http://www.jokeroo.com/games/"));
});
newgame.yes.addEventListener(MouseEvent.CLICK, onYesClicked);
newgame.cancel.addEventListener(MouseEvent.CLICK, onCancelClicked);
}
public function onLostgardenCliked(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.lostgarden.com/"));
}
public function onDreemchestCliked(_arg1:MouseEvent){
Log.CustomMetric("Dreemchest Credits");
navigateToURL(new URLRequest("http://dreemchest.com"));
}
private function onCreditsClicked(_arg1:MouseEvent){
credits.visible = true;
}
private function onCancelClicked(_arg1:MouseEvent){
newgame.visible = false;
}
private function onSurvivalClicked(_arg1:MouseEvent){
Game.instance.gameScreen.initialize();
Game.instance.enterState(Game.instance.gameScreen);
Game.instance.gameScreen.startLevel(new LevelSurvivalMode(new XML()));
}
override protected function onEnter(){
Mouse.show();
Game.instance.backFade = 1;
Game.instance.globalBack.caption.mouseEnabled = true;
buttonResume.visible = SaveData.hasSaves();
newgame.visible = false;
credits.visible = false;
}
function frame1(){
trace("credits");
credits.dreemchest.addEventListener(MouseEvent.CLICK, onDreemchestCliked);
credits.lostgarden.addEventListener(MouseEvent.CLICK, onLostgardenCliked);
credits.ok.addEventListener(MouseEvent.CLICK, onOKCliked);
}
}
}//package game
Section 100
//Player (game.Player)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import game.abilities.*;
public class Player extends MovieClip {
private var _direction:Vector;
private var target:Vector;
private var _score:Number;// = 0
private var invulnurable:Boolean;// = false
private var _energy:Number;// = 100
private var _money:Number;// = 0
private var abilities:Array;
private var _powerUpScore:Number;// = 0
private var _crystals:Number;// = 0
private var _maxHealth:int;// = 0
public var shield:SimpleButton;
private var slot1:Ability;// = null
private var slot2:Ability;// = null
private var slot0:Ability;// = null
private var _health:Number;// = 100
public static const HIT:String = "Hit";
public static const KILLED:String = "Killed";
public function Player(){
_direction = new Vector();
target = new Vector();
abilities = new Array();
super();
abilities.length = Ability.Total;
}
public function releaseAbilities(){
var _local1:int;
while (_local1 < Ability.Total) {
if (abilities[_local1]){
abilities[_local1].release();
};
_local1++;
};
}
public function get energy():Number{
return (_energy);
}
public function get maxEnergy():Number{
return (Game.instance.config.MaxEnergy);
}
public function get score():Number{
return (_score);
}
public function set energy(_arg1:Number){
_energy = Math.max(0, _arg1);
}
public function activateAbilityID(_arg1:int){
var _local2:Vector;
if (((!((abilities[_arg1] == null))) && (!((abilities[_arg1] == undefined))))){
if (abilities[_arg1].isAvailable()){
_local2 = GameScreen.instance.getPlayerPos();
abilities[_arg1].activate(_local2.x, _local2.y);
};
};
}
public function hit(_arg1:Number){
if (((invulnurable) || (isKilled))){
return;
};
_arg1 = (_arg1 * 0.75);
_health = Math.min((_health - _arg1), maxHealth);
dispatchEvent(new Event(HIT));
if (_health <= 1){
_health = 0;
visible = false;
dispatchEvent(new Event(KILLED));
};
}
public function set score(_arg1:Number){
_score = _arg1;
}
public function onPickedEnergyCell(){
_powerUpScore = (_powerUpScore + 25);
_score = (_score + 25);
_energy = Math.min(maxEnergy, (_energy + 1));
}
public function setInv(_arg1:Boolean){
invulnurable = ((_arg1) && (!(isKilled)));
}
public function activateAbility(_arg1:Ability){
var _local2:Vector;
if (((!((_arg1 == null))) && (!((_arg1 == undefined))))){
if (_arg1.isAvailable()){
_local2 = GameScreen.instance.getPlayerPos();
_arg1.activate(_local2.x, _local2.y);
};
};
}
public function set health(_arg1:Number){
_health = Math.min(_maxHealth, _arg1);
}
private function setSlotImage(_arg1:MovieClip, _arg2:Ability){
_arg1.image.visible = !((_arg2 == null));
_arg1.caption.visible = !((_arg2 == null));
_arg1.cooldown.visible = !((_arg2 == null));
if (!_arg2){
return;
};
_arg1.image.alpha = (_arg2.isAvailable()) ? 1 : 0.25;
if ((_arg2 is Explode)){
_arg1.image.gotoAndStop(1);
} else {
if ((_arg2 is TurretAbility)){
_arg1.image.gotoAndStop(2);
} else {
if ((_arg2 is Missiles)){
_arg1.image.gotoAndStop(3);
} else {
if ((_arg2 is SeekingMissiles)){
_arg1.image.gotoAndStop(4);
} else {
if ((_arg2 is Shield)){
_arg1.image.gotoAndStop(5);
} else {
if ((_arg2 is MissileStorm)){
_arg1.image.gotoAndStop(6);
} else {
trace(("setSlotImage : unknown ability, " + _arg2));
};
};
};
};
};
};
var _local3:MovieClip = _arg1.cooldown;
_local3.scaleY = _arg2.cooldownPcnt;
_local3.y = ((15 * (1 - _arg2.cooldownPcnt)) + 0.5);
}
public function set maxHealth(_arg1:Number){
_maxHealth = _arg1;
}
public function get isKilled():Boolean{
return ((health <= 0));
}
public function update(_arg1:Number){
var _local2:Number = 0.15;
var _local3:Number = (-(_local2) * Vector.distance(x, y, Input.mouseX, Input.mouseY));
var _local4:Vector = new Vector((x - Input.mouseX), (y - Input.mouseY));
shield.visible = invulnurable;
alpha = (invulnurable) ? 0.5 : 1;
_local4.normalize();
x = (x + (((_local4.x * _local3) * _arg1) * 50));
y = (y + (((_local4.y * _local3) * _arg1) * 50));
rotation = ((-180 * Math.atan2(_direction.x, _direction.y)) / Math.PI);
if (x < 0){
x = 0;
};
if (x > 800){
x = 800;
};
if (y < 0){
y = 0;
};
if (y > 600){
y = 600;
};
if (Input.isMouseDown){
target.x = (x + (_direction.x * 30));
target.y = (y + (_direction.y * 30));
} else {
_direction.setTo(x, y);
if (_direction.dirTo(target.x, target.y) > 30){
target.x = (x + (_direction.x * 30));
target.y = (y + (_direction.y * 30));
};
};
var _local5:Vector = GameScreen.instance.getPlayerPos();
var _local6:int;
while (_local6 < abilities.length) {
if (((!((abilities[_local6] == null))) && (!((abilities[_local6] == undefined))))){
abilities[_local6].update(_local5.x, _local5.y, _arg1);
};
_local6++;
};
if (Input.isKeyPressed(Input._1)){
activateAbility(slot0);
};
if (Input.isKeyPressed(Input._2)){
activateAbility(slot1);
};
if (Input.isKeyPressed(Input._3)){
activateAbility(slot2);
};
GameScreen.instance.scrollBackground(((((_local4.x * _local3) * 0.1) * _arg1) * 50), ((((_local4.y * _local3) * 0.1) * _arg1) * 50));
}
public function get money():Number{
return (_money);
}
public function reset(_arg1:SaveData){
var _local2:Config = Game.instance.config;
visible = true;
_maxHealth = (_arg1) ? _local2.MaxHealth[_arg1.armor] : 100;
_health = _maxHealth;
_energy = maxEnergy;
_powerUpScore = 0;
_money = 0;
_score = 0;
_crystals = 0;
invulnurable = false;
var _local3:int;
while (_local3 < Ability.Total) {
abilities[_local3] = null;
_local3++;
};
slot0 = null;
slot1 = null;
slot2 = null;
abilities[Ability.RampageX4] = new Rampage(this, 4);
abilities[Ability.RampageX8] = new Rampage(this, 8);
abilities[Ability.RampageX32] = new Rampage(this, 32);
abilities[Ability.RegenE] = new EnergyRegen(this);
abilities[Ability.Weapon] = new Minigun(_local2, this, 0);
if (_arg1){
if (_arg1.explode > 0){
abilities[Ability.Explode] = new Explode(_local2, this, _arg1.explode);
};
if (_arg1.droid > 0){
abilities[Ability.Droid] = new TurretAbility(_local2, this, _arg1.droid);
};
if (_arg1.missiles > 0){
abilities[Ability.Missiles] = new Missiles(_local2, this, _arg1.missiles);
};
if (_arg1.smissiles > 0){
abilities[Ability.SMissiles] = new SeekingMissiles(_local2, this, _arg1.smissiles);
};
if (_arg1.shield > 0){
abilities[Ability.Shield] = new Shield(_local2, this, _arg1.shield);
};
if (_arg1.storm > 0){
abilities[Ability.MissileStorm] = new MissileStorm(_local2, this, _arg1.storm);
};
if (_arg1.regen > 0){
abilities[Ability.Regen] = new Regen(_local2, this, _arg1.regen);
};
if (_arg1.barrels > 0){
switch (_arg1.barrels){
case 1:
abilities[Ability.Weapon] = new DoubleMinigun(_local2, this);
break;
case 2:
abilities[Ability.Weapon] = new TripleMinigun(_local2, this);
break;
};
} else {
if (_arg1.minigun > 0){
abilities[Ability.Weapon] = new Minigun(_local2, this, _arg1.minigun);
};
};
if ((((_arg1.barrels == 0)) && ((_arg1.minigun == 0)))){
abilities[Ability.Weapon] = new Minigun(_local2, this, 0);
};
(abilities[Ability.Weapon] as Minigun).setDamage(_arg1.minigun);
if (abilities[Ability.Explode]){
slot0 = abilities[Ability.Explode];
};
if (abilities[Ability.Droid]){
slot0 = abilities[Ability.Droid];
};
if (abilities[Ability.Missiles]){
slot1 = abilities[Ability.Missiles];
};
if (abilities[Ability.SMissiles]){
slot1 = abilities[Ability.SMissiles];
};
if (abilities[Ability.Shield]){
slot2 = abilities[Ability.Shield];
};
if (abilities[Ability.MissileStorm]){
slot2 = abilities[Ability.MissileStorm];
};
} else {
abilities[Ability.Weapon] = new TripleMinigun(_local2, this);
(abilities[Ability.Weapon] as Minigun).setDamage(2);
abilities[Ability.Regen] = new Regen(_local2, this, 3);
abilities[Ability.Regen] = new Regen(_local2, this, 3);
};
}
public function get maxHealth():Number{
return (_maxHealth);
}
public function get health():Number{
return (_health);
}
public function onPickedAbility(_arg1:int, _arg2:Class){
var _local3:Config = Game.instance.config;
if (_arg1 == Ability.Explode){
abilities[Ability.Explode] = new Explode(_local3, this, 3);
abilities[Ability.Droid] = null;
slot0 = abilities[Ability.Explode];
} else {
if (_arg1 == Ability.Droid){
abilities[Ability.Droid] = new TurretAbility(_local3, this, 3);
abilities[Ability.Explode] = null;
slot0 = abilities[Ability.Droid];
};
};
if (_arg1 == Ability.SMissiles){
abilities[Ability.SMissiles] = new SeekingMissiles(_local3, this, 3);
abilities[Ability.Missiles] = null;
slot1 = abilities[Ability.SMissiles];
} else {
if (_arg1 == Ability.Missiles){
abilities[Ability.Missiles] = new Missiles(_local3, this, 3);
abilities[Ability.SMissiles] = null;
slot1 = abilities[Ability.Missiles];
};
};
if (_arg1 == Ability.MissileStorm){
abilities[Ability.MissileStorm] = new MissileStorm(_local3, this, 3);
abilities[Ability.Shield] = null;
slot2 = abilities[Ability.MissileStorm];
} else {
if (_arg1 == Ability.Shield){
abilities[Ability.Shield] = new Shield(_local3, this, 3);
abilities[Ability.MissileStorm] = null;
slot2 = abilities[Ability.Shield];
};
};
}
public function updateHUD(_arg1:MovieClip){
_arg1.pannel.healthBar.filler.scaleX = (health / maxHealth);
_arg1.pannel.healthBar.caption.text = ((int(health) + "/") + int(maxHealth));
_arg1.pannel.energyBar.filler.scaleX = (energy / maxEnergy);
_arg1.pannel.energyBar.caption.text = ((int(energy) + "/") + int(maxEnergy));
_arg1.pannel.money.text = ("" + _money);
_arg1.pannel.crystals.text = ("" + _crystals);
_arg1.abilityTip.visible = ((((!((slot0 == null))) || (!((slot1 == null))))) || (!((slot2 == null))));
setSlotImage(_arg1.pannel.slot0, slot0);
setSlotImage(_arg1.pannel.slot1, slot1);
setSlotImage(_arg1.pannel.slot2, slot2);
}
public function resetPowerUpScore(){
_powerUpScore = 0;
}
public function get powerUpScore():Number{
return (_powerUpScore);
}
public function onPickedCrystal(){
_crystals++;
_score = (_score + 25);
_health = Math.min(maxHealth, (_health + 1));
}
public function get crystals():Number{
return (_crystals);
}
public function updateMoney(_arg1:Number){
_money = (_money + _arg1);
}
public function get direction():Vector{
return (_direction);
}
}
}//package game
Section 101
//PowerUp (game.PowerUp)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class PowerUp extends MovieClip {
private var node:ListNode;// = null
private var isFading:Boolean;// = false
protected var level:Level;// = null
private var timer:Timer;
private var speed:Number;// = 0
private var blinkDir:Number;// = 0.05
private var life:Number;// = 0
private var direction:Vector;
private var health:Number;// = 100
private var fade:Number;// = 1
public static const MONEY_5000:int = (1 << 7);
public static const MONEY_250:int = (1 << 3);
public static const MONEY_500:int = (1 << 4);
public static const MONEY_50:int = (1 << 2);
public static const MONEY_2000:int = (1 << 6);
public static const MONEY_1000:int = (1 << 5);
public static var ActivePowerUpCount:int = 0;
public function PowerUp(){
timer = new Timer(5000);
direction = new Vector();
super();
addEventListener(Event.ADDED_TO_STAGE, onPowerUpAdded);
addEventListener(Event.REMOVED_FROM_STAGE, onPowerUpRemoved);
}
private function onTimerHandler(_arg1:TimerEvent){
isFading = true;
}
public function release(){
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
if (parent){
parent.removeChild(this);
};
}
private function blink(){
alpha = (alpha + blinkDir);
if (alpha >= 1){
alpha = 1;
blinkDir = (blinkDir * -1);
} else {
if (alpha <= 0){
alpha = 0;
blinkDir = (blinkDir * -1);
};
};
}
private function testPlayerCollision():Boolean{
if (GameScreen.instance.player.isKilled){
return (false);
};
var _local1:Vector = GameScreen.instance.getPlayerPos();
if (Vector.distance(x, y, _local1.x, _local1.y) < 30){
return (true);
};
return (false);
}
protected function onPicked(){
destroy();
}
private function onPowerUpAdded(_arg1:Event){
ActivePowerUpCount++;
}
private function onPowerUpRemoved(_arg1:Event){
removeEventListener(Event.ADDED_TO_STAGE, onPowerUpAdded);
removeEventListener(Event.REMOVED_FROM_STAGE, onPowerUpRemoved);
ActivePowerUpCount--;
}
private function onEnterFrameHandler(_arg1:Event){
var _local2:Vector;
var _local3:Number;
var _local4:Number;
var _local5:Vector;
var _local6:Number;
if (Game.isPaused){
return;
};
alpha = (health / 100);
scaleX = (scaleY = ((health / 100) * 1.5));
if (testPlayerCollision()){
onPicked();
return;
};
if (isFading){
health = (health - 0.5);
};
if (health <= 0){
destroy();
};
x = (x + (direction.x * speed));
y = (y + (direction.y * speed));
speed = Math.max(0.1, (speed - (fade * 2)));
fade = (fade + 0.0005);
if (!GameScreen.instance.player.isKilled){
_local2 = GameScreen.instance.getPlayerPos();
_local3 = Vector.distance(x, y, _local2.x, _local2.y);
_local4 = 75;
if (_local3 < _local4){
_local5 = Vector.direction(x, y, _local2.x, _local2.y);
_local6 = (_local3 / _local4);
x = (x + ((_local5.x * 2) * (1 - (_local6 * _local6))));
y = (y + ((_local5.y * 2) * (1 - (_local6 * _local6))));
};
};
}
public function destroy(){
release();
node.list.remove(node);
}
public function spawn(_arg1:ListNode, _arg2:Level, _arg3:Number, _arg4:Number){
node = _arg1;
x = _arg3;
y = _arg4;
level = _arg2;
health = 100;
isFading = false;
speed = ((Math.random() * 1) + 1);
fade = ((Math.random() * 0.0075) + 0.005);
direction.x = (Math.random() - 0.5);
direction.y = (Math.random() - 0.5);
direction.normalize();
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
timer.start();
}
}
}//package game
Section 102
//Resources (game.Resources)
package game {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import game.levels.*;
public class Resources {
public static var sound_Theme:Class = null;
public static var sound_Ambience:Class = null;
public static var class_MinigunHit:Class = null;
public static var sound_Detector:Class = null;
public static var sound_BossHit:Class = null;
public static var sound_Moan:Class = null;
public static var bitmap_Blind:BitmapData = null;
public static var classes:Object = new Object();
public static var class_ExplosionBlast:Class = null;
public static var class_FlameshotHit:Class = null;
private static var levelsA:Class = Resources_levelsA;
private static var levelsC:Class = Resources_levelsC;
public static var config:Class = Resources_config;
public static var sound_Hit:Array = new Array();
public static var sound_Explosion:Class = null;
public static var class_PlasmaHit:Class = null;
private static var levelsB:Class = Resources_levelsB;
public static var sound_Missile:Class = null;
public static var class_DebrisMedium:Class = null;
public static var sound_Rampage:Class = null;
public static var class_DebrisBig:Class = null;
public static var bitmap_Orange:BitmapData = null;
public static var class_Explosion:Class = null;
public static var levels:Array = new Array();
public static var class_ExplosionBlastS:Class = null;
public static var sound_Pick:Array = new Array();
public static var sound_Bomb:Class = null;
public static function initialize(){
classes["game.levels.LevelHunt"] = LevelHunt;
classes["game.levels.LevelBoss"] = LevelBoss;
classes["game.levels.LevelCrystals"] = LevelCrystals;
classes["game.levels.LevelSurvive"] = LevelSurvive;
sound_Rampage = (getDefinitionByName("SoundRampage") as Class);
sound_BossHit = (getDefinitionByName("SoundBossHit") as Class);
sound_Detector = (getDefinitionByName("SoundDetector") as Class);
sound_Explosion = (getDefinitionByName("SoundExplosion") as Class);
sound_Bomb = (getDefinitionByName("SoundBomb2") as Class);
sound_Missile = (getDefinitionByName("SoundMissileLaunch") as Class);
sound_Moan = (getDefinitionByName("SoundMoan") as Class);
sound_Theme = (getDefinitionByName("SoundTheme") as Class);
sound_Ambience = (getDefinitionByName("SoundMenuAmbience") as Class);
sound_Pick.push(getDefinitionByName("SoundMoney"));
sound_Hit.push(getDefinitionByName("SoundMonsterHit1"));
sound_Hit.push(getDefinitionByName("SoundMonsterHit2"));
sound_Hit.push(getDefinitionByName("SoundMonsterHit3"));
class_DebrisMedium = (getDefinitionByName("DebrisMedium") as Class);
class_DebrisBig = (getDefinitionByName("DebrisBig") as Class);
class_FlameshotHit = (getDefinitionByName("ExplosionBig") as Class);
class_PlasmaHit = (getDefinitionByName("PlasmaHit") as Class);
class_MinigunHit = (getDefinitionByName("ExplosionSmall") as Class);
class_Explosion = (getDefinitionByName("ExplosionMushroom") as Class);
class_ExplosionBlast = (getDefinitionByName("ExplosionBlast") as Class);
class_ExplosionBlastS = (getDefinitionByName("ExplosionBlastSmall") as Class);
bitmap_Orange = new BitmapOrange(0, 0);
bitmap_Blind = new BitmapBlind(0, 0);
loadLevelsEmbed((new levelsA() as ByteArray));
loadLevelsEmbed((new levelsB() as ByteArray));
loadLevelsEmbed((new levelsC() as ByteArray));
}
private static function loadLevelsXML(_arg1:XML){
var _local2:int;
while (_arg1.level[_local2] != undefined) {
levels.push(Level.loadXML(_arg1.level[_local2]));
_local2++;
};
if (levels.length == 5){
Game.instance.startGame();
};
}
private static function loadLevelsEmbed(_arg1:ByteArray){
var _local2:String = _arg1.readUTFBytes(_arg1.length);
loadLevelsXML(new XML(_local2));
}
private static function onXMLLoaded(_arg1:Event){
loadLevelsXML(new XML(_arg1.target.data));
}
private static function loadLevels(_arg1:String){
trace((("Loading '" + _arg1) + "'..."));
var _local2:URLLoader = new URLLoader();
_local2.addEventListener(Event.COMPLETE, onXMLLoaded);
_local2.load(new URLRequest(_arg1));
}
}
}//package game
Section 103
//Resources_config (game.Resources_config)
package game {
import mx.core.*;
public class Resources_config extends ByteArrayAsset {
}
}//package game
Section 104
//Resources_levelsA (game.Resources_levelsA)
package game {
import mx.core.*;
public class Resources_levelsA extends ByteArrayAsset {
}
}//package game
Section 105
//Resources_levelsB (game.Resources_levelsB)
package game {
import mx.core.*;
public class Resources_levelsB extends ByteArrayAsset {
}
}//package game
Section 106
//Resources_levelsC (game.Resources_levelsC)
package game {
import mx.core.*;
public class Resources_levelsC extends ByteArrayAsset {
}
}//package game
Section 107
//SaveData (game.SaveData)
package game {
import game.abilities.*;
import flash.net.*;
public class SaveData {
public var money:int;// = 0
public var crystals:int;// = 0
public var quality:int;// = 2
public var minigun:int;// = 0
public var barrels:int;// = 0
public var smissiles:int;// = 0
public var missiles:int;// = 0
public var score:int;// = 0
public var abilityLevel:int;// = 1
public var explode:int;// = 0
public var shipLevel:int;// = 1
public var storm:int;// = 0
public var levelIndex:int;// = 0
public var shield:int;// = 0
public var droid:int;// = 0
public var regen:int;// = 0
public var armor:int;// = 0
private static const k_SaveName:String = "save1";
public function save(){
var _local1:SharedObject = SharedObject.getLocal(k_SaveName);
_local1.data.save = this;
_local1.close();
}
public function reset(){
score = 0;
money = 0;
crystals = 0;
explode = 0;
droid = 0;
missiles = 0;
smissiles = 0;
shield = 0;
storm = 0;
minigun = 0;
barrels = 0;
regen = 0;
armor = 0;
abilityLevel = 1;
shipLevel = 1;
levelIndex = 0;
quality = 2;
}
public function load(){
if (!hasSaves()){
return;
};
var _local1:SharedObject = SharedObject.getLocal(k_SaveName);
score = _local1.data.save.score;
money = _local1.data.save.money;
crystals = _local1.data.save.crystals;
explode = _local1.data.save.explode;
droid = _local1.data.save.droid;
missiles = _local1.data.save.missiles;
smissiles = _local1.data.save.smissiles;
shield = _local1.data.save.shield;
storm = _local1.data.save.storm;
minigun = _local1.data.save.minigun;
barrels = _local1.data.save.barrels;
regen = _local1.data.save.regen;
abilityLevel = _local1.data.save.abilityLevel;
shipLevel = _local1.data.save.shipLevel;
armor = _local1.data.save.armor;
levelIndex = _local1.data.save.levelIndex;
quality = _local1.data.save.quality;
_local1.close();
}
public static function hasSaves():Boolean{
var _local1:SharedObject = SharedObject.getLocal(k_SaveName);
var _local2:Boolean;
if (_local1.data.save != undefined){
_local2 = true;
};
_local1.close();
return (_local2);
}
public static function clear(){
var _local1:SharedObject = SharedObject.getLocal(k_SaveName);
_local1.clear();
_local1.close();
}
}
}//package game
Section 108
//ScoreDialog (game.ScoreDialog)
package game {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class ScoreDialog extends MovieClip {
public var marker:MovieClip;
public var score:TextField;
public var username:TextField;
public var cancel:SimpleButton;
public var ok:SimpleButton;
private var scoreValue:Number;// = 0
public static const CLOSED:String = "Closed";
public function ScoreDialog(){
ok.addEventListener(MouseEvent.CLICK, onOKClicked);
cancel.addEventListener(MouseEvent.CLICK, onCancelClicked);
username.addEventListener(TextEvent.TEXT_INPUT, onUsernameInput);
}
private function onScoreBoardClosed(){
visible = false;
dispatchEvent(new Event(CLOSED));
}
private function submitScore(_arg1:String, _arg2:Number){
Game.showScore(_arg1, _arg2, onScoreBoardClosed);
}
private function onUsernameInput(_arg1:TextEvent){
marker.alpha = 0;
}
private function onOKClicked(_arg1:MouseEvent){
if (username.text.length > 1){
submitScore(username.text, scoreValue);
} else {
marker.alpha = 1;
};
}
private function onCancelClicked(_arg1:MouseEvent){
visible = false;
dispatchEvent(new Event(CLOSED));
}
public function show(_arg1:int){
scoreValue = _arg1;
score.text = ("" + _arg1);
marker.alpha = 0;
visible = true;
}
}
}//package game
Section 109
//UpgradePannel (game.UpgradePannel)
package game {
import dreemchest.*;
import flash.events.*;
import flash.display.*;
import game.abilities.*;
import flash.text.*;
public class UpgradePannel extends MovieClip {
public var money:TextField;
public var purchase:SimpleButton;
public var close:SimpleButton;
public var ab0:MovieClip;
public var ab1:MovieClip;
public var ab2:MovieClip;
public var ab3:MovieClip;
public var ab4:MovieClip;
public var ab5:MovieClip;
public var ab6:MovieClip;
public var ab7:MovieClip;
public var ab8:MovieClip;
private var ability:MovieClip;// = null
public var description:MovieClip;
public var crystals:TextField;
public var ab9:MovieClip;
public static const SMissiles:int = 3;
public static const Explode:int = 0;
public static const Total:int = 10;
public static const Storm:int = 5;
public static const Missiles:int = 2;
public static const Damage:int = 6;
public static const Shield:int = 4;
public static const Barrels:int = 7;
public static const Droid:int = 1;
public static const Regen:int = 8;
public static const Armor:int = 9;
public function UpgradePannel(){
super();
addFrameScript(0, frame1);
var i:int;
while (i < Total) {
this[("ab" + i)].addEventListener(MouseEvent.CLICK, onAbClicked);
this[("ab" + i)].image.gotoAndStop((i + 1));
this[("ab" + i)].id = i;
i = (i + 1);
};
this[("ab" + Damage)].image.gotoAndStop(9);
this[("ab" + Barrels)].image.gotoAndStop(7);
this[("ab" + Regen)].image.gotoAndStop(12);
this[("ab" + Armor)].image.gotoAndStop(11);
close.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
visible = false;
});
purchase.addEventListener(MouseEvent.CLICK, onPurchaseClicked);
purchase.visible = false;
x = ((Game.width / 2) - (width / 2));
y = ((Game.height / 2) - (height / 2));
}
public function setAbilityLevel(_arg1:int){
setEnabled(this[("ab" + Missiles)], false);
setEnabled(this[("ab" + SMissiles)], false);
setEnabled(this[("ab" + Shield)], false);
setEnabled(this[("ab" + Storm)], false);
switch (_arg1){
case 2:
setEnabled(this[("ab" + Missiles)], true);
setEnabled(this[("ab" + SMissiles)], true);
break;
case 3:
setEnabled(this[("ab" + Missiles)], true);
setEnabled(this[("ab" + SMissiles)], true);
setEnabled(this[("ab" + Shield)], true);
setEnabled(this[("ab" + Storm)], true);
break;
};
}
public function show(){
description.visible = false;
purchase.visible = true;
ability = null;
visible = true;
update(Game.instance.save);
}
private function setEnabled(_arg1:MovieClip, _arg2:Boolean){
if (_arg2){
_arg1.button.mouseEnabled = true;
_arg1.alpha = 1;
GameScreen.applyBrightnessFilter(_arg1, 1, 1, 1, 1);
} else {
_arg1.button.mouseEnabled = false;
_arg1.alpha = 0.5;
GameScreen.applyBrightnessFilter(_arg1, 1, 1, 1, 0.5);
};
}
public function update(_arg1:SaveData){
var _local3:Boolean;
var _local4:int;
var _local5:int;
this[("ab" + Explode)].level.gotoAndStop((_arg1.explode + 1));
this[("ab" + Droid)].level.gotoAndStop((_arg1.droid + 1));
this[("ab" + Missiles)].level.gotoAndStop((_arg1.missiles + 1));
this[("ab" + SMissiles)].level.gotoAndStop((_arg1.smissiles + 1));
this[("ab" + Storm)].level.gotoAndStop((_arg1.storm + 1));
this[("ab" + Shield)].level.gotoAndStop((_arg1.shield + 1));
this[("ab" + Damage)].level.gotoAndStop((_arg1.minigun + 1));
this[("ab" + Barrels)].level.gotoAndStop((_arg1.barrels + 1));
this[("ab" + Regen)].level.gotoAndStop((_arg1.regen + 1));
this[("ab" + Armor)].level.gotoAndStop((_arg1.armor + 1));
setAbilityLevel(_arg1.abilityLevel);
if (_arg1.explode > 0){
setEnabled(this[("ab" + Droid)], false);
};
if (_arg1.droid > 0){
setEnabled(this[("ab" + Explode)], false);
};
if (_arg1.missiles > 0){
setEnabled(this[("ab" + SMissiles)], false);
};
if (_arg1.smissiles > 0){
setEnabled(this[("ab" + Missiles)], false);
};
if (_arg1.storm > 0){
setEnabled(this[("ab" + Shield)], false);
};
if (_arg1.shield > 0){
setEnabled(this[("ab" + Storm)], false);
};
var _local2:Config = Game.instance.config;
if (ability){
_local3 = true;
_local4 = -1;
_local5 = -1;
_arg1 = Game.instance.save;
switch (ability.id){
case Explode:
_local3 = (_arg1.explode < 3);
_local5 = _local2.ExplodeUCost[_arg1.explode];
break;
case Droid:
_local3 = (_arg1.droid < 3);
_local5 = _local2.TurretUCost[_arg1.droid];
break;
case Missiles:
_local3 = (_arg1.missiles < 3);
_local5 = _local2.MissilesUCost[_arg1.missiles];
break;
case SMissiles:
_local3 = (_arg1.smissiles < 3);
_local5 = _local2.SMissilesUCost[_arg1.smissiles];
break;
case Storm:
_local3 = (_arg1.storm < 3);
_local5 = _local2.StormUCost[_arg1.storm];
break;
case Storm:
_local3 = (_arg1.storm < 3);
_local5 = _local2.StormUCost[_arg1.storm];
break;
case Shield:
_local3 = (_arg1.shield < 3);
_local5 = _local2.ShieldUCost[_arg1.shield];
break;
case Barrels:
_local3 = (_arg1.barrels < 2);
_local4 = _local2.BarrelsUCost[_arg1.barrels];
break;
case Damage:
_local3 = (_arg1.minigun < 2);
_local4 = _local2.DamageUCost[_arg1.minigun];
break;
case Regen:
_local3 = (_arg1.regen < 3);
_local4 = _local2.RegenUCost[_arg1.regen];
break;
case Armor:
_local3 = (_arg1.armor < 3);
_local4 = _local2.ArmorUCost[_arg1.armor];
break;
};
purchase.visible = _local3;
if (_local4 > 0){
purchase.visible = ((purchase.visible) && ((_local4 <= _arg1.money)));
description.cost.text = ("" + _local4);
description.crystal.visible = false;
description.coin.visible = true;
};
if (_local5 > 0){
purchase.visible = ((purchase.visible) && ((_local5 <= _arg1.crystals)));
description.cost.text = ("" + _local5);
description.crystal.visible = true;
description.coin.visible = false;
};
} else {
purchase.visible = false;
description.cost.text = "";
description.crystal.visible = false;
description.coin.visible = false;
};
money.text = ("" + _arg1.money);
crystals.text = ("" + _arg1.crystals);
}
public function isUpgradesAvailable():Boolean{
var _local1:Boolean;
var _local2:SaveData = Game.instance.save;
var _local3:Config = Game.instance.config;
_local1 = ((_local1) || ((((((_local2.droid == 0)) && ((_local2.explode < 3)))) && ((_local3.ExplodeUCost[_local2.explode] <= _local2.crystals)))));
_local1 = ((_local1) || ((((((_local2.explode == 0)) && ((_local2.droid < 3)))) && ((_local3.TurretUCost[_local2.droid] <= _local2.crystals)))));
_local1 = ((_local1) || ((((((_local2.smissiles == 0)) && ((_local2.missiles < 3)))) && ((_local3.MissilesUCost[_local2.missiles] <= _local2.crystals)))));
_local1 = ((_local1) || ((((((_local2.missiles == 0)) && ((_local2.smissiles < 3)))) && ((_local3.SMissilesUCost[_local2.smissiles] <= _local2.crystals)))));
_local1 = ((_local1) || ((((((_local2.shield == 0)) && ((_local2.storm < 3)))) && ((_local3.StormUCost[_local2.storm] <= _local2.crystals)))));
_local1 = ((_local1) || ((((((_local2.storm == 0)) && ((_local2.shield < 3)))) && ((_local3.ShieldUCost[_local2.shield] <= _local2.crystals)))));
_local1 = ((_local1) || ((((_local2.barrels < 2)) && ((_local3.BarrelsUCost[_local2.barrels] <= _local2.money)))));
_local1 = ((_local1) || ((((_local2.minigun < 2)) && ((_local3.DamageUCost[_local2.minigun] <= _local2.money)))));
_local1 = ((_local1) || ((((_local2.regen < 3)) && ((_local3.RegenUCost[_local2.regen] <= _local2.money)))));
_local1 = ((_local1) || ((((_local2.armor < 3)) && ((_local3.ArmorUCost[_local2.armor] <= _local2.money)))));
return (_local1);
}
private function onPurchaseClicked(_arg1:MouseEvent){
var _local2:Player = GameScreen.instance.player;
var _local3:SaveData = Game.instance.save;
var _local4:int;
var _local5:int;
var _local6:Config = Game.instance.config;
switch (ability.id){
case Explode:
_local4 = _local6.ExplodeUCost[_local3.explode];
if (_local3.explode == 0){
_local3.abilityLevel++;
};
_local3.explode++;
break;
case Droid:
_local4 = _local6.TurretUCost[_local3.droid];
if (_local3.droid == 0){
_local3.abilityLevel++;
};
_local3.droid++;
break;
case Missiles:
_local4 = _local6.MissilesUCost[_local3.missiles];
if (_local3.missiles == 0){
_local3.abilityLevel++;
};
_local3.missiles++;
break;
case SMissiles:
_local4 = _local6.SMissilesUCost[_local3.smissiles];
if (_local3.smissiles == 0){
_local3.abilityLevel++;
};
_local3.smissiles++;
break;
case Storm:
_local4 = _local6.StormUCost[_local3.storm];
if (_local3.storm == 0){
_local3.abilityLevel++;
};
_local3.storm++;
break;
case Shield:
_local4 = _local6.ShieldUCost[_local3.shield];
if (_local3.shield == 0){
_local3.abilityLevel++;
};
_local3.shield++;
break;
case Regen:
_local5 = _local6.RegenUCost[_local3.regen];
_local3.regen++;
break;
case Armor:
_local5 = _local6.ArmorUCost[_local3.armor];
_local3.armor++;
break;
case Damage:
_local5 = _local6.DamageUCost[_local3.minigun];
_local3.minigun++;
break;
case Barrels:
_local5 = _local6.BarrelsUCost[_local3.barrels];
_local3.barrels++;
break;
};
_local3.shipLevel = Math.min(_local3.shipLevel, 2);
_local3.abilityLevel = Math.min(_local3.abilityLevel, 3);
_local3.crystals = (_local3.crystals - _local4);
_local3.money = (_local3.money - _local5);
update(Game.instance.save);
Game.instance.save.save();
}
private function abilityLevel(_arg1:Ability):String{
if (((!((_arg1 == null))) && (!((_arg1 == undefined))))){
trace(("ab level " + _arg1.level));
return (_arg1.level);
};
return ("");
}
private function setSelected(_arg1:Object){
var _local2:SimpleButton = (_arg1 as SimpleButton);
purchase.visible = false;
if (!_local2){
return;
};
ability = (_local2.parent as MovieClip);
var _local3:int;
while (_local3 < Total) {
this[("ab" + _local3)].selected.visible = false;
_local3++;
};
ability.selected.visible = true;
description.visible = true;
update(Game.instance.save);
}
private function onAbClicked(_arg1:MouseEvent){
var _local2:MovieClip = (_arg1.target.parent as MovieClip);
description.gotoAndStop((_local2.id + 1));
setSelected(_arg1.target);
}
function frame1(){
}
public function setShipLevel(_arg1:int){
setEnabled(this[("ab" + Regen)], false);
setEnabled(this[("ab" + Armor)], false);
switch (_arg1){
case 2:
case 3:
setEnabled(this[("ab" + Regen)], true);
setEnabled(this[("ab" + Armor)], true);
break;
};
}
}
}//package game
Section 110
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const NO_USER:String = "NoUser";
public static const IO_ERROR:String = "IOError";
public static const ITEM_NEW:String = "ItemNew";
public static const ITEM_OWNED:String = "ItemOwned";
public static const STORE_ITEMS:String = "StoreItems";
public static const ERROR:String = "Error";
public static const STORE_SHOW:String = "StoreShow";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static var _inventory:MochiInventory;
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function get inventory():MochiInventory{
return (_inventory);
}
public static function showStore(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function requestFunding(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestFunding", _arg1);
}
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
_inventory = new MochiInventory();
});
addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
_inventory = null;
});
}
}//package mochi.as3
Section 111
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function get value():Number{
return (Number(this.toString()));
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 112
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
return;
};
for (_local3 in eventTable[_arg1]) {
var _local6 = eventTable[_arg1];
_local6[_local3](_arg2);
};
}
public function removeEventListener(_arg1:String, _arg2:Function):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
eventTable[_arg1] = [];
return;
};
for (_local3 in eventTable[_arg1]) {
if (eventTable[_arg1][_local3] != _arg2){
} else {
eventTable[_arg1].splice(Number(_local3), 1);
};
};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
}
}//package mochi.as3
Section 113
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public static function endPlay():void{
MochiServices.send("events_clearRoundID", null, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function trackEvent(_arg1:String, _arg2=null):void{
MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local4:Object;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startPlay(_arg1:String="gameplay"):void{
MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null);
}
}
}//package mochi.as3
Section 114
//MochiInventory (mochi.as3.MochiInventory)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
public dynamic class MochiInventory extends Proxy {
private var _timer:Timer;
private var _names:Array;
private var _syncID:Number;
private var _consumableProperties:Object;
private var _storeSync:Object;
private var _outstandingID:Number;
private var _syncPending:Boolean;
public static const READY:String = "InvReady";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IoError";
private static const KEY_SALT:String = " syncMaint";
public static const WRITTEN:String = "InvWritten";
public static const NOT_READY:String = "InvNotReady";
public static const VALUE_ERROR:String = "InvValueError";
private static const CONSUMER_KEY:String = "MochiConsumables";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public function MochiInventory():void{
MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned);
MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut);
_storeSync = new Object();
_syncPending = false;
_outstandingID = 0;
_syncID = 0;
_timer = new Timer(1000);
_timer.addEventListener(TimerEvent.TIMER, sync);
_timer.start();
if (MochiSocial.loggedIn){
loggedIn();
} else {
loggedOut();
};
}
private function newItems(_arg1:Object):void{
if (!this[(_arg1.id + KEY_SALT)]){
this[(_arg1.id + KEY_SALT)] = 0;
};
if (!this[_arg1.id]){
this[_arg1.id] = 0;
};
this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count);
this[_arg1.id] = (this[_arg1.id] + _arg1.count);
if (((_arg1.privateProperties) && (_arg1.privateProperties.consumable))){
if (!this[_arg1.privateProperties.tag]){
this[_arg1.privateProperties.tag] = 0;
};
this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count));
};
}
public function release():void{
MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (-1);
};
if (_consumableProperties[_arg1]){
return (MochiDigits(_consumableProperties[_arg1]).value);
};
return (undefined);
}
private function loggedIn(_arg1:Object=null):void{
MochiUserData.get(CONSUMER_KEY, getConsumableBag);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (false);
};
if (_consumableProperties[_arg1] == undefined){
return (false);
};
return (true);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1));
}
private function putConsumableBag(_arg1:MochiUserData):void{
_syncPending = false;
if (_arg1.error){
triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
_outstandingID = -1;
};
triggerEvent(WRITTEN, {});
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
var _local3:MochiDigits;
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return;
};
if (!(_arg2 is Number)){
triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2});
return;
};
if (_consumableProperties[_arg1]){
_local3 = MochiDigits(_consumableProperties[_arg1]);
if (_local3.value == _arg2){
return;
};
_local3.value = _arg2;
} else {
_names.push(_arg1);
_consumableProperties[_arg1] = new MochiDigits(_arg2);
};
_syncID++;
}
private function itemOwned(_arg1:Object):void{
_storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count};
}
private function sync(_arg1:Event=null):void{
var _local3:String;
if (((_syncPending) || ((_syncID == _outstandingID)))){
return;
};
_outstandingID = _syncID;
var _local2:Object = {};
for (_local3 in _consumableProperties) {
_local2[_local3] = MochiDigits(_consumableProperties[_local3]).value;
};
MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag);
_syncPending = true;
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
return (_names[(_arg1 - 1)]);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{
if (!_consumableProperties[_arg1]){
return (false);
};
_names.splice(_names.indexOf(_arg1), 1);
delete _consumableProperties[_arg1];
return (true);
}
private function getConsumableBag(_arg1:MochiUserData):void{
var _local2:String;
var _local3:Number;
if (_arg1.error){
triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
return;
};
_consumableProperties = {};
_names = new Array();
if (_arg1.data){
for (_local2 in _arg1.data) {
_names.push(_local2);
_consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]);
};
};
for (_local2 in _storeSync) {
_local3 = _storeSync[_local2].count;
if (_consumableProperties[(_local2 + KEY_SALT)]){
_local3 = (_local3 - _consumableProperties[(_local2 + KEY_SALT)].value);
};
if (_local3 == 0){
} else {
newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties});
};
};
triggerEvent(READY, {});
}
private function loggedOut(_arg1:Object=null):void{
_consumableProperties = null;
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
}
}//package mochi.as3
Section 115
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
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 n:Number;
var options = _arg1;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
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;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(n) != n){
trace((("WARNING: Submitted score '" + options.score) + "' will be truncated"));
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal");
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 _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
var _local2:Object = {};
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{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(_arg1) != _arg1){
trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated"));
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiServices.warnID(_arg1, true);
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi.as3
Section 116
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
public static const CONNECTED:String = "onConnected";
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _queue:Array;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
private static var _nextCallbackID:Number;
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var _callbacks:Object;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(_arg1:Object):void{
var methodName:String;
var pkg = _arg1;
var cb:String = pkg.callbackID;
var cblst:Object = _callbacks[cb];
if (!cblst){
return;
};
var method:* = cblst.callbackMethod;
methodName = "";
var obj:Object = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString()));
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
trace(("Error invoking method on object: " + error.toString()));
};
};
};
delete _callbacks[cb];
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1));
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
};
if (_clip != null){
if (_callbacks != null){
_callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_nextCallbackID++;
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local4:int;
var _local14:Loader;
var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var _local6:Array = [0, 64, 0, 0, 0];
var _local7:MovieClip = new MovieClip();
var _local8:LocalConnection = new LocalConnection();
var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
_local8 = new LocalConnection();
_local7.lc = _local8;
_local7.click = _arg2;
_local8.client = _local7;
_local8.connect(_local9);
var _local10:ByteArray = new ByteArray();
var _local11:ByteArray = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
var _local12:uint = ((_local3.length + _local11.length) + 4);
var _local13:uint = (_local12 + 35);
_local10.endian = Endian.LITTLE_ENDIAN;
_local10.writeUTFBytes("FWS");
_local10.writeByte(8);
_local10.writeUnsignedInt(_local13);
for each (_local4 in _local5) {
_local10.writeByte(_local4);
};
_local10.writeUnsignedInt(_local12);
_local10.writeByte(136);
_local10.writeShort(_local11.length);
_local10.writeBytes(_local11);
for each (_local4 in _local3) {
_local10.writeByte(_local4);
};
for each (_local4 in _local6) {
_local10.writeByte(_local4);
};
_local14 = new Loader();
_local14.loadBytes(_local10);
_local7.addChild(_local14);
return (_local7);
}
private static function detach(_arg1:Event):void{
var _local2:LoaderInfo = LoaderInfo(_arg1.target);
_local2.removeEventListener(Event.COMPLETE, detach);
_local2.removeEventListener(IOErrorEvent.IO_ERROR, detach);
_local2.removeEventListener(Event.COMPLETE, loadLCBridgeComplete);
_local2.removeEventListener(IOErrorEvent.IO_ERROR, loadError);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
private static function loadLCBridgeComplete(_arg1:Event):void{
var _local2:Loader = LoaderInfo(_arg1.target).loader;
_mochiLocalConnection = MovieClip(_local2.content);
listen();
}
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 {
_mochiLocalConnection.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, connectWait);
_timer = null;
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
};
return (_local2);
}
public static function getVersion():String{
return ("3.9.1 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
var _local3:Number = 0;
while (_local3 < _arg1.length) {
switch (_arg1.charAt(_local3)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
trace(("WARNING: Board ID contains illegal characters: " + _arg1));
return;
};
_local3++;
};
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_queue))){
while (_queue.length > 0) {
_local2 = _queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _callbacks[_local2.callbackID];
};
delete _callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(_arg1:Object):void{
var _local2:String = _arg1.target;
var _local3:String = _arg1.event;
switch (_local2){
case "services":
MochiServices.triggerEvent(_arg1.event, _arg1.args);
break;
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "social":
MochiSocial.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function urlOptions(_arg1:Object):Object{
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local2:Object = {};
if (_arg1.stage){
_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
} else {
_local3 = _arg1.loaderInfo.parameters.mochiad_options;
};
if (_local3){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5].split("=");
_local2[unescape(_local6[0])] = unescape(_local6[1]);
_local5++;
};
};
return (_local2);
}
public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var avm1Click:DisplayObject;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = _arg1;
var burl = _arg2;
var btn = _arg3;
var onClick = _arg4;
var vars:Object = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
var s = "?";
var i:Number = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://link.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
var _local2:Rectangle = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = _local2.x;
avm1Click.y = _local2.y;
avm1Click.scaleX = (0.01 * _local2.width);
avm1Click.scaleY = (0.01 * _local2.height);
};
err = function (_arg1:Object):void{
netup = false;
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
setURL(burl);
};
complete = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_clip.parent){
_clip.parent.removeChild(_clip);
};
if (_arg1 != null){
if ((_arg1 is DisplayObjectContainer)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is DisplayObjectContainer)){
DisplayObjectContainer(_container).addChild(_clip);
};
};
}
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 (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.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) {
};
};
};
};
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
public static function get childClip():Object{
return (_clip);
}
private static function initComChannels():void{
if (!_connected){
trace("[SERVICES_API] connected!");
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift());
};
};
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
private static function loadLCBridge(_arg1:Object):void{
var _local2:Loader = new Loader();
var _local3:String = (_servURL + _mochiLC);
var _local4:URLRequest = new URLRequest(_local3);
_local2.contentLoaderInfo.addEventListener(Event.COMPLETE, detach);
_local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach);
_local2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadLCBridgeComplete);
_local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
_local2.load(_local4);
_arg1.addChild(_local2);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
var _local3:String = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local3 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local3);
_clip = new MovieClip();
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, detach);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
var _local4:URLRequest = new URLRequest(_local3);
var _local5:URLVariables = new URLVariables();
_local5.listenLC = _listenChannelName;
_local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local5.api_version = getVersion();
if (widget){
_local5.widget = true;
};
_local4.data = _local5;
_loader.load(_local4);
_clip.addChild(_loader);
_sendChannel = new LocalConnection();
_queue = [];
_nextCallbackID = 0;
_callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function get clip():Object{
return (_container);
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
warnID(id, false);
if ((clip is DisplayObject)){
if (clip.stage == null){
trace("MochiServices connect requires the containing clip be attached to the stage");
};
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
trace(_arg1);
};
};
};
}
public static function bringToTop(_arg1:Event=null):void{
var e = _arg1;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
MochiServices.disconnect();
MochiServices.onError("IOError");
} else {
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, connectWait);
_timer = null;
};
}
}
}//package mochi.as3
Section 117
//MochiSocial (mochi.as3.MochiSocial)
package mochi.as3 {
public class MochiSocial {
public static const LOGGED_IN:String = "LoggedIn";
public static const ACTION_CANCELED:String = "onCancel";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const IO_ERROR:String = "IOError";
public static const NO_USER:String = "NoUser";
public static const FRIEND_LIST:String = "FriendsList";
public static const PROFILE_DATA:String = "ProfileData";
public static const GAMEPLAY_DATA:String = "GameplayData";
public static const ACTION_COMPLETE:String = "onComplete";
public static const LOGIN_SHOW:String = "LoginShow";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const USER_INFO:String = "UserInfo";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ERROR:String = "Error";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const LOGIN_SHOWN:String = "LoginShown";
public static var _user_info:Object = null;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function requestFan(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestFan", _arg1);
}
public static function postToStream(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_postToStream", _arg1);
}
public static function getFriendsList(_arg1:Object=null):void{
MochiServices.send("social_getFriendsList", _arg1);
}
public static function requestLogin(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestLogin", _arg1);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("social_saveUserProperties", _arg1);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function inviteFriends(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_inviteFriends", _arg1);
}
public static function get loggedIn():Boolean{
return (!((_user_info == null)));
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_showLoginWidget", {options:_arg1});
}
public static function getAPIURL():String{
if (!_user_info){
return (null);
};
return (_user_info.api_url);
}
public static function hideLoginWidget():void{
MochiServices.send("social_hideLoginWidget");
}
public static function getAPIToken():String{
if (!_user_info){
return (null);
};
return (_user_info.api_token);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
_user_info = _arg1;
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
_user_info = null;
});
}
}//package mochi.as3
Section 118
//MochiUserData (mochi.as3.MochiUserData)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class MochiUserData extends EventDispatcher {
public var callback:Function;// = null
public var operation:String;// = null
public var error:Event;// = null
public var data;// = null
public var _loader:URLLoader;
public var key:String;// = null
public function MochiUserData(_arg1:String="", _arg2:Function=null){
this.key = _arg1;
this.callback = _arg2;
}
public function serialize(_arg1):ByteArray{
var _local2:ByteArray = new ByteArray();
_local2.objectEncoding = ObjectEncoding.AMF3;
_local2.writeObject(_arg1);
_local2.compress();
return (_local2);
}
public function errorHandler(_arg1:IOErrorEvent):void{
data = null;
error = _arg1;
if (callback != null){
performCallback();
} else {
dispatchEvent(_arg1);
};
close();
}
public function putEvent(_arg1):void{
request("put", serialize(_arg1));
}
public function deserialize(_arg1:ByteArray){
_arg1.objectEncoding = ObjectEncoding.AMF3;
_arg1.uncompress();
return (_arg1.readObject());
}
public function securityErrorHandler(_arg1:SecurityErrorEvent):void{
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString())));
}
public function getEvent():void{
request("get", serialize(null));
}
override public function toString():String{
return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]"));
}
public function performCallback():void{
try {
callback(this);
} catch(e:Error) {
trace(("[MochiUserData] exception during callback: " + e));
};
}
public function request(_arg1:String, _arg2:ByteArray):void{
var _operation = _arg1;
var _data = _arg2;
operation = _operation;
var api_url:String = MochiSocial.getAPIURL();
var api_token:String = MochiSocial.getAPIToken();
if ((((api_url == null)) || ((api_token == null)))){
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in"));
return;
};
_loader = new URLLoader();
var args:URLVariables = new URLVariables();
args.op = _operation;
args.key = key;
var req:URLRequest = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString()));
req.method = URLRequestMethod.POST;
req.contentType = "application/x-mochi-userdata";
req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)];
req.data = _data;
_loader.dataFormat = URLLoaderDataFormat.BINARY;
_loader.addEventListener(Event.COMPLETE, completeHandler);
_loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
try {
_loader.load(req);
} catch(e:SecurityError) {
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString())));
};
}
public function completeHandler(_arg1:Event):void{
var event = _arg1;
try {
if (_loader.data.length){
data = deserialize(_loader.data);
} else {
data = null;
};
} catch(e:Error) {
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString())));
return;
};
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function close():void{
if (_loader){
_loader.removeEventListener(Event.COMPLETE, completeHandler);
_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_loader.close();
_loader = null;
};
error = null;
callback = null;
}
public static function get(_arg1:String, _arg2:Function):void{
var _local3:MochiUserData = new MochiUserData(_arg1, _arg2);
_local3.getEvent();
}
public static function put(_arg1:String, _arg2, _arg3:Function):void{
var _local4:MochiUserData = new MochiUserData(_arg1, _arg3);
_local4.putEvent(_arg2);
}
}
}//package mochi.as3
Section 119
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 120
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 121
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 122
//Log (SWFStats.Log)
package SWFStats {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
import flash.external.*;
public final class Log {
private static const PingR:Timer = new Timer(30000);
private static const PingF:Timer = new Timer(60000);
public static var GUID:String = "";
private static var Plays:int = 0;
public static var Enabled:Boolean = false;
private static var Request:LogRequest = new LogRequest();
private static var Pings:int = 0;
public static var Queue:Boolean = true;
public static var SourceUrl:String;
private static var HighestGoal:int = 0;
private static var FirstPing:Boolean = true;
public static var SWFID:int = 0;
private static function SaveCookie(_arg1:String, _arg2:int):void{
var _local3:SharedObject = SharedObject.getLocal("swfstats");
_local3.data[_arg1] = _arg2.toString();
_local3.flush();
}
public static function View(_arg1:int=0, _arg2:String="", _arg3:String=""):void{
if (SWFID > 0){
return;
};
SWFID = _arg1;
GUID = _arg2;
Enabled = true;
if ((((SWFID == 0)) || ((GUID == "")))){
Enabled = false;
return;
};
if (((((!((_arg3.indexOf("http://") == 0))) && (!((Security.sandboxType == "localWithNetwork"))))) && (!((Security.sandboxType == "localTrusted"))))){
Enabled = false;
return;
};
SourceUrl = GetUrl(_arg3);
if ((((SourceUrl == null)) || ((SourceUrl == "")))){
Enabled = false;
return;
};
Security.allowDomain("http://tracker.swfstats.com/");
Security.allowInsecureDomain("http://tracker.swfstats.com/");
Security.loadPolicyFile("http://tracker.swfstats.com/crossdomain.xml");
Security.allowDomain("http://utils.swfstats.com/");
Security.allowInsecureDomain("http://utils.swfstats.com/");
Security.loadPolicyFile("http://utils.swfstats.com/crossdomain.xml");
var _local4:int = GetCookie("views");
_local4++;
SaveCookie("views", _local4);
Send(("v/" + _local4), true);
PingF.addEventListener(TimerEvent.TIMER, PingServer);
PingF.start();
}
public static function LevelCounterMetric(_arg1:String, _arg2):void{
if (!Enabled){
return;
};
Send(((("lc/" + Clean(_arg1)) + "/") + Clean(_arg2)));
}
private static function Clean(_arg1:String):String{
return (escape(_arg1.replace("/", "\\").replace("~", "-")));
}
public static function Play():void{
if (!Enabled){
return;
};
Plays++;
Send(("p/" + Plays));
}
private static function Send(_arg1:String, _arg2:Boolean=false):void{
Request.Queue(_arg1);
if (((((Request.Ready) || (_arg2))) || (!(Queue)))){
Request.Send();
Request = new LogRequest();
};
}
private static function GetUrl(_arg1:String):String{
var url:String;
var defaulturl = _arg1;
if (ExternalInterface.available){
try {
url = String(ExternalInterface.call("window.location.href.toString"));
} catch(s:Error) {
url = defaulturl;
};
} else {
if (defaulturl.indexOf("http://") == 0){
url = defaulturl;
};
};
if ((((((url == null)) || ((url == "")))) || ((url == "null")))){
if ((((Security.sandboxType == "localWithNetwork")) || ((Security.sandboxType == "localTrusted")))){
url = "http://local-testing/";
} else {
url = null;
};
};
return (escape(url));
}
public static function LevelRangedMetric(_arg1:String, _arg2, _arg3:int):void{
if (!Enabled){
return;
};
Send(((((("lr/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3));
}
private static function GetCookie(_arg1:String):int{
var _local2:SharedObject = SharedObject.getLocal("swfstats");
if (_local2.data[_arg1] == undefined){
return (0);
};
return (int(_local2.data[_arg1]));
}
public static function Goal(_arg1:int, _arg2:String):void{
}
private static function PingServer(... _args):void{
if (!Enabled){
return;
};
Pings++;
Send(((("t/" + (FirstPing) ? "y" : "n") + "/") + Pings), true);
if (FirstPing){
PingF.stop();
PingR.addEventListener(TimerEvent.TIMER, PingServer);
PingR.start();
FirstPing = false;
};
}
public static function LevelAverageMetric(_arg1:String, _arg2, _arg3:int):void{
if (!Enabled){
return;
};
Send(((((("la/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3));
}
public static function CustomMetric(_arg1:String, _arg2:String=null):void{
if (!Enabled){
return;
};
if (_arg2 == null){
_arg2 = "";
};
Send(((("c/" + Clean(_arg1)) + "/") + Clean(_arg2)));
}
}
}//package SWFStats
Section 123
//LogRequest (SWFStats.LogRequest)
package SWFStats {
import flash.events.*;
import flash.net.*;
public final class LogRequest {
private var Data:String;// = ""
public var Ready:Boolean;// = false
private var Pieces:int;
private static var Failed:int = 0;
private function IOErrorHandler(_arg1:IOErrorEvent):void{
Failed++;
}
public function Queue(_arg1:String):void{
if (Failed > 3){
return;
};
this.Pieces++;
this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1));
if ((((this.Pieces == 8)) || ((this.Data.length > 300)))){
this.Ready = true;
};
}
private function SecurityErrorHandler(_arg1:SecurityErrorEvent):void{
}
private function StatusChange(_arg1:HTTPStatusEvent):void{
}
public function Send():void{
var _local1:URLLoader = new URLLoader();
_local1.addEventListener(IOErrorEvent.IO_ERROR, this.IOErrorHandler);
_local1.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.StatusChange);
_local1.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.SecurityErrorHandler);
_local1.load(new URLRequest((((((((((("http://tracker.swfstats.com/Games/q.aspx?guid=" + Log.GUID) + "&swfid=") + Log.SWFID) + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z")));
trace((((((((((("http://tracker.swfstats.com/Games/q.aspx?guid=" + Log.GUID) + "&swfid=") + Log.SWFID) + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z"));
}
}
}//package SWFStats
Section 124
//Asteroid (Asteroid)
package {
import flash.events.*;
import flash.display.*;
public dynamic class Asteroid extends MovieClip {
public var rot:Number;
public var image:MovieClip;
public var speed:Number;
public function Asteroid(){
addFrameScript(0, frame1);
}
function frame1(){
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
speed = ((Math.random() * 0.2) + 0.2);
rot = ((Math.random() * 0.2) - 0.4);
stop();
}
public function onEnterFrameHandler(_arg1:Event){
x = (x - speed);
rotation = (rotation + rot);
if (x < -(width)){
x = (700 + width);
y = (Math.random() * 525);
speed = ((Math.random() * 0.1) + 0.1);
rot = ((Math.random() * 0.4) - 0.2);
};
}
}
}//package
Section 125
//Background (Background)
package {
import flash.display.*;
public dynamic class Background extends MovieClip {
}
}//package
Section 126
//BitmapBlind (BitmapBlind)
package {
import flash.display.*;
public dynamic class BitmapBlind extends BitmapData {
public function BitmapBlind(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 127
//BitmapOrange (BitmapOrange)
package {
import flash.display.*;
public dynamic class BitmapOrange extends BitmapData {
public function BitmapOrange(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 128
//BitmapSpace (BitmapSpace)
package {
import flash.display.*;
public dynamic class BitmapSpace extends BitmapData {
public function BitmapSpace(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package
Section 129
//BossBladeBase (BossBladeBase)
package {
import game.boss.*;
public dynamic class BossBladeBase extends BossBase {
public function BossBladeBase(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
gotoAndStop(1);
}
function frame1(){
stop();
}
}
}//package
Section 130
//BossFinalBase (BossFinalBase)
package {
import game.boss.*;
public dynamic class BossFinalBase extends BossBase {
public function BossFinalBase(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 131
//BossFinalBasePart (BossFinalBasePart)
package {
import game.boss.*;
public dynamic class BossFinalBasePart extends BossPart {
public function BossFinalBasePart(){
addFrameScript(0, frame1, 1, frame2, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
throat.visible = true;
}
function frame2(){
throat.visible = false;
}
}
}//package
Section 132
//BossFinalFangLeft (BossFinalFangLeft)
package {
import game.boss.*;
public dynamic class BossFinalFangLeft extends BossPart {
public function BossFinalFangLeft(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 133
//BossFinalFangRight (BossFinalFangRight)
package {
import game.boss.*;
public dynamic class BossFinalFangRight extends BossBase {
public function BossFinalFangRight(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 134
//BossFinalTop (BossFinalTop)
package {
import game.boss.*;
public dynamic class BossFinalTop extends BossPart {
public function BossFinalTop(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 135
//BossShooterBase (BossShooterBase)
package {
import game.boss.*;
public dynamic class BossShooterBase extends BossBase {
public function BossShooterBase(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 136
//BossShooterHead (BossShooterHead)
package {
import game.boss.*;
public dynamic class BossShooterHead extends BossPart {
public function BossShooterHead(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 137
//BossShooterTLeft (BossShooterTLeft)
package {
import game.boss.*;
public dynamic class BossShooterTLeft extends VerticalShooter {
public function BossShooterTLeft(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 138
//BossShooterTMidLeft (BossShooterTMidLeft)
package {
import game.boss.*;
public dynamic class BossShooterTMidLeft extends VerticalShooter {
public function BossShooterTMidLeft(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 139
//BossShooterTMidRight (BossShooterTMidRight)
package {
import game.boss.*;
public dynamic class BossShooterTMidRight extends VerticalShooter {
public function BossShooterTMidRight(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 140
//BossShooterTRight (BossShooterTRight)
package {
import game.boss.*;
public dynamic class BossShooterTRight extends VerticalShooter {
public function BossShooterTRight(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 141
//BossSpiderBase (BossSpiderBase)
package {
import game.boss.*;
public dynamic class BossSpiderBase extends BossBase {
public function BossSpiderBase(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 142
//BossSpiderClawL (BossSpiderClawL)
package {
import game.boss.*;
public dynamic class BossSpiderClawL extends BossPart {
public function BossSpiderClawL(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 143
//BossSpiderClawR (BossSpiderClawR)
package {
import game.boss.*;
public dynamic class BossSpiderClawR extends BossPart {
public function BossSpiderClawR(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 144
//BossStoneBase (BossStoneBase)
package {
import game.boss.*;
public dynamic class BossStoneBase extends BossBase {
public function BossStoneBase(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 145
//BossStonePartB (BossStonePartB)
package {
import game.boss.*;
public dynamic class BossStonePartB extends BossPart {
public function BossStonePartB(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop("Normal");
}
function frame1(){
stop();
}
}
}//package
Section 146
//BrainBase (BrainBase)
package {
import game.boss.*;
public dynamic class BrainBase extends BossBase {
public function BrainBase(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop(1);
}
function frame1(){
stop();
}
}
}//package
Section 147
//BulletHit (BulletHit)
package {
import game.*;
public dynamic class BulletHit extends FX {
public function BulletHit(){
addFrameScript(8, frame9);
}
function frame9(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 148
//ButtonAchievements (ButtonAchievements)
package {
import game.*;
public dynamic class ButtonAchievements extends MenuButton {
}
}//package
Section 149
//ButtonCredits (ButtonCredits)
package {
import game.*;
public dynamic class ButtonCredits extends MenuButton {
}
}//package
Section 150
//ButtonHighscores (ButtonHighscores)
package {
import game.*;
public dynamic class ButtonHighscores extends MenuButton {
}
}//package
Section 151
//ButtonMenu (ButtonMenu)
package {
import game.*;
public dynamic class ButtonMenu extends MenuButton {
}
}//package
Section 152
//ButtonMoreGames (ButtonMoreGames)
package {
import game.*;
public dynamic class ButtonMoreGames extends MenuButton {
}
}//package
Section 153
//ButtonNewGame (ButtonNewGame)
package {
import game.*;
public dynamic class ButtonNewGame extends MenuButton {
}
}//package
Section 154
//ButtonPlay (ButtonPlay)
package {
import game.*;
public dynamic class ButtonPlay extends MenuButton {
public function ButtonPlay(){
addFrameScript(0, frame1);
}
function frame1(){
}
}
}//package
Section 155
//DebrisBig (DebrisBig)
package {
import game.*;
public dynamic class DebrisBig extends Debris {
}
}//package
Section 156
//DebrisMedium (DebrisMedium)
package {
import game.*;
public dynamic class DebrisMedium extends Debris {
}
}//package
Section 157
//DebrisSmall (DebrisSmall)
package {
import game.*;
public dynamic class DebrisSmall extends Debris {
}
}//package
Section 158
//Explosion (Explosion)
package {
import game.*;
public dynamic class Explosion extends FX {
public function Explosion(){
addFrameScript(18, frame19);
}
function frame19(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 159
//ExplosionBig (ExplosionBig)
package {
import game.*;
public dynamic class ExplosionBig extends FX {
public function ExplosionBig(){
addFrameScript(13, frame14);
}
function frame14(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 160
//ExplosionBlast (ExplosionBlast)
package {
import game.*;
public dynamic class ExplosionBlast extends FX {
public function ExplosionBlast(){
addFrameScript(19, frame20);
}
function frame20(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 161
//ExplosionBlastSmall (ExplosionBlastSmall)
package {
import game.*;
public dynamic class ExplosionBlastSmall extends FX {
public function ExplosionBlastSmall(){
addFrameScript(17, frame18);
}
function frame18(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 162
//ExplosionMushroom (ExplosionMushroom)
package {
import game.*;
public dynamic class ExplosionMushroom extends FX {
public function ExplosionMushroom(){
addFrameScript(34, frame35);
}
function frame35(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 163
//ExplosionSmall (ExplosionSmall)
package {
import game.*;
public dynamic class ExplosionSmall extends FX {
public function ExplosionSmall(){
addFrameScript(13, frame14);
}
function frame14(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 164
//Feed (Feed)
package {
import dreemchest.*;
public dynamic class Feed extends Feed {
}
}//package
Section 165
//FeedDescription (FeedDescription)
package {
import flash.display.*;
import flash.text.*;
public dynamic class FeedDescription extends MovieClip {
public var desc:TextField;
}
}//package
Section 166
//FeedGame (FeedGame)
package {
import dreemchest.*;
public dynamic class FeedGame extends FeedGame {
}
}//package
Section 167
//FormationA (FormationA)
package {
import game.enemy.*;
public dynamic class FormationA extends FormationEntry {
}
}//package
Section 168
//FormationB (FormationB)
package {
import game.enemy.*;
public dynamic class FormationB extends FormationEntry {
}
}//package
Section 169
//FormationC (FormationC)
package {
import game.enemy.*;
public dynamic class FormationC extends FormationEntry {
}
}//package
Section 170
//Grid (Grid)
package {
import flash.display.*;
public dynamic class Grid extends MovieClip {
}
}//package
Section 171
//HUD (HUD)
package {
import game.*;
import flash.media.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class HUD extends MovieClip {
public var wave:MovieClip;
public var clickHere:MovieClip;
public var perf:TextField;
public var rampage:MovieClip;
public var abilityTip:MovieClip;
public var score:TextField;
public var hit:MovieClip;
public var pannel:MovieClip;
public var scoreDialog:ScoreDialog;
public var stats:TextField;
public function HUD(){
addFrameScript(0, frame1);
}
function frame1(){
pannel.slot0.caption.text = "1";
pannel.slot1.caption.text = "2";
pannel.slot2.caption.text = "3";
scoreDialog.visible = false;
}
}
}//package
Section 172
//IncHealthClip (IncHealthClip)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public dynamic class IncHealthClip extends MovieClip {
public var caption:TextField;
public function IncHealthClip(){
addFrameScript(0, frame1);
}
function frame1(){
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
public function onEnterFrameHandler(_arg1:Event){
y--;
alpha = (alpha - 0.01);
if ((((alpha <= 0)) && (parent))){
parent.removeChild(this);
};
}
}
}//package
Section 173
//LevelButton (LevelButton)
package {
import flash.display.*;
import flash.text.*;
public dynamic class LevelButton extends MovieClip {
public var button:SimpleButton;
public var caption:TextField;
public var back:MovieClip;
}
}//package
Section 174
//MinionSpawner (MinionSpawner)
package {
import game.boss.*;
public dynamic class MinionSpawner extends MinionSpawner {
}
}//package
Section 175
//MinionSpawnerLeft (MinionSpawnerLeft)
package {
import game.boss.*;
public dynamic class MinionSpawnerLeft extends MinionSpawner {
public function MinionSpawnerLeft(){
addFrameScript(0, frame1, 6, frame7);
}
function frame7(){
gotoAndStop(1);
}
function frame1(){
stop();
}
}
}//package
Section 176
//MinionSpawnerRight (MinionSpawnerRight)
package {
import game.boss.*;
public dynamic class MinionSpawnerRight extends MinionSpawner {
public function MinionSpawnerRight(){
addFrameScript(0, frame1, 9, frame10);
}
function frame10(){
gotoAndStop(1);
}
function frame1(){
stop();
}
}
}//package
Section 177
//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{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var _local3:MochiBot = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var _local4 = "http://core.mochibot.com/my/core.swf";
var _local5:URLVariables = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
var _local6:String = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
var _local7:URLRequest = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
var _local8:Loader = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 178
//PlasmaHit (PlasmaHit)
package {
import game.*;
public dynamic class PlasmaHit extends FX {
public function PlasmaHit(){
addFrameScript(24, frame25);
}
function frame25(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 179
//RampageClip (RampageClip)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public dynamic class RampageClip extends MovieClip {
public var caption:TextField;
public function RampageClip(){
addFrameScript(0, frame1);
}
function frame1(){
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
public function onEnterFrameHandler(_arg1:Event){
y--;
alpha = (alpha - 0.01);
if ((((alpha <= 0)) && (parent))){
parent.removeChild(this);
};
}
}
}//package
Section 180
//RampageShooter (RampageShooter)
package {
import game.boss.*;
public dynamic class RampageShooter extends RampageShooter {
}
}//package
Section 181
//SmokeParticle (SmokeParticle)
package {
import game.*;
import flash.events.*;
public dynamic class SmokeParticle extends FX {
public var speed:Number;
public function SmokeParticle(){
addFrameScript(0, frame1);
}
function frame1(){
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
speed = 2;
}
public function onEnterFrameHandler(_arg1:Event){
scaleX = (scaleX + speed);
scaleY = (scaleY + speed);
alpha = (alpha - 0.1);
if (this.alpha <= 0){
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
if (parent){
parent.removeChild(this);
};
};
}
}
}//package
Section 182
//SoundBomb2 (SoundBomb2)
package {
import flash.media.*;
public dynamic class SoundBomb2 extends Sound {
}
}//package
Section 183
//SoundBossHit (SoundBossHit)
package {
import flash.media.*;
public dynamic class SoundBossHit extends Sound {
}
}//package
Section 184
//SoundDetector (SoundDetector)
package {
import flash.media.*;
public dynamic class SoundDetector extends Sound {
}
}//package
Section 185
//SoundExplosion (SoundExplosion)
package {
import flash.media.*;
public dynamic class SoundExplosion extends Sound {
}
}//package
Section 186
//SoundMenuAmbience (SoundMenuAmbience)
package {
import flash.media.*;
public dynamic class SoundMenuAmbience extends Sound {
}
}//package
Section 187
//SoundMissileLaunch (SoundMissileLaunch)
package {
import flash.media.*;
public dynamic class SoundMissileLaunch extends Sound {
}
}//package
Section 188
//SoundMoan (SoundMoan)
package {
import flash.media.*;
public dynamic class SoundMoan extends Sound {
}
}//package
Section 189
//SoundMoney (SoundMoney)
package {
import flash.media.*;
public dynamic class SoundMoney extends Sound {
}
}//package
Section 190
//SoundMonsterHit1 (SoundMonsterHit1)
package {
import flash.media.*;
public dynamic class SoundMonsterHit1 extends Sound {
}
}//package
Section 191
//SoundMonsterHit2 (SoundMonsterHit2)
package {
import flash.media.*;
public dynamic class SoundMonsterHit2 extends Sound {
}
}//package
Section 192
//SoundMonsterHit3 (SoundMonsterHit3)
package {
import flash.media.*;
public dynamic class SoundMonsterHit3 extends Sound {
}
}//package
Section 193
//SoundPowerUp (SoundPowerUp)
package {
import flash.media.*;
public dynamic class SoundPowerUp extends Sound {
}
}//package
Section 194
//SoundRampage (SoundRampage)
package {
import flash.media.*;
public dynamic class SoundRampage extends Sound {
}
}//package
Section 195
//SoundTheme (SoundTheme)
package {
import flash.media.*;
public dynamic class SoundTheme extends Sound {
}
}//package
Section 196
//Target (Target)
package {
import flash.display.*;
public dynamic class Target extends MovieClip {
}
}//package