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

If the site isn't working like it should for you it is because EasyList (a set of filter rules used by your adblocker) has started to block the whole eye.swfchan.com subdomain. This causes captchas to not load and the easy solution is to just disable the adblocker completely. Ironically this causes people using the EasyList ruleset to actually see more ads...

Since it's exceptionally easy to only block the actual ads on swfchan (no ads are actually served from swfchan's own domain) and because the current ruleset is actually causing visitors to see more ads I thought this matter would be quickly resolved. However, I have been trying to contact EasyList for over three weeks now with no response. Therefore I feel the need to ask my visitors to e-mail them as well to bring attention to this issue and show that regular users of EasyList care about swfchan, not just the guy running the site.

They have two e-mails: easylist.subscription@gmail.com and easylist.blog@gmail.com. The first one is the primary mail but I've sent mail to both and received a reply from neither. Have sent using different mail accounts as well so I know there was no sending issues on my end. I should have written this announcement earlier but this whole thing felt like such an open-and-shut case that I would never have imagined swfchan still being blocked like this after three weeks. Big thanks to anyone helping out!

Note: I'm not writing this because of money, the site's income is actually the same as before (less visitors but less blockers equal same ad views). I am however worried that in the long run, in a year or so, this may lead to less links leading to swfchan which would sure enough finally kill it off the web, especially with the dwindling flash support these days. I also don't think this is a fair practice by EasyList, there's no reason what-so-ever to block swfchan itself. I don't serve ads and an adblocker should block ad providers, not sites that use ad providers. I also don't limit anyone blocking ads from using the site in any way. It feels like the EasyList authors took just a minute to look at swfchan, said "fuck it" and proceeded to block the whole thing instead of only the ads.

So if you have a moment I'd really appreciate it if you took the time to e-mail them about this. Just be polite and ask EasyList to block only the ads on swfchan, not the actual content on swfchan itself. There's a discussion thread over here.


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

Omega Tower defense.swf

This is the info page for
Flash #48834

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


Text
For more games by the same author, visit www.FlashGameALot.com.
Developers: Upload your game and get 50% ad revenue sharing.

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>

ActionScript [AS3]

Section 1
//ExplosionLoop_49 (OmegaTowerDefense_fla.ExplosionLoop_49) package OmegaTowerDefense_fla { import flash.display.*; public dynamic class ExplosionLoop_49 extends MovieClip { public var s:Number; public function ExplosionLoop_49(){ addFrameScript(0, frame1, 20, frame21); } function frame1(){ gotoAndPlay(Math.floor((Math.random() * 10))); } function frame21(){ gotoAndPlay(1); this.rotation = (this.rotation + (Math.random() * 500)); s = ((Math.random() * 3) - 1.5); this.scaleX = s; this.scaleY = s; } } }//package OmegaTowerDefense_fla
Section 2
//PauseBtn_37 (OmegaTowerDefense_fla.PauseBtn_37) package OmegaTowerDefense_fla { import flash.display.*; import flash.text.*; public dynamic class PauseBtn_37 extends MovieClip { public var label:TextField; public var bg:MovieClip; } }//package OmegaTowerDefense_fla
Section 3
//SellBtn_7 (OmegaTowerDefense_fla.SellBtn_7) package OmegaTowerDefense_fla { import flash.display.*; import flash.text.*; public dynamic class SellBtn_7 extends MovieClip { public var label:TextField; public var highlight:MovieClip; } }//package OmegaTowerDefense_fla
Section 4
//UpgradeBtn_3 (OmegaTowerDefense_fla.UpgradeBtn_3) package OmegaTowerDefense_fla { import flash.display.*; import flash.text.*; public dynamic class UpgradeBtn_3 extends MovieClip { public var label:TextField; public var highlight:MovieClip; } }//package OmegaTowerDefense_fla
Section 5
//Arial (Arial) package { import flash.text.*; public dynamic class Arial extends Font { } }//package
Section 6
//BgMusic (BgMusic) package { import flash.media.*; public dynamic class BgMusic extends Sound { } }//package
Section 7
//Blade (Blade) package { import flash.display.*; public dynamic class Blade extends Sprite { } }//package
Section 8
//BladeImg (BladeImg) package { import flash.display.*; public dynamic class BladeImg extends Sprite { } }//package
Section 9
//BladeLauncher (BladeLauncher) package { import flash.display.*; public dynamic class BladeLauncher extends Sprite { } }//package
Section 10
//Bomb (Bomb) package { import flash.display.*; public dynamic class Bomb extends Sprite { } }//package
Section 11
//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 function Creep(){ dead = false; super(); targetCheckPoint = 1; } } }//package
Section 12
//Creep_4Ball (Creep_4Ball) package { import flash.display.*; public dynamic class Creep_4Ball extends Sprite { } }//package
Section 13
//Creep_Biter (Creep_Biter) package { import flash.display.*; public dynamic class Creep_Biter extends Sprite { } }//package
Section 14
//Creep_Brain (Creep_Brain) package { import flash.display.*; public dynamic class Creep_Brain extends Sprite { } }//package
Section 15
//Creep_Bubble (Creep_Bubble) package { import flash.display.*; public dynamic class Creep_Bubble extends Sprite { } }//package
Section 16
//Creep_Eye (Creep_Eye) package { import flash.display.*; public dynamic class Creep_Eye extends Sprite { } }//package
Section 17
//Creep_Flyer (Creep_Flyer) package { import flash.display.*; public dynamic class Creep_Flyer extends Sprite { } }//package
Section 18
//Creep_PodMonster (Creep_PodMonster) package { import flash.display.*; public dynamic class Creep_PodMonster extends Sprite { } }//package
Section 19
//Creep_Segment (Creep_Segment) package { import flash.display.*; public dynamic class Creep_Segment extends Sprite { } }//package
Section 20
//Creep_Skull (Creep_Skull) package { import flash.display.*; public dynamic class Creep_Skull extends Sprite { } }//package
Section 21
//Creep_Spider (Creep_Spider) package { import flash.display.*; public dynamic class Creep_Spider extends Sprite { } }//package
Section 22
//Creep_Spiker (Creep_Spiker) package { import flash.display.*; public dynamic class Creep_Spiker extends Sprite { } }//package
Section 23
//Creep_WormBody (Creep_WormBody) package { import flash.display.*; public dynamic class Creep_WormBody extends Sprite { } }//package
Section 24
//Creep_WormHead (Creep_WormHead) package { import flash.display.*; public dynamic class Creep_WormHead extends Sprite { } }//package
Section 25
//Explosion (Explosion) package { import flash.display.*; public dynamic class Explosion extends MovieClip { public function Explosion(){ addFrameScript(7, frame8); } function frame8(){ stop(); } } }//package
Section 26
//GameBg (GameBg) package { import flash.display.*; public dynamic class GameBg extends Sprite { } }//package
Section 27
//GameMenu (GameMenu) package { import flash.display.*; public dynamic class GameMenu extends Sprite { public var moreGamesBtn:SimpleButton; public var highScoresBtn:SimpleButton; public var playNowBtn:SimpleButton; } }//package
Section 28
//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 29
//HighScoresScreen (HighScoresScreen) package { import flash.display.*; import flash.text.*; public dynamic class HighScoresScreen extends Sprite { public var backBtn:SimpleButton; public var namesTxt:TextField; public var statusTxt:TextField; public var scoresTxt:TextField; } }//package
Section 30
//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 31
//LightArtillery (LightArtillery) package { import flash.display.*; public dynamic class LightArtillery extends Sprite { } }//package
Section 32
//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 33
//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 34
//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.2"); } public static function showTimedAd(_arg1:Object):void{ MochiAd.showInterLevelAd(_arg1); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var f:Function; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; lv.lc = name; lv.st = getTimer(); loader = new Loader(); f = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); mc._mochiad_ctr_failed = true; }; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest((server + ".swf")); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function sendHighScore(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{ var _local4:MovieClip; _local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id}); if (!_local4){ return (false); }; _local4.doSend(["sendHighScore", _arg1], _arg2, _arg3); return (true); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ 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.")); }; }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = _local1.loaderInfo.bytesTotal; if ((((_local4 > 0)) || (("number" == "undefined")))){ chk.showing = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ _local3 = true; }; }; }; if ((((_local2 > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _loadCommunicator(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var clipname:String; var server:String; var depth:Number; var mc:MovieClip; var lv:URLVariables; var k:String; var lc:LocalConnection; var name:String; var req:URLRequest; var loader:Loader; var options = _arg1; DEFAULTS = {com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; clipname = ("_mochiad_com_" + options.id); if (!MochiAd._isNetworkAvailable()){ return (null); }; if (clip[clipname]){ return (clip[clipname]); }; server = (options.com_server + options.id); MochiAd._allowDomains(server); delete options.id; delete options.com_server; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, clipname, depth); lv = new URLVariables(); for (k in options) { lv[k] = options[k]; }; lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.name = name; mc.lc = lc; lv.lc = name; mc._id = 0; mc._queue = []; mc.rpcResult = function (_arg1:Object):void{ var _local3:Array; var _local4:Array; var _local5:Number; var _local6:Object; var _local7:Object; _arg1 = parseInt(_arg1.toString()); _local3 = mc._callbacks[_arg1]; if (typeof(_local3) == "undefined"){ return; }; delete mc._callbacks[_arg1]; _local4 = []; _local5 = 2; while (_local5 < _local3.length) { _local4.push(_local3[_local5]); _local5++; }; _local5 = 1; while (_local5 < arguments.length) { _local4.push(arguments[_local5]); _local5++; }; _local6 = _local3[1]; _local7 = _local3[0]; if (((_local7) && ((typeof(_local6) == "string")))){ _local6 = _local7[_local6]; }; if (typeof(_local6) == "function"){ _local6.apply(_local7, _local4); }; }; mc._didConnect = function (_arg1:String):void{ var _local2:Array; var _local3:Function; var _local4:Number; var _local5:Array; mc._endpoint = _arg1; _local2 = mc._queue; delete mc._queue; _local3 = mc.doSend; _local4 = 0; while (_local4 < _local2.length) { _local5 = _local2[_local4]; _local3.apply(this, _local5); _local4++; }; }; mc.doSend = function (_arg1:Array, _arg2:Object, _arg3:Object):void{ var _local5:Number; var _local6:LocalConnection; var _local7:Array; var _local8:Number; if (mc._endpoint == null){ _local7 = []; _local8 = 0; while (_local8 < arguments.length) { _local7.push(arguments[_local8]); _local8++; }; mc._queue.push(_local7); return; }; mc._id = (mc._id + 1); _local5 = mc._id; mc._callbacks[_local5] = [_arg2, ((_arg3) || (_arg2))]; _local6 = new LocalConnection(); _local6.send(mc._endpoint, "rpc", _local5, _arg1); }; mc._callbacks = {}; mc._callbacks[0] = [mc, "_didConnect"]; lv.st = getTimer(); req = new URLRequest((server + ".swf")); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader = new Loader(); loader.load(req); mc.addChild(loader); mc._mochiad_com = loader; return (mc); } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var f:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); bar.x = 10; bar.y = (h - 20); bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; clip.loaderInfo.addEventListener(Event.COMPLETE, f); if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Object; var _local10:Number; var _local11:Number; if (!this.parent.parent){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local7 = ((100 * _local6) / _local5); _local8 = ((100 * _local3) / chk.ad_msec); _local9 = this._mochiad_bar._inside; _local10 = Math.min(100, Math.min(((_local7) || (0)), _local8)); _local10 = Math.max(this.last_pcnt, _local10); this.last_pcnt = _local10; _local9.scaleX = (_local10 * 0.01); if (!chk.showing){ _local11 = _local2.loaderInfo.bytesTotal; if ((((_local11 > 0)) || (("number" == "undefined")))){ chk.showing = true; chk.started = getTimer(); } else { if (_local3 > chk.ad_timeout){ _local4 = true; }; }; }; if ((((_local3 > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){ _local4 = true; }; if (((complete) && (_local4))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ MochiAd.showPreGameAd(_arg1); } public static function fetchHighScores(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{ var _local4:MovieClip; _local4 = MochiAd._loadCommunicator({clip:_arg1.clip, id:_arg1.id}); if (!_local4){ return (false); }; _local4.doSend(["fetchHighScores", _arg1], _arg2, _arg3); return (true); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package
Section 35
//MoneyTower (MoneyTower) package { import flash.display.*; public dynamic class MoneyTower extends Sprite { } }//package
Section 36
//MusicBtn (MusicBtn) package { import flash.display.*; public dynamic class MusicBtn extends SimpleButton { } }//package
Section 37
//OmegaTowerDefense (OmegaTowerDefense) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.filters.*; import flash.geom.*; import flash.ui.*; public class OmegaTowerDefense extends Sprite { var towerDialogRangeUpgrader:StatUpgrader; public var bgMusicChannel:SoundChannel; var laserCanvas:Sprite; public var upgradeSinTable:Array; public var drawMouseOverTowerAlphaTarget:Number;// = 0 var missiles:Array; var draggingTowerRadius:Number; var menuBar:MenuBar; public var towerData:Object; 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; public var upgradeCosTable:Array; var textContainer2:Sprite; public var bgMusicOn:Boolean; public var bgMusic:BgMusic; var creepPathCavas:Sprite; var rangeCanvas:Sprite; var draggingTower:Boolean;// = false var life:int; var infoTxt:TextField; var paused:Boolean;// = false var BOMB_EXPLODE_RANGE:Number;// = 50 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; var dialogTargetTower:Tower; public var drawMouseOverTowerRangeCurr:Number;// = 0 var towerDialogIsOpen:Boolean;// = false public var drawMouseOverTowerRangeY:Number;// = 0 var towerDialog:TowerDialog; var adContainer:MochiContainer; var frameCounter:int;// = 0 public var drawMouseOverTowerRangeX:Number;// = 0 var lifeTxt:TextField; var lifebarCanvas:Sprite; var gameBg:GameBg; var textContainer:Sprite; var sellValueFrac:Number;// = 0.9 var gameOverScreen:GameOverScreen; public var musicBtn:MusicBtn; public var drawMouseOverTowerAlpha:Number;// = 0 var effectTime:Number;// = 0 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_defense"; 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 OmegaTowerDefense(){ fmt = new TextFormat(); gameOn = false; paused = false; draggingTower = false; towers = new Array(); 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}]; creeps = new Array(); frameCounter = 0; effectTime = 0; missiles = new Array(); particles = new Array(); BOMB_EXPLODE_RANGE = 50; CREEP_DIST_TO_REACH_CHECKPOINT = 5; 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:6, 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_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_Spider, life:12, speed:3, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:6}, {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, spawnFrameDelay:30, numCreepsInWave:20, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Flyer, life:21, speed:3, spawnFrameDelay:20, numCreepsInWave:20, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Bubble, life:22, speed:1, spawnFrameDelay:40, numCreepsInWave:15, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Skull, life:50, speed:2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Segment, life:25, speed:2, spawnFrameDelay:5, numCreepsInWave:10, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_WormHead, life:70, speed:2, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_WormBody, life:25, speed:2, spawnFrameDelay:5, numCreepsInWave:10, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Skull, life:80, speed:2.1, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:50, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Segment, life:20, speed:2.1, spawnFrameDelay:5, numCreepsInWave:25, moneyValue:7, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Spider, life:20, speed:3, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:8, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Skull, life:26, speed:2, spawnFrameDelay:30, numCreepsInWave:10, moneyValue:8, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_4Ball, life:25, speed:3, spawnFrameDelay:10, numCreepsInWave:35, moneyValue:8, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Brain, life:40, speed:1, spawnFrameDelay:70, numCreepsInWave:3, moneyValue:75, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Eye, life:30, speed:2, spawnFrameDelay:30, numCreepsInWave:15, moneyValue:9, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Spiker, life:31, speed:2, spawnFrameDelay:30, numCreepsInWave:25, moneyValue:9, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_PodMonster, life:250, speed:1, spawnFrameDelay:70, numCreepsInWave:3, moneyValue:100, tint:{r:50, g:0, b:0}}, {spriteClass:Creep_Biter, life:32, speed:2.5, spawnFrameDelay:30, numCreepsInWave:30, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Flyer, life:33, speed:3.5, spawnFrameDelay:20, numCreepsInWave:30, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Bubble, life:34, speed:1.5, spawnFrameDelay:40, numCreepsInWave:45, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Skull, life:100, speed:2.5, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Segment, life:35, speed:2.5, spawnFrameDelay:5, numCreepsInWave:20, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_WormHead, life:150, speed:2.5, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:30, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_WormBody, life:35, speed:2.5, spawnFrameDelay:5, numCreepsInWave:20, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Skull, life:200, speed:2.1, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:40, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Segment, life:50, speed:2.1, spawnFrameDelay:5, numCreepsInWave:35, moneyValue:10, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Spider, life:60, speed:3.5, spawnFrameDelay:30, numCreepsInWave:20, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Skull, life:70, speed:2.5, spawnFrameDelay:30, numCreepsInWave:20, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_4Ball, life:80, speed:3.5, spawnFrameDelay:10, numCreepsInWave:45, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Brain, life:100, speed:1.5, spawnFrameDelay:70, numCreepsInWave:5, moneyValue:120, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Eye, life:90, speed:2.5, spawnFrameDelay:30, numCreepsInWave:25, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Spiker, life:100, speed:2.5, spawnFrameDelay:30, numCreepsInWave:35, moneyValue:11, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_PodMonster, life:250, speed:1.5, spawnFrameDelay:70, numCreepsInWave:5, moneyValue:150, tint:{r:0, g:60, b:0}}, {spriteClass:Creep_Biter, life:110, speed:4, spawnFrameDelay:30, numCreepsInWave:40, moneyValue:12, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Flyer, life:120, speed:5, spawnFrameDelay:20, numCreepsInWave:40, moneyValue:12, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Bubble, life:130, speed:3, spawnFrameDelay:40, numCreepsInWave:55, moneyValue:13, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Skull, life:200, speed:4, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:40, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Segment, life:140, speed:4, spawnFrameDelay:5, numCreepsInWave:30, moneyValue:13, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_WormHead, life:250, speed:4, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:40, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_WormBody, life:150, speed:4, spawnFrameDelay:5, numCreepsInWave:30, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Skull, life:300, speed:4.5, spawnFrameDelay:-95, numCreepsInWave:1, moneyValue:50, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Segment, life:160, speed:4.5, spawnFrameDelay:5, numCreepsInWave:55, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Spider, life:175, speed:5, spawnFrameDelay:30, numCreepsInWave:30, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Skull, life:200, speed:4, spawnFrameDelay:30, numCreepsInWave:30, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_4Ball, life:250, speed:5, spawnFrameDelay:10, numCreepsInWave:55, moneyValue:14, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Brain, life:300, speed:3, spawnFrameDelay:70, numCreepsInWave:5, moneyValue:150, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Eye, life:500, speed:4, spawnFrameDelay:30, numCreepsInWave:35, moneyValue:15, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_Spiker, life:600, speed:4, spawnFrameDelay:30, numCreepsInWave:50, moneyValue:15, tint:{r:-50, g:-50, b:-60}}, {spriteClass:Creep_PodMonster, life:10000, speed:4.5, spawnFrameDelay:20, numCreepsInWave:1000, moneyValue:50, tint:{r:-50, g:-50, b:-60}}]; towerData = {artillery:{price:100, range:70, maxRange:110, rangeUpgradeCost:15, reloadTime:20, minReloadTime:10, reloadUpgradeCost:20, damage:1, maxDamage:2, damageUpgradeCost:20, radius:10, name:"Light Artillery", desc:"Light Artillery - Does a small amount of damage to a single nearby target."}, shock:{radius:16, price:700, range:90, maxRange:130, rangeUpgradeCost:100, reloadTime:30, minReloadTime:15, reloadUpgradeCost:125, damage:1, maxDamage:2, damageUpgradeCost:125, 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:50, 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:200, range:90, maxRange:130, rangeUpgradeCost:25, reloadTime:50, minReloadTime:25, reloadUpgradeCost:40, damage:5, maxDamage:10, damageUpgradeCost:40, name:"Laser Turret", desc:"Laser Turret - Shoots a concentrated photon beam a single nearby creep."}, slow:{price:700, 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:350, 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:20, 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(); showMochiAd(); } function sellBtnOver(_arg1):void{ towerDialog.sellBtn.highlight.visible = true; } 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 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 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); } 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 launcherBtnClick(_arg1):void{ setupTowerFromType("launcher"); } 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; }; 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 = 1; _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 lightArtilleryBtnOver(_arg1):void{ showInfoForTowerType("artillery"); } 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 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++; }; } 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++; }; }; } 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 pauseBtnClick(_arg1):void{ paused = !(paused); if (paused){ menuBar.pauseBtn.label.text = "RESUME"; } else { menuBar.pauseBtn.label.text = "PAUSE"; }; } 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 { 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 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 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); 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); 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; 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 moneyTowerBtnOver(_arg1):void{ showInfoForTowerType("money"); } 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 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 drawDraggingTowerRange():void{ rangeCanvas.graphics.lineStyle(2, 0xFFFFFF, 0.35); rangeCanvas.graphics.drawCircle(stage.mouseX, stage.mouseY, towerData[draggingTowerType].range); } public function drawCreepLifeBars():void{ var _local1:int; var _local2:Number; _local1 = 0; while (_local1 < creeps.length) { _local2 = (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++; }; } public function initGame():void{ try { removeChild(adContainer); } catch(e) { }; precalcUpgradeSinCosTables(); stage.scaleMode = StageScaleMode.SHOW_ALL; highScoreService = new LaserPirateHighScoreService(HIGH_SCORE_GAME_CODE); gameMenu = new GameMenu(); addChild(gameMenu); centerOnScreen(gameMenu); 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.highScoresBtn.addEventListener(MouseEvent.CLICK, getHighScores); gameOverScreen.continueBtn.addEventListener(MouseEvent.CLICK, continueBtnHandler); highScoresScreen.backBtn.addEventListener(MouseEvent.CLICK, continueBtnHandler); gameOverScreen.submitScoreBtn.addEventListener(MouseEvent.CLICK, submitScoreBtnHandler); addEventListener(Event.ENTER_FRAME, updateGame); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); gameBg = new GameBg(); addChild(gameBg); gameBg.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; 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.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); gameBg.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); } 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"); } function sellBtnOut(_arg1):void{ towerDialog.sellBtn.highlight.visible = false; } public function bombBtnClick(_arg1):void{ setupTowerFromType("bomb"); } function musicBtnHandler(_arg1):void{ if (bgMusicOn){ bgMusicChannel.stop(); } else { bgMusicChannel = bgMusic.play(0, int.MAX_VALUE); }; bgMusicOn = !(bgMusicOn); } public function continueBtnHandler(_arg1:MouseEvent):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 = "Sending Score..."; highScoresScreen.namesTxt.text = ""; highScoresScreen.scoresTxt.text = ""; highScoreService.submitScore(_arg1, _arg2, gotScoresHandler, scoresErrorHandler); } public function lightArtilleryBtnClick(_arg1):void{ setupTowerFromType("artillery"); } public function bgClickHandler(_arg1:MouseEvent):void{ var _local2:Boolean; var _local3:Tower; towerDialogClose(); if (!draggingTower){ return; }; _local2 = 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"))) && (_local2))){ 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(); _local3 = new Tower(); towerContainer.addChild(_local3); towers.push(_local3); towerContainer.removeChild(draggingTowerPreview); draggingTowerPreview.x = 0; draggingTowerPreview.y = 0; _local3.sellValue = draggingTowerTypeCostToBuy; _local3.spr = draggingTowerPreview; _local3.addChild(_local3.spr); _local3.type = draggingTowerType; _local3.rangeUpgradeCost = towerData[_local3.type].rangeUpgradeCost; _local3.range = towerData[_local3.type].range; _local3.minRange = towerData[_local3.type].range; _local3.maxRange = towerData[_local3.type].maxRange; _local3.damageUpgradeCost = towerData[_local3.type].damageUpgradeCost; _local3.damage = towerData[_local3.type].damage; _local3.minDamage = towerData[_local3.type].damage; _local3.maxDamage = towerData[_local3.type].maxDamage; _local3.reloadUpgradeCost = towerData[_local3.type].reloadUpgradeCost; _local3.reloadTime = towerData[_local3.type].reloadTime; _local3.minReloadTime = towerData[_local3.type].minReloadTime; _local3.maxReloadTime = towerData[_local3.type].reloadTime; _local3.slowdownCoef = 0.75; _local3.splashRadius = -1; if (towerData[_local3.type].splashRadius){ _local3.splashRadius = towerData[_local3.type].splashRadius; }; _local3.radius = draggingTowerRadius; _local3.createdFrameCounter = frameCounter; _local3.x = stage.mouseX; _local3.y = stage.mouseY; _local3.buttonMode = true; _local3.useHandCursor = true; _local3.addEventListener(MouseEvent.MOUSE_OVER, towerMouseOverHandler, false, 0, true); _local3.addEventListener(MouseEvent.MOUSE_OUT, towerMouseOutHandler, false, 0, true); _local3.addEventListener(MouseEvent.CLICK, towerClickHandler, false, 0, true); draggingTowerPreview.alpha = 1; draggingTower = false; if (_arg1.shiftKey){ setupTowerFromType(draggingTowerType); }; } public function launcherBtnOver(_arg1):void{ showInfoForTowerType("launcher"); } public function menuClickHandler(_arg1):void{ if (_arg1.target == menuBar){ killDraggingTower(); }; } 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 menuRollOutHandler(_arg1):void{ if (_arg1.target == menuBar){ setDefaultInfoTxt(); }; } public function shockTowerBtnOver(_arg1):void{ showInfoForTowerType("shock"); } public function exitBtnClick(_arg1):void{ gameOver(score); } public function smallMissileTowerBtnOver(_arg1):void{ showInfoForTowerType("missile"); } 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 moneyTowerBtnClick(_arg1):void{ setupTowerFromType("money"); } public function smallSlowTowerBtnOver(_arg1):void{ showInfoForTowerType("slow"); } public function showMochiAd():void{ adContainer = new MochiContainer(); addChild(adContainer); MochiAd.showPreGameAd({clip:adContainer, id:"4f20a9f811f7f164", res:"640x480", ad_finished:initGame}); } 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 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 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; gameBg.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 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{ musicBtn.x = 80; musicBtn.y = 390; currCreepWave = 0; creepsToSpawnThisWave = creepWaveData[currCreepWave].numCreepsInWave; framesUntilSpawnCreep = 50; creeps = new Array(); gameMenu.visible = false; gameOn = true; paused = false; menuBar.pauseBtn.label.text = "PAUSE"; scoreTxt.visible = true; lifeTxt.visible = true; infoTxt.visible = true; menuBar.visible = true; moneyTxt.visible = true; waveTxt.visible = true; gameBg.visible = true; laserCanvas.visible = true; particleCanvas.visible = true; shockCanvas.visible = true; rangeCanvas.visible = true; lifebarCanvas.visible = true; particleContainer.visible = true; score = 0; life = 20; money = 350; 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 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(); } } }//package import flash.display.*; dynamic class MochiContainer extends MovieClip { private function MochiContainer(){ } }
Section 38
//ShockTower (ShockTower) package { import flash.display.*; public dynamic class ShockTower extends Sprite { } }//package
Section 39
//SmallLaserTower (SmallLaserTower) package { import flash.display.*; public dynamic class SmallLaserTower extends MovieClip { public var glow:MovieClip; } }//package
Section 40
//SmallMissileTower (SmallMissileTower) package { import flash.display.*; public dynamic class SmallMissileTower extends Sprite { public var turret:MovieClip; } }//package
Section 41
//SmallSlowTower (SmallSlowTower) package { import flash.display.*; public dynamic class SmallSlowTower extends Sprite { } }//package
Section 42
//StatBar (StatBar) package { import flash.display.*; public dynamic class StatBar extends Sprite { } }//package
Section 43
//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 44
//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;// = 1 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; slowdownCoef = 1; 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 45
//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 46
//TowerDialogBg (TowerDialogBg) package { import flash.display.*; public dynamic class TowerDialogBg extends Sprite { } }//package

Library Items

Symbol 1 Font {Arial}Used by:39 49 50 56 57 58 100 103 157 159 164 165 170 171
Symbol 2 Sound {BgMusic}
Symbol 3 GraphicUsed by:4 6
Symbol 4 MovieClipUses:3Used by:6
Symbol 5 GraphicUsed by:6
Symbol 6 Button {MusicBtn}Uses:4 5 3
Symbol 7 BitmapUsed by:8
Symbol 8 GraphicUses:7Used by:40 55 63
Symbol 9 BitmapUsed by:10
Symbol 10 GraphicUses:9Used by:23 137
Symbol 11 BitmapUsed by:12
Symbol 12 GraphicUses:11Used by:23 137
Symbol 13 BitmapUsed by:14
Symbol 14 GraphicUses:13Used by:23 137
Symbol 15 BitmapUsed by:16
Symbol 16 GraphicUses:15Used by:23 137
Symbol 17 BitmapUsed by:18
Symbol 18 GraphicUses:17Used by:23 137
Symbol 19 BitmapUsed by:20
Symbol 20 GraphicUses:19Used by:23 137
Symbol 21 BitmapUsed by:22
Symbol 22 GraphicUses:21Used by:23 137
Symbol 23 MovieClip {OmegaTowerDefense_fla.ExplosionLoop_49}Uses:10 12 14 16 18 20 22Used by:40
Symbol 24 BitmapUsed by:25
Symbol 25 GraphicUses:24Used by:26
Symbol 26 MovieClipUses:25Used by:40
Symbol 27 BitmapUsed by:28
Symbol 28 GraphicUses:27Used by:29 30
Symbol 29 MovieClipUses:28Used by:30
Symbol 30 ButtonUses:28 29Used by:40
Symbol 31 BitmapUsed by:32
Symbol 32 GraphicUses:31Used by:33 34 63
Symbol 33 MovieClipUses:32Used by:34
Symbol 34 ButtonUses:32 33Used by:40
Symbol 35 BitmapUsed by:36
Symbol 36 GraphicUses:35Used by:37 38
Symbol 37 MovieClipUses:36Used by:38
Symbol 38 ButtonUses:36 37Used by:40
Symbol 39 EditableTextUses:1Used by:40
Symbol 40 MovieClip {GameMenu}Uses:8 23 26 30 34 38 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:8 44 48 49 50 54
Symbol 56 EditableTextUses:1Used by:63
Symbol 57 EditableTextUses:1Used by:63
Symbol 58 EditableTextUses:1Used by:63
Symbol 59 BitmapUsed by:60
Symbol 60 GraphicUses:59Used by:61 62
Symbol 61 MovieClipUses:60Used by:62
Symbol 62 ButtonUses:60 61Used by:63
Symbol 63 MovieClip {HighScoresScreen}Uses:8 56 57 58 62 32
Symbol 64 GraphicUsed by:106
Symbol 65 GraphicUsed by:66
Symbol 66 MovieClip {TowerDialogBg}Uses:65Used by:106 162
Symbol 67 BitmapUsed by:68
Symbol 68 GraphicUses:67Used by:72
Symbol 69 BitmapUsed by:70
Symbol 70 GraphicUses:69Used by:71
Symbol 71 MovieClipUses:70Used by:72
Symbol 72 MovieClip {SmallLaserTower}Uses:68 71Used by:106
Symbol 73 BitmapUsed by:74
Symbol 74 GraphicUses:73Used by:75
Symbol 75 MovieClip {SmallSlowTower}Uses:74Used by:106
Symbol 76 BitmapUsed by:77
Symbol 77 GraphicUses:76Used by:81
Symbol 78 BitmapUsed by:79
Symbol 79 GraphicUses:78Used by:80
Symbol 80 MovieClipUses:79Used by:81
Symbol 81 MovieClip {SmallMissileTower}Uses:77 80Used by:106
Symbol 82 BitmapUsed by:83
Symbol 83 GraphicUses:82Used by:84
Symbol 84 MovieClip {Bomb}Uses:83Used by:106
Symbol 85 BitmapUsed by:86
Symbol 86 GraphicUses:85Used by:87
Symbol 87 MovieClip {LightArtillery}Uses:86Used by:106
Symbol 88 BitmapUsed by:89
Symbol 89 GraphicUses:88Used by:90
Symbol 90 MovieClip {MoneyTower}Uses:89Used by:106
Symbol 91 BitmapUsed by:92
Symbol 92 GraphicUses:91Used by:93
Symbol 93 MovieClip {ShockTower}Uses:92Used by:106
Symbol 94 BitmapUsed by:95
Symbol 95 GraphicUses:94Used by:96
Symbol 96 MovieClip {BladeLauncher}Uses:95Used by:106
Symbol 97 GraphicUsed by:101
Symbol 98 GraphicUsed by:99
Symbol 99 MovieClipUses:98Used by:101
Symbol 100 EditableTextUses:1Used by:101
Symbol 101 MovieClip {OmegaTowerDefense_fla.PauseBtn_37}Uses:97 99 100Used by:106
Symbol 102 GraphicUsed by:105
Symbol 103 EditableTextUses:1Used by:105
Symbol 104 GraphicUsed by:105
Symbol 105 ButtonUses:102 103 104Used by:106
Symbol 106 MovieClip {MenuBar}Uses:64 66 72 75 81 84 87 90 93 96 101 105
Symbol 107 BitmapUsed by:108
Symbol 108 GraphicUses:107Used by:109
Symbol 109 MovieClip {GameBg}Uses:108
Symbol 110 BitmapUsed by:111
Symbol 111 GraphicUses:110Used by:112
Symbol 112 MovieClip {Creep_Bubble}Uses:111
Symbol 113 BitmapUsed by:114
Symbol 114 GraphicUses:113Used by:115
Symbol 115 MovieClip {Creep_4Ball}Uses:114
Symbol 116 BitmapUsed by:117
Symbol 117 GraphicUses:116Used by:118
Symbol 118 MovieClip {Creep_Biter}Uses:117
Symbol 119 BitmapUsed by:120
Symbol 120 GraphicUses:119Used by:121
Symbol 121 MovieClip {Creep_Flyer}Uses:120
Symbol 122 BitmapUsed by:123
Symbol 123 GraphicUses:122Used by:124
Symbol 124 MovieClip {Creep_Segment}Uses:123
Symbol 125 BitmapUsed by:126
Symbol 126 GraphicUses:125Used by:127
Symbol 127 MovieClip {Creep_Skull}Uses:126
Symbol 128 BitmapUsed by:129
Symbol 129 GraphicUses:128Used by:130
Symbol 130 MovieClip {Creep_Spider}Uses:129
Symbol 131 BitmapUsed by:132
Symbol 132 GraphicUses:131Used by:133
Symbol 133 MovieClip {Creep_WormBody}Uses:132
Symbol 134 BitmapUsed by:135
Symbol 135 GraphicUses:134Used by:136
Symbol 136 MovieClip {Creep_WormHead}Uses:135
Symbol 137 MovieClip {Explosion}Uses:10 12 14 16 18 20 22
Symbol 138 BitmapUsed by:139
Symbol 139 GraphicUses:138Used by:140
Symbol 140 MovieClip {Creep_PodMonster}Uses:139
Symbol 141 BitmapUsed by:142
Symbol 142 GraphicUses:141Used by:143
Symbol 143 MovieClip {Creep_Brain}Uses:142
Symbol 144 BitmapUsed by:145
Symbol 145 GraphicUses:144Used by:146
Symbol 146 MovieClip {Creep_Eye}Uses:145
Symbol 147 BitmapUsed by:148
Symbol 148 GraphicUses:147Used by:149
Symbol 149 MovieClip {Creep_Spiker}Uses:148
Symbol 150 BitmapUsed by:151
Symbol 151 GraphicUses:150Used by:152
Symbol 152 MovieClip {BladeImg}Uses:151Used by:153
Symbol 153 MovieClip {Blade}Uses:152
Symbol 154 GraphicUsed by:158 161 166
Symbol 155 GraphicUsed by:156
Symbol 156 MovieClipUses:155Used by:158 166
Symbol 157 EditableTextUses:1Used by:158
Symbol 158 MovieClip {OmegaTowerDefense_fla.SellBtn_7}Uses:154 156 157Used by:162
Symbol 159 EditableTextUses:1Used by:161
Symbol 160 GraphicUsed by:161
Symbol 161 ButtonUses:154 159 160Used by:162
Symbol 162 MovieClip {TowerDialog}Uses:66 158 161
Symbol 163 GraphicUsed by:172
Symbol 164 EditableTextUses:1Used by:172
Symbol 165 EditableTextUses:1Used by:166
Symbol 166 MovieClip {OmegaTowerDefense_fla.UpgradeBtn_3}Uses:154 156 165Used by:172
Symbol 167 GraphicUsed by:168
Symbol 168 MovieClip {StatBar}Uses:167Used by:172
Symbol 169 GraphicUsed by:172
Symbol 170 EditableTextUses:1Used by:172
Symbol 171 EditableTextUses:1Used by:172
Symbol 172 MovieClip {StatUpgrader}Uses:163 164 166 168 169 170 171

Instance Names

"playNowBtn"Symbol 40 MovieClip {GameMenu} Frame 1Symbol 30 Button
"highScoresBtn"Symbol 40 MovieClip {GameMenu} Frame 1Symbol 34 Button
"moreGamesBtn"Symbol 40 MovieClip {GameMenu} Frame 1Symbol 38 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
"namesTxt"Symbol 63 MovieClip {HighScoresScreen} Frame 1Symbol 56 EditableText
"scoresTxt"Symbol 63 MovieClip {HighScoresScreen} Frame 1Symbol 57 EditableText
"statusTxt"Symbol 63 MovieClip {HighScoresScreen} Frame 1Symbol 58 EditableText
"backBtn"Symbol 63 MovieClip {HighScoresScreen} Frame 1Symbol 62 Button
"glow"Symbol 72 MovieClip {SmallLaserTower} Frame 1Symbol 71 MovieClip
"turret"Symbol 81 MovieClip {SmallMissileTower} Frame 1Symbol 80 MovieClip
"bg"Symbol 101 MovieClip {OmegaTowerDefense_fla.PauseBtn_37} Frame 1Symbol 99 MovieClip
"label"Symbol 101 MovieClip {OmegaTowerDefense_fla.PauseBtn_37} Frame 1Symbol 100 EditableText
"bg"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 66 MovieClip {TowerDialogBg}
"smallLaserTowerBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 72 MovieClip {SmallLaserTower}
"smallSlowTowerBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 75 MovieClip {SmallSlowTower}
"smallMissileTowerBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 81 MovieClip {SmallMissileTower}
"bombBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 84 MovieClip {Bomb}
"lightArtilleryBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 87 MovieClip {LightArtillery}
"moneyTowerBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 90 MovieClip {MoneyTower}
"shockTowerBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 93 MovieClip {ShockTower}
"launcherBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 96 MovieClip {BladeLauncher}
"pauseBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 101 MovieClip {OmegaTowerDefense_fla.PauseBtn_37}
"exitBtn"Symbol 106 MovieClip {MenuBar} Frame 1Symbol 105 Button
"highlight"Symbol 158 MovieClip {OmegaTowerDefense_fla.SellBtn_7} Frame 1Symbol 156 MovieClip
"label"Symbol 158 MovieClip {OmegaTowerDefense_fla.SellBtn_7} Frame 1Symbol 157 EditableText
"bg"Symbol 162 MovieClip {TowerDialog} Frame 1Symbol 66 MovieClip {TowerDialogBg}
"sellBtn"Symbol 162 MovieClip {TowerDialog} Frame 1Symbol 158 MovieClip {OmegaTowerDefense_fla.SellBtn_7}
"closeBtn"Symbol 162 MovieClip {TowerDialog} Frame 1Symbol 161 Button
"highlight"Symbol 166 MovieClip {OmegaTowerDefense_fla.UpgradeBtn_3} Frame 1Symbol 156 MovieClip
"label"Symbol 166 MovieClip {OmegaTowerDefense_fla.UpgradeBtn_3} Frame 1Symbol 165 EditableText
"labelTxt"Symbol 172 MovieClip {StatUpgrader} Frame 1Symbol 164 EditableText
"upgradeBtn"Symbol 172 MovieClip {StatUpgrader} Frame 1Symbol 166 MovieClip {OmegaTowerDefense_fla.UpgradeBtn_3}
"bar"Symbol 172 MovieClip {StatUpgrader} Frame 1Symbol 168 MovieClip {StatBar}
"minTxt"Symbol 172 MovieClip {StatUpgrader} Frame 1Symbol 170 EditableText
"maxTxt"Symbol 172 MovieClip {StatUpgrader} Frame 1Symbol 171 EditableText

Special Tags

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




http://swfchan.com/10/48834/info.shtml
Created: 28/1 -2009 13:01:27 Last modified: 28/1 -2009 13:01:27 Server time: 22/07 -2017 16:33:48