Section 1
//AdLoader (CPMStar.AdLoader)
package CPMStar {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class AdLoader {
private static var cpmstarLoader:Loader;
public static var boxSelf:MovieClip;
private static var adURL:URLRequest;
public static var __stage:Stage;
public static function LoadAd(_arg1:int, _arg2:int):DisplayObject{
var _local3:String;
Security.allowDomain("server.cpmstar.com");
_local3 = "http://server.cpmstar.com/adviewas3.swf";
cpmstarLoader = new Loader();
adURL = new URLRequest("http://server.cpmstar.com/adviewas3.swf?poolid=1377&subpoolid=601");
cpmstarLoader.load(adURL);
trace("test");
trace(((((_local3 + "?poolid=") + _arg1) + "&subpoolid=") + _arg2));
cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadFinished);
return (cpmstarLoader);
}
public static function loadIOError(_arg1:IOErrorEvent):void{
trace("ErroR");
}
public static function loadFinished(_arg1:Event):void{
boxSelf.gotoAndStop(2);
}
}
}//package CPMStar
Section 2
//Cloud_11 (main_fla.Cloud_11)
package main_fla {
import flash.display.*;
public dynamic class Cloud_11 extends MovieClip {
public var innerCloud:MovieClip;
}
}//package main_fla
Section 3
//CPMStarAds_3 (main_fla.CPMStarAds_3)
package main_fla {
import flash.display.*;
public dynamic class CPMStarAds_3 extends MovieClip {
public var notDopplerLoader:SimpleButton;
public function CPMStarAds_3(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package main_fla
Section 4
//DragonHead_19 (main_fla.DragonHead_19)
package main_fla {
import flash.display.*;
public dynamic class DragonHead_19 extends MovieClip {
public function DragonHead_19(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package main_fla
Section 5
//endGame_15 (main_fla.endGame_15)
package main_fla {
import flash.display.*;
import flash.text.*;
public dynamic class endGame_15 extends MovieClip {
public var moreGames:SimpleButton;
public var againButton:SimpleButton;
public var scoreText:TextField;
}
}//package main_fla
Section 6
//introFlash_24 (main_fla.introFlash_24)
package main_fla {
import flash.display.*;
public dynamic class introFlash_24 extends MovieClip {
public function introFlash_24(){
addFrameScript(5, frame6);
}
function frame6(){
stop();
}
}
}//package main_fla
Section 7
//loadPlayButton_6 (main_fla.loadPlayButton_6)
package main_fla {
import flash.display.*;
public dynamic class loadPlayButton_6 extends MovieClip {
public function loadPlayButton_6(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package main_fla
Section 8
//notDoppler_intro_22 (main_fla.notDoppler_intro_22)
package main_fla {
import flash.display.*;
public dynamic class notDoppler_intro_22 extends MovieClip {
public function notDoppler_intro_22(){
addFrameScript(557, frame558);
}
function frame558(){
stop();
MovieClip(parent).gotoAndStop("menu");
}
}
}//package main_fla
Section 9
//upgradeMenu_8 (main_fla.upgradeMenu_8)
package main_fla {
import flash.display.*;
public dynamic class upgradeMenu_8 extends MovieClip {
public var hpButton:SimpleButton;
public var defButton:SimpleButton;
public var spButton:SimpleButton;
public var atkButton:SimpleButton;
}
}//package main_fla
Section 10
//MochiScores (mochi.MochiScores)
package mochi {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var options = _arg1;
if (options != null){
if (options.clip != null){
if ((options.clip is Sprite)){
MochiServices.setContainer(options.clip);
};
delete options.clip;
} else {
MochiServices.setContainer();
};
MochiServices.stayOnTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} 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.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
_local2 = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (_arg1 != null){
if (_arg1.error != null){
if (_arg1.error == true){
if (onErrorHandler != null){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
};
};
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi
Section 11
//MochiServices (mochi.MochiServices)
package mochi {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _sendChannel:LocalConnection;
private static var _rcvChannelName:String;
private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf";
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _id:String;
private static var _listenChannel:LocalConnection;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _startTime:Number;
private static var _connecting:Boolean = false;
public static var onError:Object;
private static var _listenChannelName:String = "__mochiservices";
private static var _rcvChannel:LocalConnection;
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
onError("NotConnected");
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
public static function get connected():Boolean{
return (_connected);
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (_clip != null){
if (_clip._queue != null){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
public static function get childClip():Object{
return (_clip);
}
public static function get id():String{
return (_id);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function getVersion():String{
return ("1.31");
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_listenChannel.close();
_rcvChannel.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
Security.allowDomain("*");
Security.allowInsecureDomain("*");
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
return (_local2);
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
if (_clip.parent != null){
Sprite(_clip.parent).removeChild(_clip);
};
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function onStatus(_arg1:StatusEvent):void{
switch (_arg1.level){
case "error":
_connected = false;
_listenChannel.connect(_listenChannelName);
break;
};
}
private static function initComChannels():void{
if (!_connected){
_sendChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus);
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()});
_rcvChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus);
_clip.onReceive = function (_arg1:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var methodName:String;
var obj:Object;
var pkg = _arg1;
cb = pkg.callbackID;
cblst = this.client._callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
methodName = "";
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} 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 this.client._callbacks[cb];
};
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
_rcvChannel.connect(_rcvChannelName);
trace("connected!");
_connecting = false;
_connected = true;
_listenChannel.close();
while (_clip._queue.length > 0) {
_sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function listen():void{
_listenChannel = new LocalConnection();
_listenChannel.client = _clip;
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
_listenChannel.allowDomain("*", "localhost");
_listenChannel.allowInsecureDomain("*", "localhost");
_listenChannel.connect(_listenChannelName);
trace("Waiting for MochiAds services to connect...");
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
_rcvChannelName = _arg1;
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var clipname:String;
var f:Function;
var req:URLRequest;
var id = _arg1;
var clip = _arg2;
clipname = ("_mochiservices_com_" + id);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
MochiServices.allowDomains(_gatewayURL);
_clip = createEmptyMovieClip(clip, clipname, 10336, false);
_loader = new Loader();
_timer = new Timer(1000, 0);
_startTime = getTimer();
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
f = function (_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
req = new URLRequest(_gatewayURL);
_loader.load(req);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_rcvChannel = new LocalConnection();
_rcvChannel.allowDomain("*", "localhost");
_rcvChannel.allowInsecureDomain("*", "localhost");
_rcvChannel.client = _clip;
_clip._nextcallbackID = 0;
_clip._callbacks = {};
listen();
return (_clip);
}
public static function bringToTop(_arg1:Event):void{
var e = _arg1;
if (MochiServices.clip != null){
if (MochiServices.childClip != null){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
};
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
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 createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var mc:MovieClip;
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
mc = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function connectWait(_arg1:TimerEvent):void{
if ((getTimer() - _startTime) > 10000){
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
_timer.stop();
};
}
}
}//package mochi
Section 12
//Action (org.flintparticles.actions.Action)
package org.flintparticles.actions {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
public class Action {
public function addedToEmitter(_arg1:Emitter):void{
}
public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
}
public function getDefaultPriority():Number{
return (0);
}
}
}//package org.flintparticles.actions
Section 13
//Age (org.flintparticles.actions.Age)
package org.flintparticles.actions {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
import org.flintparticles.energyEasing.*;
public class Age extends Action {
private var _easing:Function;
public function Age(_arg1:Function=null){
if (_arg1 == null){
_easing = Linear.easeNone;
} else {
_easing = _arg1;
};
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
_arg2.age = (_arg2.age + _arg3);
if (_arg2.age >= _arg2.lifetime){
_arg2.energy = 0;
_arg2.isDead = true;
} else {
_arg2.energy = _easing(_arg2.age, _arg2.lifetime);
};
}
}
}//package org.flintparticles.actions
Section 14
//DeathOffStage (org.flintparticles.actions.DeathOffStage)
package org.flintparticles.actions {
import flash.display.*;
import org.flintparticles.particles.*;
import flash.geom.*;
import org.flintparticles.emitters.*;
public class DeathOffStage extends Action {
private var _top:Number;// = NAN
private var _left:Number;// = NAN
private var _bottom:Number;// = NAN
private var _padding:Number;
private var _right:Number;// = NAN
public function DeathOffStage(_arg1:Number=10){
_left = NaN;
_right = NaN;
_top = NaN;
_bottom = NaN;
super();
_padding = _arg1;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:DisplayObject;
var _local5:Point;
var _local6:Point;
if (isNaN(_top)){
if (!(_arg1.renderer is DisplayObject)){
return;
};
_local4 = DisplayObject(_arg1.renderer);
if (((!(_local4.stage)) || (!(_local4.stage.stageWidth)))){
return;
};
_local5 = _local4.globalToLocal(new Point(0, 0));
_local6 = _local4.globalToLocal(new Point(_local4.stage.stageWidth, _local4.stage.stageHeight));
_left = (_local5.x - _padding);
_right = (_local6.x + _padding);
_top = (_local5.y - _padding);
_bottom = (_local6.y + _padding);
};
if ((((((((_arg2.x < _left)) || ((_arg2.x > _right)))) || ((_arg2.y < _top)))) || ((_arg2.y > _bottom)))){
_arg2.isDead = true;
};
}
override public function getDefaultPriority():Number{
return (-20);
}
}
}//package org.flintparticles.actions
Section 15
//DeathZone (org.flintparticles.actions.DeathZone)
package org.flintparticles.actions {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
import org.flintparticles.zones.*;
public class DeathZone extends Action {
private var _invertZone:Boolean;
private var _zone:Zone;
public function DeathZone(_arg1:Zone, _arg2:Boolean=false){
_zone = _arg1;
_invertZone = _arg2;
}
public function get zoneIsSafe():Boolean{
return (_invertZone);
}
public function set zoneIsSafe(_arg1:Boolean):void{
_invertZone = _arg1;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Boolean;
_local4 = _zone.contains(_arg2.x, _arg2.y);
if (_invertZone){
_local4 = !(_local4);
};
if (_local4){
_arg2.isDead = true;
};
}
public function get zone():Zone{
return (_zone);
}
public function set zone(_arg1:Zone):void{
_zone = _arg1;
}
override public function getDefaultPriority():Number{
return (-20);
}
}
}//package org.flintparticles.actions
Section 16
//Explosion (org.flintparticles.actions.Explosion)
package org.flintparticles.actions {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
import org.flintparticles.activities.*;
public class Explosion extends Action implements FrameUpdatable {
private var _expansionRate:Number;// = 500
private var _depth:Number;
private var _power:Number;
private var _radiusChange:Number;// = 0
private var _oldRadius:Number;// = 0
private var _epsilonSq:Number;
private var _invDepth:Number;
private var _radius:Number;// = 0
private var _x:Number;
private var _y:Number;
public function Explosion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=300, _arg5:Number=10, _arg6:Number=1){
_oldRadius = 0;
_radius = 0;
_radiusChange = 0;
_expansionRate = 500;
super();
_power = _arg1;
_x = _arg2;
_y = _arg3;
_expansionRate = _arg4;
_depth = (_arg5 * 0.5);
_invDepth = (1 / _depth);
_epsilonSq = (_arg6 * _arg6);
}
public function get power():Number{
return (_power);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local4 = (_arg2.x - _x);
_local5 = (_arg2.y - _y);
_local6 = ((_local4 * _local4) + (_local5 * _local5));
if (_local6 == 0){
return;
};
_local7 = Math.sqrt(_local6);
if (_local7 < (_oldRadius - _depth)){
return;
};
if (_local7 > (_radius + _depth)){
return;
};
_local8 = ((_local7 < _radius)) ? ((_depth - _radius) + _local7) : ((_depth - _local7) + _radius);
_local9 = ((_local7 < _oldRadius)) ? ((_depth - _oldRadius) + _local7) : ((_depth - _local7) + _oldRadius);
_local8 = (_local8 * _invDepth);
_local9 = (_local9 * _invDepth);
if (_local8 < 0){
_arg3 = ((_arg3 * (_radiusChange + _local8)) / _radiusChange);
_local8 = 0;
};
if (_local9 < 0){
_arg3 = ((_arg3 * (_radiusChange + _local9)) / _radiusChange);
_local9 = 0;
};
if ((((_local7 < _oldRadius)) || ((_local7 > _radius)))){
_local10 = (((_arg3 * power) * (_local8 + _local9)) / ((_radius * 2) * _local7));
} else {
_local11 = ((1 - _local9) / _radiusChange);
_local12 = ((((_local11 * _arg3) * power) * (_local9 + 1)) / ((_radius * 2) * _local7));
_local13 = (((((1 - _local11) * _arg3) * power) * (_local8 + 1)) / ((_radius * 2) * _local7));
_local10 = (_local12 + _local13);
};
_arg2.velX = (_arg2.velX + (_local4 * _local10));
_arg2.velY = (_arg2.velY + (_local5 * _local10));
}
public function set power(_arg1:Number):void{
_power = _arg1;
}
public function get y():Number{
return (_y);
}
override public function addedToEmitter(_arg1:Emitter):void{
_arg1.addActivity(new UpdateOnFrame(this));
}
public function set y(_arg1:Number):void{
_y = _arg1;
}
public function set epsilon(_arg1:Number):void{
_epsilonSq = (_arg1 * _arg1);
}
public function frameUpdate(_arg1:Emitter, _arg2:Number):void{
_oldRadius = _radius;
_radiusChange = (_expansionRate * _arg2);
_radius = (_radius + _radiusChange);
}
public function get epsilon():Number{
return (Math.sqrt(_epsilonSq));
}
public function set x(_arg1:Number):void{
_x = _arg1;
}
public function get x():Number{
return (_x);
}
}
}//package org.flintparticles.actions
Section 17
//Move (org.flintparticles.actions.Move)
package org.flintparticles.actions {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
public class Move extends Action {
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
_arg2.x = (_arg2.x + (_arg2.velX * _arg3));
_arg2.y = (_arg2.y + (_arg2.velY * _arg3));
}
override public function getDefaultPriority():Number{
return (-10);
}
}
}//package org.flintparticles.actions
Section 18
//Activity (org.flintparticles.activities.Activity)
package org.flintparticles.activities {
import org.flintparticles.emitters.*;
public class Activity {
public function initialize(_arg1:Emitter):void{
}
public function addedToEmitter(_arg1:Emitter):void{
}
public function update(_arg1:Emitter, _arg2:Number):void{
}
public function getDefaultPriority():Number{
return (0);
}
}
}//package org.flintparticles.activities
Section 19
//FrameUpdatable (org.flintparticles.activities.FrameUpdatable)
package org.flintparticles.activities {
import org.flintparticles.emitters.*;
public interface FrameUpdatable {
function frameUpdate(_arg1:Emitter, _arg2:Number):void;
}
}//package org.flintparticles.activities
Section 20
//UpdateOnFrame (org.flintparticles.activities.UpdateOnFrame)
package org.flintparticles.activities {
import org.flintparticles.emitters.*;
public class UpdateOnFrame extends Activity {
private var action:FrameUpdatable;
public function UpdateOnFrame(_arg1:FrameUpdatable){
action = _arg1;
}
override public function update(_arg1:Emitter, _arg2:Number):void{
action.frameUpdate(_arg1, _arg2);
}
}
}//package org.flintparticles.activities
Section 21
//Blast (org.flintparticles.counters.Blast)
package org.flintparticles.counters {
import org.flintparticles.emitters.*;
public class Blast implements Counter {
private var _startMax:uint;
private var _startMin:uint;
public function Blast(_arg1:Number, _arg2:Number=NaN){
_startMin = _arg1;
_startMax = (isNaN(_arg2)) ? _arg1 : _arg2;
}
public function updateEmitter(_arg1:Emitter, _arg2:Number):uint{
return (0);
}
public function startEmitter(_arg1:Emitter):uint{
return (Math.round((_startMin + (Math.random() * (_startMax - _startMin)))));
}
}
}//package org.flintparticles.counters
Section 22
//Counter (org.flintparticles.counters.Counter)
package org.flintparticles.counters {
import org.flintparticles.emitters.*;
public interface Counter {
function updateEmitter(_arg1:Emitter, _arg2:Number):uint;
function startEmitter(_arg1:Emitter):uint;
}
}//package org.flintparticles.counters
Section 23
//ZeroCounter (org.flintparticles.counters.ZeroCounter)
package org.flintparticles.counters {
import org.flintparticles.emitters.*;
public class ZeroCounter implements Counter {
public function updateEmitter(_arg1:Emitter, _arg2:Number):uint{
return (0);
}
public function startEmitter(_arg1:Emitter):uint{
return (0);
}
}
}//package org.flintparticles.counters
Section 24
//Dot (org.flintparticles.displayObjects.Dot)
package org.flintparticles.displayObjects {
import flash.display.*;
public class Dot extends Shape {
public function Dot(_arg1:Number, _arg2:uint=0xFFFFFF, _arg3:String="normal"){
graphics.beginFill(_arg2);
graphics.drawCircle(0, 0, _arg1);
graphics.endFill();
blendMode = _arg3;
}
}
}//package org.flintparticles.displayObjects
Section 25
//Emitter (org.flintparticles.emitters.Emitter)
package org.flintparticles.emitters {
import flash.display.*;
import flash.events.*;
import org.flintparticles.particles.*;
import flash.geom.*;
import flash.utils.*;
import org.flintparticles.activities.*;
import org.flintparticles.initializers.*;
import org.flintparticles.actions.*;
import org.flintparticles.counters.*;
import org.flintparticles.renderers.*;
import org.flintparticles.events.*;
import org.flintparticles.utils.*;
public class Emitter extends EventDispatcher {
protected var _x:Number;// = 0
protected var _actionsPriority:Array;
protected var _activities:Array;
protected var _renderer:Renderer;
private var _ticker:Shape;
private var _time:uint;
protected var _particles:Array;
protected var _initializers:Array;
protected var _counter:Counter;
protected var _actions:Array;
public var spaceSort:Boolean;// = false
protected var _activitiesPriority:Array;
public var spaceSortedX:Array;
protected var _rotation:Number;// = 0
protected var _particleFactory:ParticleFactory;
protected var _initializersPriority:Array;
protected var _particlesPriority:Array;
protected var _y:Number;// = 0
protected static var _creator:ParticleCreator = new ParticleCreator();
public function Emitter(){
_x = 0;
_y = 0;
_rotation = 0;
spaceSort = false;
super();
_particleFactory = _creator;
_particles = new Array();
_actions = new Array();
_initializers = new Array();
_activities = new Array();
_particlesPriority = new Array();
_actionsPriority = new Array();
_initializersPriority = new Array();
_activitiesPriority = new Array();
_counter = new ZeroCounter();
_ticker = new Shape();
}
public function set y(_arg1:Number):void{
_y = _arg1;
}
public function set rotation(_arg1:Number):void{
_rotation = Maths.asRadians(_arg1);
}
public function addInitializer(_arg1:Initializer, _arg2:Number=NaN):void{
var _local3:uint;
if (isNaN(_arg2)){
_arg2 = _arg1.getDefaultPriority();
};
_local3 = 0;
while (_local3 < _initializersPriority.length) {
if (_initializersPriority[_local3] < _arg2){
break;
};
_local3++;
};
_initializers.splice(_local3, 0, _arg1);
_initializersPriority.splice(_local3, 0, _arg2);
_arg1.addedToEmitter(this);
}
public function get y():Number{
return (_y);
}
public function get counter():Counter{
return (_counter);
}
public function set renderer(_arg1:Renderer):void{
_renderer = _arg1;
}
public function rendererGlobalToLocal(_arg1:Point):Point{
var _local2:Point;
_local2 = _arg1.clone();
if ((_renderer is DisplayObject)){
_local2 = DisplayObject(_renderer).globalToLocal(_local2);
};
return (_local2);
}
public function get rotRadians():Number{
return (_rotation);
}
protected function frameUpdate(_arg1:Number):void{
var _local2:uint;
var _local3:Particle;
var _local4:uint;
var _local5:Action;
var _local6:uint;
var _local7:uint;
_local4 = _counter.updateEmitter(this, _arg1);
_local2 = 0;
while (_local2 < _local4) {
createParticle();
_local2++;
};
if (spaceSort){
spaceSortedX = _particles.sortOn("x", (Array.NUMERIC | Array.RETURNINDEXEDARRAY));
_local4 = _particles.length;
_local2 = 0;
while (_local2 < _local4) {
_particles[spaceSortedX[_local2]].spaceSortX = _local2;
_local2++;
};
};
_local4 = _activities.length;
_local2 = 0;
while (_local2 < _local4) {
_activities[_local2].update(this, _arg1);
_local2++;
};
if (_particles.length > 0){
_local4 = _actions.length;
_local6 = _particles.length;
_local7 = 0;
while (_local7 < _local4) {
_local5 = _actions[_local7];
_local2 = 0;
while (_local2 < _local6) {
_local3 = _particles[_local2];
_local5.update(this, _local3, _arg1);
_local2++;
};
_local7++;
};
_local2 = _local6;
while (_local2--) {
_local3 = _particles[_local2];
if (_local3.isDead){
dispatchEvent(new FlintEvent(FlintEvent.PARTICLE_DEAD, _local3));
_renderer.removeParticle(_local3);
_particleFactory.disposeParticle(_local3);
_particles.splice(_local2, 1);
};
};
} else {
dispatchEvent(new FlintEvent(FlintEvent.EMITTER_EMPTY));
};
_renderer.renderParticles(_particles);
}
public function rendererLocalToGlobal(_arg1:Point):Point{
var _local2:Point;
_local2 = _arg1.clone();
if ((_renderer is DisplayObject)){
_local2 = DisplayObject(_renderer).localToGlobal(_local2);
};
return (_local2);
}
public function dispose():void{
var _local1:uint;
var _local2:uint;
_ticker.removeEventListener(Event.ENTER_FRAME, frameLoop);
_local1 = _particles.length;
_local2 = 0;
while (_local2 < _local1) {
_particleFactory.disposeParticle(_particles[_local2]);
_local2++;
};
_particles.length = 0;
}
public function get particleFactory():ParticleFactory{
return (_particleFactory);
}
public function get particles():Array{
return (_particles);
}
private function createParticle():Particle{
var _local1:Particle;
var _local2:uint;
var _local3:uint;
_local1 = _particleFactory.createParticle();
_local2 = _initializers.length;
_local1.x = _x;
_local1.y = _y;
_local1.rotation = _rotation;
_local3 = 0;
while (_local3 < _local2) {
_initializers[_local3].initialize(this, _local1);
_local3++;
};
_particles.unshift(_local1);
_renderer.addParticle(_local1);
dispatchEvent(new FlintEvent(FlintEvent.PARTICLE_CREATED, _local1));
return (_local1);
}
public function resume():void{
_ticker.removeEventListener(Event.ENTER_FRAME, frameLoop);
_ticker.addEventListener(Event.ENTER_FRAME, frameLoop);
_time = getTimer();
}
public function set rotRadians(_arg1:Number):void{
_rotation = _arg1;
}
public function addAction(_arg1:Action, _arg2:Number=NaN):void{
var _local3:uint;
if (isNaN(_arg2)){
_arg2 = _arg1.getDefaultPriority();
};
_local3 = 0;
while (_local3 < _actionsPriority.length) {
if (_actionsPriority[_local3] < _arg2){
break;
};
_local3++;
};
_actions.splice(_local3, 0, _arg1);
_actionsPriority.splice(_local3, 0, _arg2);
_arg1.addedToEmitter(this);
}
private function frameLoop(_arg1:Event):void{
var _local2:uint;
var _local3:Number;
_local2 = _time;
_time = getTimer();
_local3 = ((_time - _local2) * 0.001);
frameUpdate(_local3);
}
private function addDisplayObject(_arg1:DisplayObject):void{
var _local2:Particle;
var _local3:uint;
var _local4:uint;
var _local5:Point;
var _local6:Number;
var _local7:DisplayObject;
_local2 = _particleFactory.createParticle();
_local3 = _initializers.length;
_local4 = 0;
while (_local4 < _local3) {
_initializers[_local4].initialize(this, _local2);
_local4++;
};
_local5 = new Point(0, 0);
_local6 = 0;
_local7 = DisplayObject(_renderer);
_local5 = _local7.globalToLocal(_arg1.localToGlobal(_local5));
_local6 = DisplayObjectUtils.globalToLocalRotation(_local7, DisplayObjectUtils.localToGlobalRotation(_arg1, 0));
_arg1.parent.removeChild(_arg1);
_local2.x = _local5.x;
_local2.y = _local5.y;
_local2.image = _arg1;
_local2.rotation = Maths.asRadians(_local6);
_particles.unshift(_local2);
_renderer.addParticle(_local2);
}
public function removeActivity(_arg1:Activity):void{
var _local2:uint;
_local2 = 0;
while (_local2 < _activities.length) {
if (_activities[_local2] == _arg1){
_activities.splice(_local2, 1);
_activitiesPriority.splice(_local2, 1);
return;
};
_local2++;
};
}
public function get renderer():Renderer{
return (_renderer);
}
public function removeInitializer(_arg1:Initializer):void{
var _local2:uint;
_local2 = 0;
while (_local2 < _initializers.length) {
if (_initializers[_local2] == _arg1){
_initializers.splice(_local2, 1);
_initializersPriority.splice(_local2, 1);
return;
};
_local2++;
};
}
public function set particleFactory(_arg1:ParticleFactory):void{
_particleFactory = _arg1;
}
public function addActivity(_arg1:Activity, _arg2:Number=NaN):void{
var _local3:uint;
if (isNaN(_arg2)){
_arg2 = _arg1.getDefaultPriority();
};
_local3 = 0;
while (_local3 < _activitiesPriority.length) {
if (_activitiesPriority[_local3] < _arg2){
break;
};
_local3++;
};
_activities.splice(_local3, 0, _arg1);
_activitiesPriority.splice(_local3, 0, _arg2);
_arg1.addedToEmitter(this);
}
public function removeAction(_arg1:Action):void{
var _local2:uint;
_local2 = 0;
while (_local2 < _actions.length) {
if (_actions[_local2] == _arg1){
_actions.splice(_local2, 1);
_actionsPriority.splice(_local2, 1);
return;
};
_local2++;
};
}
public function start():void{
var _local1:uint;
var _local2:uint;
_ticker.removeEventListener(Event.ENTER_FRAME, frameLoop);
_ticker.addEventListener(Event.ENTER_FRAME, frameLoop);
_time = getTimer();
_local1 = _activities.length;
_local2 = 0;
while (_local2 < _local1) {
_activities[_local2].initialize(this);
_local2++;
};
_local1 = _counter.startEmitter(this);
_local2 = 0;
while (_local2 < _local1) {
createParticle();
_local2++;
};
}
public function set x(_arg1:Number):void{
_x = _arg1;
}
public function addDisplayObjects(... _args):void{
var _local2:Number;
var _local3:Number;
if (((!((_renderer is DisplayObject))) || (!(DisplayObject(_renderer).stage)))){
throw (new Error("Attempt to add DisplayObjects to an emitter when the emitter has no renderer or the emitter's renderer is not on the stage."));
};
_local2 = 0;
while (_local2 < _args.length) {
if ((_args[_local2] is Array)){
_local3 = 0;
while (_local3 < _args[_local2].length) {
if ((_args[_local2][_local3] is DisplayObject)){
addDisplayObject(_args[_local2][_local3]);
};
_local3++;
};
} else {
if ((_args[_local2] is DisplayObject)){
addDisplayObject(_args[_local2]);
};
};
_local2++;
};
}
public function pause():void{
_ticker.removeEventListener(Event.ENTER_FRAME, frameLoop);
}
public function get x():Number{
return (_x);
}
public function runAhead(_arg1:Number, _arg2:Number=10):void{
var _local3:Number;
pause();
_local3 = (1 / _arg2);
while (_arg1 > 0) {
_arg1 = (_arg1 - _local3);
frameUpdate(_local3);
};
resume();
}
public function get rotation():Number{
return (Maths.asDegrees(_rotation));
}
public function set counter(_arg1:Counter):void{
_counter = _arg1;
}
}
}//package org.flintparticles.emitters
Section 26
//Linear (org.flintparticles.energyEasing.Linear)
package org.flintparticles.energyEasing {
public class Linear {
public static function easeOut(_arg1:Number, _arg2:Number):Number{
return ((1 - (_arg1 / _arg2)));
}
public static function easeIn(_arg1:Number, _arg2:Number):Number{
return ((1 - (_arg1 / _arg2)));
}
public static function easeInOut(_arg1:Number, _arg2:Number):Number{
return ((1 - (_arg1 / _arg2)));
}
public static function easeNone(_arg1:Number, _arg2:Number):Number{
return ((1 - (_arg1 / _arg2)));
}
}
}//package org.flintparticles.energyEasing
Section 27
//Quadratic (org.flintparticles.energyEasing.Quadratic)
package org.flintparticles.energyEasing {
public class Quadratic {
public static function easeOut(_arg1:Number, _arg2:Number):Number{
_arg1 = (1 - (_arg1 / _arg2));
return ((_arg1 * _arg1));
}
public static function easeIn(_arg1:Number, _arg2:Number):Number{
_arg1 = (_arg1 / _arg2);
return ((1 - (_arg1 * _arg1)));
}
public static function easeInOut(_arg1:Number, _arg2:Number):Number{
_arg1 = (_arg1 / (_arg2 * 0.5));
if (_arg1 < 1){
return ((1 - ((_arg1 * _arg1) * 0.5)));
};
_arg1 = (_arg1 - 2);
return (((_arg1 * _arg1) * 0.5));
}
}
}//package org.flintparticles.energyEasing
Section 28
//FlintEvent (org.flintparticles.events.FlintEvent)
package org.flintparticles.events {
import flash.events.*;
import org.flintparticles.particles.*;
public class FlintEvent extends Event {
public var particle:Particle;
public static var EMITTER_EMPTY:String = "emitterEmpty";
public static var PARTICLE_DEAD:String = "particleDead";
public static var PARTICLE_CREATED:String = "particleCreated";
public function FlintEvent(_arg1:String, _arg2:Particle=null, _arg3:Boolean=false, _arg4:Boolean=false){
super(_arg1, _arg3, _arg4);
particle = _arg2;
}
}
}//package org.flintparticles.events
Section 29
//ColorInit (org.flintparticles.initializers.ColorInit)
package org.flintparticles.initializers {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
import org.flintparticles.utils.*;
public class ColorInit extends Initializer {
private var _min:uint;
private var _max:uint;
public function ColorInit(_arg1:uint, _arg2:uint){
_min = _arg1;
_max = _arg2;
}
public function get color():uint{
return (((_min == _max)) ? _min : interpolateColors(_max, _min, 0.5));
}
public function set minColor(_arg1:uint):void{
_min = _arg1;
}
public function set color(_arg1:uint):void{
_max = (_min = _arg1);
}
override public function initialize(_arg1:Emitter, _arg2:Particle):void{
if (_max == _min){
_arg2.color = _min;
} else {
_arg2.color = interpolateColors(_min, _max, Math.random());
};
}
public function get minColor():uint{
return (_min);
}
public function set maxColor(_arg1:uint):void{
_max = _arg1;
}
public function get maxColor():uint{
return (_max);
}
}
}//package org.flintparticles.initializers
Section 30
//ImageClass (org.flintparticles.initializers.ImageClass)
package org.flintparticles.initializers {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
import org.flintparticles.utils.*;
public class ImageClass extends Initializer {
private var _parameters:Array;
private var _imageClass:Class;
public function ImageClass(_arg1:Class, ... _args){
_imageClass = _arg1;
_parameters = _args;
}
override public function initialize(_arg1:Emitter, _arg2:Particle):void{
_arg2.image = construct(_imageClass, _parameters);
}
}
}//package org.flintparticles.initializers
Section 31
//Initializer (org.flintparticles.initializers.Initializer)
package org.flintparticles.initializers {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
public class Initializer {
public function initialize(_arg1:Emitter, _arg2:Particle):void{
}
public function addedToEmitter(_arg1:Emitter):void{
}
public function getDefaultPriority():Number{
return (0);
}
}
}//package org.flintparticles.initializers
Section 32
//Lifetime (org.flintparticles.initializers.Lifetime)
package org.flintparticles.initializers {
import org.flintparticles.particles.*;
import org.flintparticles.emitters.*;
public class Lifetime extends Initializer {
private var _max:Number;
private var _min:Number;
public function Lifetime(_arg1:Number, _arg2:Number=NaN){
_max = _arg2;
_min = _arg1;
}
public function set maxLifetime(_arg1:Number):void{
_max = _arg1;
}
public function get maxLifetime():Number{
return (_max);
}
override public function initialize(_arg1:Emitter, _arg2:Particle):void{
if (isNaN(_max)){
_arg2.lifetime = _min;
} else {
_arg2.lifetime = (_min + (Math.random() * (_max - _min)));
};
}
public function set lifetime(_arg1:Number):void{
_max = (_min = _arg1);
}
public function get lifetime():Number{
return (((_min == _max)) ? _min : ((_max + _min) * 0.5));
}
public function get minLifetime():Number{
return (_min);
}
public function set minLifetime(_arg1:Number):void{
_min = _arg1;
}
}
}//package org.flintparticles.initializers
Section 33
//Position (org.flintparticles.initializers.Position)
package org.flintparticles.initializers {
import org.flintparticles.particles.*;
import flash.geom.*;
import org.flintparticles.emitters.*;
import org.flintparticles.zones.*;
public class Position extends Initializer {
private var _zone:Zone;
public function Position(_arg1:Zone){
_zone = _arg1;
}
override public function initialize(_arg1:Emitter, _arg2:Particle):void{
var _local3:Point;
var _local4:Number;
var _local5:Number;
if (_arg1.rotRadians == 0){
_local3 = _zone.getLocation();
_arg2.x = _local3.x;
_arg2.y = _local3.y;
} else {
_local4 = Math.sin(_arg1.rotRadians);
_local5 = Math.cos(_arg1.rotRadians);
_local3 = _zone.getLocation();
_arg2.x = ((_local5 * _local3.x) - (_local4 * _local3.y));
_arg2.y = ((_local5 * _local3.y) + (_local4 * _local3.x));
};
_arg2.x = (_arg2.x + _arg1.x);
_arg2.y = (_arg2.y + _arg1.y);
}
public function set zone(_arg1:Zone):void{
_zone = _arg1;
}
public function get zone():Zone{
return (_zone);
}
}
}//package org.flintparticles.initializers
Section 34
//Particle (org.flintparticles.particles.Particle)
package org.flintparticles.particles {
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
public class Particle {
private var _dictionary:Dictionary;// = null
public var rotation:Number;// = 0
public var energy:Number;// = 1
public var lifetime:Number;// = 0
public var scale:Number;// = 1
public var angVelocity:Number;// = 0
public var image:DisplayObject;// = null
public var velY:Number;// = 0
public var velX:Number;// = 0
public var color:uint;// = 4294967295
public var spaceSortX:uint;
public var isDead:Boolean;// = false
public var x:Number;// = 0
public var y:Number;// = 0
public var age:Number;// = 0
public function Particle(){
x = 0;
y = 0;
velX = 0;
velY = 0;
rotation = 0;
angVelocity = 0;
color = 4294967295;
scale = 1;
image = null;
lifetime = 0;
age = 0;
energy = 1;
isDead = false;
_dictionary = null;
super();
}
public function get dictionary():Dictionary{
if (_dictionary == null){
_dictionary = new Dictionary();
};
return (_dictionary);
}
public function get colorTransform():ColorTransform{
return (new ColorTransform((((color >>> 16) & 0xFF) / 0xFF), (((color >>> 8) & 0xFF) / 0xFF), ((color & 0xFF) / 0xFF), (((color >>> 24) & 0xFF) / 0xFF), 0, 0, 0, 0));
}
public function initialize():void{
x = 0;
y = 0;
velX = 0;
velY = 0;
rotation = 0;
angVelocity = 0;
color = 4294967295;
scale = 1;
lifetime = 0;
age = 0;
energy = 1;
isDead = false;
image = null;
spaceSortX = 0;
_dictionary = null;
}
public function get matrixTransform():Matrix{
var _local1:Number;
var _local2:Number;
_local1 = (scale * Math.cos(rotation));
_local2 = (scale * Math.sin(rotation));
return (new Matrix(_local1, _local2, -(_local2), _local1, x, y));
}
}
}//package org.flintparticles.particles
Section 35
//ParticleCreator (org.flintparticles.particles.ParticleCreator)
package org.flintparticles.particles {
public class ParticleCreator implements ParticleFactory {
private var _particles:Array;
public function ParticleCreator(){
_particles = new Array();
}
public function clearAllParticles():void{
_particles = new Array();
}
public function createParticle():Particle{
if (_particles.length){
return (_particles.pop());
};
return (new Particle());
}
public function disposeParticle(_arg1:Particle):void{
_arg1.initialize();
_particles.push(_arg1);
}
}
}//package org.flintparticles.particles
Section 36
//ParticleFactory (org.flintparticles.particles.ParticleFactory)
package org.flintparticles.particles {
public interface ParticleFactory {
function createParticle():Particle;
function disposeParticle(_arg1:Particle):void;
}
}//package org.flintparticles.particles
Section 37
//DisplayObjectRenderer (org.flintparticles.renderers.DisplayObjectRenderer)
package org.flintparticles.renderers {
import flash.display.*;
import org.flintparticles.particles.*;
public class DisplayObjectRenderer extends Sprite implements Renderer {
public function DisplayObjectRenderer(){
mouseEnabled = false;
mouseChildren = false;
}
public function removeParticle(_arg1:Particle):void{
removeChild(_arg1.image);
}
public function addParticle(_arg1:Particle):void{
addChildAt(_arg1.image, 0);
}
public function renderParticles(_arg1:Array):void{
var _local2:Particle;
var _local3:uint;
var _local4:uint;
_local3 = _arg1.length;
_local4 = 0;
while (_local4 < _local3) {
_local2 = _arg1[_local4];
_local2.image.transform.colorTransform = _local2.colorTransform;
_local2.image.transform.matrix = _local2.matrixTransform;
_local4++;
};
}
}
}//package org.flintparticles.renderers
Section 38
//Renderer (org.flintparticles.renderers.Renderer)
package org.flintparticles.renderers {
import org.flintparticles.particles.*;
public interface Renderer {
function renderParticles(_arg1:Array):void;
function removeParticle(_arg1:Particle):void;
function addParticle(_arg1:Particle):void;
}
}//package org.flintparticles.renderers
Section 39
//construct (org.flintparticles.utils.construct)
package org.flintparticles.utils {
public function construct(_arg1:Class, _arg2:Array){
switch (_arg2.length){
case 0:
return (new (_arg1));
case 1:
return (new _arg1(_arg2[0]));
case 2:
return (new _arg1(_arg2[0], _arg2[1]));
case 3:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2]));
case 4:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3]));
case 5:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4]));
case 6:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5]));
case 7:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6]));
case 8:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7]));
case 9:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8]));
case 10:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8], _arg2[9]));
default:
return (null);
};
}
}//package org.flintparticles.utils
Section 40
//DisplayObjectUtils (org.flintparticles.utils.DisplayObjectUtils)
package org.flintparticles.utils {
import flash.display.*;
public class DisplayObjectUtils {
public static function globalToLocalRotation(_arg1:DisplayObject, _arg2:Number):Number{
var _local3:Number;
var _local4:DisplayObject;
_local3 = (_arg2 - _arg1.rotation);
_local4 = _arg1.parent;
while (((_local4) && (!((_local4 == _arg1.stage))))) {
_local3 = (_local3 - _local4.rotation);
_local4 = _local4.parent;
};
return (_local3);
}
public static function localToGlobalRotation(_arg1:DisplayObject, _arg2:Number):Number{
var _local3:Number;
var _local4:DisplayObject;
_local3 = (_arg2 + _arg1.rotation);
_local4 = _arg1.parent;
while (((_local4) && (!((_local4 == _arg1.stage))))) {
_local3 = (_local3 + _local4.rotation);
_local4 = _local4.parent;
};
return (_local3);
}
}
}//package org.flintparticles.utils
Section 41
//interpolateColors (org.flintparticles.utils.interpolateColors)
package org.flintparticles.utils {
public function interpolateColors(_arg1:uint, _arg2:uint, _arg3:Number):uint{
var _local4:Number;
var _local5:uint;
var _local6:uint;
var _local7:uint;
var _local8:uint;
_local4 = (1 - _arg3);
_local5 = Math.round(((((_arg1 >>> 16) & 0xFF) * _arg3) + (((_arg2 >>> 16) & 0xFF) * _local4)));
_local6 = Math.round(((((_arg1 >>> 8) & 0xFF) * _arg3) + (((_arg2 >>> 8) & 0xFF) * _local4)));
_local7 = Math.round((((_arg1 & 0xFF) * _arg3) + ((_arg2 & 0xFF) * _local4)));
_local8 = Math.round(((((_arg1 >>> 24) & 0xFF) * _arg3) + (((_arg2 >>> 24) & 0xFF) * _local4)));
return (((((_local8 << 24) | (_local5 << 16)) | (_local6 << 8)) | _local7));
}
}//package org.flintparticles.utils
Section 42
//Maths (org.flintparticles.utils.Maths)
package org.flintparticles.utils {
public class Maths {
private static const DEGTORAD:Number = 0.0174532925199433;
private static const RADTODEG:Number = 57.2957795130823;
public static function asRadians(_arg1:Number):Number{
return ((_arg1 * DEGTORAD));
}
public static function asDegrees(_arg1:Number):Number{
return ((_arg1 * RADTODEG));
}
}
}//package org.flintparticles.utils
Section 43
//DiscZone (org.flintparticles.zones.DiscZone)
package org.flintparticles.zones {
import flash.geom.*;
public class DiscZone implements Zone {
private var _innerRadius:Number;
private var _outerRadius:Number;
private var _center:Point;
private var _innerSq:Number;
private var _outerSq:Number;
private static var TWOPI:Number = 6.28318530717959;
public function DiscZone(_arg1:Point, _arg2:Number, _arg3:Number=0){
_center = _arg1;
_innerRadius = _arg3;
_outerRadius = _arg2;
_innerSq = (_innerRadius * _innerRadius);
_outerSq = (_outerRadius * _outerRadius);
}
public function getArea():Number{
return (((Math.PI * _outerSq) - (Math.PI * _innerSq)));
}
public function getLocation():Point{
var _local1:Number;
var _local2:Point;
_local1 = Math.random();
_local2 = Point.polar((_innerRadius + ((1 - (_local1 * _local1)) * (_outerRadius - _innerRadius))), (Math.random() * TWOPI));
_local2.x = (_local2.x + _center.x);
_local2.y = (_local2.y + _center.y);
return (_local2);
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
var _local3:Number;
_arg1 = (_arg1 - _center.x);
_arg2 = (_arg2 - _center.y);
_local3 = ((_arg1 * _arg1) + (_arg2 * _arg2));
return ((((_local3 <= _outerSq)) && ((_local3 >= _innerSq))));
}
}
}//package org.flintparticles.zones
Section 44
//RectangleZone (org.flintparticles.zones.RectangleZone)
package org.flintparticles.zones {
import flash.geom.*;
public class RectangleZone implements Zone {
private var _left:Number;
private var _bottom:Number;
private var _height:Number;
private var _width:Number;
private var _top:Number;
private var _right:Number;
public function RectangleZone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
_left = _arg1;
_top = _arg2;
_right = _arg3;
_bottom = _arg4;
_width = (_arg3 - _arg1);
_height = (_arg4 - _arg2);
}
public function getArea():Number{
return ((_width * _height));
}
public function getLocation():Point{
return (new Point((_left + (Math.random() * _width)), (_top + (Math.random() * _height))));
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return ((((((((_arg1 >= _left)) && ((_arg1 <= _right)))) && ((_arg2 >= _top)))) && ((_arg2 <= _bottom))));
}
}
}//package org.flintparticles.zones
Section 45
//Zone (org.flintparticles.zones.Zone)
package org.flintparticles.zones {
import flash.geom.*;
public interface Zone {
function getArea():Number;
function getLocation():Point;
function contains(_arg1:Number, _arg2:Number):Boolean;
}
}//package org.flintparticles.zones
Section 46
//arrowSymbol (arrowSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class arrowSymbol extends MovieClip {
private var ySpeed:Number;
public var damage:Number;
private var xSpeed:Number;
private var angle:Number;
public var lastUpdate:Number;
private static var gravity:Number = 50;
private static var speed:Number = 150;
public function arrowSymbol(_arg1:Number, _arg2:Number, _arg3:Number):void{
x = _arg1;
y = _arg2;
damage = 0.25;
angle = _arg3;
xSpeed = (Math.cos(angle) * speed);
ySpeed = (-(Math.sin(angle)) * speed);
lastUpdate = getTimer();
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
addEventListener(Event.ENTER_FRAME, update);
}
public function kill():void{
removeEventListener(Event.ENTER_FRAME, update);
}
public function getType():String{
return ("arrowSymbol");
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
removeEventListener(Event.ENTER_FRAME, update);
} else {
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
x = (x + ((xSpeed * _local2) / 1000));
y = (y + ((ySpeed * _local2) / 1000));
ySpeed = (ySpeed + ((gravity * _local2) / 1000));
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
}
}
}//package
Section 47
//blackBlastSymbol (blackBlastSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class blackBlastSymbol extends MovieClip {
public function blackBlastSymbol(_arg1:Number=1, _arg2:Number=1){
addFrameScript(19, frame20);
scaleX = _arg1;
scaleY = _arg2;
addEventListener(Event.ENTER_FRAME, checkLifetime);
}
function frame20(){
stop();
}
private function checkLifetime(_arg1:Event):void{
if (this.currentFrame >= 20){
MovieClip(parent).removeBlastSymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, checkLifetime);
};
}
}
}//package
Section 48
//blackHoleSymbol (blackHoleSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class blackHoleSymbol extends MovieClip {
private var ySpeed:Number;
public var generateBlackHole:Boolean;
public var damage:Number;
private var xSpeed:Number;
private var angle:Number;
private var lastUpdate:Number;
private static var gravity:Number = 50;
private static var speed:Number = 150;
public function blackHoleSymbol(_arg1:Number, _arg2:Number, _arg3:Number):void{
x = _arg1;
y = _arg2;
generateBlackHole = false;
damage = 1;
angle = _arg3;
xSpeed = (Math.cos(angle) * speed);
ySpeed = (-(Math.sin(angle)) * speed);
lastUpdate = getTimer();
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
addEventListener(Event.ENTER_FRAME, update);
}
public function kill():void{
if (generateBlackHole){
MovieClip(parent).generateBlackHole(x, y);
};
removeEventListener(Event.ENTER_FRAME, update);
}
public function getType():String{
return ("arrowSymbol");
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
removeEventListener(Event.ENTER_FRAME, update);
} else {
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
x = (x + ((xSpeed * _local2) / 1000));
y = (y + ((ySpeed * _local2) / 1000));
ySpeed = (ySpeed + ((gravity * _local2) / 1000));
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
}
}
}//package
Section 49
//blastSymbol (blastSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class blastSymbol extends MovieClip {
public function blastSymbol(_arg1:Number=1, _arg2:Number=1){
addFrameScript(43, frame44);
scaleX = _arg1;
scaleY = _arg2;
this.mouseEnabled = false;
addEventListener(Event.ENTER_FRAME, checkLifetime);
}
function frame44(){
stop();
}
private function checkLifetime(_arg1:Event):void{
if (this.currentFrame >= 44){
MovieClip(parent).removeBlastSymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, checkLifetime);
};
}
}
}//package
Section 50
//dragonClass (dragonClass)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class dragonClass {
public var defense:Number;
public var healthSpeed:Number;
public var specialSpeed:Number;
public var health:Number;
public var healthMax:Number;
public var specialMax:Number;
public var special:Number;
public var pauseState:Boolean;
private var lastUpdate:Number;
private static var dragonRef:MovieClip;
private static var dragonNeck:MovieClip;
private static var spBar:specialBarSymbol;
private static var hpBar:healthBarSymbol;
private static var dragonFirstAnimationTimer:Timer;
public function dragonClass(_arg1:MovieClip, _arg2:MovieClip){
dragonRef = _arg1;
dragonRef.gotoAndStop(1);
dragonFirstAnimationTimer = new Timer(33, 30);
dragonFirstAnimationTimer.addEventListener(TimerEvent.TIMER, onTick);
dragonFirstAnimationTimer.start();
health = 100;
defense = 0;
pauseState = false;
healthMax = 100;
healthSpeed = 0.2;
special = 100;
specialMax = 100;
specialSpeed = 12;
spBar = new specialBarSymbol();
hpBar = new healthBarSymbol();
spBar.x = 550;
spBar.y = 70;
hpBar.x = 550;
hpBar.y = 50;
dragonRef.parent.addChild(spBar);
dragonRef.parent.addChild(hpBar);
dragonNeck = _arg2;
hit(0);
lastUpdate = getTimer();
dragonRef.addEventListener(Event.ENTER_FRAME, update);
}
public function shiftHead():void{
dragonFirstAnimationTimer.start();
}
public function reinit():void{
health = 100;
healthMax = 100;
healthSpeed = 0.2;
special = 100;
specialMax = 100;
specialSpeed = 15;
pauseState = false;
defense = 0;
}
public function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
if (pauseState){
return;
};
if (special < specialMax){
special = (special + ((specialSpeed * _local2) / 1000));
};
if (special > specialMax){
special = specialMax;
};
if (health < healthMax){
health = (health + ((healthSpeed * _local2) / 1000));
};
if (health > healthMax){
health = healthMax;
};
spBar.scaleX = (special / 500);
hpBar.scaleX = (health / 500);
}
public function decreaseSpecial(_arg1:Number):void{
special = (special - _arg1);
spBar.scaleX = (special / 300);
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
dragonRef.removeEventListener(Event.ENTER_FRAME, update);
} else {
lastUpdate = getTimer();
dragonRef.addEventListener(Event.ENTER_FRAME, update);
};
}
public function getSpecial():Number{
return (special);
}
public function hit(_arg1:Number):void{
var _local2:Number;
_local2 = (((_arg1 * 0.3) + (((_arg1 * 0.2) * (99 - Math.min(99, defense))) / 99)) + (((_arg1 * (10 - Math.min(10, defense))) * 0.5) / 10));
health = (health - _local2);
hpBar.scaleX = (health / 500);
}
public function onTick(_arg1:TimerEvent):void{
dragonRef.x = (dragonRef.x - (10 * Math.sin(((3.14159265 * dragonFirstAnimationTimer.currentCount) / 60))));
dragonNeck.x = (dragonNeck.x - (10 * Math.sin(((3.14159265 * dragonFirstAnimationTimer.currentCount) / 60))));
}
}
}//package
Section 51
//enemyGenerator (enemyGenerator)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
import flash.filters.*;
public class enemyGenerator extends MovieClip {
public var timeAlive:Number;
public var active:Boolean;
public var bossFlags:Array;
private var lastGeneration:Number;
public var blastRadius:Number;
private var lastUpdate:Number;
private static var baseClip:MovieClip;
private static var targetClip:MovieClip;
private static var flameSymbolArray:Array;
private static var projectilesArray:Array;
private static var generatorTimer:Timer;
private static var enemiesArray:Array;
public function enemyGenerator(_arg1:MovieClip):void{
enemiesArray = new Array();
projectilesArray = new Array();
flameSymbolArray = new Array();
generatorTimer = new Timer(30);
generatorTimer.addEventListener(TimerEvent.TIMER, update);
baseClip = _arg1;
lastUpdate = getTimer();
lastGeneration = getTimer();
blastRadius = 45;
timeAlive = 0;
active = true;
bossFlags = new Array(false, false, false, false, false, false, false);
}
public function removeEnemySymbol(_arg1:MovieClip):void{
var _local2:int;
_local2 = enemiesArray.indexOf(_arg1);
if (_local2 > -1){
if (active){
MovieClip(parent).changeStats("casualties", -1);
MovieClip(parent).changeStats("exp", -(enemiesArray[_local2].exp));
};
MovieClip(parent).changeStats("score", -(enemiesArray[_local2].score));
enemiesArray.splice(_local2, 1);
};
}
public function deinit():void{
var _local1:int;
var _local2:int;
generatorTimer.stop();
_local1 = enemiesArray.length;
active = false;
_local2 = 0;
while (_local2 < _local1) {
enemiesArray[0].doDamage(enemiesArray[0].health);
_local2++;
};
}
public function addProjectile(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:MovieClip;
if (_arg1 == "arrow"){
_local5 = new arrowSymbol(_arg2, _arg3, _arg4);
projectilesArray.push(_local5);
addChild(_local5);
};
if (_arg1 == "sword"){
_local5 = new swordSymbol(_arg2, _arg3, _arg4);
projectilesArray.push(_local5);
addChild(_local5);
};
if (_arg1 == "wingedArrow"){
_local5 = new wingedArrowSymbol(_arg2, _arg3, _arg4);
projectilesArray.push(_local5);
addChild(_local5);
};
if (_arg1 == "blackHole"){
_local5 = new blackHoleSymbol(_arg2, _arg3, _arg4);
projectilesArray.push(_local5);
addChild(_local5);
};
if (_arg1 == "blackHoleEx"){
_local5 = new blackHoleSymbol(_arg2, _arg3, _arg4);
_local5.generateBlackHole = true;
_local5.damage = 5;
projectilesArray.push(_local5);
addChild(_local5);
};
}
public function generateBlackHole(_arg1:Number, _arg2:Number):void{
MovieClip(parent).generateBlackHole(_arg1, _arg2);
}
private function generateMonsters():void{
var _local1:MovieClip;
var _local2:int;
var _local3:int;
if (timeAlive < 120){
_local3 = (((timeAlive / 120) * 4) + 3);
_local2 = 0;
while (_local2 < _local3) {
_local1 = new tripodSymbol((_local2 * (-25 - (Math.random() * 20))));
_local1.mouseEnabled = false;
_local1.health = (_local1.health + (timeAlive / 3));
enemiesArray.push(_local1);
addChild(_local1);
_local2++;
};
};
if ((((timeAlive > 30)) && ((timeAlive < 700)))){
_local3 = ((((timeAlive - 30) / 300) * 3) + 1);
_local2 = 0;
while (_local2 < _local3) {
_local1 = new giantSymbol(((_local2 * -70) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.health = (_local1.health + ((timeAlive - 30) / 2));
enemiesArray.push(_local1);
addChild(_local1);
_local2++;
};
};
if (timeAlive > 140){
if (!bossFlags[1]){
_local1 = new giantSymbol(((_local2 * -70) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.filters = [new GlowFilter(0xFFFFFF, 1, 10, 10)];
_local1.health = (_local1.health * 10);
_local1.scaleX = 1.25;
_local1.scaleY = 1.25;
enemiesArray.push(_local1);
addChild(_local1);
bossFlags[1] = true;
};
};
if (timeAlive > 110){
_local3 = ((((timeAlive - 110) / 500) * 2) + 1);
_local2 = 0;
while (_local2 < _local3) {
_local1 = new giantSpiralSymbol(((_local2 * -70) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.health = (_local1.health + timeAlive);
enemiesArray.push(_local1);
addChild(_local1);
_local2++;
};
};
if (timeAlive > 215){
if (!bossFlags[2]){
_local1 = new giantSpiralSymbol(((_local2 * -70) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.filters = [new GlowFilter(0xFFFFFF, 1, 10, 10)];
_local1.health = (_local1.health * 10);
_local1.scaleX = 1.25;
_local1.scaleY = 1.25;
enemiesArray.push(_local1);
addChild(_local1);
bossFlags[2] = true;
};
};
if (timeAlive > 210){
_local3 = ((((timeAlive - 110) / 400) * 4) + 1);
_local2 = 0;
while (_local2 < _local3) {
_local1 = new highSymbol(((_local2 * -100) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.health = (_local1.health + (timeAlive * 0.5));
enemiesArray.push(_local1);
addChild(_local1);
_local2++;
};
};
if (timeAlive > 350){
if (!bossFlags[2]){
_local1 = new highSymbol(((_local2 * -70) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.filters = [new GlowFilter(0xFFFFFF, 1, 10, 10)];
_local1.health = (_local1.health * 10);
_local1.scaleX = 1.5;
_local1.scaleY = 1.5;
enemiesArray.push(_local1);
addChild(_local1);
bossFlags[2] = true;
};
};
if (timeAlive > 450){
_local3 = (((timeAlive / 400) * 4) + 1);
_local2 = 0;
while (_local2 < _local3) {
_local1 = new highTSymbol(((_local2 * -100) - (Math.random() * 30)));
_local1.mouseEnabled = false;
_local1.health = (_local1.health + ((timeAlive * 0.01) * timeAlive));
enemiesArray.push(_local1);
addChild(_local1);
_local2++;
};
};
}
public function addFlameSymbol(_arg1:MovieClip):void{
flameSymbolArray.push(_arg1);
}
public function setTargetClip(_arg1:MovieClip):void{
targetClip = _arg1;
}
public function removeFlameSymbol(_arg1:MovieClip):void{
var _local2:int;
_local2 = flameSymbolArray.indexOf(_arg1);
if (_local2 > -1){
flameSymbolArray.splice(_local2, 1);
};
}
public function startGen():void{
generatorTimer.start();
}
public function removeProjectile(_arg1:MovieClip):void{
var _local2:int;
_local2 = projectilesArray.indexOf(_arg1);
if (_local2 > -1){
projectilesArray.splice(_local2, 1);
};
}
public function handleBlast(_arg1:Number, _arg2:Number, _arg3:Number=10):void{
var _local4:int;
var _local5:Number;
_local4 = 0;
while (_local4 < enemiesArray.length) {
if (Math.sqrt((Math.pow((enemiesArray[_local4].x - _arg1), 2) + Math.pow((enemiesArray[_local4].y - _arg2), 2))) < blastRadius){
_local5 = (_arg3 * (1 - ((Math.abs((enemiesArray[_local4].x - _arg1)) / blastRadius) / 2)));
MovieClip(parent).generateDamageText(int(_local5), enemiesArray[_local4].x, (enemiesArray[_local4].y - 40));
if (enemiesArray[_local4].doDamage(_local5)){
_local4--;
};
};
_local4++;
};
}
public function setPause(_arg1:Boolean):void{
var _local2:int;
if (_arg1){
generatorTimer.stop();
_local2 = 0;
while (_local2 < projectilesArray.length) {
projectilesArray[_local2].setPause(_arg1);
_local2++;
};
_local2 = 0;
while (_local2 < enemiesArray.length) {
enemiesArray[_local2].setPause(_arg1);
_local2++;
};
_local2 = 0;
while (_local2 < flameSymbolArray.length) {
flameSymbolArray[_local2].setPause(_arg1);
_local2++;
};
};
if (!_arg1){
generatorTimer.start();
_local2 = 0;
while (_local2 < projectilesArray.length) {
projectilesArray[_local2].setPause(_arg1);
_local2++;
};
_local2 = 0;
while (_local2 < enemiesArray.length) {
enemiesArray[_local2].setPause(_arg1);
_local2++;
};
_local2 = 0;
while (_local2 < flameSymbolArray.length) {
flameSymbolArray[_local2].setPause(_arg1);
_local2++;
};
};
}
public function reinit():void{
lastUpdate = getTimer();
lastGeneration = getTimer();
blastRadius = 45;
timeAlive = 0;
active = true;
bossFlags = [false, false, false, false, false, false, false];
generatorTimer.start();
}
public function update(_arg1:TimerEvent):void{
var _local2:MovieClip;
var _local3:int;
_local3 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
testCollision();
timeAlive = (timeAlive + (_local3 / 1000));
if ((getTimer() - lastGeneration) < 5000){
return;
};
lastGeneration = getTimer();
generateMonsters();
}
public function testCollision():void{
var _local1:*;
var _local2:int;
if (targetClip == null){
return;
};
_local1 = 0;
while (_local1 < projectilesArray.length) {
if (targetClip.hitTestObject(projectilesArray[_local1])){
MovieClip(parent).targetHit(projectilesArray[_local1].damage);
MovieClip(parent).changeStats("hp", 0);
projectilesArray[_local1].kill();
removeChild(projectilesArray[_local1]);
projectilesArray.splice(_local1, 1);
};
_local1++;
};
}
public function stopGen():void{
generatorTimer.stop();
}
}
}//package
Section 52
//flameSymbol (flameSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class flameSymbol extends MovieClip {
private var timeAlive:Number;
private var ySpeed:Number;
private var xSpeed:Number;
private var flameTimer:Timer;
private var lastUpdate:Number;
private static const torque:int = 0;
private static const Speed:int = 200;
public function flameSymbol(_arg1:int, _arg2:int, _arg3:int):void{
addFrameScript(0, frame1);
timeAlive = 0;
this.x = _arg1;
this.y = _arg2;
this.mouseEnabled = false;
this.scaleX = 0;
this.scaleY = 0;
ySpeed = (-(Speed) * Math.sin(((_arg3 / 180) * Math.PI)));
xSpeed = (-(Speed) * Math.cos(((_arg3 / 180) * Math.PI)));
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, moveFlameSymbol);
}
public function moveFlameSymbol(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
timeAlive = (timeAlive + _local2);
if (timeAlive < 500){
if (this.currentFrame <= 7){
this.scaleY = (timeAlive / 5000);
this.scaleX = (timeAlive / 5000);
} else {
this.scaleY = (timeAlive / 500);
this.scaleX = (timeAlive / 500);
};
};
this.rotation = (this.rotation + ((torque * _local2) / 1000));
lastUpdate = (lastUpdate + _local2);
x = (x + ((xSpeed * _local2) / 1000));
y = (y + ((ySpeed * _local2) / 1000));
if ((((((((y > 267)) || ((x < 0)))) || ((y < 0)))) || ((x > 650)))){
kill();
};
}
function frame1(){
stop();
}
public function kill():void{
MovieClip(parent).generateBlast(x, y);
MovieClip(parent).removeFlameSymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, moveFlameSymbol);
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
removeEventListener(Event.ENTER_FRAME, moveFlameSymbol);
} else {
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, moveFlameSymbol);
};
}
}
}//package
Section 53
//gameClass (gameClass)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import CPMStar.*;
import mochi.*;
import flash.media.*;
import flash.text.*;
import flash.net.*;
import flash.ui.*;
public dynamic class gameClass extends MovieClip {
public var notDoppler:SimpleButton;
public var crosshair:MovieClip;
public var hpText:TextField;
public var endGameMenu:MovieClip;
public var mMoreGamesButton:SimpleButton;
public var upMenu:MovieClip;
public var adBox:MovieClip;
public var hscm:MovieClip;
public var Cloud2:MovieClip;
public var Cloud3:MovieClip;
public var Cloud4:MovieClip;
public var Cloud1:MovieClip;
public var defText:TextField;
public var pauseButton:SimpleButton;
public var musButton:SimpleButton;
public var mDragon:MovieClip;
public var dragonNeck:MovieClip;
public var spText:TextField;
public var prgBar:MovieClip;
public var loadPlay:MovieClip;
public var notIntro:MovieClip;
public var _mouseX;
public var _mouseY:Number;
public var pauseMsg:TextField;
public var mPlayButton:SimpleButton;
public var atkText:TextField;
private static var def:int;
private static var flameLevel:int;
private static var score:int;
private static var skillPoints:int;
private static var curPause:Boolean;
private static var atk:int;
private static var exp:int;
private static var casualtiesTextField:TextField;
private static var minuteTimer:Timer;
private static var gameActive:Boolean;
private static var enemyGen:enemyGenerator;
private static var curCost:Number;
private static var fireTimer:Timer;
private static var expTextField:TextField;
private static var damageTextTimeArray:Array;
private static var maxSP:Number;
private static var maxSpeed:Number;
private static var inGame:Boolean;
private static var particleManager:ParticleEngine;
private static var blastArray:Array;
private static var casualties:int;
private static var curDamage:Number;
private static var flameMaxLevel:int;
private static var inGameTimer:Timer;
private static var scoreTextField:TextField;
private static var damageTextFormat:TextFormat;
private static var damageTextDelta:Number;
private static var musicOn:Boolean = true;
private static var maxHP:Number;
private static var flameSymbolArray:Array;
private static var bgMusic:Sound;
private static var arial15:Font;
private static var defDragon:dragonClass;
private static var generalLevel:int;
private static var damageTextArray:Array;
private static var bgChannel:SoundChannel;
public function gameClass(){
var _local1:ContextMenu;
super();
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 19, frame20);
inGame = false;
initPreloader();
score = 0;
skillPoints = 0;
casualties = 0;
exp = 0;
flameLevel = 1;
flameMaxLevel = 10;
curCost = 10;
generalLevel = 0;
maxHP = 100;
maxSP = 100;
def = 0;
atk = 0;
curPause = false;
gameActive = true;
curDamage = 20;
damageTextDelta = 0;
damageTextArray = new Array();
damageTextTimeArray = new Array();
flameSymbolArray = new Array();
blastArray = new Array();
particleManager = new ParticleEngine();
addChild(particleManager);
_local1 = new ContextMenu();
_local1.hideBuiltInItems();
_local1.builtInItems.quality = true;
this.contextMenu = _local1;
trace("gameClass constructor");
}
public function onTick(_arg1:TimerEvent):void{
mPlayButton.enabled = false;
mMoreGamesButton.enabled = false;
mPlayButton.y = (mPlayButton.y - (minuteTimer.currentCount * 5));
mMoreGamesButton.y = (mMoreGamesButton.y - (minuteTimer.currentCount * 5));
}
public function upMouseOut(_arg1:MouseEvent):void{
if (!inGame){
return;
};
if (!gameActive){
return;
};
if (_arg1.target == pauseButton){
if (!curPause){
pauseMsg.alpha = 0.4;
};
};
crosshair.visible = true;
Mouse.hide();
}
function fireHandler(_arg1:TimerEvent):void{
var _local2:flameSymbol;
var _local3:int;
_mouseX = mouseX;
_mouseY = mouseY;
if (defDragon.getSpecial() < curCost){
return;
};
_local3 = ((180 * Math.atan2((mDragon.y - _mouseY), (mDragon.x - _mouseX))) / Math.PI);
_local2 = new flameSymbol(mDragon.x, mDragon.y, _local3);
_local2.gotoAndStop(flameLevel);
_local2.stop();
addChildAt(_local2, (getChildIndex(mDragon) - 1));
flameSymbolArray.push(_local2);
enemyGen.addFlameSymbol(_local2);
defDragon.decreaseSpecial(curCost);
}
public function targetHit(_arg1:Number):void{
defDragon.hit(_arg1);
if (defDragon.health <= 0){
gameOver();
};
}
public function onScoreSend():void{
crosshair.visible = false;
endGameMenu.visible = true;
endGameMenu.x = 326;
endGameMenu.y = 160;
endGameMenu.scoreText.text = score;
Mouse.hide();
}
public function showProgress(_arg1:ProgressEvent):void{
var _local2:Number;
_local2 = Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100));
if (prgBar != null){
prgBar.width = (600 * (_arg1.bytesLoaded / _arg1.bytesTotal));
};
}
function mouseMoveHandler(_arg1:MouseEvent):void{
var _local2:int;
crosshair.x = _arg1.stageX;
crosshair.y = _arg1.stageY;
_local2 = ((180 * Math.atan2((mDragon.y - _arg1.stageY), (mDragon.x - _arg1.stageX))) / Math.PI);
if (_local2 > 49){
_local2 = 49;
};
if (_local2 < -85){
_local2 = -85;
};
mDragon.rotation = (_local2 + 21);
if (!gameActive){
Mouse.show();
};
}
function frame3(){
gameClassStart();
pauseMsg.selectable = false;
pauseMsg.mouseEnabled = false;
pauseMsg.alpha = 0.4;
upMenu.visible = false;
}
function frame4(){
pauseMsg.selectable = false;
pauseMsg.mouseEnabled = false;
pauseMsg.alpha = 0.4;
upMenu.visible = false;
}
function frame1(){
notDoppler.addEventListener(MouseEvent.CLICK, gotoNotDoppler);
stop();
trace("Stop");
MochiBot.track(this, "68944423");
}
function frame20(){
notIntro.addEventListener(MouseEvent.CLICK, gotoNotDoppler);
}
function frame2(){
upMenu.visible = false;
}
public function removeBlastSymbol(_arg1:MovieClip):void{
var _local2:*;
for (_local2 in blastArray) {
if (blastArray[_local2] == _arg1){
blastArray.splice(_local2, 1);
break;
};
};
}
public function generateDamageText(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:TextField;
if (damageTextArray.length >= 20){
return;
};
_local4 = new TextField();
_local4.defaultTextFormat = damageTextFormat;
_local4.mouseEnabled = false;
_local4.x = _arg2;
_local4.y = (_arg3 - damageTextDelta);
_local4.antiAliasType = AntiAliasType.NORMAL;
_local4.embedFonts = true;
_local4.text = ("-" + _arg1.toString());
_local4.selectable = false;
addChild(_local4);
damageTextArray.push(_local4);
damageTextTimeArray.push(int(0));
damageTextDelta = (damageTextDelta + 5);
if (damageTextDelta > 35){
damageTextDelta = 0;
};
}
public function onGameUpdate(_arg1:TimerEvent):void{
handleDamageText();
if (atkText == null){
return;
};
changeStats("sp", 0);
changeStats("hp", 0);
changeStats("atk", 0);
changeStats("def", 0);
}
public function musicHandle(_arg1:MouseEvent):void{
musicOn = !(musicOn);
if (musicOn){
bgChannel = bgMusic.play(0, 1000);
} else {
bgChannel.stop();
};
}
function setPause(_arg1:MouseEvent):void{
if (curPause){
enemyGen.setPause(false);
defDragon.setPause(false);
pauseMsg.text = "pause";
curPause = false;
} else {
enemyGen.setPause(true);
defDragon.setPause(true);
pauseButton.alpha = 1;
pauseMsg.text = "resume";
curPause = true;
};
}
public function changeStats(_arg1:String, _arg2:int):void{
var _local3:String;
var _local4:int;
if (_arg1 == "casualties"){
if (_arg2 < 0){
_arg2 = casualties++;
};
if (_arg2 < 10){
_local3 = ("000" + _arg2);
} else {
if (_arg2 < 100){
_local3 = ("00" + _arg2);
} else {
if (_arg2 < 1000){
_local3 = ("0" + _arg2);
} else {
_local3 = _arg2.toString();
};
};
};
casualtiesTextField.text = _local3;
};
if (_arg1 == "exp"){
if (_arg2 < 0){
_arg2 = (exp - _arg2);
if (expEnough(exp, _arg2)){
generalLevel++;
upMenu.x = 341;
upMenu.y = 176;
upMenu.visible = true;
skillPoints++;
};
exp = _arg2;
};
_local4 = _arg2;
_local3 = "";
while (_local4 < 1000000) {
if (_local4 <= 0){
_local4 = 1;
};
_local4 = (_local4 * 10);
_local3 = (_local3 + "0");
};
_local3 = (_local3 + _arg2.toString());
expTextField.text = _local3;
};
if (_arg1 == "score"){
if (_arg2 < 0){
_arg2 = (score - _arg2);
score = _arg2;
};
_local4 = _arg2;
_local3 = "";
while (_local4 < 1000000) {
if (_local4 <= 0){
_local4 = 1;
};
_local4 = (_local4 * 10);
_local3 = (_local3 + "0");
};
_local3 = (_local3 + _arg2.toString());
scoreTextField.text = _local3;
};
if (_arg1 == "hp"){
if (defDragon != null){
hpText.text = ((("hp : " + int(defDragon.health)) + "/") + maxHP);
};
};
if (_arg1 == "sp"){
if (defDragon != null){
spText.text = ((("sp : " + int(defDragon.special)) + "/") + defDragon.specialMax);
};
};
if (_arg1 == "def"){
defText.text = ("def: " + def);
};
if (_arg1 == "atk"){
atkText.text = ("atk: " + atk);
};
}
public function upgradeMenuButtonHandle(_arg1:MouseEvent):void{
var _local2:SimpleButton;
_local2 = (_arg1.target as SimpleButton);
if (_local2.name == "spButton"){
defDragon.specialMax = (defDragon.specialMax + 50);
if (defDragon.specialSpeed < 45){
defDragon.specialSpeed = (defDragon.specialSpeed + 2);
} else {
defDragon.specialSpeed = (defDragon.specialSpeed + 1);
};
skillPoints--;
};
if (_local2.name == "hpButton"){
maxHP = (maxHP + 50);
if (defDragon.healthSpeed <= 1){
defDragon.healthSpeed = (defDragon.healthSpeed + 0.1);
};
defDragon.healthMax = (defDragon.healthMax + 50);
defDragon.health = (defDragon.health + 50);
changeStats("hp", 0);
skillPoints--;
};
if (_local2.name == "atkButton"){
if (atk >= 30){
return;
};
atk++;
if (atk <= 12){
curDamage = (curDamage + 7);
} else {
curDamage = (curDamage + 3);
};
curCost = (curCost + 1);
if ((atk % 3) == 0){
flameLevel++;
curDamage = (curDamage + 4);
if (flameLevel == 10){
curDamage = (curDamage + 30);
};
};
enemyGen.blastRadius = (enemyGen.blastRadius + 3);
changeStats("atk", 0);
skillPoints--;
};
if (_local2.name == "defButton"){
def++;
defDragon.defense++;
changeStats("def", 0);
skillPoints--;
};
if (skillPoints <= 0){
upMenu.visible = false;
};
}
public function initPreloader():void{
var _local1:int;
var _local2:int;
var _local3:DisplayObject;
_local1 = 1377;
_local2 = 601;
AdLoader.boxSelf = adBox;
_local3 = AdLoader.LoadAd(_local1, _local2);
adBox.addChild(_local3);
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, showProgress);
this.loaderInfo.addEventListener(Event.COMPLETE, loadFinished);
trace("initPreloader invoked");
}
public function gameClassStart(){
mPlayButton.addEventListener(MouseEvent.CLICK, buttonHandle);
minuteTimer = new Timer(10, 50);
inGameTimer = new Timer(33, 0);
fireTimer = new Timer(150, 0);
fireTimer.addEventListener(TimerEvent.TIMER, fireHandler);
inGameTimer.addEventListener(TimerEvent.TIMER, onGameUpdate);
inGameTimer.start();
crosshair.visible = false;
crosshair.mouseEnabled = false;
initTextFields();
enemyGen = new enemyGenerator(this);
enemyGen.setTargetClip(mDragon);
enemyGen.mouseEnabled = false;
addChild(enemyGen);
MochiServices.connect("ce58a1793acce887", root);
notDoppler.addEventListener(MouseEvent.CLICK, gotoNotDoppler);
mMoreGamesButton.addEventListener(MouseEvent.CLICK, gotoNotDoppler);
endGameMenu.visible = false;
endGameMenu.addEventListener(MouseEvent.MOUSE_OVER, upMouseIn);
endGameMenu.addEventListener(MouseEvent.MOUSE_OUT, upMouseOut);
endGameMenu.scoreText.selectable = false;
endGameMenu.againButton.addEventListener(MouseEvent.CLICK, reinit);
endGameMenu.moreGames.addEventListener(MouseEvent.CLICK, gotoNotDoppler);
upMenu.hpButton.addEventListener(MouseEvent.CLICK, upgradeMenuButtonHandle);
upMenu.spButton.addEventListener(MouseEvent.CLICK, upgradeMenuButtonHandle);
upMenu.atkButton.addEventListener(MouseEvent.CLICK, upgradeMenuButtonHandle);
upMenu.defButton.addEventListener(MouseEvent.CLICK, upgradeMenuButtonHandle);
musButton.addEventListener(MouseEvent.MOUSE_OVER, upMouseIn);
musButton.addEventListener(MouseEvent.MOUSE_OUT, upMouseOut);
musButton.addEventListener(MouseEvent.CLICK, musicHandle);
upMenu.addEventListener(MouseEvent.MOUSE_OVER, upMouseIn);
upMenu.addEventListener(MouseEvent.MOUSE_OUT, upMouseOut);
damageTextFormat = new TextFormat();
damageTextFormat.font = "Visitor TT2 BRK_14pt_st";
damageTextFormat.size = 14;
damageTextFormat.align = "left";
damageTextFormat.color = 0xFFFFFF;
bgMusic = new LCDFlash();
bgChannel = bgMusic.play(0, 999);
}
public function initTextFields():void{
var _local1:TextFormat;
scoreTextField = new TextField();
casualtiesTextField = new TextField();
expTextField = new TextField();
_local1 = new TextFormat();
_local1.font = "Arial";
_local1.size = 15;
_local1.align = "left";
_local1.color = 11185056;
scoreTextField.defaultTextFormat = _local1;
scoreTextField.x = 330;
scoreTextField.y = 274;
scoreTextField.antiAliasType = AntiAliasType.ADVANCED;
scoreTextField.embedFonts = true;
scoreTextField.text = "000 000";
scoreTextField.selectable = false;
addChild(scoreTextField);
casualtiesTextField.defaultTextFormat = _local1;
casualtiesTextField.x = 103;
casualtiesTextField.y = 274;
casualtiesTextField.antiAliasType = AntiAliasType.ADVANCED;
casualtiesTextField.embedFonts = true;
casualtiesTextField.text = "0000";
casualtiesTextField.selectable = false;
addChild(casualtiesTextField);
expTextField.defaultTextFormat = _local1;
expTextField.x = 550;
expTextField.y = 274;
expTextField.antiAliasType = AntiAliasType.ADVANCED;
expTextField.embedFonts = true;
expTextField.text = "000 000";
expTextField.selectable = false;
addChild(expTextField);
}
public function generateBlackHole(_arg1:Number, _arg2:Number):void{
var _local3:MovieClip;
_local3 = new blackBlastSymbol((enemyGen.blastRadius / 40), (enemyGen.blastRadius / 40));
_local3.x = _arg1;
_local3.y = _arg2;
_local3.play();
addChild(_local3);
blastArray.push(_local3);
}
public function startGame(_arg1:MouseEvent):void{
gotoAndStop("intro");
}
public function loadFinished(_arg1:Event):void{
loadPlay.gotoAndStop(2);
loadPlay.useHandCursor = true;
loadPlay.addEventListener(MouseEvent.CLICK, startGame);
loadPlay.buttonMode = true;
}
public function generateBlast(_arg1:Number, _arg2:Number):void{
var _local3:MovieClip;
_local3 = new blastSymbol((enemyGen.blastRadius / 40), (enemyGen.blastRadius / 40));
_local3.x = _arg1;
_local3.y = _arg2;
_local3.play();
addChild(_local3);
blastArray.push(_local3);
if (flameLevel >= 10){
_local3 = new blackBlastSymbol((enemyGen.blastRadius / 40), (enemyGen.blastRadius / 40));
_local3.x = _arg1;
_local3.y = _arg2;
_local3.play();
addChild(_local3);
blastArray.push(_local3);
};
enemyGen.handleBlast(_arg1, _arg2, curDamage);
}
public function handleDamageText():void{
var _local1:int;
while (_local1 < damageTextArray.length) {
damageTextArray[_local1].y = (damageTextArray[_local1].y - 0.5);
damageTextTimeArray[_local1] = (damageTextTimeArray[_local1] + inGameTimer.delay);
if (damageTextTimeArray[_local1] >= 2000){
removeChild(damageTextArray[_local1]);
damageTextArray.splice(_local1, 1);
damageTextTimeArray.splice(_local1, 1);
};
_local1++;
};
}
public function removeFlameSymbol(_arg1:flameSymbol):void{
var _local2:*;
for (_local2 in flameSymbolArray) {
if (flameSymbolArray[_local2] == _arg1){
enemyGen.removeFlameSymbol(_arg1);
flameSymbolArray.splice(_local2, 1);
break;
};
};
}
public function upMouseIn(_arg1:MouseEvent):void{
if (!inGame){
return;
};
if (!gameActive){
return;
};
if (_arg1.target == pauseButton){
pauseMsg.alpha = 1;
};
crosshair.visible = false;
Mouse.show();
}
public function reinit(_arg1:MouseEvent):void{
gameActive = true;
mDragon.gotoAndStop(1);
endGameMenu.visible = false;
enemyGen.reinit();
defDragon.reinit();
score = 0;
skillPoints = 0;
casualties = 0;
exp = 0;
flameLevel = 1;
flameMaxLevel = 7;
curCost = 10;
generalLevel = 0;
maxHP = 100;
maxSP = 100;
def = 0;
atk = 0;
curDamage = 20;
}
public function gotoNotDoppler(_arg1:MouseEvent):void{
var _local2:URLRequest;
_local2 = new URLRequest("http://www.notdoppler.com/");
navigateToURL(_local2);
}
public function gameOver():void{
gameActive = false;
mDragon.gotoAndStop(3);
crosshair.visible = false;
enemyGen.deinit();
Mouse.show();
MochiScores.showLeaderboard({boardID:"17b0fc4be028ac28", score:score, onClose:onScoreSend});
}
function mouseClickHandler(_arg1:MouseEvent):void{
if (_arg1.buttonDown){
if (_arg1.target != stage){
return;
};
if (curPause){
return;
};
_mouseX = _arg1.stageX;
_mouseY = _arg1.stageY;
fireHandler(null);
fireTimer.start();
} else {
fireTimer.stop();
};
}
public function expEnough(_arg1:Number, _arg2:Number):Boolean{
var _local3:int;
_local3 = ((Math.pow(generalLevel, 2) * 50) + (generalLevel * 500));
if ((((_arg1 <= _local3)) && ((_arg2 > _local3)))){
return (true);
};
return (false);
}
public function buttonHandle(_arg1:MouseEvent){
minuteTimer.delay = 10;
minuteTimer.repeatCount = 25;
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
minuteTimer.start();
enemyGen.reinit();
}
public function onTimerComplete(_arg1:TimerEvent):void{
gotoAndStop("inGame");
defDragon = new dragonClass(mDragon, dragonNeck);
inGame = true;
Mouse.hide();
crosshair.visible = true;
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseClickHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseClickHandler);
pauseButton.addEventListener(MouseEvent.CLICK, setPause);
pauseButton.addEventListener(MouseEvent.MOUSE_OVER, upMouseIn);
pauseButton.addEventListener(MouseEvent.MOUSE_OUT, upMouseOut);
trace(pauseMsg);
}
}
}//package
Section 54
//giantSpiralSymbol (giantSpiralSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class giantSpiralSymbol extends MovieClip implements IEnemy {
public var exp:Number;// = 250
public var speed:Number;
public var health:Number;
private var minDistance:Number;
public var score:Number;// = 500
private var lastShot:Number;
private var lastUpdate:Number;
private static var dragonX:Number = 450;
private static var gravity:Number = 50;
public function giantSpiralSymbol(_arg1:Number=30, _arg2:Number=270){
exp = 250;
score = 500;
super();
addEventListener(Event.ENTER_FRAME, update);
lastUpdate = getTimer();
lastShot = getTimer();
speed = 15;
scaleX = 0.7;
scaleY = 0.7;
x = _arg1;
y = _arg2;
health = 500;
minDistance = (150 + (Math.random() * 100));
}
public function doBlast(_arg1:Number, _arg2:Number, _arg3:Number):void{
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
stop();
removeEventListener(Event.ENTER_FRAME, update);
} else {
play();
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
if (x < (dragonX - minDistance)){
this.x = (this.x + ((_local2 / 1000) * speed));
} else {
stop();
if ((getTimer() - lastShot) > 2000){
MovieClip(parent).addProjectile("wingedArrow", x, y, (Math.PI / 4));
lastShot = getTimer();
};
};
}
public function doDamage(_arg1:Number):Boolean{
health = (health - _arg1);
if (health <= 0){
MovieClip(parent).removeEnemySymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, update);
return (true);
};
return (false);
}
}
}//package
Section 55
//giantSymbol (giantSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class giantSymbol extends MovieClip implements IEnemy {
public var exp:Number;// = 200
private var speed:Number;
public var health:Number;
public var minDistance:Number;
public var score:Number;// = 250
private var lastShot:Number;
private var lastUpdate:Number;
private static var dragonX:Number = 450;
private static var gravity:Number = 50;
public function giantSymbol(_arg1:Number=30, _arg2:Number=270){
exp = 200;
score = 250;
super();
addEventListener(Event.ENTER_FRAME, update);
lastUpdate = getTimer();
lastShot = getTimer();
speed = 10;
x = _arg1;
y = _arg2;
health = 300;
minDistance = (150 + (Math.random() * 100));
}
public function doBlast(_arg1:Number, _arg2:Number, _arg3:Number):void{
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
stop();
removeEventListener(Event.ENTER_FRAME, update);
} else {
play();
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
if (x < (dragonX - minDistance)){
this.x = (this.x + ((_local2 / 1000) * speed));
} else {
stop();
if ((getTimer() - lastShot) > 2000){
MovieClip(parent).addProjectile("sword", x, y, (Math.PI / 4));
lastShot = getTimer();
};
};
}
public function doDamage(_arg1:Number):Boolean{
health = (health - _arg1);
if (health <= 0){
MovieClip(parent).removeEnemySymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, update);
return (true);
};
return (false);
}
}
}//package
Section 56
//healthBarSymbol (healthBarSymbol)
package {
import flash.display.*;
public dynamic class healthBarSymbol extends MovieClip {
}
}//package
Section 57
//highSymbol (highSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class highSymbol extends MovieClip implements IEnemy {
public var exp:Number;// = 300
public var speed:Number;
public var health:Number;
private var minDistance:Number;
public var score:Number;// = 700
private var lastShot:Number;
private var lastUpdate:Number;
private static var dragonX:Number = 450;
private static var gravity:Number = 50;
public function highSymbol(_arg1:Number=30, _arg2:Number=270){
exp = 300;
score = 700;
super();
addEventListener(Event.ENTER_FRAME, update);
lastUpdate = getTimer();
lastShot = getTimer();
speed = 40;
x = _arg1;
y = _arg2;
health = 600;
minDistance = (100 + (Math.random() * 60));
}
public function doBlast(_arg1:Number, _arg2:Number, _arg3:Number):void{
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
stop();
removeEventListener(Event.ENTER_FRAME, update);
} else {
play();
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
if (x < (dragonX - minDistance)){
this.x = (this.x + ((_local2 / 1000) * speed));
} else {
stop();
if ((getTimer() - lastShot) > 2000){
MovieClip(parent).addProjectile("blackHole", x, y, (Math.PI / 4));
lastShot = getTimer();
};
};
}
public function doDamage(_arg1:Number):Boolean{
health = (health - _arg1);
if (health <= 0){
MovieClip(parent).removeEnemySymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, update);
return (true);
};
return (false);
}
}
}//package
Section 58
//highTSymbol (highTSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class highTSymbol extends MovieClip implements IEnemy {
public var exp:Number;// = 300
public var speed:Number;
public var health:Number;
private var minDistance:Number;
public var score:Number;// = 700
private var lastShot:Number;
private var lastUpdate:Number;
private static var dragonX:Number = 450;
private static var gravity:Number = 50;
public function highTSymbol(_arg1:Number=30, _arg2:Number=270){
exp = 300;
score = 700;
super();
addEventListener(Event.ENTER_FRAME, update);
lastUpdate = getTimer();
lastShot = getTimer();
speed = 32;
x = _arg1;
y = _arg2;
health = 900;
minDistance = (100 + (Math.random() * 60));
}
public function doBlast(_arg1:Number, _arg2:Number, _arg3:Number):void{
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
stop();
removeEventListener(Event.ENTER_FRAME, update);
} else {
play();
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
if (x < (dragonX - minDistance)){
this.x = (this.x + ((_local2 / 1000) * speed));
} else {
stop();
if ((getTimer() - lastShot) > 2000){
MovieClip(parent).addProjectile("blackHoleEx", x, y, (Math.PI / 4));
lastShot = getTimer();
};
};
}
public function doDamage(_arg1:Number):Boolean{
health = (health - _arg1);
if (health <= 0){
MovieClip(parent).removeEnemySymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, update);
return (true);
};
return (false);
}
}
}//package
Section 59
//IEnemy (IEnemy)
package {
public interface IEnemy {
function doDamage(_arg1:Number):Boolean;
function doBlast(_arg1:Number, _arg2:Number, _arg3:Number):void;
}
}//package
Section 60
//LCDFlash (LCDFlash)
package {
import flash.media.*;
public dynamic class LCDFlash extends Sound {
}
}//package
Section 61
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 62
//ParticleEngine (ParticleEngine)
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import org.flintparticles.emitters.*;
import flash.utils.*;
import org.flintparticles.zones.*;
import org.flintparticles.initializers.*;
import org.flintparticles.actions.*;
import org.flintparticles.counters.*;
import org.flintparticles.renderers.*;
import org.flintparticles.events.*;
import org.flintparticles.energyEasing.*;
import org.flintparticles.displayObjects.*;
import flash.text.*;
public class ParticleEngine extends MovieClip {
public var timeAlive:Number;
private var emitters:Array;
public var lastUpdate;
private static var updateTimer:Timer;
public function ParticleEngine():void{
emitters = new Array();
}
public function clearParticleSystem(_arg1:FlintEvent):void{
var _local2:int;
_local2 = emitters.indexOf(Emitter(_arg1.target));
if (_local2 > -1){
emitters.splice(_local2, 1);
};
Emitter(_arg1.target).dispose();
}
public function addParticleSystem(_arg1:String):void{
var _local2:int;
_local2 = 0;
while (_local2 < emitters.length) {
_local2++;
};
}
public function update(_arg1:TimerEvent):void{
}
public function addBlastSystem(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:int;
var _local5:DisplayObjectRenderer;
var _local6:DiscZone;
_local4 = emitters.length;
emitters.push(new Emitter());
_local5 = new DisplayObjectRenderer();
emitters[_local4].renderer = _local5;
addChild(_local5);
emitters[_local4].counter = new Blast(_arg3);
emitters[_local4].addInitializer(new ImageClass(Dot, 2));
_local6 = new DiscZone(new Point(_arg1, _arg2), 10);
emitters[_local4].addInitializer(new Position(_local6));
emitters[_local4].addInitializer(new ColorInit(4294927872, 4294927872));
emitters[_local4].addInitializer(new Lifetime(2));
emitters[_local4].addAction(new Age(Quadratic.easeIn));
emitters[_local4].addAction(new Explosion(10000, _arg1, _arg2));
emitters[_local4].addAction(new Move());
emitters[_local4].addAction(new DeathOffStage());
emitters[_local4].addAction(new DeathZone(new RectangleZone(437, 0, 450, 30)));
emitters[_local4].addEventListener(FlintEvent.EMITTER_EMPTY, clearParticleSystem);
emitters[_local4].start();
}
}
}//package
Section 63
//specialBarSymbol (specialBarSymbol)
package {
import flash.display.*;
public dynamic class specialBarSymbol extends MovieClip {
}
}//package
Section 64
//swordSymbol (swordSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class swordSymbol extends MovieClip {
private var ySpeed:Number;
public var damage:Number;
private var xSpeed:Number;
private var angle:Number;
private var lastUpdate:Number;
private static var gravity:Number = 50;
private static var speed:Number = 190;
public function swordSymbol(_arg1:Number, _arg2:Number, _arg3:Number):void{
x = _arg1;
y = _arg2;
damage = 0.5;
angle = _arg3;
xSpeed = (Math.cos(angle) * speed);
ySpeed = (-(Math.sin(angle)) * speed);
lastUpdate = getTimer();
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
addEventListener(Event.ENTER_FRAME, update);
}
public function kill():void{
removeEventListener(Event.ENTER_FRAME, update);
}
public function getType():String{
return ("swordSymbol");
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
removeEventListener(Event.ENTER_FRAME, update);
} else {
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
x = (x + ((xSpeed * _local2) / 1000));
y = (y + ((ySpeed * _local2) / 1000));
ySpeed = (ySpeed + ((gravity * _local2) / 1000));
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
}
}
}//package
Section 65
//tripodSymbol (tripodSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class tripodSymbol extends MovieClip implements IEnemy {
public var exp:Number;// = 50
public var speed:Number;
public var health:Number;
private var minDistance:Number;
public var score:Number;// = 80
private var lastShot:Number;
private var lastUpdate:Number;
private static var dragonX:Number = 450;
private static var gravity:Number = 50;
public function tripodSymbol(_arg1:Number=30, _arg2:Number=264){
exp = 50;
score = 80;
super();
addEventListener(Event.ENTER_FRAME, update);
lastUpdate = getTimer();
lastShot = getTimer();
speed = 20;
this.scaleX = 0.1;
this.scaleY = 0.1;
x = _arg1;
y = _arg2;
health = 50;
minDistance = (30 + (Math.random() * 60));
}
public function doBlast(_arg1:Number, _arg2:Number, _arg3:Number):void{
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
stop();
removeEventListener(Event.ENTER_FRAME, update);
} else {
play();
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
if (x < (dragonX - minDistance)){
this.x = (this.x + ((_local2 / 1000) * speed));
} else {
stop();
if ((getTimer() - lastShot) > 2000){
MovieClip(parent).addProjectile("arrow", x, y, (Math.PI / 4));
lastShot = getTimer();
};
};
}
public function doDamage(_arg1:Number):Boolean{
health = (health - _arg1);
if (health <= 0){
MovieClip(parent).removeEnemySymbol(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, update);
return (true);
};
return (false);
}
}
}//package
Section 66
//wingedArrowSymbol (wingedArrowSymbol)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class wingedArrowSymbol extends MovieClip {
private var ySpeed:Number;
public var damage:Number;
private var xSpeed:Number;
private var angle:Number;
private var lastUpdate:Number;
private static var gravity:Number = 50;
private static var speed:Number = 190;
public function wingedArrowSymbol(_arg1:Number, _arg2:Number, _arg3:Number):void{
damage = 1.2;
x = _arg1;
y = _arg2;
angle = _arg3;
xSpeed = (Math.cos(angle) * speed);
ySpeed = (-(Math.sin(angle)) * speed);
lastUpdate = getTimer();
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
addEventListener(Event.ENTER_FRAME, update);
}
public function kill():void{
removeEventListener(Event.ENTER_FRAME, update);
}
public function getType():String{
return ("wingedArrowSymbol");
}
public function setPause(_arg1:Boolean):void{
if (_arg1){
removeEventListener(Event.ENTER_FRAME, update);
} else {
lastUpdate = getTimer();
addEventListener(Event.ENTER_FRAME, update);
};
}
private function update(_arg1:Event):void{
var _local2:int;
_local2 = (getTimer() - lastUpdate);
lastUpdate = getTimer();
x = (x + ((xSpeed * _local2) / 1000));
y = (y + ((ySpeed * _local2) / 1000));
ySpeed = (ySpeed + ((gravity * _local2) / 1000));
this.rotation = ((180 * Math.atan2(ySpeed, xSpeed)) / Math.PI);
}
}
}//package