STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228063
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/54388697?noj=FRM54388697-27DC" width="1" height="1"></div>

Omega Tower Defense 2.swf

This is the info page for
Flash #29528

(Click the ID number above for more basic data on this flash file.)


Text
Author's Site

Play More Games On Our Sponsor's Site

Soggy Pete

<p align="center"><font face="Arial" size="12" color="#ffffff" letterSpacing="0.000000" kerning="1">PAUSE</font></p>

EXIT

<p align="center"><font face="Arial" size="10" color="#ffffff" letterSpacing="0.000000" kerning="1">Sell for $150</font></p>

<p align="center"><font face="Arial" size="10" color="#ffffff" letterSpacing="0.000000" kerning="1">Close</font></p>

<p align="right"><font face="Arial" size="11" color="#ffffff" letterSpacing="0.000000" kerning="1">Range</font></p>

<p align="center"><font face="Arial" size="10" color="#ffffff" letterSpacing="0.000000" kerning="1">Upgrade for 150</font></p>

<p align="left"><font face="Arial" size="9" color="#ffffff" letterSpacing="0.000000" kerning="1">100</font></p>

<p align="right"><font face="Arial" size="9" color="#ffffff" letterSpacing="0.000000" kerning="1">300</font></p>

The game is PAUSED. You can build and upgrade towers, but the creeps won't move.

Click the RESUME button in the bottom left corner when you are ready.

Money: 450
Life: 25
Creeps: Slow
Score: X 1

Money: 350
Life: 20
Creeps: Normal
Score: X 2

Money: 300
Life: 20
Creeps: Fast
Score: X 3

Money: 250
Life: 10
Creeps: Faster
Score: X 5

Money: 100,000
Life: 20
Creeps: Faster
Score: X 0

This game is restricted for use on  licensing sites.

ActionScript [AS3]

Section 1
//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 2
//MochiServices (mochi.MochiServices) package mochi { import flash.events.*; import flash.display.*; import flash.net.*; import flash.utils.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _sendChannel:LocalConnection; private static var _rcvChannelName:String; private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf"; private static var _clip:MovieClip; private static var _loader:Loader; private static var _id:String; private static var _listenChannel:LocalConnection; private static var _timer:Timer; private static var _sendChannelName:String; private static var _startTime:Number; private static var _connecting:Boolean = false; public static var onError:Object; private static var _listenChannelName:String = "__mochiservices"; private static var _rcvChannel:LocalConnection; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ onError("NotConnected"); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } public static function get connected():Boolean{ return (_connected); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (_clip != null){ if (_clip._queue != null){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } public static function get childClip():Object{ return (_clip); } public static function get id():String{ return (_id); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function getVersion():String{ return ("1.31"); } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _listenChannel.close(); _rcvChannel.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; Security.allowDomain("*"); Security.allowInsecureDomain("*"); if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; return (_local2); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); if (_clip.parent != null){ Sprite(_clip.parent).removeChild(_clip); }; } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function onStatus(_arg1:StatusEvent):void{ switch (_arg1.level){ case "error": _connected = false; _listenChannel.connect(_listenChannelName); break; }; } private static function initComChannels():void{ if (!_connected){ _sendChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()}); _rcvChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus); _clip.onReceive = function (_arg1:Object):void{ var cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = this.client._callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } 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 3
//ExplosionLoop_9 (OmegaTowerDefense2_fla.ExplosionLoop_9) package OmegaTowerDefense2_fla { import flash.display.*; public dynamic class ExplosionLoop_9 extends MovieClip { public var s:Number; public function ExplosionLoop_9(){ addFrameScript(0, frame1, 20, frame21); } function frame1(){ try { gotoAndPlay(Math.floor((Math.random() * 10))); } catch(e) { }; } function frame21(){ try { gotoAndPlay(1); this.rotation = (this.rotation + (Math.random() * 500)); s = ((Math.random() * 3) - 1.5); this.scaleX = s; this.scaleY = s; } catch(e) { }; } } }//package OmegaTowerDefense2_fla
Section 4
//PauseBtn_66 (OmegaTowerDefense2_fla.PauseBtn_66) package OmegaTowerDefense2_fla { import flash.display.*; import flash.text.*; public dynamic class PauseBtn_66 extends MovieClip { public var label:TextField; public var bg:MovieClip; public var resumeFlash:MovieClip; } }//package OmegaTowerDefense2_fla
Section 5
//SellBtn_38 (OmegaTowerDefense2_fla.SellBtn_38) package OmegaTowerDefense2_fla { import flash.display.*; import flash.text.*; public dynamic class SellBtn_38 extends MovieClip { public var label:TextField; public var highlight:MovieClip; } }//package OmegaTowerDefense2_fla
Section 6
//UpgradeBtn_35 (OmegaTowerDefense2_fla.UpgradeBtn_35) package OmegaTowerDefense2_fla { import flash.display.*; import flash.text.*; public dynamic class UpgradeBtn_35 extends MovieClip { public var label:TextField; public var highlight:MovieClip; } }//package OmegaTowerDefense2_fla
Section 7
//Arial (Arial) package { import flash.text.*; public dynamic class Arial extends Font { } }//package
Section 8
//BgMusic (BgMusic) package { import flash.media.*; public dynamic class BgMusic extends Sound { } }//package
Section 9
//Blade (Blade) package { import flash.display.*; public dynamic class Blade extends Sprite { } }//package
Section 10
//BladeImg (BladeImg) package { import flash.display.*; public dynamic class BladeImg extends Sprite { } }//package
Section 11
//BladeLauncher (BladeLauncher) package { import flash.display.*; public dynamic class BladeLauncher extends Sprite { } }//package
Section 12
//Bomb (Bomb) package { import flash.display.*; public dynamic class Bomb extends Sprite { } }//package
Section 13
//Creep (Creep) package { import flash.display.*; public class Creep extends Sprite { public var life:Number; public var fullLife:Number; public var speed:Number; public var dead:Boolean;// = false public var speedMultiplier:Number; public var moneyValue:int; public var spr:Sprite; public var targetCheckPoint:int; public var targetY:Number; public var targetX:Number; public function Creep(){ dead = false; super(); targetCheckPoint = 1; } } }//package
Section 14
//Creep_4Ball (Creep_4Ball) package { import flash.display.*; public dynamic class Creep_4Ball extends Sprite { } }//package
Section 15
//Creep_Biter (Creep_Biter) package { import flash.display.*; public dynamic class Creep_Biter extends Sprite { } }//package
Section 16
//Creep_Brain (Creep_Brain) package { import flash.display.*; public dynamic class Creep_Brain extends Sprite { } }//package
Section 17
//Creep_Bubble (Creep_Bubble) package { import flash.display.*; public dynamic class Creep_Bubble extends Sprite { } }//package
Section 18
//Creep_Eye (Creep_Eye) package { import flash.display.*; public dynamic class Creep_Eye extends Sprite { } }//package
Section 19
//Creep_Flyer (Creep_Flyer) package { import flash.display.*; public dynamic class Creep_Flyer extends Sprite { } }//package
Section 20
//Creep_PodMonster (Creep_PodMonster) package { import flash.display.*; public dynamic class Creep_PodMonster extends Sprite { } }//package
Section 21
//Creep_Segment (Creep_Segment) package { import flash.display.*; public dynamic class Creep_Segment extends Sprite { } }//package
Section 22
//Creep_Skull (Creep_Skull) package { import flash.display.*; public dynamic class Creep_Skull extends Sprite { } }//package
Section 23
//Creep_Spider (Creep_Spider) package { import flash.display.*; public dynamic class Creep_Spider extends Sprite { } }//package
Section 24
//Creep_Spiker (Creep_Spiker) package { import flash.display.*; public dynamic class Creep_Spiker extends Sprite { } }//package
Section 25
//Creep_WormBody (Creep_WormBody) package { import flash.display.*; public dynamic class Creep_WormBody extends Sprite { } }//package
Section 26
//Creep_WormHead (Creep_WormHead) package { import flash.display.*; public dynamic class Creep_WormHead extends Sprite { } }//package
Section 27
//Explosion (Explosion) package { import flash.display.*; public dynamic class Explosion extends MovieClip { public function Explosion(){ addFrameScript(7, frame8); } function frame8(){ try { stop(); } catch(e) { }; } } }//package
Section 28
//GameMenu (GameMenu) package { import flash.display.*; public dynamic class GameMenu extends Sprite { public var moreGamesBtn:SimpleButton; public var sponsorBtn:SimpleButton; public var playNowBtn:SimpleButton; } }//package
Section 29
//GameOverScreen (GameOverScreen) package { import flash.display.*; import flash.text.*; public dynamic class GameOverScreen extends Sprite { public var finalScoreTxt:TextField; public var continueBtn:SimpleButton; public var submitScoreBtn:SimpleButton; public var highScoreNameTxt:TextField; } }//package
Section 30
//GameTutorialMessage (GameTutorialMessage) package { import flash.display.*; public dynamic class GameTutorialMessage extends Sprite { public var bg:TowerDialogBg; } }//package
Section 31
//HighScoresScreen (HighScoresScreen) package { import flash.display.*; import flash.text.*; public dynamic class HighScoresScreen extends Sprite { public var statusTxt:TextField; } }//package
Section 32
//LaserPirateHighScoreService (LaserPirateHighScoreService) package { import flash.events.*; import flash.net.*; public class LaserPirateHighScoreService { public var successCallback:Function; public var errorCallback:Function; var gameCode:String; public function LaserPirateHighScoreService(_arg1:String){ this.gameCode = _arg1; } private function openHandler(_arg1:Event):void{ } private function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorCallback("security error"); } private function ioErrorHandler(_arg1:IOErrorEvent):void{ errorCallback("io error"); } private function completeHandler(_arg1:Event):void{ var scores:Array; var i:*; var xml:XML; var event = _arg1; try { xml = new XML(URLLoader(event.target).data); } catch(e) { errorCallback(("completeHandler try failed" + e.toString())); return; }; scores = new Array(); for each (i in xml.children()) { scores.push({name:i.name, score:i.score}); }; successCallback(scores); } private function httpStatusHandler(_arg1:HTTPStatusEvent):void{ } public function getScores(_arg1:Function, _arg2:Function):void{ var loader:URLLoader; var request:URLRequest; var successCallback = _arg1; var errorCallback = _arg2; this.successCallback = successCallback; this.errorCallback = errorCallback; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.addEventListener(Event.OPEN, openHandler); loader.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); try { request = new URLRequest(("http://www.laserpirate.com/generic_high_scores/get_scores.php?game_code=" + gameCode)); request.method = URLRequestMethod.POST; loader.load(request); } catch(e) { errorCallback("getScore try failed"); }; } public function submitScore(_arg1:String, _arg2:int, _arg3:Function, _arg4:Function):void{ var loader:URLLoader; var request:URLRequest; var urlVars:URLVariables; var name = _arg1; var score = _arg2; var successCallback = _arg3; var errorCallback = _arg4; this.successCallback = successCallback; this.errorCallback = errorCallback; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.addEventListener(Event.OPEN, openHandler); loader.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); try { request = new URLRequest("http://www.laserpirate.com/generic_high_scores/submit_score.php"); urlVars = new URLVariables(); urlVars.game_code = gameCode; urlVars.name = name; urlVars.score = score; request.data = urlVars; request.method = URLRequestMethod.POST; loader.load(request); } catch(e) { errorCallback("submitScore try failed"); }; } private function progressHandler(_arg1:ProgressEvent):void{ } } }//package
Section 33
//LightArtillery (LightArtillery) package { import flash.display.*; public dynamic class LightArtillery extends Sprite { } }//package
Section 34
//Map1 (Map1) package { import flash.display.*; public dynamic class Map1 extends Sprite { } }//package
Section 35
//Map2 (Map2) package { import flash.display.*; public dynamic class Map2 extends Sprite { } }//package
Section 36
//Map3 (Map3) package { import flash.display.*; public dynamic class Map3 extends Sprite { } }//package
Section 37
//Map4 (Map4) package { import flash.display.*; public dynamic class Map4 extends Sprite { } }//package
Section 38
//MenuBar (MenuBar) package { import flash.display.*; public dynamic class MenuBar extends Sprite { public var bg:TowerDialogBg; public var smallSlowTowerBtn:SmallSlowTower; public var bombBtn:Bomb; public var exitBtn:SimpleButton; public var shockTowerBtn:ShockTower; public var lightArtilleryBtn:LightArtillery; public var moneyTowerBtn:MoneyTower; public var pauseBtn:MovieClip; public var smallLaserTowerBtn:SmallLaserTower; public var launcherBtn:BladeLauncher; public var smallMissileTowerBtn:SmallMissileTower; } }//package
Section 39
//Missile (Missile) package { import flash.display.*; public class Missile extends Sprite { public var dead:Boolean;// = false public var damage:int; public var vx:Number;// = 0 public var vy:Number;// = 0 public var splashRadius:Number; public function Missile(){ vx = 0; vy = 0; dead = false; super(); } } }//package
Section 40
//MochiAd (MochiAd) package { import flash.events.*; import flash.display.*; import flash.net.*; import flash.utils.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return ("2.3"); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var f:Function; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; lv.lc = name; lv.st = getTimer(); loader = new Loader(); f = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); mc._mochiad_ctr_failed = true; }; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest((server + ".swf")); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function sendHighScore(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{ var _local4:MovieClip; _local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id}); if (!_local4){ return (false); }; _local4.doSend(["sendHighScore", _arg1], _arg2, _arg3); return (true); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _cleanup(_arg1:Object):void{ var idx:Number; var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; idx = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = _local1.loaderInfo.bytesTotal; if ((((_local4 > 0)) || (("number" == "undefined")))){ chk.showing = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.parent._mochiad_ctr_failed){ options.ad_failed(); _local3 = true; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _loadCommunicator(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var clipname:String; var server:String; var depth:Number; var mc:MovieClip; var lv:URLVariables; var k:String; var lc:LocalConnection; var name:String; var req:URLRequest; var loader:Loader; var options = _arg1; DEFAULTS = {com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; clipname = ("_mochiad_com_" + options.id); if (!MochiAd._isNetworkAvailable()){ return (null); }; if (clip[clipname]){ return (clip[clipname]); }; server = (options.com_server + options.id); MochiAd._allowDomains(server); delete options.id; delete options.com_server; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, clipname, depth); lv = new URLVariables(); for (k in options) { lv[k] = options[k]; }; lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.name = name; mc.lc = lc; lv.lc = name; mc._id = 0; mc._queue = []; mc.rpcResult = function (_arg1:Object):void{ var _local3:Array; var _local4:Array; var _local5:Number; var _local6:Object; var _local7:Object; _arg1 = parseInt(_arg1.toString()); _local3 = mc._callbacks[_arg1]; if (typeof(_local3) == "undefined"){ return; }; delete mc._callbacks[_arg1]; _local4 = []; _local5 = 2; while (_local5 < _local3.length) { _local4.push(_local3[_local5]); _local5++; }; _local5 = 1; while (_local5 < arguments.length) { _local4.push(arguments[_local5]); _local5++; }; _local6 = _local3[1]; _local7 = _local3[0]; if (((_local7) && ((typeof(_local6) == "string")))){ _local6 = _local7[_local6]; }; if (typeof(_local6) == "function"){ _local6.apply(_local7, _local4); }; }; mc._didConnect = function (_arg1:String):void{ var _local2:Array; var _local3:Function; var _local4:Number; var _local5:Array; mc._endpoint = _arg1; _local2 = mc._queue; delete mc._queue; _local3 = mc.doSend; _local4 = 0; while (_local4 < _local2.length) { _local5 = _local2[_local4]; _local3.apply(this, _local5); _local4++; }; }; mc.doSend = function (_arg1:Array, _arg2:Object, _arg3:Object):void{ var _local5:Number; var _local6:LocalConnection; var _local7:Array; var _local8:Number; if (mc._endpoint == null){ _local7 = []; _local8 = 0; while (_local8 < arguments.length) { _local7.push(arguments[_local8]); _local8++; }; mc._queue.push(_local7); return; }; mc._id = (mc._id + 1); _local5 = mc._id; mc._callbacks[_local5] = [_arg2, ((_arg3) || (_arg2))]; _local6 = new LocalConnection(); _local6.send(mc._endpoint, "rpc", _local5, _arg1); }; mc._callbacks = {}; mc._callbacks[0] = [mc, "_didConnect"]; lv.st = getTimer(); req = new URLRequest((server + ".swf")); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader = new Loader(); loader.load(req); mc.addChild(loader); mc._mochiad_com = loader; return (mc); } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var f:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }}; options = MochiAd._parseOptions(options, DEFAULTS); if ("5cc6f7dfb67f2f08341c831480f7c2a7".length == 0){ options.ad_started(); options.ad_finished(); return; }; clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); bar.x = 10; bar.y = (h - 20); bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; clip.loaderInfo.addEventListener(Event.COMPLETE, f); if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Object; var _local10:Number; var _local11:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local7 = ((100 * _local6) / _local5); _local8 = ((100 * _local3) / chk.ad_msec); _local9 = this._mochiad_bar._inside; _local10 = Math.min(100, Math.min(((_local7) || (0)), _local8)); _local10 = Math.max(this.last_pcnt, _local10); this.last_pcnt = _local10; _local9.scaleX = (_local10 * 0.01); if (!chk.showing){ _local11 = _local2.loaderInfo.bytesTotal; if ((((_local11 > 0)) || (("number" == "undefined")))){ chk.showing = true; chk.started = getTimer(); } else { if (_local3 > chk.ad_timeout){ options.ad_failed(); _local4 = true; }; }; }; if (this.parent._mochiad_ctr_failed){ options.ad_failed(); _local4 = true; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function fetchHighScores(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{ var _local4:MovieClip; _local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id}); if (!_local4){ return (false); }; _local4.doSend(["fetchHighScores", _arg1], _arg2, _arg3); return (true); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package
Section 41
//MoneyTower (MoneyTower) package { import flash.display.*; public dynamic class MoneyTower extends Sprite { } }//package
Section 42
//MusicBtn (MusicBtn) package { import flash.display.*; public dynamic class MusicBtn extends SimpleButton { } }//package
Section 43
//NotAllowed (NotAllowed) package { import flash.display.*; public dynamic class NotAllowed extends Sprite { } }//package
Section 44
//OmegaTowerDefense2 (OmegaTowerDefense2) package { import flash.events.*; import flash.display.*; import mochi.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.filters.*; import flash.geom.*; import flash.ui.*; public class OmegaTowerDefense2 extends MovieClip { public var bgMusicChannel:SoundChannel; var effectTime:Number;// = 0 var towerDialogRangeUpgrader:StatUpgrader; var laserCanvas:Sprite; public var upgradeSinTable:Array; public var drawMouseOverTowerAlphaTarget:Number;// = 0 var missiles:Array; var draggingTowerRadius:Number; var menuBar:MenuBar; var baseSpeedMultiplier:Number;// = 1 public var mochiscoreContainer:MochiContainer; public var towerData:Object; var gameBgContainer:Sprite; var creepWaveData:Array; var gameMenu:GameMenu; var towerDialogDamageUpgrader:StatUpgrader; var scoreTxt:TextField; var creepContainer:Sprite; var towers:Array; var highScoreService:LaserPirateHighScoreService; var score:Number; var shockCanvas:Sprite; var particleContainer:Sprite; var fmt:TextFormat; var towerDialogReloadUpgrader:StatUpgrader; var creepsToSpawnThisWave:int; var particles:Array; var highScoresScreen:HighScoresScreen; var waveTxt:TextField; public var drawMouseOverTowerRangeTarget:Number;// = 0 var CREEP_DIST_TO_REACH_CHECKPOINT:Number;// = 5 var framesUntilSpawnCreep:int; var finalScore:int; var creepPath:Array; var money:int; var tutorialMessage:GameTutorialMessage; public var upgradeCosTable:Array; var textContainer2:Sprite; public var bgMusicOn:Boolean; public var bgMusic:BgMusic; var infoTxt:TextField; var creepPathCavas:Sprite; var rangeCanvas:Sprite; var draggingTower:Boolean;// = false var life:int; var paused:Boolean;// = false var BOMB_EXPLODE_RANGE:Number;// = 50 var selectMapScreen:SelectMapScreen; var draggingTowerType:String; var draggingTowerTypeCostToBuy:int; var gameOn:Boolean;// = false var draggingTowerPreview:Sprite; var towerContainer:Sprite; var particleCanvas:Sprite; var currCreepWave:int; var moneyTxt:TextField; var creeps:Array; public var loadingBar_mc:MovieClip; var dialogTargetTower:Tower; public var drawMouseOverTowerRangeCurr:Number;// = 0 var towerDialogIsOpen:Boolean;// = false var towerDialog:TowerDialog; public var drawMouseOverTowerRangeY:Number;// = 0 var lifebarCanvas:Sprite; public var drawMouseOverTowerRangeX:Number;// = 0 var lifeTxt:TextField; var frameCounter:int;// = 0 public var adContainer:MochiContainer; var textContainer:Sprite; var difficultySelectScreen:SelectDifficultyScreen; public var sponsorLogo:SimpleButton; var sellValueFrac:Number;// = 0.9 var gameOverScreen:GameOverScreen; var scoreMultiplier:int;// = 1 public var musicBtn:MusicBtn; public var drawMouseOverTowerAlpha:Number;// = 0 var currBG:Sprite; public static const EXPLOSION_PARTICLE_PARTICLE_MAX_AGE:int = 8; public static const STAGE_WIDTH:int = 640; public static const STAGE_HEIGHT:int = 480; public static const BLADE_PARTICLE_EXPLDOE_DIST:int = 20; public static const BLADE_PARTICLE:int = 1; public static const HIGH_SCORE_GAME_CODE:String = "omega_defense2"; public static const EXPLOSION_PARTICLE:int = 0; public static const TEXT_PARTICLE:int = 2; public static const TEXT_PARTICLE_PARTICLE_MAX_AGE:int = 15; public static const BLADE_PARTICLE_INIT_ANIM_DURATION:int = 20; public function OmegaTowerDefense2(){ fmt = new TextFormat(); gameOn = false; paused = false; draggingTower = false; towers = new Array(); creeps = new Array(); frameCounter = 0; effectTime = 0; missiles = new Array(); particles = new Array(); BOMB_EXPLODE_RANGE = 50; CREEP_DIST_TO_REACH_CHECKPOINT = 5; baseSpeedMultiplier = 1; scoreMultiplier = 1; creepWaveData = [{spriteClass:Creep_Biter, life:5, speed:2, spawnFrameDelay:30, numCreepsInWave:35, moneyValue:5}, {spriteClass:Creep_Flyer, life:5, speed:3, spawnFrameDelay:20, numCreepsInWave:30, moneyValue:5}, {spriteClass:Creep_Bubble, life:9, speed:1, spawnFrameDelay:40, numCreepsInWave:20, moneyValue:5}, {spriteClass:Creep_Skull, life:10, speed:2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:10}, {spriteClass:Creep_Segment, life:7, speed:2, spawnFrameDelay:5, numCreepsInWave:10, moneyValue:5}, {spriteClass:Creep_Spider, life:8, speed:2.5, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:6}, {spriteClass:Creep_WormHead, life:15, speed:2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:25}, {spriteClass:Creep_WormBody, life:8, speed:2, spawnFrameDelay:5, numCreepsInWave:10, moneyValue:5}, {spriteClass:Creep_Skull, life:20, speed:2.1, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30}, {spriteClass:Creep_Segment, life:10, speed:2.1, spawnFrameDelay:5, numCreepsInWave:25, moneyValue:5}, {spriteClass:Creep_Skull, life:13, speed:2, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:6}, {spriteClass:Creep_4Ball, life:13, speed:2.5, spawnFrameDelay:11, numCreepsInWave:35, moneyValue:10}, {spriteClass:Creep_Brain, life:60, speed:1, spawnFrameDelay:70, numCreepsInWave:3, moneyValue:25}, {spriteClass:Creep_Eye, life:15, speed:2, spawnFrameDelay:30, numCreepsInWave:15, moneyValue:6}, {spriteClass:Creep_Spiker, life:20, speed:2, spawnFrameDelay:30, numCreepsInWave:25, moneyValue:6}, {spriteClass:Creep_PodMonster, life:100, speed:1, spawnFrameDelay:70, numCreepsInWave:3, moneyValue:50}, {spriteClass:Creep_Biter, life:20, speed:2.5, spawnFrameDelay:30, numCreepsInWave:20, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Flyer, life:21, speed:3.1, spawnFrameDelay:20, numCreepsInWave:20, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Bubble, life:45, speed:1.1, spawnFrameDelay:40, numCreepsInWave:15, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Skull, life:50, speed:2.1, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Segment, life:25, speed:2.1, spawnFrameDelay:5, numCreepsInWave:20, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_WormHead, life:70, speed:2.1, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_WormBody, life:25, speed:2.1, spawnFrameDelay:5, numCreepsInWave:20, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Skull, life:80, speed:2.2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:50, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Segment, life:20, speed:2.2, spawnFrameDelay:5, numCreepsInWave:25, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Spider, life:20, speed:3.2, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:8, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Skull, life:26, speed:2.2, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:8, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_4Ball, life:25, speed:3.2, spawnFrameDelay:10, numCreepsInWave:35, moneyValue:8, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Brain, life:40, speed:1.2, spawnFrameDelay:70, numCreepsInWave:3, moneyValue:75, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Eye, life:30, speed:2.2, spawnFrameDelay:30, numCreepsInWave:15, moneyValue:9, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Spiker, life:31, speed:2.2, spawnFrameDelay:30, numCreepsInWave:25, moneyValue:9, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_PodMonster, life:250, speed:1.2, spawnFrameDelay:70, numCreepsInWave:3, moneyValue:100, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Biter, life:32, speed:2.7, spawnFrameDelay:30, numCreepsInWave:30, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Flyer, life:33, speed:3.2, spawnFrameDelay:20, numCreepsInWave:30, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Bubble, life:80, speed:1.7, spawnFrameDelay:40, numCreepsInWave:45, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Skull, life:100, speed:2.7, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Segment, life:35, speed:2.7, spawnFrameDelay:5, numCreepsInWave:20, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_WormHead, life:150, speed:2.7, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_WormBody, life:35, speed:2.7, spawnFrameDelay:5, numCreepsInWave:30, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Skull, life:200, speed:2.3, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:40, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Segment, life:50, speed:2.3, spawnFrameDelay:5, numCreepsInWave:35, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Spider, life:60, speed:3.1, spawnFrameDelay:30, numCreepsInWave:20, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Skull, life:70, speed:2.7, spawnFrameDelay:30, numCreepsInWave:20, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_4Ball, life:80, speed:3.7, spawnFrameDelay:10, numCreepsInWave:45, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Brain, life:100, speed:1.7, spawnFrameDelay:70, numCreepsInWave:5, moneyValue:120, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Eye, life:90, speed:2.7, spawnFrameDelay:30, numCreepsInWave:25, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Spiker, life:100, speed:2.7, spawnFrameDelay:30, numCreepsInWave:35, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_PodMonster, life:250, speed:1.7, spawnFrameDelay:70, numCreepsInWave:5, moneyValue:150, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Biter, life:110, speed:3.1, spawnFrameDelay:30, numCreepsInWave:40, moneyValue:12, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Flyer, life:120, speed:3.5, spawnFrameDelay:20, numCreepsInWave:40, moneyValue:12, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Bubble, life:170, speed:3.1, spawnFrameDelay:40, numCreepsInWave:55, moneyValue:13, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Skull, life:200, speed:3.2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:40, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Segment, life:140, speed:3.2, spawnFrameDelay:5, numCreepsInWave:30, moneyValue:13, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_WormHead, life:250, speed:3.2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:40, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_WormBody, life:150, speed:3.2, spawnFrameDelay:5, numCreepsInWave:30, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Skull, life:300, speed:3.5, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:50, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Segment, life:160, speed:3.5, spawnFrameDelay:5, numCreepsInWave:55, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Spider, life:175, speed:3.5, spawnFrameDelay:30, numCreepsInWave:30, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Skull, life:200, speed:3.5, spawnFrameDelay:30, numCreepsInWave:30, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_4Ball, life:250, speed:3.5, spawnFrameDelay:10, numCreepsInWave:55, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Brain, life:300, speed:3.5, spawnFrameDelay:70, numCreepsInWave:5, moneyValue:150, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Eye, life:500, speed:3.5, spawnFrameDelay:30, numCreepsInWave:35, moneyValue:15, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Spiker, life:600, speed:3.5, spawnFrameDelay:30, numCreepsInWave:50, moneyValue:15, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_PodMonster, life:10000, speed:3.5, spawnFrameDelay:20, numCreepsInWave:1000, moneyValue:50, tint:{r:-50, g:-50, b:-60}}]; towerData = {artillery:{price:80, range:70, maxRange:110, rangeUpgradeCost:15, reloadTime:20, minReloadTime:10, reloadUpgradeCost:20, damage:1, maxDamage:4, damageUpgradeCost:25, radius:10, name:"Light Artillery", desc:"Light Artillery - Does a small amount of damage to a single nearby target."}, shock:{radius:16, price:500, range:90, maxRange:130, rangeUpgradeCost:100, reloadTime:30, minReloadTime:15, reloadUpgradeCost:125, damage:2, maxDamage:10, damageUpgradeCost:250, name:"Shock Tower", desc:"Shock Tower - Damages all creeps within range."}, bomb:{price:100, range:100, maxRange:140, rangeUpgradeCost:10, reloadTime:-1, damage:10, maxDamage:150, damageUpgradeCost:50, name:"Bomb", desc:"Bomb - Explodes only once, but does a lot of damage. There is a short delay before the explosion. Use bombs to stop creeps that would otherwise get through."}, laser:{price:250, range:90, maxRange:130, rangeUpgradeCost:25, reloadTime:40, minReloadTime:20, reloadUpgradeCost:40, damage:6, maxDamage:16, damageUpgradeCost:40, name:"Laser Turret", desc:"Laser Turret - Shoots a concentrated photon beam a single nearby creep."}, slow:{price:450, range:90, maxRange:130, rangeUpgradeCost:100, reloadTime:-1, damage:-1, name:"Slow Field Generator", desc:"Slow Field Generator - Decreases the rate of movement of creeps within range."}, missile:{price:450, range:110, maxRange:150, rangeUpgradeCost:50, reloadTime:25, minReloadTime:10, reloadUpgradeCost:60, damage:4, maxDamage:10, damageUpgradeCost:60, splashRadius:20, name:"Heavy Artillery", desc:"Heavy Artillery - Shoots missiles that damage everything within the explosion."}, money:{price:100, range:100, maxRange:140, rangeUpgradeCost:10, reloadTime:-1, damage:-1, name:"Money Booster", desc:"Money Tower - Gain one extra unit of money for each creep killed within this tower's range."}, launcher:{price:1000, range:150, maxRange:200, rangeUpgradeCost:140, reloadTime:10, minReloadTime:5, reloadUpgradeCost:140, damage:2, maxDamage:40, damageUpgradeCost:500, name:"Blade Launcher", desc:"Launches flying blades that seek creeps."}}; towerDialogIsOpen = false; sellValueFrac = 0.9; upgradeSinTable = new Array(); upgradeCosTable = new Array(); drawMouseOverTowerRangeTarget = 0; drawMouseOverTowerRangeCurr = 0; drawMouseOverTowerRangeX = 0; drawMouseOverTowerRangeY = 0; drawMouseOverTowerAlpha = 0; drawMouseOverTowerAlphaTarget = 0; super(); addFrameScript(0, frame1, 1, frame2, 2, frame3); } function sellBtnOver(_arg1):void{ towerDialog.sellBtn.highlight.visible = true; } public function gameOver(_arg1:int):void{ cleanUpGame(); gameOn = false; scoreTxt.visible = false; lifeTxt.visible = false; infoTxt.visible = false; menuBar.visible = false; moneyTxt.visible = false; waveTxt.visible = false; gameBgContainer.visible = false; gameOn = false; this.finalScore = _arg1; gameOverScreen.visible = true; gameOverScreen.finalScoreTxt.text = ("" + _arg1); musicBtn.x = ((640 - musicBtn.width) - 8); musicBtn.y = ((480 - musicBtn.height) - 8); } public function showInfoForTowerType(_arg1:String):void{ var _local2:String; _local2 = (((towerData[_arg1].desc + "\nPrice: ") + towerData[_arg1].price) + " "); if (towerData[_arg1].damage > 0){ _local2 = (_local2 + (("Damage: " + towerData[_arg1].damage) + " ")); }; if (towerData[_arg1].range > 0){ _local2 = (_local2 + (("Range: " + towerData[_arg1].range) + " ")); }; if (towerData[_arg1].reloadTime > 0){ _local2 = (_local2 + (("Reload Time: " + towerData[_arg1].reloadTime) + " ")); }; if (towerData[_arg1].splashRadius > 0){ _local2 = (_local2 + (("Splash: " + towerData[_arg1].splashRadius) + " ")); }; infoTxt.text = _local2; } public function makeTextParticle(_arg1:String, _arg2:int, _arg3:int):void{ var _local4:Object; var _local5:TextField; _local4 = {type:TEXT_PARTICLE, age:0, vy:-1}; _local4.spr = new Sprite(); particleContainer.addChild(_local4.spr); _local5 = new TextField(); _local4.spr.addChild(_local5); _local5.embedFonts = true; _local5.defaultTextFormat = fmt; _local5.text = _arg1; _local5.selectable = false; _local4.spr.mouseEnabled = false; _local4.spr.mouseChildren = false; _local4.spr.x = _arg2; _local4.spr.y = _arg3; particles.push(_local4); } public function sponsorBtnHandler(_arg1:MouseEvent):void{ var e = _arg1; try { navigateToURL(new URLRequest("http://www.flasharcadegamessite.com")); } catch(e) { }; } public function exitBtnClick(_arg1):void{ gameOver(score); } public function continueToGameMenu():void{ continueBtnHandler(); } public function insaneBtnHandler(_arg1:MouseEvent):void{ difficultySelectScreen.visible = false; selectMapScreen.visible = true; money = 250; framesUntilSpawnCreep = 10; baseSpeedMultiplier = 1; scoreMultiplier = 5; life = 10; } public function startAd():void{ showMochiAd(); } public function smallLaserTowerBtnOver(_arg1):void{ showInfoForTowerType("laser"); } public function shootGuns():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:Number; var _local10:Boolean; var _local11:int; var _local12:int; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Missile; laserCanvas.graphics.clear(); _local4 = 0; while (_local4 < towers.length) { towers[_local4].framesLeftInUpgrade--; if (towers[_local4].framesLeftInUpgrade > 0){ } else { towers[_local4].framesUntilFire--; switch (towers[_local4].type){ case "slow": _local5 = 0; while (_local5 < creeps.length) { _local1 = (towers[_local4].x - creeps[_local5].x); _local2 = (towers[_local4].y - creeps[_local5].y); _local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); if (_local3 < towers[_local4].range){ creeps[_local5].speedMultiplier = (creeps[_local5].speedMultiplier * towers[_local4].slowdownCoef); }; _local5++; }; _local9 = (((frameCounter - towers[_local4].createdFrameCounter) % 150) / 150); laserCanvas.graphics.lineStyle(3, 11184895, (0.5 - (0.5 * _local9))); laserCanvas.graphics.drawCircle(towers[_local4].x, towers[_local4].y, (towers[_local4].range * _local9)); break; case "bomb": towers[_local4].bombCounter--; towers[_local4].spr.transform.colorTransform = new ColorTransform(1, 1, 1, 1, ((towers[_local4].bombCounter % 30) * 3), 0, 0, 0); if (towers[_local4].bombCounter <= 0){ towers[_local4].dead = true; makeParticleExplosion(towers[_local4].x, towers[_local4].y, 1, 5, 0); _local5 = 0; while (_local5 < creeps.length) { _local1 = (towers[_local4].x - creeps[_local5].x); _local2 = (towers[_local4].y - creeps[_local5].y); _local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); if (_local3 < towers[_local4].range){ damageCreep(_local5, towers[_local4].damage); }; _local5++; }; }; break; case "shock": _local10 = false; _local5 = 0; while (_local5 < creeps.length) { _local1 = (towers[_local4].x - creeps[_local5].x); _local2 = (towers[_local4].y - creeps[_local5].y); _local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); if (_local3 < towers[_local4].range){ if (towers[_local4].framesUntilFire <= 0){ _local10 = true; damageCreep(_local5, 2); }; shockCanvas.graphics.lineStyle(1, 11206570, 0.75); _local15 = towers[_local4].x; _local16 = towers[_local4].y; shockCanvas.graphics.moveTo(creeps[_local5].x, creeps[_local5].y); _local17 = 0; while (_local17 <= 1) { _local15 = ((((_local17 * towers[_local4].x) + ((1 - _local17) * creeps[_local5].x)) + (Math.random() * 12)) - 6); _local16 = ((((_local17 * towers[_local4].y) + ((1 - _local17) * creeps[_local5].y)) + (Math.random() * 12)) - 6); shockCanvas.graphics.lineTo(_local15, _local16); _local17 = (_local17 + 0.2); }; }; _local5++; }; if (_local10){ towers[_local4].framesUntilFire = towers[_local4].reloadTime; }; break; case "money": _local9 = (((frameCounter - towers[_local4].createdFrameCounter) % 150) / 150); laserCanvas.graphics.lineStyle(3, 16764074, (0.3 - (0.3 * _local9))); laserCanvas.graphics.drawCircle(towers[_local4].x, towers[_local4].y, (towers[_local4].range * _local9)); break; case "artillery": case "laser": _local8 = -1; if (towers[_local4].type == "laser"){ _local9 = (towers[_local4].framesUntilFire / towers[_local4].reloadTime); towers[_local4].spr.glow.alpha = (0.8 * (1 - Math.min(1, Math.max(0, _local9)))); towers[_local4].spr.glow.rotation = (frameCounter * 3); }; _local5 = 0; while (_local5 < creeps.length) { _local1 = (towers[_local4].x - creeps[_local5].x); _local2 = (towers[_local4].y - creeps[_local5].y); _local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); if (_local3 > towers[_local4].range){ } else { if ((((_local8 == -1)) || ((_local5 < _local8)))){ _local8 = _local5; if (towers[_local4].type == "artillery"){ _local13 = (_local1 / _local3); _local14 = (_local2 / _local3); towers[_local4].spr.rotation = (180 + ((360 * Math.atan2(_local2, _local1)) / (Math.PI * 2))); }; }; }; _local5++; }; _local11 = 8; _local12 = 3; if (towers[_local4].type == "artillery"){ _local11 = 1; _local12 = 1; }; if (((!((_local8 == -1))) && ((towers[_local4].framesUntilFire < _local11)))){ particleCanvas.graphics.lineStyle(_local12, 16755370, 0.5); particleCanvas.graphics.moveTo(towers[_local4].x, towers[_local4].y); particleCanvas.graphics.lineTo(creeps[_local8].x, creeps[_local8].y); if (towers[_local4].framesUntilFire <= 0){ towers[_local4].framesUntilFire = towers[_local4].reloadTime; damageCreep(_local8, towers[_local4].damage); }; }; break; case "missile": _local8 = -1; _local5 = 0; while (_local5 < creeps.length) { _local1 = (towers[_local4].x - creeps[_local5].x); _local2 = (towers[_local4].y - creeps[_local5].y); _local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); if (_local3 > towers[_local4].range){ } else { if ((((_local8 == -1)) || ((_local5 < _local8)))){ _local8 = _local5; _local13 = (_local1 / _local3); _local14 = (_local2 / _local3); towers[_local4].spr.turret.rotation = (180 + ((360 * Math.atan2(_local2, _local1)) / (Math.PI * 2))); }; }; _local5++; }; if (((!((_local8 == -1))) && ((towers[_local4].framesUntilFire <= 0)))){ _local18 = new Missile(); _local18.x = towers[_local4].x; _local18.y = towers[_local4].y; _local18.vx = (-(_local13) * 15); _local18.vy = (-(_local14) * 15); _local18.splashRadius = towers[_local4].splashRadius; _local18.damage = towers[_local4].damage; missiles.push(_local18); addChild(_local18); towers[_local4].framesUntilFire = towers[_local4].reloadTime; }; break; case "launcher": _local8 = -1; _local5 = 0; while (_local5 < creeps.length) { _local1 = (towers[_local4].x - creeps[_local5].x); _local2 = (towers[_local4].y - creeps[_local5].y); _local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); if (_local3 > towers[_local4].range){ } else { if ((((_local8 == -1)) || ((_local5 < _local8)))){ _local8 = _local5; }; }; _local5++; }; if (((!((_local8 == -1))) && ((towers[_local4].framesUntilFire <= 0)))){ makeBladeParticle(_local4, _local8); towers[_local4].framesUntilFire = towers[_local4].reloadTime; }; break; }; }; _local4++; }; } function killDraggingTower():void{ if (draggingTower){ towerContainer.removeChild(draggingTowerPreview); draggingTower = false; }; } public function updateTextParticle(_arg1:int):void{ if (particles[_arg1].age > TEXT_PARTICLE_PARTICLE_MAX_AGE){ particles[_arg1].dead = true; return; }; particles[_arg1].vy = (particles[_arg1].vy - 0.5); particles[_arg1].spr.y = (particles[_arg1].spr.y + particles[_arg1].vy); particles[_arg1].spr.alpha = (1 - (particles[_arg1].age / TEXT_PARTICLE_PARTICLE_MAX_AGE)); } public function map2BtnHandler(_arg1:MouseEvent):void{ creepPath = [{x:458, y:-19}, {x:461, y:-6}, {x:462, y:8}, {x:462, y:24}, {x:461, y:38}, {x:464, y:51}, {x:464, y:64}, {x:460, y:76}, {x:452, y:85}, {x:439, y:91}, {x:428, y:99}, {x:411, y:101}, {x:400, y:106}, {x:395, y:115}, {x:383, y:116}, {x:371, y:119}, {x:357, y:119}, {x:343, y:113}, {x:329, y:113}, {x:318, y:108}, {x:307, y:107}, {x:296, y:106}, {x:288, y:102}, {x:275, y:102}, {x:263, y:108}, {x:258, y:117}, {x:252, y:128}, {x:249, y:136}, {x:241, y:145}, {x:232, y:155}, {x:222, y:163}, {x:211, y:166}, {x:200, y:175}, {x:188, y:183}, {x:177, y:191}, {x:175, y:205}, {x:179, y:218}, {x:182, y:230}, {x:183, y:245}, {x:184, y:0x0100}, {x:187, y:272}, {x:187, y:286}, {x:193, y:303}, {x:205, y:309}, {x:221, y:321}, {x:232, y:329}, {x:249, y:332}, {x:262, y:333}, {x:275, y:340}, {x:285, y:346}, {x:302, y:355}, {x:317, y:354}, {x:332, y:352}, {x:344, y:348}, {x:352, y:343}, {x:363, y:338}, {x:375, y:333}, {x:388, y:327}, {x:398, y:329}, {x:412, y:327}, {x:425, y:314}, {x:425, y:300}, {x:426, y:288}, {x:430, y:277}, {x:435, y:266}, {x:445, y:258}, {x:459, y:0xFF}, {x:474, y:0xFF}, {x:484, y:259}, {x:491, y:263}, {x:501, y:271}, {x:511, y:276}, {x:522, y:280}, {x:537, y:287}, {x:548, y:291}, {x:559, y:285}, {x:573, y:275}, {x:585, y:274}, {x:594, y:267}, {x:606, y:258}, {x:615, y:0xFF}, {x:626, y:0xFF}, {x:635, y:0xFF}, {x:644, y:0x0100}]; currBG = new Map2(); gameBgContainer.addChild(currBG); selectMapScreen.visible = false; startGame(); } public function spawnCreep():void{ var _local1:Creep; if (creepsToSpawnThisWave <= 0){ currCreepWave++; if (currCreepWave >= creepWaveData.length){ gameOver(score); return; }; creepsToSpawnThisWave = creepWaveData[currCreepWave].numCreepsInWave; framesUntilSpawnCreep = (framesUntilSpawnCreep + 100); return; }; framesUntilSpawnCreep--; if (framesUntilSpawnCreep > 0){ return; }; framesUntilSpawnCreep = creepWaveData[currCreepWave].spawnFrameDelay; creepsToSpawnThisWave--; _local1 = new Creep(); _local1.spr = new creepWaveData[currCreepWave].spriteClass(); if (creepWaveData[currCreepWave].tint){ _local1.spr.transform.colorTransform = new ColorTransform(1, 1, 1, 1, creepWaveData[currCreepWave].tint.r, creepWaveData[currCreepWave].tint.g, creepWaveData[currCreepWave].tint.b, 0); }; _local1.addChild(_local1.spr); creepContainer.addChild(_local1); creeps.push(_local1); _local1.x = creepPath[0].x; _local1.y = creepPath[0].y; _local1.life = creepWaveData[currCreepWave].life; _local1.fullLife = _local1.life; _local1.speed = creepWaveData[currCreepWave].speed; _local1.moneyValue = creepWaveData[currCreepWave].moneyValue; _local1.mouseEnabled = true; _local1.mouseChildren = false; _local1.addEventListener(MouseEvent.MOUSE_OVER, creepMouseOver, false, 0, true); _local1.addEventListener(MouseEvent.MOUSE_OUT, creepMouseOut, false, 0, true); } public function submitScoreBtnHandler(_arg1:MouseEvent):void{ submitScore(gameOverScreen.highScoreNameTxt.text, finalScore); } public function launcherBtnClick(_arg1):void{ setupTowerFromType("launcher"); } function towerClickHandler(_arg1:MouseEvent):void{ var _local2:Number; if (draggingTower){ return; }; if (towerDialogIsOpen){ towerDialogClose(); }; towerDialogIsOpen = true; dialogTargetTower = (_arg1.target as Tower); towerDialog = new TowerDialog(); addChild(towerDialog); towerDialog.sellBtn.label.text = ("Sell for " + int((dialogTargetTower.sellValue * sellValueFrac))); towerDialog.sellBtn.buttonMode = true; towerDialog.sellBtn.useHandCursor = true; towerDialog.sellBtn.mouseChildren = false; towerDialog.sellBtn.highlight.visible = false; towerDialog.closeBtn.addEventListener(MouseEvent.CLICK, towerDialogClose, false, 0, true); towerDialog.sellBtn.addEventListener(MouseEvent.CLICK, sellTower, false, 0, true); towerDialog.sellBtn.addEventListener(MouseEvent.MOUSE_OVER, sellBtnOver, false, 0, true); towerDialog.sellBtn.addEventListener(MouseEvent.MOUSE_OUT, sellBtnOut, false, 0, true); towerDialogRangeUpgrader = new StatUpgrader(); towerDialog.addChild(towerDialogRangeUpgrader); towerDialogRangeUpgrader.x = 1; towerDialogRangeUpgrader.y = 5; towerDialogRangeUpgrader.minTxt.text = ("" + dialogTargetTower.minRange); towerDialogRangeUpgrader.maxTxt.text = ("" + dialogTargetTower.maxRange); towerDialogRangeUpgrader.bar.scaleX = ((dialogTargetTower.range - dialogTargetTower.minRange) / (dialogTargetTower.maxRange - dialogTargetTower.minRange)); towerDialogRangeUpgrader.upgradeBtn.highlight.visible = false; towerDialogRangeUpgrader.upgradeBtn.mouseChildren = false; if (dialogTargetTower.numRangeUpgrades < 4){ towerDialogRangeUpgrader.upgradeBtn.buttonMode = true; towerDialogRangeUpgrader.upgradeBtn.useHandCursor = true; towerDialogRangeUpgrader.upgradeBtn.label.text = ("Upgrade for " + dialogTargetTower.rangeUpgradeCost); towerDialogRangeUpgrader.upgradeBtn.addEventListener(MouseEvent.MOUSE_OVER, upgradeBtnOver, false, 0, true); towerDialogRangeUpgrader.upgradeBtn.addEventListener(MouseEvent.MOUSE_OUT, upgradeBtnOut, false, 0, true); towerDialogRangeUpgrader.upgradeBtn.addEventListener(MouseEvent.CLICK, upgradeRange, false, 0, true); } else { towerDialogRangeUpgrader.upgradeBtn.label.text = "MAX"; }; _local2 = ((towerDialogRangeUpgrader.y + towerDialogRangeUpgrader.height) + 8); if (dialogTargetTower.maxDamage){ towerDialogDamageUpgrader = new StatUpgrader(); towerDialogDamageUpgrader.labelTxt.text = "Damage"; towerDialog.addChild(towerDialogDamageUpgrader); towerDialogDamageUpgrader.x = 1; towerDialogDamageUpgrader.y = ((towerDialogRangeUpgrader.y + towerDialogRangeUpgrader.height) + 4); towerDialogDamageUpgrader.minTxt.text = ("" + dialogTargetTower.minDamage); towerDialogDamageUpgrader.maxTxt.text = ("" + dialogTargetTower.maxDamage); towerDialogDamageUpgrader.bar.scaleX = ((dialogTargetTower.damage - dialogTargetTower.minDamage) / (dialogTargetTower.maxDamage - dialogTargetTower.minDamage)); towerDialogDamageUpgrader.upgradeBtn.highlight.visible = false; towerDialogDamageUpgrader.upgradeBtn.mouseChildren = false; if (dialogTargetTower.numDamageUpgrades < 4){ towerDialogDamageUpgrader.upgradeBtn.buttonMode = true; towerDialogDamageUpgrader.upgradeBtn.useHandCursor = true; towerDialogDamageUpgrader.upgradeBtn.label.text = ("Upgrade for " + dialogTargetTower.damageUpgradeCost); towerDialogDamageUpgrader.upgradeBtn.addEventListener(MouseEvent.MOUSE_OVER, upgradeBtnOver, false, 0, true); towerDialogDamageUpgrader.upgradeBtn.addEventListener(MouseEvent.MOUSE_OUT, upgradeBtnOut, false, 0, true); towerDialogDamageUpgrader.upgradeBtn.addEventListener(MouseEvent.CLICK, upgradeDamage, false, 0, true); } else { towerDialogDamageUpgrader.upgradeBtn.label.text = "MAX"; }; _local2 = ((towerDialogDamageUpgrader.y + towerDialogDamageUpgrader.height) + 8); }; if (dialogTargetTower.minReloadTime){ towerDialogReloadUpgrader = new StatUpgrader(); towerDialogReloadUpgrader.labelTxt.text = "Reload"; towerDialog.addChild(towerDialogReloadUpgrader); towerDialogReloadUpgrader.x = 1; towerDialogReloadUpgrader.y = ((towerDialogDamageUpgrader.y + towerDialogDamageUpgrader.height) + 4); towerDialogReloadUpgrader.minTxt.text = ("" + dialogTargetTower.minReloadTime); towerDialogReloadUpgrader.maxTxt.text = ("" + dialogTargetTower.maxReloadTime); towerDialogReloadUpgrader.bar.scaleX = ((dialogTargetTower.reloadTime - dialogTargetTower.minReloadTime) / (dialogTargetTower.maxReloadTime - dialogTargetTower.minReloadTime)); towerDialogReloadUpgrader.upgradeBtn.highlight.visible = false; towerDialogReloadUpgrader.upgradeBtn.mouseChildren = false; if (dialogTargetTower.numReloadUpgrades < 4){ towerDialogReloadUpgrader.upgradeBtn.buttonMode = true; towerDialogReloadUpgrader.upgradeBtn.useHandCursor = true; towerDialogReloadUpgrader.upgradeBtn.label.text = ("Upgrade for " + dialogTargetTower.reloadUpgradeCost); towerDialogReloadUpgrader.upgradeBtn.addEventListener(MouseEvent.MOUSE_OVER, upgradeBtnOver, false, 0, true); towerDialogReloadUpgrader.upgradeBtn.addEventListener(MouseEvent.MOUSE_OUT, upgradeBtnOut, false, 0, true); towerDialogReloadUpgrader.upgradeBtn.addEventListener(MouseEvent.CLICK, upgradeReload, false, 0, true); } else { towerDialogReloadUpgrader.upgradeBtn.label.text = "MAX"; }; _local2 = ((towerDialogReloadUpgrader.y + towerDialogReloadUpgrader.height) + 8); }; towerDialog.sellBtn.y = _local2; towerDialog.closeBtn.y = _local2; towerDialog.bg.height = ((_local2 + towerDialog.closeBtn.height) + 6); towerDialog.x = (stage.mouseX + 10); towerDialog.y = (stage.mouseY + 10); if ((towerDialog.x + towerDialog.width) > 630){ towerDialog.x = ((stage.mouseX - 10) - towerDialog.width); }; if ((towerDialog.y + towerDialog.height) > 410){ towerDialog.y = ((stage.mouseY - 10) - towerDialog.height); }; } public function getHighScores(_arg1:MouseEvent):void{ gameMenu.visible = false; gameOverScreen.visible = false; highScoresScreen.visible = true; highScoresScreen.statusTxt.text = "Getting Scores..."; highScoresScreen.namesTxt.text = ""; highScoresScreen.scoresTxt.text = ""; highScoreService.getScores(gotScoresHandler, scoresErrorHandler); } public function updateGame(_arg1):void{ var _local2:int; if (!gameOn){ return; }; effectTime++; if (paused){ menuBar.pauseBtn.resumeFlash.alpha = (0.5 + (0.25 * Math.cos((effectTime / 4)))); }; rangeCanvas.graphics.clear(); setStatusTextFields(); if (draggingTower){ draggingTowerPreview.x = stage.mouseX; draggingTowerPreview.y = stage.mouseY; if ((((((draggingTowerTypeCostToBuy > money)) || (((!((draggingTowerType == "bomb"))) && (draggingTowerIsOverPath()))))) || (draggingTowerIsOverTower()))){ draggingTowerPreview.transform.colorTransform = new ColorTransform(1, 0.5, 0.5, 1, 64, 0, 0, 0); } else { draggingTowerPreview.transform.colorTransform = new ColorTransform(); }; }; if (draggingTower){ drawDraggingTowerRange(); }; drawMouseOverTowerRange(); if (((towerDialogIsOpen) && (dialogTargetTower.dead))){ towerDialogClose(); }; removeDeadTowers(); lifebarCanvas.graphics.clear(); drawCreepLifeBars(); drawTowerUpgradeProgressBars(); if (paused){ return; }; frameCounter++; spawnCreep(); _local2 = 0; while (_local2 < creeps.length) { creeps[_local2].speedMultiplier = baseSpeedMultiplier; _local2++; }; particleCanvas.graphics.clear(); shockCanvas.graphics.clear(); shootGuns(); updateMissiles(); updateCreeps(); updateParticles(); } public function bombBtnOver(_arg1):void{ showInfoForTowerType("bomb"); } function towerMouseOutHandler(_arg1:MouseEvent):void{ _arg1.target.mouseIsOver = false; setDefaultInfoTxt(); } public function setStatusTextFields():void{ lifeTxt.text = ("Life: " + life); scoreTxt.text = ("Score: " + int(score)); moneyTxt.text = ("Money: " + money); if (currCreepWave == (creepWaveData.length - 1)){ waveTxt.text = "SHOWDOWN!!"; } else { waveTxt.text = ("Wave: " + (currCreepWave + 1)); }; } public function setDefaultInfoTxt():void{ if (draggingTower){ infoTxt.text = "Click to build this tower. If it is red you can't build it. Press space to cancel this tower."; } else { infoTxt.text = "Click a tower in the menu to select it, then click again where you want to build it."; }; } function frame3(){ stop(); this.startAd(); } public function lightArtilleryBtnOver(_arg1):void{ showInfoForTowerType("artillery"); } function keyDownHandler(_arg1:KeyboardEvent):void{ } public function drawTowerUpgradeProgressBars():void{ var _local1:int; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:int; var _local7:Number; _local1 = 0; while (_local1 < towers.length) { if (towers[_local1].framesLeftInUpgrade <= 0){ } else { _local2 = (towers[_local1].framesLeftInUpgrade / towers[_local1].totalFramesToUpgrade); _local3 = (-(Math.PI) / 2); lifebarCanvas.graphics.lineStyle(0, 0, 0); lifebarCanvas.graphics.beginFill(0xFF0000, 0.2); _local4 = (1 / 30); _local5 = ((_local4 * Math.PI) * 2); _local6 = 0; _local7 = _local4; while (_local7 <= 1) { if (_local7 > _local2){ lifebarCanvas.graphics.beginFill(0xFF00, 0.2); }; lifebarCanvas.graphics.moveTo(towers[_local1].x, towers[_local1].y); lifebarCanvas.graphics.lineTo((towers[_local1].x + (15 * upgradeCosTable[_local6])), (towers[_local1].y + (15 * upgradeSinTable[_local6]))); lifebarCanvas.graphics.lineTo((towers[_local1].x + (15 * upgradeCosTable[(_local6 + 1)])), (towers[_local1].y + (15 * upgradeSinTable[(_local6 + 1)]))); _local6++; _local7 = (_local7 + _local4); }; }; _local1++; }; } function frame2(){ SoundMixer.stopAll(); } public function updateBladeParticle(_arg1:int):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:int; particles[_arg1].spr.x = (particles[_arg1].spr.x + particles[_arg1].vx); particles[_arg1].spr.y = (particles[_arg1].spr.y + particles[_arg1].vy); particles[_arg1].spr.rotation = (particles[_arg1].spr.rotation + 15); if (particles[_arg1].age < BLADE_PARTICLE_INIT_ANIM_DURATION){ particles[_arg1].spr.scaleX = (0.2 + ((0.8 * particles[_arg1].age) / BLADE_PARTICLE_INIT_ANIM_DURATION)); particles[_arg1].spr.scaleY = (0.5 + ((0.5 * particles[_arg1].age) / BLADE_PARTICLE_INIT_ANIM_DURATION)); } else { particles[_arg1].spr.scaleX = 1; particles[_arg1].spr.scaleY = 1; }; if (creeps.length == 0){ particles[_arg1].dead = true; makeParticleExplosion(particles[_arg1].spr.x, particles[_arg1].spr.y, 1, 0.5); } else { if (particles[_arg1].targetCreepIndex >= creeps.length){ particles[_arg1].targetCreepIndex = (creeps.length - 1); }; _local2 = (creeps[particles[_arg1].targetCreepIndex].x - particles[_arg1].spr.x); _local3 = (creeps[particles[_arg1].targetCreepIndex].y - particles[_arg1].spr.y); _local4 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); _local2 = (_local2 / _local4); _local3 = (_local3 / _local4); particles[_arg1].vx = (particles[_arg1].vx + _local2); particles[_arg1].vy = (particles[_arg1].vy + _local3); particles[_arg1].vx = (particles[_arg1].vx * 0.95); particles[_arg1].vy = (particles[_arg1].vy * 0.95); _local5 = 0; while (_local5 < creeps.length) { _local2 = (creeps[_local5].x - particles[_arg1].spr.x); _local3 = (creeps[_local5].y - particles[_arg1].spr.y); _local4 = ((_local2 * _local2) + (_local3 * _local3)); if (_local4 < (BLADE_PARTICLE_EXPLDOE_DIST * BLADE_PARTICLE_EXPLDOE_DIST)){ particles[_arg1].dead = true; damageCreep(_local5, particles[_arg1].damage); }; _local5++; }; }; } function frame1(){ sponsorLogo.addEventListener(MouseEvent.CLICK, function (_arg1){ var e = _arg1; try { navigateToURL(new URLRequest("http://www.flasharcadegamessite.com")); } catch(e) { }; }, false, 0, true); this.stop(); trace("action code running"); this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, PL_LOADING); this.loaderInfo.addEventListener(Event.COMPLETE, PL_CONTINUE); } public function precalcUpgradeSinCosTables():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:*; _local1 = (1 / 30); _local2 = ((_local1 * Math.PI) * 2); _local3 = _local1; while (_local3 <= (1 + (2 * _local1))) { _local4 = (((-(Math.PI) / 2) - ((_local3 * Math.PI) * 2)) + _local2); upgradeSinTable.push(Math.sin(_local4)); upgradeCosTable.push(Math.cos(_local4)); _local3 = (_local3 + _local1); }; } function upgradeRange(_arg1):void{ var _local2:Number; if (dialogTargetTower.framesLeftInUpgrade > 0){ infoTxt.text = "An upgrade is currently in progress. Wait until it finishes to upgrade again."; return; }; if (money < dialogTargetTower.rangeUpgradeCost){ infoTxt.text = ("You don't have enough money to upgrade. Required: " + dialogTargetTower.rangeUpgradeCost); return; }; _local2 = ((dialogTargetTower.maxRange - dialogTargetTower.minRange) / 4); dialogTargetTower.range = (dialogTargetTower.range + _local2); dialogTargetTower.numRangeUpgrades++; if (dialogTargetTower.numRangeUpgrades == 4){ towerDialogRangeUpgrader.upgradeBtn.highlight.visible = false; towerDialogRangeUpgrader.upgradeBtn.label.text = "MAX"; towerDialogRangeUpgrader.upgradeBtn.buttonMode = false; towerDialogRangeUpgrader.upgradeBtn.useHandCursor = false; towerDialogRangeUpgrader.upgradeBtn.removeEventListener(MouseEvent.MOUSE_OVER, upgradeBtnOver); towerDialogRangeUpgrader.upgradeBtn.removeEventListener(MouseEvent.MOUSE_OUT, upgradeBtnOut); towerDialogRangeUpgrader.upgradeBtn.removeEventListener(MouseEvent.CLICK, upgradeRange); }; money = (money - dialogTargetTower.rangeUpgradeCost); dialogTargetTower.sellValue = (dialogTargetTower.sellValue + dialogTargetTower.rangeUpgradeCost); towerDialog.sellBtn.label.text = ("Sell for " + int((dialogTargetTower.sellValue * sellValueFrac))); setStatusTextFields(); dialogTargetTower.framesLeftInUpgrade = dialogTargetTower.totalFramesToUpgrade; towerDialogRangeUpgrader.bar.scaleX = ((dialogTargetTower.range - dialogTargetTower.minRange) / (dialogTargetTower.maxRange - dialogTargetTower.minRange)); } public function creepMouseOut(_arg1:MouseEvent):void{ setDefaultInfoTxt(); } function upgradeBtnOut(_arg1:MouseEvent):void{ _arg1.target.highlight.visible = false; } function keyUpHandler(_arg1:KeyboardEvent):void{ if ((((_arg1.keyCode == Keyboard.SPACE)) || ((_arg1.keyCode == Keyboard.ESCAPE)))){ killDraggingTower(); }; } public function removeDeadParticles():void{ var _local1:Array; var _local2:int; _local1 = new Array(); _local2 = 0; while (_local2 < particles.length) { if (!particles[_local2].dead){ _local1.push(particles[_local2]); } else { particleContainer.removeChild(particles[_local2].spr); }; _local2++; }; particles = _local1; } public function mediumBtnHandler(_arg1:MouseEvent):void{ difficultySelectScreen.visible = false; selectMapScreen.visible = true; money = 350; framesUntilSpawnCreep = 50; baseSpeedMultiplier = 0.8; scoreMultiplier = 2; life = 20; } function upgradeDamage(_arg1):void{ var _local2:Number; if (dialogTargetTower.framesLeftInUpgrade > 0){ infoTxt.text = "An upgrade is currently in progress. Wait until it finishes to upgrade again."; return; }; if (money < dialogTargetTower.damageUpgradeCost){ infoTxt.text = ("You don't have enough money to upgrade. Required: " + dialogTargetTower.damageUpgradeCost); return; }; _local2 = ((dialogTargetTower.maxDamage - dialogTargetTower.minDamage) / 4); dialogTargetTower.damage = (dialogTargetTower.damage + _local2); dialogTargetTower.numDamageUpgrades++; if (dialogTargetTower.numDamageUpgrades == 4){ towerDialogDamageUpgrader.upgradeBtn.highlight.visible = false; towerDialogDamageUpgrader.upgradeBtn.label.text = "MAX"; towerDialogDamageUpgrader.upgradeBtn.buttonMode = false; towerDialogDamageUpgrader.upgradeBtn.useHandCursor = false; towerDialogDamageUpgrader.upgradeBtn.removeEventListener(MouseEvent.MOUSE_OVER, upgradeBtnOver); towerDialogDamageUpgrader.upgradeBtn.removeEventListener(MouseEvent.MOUSE_OUT, upgradeBtnOut); towerDialogDamageUpgrader.upgradeBtn.removeEventListener(MouseEvent.CLICK, upgradeDamage); }; money = (money - dialogTargetTower.damageUpgradeCost); dialogTargetTower.sellValue = (dialogTargetTower.sellValue + dialogTargetTower.damageUpgradeCost); towerDialog.sellBtn.label.text = ("Sell for " + int((dialogTargetTower.sellValue * sellValueFrac))); setStatusTextFields(); dialogTargetTower.framesLeftInUpgrade = dialogTargetTower.totalFramesToUpgrade; towerDialogDamageUpgrader.bar.scaleX = ((dialogTargetTower.damage - dialogTargetTower.minDamage) / (dialogTargetTower.maxDamage - dialogTargetTower.minDamage)); } public function setupTowerFromType(_arg1:String):void{ var towerType = _arg1; towerDialogClose(); try { removeChild(tutorialMessage); } catch(e) { }; try { towerContainer.removeChild(draggingTowerPreview); } catch(e) { }; draggingTower = true; draggingTowerType = towerType; switch (towerType){ case "artillery": draggingTowerPreview = new LightArtillery(); break; case "shock": draggingTowerPreview = new ShockTower(); break; case "bomb": draggingTowerPreview = new Bomb(); break; case "laser": draggingTowerPreview = new SmallLaserTower(); break; case "missile": draggingTowerPreview = new SmallMissileTower(); break; case "slow": draggingTowerPreview = new SmallSlowTower(); break; case "money": draggingTowerPreview = new MoneyTower(); break; case "launcher": draggingTowerPreview = new BladeLauncher(); break; }; towerContainer.addChild(draggingTowerPreview); draggingTowerPreview.mouseEnabled = false; draggingTowerPreview.mouseChildren = false; towerContainer.mouseEnabled = false; draggingTowerPreview.alpha = 0.5; draggingTowerTypeCostToBuy = towerData[towerType].price; draggingTowerRadius = 20; if (towerData[towerType].radius){ draggingTowerRadius = towerData[towerType].radius; }; showInfoForTowerType(towerType); } public function hardBtnHandler(_arg1:MouseEvent):void{ difficultySelectScreen.visible = false; selectMapScreen.visible = true; money = 300; framesUntilSpawnCreep = 50; baseSpeedMultiplier = 0.9; scoreMultiplier = 3; life = 20; } public function pauseBtnOver(_arg1):void{ menuBar.pauseBtn.bg.alpha = 0.8; } public function centerOnScreen(_arg1):void{ _arg1.x = ((STAGE_WIDTH / 2) - (_arg1.width / 2)); _arg1.x = ((STAGE_HEIGHT / 2) - (_arg1.height / 2)); } public function removeDeadCreeps():void{ var _local1:Array; var _local2:int; _local1 = new Array(); _local2 = 0; while (_local2 < creeps.length) { if (creeps[_local2].dead){ creepContainer.removeChild(creeps[_local2]); } else { _local1.push(creeps[_local2]); }; _local2++; }; creeps = _local1; } public function pauseBtnClick(_arg1):void{ var e = _arg1; try { removeChild(tutorialMessage); } catch(e) { }; paused = !(paused); if (paused){ menuBar.pauseBtn.label.text = "RESUME"; menuBar.pauseBtn.resumeFlash.visible = true; } else { menuBar.pauseBtn.label.text = "PAUSE"; menuBar.pauseBtn.resumeFlash.visible = false; }; } public function gotScoresHandler(_arg1:Array):void{ var _local2:*; highScoresScreen.statusTxt.text = ""; for each (_local2 in _arg1) { highScoresScreen.namesTxt.appendText((_local2.name + "\n")); highScoresScreen.scoresTxt.appendText((_local2.score + "\n")); }; } function towerDialogClose(_arg1=null):void{ var _local2:int; if (towerDialogIsOpen){ removeChild(towerDialog); towerDialogIsOpen = false; _local2 = 0; while (_local2 < towers.length) { towers[_local2].mouseIsOver = false; _local2++; }; }; } public function damageCreep(_arg1:int, _arg2:Number):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; creeps[_arg1].life = (creeps[_arg1].life - _arg2); score = (score + (_arg2 * scoreMultiplier)); if (creeps[_arg1].life <= 0){ _local3 = 0; _local4 = 0; while (_local4 < towers.length) { if (towers[_local4].type != "money"){ } else { _local6 = (creeps[_arg1].x - towers[_local4].x); _local7 = (creeps[_arg1].y - towers[_local4].y); if (((_local6 * _local6) + (_local7 * _local7)) < (towers[_local4].range * towers[_local4].range)){ _local3++; makeTextParticle("+1", towers[_local4].x, towers[_local4].y); }; }; _local4++; }; creeps[_arg1].dead = true; _local5 = (creeps[_arg1].moneyValue + _local3); money = (money + _local5); score = (score + (_local5 * scoreMultiplier)); makeTextParticle(("+" + creeps[_arg1].moneyValue), creeps[_arg1].x, creeps[_arg1].y); makeParticleExplosion(creeps[_arg1].x, creeps[_arg1].y, 1, 1); }; makeParticleExplosion(creeps[_arg1].x, creeps[_arg1].y, 1, 0.5); setStatusTextFields(); } function upgradeReload(_arg1):void{ var _local2:Number; if (dialogTargetTower.framesLeftInUpgrade > 0){ infoTxt.text = "An upgrade is currently in progress. Wait until it finishes to upgrade again."; return; }; if (money < dialogTargetTower.reloadUpgradeCost){ infoTxt.text = ("You don't have enough money to upgrade. Required: " + dialogTargetTower.reloadUpgradeCost); return; }; _local2 = ((dialogTargetTower.maxReloadTime - dialogTargetTower.minReloadTime) / 4); dialogTargetTower.reloadTime = (dialogTargetTower.reloadTime - _local2); dialogTargetTower.numReloadUpgrades++; if (dialogTargetTower.numReloadUpgrades == 4){ towerDialogReloadUpgrader.upgradeBtn.highlight.visible = false; towerDialogReloadUpgrader.upgradeBtn.label.text = "MAX"; towerDialogReloadUpgrader.upgradeBtn.buttonMode = false; towerDialogReloadUpgrader.upgradeBtn.useHandCursor = false; towerDialogReloadUpgrader.upgradeBtn.removeEventListener(MouseEvent.MOUSE_OVER, upgradeBtnOver); towerDialogReloadUpgrader.upgradeBtn.removeEventListener(MouseEvent.MOUSE_OUT, upgradeBtnOut); towerDialogReloadUpgrader.upgradeBtn.removeEventListener(MouseEvent.CLICK, upgradeReload); }; money = (money - dialogTargetTower.reloadUpgradeCost); dialogTargetTower.sellValue = (dialogTargetTower.sellValue + dialogTargetTower.reloadUpgradeCost); towerDialog.sellBtn.label.text = ("Sell for " + int((dialogTargetTower.sellValue * sellValueFrac))); setStatusTextFields(); dialogTargetTower.framesLeftInUpgrade = dialogTargetTower.totalFramesToUpgrade; towerDialogReloadUpgrader.bar.scaleX = ((dialogTargetTower.reloadTime - dialogTargetTower.minReloadTime) / (dialogTargetTower.maxReloadTime - dialogTargetTower.minReloadTime)); } public function smallMissileTowerBtnClick(_arg1):void{ setupTowerFromType("missile"); } function sellTower(_arg1):void{ var _local2:int; _local2 = (dialogTargetTower.sellValue * sellValueFrac); dialogTargetTower.dead = true; money = (money + _local2); setStatusTextFields(); towerDialogClose(); if (!paused){ makeTextParticle(("+" + _local2), dialogTargetTower.x, dialogTargetTower.y); }; } public function moreGamesBtnHandler(_arg1:MouseEvent):void{ var e = _arg1; try { navigateToURL(new URLRequest("http://www.flashgamealot.com")); } catch(e) { }; } public function countMoneyTowers():int{ var _local1:int; var _local2:int; _local2 = 0; while (_local2 < towers.length) { if (towers[_local2].type == "money"){ _local1++; }; _local2++; }; return (_local1); } public function cleanUpGame():void{ var i:int; towerDialogClose(); killDraggingTower(); laserCanvas.graphics.clear(); particleCanvas.graphics.clear(); shockCanvas.graphics.clear(); rangeCanvas.graphics.clear(); lifebarCanvas.graphics.clear(); laserCanvas.visible = false; particleCanvas.visible = false; shockCanvas.visible = false; rangeCanvas.visible = false; particleContainer.visible = false; lifebarCanvas.visible = false; try { removeChild(tutorialMessage); } catch(e) { }; i = 0; while (i < creeps.length) { try { creepContainer.removeChild(creeps[i]); } catch(e) { }; i = (i + 1); }; i = 0; while (i < towers.length) { try { towerContainer.removeChild(towers[i]); } catch(e) { }; i = (i + 1); }; i = 0; while (i < missiles.length) { try { removeChild(missiles[i]); } catch(e) { }; i = (i + 1); }; i = 0; while (i < particles.length) { particles[i].dead = true; i = (i + 1); }; removeDeadParticles(); creeps = new Array(); towers = new Array(); missiles = new Array(); } public function makeParticleExplosion(_arg1:Number, _arg2:Number, _arg3:int, _arg4:Number=1, _arg5:Number=1):void{ var _local6:int; var _local7:Number; var _local8:Number; var _local9:Object; var _local10:Explosion; _local6 = 0; while (_local6 < _arg3) { _local7 = ((Math.random() * Math.PI) * 2); _local8 = ((Math.random() + 1) * 10); _local9 = {type:EXPLOSION_PARTICLE, age:0, x:(_arg1 + ((Math.sin(_local7) * _local8) * _arg5)), y:(_arg2 + ((Math.cos(_local7) * _local8) * _arg5))}; _local10 = new Explosion(); particleContainer.addChild(_local10); _local9.spr = _local10; _local10.x = _local9.x; _local10.y = _local9.y; _local10.scaleX = _arg4; _local10.scaleY = _arg4; _local10.rotation = (Math.random() * 360); particles.push(_local9); _local6++; }; } public function pauseBtnOut(_arg1):void{ menuBar.pauseBtn.bg.alpha = 1; } public function scoresErrorHandler(_arg1:String):void{ highScoresScreen.statusTxt.text = "High scores are not available right now."; } public function moneyTowerBtnOver(_arg1):void{ showInfoForTowerType("money"); } public function updateExplosionParticle(_arg1:int):void{ if (particles[_arg1].age > EXPLOSION_PARTICLE_PARTICLE_MAX_AGE){ particles[_arg1].dead = true; return; }; particles[_arg1].spr.alpha = (1 - (Number(particles[_arg1].age) / Number(EXPLOSION_PARTICLE_PARTICLE_MAX_AGE))); } function draggingTowerIsOverPath():Boolean{ var _local1:*; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = 0; while (_local1 < creepPath.length) { _local2 = (creepPath[_local1].x - stage.mouseX); _local3 = (creepPath[_local1].y - stage.mouseY); _local4 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); if (_local4 < (draggingTowerRadius + 14)){ return (true); }; _local1++; }; return (false); } public function easyBtnHandler(_arg1:MouseEvent):void{ difficultySelectScreen.visible = false; selectMapScreen.visible = true; money = 450; framesUntilSpawnCreep = 80; baseSpeedMultiplier = 0.7; scoreMultiplier = 1; life = 25; } public function drawDraggingTowerRange():void{ rangeCanvas.graphics.lineStyle(2, 0xFFFFFF, 0.35); rangeCanvas.graphics.drawCircle(stage.mouseX, stage.mouseY, towerData[draggingTowerType].range); } public function initGame():void{ try { removeChild(adContainer); } catch(e) { }; precalcUpgradeSinCosTables(); trace("stage=", stage); stage.scaleMode = StageScaleMode.SHOW_ALL; highScoreService = new LaserPirateHighScoreService(HIGH_SCORE_GAME_CODE); gameMenu = new GameMenu(); addChild(gameMenu); centerOnScreen(gameMenu); selectMapScreen = new SelectMapScreen(); addChild(selectMapScreen); selectMapScreen.visible = false; difficultySelectScreen = new SelectDifficultyScreen(); addChild(difficultySelectScreen); difficultySelectScreen.visible = false; gameOverScreen = new GameOverScreen(); addChild(gameOverScreen); centerOnScreen(gameOverScreen); gameOverScreen.visible = false; highScoresScreen = new HighScoresScreen(); addChild(highScoresScreen); centerOnScreen(highScoresScreen); highScoresScreen.visible = false; gameMenu.playNowBtn.addEventListener(MouseEvent.CLICK, playNowBtnHandler); gameMenu.moreGamesBtn.addEventListener(MouseEvent.CLICK, moreGamesBtnHandler); gameMenu.sponsorBtn.addEventListener(MouseEvent.CLICK, sponsorBtnHandler); gameOverScreen.continueBtn.addEventListener(MouseEvent.CLICK, continueBtnHandler); gameOverScreen.submitScoreBtn.addEventListener(MouseEvent.CLICK, submitScoreBtnHandler); difficultySelectScreen.easyBtn.addEventListener(MouseEvent.CLICK, easyBtnHandler); difficultySelectScreen.mediumBtn.addEventListener(MouseEvent.CLICK, mediumBtnHandler); difficultySelectScreen.hardBtn.addEventListener(MouseEvent.CLICK, hardBtnHandler); difficultySelectScreen.insaneBtn.addEventListener(MouseEvent.CLICK, insaneBtnHandler); difficultySelectScreen.sandboxBtn.addEventListener(MouseEvent.CLICK, sandboxBtnHandler); selectMapScreen.map1Btn.addEventListener(MouseEvent.CLICK, map1BtnHandler); selectMapScreen.map2Btn.addEventListener(MouseEvent.CLICK, map2BtnHandler); selectMapScreen.map3Btn.addEventListener(MouseEvent.CLICK, map3BtnHandler); selectMapScreen.map4Btn.addEventListener(MouseEvent.CLICK, map4BtnHandler); addEventListener(Event.ENTER_FRAME, updateGame); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); gameBgContainer = new Sprite(); addChild(gameBgContainer); gameBgContainer.visible = false; creepContainer = new Sprite(); towerContainer = new Sprite(); particleContainer = new Sprite(); creepContainer.mouseEnabled = false; towerContainer.mouseEnabled = false; particleContainer.mouseEnabled = false; addChild(creepContainer); addChild(towerContainer); addChild(particleContainer); rangeCanvas = new Sprite(); addChild(rangeCanvas); rangeCanvas.mouseEnabled = false; laserCanvas = new Sprite(); addChild(laserCanvas); laserCanvas.mouseEnabled = false; particleCanvas = new Sprite(); addChild(particleCanvas); particleCanvas.mouseEnabled = false; particleCanvas.filters = [new GlowFilter(16755319, 0.8, 8, 8, 4, BitmapFilterQuality.HIGH, false, false)]; shockCanvas = new Sprite(); addChild(shockCanvas); shockCanvas.mouseEnabled = false; shockCanvas.filters = [new GlowFilter(11184895, 0.5, 4, 4, 3, BitmapFilterQuality.HIGH, false, false)]; lifebarCanvas = new Sprite(); addChild(lifebarCanvas); lifebarCanvas.mouseEnabled = false; lifebarCanvas.mouseChildren = false; textContainer = new Sprite(); addChild(textContainer); textContainer.mouseEnabled = false; textContainer.mouseChildren = false; fmt.font = "Arial"; fmt.color = 0xFFFFFF; scoreTxt = new TextField(); lifeTxt = new TextField(); moneyTxt = new TextField(); waveTxt = new TextField(); infoTxt = new TextField(); scoreTxt.defaultTextFormat = fmt; lifeTxt.defaultTextFormat = fmt; moneyTxt.defaultTextFormat = fmt; waveTxt.defaultTextFormat = fmt; infoTxt.defaultTextFormat = fmt; scoreTxt.selectable = false; lifeTxt.selectable = false; moneyTxt.selectable = false; waveTxt.selectable = false; infoTxt.selectable = false; scoreTxt.embedFonts = true; lifeTxt.embedFonts = true; moneyTxt.embedFonts = true; waveTxt.embedFonts = true; infoTxt.embedFonts = true; lifeTxt.height = 20; scoreTxt.height = 20; waveTxt.height = 20; moneyTxt.height = 20; infoTxt.height = 50; lifeTxt.width = 100; waveTxt.width = 100; scoreTxt.width = 100; moneyTxt.width = 100; infoTxt.width = 544; scoreTxt.y = 8; lifeTxt.y = (scoreTxt.height + scoreTxt.y); moneyTxt.y = (lifeTxt.height + lifeTxt.y); waveTxt.y = (moneyTxt.height + moneyTxt.y); infoTxt.y = 422; infoTxt.x = 84; lifeTxt.x = 80; scoreTxt.x = 80; moneyTxt.x = 80; waveTxt.x = 80; scoreTxt.visible = false; lifeTxt.visible = false; moneyTxt.visible = false; waveTxt.visible = false; infoTxt.visible = false; infoTxt.multiline = true; infoTxt.wordWrap = true; textContainer.addChild(scoreTxt); textContainer.addChild(lifeTxt); textContainer.addChild(moneyTxt); textContainer.addChild(waveTxt); menuBar = new MenuBar(); menuBar.visible = false; addChild(menuBar); textContainer2 = new Sprite(); addChild(textContainer2); textContainer2.mouseEnabled = false; textContainer2.mouseChildren = false; textContainer2.addChild(infoTxt); menuBar.smallLaserTowerBtn.buttonMode = true; menuBar.smallSlowTowerBtn.buttonMode = true; menuBar.smallMissileTowerBtn.buttonMode = true; menuBar.moneyTowerBtn.buttonMode = true; menuBar.shockTowerBtn.buttonMode = true; menuBar.bombBtn.buttonMode = true; menuBar.lightArtilleryBtn.buttonMode = true; menuBar.launcherBtn.buttonMode = true; menuBar.pauseBtn.buttonMode = true; menuBar.smallLaserTowerBtn.useHandCursor = true; menuBar.smallSlowTowerBtn.useHandCursor = true; menuBar.smallMissileTowerBtn.useHandCursor = true; menuBar.moneyTowerBtn.useHandCursor = true; menuBar.shockTowerBtn.useHandCursor = true; menuBar.bombBtn.useHandCursor = true; menuBar.lightArtilleryBtn.useHandCursor = true; menuBar.launcherBtn.useHandCursor = true; menuBar.pauseBtn.useHandCursor = true; menuBar.pauseBtn.mouseChildren = false; menuBar.pauseBtn.resumeFlash.visible = true; menuBar.smallLaserTowerBtn.addEventListener(MouseEvent.CLICK, smallLaserTowerBtnClick); menuBar.smallSlowTowerBtn.addEventListener(MouseEvent.CLICK, smallSlowTowerBtnClick); menuBar.smallMissileTowerBtn.addEventListener(MouseEvent.CLICK, smallMissileTowerBtnClick); menuBar.moneyTowerBtn.addEventListener(MouseEvent.CLICK, moneyTowerBtnClick); menuBar.shockTowerBtn.addEventListener(MouseEvent.CLICK, shockTowerBtnClick); menuBar.bombBtn.addEventListener(MouseEvent.CLICK, bombBtnClick); menuBar.lightArtilleryBtn.addEventListener(MouseEvent.CLICK, lightArtilleryBtnClick); menuBar.launcherBtn.addEventListener(MouseEvent.CLICK, launcherBtnClick); menuBar.smallLaserTowerBtn.addEventListener(MouseEvent.MOUSE_OVER, smallLaserTowerBtnOver); menuBar.smallSlowTowerBtn.addEventListener(MouseEvent.MOUSE_OVER, smallSlowTowerBtnOver); menuBar.smallMissileTowerBtn.addEventListener(MouseEvent.MOUSE_OVER, smallMissileTowerBtnOver); menuBar.moneyTowerBtn.addEventListener(MouseEvent.MOUSE_OVER, moneyTowerBtnOver); menuBar.shockTowerBtn.addEventListener(MouseEvent.MOUSE_OVER, shockTowerBtnOver); menuBar.bombBtn.addEventListener(MouseEvent.MOUSE_OVER, bombBtnOver); menuBar.lightArtilleryBtn.addEventListener(MouseEvent.MOUSE_OVER, lightArtilleryBtnOver); menuBar.launcherBtn.addEventListener(MouseEvent.MOUSE_OVER, launcherBtnOver); menuBar.addEventListener(MouseEvent.MOUSE_OUT, menuRollOutHandler); menuBar.addEventListener(MouseEvent.CLICK, menuClickHandler); menuBar.pauseBtn.addEventListener(MouseEvent.MOUSE_OVER, pauseBtnOver); menuBar.pauseBtn.addEventListener(MouseEvent.MOUSE_OUT, pauseBtnOut); menuBar.pauseBtn.addEventListener(MouseEvent.CLICK, pauseBtnClick); menuBar.exitBtn.addEventListener(MouseEvent.CLICK, exitBtnClick); gameBgContainer.addEventListener(MouseEvent.CLICK, bgClickHandler); musicBtn = new MusicBtn(); addChild(musicBtn); musicBtn.x = ((640 - musicBtn.width) - 8); musicBtn.y = ((480 - musicBtn.height) - 8); musicBtn.addEventListener(MouseEvent.CLICK, musicBtnHandler, false, 0, true); bgMusicOn = true; bgMusic = new BgMusic(); bgMusicChannel = bgMusic.play(0, int.MAX_VALUE); mochiscoreContainer = new MochiContainer(); addChild(mochiscoreContainer); MochiServices.connect("3621fad9601a19a2", mochiscoreContainer); } public function smallLaserTowerBtnClick(_arg1):void{ setupTowerFromType("laser"); } public function creepMouseOver(_arg1:MouseEvent):void{ var _local2:Creep; _local2 = (_arg1.target as Creep); infoTxt.text = ((((((("Life: " + _local2.life) + " / ") + _local2.fullLife) + ", Speed: ") + _local2.speed) + ", Money: ") + _local2.moneyValue); } function draggingTowerIsOverTower():Boolean{ var _local1:*; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = 0; while (_local1 < towers.length) { _local2 = (towers[_local1].x - stage.mouseX); _local3 = (towers[_local1].y - stage.mouseY); _local4 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); if (_local4 < (towers[_local1].radius + draggingTowerRadius)){ return (true); }; _local1++; }; return (false); } function towerMouseOverHandler(_arg1:MouseEvent):void{ var _local2:Tower; var _local3:String; _local2 = (_arg1.target as Tower); _local2.mouseIsOver = true; _local3 = ""; _local3 = (_local3 + (towerData[_local2.type].name + " - ")); if (_local2.damage > 0){ _local3 = (_local3 + (("Damage: " + _local2.damage) + " ")); }; if (_local2.range > 0){ _local3 = (_local3 + (("Range: " + _local2.range) + " ")); }; if (_local2.reloadTime > 0){ _local3 = (_local3 + (("Reload Time: " + _local2.reloadTime) + " ")); }; if (_local2.splashRadius > 0){ _local3 = (_local3 + (("Splash: " + _local2.splashRadius) + " ")); }; _local3 = (_local3 + "\nClick on the tower to upgrade or sell it."); infoTxt.text = _local3; } public function removeDeadMissiles():void{ var _local1:Array; var _local2:int; _local1 = new Array(); _local2 = 0; while (_local2 < missiles.length) { if (missiles[_local2].dead){ removeChild(missiles[_local2]); } else { _local1.push(missiles[_local2]); }; _local2++; }; missiles = _local1; } public function shockTowerBtnClick(_arg1):void{ setupTowerFromType("shock"); } public function map3BtnHandler(_arg1:MouseEvent):void{ creepPath = [{x:477, y:-18}, {x:475, y:1}, {x:475, y:17}, {x:469, y:29}, {x:464, y:39}, {x:460, y:50}, {x:453, y:65}, {x:454, y:77}, {x:449, y:92}, {x:449, y:110}, {x:449, y:124}, {x:455, y:142}, {x:461, y:156}, {x:467, y:172}, {x:469, y:192}, {x:471, y:207}, {x:471, y:219}, {x:471, y:237}, {x:473, y:250}, {x:472, y:266}, {x:473, y:284}, {x:474, y:299}, {x:474, y:317}, {x:474, y:331}, {x:472, y:347}, {x:469, y:364}, {x:457, y:378}, {x:445, y:391}, {x:427, y:393}, {x:407, y:398}, {x:387, y:404}, {x:370, y:406}, {x:353, y:411}, {x:328, y:415}, {x:305, y:414}, {x:286, y:411}, {x:270, y:409}, {x:248, y:409}, {x:236, y:407}, {x:226, y:400}, {x:211, y:398}, {x:197, y:393}, {x:188, y:389}, {x:180, y:381}, {x:174, y:375}, {x:168, y:365}, {x:162, y:355}, {x:157, y:347}, {x:154, y:336}, {x:150, y:326}, {x:150, y:316}, {x:150, y:308}, {x:153, y:297}, {x:149, y:282}, {x:148, y:268}, {x:147, y:254}, {x:148, y:240}, {x:159, y:229}, {x:169, y:216}, {x:179, y:206}, {x:186, y:199}, {x:194, y:195}, {x:206, y:191}, {x:218, y:187}, {x:225, y:185}, {x:234, y:184}, {x:247, y:184}, {x:259, y:184}, {x:270, y:185}, {x:282, y:179}, {x:295, y:174}, {x:309, y:170}, {x:322, y:172}, {x:340, y:171}, {x:362, y:171}, {x:376, y:170}, {x:392, y:169}, {x:404, y:168}, {x:414, y:169}, {x:428, y:172}, {x:440, y:173}, {x:456, y:172}, {x:470, y:171}, {x:483, y:169}, {x:492, y:169}, {x:500, y:171}, {x:0x0200, y:171}, {x:521, y:171}, {x:530, y:174}, {x:541, y:174}, {x:555, y:174}, {x:565, y:175}, {x:575, y:176}, {x:589, y:177}, {x:597, y:178}, {x:604, y:179}, {x:615, y:183}, {x:625, y:183}, {x:636, y:185}, {x:646, y:185}]; currBG = new Map3(); gameBgContainer.addChild(currBG); selectMapScreen.visible = false; startGame(); } function sellBtnOut(_arg1):void{ towerDialog.sellBtn.highlight.visible = false; } public function bombBtnClick(_arg1):void{ setupTowerFromType("bomb"); } public function drawCreepLifeBars():void{ var _local1:int; var _local2:Number; _local1 = 0; while (_local1 < creeps.length) { _local2 = Math.max(0, (creeps[_local1].life / creeps[_local1].fullLife)); lifebarCanvas.graphics.lineStyle(3, 0xFF00, 0.5); lifebarCanvas.graphics.moveTo((creeps[_local1].x + 10), (creeps[_local1].y - 10)); lifebarCanvas.graphics.lineTo(((creeps[_local1].x + (_local2 * 20)) + 10), (creeps[_local1].y - 10)); lifebarCanvas.graphics.lineStyle(3, 0x990000, 0.3); lifebarCanvas.graphics.lineTo(((creeps[_local1].x + 20) + 10), (creeps[_local1].y - 10)); _local1++; }; } function musicBtnHandler(_arg1):void{ if (bgMusicOn){ bgMusicChannel.stop(); } else { bgMusicChannel = bgMusic.play(0, int.MAX_VALUE); }; bgMusicOn = !(bgMusicOn); } public function continueBtnHandler(_arg1=null):void{ gameMenu.visible = true; gameOverScreen.visible = false; highScoresScreen.visible = false; } public function makeBladeParticle(_arg1:int, _arg2:int):void{ var _local3:Object; var _local4:Blade; _local3 = {type:BLADE_PARTICLE, age:0, x:towers[_arg1].x, y:towers[_arg1].y, vx:0, vy:10, targetCreepIndex:_arg2, damage:towers[_arg1].damage}; _local4 = new Blade(); particleContainer.addChild(_local4); _local3.spr = _local4; _local4.x = _local3.x; _local4.y = _local3.y; _local4.rotation = (Math.random() * 360); particles.push(_local3); } public function submitScore(_arg1:String, _arg2:int):void{ gameOverScreen.visible = false; highScoresScreen.visible = true; highScoresScreen.statusTxt.text = "Connecting to High Scores..."; MochiScores.showLeaderboard({boardID:"e1c993e77287adc6", score:_arg2, name:_arg1, onClose:continueToGameMenu, onError:continueToGameMenu}); } public function startGame():void{ musicBtn.x = 80; musicBtn.y = 390; currCreepWave = 0; creepsToSpawnThisWave = creepWaveData[currCreepWave].numCreepsInWave; creeps = new Array(); gameOn = true; paused = true; menuBar.pauseBtn.label.text = "RESUME"; menuBar.pauseBtn.resumeFlash.visible = true; tutorialMessage = new GameTutorialMessage(); addChild(tutorialMessage); tutorialMessage.x = 320; tutorialMessage.y = 240; tutorialMessage.mouseEnabled = false; tutorialMessage.mouseChildren = false; scoreTxt.visible = true; lifeTxt.visible = true; infoTxt.visible = true; menuBar.visible = true; moneyTxt.visible = true; waveTxt.visible = true; gameBgContainer.visible = true; laserCanvas.visible = true; particleCanvas.visible = true; shockCanvas.visible = true; rangeCanvas.visible = true; lifebarCanvas.visible = true; particleContainer.visible = true; score = 0; setStatusTextFields(); infoTxt.text = "Welcome to Omega Tower Defense. Click a tower in the menu bar to select it, then click again to build it. Don't let the creeps get to their destination."; } public function lightArtilleryBtnClick(_arg1):void{ setupTowerFromType("artillery"); } public function sandboxBtnHandler(_arg1:MouseEvent):void{ difficultySelectScreen.visible = false; selectMapScreen.visible = true; money = 100000; framesUntilSpawnCreep = 50; baseSpeedMultiplier = 1; scoreMultiplier = 0; life = 20; } public function PL_CONTINUE(_arg1:Event){ this.loaderInfo.removeEventListener(Event.COMPLETE, PL_CONTINUE); this.gotoAndPlay(2); } public function bgClickHandler(_arg1:MouseEvent):void{ var isOverPath:Boolean; var t:Tower; var e = _arg1; towerDialogClose(); try { removeChild(tutorialMessage); } catch(e) { }; if (!draggingTower){ return; }; isOverPath = draggingTowerIsOverPath(); if (draggingTowerTypeCostToBuy > money){ infoTxt.text = (("You don't have enough money to buy that. Required: " + draggingTowerTypeCostToBuy) + "\nPress the space key to cancel this tower."); return; }; if (((!((draggingTowerType == "bomb"))) && (isOverPath))){ infoTxt.text = ("You cannot build a tower on top of the creep path." + "\nPress the space key to cancel this tower."); return; }; if (draggingTowerIsOverTower()){ infoTxt.text = ("You cannot build a tower on top of another tower." + "\nPress the space key to cancel this tower."); return; }; money = (money - draggingTowerTypeCostToBuy); setStatusTextFields(); t = new Tower(); towerContainer.addChild(t); towers.push(t); towerContainer.removeChild(draggingTowerPreview); draggingTowerPreview.x = 0; draggingTowerPreview.y = 0; t.sellValue = draggingTowerTypeCostToBuy; t.spr = draggingTowerPreview; t.addChild(t.spr); t.type = draggingTowerType; t.rangeUpgradeCost = towerData[t.type].rangeUpgradeCost; t.range = towerData[t.type].range; t.minRange = towerData[t.type].range; t.maxRange = towerData[t.type].maxRange; t.damageUpgradeCost = towerData[t.type].damageUpgradeCost; t.damage = towerData[t.type].damage; t.minDamage = towerData[t.type].damage; t.maxDamage = towerData[t.type].maxDamage; t.reloadUpgradeCost = towerData[t.type].reloadUpgradeCost; t.reloadTime = towerData[t.type].reloadTime; t.minReloadTime = towerData[t.type].minReloadTime; t.maxReloadTime = towerData[t.type].reloadTime; t.slowdownCoef = 0.85; t.splashRadius = -1; if (towerData[t.type].splashRadius){ t.splashRadius = towerData[t.type].splashRadius; }; t.radius = draggingTowerRadius; t.createdFrameCounter = frameCounter; t.x = stage.mouseX; t.y = stage.mouseY; t.buttonMode = true; t.useHandCursor = true; t.addEventListener(MouseEvent.MOUSE_OVER, towerMouseOverHandler, false, 0, true); t.addEventListener(MouseEvent.MOUSE_OUT, towerMouseOutHandler, false, 0, true); t.addEventListener(MouseEvent.CLICK, towerClickHandler, false, 0, true); draggingTowerPreview.alpha = 1; draggingTower = false; if (e.shiftKey){ setupTowerFromType(draggingTowerType); }; } public function launcherBtnOver(_arg1):void{ showInfoForTowerType("launcher"); } public function menuClickHandler(_arg1):void{ if (_arg1.target == menuBar){ killDraggingTower(); }; } public function map1BtnHandler(_arg1:MouseEvent):void{ creepPath = [{x:150, y:1}, {x:149, y:16}, {x:148, y:33}, {x:140, y:48}, {x:136, y:68}, {x:143, y:91}, {x:152, y:104}, {x:163, y:114}, {x:171, y:126}, {x:175, y:141}, {x:184, y:147}, {x:196, y:154}, {x:199, y:169}, {x:194, y:181}, {x:186, y:195}, {x:176, y:202}, {x:162, y:205}, {x:150, y:208}, {x:137, y:214}, {x:129, y:224}, {x:128, y:234}, {x:120, y:248}, {x:117, y:259}, {x:112, y:272}, {x:113, y:284}, {x:116, y:296}, {x:130, y:301}, {x:144, y:306}, {x:158, y:307}, {x:170, y:317}, {x:186, y:319}, {x:203, y:316}, {x:214, y:312}, {x:228, y:306}, {x:248, y:303}, {x:264, y:304}, {x:277, y:307}, {x:290, y:311}, {x:299, y:324}, {x:302, y:337}, {x:299, y:349}, {x:298, y:363}, {x:297, y:381}, {x:304, y:395}, {x:308, y:404}, {x:316, y:414}, {x:327, y:423}, {x:345, y:430}, {x:361, y:430}, {x:385, y:431}, {x:402, y:427}, {x:423, y:416}, {x:436, y:404}, {x:450, y:396}, {x:455, y:379}, {x:459, y:362}, {x:460, y:346}, {x:460, y:327}, {x:458, y:310}, {x:452, y:297}, {x:448, y:281}, {x:446, y:270}, {x:457, y:262}, {x:471, y:259}, {x:487, y:0x0101}, {x:505, y:259}, {x:520, y:261}, {x:537, y:264}, {x:552, y:259}, {x:566, y:249}, {x:577, y:240}, {x:585, y:228}, {x:590, y:216}, {x:593, y:200}, {x:594, y:179}, {x:592, y:165}, {x:593, y:148}, {x:590, y:125}, {x:588, y:109}, {x:601, y:100}, {x:610, y:82}, {x:603, y:60}, {x:586, y:46}, {x:575, y:36}, {x:575, y:27}, {x:575, y:7}, {x:575, y:2}]; currBG = new Map1(); gameBgContainer.addChild(currBG); selectMapScreen.visible = false; startGame(); } public function removeDeadTowers():void{ var _local1:Array; var _local2:int; _local1 = new Array(); _local2 = 0; while (_local2 < towers.length) { if (towers[_local2].dead){ towerContainer.removeChild(towers[_local2]); } else { _local1.push(towers[_local2]); }; _local2++; }; towers = _local1; } public function updateCreeps():void{ var _local1:int; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = 0; while (_local1 < creeps.length) { _local2 = (creepPath[creeps[_local1].targetCheckPoint].x - creeps[_local1].x); _local3 = (creepPath[creeps[_local1].targetCheckPoint].y - creeps[_local1].y); _local4 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); _local2 = (_local2 / _local4); _local3 = (_local3 / _local4); creeps[_local1].x = (creeps[_local1].x + ((_local2 * creeps[_local1].speed) * creeps[_local1].speedMultiplier)); creeps[_local1].y = (creeps[_local1].y + ((_local3 * creeps[_local1].speed) * creeps[_local1].speedMultiplier)); creeps[_local1].rotation = ((Math.atan2(_local3, _local2) * 180) / Math.PI); if (_local4 < CREEP_DIST_TO_REACH_CHECKPOINT){ creeps[_local1].targetCheckPoint++; if (creeps[_local1].targetCheckPoint >= creepPath.length){ creeps[_local1].dead = true; creepEscaped(); if (life == 0){ return; }; }; }; _local1++; }; removeDeadCreeps(); } function upgradeBtnOver(_arg1:MouseEvent):void{ _arg1.target.highlight.visible = true; } public function creepEscaped():void{ life = (life - 1); setStatusTextFields(); if (life == 0){ gameOver(score); }; } public function shockTowerBtnOver(_arg1):void{ showInfoForTowerType("shock"); } public function menuRollOutHandler(_arg1):void{ if (_arg1.target == menuBar){ setDefaultInfoTxt(); }; } public function moneyTowerBtnClick(_arg1):void{ setupTowerFromType("money"); } public function PL_LOADING(_arg1:ProgressEvent){ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = Math.round((_arg1.bytesLoaded / 0x0400)); _local3 = Math.round((_arg1.bytesTotal / 0x0400)); _local4 = Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100)); loadingBar_mc.scaleX = (_local4 / 100); if (_local4 == 100){ this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, PL_LOADING); }; } public function smallSlowTowerBtnOver(_arg1):void{ showInfoForTowerType("slow"); } public function showMochiAd():void{ adContainer = new MochiContainer(); addChild(adContainer); MochiAd.showPreGameAd({clip:adContainer, id:"3621fad9601a19a2", res:"640x480", ad_finished:initGame}); removeChild(sponsorLogo); } public function drawMouseOverTowerRange():void{ var _local1:int; var _local2:Boolean; drawMouseOverTowerRangeCurr = ((drawMouseOverTowerRangeCurr * 0.6) + (drawMouseOverTowerRangeTarget * 0.4)); drawMouseOverTowerAlpha = ((drawMouseOverTowerAlpha * 0.6) + (drawMouseOverTowerAlphaTarget * 0.4)); if (draggingTower){ return; }; if (towerDialogIsOpen){ _local1 = 0; while (_local1 < towers.length) { towers[_local1].mouseIsOver = false; _local1++; }; dialogTargetTower.mouseIsOver = true; }; _local2 = false; drawMouseOverTowerAlphaTarget = 0; rangeCanvas.graphics.lineStyle(2, 0xFFFFFF, drawMouseOverTowerAlpha); _local1 = 0; while (_local1 < towers.length) { if (!towers[_local1].mouseIsOver){ } else { drawMouseOverTowerRangeTarget = towers[_local1].range; drawMouseOverTowerRangeX = towers[_local1].x; drawMouseOverTowerRangeY = towers[_local1].y; drawMouseOverTowerAlphaTarget = 0.25; _local2 = true; }; _local1++; }; rangeCanvas.graphics.drawCircle(drawMouseOverTowerRangeX, drawMouseOverTowerRangeY, drawMouseOverTowerRangeCurr); if (!_local2){ drawMouseOverTowerRangeTarget = 0; }; } public function drawCreepPath():void{ var _local1:int; creepPathCavas.graphics.clear(); creepPathCavas.graphics.lineStyle(0, 0xFFFFFF, 0.3); creepPathCavas.graphics.moveTo(creepPath[0].x, creepPath[0].y); _local1 = 0; while (_local1 < creepPath.length) { creepPathCavas.graphics.lineTo(creepPath[_local1].x, creepPath[_local1].y); _local1++; }; } public function smallMissileTowerBtnOver(_arg1):void{ showInfoForTowerType("missile"); } public function updateParticles():void{ var _local1:int; _local1 = 0; while (_local1 < particles.length) { particles[_local1].age++; if (particles[_local1].type == BLADE_PARTICLE){ updateBladeParticle(_local1); }; if (particles[_local1].type == EXPLOSION_PARTICLE){ updateExplosionParticle(_local1); }; if (particles[_local1].type == TEXT_PARTICLE){ updateTextParticle(_local1); }; _local1++; }; removeDeadParticles(); } public function smallSlowTowerBtnClick(_arg1):void{ setupTowerFromType("slow"); } public function playNowBtnHandler(_arg1:MouseEvent):void{ gameMenu.visible = false; difficultySelectScreen.visible = true; } public function updateMissiles():void{ var _local1:int; var _local2:int; var _local3:Number; var _local4:Number; _local1 = 0; while (_local1 < missiles.length) { missiles[_local1].x = (missiles[_local1].x + missiles[_local1].vx); missiles[_local1].y = (missiles[_local1].y + missiles[_local1].vy); laserCanvas.graphics.lineStyle(3, 0xFFFFFF, 0.8); laserCanvas.graphics.moveTo(missiles[_local1].x, missiles[_local1].y); laserCanvas.graphics.lineTo((missiles[_local1].x + missiles[_local1].vx), (missiles[_local1].y + missiles[_local1].vy)); _local2 = 0; while (_local2 < creeps.length) { if ((((((((missiles[_local1].x < -10)) || ((missiles[_local1].y < -10)))) || ((missiles[_local1].x > 650)))) || ((missiles[_local1].y > 490)))){ missiles[_local1].dead = true; } else { _local3 = (missiles[_local1].x - creeps[_local2].x); _local4 = (missiles[_local1].y - creeps[_local2].y); if (((_local3 * _local3) + (_local4 * _local4)) < (missiles[_local1].splashRadius * missiles[_local1].splashRadius)){ missiles[_local1].dead = true; damageCreep(_local2, missiles[_local1].damage); }; }; _local2++; }; _local1++; }; removeDeadMissiles(); } public function map4BtnHandler(_arg1:MouseEvent):void{ creepPath = [{x:164, y:-5}, {x:169, y:6}, {x:172, y:13}, {x:176, y:21}, {x:180, y:32}, {x:186, y:43}, {x:191, y:53}, {x:197, y:57}, {x:206, y:62}, {x:211, y:66}, {x:221, y:74}, {x:231, y:82}, {x:239, y:93}, {x:244, y:101}, {x:252, y:108}, {x:258, y:112}, {x:266, y:119}, {x:273, y:127}, {x:278, y:132}, {x:286, y:141}, {x:291, y:151}, {x:300, y:161}, {x:312, y:171}, {x:320, y:181}, {x:327, y:190}, {x:339, y:191}, {x:344, y:203}, {x:350, y:217}, {x:352, y:229}, {x:351, y:239}, {x:351, y:239}, {x:351, y:250}, {x:354, y:260}, {x:360, y:269}, {x:369, y:279}, {x:377, y:289}, {x:383, y:297}, {x:388, y:303}, {x:397, y:313}, {x:403, y:324}, {x:414, y:332}, {x:423, y:343}, {x:431, y:352}, {x:448, y:361}, {x:461, y:368}, {x:479, y:372}, {x:491, y:371}, {x:507, y:370}, {x:517, y:377}, {x:531, y:383}, {x:547, y:382}, {x:558, y:378}, {x:566, y:376}, {x:575, y:375}, {x:588, y:371}, {x:597, y:367}, {x:610, y:365}, {x:617, y:365}, {x:628, y:367}, {x:641, y:367}, {x:646, y:368}]; currBG = new Map4(); gameBgContainer.addChild(currBG); selectMapScreen.visible = false; startGame(); } } }//package import flash.display.*; dynamic class MochiContainer extends MovieClip { private function MochiContainer(){ } }
Section 45
//SelectDifficultyScreen (SelectDifficultyScreen) package { import flash.display.*; public dynamic class SelectDifficultyScreen extends Sprite { public var sandboxBtn:SimpleButton; public var hardBtn:SimpleButton; public var mediumBtn:SimpleButton; public var insaneBtn:SimpleButton; public var easyBtn:SimpleButton; } }//package
Section 46
//SelectMapScreen (SelectMapScreen) package { import flash.display.*; public dynamic class SelectMapScreen extends Sprite { public var map2Btn:SimpleButton; public var map3Btn:SimpleButton; public var map1Btn:SimpleButton; public var map4Btn:SimpleButton; } }//package
Section 47
//ShockTower (ShockTower) package { import flash.display.*; public dynamic class ShockTower extends Sprite { } }//package
Section 48
//SmallLaserTower (SmallLaserTower) package { import flash.display.*; public dynamic class SmallLaserTower extends MovieClip { public var glow:MovieClip; } }//package
Section 49
//SmallMissileTower (SmallMissileTower) package { import flash.display.*; public dynamic class SmallMissileTower extends Sprite { public var turret:MovieClip; } }//package
Section 50
//SmallSlowTower (SmallSlowTower) package { import flash.display.*; public dynamic class SmallSlowTower extends Sprite { } }//package
Section 51
//StatBar (StatBar) package { import flash.display.*; public dynamic class StatBar extends Sprite { } }//package
Section 52
//StatUpgrader (StatUpgrader) package { import flash.display.*; import flash.text.*; public dynamic class StatUpgrader extends Sprite { public var bar:StatBar; public var maxTxt:TextField; public var upgradeBtn:MovieClip; public var minTxt:TextField; public var labelTxt:TextField; } }//package
Section 53
//Tower (Tower) package { import flash.display.*; public class Tower extends Sprite { public var reloadTime:Number; public var minRange:Number; public var damageUpgradeCost:int; public var maxDamage:Number; public var mouseIsOver:Boolean;// = true public var totalFramesToUpgrade:int;// = 60 public var sellValue:int; public var type:String; public var range:Number; public var maxRange:Number; public var numRangeUpgrades:int;// = 0 public var dead:Boolean;// = false public var damage:Number;// = 0 public var minDamage:Number; public var maxReloadTime:Number; public var radius:Number; public var rangeUpgradeCost:int; public var reloadUpgradeCost:int; public var spr:Sprite; public var framesUntilFire:int; public var numDamageUpgrades:int;// = 0 public var numReloadUpgrades:int;// = 0 public var slowdownCoef:Number; public var residualFrames:int; public var createdFrameCounter:int; public var splashRadius:Number;// = 10 public var framesLeftInUpgrade:int;// = 0 public var bombCounter:int;// = 60 public var minReloadTime:Number; public function Tower(){ damage = 0; splashRadius = 10; dead = false; mouseIsOver = true; bombCounter = 60; numRangeUpgrades = 0; numDamageUpgrades = 0; numReloadUpgrades = 0; totalFramesToUpgrade = 60; framesLeftInUpgrade = 0; super(); framesUntilFire = 0; residualFrames = 0; } } }//package
Section 54
//TowerDialog (TowerDialog) package { import flash.display.*; public dynamic class TowerDialog extends Sprite { public var closeBtn:SimpleButton; public var bg:TowerDialogBg; public var sellBtn:MovieClip; } }//package
Section 55
//TowerDialogBg (TowerDialogBg) package { import flash.display.*; public dynamic class TowerDialogBg extends Sprite { } }//package

Library Items

Symbol 1 Font {Arial}Used by:32 38 49 50 56 96 99 149 151 156 157 162 163 165 191 197 202 207 212 215
Symbol 2 GraphicUsed by:3 5
Symbol 3 MovieClipUses:2Used by:5
Symbol 4 GraphicUsed by:5
Symbol 5 Button {MusicBtn}Uses:3 4 2
Symbol 6 BitmapUsed by:7 169 188
Symbol 7 GraphicUses:6Used by:40 55 59
Symbol 8 BitmapUsed by:9
Symbol 9 GraphicUses:8Used by:22 217
Symbol 10 BitmapUsed by:11
Symbol 11 GraphicUses:10Used by:22 217
Symbol 12 BitmapUsed by:13
Symbol 13 GraphicUses:12Used by:22 217
Symbol 14 BitmapUsed by:15
Symbol 15 GraphicUses:14Used by:22 217
Symbol 16 BitmapUsed by:17
Symbol 17 GraphicUses:16Used by:22 217
Symbol 18 BitmapUsed by:19
Symbol 19 GraphicUses:18Used by:22 217
Symbol 20 BitmapUsed by:21
Symbol 21 GraphicUses:20Used by:22 217
Symbol 22 MovieClip {OmegaTowerDefense2_fla.ExplosionLoop_9}Uses:9 11 13 15 17 19 21Used by:40  Timeline
Symbol 23 BitmapUsed by:24
Symbol 24 GraphicUses:23Used by:25
Symbol 25 MovieClipUses:24Used by:40
Symbol 26 BitmapUsed by:27
Symbol 27 GraphicUses:26Used by:28 29
Symbol 28 MovieClipUses:27Used by:29
Symbol 29 ButtonUses:27 28Used by:40
Symbol 30 BitmapUsed by:31
Symbol 31 GraphicUses:30Used by:33 34
Symbol 32 EditableTextUses:1Used by:34
Symbol 33 MovieClipUses:31Used by:34
Symbol 34 ButtonUses:31 32 33Used by:40
Symbol 35 BitmapUsed by:36
Symbol 36 GraphicUses:35Used by:37 39
Symbol 37 MovieClipUses:36Used by:39
Symbol 38 EditableTextUses:1Used by:39
Symbol 39 ButtonUses:37 38 36Used by:40  Timeline
Symbol 40 MovieClip {GameMenu}Uses:7 22 25 29 34 39
Symbol 41 BitmapUsed by:42
Symbol 42 GraphicUses:41Used by:43 44
Symbol 43 MovieClipUses:42Used by:44
Symbol 44 ButtonUses:42 43Used by:55
Symbol 45 BitmapUsed by:46
Symbol 46 GraphicUses:45Used by:47 48
Symbol 47 MovieClipUses:46Used by:48
Symbol 48 ButtonUses:46 47Used by:55
Symbol 49 EditableTextUses:1Used by:55
Symbol 50 EditableTextUses:1Used by:55
Symbol 51 BitmapUsed by:54
Symbol 52 BitmapUsed by:54
Symbol 53 BitmapUsed by:54
Symbol 54 GraphicUses:51 52 53Used by:55
Symbol 55 MovieClip {GameOverScreen}Uses:7 44 48 49 50 54
Symbol 56 EditableTextUses:1Used by:59
Symbol 57 BitmapUsed by:58
Symbol 58 GraphicUses:57Used by:59
Symbol 59 MovieClip {HighScoresScreen}Uses:7 56 58
Symbol 60 GraphicUsed by:102
Symbol 61 GraphicUsed by:62
Symbol 62 MovieClip {TowerDialogBg}Uses:61Used by:102 154 167
Symbol 63 BitmapUsed by:64
Symbol 64 GraphicUses:63Used by:68
Symbol 65 BitmapUsed by:66
Symbol 66 GraphicUses:65Used by:67
Symbol 67 MovieClipUses:66Used by:68
Symbol 68 MovieClip {SmallLaserTower}Uses:64 67Used by:102
Symbol 69 BitmapUsed by:70
Symbol 70 GraphicUses:69Used by:71
Symbol 71 MovieClip {SmallSlowTower}Uses:70Used by:102
Symbol 72 BitmapUsed by:73
Symbol 73 GraphicUses:72Used by:77
Symbol 74 BitmapUsed by:75
Symbol 75 GraphicUses:74Used by:76
Symbol 76 MovieClipUses:75Used by:77
Symbol 77 MovieClip {SmallMissileTower}Uses:73 76Used by:102
Symbol 78 BitmapUsed by:79
Symbol 79 GraphicUses:78Used by:80
Symbol 80 MovieClip {Bomb}Uses:79Used by:102
Symbol 81 BitmapUsed by:82
Symbol 82 GraphicUses:81Used by:83
Symbol 83 MovieClip {LightArtillery}Uses:82Used by:102
Symbol 84 BitmapUsed by:85
Symbol 85 GraphicUses:84Used by:86
Symbol 86 MovieClip {MoneyTower}Uses:85Used by:102
Symbol 87 BitmapUsed by:88
Symbol 88 GraphicUses:87Used by:89
Symbol 89 MovieClip {ShockTower}Uses:88Used by:102
Symbol 90 BitmapUsed by:91
Symbol 91 GraphicUses:90Used by:92
Symbol 92 MovieClip {BladeLauncher}Uses:91Used by:102
Symbol 93 GraphicUsed by:97
Symbol 94 GraphicUsed by:95
Symbol 95 MovieClipUses:94Used by:97
Symbol 96 EditableTextUses:1Used by:97
Symbol 97 MovieClip {OmegaTowerDefense2_fla.PauseBtn_66}Uses:93 95 96Used by:102
Symbol 98 GraphicUsed by:101
Symbol 99 EditableTextUses:1Used by:101
Symbol 100 GraphicUsed by:101
Symbol 101 ButtonUses:98 99 100Used by:102
Symbol 102 MovieClip {MenuBar}Uses:60 62 68 71 77 80 83 86 89 92 97 101
Symbol 103 BitmapUsed by:104
Symbol 104 GraphicUses:103Used by:105
Symbol 105 MovieClip {Creep_Bubble}Uses:104
Symbol 106 BitmapUsed by:107
Symbol 107 GraphicUses:106Used by:108
Symbol 108 MovieClip {Creep_4Ball}Uses:107
Symbol 109 BitmapUsed by:110
Symbol 110 GraphicUses:109Used by:111
Symbol 111 MovieClip {Creep_Biter}Uses:110
Symbol 112 BitmapUsed by:113
Symbol 113 GraphicUses:112Used by:114
Symbol 114 MovieClip {Creep_Flyer}Uses:113
Symbol 115 BitmapUsed by:116
Symbol 116 GraphicUses:115Used by:117
Symbol 117 MovieClip {Creep_Segment}Uses:116
Symbol 118 BitmapUsed by:119
Symbol 119 GraphicUses:118Used by:120
Symbol 120 MovieClip {Creep_Skull}Uses:119
Symbol 121 BitmapUsed by:122
Symbol 122 GraphicUses:121Used by:123
Symbol 123 MovieClip {Creep_Spider}Uses:122
Symbol 124 BitmapUsed by:125
Symbol 125 GraphicUses:124Used by:126
Symbol 126 MovieClip {Creep_WormBody}Uses:125
Symbol 127 BitmapUsed by:128
Symbol 128 GraphicUses:127Used by:129
Symbol 129 MovieClip {Creep_WormHead}Uses:128
Symbol 130 BitmapUsed by:131
Symbol 131 GraphicUses:130Used by:132
Symbol 132 MovieClip {Creep_PodMonster}Uses:131
Symbol 133 BitmapUsed by:134
Symbol 134 GraphicUses:133Used by:135
Symbol 135 MovieClip {Creep_Brain}Uses:134
Symbol 136 BitmapUsed by:137
Symbol 137 GraphicUses:136Used by:138
Symbol 138 MovieClip {Creep_Eye}Uses:137
Symbol 139 BitmapUsed by:140
Symbol 140 GraphicUses:139Used by:141
Symbol 141 MovieClip {Creep_Spiker}Uses:140
Symbol 142 BitmapUsed by:143
Symbol 143 GraphicUses:142Used by:144
Symbol 144 MovieClip {BladeImg}Uses:143Used by:145
Symbol 145 MovieClip {Blade}Uses:144
Symbol 146 GraphicUsed by:150 153 158
Symbol 147 GraphicUsed by:148
Symbol 148 MovieClipUses:147Used by:150 158
Symbol 149 EditableTextUses:1Used by:150
Symbol 150 MovieClip {OmegaTowerDefense2_fla.SellBtn_38}Uses:146 148 149Used by:154
Symbol 151 EditableTextUses:1Used by:153
Symbol 152 GraphicUsed by:153
Symbol 153 ButtonUses:146 151 152Used by:154
Symbol 154 MovieClip {TowerDialog}Uses:62 150 153
Symbol 155 GraphicUsed by:164
Symbol 156 EditableTextUses:1Used by:164
Symbol 157 EditableTextUses:1Used by:158
Symbol 158 MovieClip {OmegaTowerDefense2_fla.UpgradeBtn_35}Uses:146 148 157Used by:164
Symbol 159 GraphicUsed by:160
Symbol 160 MovieClip {StatBar}Uses:159Used by:164
Symbol 161 GraphicUsed by:164
Symbol 162 EditableTextUses:1Used by:164
Symbol 163 EditableTextUses:1Used by:164
Symbol 164 MovieClip {StatUpgrader}Uses:155 156 158 160 161 162 163
Symbol 165 EditableTextUses:1Used by:167
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClip {GameTutorialMessage}Uses:62 165 166
Symbol 168 BitmapUsed by:169
Symbol 169 GraphicUses:168 6Used by:186
Symbol 170 BitmapUsed by:171
Symbol 171 GraphicUses:170Used by:172 173
Symbol 172 MovieClipUses:171Used by:173
Symbol 173 ButtonUses:172 171Used by:186
Symbol 174 BitmapUsed by:175
Symbol 175 GraphicUses:174Used by:176 177
Symbol 176 MovieClipUses:175Used by:177
Symbol 177 ButtonUses:176 175Used by:186
Symbol 178 BitmapUsed by:179
Symbol 179 GraphicUses:178Used by:180 181
Symbol 180 MovieClipUses:179Used by:181
Symbol 181 ButtonUses:180 179Used by:186
Symbol 182 BitmapUsed by:183
Symbol 183 GraphicUses:182Used by:184 185
Symbol 184 MovieClipUses:183Used by:185
Symbol 185 ButtonUses:184 183Used by:186
Symbol 186 MovieClip {SelectMapScreen}Uses:169 173 177 181 185
Symbol 187 BitmapUsed by:188
Symbol 188 GraphicUses:187 6Used by:214
Symbol 189 BitmapUsed by:190
Symbol 190 GraphicUses:189Used by:192 193
Symbol 191 EditableTextUses:1Used by:193
Symbol 192 MovieClipUses:190Used by:193
Symbol 193 ButtonUses:190 191 192Used by:214
Symbol 194 BitmapUsed by:195
Symbol 195 GraphicUses:194Used by:196 198
Symbol 196 MovieClipUses:195Used by:198
Symbol 197 EditableTextUses:1Used by:198
Symbol 198 ButtonUses:196 197 195Used by:214
Symbol 199 BitmapUsed by:200
Symbol 200 GraphicUses:199Used by:201 203
Symbol 201 MovieClipUses:200Used by:203
Symbol 202 EditableTextUses:1Used by:203
Symbol 203 ButtonUses:201 202 200Used by:214
Symbol 204 BitmapUsed by:205
Symbol 205 GraphicUses:204Used by:206 208
Symbol 206 MovieClipUses:205Used by:208
Symbol 207 EditableTextUses:1Used by:208
Symbol 208 ButtonUses:206 207 205Used by:214
Symbol 209 BitmapUsed by:210
Symbol 210 GraphicUses:209Used by:211 213
Symbol 211 MovieClipUses:210Used by:213
Symbol 212 EditableTextUses:1Used by:213
Symbol 213 ButtonUses:211 212 210Used by:214
Symbol 214 MovieClip {SelectDifficultyScreen}Uses:188 193 198 203 208 213
Symbol 215 EditableTextUses:1Used by:216
Symbol 216 MovieClip {NotAllowed}Uses:215
Symbol 217 MovieClip {Explosion}Uses:9 11 13 15 17 19 21Used by:Timeline
Symbol 218 GraphicUsed by:219
Symbol 219 MovieClipUses:218Used by:Timeline
Symbol 220 BitmapUsed by:221
Symbol 221 GraphicUses:220Used by:222
Symbol 222 MovieClip {Map1}Uses:221Used by:Timeline
Symbol 223 BitmapUsed by:224
Symbol 224 GraphicUses:223Used by:225
Symbol 225 MovieClip {Map2}Uses:224Used by:Timeline
Symbol 226 BitmapUsed by:227
Symbol 227 GraphicUses:226Used by:228
Symbol 228 MovieClip {Map3}Uses:227Used by:Timeline
Symbol 229 BitmapUsed by:230
Symbol 230 GraphicUses:229Used by:231
Symbol 231 MovieClip {Map4}Uses:230Used by:Timeline
Symbol 232 Sound {BgMusic}Used by:Timeline

Instance Names

"loadingBar_mc"Frame 1Symbol 219 MovieClip
"sponsorLogo"Frame 1Symbol 39 Button
"playNowBtn"Symbol 40 MovieClip {GameMenu} Frame 1Symbol 29 Button
"moreGamesBtn"Symbol 40 MovieClip {GameMenu} Frame 1Symbol 34 Button
"sponsorBtn"Symbol 40 MovieClip {GameMenu} Frame 1Symbol 39 Button
"submitScoreBtn"Symbol 55 MovieClip {GameOverScreen} Frame 1Symbol 44 Button
"continueBtn"Symbol 55 MovieClip {GameOverScreen} Frame 1Symbol 48 Button
"finalScoreTxt"Symbol 55 MovieClip {GameOverScreen} Frame 1Symbol 49 EditableText
"highScoreNameTxt"Symbol 55 MovieClip {GameOverScreen} Frame 1Symbol 50 EditableText
"statusTxt"Symbol 59 MovieClip {HighScoresScreen} Frame 1Symbol 56 EditableText
"glow"Symbol 68 MovieClip {SmallLaserTower} Frame 1Symbol 67 MovieClip
"turret"Symbol 77 MovieClip {SmallMissileTower} Frame 1Symbol 76 MovieClip
"bg"Symbol 97 MovieClip {OmegaTowerDefense2_fla.PauseBtn_66} Frame 1Symbol 95 MovieClip
"resumeFlash"Symbol 97 MovieClip {OmegaTowerDefense2_fla.PauseBtn_66} Frame 1Symbol 95 MovieClip
"label"Symbol 97 MovieClip {OmegaTowerDefense2_fla.PauseBtn_66} Frame 1Symbol 96 EditableText
"bg"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 62 MovieClip {TowerDialogBg}
"smallLaserTowerBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 68 MovieClip {SmallLaserTower}
"smallSlowTowerBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 71 MovieClip {SmallSlowTower}
"smallMissileTowerBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 77 MovieClip {SmallMissileTower}
"bombBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 80 MovieClip {Bomb}
"lightArtilleryBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 83 MovieClip {LightArtillery}
"moneyTowerBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 86 MovieClip {MoneyTower}
"shockTowerBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 89 MovieClip {ShockTower}
"launcherBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 92 MovieClip {BladeLauncher}
"pauseBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 97 MovieClip {OmegaTowerDefense2_fla.PauseBtn_66}
"exitBtn"Symbol 102 MovieClip {MenuBar} Frame 1Symbol 101 Button
"highlight"Symbol 150 MovieClip {OmegaTowerDefense2_fla.SellBtn_38} Frame 1Symbol 148 MovieClip
"label"Symbol 150 MovieClip {OmegaTowerDefense2_fla.SellBtn_38} Frame 1Symbol 149 EditableText
"bg"Symbol 154 MovieClip {TowerDialog} Frame 1Symbol 62 MovieClip {TowerDialogBg}
"sellBtn"Symbol 154 MovieClip {TowerDialog} Frame 1Symbol 150 MovieClip {OmegaTowerDefense2_fla.SellBtn_38}
"closeBtn"Symbol 154 MovieClip {TowerDialog} Frame 1Symbol 153 Button
"highlight"Symbol 158 MovieClip {OmegaTowerDefense2_fla.UpgradeBtn_35} Frame 1Symbol 148 MovieClip
"label"Symbol 158 MovieClip {OmegaTowerDefense2_fla.UpgradeBtn_35} Frame 1Symbol 157 EditableText
"labelTxt"Symbol 164 MovieClip {StatUpgrader} Frame 1Symbol 156 EditableText
"upgradeBtn"Symbol 164 MovieClip {StatUpgrader} Frame 1Symbol 158 MovieClip {OmegaTowerDefense2_fla.UpgradeBtn_35}
"bar"Symbol 164 MovieClip {StatUpgrader} Frame 1Symbol 160 MovieClip {StatBar}
"minTxt"Symbol 164 MovieClip {StatUpgrader} Frame 1Symbol 162 EditableText
"maxTxt"Symbol 164 MovieClip {StatUpgrader} Frame 1Symbol 163 EditableText
"bg"Symbol 167 MovieClip {GameTutorialMessage} Frame 1Symbol 62 MovieClip {TowerDialogBg}
"map1Btn"Symbol 186 MovieClip {SelectMapScreen} Frame 1Symbol 173 Button
"map2Btn"Symbol 186 MovieClip {SelectMapScreen} Frame 1Symbol 177 Button
"map3Btn"Symbol 186 MovieClip {SelectMapScreen} Frame 1Symbol 181 Button
"map4Btn"Symbol 186 MovieClip {SelectMapScreen} Frame 1Symbol 185 Button
"easyBtn"Symbol 214 MovieClip {SelectDifficultyScreen} Frame 1Symbol 193 Button
"mediumBtn"Symbol 214 MovieClip {SelectDifficultyScreen} Frame 1Symbol 198 Button
"hardBtn"Symbol 214 MovieClip {SelectDifficultyScreen} Frame 1Symbol 203 Button
"insaneBtn"Symbol 214 MovieClip {SelectDifficultyScreen} Frame 1Symbol 208 Button
"sandboxBtn"Symbol 214 MovieClip {SelectDifficultyScreen} Frame 1Symbol 213 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata not present, AS3.

Labels

"pauseFlash"Symbol 97 MovieClip {OmegaTowerDefense2_fla.PauseBtn_66} Frame 1




http://swfchan.com/6/29528/info.shtml
Created: 19/5 -2019 22:03:36 Last modified: 19/5 -2019 22:03:36 Server time: 27/04 -2024 07:20:17