Section 1
//mp3 (battle.mp3)
package battle {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package battle
Section 2
//wav (block.wav)
package block {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package block
Section 3
//wav (bullethit.wav)
package bullethit {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package bullethit
Section 4
//wav (civfail.wav)
package civfail {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package civfail
Section 5
//wav (civsave.wav)
package civsave {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package civsave
Section 6
//PLCollision (com.ikonicstudios.dynamics.PLCollision)
package com.ikonicstudios.dynamics {
import flash.geom.*;
import flash.display.*;
public class PLCollision {
public function detectCollision(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:Number=0):Rectangle{
var _local4:Rectangle;
var _local9:Rectangle;
var _local10:BitmapData;
var _local11:BitmapData;
var _local12:uint;
var _local13:Number;
var _local5:DisplayObjectContainer = _arg1.parent;
var _local6:Rectangle = _arg1.getBounds(_local5);
var _local7:Rectangle = _arg2.getBounds(_local5);
var _local8:Boolean = _local6.intersects(_local7);
if (_local8){
_local9 = _local6.union(_local7);
_local10 = getAlphaMap(_arg1, _local9, BitmapDataChannel.RED, _local6);
_local11 = getAlphaMap(_arg2, _local9, BitmapDataChannel.GREEN, _local7);
_local10.draw(_local11, new Matrix(), new ColorTransform(), BlendMode.LIGHTEN);
if (_arg3 > 1){
_arg3 = 1;
};
if (_arg3 < 0){
_arg3 = 0;
};
if (_arg3 == 0){
_local12 = 65792;
} else {
_local13 = Math.round((_arg3 * 0xFF));
_local12 = (((_local13 << 16) | (_local13 << 8)) | 0);
};
_local4 = _local10.getColorBoundsRect(_local12, _local12);
_local10.getColorBoundsRect(_local12, _local12).x = (_local4.x + _local9.x);
_local4.y = (_local4.y + _local9.y);
return (_local4);
};
return (_local4);
}
private function getAlphaMap(_arg1:DisplayObject, _arg2:Rectangle, _arg3:uint, _arg4:Rectangle):BitmapData{
var _local5:BitmapData = new BitmapData(_arg2.width, _arg2.height, true, 0);
var _local6:Matrix = new Matrix();
var _local7:Number = (_arg1.x - _arg4.x);
var _local8:Number = (_arg1.y - _arg4.y);
var _local9:Number = ((_arg4.x + _local7) - _arg2.x);
var _local10:Number = ((_arg4.y + _local8) - _arg2.y);
_local6.translate(_local9, _local10);
_local5.draw(_arg1, _local6);
var _local11:BitmapData = new BitmapData(_arg2.width, _arg2.height, false, 0);
_local11.copyChannel(_local5, _local5.rect, new Point(0, 0), BitmapDataChannel.ALPHA, _arg3);
return (_local11);
}
public function getCollisionPoint(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:Number=0):Point{
var _local4:Point;
var _local6:Number;
var _local7:Number;
var _local5:Rectangle = detectCollision(_arg1, _arg2, _arg3);
if (((!((_local5 == null))) && ((_local5.size.length > 0)))){
_local6 = ((_local5.left + _local5.right) / 2);
_local7 = ((_local5.top + _local5.bottom) / 2);
_local4 = new Point(_local6, _local7);
};
return (_local4);
}
public function isColliding(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:Number=0):Boolean{
var _local4:Rectangle = detectCollision(_arg1, _arg2, _arg3);
if (((!((_local4 == null))) && ((_local4.size.length > 0)))){
return (true);
};
return (false);
}
}
}//package com.ikonicstudios.dynamics
Section 7
//MasterSound (com.ikonicstudios.sound.MasterSound)
package com.ikonicstudios.sound {
import flash.display.*;
import flash.utils.*;
import flash.media.*;
public class MasterSound extends MovieClip {
private var silentSound:Sound;
public static var sounds:Object = new Object();
public function addLibrarySound(_arg1:String){
var _local2:* = (getDefinitionByName(_arg1) as Class);
_local2 = new (_local2);
_local2 = new SoundControl(_local2);
sounds[_arg1] = _local2;
}
public function addSilentSound(_arg1:String){
var _local2:* = (getDefinitionByName(_arg1) as Class);
_local2 = new (_local2);
_local2 = new SoundControl(_local2);
_local2.silent = true;
sounds["playerLagFix"] = _local2;
playSound("playerLagFix", true);
muteSound("playerLagFix");
}
public function playSound(_arg1:String, _arg2:Boolean=false, _arg3:int=0){
if (!sounds[_arg1]){
throw (new Error("Attempted to play a sound that does not exist"));
};
sounds[_arg1].playSound(_arg2, _arg3);
}
public function stopSound(_arg1:String){
sounds[_arg1].stopSound();
}
public function muteSound(_arg1:String){
if (!sounds[_arg1]){
throw (new Error("Attempted to mute a sound that does not exist"));
};
sounds[_arg1].mute();
}
public function changeVolume(_arg1:String, _arg2:int){
sounds[_arg1].changeVolume((_arg2 / 100));
}
public function changeAllVolume(_arg1:int){
var _local2:*;
for each (_local2 in sounds) {
_local2.changeVolume((_arg1 / 100));
};
}
public function unmuteSound(_arg1:String){
if (!sounds[_arg1]){
throw (new Error("Attempted to unmute a sound that does not exist"));
};
if (!sounds[_arg1].silent){
sounds[_arg1].unmute();
};
}
public function muteAll(){
var _local1:*;
for each (_local1 in sounds) {
_local1.mute();
};
}
public function unmuteAll(){
var _local1:*;
for each (_local1 in sounds) {
if (!_local1.silent){
_local1.unmute();
};
};
}
public function removeSound(_arg1:String){
sounds[_arg1].remove();
delete sounds[_arg1];
}
public function removeAllSounds(){
var _local1:*;
for each (_local1 in sounds) {
_local1.remove();
};
sounds = new Object();
}
public function isPlaying(_arg1:String):Boolean{
return (sounds[_arg1].isPlaying());
}
}
}//package com.ikonicstudios.sound
Section 8
//SoundControl (com.ikonicstudios.sound.SoundControl)
package com.ikonicstudios.sound {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.media.*;
public class SoundControl extends MovieClip {
private var file:Sound;
private var channel:SoundChannel;
private var st:SoundTransform;
private var loop:Boolean;// = false
private var delay:int;
private var playing:Boolean;
public var silent:Boolean;// = false
public var buffer:int;
public function SoundControl(_arg1){
channel = new SoundChannel();
st = new SoundTransform();
super();
file = _arg1;
}
public function playSound(_arg1, _arg2:int){
this.delay = _arg2;
loop = _arg1;
playing = true;
if (((loop) && ((_arg2 == 0)))){
channel = file.play(0, int.MAX_VALUE, st);
} else {
channel = file.play(0, 0, st);
};
channel.addEventListener(Event.SOUND_COMPLETE, soundCompleted);
}
private function loopSound(){
channel = file.play(0, int.MAX_VALUE);
channel.soundTransform = st;
channel.addEventListener(Event.SOUND_COMPLETE, soundCompleted);
playing = true;
}
public function changeVolume(_arg1:Number){
st.volume = _arg1;
channel.soundTransform = st;
}
public function stopSound(){
removeEventListener(Event.SOUND_COMPLETE, soundCompleted);
channel.stop();
playing = false;
}
public function mute(){
st.volume = 0;
channel.soundTransform = st;
}
public function unmute(){
st.volume = 1;
channel.soundTransform = st;
}
public function remove(){
removeEventListener(Event.SOUND_COMPLETE, soundCompleted);
channel.stop();
}
private function soundCompleted(_arg1:Event){
var _local2:*;
if (!loop){
playing = false;
} else {
if (delay > 0){
_local2 = new Timer(delay, 1);
_local2.start();
_local2.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete);
} else {
loopSound();
};
};
}
private function timerComplete(_arg1:TimerEvent){
loopSound();
}
public function isPlaying():Boolean{
return (playing);
}
}
}//package com.ikonicstudios.sound
Section 9
//wav (episode.wav)
package episode {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package episode
Section 10
//wav (kaboom.wav)
package kaboom {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package kaboom
Section 11
//wav (killed.wav)
package killed {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package killed
Section 12
//wav (laser.wav)
package laser {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package laser
Section 13
//wav (lowhealth.wav)
package lowhealth {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package lowhealth
Section 14
//mp3 (menutheme.mp3)
package menutheme {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package menutheme
Section 15
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const LOGGED_IN:String = "LoggedIn";
public static const LOGGED_OUT:String = "LoggedOut";
public static const LOGIN_SHOW:String = "LoginShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const STORE_SHOW:String = "StoreShow";
public static const STORE_HIDE:String = "StoreHide";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ITEM_OWNED:String = "ItemOwned";
public static const ITEM_NEW:String = "ItemNew";
public static const STORE_ITEMS:String = "StoreItems";
public static const USER_INFO:String = "UserInfo";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IOError";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showStore(_arg1:Object=null):void{
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:_arg1});
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("coins_saveUserProperties", _arg1);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
}
}//package mochi.as3
Section 16
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Fragment:Number;
private var Sibling:MochiDigits;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function get value():Number{
return (Number(this.toString()));
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
}
}//package mochi.as3
Section 17
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
public function removeEventListener(_arg1:String, _arg2:Function):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
eventTable[_arg1] = [];
return;
};
for (_local3 in eventTable[_arg1]) {
if (eventTable[_arg1][_local3] != _arg2){
} else {
eventTable[_arg1].splice(Number(_local3), 1);
};
};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
return;
};
for (_local3 in eventTable[_arg1]) {
var _local6 = eventTable[_arg1];
_local6[_local3](_arg2);
};
}
}
}//package mochi.as3
Section 18
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_CENTER:String = "ALIGN_C";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const FORMAT_SHORT:String = "ShortForm";
public static const FORMAT_LONG:String = "LongForm";
private static var gameStart:Number;
private static var levelStart:Number;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function trigger(_arg1:String, _arg2:Object=null):void{
if (_arg2 == null){
_arg2 = {};
} else {
if (_arg2["kind"] != undefined){
_arg2["kind"] = _arg1;
};
};
MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local4:Object;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startGame():void{
gameStart = new Date().time;
trigger("start_game");
}
public static function endGame():void{
var _local1:Number = (new Date().time - gameStart);
trigger("end_game", {time:_local1});
}
public static function startLevel():void{
levelStart = new Date().time;
trigger("start_level");
}
public static function endLevel():void{
var _local1:Number = (new Date().time - levelStart);
trigger("end_level", {time:_local1});
}
}
}//package mochi.as3
Section 19
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
public static var onCloseHandler:Object;
public static var onErrorHandler:Object;
private static var boardID:String;
public static function onClose(_arg1:Object=null):void{
if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiServices.warnID(_arg1, true);
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
public static function showLeaderboard(_arg1:Object=null):void{
var n:Number;
var options = _arg1;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
} else {
if (Math.floor(n) != n){
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
//unresolved jump
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
//unresolved jump
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
//unresolved jump
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
} else {
if (Math.floor(_arg1) != _arg1){
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
var _local2:Object = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
}
}//package mochi.as3
Section 20
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.geom.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _id:String;
private static var _container:Object;
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _timer:Timer;
private static var _preserved:Object;
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
private static var _services:String = "services.swf";
private static var _mochiLC:String = "MochiLC.swf";
private static var _swfVersion:String;
private static var _listenChannelName:String = "__ms_";
private static var _sendChannel:LocalConnection;
private static var _sendChannelName:String;
private static var _connecting:Boolean = false;
private static var _connected:Boolean = false;
public static var netup:Boolean = true;
public static var netupAttempted:Boolean = false;
public static var onError:Object;
public static var widget:Boolean = false;
public static var servicesSync:MochiSync = new MochiSync();
private static var _mochiLocalConnection:MovieClip;
public static function get id():String{
return (_id);
}
public static function get clip():Object{
return (_container);
}
public static function get childClip():Object{
return (_clip);
}
public static function getVersion():String{
return ("3.3 as3");
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
};
return (_local2);
}
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
public static function get connected():Boolean{
return (_connected);
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
return;
};
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
//unresolved jump
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
//unresolved jump
};
return;
};
};
var _local3:Number = 0;
while (_local3 < _arg1.length) {
switch (_arg1.charAt(_local3)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
return;
};
_local3++;
};
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
warnID(id, false);
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
_connecting = true;
init(id, clip);
};
//unresolved jump
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
};
};
};
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_mochiLocalConnection.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
var mc:MovieClip = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
public static function bringToTop(_arg1:Event=null):void{
var e = _arg1;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var _local3:String = ("_mochiservices_com_" + _arg1);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
var _local4:String = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local4 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local4);
_clip = createEmptyMovieClip(_arg2, _local3, 10336, false);
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
var _local5:URLRequest = new URLRequest(_local4);
var _local6:URLVariables = new URLVariables();
_local6.listenLC = _listenChannelName;
_local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local6.api_version = getVersion();
if (widget){
_local6.widget = true;
};
_local5.data = _local6;
_loader.load(_local5);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_clip._nextcallbackID = 0;
_clip._callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
private static function loadLCBridge(_arg1:Object):void{
var loader:Loader;
var clip = _arg1;
loader = new Loader();
var mochiLCURL:String = (_servURL + _mochiLC);
var req:URLRequest = new URLRequest(mochiLCURL);
var complete:Function = function (_arg1:Object):void{
_mochiLocalConnection = MovieClip(loader.content);
listen();
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
MochiServices.disconnect();
MochiServices.onError("IOError");
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
MochiServices.disconnect();
MochiServices.onError("IOError");
};
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
}
private static function initComChannels():void{
if (!_connected){
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_clip._queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function onReceive(_arg1:Object):void{
var pkg = _arg1;
var cb:String = pkg.callbackID;
var cblst:Object = _clip._callbacks[cb];
if (!cblst){
return;
};
var method:* = cblst.callbackMethod;
var methodName = "";
var obj:Object = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
//unresolved jump
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
};
};
};
delete _clip._callbacks[cb];
}
private static function onEvent(_arg1:Object):void{
var _local2:String = _arg1.target;
var _local3:String = _arg1.event;
switch (_local2){
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "sync":
servicesSync.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_clip._queue))){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
private static function urlOptions(_arg1:Object):Object{
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local2:Object = {};
if (_arg1.stage){
_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
} else {
_local3 = _arg1.loaderInfo.parameters.mochiad_options;
};
if (_local3){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5].split("=");
_local2[unescape(_local6[0])] = unescape(_local6[1]);
_local5++;
};
};
return (_local2);
}
public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var avm1Click:DisplayObject;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = _arg1;
var burl = _arg2;
var btn = _arg3;
var onClick = _arg4;
var vars:Object = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
var s = "?";
var i:Number = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://x.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
var _local2:Rectangle = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = _local2.x;
avm1Click.y = _local2.y;
avm1Click.scaleX = (0.01 * _local2.width);
avm1Click.scaleY = (0.01 * _local2.height);
};
err = function (_arg1:Object):void{
netup = false;
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
setURL(burl);
};
complete = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local4:int;
var _local14:Loader;
var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var _local6:Array = [0, 64, 0, 0, 0];
var _local7:MovieClip = new MovieClip();
var _local8:LocalConnection = new LocalConnection();
var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
_local8 = new LocalConnection();
_local7.lc = _local8;
_local7.click = _arg2;
_local8.client = _local7;
_local8.connect(_local9);
var _local10:ByteArray = new ByteArray();
var _local11:ByteArray = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
var _local12:uint = ((_local3.length + _local11.length) + 4);
var _local13:uint = (_local12 + 35);
_local10.endian = Endian.LITTLE_ENDIAN;
_local10.writeUTFBytes("FWS");
_local10.writeByte(8);
_local10.writeUnsignedInt(_local13);
for each (_local4 in _local5) {
_local10.writeByte(_local4);
};
_local10.writeUnsignedInt(_local12);
_local10.writeByte(136);
_local10.writeShort(_local11.length);
_local10.writeBytes(_local11);
for each (_local4 in _local3) {
_local10.writeByte(_local4);
};
for each (_local4 in _local6) {
_local10.writeByte(_local4);
};
_local14 = new Loader();
_local14.loadBytes(_local10);
_local7.addChild(_local14);
return (_local7);
}
}
}//package mochi.as3
Section 21
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_REQUEST:String = "SyncRequest";
public static var SYNC_PROPERTY:String = "UpdateProperty";
public function MochiSync():void{
_syncContainer = {};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
return (_syncContainer[_arg1]);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
if (_syncContainer[_arg1] == _arg2){
return;
};
var _local3:String = _arg1.toString();
_syncContainer[_local3] = _arg2;
MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
switch (_arg1){
case SYNC_REQUEST:
MochiServices.send("sync_syncronize", _syncContainer);
break;
case SYNC_PROPERTY:
_syncContainer[_arg2.name] = _arg2.value;
break;
};
}
}
}//package mochi.as3
Section 22
//wav (nobomb.wav)
package nobomb {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package nobomb
Section 23
//wav (powerup.wav)
package powerup {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package powerup
Section 24
//wav (ricochet.wav)
package ricochet {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package ricochet
Section 25
//wav (superbomb.wav)
package superbomb {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package superbomb
Section 26
//wav (teleport.wav)
package teleport {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package teleport
Section 27
//femaleblock_41 (Untitled_fla.femaleblock_41)
package Untitled_fla {
import flash.display.*;
public dynamic class femaleblock_41 extends MovieClip {
public function femaleblock_41(){
addFrameScript(5, frame6);
}
function frame6(){
stop();
}
}
}//package Untitled_fla
Section 28
//healthholder_134 (Untitled_fla.healthholder_134)
package Untitled_fla {
import flash.display.*;
public dynamic class healthholder_134 extends MovieClip {
public var health_mc:MovieClip;
public function healthholder_134(){
addFrameScript(29, frame30);
}
function frame30(){
gotoAndPlay(1);
}
}
}//package Untitled_fla
Section 29
//heroblock_38 (Untitled_fla.heroblock_38)
package Untitled_fla {
import flash.display.*;
public dynamic class heroblock_38 extends MovieClip {
public function heroblock_38(){
addFrameScript(5, frame6);
}
function frame6(){
stop();
}
}
}//package Untitled_fla
Section 30
//LogoAnimation_3 (Untitled_fla.LogoAnimation_3)
package Untitled_fla {
import flash.display.*;
public dynamic class LogoAnimation_3 extends MovieClip {
public function LogoAnimation_3(){
addFrameScript(60, frame61);
}
function frame61(){
stop();
}
}
}//package Untitled_fla
Section 31
//scrollbackground_126 (Untitled_fla.scrollbackground_126)
package Untitled_fla {
import flash.display.*;
public dynamic class scrollbackground_126 extends MovieClip {
public function scrollbackground_126(){
addFrameScript(999, frame1000);
}
function frame1000(){
gotoAndPlay(1);
}
}
}//package Untitled_fla
Section 32
//BackScreen (BackScreen)
package {
import flash.display.*;
public dynamic class BackScreen extends MovieClip {
public var scroll_mc:MovieClip;
}
}//package
Section 33
//Bomb (Bomb)
package {
import flash.display.*;
public dynamic class Bomb extends MovieClip {
public function Bomb(){
addFrameScript(49, frame50);
}
function frame50(){
stop();
parent.removeChild(this);
}
}
}//package
Section 34
//Bullet (Bullet)
package {
import flash.display.*;
public class Bullet extends MovieClip {
public var speed:Number;
public var type:String;
public var radian:Number;
public var damage:int;// = 0
public var bulletType:String;// = "bullet"
public var ailment:String;
public var canRicochet:Boolean;// = true
public var markForDeletion:Boolean;// = false
public var objectName:String;// = "bullet"
public function Bullet(_arg1:Number, _arg2:int, _arg3:DisplayObject, _arg4:String, _arg5:Number=NaN, _arg6:String="none"){
this.speed = _arg1;
this.type = _arg4;
this.damage = _arg2;
this.ailment = _arg6;
if (_arg5){
this.radian = _arg5;
};
addChild(_arg3);
}
public function run(){
var _local1:int;
if (radian){
_local1 = ((radian * 180) / Math.PI);
rotation = _local1;
x = (x - (Math.cos(radian) * speed));
y = (y - (Math.sin(radian) * speed));
} else {
x = (x + speed);
};
}
public function ricochet(){
radian = (radian + Math.PI);
if (type == "friend"){
type = "enemy";
} else {
type = "friend";
};
}
}
}//package
Section 35
//Civ (Civ)
package {
import flash.display.*;
public class Civ extends MovieClip {
public var mouth_mc:MovieClip;
public var arm_l_mc:MovieClip;
public var arm_r_mc:MovieClip;
public var eyes_mc:MovieClip;
public var head_mc:MovieClip;
public var legs_mc:MovieClip;
public var torso_mc:MovieClip;
public var speed:Number;// = 0
private var accel:Number;// = 0.02
public var type;// = "friend"
public var riqochet:Boolean;// = false
public var onScreen:Boolean;// = false
private var speedBonus:Number;
public var markForDeletion:Boolean;// = false
public var objectName:String;// = "civ"
public var value:int;// = 750
public function Civ(_arg1:Number){
var _local2:int = (Math.floor((Math.random() * 6)) + 1);
torso_mc.gotoAndStop(_local2);
arm_r_mc.gotoAndStop(_local2);
arm_l_mc.gotoAndStop(_local2);
var _local3:int = (Math.floor((Math.random() * 4)) + 1);
mouth_mc.gotoAndStop(_local3);
var _local4:int = (Math.floor((Math.random() * 4)) + 1);
legs_mc.gotoAndStop(_local4);
var _local5:int = (Math.floor((Math.random() * 2)) + 1);
head_mc.gotoAndStop(_local5);
var _local6:int = (Math.floor((Math.random() * 4)) + 1);
eyes_mc.gotoAndStop(_local6);
this.speedBonus = _arg1;
}
public function run(){
speed = (speed + accel);
y = (y + (speed + speedBonus));
rotation = (rotation + 2);
if ((y - (height / 2)) > 0){
onScreen = true;
};
}
}
}//package
Section 36
//CivFail (CivFail)
package {
import flash.display.*;
public dynamic class CivFail extends MovieClip {
public function CivFail(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 37
//CivSave (CivSave)
package {
import flash.display.*;
public dynamic class CivSave extends MovieClip {
public function CivSave(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
parent.removeChild(this);
}
}
}//package
Section 38
//Cloud (Cloud)
package {
import flash.display.*;
public class Cloud extends MovieClip {
private var speed:Number;// = 2
private var numClouds:int;// = 10
public var markForDeletion:Boolean;// = false
public var objectName:String;// = "cloud"
public function Cloud(){
gotoAndStop((Math.floor((Math.random() * numClouds)) + 1));
}
public function run(){
x = (x - speed);
}
}
}//package
Section 39
//Cure (Cure)
package {
import flash.display.*;
public dynamic class Cure extends MovieClip {
public function Cure(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 40
//Dart (Dart)
package {
import flash.display.*;
public dynamic class Dart extends MovieClip {
}
}//package
Section 41
//EMP (EMP)
package {
import flash.display.*;
public dynamic class EMP extends MovieClip {
}
}//package
Section 42
//Episode (Episode)
package {
import flash.display.*;
public dynamic class Episode extends MovieClip {
public var episode_mc:MovieClip;
public function Episode(){
addFrameScript(69, frame70);
}
function frame70(){
stop();
parent.removeChild(this);
}
}
}//package
Section 43
//Explosion (Explosion)
package {
import flash.display.*;
public dynamic class Explosion extends MovieClip {
public function Explosion(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
parent.removeChild(this);
}
}
}//package
Section 44
//Fireball (Fireball)
package {
import flash.display.*;
public dynamic class Fireball extends MovieClip {
}
}//package
Section 45
//Game (Game)
package {
import flash.display.*;
import flash.events.*;
import com.ikonicstudios.dynamics.*;
import flash.utils.*;
import com.ikonicstudios.sound.*;
public class Game extends MovieClip {
public var hero:Hero;
private var civs:Array;
public var bullets:Array;
private var villains:Array;
private var meteors:Array;
private var clouds:Array;
private var pl:PLCollision;
private var ui:Interface;
private var backScreen:MovieClip;
private var frontScreen:MovieClip;
private var holder:GameHolder;
public var ms:MasterSound;
public var score:int;// = 0
public var scoreFromEnemies:int;// = 0
public var civsSaved:int;// = 0
public var civsLost:int;// = 0
public var meteorsDestroyed:int;// = 0
private var numBombs:int;
private var runTimer:Timer;
private var cloudTimer:Timer;
private var civTimer:Timer;
private var civTimerRunning:Boolean;// = false
private var spawnTimer:Timer;
private var meteorTimer:Timer;
private var meteorRand:int;// = 5000
private var left:Boolean;// = false
private var right:Boolean;// = false
private var up:Boolean;// = false
private var down:Boolean;// = false
private var firing:Boolean;// = false
private var special:Boolean;// = false
private var firedSpecial:Boolean;// = false
private var block:Boolean;// = false
private var totalEnemies:int;// = 3
private var enemiesSpawned:int;// = 0
private var enemiesKilled:int;// = 0
private var enemyType:int;// = 1
private var totalTypes:int;// = 10
private var onEpisode:int;// = 0
private var currSingleSpawn:Number;
private var maxSingleSpawn:int;
private var increasePerLevel:Number;
private var lifetimeEnemiesKilled:int;// = 0
private var speedBonus:Number;// = 0
private var speedIncreaseAmount:Number;
private var maxSpeed:int;// = 0
private var difficulty:String;
private var enemiesOnScreen:int;// = 0
public function Game(_arg1, _arg2:Interface, _arg3:MovieClip, _arg4:MovieClip, _arg5:int, _arg6:Number, _arg7:int, _arg8:int, _arg9:int, _arg10:Number, _arg11:int, _arg12:Number, _arg13:int){
civs = new Array();
bullets = new Array();
villains = new Array();
meteors = new Array();
clouds = new Array();
pl = new PLCollision();
ms = new MasterSound();
runTimer = new Timer(20, 1);
cloudTimer = new Timer(5000, 1);
civTimer = new Timer(4000, 1);
spawnTimer = new Timer(0, 1);
meteorTimer = new Timer(5000, 1);
super();
ui = _arg2;
this.backScreen = _arg3;
this.frontScreen = _arg4;
holder = _arg1;
addEventListener(Event.ADDED_TO_STAGE, init);
this.speedIncreaseAmount = _arg6;
this.maxSingleSpawn = _arg9;
this.currSingleSpawn = _arg8;
this.maxSpeed = _arg7;
this.difficulty = difficulty;
this.increasePerLevel = _arg10;
this.numBombs = _arg11;
hero = new Hero(300, 200, _arg12, _arg13, this, ui);
spawnTimer.delay = _arg5;
civTimer.delay = (_arg5 / 2);
}
private function init(_arg1:Event){
levelUp();
addEffect("space", 300, 250);
addChild(hero);
startGame();
ui.updateBomb(numBombs);
stage.addEventListener(KeyboardEvent.KEY_DOWN, detectKeyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, detectKeyRelease);
focusRect = false;
stage.focus = this;
}
private function run(_arg1:TimerEvent){
runTimer.start();
runTimer.addEventListener(TimerEvent.TIMER_COMPLETE, run);
runHero();
runCivs();
runBullets();
runVillains();
runMeteors();
runClouds();
bulletMissileCollision();
if (firing){
hero.fire();
};
if (((special) && (!(firedSpecial)))){
firedSpecial = true;
if (numBombs > 0){
fireSpecial();
} else {
ms.playSound("nobomb.wav");
};
};
if (enemiesKilled >= totalEnemies){
levelUp();
};
ui.updateEnemies(enemiesKilled, totalEnemies);
ui.updateScore(score);
if (hero.health <= 0){
holder.mainRef.gameOver(score, civsSaved, civsLost, onEpisode, lifetimeEnemiesKilled, scoreFromEnemies, meteorsDestroyed);
ms.stopSound("lowhealth.wav");
return (null);
};
}
private function runHero(){
var _local1:MovieClip;
hero.update(left, right, up, down, block);
if (block){
_local1 = runBulletCollision(hero, hero.ricochet);
} else {
_local1 = runBulletCollision(hero, false);
};
if (((((_local1) && (((((((!(block)) || ((_local1.ailment == "burn")))) || ((_local1.ailment == "poison")))) || ((_local1.ailment == "freeze")))))) && (!(hero.frozen)))){
if (_local1.bulletType == "bullet"){
ms.playSound("bullethit.wav");
if (_local1.ailment == "freeze"){
hero.freezeHero();
};
if (_local1.ailment == "burn"){
hero.burnHero();
};
if (_local1.ailment == "mixup"){
hero.mixHero();
};
if (_local1.ailment == "poison"){
hero.posionHero();
};
if (_local1.ailment == "emp"){
hero.emp();
};
} else {
ms.playSound("kaboom.wav");
};
hero.hit(_local1.damage);
} else {
if (((_local1) && (((((block) && (hero.ricochet))) || (hero.frozen))))){
ms.playSound("ricochet.wav");
} else {
if (((_local1) && (block))){
ms.playSound("block.wav");
};
};
};
}
private function runCivs(){
var _local2:*;
var _local3:*;
var _local1:* = 0;
while (_local1 < civs.length) {
_local2 = civs[_local1];
_local2.run();
_local3 = runBulletCollision(_local2, false);
if (((pl.isColliding(_local2, hero)) && (_local2.onScreen))){
addEffect("save", _local2.x, _local2.y);
ms.playSound("civsave.wav");
score = (score + _local2.value);
civsSaved++;
ui.updateCivs(civsSaved, civsLost);
_local2.markForDeletion = true;
} else {
if ((((_local2.y > 450)) || (((_local3) && (!((_local3.type == "friend"))))))){
score = (score - _local2.value);
ms.playSound("civfail.wav");
if (y < 450){
addEffect("fail", _local2.x, _local2.y);
};
civsLost++;
ui.updateCivs(civsSaved, civsLost);
_local2.markForDeletion = true;
};
};
if (_local2.markForDeletion){
civs.splice(_local1, 1);
removeChild(_local2);
_local1--;
};
_local1++;
};
}
private function runVillains(){
var _local2:VillainBase;
var _local3:*;
var _local1:* = 0;
while (_local1 < villains.length) {
_local2 = villains[_local1];
_local2.run();
_local3 = runBulletCollision(_local2, false);
if (_local3){
if (!ms.isPlaying("killed.wav")){
ms.playSound("killed.wav");
};
_local2.hitsTaken++;
if (_local2.hitsTaken == _local2.hitsToKill){
addEffect("zap", _local2.x, _local2.y);
_local2.markForDeletion = true;
};
};
if (_local2.markForDeletion){
score = (score + _local2.value);
scoreFromEnemies = (scoreFromEnemies + _local2.value);
_local2.garbageCollection();
villains.splice(_local1, 1);
removeChild(_local2);
_local1--;
enemiesKilled++;
lifetimeEnemiesKilled++;
enemiesOnScreen--;
};
_local1++;
};
}
private function runBullets(){
var _local2:MovieClip;
var _local1:* = 0;
while (_local1 < bullets.length) {
_local2 = bullets[_local1];
_local2.run();
if (((((((((_local2.markForDeletion) || ((_local2.x < -50)))) || ((_local2.x > 650)))) || ((_local2.y < -50)))) || ((_local2.y > 450)))){
bullets.splice(_local1, 1);
removeChild(_local2);
_local1--;
};
_local1++;
};
}
private function bulletMissileCollision(){
var _local2:*;
var _local3:*;
var _local4:*;
var _local1:* = 0;
while (_local1 < bullets.length) {
_local2 = bullets[_local1];
_local3 = 0;
while (_local3 < bullets.length) {
_local4 = bullets[_local3];
if (((((((((!((_local1 == _local3))) && (pl.isColliding(_local2, _local4)))) && (!((_local2.bulletType == _local4.bulletType))))) && (!(_local2.markForDeletion)))) && (!(_local4.markForDeletion)))){
if (_local2.bulletType == "missile"){
addEffect("explosion", _local2.x, _local2.y);
} else {
addEffect("explosion", _local4.x, _local4.y);
};
_local2.markForDeletion = true;
_local4.markForDeletion = true;
};
_local3++;
};
_local1++;
};
}
private function runBulletCollision(_arg1:MovieClip, _arg2:Boolean):MovieClip{
var _local4:MovieClip;
var _local3:* = 0;
while (_local3 < bullets.length) {
_local4 = bullets[_local3];
if (((pl.isColliding(_local4, _arg1)) && (!((_local4.type == _arg1.type))))){
if (_local4.bulletType == "bullet"){
if (((_arg2) && (_local4.canRicochet))){
_local4.ricochet();
} else {
_local4.markForDeletion = true;
};
} else {
if (_local4.bulletType == "missile"){
addEffect("explosion", _arg1.x, _arg1.y);
_local4.markForDeletion = true;
};
};
return (_local4);
};
_local3++;
};
return (null);
}
private function runMeteors(){
var _local2:Meteor;
var _local3:*;
var _local1:* = 0;
while (_local1 < meteors.length) {
_local2 = meteors[_local1];
_local3 = runBulletCollision(_local2, false);
_local2.run();
if (((((_local3) && (!((_local3.type == "enemy"))))) && (_local2.onScreen))){
if (_local2.hasPowerup){
ms.playSound("powerup.wav");
addEffect(_local2.effect, _local2.x, _local2.y);
setPowerup(_local2.effect);
} else {
ms.playSound("kaboom.wav");
addEffect("kaboom", _local2.x, _local2.y);
};
score = (score + _local2.value);
meteorsDestroyed++;
_local2.markForDeletion = true;
} else {
if (_local2.y > 550){
_local2.markForDeletion = true;
};
};
if (_local2.markForDeletion){
meteors.splice(_local1, 1);
removeChild(_local2);
_local1--;
};
_local1++;
};
}
private function runClouds(){
var _local2:Cloud;
var _local1:* = 0;
while (_local1 < clouds.length) {
_local2 = clouds[_local1];
_local2.run();
if ((_local2.x + _local2.width) < 0){
_local2.markForDeletion = true;
};
if (_local2.markForDeletion){
backScreen.removeChild(_local2);
clouds.splice(_local1, 1);
};
_local1++;
};
}
private function makeCloud(_arg1:TimerEvent){
var _local2:Cloud = new Cloud();
_local2.y = 50;
_local2.x = 600;
backScreen.addChild(_local2);
cloudTimer.start();
cloudTimer.addEventListener(TimerEvent.TIMER_COMPLETE, makeCloud);
clouds.push(_local2);
_local2.alpha = 0.5;
}
private function addVillain(_arg1:TimerEvent){
var _local4:int;
var _local5:MovieClip;
var _local2:int = ((Math.random() * currSingleSpawn) + 1);
var _local3:* = 0;
while (_local3 < _local2) {
if ((((enemiesSpawned < totalEnemies)) && ((enemiesOnScreen < 25)))){
enemiesSpawned++;
enemiesOnScreen++;
_local4 = ((Math.random() * enemyType) + 1);
switch (_local4){
case 1:
_local5 = new Villain(this, hero);
break;
case 2:
_local5 = new Villain2(this, hero);
break;
case 3:
_local5 = new Villain3(this, hero);
break;
case 4:
_local5 = new Villain4(this, hero);
break;
case 5:
_local5 = new Villain5(this, hero);
break;
case 6:
_local5 = new Villain9(this, hero);
break;
case 7:
_local5 = new Villain7(this, hero);
break;
case 8:
_local5 = new Villain10(this, hero);
break;
case 9:
_local5 = new Villain6(this, hero);
break;
case 10:
_local5 = new Villain8(this, hero);
break;
};
_local5.speed = (_local5.speed + speedBonus);
addChild(_local5);
villains.push(_local5);
civTimer.start();
civTimer.addEventListener(TimerEvent.TIMER_COMPLETE, addCiv);
civTimerRunning = true;
};
_local3++;
};
spawnTimer.start();
spawnTimer.addEventListener(TimerEvent.TIMER_COMPLETE, addVillain);
}
private function addCiv(_arg1:TimerEvent){
var _local2:* = new Civ(speedBonus);
_local2.speed = (_local2.speed + speedBonus);
_local2.x = (Math.floor((Math.random() * 550)) + 25);
_local2.y = -50;
addChild(_local2);
civs.push(_local2);
civTimerRunning = false;
}
public function addEffect(_arg1:String, _arg2, _arg3){
var _local4:MovieClip;
switch (_arg1){
case "save":
_local4 = new CivSave();
break;
case "fail":
_local4 = new CivFail();
break;
case "zap":
_local4 = new Zap();
break;
case "superbomb":
_local4 = new SuperBomb();
break;
case "multilaser":
_local4 = new MultiLaser();
break;
case "ricochet":
_local4 = new Ricochet();
break;
case "speedup":
_local4 = new SpeedUp();
break;
case "laserspeed":
_local4 = new LaserSpeed();
break;
case "kaboom":
_local4 = new Kaboom();
break;
case "bomb":
_local4 = new Bomb();
break;
case "explosion":
_local4 = new Explosion();
break;
case "health":
_local4 = new Health();
break;
case "cure":
_local4 = new Cure();
break;
case "space":
_local4 = new Space();
break;
};
_local4.x = _arg2;
_local4.y = _arg3;
frontScreen.addChild(_local4);
}
public function addBullet(_arg1:MovieClip){
bullets.push(_arg1);
addChild(_arg1);
}
private function addMeteor(_arg1:TimerEvent){
var _local2:Meteor = new Meteor(speedBonus);
_local2.speed = (_local2.speed + speedBonus);
addChild(_local2);
meteors.push(_local2);
meteorTimer.start();
meteorTimer.addEventListener(TimerEvent.TIMER_COMPLETE, addMeteor);
}
public function explode(_arg1:MovieClip){
addEffect("explosion", _arg1.x, _arg1.y);
ms.playSound("kaboom.wav");
if (!block){
hero.hit(_arg1.damage);
ui.setHealth(hero.health);
};
}
private function fireSpecial(){
var _local2:*;
var _local3:Meteor;
var _local4:MovieClip;
ms.playSound("superbomb.wav");
numBombs--;
ui.updateBomb(numBombs);
addEffect("bomb", 0, 0);
var _local1:* = 0;
while (_local1 < villains.length) {
_local2 = villains[_local1];
_local2.markForDeletion = true;
_local1++;
};
_local1 = 0;
while (_local1 < meteors.length) {
_local3 = meteors[_local1];
removeChild(_local3);
meteors.splice(_local1, 1);
score = (score + _local3.value);
meteorsDestroyed++;
_local1--;
_local1++;
};
_local1 = 0;
while (_local1 < bullets.length) {
_local4 = bullets[_local1];
if (_local4.type == "enemy"){
removeChild(_local4);
bullets.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
private function setPowerup(_arg1:String){
switch (_arg1){
case "speedup":
if (hero.speedBonus < 3){
hero.speedBonus = (hero.speedBonus + 0.5);
};
break;
case "laserspeed":
if ((hero.laserSpeed + hero.laserSpeedBonus) != 15){
hero.laserSpeedBonus = (hero.laserSpeedBonus + 1);
};
break;
case "superbomb":
numBombs++;
ui.updateBomb(numBombs);
break;
case "ricochet":
hero.ricochet = true;
break;
case "multilaser":
if ((hero.laserNum + 2) <= 8){
hero.laserNum = (hero.laserNum + 2);
} else {
hero.laserNum = 8;
};
break;
case "health":
hero.addHealth(10);
break;
case "cure":
hero.healAilments();
break;
};
}
private function levelUp(){
onEpisode++;
if (onEpisode != 1){
ms.playSound("episode.wav");
if (currSingleSpawn < maxSingleSpawn){
currSingleSpawn = (currSingleSpawn + increasePerLevel);
};
if (enemyType != 10){
enemyType++;
};
if ((((speedBonus < maxSpeed)) && (!((onEpisode == 1))))){
speedBonus = (speedBonus + speedIncreaseAmount);
};
totalEnemies = (totalEnemies + 3);
enemiesKilled = 0;
enemiesSpawned = 0;
score = (score + 1000);
if ((spawnTimer.delay - 200) > 2000){
spawnTimer.delay = (spawnTimer.delay - 200);
civTimer.delay = (spawnTimer.delay / 2);
};
};
var _local1:MovieClip = new Episode();
_local1.episode_mc.episode_txt.text = ("Episode " + onEpisode);
_local1.x = 300;
_local1.y = 200;
frontScreen.addChild(_local1);
}
public function startGame(){
var _local1:*;
runTimer.start();
runTimer.addEventListener(TimerEvent.TIMER_COMPLETE, run);
cloudTimer.start();
cloudTimer.addEventListener(TimerEvent.TIMER_COMPLETE, makeCloud);
if (civTimerRunning){
civTimer.start();
};
civTimer.addEventListener(TimerEvent.TIMER_COMPLETE, addCiv);
spawnTimer.start();
spawnTimer.addEventListener(TimerEvent.TIMER_COMPLETE, addVillain);
meteorTimer.start();
meteorTimer.addEventListener(TimerEvent.TIMER_COMPLETE, addMeteor);
for each (_local1 in villains) {
_local1.resume();
};
}
public function endGame(){
var _local1:*;
runTimer.stop();
runTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, run);
cloudTimer.stop();
cloudTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, makeCloud);
civTimer.stop();
civTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, addCiv);
spawnTimer.stop();
spawnTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, addVillain);
meteorTimer.stop();
meteorTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, addMeteor);
for each (_local1 in villains) {
_local1.pause();
};
}
public function removeGame(){
var _local2:*;
endGame();
bullets = new Array();
civs = new Array();
meteors = new Array();
var _local1:* = 0;
while (_local1 < villains.length) {
_local2 = villains[_local1];
_local2.garbageCollection();
removeChild(_local2);
_local1++;
};
villains = new Array();
clouds = new Array();
}
private function detectKeyPress(_arg1:KeyboardEvent){
switch (_arg1.keyCode){
case 37:
case 65:
left = true;
break;
case 38:
case 87:
up = true;
break;
case 39:
case 68:
right = true;
break;
case 40:
case 83:
down = true;
break;
case 67:
case 76:
special = true;
break;
case 75:
case 88:
block = true;
break;
case 90:
case 74:
firing = true;
break;
};
}
private function detectKeyRelease(_arg1:KeyboardEvent){
switch (_arg1.keyCode){
case 37:
case 65:
left = false;
break;
case 38:
case 87:
up = false;
break;
case 39:
case 68:
right = false;
break;
case 40:
case 83:
down = false;
break;
case 67:
case 76:
special = false;
firedSpecial = false;
break;
case 75:
case 88:
block = false;
break;
case 90:
case 74:
firing = false;
break;
};
}
}
}//package
Section 46
//GameHolder (GameHolder)
package {
import flash.display.*;
import flash.events.*;
public class GameHolder extends MovieClip {
private var ui:Interface;
private var backScreen:MovieClip;
private var frontScreen:MovieClip;
public var game:Game;
public var mainRef:Main;
private var menuChange:Boolean;// = false
private var menuShowing:Boolean;// = false
public function GameHolder(_arg1:Main, _arg2:int, _arg3:Number, _arg4:int, _arg5:int, _arg6:int, _arg7:Number, _arg8:int, _arg9:Number, _arg10:int){
ui = new Interface();
backScreen = new BackScreen();
frontScreen = new MovieClip();
super();
this.mainRef = _arg1;
game = new Game(this, ui, backScreen, frontScreen, 5000, 0.2, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
addChild(backScreen);
addChild(game);
addChild(frontScreen);
addHalftone();
addChild(ui);
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(_arg1:Event){
stage.addEventListener(KeyboardEvent.KEY_DOWN, detectKeyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, detectKeyRelease);
}
private function addHalftone(){
var _local1:* = new Halftone();
_local1.alpha = 0.1;
addChild(_local1);
}
public function removeGame(){
game.removeGame();
removeChild(game);
removeChild(ui);
removeChild(backScreen);
removeChild(frontScreen);
}
private function toggleMenu(){
if (((!(menuShowing)) && (!(menuChange)))){
game.endGame();
ui.showMenu();
menuChange = true;
menuShowing = true;
backScreen.scroll_mc.stop();
} else {
if (!menuChange){
game.startGame();
ui.closeMenu();
menuChange = true;
menuShowing = false;
backScreen.scroll_mc.play();
};
};
}
private function detectKeyPress(_arg1:KeyboardEvent){
if (_arg1.keyCode == 32){
toggleMenu();
};
}
private function detectKeyRelease(_arg1:KeyboardEvent){
if (_arg1.keyCode == 32){
menuChange = false;
};
}
}
}//package
Section 47
//Halftone (Halftone)
package {
import flash.display.*;
public dynamic class Halftone extends MovieClip {
}
}//package
Section 48
//Health (Health)
package {
import flash.display.*;
public dynamic class Health extends MovieClip {
public function Health(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 49
//Hero (Hero)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.filters.*;
public class Hero extends MovieClip {
public var speed:Number;
public var canFire:Boolean;// = true
private var fireTimer:Timer;
private var gameRef:Game;
private var uiRef:Interface;
public var health:int;// = 100
public var damage:int;// = 10
public var type:String;// = "friend"
private var playedLowHealth:Boolean;// = false
private var doHover:Boolean;// = true
private var currState:String;// = "rest"
private var hoverDirection:int;// = 1
private var hoverDistance:Number;// = 0
private var gender:int;
public var ricochet:Boolean;// = false
public var speedBonus:Number;// = 0
public var laserSpeed:int;// = 12
public var laserSpeedBonus:int;// = 0
public var laserNum:int;// = 1
public var frozen:Boolean;// = false
public var mixup:Boolean;// = false
private var poisonTimer:Timer;
private var timesPoisoned:int;// = 0
private var burnTimer:Timer;
private var timesBurned:int;// = 0
private var frozenTimer:Timer;
private var mixTimer:Timer;
private var maxTimesAffected:int;// = 10
public function Hero(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Game, _arg6:Interface){
fireTimer = new Timer(375, 1);
poisonTimer = new Timer(1000, 1);
burnTimer = new Timer(1000, 1);
frozenTimer = new Timer(3000, 1);
mixTimer = new Timer(3000, 1);
super();
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8);
stop();
this.x = _arg1;
this.y = _arg2;
this.gameRef = _arg5;
this.uiRef = _arg6;
this.speed = _arg3;
this.gender = _arg4;
gotoAndStop(("rest" + _arg4));
}
public function update(_arg1:Boolean, _arg2:Boolean, _arg3:Boolean, _arg4:Boolean, _arg5:Boolean){
if (!frozen){
if (((((((((_arg1) || (_arg2))) || (_arg3))) || (_arg4))) && (!(_arg5)))){
if (currState != "fly"){
gotoAndStop(("fly" + gender));
};
if (_arg1){
if (mixup){
moveRight();
} else {
moveLeft();
};
};
if (_arg2){
if (mixup){
moveLeft();
} else {
moveRight();
};
};
if (_arg3){
if (mixup){
moveDown();
} else {
moveUp();
};
};
if (_arg4){
if (mixup){
moveUp();
} else {
moveDown();
};
};
} else {
if (!_arg5){
doHover = true;
if (currState != "rest"){
gotoAndStop(("rest" + gender));
};
} else {
if (currState != "block"){
gotoAndStop(("block" + gender));
};
};
};
};
if (currState != "fly"){
hover();
};
}
private function moveUp(){
if ((y - (height / 2)) > 30){
y = (y - (speed + speedBonus));
};
}
private function moveDown(){
if ((y + (height / 2)) < 355){
y = (y + (speed + speedBonus));
};
}
private function moveLeft(){
if ((x - (width / 2)) > 0){
x = (x - (speed + speedBonus));
if (scaleX != -1){
scaleX = -1;
};
};
}
private function moveRight(){
if ((x + (width / 2)) < 600){
x = (x + (speed + speedBonus));
if (scaleX != 1){
scaleX = 1;
};
};
}
public function fire(){
var _local2:*;
var _local3:uint;
var _local4:Sprite;
var _local5:GlowFilter;
var _local6:*;
var _local7:Bullet;
var _local1:int;
if (laserNum == 3){
_local1 = 135;
};
if (laserNum == 5){
_local1 = 90;
};
if (laserNum == 7){
_local1 = 45;
};
if (laserNum == 8){
_local1 = 360;
};
if (canFire){
gameRef.ms.playSound("laser.wav");
canFire = false;
_local2 = 0;
while (_local2 < laserNum) {
_local3 = 0xFF0000;
_local4 = new Sprite();
_local4.graphics.lineStyle(2, _local3);
_local4.graphics.lineTo(20, 0);
_local5 = new GlowFilter(_local3, 1, 4, 4, 2, 3);
_local4.filters = new Array(_local5);
_local6 = ((_local1 / 180) * Math.PI);
_local7 = new Bullet(((laserSpeed + laserSpeedBonus) * scaleX), damage, _local4, "friend", _local6);
if (scaleX > 0){
_local7.x = (x + ((width / 2) * scaleX));
} else {
_local7.x = (x - _local7.width);
};
_local7.y = ((y - (height / 2)) + 10);
gameRef.addBullet(_local7);
_local1 = (_local1 + 45);
_local2++;
};
fireTimer.start();
fireTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
};
}
public function hover(){
if (hoverDirection == 1){
if (hoverDistance < 10){
hoverDistance = (hoverDistance + 0.5);
y = (y - 0.5);
} else {
hoverDirection = -1;
};
} else {
if (hoverDistance > 0){
hoverDistance = (hoverDistance - 0.5);
y = (y + 0.5);
} else {
hoverDirection = 1;
};
};
}
private function resetFire(_arg1:TimerEvent){
canFire = true;
}
public function posionHero(){
timesPoisoned = 0;
poisonTimer.start();
poisonTimer.addEventListener(TimerEvent.TIMER_COMPLETE, poisonDamage);
uiRef.poison_mc.visible = true;
}
private function poisonDamage(_arg1:TimerEvent){
timesPoisoned++;
if (timesPoisoned <= maxTimesAffected){
hit(1);
poisonTimer.start();
poisonTimer.addEventListener(TimerEvent.TIMER_COMPLETE, poisonDamage);
} else {
uiRef.poison_mc.visible = false;
};
}
public function burnHero(){
timesBurned = 0;
burnTimer.start();
burnTimer.addEventListener(TimerEvent.TIMER_COMPLETE, burnDamage);
uiRef.burn_mc.visible = true;
}
private function burnDamage(_arg1:TimerEvent){
timesBurned++;
if (timesBurned <= maxTimesAffected){
hit(1);
burnTimer.start();
burnTimer.addEventListener(TimerEvent.TIMER_COMPLETE, burnDamage);
} else {
uiRef.burn_mc.visible = false;
};
}
public function freezeHero(){
frozen = true;
frozenTimer.start();
frozenTimer.addEventListener(TimerEvent.TIMER_COMPLETE, unfreezeHero);
gotoAndStop(("frozen" + gender));
uiRef.frozen_mc.visible = true;
}
private function unfreezeHero(_arg1:TimerEvent){
frozen = false;
gotoAndPlay(("rest" + gender));
uiRef.frozen_mc.visible = false;
}
public function mixHero(){
mixup = true;
mixTimer.delay = 3000;
mixTimer.start();
mixTimer.addEventListener(TimerEvent.TIMER_COMPLETE, unmixHero);
uiRef.mixup_mc.visible = true;
}
private function unmixHero(_arg1:TimerEvent){
mixup = false;
uiRef.mixup_mc.visible = false;
}
public function healAilments(){
mixTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, unmixHero);
burnTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, burnDamage);
frozenTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, unfreezeHero);
poisonTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, poisonDamage);
poisonTimer.stop();
burnTimer.stop();
mixTimer.stop();
frozenTimer.stop();
mixup = false;
frozen = false;
gotoAndPlay("rest");
uiRef.poison_mc.visible = false;
uiRef.burn_mc.visible = false;
uiRef.mixup_mc.visible = false;
uiRef.frozen_mc.visible = false;
}
public function emp(){
ricochet = false;
speedBonus = 0;
laserSpeedBonus = 0;
laserNum = 1;
}
public function hit(_arg1:int){
health = (health - _arg1);
if ((((health <= 10)) && (!(playedLowHealth)))){
gameRef.ms.playSound("lowhealth.wav");
playedLowHealth = true;
};
uiRef.setHealth(health);
}
public function addHealth(_arg1:int){
health = (health + _arg1);
if (health > 10){
playedLowHealth = false;
};
uiRef.setHealth(health);
}
public function garbageCollection(){
mixTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, unmixHero);
burnTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, burnDamage);
frozenTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, unfreezeHero);
poisonTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, poisonDamage);
poisonTimer.stop();
burnTimer.stop();
mixTimer.stop();
frozenTimer.stop();
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "block";
}
function frame4(){
stop();
}
function frame5(){
currState = "rest";
}
function frame6(){
currState = "fly";
}
function frame7(){
currState = "block";
}
function frame8(){
stop();
}
}
}//package
Section 50
//Interface (Interface)
package {
import flash.display.*;
import flash.text.*;
public class Interface extends MovieClip {
public var poison_mc:MovieClip;
public var score_txt:TextField;
public var mixup_mc:MovieClip;
public var bombs_txt:TextField;
public var healthHolder_mc:MovieClip;
public var killed_txt:TextField;
public var burn_mc:MovieClip;
public var civsLost_txt:TextField;
public var menu_mc:MovieClip;
public var civs_txt:TextField;
public var frozen_mc:MovieClip;
public function Interface(){
poison_mc.visible = false;
burn_mc.visible = false;
frozen_mc.visible = false;
mixup_mc.visible = false;
healthHolder_mc.stop();
menu_mc.visible = false;
}
public function updateCivs(_arg1:int, _arg2:int){
civs_txt.text = _arg1.toString();
civsLost_txt.text = _arg2.toString();
}
public function setHealth(_arg1:int){
healthHolder_mc.health_mc.health_txt.text = (_arg1.toString() + "%");
if (_arg1 > 10){
healthHolder_mc.gotoAndStop(1);
} else {
healthHolder_mc.gotoAndPlay(1);
};
}
public function updateBomb(_arg1:int){
bombs_txt.text = _arg1.toString();
}
public function updateEnemies(_arg1:int, _arg2:int){
killed_txt.text = ((("enemies killed: " + _arg1) + "/") + _arg2);
}
public function updateScore(_arg1:int){
score_txt.text = _arg1.toString();
}
public function showMenu(){
menu_mc.visible = true;
}
public function closeMenu(){
menu_mc.visible = false;
}
}
}//package
Section 51
//Kaboom (Kaboom)
package {
import flash.display.*;
public dynamic class Kaboom extends MovieClip {
public function Kaboom(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
parent.removeChild(this);
}
}
}//package
Section 52
//LaserSpeed (LaserSpeed)
package {
import flash.display.*;
public dynamic class LaserSpeed extends MovieClip {
public function LaserSpeed(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 53
//Main (Main)
package {
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import com.ikonicstudios.sound.*;
import flash.net.*;
import flash.ui.*;
public dynamic class Main extends MovieClip {
public var loader_mc:Preloader;
private var screen:MovieClip;
private var ms:MasterSound;
private var score:int;// = 0
private var gameShowing:Boolean;// = false
private var difficulty:String;
public var gender:int;// = 1
public static var muteState:int = 0;
public function Main(){
ms = new MasterSound();
super();
addFrameScript(1, frame2, 2, frame3, 3, frame4, 5, frame6);
stop();
MochiServices.connect("4ea634b000e51cb1", root);
loader_mc.addEventListener("COMPLETED", resume);
var _local1:ContextMenu = new ContextMenu();
_local1.hideBuiltInItems();
contextMenu = _local1;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
addEventListener(MouseEvent.CLICK, clicked);
}
private function resume(_arg1:Event){
nextFrame();
}
private function initiate(){
ms.addLibrarySound("laser.wav");
ms.addLibrarySound("civsave.wav");
ms.addLibrarySound("bullethit.wav");
ms.addLibrarySound("kaboom.wav");
ms.addLibrarySound("civfail.wav");
ms.addLibrarySound("nobomb.wav");
ms.addLibrarySound("powerup.wav");
ms.addLibrarySound("superbomb.wav");
ms.addLibrarySound("ricochet.wav");
ms.addLibrarySound("block.wav");
ms.addLibrarySound("menutheme.mp3");
ms.addLibrarySound("battle.mp3");
ms.addLibrarySound("killed.wav");
ms.addLibrarySound("episode.wav");
ms.addLibrarySound("lowhealth.wav");
ms.addLibrarySound("teleport.wav");
ms.addSilentSound("menutheme.mp3");
ms.changeVolume("battle.mp3", 75);
ms.changeVolume("menutheme.mp3", 75);
}
private function clicked(_arg1:MouseEvent){
if (_arg1.target.name == "instructions_btn"){
screen.gotoAndStop("instructions");
};
if (_arg1.target.name == "next_btn"){
screen.nextFrame();
};
if (_arg1.target.name == "prev_btn"){
screen.prevFrame();
};
if (_arg1.target.name == "credits_btn"){
screen.gotoAndStop("credits");
};
if (_arg1.target.name == "return_btn"){
screen.gotoAndStop("main");
};
if (_arg1.target.name == "highscores_btn"){
screen.gotoAndStop("highscores");
};
if (_arg1.target.name == "hs_baby_btn"){
showBoard("baby");
};
if (_arg1.target.name == "hs_regular_btn"){
showBoard("regular");
};
if (_arg1.target.name == "hs_hard_btn"){
showBoard("hard");
};
if (_arg1.target.name == "hs_insane_btn"){
showBoard("insane");
};
if ((((_arg1.target.name == "more_btn")) || ((_arg1.target.name == "sponsor_btn")))){
goToURL("http://www.gameshok.com/index.php?action=branded");
};
if (_arg1.target.name == "site_btn"){
goToURL("http://ikonicstudios.com");
};
if (_arg1.target.name == "play_btn"){
screen.gotoAndStop("difficulty");
};
if (_arg1.target.name == "male_mc"){
screen.male_mc.gotoAndStop(2);
screen.female_mc.gotoAndStop(1);
gender = 1;
};
if (_arg1.target.name == "female_mc"){
screen.female_mc.gotoAndStop(2);
screen.male_mc.gotoAndStop(1);
gender = 2;
};
if (_arg1.target.name == "menu_btn"){
addMenu();
};
if (_arg1.target.name == "submit_btn"){
showBoard(difficulty, true);
};
if (_arg1.target.name == "baby_btn"){
addGame(10000, 0.2, 3, 1, 5, 0.2, 5, 7, gender);
difficulty = "baby";
};
if (_arg1.target.name == "regular_btn"){
addGame(5000, 0.5, 4, 1, 10, 0.75, 1, 6, gender);
difficulty = "regular";
};
if (_arg1.target.name == "hard_btn"){
addGame(4000, 0.5, 5, 3, 10, 1, 1, 6.5, gender);
difficulty = "hard";
};
if (_arg1.target.name == "insane_btn"){
addGame(4000, 1, 5, 5, 15, 2, 0, 5, gender);
difficulty = "insane";
};
}
private function addGame(_arg1:int, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:Number, _arg7:int, _arg8:Number, _arg9:int){
clearScreen();
gameShowing = true;
ms.stopSound("menutheme.mp3");
ms.playSound("battle.mp3", true, 3000);
screen = new GameHolder(this, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9);
addChild(screen);
}
private function addMenu(){
clearScreen();
screen = new Menu();
ms.stopSound("battle.mp3");
if (!ms.isPlaying("menutheme.mp3")){
ms.playSound("menutheme.mp3", true);
};
addChild(screen);
}
private function clearScreen(){
gameShowing = false;
if (screen != null){
removeChild(screen);
screen = null;
};
}
public function gameOver(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int){
screen.removeGame();
addSubmitScreen(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
}
public function addSubmitScreen(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int){
clearScreen();
this.score = _arg1;
screen = new SubmitScreen(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
addChild(screen);
}
public function showBoard(_arg1:String, _arg2:Boolean=false){
var o:Object;
var board = _arg1;
var submit = _arg2;
clearScreen();
gotoAndStop("highscores");
switch (board){
case "baby":
o = {n:[6, 15, 10, 13, 13, 8, 15, 6, 12, 11, 15, 7, 13, 5, 9, 11], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
break;
case "regular":
o = {n:[13, 6, 6, 2, 7, 12, 7, 3, 11, 9, 14, 0, 8, 8, 14, 0], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
break;
case "hard":
o = {n:[2, 1, 2, 2, 5, 13, 13, 13, 8, 0, 8, 3, 9, 11, 15, 7], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
break;
case "insane":
o = {n:[2, 5, 14, 11, 2, 13, 10, 11, 8, 9, 11, 3, 10, 13, 3, 10], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
break;
};
var boardID:String = o.f(0, "");
if (submit){
MochiScores.showLeaderboard({boardID:boardID, score:score});
} else {
MochiScores.showLeaderboard({boardID:boardID});
};
}
private function goToURL(_arg1:String){
var _local2:URLRequest = new URLRequest(_arg1);
navigateToURL(_local2, "_blank");
}
private function keyPressed(_arg1:KeyboardEvent){
if (_arg1.keyCode == 77){
if (muteState == 0){
muteState = 1;
ms.muteSound("battle.mp3");
ms.muteSound("menutheme.mp3");
} else {
if (muteState == 1){
muteState = 2;
ms.muteAll();
} else {
muteState = 0;
ms.unmuteAll();
};
};
};
if ((((_arg1.keyCode == 27)) && (gameShowing))){
screen.removeGame();
addMenu();
};
}
function frame2(){
gotoAndStop(3);
}
function frame3(){
initiate();
gotoAndStop("menu");
}
function frame4(){
addMenu();
}
function frame6(){
gotoAndStop("menu");
}
}
}//package
Section 54
//Menu (Menu)
package {
import flash.geom.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.filters.*;
import flash.ui.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class Menu extends MovieClip {
public var prev_btn:SimpleButton;
public var highscores_btn:SimpleButton;
public var hs_baby_btn:SimpleButton;
public var instructions_btn:SimpleButton;
public var return_btn:SimpleButton;
public var hs_hard_btn:SimpleButton;
public var insane_btn:SimpleButton;
public var hard_btn:SimpleButton;
public var regular_btn:SimpleButton;
public var credits_btn:SimpleButton;
public var male_mc:MovieClip;
public var site_btn:SimpleButton;
public var female_mc:MovieClip;
public var baby_btn:SimpleButton;
public var more_btn:SimpleButton;
public var hs_regular_btn:SimpleButton;
public var play_btn:SimpleButton;
public var sponsor_btn:SimpleButton;
public var hs_insane_btn:SimpleButton;
public var next_btn:SimpleButton;
public var gender;
public function Menu(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
gender = parent["gender"];
if (gender == 1){
male_mc.gotoAndStop(2);
female_mc.gotoAndStop(1);
} else {
male_mc.gotoAndStop(1);
female_mc.gotoAndStop(2);
};
}
}
}//package
Section 55
//Meteor (Meteor)
package {
import flash.display.*;
import flash.filters.*;
public class Meteor extends MovieClip {
private var numMeteors;// = 6
public var speed:Number;// = 0
private var speedBonus:Number;
private var accel:Number;// = 0.02
private var radian:Number;
public var type:String;// = "enemy"
public var effect:String;
public var hasPowerup:Boolean;// = false
public var riqochet:Boolean;// = false
public var onScreen:Boolean;// = false
public var markForDeletion:Boolean;// = false
public var objectName:String;// = "meteor"
public var value:int;// = 100
public function Meteor(_arg1:Number){
var _local4:int;
super();
this.speedBonus = _arg1;
gotoAndStop(int(((Math.random() * 6) + 1)));
var _local2:GlowFilter = new GlowFilter(0x99CC00, 1, 9, 9, 4, 3);
filters = new Array(_local2);
y = -150;
x = ((Math.random() * 550) + 25);
var _local3:* = ((Math.random() * 550) + 25);
radian = Math.atan2((y - 550), (x - _local3));
if (Math.random() < 0.5){
hasPowerup = true;
_local4 = Math.floor((Math.random() * 7));
switch (_local4){
case 0:
effect = "speedup";
break;
case 1:
effect = "laserspeed";
break;
case 2:
effect = "multilaser";
break;
case 3:
effect = "superbomb";
break;
case 4:
effect = "ricochet";
break;
case 5:
effect = "health";
break;
case 6:
effect = "cure";
break;
};
};
}
public function run(){
speed = (speed + accel);
y = (y - (Math.sin(radian) * (speed + speedBonus)));
x = (x - (Math.cos(radian) * (speed + speedBonus)));
rotation++;
if ((y - (height / 2)) > 0){
onScreen = true;
};
}
}
}//package
Section 56
//Missile (Missile)
package {
import flash.display.*;
public class Missile extends MovieClip {
private var speed:Number;
public var targetObject:MovieClip;
public var type:String;
public var damage:int;
public var bulletType:String;// = "missile"
public var ailment:String;// = "none"
public var markForDeletion:Boolean;// = false
public var objectName:String;// = "missile"
public function Missile(_arg1:MovieClip, _arg2:String){
speed = 4;
this.type = _arg2;
this.targetObject = _arg1;
damage = 15;
}
public function run(){
var _local4:Number;
var _local1:int = (x - targetObject.x);
var _local2:int = (y - targetObject.y);
var _local3:int = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
_local4 = Math.atan2(_local2, _local1);
var _local5:int = ((_local4 * 180) / Math.PI);
rotation = _local5;
x = (x - (Math.cos(_local4) * speed));
y = (y - (Math.sin(_local4) * speed));
}
}
}//package
Section 57
//MultiLaser (MultiLaser)
package {
import flash.display.*;
public dynamic class MultiLaser extends MovieClip {
public function MultiLaser(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 58
//Preloader (Preloader)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.net.*;
public class Preloader extends MovieClip {
public var loader_txt:TextField;
public var bar_mc:MovieClip;
private var address:String;// = "http://www.gameshok.com/index.php?action=branded"
public function Preloader(){
addFrameScript(0, frame1);
addEventListener(Event.ADDED_TO_STAGE, added);
addEventListener(MouseEvent.CLICK, goToURL);
}
private function added(_arg1:Event){
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loading);
this.loaderInfo.addEventListener(Event.COMPLETE, loaded);
addFrameScript(150, dispatch);
buttonMode = true;
}
private function loading(_arg1:ProgressEvent){
var _local2:Number = _arg1.bytesTotal;
var _local3:Number = _arg1.bytesLoaded;
bar_mc.width = Math.floor(((_local3 / _local2) * 400));
loader_txt.text = (((((Math.floor((_local3 / 1000)) + "kb/") + Math.floor((_local2 / 1000))) + " kb- ") + Math.floor(((_local3 / _local2) * 100))) + "%");
}
private function loaded(_arg1:Event){
gotoAndPlay("finished");
}
private function dispatch(){
dispatchEvent(new Event("COMPLETED"));
}
private function goToURL(_arg1:MouseEvent){
var _local2:URLRequest = new URLRequest(address);
navigateToURL(_local2, address);
}
function frame1(){
stop();
}
}
}//package
Section 59
//Psyblast (Psyblast)
package {
import flash.display.*;
public dynamic class Psyblast extends MovieClip {
}
}//package
Section 60
//Ricochet (Ricochet)
package {
import flash.display.*;
public dynamic class Ricochet extends MovieClip {
public function Ricochet(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 61
//Snowball (Snowball)
package {
import flash.display.*;
public dynamic class Snowball extends MovieClip {
}
}//package
Section 62
//Space (Space)
package {
import flash.display.*;
public dynamic class Space extends MovieClip {
public function Space(){
addFrameScript(104, frame105);
}
function frame105(){
stop();
parent.removeChild(this);
}
}
}//package
Section 63
//SpeedUp (SpeedUp)
package {
import flash.display.*;
public dynamic class SpeedUp extends MovieClip {
public function SpeedUp(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 64
//Star (Star)
package {
import flash.display.*;
public dynamic class Star extends MovieClip {
}
}//package
Section 65
//SubmitScreen (SubmitScreen)
package {
import flash.display.*;
import flash.text.*;
public class SubmitScreen extends MovieClip {
public var menu_btn:SimpleButton;
public var title_txt:TextField;
public var total_txt:TextField;
public var stats_txt:TextField;
public function SubmitScreen(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int){
if (_arg4 > 1){
title_txt.text = (("Super Zero Cancelled After " + _arg4) + " Episodes!");
} else {
title_txt.text = (("Super Zero Cancelled After " + _arg4) + " Episode!");
};
if (_arg4 > 1){
stats_txt.text = (("After appearing in " + _arg4) + " episodes, The Super Zero has been cancelled. Author Ryan Trimble says The League of Super Villains ultimately loses. How anti-climactic.");
} else {
stats_txt.text = (("After appearing in over " + _arg4) + " episode, The Super Zero has been cancelled. Author Ryan Trimble says The League of Super Villains ultimately loses. How anti-climactic.");
};
stats_txt.text = (((((stats_txt.text + "\n\nCivilians Saved: ") + _arg2) + " (+") + (_arg2 * 750)) + ")");
stats_txt.text = (((((stats_txt.text + "\nCivilians Lost: ") + _arg3) + " (-") + (_arg3 * 750)) + ")");
stats_txt.text = (((((stats_txt.text + "\nEpisodes Survived: ") + _arg4) + " (+") + (_arg4 * 1000)) + ")");
stats_txt.text = (((((stats_txt.text + "\nMeteors Destroyed: ") + _arg7) + " (+") + (_arg7 * 100)) + ")");
stats_txt.text = (((((stats_txt.text + "\n\n") + _arg5) + " villains were harmed in the making of this comic book (+") + _arg6) + ")");
total_txt.text = ("Total Score: " + _arg1);
}
}
}//package
Section 66
//SuperBomb (SuperBomb)
package {
import flash.display.*;
public dynamic class SuperBomb extends MovieClip {
public function SuperBomb(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
parent.removeChild(this);
}
}
}//package
Section 67
//Villain (Villain)
package {
import flash.display.*;
import flash.filters.*;
public class Villain extends VillainBase {
public var rest_mc:MovieClip;
public var objectName:String;// = "villain"
public function Villain(_arg1:Game, _arg2:Hero){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 13, frame14, 14, frame15, 50, frame51);
super(_arg1, _arg2);
bulletGraphic = new Star();
var _local3:GlowFilter = new GlowFilter(0xFFFFFF, 1, 5, 5, 5, 3);
bulletGraphic.filters = new Array(_local3);
}
function frame1(){
stop();
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "fire";
}
function frame14(){
gotoAndStop("rest");
}
function frame15(){
currState = "secondary";
}
function frame51(){
gotoAndStop("rest");
}
}
}//package
Section 68
//Villain10 (Villain10)
package {
import flash.events.*;
import flash.filters.*;
public class Villain10 extends VillainBase {
public var objectName:String;// = "villain10"
public function Villain10(_arg1:Game, _arg2:Hero){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 12, frame13, 13, frame14, 53, frame54);
super(_arg1, _arg2);
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
speed = 6;
bulletSpeed = 7;
value = 250;
}
override public function fire(){
var _local1:GlowFilter;
var _local2:Number;
var _local3:Bullet;
if ((((((Math.random() < randFire)) && (canFire))) && (!((currState == "secondary"))))){
canFire = false;
if (currState != "fire"){
gotoAndPlay("fire");
};
bulletGraphic = new Snowball();
_local1 = new GlowFilter(52479, 1, 5, 5, 5, 3);
bulletGraphic.filters = new Array(_local1);
_local2 = Math.atan2((y - playerRef.y), (x - playerRef.x));
_local3 = new Bullet(bulletSpeed, damage, bulletGraphic, "enemy", _local2, "freeze");
_local3.canRicochet = false;
_local3.x = x;
_local3.y = y;
gameRef.addBullet(_local3);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
};
}
override public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function changePosition(_arg1:TimerEvent){
changeTarget();
positionTimer.delay = getRandomTime(1000, 2000);
positionTimer.start();
positionTimer.addEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
doHover = false;
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "fire";
}
function frame13(){
gotoAndStop("rest");
}
function frame14(){
currState = "secondary";
}
function frame54(){
gotoAndStop("rest");
}
}
}//package
Section 69
//Villain2 (Villain2)
package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
public class Villain2 extends VillainBase {
private var circling:Boolean;// = false
private var circleSpeed:Number;
public var objectName:String;// = "villain2"
public function Villain2(_arg1:Game, _arg2:Hero){
circleSpeed = ((Math.random() * 2) + 1);
addFrameScript(0, frame1, 1, frame2, 14, frame15);
super(_arg1, _arg2);
speed = 2.5;
bulletSpeed = 15;
scaleX = 1;
bulletGraphic = new MovieClip();
bulletGraphic.graphics.lineStyle(2, 0xFF0000);
bulletGraphic.graphics.lineTo(20, 0);
var _local3:GlowFilter = new GlowFilter(0xFF0000, 1, 4, 4, 2, 3);
bulletGraphic.filters = new Array(_local3);
}
override public function init(_arg1:Event){
stop();
}
override public function run(){
move();
if (((circling) && (onScreen))){
super.fire();
};
}
override public function move(){
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local1:int = (x - playerRef.x);
var _local2:int = (y - playerRef.y);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
_local4 = Math.atan2(_local2, _local1);
_local5 = ((_local4 * 180) / Math.PI);
rotation = _local5;
if (_local3 > range){
circling = false;
_local6 = (Math.cos(_local4) * speed);
_local7 = (Math.sin(_local4) * speed);
y = (y - _local7);
x = (x - _local6);
} else {
circling = true;
rotation = _local5;
_local5 = (_local5 + circleSpeed);
_local4 = ((Math.PI / 180) * _local5);
x = (playerRef.x + (range * Math.cos(_local4)));
y = (playerRef.y + (range * Math.sin(_local4)));
};
if (((((((((x + (width / 2)) > 0)) && (((x - (width / 2)) < 600)))) && (((y - (height / 2)) > 0)))) && (((y + (height / 2)) < 400)))){
onScreen = true;
};
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fire";
}
function frame15(){
gotoAndStop("rest");
}
}
}//package
Section 70
//Villain3 (Villain3)
package {
import flash.events.*;
public class Villain3 extends VillainBase {
public var objectName:String;// = "villain3"
public function Villain3(_arg1:Game, _arg2:Hero){
addFrameScript(0, frame1, 1, frame2, 14, frame15);
super(_arg1, _arg2);
speed = 2.5;
range = 40;
damage = 20;
}
override public function init(_arg1:Event){
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function run(){
move();
}
override public function move(){
var _local6:Number;
var _local7:Number;
var _local1:int = (x - playerRef.x);
var _local2:int = (y - playerRef.y);
var _local3:int = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
var _local4:Number = Math.atan2(_local2, _local1);
var _local5:Number = ((_local4 * 180) / Math.PI);
rotation = _local5;
if (_local3 > range){
_local6 = (Math.cos(_local4) * speed);
_local7 = (Math.sin(_local4) * speed);
y = (y - _local7);
x = (x - _local6);
} else {
gameRef.explode(this);
markForDeletion = true;
};
if (((((((((x + (width / 2)) > 0)) && (((x - (width / 2)) < 600)))) && (((y - (height / 2)) > 0)))) && (((y + (height / 2)) < 400)))){
onScreen = true;
};
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "secondary";
}
function frame15(){
gotoAndStop("rest");
}
}
}//package
Section 71
//Villain4 (Villain4)
package {
import flash.events.*;
import flash.utils.*;
import flash.filters.*;
public class Villain4 extends VillainBase {
private var teleporting:Boolean;// = false
private var teleportTimer:Timer;
public var objectName:String;// = "villain4"
public function Villain4(_arg1:Game, _arg2:Hero){
teleportTimer = new Timer(0, 1);
addFrameScript(0, frame1, 1, frame2, 30, frame31, 60, frame61, 61, frame62, 104, frame105);
super(_arg1, _arg2);
doHover = true;
onScreen = true;
value = 200;
bulletSpeed = 15;
scaleX = 1;
bulletGraphic = new Psyblast();
var _local3:GlowFilter = new GlowFilter(0xFF00FF, 1, 5, 5, 5, 3);
bulletGraphic.filters = new Array(_local3);
var _local4:* = _arg1.ms.isPlaying("teleport.wav");
if (!_local4){
_arg1.ms.playSound("teleport.wav");
};
changeTarget();
x = target.x;
y = target.y;
}
override public function init(_arg1:Event){
teleportIn();
secondaryAnimationTimer.delay = getRandomTime(2000, 4000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(2000, 4000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function run(){
if (((!(teleporting)) && (onScreen))){
fire();
};
hover();
}
private function teleportOut(_arg1:TimerEvent){
gotoAndPlay("teleportOut");
teleporting = true;
}
private function teleportIn(){
var _local1:* = gameRef.ms.isPlaying("teleport.wav");
if (!_local1){
gameRef.ms.playSound("teleport.wav");
};
gotoAndPlay("teleportIn");
changeTarget();
x = target.x;
y = target.y;
if (x < playerRef.x){
scaleX = 1;
} else {
scaleX = -1;
};
}
private function endTeleport(){
setTeleportTimer();
teleporting = false;
}
private function setTeleportTimer(){
teleportTimer.delay = getRandomTime(2000, 4000);
teleportTimer.start();
teleportTimer.addEventListener(TimerEvent.TIMER_COMPLETE, teleportOut);
}
override public function pause(){
stop();
teleportTimer.stop();
super.pause();
}
override public function resume(){
play();
teleportTimer.start();
super.resume();
}
override public function garbageCollection(){
gotoAndStop(1);
teleportTimer.stop();
teleportTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, teleportOut);
delayTimer.stop();
delayTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
positionTimer.stop();
positionTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
secondaryAnimationTimer.stop();
secondaryAnimationTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "teleporting";
}
function frame31(){
stop();
teleportIn();
}
function frame61(){
endTeleport();
gotoAndStop("rest");
}
function frame62(){
currState = "secondary";
}
function frame105(){
gotoAndStop("rest");
}
}
}//package
Section 72
//Villain5 (Villain5)
package {
import flash.events.*;
public class Villain5 extends VillainBase {
private var numMissiles:int;// = 3
private var numFired:int;// = 0
private var fallSpeed:int;// = 2
public var objectName:String;// = "villain5"
public function Villain5(_arg1:Game, _arg2:Hero){
addFrameScript(12, frame13);
super(_arg1, _arg2);
speed = 8;
damage = 15;
delayTimer.delay = 750;
hitsToKill = 2;
value = 1000;
if (x > _arg2.x){
scaleX = -1;
};
gotoAndStop("move");
}
override public function init(_arg1:Event){
}
override public function run(){
move();
if (onScreen){
fire();
};
}
override public function move(){
if (hitsTaken == 0){
x = (x + (speed * scaleX));
if ((((x <= -50)) || ((x > 650)))){
markForDeletion = true;
};
} else {
y = (y + fallSpeed);
if (currentFrame < 2){
gotoAndPlay("parachute");
};
if (y > 450){
markForDeletion = true;
};
};
if (((((((((x + (width / 2)) > 0)) && (((x - (width / 2)) < 600)))) && (((y - (height / 2)) > 0)))) && (((y + (height / 2)) < 400)))){
onScreen = true;
};
}
override public function fire(){
var _local1:Missile;
if (((((canFire) && ((numFired < numMissiles)))) && ((hitsTaken == 0)))){
numFired++;
canFire = false;
_local1 = new Missile(playerRef, "enemy");
_local1.y = (y + 10);
_local1.x = x;
gameRef.addBullet(_local1);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, super.resetFire);
};
}
function frame13(){
stop();
}
}
}//package
Section 73
//Villain6 (Villain6)
package {
import flash.events.*;
import flash.utils.*;
import flash.filters.*;
public class Villain6 extends VillainBase {
private var mainDelay:Timer;
private var shotsFired:int;// = 0
private var maxShots:int;// = 3
public var objectName:String;// = "villain6"
public function Villain6(_arg1:Game, _arg2:Hero){
mainDelay = new Timer(5000, 1);
addFrameScript(0, frame1, 1, frame2, 2, frame3, 13, frame14, 14, frame15, 65, frame66);
super(_arg1, _arg2);
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
speed = 6;
damage = 5;
bulletSpeed = 10;
delayTimer.delay = 1000;
value = 500;
}
override public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function fire(){
var _local1:GlowFilter;
var _local2:Number;
var _local3:int;
var _local4:Bullet;
if (((canFire) && (!((currState == "secondary"))))){
if (shotsFired < maxShots){
shotsFired++;
canFire = false;
if (currState != "fire"){
gotoAndPlay("fire");
};
bulletGraphic = new Fireball();
_local1 = new GlowFilter(0, 1, 2, 2, 5, 3);
bulletGraphic.filters = new Array(_local1);
_local2 = Math.atan2((y - playerRef.y), (x - playerRef.x));
_local3 = ((_local2 * 180) / Math.PI);
_local4 = new Bullet(bulletSpeed, damage, bulletGraphic, "enemy", _local2, "burn");
_local4.canRicochet = false;
_local4.x = x;
_local4.y = y;
_local4.rotation = _local3;
gameRef.addBullet(_local4);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
} else {
mainDelay.addEventListener(TimerEvent.TIMER_COMPLETE, resetShots);
mainDelay.start();
};
};
}
private function resetShots(_arg1:TimerEvent){
shotsFired = 0;
}
override public function garbageCollection(){
delayTimer.stop();
delayTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
positionTimer.stop();
positionTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
mainDelay.stop();
mainDelay.removeEventListener(TimerEvent.TIMER_COMPLETE, resetShots);
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "fire";
}
function frame14(){
gotoAndStop("rest");
}
function frame15(){
currState = "secondary";
}
function frame66(){
gotoAndStop("rest");
}
}
}//package
Section 74
//Villain7 (Villain7)
package {
import flash.events.*;
import flash.filters.*;
public class Villain7 extends VillainBase {
public var objectName:String;// = "villain7"
public function Villain7(_arg1:Game, _arg2:Hero){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 14, frame15, 15, frame16, 75, frame76);
super(_arg1, _arg2);
speed = 5;
bulletSpeed = 10;
value = 250;
}
override public function fire(){
var _local1:GlowFilter;
var _local2:Number;
var _local3:Bullet;
if ((((((Math.random() < randFire)) && (canFire))) && (!((currState == "secondary"))))){
canFire = false;
if (currState != "fire"){
gotoAndPlay("fire");
};
bulletGraphic = new Dart();
_local1 = new GlowFilter(0x33CC00, 1, 5, 5, 5, 3);
bulletGraphic.filters = new Array(_local1);
_local2 = Math.atan2((y - playerRef.y), (x - playerRef.x));
_local3 = new Bullet(bulletSpeed, damage, bulletGraphic, "enemy", _local2, "poison");
_local3.canRicochet = false;
_local3.x = x;
_local3.y = y;
gameRef.addBullet(_local3);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
};
}
override public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function changePosition(_arg1:TimerEvent){
changeTarget();
positionTimer.delay = getRandomTime(1000, 3000);
positionTimer.start();
positionTimer.addEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
doHover = false;
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "fire";
}
function frame15(){
gotoAndStop("rest");
}
function frame16(){
currState = "secondary";
}
function frame76(){
gotoAndStop("rest");
}
}
}//package
Section 75
//Villain8 (Villain8)
package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
public class Villain8 extends VillainBase {
public var objectName:String;// = "villain8"
public function Villain8(_arg1:Game, _arg2:Hero){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 22, frame23, 23, frame24, 88, frame89);
super(_arg1, _arg2);
speed = 7;
bulletSpeed = 10;
damage = 2;
value = 500;
bulletGraphic = new MovieClip();
bulletGraphic.graphics.lineStyle(2, 0xFF3300);
bulletGraphic.graphics.lineTo(20, 0);
var _local3:GlowFilter = new GlowFilter(0xFF3300, 1, 4, 4, 2, 3);
bulletGraphic.filters = new Array(_local3);
}
override public function fire(){
var _local1:Number;
var _local2:Bullet;
if ((((((Math.random() < randFire)) && (canFire))) && (!((currState == "secondary"))))){
canFire = false;
if (currState != "fire"){
gotoAndPlay("fire");
};
_local1 = Math.atan2((y - playerRef.y), (x - playerRef.x));
_local2 = new Bullet(bulletSpeed, damage, bulletGraphic, "enemy", _local1, "mixup");
_local2.x = x;
_local2.y = y;
gameRef.addBullet(_local2);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
};
}
override public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function changePosition(_arg1:TimerEvent){
changeTarget();
positionTimer.delay = getRandomTime(500, 2000);
positionTimer.start();
positionTimer.addEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
doHover = false;
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "fire";
}
function frame23(){
gotoAndStop("rest");
}
function frame24(){
currState = "secondary";
}
function frame89(){
gotoAndStop("rest");
}
}
}//package
Section 76
//Villain9 (Villain9)
package {
import flash.events.*;
import flash.filters.*;
public class Villain9 extends VillainBase {
public var objectName:String;// = "villain9"
public function Villain9(_arg1:Game, _arg2:Hero){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 15, frame16, 16, frame17, 56, frame57);
super(_arg1, _arg2);
speed = 5;
bulletSpeed = 8;
damage = 0;
value = 500;
}
override public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(3000, 2000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
override public function fire(){
var _local1:GlowFilter;
var _local2:Number;
var _local3:Bullet;
if ((((((Math.random() < randFire)) && (canFire))) && (!((currState == "secondary"))))){
canFire = false;
if (currState != "fire"){
gotoAndPlay("fire");
};
bulletGraphic = new EMP();
_local1 = new GlowFilter(26265, 1, 5, 5, 5, 3);
bulletGraphic.filters = new Array(_local1);
_local2 = Math.atan2((y - playerRef.y), (x - playerRef.x));
_local3 = new Bullet(bulletSpeed, damage, bulletGraphic, "enemy", _local2, "emp");
_local3.x = x;
_local3.y = y;
gameRef.addBullet(_local3);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
};
}
function frame1(){
currState = "rest";
}
function frame2(){
currState = "fly";
}
function frame3(){
currState = "fire";
}
function frame16(){
gotoAndStop("rest");
}
function frame17(){
currState = "secondary";
}
function frame57(){
gotoAndStop("rest");
}
}
}//package
Section 77
//VillainBase (VillainBase)
package {
import flash.geom.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class VillainBase extends MovieClip {
public var playerRef:Hero;
public var speed:int;// = 4
public var range:int;// = 100
public var damage:int;// = 5
public var targetAngle:int;
public var positionTimer:Timer;
public var target:Point;
public var hoverDistance:Number;// = 0
public var hoverDirection:int;// = 1
public var doHover:Boolean;// = false
public var secondaryAnimationTimer:Timer;
public var randFire:Number;// = 0.05
public var canFire:Boolean;// = true
public var firing:Boolean;// = false
public var bulletGraphic:MovieClip;
public var bulletSpeed:Number;// = 8
public var delayTimer:Timer;
public var gameRef:Game;
public var type:String;// = "enemy"
public var riqochet:Boolean;// = false
public var markForDeletion:Boolean;// = false
public var currState:String;// = "rest"
public var hitsToKill:int;// = 1
public var hitsTaken:int;// = 0
public var value:int;// = 100
public var onScreen:Boolean;// = false
public var restMC:MovieClip;
public var fireMC:MovieClip;
public function VillainBase(_arg1:Game, _arg2:Hero){
positionTimer = new Timer(getRandomTime(2000, 5000), 1);
secondaryAnimationTimer = new Timer(getRandomTime(4000, 3000), 1);
delayTimer = new Timer(3000, 1);
super();
var _local3:Number = ((Math.random() * 300) + 50);
var _local4:int = Math.round(Math.random());
if (_local4 == 0){
x = -25;
} else {
x = 620;
};
y = _local3;
this.playerRef = _arg2;
this.gameRef = _arg1;
addEventListener(Event.ADDED_TO_STAGE, init);
changeTarget();
}
public function init(_arg1:Event){
stop();
positionTimer.start();
positionTimer.addEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
public function run(){
move();
hover();
if (onScreen){
fire();
};
}
public function move(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
if (currState != "secondary"){
_local1 = (x - target.x);
_local2 = (y - target.y);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
_local4 = Math.atan2(_local2, _local1);
_local5 = ((_local4 * 180) / Math.PI);
if (x <= playerRef.x){
scaleX = 1;
} else {
scaleX = -1;
};
if ((((_local3 >= speed)) && (!(doHover)))){
if (((!((currState == "fly"))) && (!((currState == "fire"))))){
gotoAndStop("fly");
};
_local6 = (Math.cos(_local4) * speed);
_local7 = (Math.sin(_local4) * speed);
y = (y - _local7);
x = (x - _local6);
} else {
doHover = true;
if (((!((currState == "rest"))) && (!((currState == "fire"))))){
hoverDistance = 0;
gotoAndStop("rest");
};
if (((((((((x + (width / 2)) > 0)) && (((x - (width / 2)) < 600)))) && (((y - (height / 2)) > 0)))) && (((y + (height / 2)) < 400)))){
onScreen = true;
};
};
};
}
public function hover(){
if (doHover){
if (hoverDirection == 1){
if (hoverDistance < 10){
hoverDistance = (hoverDistance + 0.5);
y = (y - 0.5);
} else {
hoverDirection = -1;
};
} else {
if (hoverDistance > 0){
hoverDistance = (hoverDistance - 0.5);
y = (y + 0.5);
} else {
hoverDirection = 1;
};
};
};
}
public function changePosition(_arg1:TimerEvent){
changeTarget();
positionTimer.delay = getRandomTime(2000, 5000);
positionTimer.start();
positionTimer.addEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
doHover = false;
}
public function showAnimation(_arg1:TimerEvent){
if (currState == "rest"){
gotoAndPlay("secondary");
};
secondaryAnimationTimer.delay = getRandomTime(4000, 3000);
secondaryAnimationTimer.start();
secondaryAnimationTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
public function changeTarget(){
var _local1:int = ((Math.random() * 550) + 25);
var _local2:int = ((Math.random() * 300) + 25);
target = new Point(_local1, _local2);
}
public function getRandomTime(_arg1:int, _arg2:int):int{
var _local3:int = ((Math.random() * _arg2) + _arg1);
return (_local3);
}
public function fire(){
var _local1:Number;
var _local2:Bullet;
if ((((((Math.random() < randFire)) && (canFire))) && (!((currState == "secondary"))))){
canFire = false;
if (currState != "fire"){
gotoAndPlay("fire");
};
_local1 = Math.atan2((y - playerRef.y), (x - playerRef.x));
_local2 = new Bullet(bulletSpeed, damage, bulletGraphic, "enemy", _local1);
_local2.x = x;
_local2.y = y;
gameRef.addBullet(_local2);
delayTimer.start();
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
};
}
public function resetFire(_arg1:TimerEvent){
canFire = true;
}
public function garbageCollection(){
delayTimer.stop();
delayTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, resetFire);
positionTimer.stop();
positionTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, changePosition);
secondaryAnimationTimer.stop();
secondaryAnimationTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, showAnimation);
}
public function pause(){
delayTimer.stop();
positionTimer.stop();
secondaryAnimationTimer.stop();
}
public function resume(){
delayTimer.start();
positionTimer.start();
secondaryAnimationTimer.start();
}
}
}//package
Section 78
//Zap (Zap)
package {
import flash.display.*;
public dynamic class Zap extends MovieClip {
public function Zap(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
parent.removeChild(this);
}
}
}//package