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

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

Storm Astrum Defense.swf

This is the info page for
Flash #29245

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


Text
Play

Closed to Play

<p align="left"><font face="Times New Roman" size="16" color="#cccccc" letterSpacing="0.000000" kerning="1">The reachest region on uranium in all Eartlock.</font></p><p align="left"><font face="Times New Roman" size="16" color="#cccccc" letterSpacing="0.000000" kerning="1">Enemy has fortified its position very strongly. </font></p>

<p align="left"><font face="Times New Roman" size="15" color="#00ff00" letterSpacing="0.000000" kerning="1"><b>You must survive in 20 waves.</b></font></p>

<p align="left"><font face="Times New Roman" size="19" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>Region #3. Baranda</b></font></p>

1

2

3

4

7

11

9

8

5

6

10

13

15

14

12

Storm. Astrum Defense.

<p align="justify"><font face="Times New Roman" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">Astrum is planet with high-grade deposit of uranium, the general trade resource.</font></p><p align="justify"><font face="Times New Roman" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">Industrial Guild laid waste its forces over reachest region of the &nbsp;recently researched planet.</font></p><p align="justify"><font face="Times New Roman" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">Defense Guild has sent you to protect planet from assault. You must defend planet and consolidate influence of the Defense Guild among Guild Union...</font></p><p align="justify"></p><p align="justify"></p>

Defense Guild

Industrial Guild

Clan Norads

Clan Gobalts

<p align="justify"></p>

Region #1 is occupied by the norad forces! We must protect it...

<p align="left"><font face="Times New Roman" size="14" color="#33ff00" letterSpacing="0.000000" kerning="1"><b><i>You must withstand 25 waves</i></b></font></p>

Name for Highscore List:

<p align="left"></p>

<p align="left"><font face="Times New Roman" size="14" color="#ff0000" letterSpacing="0.000000" kerning="1"><b>You must enter your name.</b></font></p>

ActionScript [AS3]

Section 1
//AnimatedBitmap (fai.AnimatedBitmap) package fai { import flash.display.*; import flash.geom.*; public class AnimatedBitmap extends Bitmap { private var point:Point;// = null private var rect:Rectangle;// = null public var curbuffer:BitmapData;// = null public var nframes:uint;// = 0 public var framen:uint;// = 0 public function AnimatedBitmap(_arg1:BitmapData, _arg2:int, _arg3:int):void{ nframes = 0; curbuffer = null; framen = 0; point = null; rect = null; super(new BitmapData(_arg2, _arg3, true, 0), "auto", true); point = new Point(0, 0); setBuffer(_arg1); } public function setBuffer(_arg1:BitmapData):void{ if (((_arg1) && (!((curbuffer == _arg1))))){ curbuffer = _arg1; nframes = (curbuffer.width / width); framen = 0; draw(); }; } public function setFrame(_arg1:uint):void{ if (_arg1 == framen){ return; }; framen = _arg1; draw(); } private function draw():void{ var _local1:BitmapData; _local1 = bitmapData; rect = new Rectangle((framen * width), 0, width, height); _local1.copyPixels(curbuffer, rect, point); bitmapData = _local1; smoothing = true; } } }//package fai
Section 2
//Astar (fai.Astar) package fai { public class Astar { public var ns:Array;// = null public var checkxy:Function;// = null public var tid:uint;// = 0 private var nextbestpos:Position;// = null public var map:MapMatrix;// = null private var opened:AstarMap;// = null private var closed:AstarMap;// = null private var openedMap:AstarMap;// = null public function Astar(_arg1:MapMatrix):void{ checkxy = null; map = null; ns = null; opened = null; closed = null; openedMap = null; nextbestpos = null; tid = 0; super(); checkxy = checkwallid; map = _arg1; ns = new Array(); } private function addToOpened(_arg1:AstarNode):void{ opened.add(_arg1.key(), _arg1); openedMap.add(_arg1.h, _arg1); } public function hestimate(_arg1:Position, _arg2:Position):uint{ return ((Math.abs((_arg1.x - _arg2.x)) + Math.abs((_arg1.y - _arg2.y)))); } public function checkwall(_arg1:uint, _arg2:uint):Boolean{ return (!((Consts.Wall == map.getxy(_arg1, _arg2)))); } public function checknotempty(_arg1:uint, _arg2:uint):Boolean{ return (!(map.getxy(_arg1, _arg2))); } public function allgood(_arg1:uint, _arg2:uint):Boolean{ return (true); } public function search(_arg1:Position, _arg2:Position, _arg3:Array, _arg4:Boolean):Boolean{ var _local5:int; var _local6:int; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:int; var _local11:AstarNode; var _local12:AstarNode; var _local13:AstarNode; var _local14:AstarNode; var _local15:Position; var _local16:AstarNode; var _local17:*; _local5 = 0; _local6 = 500; nextbestpos = null; ns.length = 0; _arg3.length = 0; opened = new AstarMap(); openedMap = new AstarMap(); closed = new AstarMap(); _local7 = 0; _local8 = 0; _local9 = 0; _local10 = 0; _local11 = null; _local12 = null; _local13 = new AstarNode(); _local14 = null; _local13.pos = _arg1; _local13.f = (_local13.h = hestimate(_arg1, _arg2)); if (!checkwallid(_arg2.x, _arg2.y)){ neighbours(_arg2); if (ns.length != 0){ _arg2.x = ns[0].x; _arg2.y = ns[0].y; ns.length = 0; } else { return (false); }; }; addToOpened(_local13); while (!(opened.empty())) { _local5++; if (((_arg4) && ((_local5 > _local6)))){ return (false); }; _local14 = getBestNode(); if (_local14.pos.isequal(_arg2)){ _local16 = _local14; while (_local16 != _local13) { _arg3.unshift(_local16.pos); _local16 = _local16.parent; }; return (true); }; neighbours(_local14.pos); for each (_local15 in ns) { _local7 = (_local14.g + hestimate(_local14.pos, _local15)); _local8 = hestimate(_local15, _arg2); _local10 = (_local7 + _local8); _local11 = opened.get(((_local15.x * 1000) + _local15.y)); if (((_local11) && ((_local11.f <= _local10)))){ } else { _local12 = closed.get(((_local15.x * 1000) + _local15.y)); if (((_local12) && ((_local12.f <= _local10)))){ } else { if (_local11){ opened.remove(_local11.key()); openedMap.removeNode(_local11.h, _local11); }; if (_local12){ closed.remove(_local12.key()); }; _local17 = new AstarNode(); _local17.pos = _local15; _local17.g = _local7; _local17.h = _local8; _local17.f = _local10; _local17.parent = _local14; addToOpened(_local17); }; }; }; closed.add(_local14.key(), _local14); }; return (false); } public function checkwallid(_arg1:uint, _arg2:uint):Boolean{ var _local3:uint; _local3 = map.getxy(_arg1, _arg2); return (((((((!((_local3 == Consts.Wall))) && (!((_local3 == Consts.oreId))))) && (!((_local3 == Consts.uraniumId))))) && (!((_local3 == tid))))); } public function neighbours(_arg1:Position):void{ ns.length = 0; if ((((_arg1.x > 0)) && (checkxy((_arg1.x - 1), _arg1.y)))){ ns.push(new Position((_arg1.x - 1), _arg1.y)); if ((((_arg1.y < (map.v - 1))) && (checkxy((_arg1.x - 1), (_arg1.y + 1))))){ ns.push(new Position((_arg1.x - 1), (_arg1.y + 1))); }; if ((((_arg1.y > 0)) && (checkxy((_arg1.x - 1), (_arg1.y - 1))))){ ns.push(new Position((_arg1.x - 1), (_arg1.y - 1))); }; }; if ((((_arg1.y > 0)) && (checkxy(_arg1.x, (_arg1.y - 1))))){ ns.push(new Position(_arg1.x, (_arg1.y - 1))); }; if ((((_arg1.x < (map.h - 1))) && (checkxy((_arg1.x + 1), _arg1.y)))){ ns.push(new Position((_arg1.x + 1), _arg1.y)); if ((((_arg1.y < (map.v - 1))) && (checkxy((_arg1.x + 1), (_arg1.y + 1))))){ ns.push(new Position((_arg1.x + 1), (_arg1.y + 1))); }; if ((((_arg1.y > 0)) && (checkxy((_arg1.x + 1), (_arg1.y - 1))))){ ns.push(new Position((_arg1.x + 1), (_arg1.y - 1))); }; }; if ((((_arg1.y < (map.v - 1))) && (checkxy(_arg1.x, (_arg1.y + 1))))){ ns.push(new Position(_arg1.x, (_arg1.y + 1))); }; } private function getBestNode():AstarNode{ var _local1:AstarNode; _local1 = openedMap.shift(); opened.remove(_local1.key()); return (_local1); } } }//package fai class AstarNode { public var f:uint;// = 0 public var g:uint;// = 0 public var h:uint;// = 0 public var parent:AstarNode;// = null public var pos:Position;// = null private function AstarNode(){ f = 0; g = 0; h = 0; parent = null; pos = null; super(); } public function key():uint{ return (((pos.x * 1000) + pos.y)); } } class AstarMap extends Map { private function AstarMap(){ } public function removeNode(_arg1:int, _arg2:AstarNode):void{ var _local3:int; if (find(_arg1)){ if (!values[index_].pos.isequal(_arg2.pos)){ _local3 = (index_ - 1); while ((((_local3 >= 0)) && ((keys[_local3] == _arg1)))) { if (values[_local3].pos.isequal(_arg2.pos)){ keys.splice(_local3, 1); values.splice(_local3, 1); return; }; _local3--; }; _local3 = (index_ + 1); while ((((_local3 < keys.length)) && ((keys[_local3] == _arg1)))) { if (values[_local3].pos.isequal(_arg2.pos)){ keys.splice(_local3, 1); values.splice(_local3, 1); return; }; _local3++; }; trace("ERROR ___ 1"); } else { keys.splice(index_, 1); values.splice(index_, 1); }; }; } }
Section 3
//AtomicBombGoal (fai.AtomicBombGoal) package fai { public class AtomicBombGoal extends Goal { private var engine:Engine;// = null private var abomb:AtomicBomb;// = null public function AtomicBombGoal(_arg1:Engine, _arg2:AtomicBomb):void{ engine = null; abomb = null; super(); engine = _arg1; abomb = _arg2; } public function advance():void{ if (!abomb.bombtimer){ deactivate(); }; } override public function deactivate():void{ super.deactivate(); abomb.clean(); abomb = null; } } }//package fai
Section 4
//AttackGoal (fai.AttackGoal) package fai { public class AttackGoal extends Goal { public var preciseTarget:Unit;// = null public var world:MapMatrix;// = null public var attacktarget:Unit;// = null private var recharging:int;// = 0 public var paused:Boolean;// = false private var precisePos:Position;// = null public var hostilecamp:Camp;// = null public function AttackGoal(_arg1:Unit, _arg2:Camp, _arg3:MapMatrix):void{ hostilecamp = null; world = null; attacktarget = null; recharging = 0; paused = false; preciseTarget = null; precisePos = null; super(); owner = _arg1; hostilecamp = _arg2; world = _arg3; } public function advance():void{ var _local1:Unit; _local1 = null; if (Consts.ATTACK == owner.cstate){ if (recharging > 0){ recharging--; if (((((!(recharging)) && (!(paused)))) && (!(preciseAttack())))){ _local1 = hostilecamp.getNearestUnit(owner.pos, owner.eyerange); if (_local1 != null){ owner.startattack(_local1); } else { owner.reset(); owner.sprite.setMoveSprite(); return; }; }; } else { owner.attack(); }; if ((((Consts.IDLE == owner.cstate)) && (!(paused)))){ if (preciseAttack()){ recharging = owner.rechargetime; } else { _local1 = hostilecamp.getNearestUnit(owner.pos, owner.eyerange); if (_local1 != null){ recharging = owner.rechargetime; owner.startattack(_local1); } else { owner.sprite.setMoveSprite(); }; }; }; } else { if ((((((Consts.IDLE == owner.cstate)) && (!(paused)))) && (!(preciseAttack())))){ _local1 = hostilecamp.getNearestUnit(owner.pos, owner.eyerange); if (_local1 != null){ owner.startattack(_local1); }; }; }; } public function preciseAttack():Boolean{ var _local1:int; var _local2:int; var _local3:Boolean; if (!preciseTarget){ return (false); }; if (!preciseTarget.isLive()){ clearPreciseTarget(); return (false); }; _local1 = (owner.pos.x - preciseTarget.pos.x); _local2 = (owner.pos.y - preciseTarget.pos.y); _local3 = (Math.sqrt(((_local1 * _local1) + (_local2 * _local2))) <= owner.eyerange); if (!_local3){ if (owner.building){ clearPreciseTarget(); return (false); }; if (((!(precisePos)) || (!(precisePos.isequal(preciseTarget.pos))))){ owner.life.move(preciseTarget.pos); precisePos = preciseTarget.pos; }; return (true); }; owner.startattack(preciseTarget); return (true); } public function clearPreciseTarget():void{ precisePos = null; preciseTarget = null; } } }//package fai
Section 5
//BulletGoal (fai.BulletGoal) package fai { import flash.display.*; public class BulletGoal extends Goal { public var engine:Engine;// = null public var sprite:AnimatedBitmap;// = null private var gip:int;// = 0 public var bullet:Sprite; private var hitpos:Position;// = null public var assaulter:Unit;// = null public var subject:Unit;// = null private var frame:int;// = 0 public function BulletGoal(_arg1:Unit, _arg2:Unit, _arg3:Position, _arg4:Engine):void{ var _local5:int; var _local6:int; assaulter = null; subject = null; sprite = null; engine = null; gip = 0; hitpos = null; bullet = new Sprite(); frame = 0; super(); engine = _arg4; assaulter = _arg1; subject = _arg2; sprite = new AnimatedBitmap(assaulter.sprite.bullet, 24, 24); bullet.addChild(sprite); sprite.y = (sprite.y - (Math.min(_arg1.sprite.width, _arg2.sprite.width) / 2)); sprite.x = (sprite.x - (Math.min(_arg1.sprite.sprite.width, _arg2.sprite.sprite.width) / 2)); hitpos = subject.pos; bullet.x = _arg1.sprite.x; bullet.y = _arg1.sprite.y; bullet.rotation = (((Math.atan2((_arg3.y - _arg1.sprite.y), (_arg3.x - _arg1.sprite.x)) / Math.PI) * 180) - 90); _local5 = (subject.pos.x - assaulter.pos.x); _local6 = (subject.pos.y - assaulter.pos.y); gip = (Math.sqrt(((_local5 * _local5) + (_local6 * _local6))) * Consts.cellsize); } public function advance():void{ var _local1:int; if (gip <= 0){ if (frame >= sprite.nframes){ deactivate(); } else { sprite.setFrame(frame); frame++; return; }; } else { gip = (gip - assaulter.bulletspeed); if (gip <= 0){ sprite.y = (sprite.y + (assaulter.bulletspeed + gip)); sprite.setBuffer(assaulter.sprite.bulletexp); if (subject.pos.isequal(hitpos)){ engine.hitUnit(assaulter.damage, subject); } else { if ((((Math.abs((subject.pos.x - hitpos.x)) == 1)) || ((Math.abs((subject.pos.y - hitpos.y)) == 1)))){ engine.hitUnit((assaulter.damage / 2), subject); }; }; if (!subject.isLive()){ assaulter.killed++; _local1 = (assaulter.killed / 50); if (assaulter.upgradeLevel < _local1){ engine.upgradeUnit(assaulter); }; if (engine.isSelectedUnit(assaulter)){ engine.menu.updateInfo(); }; }; } else { sprite.y = (sprite.y + assaulter.bulletspeed); }; }; } override public function deactivate():void{ super.deactivate(); if (bullet){ bullet.removeChild(sprite); engine.bulletlayer.removeChild(bullet); sprite = null; assaulter = (subject = null); bullet = null; }; } } }//package fai
Section 6
//Camp (fai.Camp) package fai { public class Camp { public var units:Array; public function Camp(){ units = new Array(); super(); } public function getUnder(_arg1:Position):Unit{ var _local2:Unit; var _local3:int; _local2 = null; _local3 = 0; while (_local3 < units.length) { _local2 = units[_local3]; if (((((((((_local2.sprite.x - (_local2.spritewidth / 2)) <= _arg1.x)) && ((_arg1.x < (_local2.sprite.x + (_local2.spritewidth / 2)))))) && (((_local2.sprite.y - (_local2.sprite.height / 2)) <= _arg1.y)))) && ((_arg1.y < (_local2.sprite.y + (_local2.sprite.height / 2)))))){ return (_local2); }; _local3++; }; return (null); } public function remove(_arg1:Unit):void{ var _local2:uint; _local2 = 0; while (_local2 < units.length) { if (units[_local2] == _arg1){ delete units[_local2]; units.splice(_local2, 1); break; }; _local2++; }; } public function add(_arg1:Unit):void{ units[units.length] = _arg1; } public function getUnderSelection(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Array):void{ var _local6:Unit; var _local7:int; _arg5.length = 0; _local6 = null; _local7 = 0; while (_local7 < units.length) { _local6 = units[_local7]; if ((((((((((_local6.pos.x >= _arg1)) && ((_local6.pos.x <= (_arg1 + _arg3))))) && ((_local6.pos.y >= _arg2)))) && ((_local6.pos.y <= (_arg2 + _arg4))))) && (!(((_local6.building) && (_local6.peaceful)))))){ _arg5.push(_local6); }; _local7++; }; } public function getNearestUnit(_arg1:Position, _arg2:int):Unit{ var _local3:Unit; var _local4:int; var _local5:Unit; var _local6:int; var _local7:int; _local3 = null; _local4 = 9999999; _local5 = null; _local6 = 0; while (_local6 < units.length) { _local5 = units[_local6]; _local7 = distanceFrom(_arg1, _local5); if (_local7 <= _arg2){ if (_local7 < _local4){ _local4 = _local7; _local3 = _local5; }; }; _local6++; }; return (_local3); } public function getByType(_arg1:String):Unit{ var _local2:Unit; var _local3:int; _local2 = null; _local3 = 0; while (_local3 < units.length) { _local2 = units[_local3]; if (_local2.type == _arg1){ return (_local2); }; _local3++; }; return (null); } public function size():uint{ return (units.length); } public function getNearUnitById(_arg1:Position, _arg2:int, _arg3:int):Unit{ var _local4:Unit; var _local5:int; var _local6:int; var _local7:int; var _local8:*; _local4 = null; _local5 = 0; while (_local5 < units.length) { _local4 = units[_local5]; if (_local4.mapid != _arg3){ } else { _local6 = (_local4.pos.x - _arg1.x); _local7 = (_local4.pos.y - _arg1.y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); if (_local8 <= _arg2){ return (_local4); }; }; _local5++; }; return (null); } public function isUnitNear(_arg1:Position, _arg2:int):Boolean{ var _local3:Unit; var _local4:int; var _local5:int; _local3 = null; _local4 = 0; while (_local4 < units.length) { _local3 = units[_local4]; _local5 = distanceFrom(_arg1, _local3); if (_local5 <= _arg2){ return (true); }; _local4++; }; return (false); } public function getInMapUnder(_arg1:Position):Unit{ var _local2:Unit; var _local3:int; _local2 = null; _local3 = 0; while (_local3 < units.length) { _local2 = units[_local3]; if ((((_local2.pos.x == _arg1.x)) && ((_local2.pos.y == _arg1.y)))){ return (_local2); }; _local3++; }; return (null); } public static function distanceFrom(_arg1:Position, _arg2:Unit):int{ var _local3:int; var _local4:int; _local3 = (_arg2.pos.x - _arg1.x); _local4 = (_arg2.pos.y - _arg1.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } } }//package fai
Section 7
//Consts (fai.Consts) package fai { public class Consts { public static const PICKING:uint = 10; public static const defaultScrollSpeed:int = 50; public static const PathfindingsPerTick:int = 1; public static const UNIT_LEAVE_COUNT:int = 100; public static const maxLogMsgs:int = 10; public static const uraniumportion:int = 8; public static const oreId:int = 10; public static const cornerWindow:int = 150; public static const hostileId:uint = 4; public static const harvRange:int = 5; public static const upgradeHExtra:Number = 0.3; public static const oreportion:int = 8; public static const nitrobombDamage:int = 200; public static const ATTACK:uint = 1; public static const UnitWaveCount:int = 30; public static const MOVING:uint = 2; public static const abombcost:int = 150; public static const IDLE:uint = 0; public static const upgradeDExtra:Number = 0.15; public static const cellsize:uint = 35; public static const myId:uint = 3; public static const oreLoad:int = 50; public static const Wall:uint = 1; public static const DEATH:uint = 3; public static const GOALSCLEANPAUSE:uint = 10; public static const maxenergy:int = 250; public static const uraniumId:int = 11; public static const cumulativebombDamage:int = 500; public static const tickrate:int = 50; } }//package fai
Section 8
//CustomCursor (fai.CustomCursor) package fai { import flash.display.*; import flash.ui.*; public class CustomCursor extends Sprite { private var size:uint;// = 20 public var enabled:Boolean;// = false private var engine:Engine;// = null public function CustomCursor(_arg1:Engine):void{ engine = null; size = 20; enabled = false; super(); engine = _arg1; visible = false; draw(); } private function draw():void{ graphics.clear(); graphics.lineStyle(2, 0xFF00); graphics.drawEllipse((-(size) / 2), (-(size) / 4), size, (size / 2)); } public function hide():void{ visible = false; Mouse.show(); } public function enable(_arg1:Boolean):void{ if (_arg1){ x = engine.globalstage.stage.mouseX; y = engine.globalstage.stage.mouseY; show(); } else { hide(); }; enabled = _arg1; } public function show():void{ Mouse.hide(); visible = true; } } }//package fai
Section 9
//DieGoal (fai.DieGoal) package fai { public class DieGoal extends Goal { public var engine:Engine;// = null public var unit:Unit;// = null private var lifegoal:LifeGoal;// = null private var leave:int;// = 100 public function DieGoal(_arg1:Unit, _arg2:Engine, _arg3:LifeGoal):void{ unit = null; engine = null; leave = Consts.UNIT_LEAVE_COUNT; lifegoal = null; super(); unit = _arg1; engine = _arg2; lifegoal = _arg3; unit.startdie(); engine.unitlayer.setChildIndex(unit.sprite, 0); } public function advance():void{ if (Consts.DEATH == unit.cstate){ unit.die(); return; }; if (leave > 0){ leave--; return; }; deactivate(); } override public function deactivate():void{ super.deactivate(); lifegoal.destroy(true); } } }//package fai
Section 10
//EffectGoal (fai.EffectGoal) package fai { public class EffectGoal extends Goal { public var engine:Engine;// = null public var sprite:AnimatedBitmap;// = null private var pause:int;// = 0 private var frame:int;// = 0 public function EffectGoal(_arg1:AnimatedBitmap, _arg2:Engine):void{ sprite = null; engine = null; pause = 0; frame = 0; super(); engine = _arg2; sprite = _arg1; } public function advance():void{ if (pause > 0){ pause--; return; }; if (frame >= sprite.nframes){ deactivate(); } else { sprite.setFrame(frame); frame++; pause = 1; return; }; } override public function deactivate():void{ super.deactivate(); if (sprite){ engine.bulletlayer.removeChild(sprite); sprite = null; }; } } }//package fai
Section 11
//Engine (fai.Engine) package fai { import flash.events.*; import flash.display.*; import flash.media.*; import flash.text.*; import flash.utils.*; import flash.net.*; public class Engine { public var customcursor:CustomCursor;// = null public var backgr:Sprite;// = null public var gamewidth:int;// = 0 public var comp:Player;// = null public var camps:Array; public var mapstage:Sprite;// = null public var currentMap:LevelMap;// = null public var utypes:UnitTypes;// = null public var userid:int;// = 0 public var resources:Camp; public var paused:Boolean;// = false public var events:GameEvents;// = null public var globalstage:MovieClip;// = null public var sloader:SmartLoader;// = null public var unitlayer:Sprite;// = null public var gobaltid:int;// = 0 private var backbitmaps:Array; public var menu:GameMenu;// = null public var ccursor:MouseCursor;// = null public var mapheight:int;// = 0 public var labs:Dictionary; public var selshape:Shape;// = null public var bulletlayer:Sprite;// = null public var scenario:Scenario;// = null public var nechelons:int;// = 0 public var world:MapMatrix;// = null public var score:int;// = 0 public var selectedUnits:Array; public var gamesid:String;// = "" public var gameheight:int;// = 0 public var scrollspeed:int; public var wtxt:TextField;// = null public var my:Player;// = null public var logmsg:Array; public var goals:Array; public var noradid:int;// = 0 public var mapwidth:int;// = 0 public var uranium:int;// = 0 private var counter:int;// = 0 public var actions:GameActions;// = null public static var stageRadius = 0; public function Engine(_arg1:MovieClip, _arg2:SmartLoader):void{ goals = new Array(); world = null; camps = new Array(); counter = 0; mapstage = null; globalstage = null; selshape = null; ccursor = null; backgr = null; unitlayer = null; bulletlayer = null; sloader = null; my = null; comp = null; resources = new Camp(); menu = null; utypes = null; uranium = 0; score = 0; paused = false; scenario = null; scrollspeed = Consts.defaultScrollSpeed; mapwidth = 0; mapheight = 0; gamewidth = 0; gameheight = 0; wtxt = null; actions = null; events = null; gobaltid = 0; noradid = 0; labs = new Dictionary(); logmsg = new Array(); backbitmaps = new Array(); nechelons = 0; gamesid = ""; userid = 0; customcursor = null; selectedUnits = new Array(); currentMap = null; super(); gamewidth = _arg1.stage.stageWidth; gameheight = _arg1.stage.stageHeight; sloader = _arg2; sloader.engine = this; globalstage = _arg1; utypes = new UnitTypes(sloader); utypes.engine = this; KeyboardKeys.init(globalstage); actions = new GameActions(this); events = new GameEvents(this); customcursor = new CustomCursor(this); } private function authComplete(_arg1:Event):void{ var _local2:URLLoader; _local2 = URLLoader(_arg1.target); if ("failed" == _local2.data.status){ log("Authorization failed. Your can't save your score.\nTry to reload game."); return; }; log("Authorization: ok."); gamesid = _local2.data.sid; } public function getUnitUnder(_arg1:Position):Unit{ var _local2:Unit; _local2 = comp.camp.getInMapUnder(_arg1); if (!_local2){ _local2 = my.camp.getInMapUnder(_arg1); }; return (_local2); } public function isSelectedUnit(_arg1:Unit):Boolean{ if ((((selectedUnits.length == 1)) && ((selectedUnits[0] == _arg1)))){ return (true); }; return (false); } public function buildUnit(_arg1:String, _arg2:int, _arg3:int, _arg4:Boolean):Unit{ var _local5:Unit; var _local6:Camp; var _local7:MineGoal; _local5 = utypes.createUnit(_arg1); _local5.pos.set(_arg2, _arg3); addUnit(_local5); if (((_arg4) && (!(_local5.peaceful)))){ _local6 = ((_local5.mapid == Consts.myId)) ? comp.camp : my.camp; _local5.life.attack(_local6); } else { if (_arg1 == UnitTypes.urefinery){ _local7 = new MineGoal(this, _local5); _local5.life.goals.push(_local7); }; }; return (_local5); } public function restart():void{ gobaltid = Consts.myId; noradid = Consts.hostileId; events.register(); menu.reset(); menu.resources.update(); scenario.start(); log("Tip:"); log("Build turrets nearer to the Command Center and use its fire power."); } private function removeUnit(_arg1:Unit):void{ var _local2:Camp; var _local3:int; var _local4:int; if (_arg1.spritewidth > Consts.cellsize){ _local3 = (_arg1.pos.x - 1); while (_local3 <= (_arg1.pos.x + 1)) { _local4 = (_arg1.pos.y - 1); while (_local4 <= (_arg1.pos.y + 1)) { if ((((((((_local3 < world.h)) && ((_local3 > 0)))) && ((_local4 > 0)))) && ((_local4 < world.v)))){ world.setxy(_local3, _local4, 0); }; _local4++; }; _local3++; }; } else { world.setpos(_arg1.pos, 0); }; _local2 = null; if (_arg1.mapid == Consts.myId){ _local2 = my.camp; } else { if (_arg1.mapid == Consts.hostileId){ _local2 = comp.camp; }; }; if (_local2){ _local2.remove(_arg1); }; } public function loadLevel(_arg1:LevelMap):void{ var _local2:AnimatedBitmap; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:XMLList; var _local8:XML; var _local9:XMLList; var _local10:XML; var _local11:Unit; var _local12:XMLList; var _local13:XML; var _local14:AnimatedBitmap; var _local15:AnimatedBitmap; var _local16:AnimatedBitmap; mapwidth = _arg1.data.size.@width; mapheight = _arg1.data.size.@height; stageRadius = (Math.sqrt(((gamewidth * gamewidth) + (gameheight * gameheight))) / 3); world = new MapMatrix(mapwidth, mapheight); createMap(); createBackground(); my = new Player(this); comp = new Player(this); camps.length = 0; camps.push(my.camp); camps.push(comp.camp); _local2 = sloader.getGround(_arg1.data.background.@type); _local3 = ((mapstage.width / _local2.width) + 1); _local4 = ((mapstage.height / _local2.height) + 1); _local5 = 0; _local6 = 0; _local5 = 0; while (_local5 < _local4) { _local6 = 0; while (_local6 < _local3) { _local14 = sloader.getGround(_arg1.data.background.@type); _local14.x = (_local6 * _local2.width); _local14.y = (_local5 * _local2.height); backgr.addChild(_local14); backbitmaps.push(_local14); _local6++; }; _local5++; }; _local7 = _arg1.data.decor; for each (_local8 in _local7) { _local15 = sloader.getGround(_local8.@type); _local15.x = (_local8.@x * Consts.cellsize); _local15.y = (_local8.@y * Consts.cellsize); backgr.addChild(_local15); backbitmaps.push(_local15); }; _local9 = _arg1.data.wall; for each (_local10 in _local9) { _local16 = sloader.getGround(_local10.@type); _local16.x = (_local10.@x * Consts.cellsize); _local16.y = (_local10.@y * Consts.cellsize); backgr.addChild(_local16); backbitmaps.push(_local16); _local3 = ((_local16.width / Consts.cellsize) + 1); _local4 = ((_local16.height / Consts.cellsize) + 1); _local5 = 0; while (_local5 < _local4) { _local6 = 0; while (_local6 < _local3) { world.setxy((int(_local10.@x) + _local6), (int(_local10.@y) + _local5), Consts.Wall); _local6++; }; _local5++; }; }; _local11 = null; _local12 = _arg1.data.unit; for each (_local13 in _local12) { buildUnit(_local13.@type, _local13.@x, _local13.@y, true); }; nechelons = _arg1.data.scenario.nechelons.@value; wtxt = Utils.createTextField(0xFFFFFF, 12); wtxt.y = 35; globalstage.addChildAt(wtxt, 1); uranium = _arg1.data.scenario.suranium.@value; globalstage.addChild(customcursor); moveEntireMap(0, (-(mapheight) * Consts.cellsize)); } public function removeBuildCursor():void{ if (ccursor){ ccursor.remove(); mapstage.removeChild(ccursor); ccursor = null; }; } public function playSound(_arg1:Sound, _arg2:Position):void{ var _local3:SoundTransform; var _local4:int; var _local5:int; var _local6:int; if (((!(menu.volume)) || (paused))){ return; }; _local3 = new SoundTransform(); _local4 = ((Math.abs(mapstage.x) + (gamewidth / 2)) - (_arg2.x * Consts.cellsize)); _local5 = ((Math.abs(mapstage.y) + (gameheight / 2)) - (_arg2.y * Consts.cellsize)); _local6 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); _local3.volume = (menu.volume / (1 + (_local6 / stageRadius))); _local3.pan = -((1 - (Math.abs(((Math.atan2(_local5, _local4) / Math.PI) * 180)) / 90))); _arg1.play(0, 0, _local3); } public function playExpl(_arg1:Position):void{ playSound(Sound(sloader.getLibSound(UnitTypes.shotmiddle)), _arg1); } public function moveEntireMap(_arg1:int, _arg2:int):void{ var _local3:int; var _local4:int; _local3 = (mapstage.x + _arg1); _local4 = (mapstage.y + _arg2); if (_arg1 != 0){ if (_local3 > 0){ mapstage.x = 0; } else { if ((Math.abs(_local3) + gamewidth) > (mapwidth * Consts.cellsize)){ mapstage.x = ((-(mapwidth) * Consts.cellsize) + gamewidth); } else { mapstage.x = _local3; }; }; }; if (_arg2 != 0){ if (_local4 > 0){ mapstage.y = 0; } else { if ((Math.abs(_local4) + gameheight) > (mapheight * Consts.cellsize)){ mapstage.y = ((-(mapheight) * Consts.cellsize) + gameheight); } else { mapstage.y = _local4; }; }; }; } public function log(_arg1:String):void{ logmsg.push(_arg1); updateLog(); if (events.logTimer){ events.logTimer.start(); }; } public function isUnitInSelection(_arg1:Unit):Boolean{ var _local2:Unit; for each (_local2 in selectedUnits) { if (_local2 == _arg1){ return (true); }; }; return (false); } public function createBuildingCursor(_arg1:String):void{ var _local2:Unit; var _local3:AnimatedBitmap; if (ccursor){ removeBuildCursor(); }; _local2 = utypes.params(_arg1); _local3 = new AnimatedBitmap(sloader.getBody(_arg1), _local2.spritewidth, sloader.getBody(_arg1).height); ccursor = new MouseCursor(_arg1, _local3, _local2.eyerange, _local2.costuran, _local2.spritewidth); ccursor.visible = events.mouseWithinMap; mapstage.addChild(ccursor); } private function createBackground():void{ backgr = new Sprite(); mapstage.addChildAt(backgr, 0); unitlayer = new Sprite(); mapstage.addChildAt(unitlayer, 1); bulletlayer = new Sprite(); mapstage.addChildAt(bulletlayer, 2); selshape = new Shape(); mapstage.addChildAt(selshape, 3); } public function stopall():void{ var _local1:Unit; var _local2:int; var _local3:AnimatedBitmap; if (scenario){ paused = true; scenario.stop(); scenario = null; events.unregister(); actions.clear(true); _local1 = null; _local2 = 0; _local2 = 0; while (_local2 < my.camp.units.length) { _local1 = my.camp.units[_local2]; _local1.life.destroy(true); _local2++; }; _local2 = 0; while (_local2 < comp.camp.units.length) { _local1 = comp.camp.units[_local2]; _local1.life.destroy(true); _local2++; }; _local2 = 0; while (_local2 < goals.length) { if ((goals[_local2] is LifeGoal)){ goals[_local2].destroy(true); } else { if (goals[_local2].active){ goals[_local2].deactivate(); }; }; _local2++; }; goals.length = 0; world = null; camps.length = 0; counter = 0; selshape.graphics.clear(); if (ccursor){ removeBuildCursor(); }; selectedUnits.length = 0; my.camp.units.length = 0; comp.camp.units.length = 0; resources.units.length = 0; utypes = null; uranium = 0; score = 0; menu.stat.reset(); mapwidth = 0; mapheight = 0; globalstage.removeChild(customcursor); globalstage.removeChild(wtxt); wtxt = null; labs = new Dictionary(); logmsg.length = 0; globalstage.removeChild(mapstage); mapstage.graphics.clear(); mapstage.removeChild(backgr); for each (_local3 in backbitmaps) { backgr.removeChild(_local3); _local3.bitmapData.dispose(); }; backbitmaps.length = 0; backgr = null; mapstage.removeChild(unitlayer); unitlayer = null; mapstage.removeChild(bulletlayer); bulletlayer = null; mapstage.removeChild(selshape); selshape = null; mapstage = null; paused = false; }; } public function runBullet(_arg1:Unit, _arg2:Unit, _arg3:Position):void{ var _local4:BulletGoal; _local4 = new BulletGoal(_arg1, _arg2, _arg3, this); bulletlayer.addChild(_local4.bullet); goals[goals.length] = _local4; } public function checkCursor():void{ var _local1:uint; var _local2:uint; var _local3:Boolean; var _local4:Boolean; var _local5:int; var _local6:int; if (ccursor != null){ ccursor.visible = true; _local1 = (mapstage.mouseX / Consts.cellsize); _local2 = (mapstage.mouseY / Consts.cellsize); _local3 = true; if (((!((ccursor.x == (_local1 * Consts.cellsize)))) || (!((ccursor.y == (_local2 * Consts.cellsize)))))){ ccursor.x = (_local1 * Consts.cellsize); ccursor.y = (_local2 * Consts.cellsize); if (ccursor.spritewidth > Consts.cellsize){ _local4 = false; _local5 = (_local1 - 1); while (_local5 <= (_local1 + 1)) { _local6 = (_local2 - 1); while (_local6 <= (_local2 + 1)) { if ((((((((_local5 < world.h)) && ((_local5 > 0)))) && ((_local6 > 0)))) && ((_local6 < world.v)))){ if (world.getxy(_local5, _local6) != 0){ _local3 = false; _local4 = true; break; }; }; _local6++; }; if (_local4){ break; }; _local5++; }; } else { if (world.getxy(_local1, _local2) != 0){ _local3 = false; }; }; ccursor.setGood(_local3); }; }; } public function addResources(_arg1:int):void{ uranium = (uranium + _arg1); menu.resources.update(); } public function loadMap(_arg1:LevelMap):void{ var _local2:Unit; stopall(); gobaltid = Consts.myId; noradid = Consts.hostileId; utypes = new UnitTypes(sloader); utypes.engine = this; scenario = new Scenario(this); loadLevel(_arg1); currentMap = _arg1; _local2 = my.camp.getByType(UnitTypes.cc); scenario.setCommandCenter(_local2); } public function effect(_arg1:int, _arg2:int, _arg3:String):void{ var _local4:BitmapData; var _local5:AnimatedBitmap; var _local6:EffectGoal; _local4 = sloader.specials[_arg3][0].content.bitmapData; _local5 = new AnimatedBitmap(_local4, _local4.height, _local4.height); _local5.x = _arg1; _local5.y = _arg2; bulletlayer.addChild(_local5); _local6 = new EffectGoal(_local5, this); goals[goals.length] = _local6; playSound(Sound(sloader.getLibSound(UnitTypes.shotbest)), new Position((_arg1 / Consts.cellsize), (_arg2 / Consts.cellsize))); } public function tick(_arg1:Event):void{ var _local2:uint; MoveGoal.npathfindings = 0; _local2 = 0; while (_local2 < goals.length) { if (goals[_local2].active){ goals[_local2].advance(); }; _local2++; }; if (!counter){ cleanGoals(); counter = Consts.GOALSCLEANPAUSE; } else { counter--; }; } public function destroyUnit(_arg1:Unit):void{ var _local2:uint; removeUnit(_arg1); if (_arg1.mapid == Consts.myId){ menu.stat.ilost++; } else { menu.stat.ikilled++; score = (score + (_arg1.costuran / 3)); addResources((_arg1.deathcost + ((_arg1.deathcost * _arg1.upgradeLevel) / 5))); menu.resources.update(); }; if (isUnitInSelection(_arg1)){ deselectUnit(_arg1); }; if (_arg1.mapid == Consts.hostileId){ menu.announce.subtract(_arg1.type); }; if (ccursor){ checkCursor(); }; _local2 = 0; while (_local2 < goals.length) { if (goals[_local2].owner == _arg1){ goals[_local2].deactivate(); }; _local2++; }; _arg1.health = 0; } public function deselectUnits():void{ var _local1:Unit; if (selectedUnits.length > 0){ for each (_local1 in selectedUnits) { _local1.sprite.select(0, false); }; selectedUnits.length = 0; actions.clear(true); }; } public function hitUnit(_arg1:int, _arg2:Unit):void{ if (!_arg2.isLive()){ return; }; if (_arg2.mapid == Consts.hostileId){ score = (score + 1); }; _arg2.health = (_arg2.health - (_arg1 - _arg2.armor)); if (((_arg2.sprite.selection) && (_arg2.sprite.selection.visible))){ _arg2.updateHealth(); }; if (!_arg2.isLive()){ destroyUnit(_arg2); }; if (isUnitInSelection(_arg2)){ updateMenu(); }; menu.resources.update(); } public function updateLog():void{ var _local1:String; var _local2:String; while (logmsg.length > Consts.maxLogMsgs) { logmsg.shift(); }; _local1 = ""; for each (_local2 in logmsg) { _local1 = (_local1 + (_local2 + "\n")); }; wtxt.text = _local1; } public function addUnit(_arg1:Unit):void{ var _local2:int; var _local3:int; if (_arg1.spritewidth > Consts.cellsize){ _local2 = (_arg1.pos.x - 1); while (_local2 <= (_arg1.pos.x + 1)) { _local3 = (_arg1.pos.y - 1); while (_local3 <= (_arg1.pos.y + 1)) { if ((((((((_local2 < world.h)) && ((_local2 > 0)))) && ((_local3 > 0)))) && ((_local3 < world.v)))){ world.setxy(_local2, _local3, _arg1.mapid); }; _local3++; }; _local2++; }; } else { world.setpos(_arg1.pos, _arg1.mapid); }; _arg1.activate(this); _arg1.sprite.x = (_arg1.pos.x * Consts.cellsize); _arg1.sprite.y = (_arg1.pos.y * Consts.cellsize); _arg1.sprite.visible = true; if (_arg1.mapid == Consts.myId){ my.camp.add(_arg1); } else { if (_arg1.mapid == Consts.hostileId){ comp.camp.add(_arg1); }; }; } public function isMoneyEnough(_arg1:String):Boolean{ return ((utypes.params(_arg1).costuran <= uranium)); } private function createMap():void{ mapstage = new Sprite(); mapstage.graphics.lineStyle(1, 0x666666); mapstage.graphics.beginFill(0xEAEAEA); mapstage.graphics.drawRect(0, 0, (mapwidth * Consts.cellsize), (mapheight * Consts.cellsize)); mapstage.graphics.endFill(); globalstage.addChildAt(mapstage, 0); } public function updateMenu():void{ var _local1:Unit; for each (_local1 in selectedUnits) { if (_local1.isLive()){ _local1.updateHealth(); }; }; if (selectedUnits.length > 0){ if (actions.unitAction != ""){ menu.buttons.action(); } else { if (((ccursor) || (!((actions.currentAction == ""))))){ menu.buttons.action(); } else { if (selectedUnits[0].mapid != Consts.hostileId){ menu.buttons.showButtons(selectedUnits[0].type); } else { menu.buttons.hideButtons(); }; }; }; } else { menu.buttons.hideButtons(); }; menu.updateInfo(); } public function upgradeUnit(_arg1:Unit):void{ var _local2:Unit; var _local3:UpgradeStar; _local2 = utypes.params(_arg1.type); _arg1.upgradeLevel++; _arg1.health = (_arg1.health + (_local2.health * Consts.upgradeHExtra)); _arg1.damage = (_arg1.damage + (_local2.damage * Consts.upgradeDExtra)); _arg1.movesteps = (_arg1.movesteps - _arg1.upgradeLevel); if (_arg1.movesteps < 3){ _arg1.movesteps = 3; }; if (!_arg1.sprite.star){ _local3 = new UpgradeStar(); _arg1.sprite.star = _local3; _local3.x = (_arg1.spritewidth / 2); _local3.y = _arg1.spritewidth; _arg1.sprite.addChild(_local3); }; _arg1.sprite.star.level.text = _arg1.upgradeLevel; if (isUnitInSelection(_arg1)){ updateMenu(); }; menu.resources.update(); } public function deselectUnit(_arg1:Unit):void{ var _local2:int; if (selectedUnits.length > 0){ if (isSelectedUnit(_arg1)){ _arg1.sprite.select(0, false); selectedUnits.length = 0; actions.clear(true); } else { _local2 = 0; while (_local2 < selectedUnits.length) { if (selectedUnits[_local2] == _arg1){ _arg1.sprite.select(0, false); selectedUnits.splice(_local2, 1); break; } else { _local2++; }; }; }; updateMenu(); }; } public function upgradeUnitToLevel(_arg1:Unit, _arg2:int):void{ var _local3:int; _local3 = 0; while (_local3 < _arg2) { upgradeUnit(_arg1); _local3++; }; } public function endSelection():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Array; events.selecting = false; selshape.graphics.clear(); _local1 = (events.downPoint.x - mapstage.mouseX); _local2 = (events.downPoint.y - mapstage.mouseY); if ((((_local1 == 0)) || ((_local2 == 0)))){ return; }; _local3 = events.downPoint.x; _local4 = events.downPoint.y; if (_local2 > 0){ _local4 = mapstage.mouseY; }; if (_local1 > 0){ _local3 = mapstage.mouseX; }; _local5 = new Array(); my.camp.getUnderSelection(Math.floor(((_local3 / Consts.cellsize) + 0.5)), Math.floor(((_local4 / Consts.cellsize) + 0.5)), Math.floor(((Math.abs(_local1) / Consts.cellsize) + 0.5)), Math.floor(((Math.abs(_local2) / Consts.cellsize) + 0.5)), _local5); if (_local5.length > 0){ deselectUnits(); selectedUnits = _local5; updateMenu(); }; } public function pause():void{ if (!paused){ log("Paused..."); events.unregister(); if (scenario){ scenario.thinktimer.stop(); }; } else { logmsg.pop(); updateLog(); events.register(); if (scenario){ scenario.thinktimer.start(); }; }; paused = !(paused); } private function cleanGoals():void{ var _local1:int; _local1 = 0; while (_local1 < goals.length) { if (!goals[_local1].active){ delete goals[_local1]; goals.splice(_local1, 1); } else { _local1++; }; }; } } }//package fai
Section 12
//GameActions (fai.GameActions) package fai { public class GameActions { private var engine:Engine;// = null public var currentAction:String;// = "" public var unitAction:String;// = "" public function GameActions(_arg1:Engine):void{ engine = null; currentAction = ""; unitAction = ""; super(); engine = _arg1; } public function doUnitAction():void{ var _local1:Position; _local1 = new Position(Math.floor(((engine.mapstage.mouseX / Consts.cellsize) + 0.5)), Math.floor(((engine.mapstage.mouseY / Consts.cellsize) + 0.5))); switch (unitAction){ case UnitTypes.battack: engine.my.attackTarget(_local1); break; }; clear(true); engine.updateMenu(); } private function buildConstruction(_arg1:String, _arg2:String):void{ engine.deselectUnits(); if (!engine.isMoneyEnough(_arg2)){ engine.log("Not enough resources"); return; }; engine.menu.buttons.action(); engine.createBuildingCursor(_arg2); currentAction = _arg1; } public function doCurrentAction():void{ var _local1:Position; var _local2:Unit; var _local3:AtomicBomb; _local1 = new Position(Math.floor(((engine.mapstage.mouseX / Consts.cellsize) + 0.5)), Math.floor(((engine.mapstage.mouseY / Consts.cellsize) + 0.5))); _local2 = engine.getUnitUnder(_local1); if (((!(_local2)) && (!((currentAction == UnitTypes.batomicbomb))))){ engine.log("This is not a unit."); return; }; switch (currentAction){ case UnitTypes.batomicbomb: engine.uranium = (engine.uranium - Consts.abombcost); _local3 = new AtomicBomb(_local1, engine); engine.bulletlayer.addChild(_local3); _local3.start(); engine.goals.push(new AtomicBombGoal(engine, _local3)); engine.score = (engine.score + 250); engine.menu.stat.iuranspent = (engine.menu.stat.iuranspent + Consts.abombcost); break; }; clear(true); engine.updateMenu(); engine.menu.resources.update(); } public function clear(_arg1:Boolean=false):void{ currentAction = ""; if (_arg1){ unitAction = ""; }; engine.customcursor.enable(false); } private function effectAction(_arg1:int, _arg2:String):void{ if (engine.uranium < _arg1){ engine.log("Not enough uranium"); return; }; engine.menu.buttons.action(); currentAction = _arg2; engine.customcursor.enable(true); } public function endAction():void{ switch (currentAction){ case UnitTypes.blcannon: cancelBuildingConstruction(UnitTypes.lightcannon); break; case UnitTypes.bhcannon: cancelBuildingConstruction(UnitTypes.heavycannon); break; case UnitTypes.bmissileturret: cancelBuildingConstruction(UnitTypes.missileturret); break; case UnitTypes.bbdg: cancelBuildingConstruction(UnitTypes.bdg); break; case UnitTypes.burefinery: cancelBuildingConstruction(UnitTypes.urefinery); break; case UnitTypes.bmortar: cancelBuildingConstruction(UnitTypes.mortar); break; case UnitTypes.bhowitzer: cancelBuildingConstruction(UnitTypes.howitzer); break; default: clear(true); break; }; engine.updateMenu(); } public function buttonCommand(_arg1:String):void{ switch (_arg1){ case UnitTypes.blcannon: buildConstruction(_arg1, UnitTypes.lightcannon); break; case UnitTypes.bhcannon: buildConstruction(_arg1, UnitTypes.heavycannon); break; case UnitTypes.bmissileturret: buildConstruction(_arg1, UnitTypes.missileturret); break; case UnitTypes.bbdg: buildConstruction(_arg1, UnitTypes.bdg); break; case UnitTypes.burefinery: buildConstruction(_arg1, UnitTypes.urefinery); break; case UnitTypes.bmortar: buildConstruction(_arg1, UnitTypes.mortar); break; case UnitTypes.bhowitzer: buildConstruction(_arg1, UnitTypes.howitzer); break; case UnitTypes.batomicbomb: effectAction(Consts.abombcost, _arg1); break; case UnitTypes.battack: engine.menu.buttons.action(); unitAction = _arg1; engine.customcursor.enable(true); break; case UnitTypes.bstop: engine.my.stopUnits(); break; case UnitTypes.bcancel: endAction(); break; }; } private function cancelBuildingConstruction(_arg1:String):void{ var type = _arg1; var _local3 = engine; with (_local3) { if (ccursor){ removeBuildCursor(); }; }; clear(); } } }//package fai
Section 13
//GameButtons (fai.GameButtons) package fai { import flash.events.*; import flash.display.*; public class GameButtons extends Sprite { private var tooltip:TooltipPanel;// = null public var engine:Engine;// = null public var buttons:Map;// = null private var container:Sprite;// = null public var selectedUnit:Unit;// = null public function GameButtons(_arg1:Engine):void{ engine = null; tooltip = null; buttons = null; container = null; selectedUnit = null; super(); engine = _arg1; buttons = new Map(); } public function onoutbutton(_arg1:MouseEvent):void{ if ((_arg1.currentTarget is ButtonSprite)){ _arg1.currentTarget.select(false); selectedUnit = null; engine.menu.updateInfo(); tooltip.visible = false; }; } public function create():void{ var _local1:int; var _local2:ButtonSprite; var _local3:int; container = new Sprite(); addChild(container); container.x = 2; container.y = 2; _local1 = 45; _local2 = null; _local2 = createButton(UnitTypes.burefinery, false, "7"); _local2.x = ((_local1 + 1) * 3); _local2 = createButton(UnitTypes.blcannon, false, "1"); _local2 = createButton(UnitTypes.bhcannon, false, "2"); _local2.x = (_local1 + 1); _local2 = createButton(UnitTypes.bhowitzer, false, "3"); _local2.x = ((_local1 + 1) * 2); _local2 = createButton(UnitTypes.bmissileturret, false, "4"); _local2.y = (_local1 + 1); _local2 = createButton(UnitTypes.bmortar, false, "5"); _local2.y = (_local1 + 1); _local2.x = (_local1 + 1); _local2 = createButton(UnitTypes.bbdg, false, "6"); _local2.x = ((_local1 + 1) * 2); _local2.y = (_local1 + 1); _local3 = 447; _local2 = createButton(UnitTypes.bstop, true, "S"); _local2.x = (_local1 + 1); _local2.y = ((_local1 + 1) * 2); _local2 = createButton(UnitTypes.battack, true, "A"); _local2.x = ((_local1 + 1) * 2); _local2.y = ((_local1 + 1) * 2); _local2 = createButton(UnitTypes.bcancel, true); _local2.x = ((_local1 + 1) * 2); _local2.y = ((_local1 + 1) * 2); _local2 = createButton(UnitTypes.batomicbomb); _local2.y = _local3; showButtons(UnitTypes.cc); tooltip = new TooltipPanel(engine); tooltip.y = 450; tooltip.x = 50; tooltip.visible = false; addChild(tooltip); } public function onclick(_arg1:MouseEvent):void{ if (engine.paused){ return; }; if ((_arg1.target is ButtonSprite)){ engine.actions.buttonCommand(_arg1.target.type); }; } public function onoverbutton(_arg1:MouseEvent):void{ if ((_arg1.currentTarget is ButtonSprite)){ _arg1.currentTarget.select(true); showTooltip(_arg1.target.type); selectedUnit = engine.utypes.units[engine.utypes.buttonToUnit[_arg1.currentTarget.type]]; if (selectedUnit){ engine.menu.updateInfo(); }; }; } public function action():void{ hideButtons(); buttons.get(UnitTypes.bcancel).visible = true; } private function createButton(_arg1:String, _arg2:Boolean=false, _arg3:String=""):ButtonSprite{ var _local4:AnimatedBitmap; var _local5:ButtonSprite; _local4 = engine.sloader.getButton(_arg1); _local5 = new ButtonSprite(_arg1, _local4); _local5.addEventListener(MouseEvent.CLICK, onclick); _local5.addEventListener(MouseEvent.MOUSE_OVER, onoverbutton); _local5.addEventListener(MouseEvent.MOUSE_OUT, onoutbutton); container.addChild(_local5); if (_arg3 != ""){ _local5.makeHotKey(_arg3); }; if (_arg2){ _local5.visible = false; buttons.add(_arg1, _local5); }; return (_local5); } public function showTooltip(_arg1:String):void{ switch (_arg1){ case UnitTypes.batomicbomb: tooltip.showr("Nuclear Bomb (V)", Consts.abombcost); break; }; } public function showButtons(_arg1:String):void{ hideButtons(); switch (_arg1){ default: if (!engine.utypes.params(_arg1).building){ buttons.get(UnitTypes.bstop).visible = true; if (!engine.utypes.params(_arg1).peaceful){ buttons.get(UnitTypes.battack).visible = true; }; } else { if (engine.utypes.params(_arg1).damage != 0){ buttons.get(UnitTypes.battack).visible = true; buttons.get(UnitTypes.bstop).visible = true; }; }; break; }; } public function hideButtons():void{ var _local1:ButtonSprite; for each (_local1 in buttons.values) { _local1.visible = false; }; } } }//package fai import flash.display.*; import flash.text.*; class ButtonSprite extends Sprite { private var shaped:Shape; public var type:String;// = null private var shapes:Shape; private function ButtonSprite(_arg1:String, _arg2:AnimatedBitmap):void{ type = null; shaped = new Shape(); shapes = new Shape(); super(); Utils.drawRect(shaped, 2, 532555, 8954319, _arg2.width, _arg2.height, true); shaped.alpha = 0.5; addChild(shaped); shapes.visible = false; Utils.drawRect(shapes, 2, 532555, 14998899, _arg2.width, _arg2.height, true); shapes.alpha = 0.5; addChild(shapes); type = _arg1; addChild(_arg2); } public function select(_arg1:Boolean):void{ shaped.visible = !(_arg1); shapes.visible = _arg1; } public function makeHotKey(_arg1:String):void{ var _local2:TextField; _local2 = Utils.createTextField(0xFFFFFF); _local2.text = _arg1; addChild(_local2); } } class TooltipPanel extends Sprite { private var etext:TextField;// = null private var resources:Sprite;// = null private var urant:TextField;// = null private var energy:Sprite;// = null private var tip:TextField;// = null private function TooltipPanel(_arg1):void{ var _local2:Shape; var _local3:AnimatedBitmap; tip = null; resources = null; energy = null; urant = null; etext = null; super(); _local2 = new Shape(); Utils.drawRect(_local2, 1, GameMenu.borderColor, 4086184, 130, 40); addChild(_local2); alpha = 0.8; _local3 = _arg1.sloader.getMenuItem(UnitTypes.miuranium); _local3.x = 5; _local3.y = 20; urant = Utils.createTextField(0xFF00, 10); urant.x = ((_local3.x + _local3.width) + 5); urant.y = 20; energy = new Sprite(); etext = Utils.createTextField(0xFF00, 10); etext.x = 5; etext.y = 20; energy.addChild(etext); addChild(energy); resources = new Sprite(); resources.addChild(_local3); resources.addChild(urant); addChild(resources); tip = Utils.createTextField(0xFFFFFF, 10); addChild(tip); } public function showr(_arg1:String, _arg2:int):void{ visible = true; tip.text = _arg1; resources.visible = true; energy.visible = false; urant.text = _arg2.toString(); } }
Section 14
//GameEvents (fai.GameEvents) package fai { import flash.events.*; import flash.utils.*; import flash.ui.*; public class GameEvents { private var engine:Engine;// = null public var downPoint:Position; public var dragging:Boolean;// = false public var mouseWithinMap:Boolean;// = false public var logTimer:Timer;// = null public var selecting:Boolean;// = false public var cursorpos:Position; public function GameEvents(_arg1:Engine):void{ engine = null; mouseWithinMap = false; dragging = false; selecting = false; downPoint = new Position(); cursorpos = new Position(); logTimer = null; super(); engine = _arg1; } public function unregister():void{ engine.globalstage.removeEventListener(Event.ENTER_FRAME, engine.tick); engine.globalstage.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); engine.mapstage.removeEventListener(MouseEvent.MOUSE_MOVE, onmoving); engine.mapstage.removeEventListener(MouseEvent.MOUSE_DOWN, onmousedown); engine.mapstage.removeEventListener(MouseEvent.MOUSE_UP, onmouseup); engine.mapstage.removeEventListener(MouseEvent.MOUSE_OUT, onmapmouseout); engine.mapstage.removeEventListener(MouseEvent.MOUSE_OVER, onmapmouseover); if (logTimer){ logTimer.removeEventListener(TimerEvent.TIMER, logHandler); logTimer.stop(); logTimer = null; }; } private function onmouseup(_arg1:MouseEvent):void{ dragging = false; if (selecting){ engine.endSelection(); }; } private function onmapmouseover(_arg1:MouseEvent):void{ mouseWithinMap = true; if (engine.ccursor){ engine.ccursor.visible = true; }; } private function onKeyDown(_arg1:KeyboardEvent):void{ if ((((32 == _arg1.charCode)) || ((Keyboard.ESCAPE == _arg1.keyCode)))){ engine.removeBuildCursor(); engine.actions.clear(); engine.updateMenu(); } else { switch (_arg1.charCode){ case 49: buildInCC(UnitTypes.blcannon); break; case 50: buildInCC(UnitTypes.bhcannon); break; case 51: buildInCC(UnitTypes.bhowitzer); break; case 52: buildInCC(UnitTypes.bmissileturret); break; case 53: buildInCC(UnitTypes.bmortar); break; case 54: buildInCC(UnitTypes.bbdg); break; case 55: buildInCC(UnitTypes.burefinery); break; case 86: case 118: engine.actions.clear(true); engine.actions.buttonCommand(UnitTypes.batomicbomb); engine.updateMenu(); break; case 65: case 97: if ((((engine.selectedUnits.length > 0)) && (!((engine.selectedUnits[0].mapid == Consts.hostileId))))){ engine.actions.clear(true); engine.actions.buttonCommand(UnitTypes.battack); engine.updateMenu(); }; break; case 83: case 115: if ((((engine.selectedUnits.length > 0)) && (!((engine.selectedUnits[0].mapid == Consts.hostileId))))){ engine.actions.clear(true); engine.actions.buttonCommand(UnitTypes.bstop); engine.updateMenu(); }; break; default: engine.menu.onMenuKeyDown(_arg1.charCode); break; }; }; } public function onmousedown(_arg1:MouseEvent):void{ var building:*; var selunit:Unit; var event = _arg1; downPoint.x = engine.mapstage.mouseX; downPoint.y = engine.mapstage.mouseY; if (engine.ccursor != null){ var _local3 = engine; with (_local3) { if (paused){ return; }; if (ccursor.isGood()){ if (!isMoneyEnough(ccursor.type)){ log("Not enough resources"); return; }; uranium = (uranium - ccursor.costuran); menu.stat.iuranspent = (menu.stat.iuranspent + ccursor.costuran); menu.stat.ibuilt++; building = buildUnit(ccursor.type, (mapstage.mouseX / Consts.cellsize), (mapstage.mouseY / Consts.cellsize), true); engine.actions.clear(); removeBuildCursor(); updateMenu(); menu.resources.update(); }; }; return; }; if (engine.actions.unitAction != ""){ engine.actions.doUnitAction(); } else { if (((!((engine.actions.currentAction == ""))) && ((engine.actions.currentAction == UnitTypes.batomicbomb)))){ engine.actions.doCurrentAction(); } else { if (event.shiftKey){ dragging = true; } else { selunit = engine.my.camp.getUnder(downPoint); if (!selunit){ selunit = engine.comp.camp.getUnder(downPoint); if (!selunit){ selunit = engine.resources.getUnder(downPoint); }; }; if (selunit){ if (((((!(event.ctrlKey)) || ((selunit.mapid == Consts.hostileId)))) || ((((engine.selectedUnits.length > 0)) && ((engine.selectedUnits[0].mapid == Consts.hostileId)))))){ engine.deselectUnits(); } else { if (((event.ctrlKey) && (engine.isUnitInSelection(selunit)))){ engine.deselectUnit(selunit); return; }; }; engine.selectedUnits.push(selunit); engine.updateMenu(); } else { selecting = true; }; }; }; }; } public function buildInCC(_arg1:String):void{ engine.actions.buttonCommand(_arg1); engine.checkCursor(); } public function register():void{ engine.globalstage.addEventListener(Event.ENTER_FRAME, engine.tick); engine.globalstage.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); engine.globalstage.stage.addEventListener(MouseEvent.MOUSE_MOVE, onmoving); engine.mapstage.addEventListener(MouseEvent.MOUSE_DOWN, onmousedown); engine.mapstage.addEventListener(MouseEvent.MOUSE_UP, onmouseup); engine.mapstage.addEventListener(MouseEvent.MOUSE_OUT, onmapmouseout); engine.mapstage.addEventListener(MouseEvent.MOUSE_OVER, onmapmouseover); logTimer = new Timer(3000, 0); logTimer.addEventListener(TimerEvent.TIMER, logHandler); if (engine.logmsg.length > 0){ logTimer.start(); }; } private function logHandler(_arg1:TimerEvent):void{ if (engine.logmsg.length > 0){ engine.logmsg.shift(); engine.updateLog(); if (!engine.logmsg.length){ logTimer.stop(); }; }; } private function onmoving(_arg1:MouseEvent):void{ cursorpos.x = _arg1.stageX; cursorpos.y = _arg1.stageY; engine.checkCursor(); if (engine.customcursor.enabled){ engine.customcursor.x = cursorpos.x; engine.customcursor.y = cursorpos.y; }; if (selecting){ if (!_arg1.buttonDown){ engine.endSelection(); return; }; engine.selshape.graphics.clear(); engine.selshape.graphics.lineStyle(1, 0xFF00); engine.selshape.graphics.drawRect(downPoint.x, downPoint.y, -((downPoint.x - engine.mapstage.mouseX)), -((downPoint.y - engine.mapstage.mouseY))); }; } private function onmapmouseout(_arg1:MouseEvent):void{ mouseWithinMap = false; if (engine.ccursor){ engine.ccursor.visible = false; }; } public function isSelectedType(_arg1:String):Boolean{ if (engine.selectedUnits.length != 1){ return (false); }; return ((engine.selectedUnits[0].type == _arg1)); } } }//package fai
Section 15
//GameMenu (fai.GameMenu) package fai { import flash.events.*; import flash.display.*; import flash.text.*; import flash.utils.*; import flash.net.*; public class GameMenu extends Sprite { private var acceptCodes:Boolean;// = false public var resources:Resources;// = null private var intomainmenubutton:WebButton;// = null private var engine:Engine;// = null public var stat:Statistics;// = null public var announce:Announce;// = null private var intro:Intro;// = null private var atl:arcadetown_logo;// = null public var uinfo:UnitInfoPanel;// = null public var pausebutton:WebButton;// = null public var startmenu:StartMenu;// = null private var ararray:Array;// = null private var menuparent:Sprite;// = null private var submitform:SubmitHighscores;// = null private var aboutbutton:WebButton;// = null public var volume:Number;// = 1 private var isFunMode:Boolean;// = false public var introholder:Sprite;// = null public var levelmap:Sprite;// = null private var buttonsparent:Sprite;// = null public var buttons:GameButtons;// = null private var areas:Areas;// = null private var about:About;// = null public var currentArea:int;// = 0 private var ilp:InterlevelPopup;// = null private var volbutton:WebButton;// = null private var ilptimer:Timer;// = null public static const fillColor:int = 8954319; public static const borderColor:int = 532555; public function GameMenu(_arg1:Engine):void{ engine = null; menuparent = null; buttonsparent = null; pausebutton = null; aboutbutton = null; volbutton = null; announce = null; about = null; startmenu = null; stat = null; volume = 1; resources = null; buttons = null; uinfo = null; acceptCodes = false; ararray = null; currentArea = 0; levelmap = null; areas = null; introholder = null; intro = null; intomainmenubutton = null; ilp = null; ilptimer = null; isFunMode = false; atl = null; submitform = null; super(); engine = _arg1; engine.menu = this; engine.globalstage.addChild(this); } public function saveLocally():void{ var _local1:*; _local1 = SharedObject.getLocal("StormAD"); _local1.data.currentArea = currentArea; _local1.flush(); } public function victory():void{ if (engine.currentMap.data.@number == currentArea){ currentArea++; saveLocally(); }; stat.playnext.visible = (currentArea < 15); stat.caption.text = "Victory!!!"; stat.keepplaying.visible = true; stat.iscore = engine.score; stat.update(); engine.pause(); stat.visible = true; submitform.visible = false; } private function atlout(_arg1:MouseEvent):void{ atl.scaleX = (atl.scaleY = 0.7); } private function onsavescore(_arg1:MouseEvent):void{ submitform.visible = true; submitform.msg.visible = false; } public function onplaymoregames(_arg1:MouseEvent):void{ var _local2:String; var _local3:String; var _local4:URLRequest; _local2 = stage.loaderInfo.url; _local3 = ((("http://www.arcadetown.com/index.asp?gameid=stormastrumdefense&aid=" + GetUrlParam(_local2, "aid=")) + "&refer=") + GetBaseUrl(_local2)); _local4 = new URLRequest(_local3); navigateToURL(_local4, "_blank"); } private function ilpaHandler(_arg1:TimerEvent):void{ if (ilp.alpha < 1){ ilp.alpha = (ilp.alpha + 0.1); } else { ilptimer.stop(); ilptimer.removeEventListener(TimerEvent.TIMER, ilpaHandler); ilptimer = null; }; } public function createParents():void{ var menuback:Shape; var menuwidth:int; var buttonswidth:int; var bshape:Shape; menuparent = new Sprite(); menuback = new Shape(); addChild(menuparent); menuparent.addChild(menuback); menuwidth = 186; menuback.alpha = 0.3; Utils.drawRect(menuback, 1, 0x666666, 0xEAEAEA, menuwidth, engine.gameheight); menuparent.x = (engine.gamewidth - menuwidth); menuback.alpha = 0.3; buttonsparent = new Sprite(); buttonswidth = 141; bshape = new Shape(); var _local2 = bshape; with (_local2) { graphics.lineStyle(1, 3957386); graphics.beginFill(10993365); graphics.drawRoundRect(1, 0, (menuwidth - 2), 141, 20, 20); graphics.endFill(); }; bshape.alpha = 0.3; buttonsparent.addChild(bshape); buttonsparent.y = 105; menuparent.addChild(buttonsparent); } public function loadLocally():void{ var _local1:*; _local1 = SharedObject.getLocal("StormAD"); currentArea = _local1.data.currentArea; } private function closeIlp(_arg1:MouseEvent):void{ ilp.visible = false; } private function startCurrentRegion(_arg1:MouseEvent):void{ levelmap.visible = false; engine.loadMap(engine.sloader.maps.get(currentArea)); engine.restart(); show(); } private function areaDown(_arg1:MouseEvent):void{ if (_arg1.currentTarget.areaIndex > currentArea){ return; }; levelmap.visible = false; engine.loadMap(engine.sloader.maps.get(_arg1.currentTarget.areaIndex)); engine.restart(); show(); isFunMode = false; } private function onButtonDestroy(_arg1:MouseEvent):void{ while (engine.selectedUnits.length) { engine.addResources((engine.selectedUnits[0].costuran / 5)); engine.destroyUnit(engine.selectedUnits[0]); }; } private function GetBaseUrl(_arg1:String):String{ var _local2:String; var _local3:int; var _local4:int; var _local5:String; _local2 = _arg1.toLowerCase(); _local3 = _local2.length; _local4 = _local2.indexOf("?", 0); if (_local4 > 0){ _local3 = _local4; }; _local5 = "download"; if (_local2.substr(0, 4) == "http"){ _local5 = _arg1.substr(7, (_local3 - 7)); }; return (_local5); } private function onButtonRepair(_arg1:MouseEvent):void{ var _local2:int; _local2 = 0; _local2 = 0; while (_local2 < engine.selectedUnits.length) { engine.selectedUnits[_local2].life.repair(); _local2++; }; } private function createButtons():void{ var _local1:int; _local1 = 0xFFFFFF; volbutton = new WebButton("volume: 100%", 90, 20, 20, _local1, 10, 25, false); volbutton.y = 38; volbutton.x = 1; volbutton.addEventListener(MouseEvent.MOUSE_DOWN, onvolume); menuparent.addChild(volbutton); aboutbutton = new WebButton("Menu", 85, 20, 20, _local1, 10, 25, false); aboutbutton.y = 38; aboutbutton.x = 100; aboutbutton.addEventListener(MouseEvent.MOUSE_DOWN, onmenu); menuparent.addChild(aboutbutton); aboutbutton = new WebButton("Restart", 85, 20, 20, _local1, 10, 25, false); aboutbutton.y = 60; aboutbutton.x = 100; aboutbutton.addEventListener(MouseEvent.MOUSE_DOWN, onrestart); menuparent.addChild(aboutbutton); aboutbutton = new WebButton("About", 85, 20, 20, _local1, 10, 25, false); aboutbutton.y = 82; aboutbutton.x = 100; aboutbutton.addEventListener(MouseEvent.MOUSE_DOWN, onabout); menuparent.addChild(aboutbutton); } private function atlover(_arg1:MouseEvent):void{ atl.scaleX = (atl.scaleY = 0.8); } private function onButtonUpgrade(_arg1:MouseEvent):void{ var _local2:int; var _local3:Unit; var _local4:int; _local2 = 0; _local2 = 0; while (_local2 < engine.selectedUnits.length) { _local3 = engine.utypes.params(engine.selectedUnits[_local2].type); _local4 = ((_local3.costuran * 0.5) * (engine.selectedUnits[_local2].upgradeLevel + 1)); if (engine.uranium < _local4){ engine.log("Not enough uranium"); } else { engine.uranium = (engine.uranium - _local4); engine.upgradeUnit(engine.selectedUnits[_local2]); }; _local2++; }; } public function create():void{ createStartMenu(); createParents(); buttons = new GameButtons(engine); buttonsparent.addChild(buttons); buttons.create(); uinfo = new UnitInfoPanel(engine); menuparent.addChild(uinfo); uinfo.y = 250; resources = new Resources(engine); engine.globalstage.addChild(resources); resources.x = ((engine.gamewidth - resources.width) + 10); createButtons(); createMenus(); } public function show():void{ visible = true; resources.visible = true; announce.visible = true; } private function areaOver(_arg1:MouseEvent):void{ if (_arg1.currentTarget.areaIndex > currentArea){ _arg1.currentTarget.gotoAndStop("closed"); } else { _arg1.currentTarget.gotoAndStop("opened"); }; if (_arg1.currentTarget.areaIndex == currentArea){ areas.attackflash.visible = false; }; showInfo(_arg1.currentTarget.areaIndex); } private function onplaynext(_arg1:MouseEvent):void{ stat.visible = false; submitform.visible = false; hide(); newgame(null); showInfo(currentArea); } public function onabout(_arg1:MouseEvent):void{ if (((startmenu.visible) || (stat.visible))){ return; }; engine.pause(); about.visible = !(about.visible); } public function updateInfo():void{ var _local1:Array; var _local2:Unit; var _local3:int; var _local4:int; var _local5:int; var _local6:int; uinfo.visible = false; unregisterButtons(); if (!buttons.selectedUnit){ _local1 = engine.selectedUnits; if (_local1.length > 0){ uinfo.visible = true; uinfo.showAbout(_local1[0], (_local1[0].mapid == Consts.hostileId)); if (_local1[0].mapid != Consts.hostileId){ registerButtons(); uinfo.upgradeButton.visible = !(_local1[0].peaceful); _local2 = null; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; while (_local6 < _local1.length) { _local2 = engine.utypes.params(_local1[_local6].type); _local3 = (_local3 + RepairGoal.rcost(engine, _local1[_local6])); _local4 = (_local4 + (_local1[_local6].costuran / 5)); _local5 = (_local5 + ((_local2.costuran * 0.5) * (_local1[_local6].upgradeLevel + 1))); _local6++; }; uinfo.upgradeButton.txt.text = (("Upgrade (U) - " + _local5.toString()) + " uran."); uinfo.repairButton.txt.text = (("Repair (R) - " + _local3.toString()) + " uran."); uinfo.destroyButton.txt.text = (("Sell for " + _local4.toString()) + " uran."); if (_local1.length > 1){ uinfo.title.text = (("Selected: " + _local1.length) + " units"); }; }; }; } else { uinfo.visible = true; uinfo.showAbout(buttons.selectedUnit, (buttons.selectedUnit.mapid == Consts.hostileId)); }; } public function showMap():void{ var _local1:*; var _local2:int; var _local3:Boolean; _local1 = null; _local2 = 0; _local3 = false; areas.attackflash.visible = false; areas.attackflash.stop(); ilp.visible = false; _local2 = 0; while (_local2 < ararray.length) { _local1 = ararray[_local2]; if (_local2 < currentArea){ _local1.gotoAndStop("blue"); } else { if (_local2 == currentArea){ _local1.gotoAndStop("orange"); areas.attackflash.visible = true; areas.attackflash.x = (_local1.x + (_local1.width / 2)); areas.attackflash.y = (_local1.y + (_local1.height / 2)); if (6 == currentArea){ areas.attackflash.x = (areas.attackflash.x + 50); }; areas.attackflash.play(); _local3 = true; } else { _local1.gotoAndStop("red"); }; }; _local2++; }; levelmap.visible = true; if (_local3){ if (ilptimer){ ilptimer.stop(); ilptimer.removeEventListener(TimerEvent.TIMER, ilpaHandler); ilptimer = null; }; ilptimer = new Timer(100, 0); ilptimer.addEventListener(TimerEvent.TIMER, ilpaHandler); ilptimer.start(); ilp.alpha = 0; ilp.visible = true; }; } private function onnotsavescore(_arg1:MouseEvent):void{ submitform.visible = false; } public function hide():void{ visible = false; resources.visible = false; announce.visible = false; } private function createStartMenu():void{ var ar:*; var i:int; var wb:WebButton; levelmap = new Sprite(); engine.globalstage.addChild(levelmap); levelmap.addChild(engine.sloader.getGround("themap.jpg")); areas = new Areas(); areas.x = 410; areas.y = 385; levelmap.addChild(areas); introholder = new Sprite(); intro = new Intro(); intro.x = 400; intro.y = 300; introholder.addChild(engine.sloader.getGround("themap.jpg")); introholder.addChild(intro); engine.globalstage.addChild(introholder); intomainmenubutton = new WebButton("Main Menu", 130, 30, 25, 0xFFFFFF, 12, 25); intomainmenubutton.y = 10; intomainmenubutton.x = 650; intomainmenubutton.addEventListener(MouseEvent.MOUSE_DOWN, onmenu); levelmap.addChild(intomainmenubutton); var _local2 = areas; with (_local2) { ararray = [ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, ar13, ar14, ar15]; }; ar = null; i = 0; i = 0; while (i < ararray.length) { ar = ararray[i]; ar.areaIndex = i; ar.addEventListener(MouseEvent.MOUSE_OVER, areaOver); ar.addEventListener(MouseEvent.MOUSE_OUT, areaOut); ar.addEventListener(MouseEvent.MOUSE_DOWN, areaDown); i = (i + 1); }; startmenu = new StartMenu(engine); introholder.addChild(startmenu); startmenu.x = 530; startmenu.y = 310; atl = new arcadetown_logo(); atl.x = 400; atl.y = 560; atl.scaleX = (atl.scaleY = 0.7); introholder.addChild(atl); atl.addEventListener(MouseEvent.CLICK, onplaymoregames); atl.addEventListener(MouseEvent.MOUSE_OVER, atlover); atl.addEventListener(MouseEvent.MOUSE_OUT, atlout); startmenu.resumegame.addEventListener(MouseEvent.CLICK, resumegame); startmenu.newgame.addEventListener(MouseEvent.CLICK, newgame); startmenu.funmode.addEventListener(MouseEvent.CLICK, funmode); startmenu.playmoregames.addEventListener(MouseEvent.CLICK, onplaymoregames); ilp = new InterlevelPopup(); ilp.x = 430; ilp.y = 300; ilp.visible = false; levelmap.addChild(ilp); wb = new WebButton("Start!", 110, 30, 23, 0xFF6600, 14, 25, false); wb.x = -50; wb.y = 80; wb.addEventListener(MouseEvent.MOUSE_DOWN, startCurrentRegion); ilp.addChild(wb); ilp.closebutton.addEventListener(MouseEvent.MOUSE_DOWN, closeIlp); } public function reset():void{ stat.reset(); if (announce){ engine.globalstage.removeChild(announce); }; announce = new Announce(engine); engine.globalstage.addChildAt(announce, 2); } public function showInfo(_arg1:int):void{ var _local2:TextFormat; var _local3:LevelMap; var _local4:String; _local2 = null; if (_arg1 > 14){ _arg1 = 14; }; _local3 = engine.sloader.maps.get(_arg1); _local4 = (((("Region #" + (_arg1 + 1).toString()) + ". ") + _local3.title) + "."); _local2 = areas.title.defaultTextFormat; _local2.bold = true; if (_arg1 > currentArea){ _local4 = (_local4 + ((" (area #" + (currentArea + 1).toString()) + " is not defended)")); _local2.color = 0xFF0000; } else { _local2.color = 6724095; }; areas.title.defaultTextFormat = _local2; areas.title.text = _local4; areas.desc.text = _local3.desc; _local2 = areas.waves.defaultTextFormat; _local2.bold = true; areas.waves.defaultTextFormat = _local2; areas.waves.text = (("You must survive in " + _local3.nechelons.toString()) + " waves"); } private function onrestart(_arg1:MouseEvent):void{ var evt = _arg1; if (about.visible){ return; }; var _local3 = engine; with (_local3) { loadMap(currentMap); if (isFunMode){ engine.nechelons = 99999; engine.uranium = 1500; }; restart(); }; } public function createMenus():void{ var _local1:WebButton; about = new About(); engine.globalstage.addChildAt(about, 2); about.x = 250; about.y = 80; about.closebutton.addEventListener(MouseEvent.CLICK, onabout); stat = new Statistics(); stat.mainmenu.addEventListener(MouseEvent.CLICK, onmenu); stat.restart.addEventListener(MouseEvent.CLICK, onrestart); stat.savescore.addEventListener(MouseEvent.CLICK, onsavescore); stat.playnext.addEventListener(MouseEvent.CLICK, onplaynext); stat.keepplaying.addEventListener(MouseEvent.CLICK, onkeepplaying); engine.globalstage.addChild(stat); stat.visible = false; stat.x = 280; stat.y = 100; submitform = new SubmitHighscores(); submitform.msg.visible = false; submitform.visible = false; stat.addChild(submitform); submitform.x = 110; submitform.y = 230; _local1 = new WebButton("Submit Score", 100, 25, 20, 0xFFFFFF, 11, 25, false); _local1.x = -113; _local1.y = 47; submitform.addChild(_local1); _local1.addEventListener(MouseEvent.CLICK, ondosavescore); _local1 = new WebButton("No Thanks", 80, 25, 20, 0xFFFFFF, 11, 25, false); _local1.x = 17; _local1.y = 47; submitform.addChild(_local1); _local1.addEventListener(MouseEvent.CLICK, onnotsavescore); reset(); } public function registerButtons():void{ uinfo.destroyButton.visible = true; uinfo.repairButton.visible = true; uinfo.upgradeButton.visible = true; uinfo.destroyButton.addEventListener(MouseEvent.CLICK, onButtonDestroy); uinfo.repairButton.addEventListener(MouseEvent.CLICK, onButtonRepair); uinfo.upgradeButton.addEventListener(MouseEvent.CLICK, onButtonUpgrade); acceptCodes = true; } public function showIntro():void{ introholder.visible = true; } private function EncrpytString(_arg1:String){ var _local2:String; var _local3:int; var _local4:String; var _local5:String; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; _local2 = "aHfEjcDebChGiAfIjDbEjacD"; _local3 = _local2.length; _local4 = "0"; _local5 = ""; _local6 = _arg1.length; _local7 = 0; _local5 = ""; _local11 = 0; _local12 = 0; while (_local12 < _local6) { _local8 = _arg1.charCodeAt(_local12); if (_local8 >= 128){ _local8 = 88; }; _local9 = _local2.charCodeAt(_local7); _local7 = (_local7 + 1); if (_local7 >= _local3){ _local7 = 0; }; _local10 = ((_local8 % 16) + _local9); _local5 = (_local5 + String.fromCharCode(_local10)); _local11 = (_local11 + _local10); _local9 = _local2.charCodeAt(_local7); _local7 = (_local7 + 1); if (_local7 >= _local3){ _local7 = 0; }; _local10 = (Math.floor((_local8 / 16)) + _local9); _local5 = (_local5 + String.fromCharCode(_local10)); _local11 = (_local11 + _local10); _local12++; }; _local11 = (_local11 % 0x0100); _local9 = _local2.charCodeAt(_local7); _local7 = (_local7 + 1); if (_local7 >= _local3){ _local7 = 0; }; _local10 = ((_local11 % 16) + _local9); _local5 = (_local5 + String.fromCharCode(_local10)); _local9 = _local2.charCodeAt(_local7); _local7 = (_local7 + 1); if (_local7 >= _local3){ _local7 = 0; }; _local10 = (Math.floor((_local11 / 16)) + _local9); _local5 = (_local5 + String.fromCharCode(_local10)); return (_local5); } public function newgame(_arg1:MouseEvent):void{ var _local2:LevelMap; var _local3:TextFormat; startmenu.visible = false; introholder.visible = false; showMap(); showInfo(currentArea); levelmap.visible = true; if (currentArea < 15){ _local2 = engine.sloader.maps.get(currentArea); _local3 = ilp.title.defaultTextFormat; _local3.bold = true; ilp.title.defaultTextFormat = _local3; ilp.title.text = (((("Region #" + (currentArea + 1).toString()) + " ") + _local2.title) + " is occupied by the norad forces. We must protect it..."); _local3 = ilp.subtitle.defaultTextFormat; _local3.bold = true; _local3.italic = true; ilp.subtitle.defaultTextFormat = _local3; ilp.subtitle.text = (("You must withstand " + _local2.nechelons.toString()) + " waves"); }; } public function resumegame(_arg1:MouseEvent):void{ startmenu.visible = false; introholder.visible = false; show(); if (engine.paused){ engine.pause(); }; } public function funmode(_arg1:MouseEvent):void{ var _local2:int; startmenu.visible = false; introholder.visible = false; levelmap.visible = false; _local2 = (Math.random() * 15); if (_local2 >= 15){ _local2 = 10; }; engine.loadMap(engine.sloader.maps.get(_local2)); engine.nechelons = 99999; engine.uranium = 1500; engine.restart(); show(); isFunMode = true; } public function unregisterButtons():void{ uinfo.destroyButton.visible = false; uinfo.repairButton.visible = false; uinfo.upgradeButton.visible = false; uinfo.destroyButton.removeEventListener(MouseEvent.CLICK, onButtonDestroy); uinfo.repairButton.removeEventListener(MouseEvent.CLICK, onButtonRepair); uinfo.upgradeButton.addEventListener(MouseEvent.CLICK, onButtonUpgrade); acceptCodes = false; } private function GetUrlParam(_arg1:String, _arg2:String):String{ var _local3:String; var _local4:int; var _local5:int; var _local6:int; var _local7:int; _local3 = _arg1.toLowerCase(); _local4 = _local3.indexOf(_arg2); _local5 = _arg2.length; if (_local4 > 0){ _local6 = 0; _local7 = _local3.indexOf("&", (_local4 + _local5)); if (_local7 > 0){ _local6 = (_local7 - _local4); } else { _local6 = (_arg1.length - _local4); }; return (_arg1.substr((_local4 + _local5), _local6)); }; return (""); } public function onvolume(_arg1:MouseEvent):void{ if (volume >= 1){ volume = 0; } else { volume = (volume + 0.25); }; volbutton.txt.text = (("volume: " + (volume * 100)) + "%"); } private function areaOut(_arg1:MouseEvent):void{ if (_arg1.currentTarget.areaIndex < currentArea){ _arg1.currentTarget.gotoAndStop("blue"); } else { if (_arg1.currentTarget.areaIndex == currentArea){ _arg1.currentTarget.gotoAndStop("orange"); } else { _arg1.currentTarget.gotoAndStop("red"); }; }; if (_arg1.currentTarget.areaIndex == currentArea){ areas.attackflash.visible = true; }; } public function onmenu(_arg1:MouseEvent):void{ if (about.visible){ return; }; if (startmenu.visible){ resumegame(null); return; }; if (stat.visible){ stat.visible = false; submitform.visible = false; startmenu.visible = true; startmenu.cdl.visible = true; startmenu.resumegame.visible = false; introholder.visible = true; hide(); return; }; if (levelmap.visible){ startmenu.cdl.visible = false; startmenu.visible = true; introholder.visible = true; levelmap.visible = false; hide(); return; }; engine.pause(); startmenu.resumegame.visible = true; startmenu.cdl.visible = false; startmenu.visible = true; introholder.visible = true; hide(); } private function onkeepplaying(_arg1:MouseEvent):void{ engine.nechelons = (engine.nechelons + 100); stat.visible = false; submitform.visible = false; engine.pause(); announce.setWave((engine.scenario.wave + 1)); } public function gameover():void{ stat.iscore = engine.score; stat.caption.text = "Game Over"; stat.keepplaying.visible = false; stat.update(); engine.pause(); stat.visible = true; submitform.visible = false; stat.playnext.visible = false; } private function ondosavescore(_arg1:MouseEvent):void{ var _local2:String; var _local3:String; var _local4:String; var _local5:URLRequest; if (submitform.username.text.length == 0){ submitform.msg.visible = true; return; }; submitform.visible = false; _local2 = ((submitform.username.text + "|") + engine.score.toString()); _local3 = EncrpytString(_local2); _local4 = ("http://www.arcadetown.com/stormastrumdefense/hs.asp?" + _local3); _local5 = new URLRequest(_local4); navigateToURL(_local5, "_blank"); engine.score = 0; resources.update(); } public function onMenuKeyDown(_arg1:int):void{ if (acceptCodes){ switch (_arg1){ case 82: case 114: onButtonRepair(null); break; case 85: case 117: onButtonUpgrade(null); break; }; }; } } }//package fai import flash.events.*; import flash.display.*; import flash.text.*; class Resources extends Sprite { private var engine:Engine;// = null private var score:TextField;// = null private var uranium:TextField;// = null private function Resources(_arg1:Engine):void{ var back:Shape; var aburanium:AnimatedBitmap; var yoffs:int; var tcolor:int; var e = _arg1; engine = null; uranium = null; score = null; super(); engine = e; back = new Shape(); var _local3 = back.graphics; with (_local3) { beginFill(0); drawRect(0, 0, 185, 35); endFill(); }; back.alpha = 0.7; back.x = -10; addChild(back); aburanium = engine.sloader.getMenuItem(UnitTypes.miuranium); yoffs = 7; tcolor = 0xFF00; uranium = Utils.createTextField(tcolor, 11); uranium.y = yoffs; uranium.x = (aburanium.width + 5); aburanium.x = 0; aburanium.y = yoffs; addChild(aburanium); addChild(uranium); score = Utils.createTextField(0xFF5400, 12); score.text = "Score:"; score.x = 70; score.y = yoffs; addChild(score); score = Utils.createTextField(tcolor, 11); score.x = 120; score.y = yoffs; addChild(score); update(); } public function update():void{ uranium.text = engine.uranium.toString(); score.text = engine.score.toString(); } } class Statistics extends Sprite { public var keepplaying:WebButton;// = null public var ilost:int;// = 0 public var restart:WebButton;// = null public var ikilled:int;// = 0 public var playnext:WebButton;// = null private var lost:TextField;// = null public var savescore:WebButton;// = null private var uranspent:TextField;// = null private var killed:TextField;// = null private var built:TextField;// = null public var mainmenu:WebButton;// = null private var score:TextField;// = null public var ibuilt:int;// = 0 public var iscore:int;// = 0 public var iuranspent:int;// = 0 public var caption:TextField;// = null private var back:Shape;// = null private static const xoffset:int = 10; private function Statistics():void{ var tf:TextFormat; var statstat:TextField; back = null; caption = null; score = null; killed = null; lost = null; uranspent = null; built = null; iscore = 0; ikilled = 0; ilost = 0; iuranspent = 0; ibuilt = 0; restart = null; savescore = null; mainmenu = null; playnext = null; keepplaying = null; super(); back = new Shape(); var _local2 = back; with (_local2) { graphics.beginFill(0); graphics.drawRoundRect(0, 0, 220, 350, 15, 15); graphics.endFill(); alpha = 0.7; }; addChild(back); caption = Utils.createTextField(15943950, 20); caption.x = 50; tf = caption.defaultTextFormat; tf.underline = true; caption.defaultTextFormat = tf; caption.text = "Game Over!"; addChild(caption); statstat = null; statstat = Utils.createTextField(0xFFFFFF, 12); tf = statstat.defaultTextFormat; tf.bold = false; tf.italic = true; statstat.defaultTextFormat = tf; statstat.text = "Game statistics:"; statstat.x = xoffset; statstat.y = (caption.height + 10); addChild(statstat); score = createStatElement(15825434, 15); score.y = 70; killed = createStatElement(15825434, 13); killed.y = 100; lost = createStatElement(15825434, 13); lost.y = 130; uranspent = createStatElement(15825434, 13); uranspent.y = 160; built = createStatElement(15825434, 13); built.y = 190; mainmenu = new WebButton("Main Menu", 77, 20, 20, 0xFFFFFF, 10, 20, false); mainmenu.x = xoffset; mainmenu.y = 240; addChild(mainmenu); savescore = new WebButton("Save Score", 80, 20, 20, 0xFFFFFF, 10, 20, false); savescore.x = (xoffset + 100); savescore.y = 240; addChild(savescore); restart = new WebButton("Restart", 75, 20, 20, 0xFFFFFF, 10, 20, false); restart.x = xoffset; restart.y = 280; addChild(restart); keepplaying = new WebButton("Keep Playing", 180, 20, 20, 0xFFFFFF, 10, 20, false); keepplaying.x = xoffset; keepplaying.y = 320; addChild(keepplaying); playnext = new WebButton("Play Next!", 80, 20, 20, 11729148, 11, 20, false); playnext.x = (xoffset + 100); playnext.y = 280; addChild(playnext); update(); } public function reset():void{ visible = false; iscore = (ikilled = (ilost = (iuranspent = (ibuilt = 0)))); update(); } private function createStatElement(_arg1:int, _arg2:int):TextField{ var _local3:TextField; _local3 = Utils.createTextField(_arg1, _arg2); _local3.x = xoffset; addChild(_local3); return (_local3); } public function update():void{ score.text = ("Score: " + iscore.toString()); killed.text = ("Enemies Killed: " + ikilled.toString()); lost.text = ("Units Lost: " + ilost.toString()); uranspent.text = ("Uranium Spent: " + iuranspent.toString()); built.text = ("Units Built: " + ibuilt.toString()); } } class About extends Sprite { public var closebutton:Sprite;// = null private var mentart:TextField;// = null private var author:TextField;// = null private var caption:TextField;// = null private var back:Shape;// = null private var version:TextField;// = null private static const xoffset:int = 10; private function About():void{ var cbsize:int; var tf:TextFormat; var thanks:TextField; back = null; caption = null; version = null; author = null; mentart = null; closebutton = null; super(); visible = false; back = new Shape(); var _local2 = back; with (_local2) { graphics.beginFill(0); graphics.drawRoundRect(0, 0, 280, 220, 15, 15); graphics.endFill(); alpha = 0.7; }; addChild(back); closebutton = new Sprite(); cbsize = 20; _local2 = closebutton; with (_local2) { graphics.beginFill(0); graphics.drawRoundRect(0, 0, cbsize, cbsize, 5, 5); graphics.endFill(); alpha = 0.5; graphics.lineStyle(1, 0xFFFFFF); graphics.moveTo(2, 2); graphics.lineTo((cbsize - 2), (cbsize - 2)); graphics.moveTo((cbsize - 2), 2); graphics.lineTo(2, (cbsize - 2)); }; closebutton.x = ((280 - cbsize) - 1); closebutton.y = 1; addChild(closebutton); caption = Utils.createTextField(0xFFFFFF, 16); caption.x = 40; tf = caption.defaultTextFormat; tf.underline = true; caption.defaultTextFormat = tf; caption.text = "Storm: Astrum Defense."; addChild(caption); version = Utils.createTextField(0xFFFFFF, 12); tf = version.defaultTextFormat; tf.bold = false; tf.italic = true; version.defaultTextFormat = tf; version.text = "version 1.0"; version.x = (xoffset + 90); version.y = (caption.height + 10); addChild(version); author = createStatElement(15825434, 12); author.y = 70; author.x = 70; author.text = "Author Anton Fedoruk\nCopyright (c) 2008.\nAll Rights Reserved."; mentart = createStatElement(15943950, 12); mentart.y = 130; mentart.x = 50; tf = mentart.defaultTextFormat; tf.url = "http://www.warspark.com"; tf.underline = true; tf.italic = true; mentart.defaultTextFormat = tf; mentart.text = "www.WarSpark.com"; mentart = createStatElement(15943950, 12); mentart.y = 150; mentart.x = 50; tf = mentart.defaultTextFormat; tf.url = "mailto:contact@warspark.com"; tf.underline = true; tf.italic = true; mentart.defaultTextFormat = tf; mentart.text = "anton@warspark.com"; thanks = createStatElement(15825434, 12); thanks.y = 180; thanks.x = 50; thanks.text = "Thanks: RocketMan08 from\nNewgrounds"; } private function createStatElement(_arg1:int, _arg2:int):TextField{ var _local3:TextField; _local3 = Utils.createTextField(_arg1, _arg2); _local3.x = xoffset; addChild(_local3); return (_local3); } } class Announce extends Sprite { public var engine:Engine;// = null public var sprites:Map; public var subtext:TextField;// = null private var sendnextbutton:WebButton;// = null public var wavetxt:TextField;// = null private function Announce(_arg1:Engine):void{ var _local2:Shape; var _local3:int; var _local4:int; wavetxt = null; subtext = null; sprites = new Map(); sendnextbutton = null; engine = null; super(); engine = _arg1; _local2 = new Shape(); _local2.graphics.lineStyle(0, 0); _local2.graphics.beginFill(0); _local2.graphics.drawRect(0, 0, 614, 35); _local2.graphics.endFill(); _local2.alpha = 0.6; addChild(_local2); _local3 = 0; _local4 = 0; wavetxt = Utils.createTextField(0xC3C3C3, 12); wavetxt.text = "Echelon:"; wavetxt.y = 1; _local3 = wavetxt.width; addChild(wavetxt); wavetxt = Utils.createTextField(15943950, 12); wavetxt.y = 1; wavetxt.x = (_local3 + 3); wavetxt.text = "1/1"; _local3 = wavetxt.height; addChild(wavetxt); subtext = Utils.createTextField(0xC3C3C3, 10); subtext.text = "attack wave:"; subtext.y = _local3; _local4 = subtext.width; addChild(subtext); subtext = Utils.createTextField(0xFF0000, 10); subtext.text = "00 secs"; subtext.y = _local3; subtext.x = _local4; addChild(subtext); sendnextbutton = new WebButton("Send Next", 80, 20, 15, 0xFFFFFF, 10, 25, false); sendnextbutton.x = ((width - sendnextbutton.width) - 3); sendnextbutton.y = 7; addChild(sendnextbutton); sendnextbutton.addEventListener(MouseEvent.CLICK, sendnext); } public function subtract(_arg1:String):void{ var _local2:AnnounceSprite; _local2 = sprites.get(_arg1); if (_local2){ _local2.dec(); }; } public function sendnext(_arg1:MouseEvent):void{ if (engine.paused){ return; }; engine.scenario.sendNext(); } public function setWave(_arg1:int):void{ wavetxt.text = ((_arg1.toString() + "/") + engine.nechelons.toString()); } public function add(_arg1:String, _arg2:AnimatedBitmap, _arg3:int):void{ var _local4:AnnounceSprite; _local4 = sprites.get(_arg1); if (_local4){ _local4.alpha = 1; _local4.setCount((_arg3 + _local4.icount)); } else { _local4 = new AnnounceSprite(_arg1, _arg2, _arg3); _local4.x = ((sprites.size() * 45) + 130); addChild(_local4); sprites.add(_arg1, _local4); }; } public function setSubText(_arg1:String):void{ subtext.text = _arg1; } } class AnnounceSprite extends Sprite { public var tcount:TextField;// = null private var bitmap:AnimatedBitmap;// = null public var icount:int;// = 0 public var suite:String;// = null private function AnnounceSprite(_arg1:String, _arg2:AnimatedBitmap, _arg3:int):void{ suite = null; bitmap = null; tcount = null; icount = 0; super(); tcount = Utils.createTextField(0xC3C3C3, 10); tcount.text = "X"; tcount.y = 20; tcount.x = _arg2.width; suite = _arg1; bitmap = _arg2; addChild(_arg2); setCount(_arg3); addChild(tcount); } public function dec():void{ icount--; setCount(icount); if (!icount){ alpha = 0.3; }; } public function setCount(_arg1:int):void{ icount = _arg1; tcount.text = ("x" + _arg1.toString()); if (icount == 0){ alpha = 0.3; }; } } final class UnitInfoPanel extends Sprite { public var repairButton:WebButton;// = null private var armor:TextField;// = null private var range:TextField;// = null private var engine:Engine;// = null public var title:TextField;// = null private var health:TextField;// = null public var upgradeButton:WebButton;// = null private var damage:TextField;// = null private var level:TextField;// = null private var desc:TextField;// = null private var killed:TextField;// = null public var destroyButton:WebButton;// = null private var cost:TextField;// = null private var status:TextField;// = null private function UnitInfoPanel(_arg1:Engine):void{ var bitmap:AnimatedBitmap; var xrow1:int; var xrow2:int; var descback:Shape; var gfrom:int; var gto:int; var sgfrom:int; var sgto:int; var e = _arg1; title = null; health = null; armor = null; range = null; damage = null; cost = null; desc = null; status = null; level = null; killed = null; destroyButton = null; repairButton = null; upgradeButton = null; engine = null; super(); engine = e; title = Utils.createTextField(3627027, 12); health = Utils.createTextField(0); armor = Utils.createTextField(0); range = Utils.createTextField(0); level = Utils.createTextField(3158181); killed = Utils.createTextField(0); desc = Utils.createTextField(0, 9); damage = Utils.createTextField(0); cost = Utils.createTextField(0); status = Utils.createTextField(3158181, 10); bitmap = null; bitmap = e.sloader.getMenuItem(UnitTypes.miheart); addChild(bitmap); xrow1 = 15; xrow2 = 110; status.x = xrow1; status.y = 25; title.x = xrow1; health.y = 50; health.x = (xrow1 + bitmap.width); bitmap.y = 50; bitmap.x = xrow1; bitmap = e.sloader.getMenuItem(UnitTypes.miuranium); addChild(bitmap); bitmap.x = xrow2; bitmap.y = 50; cost.y = 50; cost.x = (xrow2 + bitmap.width); bitmap = e.sloader.getMenuItem(UnitTypes.miattack); addChild(bitmap); bitmap.x = xrow1; bitmap.y = 70; damage.x = (xrow1 + bitmap.width); damage.y = 70; bitmap = e.sloader.getMenuItem(UnitTypes.miarmor); addChild(bitmap); bitmap.x = xrow1; bitmap.y = 90; armor.y = 90; armor.x = (xrow1 + bitmap.width); bitmap = e.sloader.getMenuItem(UnitTypes.mirange); addChild(bitmap); bitmap.x = xrow1; bitmap.y = 110; range.y = 110; range.x = (xrow1 + bitmap.width); killed.x = xrow2; killed.y = 90; level.x = xrow2; level.y = 70; desc.y = 135; desc.x = xrow1; descback = new Shape(); var _local3 = descback; with (_local3) { graphics.beginFill(GameMenu.fillColor); graphics.drawRect(0, 0, 150, 50); graphics.endFill(); alpha = 0.5; x = xrow1; y = 135; }; addChild(descback); gfrom = 13162483; gto = 8428752; sgfrom = 14543359; sgto = 10467559; destroyButton = new WebButton("Sell for 100 uran.", 150, 20, 20, 0xFF0000, 10, 20, false, gfrom, gto, sgfrom, sgto); destroyButton.y = 195; destroyButton.x = xrow1; addChild(destroyButton); repairButton = new WebButton("Repair (R) - 100 uran.", 150, 20, 20, 0, 10, 20, false, gfrom, gto, sgfrom, sgto); repairButton.y = 230; repairButton.x = xrow1; addChild(repairButton); upgradeButton = new WebButton("Upgrade (U) - 1000 uran.", 150, 20, 20, 0, 10, 20, false, gfrom, gto, sgfrom, sgto); upgradeButton.y = 0xFF; upgradeButton.x = xrow1; addChild(upgradeButton); addChild(title); addChild(status); addChild(health); addChild(armor); addChild(range); addChild(damage); addChild(cost); addChild(desc); addChild(level); addChild(killed); visible = false; } public function showAbout(_arg1:Unit, _arg2:Boolean):void{ var _local3:int; var _local4:TextFormat; var _local5:int; var _local6:String; visible = !((_arg1 == null)); if (_arg1){ if (engine.menu.buttons.selectedUnit != _arg1){ destroyButton.visible = !(_arg2); repairButton.visible = !(_arg2); } else { destroyButton.visible = false; repairButton.visible = false; }; _local3 = 3627027; if (_arg2){ _local3 = 0xFF0000; }; _local4 = title.defaultTextFormat; _local4.color = _local3; title.defaultTextFormat = _local4; _local5 = engine.utypes.params(_arg1.type).health; _local5 = (engine.utypes.params(_arg1.type).health + ((_local5 * _arg1.upgradeLevel) * Consts.upgradeHExtra)); title.text = _arg1.type; health.text = ((_arg1.health.toString() + "/") + _local5.toString()); armor.text = _arg1.armor.toString(); range.text = Utils.textrange(_arg1.eyerange); desc.text = _arg1.desc; damage.text = _arg1.damage.toString(); cost.text = _arg1.costuran.toString(); level.text = ("Level: " + _arg1.upgradeLevel.toString()); killed.text = ("Killed: " + _arg1.killed.toString()); _local6 = ""; if (!_arg1.life){ status.text = "Click to build this unit"; } else { if (((_arg1.life.repairgoal) && (_arg1.life.repairgoal.active))){ _local6 = "Repairing..."; } else { _local6 = Utils.unitStatus(((_arg1.health * 100) / _local5)); }; status.text = ("State: " + _local6); }; }; } } class ButtonSprite extends Sprite { private var shaped:Shape; public var bitmap:AnimatedBitmap;// = null private var shapes:Shape; public var suite:String;// = null private function ButtonSprite(_arg1:String, _arg2:AnimatedBitmap):void{ suite = null; bitmap = null; shaped = new Shape(); shapes = new Shape(); super(); shaped.graphics.lineStyle(2, 532555); shaped.graphics.beginFill(8954319); shaped.graphics.drawRoundRect(0, 0, _arg2.width, _arg2.height, (_arg2.width / 5), (_arg2.height / 5)); shaped.graphics.endFill(); shaped.alpha = 0.5; addChild(shaped); shapes.visible = false; shapes.graphics.lineStyle(2, 532555); shapes.graphics.beginFill(14998899); shapes.graphics.drawRoundRect(0, 0, _arg2.width, _arg2.height, (_arg2.width / 5), (_arg2.height / 5)); shapes.graphics.endFill(); shapes.alpha = 0.5; addChild(shapes); suite = _arg1; bitmap = _arg2; addChild(_arg2); } public function select(_arg1:Boolean):void{ shaped.visible = !(_arg1); shapes.visible = _arg1; } } class StartMenu extends Sprite { public var warspark:TextField;// = null public var playmoregames:WebButton;// = null public var cdl:TextField;// = null private var engine:Engine;// = null public var newgame:WebButton;// = null public var resumegame:WebButton;// = null public var funmode:WebButton;// = null private var caption:TextField;// = null private var version:TextField;// = null private static const xoffset:int = 10; private function StartMenu(_arg1:Engine):void{ var _local2:TextFormat; caption = null; version = null; cdl = null; resumegame = null; newgame = null; funmode = null; playmoregames = null; warspark = null; engine = null; super(); engine = _arg1; _local2 = null; version = Utils.createTextField(0xFFFFFF, 12); _local2 = version.defaultTextFormat; _local2.bold = false; _local2.italic = true; version.defaultTextFormat = _local2; version.text = "Version 1.0"; version.x = (xoffset + 90); addChild(version); cdl = createStatElement(0xFFFFFF, 10); cdl.y = 50; cdl.x = 65; cdl.text = "Welcome Defense Master..."; resumegame = new WebButton("Resume Game", 200, 40, 24, 7517947); resumegame.visible = false; addChild(resumegame); resumegame.x = (xoffset * 4); resumegame.y = 40; newgame = new WebButton("Campaign", 200, 40, 24, 0xFFFFFF); addChild(newgame); newgame.x = (xoffset * 4); newgame.y = 90; funmode = new WebButton("Fun Mode", 200, 40, 24, 16768553); addChild(funmode); funmode.x = (xoffset * 4); funmode.y = 140; playmoregames = new WebButton("More Games", 200, 40, 24, 16745818); addChild(playmoregames); playmoregames.x = (xoffset * 4); playmoregames.y = 190; warspark = Utils.createTextField(16745818, 12); addChild(warspark); warspark.y = 240; warspark.x = (xoffset * 6); _local2 = warspark.defaultTextFormat; _local2.url = "http://www.arcadetown.com/stormastrumdefense/view_high_scores.asp"; _local2.underline = true; _local2.italic = true; warspark.defaultTextFormat = _local2; warspark.text = "View Game Highscores"; warspark = Utils.createTextField(16745818, 12); addChild(warspark); warspark.y = 260; warspark.x = (xoffset * 4); _local2 = warspark.defaultTextFormat; _local2.url = "http://www.arcadetown.com/free_content/index.asp"; _local2.underline = true; _local2.italic = true; warspark.defaultTextFormat = _local2; warspark.text = "Add this game to your website"; } private function createStatElement(_arg1:int, _arg2:int):TextField{ var _local3:TextField; _local3 = Utils.createTextField(_arg1, _arg2); _local3.x = xoffset; addChild(_local3); return (_local3); } } class TextButton extends Sprite { public var txt:TextField;// = null private var selshape:Shape;// = null private var back:Shape;// = null private function TextButton(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:int=10):void{ var s = _arg1; var w = _arg2; var h = _arg3; var tcolor = _arg4; var tsize = _arg5; txt = null; back = null; selshape = null; super(); back = new Shape(); var _local7 = back.graphics; with (_local7) { lineStyle(2, GameMenu.borderColor); beginFill(GameMenu.fillColor); drawRoundRect(0, 0, w, h, 5, 5); endFill(); }; back.alpha = 0.5; addChild(back); selshape = new Shape(); _local7 = selshape.graphics; with (_local7) { lineStyle(2, GameMenu.borderColor); beginFill(14998899); drawRoundRect(0, 0, w, h, 5, 5); endFill(); }; selshape.alpha = 0.7; selshape.visible = false; addChild(selshape); txt = Utils.createTextField(tcolor, tsize); txt.text = s; txt.y = 1; addChild(txt); addEventListener(MouseEvent.MOUSE_OUT, onmouseout); addEventListener(MouseEvent.MOUSE_OVER, onmouseover); } private function onmouseout(_arg1:MouseEvent):void{ selshape.visible = false; } private function onmouseover(_arg1:MouseEvent):void{ selshape.visible = true; } }
Section 16
//Goal (fai.Goal) package fai { public class Goal { public var owner:Unit;// = null public var active:Boolean;// = true public function Goal(){ active = true; owner = null; super(); } public function deactivate():void{ active = false; } } }//package fai
Section 17
//KeyboardKeys (fai.KeyboardKeys) package fai { import flash.events.*; public class KeyboardKeys { private static var initialized:Boolean = false; private static var keys:Object = new Object(); public static function init(_arg1):void{ _arg1.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); _arg1.stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); initialized = true; } private static function keyPressed(_arg1:KeyboardEvent):void{ keys[_arg1.keyCode] = true; } public static function isDown(_arg1:uint):Boolean{ if (!initialized){ return (false); }; if (Boolean((_arg1 in keys))){ return (keys[_arg1]); }; return (false); } private static function keyReleased(_arg1:KeyboardEvent):void{ keys[_arg1.keyCode] = false; } } }//package fai
Section 18
//LevelMap (fai.LevelMap) package fai { public class LevelMap { public var desc:String;// = null public var diff:String;// = null public var data:XML;// = null public var nechelons:int;// = 0 public var title:String;// = null public function LevelMap(_arg1:XML):void{ data = null; title = null; desc = null; nechelons = 0; diff = null; super(); data = _arg1; title = data.title.toString(); desc = data.desc.toString(); nechelons = int(data.scenario.nechelons.@value); diff = data.difficulty.toString(); if (!diff.length){ diff = "Normal"; }; } public function diffColor():int{ switch (diff){ case "Easy": return (5098747); case "Hard": return (0xFF0000); }; return (10925256); } } }//package fai
Section 19
//LifeGoal (fai.LifeGoal) package fai { public class LifeGoal extends Goal { private var engine:Engine;// = null public var goals:Array;// = null private var attackgoal:AttackGoal;// = null public var repairgoal:RepairGoal;// = null private var counter:int;// = 0 public var waitingMove:MoveGoal;// = null public function LifeGoal(_arg1:Engine, _arg2:Unit):void{ attackgoal = null; repairgoal = null; goals = null; waitingMove = null; engine = null; counter = 0; super(); owner = _arg2; engine = _arg1; goals = new Array(); } public function attack(_arg1:Camp):void{ if (attackgoal){ attackgoal.deactivate(); attackgoal = null; }; attackgoal = new AttackGoal(owner, _arg1, engine.world); } public function advance():void{ var _local1:uint; var _local2:Boolean; if (repairgoal){ if (repairgoal.active){ repairgoal.advance(); } else { repairgoal = null; }; }; if (attackgoal){ attackgoal.advance(); }; _local1 = 0; _local2 = false; while (_local1 < goals.length) { if (goals[_local1].active){ if ((goals[_local1] is MoveGoal)){ _local2 = true; }; goals[_local1].advance(); _local1++; } else { delete goals[_local1]; goals.splice(_local1, 1); }; }; if (!_local2){ if (attackgoal){ attackgoal.paused = false; }; }; } public function repair():void{ if (repairgoal){ repairgoal.deactivate(); repairgoal = null; engine.updateMenu(); return; }; repairgoal = new RepairGoal(owner, engine); } public function move(_arg1:Position, _arg2:Boolean=false):void{ var _local3:*; var _local4:MoveGoal; for each (_local3 in goals) { if ((_local3 is MoveGoal)){ _local3.deactivate(); }; }; _local4 = new MoveGoal(owner, engine.world, engine); _local4.setTarget(_arg1); goals[goals.length] = _local4; if (_arg2){ if (attackgoal){ attackgoal.clearPreciseTarget(); attackgoal.paused = true; }; } else { if (attackgoal){ attackgoal.paused = false; }; }; } public function destroy(_arg1:Boolean=false):void{ var _local2:int; _local2 = 0; while (_local2 < goals.length) { if (goals[_local2].active){ goals[_local2].deactivate(); }; _local2++; }; goals.length = 0; if (repairgoal){ repairgoal.deactivate(); repairgoal = null; }; if (attackgoal){ attackgoal.deactivate(); attackgoal = null; }; if (((_arg1) && (owner))){ if ((((owner.mapid == Consts.oreId)) || ((owner.mapid == Consts.uraniumId)))){ engine.backgr.removeChild(owner.sprite); } else { engine.unitlayer.removeChild(owner.sprite); }; owner.startdie(); owner = null; active = false; }; } public function stop():void{ var _local1:*; for each (_local1 in goals) { if ((_local1 is MoveGoal)){ _local1.deactivate(); }; }; if (attackgoal){ attackgoal.clearPreciseTarget(); }; } override public function deactivate():void{ if (owner){ destroy(); goals.push(new DieGoal(owner, engine, this)); owner.die(); }; } public function setAttackTarget(_arg1:Unit):void{ if (_arg1 == owner){ engine.log("I can't attack myself."); return; }; if (attackgoal){ attackgoal.clearPreciseTarget(); attackgoal.preciseTarget = _arg1; }; } } }//package fai
Section 20
//Map (fai.Map) package fai { public class Map { public var values:Array; protected var index_:int;// = 0 public var keys:Array; public function Map(){ keys = new Array(); values = new Array(); index_ = 0; super(); } public function add(_arg1:Object, _arg2):void{ index_ = 0; find(_arg1); keys.splice(index_, 0, _arg1); values.splice(index_, 0, _arg2); } public function empty():Boolean{ return ((keys.length == 0)); } public function shift(){ var _local1:*; _local1 = values.shift(); keys.shift(); return (_local1); } public function remove(_arg1:Object):void{ if (find(_arg1)){ keys.splice(index_, 1); values.splice(index_, 1); }; } public function size():int{ return (keys.length); } public function pop(){ var _local1:*; _local1 = values.pop(); keys.pop(); return (_local1); } public function get(_arg1:Object){ if (!find(_arg1)){ return (null); }; return (values[index_]); } public function getout(_arg1:Object){ var _local2:*; if (!find(_arg1)){ return (null); }; _local2 = values[index_]; values.splice(index_, 1); keys.splice(index_, 1); return (_local2); } public function find(_arg1:Object):Boolean{ var _local2:int; var _local3:int; _local2 = 0; _local3 = (keys.length - 1); while (_local2 <= _local3) { index_ = ((_local2 + _local3) >> 1); if (_arg1 < keys[index_]){ _local3 = (index_ - 1); } else { if (_arg1 > keys[index_]){ _local2 = (index_ + 1); } else { return (true); }; }; }; index_ = _local2; return (false); } public function clear():void{ keys.length = 0; values.length = 0; index_ = 0; } } }//package fai
Section 21
//MapMatrix (fai.MapMatrix) package fai { public class MapMatrix { public var matrix:Array; public var v:uint; public var h:uint; public function MapMatrix(_arg1:uint, _arg2:uint):void{ var _local3:int; var _local4:int; matrix = new Array(); super(); h = _arg1; v = _arg2; _local3 = 0; while (_local3 < (v + 5)) { matrix.push(new Array((h + 5))); _local4 = 0; while (_local4 < (h + 5)) { matrix[(matrix.length - 1)][_local4] = 0; _local4++; }; _local3++; }; } public function setxy(_arg1:uint, _arg2:uint, _arg3:uint):void{ matrix[_arg2][_arg1] = _arg3; } public function getxy(_arg1:uint, _arg2:uint):uint{ return (matrix[_arg2][_arg1]); } public function clear():void{ var _local1:int; var _local2:int; _local1 = 0; while (_local1 < v) { _local2 = 0; while (_local2 < h) { matrix[_local1][_local2] = 0; _local2++; }; _local1++; }; } public function setpos(_arg1:Position, _arg2:uint):void{ matrix[_arg1.y][_arg1.x] = _arg2; } public function getpos(_arg1:Position):uint{ return (matrix[_arg1.y][_arg1.x]); } } }//package fai
Section 22
//Maps (fai.Maps) package fai { public class Maps { public static const maps:XML = <maps> <ground name='ground1.jpg'/> <ground name='wall.png'/> <ground name='wall2.png'/> <ground name='mountain1.jpg'/> <ground name='tree.png'/> <ground name='tree2.png'/> <level number='0'> <title>Sunsina</title> <desc>Sunsina is a province of Astrum with an area of 83,511 km. The region is divided into 4 districts: Sandapa, Santalaha, Sambava, Sarito.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Light Cannon' x='8' y='12'/> <unit type='Light Cannon' x='12' y='12'/> <unit type='Light Cannon' x='10' y='12'/> <wall type='wall2.png' x='0' y='19'/> <wall type='wall2.png' x='0' y='18'/> <wall type='wall2.png' x='1' y='19'/> <wall type='wall2.png' x='0' y='17'/> <wall type='wall2.png' x='1' y='18'/> <wall type='wall2.png' x='2' y='19'/> <wall type='mountain1.jpg' x='17' y='2'/> <wall type='mountain1.jpg' x='16' y='11'/> <wall type='wall.png' x='8' y='19'/> <wall type='wall.png' x='9' y='19'/> <wall type='wall.png' x='10' y='19'/> <wall type='wall.png' x='11' y='19'/> <wall type='wall.png' x='12' y='19'/> <wall type='wall.png' x='7' y='19'/> <wall type='wall.png' x='6' y='18'/> <wall type='wall.png' x='5' y='17'/> <wall type='wall.png' x='4' y='16'/> <wall type='wall.png' x='3' y='15'/> <wall type='wall.png' x='3' y='14'/> <wall type='wall.png' x='3' y='13'/> <wall type='wall.png' x='13' y='18'/> <wall type='wall.png' x='14' y='17'/> <wall type='wall.png' x='15' y='16'/> <wall type='wall.png' x='16' y='15'/> <wall type='wall.png' x='16' y='14'/> <wall type='wall.png' x='16' y='13'/> <wall type='wall.png' x='16' y='12'/> <wall type='wall.png' x='15' y='11'/> <wall type='wall.png' x='3' y='12'/> <wall type='wall.png' x='4' y='11'/> <wall type='wall.png' x='5' y='10'/> <wall type='wall.png' x='14' y='10'/> <wall type='wall.png' x='5' y='9'/> <wall type='wall.png' x='14' y='9'/> <wall type='tree2.png' x='0' y='16'/> <wall type='tree2.png' x='1' y='17'/> <wall type='tree2.png' x='2' y='18'/> <wall type='tree2.png' x='3' y='19'/> <wall type='tree.png' x='16' y='19'/> <wall type='tree.png' x='16' y='18'/> <wall type='tree.png' x='16' y='17'/> <wall type='tree.png' x='15' y='18'/> <wall type='tree.png' x='15' y='19'/> <wall type='tree.png' x='14' y='19'/> <scenario> <suranium value='300'/> <nechelons value='2'/> </scenario> </level> <level number='1'> <title>Baranda</title> <desc>Baranda is a province of Astrum with an area of 64,081 km. The region is divided into 3 districts: Barond, Bokodo, Binako.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Light Cannon' x='5' y='13'/> <unit type='Light Cannon' x='14' y='13'/> <wall type='wall.png' x='9' y='4'/> <wall type='wall.png' x='9' y='5'/> <wall type='wall.png' x='9' y='7'/> <wall type='wall.png' x='9' y='6'/> <wall type='wall.png' x='9' y='8'/> <wall type='wall.png' x='9' y='9'/> <wall type='wall.png' x='9' y='10'/> <wall type='wall.png' x='8' y='11'/> <wall type='wall.png' x='7' y='12'/> <wall type='wall.png' x='10' y='11'/> <wall type='wall.png' x='11' y='12'/> <wall type='wall2.png' x='4' y='9'/> <wall type='wall2.png' x='3' y='10'/> <wall type='wall2.png' x='2' y='11'/> <wall type='wall2.png' x='1' y='12'/> <wall type='wall2.png' x='14' y='9'/> <wall type='wall2.png' x='15' y='10'/> <wall type='wall2.png' x='16' y='11'/> <wall type='wall2.png' x='17' y='12'/> <wall type='tree2.png' x='0' y='18'/> <wall type='tree2.png' x='2' y='18'/> <wall type='tree2.png' x='1' y='18'/> <wall type='tree2.png' x='0' y='17'/> <wall type='tree2.png' x='17' y='18'/> <wall type='tree2.png' x='18' y='17'/> <wall type='tree2.png' x='18' y='18'/> <wall type='tree2.png' x='16' y='18'/> <wall type='mountain1.jpg' x='18' y='8'/> <scenario> <suranium value='300'/> <nechelons value='2'/> </scenario> </level> <level number='2'> <title>Stigwel</title> <desc>Stigwel is a province of Astrum with an area of 101,304 km. The region is divided into 5 districts: Stogr, Stintent, Surokl, Sapata, Sorat.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='3' y='16'/> <unit type='Light Cannon' x='8' y='11'/> <unit type='Light Cannon' x='11' y='11'/> <wall type='mountain1.jpg' x='11' y='11'/> <wall type='mountain1.jpg' x='19' y='11'/> <wall type='wall.png' x='0' y='6'/> <wall type='wall.png' x='2' y='6'/> <wall type='wall.png' x='1' y='6'/> <wall type='wall.png' x='3' y='6'/> <wall type='wall.png' x='4' y='6'/> <wall type='wall.png' x='5' y='6'/> <wall type='wall2.png' x='0' y='11'/> <wall type='wall2.png' x='1' y='11'/> <wall type='wall2.png' x='2' y='11'/> <wall type='wall2.png' x='3' y='11'/> <wall type='wall2.png' x='4' y='11'/> <wall type='wall2.png' x='5' y='11'/> <wall type='wall2.png' x='10' y='8'/> <wall type='wall2.png' x='11' y='8'/> <wall type='wall2.png' x='12' y='8'/> <wall type='wall2.png' x='13' y='8'/> <wall type='wall2.png' x='14' y='9'/> <wall type='wall2.png' x='16' y='9'/> <wall type='wall2.png' x='15' y='9'/> <wall type='wall2.png' x='17' y='9'/> <wall type='tree.png' x='13' y='11'/> <wall type='tree.png' x='12' y='12'/> <wall type='tree.png' x='11' y='13'/> <wall type='tree.png' x='11' y='15'/> <wall type='tree.png' x='11' y='16'/> <wall type='tree.png' x='11' y='14'/> <wall type='tree.png' x='11' y='17'/> <wall type='tree.png' x='11' y='18'/> <wall type='tree.png' x='10' y='18'/> <wall type='tree.png' x='14' y='10'/> <wall type='tree.png' x='16' y='10'/> <wall type='tree2.png' x='18' y='17'/> <wall type='tree2.png' x='18' y='16'/> <wall type='tree2.png' x='19' y='14'/> <wall type='tree2.png' x='20' y='12'/> <scenario> <suranium value='300'/> <nechelons value='3'/> </scenario> </level> <level number='3'> <title>Hornstock 2</title> <desc>Hornstock 2 is a province of Astrum with an area of 120,417 km. The region is divided into 4 districts: New Horn, Horava, Hest, Houth.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='8' y='13'/> <wall type='wall2.png' x='3' y='11'/> <wall type='wall2.png' x='4' y='10'/> <wall type='wall2.png' x='5' y='9'/> <wall type='wall2.png' x='6' y='8'/> <wall type='wall2.png' x='7' y='8'/> <wall type='wall2.png' x='8' y='8'/> <wall type='wall2.png' x='9' y='8'/> <wall type='wall2.png' x='10' y='9'/> <wall type='wall2.png' x='11' y='10'/> <wall type='wall2.png' x='3' y='12'/> <wall type='wall2.png' x='12' y='11'/> <wall type='wall2.png' x='12' y='12'/> <wall type='mountain1.jpg' x='17' y='12'/> <wall type='tree.png' x='0' y='18'/> <wall type='tree.png' x='1' y='19'/> <wall type='tree.png' x='1' y='18'/> <wall type='tree.png' x='0' y='19'/> <wall type='tree.png' x='2' y='19'/> <wall type='tree.png' x='2' y='18'/> <wall type='tree.png' x='3' y='19'/> <wall type='tree.png' x='0' y='17'/> <wall type='tree.png' x='1' y='17'/> <wall type='tree.png' x='0' y='16'/> <wall type='tree2.png' x='17' y='19'/> <wall type='tree2.png' x='16' y='18'/> <wall type='tree2.png' x='17' y='15'/> <wall type='wall.png' x='5' y='8'/> <wall type='wall.png' x='4' y='9'/> <wall type='wall.png' x='3' y='10'/> <wall type='wall.png' x='10' y='8'/> <wall type='wall.png' x='11' y='9'/> <wall type='wall.png' x='12' y='10'/> <wall type='wall.png' x='7' y='7'/> <wall type='wall.png' x='8' y='7'/> <wall type='wall.png' x='6' y='7'/> <scenario> <suranium value='300'/> <nechelons value='4'/> </scenario> </level> <level number='4'> <title>Halgava</title> <desc>Halgava is a province of Astrum with an area of 103,001 km. The region is divided into 4 districts: Haltar, Homung, Hiroto, Hiesta.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='15' y='16'/> <unit type='Heavy Cannon' x='6' y='13'/> <unit type='Heavy Cannon' x='9' y='12'/> <wall type='mountain1.jpg' x='16' y='4'/> <wall type='tree.png' x='9' y='6'/> <wall type='tree.png' x='11' y='6'/> <wall type='tree.png' x='13' y='6'/> <wall type='tree.png' x='15' y='6'/> <wall type='tree.png' x='10' y='6'/> <wall type='tree.png' x='12' y='6'/> <wall type='tree.png' x='14' y='6'/> <wall type='tree.png' x='16' y='6'/> <wall type='tree.png' x='9' y='10'/> <wall type='tree.png' x='11' y='10'/> <wall type='tree.png' x='12' y='10'/> <wall type='tree.png' x='13' y='10'/> <wall type='tree.png' x='15' y='10'/> <wall type='tree.png' x='0' y='15'/> <wall type='tree.png' x='2' y='15'/> <wall type='tree.png' x='4' y='16'/> <wall type='tree.png' x='3' y='16'/> <wall type='tree.png' x='1' y='17'/> <wall type='tree.png' x='3' y='18'/> <wall type='tree.png' x='0' y='18'/> <wall type='tree2.png' x='2' y='16'/> <wall type='tree2.png' x='1' y='16'/> <wall type='tree2.png' x='2' y='17'/> <wall type='tree2.png' x='0' y='17'/> <wall type='tree.png' x='1' y='15'/> <wall type='tree.png' x='0' y='16'/> <wall type='tree.png' x='2' y='18'/> <wall type='wall2.png' x='0' y='9'/> <wall type='wall2.png' x='1' y='9'/> <wall type='wall2.png' x='2' y='9'/> <wall type='wall2.png' x='3' y='9'/> <wall type='wall2.png' x='4' y='9'/> <wall type='wall2.png' x='5' y='9'/> <wall type='wall.png' x='0' y='5'/> <wall type='wall.png' x='1' y='5'/> <wall type='wall.png' x='2' y='5'/> <wall type='wall.png' x='3' y='5'/> <wall type='wall.png' x='4' y='5'/> <wall type='wall.png' x='5' y='5'/> <scenario> <suranium value='300'/> <nechelons value='5'/> </scenario> </level> <level number='5'> <title>New Lionger</title> <desc>New Lionger is a province of Astrum with an area of 73,716 km. The region is divided into 3 districts: Liontok, Lioko, Lokoridge.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Light Cannon' x='7' y='13'/> <unit type='Light Cannon' x='11' y='13'/> <wall type='tree.png' x='4' y='3'/> <wall type='tree.png' x='4' y='4'/> <wall type='tree.png' x='4' y='5'/> <wall type='tree.png' x='4' y='6'/> <wall type='tree.png' x='4' y='7'/> <wall type='tree.png' x='4' y='8'/> <wall type='tree.png' x='4' y='9'/> <wall type='tree.png' x='4' y='10'/> <wall type='tree.png' x='4' y='11'/> <wall type='tree.png' x='8' y='3'/> <wall type='tree.png' x='8' y='4'/> <wall type='tree.png' x='8' y='6'/> <wall type='tree.png' x='8' y='5'/> <wall type='tree.png' x='8' y='7'/> <wall type='tree.png' x='8' y='8'/> <wall type='tree.png' x='8' y='9'/> <wall type='tree.png' x='8' y='10'/> <wall type='tree.png' x='8' y='11'/> <wall type='tree.png' x='12' y='3'/> <wall type='tree.png' x='12' y='4'/> <wall type='tree.png' x='12' y='5'/> <wall type='tree.png' x='12' y='6'/> <wall type='tree.png' x='12' y='6'/> <wall type='tree.png' x='12' y='7'/> <wall type='tree.png' x='12' y='8'/> <wall type='tree.png' x='12' y='8'/> <wall type='tree.png' x='12' y='9'/> <wall type='tree.png' x='12' y='10'/> <wall type='tree.png' x='12' y='11'/> <wall type='mountain1.jpg' x='17' y='11'/> <wall type='mountain1.jpg' x='18' y='2'/> <wall type='tree2.png' x='18' y='3'/> <wall type='tree2.png' x='18' y='4'/> <wall type='tree2.png' x='17' y='5'/> <wall type='tree.png' x='4' y='12'/> <wall type='tree.png' x='12' y='12'/> <wall type='tree.png' x='0' y='18'/> <wall type='tree.png' x='0' y='19'/> <wall type='tree.png' x='2' y='19'/> <wall type='tree.png' x='0' y='17'/> <wall type='tree.png' x='1' y='18'/> <wall type='tree.png' x='1' y='19'/> <wall type='tree.png' x='3' y='19'/> <wall type='tree.png' x='2' y='18'/> <wall type='tree.png' x='1' y='17'/> <wall type='tree.png' x='0' y='17'/> <wall type='tree.png' x='0' y='16'/> <scenario> <suranium value='300'/> <nechelons value='6'/> </scenario> </level> <level number='6'> <title>Tok-Nira</title> <desc>Tok-Nira is a province of Astrum with an area of 169,512 km. The region is divided into 4 districts: Toki, Tokart, Niragava, Tinak.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Heavy Cannon' x='8' y='14'/> <unit type='Heavy Cannon' x='11' y='14'/> <wall type='tree.png' x='0' y='5'/> <wall type='tree.png' x='2' y='5'/> <wall type='tree.png' x='1' y='6'/> <wall type='tree.png' x='4' y='5'/> <wall type='tree.png' x='3' y='6'/> <wall type='tree.png' x='2' y='7'/> <wall type='tree.png' x='0' y='8'/> <wall type='tree.png' x='1' y='8'/> <wall type='tree.png' x='3' y='9'/> <wall type='tree.png' x='4' y='10'/> <wall type='tree.png' x='3' y='11'/> <wall type='tree.png' x='2' y='11'/> <wall type='tree.png' x='1' y='11'/> <wall type='tree.png' x='0' y='12'/> <wall type='tree.png' x='1' y='12'/> <wall type='tree.png' x='3' y='13'/> <wall type='tree.png' x='3' y='14'/> <wall type='tree.png' x='4' y='14'/> <wall type='tree.png' x='2' y='13'/> <wall type='tree.png' x='2' y='15'/> <wall type='tree.png' x='1' y='15'/> <wall type='tree.png' x='1' y='16'/> <wall type='tree.png' x='0' y='17'/> <wall type='tree.png' x='1' y='10'/> <wall type='tree.png' x='0' y='9'/> <wall type='tree.png' x='0' y='7'/> <wall type='tree.png' x='5' y='5'/> <wall type='tree.png' x='6' y='5'/> <wall type='tree.png' x='4' y='6'/> <wall type='tree.png' x='3' y='7'/> <wall type='tree.png' x='5' y='10'/> <wall type='tree.png' x='5' y='14'/> <wall type='tree.png' x='3' y='15'/> <wall type='tree.png' x='4' y='13'/> <wall type='tree.png' x='3' y='12'/> <wall type='tree.png' x='2' y='16'/> <wall type='tree.png' x='2' y='9'/> <wall type='tree.png' x='2' y='8'/> <wall type='tree.png' x='3' y='10'/> <wall type='tree.png' x='0' y='14'/> <wall type='tree.png' x='12' y='5'/> <wall type='tree.png' x='14' y='5'/> <wall type='tree.png' x='16' y='5'/> <wall type='tree.png' x='15' y='6'/> <wall type='tree.png' x='14' y='6'/> <wall type='tree.png' x='15' y='7'/> <wall type='tree.png' x='14' y='8'/> <wall type='tree.png' x='12' y='8'/> <wall type='tree.png' x='12' y='9'/> <wall type='tree.png' x='12' y='9'/> <wall type='tree.png' x='11' y='9'/> <wall type='tree.png' x='14' y='9'/> <wall type='tree.png' x='16' y='10'/> <wall type='tree.png' x='16' y='10'/> <wall type='tree.png' x='14' y='10'/> <wall type='tree.png' x='13' y='11'/> <wall type='tree.png' x='12' y='12'/> <wall type='tree.png' x='13' y='13'/> <wall type='tree.png' x='14' y='14'/> <wall type='tree.png' x='15' y='15'/> <wall type='tree.png' x='15' y='16'/> <wall type='tree.png' x='14' y='17'/> <wall type='tree.png' x='16' y='15'/> <wall type='tree.png' x='15' y='13'/> <wall type='tree.png' x='15' y='12'/> <wall type='tree.png' x='16' y='13'/> <wall type='tree.png' x='16' y='11'/> <wall type='tree.png' x='16' y='8'/> <wall type='tree.png' x='17' y='6'/> <wall type='tree.png' x='13' y='10'/> <wall type='tree.png' x='13' y='4'/> <wall type='tree.png' x='16' y='4'/> <wall type='tree.png' x='5' y='4'/> <wall type='tree.png' x='3' y='4'/> <wall type='tree.png' x='16' y='17'/> <wall type='tree2.png' x='13' y='8'/> <wall type='tree2.png' x='15' y='9'/> <wall type='tree2.png' x='0' y='10'/> <wall type='tree2.png' x='1' y='7'/> <wall type='tree2.png' x='0' y='6'/> <wall type='tree2.png' x='2' y='6'/> <wall type='tree2.png' x='1' y='13'/> <wall type='tree2.png' x='1' y='14'/> <wall type='tree2.png' x='2' y='14'/> <wall type='tree2.png' x='14' y='12'/> <wall type='tree2.png' x='14' y='11'/> <wall type='tree2.png' x='16' y='7'/> <wall type='tree2.png' x='16' y='14'/> <wall type='tree2.png' x='17' y='12'/> <wall type='mountain1.jpg' x='19' y='11'/> <wall type='tree2.png' x='15' y='4'/> <wall type='tree2.png' x='12' y='4'/> <wall type='tree2.png' x='17' y='16'/> <wall type='tree.png' x='17' y='18'/> <scenario> <suranium value='300'/> <nechelons value='7'/> </scenario> </level> <level number='7'> <title>Bas-Nira</title> <desc>Bas-Nira is a province of Astrum with an area of 90,891 km. The region is divided into 4 districts: Basira, Bosta, Binako, Birad.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='15'/> <unit type='Light Cannon' x='10' y='12'/> <wall type='wall2.png' x='7' y='8'/> <wall type='wall2.png' x='6' y='8'/> <wall type='wall2.png' x='5' y='8'/> <wall type='wall2.png' x='3' y='8'/> <wall type='wall2.png' x='4' y='8'/> <wall type='wall2.png' x='3' y='9'/> <wall type='wall2.png' x='3' y='10'/> <wall type='wall2.png' x='3' y='12'/> <wall type='wall2.png' x='3' y='11'/> <wall type='wall2.png' x='3' y='13'/> <wall type='wall2.png' x='3' y='14'/> <wall type='wall2.png' x='3' y='15'/> <wall type='wall2.png' x='3' y='16'/> <wall type='wall2.png' x='3' y='17'/> <wall type='wall2.png' x='3' y='18'/> <wall type='wall2.png' x='12' y='8'/> <wall type='wall2.png' x='13' y='8'/> <wall type='wall2.png' x='14' y='8'/> <wall type='wall2.png' x='15' y='8'/> <wall type='wall2.png' x='16' y='8'/> <wall type='wall2.png' x='16' y='9'/> <wall type='wall2.png' x='16' y='10'/> <wall type='wall2.png' x='16' y='11'/> <wall type='wall2.png' x='16' y='12'/> <wall type='wall2.png' x='16' y='13'/> <wall type='wall2.png' x='16' y='14'/> <wall type='wall2.png' x='17' y='15'/> <wall type='wall2.png' x='16' y='15'/> <wall type='wall2.png' x='16' y='16'/> <wall type='wall2.png' x='16' y='17'/> <wall type='wall2.png' x='16' y='18'/> <wall type='wall2.png' x='17' y='16'/> <wall type='wall2.png' x='17' y='17'/> <wall type='wall2.png' x='19' y='17'/> <wall type='wall2.png' x='20' y='16'/> <wall type='wall2.png' x='22' y='16'/> <wall type='wall2.png' x='21' y='18'/> <wall type='wall2.png' x='20' y='19'/> <wall type='wall2.png' x='18' y='18'/> <wall type='wall2.png' x='19' y='15'/> <wall type='wall2.png' x='22' y='16'/> <wall type='wall2.png' x='21' y='17'/> <wall type='wall2.png' x='22' y='19'/> <wall type='wall.png' x='20' y='18'/> <wall type='wall.png' x='20' y='17'/> <wall type='wall.png' x='18' y='16'/> <wall type='wall.png' x='19' y='16'/> <wall type='wall.png' x='19' y='18'/> <wall type='wall.png' x='18' y='17'/> <wall type='wall.png' x='17' y='19'/> <wall type='wall.png' x='21' y='16'/> <wall type='wall.png' x='20' y='15'/> <wall type='wall.png' x='18' y='15'/> <wall type='tree2.png' x='21' y='15'/> <wall type='tree2.png' x='22' y='17'/> <wall type='tree2.png' x='18' y='14'/> <wall type='tree2.png' x='19' y='14'/> <wall type='tree2.png' x='0' y='18'/> <wall type='tree2.png' x='2' y='19'/> <wall type='tree2.png' x='1' y='19'/> <scenario> <suranium value='300'/> <nechelons value='8'/> </scenario> </level> <level number='8'> <title>Wek-Nira</title> <desc>Wek-Nira is a province of Astrum with an area of 79,451 km. The region is divided into 4 districts: Wekio, Wiki, Wenaro, Wtork.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Howitzer' x='10' y='11'/> <wall type='tree2.png' x='4' y='14'/> <wall type='tree2.png' x='4' y='15'/> <wall type='tree2.png' x='4' y='16'/> <wall type='tree2.png' x='14' y='14'/> <wall type='tree2.png' x='15' y='15'/> <wall type='tree2.png' x='14' y='15'/> <wall type='tree2.png' x='14' y='16'/> <wall type='tree2.png' x='3' y='15'/> <wall type='tree.png' x='13' y='3'/> <wall type='tree.png' x='14' y='4'/> <wall type='tree.png' x='15' y='5'/> <wall type='tree.png' x='16' y='6'/> <wall type='tree.png' x='16' y='4'/> <wall type='tree.png' x='15' y='3'/> <wall type='tree.png' x='14' y='3'/> <wall type='tree.png' x='16' y='4'/> <wall type='tree.png' x='16' y='3'/> <wall type='tree.png' x='17' y='4'/> <wall type='tree.png' x='17' y='6'/> <wall type='tree.png' x='17' y='6'/> <wall type='tree.png' x='17' y='7'/> <wall type='tree.png' x='18' y='8'/> <wall type='tree.png' x='17' y='5'/> <wall type='tree.png' x='16' y='5'/> <wall type='tree.png' x='15' y='4'/> <wall type='tree.png' x='0' y='7'/> <wall type='tree.png' x='1' y='6'/> <wall type='tree.png' x='2' y='5'/> <wall type='tree.png' x='3' y='4'/> <wall type='tree.png' x='0' y='5'/> <wall type='tree.png' x='0' y='5'/> <wall type='tree.png' x='1' y='5'/> <wall type='tree.png' x='1' y='4'/> <wall type='tree.png' x='0' y='4'/> <wall type='tree.png' x='0' y='6'/> <wall type='tree.png' x='2' y='4'/> <wall type='tree.png' x='2' y='3'/> <wall type='tree.png' x='4' y='3'/> <wall type='tree.png' x='3' y='3'/> <wall type='wall2.png' x='2' y='11'/> <wall type='wall2.png' x='4' y='9'/> <wall type='wall2.png' x='7' y='8'/> <wall type='wall2.png' x='11' y='8'/> <wall type='wall2.png' x='14' y='9'/> <wall type='wall2.png' x='16' y='11'/> <scenario> <suranium value='300'/> <nechelons value='10'/> </scenario> </level> <level number='9'> <title>Ionus</title> <desc>Ionus is a province of Astrum with an area of 93,009 km. The region is divided into 4 districts: Iont, Ikast, Ioro, Inus.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Heavy Cannon' x='8' y='13'/> <unit type='Heavy Cannon' x='11' y='13'/> <wall type='mountain1.jpg' x='16' y='2'/> <wall type='wall2.png' x='17' y='3'/> <wall type='wall2.png' x='15' y='3'/> <wall type='wall2.png' x='14' y='3'/> <wall type='wall2.png' x='14' y='3'/> <wall type='wall2.png' x='15' y='4'/> <wall type='wall2.png' x='16' y='5'/> <wall type='wall2.png' x='15' y='6'/> <wall type='wall2.png' x='13' y='5'/> <wall type='wall2.png' x='14' y='4'/> <wall type='wall2.png' x='14' y='5'/> <wall type='wall2.png' x='16' y='4'/> <wall type='wall2.png' x='16' y='7'/> <wall type='wall2.png' x='15' y='8'/> <wall type='wall2.png' x='16' y='9'/> <wall type='wall2.png' x='17' y='10'/> <wall type='wall2.png' x='17' y='11'/> <wall type='wall2.png' x='18' y='11'/> <wall type='wall2.png' x='14' y='7'/> <wall type='wall2.png' x='19' y='12'/> <wall type='wall2.png' x='20' y='13'/> <wall type='wall2.png' x='21' y='14'/> <wall type='wall2.png' x='21' y='12'/> <wall type='wall2.png' x='20' y='12'/> <wall type='wall2.png' x='22' y='11'/> <wall type='wall2.png' x='22' y='13'/> <wall type='wall2.png' x='12' y='3'/> <wall type='wall.png' x='14' y='6'/> <wall type='wall.png' x='15' y='5'/> <wall type='wall.png' x='13' y='4'/> <wall type='wall.png' x='16' y='8'/> <wall type='wall.png' x='13' y='3'/> <wall type='wall.png' x='18' y='12'/> <wall type='wall.png' x='16' y='11'/> <wall type='wall.png' x='20' y='13'/> <wall type='wall.png' x='21' y='13'/> <wall type='wall.png' x='22' y='14'/> <wall type='wall.png' x='19' y='13'/> <wall type='wall.png' x='20' y='14'/> <wall type='wall.png' x='16' y='10'/> <wall type='wall.png' x='15' y='9'/> <wall type='wall.png' x='13' y='6'/> <wall type='wall2.png' x='12' y='4'/> <wall type='wall2.png' x='11' y='3'/> <wall type='wall2.png' x='17' y='12'/> <wall type='wall2.png' x='18' y='13'/> <wall type='wall2.png' x='19' y='14'/> <wall type='wall2.png' x='21' y='15'/> <wall type='wall2.png' x='22' y='16'/> <wall type='wall2.png' x='22' y='15'/> <wall type='wall2.png' x='14' y='9'/> <wall type='wall2.png' x='14' y='8'/> <wall type='tree.png' x='5' y='15'/> <wall type='tree.png' x='7' y='16'/> <wall type='tree.png' x='7' y='17'/> <wall type='tree.png' x='7' y='18'/> <wall type='tree.png' x='4' y='16'/> <wall type='tree.png' x='2' y='15'/> <wall type='tree.png' x='2' y='17'/> <wall type='tree.png' x='4' y='17'/> <wall type='tree.png' x='5' y='17'/> <wall type='tree.png' x='6' y='18'/> <wall type='tree.png' x='4' y='18'/> <wall type='tree.png' x='1' y='16'/> <wall type='tree.png' x='0' y='16'/> <wall type='tree.png' x='0' y='17'/> <wall type='tree.png' x='1' y='18'/> <wall type='tree.png' x='3' y='19'/> <wall type='tree.png' x='0' y='14'/> <wall type='tree.png' x='2' y='14'/> <wall type='tree.png' x='1' y='12'/> <wall type='tree.png' x='0' y='12'/> <wall type='tree.png' x='1' y='14'/> <wall type='tree.png' x='9' y='19'/> <wall type='tree.png' x='8' y='18'/> <wall type='tree.png' x='4' y='15'/> <wall type='tree.png' x='3' y='16'/> <wall type='tree.png' x='1' y='13'/> <wall type='tree.png' x='3' y='14'/> <wall type='tree2.png' x='3' y='18'/> <wall type='tree2.png' x='3' y='17'/> <wall type='tree2.png' x='0' y='15'/> <wall type='tree2.png' x='6' y='17'/> <wall type='tree2.png' x='0' y='13'/> <scenario> <suranium value='300'/> <nechelons value='10'/> </scenario> </level> <level number='10'> <title>Moon York</title> <desc>Moon York is a province of Astrum with an area of 121,901 km. The region is divided into 3 districts: New Moon York, Yorkshir, Moonhold.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='15' y='16'/> <wall type='mountain1.jpg' x='18' y='3'/> <wall type='mountain1.jpg' x='10' y='3'/> <wall type='tree.png' x='17' y='10'/> <wall type='tree.png' x='17' y='8'/> <wall type='tree.png' x='18' y='6'/> <wall type='tree.png' x='18' y='4'/> <wall type='tree.png' x='17' y='3'/> <wall type='tree.png' x='18' y='5'/> <wall type='tree.png' x='17' y='7'/> <wall type='tree.png' x='17' y='9'/> <wall type='tree.png' x='12' y='12'/> <wall type='tree.png' x='14' y='12'/> <wall type='tree.png' x='15' y='12'/> <wall type='tree.png' x='17' y='12'/> <wall type='tree.png' x='18' y='11'/> <wall type='tree.png' x='19' y='12'/> <wall type='tree.png' x='20' y='12'/> <wall type='tree.png' x='21' y='12'/> <wall type='tree.png' x='18' y='13'/> <wall type='tree.png' x='16' y='12'/> <wall type='tree.png' x='16' y='13'/> <wall type='tree.png' x='14' y='13'/> <wall type='tree.png' x='13' y='13'/> <wall type='tree.png' x='13' y='12'/> <wall type='tree.png' x='21' y='13'/> <wall type='tree.png' x='20' y='13'/> <wall type='tree.png' x='11' y='11'/> <wall type='tree2.png' x='18' y='12'/> <wall type='tree2.png' x='15' y='13'/> <wall type='tree2.png' x='19' y='13'/> <wall type='tree2.png' x='11' y='12'/> <wall type='tree2.png' x='17' y='11'/> <wall type='tree.png' x='0' y='19'/> <wall type='tree.png' x='0' y='17'/> <wall type='tree.png' x='0' y='15'/> <wall type='tree.png' x='1' y='15'/> <wall type='tree.png' x='2' y='16'/> <wall type='tree.png' x='4' y='17'/> <wall type='tree.png' x='4' y='18'/> <wall type='tree.png' x='6' y='19'/> <wall type='tree.png' x='6' y='18'/> <wall type='tree.png' x='3' y='18'/> <wall type='tree.png' x='2' y='18'/> <wall type='tree.png' x='1' y='17'/> <wall type='tree.png' x='1' y='16'/> <wall type='tree.png' x='0' y='14'/> <wall type='tree.png' x='3' y='17'/> <wall type='tree.png' x='5' y='18'/> <wall type='tree.png' x='4' y='19'/> <wall type='tree.png' x='2' y='19'/> <wall type='tree.png' x='1' y='18'/> <wall type='tree.png' x='0' y='13'/> <wall type='tree.png' x='2' y='14'/> <wall type='tree.png' x='3' y='15'/> <wall type='tree.png' x='4' y='16'/> <wall type='tree.png' x='1' y='14'/> <wall type='tree2.png' x='2' y='17'/> <wall type='tree2.png' x='0' y='16'/> <scenario> <suranium value='300'/> <nechelons value='15'/> </scenario> </level> <level number='11'> <title>Sagatog</title> <desc>Sagatog is a province of Astrum with an area of 70,111 km. The region is divided into 4 districts: Saga, Songo, Sitra, Surena.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Missile Turret' x='8' y='14'/> <unit type='Missile Turret' x='10' y='14'/> <wall type='mountain1.jpg' x='0' y='16'/> <wall type='tree.png' x='0' y='16'/> <wall type='tree.png' x='1' y='15'/> <wall type='tree.png' x='2' y='14'/> <wall type='tree.png' x='2' y='12'/> <wall type='tree.png' x='2' y='10'/> <wall type='tree.png' x='2' y='8'/> <wall type='tree.png' x='3' y='6'/> <wall type='tree.png' x='6' y='5'/> <wall type='tree.png' x='7' y='5'/> <wall type='tree.png' x='6' y='7'/> <wall type='tree.png' x='5' y='9'/> <wall type='tree.png' x='4' y='11'/> <wall type='tree.png' x='4' y='13'/> <wall type='tree.png' x='4' y='10'/> <wall type='tree.png' x='4' y='6'/> <wall type='tree.png' x='5' y='6'/> <wall type='tree.png' x='5' y='9'/> <wall type='tree.png' x='4' y='8'/> <wall type='tree.png' x='3' y='9'/> <wall type='tree.png' x='1' y='8'/> <wall type='tree.png' x='0' y='10'/> <wall type='tree.png' x='0' y='12'/> <wall type='tree.png' x='0' y='14'/> <wall type='tree.png' x='1' y='11'/> <wall type='tree.png' x='0' y='8'/> <wall type='tree.png' x='0' y='6'/> <wall type='tree.png' x='2' y='7'/> <wall type='tree.png' x='1' y='5'/> <wall type='tree.png' x='2' y='5'/> <wall type='tree.png' x='3' y='5'/> <wall type='tree.png' x='3' y='4'/> <wall type='tree.png' x='5' y='4'/> <wall type='tree.png' x='7' y='3'/> <wall type='tree.png' x='7' y='4'/> <wall type='tree.png' x='5' y='5'/> <wall type='tree.png' x='4' y='8'/> <wall type='tree.png' x='1' y='7'/> <wall type='tree.png' x='1' y='9'/> <wall type='tree.png' x='3' y='11'/> <wall type='tree.png' x='3' y='13'/> <wall type='tree.png' x='1' y='13'/> <wall type='tree.png' x='3' y='7'/> <wall type='tree.png' x='2' y='11'/> <wall type='tree.png' x='0' y='11'/> <wall type='tree.png' x='5' y='8'/> <wall type='tree.png' x='4' y='4'/> <wall type='tree.png' x='14' y='10'/> <wall type='tree.png' x='16' y='8'/> <wall type='tree.png' x='14' y='8'/> <wall type='tree.png' x='12' y='9'/> <wall type='tree.png' x='12' y='10'/> <wall type='tree.png' x='12' y='12'/> <wall type='tree.png' x='11' y='11'/> <wall type='tree.png' x='13' y='11'/> <wall type='tree.png' x='13' y='9'/> <wall type='tree.png' x='13' y='8'/> <wall type='tree.png' x='15' y='9'/> <wall type='tree.png' x='15' y='11'/> <wall type='tree.png' x='14' y='12'/> <wall type='tree.png' x='11' y='10'/> <wall type='tree.png' x='10' y='12'/> <wall type='tree.png' x='15' y='13'/> <wall type='tree.png' x='14' y='14'/> <wall type='tree.png' x='15' y='14'/> <wall type='tree.png' x='14' y='13'/> <wall type='tree2.png' x='13' y='10'/> <wall type='tree2.png' x='15' y='11'/> <wall type='tree2.png' x='14' y='11'/> <wall type='tree2.png' x='13' y='12'/> <wall type='tree2.png' x='13' y='13'/> <wall type='tree2.png' x='4' y='10'/> <wall type='tree2.png' x='2' y='10'/> <wall type='tree2.png' x='3' y='9'/> <wall type='tree2.png' x='2' y='8'/> <wall type='tree2.png' x='4' y='8'/> <wall type='tree2.png' x='4' y='9'/> <wall type='tree2.png' x='3' y='10'/> <wall type='tree2.png' x='2' y='13'/> <wall type='tree2.png' x='0' y='13'/> <wall type='tree2.png' x='1' y='14'/> <wall type='tree.png' x='12' y='11'/> <wall type='tree.png' x='2' y='6'/> <wall type='tree.png' x='4' y='5'/> <wall type='tree.png' x='5' y='7'/> <wall type='tree.png' x='1' y='12'/> <wall type='tree.png' x='16' y='10'/> <wall type='tree.png' x='16' y='12'/> <wall type='tree.png' x='17' y='14'/> <wall type='tree.png' x='17' y='16'/> <wall type='tree.png' x='17' y='15'/> <wall type='tree.png' x='17' y='14'/> <wall type='tree.png' x='16' y='13'/> <wall type='tree.png' x='16' y='14'/> <wall type='tree.png' x='16' y='15'/> <wall type='tree.png' x='15' y='7'/> <wall type='tree.png' x='16' y='7'/> <wall type='tree.png' x='16' y='6'/> <wall type='tree2.png' x='16' y='7'/> <wall type='tree2.png' x='14' y='8'/> <wall type='tree2.png' x='4' y='6'/> <wall type='tree2.png' x='3' y='5'/> <wall type='tree2.png' x='5' y='5'/> <wall type='tree2.png' x='1' y='11'/> <wall type='tree2.png' x='17' y='15'/> <wall type='tree2.png' x='16' y='14'/> <wall type='tree2.png' x='15' y='14'/> <wall type='tree2.png' x='15' y='13'/> <wall type='tree2.png' x='11' y='11'/> <scenario> <suranium value='100'/> <nechelons value='15'/> </scenario> </level> <level number='12'> <title>Streverion</title> <desc>Streverion is a province of Astrum with an area of 99,712 km. The region is divided into 3 districts: Stever, Strion, Stork.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='15'/> <unit type='Light Cannon' x='9' y='13'/> <unit type='Light Cannon' x='11' y='13'/> <wall type='mountain1.jpg' x='16' y='12'/> <wall type='mountain1.jpg' x='16' y='3'/> <wall type='mountain1.jpg' x='0' y='5'/> <wall type='tree.png' x='6' y='11'/> <wall type='tree.png' x='6' y='13'/> <wall type='tree.png' x='4' y='14'/> <wall type='tree.png' x='4' y='16'/> <wall type='tree.png' x='6' y='17'/> <wall type='tree.png' x='7' y='18'/> <wall type='tree.png' x='5' y='17'/> <wall type='tree.png' x='4' y='15'/> <wall type='tree.png' x='13' y='11'/> <wall type='tree.png' x='14' y='12'/> <wall type='tree.png' x='15' y='13'/> <wall type='tree.png' x='14' y='14'/> <wall type='tree.png' x='15' y='15'/> <wall type='tree.png' x='14' y='17'/> <wall type='tree.png' x='13' y='18'/> <wall type='tree.png' x='14' y='18'/> <wall type='tree.png' x='14' y='16'/> <wall type='tree.png' x='5' y='13'/> <wall type='tree.png' x='14' y='11'/> <wall type='tree.png' x='13' y='10'/> <wall type='wall2.png' x='15' y='3'/> <wall type='wall2.png' x='16' y='3'/> <wall type='wall2.png' x='17' y='4'/> <wall type='wall2.png' x='16' y='4'/> <wall type='wall2.png' x='17' y='5'/> <wall type='wall2.png' x='16' y='6'/> <wall type='wall2.png' x='16' y='7'/> <wall type='wall2.png' x='16' y='8'/> <wall type='wall2.png' x='16' y='9'/> <wall type='wall2.png' x='17' y='10'/> <wall type='wall2.png' x='17' y='11'/> <wall type='wall2.png' x='18' y='12'/> <wall type='wall2.png' x='17' y='13'/> <wall type='wall2.png' x='16' y='5'/> <wall type='tree2.png' x='13' y='10'/> <wall type='tree2.png' x='13' y='11'/> <wall type='tree2.png' x='14' y='11'/> <wall type='tree2.png' x='14' y='12'/> <wall type='tree2.png' x='15' y='13'/> <wall type='tree2.png' x='14' y='14'/> <wall type='tree2.png' x='15' y='15'/> <wall type='tree2.png' x='14' y='16'/> <wall type='tree2.png' x='14' y='17'/> <wall type='tree2.png' x='14' y='18'/> <wall type='tree2.png' x='13' y='18'/> <wall type='tree2.png' x='7' y='18'/> <wall type='tree2.png' x='6' y='17'/> <wall type='tree2.png' x='5' y='17'/> <wall type='tree2.png' x='4' y='16'/> <wall type='tree2.png' x='4' y='15'/> <wall type='tree2.png' x='4' y='14'/> <wall type='tree2.png' x='5' y='13'/> <wall type='tree2.png' x='6' y='13'/> <wall type='tree2.png' x='6' y='11'/> <wall type='tree.png' x='5' y='14'/> <wall type='tree.png' x='5' y='16'/> <wall type='tree.png' x='5' y='15'/> <wall type='tree.png' x='4' y='17'/> <wall type='tree.png' x='5' y='12'/> <wall type='tree.png' x='15' y='14'/> <wall type='tree.png' x='14' y='13'/> <wall type='tree.png' x='15' y='16'/> <wall type='tree.png' x='15' y='18'/> <wall type='tree.png' x='13' y='19'/> <wall type='tree.png' x='6' y='18'/> <wall type='tree.png' x='14' y='10'/> <wall type='tree.png' x='16' y='11'/> <wall type='tree.png' x='15' y='12'/> <wall type='tree.png' x='15' y='11'/> <scenario> <suranium value='100'/> <nechelons value='20'/> </scenario> </level> <level number='13'> <title>Feihford</title> <desc>Feihford is a province of Astrum with an area of 83,511 km. The region is divided into 4 districts: Feigh, Finta, Fonford, Fostak.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='15'/> <unit type='Light Cannon' x='12' y='13'/> <unit type='Light Cannon' x='14' y='13'/> <unit type='Light Cannon' x='8' y='13'/> <wall type='wall2.png' x='22' y='19'/> <wall type='wall2.png' x='22' y='18'/> <wall type='wall2.png' x='21' y='18'/> <wall type='wall2.png' x='20' y='19'/> <wall type='wall2.png' x='17' y='19'/> <wall type='wall2.png' x='17' y='18'/> <wall type='wall2.png' x='18' y='18'/> <wall type='wall2.png' x='19' y='18'/> <wall type='wall2.png' x='18' y='16'/> <wall type='wall2.png' x='17' y='17'/> <wall type='wall2.png' x='20' y='16'/> <wall type='wall2.png' x='20' y='15'/> <wall type='wall2.png' x='19' y='13'/> <wall type='wall2.png' x='21' y='14'/> <wall type='wall2.png' x='22' y='16'/> <wall type='wall2.png' x='20' y='17'/> <wall type='wall2.png' x='19' y='17'/> <wall type='wall2.png' x='19' y='14'/> <wall type='wall2.png' x='20' y='13'/> <wall type='wall2.png' x='22' y='13'/> <wall type='wall2.png' x='21' y='16'/> <wall type='wall2.png' x='15' y='19'/> <wall type='wall2.png' x='16' y='19'/> <wall type='wall2.png' x='19' y='15'/> <wall type='wall2.png' x='16' y='18'/> <wall type='wall2.png' x='0' y='5'/> <wall type='wall2.png' x='3' y='5'/> <wall type='wall2.png' x='3' y='4'/> <wall type='wall2.png' x='2' y='5'/> <wall type='wall2.png' x='1' y='7'/> <wall type='wall2.png' x='0' y='9'/> <wall type='wall2.png' x='1' y='8'/> <wall type='wall2.png' x='0' y='6'/> <wall type='wall2.png' x='1' y='6'/> <wall type='wall2.png' x='3' y='6'/> <wall type='wall2.png' x='2' y='7'/> <wall type='wall2.png' x='0' y='8'/> <wall type='wall2.png' x='1' y='5'/> <wall type='wall2.png' x='4' y='4'/> <wall type='wall2.png' x='5' y='3'/> <wall type='wall2.png' x='4' y='5'/> <wall type='wall2.png' x='5' y='4'/> <wall type='wall.png' x='2' y='16'/> <wall type='wall.png' x='2' y='6'/> <wall type='wall.png' x='0' y='7'/> <wall type='wall.png' x='1' y='9'/> <wall type='wall.png' x='2' y='8'/> <wall type='wall.png' x='3' y='7'/> <wall type='wall.png' x='4' y='6'/> <wall type='wall.png' x='18' y='17'/> <wall type='wall.png' x='18' y='15'/> <wall type='wall.png' x='17' y='16'/> <wall type='wall.png' x='18' y='14'/> <wall type='wall.png' x='20' y='14'/> <wall type='wall.png' x='16' y='17'/> <wall type='tree.png' x='14' y='8'/> <wall type='tree.png' x='13' y='8'/> <wall type='tree.png' x='12' y='7'/> <wall type='tree.png' x='10' y='7'/> <wall type='tree.png' x='11' y='7'/> <wall type='tree.png' x='9' y='7'/> <wall type='tree.png' x='8' y='8'/> <wall type='tree.png' x='7' y='9'/> <wall type='tree.png' x='6' y='10'/> <wall type='tree.png' x='5' y='11'/> <wall type='tree.png' x='4' y='12'/> <wall type='tree.png' x='3' y='13'/> <wall type='tree.png' x='4' y='11'/> <wall type='tree.png' x='5' y='10'/> <wall type='tree.png' x='7' y='9'/> <wall type='tree.png' x='6' y='9'/> <wall type='tree.png' x='9' y='8'/> <wall type='tree.png' x='13' y='7'/> <wall type='tree.png' x='7' y='8'/> <wall type='tree2.png' x='8' y='7'/> <wall type='tree2.png' x='5' y='9'/> <wall type='tree2.png' x='3' y='12'/> <wall type='tree2.png' x='10' y='8'/> <wall type='tree2.png' x='12' y='8'/> <wall type='tree2.png' x='14' y='7'/> <wall type='mountain1.jpg' x='18' y='3'/> <scenario> <suranium value='100'/> <nechelons value='20'/> </scenario> </level> <level number='14'> <title>Uraniumland</title> <desc>Uraniumland is a province of Astrum with an area of 183,781 km. The region is divided into 5 districts: Minevil, Urankoal, Uviladge, Mernkot, Uraniumhold.</desc> <size width='25' height='20'/> <background type='ground1.jpg'/> <unit type='Command Center' x='10' y='16'/> <unit type='Howitzer' x='10' y='14'/> <wall type='tree.png' x='2' y='4'/> <wall type='tree.png' x='3' y='5'/> <wall type='tree.png' x='4' y='6'/> <wall type='tree.png' x='5' y='7'/> <wall type='tree.png' x='5' y='8'/> <wall type='tree.png' x='5' y='9'/> <wall type='tree.png' x='5' y='10'/> <wall type='tree.png' x='4' y='11'/> <wall type='tree.png' x='3' y='12'/> <wall type='tree.png' x='2' y='13'/> <wall type='tree.png' x='12' y='7'/> <wall type='tree.png' x='12' y='8'/> <wall type='tree.png' x='12' y='9'/> <wall type='tree.png' x='12' y='10'/> <wall type='tree.png' x='13' y='6'/> <wall type='tree.png' x='14' y='5'/> <wall type='tree.png' x='15' y='4'/> <wall type='tree.png' x='13' y='11'/> <wall type='tree.png' x='14' y='12'/> <wall type='tree.png' x='15' y='13'/> <wall type='tree2.png' x='4' y='7'/> <wall type='tree2.png' x='4' y='10'/> <wall type='tree2.png' x='13' y='7'/> <wall type='tree2.png' x='13' y='10'/> <wall type='mountain1.jpg' x='18' y='3'/> <wall type='mountain1.jpg' x='17' y='12'/> <wall type='wall2.png' x='0' y='18'/> <wall type='wall2.png' x='1' y='19'/> <wall type='wall2.png' x='0' y='19'/> <wall type='wall2.png' x='0' y='17'/> <wall type='wall2.png' x='1' y='18'/> <wall type='wall2.png' x='2' y='19'/> <wall type='wall2.png' x='3' y='19'/> <wall type='wall2.png' x='17' y='19'/> <wall type='wall2.png' x='16' y='19'/> <wall type='wall2.png' x='17' y='18'/> <wall type='wall2.png' x='15' y='19'/> <wall type='wall2.png' x='16' y='18'/> <wall type='wall2.png' x='17' y='17'/> <scenario> <suranium value='100'/> <nechelons value='25'/> </scenario> </level> </maps> ; } }//package fai
Section 23
//MineGoal (fai.MineGoal) package fai { public class MineGoal extends Goal { private var minetime:int;// = 80 private var engine:Engine;// = null private var mine:int;// = 0 public function MineGoal(_arg1:Engine, _arg2:Unit):void{ engine = null; mine = 0; minetime = 80; super(); engine = _arg1; owner = _arg2; } public function advance():void{ if (mine > 0){ mine--; } else { engine.addResources(Consts.uraniumportion); engine.updateMenu(); mine = minetime; }; } } }//package fai
Section 24
//MouseCursor (fai.MouseCursor) package fai { import flash.display.*; import flash.text.*; public class MouseCursor extends Sprite { private var goodshape:Shape;// = null public var bitmap:AnimatedBitmap;// = null public var type:String;// = null public var spritewidth:int;// = 0 private var msg:TextField;// = null private var badshape:Shape;// = null public var costuran:uint;// = 0 public function MouseCursor(_arg1:String, _arg2:AnimatedBitmap, _arg3:uint, _arg4:uint, _arg5:int):void{ bitmap = null; type = null; badshape = null; goodshape = null; costuran = 0; msg = null; spritewidth = 0; super(); type = _arg1; costuran = _arg4; bitmap = new AnimatedBitmap(_arg2.curbuffer, _arg2.width, _arg2.height); spritewidth = _arg5; addChild(bitmap); bitmap.x = (bitmap.x - (_arg2.width / 2)); bitmap.y = (bitmap.y - (_arg2.height / 2)); if (!_arg3){ _arg3 = 1; }; goodshape = new Shape(); drawEyeRange(0xEAEAEA, goodshape, _arg3); addChild(goodshape); badshape = new Shape(); badshape.visible = false; drawEyeRange(0xFF0000, badshape, _arg3); addChild(badshape); msg = Utils.createTextField(0xD8D8D8, 10); msg.text = "Select place for building"; msg.y = (msg.height * 2); msg.x = (msg.x - (msg.width / 2)); addChild(msg); } public function isGood():Boolean{ return (goodshape.visible); } public function setGood(_arg1:Boolean):void{ goodshape.visible = _arg1; badshape.visible = !(_arg1); } public function remove():void{ removeChild(bitmap); removeChild(goodshape); removeChild(badshape); } public function drawEyeRange(_arg1:uint, _arg2:Shape, _arg3:uint):void{ var _local4:uint; var _local5:uint; _local4 = 0x666666; _local5 = 0; _arg2.graphics.lineStyle(_local5, _local4); _arg2.graphics.beginFill(_arg1); _arg2.graphics.drawCircle(0, 0, (_arg3 * Consts.cellsize)); _arg2.graphics.endFill(); _arg2.alpha = 0.1; } } }//package fai
Section 25
//MoveGoal (fai.MoveGoal) package fai { public class MoveGoal extends Goal { private var engine:Engine;// = null public var checkpauses:Boolean;// = false public var pathindex:uint;// = 0 public var target:Position; public var world:MapMatrix;// = null public var path:Array; public var astar:Astar;// = null private var pause:uint;// = 0 private var pauses:int;// = 0 public static const PAUSE:uint = 10; public static var npathfindings:int = 0; public function MoveGoal(_arg1:Unit, _arg2:MapMatrix, _arg3:Engine):void{ target = new Position(); path = new Array(); pathindex = 0; world = null; pause = 0; pauses = 0; astar = null; checkpauses = false; engine = null; super(); engine = _arg3; owner = _arg1; world = _arg2; astar = new Astar(_arg2); astar.tid = owner.mapid; if (owner.peaceful){ astar.checkxy = astar.checknotempty; }; } public function advance():void{ var _local1:uint; if (Consts.MOVING == owner.cstate){ owner.move(); } else { if (Consts.IDLE == owner.cstate){ if (target.isequal(owner.pos)){ deactivate(); path.length = 0; owner = null; } else { if (pause > 0){ pause--; if (!pause){ if (((!(path.length)) || (world.getpos(path[pathindex])))){ setTarget(target); }; if (pauses >= 5){ if (checkpauses){ deactivate(); } else { if (owner.mapid != Consts.hostileId){ pauses = 0; astar.checkxy = astar.checknotempty; setTarget(target); astar.checkxy = astar.checkwallid; }; }; }; }; } else { if (path.length > 0){ _local1 = world.getpos(path[pathindex]); if (((!(owner.pos.isequal(path[pathindex]))) && (!((_local1 == 0))))){ if (Consts.Wall == _local1){ trace("very strange!"); setTarget(target); } else { pauses++; pause = PAUSE; return; }; } else { owner.startmove(path[pathindex]); world.setpos(path[pathindex], owner.mapid); pathindex++; owner.move(); }; } else { pauses++; pause = PAUSE; }; }; }; }; }; } public function setTarget(_arg1:Position):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; target.x = _arg1.x; target.y = _arg1.y; path.length = 0; pathindex = 0; if (npathfindings < Consts.PathfindingsPerTick){ astar.search(owner.pos, target, path, (owner.mapid == Consts.hostileId)); npathfindings++; }; if (!path.length){ pause = (PAUSE * 3); pauses++; } else { pauses = 0; _local2 = (owner.sprite.x / Consts.cellsize); _local3 = (owner.sprite.y / Consts.cellsize); if (((!((_local2 == owner.pos.x))) || (!((_local3 == owner.pos.y))))){ _local4 = Math.sqrt((((target.x - _local2) * (target.x - _local2)) + ((target.y - _local3) * (target.y - _local3)))); _local5 = Math.sqrt((((target.x - owner.pos.x) * (target.x - owner.pos.x)) + ((target.y - owner.pos.y) * (target.y - owner.pos.y)))); if (_local5 < _local4){ path.unshift(new Position(owner.pos.x, owner.pos.y)); }; }; }; } public function cleanup():void{ if (owner){ if ((((pathindex > 0)) && (!(owner.pos.isequal(path[(pathindex - 1)]))))){ world.setpos(path[(pathindex - 1)], 0); }; if (owner.cstate == Consts.MOVING){ owner.cstate = Consts.IDLE; }; }; } override public function deactivate():void{ super.deactivate(); cleanup(); } } }//package fai
Section 26
//Player (fai.Player) package fai { public class Player { public var camp:Camp; private var engine:Engine;// = null public function Player(_arg1:Engine):void{ engine = null; camp = new Camp(); super(); engine = _arg1; } public function attackTarget(_arg1:Position):void{ var _local2:Unit; var _local3:Unit; moveUnits(_arg1, false); _local2 = engine.getUnitUnder(_arg1); if (_local2){ for each (_local3 in engine.selectedUnits) { if (!_local3.peaceful){ _local3.life.setAttackTarget(_local2); }; }; }; } public function stopUnits():void{ var _local1:Unit; for each (_local1 in engine.selectedUnits) { _local1.life.stop(); }; } public function moveUnits(_arg1:Position, _arg2:Boolean):void{ var _local3:Unit; for each (_local3 in engine.selectedUnits) { if (!_local3.building){ _local3.life.move(_arg1, _arg2); }; }; } } }//package fai
Section 27
//Position (fai.Position) package fai { public class Position { public var x:int;// = 0 public var y:int;// = 0 public function Position(_arg1:int=0, _arg2:int=0):void{ x = 0; y = 0; super(); set(_arg1, _arg2); } public function set(_arg1:int, _arg2:int):void{ x = _arg1; y = _arg2; } public function isequal(_arg1:Position):Boolean{ return ((((x == _arg1.x)) && ((y == _arg1.y)))); } } }//package fai
Section 28
//RepairGoal (fai.RepairGoal) package fai { public class RepairGoal extends Goal { private var engine:Engine;// = null private var urancost:int;// = 0 private var life:int;// = 0 public function RepairGoal(_arg1:Unit, _arg2:Engine):void{ urancost = 0; life = 0; engine = null; super(); owner = _arg1; engine = _arg2; life = engine.utypes.params(owner.type).health; life = (life + ((life * _arg1.upgradeLevel) * Consts.upgradeHExtra)); if (life == owner.health){ deactivate(); return; }; urancost = (owner.costuran - ((owner.costuran * owner.health) / life)); if (((!(urancost)) && (owner.costuran))){ urancost = 1; }; if (engine.uranium < urancost){ engine.log("Not enough resources for repair"); } else { engine.uranium = (engine.uranium - urancost); engine.menu.resources.update(); owner.health = life; if (engine.isUnitInSelection(owner)){ engine.updateMenu(); }; }; deactivate(); } public function advance():void{ } public static function rcost(_arg1, _arg2:Unit):int{ var _local3:int; var _local4:int; _local3 = _arg1.utypes.params(_arg2.type).health; _local3 = (_local3 + ((_local3 * _arg2.upgradeLevel) * Consts.upgradeHExtra)); if (_arg2.health == _local3){ return (0); }; _local4 = (_arg2.costuran - ((_arg2.costuran * _arg2.health) / _local3)); if (((!(_local4)) && (_arg2.costuran))){ _local4 = 1; }; return (_local4); } } }//package fai
Section 29
//Scenario (fai.Scenario) package fai { import flash.events.*; import flash.display.*; import flash.utils.*; public class Scenario { public var engine:Engine;// = null public var wave:int;// = 0 public var thinktimer:Timer;// = null public var cc:Unit;// = null private var unitStack:Array; private var factories:Array; private var units:Array; public var pause:int;// = 0 private var subwave:int;// = 0 private var whileLive:Boolean;// = false private static const PAUSE:int = 8; private static var MaxUnitsPerWave:int = 0; public function Scenario(_arg1:Engine):void{ engine = null; thinktimer = null; cc = null; wave = 0; subwave = 0; pause = 0; whileLive = false; factories = new Array(); units = new Array(); unitStack = new Array(); super(); MaxUnitsPerWave = 0; engine = _arg1; engine.scenario = this; } private function liveCount():int{ var _local1:int; var _local2:int; var _local3:Unit; _local1 = 0; _local2 = 0; while (_local2 < units.length) { _local3 = units[_local2]; if ((((_local3.mapid == Consts.hostileId)) && (_local3.isLive()))){ _local1++; }; _local2++; }; return (_local1); } public function addUnit(_arg1:Unit):void{ units.push(_arg1); _arg1.life.move(cc.pos, false); } public function stop():void{ if (thinktimer){ thinktimer.stop(); thinktimer.removeEventListener(TimerEvent.TIMER, thinkHandler); thinktimer = null; }; units = null; cc = null; } private function makeEnemies(_arg1:int):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:String; var _local6:Unit; _local2 = int(((wave + 1) / 2)); _local3 = 0; while (_local3 < engine.mapheight) { _local4 = 3; while (_local4 < engine.mapwidth) { if (engine.world.getxy(_local4, _local3) == 0){ if ((((_arg1 < MaxUnitsPerWave)) && ((unitStack.length > 0)))){ _local5 = unitStack.shift(); _local6 = engine.buildUnit(_local5, _local4, _local3, true); engine.upgradeUnitToLevel(_local6, _local2); addUnit(_local6); _arg1++; } else { return; }; }; _local4++; }; _local3++; }; } public function sendNext():void{ if ((((subwave > 8)) && ((units.length > 0)))){ engine.log("You must destroy Boss Echelon first."); return; }; pause = 0; whileLive = false; thinkHandler(null); } public function start():void{ var _local1:String; var _local2:BitmapData; var _local3:AnimatedBitmap; engine.selectedUnits.length = 0; engine.selectedUnits.push(cc); engine.updateMenu(); MaxUnitsPerWave = 20; for each (_local1 in UnitTypes.enemies) { _local2 = engine.sloader.getBody(_local1); _local3 = new AnimatedBitmap(_local2, _local2.width, _local2.height); engine.menu.announce.add(_local1, _local3, 0); }; thinktimer = new Timer(1000, 0); thinktimer.addEventListener(TimerEvent.TIMER, thinkHandler); thinktimer.start(); engine.menu.announce.setWave((wave + 1)); thinkHandler(null); } private function makeSubwave(_arg1:int, _arg2:int=2):void{ var _local3:int; var _local4:int; _local3 = Math.floor((((UnitTypes.enemies.length - _arg1) * (wave + 1)) / _arg2)); if (!_local3){ _local3 = 1; }; engine.menu.announce.add(UnitTypes.enemies[_arg1], null, _local3); _local4 = 0; while (_local4 < _local3) { unitStack.push(UnitTypes.enemies[_arg1]); _local4++; }; } private function thinkHandler(_arg1:TimerEvent):void{ var _local2:int; var _local3:int; if (!cc.isLive()){ engine.log("Your Command Center has been destroyed!"); engine.menu.gameover(); return; }; _local2 = liveCount(); if (unitStack.length > 0){ makeEnemies(_local2); return; }; if (whileLive){ if (_local2 > 0){ return; }; whileLive = false; }; if (pause > 0){ pause--; engine.menu.announce.setSubText((pause + " secs")); return; }; if (subwave >= 8){ engine.menu.announce.setSubText("Boss"); } else { engine.menu.announce.setSubText(((subwave + 1).toString() + "/8")); }; if (!_local2){ units.length = 0; }; if (subwave == UnitTypes.enemies.length){ engine.log("Boss Attack Started."); _local3 = 0; while (_local3 < UnitTypes.enemies.length) { makeSubwave(_local3); _local3++; }; whileLive = true; subwave++; } else { if (subwave > UnitTypes.enemies.length){ subwave = 0; wave++; engine.score = (engine.score + 1000); if (wave >= engine.nechelons){ engine.menu.victory(); } else { engine.log("Another echelon is destroyed. Congratulations!"); engine.uranium = (engine.uranium + 300); engine.menu.announce.setWave((wave + 1)); }; engine.menu.resources.update(); pause = (PAUSE * 2); } else { makeSubwave(subwave); subwave++; whileLive = true; }; }; } public function setCommandCenter(_arg1:Unit):void{ cc = _arg1; } } }//package fai
Section 30
//SmartLoader (fai.SmartLoader) package fai { import flash.events.*; import flash.display.*; import flash.media.*; import flash.utils.*; public class SmartLoader { public var buttons:Dictionary; public var sounds:Dictionary; public var loaded:Boolean;// = false public var engine:Engine;// = null public var grounds:Dictionary; private var loadendHandler:Function;// = null public var maps:Map; private var loadprocessHandler:Function;// = null public var specials:Dictionary; public var utypes:UnitTypes;// = null public var mimages:Dictionary; private var loadcount:int;// = 0 private var startcount:int;// = 0 public var suites:Dictionary; public static const host:String = "http://www.warspark.com/stormadtemp/"; public function SmartLoader(){ suites = new Dictionary(); buttons = new Dictionary(); sounds = new Dictionary(); grounds = new Dictionary(); mimages = new Dictionary(); specials = new Dictionary(); maps = new Map(); engine = null; loaded = false; loadcount = 0; startcount = 0; utypes = null; loadendHandler = null; loadprocessHandler = null; super(); } public function getLibSound(_arg1:String):Sound{ return (sounds[_arg1]); } public function getSpecial(_arg1:String):AnimatedBitmap{ var _local2:BitmapData; _local2 = specials[_arg1]; return (new AnimatedBitmap(_local2, _local2.width, _local2.height)); } public function dressUnit(_arg1:Unit, _arg2:String, _arg3:Engine):void{ var _local4:Array; _local4 = suites[_arg2]; _arg1.sprite.setAppearence(_local4[0], _local4[1], _local4[2], _local4[3], _local4[4], _arg1.spritewidth); if (!_arg1.attacksound){ _arg1.attacksound = Sound(getLibSound(UnitTypes.shotsimple)); }; _arg3.unitlayer.addChildAt(_arg1.sprite, 0); } public function getBody(_arg1:String):BitmapData{ return (suites[_arg1][0]); } public function dressPeacefulUnit(_arg1:Unit, _arg2:String, _arg3:Engine):void{ var _local4:Array; _local4 = suites[_arg2]; _arg1.sprite.setAppearence(_local4[0], null, _local4[2], null, null, _arg1.spritewidth); _arg3.unitlayer.addChildAt(_arg1.sprite, 0); } private function loadCompleteHandler(_arg1:Event):void{ loadcount--; if (!loadcount){ loadprocessHandler(100); loaded = true; loadendHandler(); } else { loadprocessHandler((100 - ((loadcount * 100) / startcount))); }; } public function load():void{ suites[UnitTypes.amphibiantank] = new Array(5); suites[UnitTypes.amphibiantank][0] = new AmphibianTankbody(0, 0); suites[UnitTypes.amphibiantank][1] = new AmphibianTankattack(0, 0); suites[UnitTypes.amphibiantank][2] = new AmphibianTankdeath(0, 0); suites[UnitTypes.amphibiantank][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.amphibiantank][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.battleship] = new Array(5); suites[UnitTypes.battleship][0] = new Battleshipbody(0, 0); suites[UnitTypes.battleship][1] = new Battleshipattack(0, 0); suites[UnitTypes.battleship][2] = new Battleshipdeath(0, 0); suites[UnitTypes.battleship][3] = new Battleshipbullet(0, 0); suites[UnitTypes.battleship][4] = new Battleshipbe(0, 0); suites[UnitTypes.bdg] = new Array(5); suites[UnitTypes.bdg][0] = new BDGbody(0, 0); suites[UnitTypes.bdg][1] = new BDGattack(0, 0); suites[UnitTypes.bdg][2] = new BDGdeath(0, 0); suites[UnitTypes.bdg][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.bdg][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.cc] = new Array(5); suites[UnitTypes.cc][0] = new CCbody(0, 0); suites[UnitTypes.cc][1] = new CCattack(0, 0); suites[UnitTypes.cc][2] = new CCdeath(0, 0); suites[UnitTypes.cc][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.cc][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.coyote] = new Array(5); suites[UnitTypes.coyote][0] = new Coyotebody(0, 0); suites[UnitTypes.coyote][1] = new Coyoteattack(0, 0); suites[UnitTypes.coyote][2] = new Coyotedeath(0, 0); suites[UnitTypes.coyote][3] = new Coyotebullet(0, 0); suites[UnitTypes.coyote][4] = new Coyotebe(0, 0); suites[UnitTypes.tankdestroyer] = new Array(5); suites[UnitTypes.tankdestroyer][0] = new Destroyerbody(0, 0); suites[UnitTypes.tankdestroyer][1] = new Destroyerattack(0, 0); suites[UnitTypes.tankdestroyer][2] = new Destroyerdeath(0, 0); suites[UnitTypes.tankdestroyer][3] = new Battleshipbullet(0, 0); suites[UnitTypes.tankdestroyer][4] = new Battleshipbe(0, 0); suites[UnitTypes.heavycannon] = new Array(5); suites[UnitTypes.heavycannon][0] = new HCbody(0, 0); suites[UnitTypes.heavycannon][1] = new HCattack(0, 0); suites[UnitTypes.heavycannon][2] = new HCdeath(0, 0); suites[UnitTypes.heavycannon][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.heavycannon][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.howitzer] = new Array(5); suites[UnitTypes.howitzer][0] = new Howitzerbody(0, 0); suites[UnitTypes.howitzer][1] = new Howitzerattack(0, 0); suites[UnitTypes.howitzer][2] = new Howitzerdeath(0, 0); suites[UnitTypes.howitzer][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.howitzer][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.leopard] = new Array(5); suites[UnitTypes.leopard][0] = new Leopardbody(0, 0); suites[UnitTypes.leopard][1] = new Leopardattack(0, 0); suites[UnitTypes.leopard][2] = new Leoparddeath(0, 0); suites[UnitTypes.leopard][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.leopard][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.lightcannon] = new Array(5); suites[UnitTypes.lightcannon][0] = new LCbody(0, 0); suites[UnitTypes.lightcannon][1] = new LCattack(0, 0); suites[UnitTypes.lightcannon][2] = new LCdeath(0, 0); suites[UnitTypes.lightcannon][3] = new Battleshipbullet(0, 0); suites[UnitTypes.lightcannon][4] = new Coyotebe(0, 0); suites[UnitTypes.m13tank] = new Array(5); suites[UnitTypes.m13tank][0] = new M13Tbody(0, 0); suites[UnitTypes.m13tank][1] = new M13Tattack(0, 0); suites[UnitTypes.m13tank][2] = new M13Tdeath(0, 0); suites[UnitTypes.m13tank][3] = new Coyotebullet(0, 0); suites[UnitTypes.m13tank][4] = new Coyotebe(0, 0); suites[UnitTypes.missiletank] = new Array(5); suites[UnitTypes.missiletank][0] = new MTbody(0, 0); suites[UnitTypes.missiletank][1] = new MTattack(0, 0); suites[UnitTypes.missiletank][2] = new MTdeath(0, 0); suites[UnitTypes.missiletank][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.missiletank][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.missileturret] = new Array(5); suites[UnitTypes.missileturret][0] = new MTtbody(0, 0); suites[UnitTypes.missileturret][1] = new MTtattack(0, 0); suites[UnitTypes.missileturret][2] = new MTtdeath(0, 0); suites[UnitTypes.missileturret][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.missileturret][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.mortar] = new Array(5); suites[UnitTypes.mortar][0] = new Mortarbody(0, 0); suites[UnitTypes.mortar][1] = new Mortarattack(0, 0); suites[UnitTypes.mortar][2] = new Mortardeath(0, 0); suites[UnitTypes.mortar][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.mortar][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.tiger] = new Array(5); suites[UnitTypes.tiger][0] = new Tigerbody(0, 0); suites[UnitTypes.tiger][1] = new Tigerattack(0, 0); suites[UnitTypes.tiger][2] = new Tigerdeath(0, 0); suites[UnitTypes.tiger][3] = new AmphibianTankbullet(0, 0); suites[UnitTypes.tiger][4] = new AmphibianTankbe(0, 0); suites[UnitTypes.urefinery] = new Array(5); suites[UnitTypes.urefinery][0] = new URbody(0, 0); suites[UnitTypes.urefinery][1] = null; suites[UnitTypes.urefinery][2] = new URdeath(0, 0); suites[UnitTypes.urefinery][3] = null; suites[UnitTypes.urefinery][4] = null; buttons[UnitTypes.batomicbomb] = new Buttonatomicbomb(0, 0); buttons[UnitTypes.battack] = new Buttonattack(0, 0); buttons[UnitTypes.bbdg] = new Buttonbdg(0, 0); buttons[UnitTypes.bcancel] = new Buttoncancel(0, 0); buttons[UnitTypes.bhowitzer] = new Buttonhowitzer(0, 0); buttons[UnitTypes.blcannon] = new Buttonlcannon(0, 0); buttons[UnitTypes.bhcannon] = new Buttonhcannon(0, 0); buttons[UnitTypes.bmissileturret] = new Buttonmissileturret(0, 0); buttons[UnitTypes.bmortar] = new Buttonmortar(0, 0); buttons[UnitTypes.bstop] = new Buttonstop(0, 0); buttons[UnitTypes.burefinery] = new Buttonurefinery(0, 0); mimages[UnitTypes.miuranium] = new Menuuranium(0, 0); mimages[UnitTypes.miattack] = new Menuattack(0, 0); mimages[UnitTypes.mirange] = new Menurange(0, 0); mimages[UnitTypes.miarmor] = new Menushield(0, 0); mimages[UnitTypes.miheart] = new Menuheart(0, 0); grounds["ground1.jpg"] = new Ground1(0, 0); grounds["mountain1.jpg"] = new Mountain1(0, 0); grounds["themap.jpg"] = new GroundTheMap(0, 0); grounds["tree.png"] = new Groundtree(0, 0); grounds["tree2.png"] = new Groundtree2(0, 0); grounds["wall.png"] = new Groundwall(0, 0); grounds["wall2.png"] = new Groundwall2(0, 0); specials[UnitTypes.spatomicbomb] = new Specialatomicbomb(0, 0); sounds[UnitTypes.shotsimple] = new Soundshotsimple(); sounds[UnitTypes.shotmiddle] = new Soundshotmiddle(); sounds[UnitTypes.shotbest] = new Soundshotbest(); sounds[UnitTypes.shotab] = new Soundshotab(); loadendHandler(); loaded = true; } public function getButton(_arg1:String):AnimatedBitmap{ var _local2:BitmapData; _local2 = buttons[_arg1]; return (new AnimatedBitmap(_local2, _local2.width, _local2.height)); } public function getMenuItem(_arg1:String):AnimatedBitmap{ var _local2:BitmapData; _local2 = mimages[_arg1]; return (new AnimatedBitmap(_local2, _local2.width, _local2.height)); } public function startLoading(_arg1:Function, _arg2:Function):void{ var _local3:XML; var _local4:XMLList; var _local5:XML; loadendHandler = _arg2; loadprocessHandler = _arg1; _local3 = new XML(Maps.maps); _local4 = _local3.level; for each (_local5 in _local4) { maps.add(int(_local5.@number), new LevelMap(new XML(_local5.toString()))); }; load(); } public function getGround(_arg1:String):AnimatedBitmap{ var _local2:BitmapData; _local2 = grounds[_arg1]; return (new AnimatedBitmap(_local2, _local2.width, _local2.height)); } } }//package fai
Section 31
//Unit (fai.Unit) package fai { import flash.events.*; import flash.media.*; public class Unit { public var bulletspeed:uint;// = 45 public var mapid:uint;// = 0 private var attackpos:Position;// = null public var cstate:uint;// = 0 public var desc:String;// = "Assaulter. Defend Command Center against this unit." public var spritewidth:int;// = 24 public var rotstep:int;// = 15 private var destangel:int;// = 0 private var movetarget:Position;// = null public var eyerange:uint;// = 3 public var deathsteps:uint;// = 12 public var building:Boolean;// = false public var type:String;// = null public var deathcost:uint;// = 3 public var sprite:UnitSprite; public var attacksound:Sound;// = null public var upgradeLevel:int;// = 0 public var engine:Engine;// = null private var xstep:int;// = 0 private var ystep:int;// = 0 public var armor:uint;// = 1 public var peaceful:Boolean;// = false private var step:uint;// = 0 public var pos:Position; public var costuran:uint;// = 100 private var attacktarget:Unit;// = null public var health:int;// = 50 public var rotating:Boolean;// = false public var attackssteps:uint;// = 3 public var damage:uint;// = 0 public var movesteps:int;// = 10 public var rechargetime:uint;// = 25 public var life:LifeGoal;// = null public var killed:int;// = 0 public function Unit(_arg1:Engine, _arg2:uint, _arg3:String):void{ rotstep = 15; movesteps = 10; attackssteps = 3; deathsteps = 12; type = null; spritewidth = 24; pos = new Position(); sprite = new UnitSprite(); cstate = 0; eyerange = 3; damage = 0; armor = 1; health = 50; bulletspeed = 45; rechargetime = 25; deathcost = 3; killed = 0; upgradeLevel = 0; costuran = 100; building = false; peaceful = false; attacksound = null; desc = "Assaulter. Defend Command\nCenter against this unit."; movetarget = null; attacktarget = null; attackpos = null; engine = null; mapid = 0; xstep = 0; ystep = 0; step = 0; rotating = false; destangel = 0; life = null; super(); engine = _arg1; mapid = _arg2; type = _arg3; if (engine){ sprite.addEventListener(MouseEvent.MOUSE_OVER, onmouseover); sprite.addEventListener(MouseEvent.MOUSE_OUT, onmouseout); }; } public function die():void{ if (!step){ sprite.setDeathSprite(); engine.playExpl(pos); }; step++; sprite.setFrame(((step * sprite.nframes()) / deathsteps)); if (step >= deathsteps){ reset(); }; } private function onmouseover(_arg1:MouseEvent):void{ updateHealth(); } public function updateHealth():void{ var _local1:int; _local1 = engine.utypes.params(type).health; _local1 = (_local1 + ((_local1 * upgradeLevel) * Consts.upgradeHExtra)); sprite.select(((health * 100) / _local1), true); } public function copyProperties(_arg1:Unit):void{ eyerange = _arg1.eyerange; damage = _arg1.damage; armor = _arg1.armor; health = _arg1.health; bulletspeed = _arg1.bulletspeed; rechargetime = _arg1.rechargetime; } public function startattack(_arg1:Unit):void{ reset(); attacktarget = _arg1; cstate = Consts.ATTACK; attackpos = new Position(); attackpos.set(attacktarget.sprite.x, attacktarget.sprite.y); if (rotstep){ startrotate((((Math.atan2((attacktarget.sprite.y - sprite.y), (attacktarget.sprite.x - sprite.x)) / Math.PI) * 180) - 90)); }; } public function isLive():Boolean{ return ((health > 0)); } private function onmouseout(_arg1:MouseEvent):void{ if (((!(isLive())) || (!(engine.isUnitInSelection(this))))){ sprite.select(0, false); }; } public function startrotate(_arg1:int):void{ destangel = (_arg1 - sprite.body.rotation); if (destangel > 180){ destangel = (destangel - 360); } else { if (destangel < -180){ destangel = (destangel + 360); }; }; if (!destangel){ return; }; rotating = true; } public function move():void{ var _local1:DriveSmoke; if (rotating){ rotate(); return; }; if (!step){ sprite.setMoveSprite(); }; sprite.x = (sprite.x + xstep); sprite.y = (sprite.y + ystep); step++; if ((step % 2)){ _local1 = new DriveSmoke(engine); _local1.x = sprite.x; _local1.y = sprite.y; _local1.rotation = (Math.random() * 360); engine.backgr.addChild(_local1); _local1.play(); }; sprite.setFrame(((step * sprite.nframes()) / movesteps)); if (step >= movesteps){ engine.world.setpos(pos, 0); pos = movetarget; reset(); }; } public function reset():void{ cstate = Consts.IDLE; step = (ystep = (xstep = 0)); attacktarget = null; rotating = false; } public function rotate():void{ var _local1:int; if (Math.abs(destangel) < rotstep){ sprite.body.rotation = (sprite.body.rotation + destangel); destangel = 0; rotating = false; } else { _local1 = ((Math.abs(destangel) > rotstep)) ? ((destangel > 0)) ? rotstep : -(rotstep) : destangel; sprite.body.rotation = (sprite.body.rotation + _local1); destangel = (destangel - _local1); }; } public function startmove(_arg1:Position):void{ reset(); movetarget = _arg1; cstate = Consts.MOVING; xstep = (((movetarget.x * Consts.cellsize) - sprite.x) / movesteps); ystep = (((movetarget.y * Consts.cellsize) - sprite.y) / movesteps); if (rotstep){ startrotate((((Math.atan2(ystep, xstep) / Math.PI) * 180) - 90)); }; } public function startdie():void{ reset(); cstate = Consts.DEATH; sprite.removeEventListener(MouseEvent.MOUSE_OVER, onmouseover); sprite.removeEventListener(MouseEvent.MOUSE_OUT, onmouseout); sprite.select(0, false); } public function attack():void{ if (rotating){ rotate(); return; }; if (!step){ sprite.setAttackSprite(); engine.playSound(attacksound, pos); }; if (step >= attackssteps){ engine.runBullet(this, attacktarget, attackpos); reset(); sprite.setMoveSprite(); } else { step++; sprite.setFrame(((step * sprite.nframes()) / attackssteps)); }; } public function activate(_arg1:Engine):void{ life = new LifeGoal(_arg1, this); _arg1.goals.push(life); } } }//package fai
Section 32
//UnitSprite (fai.UnitSprite) package fai { import flash.display.*; public class UnitSprite extends Sprite { public var bullet:BitmapData;// = null public var star;// = null public var selection:Shape;// = null public var body:Sprite; private var lastfrontier:int;// = -1 public var sprite:AnimatedBitmap;// = null public var dbuffer:BitmapData;// = null public var bulletexp:BitmapData;// = null public var abuffer:BitmapData;// = null public var mbuffer:BitmapData;// = null public function UnitSprite(){ body = new Sprite(); selection = null; sprite = null; star = null; mbuffer = null; abuffer = null; dbuffer = null; bullet = null; bulletexp = null; lastfrontier = -1; super(); visible = false; } public function select(_arg1:uint, _arg2:Boolean):void{ var sqcount:*; var frontier:*; var diameter:*; var rsize:*; var startx:*; var i:*; var hpercent = _arg1; var enable = _arg2; if (!selection){ selection = new Shape(); addChildAt(selection, 1); selection.x = (selection.x - (sprite.width / 2)); selection.y = (selection.y - (sprite.height / 2)); selection.alpha = 0.5; }; if (enable){ var _local4 = selection; with (_local4) { visible = true; sqcount = 7; frontier = ((hpercent * sqcount) / 100); if (frontier != lastfrontier){ lastfrontier = frontier; diameter = Math.max(sprite.width, sprite.height); graphics.clear(); graphics.lineStyle(1, 2244111); graphics.drawCircle((sprite.width / 2), (sprite.height / 2), (diameter / 2)); rsize = 5; startx = (((-(rsize) * sqcount) / 2) + (sprite.width / 2)); graphics.lineStyle(1, 0); i = 0; while (i < sqcount) { if (i < frontier){ graphics.beginFill(4025627); }; graphics.drawRect(startx, (diameter + 3), rsize, rsize); if (i < frontier){ graphics.endFill(); }; startx = (startx + rsize); i++; }; }; }; } else { selection.visible = false; }; } public function setFrame(_arg1:uint):void{ sprite.setFrame(_arg1); } public function rotate(_arg1:uint):void{ body.rotation = _arg1; } public function setDeathSprite():void{ sprite.setBuffer(dbuffer); if (star){ removeChild(star); }; } public function nframes():uint{ return (sprite.nframes); } public function setAttackSprite():void{ sprite.setBuffer(abuffer); } public function setAppearence(_arg1:BitmapData, _arg2:BitmapData, _arg3:BitmapData, _arg4:BitmapData, _arg5:BitmapData, _arg6:int):void{ mbuffer = _arg1; abuffer = _arg2; dbuffer = _arg3; bullet = _arg4; bulletexp = _arg5; sprite = new AnimatedBitmap(mbuffer, _arg6, mbuffer.height); body.addChild(sprite); sprite.x = (sprite.x - (sprite.width / 2)); sprite.y = (sprite.y - (sprite.height / 2)); addChild(body); } public function setMoveSprite():void{ sprite.setBuffer(mbuffer); } } }//package fai
Section 33
//UnitTypes (fai.UnitTypes) package fai { import flash.utils.*; public class UnitTypes { public var engine:Engine;// = null private var sloader:SmartLoader;// = null public var upHealthOre:int;// = 200 public var upArmorOre:int;// = 300 public var upAttackOre:int;// = 300 public var upHealthUranium:int;// = 400 private var initiated:Boolean;// = false public var units:Dictionary; public var buttonToUnit:Dictionary; public var upArmorUranium:int;// = 200 public var upAttackUranium:int;// = 300 private var unitToButton:Dictionary; public static const types:Array = [lightcannon, heavycannon, missileturret, bdg, battleship, tiger, amphibiantank, cc, urefinery, mortar, howitzer, tankdestroyer, coyote, m13tank, missiletank, leopard]; public static const heavycannon:String = "Heavy Cannon"; public static const shotmiddle:String = "shotmiddle.mp3"; public static const missiletank:String = "Missile Tank"; public static const lightcannon:String = "Light Cannon"; public static const mortar:String = "Mortar"; public static const missileturret:String = "Missile Turret"; public static const buttons:Array = [battack, bstop, bcancel, bbdg, bhcannon, bhowitzer, blcannon, bmissileturret, bmortar, burefinery, batomicbomb]; public static const shotab:String = "shotab.mp3"; public static const mirange:String = "range.png"; public static const miarmor:String = "shield.png"; public static const enemies:Array = [coyote, m13tank, battleship, tankdestroyer, missiletank, amphibiantank, leopard, tiger]; public static const bhowitzer:String = "bhowitzer.png"; public static const batomicbomb:String = "batomicbomb.png"; public static const battack:String = "battack.png"; public static const shotsimple:String = "shotsimple.mp3"; public static const m13tank:String = "M13 Tank"; public static const tiger:String = "Tiger"; public static const bbdg:String = "bbdg.png"; public static const sounds:Array = [shotsimple, shotmiddle, shotbest, shotab]; public static const blcannon:String = "blcannon.png"; public static const howitzer:String = "Howitzer"; public static const burefinery:String = "burefinery.png"; public static const menuimages:Array = [miuranium, miattack, mirange, miarmor, miheart]; public static const miheart:String = "heart.png"; public static const specials:Array = [spatomicbomb]; public static const bhcannon:String = "bhcannon.png"; public static const bcancel:String = "bcancel.png"; public static const cc:String = "Command Center"; public static const miuranium:String = "uranium.png"; public static const amphibiantank:String = "Amphibian Tank"; public static const bstop:String = "bstop.png"; public static const bdg:String = "Big Defensive Gun"; public static const urefinery:String = "Uranium Refinery"; public static const spatomicbomb:String = "atomicbomb.png"; public static const shotbest:String = "shotbest.mp3"; public static const coyote:String = "Coyote"; public static const battleship:String = "Battleship"; public static const bmortar:String = "bmortar.png"; public static const leopard:String = "Leopard"; public static const bmissileturret:String = "bmissileturret.png"; public static const miattack:String = "attack.png"; public static const tankdestroyer:String = "Destroyer"; public function UnitTypes(_arg1:SmartLoader):void{ var _local2:String; var _local3:String; var _local4:Unit; units = new Dictionary(); unitToButton = new Dictionary(); buttonToUnit = new Dictionary(); sloader = null; engine = null; initiated = false; upArmorOre = 300; upArmorUranium = 200; upAttackOre = 300; upAttackUranium = 300; upHealthOre = 200; upHealthUranium = 400; super(); sloader = _arg1; sloader.utypes = this; for each (_local2 in types) { units[_local2] = createUnit(_local2); }; for each (_local3 in specials) { _local4 = createUnit(_local3); if (_local4){ units[_local3] = _local4; }; }; initUnitToButton(); initButtonToUnit(); initiated = true; } public function buttonByUnit(_arg1:String):String{ return (unitToButton[_arg1]); } public function params(_arg1:String):Unit{ return (units[_arg1]); } private function initUnitToButton():void{ unitToButton[mortar] = bmortar; unitToButton[howitzer] = bhowitzer; unitToButton[lightcannon] = blcannon; unitToButton[heavycannon] = bhcannon; unitToButton[missileturret] = bmissileturret; unitToButton[bdg] = bbdg; unitToButton[urefinery] = burefinery; } public function createUnit(_arg1:String):Unit{ var _local2:int; var _local3:int; var _local4:Unit; _local2 = 0; _local3 = 0; if (engine){ _local2 = engine.gobaltid; _local3 = engine.noradid; }; _local4 = null; switch (_arg1){ case lightcannon: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 200; _local4.damage = 12; _local4.costuran = 25; _local4.eyerange = 4; _local4.desc = "Defense pawn. Small damage\nrate, attack and armor, as\nsame as cost."; _local4.armor = 0; _local4.building = true; break; case heavycannon: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 350; _local4.damage = 16; _local4.costuran = 50; _local4.desc = "Good health, damage and\narmor. Best for all-round\ndefense."; _local4.armor = 1; _local4.building = true; _local4.eyerange = 4; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case howitzer: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 400; _local4.damage = 20; _local4.eyerange = 5; _local4.costuran = 75; _local4.desc = "Best for back areas defense."; _local4.armor = 1; _local4.building = true; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case missileturret: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 350; _local4.damage = 28; _local4.costuran = 100; _local4.eyerange = 7; _local4.bulletspeed = 40; _local4.desc = "Missile attack. Best fire\nrange. Can attack distant\nunits."; _local4.armor = 0; _local4.building = true; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case mortar: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 500; _local4.damage = 40; _local4.costuran = 150; _local4.eyerange = 5; _local4.desc = "Very good defender.\nBest ratio of price and\npower."; _local4.armor = 2; _local4.building = true; _local4.rechargetime = 30; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case bdg: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 600; _local4.damage = 50; _local4.costuran = 220; _local4.desc = "Best defender. Good health\nrate, damage and armor."; _local4.armor = 3; _local4.building = true; _local4.rechargetime = 30; _local4.bulletspeed = 70; _local4.eyerange = 5; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case cc: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 1500; _local4.desc = "Your Headquarters. This\nbuilding must not be\ndestroyed."; _local4.armor = 0; _local4.damage = 35; _local4.rotstep = 0; _local4.costuran = 1000; _local4.eyerange = 8; _local4.spritewidth = 64; _local4.building = true; break; case urefinery: _local4 = new Unit(engine, _local2, _arg1); _local4.health = 500; _local4.costuran = 300; _local4.desc = "Extracts uranium.\nProduces 8 units of clear\nuranium each several seconds."; _local4.armor = 0; _local4.peaceful = true; _local4.building = true; _local4.spritewidth = 48; _local4.eyerange = 0; break; case coyote: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 50; _local4.damage = 8; _local4.armor = 0; break; case m13tank: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 70; _local4.damage = 16; _local4.armor = 1; _local4.deathcost = 5; break; case battleship: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 100; _local4.damage = 12; _local4.armor = 1; _local4.bulletspeed = 150; _local4.deathcost = 7; _local4.eyerange = 4; if (initiated){ _local4.attacksound = sloader.getLibSound(shotab); }; break; case tankdestroyer: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 125; _local4.damage = 16; _local4.armor = 1; _local4.bulletspeed = 150; _local4.deathcost = 10; _local4.eyerange = 4; if (initiated){ _local4.attacksound = sloader.getLibSound(shotab); }; break; case missiletank: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 120; _local4.damage = 16; _local4.armor = 0; _local4.eyerange = 4; _local4.deathcost = 15; break; case amphibiantank: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 250; _local4.damage = 20; _local4.armor = 2; _local4.deathcost = 20; _local4.eyerange = 3; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case leopard: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 300; _local4.damage = 26; _local4.armor = 2; _local4.deathcost = 30; _local4.eyerange = 4; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; case tiger: _local4 = new Unit(engine, _local3, _arg1); _local4.health = 400; _local4.damage = 35; _local4.armor = 3; _local4.deathcost = 50; _local4.eyerange = 4; if (initiated){ _local4.attacksound = sloader.getLibSound(shotbest); }; break; }; if (initiated){ _local4.copyProperties(units[_arg1]); if (_local4.peaceful){ sloader.dressPeacefulUnit(_local4, _arg1, engine); } else { sloader.dressUnit(_local4, _arg1, engine); }; }; return (_local4); } private function initButtonToUnit():void{ buttonToUnit[bmortar] = mortar; buttonToUnit[bhowitzer] = howitzer; buttonToUnit[blcannon] = lightcannon; buttonToUnit[bhcannon] = heavycannon; buttonToUnit[bmissileturret] = missileturret; buttonToUnit[bbdg] = bdg; buttonToUnit[burefinery] = urefinery; } } }//package fai
Section 34
//Utils (fai.Utils) package fai { import flash.text.*; public class Utils { public static function drawRect(_arg1, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:Boolean=false, _arg8:int=0, _arg9:int=0):void{ _arg1.graphics.lineStyle(_arg2, _arg3); _arg1.graphics.beginFill(_arg4); if (_arg7){ _arg1.graphics.drawRoundRect(_arg8, _arg9, _arg5, _arg6, (_arg5 / 5), (_arg6 / 5)); } else { _arg1.graphics.drawRect(_arg8, _arg9, _arg5, _arg6); }; _arg1.graphics.endFill(); } public static function createTextField(_arg1:uint, _arg2:uint=10):TextField{ var _local3:TextField; var _local4:TextFormat; _local3 = new TextField(); _local3.autoSize = TextFieldAutoSize.LEFT; _local3.background = false; _local3.border = false; _local3.selectable = false; _local4 = new TextFormat(); _local4.font = "Verdana"; _local4.color = _arg1; _local4.size = _arg2; _local4.bold = true; _local3.defaultTextFormat = _local4; return (_local3); } public static function unitStatus(_arg1:Number):String{ if (_arg1 >= 100){ return ("Very Good"); }; if (_arg1 >= 70){ return ("Well enough"); }; if (_arg1 >= 50){ return ("Could be better"); }; if (_arg1 >= 25){ return ("In bad condition"); }; return ("Poor"); } public static function textrange(_arg1:int):String{ if (_arg1 <= 3){ return ("Small"); }; if (_arg1 <= 5){ return ("Average"); }; if (_arg1 <= 6){ return ("Good"); }; return ("Big"); } } }//package fai
Section 35
//WebButton (fai.WebButton) package fai { import flash.events.*; import flash.display.*; import flash.text.*; import flash.geom.*; import flash.filters.*; public class WebButton extends Sprite { private var normalshape:Shape;// = null public var txt:TextField;// = null private var selshape:Shape;// = null public function WebButton(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int=16, _arg7:int=40, _arg8:Boolean=true, _arg9:int=8158075, _arg10:int=0, _arg11:int=0x757575, _arg12:int=0x373737):void{ var radius:int; var btnW:int; var btnH:int; var web20Glow:GlowFilter; var web20Filters:Array; var myRssButton:Sprite; var shineRadius:int; var shineW:int; var shineH:int; var shineColors:Array; var shineAlphas:Array; var shineRatios:Array; var shineMatrix:Matrix; var shine:Shape; var s = _arg1; var w = _arg2; var h = _arg3; var r = _arg4; var tcolor = _arg5; var tsize = _arg6; var rr = _arg7; var doShine = _arg8; var ncf = _arg9; var nct = _arg10; var sncf = _arg11; var snct = _arg12; txt = null; selshape = null; normalshape = null; super(); radius = r; btnW = w; btnH = h; web20Glow = new GlowFilter(0xFD5300, 70); web20Filters = [web20Glow]; myRssButton = new Sprite(); addChild(myRssButton); myRssButton.x = 20; myRssButton.y = 10; normalshape = createBack(w, h, r, rr, ncf, nct); addChild(normalshape); selshape = createBack(w, h, r, rr, sncf, snct); selshape.visible = false; addChild(selshape); txt = Utils.createTextField(tcolor, tsize); txt.text = s; txt.x = ((width - txt.width) / 2); txt.y = ((height - txt.height) / 2); addChild(txt); if (doShine){ shineRadius = 16; shineW = (w - shineRadius); shineH = (h / 2); shineColors = [0xFFFFFF, 0xFFFFFF]; shineAlphas = [70, 0]; shineRatios = [0, 0xFF]; shineMatrix = new Matrix(); shineMatrix.createGradientBox(shineW, shineH, ((90 / 180) * Math.PI)); shine = new Shape(); addChild(shine); shine.x = 8; shine.y = 3; var _local14 = shine.graphics; with (_local14) { lineStyle(0, 0xFFFFFF, 0); beginGradientFill(GradientType.LINEAR, shineColors, shineAlphas, shineRatios, shineMatrix); drawRoundRect(0, 0, shineW, shineH, 20, 20); endFill(); }; }; normalshape.filters = web20Filters; selshape.filters = web20Filters; addEventListener(MouseEvent.MOUSE_OVER, onover); addEventListener(MouseEvent.MOUSE_OUT, onout); } private function createBack(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int):Shape{ var bkg:Shape; var colors:Array; var alphas:Array; var ratios:Array; var matr:Matrix; var w = _arg1; var h = _arg2; var radius = _arg3; var rr = _arg4; var gfrom = _arg5; var gto = _arg6; bkg = new Shape(); colors = [gfrom, gto]; alphas = [100, 100]; ratios = [0, 245]; matr = new Matrix(); matr.createGradientBox(w, h, ((90 / 180) * Math.PI)); var _local8 = bkg.graphics; with (_local8) { lineStyle(0, gto, 100, true, "none", "square", "round"); beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, matr, SpreadMethod.PAD); drawRoundRect(0, 0, w, h, rr, rr); endFill(); }; return (bkg); } private function onout(_arg1:MouseEvent):void{ selshape.visible = false; normalshape.visible = true; } private function onover(_arg1:MouseEvent):void{ selshape.visible = true; normalshape.visible = false; } } }//package fai
Section 36
//AmphibianTankattack (AmphibianTankattack) package { import flash.display.*; public dynamic class AmphibianTankattack extends BitmapData { public function AmphibianTankattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 37
//AmphibianTankbe (AmphibianTankbe) package { import flash.display.*; public dynamic class AmphibianTankbe extends BitmapData { public function AmphibianTankbe(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 38
//AmphibianTankbody (AmphibianTankbody) package { import flash.display.*; public dynamic class AmphibianTankbody extends BitmapData { public function AmphibianTankbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 39
//AmphibianTankbullet (AmphibianTankbullet) package { import flash.display.*; public dynamic class AmphibianTankbullet extends BitmapData { public function AmphibianTankbullet(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 40
//AmphibianTankdeath (AmphibianTankdeath) package { import flash.display.*; public dynamic class AmphibianTankdeath extends BitmapData { public function AmphibianTankdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 41
//arcadetown_logo (arcadetown_logo) package { import flash.display.*; public dynamic class arcadetown_logo extends MovieClip { } }//package
Section 42
//arcadetown_splash (arcadetown_splash) package { import flash.display.*; public class arcadetown_splash extends MovieClip { public var nowPlaying:Boolean;// = false public function arcadetown_splash():void{ nowPlaying = false; super(); addFrameScript(53, frame54, 64, frame65); nowPlaying = true; } function frame65(){ stop(); nowPlaying = false; } function frame54(){ } } }//package
Section 43
//Areas (Areas) package { import flash.display.*; import flash.text.*; public dynamic class Areas extends MovieClip { public var ar10:MovieClip; public var ar12:MovieClip; public var ar13:MovieClip; public var ar14:MovieClip; public var ar15:MovieClip; public var ar4:MovieClip; public var ar6:MovieClip; public var ar11:MovieClip; public var ar8:MovieClip; public var ar2:MovieClip; public var ar3:MovieClip; public var ar5:MovieClip; public var ar7:MovieClip; public var ar1:MovieClip; public var title:TextField; public var desc:TextField; public var waves:TextField; public var attackflash:MovieClip; public var ar9:MovieClip; } }//package
Section 44
//AtomicBomb (AtomicBomb) package { import fai.*; import flash.events.*; import flash.display.*; import flash.media.*; import flash.utils.*; public class AtomicBomb extends MovieClip { private var droppoint:Position;// = null public var bombtimer:Timer;// = null private var curscale:Number;// = 0 private var esprite:AnimatedBitmap;// = null private var frame:int;// = 0 private var engine:Engine;// = null private var step:Number;// = 3 private var pause:int;// = 0 private static const startScale:Number = 3; private static const endScale:Number = 0.1; public function AtomicBomb(_arg1:Position, _arg2:Engine):void{ var _local3:BitmapData; engine = null; bombtimer = null; curscale = 0; step = 3; frame = 0; pause = 0; droppoint = null; esprite = null; super(); engine = _arg2; gotoAndStop(0); x = (_arg1.x * Consts.cellsize); y = (_arg1.y * Consts.cellsize); scaleY = (scaleX = startScale); _local3 = engine.sloader.specials[UnitTypes.spatomicbomb]; esprite = new AnimatedBitmap(_local3, _local3.height, _local3.height); droppoint = _arg1; } private function makeDamage():void{ var _local1:int; var _local2:Unit; var _local3:int; _local1 = 0; _local2 = null; while (_local1 < engine.my.camp.units.length) { _local2 = engine.my.camp.units[_local1]; _local3 = Camp.distanceFrom(droppoint, _local2); calculateDamage(_local2, _local3); if (_local2.isLive()){ _local1++; }; }; _local1 = 0; while (_local1 < engine.comp.camp.units.length) { _local2 = engine.comp.camp.units[_local1]; _local3 = Camp.distanceFrom(droppoint, _local2); calculateDamage(_local2, _local3); if (_local2.isLive()){ _local1++; }; }; } public function clean():void{ if (bombtimer){ bombtimer.stop(); bombtimer.removeEventListener(TimerEvent.TIMER, timerfunc); bombtimer = null; }; engine.backgr.x = 0; engine.unitlayer.x = 0; if (!frame){ engine.bulletlayer.removeChild(this); } else { if (((esprite) && ((frame >= esprite.nframes)))){ engine.bulletlayer.removeChild(esprite); esprite = null; }; }; } public function start():void{ curscale = startScale; bombtimer = new Timer(50); bombtimer.addEventListener(TimerEvent.TIMER, timerfunc); bombtimer.start(); } private function calculateDamage(_arg1:Unit, _arg2:int):void{ if (_arg2 < 2){ engine.hitUnit(5000, _arg1); } else { if (_arg2 < 3){ engine.hitUnit(500, _arg1); } else { if (_arg2 < 5){ engine.hitUnit(100, _arg1); }; }; }; } private function timerfunc(_arg1:TimerEvent):void{ if (engine.paused){ return; }; if (curscale > endScale){ curscale = (curscale - (3 / (step * step))); step = (step + 0.35); scaleY = (scaleX = curscale); } else { if (!frame){ esprite.x = x; esprite.y = y; esprite.x = (esprite.x - (esprite.width / 2)); esprite.y = (esprite.y - (esprite.height / 2)); engine.bulletlayer.addChild(esprite); engine.bulletlayer.removeChild(this); makeDamage(); engine.playSound(Sound(engine.sloader.getLibSound(UnitTypes.shotbest)), droppoint); engine.playSound(Sound(engine.sloader.getLibSound(UnitTypes.shotmiddle)), droppoint); } else { if (frame >= esprite.nframes){ bombtimer.stop(); bombtimer.removeEventListener(TimerEvent.TIMER, timerfunc); bombtimer = null; engine.bulletlayer.removeChild(esprite); esprite = null; engine.backgr.x = 0; engine.unitlayer.x = 0; return; }; }; if ((pause % 2) == 0){ engine.backgr.x = 2; engine.unitlayer.x = 2; } else { engine.backgr.x = -2; engine.unitlayer.x = -2; }; if (pause > 0){ pause--; return; }; esprite.setFrame(frame); frame++; pause = 2; }; } } }//package
Section 45
//Battleshipattack (Battleshipattack) package { import flash.display.*; public dynamic class Battleshipattack extends BitmapData { public function Battleshipattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 46
//Battleshipbe (Battleshipbe) package { import flash.display.*; public dynamic class Battleshipbe extends BitmapData { public function Battleshipbe(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 47
//Battleshipbody (Battleshipbody) package { import flash.display.*; public dynamic class Battleshipbody extends BitmapData { public function Battleshipbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 48
//Battleshipbullet (Battleshipbullet) package { import flash.display.*; public dynamic class Battleshipbullet extends BitmapData { public function Battleshipbullet(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 49
//Battleshipdeath (Battleshipdeath) package { import flash.display.*; public dynamic class Battleshipdeath extends BitmapData { public function Battleshipdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 50
//BDGattack (BDGattack) package { import flash.display.*; public dynamic class BDGattack extends BitmapData { public function BDGattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 51
//BDGbody (BDGbody) package { import flash.display.*; public dynamic class BDGbody extends BitmapData { public function BDGbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 52
//BDGdeath (BDGdeath) package { import flash.display.*; public dynamic class BDGdeath extends BitmapData { public function BDGdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 53
//Buttonatomicbomb (Buttonatomicbomb) package { import flash.display.*; public dynamic class Buttonatomicbomb extends BitmapData { public function Buttonatomicbomb(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 54
//Buttonattack (Buttonattack) package { import flash.display.*; public dynamic class Buttonattack extends BitmapData { public function Buttonattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 55
//Buttonbdg (Buttonbdg) package { import flash.display.*; public dynamic class Buttonbdg extends BitmapData { public function Buttonbdg(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 56
//Buttoncancel (Buttoncancel) package { import flash.display.*; public dynamic class Buttoncancel extends BitmapData { public function Buttoncancel(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 57
//Buttonhcannon (Buttonhcannon) package { import flash.display.*; public dynamic class Buttonhcannon extends BitmapData { public function Buttonhcannon(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 58
//Buttonhowitzer (Buttonhowitzer) package { import flash.display.*; public dynamic class Buttonhowitzer extends BitmapData { public function Buttonhowitzer(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 59
//Buttonlcannon (Buttonlcannon) package { import flash.display.*; public dynamic class Buttonlcannon extends BitmapData { public function Buttonlcannon(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 60
//Buttonmissileturret (Buttonmissileturret) package { import flash.display.*; public dynamic class Buttonmissileturret extends BitmapData { public function Buttonmissileturret(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 61
//Buttonmortar (Buttonmortar) package { import flash.display.*; public dynamic class Buttonmortar extends BitmapData { public function Buttonmortar(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 62
//Buttonstop (Buttonstop) package { import flash.display.*; public dynamic class Buttonstop extends BitmapData { public function Buttonstop(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 63
//Buttonurefinery (Buttonurefinery) package { import flash.display.*; public dynamic class Buttonurefinery extends BitmapData { public function Buttonurefinery(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 64
//CCattack (CCattack) package { import flash.display.*; public dynamic class CCattack extends BitmapData { public function CCattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 65
//CCbody (CCbody) package { import flash.display.*; public dynamic class CCbody extends BitmapData { public function CCbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 66
//CCdeath (CCdeath) package { import flash.display.*; public dynamic class CCdeath extends BitmapData { public function CCdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 67
//Coyoteattack (Coyoteattack) package { import flash.display.*; public dynamic class Coyoteattack extends BitmapData { public function Coyoteattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 68
//Coyotebe (Coyotebe) package { import flash.display.*; public dynamic class Coyotebe extends BitmapData { public function Coyotebe(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 69
//Coyotebody (Coyotebody) package { import flash.display.*; public dynamic class Coyotebody extends BitmapData { public function Coyotebody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 70
//Coyotebullet (Coyotebullet) package { import flash.display.*; public dynamic class Coyotebullet extends BitmapData { public function Coyotebullet(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 71
//Coyotedeath (Coyotedeath) package { import flash.display.*; public dynamic class Coyotedeath extends BitmapData { public function Coyotedeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 72
//Destroyerattack (Destroyerattack) package { import flash.display.*; public dynamic class Destroyerattack extends BitmapData { public function Destroyerattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 73
//Destroyerbody (Destroyerbody) package { import flash.display.*; public dynamic class Destroyerbody extends BitmapData { public function Destroyerbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 74
//Destroyerdeath (Destroyerdeath) package { import flash.display.*; public dynamic class Destroyerdeath extends BitmapData { public function Destroyerdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 75
//DriveSmoke (DriveSmoke) package { import fai.*; import flash.display.*; public class DriveSmoke extends MovieClip { private var engine:Engine;// = null public function DriveSmoke(_arg1:Engine):void{ engine = null; super(); addFrameScript(30, frame31); engine = _arg1; } function frame31(){ stop(); try { engine.backgr.removeChild(this); } catch(ArgumentError) { }; } } }//package
Section 76
//GameStage (GameStage) package { import fai.*; import flash.events.*; import flash.display.*; import flash.text.*; import flash.utils.*; import flash.ui.*; public class GameStage extends MovieClip { private var mochifinished:Boolean;// = false private var loading:Sprite;// = null private var checktimer:Timer;// = null private var menu:GameMenu;// = null private var engine:Engine;// = null private var sloader:SmartLoader;// = null private var loadingText:TextField;// = null private var arcadeTownSplash:arcadetown_splash;// = null public function GameStage():void{ var _local1:ContextMenu; sloader = null; engine = null; menu = null; mochifinished = false; loading = null; loadingText = null; checktimer = null; arcadeTownSplash = null; super(); addFrameScript(0, frame1); stage.scaleMode = StageScaleMode.EXACT_FIT; stage.align = StageAlign.TOP_LEFT; _local1 = new ContextMenu(); _local1.hideBuiltInItems(); contextMenu = _local1; sloader = new SmartLoader(); engine = new Engine(this, sloader); menu = new GameMenu(engine); mochifinished = false; loading = new Sprite(); loadingText = Utils.createTextField(0, 20); addChildAt(loading, 0); addChildAt(loadingText, 1); loadingText.x = 340; loadingText.y = 240; sloader.startLoading(loadprocess, loadcomplete); checktimer = new Timer(300, 0); checktimer.addEventListener("timer", tmfunc); checktimer.start(); mochifin(); } private function mochifin():void{ if (((loading) && (loadingText))){ loading.visible = true; loadingText.visible = true; }; mochifinished = true; } private function loadcomplete():void{ } function frame1(){ MochiBot.track(this, "6eb88549"); } private function tmfunc(_arg1:TimerEvent):void{ if (!arcadeTownSplash){ arcadeTownSplash = new arcadetown_splash(); arcadeTownSplash.x = 400; arcadeTownSplash.y = 300; addChild(arcadeTownSplash); arcadeTownSplash.addEventListener(MouseEvent.MOUSE_DOWN, menu.onplaymoregames); arcadeTownSplash.play(); return; }; if (((((mochifinished) && (sloader.loaded))) && (!(arcadeTownSplash.nowPlaying)))){ removeChild(arcadeTownSplash); arcadeTownSplash = null; checktimer.stop(); checktimer.removeEventListener("timer", tmfunc); checktimer = null; menu.create(); menu.hide(); menu.loadLocally(); menu.showIntro(); }; } private function loadprocess(_arg1:Number):void{ var cbsize:*; var i:*; var percent = _arg1; var _local3 = loading; with (_local3) { cbsize = 8; graphics.clear(); graphics.beginFill((percent * 2.5)); i = 0; while (i <= percent) { graphics.drawRect((i * cbsize), 0, cbsize, engine.gameheight); i++; }; graphics.endFill(); }; loadingText.text = (("loading: " + int(percent).toString()) + "%"); if (100 == percent){ removeChild(loading); removeChild(loadingText); loading = null; loadingText = null; }; } private function mochistart():void{ if (((loading) && (loadingText))){ loading.visible = false; loadingText.visible = false; }; } } }//package
Section 77
//Ground1 (Ground1) package { import flash.display.*; public dynamic class Ground1 extends BitmapData { public function Ground1(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 78
//GroundTheMap (GroundTheMap) package { import flash.display.*; public dynamic class GroundTheMap extends BitmapData { public function GroundTheMap(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 79
//Groundtree (Groundtree) package { import flash.display.*; public dynamic class Groundtree extends BitmapData { public function Groundtree(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 80
//Groundtree2 (Groundtree2) package { import flash.display.*; public dynamic class Groundtree2 extends BitmapData { public function Groundtree2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 81
//Groundwall (Groundwall) package { import flash.display.*; public dynamic class Groundwall extends BitmapData { public function Groundwall(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 82
//Groundwall2 (Groundwall2) package { import flash.display.*; public dynamic class Groundwall2 extends BitmapData { public function Groundwall2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 83
//HCattack (HCattack) package { import flash.display.*; public dynamic class HCattack extends BitmapData { public function HCattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 84
//HCbody (HCbody) package { import flash.display.*; public dynamic class HCbody extends BitmapData { public function HCbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 85
//HCdeath (HCdeath) package { import flash.display.*; public dynamic class HCdeath extends BitmapData { public function HCdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 86
//Howitzerattack (Howitzerattack) package { import flash.display.*; public dynamic class Howitzerattack extends BitmapData { public function Howitzerattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 87
//Howitzerbody (Howitzerbody) package { import flash.display.*; public dynamic class Howitzerbody extends BitmapData { public function Howitzerbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 88
//Howitzerdeath (Howitzerdeath) package { import flash.display.*; public dynamic class Howitzerdeath extends BitmapData { public function Howitzerdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 89
//InterlevelPopup (InterlevelPopup) package { import flash.display.*; import flash.text.*; public dynamic class InterlevelPopup extends MovieClip { public var subtitle:TextField; public var closebutton:MovieClip; public var title:TextField; } }//package
Section 90
//Intro (Intro) package { import flash.display.*; public dynamic class Intro extends MovieClip { } }//package
Section 91
//LCattack (LCattack) package { import flash.display.*; public dynamic class LCattack extends BitmapData { public function LCattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 92
//LCbody (LCbody) package { import flash.display.*; public dynamic class LCbody extends BitmapData { public function LCbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 93
//LCdeath (LCdeath) package { import flash.display.*; public dynamic class LCdeath extends BitmapData { public function LCdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 94
//Leopardattack (Leopardattack) package { import flash.display.*; public dynamic class Leopardattack extends BitmapData { public function Leopardattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 95
//Leopardbody (Leopardbody) package { import flash.display.*; public dynamic class Leopardbody extends BitmapData { public function Leopardbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 96
//Leoparddeath (Leoparddeath) package { import flash.display.*; public dynamic class Leoparddeath extends BitmapData { public function Leoparddeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 97
//M13Tattack (M13Tattack) package { import flash.display.*; public dynamic class M13Tattack extends BitmapData { public function M13Tattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 98
//M13Tbody (M13Tbody) package { import flash.display.*; public dynamic class M13Tbody extends BitmapData { public function M13Tbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 99
//M13Tdeath (M13Tdeath) package { import flash.display.*; public dynamic class M13Tdeath extends BitmapData { public function M13Tdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 100
//Menuattack (Menuattack) package { import flash.display.*; public dynamic class Menuattack extends BitmapData { public function Menuattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 101
//Menuheart (Menuheart) package { import flash.display.*; public dynamic class Menuheart extends BitmapData { public function Menuheart(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 102
//Menurange (Menurange) package { import flash.display.*; public dynamic class Menurange extends BitmapData { public function Menurange(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 103
//Menushield (Menushield) package { import flash.display.*; public dynamic class Menushield extends BitmapData { public function Menushield(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 104
//Menuuranium (Menuuranium) package { import flash.display.*; public dynamic class Menuuranium extends BitmapData { public function Menuuranium(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 105
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _arg1.loaderInfo.url; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 106
//Mortarattack (Mortarattack) package { import flash.display.*; public dynamic class Mortarattack extends BitmapData { public function Mortarattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 107
//Mortarbody (Mortarbody) package { import flash.display.*; public dynamic class Mortarbody extends BitmapData { public function Mortarbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 108
//Mortardeath (Mortardeath) package { import flash.display.*; public dynamic class Mortardeath extends BitmapData { public function Mortardeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 109
//Mountain1 (Mountain1) package { import flash.display.*; public dynamic class Mountain1 extends BitmapData { public function Mountain1(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 110
//MTattack (MTattack) package { import flash.display.*; public dynamic class MTattack extends BitmapData { public function MTattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 111
//MTbody (MTbody) package { import flash.display.*; public dynamic class MTbody extends BitmapData { public function MTbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 112
//MTdeath (MTdeath) package { import flash.display.*; public dynamic class MTdeath extends BitmapData { public function MTdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 113
//MTtattack (MTtattack) package { import flash.display.*; public dynamic class MTtattack extends BitmapData { public function MTtattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 114
//MTtbody (MTtbody) package { import flash.display.*; public dynamic class MTtbody extends BitmapData { public function MTtbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 115
//MTtdeath (MTtdeath) package { import flash.display.*; public dynamic class MTtdeath extends BitmapData { public function MTtdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 116
//Soundshotab (Soundshotab) package { import flash.media.*; public dynamic class Soundshotab extends Sound { } }//package
Section 117
//Soundshotbest (Soundshotbest) package { import flash.media.*; public dynamic class Soundshotbest extends Sound { } }//package
Section 118
//Soundshotmiddle (Soundshotmiddle) package { import flash.media.*; public dynamic class Soundshotmiddle extends Sound { } }//package
Section 119
//Soundshotsimple (Soundshotsimple) package { import flash.media.*; public dynamic class Soundshotsimple extends Sound { } }//package
Section 120
//Specialatomicbomb (Specialatomicbomb) package { import flash.display.*; public dynamic class Specialatomicbomb extends BitmapData { public function Specialatomicbomb(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 121
//SubmitHighscores (SubmitHighscores) package { import flash.display.*; import flash.text.*; public dynamic class SubmitHighscores extends MovieClip { public var msg:TextField; public var username:TextField; } }//package
Section 122
//Tigerattack (Tigerattack) package { import flash.display.*; public dynamic class Tigerattack extends BitmapData { public function Tigerattack(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 123
//Tigerbody (Tigerbody) package { import flash.display.*; public dynamic class Tigerbody extends BitmapData { public function Tigerbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 124
//Tigerdeath (Tigerdeath) package { import flash.display.*; public dynamic class Tigerdeath extends BitmapData { public function Tigerdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 125
//UpgradeStar (UpgradeStar) package { import flash.display.*; import flash.text.*; public dynamic class UpgradeStar extends MovieClip { public var level:TextField; } }//package
Section 126
//URbody (URbody) package { import flash.display.*; public dynamic class URbody extends BitmapData { public function URbody(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 127
//URdeath (URdeath) package { import flash.display.*; public dynamic class URdeath extends BitmapData { public function URdeath(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package

Library Items

Symbol 1 Sound {Soundshotsimple}
Symbol 2 Sound {Soundshotmiddle}
Symbol 3 Sound {Soundshotbest}
Symbol 4 Sound {Soundshotab}
Symbol 5 Bitmap {Groundwall2}
Symbol 6 Bitmap {Groundwall}
Symbol 7 Bitmap {Menuuranium}
Symbol 8 Bitmap {Groundtree2}
Symbol 9 Bitmap {Groundtree}
Symbol 10 Bitmap {GroundTheMap}
Symbol 11 Bitmap {Menushield}
Symbol 12 Bitmap {Menurange}
Symbol 13 Bitmap {Mountain1}
Symbol 14 Bitmap {Menuheart}
Symbol 15 Bitmap {Ground1}
Symbol 16 Bitmap {AmphibianTankdeath}
Symbol 17 Bitmap {Battleshipdeath}
Symbol 18 Bitmap {BDGdeath}
Symbol 19 Bitmap {CCdeath}
Symbol 20 Bitmap {Coyotedeath}
Symbol 21 Bitmap {Destroyerdeath}
Symbol 22 Bitmap {HCdeath}
Symbol 23 Bitmap {Howitzerdeath}
Symbol 24 Bitmap {Leoparddeath}
Symbol 25 Bitmap {LCdeath}
Symbol 26 Bitmap {M13Tdeath}
Symbol 27 Bitmap {MTdeath}
Symbol 28 Bitmap {MTtdeath}
Symbol 29 Bitmap {Mortardeath}
Symbol 30 Bitmap {Tigerdeath}
Symbol 31 Bitmap {URdeath}
Symbol 32 Bitmap {Buttonurefinery}
Symbol 33 Bitmap {AmphibianTankbullet}
Symbol 34 Bitmap {Battleshipbullet}
Symbol 35 Bitmap {Coyotebullet}
Symbol 36 Bitmap {Buttonstop}
Symbol 37 Bitmap {AmphibianTankbody}
Symbol 38 Bitmap {Battleshipbody}
Symbol 39 Bitmap {BDGbody}
Symbol 40 Bitmap {CCbody}
Symbol 41 Bitmap {Coyotebody}
Symbol 42 Bitmap {Destroyerbody}
Symbol 43 Bitmap {HCbody}
Symbol 44 Bitmap {Howitzerbody}
Symbol 45 Bitmap {Leopardbody}
Symbol 46 Bitmap {LCbody}
Symbol 47 Bitmap {M13Tbody}
Symbol 48 Bitmap {MTbody}
Symbol 49 Bitmap {MTtbody}
Symbol 50 Bitmap {Mortarbody}
Symbol 51 Bitmap {Tigerbody}
Symbol 52 Bitmap {URbody}
Symbol 53 Bitmap {Buttonmortar}
Symbol 54 Bitmap {Buttonmissileturret}
Symbol 55 Bitmap {Buttonlcannon}
Symbol 56 Bitmap {Buttonhowitzer}
Symbol 57 Bitmap {Buttonhcannon}
Symbol 58 Bitmap {Coyotebe}
Symbol 59 Bitmap {Battleshipbe}
Symbol 60 Bitmap {AmphibianTankbe}
Symbol 61 Bitmap {Buttoncancel}
Symbol 62 Bitmap {Buttonbdg}
Symbol 63 Bitmap {Buttonattack}
Symbol 64 Bitmap {Buttonatomicbomb}
Symbol 65 Bitmap {Tigerattack}
Symbol 66 Bitmap {Mortarattack}
Symbol 67 Bitmap {MTtattack}
Symbol 68 Bitmap {MTattack}
Symbol 69 Bitmap {M13Tattack}
Symbol 70 Bitmap {LCattack}
Symbol 71 Bitmap {Leopardattack}
Symbol 72 Bitmap {Howitzerattack}
Symbol 73 Bitmap {HCattack}
Symbol 74 Bitmap {Destroyerattack}
Symbol 75 Bitmap {Coyoteattack}
Symbol 76 Bitmap {CCattack}
Symbol 77 Bitmap {BDGattack}
Symbol 78 Bitmap {Battleshipattack}
Symbol 79 Bitmap {AmphibianTankattack}
Symbol 80 Bitmap {Menuattack}
Symbol 81 Bitmap {Specialatomicbomb}
Symbol 82 GraphicUsed by:84
Symbol 83 GraphicUsed by:84 103
Symbol 84 MovieClip {arcadetown_logo}Uses:82 83
Symbol 85 GraphicUsed by:103
Symbol 86 GraphicUsed by:103
Symbol 87 GraphicUsed by:103
Symbol 88 GraphicUsed by:103
Symbol 89 GraphicUsed by:103
Symbol 90 GraphicUsed by:103
Symbol 91 GraphicUsed by:103
Symbol 92 GraphicUsed by:103
Symbol 93 GraphicUsed by:103
Symbol 94 GraphicUsed by:103
Symbol 95 GraphicUsed by:103
Symbol 96 GraphicUsed by:103
Symbol 97 GraphicUsed by:103
Symbol 98 GraphicUsed by:103
Symbol 99 ShapeTweeningUsed by:103
Symbol 100 GraphicUsed by:103
Symbol 101 GraphicUsed by:103
Symbol 102 GraphicUsed by:103
Symbol 103 MovieClip {arcadetown_splash}Uses:85 86 83 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
Symbol 104 GraphicUsed by:107
Symbol 105 GraphicUsed by:107
Symbol 106 GraphicUsed by:107
Symbol 107 MovieClip {DriveSmoke}Uses:104 105 106
Symbol 108 GraphicUsed by:109
Symbol 109 MovieClip {AtomicBomb}Uses:108
Symbol 110 GraphicUsed by:120
Symbol 111 GraphicUsed by:120 127 133 139 145 151 157 163 169 175 181 187 193 199 205
Symbol 112 FontUsed by:113 126 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 234 236 237 245 249 256 257 258
Symbol 113 TextUses:112Used by:120 127 133 139 145 151 157 163 169 175 181 187 193 199 205
Symbol 114 GraphicUsed by:120
Symbol 115 BitmapUsed by:116 123 130 134 140 146 152 158 164 170 176 182 188 194 200 240
Symbol 116 GraphicUses:115Used by:120
Symbol 117 GraphicUsed by:120
Symbol 118 BitmapUsed by:119
Symbol 119 GraphicUses:118Used by:120 127 133 139 145 151 157 163 169 175 181 187 193 199 205 242
Symbol 120 MovieClipUses:110 111 113 114 116 117 119Used by:232
Symbol 121 GraphicUsed by:127
Symbol 122 GraphicUsed by:127
Symbol 123 GraphicUses:115Used by:127
Symbol 124 GraphicUsed by:127
Symbol 125 GraphicUsed by:127
Symbol 126 TextUses:112Used by:127 133 139 145 151 157 163 169 175 181 187 193 199 205
Symbol 127 MovieClipUses:121 111 113 122 123 124 119 125 126Used by:232
Symbol 128 GraphicUsed by:133
Symbol 129 GraphicUsed by:133
Symbol 130 GraphicUses:115Used by:133
Symbol 131 GraphicUsed by:133
Symbol 132 GraphicUsed by:133
Symbol 133 MovieClipUses:128 111 113 129 130 131 119 132 126Used by:232
Symbol 134 GraphicUses:115Used by:139
Symbol 135 GraphicUsed by:139
Symbol 136 GraphicUsed by:139
Symbol 137 GraphicUsed by:139
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClipUses:134 135 136 119 137 111 113 138 126Used by:232
Symbol 140 GraphicUses:115Used by:145
Symbol 141 GraphicUsed by:145
Symbol 142 GraphicUsed by:145
Symbol 143 GraphicUsed by:145
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClipUses:140 141 119 142 143 111 113 144 126Used by:232
Symbol 146 GraphicUses:115Used by:151
Symbol 147 GraphicUsed by:151
Symbol 148 GraphicUsed by:151
Symbol 149 GraphicUsed by:151
Symbol 150 GraphicUsed by:151
Symbol 151 MovieClipUses:146 147 119 148 149 111 113 150 126Used by:232
Symbol 152 GraphicUses:115Used by:157
Symbol 153 GraphicUsed by:157
Symbol 154 GraphicUsed by:157
Symbol 155 GraphicUsed by:157
Symbol 156 GraphicUsed by:157
Symbol 157 MovieClipUses:152 153 119 154 155 111 113 156 126Used by:232
Symbol 158 GraphicUses:115Used by:163
Symbol 159 GraphicUsed by:163
Symbol 160 GraphicUsed by:163
Symbol 161 GraphicUsed by:163
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClipUses:158 159 119 160 161 111 113 162 126Used by:232
Symbol 164 GraphicUses:115Used by:169
Symbol 165 GraphicUsed by:169
Symbol 166 GraphicUsed by:169
Symbol 167 GraphicUsed by:169
Symbol 168 GraphicUsed by:169
Symbol 169 MovieClipUses:164 165 119 166 167 111 113 168 126Used by:232
Symbol 170 GraphicUses:115Used by:175
Symbol 171 GraphicUsed by:175
Symbol 172 GraphicUsed by:175
Symbol 173 GraphicUsed by:175
Symbol 174 GraphicUsed by:175
Symbol 175 MovieClipUses:170 171 119 172 173 111 113 174 126Used by:232
Symbol 176 GraphicUses:115Used by:181
Symbol 177 GraphicUsed by:181
Symbol 178 GraphicUsed by:181
Symbol 179 GraphicUsed by:181
Symbol 180 GraphicUsed by:181
Symbol 181 MovieClipUses:176 177 119 178 179 111 113 180 126Used by:232
Symbol 182 GraphicUses:115Used by:187
Symbol 183 GraphicUsed by:187
Symbol 184 GraphicUsed by:187
Symbol 185 GraphicUsed by:187
Symbol 186 GraphicUsed by:187
Symbol 187 MovieClipUses:182 183 119 184 185 111 113 186 126Used by:232
Symbol 188 GraphicUses:115Used by:193
Symbol 189 GraphicUsed by:193
Symbol 190 GraphicUsed by:193
Symbol 191 GraphicUsed by:193
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClipUses:188 189 119 190 191 111 113 192 126Used by:232
Symbol 194 GraphicUses:115Used by:199
Symbol 195 GraphicUsed by:199
Symbol 196 GraphicUsed by:199
Symbol 197 GraphicUsed by:199
Symbol 198 GraphicUsed by:199
Symbol 199 MovieClipUses:194 195 119 196 197 111 113 198 126Used by:232
Symbol 200 GraphicUses:115Used by:205
Symbol 201 GraphicUsed by:205
Symbol 202 GraphicUsed by:205
Symbol 203 GraphicUsed by:205
Symbol 204 GraphicUsed by:205
Symbol 205 MovieClipUses:200 201 119 202 203 111 113 204 126Used by:232
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClipUses:206Used by:232
Symbol 208 FontUsed by:209 235 238 239
Symbol 209 EditableTextUses:208Used by:232
Symbol 210 EditableTextUses:112Used by:232
Symbol 211 EditableTextUses:112Used by:232
Symbol 212 TextUses:112Used by:232
Symbol 213 TextUses:112Used by:232
Symbol 214 TextUses:112Used by:232
Symbol 215 TextUses:112Used by:232
Symbol 216 TextUses:112Used by:232
Symbol 217 TextUses:112Used by:232
Symbol 218 TextUses:112Used by:232
Symbol 219 TextUses:112Used by:232
Symbol 220 TextUses:112Used by:232
Symbol 221 TextUses:112Used by:232
Symbol 222 TextUses:112Used by:232
Symbol 223 TextUses:112Used by:232
Symbol 224 TextUses:112Used by:232
Symbol 225 TextUses:112Used by:232
Symbol 226 TextUses:112Used by:232
Symbol 227 GraphicUsed by:228
Symbol 228 MovieClipUses:227Used by:231
Symbol 229 GraphicUsed by:230
Symbol 230 MovieClipUses:229Used by:231
Symbol 231 MovieClipUses:228 230Used by:232
Symbol 232 MovieClip {Areas}Uses:120 127 133 139 145 151 157 163 169 175 181 187 193 199 205 207 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 231
Symbol 233 GraphicUsed by:243
Symbol 234 TextUses:112Used by:243
Symbol 235 EditableTextUses:208Used by:243
Symbol 236 TextUses:112Used by:243
Symbol 237 TextUses:112Used by:243
Symbol 238 TextUses:208Used by:243
Symbol 239 TextUses:208Used by:243
Symbol 240 GraphicUses:115Used by:241
Symbol 241 MovieClipUses:240Used by:243
Symbol 242 MovieClipUses:119Used by:243
Symbol 243 MovieClip {Intro}Uses:233 234 235 236 237 238 239 241 242
Symbol 244 GraphicUsed by:246
Symbol 245 EditableTextUses:112Used by:246
Symbol 246 MovieClip {UpgradeStar}Uses:244 245
Symbol 247 GraphicUsed by:248
Symbol 248 MovieClipUses:247Used by:254
Symbol 249 EditableTextUses:112Used by:254
Symbol 250 FontUsed by:251
Symbol 251 EditableTextUses:250Used by:254
Symbol 252 GraphicUsed by:253
Symbol 253 MovieClipUses:252Used by:254
Symbol 254 MovieClip {InterlevelPopup}Uses:248 249 251 253
Symbol 255 GraphicUsed by:259
Symbol 256 TextUses:112Used by:259
Symbol 257 EditableTextUses:112Used by:259
Symbol 258 EditableTextUses:112Used by:259
Symbol 259 MovieClip {SubmitHighscores}Uses:255 256 257 258

Instance Names

"ar1"Symbol 232 MovieClip {Areas} Frame 1Symbol 120 MovieClip
"ar2"Symbol 232 MovieClip {Areas} Frame 1Symbol 127 MovieClip
"ar3"Symbol 232 MovieClip {Areas} Frame 1Symbol 133 MovieClip
"ar4"Symbol 232 MovieClip {Areas} Frame 1Symbol 139 MovieClip
"ar5"Symbol 232 MovieClip {Areas} Frame 1Symbol 145 MovieClip
"ar6"Symbol 232 MovieClip {Areas} Frame 1Symbol 151 MovieClip
"ar7"Symbol 232 MovieClip {Areas} Frame 1Symbol 157 MovieClip
"ar8"Symbol 232 MovieClip {Areas} Frame 1Symbol 163 MovieClip
"ar9"Symbol 232 MovieClip {Areas} Frame 1Symbol 169 MovieClip
"ar10"Symbol 232 MovieClip {Areas} Frame 1Symbol 175 MovieClip
"ar11"Symbol 232 MovieClip {Areas} Frame 1Symbol 181 MovieClip
"ar12"Symbol 232 MovieClip {Areas} Frame 1Symbol 187 MovieClip
"ar13"Symbol 232 MovieClip {Areas} Frame 1Symbol 193 MovieClip
"ar14"Symbol 232 MovieClip {Areas} Frame 1Symbol 199 MovieClip
"ar15"Symbol 232 MovieClip {Areas} Frame 1Symbol 205 MovieClip
"desc"Symbol 232 MovieClip {Areas} Frame 1Symbol 209 EditableText
"waves"Symbol 232 MovieClip {Areas} Frame 1Symbol 210 EditableText
"title"Symbol 232 MovieClip {Areas} Frame 1Symbol 211 EditableText
"attackflash"Symbol 232 MovieClip {Areas} Frame 1Symbol 231 MovieClip
"level"Symbol 246 MovieClip {UpgradeStar} Frame 1Symbol 245 EditableText
"title"Symbol 254 MovieClip {InterlevelPopup} Frame 1Symbol 249 EditableText
"subtitle"Symbol 254 MovieClip {InterlevelPopup} Frame 1Symbol 251 EditableText
"closebutton"Symbol 254 MovieClip {InterlevelPopup} Frame 1Symbol 253 MovieClip
"username"Symbol 259 MovieClip {SubmitHighscores} Frame 1Symbol 257 EditableText
"msg"Symbol 259 MovieClip {SubmitHighscores} Frame 1Symbol 258 EditableText

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata not present, AS3.
Protect (24)Timeline Frame 131 bytes "..$1$VT$4ggM0FTQ.yfvZVR0hlUHd.."

Labels

"opened"Symbol 120 MovieClip Frame 1
"orange"Symbol 120 MovieClip Frame 2
"red"Symbol 120 MovieClip Frame 3
"blue"Symbol 120 MovieClip Frame 4
"opened"Symbol 127 MovieClip Frame 1
"orange"Symbol 127 MovieClip Frame 2
"red"Symbol 127 MovieClip Frame 3
"blue"Symbol 127 MovieClip Frame 4
"closed"Symbol 127 MovieClip Frame 5
"opened"Symbol 133 MovieClip Frame 1
"orange"Symbol 133 MovieClip Frame 2
"red"Symbol 133 MovieClip Frame 3
"blue"Symbol 133 MovieClip Frame 4
"closed"Symbol 133 MovieClip Frame 5
"red"Symbol 139 MovieClip Frame 1
"orange"Symbol 139 MovieClip Frame 2
"blue"Symbol 139 MovieClip Frame 3
"opened"Symbol 139 MovieClip Frame 4
"closed"Symbol 139 MovieClip Frame 5
"red"Symbol 145 MovieClip Frame 1
"blue"Symbol 145 MovieClip Frame 2
"orange"Symbol 145 MovieClip Frame 3
"opened"Symbol 145 MovieClip Frame 4
"closed"Symbol 145 MovieClip Frame 5
"red"Symbol 151 MovieClip Frame 1
"blue"Symbol 151 MovieClip Frame 2
"orange"Symbol 151 MovieClip Frame 3
"opened"Symbol 151 MovieClip Frame 4
"closed"Symbol 151 MovieClip Frame 5
"red"Symbol 157 MovieClip Frame 1
"blue"Symbol 157 MovieClip Frame 2
"orange"Symbol 157 MovieClip Frame 3
"opened"Symbol 157 MovieClip Frame 4
"closed"Symbol 157 MovieClip Frame 5
"red"Symbol 163 MovieClip Frame 1
"blue"Symbol 163 MovieClip Frame 2
"orange"Symbol 163 MovieClip Frame 3
"opened"Symbol 163 MovieClip Frame 4
"closed"Symbol 163 MovieClip Frame 5
"red"Symbol 169 MovieClip Frame 1
"blue"Symbol 169 MovieClip Frame 2
"orange"Symbol 169 MovieClip Frame 3
"opened"Symbol 169 MovieClip Frame 4
"closed"Symbol 169 MovieClip Frame 5
"red"Symbol 175 MovieClip Frame 1
"blue"Symbol 175 MovieClip Frame 2
"orange"Symbol 175 MovieClip Frame 3
"opened"Symbol 175 MovieClip Frame 4
"closed"Symbol 175 MovieClip Frame 5
"red"Symbol 181 MovieClip Frame 1
"blue"Symbol 181 MovieClip Frame 2
"orange"Symbol 181 MovieClip Frame 3
"opened"Symbol 181 MovieClip Frame 4
"closed"Symbol 181 MovieClip Frame 5
"red"Symbol 187 MovieClip Frame 1
"blue"Symbol 187 MovieClip Frame 2
"orange"Symbol 187 MovieClip Frame 3
"opened"Symbol 187 MovieClip Frame 4
"closed"Symbol 187 MovieClip Frame 5
"red"Symbol 193 MovieClip Frame 1
"blue"Symbol 193 MovieClip Frame 2
"orange"Symbol 193 MovieClip Frame 3
"opened"Symbol 193 MovieClip Frame 4
"closed"Symbol 193 MovieClip Frame 5
"red"Symbol 199 MovieClip Frame 1
"blue"Symbol 199 MovieClip Frame 2
"orange"Symbol 199 MovieClip Frame 3
"opened"Symbol 199 MovieClip Frame 4
"closed"Symbol 199 MovieClip Frame 5
"red"Symbol 205 MovieClip Frame 1
"blue"Symbol 205 MovieClip Frame 2
"orange"Symbol 205 MovieClip Frame 3
"opened"Symbol 205 MovieClip Frame 4
"closed"Symbol 205 MovieClip Frame 5




http://swfchan.com/6/29245/info.shtml
Created: 20/5 -2019 00:35:46 Last modified: 20/5 -2019 00:35:46 Server time: 01/05 -2024 20:17:04