Section 1
//bg_day_new_2 (bloodysunset_fla.bg_day_new_2)
package bloodysunset_fla {
import flash.display.*;
public dynamic class bg_day_new_2 extends MovieClip {
public function bg_day_new_2(){
addFrameScript(0, frame1, 199, frame200);
}
function frame200(){
stop();
}
function frame1(){
}
}
}//package bloodysunset_fla
Section 2
//bg_Title_18 (bloodysunset_fla.bg_Title_18)
package bloodysunset_fla {
import flash.display.*;
public dynamic class bg_Title_18 extends MovieClip {
public var tmove:title_move;
public function bg_Title_18(){
addFrameScript(199, frame200);
}
function frame200(){
stop();
}
}
}//package bloodysunset_fla
Section 3
//bg_Title2_17 (bloodysunset_fla.bg_Title2_17)
package bloodysunset_fla {
import flash.display.*;
public dynamic class bg_Title2_17 extends MovieClip {
public var bg:MovieClip;
}
}//package bloodysunset_fla
Section 4
//CREDITS_MOVE_45 (bloodysunset_fla.CREDITS_MOVE_45)
package bloodysunset_fla {
import flash.display.*;
public dynamic class CREDITS_MOVE_45 extends MovieClip {
public function CREDITS_MOVE_45(){
addFrameScript(149, frame150);
}
function frame150(){
stop();
}
}
}//package bloodysunset_fla
Section 5
//MainTimeline (bloodysunset_fla.MainTimeline)
package bloodysunset_fla {
import flash.display.*;
import flash.events.*;
import src.Wrapper.*;
import CPMStar.*;
import flash.text.*;
public dynamic class MainTimeline extends MovieClip {
public const FPS:int = 40;
public var ad:DisplayObject;
public var _mochiads_game_id:String;
public var splash:MovieClip;
public var playB:b_utton_startcopy;
public var adBox:CPMStar;
public var CPMStarContentSpotID:String;
public var perc:TextField;
public function MainTimeline(){
addFrameScript(0, frame1, 1, frame2, 2, frame3);
}
public function gotoGame(){
addChild(new Wrapper());
}
public function isonKongregate():Boolean{
var _local1:Array;
var _local2:String;
var _local3:Number;
var _local4:Number;
var _local5:String;
var _local6:Number;
var _local7:Number;
var _local8:Boolean;
var _local9:uint;
_local1 = ["", "kongregate.com"];
_local2 = stage.loaderInfo.url;
_local3 = (_local2.indexOf("://") + 3);
_local4 = _local2.indexOf("/", _local3);
_local5 = _local2.substring(_local3, _local4);
_local6 = (_local5.lastIndexOf(".") - 1);
_local7 = (_local5.lastIndexOf(".", _local6) + 1);
_local5 = _local5.substring(_local7, _local5.length);
trace(_local5);
_local8 = false;
_local9 = 0;
while (((!(_local8)) && ((_local9 < _local1.length)))) {
_local8 = ((_local8) || ((_local5 == _local1[_local9])));
_local9++;
};
return (!(_local8));
}
public function onMouseClicked(_arg1:Event){
gotoAndPlay(2);
}
function frame3(){
stop();
if (((!(Wrapper.TEST)) && (!(Wrapper.FROSMO_V)))){
splash = new _splash();
addChild(splash);
splash.x = 0;
splash.y = 0;
splash.width = 600;
splash.height = 510;
splash.addEventListener(Event.ENTER_FRAME, onFrame);
splash.addEventListener(MouseEvent.CLICK, onClick);
stage.frameRate = 18;
} else {
gotoGame();
};
}
function frame1(){
CPMStarContentSpotID = Wrapper.CPM_STAR_CODE;
_mochiads_game_id = Wrapper.MOCHIADS_STRING;
stop();
if (Wrapper.MOCHI_V){
gotoAndPlay(2);
} else {
this.addEventListener(Event.ENTER_FRAME, PL_LOADING);
};
if (isonKongregate() == false){
removeChild(adBox);
} else {
ad = new AdLoader(CPMStarContentSpotID);
adBox.addChild(ad);
};
playB.visible = false;
}
function frame2(){
}
public function onFrame(_arg1:Event){
trace("ON FRAME");
if (splash.currentFrame == splash.totalFrames){
stage.frameRate = FPS;
splash.removeEventListener(MouseEvent.CLICK, onClick);
splash.removeEventListener(Event.ENTER_FRAME, onFrame);
removeChild(splash);
gotoGame();
};
}
public function PL_LOADING(_arg1:Event):void{
var _local2:Number;
_local2 = (this.loaderInfo.bytesLoaded / this.loaderInfo.bytesTotal);
perc.text = (("" + Math.round((_local2 * 100))) + "%");
if (_local2 == 1){
removeEventListener(Event.ENTER_FRAME, PL_LOADING);
playB.visible = true;
playB.addEventListener(MouseEvent.CLICK, onMouseClicked);
};
}
public function onClick(_arg1:MouseEvent){
Wrapper.GET_CLICK_URL(0);
}
}
}//package bloodysunset_fla
Section 6
//screen_credits_38 (bloodysunset_fla.screen_credits_38)
package bloodysunset_fla {
import flash.display.*;
public dynamic class screen_credits_38 extends MovieClip {
public function screen_credits_38(){
addFrameScript(30, frame31);
}
function frame31(){
stop();
}
}
}//package bloodysunset_fla
Section 7
//MD5 (com.adobe.crypto.MD5)
package com.adobe.crypto {
import flash.utils.*;
import com.adobe.utils.*;
public class MD5 {
public static var digest:ByteArray;
private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function f(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg2) | (~(_arg1) & _arg3)));
}
private static function g(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg3) | (_arg2 & ~(_arg3))));
}
private static function h(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 ^ _arg2) ^ _arg3));
}
private static function i(_arg1:int, _arg2:int, _arg3:int):int{
return ((_arg2 ^ (_arg1 | ~(_arg3))));
}
private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{
var _local9:int;
_local9 = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8);
return ((IntUtil.rol(_local9, _arg7) + _arg3));
}
private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
public static function hash(_arg1:String):String{
var _local2:ByteArray;
_local2 = new ByteArray();
_local2.writeUTFBytes(_arg1);
return (hashBinary(_local2));
}
private static function createBlocks(_arg1:ByteArray):Array{
var _local2:Array;
var _local3:int;
var _local4:int;
var _local5:int;
_local2 = new Array();
_local3 = (_arg1.length * 8);
_local4 = 0xFF;
_local5 = 0;
while (_local5 < _local3) {
_local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32)));
_local5 = (_local5 + 8);
};
_local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32)));
_local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3;
return (_local2);
}
public static function hashBinary(_arg1:ByteArray):String{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:Array;
var _local11:int;
var _local12:int;
_local2 = 1732584193;
_local3 = -271733879;
_local4 = -1732584194;
_local5 = 271733878;
_local10 = createBlocks(_arg1);
_local11 = _local10.length;
_local12 = 0;
while (_local12 < _local11) {
_local6 = _local2;
_local7 = _local3;
_local8 = _local4;
_local9 = _local5;
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551);
_local2 = (_local2 + _local6);
_local3 = (_local3 + _local7);
_local4 = (_local4 + _local8);
_local5 = (_local5 + _local9);
_local12 = (_local12 + 16);
};
digest = new ByteArray();
digest.writeInt(_local2);
digest.writeInt(_local3);
digest.writeInt(_local4);
digest.writeInt(_local5);
digest.position = 0;
return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5)));
}
private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
public static function hashBytes(_arg1:ByteArray):String{
return (hashBinary(_arg1));
}
}
}//package com.adobe.crypto
Section 8
//IntUtil (com.adobe.utils.IntUtil)
package com.adobe.utils {
public class IntUtil {
private static var hexChars:String = "0123456789abcdef";
public static function toHex(_arg1:int, _arg2:Boolean=false):String{
var _local3:String;
var _local4:int;
var _local5:int;
_local3 = "";
if (_arg2){
_local4 = 0;
while (_local4 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15))));
_local4++;
};
} else {
_local5 = 0;
while (_local5 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15))));
_local5++;
};
};
return (_local3);
}
public static function ror(_arg1:int, _arg2:int):uint{
var _local3:int;
_local3 = (32 - _arg2);
return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3))));
}
public static function rol(_arg1:int, _arg2:int):int{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
}
}//package com.adobe.utils
Section 9
//MindJoltAPI (com.mindjolt.api.as3.MindJoltAPI)
package com.mindjolt.api.as3 {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class MindJoltAPI extends MovieClip {
private var dispatcher:CustomDispatcher;
public static var service:Object;
public function MindJoltAPI(){
dispatcher = new CustomDispatcher();
dispatcher.doAction(1, 100);
dispatcher.addEventListener(_slot2.ACTION, createRoot);
}
private function createRoot(_arg1:Event):void{
if (root != null){
_arg1.currentTarget.removeEventListener(_slot2.ACTION, createRoot);
init();
};
}
private function init():void{
var _local1:Object;
var _local2:String;
var _local3:Loader;
_local1 = Object(parent.root).loaderInfo.parameters;
_local2 = "";
if (((!((_local1.mjPath == null))) && (isDomainAllowed()))){
_local2 = _local1.mjPath;
} else {
_local2 = "http://static.mindjolt.com/api/as3/scoreapi_as3_local.swf";
};
_local3 = new Loader();
_local3.contentLoaderInfo.addEventListener(Event.COMPLETE, loadFinished);
_local3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadFailed);
_local3.load(new URLRequest(_local2));
addChild(_local3);
}
private function loadFinished(_arg1:Event):void{
service = _arg1.currentTarget.content.service;
service.connect();
trace("[MindJoltAPI] service loaded");
}
private function isDomainAllowed():Boolean{
var _local1:String;
var _local2:LocalConnection;
var _local3:String;
_local1 = ".mindjolt.com";
_local2 = new LocalConnection();
_local3 = _local2.domain;
if (_local3.indexOf(_local1) == (_local3.length - _local1.length)){
return (true);
};
return (false);
}
private function loadFailed(_arg1:IOErrorEvent):void{
trace("[MindJoltAPI] unable to load service");
}
}
}//package com.mindjolt.api.as3
import flash.events.*;
import flash.utils.*;
class CustomDispatcher extends EventDispatcher {
public static var ACTION:String = "action";
private function CustomDispatcher(){
}
public function doAction(_arg1:Number, _arg2:Number):void{
var myTimer:Timer;
var propAction:Function;
var delay = _arg1;
var repeat = _arg2;
propAction = function (_arg1:TimerEvent):void{
dispatchEvent(new Event(_slot2.ACTION));
};
myTimer = new Timer(delay, repeat);
myTimer.addEventListener(TimerEvent.TIMER, propAction);
myTimer.start();
}
}
Section 10
//SoundManager (com.reintroducing.sound.SoundManager)
package com.reintroducing.sound {
import flash.media.*;
import flash.utils.*;
import gs.*;
import flash.net.*;
public class SoundManager {
private var _soundsDict:Dictionary;
private var _sounds:Array;
private static var _instance:SoundManager;
private static var _allowInstance:Boolean;
public function SoundManager(){
this._soundsDict = new Dictionary(true);
this._sounds = new Array();
if (!SoundManager._allowInstance){
throw (new Error("Error: Use SoundManager.getInstance() instead of the new keyword."));
};
}
public function fadeSound(_arg1:String, _arg2:Number=0, _arg3:Number=1):void{
var _local4:SoundChannel;
_local4 = this._soundsDict[_arg1].channel;
TweenLite.to(_local4, _arg3, {volume:_arg2});
}
public function get sounds():Array{
return (this._sounds);
}
public function getSoundDuration(_arg1:String):Number{
return (this._soundsDict[_arg1].sound.length);
}
public function setSoundVolume(_arg1:String, _arg2:Number):void{
var _local3:Object;
var _local4:SoundTransform;
_local3 = this._soundsDict[_arg1];
_local4 = _local3.channel.soundTransform;
_local4.volume = _arg2;
_local3.channel.soundTransform = _local4;
}
public function getSoundVolume(_arg1:String):Number{
return (this._soundsDict[_arg1].channel.soundTransform.volume);
}
public function addLibrarySound(_arg1, _arg2:String):Boolean{
var _local3:int;
var _local4:Object;
var _local5:Sound;
_local3 = 0;
while (_local3 < this._sounds.length) {
if (this._sounds[_local3].name == _arg2){
return (false);
};
_local3++;
};
_local4 = new Object();
_local5 = new (_arg1);
_local4.name = _arg2;
_local4.sound = _local5;
_local4.channel = new SoundChannel();
_local4.position = 0;
_local4.paused = true;
_local4.volume = 1;
_local4.startTime = 0;
_local4.loops = 0;
_local4.pausedByAll = false;
this._soundsDict[_arg2] = _local4;
this._sounds.push(_local4);
return (true);
}
public function toString():String{
return (getQualifiedClassName(this));
}
public function isSoundPaused(_arg1:String):Boolean{
return (this._soundsDict[_arg1].paused);
}
public function removeAllSounds():void{
var _local1:int;
_local1 = 0;
while (_local1 < this._sounds.length) {
this._sounds[_local1] = null;
_local1++;
};
this._sounds = new Array();
this._soundsDict = new Dictionary(true);
}
public function getSoundPosition(_arg1:String):Number{
return (this._soundsDict[_arg1].channel.position);
}
public function stopAllSounds(_arg1:Boolean=true):void{
var _local2:int;
var _local3:String;
_local2 = 0;
while (_local2 < this._sounds.length) {
_local3 = this._sounds[_local2].name;
if (_arg1){
if (!this._soundsDict[_local3].paused){
this._soundsDict[_local3].pausedByAll = true;
this.stopSound(_local3);
};
} else {
this.stopSound(_local3);
};
_local2++;
};
}
public function removeSound(_arg1:String):void{
var _local2:int;
_local2 = 0;
while (_local2 < this._sounds.length) {
if (this._sounds[_local2].name == _arg1){
this._sounds[_local2] = null;
this._sounds.splice(_local2, 1);
};
_local2++;
};
delete this._soundsDict[_arg1];
}
public function muteAllSounds():void{
var _local1:int;
var _local2:String;
_local1 = 0;
while (_local1 < this._sounds.length) {
_local2 = this._sounds[_local1].name;
this.setSoundVolume(_local2, 0);
_local1++;
};
}
public function stopSound(_arg1:String):void{
var _local2:Object;
_local2 = this._soundsDict[_arg1];
_local2.paused = true;
_local2.channel.stop();
_local2.position = _local2.channel.position;
}
public function pauseAllSounds(_arg1:Boolean=true):void{
var _local2:int;
var _local3:String;
_local2 = 0;
while (_local2 < this._sounds.length) {
_local3 = this._sounds[_local2].name;
if (_arg1){
if (!this._soundsDict[_local3].paused){
this._soundsDict[_local3].pausedByAll = true;
this.pauseSound(_local3);
};
} else {
this.pauseSound(_local3);
};
_local2++;
};
}
public function playAllSounds(_arg1:Boolean=false):void{
var _local2:int;
var _local3:String;
_local2 = 0;
while (_local2 < this._sounds.length) {
_local3 = this._sounds[_local2].name;
if (_arg1){
if (this._soundsDict[_local3].pausedByAll){
this._soundsDict[_local3].pausedByAll = false;
this.playSound(_local3);
};
} else {
this.playSound(_local3);
};
_local2++;
};
}
public function addExternalSound(_arg1:String, _arg2:String, _arg3:Number=1000, _arg4:Boolean=false):Boolean{
var _local5:int;
var _local6:Object;
var _local7:Sound;
_local5 = 0;
while (_local5 < this._sounds.length) {
if (this._sounds[_local5].name == _arg2){
return (false);
};
_local5++;
};
_local6 = new Object();
_local7 = new Sound(new URLRequest(_arg1), new SoundLoaderContext(_arg3, _arg4));
_local6.name = _arg2;
_local6.sound = _local7;
_local6.channel = new SoundChannel();
_local6.position = 0;
_local6.paused = true;
_local6.volume = 1;
_local6.startTime = 0;
_local6.loops = 0;
_local6.pausedByAll = false;
this._soundsDict[_arg2] = _local6;
this._sounds.push(_local6);
return (true);
}
public function unmuteAllSounds():void{
var _local1:int;
var _local2:String;
var _local3:Object;
var _local4:SoundTransform;
_local1 = 0;
while (_local1 < this._sounds.length) {
_local2 = this._sounds[_local1].name;
_local3 = this._soundsDict[_local2];
_local4 = _local3.channel.soundTransform;
_local4.volume = _local3.volume;
_local3.channel.soundTransform = _local4;
_local1++;
};
}
public function isSoundPausedByAll(_arg1:String):Boolean{
return (this._soundsDict[_arg1].pausedByAll);
}
public function getSoundObject(_arg1:String):Sound{
return (this._soundsDict[_arg1].sound);
}
public function pauseSound(_arg1:String):void{
var _local2:Object;
_local2 = this._soundsDict[_arg1];
_local2.paused = true;
_local2.position = _local2.channel.position;
_local2.channel.stop();
}
public function playSound(_arg1:String, _arg2:Number=1, _arg3:Number=0, _arg4:int=0):void{
var _local5:Object;
_local5 = this._soundsDict[_arg1];
_local5.volume = _arg2;
_local5.startTime = _arg3;
_local5.loops = _arg4;
if (_local5.paused){
_local5.channel = _local5.sound.play(_local5.position, _local5.loops, new SoundTransform(_local5.volume));
} else {
_local5.channel = _local5.sound.play(_arg3, _local5.loops, new SoundTransform(_local5.volume));
};
_local5.paused = false;
}
public static function getInstance():SoundManager{
if (SoundManager._instance == null){
SoundManager._allowInstance = true;
SoundManager._instance = new (SoundManager);
SoundManager._allowInstance = false;
};
return (SoundManager._instance);
}
}
}//package com.reintroducing.sound
Section 11
//GameTracker (FGL.GameTracker.GameTracker)
package FGL.GameTracker {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.external.*;
public class GameTracker extends EventDispatcher {
protected var _responder:Responder;// = null
protected var _conn:NetConnection;// = null
protected var _inLevel:Boolean;// = false
protected var _serviceName:String;// = ""
protected var _passphrase:String;// = ""
protected var _sessionID:uint;
protected var _isEnabled:Boolean;// = false
protected var _serverVersionMinor:int;// = 0
protected var _serverVersionMajor:int;// = 0
protected var _timer:Timer;// = null
protected var _currentGame:int;// = 0
protected var _inGame:Boolean;// = false
protected var _hostUrl:String;// = ""
protected var _currentLevel:int;// = 0
protected var _msg_queue:Array;
public static const GAMETRACKER_SERVER_ERROR:String = "gametracker_server_error";
private static const TIMER_DELAY:int = 15000;
public static const GAMETRACKER_CODING_ERROR:String = "gametracker_coding_error";
public function GameTracker(){
_timer = null;
_currentGame = 0;
_currentLevel = 0;
_inGame = false;
_inLevel = false;
_msg_queue = new Array();
_conn = null;
_responder = null;
_isEnabled = false;
_serverVersionMajor = 0;
_serverVersionMinor = 0;
_hostUrl = "";
_serviceName = "";
_passphrase = "";
super();
setGlobalConfig();
if (_isEnabled){
_responder = new Responder(onSuccess, onNetworkingError);
_conn = new NetConnection();
_conn.connect(_hostUrl);
_timer = new Timer(TIMER_DELAY);
_timer.addEventListener("timer", onTimer);
_timer.start();
_sessionID = Math.floor((new Date().getTime() / 1000));
addToMsgQueue("begin_app", null, 0, null, null);
};
}
public function checkpoint(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (!_inGame){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "checkpoint() called before startGame() was called!"));
} else {
addToMsgQueue("checkpoint", null, _arg1, _arg2, _arg3);
};
}
protected function onNetworkingError(_arg1):void{
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_SERVER_ERROR, "Networking error"));
}
protected function onSuccess(_arg1):void{
if (_arg1.toString() != ""){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_SERVER_ERROR, _arg1.toString()));
};
}
protected function onTimer(_arg1:TimerEvent):void{
submitMsgQueue();
}
protected function addToMsgQueue(_arg1:String, _arg2:String, _arg3:Number, _arg4:String, _arg5:String):void{
var _local6:Object;
if (_isEnabled){
_local6 = new Object();
_local6["action"] = _arg1;
_local6["custom_action"] = _arg2;
_local6["session_id"] = _sessionID;
_local6["game_idx"] = _currentGame;
_local6["level"] = _currentLevel;
_local6["score"] = _arg3;
_local6["game_state"] = _arg4;
_local6["time"] = Math.floor((new Date().getTime() / 1000));
_local6["msg"] = _arg5;
_msg_queue.push(_local6);
};
}
public function isEnabled():Boolean{
return (_isEnabled);
}
public function beginGame(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (_inGame){
endGame(_arg1, _arg2, "AUTO:(this game automatically ended when new game was started)");
};
_currentGame++;
_inGame = true;
addToMsgQueue("begin_game", null, _arg1, _arg2, _arg3);
}
protected function submitMsgQueue():void{
var _local1:Object;
if (((_isEnabled) && ((_msg_queue.length > 0)))){
_local1 = new Object();
_local1["actions"] = _msg_queue;
_local1["identifier"] = _passphrase;
_conn.call(_serviceName, _responder, _local1);
_msg_queue = new Array();
};
}
protected function setGlobalConfig():void{
var ret:Array;
_isEnabled = false;
_serverVersionMajor = 0;
_serverVersionMinor = 0;
_hostUrl = "";
_serviceName = "";
_passphrase = "";
try {
if (ExternalInterface.available){
ret = ExternalInterface.call("get_gametracker_info");
_serverVersionMajor = ret[0];
_serverVersionMinor = ret[1];
_hostUrl = ret[2];
_serviceName = ret[3];
_passphrase = ret[4];
_isEnabled = (_serverVersionMajor == 1);
};
} catch(e) {
};
}
public function customMsg(_arg1:String, _arg2:Number=0, _arg3:String=null, _arg4:String=null):void{
addToMsgQueue("custom", _arg1, _arg2, _arg3, _arg4);
}
public function beginLevel(_arg1:int, _arg2:Number=0, _arg3:String=null, _arg4:String=null):void{
if (!_inGame){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "beginLevel() called before beginGame() was called!"));
} else {
if (_inLevel){
endLevel(_arg2, _arg3, "AUTO:(this level automatically ended when new level was started)");
};
_currentLevel = _arg1;
_inLevel = true;
addToMsgQueue("begin_level", null, _arg2, _arg3, _arg4);
};
}
public function alert(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
addToMsgQueue("alert", null, _arg1, _arg2, _arg3);
submitMsgQueue();
}
public function endLevel(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (!_inLevel){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "endLevel() called before beginLevel() was called!"));
} else {
_inLevel = false;
addToMsgQueue("end_level", null, _arg1, _arg2, _arg3);
};
}
public function endGame(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (!_inGame){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "endGame() called before beginGame() was called!"));
} else {
if (_inLevel){
endLevel(_arg1, _arg2, "AUTO:(this level automatically ended when game ended)");
};
addToMsgQueue("end_game", null, _arg1, _arg2, _arg3);
_inGame = false;
submitMsgQueue();
};
}
}
}//package FGL.GameTracker
Section 12
//GameTrackerErrorEvent (FGL.GameTracker.GameTrackerErrorEvent)
package FGL.GameTracker {
import flash.events.*;
public class GameTrackerErrorEvent extends Event {
public var _msg:String;
public function GameTrackerErrorEvent(_arg1:String, _arg2:String){
_msg = _arg2;
super(_arg1, false, false);
}
public function get msg():String{
return (_msg);
}
}
}//package FGL.GameTracker
Section 13
//Api (frosmo.Api)
package frosmo {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class Api {
private static const STATE_SCORE_SUBMITTED:int = 5;
private static const LOADER_TIMEOUT:int = 10000;
private static const DEFAULT_GATEWAY_URL:String = (DEFAULT_SERVER + "secure_gateway_2.00.swf");
public static const DEFAULT_SERVER:String = "http://frosmo.com/frosmo_api/";
private static const STATE_UNCONNECTED:int = 0;
private static const CALL_CHANNEL_NAME:String = "_esn_public_channel";
private static const STATE_LOADING_GATEWAY:int = 1;
private static const STATE_CALLING_GATEWAY:int = 2;
private static const CIRC_STORE_DELAY:Number = 500;
private static const STATE_WAITING_PARAMETERS:int = 3;
private static const CIRC_BUFFER_SIZE:Number = 20;
private static const STATE_WAITING_SUBMIT_SCORE:int = 4;
private static var _container:DisplayObject;
private static var _state:int = 0;
private static var _check:Object = {values:{}, seed:0, diff:0, checksum:0, tampered:false};
private static var _version:String = "2.00";
private static var _params:Object = {gameParameters:String, exitUrl:String, rngSeed:String};
private static var _gatewayUrl:String = DEFAULT_GATEWAY_URL;
private static var _gameClientId:String;
private static var _loader:Loader;
private static var _handlers:Object = {ErrorHandler:Function, ReadyHandler:Function};
private static var _fps:Object = {CounterMC:MovieClip, EventEnterFrame:Function, TimeData:Array};
private static var _mcGateway:MovieClip;
private static var _sessionId:String = "0";
private static var _seed:uint = 0;
private static var _loaderTimeout:Timer;
private static var _comm:Object = {callChannel:LocalConnection, SendChannel:LocalConnection, SendChannelName:String, ReceiveChannel:LocalConnection};
private static var _currentRequestArgs:Object;
public static function get gameParameters():String{
return (_params.gameParameters);
}
private static function send(_arg1:String, _arg2:Object, _arg3:Object=null, _arg4:Object=null):void{
var _local5:Object;
if (_currentRequestArgs != null){
showError("Can't run multiple request at once");
return;
};
_currentRequestArgs = {methodName:_arg1, args:_arg2, callbackObject:_arg3, callbackMethod:_arg4};
_local5 = {methodName:_arg1, args:_arg2, callbackID:1};
_comm.SendChannel.send(_comm.SendChannelName, "onReceive", _local5);
}
public static function get game_client_id():String{
return (_gameClientId);
}
private static function showError(_arg1:String):void{
trace(_arg1);
if (_handlers.ErrorHandler != null){
_handlers.ErrorHandler(_arg1);
};
}
private static function addFPSCounter():void{
var ind:Number;
var lastTime:Number;
var circleBuffer:Array;
var lastCircTime:Number;
var circSum:Number;
var i:Number;
ind = 0;
lastTime = 0;
_fps.CounterMC = new MovieClip();
_container.stage.addChild(_fps.CounterMC);
circleBuffer = new Array(CIRC_BUFFER_SIZE);
lastCircTime = 0;
circSum = 0;
_fps.TimeData = new Array();
i = 0;
while (i < CIRC_BUFFER_SIZE) {
circleBuffer[i] = 0;
i = (i + 1);
};
_fps.EventEnterFrame = function (_arg1:Event):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = getRealTime();
_local3 = (_local2 - lastTime);
if ((((((lastTime == 0)) || ((_local3 < 0)))) || ((_local3 > 1000)))){
lastTime = _local2;
lastCircTime = _local2;
return;
};
circSum = (circSum - circleBuffer[(ind % CIRC_BUFFER_SIZE)]);
circleBuffer[(ind % CIRC_BUFFER_SIZE)] = _local3;
circSum = (circSum + _local3);
if ((_local2 - lastCircTime) >= CIRC_STORE_DELAY){
_local4 = int((circSum / Math.min(CIRC_BUFFER_SIZE, (ind + 1))));
_fps.TimeData.push(_local4);
lastCircTime = _local2;
};
lastTime = _local2;
ind++;
};
_fps.CounterMC.addEventListener(Event.ENTER_FRAME, _fps.EventEnterFrame);
}
private static function initParameters(_arg1:String):void{
var _local2:Object;
_gameClientId = _arg1;
_local2 = _container.root.loaderInfo.parameters;
if (_local2){
if (_local2["esn_session_id"]){
_sessionId = _local2["esn_session_id"];
};
if (_local2["esn_url_v2"]){
_gatewayUrl = _local2["esn_url_v2"];
};
};
}
private static function disconnect():void{
_state = STATE_UNCONNECTED;
try {
_comm.ReceiveChannel.close();
_comm.SendChannel.close();
} catch(error:Error) {
};
if (_loaderTimeout != null){
try {
_loaderTimeout.stop();
} catch(error:Error) {
};
};
}
public static function getRealTime():Number{
var _local1:Date;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local1 = new Date();
_local2 = _local1.getHours();
_local3 = _local1.getMinutes();
_local4 = _local1.getSeconds();
_local5 = _local1.getMilliseconds();
return ((_local5 + (1000 * ((_local4 + (60 * _local3)) + (3600 * _local2)))));
}
private static function eventOpenCallChannel(_arg1:Event):void{
var event = _arg1;
setState(STATE_CALLING_GATEWAY);
_comm.callChannel = new LocalConnection();
_comm.callChannel.allowDomain("*");
_comm.callChannel.client = _mcGateway;
_comm.callChannel.client.handshake = receiveCallChannelHandshake;
try {
_comm.callChannel.connect(CALL_CHANNEL_NAME);
} catch(error:Error) {
showError("Call channel already in use");
disconnect();
};
}
private static function openCommChannel(_arg1:String):void{
setState(STATE_WAITING_PARAMETERS);
_comm.SendChannel = new LocalConnection();
_comm.SendChannelName = (_arg1 + "_fromgame");
_comm.ReceiveChannel = new LocalConnection();
_comm.ReceiveChannel.allowDomain("*");
_comm.ReceiveChannel.client = _mcGateway;
_comm.ReceiveChannel.client.onReceive = handleMessageFromGateway;
_comm.ReceiveChannel.connect(_arg1);
send("connect_to_session", [_sessionId, _gameClientId]);
}
private static function receiveCallChannelHandshake(_arg1:Object):void{
_comm.callChannel.close();
_loaderTimeout.stop();
openCommChannel(_arg1.private_channel_name);
}
public static function get rngSeed():String{
return (_params.rngSeed);
}
public static function random(_arg1:int=-1):Number{
var _local2:Number;
if (_seed == 0){
trace("*** FROSMO API ERROR *** :: frosmo.api.random called before connect. RETURNING ZERO");
return (0);
};
_seed = ((_seed * 16807) % 2147483647);
_local2 = (_seed / 2147483647);
if (_arg1 == -1){
return (_local2);
};
return (uint((_arg1 * _local2)));
}
public static function getNumber(_arg1:String):Number{
return ((_check.values[_arg1] - _check.diff));
}
public static function setNumber(_arg1:String, _arg2:Number):void{
var _local3:Object;
var _local4:Object;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local3 = _check;
_local4 = _local3.values;
if (_local4[_arg1] == (_arg2 + _local3.diff)){
return;
};
if (isFinite(_local4[_arg1])){
_local3.checksum = (_local3.checksum - _local4[_arg1]);
};
_local4[_arg1] = (_arg2 + _local3.diff);
_local3.checksum = (_local3.checksum + _local4[_arg1]);
if (_local3.seed == 0){
_local3.seed = ((Math.random() * 2) ^ 31);
} else {
_local3.seed = ((_local3.seed * 16807) % 2147483647);
};
if ((_local3.seed % 10) == 0){
_local5 = (_local3.seed & (1023 - 0x0200));
_local6 = 0;
_local7 = 0;
_local3.diff = (_local3.diff + _local5);
for (_arg1 in _local4) {
_local6 = (_local6 + _local4[_arg1]);
_local4[_arg1] = (_local4[_arg1] + _local5);
_local7++;
};
if (_local6 != _local3.checksum){
_local3.tampered = true;
};
_local3.checksum = (_local6 + (_local7 * _local5));
};
}
private static function handleResponseToConnectToSession(_arg1:Object):void{
setState(STATE_WAITING_SUBMIT_SCORE);
_params.gameParameters = _arg1[0];
_params.exitUrl = _arg1[1];
_params.rngSeed = _arg1[2];
_seed = int(_params.rngSeed);
if (_handlers.ReadyHandler != null){
_handlers.ReadyHandler();
};
addFPSCounter();
}
public static function get version():String{
return (_version);
}
public static function submitScore(_arg1:String, _arg2:Object, _arg3:Object):void{
var _local4:Object;
if (_state != STATE_WAITING_SUBMIT_SCORE){
showError("Can't submit score until receiving parameters from EsnServer");
return;
};
_fps.CounterMC.removeEventListener(Event.ENTER_FRAME, _fps.EventEnterFrame);
_local4 = [_sessionId, _gameClientId, _arg1, getFpsData(), (_check.tampered) ? "1" : "0"];
send("set_score", _local4, _arg2, _arg3);
}
public static function initLevel(_arg1:uint):void{
_seed = (uint(_params.rngSeed) + _arg1);
}
private static function setState(_arg1:int):void{
if (_state != (_arg1 - 1)){
showError("invalid state");
};
_state = _arg1;
}
public static function connect(_arg1:String, _arg2:DisplayObject, _arg3:Function, _arg4:Function):void{
if (_arg3 != null){
_handlers.ErrorHandler = _arg3;
};
if (_arg4 != null){
_handlers.ReadyHandler = _arg4;
};
if ((_arg2 is DisplayObject)){
if (_state == STATE_UNCONNECTED){
_container = _arg2;
initParameters(_arg1);
loadGateway();
};
} else {
showError("ERROR::EsnServices requires a Sprite, Movieclip or instance of the stage.");
};
}
private static function handleResponseToSetScore(_arg1:Object):void{
trace((("score: " + _arg1[2]) + " submitted succesfully"));
}
public static function get exitUrl():String{
return (_params.exitUrl);
}
private static function handleMessageFromGateway(_arg1:Object):void{
var _local2:Object;
var _local3:Object;
if (_arg1.errorID != null){
showError(_arg1.description);
_currentRequestArgs = null;
return;
};
switch (_currentRequestArgs.methodName){
case "set_score":
handleResponseToSetScore(_currentRequestArgs.args);
break;
case "connect_to_session":
handleResponseToConnectToSession(_arg1.args);
break;
};
_local2 = _currentRequestArgs.callbackMethod;
_local3 = _currentRequestArgs.callbackObject;
if (_local2 != null){
_local2.apply(_local3, _arg1.args);
};
_currentRequestArgs = null;
}
public static function get session_id():String{
return (_sessionId);
}
private static function getFpsData():String{
var _local1:String;
if (_fps.TimeData == null){
return ("");
};
_local1 = _fps.TimeData.join(",");
return (_local1);
}
private static function loadGateway():void{
var eventFailure:Function;
setState(STATE_LOADING_GATEWAY);
_mcGateway = new MovieClip();
eventFailure = function (_arg1:Event):void{
showError("Loading gateway took too mach time");
disconnect();
};
_loaderTimeout = new Timer(LOADER_TIMEOUT, 1);
_loaderTimeout.addEventListener(TimerEvent.TIMER, eventFailure);
_loaderTimeout.start();
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, eventFailure);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventOpenCallChannel);
_loader.load(new URLRequest(_gatewayUrl));
}
}
}//package frosmo
Section 14
//AutoAlphaPlugin (gs.plugins.AutoAlphaPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class AutoAlphaPlugin extends TweenPlugin {
protected var _tweenVisible:Boolean;
protected var _tween:TweenLite;
protected var _visible:Boolean;
protected var _target:Object;
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function AutoAlphaPlugin(){
this.propName = "autoAlpha";
this.overwriteProps = ["alpha", "visible"];
this.onComplete = onCompleteTween;
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
if (((!((_target.visible == true))) && (_tweenVisible))){
_target.visible = true;
};
}
public function onCompleteTween():void{
if (((((_tweenVisible) && (!((_tween.vars.runBackwards == true))))) && ((_tween.ease == _tween.vars.ease)))){
_target.visible = _visible;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_tween = _arg3;
_visible = Boolean(!((_arg2 == 0)));
_tweenVisible = true;
addTween(_arg1, "alpha", _arg1.alpha, _arg2, "alpha");
return (true);
}
override public function killProps(_arg1:Object):void{
super.killProps(_arg1);
_tweenVisible = !(Boolean(("visible" in _arg1)));
}
}
}//package gs.plugins
Section 15
//EndArrayPlugin (gs.plugins.EndArrayPlugin)
package gs.plugins {
import gs.*;
import gs.utils.tween.*;
public class EndArrayPlugin extends TweenPlugin {
protected var _info:Array;
protected var _a:Array;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function EndArrayPlugin(){
_info = [];
super();
this.propName = "endArray";
this.overwriteProps = ["endArray"];
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:ArrayTweenInfo;
var _local4:Number;
var _local5:int;
if (this.round){
_local2 = (_info.length - 1);
while (_local2 > -1) {
_local3 = _info[_local2];
_local4 = (_local3.start + (_local3.change * _arg1));
_local5 = ((_local4)<0) ? -1 : 1;
_a[_local3.index] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4);
_local2--;
};
} else {
_local2 = (_info.length - 1);
while (_local2 > -1) {
_local3 = _info[_local2];
_a[_local3.index] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
};
}
public function init(_arg1:Array, _arg2:Array):void{
var _local3:int;
_a = _arg1;
_local3 = (_arg2.length - 1);
while (_local3 > -1) {
if (((!((_arg1[_local3] == _arg2[_local3]))) && (!((_arg1[_local3] == null))))){
_info[_info.length] = new ArrayTweenInfo(_local3, _a[_local3], (_arg2[_local3] - _a[_local3]));
};
_local3--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){
return (false);
};
init((_arg1 as Array), _arg2);
return (true);
}
}
}//package gs.plugins
Section 16
//FramePlugin (gs.plugins.FramePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class FramePlugin extends TweenPlugin {
public var frame:int;
protected var _target:MovieClip;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function FramePlugin(){
this.propName = "frame";
this.overwriteProps = ["frame"];
this.round = true;
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_target.gotoAndStop(this.frame);
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((!((_arg1 is MovieClip))) || (isNaN(_arg2)))){
return (false);
};
_target = (_arg1 as MovieClip);
this.frame = _target.currentFrame;
addTween(this, "frame", this.frame, _arg2, "frame");
return (true);
}
}
}//package gs.plugins
Section 17
//RemoveTintPlugin (gs.plugins.RemoveTintPlugin)
package gs.plugins {
public class RemoveTintPlugin extends TintPlugin {
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function RemoveTintPlugin(){
this.propName = "removeTint";
}
}
}//package gs.plugins
Section 18
//TintPlugin (gs.plugins.TintPlugin)
package gs.plugins {
import flash.display.*;
import flash.geom.*;
import gs.*;
import gs.utils.tween.*;
public class TintPlugin extends TweenPlugin {
protected var _ct:ColorTransform;
protected var _ignoreAlpha:Boolean;
protected var _target:DisplayObject;
public static const VERSION:Number = 1.1;
public static const API:Number = 1;
protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"];
public function TintPlugin(){
this.propName = "tint";
this.overwriteProps = ["tint"];
}
override public function set changeFactor(_arg1:Number):void{
var _local2:ColorTransform;
updateTweens(_arg1);
if (_ignoreAlpha){
_local2 = _target.transform.colorTransform;
_ct.alphaMultiplier = _local2.alphaMultiplier;
_ct.alphaOffset = _local2.alphaOffset;
};
_target.transform.colorTransform = _ct;
}
public function init(_arg1:DisplayObject, _arg2:ColorTransform):void{
var _local3:int;
var _local4:String;
_target = _arg1;
_ct = _target.transform.colorTransform;
_local3 = (_props.length - 1);
while (_local3 > -1) {
_local4 = _props[_local3];
if (_ct[_local4] != _arg2[_local4]){
_tweens[_tweens.length] = new TweenInfo(_ct, _local4, _ct[_local4], (_arg2[_local4] - _ct[_local4]), "tint", false);
};
_local3--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
var _local4:ColorTransform;
if (!(_arg1 is DisplayObject)){
return (false);
};
_local4 = new ColorTransform();
if (((!((_arg2 == null))) && (!((_arg3.exposedVars.removeTint == true))))){
_local4.color = uint(_arg2);
};
_ignoreAlpha = true;
init((_arg1 as DisplayObject), _local4);
return (true);
}
}
}//package gs.plugins
Section 19
//TweenPlugin (gs.plugins.TweenPlugin)
package gs.plugins {
import gs.*;
import gs.utils.tween.*;
public class TweenPlugin {
public var overwriteProps:Array;
protected var _tweens:Array;
public var round:Boolean;
public var onComplete:Function;
public var propName:String;
protected var _changeFactor:Number;// = 0
public static const VERSION:Number = 1.03;
public static const API:Number = 1;
public function TweenPlugin(){
_tweens = [];
_changeFactor = 0;
super();
}
protected function updateTweens(_arg1:Number):void{
var _local2:int;
var _local3:TweenInfo;
var _local4:Number;
var _local5:int;
if (this.round){
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local4 = (_local3.start + (_local3.change * _arg1));
_local5 = ((_local4)<0) ? -1 : 1;
_local3.target[_local3.property] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4);
_local2--;
};
} else {
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
};
}
public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_changeFactor = _arg1;
}
protected function addTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String=null):void{
var _local6:Number;
if (_arg4 != null){
_local6 = ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4);
if (_local6 != 0){
_tweens[_tweens.length] = new TweenInfo(_arg1, _arg2, _arg3, _local6, ((_arg5) || (_arg2)), false);
};
};
}
public function killProps(_arg1:Object):void{
var _local2:int;
_local2 = (this.overwriteProps.length - 1);
while (_local2 > -1) {
if ((this.overwriteProps[_local2] in _arg1)){
this.overwriteProps.splice(_local2, 1);
};
_local2--;
};
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
if ((_tweens[_local2].name in _arg1)){
_tweens.splice(_local2, 1);
};
_local2--;
};
}
public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
addTween(_arg1, this.propName, _arg1[this.propName], _arg2, this.propName);
return (true);
}
public function get changeFactor():Number{
return (_changeFactor);
}
public static function activate(_arg1:Array):Boolean{
var _local2:int;
var _local3:Object;
_local2 = (_arg1.length - 1);
while (_local2 > -1) {
_local3 = new (_arg1[_local2]);
TweenLite.plugins[_local3.propName] = _arg1[_local2];
_local2--;
};
return (true);
}
}
}//package gs.plugins
Section 20
//VisiblePlugin (gs.plugins.VisiblePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class VisiblePlugin extends TweenPlugin {
protected var _tween:TweenLite;
protected var _visible:Boolean;
protected var _target:Object;
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function VisiblePlugin(){
this.propName = "visible";
this.overwriteProps = ["visible"];
this.onComplete = onCompleteTween;
}
override public function set changeFactor(_arg1:Number):void{
if (_target.visible != true){
_target.visible = true;
};
}
public function onCompleteTween():void{
if (((!((_tween.vars.runBackwards == true))) && ((_tween.ease == _tween.vars.ease)))){
_target.visible = _visible;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_tween = _arg3;
_visible = Boolean(_arg2);
return (true);
}
}
}//package gs.plugins
Section 21
//VolumePlugin (gs.plugins.VolumePlugin)
package gs.plugins {
import flash.display.*;
import flash.media.*;
import gs.*;
public class VolumePlugin extends TweenPlugin {
protected var _st:SoundTransform;
protected var _target:Object;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function VolumePlugin(){
this.propName = "volume";
this.overwriteProps = ["volume"];
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_target.soundTransform = _st;
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((isNaN(_arg2)) || (!(_arg1.hasOwnProperty("soundTransform"))))){
return (false);
};
_target = _arg1;
_st = _target.soundTransform;
addTween(_st, "volume", _st.volume, _arg2, "volume");
return (true);
}
}
}//package gs.plugins
Section 22
//ArrayTweenInfo (gs.utils.tween.ArrayTweenInfo)
package gs.utils.tween {
public class ArrayTweenInfo {
public var change:Number;
public var index:uint;
public var start:Number;
public function ArrayTweenInfo(_arg1:uint, _arg2:Number, _arg3:Number){
this.index = _arg1;
this.start = _arg2;
this.change = _arg3;
}
}
}//package gs.utils.tween
Section 23
//TweenInfo (gs.utils.tween.TweenInfo)
package gs.utils.tween {
public class TweenInfo {
public var start:Number;
public var name:String;
public var change:Number;
public var target:Object;
public var property:String;
public var isPlugin:Boolean;
public function TweenInfo(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean){
this.target = _arg1;
this.property = _arg2;
this.start = _arg3;
this.change = _arg4;
this.name = _arg5;
this.isPlugin = _arg6;
}
}
}//package gs.utils.tween
Section 24
//TweenLite (gs.TweenLite)
package gs {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import gs.utils.tween.*;
import gs.plugins.*;
public class TweenLite {
public var delay:Number;
protected var _hasUpdate:Boolean;
protected var _hasPlugins:Boolean;
public var started:Boolean;
public var initted:Boolean;
public var active:Boolean;
public var startTime:Number;
public var target:Object;
public var duration:Number;
public var gc:Boolean;
public var vars:Object;
public var ease:Function;
public var tweens:Array;
public var exposedVars:Object;
public var combinedTimeScale:Number;
public var initTime:Number;
public static const version:Number = 10.092;
private static var _timer:Timer = new Timer(2000);
public static var defaultEase:Function = TweenLite.easeOut;
public static var plugins:Object = {};
public static var currentTime:uint;
public static var masterList:Dictionary = new Dictionary(false);
protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, persist:1, renderOnStart:1, proxiedEase:1, easeParams:1, yoyo:1, loop:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, timeScale:1};
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
public static var timingSprite:Sprite = new Sprite();
public static var overwriteManager:Object;
private static var _tlInitted:Boolean;
public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){
var _local4:int;
super();
if (_arg1 == null){
return;
};
if (!_tlInitted){
TweenPlugin.activate([TintPlugin, RemoveTintPlugin, FramePlugin, AutoAlphaPlugin, VisiblePlugin, VolumePlugin, EndArrayPlugin]);
currentTime = getTimer();
timingSprite.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true);
if (overwriteManager == null){
overwriteManager = {mode:1, enabled:false};
};
_timer.addEventListener("timer", killGarbage, false, 0, true);
_timer.start();
_tlInitted = true;
};
this.vars = _arg3;
this.duration = ((_arg2) || (0.001));
this.delay = ((_arg3.delay) || (0));
this.combinedTimeScale = ((_arg3.timeScale) || (1));
this.active = Boolean((((_arg2 == 0)) && ((this.delay == 0))));
this.target = _arg1;
if (typeof(this.vars.ease) != "function"){
this.vars.ease = defaultEase;
};
if (this.vars.easeParams != null){
this.vars.proxiedEase = this.vars.ease;
this.vars.ease = easeProxy;
};
this.ease = this.vars.ease;
this.exposedVars = ((this.vars.isTV)==true) ? this.vars.exposedVars : this.vars;
this.tweens = [];
this.initTime = currentTime;
this.startTime = (this.initTime + (this.delay * 1000));
_local4 = ((((_arg3.overwrite == undefined)) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite);
if (((!((_arg1 in masterList))) || ((_local4 == 1)))){
masterList[_arg1] = [this];
} else {
masterList[_arg1].push(this);
};
if ((((((this.vars.runBackwards == true)) && (!((this.vars.renderOnStart == true))))) || (this.active))){
initTweenVals();
if (this.active){
render((this.startTime + 1));
} else {
render(this.startTime);
};
if (((((!((this.exposedVars.visible == null))) && ((this.vars.runBackwards == true)))) && ((this.target is DisplayObject)))){
this.target.visible = this.exposedVars.visible;
};
};
}
public function set enabled(_arg1:Boolean):void{
var _local2:Array;
var _local3:Boolean;
var _local4:int;
if (_arg1){
if (!(this.target in masterList)){
masterList[this.target] = [this];
} else {
_local2 = masterList[this.target];
_local4 = (_local2.length - 1);
while (_local4 > -1) {
if (_local2[_local4] == this){
_local3 = true;
break;
};
_local4--;
};
if (!_local3){
_local2[_local2.length] = this;
};
};
};
this.gc = (_arg1) ? false : true;
if (this.gc){
this.active = false;
} else {
this.active = this.started;
};
}
public function clear():void{
this.tweens = [];
this.vars = (this.exposedVars = {ease:this.vars.ease});
_hasUpdate = false;
}
public function render(_arg1:uint):void{
var _local2:Number;
var _local3:Number;
var _local4:TweenInfo;
var _local5:int;
_local2 = ((_arg1 - this.startTime) * 0.001);
if (_local2 >= this.duration){
_local2 = this.duration;
_local3 = ((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0;
} else {
_local3 = this.ease(_local2, 0, 1, this.duration);
};
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local4 = this.tweens[_local5];
_local4.target[_local4.property] = (_local4.start + (_local3 * _local4.change));
_local5--;
};
if (_hasUpdate){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local2 == this.duration){
complete(true);
};
}
public function activate():void{
this.started = (this.active = true);
if (!this.initted){
initTweenVals();
};
if (this.vars.onStart != null){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (this.duration == 0.001){
this.startTime = (this.startTime - 1);
};
}
public function get enabled():Boolean{
return ((this.gc) ? false : true);
}
public function initTweenVals():void{
var _local1:String;
var _local2:int;
var _local3:*;
var _local4:TweenInfo;
if (((!((this.exposedVars.timeScale == undefined))) && (this.target.hasOwnProperty("timeScale")))){
this.tweens[this.tweens.length] = new TweenInfo(this.target, "timeScale", this.target.timeScale, (this.exposedVars.timeScale - this.target.timeScale), "timeScale", false);
};
for (_local1 in this.exposedVars) {
if ((_local1 in _reservedProps)){
} else {
if ((_local1 in plugins)){
_local3 = new (plugins[_local1]);
if (_local3.onInitTween(this.target, this.exposedVars[_local1], this) == false){
this.tweens[this.tweens.length] = new TweenInfo(this.target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="number") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVars[_local1]), _local1, false);
} else {
this.tweens[this.tweens.length] = new TweenInfo(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true);
_hasPlugins = true;
};
} else {
this.tweens[this.tweens.length] = new TweenInfo(this.target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="number") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVars[_local1]), _local1, false);
};
};
};
if (this.vars.runBackwards == true){
_local2 = (this.tweens.length - 1);
while (_local2 > -1) {
_local4 = this.tweens[_local2];
this.tweens[_local2].start = (_local4.start + _local4.change);
_local4.change = -(_local4.change);
_local2--;
};
};
if (this.vars.onUpdate != null){
_hasUpdate = true;
};
if (((TweenLite.overwriteManager.enabled) && ((this.target in masterList)))){
overwriteManager.manageOverwrites(this, masterList[this.target]);
};
this.initted = true;
}
protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
public function killVars(_arg1:Object):void{
if (overwriteManager.enabled){
overwriteManager.killVars(_arg1, this.exposedVars, this.tweens);
};
}
public function complete(_arg1:Boolean=false):void{
var _local2:int;
if (!_arg1){
if (!this.initted){
initTweenVals();
};
this.startTime = (currentTime - ((this.duration * 1000) / this.combinedTimeScale));
render(currentTime);
return;
};
if (_hasPlugins){
_local2 = (this.tweens.length - 1);
while (_local2 > -1) {
if (((this.tweens[_local2].isPlugin) && (!((this.tweens[_local2].target.onComplete == null))))){
this.tweens[_local2].target.onComplete();
};
_local2--;
};
};
if (this.vars.persist != true){
this.enabled = false;
};
if (this.vars.onComplete != null){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
};
}
public static function updateAll(_arg1:Event=null):void{
var _local2:uint;
var _local3:Dictionary;
var _local4:Array;
var _local5:int;
var _local6:TweenLite;
_local2 = (currentTime = getTimer());
_local3 = masterList;
for each (_local4 in _local3) {
_local5 = (_local4.length - 1);
while (_local5 > -1) {
_local6 = _local4[_local5];
if (_local6.active){
_local6.render(_local2);
} else {
if (_local6.gc){
_local4.splice(_local5, 1);
} else {
if (_local2 >= _local6.startTime){
_local6.activate();
_local6.render(_local2);
};
};
};
_local5--;
};
};
}
public static function removeTween(_arg1:TweenLite, _arg2:Boolean=true):void{
if (_arg1 != null){
if (_arg2){
_arg1.clear();
};
_arg1.enabled = false;
};
}
public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{
var _local3:Array;
var _local4:int;
var _local5:TweenLite;
if (((!((_arg1 == null))) && ((_arg1 in masterList)))){
_local3 = masterList[_arg1];
_local4 = (_local3.length - 1);
while (_local4 > -1) {
_local5 = _local3[_local4];
if (((_arg2) && (!(_local5.gc)))){
_local5.complete(false);
};
_local5.clear();
_local4--;
};
delete masterList[_arg1];
};
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
_arg3.runBackwards = true;
return (new TweenLite(_arg1, _arg2, _arg3));
}
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
protected static function killGarbage(_arg1:TimerEvent):void{
var _local2:Dictionary;
var _local3:Object;
_local2 = masterList;
for (_local3 in _local2) {
if (_local2[_local3].length == 0){
delete _local2[_local3];
};
};
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null):TweenLite{
return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:0}));
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
return (new TweenLite(_arg1, _arg2, _arg3));
}
}
}//package gs
Section 25
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const NO_USER:String = "NoUser";
public static const IO_ERROR:String = "IOError";
public static const ITEM_NEW:String = "ItemNew";
public static const ITEM_OWNED:String = "ItemOwned";
public static const STORE_ITEMS:String = "StoreItems";
public static const ERROR:String = "Error";
public static const STORE_SHOW:String = "StoreShow";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static var _inventory:MochiInventory;
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 addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function get inventory():MochiInventory{
return (_inventory);
}
public static function showStore(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function requestFunding(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestFunding", _arg1);
}
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
_inventory = new MochiInventory();
});
addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
_inventory = null;
});
}
}//package mochi.as3
Section 26
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function reencode():void{
var _local1:uint;
_local1 = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function toString():String{
var _local1:String;
_local1 = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function get value():Number{
return (Number(this.toString()));
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String;
_local3 = _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 addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 27
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
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);
};
}
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 addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
}
}//package mochi.as3
Section 28
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public static function endPlay():void{
MochiServices.send("events_clearRoundID", null, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function trackEvent(_arg1:String, _arg2=null):void{
MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local3:Object;
var _local4:Object;
_local3 = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startPlay(_arg1:String="gameplay"):void{
MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null);
}
}
}//package mochi.as3
Section 29
//MochiInventory (mochi.as3.MochiInventory)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
public dynamic class MochiInventory extends Proxy {
private var _timer:Timer;
private var _names:Array;
private var _consumableProperties:Object;
private var _syncID:Number;
private var _storeSync:Object;
private var _outstandingID:Number;
private var _syncPending:Boolean;
public static const READY:String = "InvReady";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IoError";
private static const KEY_SALT:String = " syncMaint";
public static const WRITTEN:String = "InvWritten";
public static const NOT_READY:String = "InvNotReady";
public static const VALUE_ERROR:String = "InvValueError";
private static const CONSUMER_KEY:String = "MochiConsumables";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public function MochiInventory():void{
MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned);
MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut);
_storeSync = new Object();
_syncPending = false;
_outstandingID = 0;
_syncID = 0;
_timer = new Timer(1000);
_timer.addEventListener(TimerEvent.TIMER, sync);
_timer.start();
if (MochiSocial.loggedIn){
loggedIn();
} else {
loggedOut();
};
}
private function newItems(_arg1:Object):void{
if (!this[(_arg1.id + KEY_SALT)]){
this[(_arg1.id + KEY_SALT)] = 0;
};
if (!this[_arg1.id]){
this[_arg1.id] = 0;
};
this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count);
this[_arg1.id] = (this[_arg1.id] + _arg1.count);
if (((_arg1.privateProperties) && (_arg1.privateProperties.consumable))){
if (!this[_arg1.privateProperties.tag]){
this[_arg1.privateProperties.tag] = 0;
};
this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count));
};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (-1);
};
if (_consumableProperties[_arg1]){
return (MochiDigits(_consumableProperties[_arg1]).value);
};
return (undefined);
}
public function release():void{
MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (false);
};
if (_consumableProperties[_arg1] == undefined){
return (false);
};
return (true);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1));
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
var _local3:MochiDigits;
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return;
};
if (!(_arg2 is Number)){
triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2});
return;
};
if (_consumableProperties[_arg1]){
_local3 = MochiDigits(_consumableProperties[_arg1]);
if (_local3.value == _arg2){
return;
};
_local3.value = _arg2;
} else {
_names.push(_arg1);
_consumableProperties[_arg1] = new MochiDigits(_arg2);
};
_syncID++;
}
private function sync(_arg1:Event=null):void{
var _local2:Object;
var _local3:String;
if (((_syncPending) || ((_syncID == _outstandingID)))){
return;
};
_outstandingID = _syncID;
_local2 = {};
for (_local3 in _consumableProperties) {
_local2[_local3] = MochiDigits(_consumableProperties[_local3]).value;
};
MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag);
_syncPending = true;
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
return (_names[(_arg1 - 1)]);
}
private function loggedIn(_arg1:Object=null):void{
MochiUserData.get(CONSUMER_KEY, getConsumableBag);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{
if (!_consumableProperties[_arg1]){
return (false);
};
_names.splice(_names.indexOf(_arg1), 1);
delete _consumableProperties[_arg1];
return (true);
}
private function itemOwned(_arg1:Object):void{
_storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count};
}
private function putConsumableBag(_arg1:MochiUserData):void{
_syncPending = false;
if (_arg1.error){
triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
_outstandingID = -1;
};
triggerEvent(WRITTEN, {});
}
private function getConsumableBag(_arg1:MochiUserData):void{
var _local2:String;
var _local3:Number;
if (_arg1.error){
triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
return;
};
_consumableProperties = {};
_names = new Array();
if (_arg1.data){
for (_local2 in _arg1.data) {
_names.push(_local2);
_consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]);
};
};
for (_local2 in _storeSync) {
_local3 = _storeSync[_local2].count;
if (_consumableProperties[(_local2 + KEY_SALT)]){
_local3 = (_local3 - _consumableProperties[(_local2 + KEY_SALT)].value);
};
if (_local3 == 0){
} else {
newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties});
};
};
triggerEvent(READY, {});
}
private function loggedOut(_arg1:Object=null):void{
_consumableProperties = null;
}
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 addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
}
}//package mochi.as3
Section 30
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var 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)){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(n) != n){
trace((("WARNING: Submitted score '" + options.score) + "' will be truncated"));
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal");
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
_local2 = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(_arg1) != _arg1){
trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated"));
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
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});
}
}
}//package mochi.as3
Section 31
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
public static const CONNECTED:String = "onConnected";
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _queue:Array;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
private static var _nextCallbackID:Number;
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var _callbacks:Object;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(_arg1:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var methodName:String;
var obj:Object;
var pkg = _arg1;
cb = pkg.callbackID;
cblst = _callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
methodName = "";
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString()));
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
trace(("Error invoking method on object: " + error.toString()));
};
};
};
delete _callbacks[cb];
}
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:_nextCallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1));
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
};
if (_clip != null){
if (_callbacks != null){
_callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_nextCallbackID++;
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local3:Array;
var _local4:int;
var _local5:Array;
var _local6:Array;
var _local7:MovieClip;
var _local8:LocalConnection;
var _local9:String;
var _local10:ByteArray;
var _local11:ByteArray;
var _local12:uint;
var _local13:uint;
var _local14:Loader;
_local3 = [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];
_local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
_local6 = [0, 64, 0, 0, 0];
_local7 = new MovieClip();
_local8 = new LocalConnection();
_local9 = ((("_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);
_local10 = new ByteArray();
_local11 = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
_local12 = ((_local3.length + _local11.length) + 4);
_local13 = (_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);
}
private static function detach(_arg1:Event):void{
var _local2:LoaderInfo;
_local2 = LoaderInfo(_arg1.target);
_local2.removeEventListener(Event.COMPLETE, detach);
_local2.removeEventListener(IOErrorEvent.IO_ERROR, detach);
_local2.removeEventListener(Event.COMPLETE, loadLCBridgeComplete);
_local2.removeEventListener(IOErrorEvent.IO_ERROR, loadError);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
private static function loadLCBridgeComplete(_arg1:Event):void{
var _local2:Loader;
_local2 = LoaderInfo(_arg1.target).loader;
_mochiLocalConnection = MovieClip(_local2.content);
listen();
}
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();
_timer.removeEventListener(TimerEvent.TIMER, connectWait);
_timer = null;
} catch(error:Error) {
};
};
}
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 getVersion():String{
return ("3.9.1 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
var _local3:Number;
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
_local3 = 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:
trace(("WARNING: Board ID contains illegal characters: " + _arg1));
return;
};
_local3++;
};
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_queue))){
while (_queue.length > 0) {
_local2 = _queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _callbacks[_local2.callbackID];
};
delete _callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(_arg1:Object):void{
var _local2:String;
var _local3:String;
_local2 = _arg1.target;
_local3 = _arg1.event;
switch (_local2){
case "services":
MochiServices.triggerEvent(_arg1.event, _arg1.args);
break;
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "social":
MochiSocial.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function urlOptions(_arg1:Object):Object{
var _local2:Object;
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
_local2 = {};
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 vars:Object;
var avm1Click:DisplayObject;
var s:String;
var i:Number;
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;
vars = 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);
s = "?";
i = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://link.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
var _local2:Rectangle;
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
_local2 = 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);
};
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_clip.parent){
_clip.parent.removeChild(_clip);
};
if (_arg1 != null){
if ((_arg1 is DisplayObjectContainer)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is DisplayObjectContainer)){
DisplayObjectContainer(_container).addChild(_clip);
};
};
}
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) {
};
};
};
};
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
public static function get childClip():Object{
return (_clip);
}
private static function initComChannels():void{
if (!_connected){
trace("[SERVICES_API] connected!");
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift());
};
};
}
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);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
private static function loadLCBridge(_arg1:Object):void{
var _local2:Loader;
var _local3:String;
var _local4:URLRequest;
_local2 = new Loader();
_local3 = (_servURL + _mochiLC);
_local4 = new URLRequest(_local3);
_local2.contentLoaderInfo.addEventListener(Event.COMPLETE, detach);
_local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach);
_local2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadLCBridgeComplete);
_local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
_local2.load(_local4);
_arg1.addChild(_local2);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var _local3:String;
var _local4:URLRequest;
var _local5:URLVariables;
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
_local3 = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local3 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local3);
_clip = new MovieClip();
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, detach);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
_local4 = new URLRequest(_local3);
_local5 = new URLVariables();
_local5.listenLC = _listenChannelName;
_local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local5.api_version = getVersion();
if (widget){
_local5.widget = true;
};
_local4.data = _local5;
_loader.load(_local4);
_clip.addChild(_loader);
_sendChannel = new LocalConnection();
_queue = [];
_nextCallbackID = 0;
_callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function get clip():Object{
return (_container);
}
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 (clip.stage == null){
trace("MochiServices connect requires the containing clip be attached to the stage");
};
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
trace(_arg1);
};
};
};
}
public static function 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) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
MochiServices.disconnect();
MochiServices.onError("IOError");
} else {
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, connectWait);
_timer = null;
};
}
}
}//package mochi.as3
Section 32
//MochiSocial (mochi.as3.MochiSocial)
package mochi.as3 {
public class MochiSocial {
public static const LOGGED_IN:String = "LoggedIn";
public static const ACTION_CANCELED:String = "onCancel";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const IO_ERROR:String = "IOError";
public static const NO_USER:String = "NoUser";
public static const FRIEND_LIST:String = "FriendsList";
public static const PROFILE_DATA:String = "ProfileData";
public static const GAMEPLAY_DATA:String = "GameplayData";
public static const ACTION_COMPLETE:String = "onComplete";
public static const LOGIN_SHOW:String = "LoginShow";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const USER_INFO:String = "UserInfo";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ERROR:String = "Error";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const LOGIN_SHOWN:String = "LoginShown";
public static var _user_info:Object = null;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function requestFan(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestFan", _arg1);
}
public static function postToStream(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_postToStream", _arg1);
}
public static function getFriendsList(_arg1:Object=null):void{
MochiServices.send("social_getFriendsList", _arg1);
}
public static function requestLogin(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestLogin", _arg1);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("social_saveUserProperties", _arg1);
}
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 inviteFriends(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_inviteFriends", _arg1);
}
public static function get loggedIn():Boolean{
return (!((_user_info == null)));
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_showLoginWidget", {options:_arg1});
}
public static function getAPIURL():String{
if (!_user_info){
return (null);
};
return (_user_info.api_url);
}
public static function hideLoginWidget():void{
MochiServices.send("social_hideLoginWidget");
}
public static function getAPIToken():String{
if (!_user_info){
return (null);
};
return (_user_info.api_token);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
_user_info = _arg1;
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
_user_info = null;
});
}
}//package mochi.as3
Section 33
//MochiUserData (mochi.as3.MochiUserData)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class MochiUserData extends EventDispatcher {
public var callback:Function;// = null
public var error:Event;// = null
public var key:String;// = null
public var operation:String;// = null
public var data;// = null
public var _loader:URLLoader;
public function MochiUserData(_arg1:String="", _arg2:Function=null){
key = null;
data = null;
error = null;
operation = null;
callback = null;
super();
this.key = _arg1;
this.callback = _arg2;
}
public function securityErrorHandler(_arg1:SecurityErrorEvent):void{
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString())));
}
public function putEvent(_arg1):void{
request("put", serialize(_arg1));
}
public function request(_arg1:String, _arg2:ByteArray):void{
var api_url:String;
var api_token:String;
var args:URLVariables;
var req:URLRequest;
var _operation = _arg1;
var _data = _arg2;
operation = _operation;
api_url = MochiSocial.getAPIURL();
api_token = MochiSocial.getAPIToken();
if ((((api_url == null)) || ((api_token == null)))){
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in"));
return;
};
_loader = new URLLoader();
args = new URLVariables();
args.op = _operation;
args.key = key;
req = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString()));
req.method = URLRequestMethod.POST;
req.contentType = "application/x-mochi-userdata";
req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)];
req.data = _data;
_loader.dataFormat = URLLoaderDataFormat.BINARY;
_loader.addEventListener(Event.COMPLETE, completeHandler);
_loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
try {
_loader.load(req);
} catch(e:SecurityError) {
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString())));
};
}
public function completeHandler(_arg1:Event):void{
var event = _arg1;
try {
if (_loader.data.length){
data = deserialize(_loader.data);
} else {
data = null;
};
} catch(e:Error) {
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString())));
return;
};
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function performCallback():void{
try {
callback(this);
} catch(e:Error) {
trace(("[MochiUserData] exception during callback: " + e));
};
}
public function serialize(_arg1):ByteArray{
var _local2:ByteArray;
_local2 = new ByteArray();
_local2.objectEncoding = ObjectEncoding.AMF3;
_local2.writeObject(_arg1);
_local2.compress();
return (_local2);
}
public function errorHandler(_arg1:IOErrorEvent):void{
data = null;
error = _arg1;
if (callback != null){
performCallback();
} else {
dispatchEvent(_arg1);
};
close();
}
public function getEvent():void{
request("get", serialize(null));
}
override public function toString():String{
return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]"));
}
public function close():void{
if (_loader){
_loader.removeEventListener(Event.COMPLETE, completeHandler);
_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_loader.close();
_loader = null;
};
error = null;
callback = null;
}
public function deserialize(_arg1:ByteArray){
_arg1.objectEncoding = ObjectEncoding.AMF3;
_arg1.uncompress();
return (_arg1.readObject());
}
public static function get(_arg1:String, _arg2:Function):void{
var _local3:MochiUserData;
_local3 = new MochiUserData(_arg1, _arg2);
_local3.getEvent();
}
public static function put(_arg1:String, _arg2, _arg3:Function):void{
var _local4:MochiUserData;
_local4 = new MochiUserData(_arg1, _arg3);
_local4.putEvent(_arg2);
}
}
}//package mochi.as3
Section 34
//FPSCounter (pixelblitz.utils.FPSCounter)
package pixelblitz.utils {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class FPSCounter extends Sprite {
private var t:Timer;
private var ticks:int;
private var FPS:TextField;
private var format:TextFormat;
public function FPSCounter(_arg1:int=0, _arg2:int=0){
format = new TextFormat();
t = new Timer(1000);
super();
this.x = _arg1;
this.y = _arg2;
createText();
t.addEventListener(TimerEvent.TIMER, updateFPS);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
t.start();
}
private function createText():void{
format.font = "Verdana";
format.size = 9;
FPS = new TextField();
FPS.defaultTextFormat = format;
FPS.autoSize = TextFieldAutoSize.LEFT;
FPS.textColor = 0xFFFFFF;
FPS.background = true;
FPS.backgroundColor = 0x666666;
FPS.antiAliasType = "advanced";
FPS.selectable = false;
FPS.text = "FPS: ";
addChild(FPS);
}
private function updateFPS(_arg1:TimerEvent):void{
FPS.text = ("FPS: " + ticks);
ticks = 0;
}
private function onEnterFrame(_arg1:Event):void{
ticks++;
}
}
}//package pixelblitz.utils
Section 35
//AchievementDisplay (src.Game.Achievements.AchievementDisplay)
package src.Game.Achievements {
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class AchievementDisplay extends ParentedMovieClip {
private var descTxt:TextField;
private var locked:Boolean;
private var varname:String;
private var desc:String;
public var acName:TextField;
public var acDesc:TextField;
private var mark:MovieClip;
private var nameTxt:TextField;
public function AchievementDisplay(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:String, _arg4:String, _arg5:Boolean){
super(_arg1, _arg2);
this.varname = _arg3;
this.desc = _arg4;
this.locked = _arg5;
nameTxt = TextField(acName);
descTxt = TextField(acDesc);
nameTxt.text = this.varname;
descTxt.text = this.desc;
if (_arg5){
mark = new AchievementLockedMark();
} else {
mark = new AchivementUnlockedMark();
};
addChild(mark);
mark.x = 480;
}
}
}//package src.Game.Achievements
Section 36
//AchievementManager (src.Game.Achievements.AchievementManager)
package src.Game.Achievements {
import flash.display.*;
import src.Game.*;
import flash.net.*;
public class AchievementManager extends MovieClip {
public static const IDX_GOLEM_KILLER:int = 3;
public static const ZOMBIE_KILLER:int = 500;
public static const IDX_DEFENDER:int = 2;
public static const DEFENDER_DAMAGE:int = 100;
public static const ACHIVEMENT_DESCRIPTION:Array = ["SCORE A CRITICAL HIT", "COMPLETE THE GAME ON ANY DIFFICULTY", (((("SURVIVE UNTIL WAVE " + DEFENDER_WAVE) + " WITH LESS THAN ") + DEFENDER_DAMAGE) + " DAMAGE TAKEN"), "KILL GOLEM ON NORMAL OR HARD DIFFICULTY", (("KILL " + ZOMBIE_KILLER) + " ZOMBIES"), "KILL ALIEN ON HARD DIFFICULTY", "SCORE 666 INSTANT DEATHS (ANY ONE SHOT KILL COUNTS)", "COMPLETE THE GAME ON HARD DIFFICULTY", "KILL 10 BUTCHERS", "FIRE 1000 BULLETS"];
public static const IDX_SATAN:int = 6;
public static const DEFENDER_WAVE:int = 15;
public static const IDX_BUTCHER:int = 8;
public static const IDX_ZOMBASSACRE:int = 4;
public static const IDX_SURVIVOR:int = 7;
public static const IDX_SHOOTER:int = 9;
public static const IDX_ALIENTASTIC:int = 5;
public static const IDX_PROFICIENCY:int = 1;
public static const ACHIEVEMENT_NAMES:Array = ["SHARP EYE", "PROFICIENCY", "DEFENDER", "GOLEM KILLER", "ZOMBASSACRE", "ALIENTASTIC", "SATAN", "SURVIVOR", "BUTCHERY", "SHOOTER"];
public static const IDX_SHARP_EYE:int = 0;
public static var shared:SharedObject = SharedObject.getLocal("achievements");
public static var achievementArray:Array;
public function AchievementManager(_arg1:DisplayObjectContainer){
}
public static function init():void{
var _local1:int;
if ((((((shared.data.achievements == null)) || ((shared.data.achievements == undefined)))) || (!((shared.data.achievements.length == ACHIEVEMENT_NAMES.length))))){
shared.data.achievements = new Array();
_local1 = ACHIEVEMENT_NAMES.length;
while (_local1 > 0) {
_local1--;
shared.data.achievements.push(true);
};
};
achievementArray = shared.data.achievements;
shared.flush();
}
public static function resetAllAchievements():void{
var _local1:SharedObject;
var _local2:int;
init();
_local1 = SharedObject.getLocal("achievements");
_local2 = ACHIEVEMENT_NAMES.length;
while (_local2 > 0) {
_local2--;
_local1.data.achievements[_local2] = true;
};
_local1.flush();
}
public static function resetAchievement(_arg1:int):void{
var _local2:SharedObject;
if (_arg1 >= ACHIEVEMENT_NAMES.length){
trace("ACHIVEMENT OUT OF RANGE");
return;
};
_local2 = SharedObject.getLocal("achievements");
_local2.data.achievements[_arg1] = true;
_local2.flush();
}
public static function setAchievement(_arg1:int, _arg2:DisplayObjectContainer):AchievementMsg{
var _local3:SharedObject;
var _local4:AchievementMsg;
if (_arg1 >= ACHIEVEMENT_NAMES.length){
return (null);
};
_local3 = SharedObject.getLocal("achievements");
trace(_arg1, _arg2, _local3.data.achievements[_arg1]);
if (_local3.data.achievements[_arg1] == true){
_local4 = new AchievementMsg(Game.GAME_DISPLAY_CONTAINER, ACHIEVEMENT_NAMES[_arg1]);
_local3.data.achievements[_arg1] = false;
_local3.flush();
trace(_arg1, _arg2, _local3.data.achievements[_arg1]);
return (_local4);
};
return (null);
}
}
}//package src.Game.Achievements
Section 37
//AchievementMsg (src.Game.Achievements.AchievementMsg)
package src.Game.Achievements {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class AchievementMsg extends FrameablePMC {
private const REMOVE_X:Number = -300;
private const START_X:Number = -400;
private const START_Y:Number = 510;
private const END_FRAME:int = 40;
private const END_X:Number = 0;
private var framecount:int;// = 0
public var acName:TextField;
public function AchievementMsg(_arg1:DisplayObjectContainer, _arg2:String){
framecount = 0;
super(_arg1, Gameplay.achivementMsgArray, new Point(START_X, (START_Y + (height * (-(Gameplay.achivementMsgArray.length) - 1)))));
acName.text = _arg2;
SoundManagerClass.playSound("AchievementSound", 0.25);
}
override public function onFrame():void{
if (framecount < END_FRAME){
x = (x + ((END_X - x) / 4));
};
if (framecount++ >= END_FRAME){
x = (x + ((START_X - x) / 4));
if (x < REMOVE_X){
remove();
};
};
}
}
}//package src.Game.Achievements
Section 38
//AchievementsScreen (src.Game.Achievements.AchievementsScreen)
package src.Game.Achievements {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Screens.*;
import utils.parentedmovieclip.*;
public class AchievementsScreen extends ParentedMovieClip {
private const STARTY:int = 80;
private const STARTX:int = 30;
private const DY:int = 32;
public var backB:button_back;
public var sMC:MovieClip;
private var back:SimpleButton;
public function AchievementsScreen(_arg1:DisplayObjectContainer){
var _local2:MovieClip;
super(_arg1, new Point(0, 0));
back = SimpleButton(backB);
back.addEventListener(MouseEvent.CLICK, onBackClicked);
_local2 = new AcMask();
addChild(_local2);
addChild(back);
addChild(sMC);
_local2.width = 600;
_local2.height = 510;
_local2.alpha = 0.5;
initAchievements();
}
private function initAchievements():void{
var _local1:Array;
var _local2:int;
var _local3:*;
AchievementManager.init();
_local1 = AchievementManager.achievementArray;
_local2 = _local1.length;
while (_local2 > 0) {
_local2--;
_local3 = new AchievementDisplay(this, new Point(STARTX, (STARTY + (_local2 * DY))), AchievementManager.ACHIEVEMENT_NAMES[_local2], AchievementManager.ACHIVEMENT_DESCRIPTION[_local2], _local1[_local2]);
};
}
private function onBackClicked(_arg1:MouseEvent):void{
remove();
dispatchEvent(new NavigationEvent(NavigationEvent.BACK));
}
}
}//package src.Game.Achievements
Section 39
//RankManager (src.Game.Achievements.RankManager)
package src.Game.Achievements {
import flash.display.*;
import flash.net.*;
import flash.text.*;
public class RankManager extends MovieClip {
private const rankScore:Array;
private const ranks:Array;
private var bestTxt:TextField;
private var storeScores:Boolean;
private var shared:SharedObject;
private var score:Number;
public var rankT:TextField;
private var currentBestScore:Number;
private var rankTxt:TextField;
public var nextT:TextField;
private var nextRank:TextField;
public var bestT:TextField;
public function RankManager(_arg1:DisplayObjectContainer, _arg2:Number, _arg3:Boolean=true){
ranks = ["Noob", "Novice", "Regular", "Veteran", "Expert", "Professional", "Uber-Player"];
rankScore = [0, 80, 140, 180, 210, 230, 250];
shared = SharedObject.getLocal("userData");
super();
this.score = _arg2;
this.storeScores = _arg3;
_arg1.addChild(this);
rankTxt = TextField(rankT);
bestTxt = TextField(bestT);
nextRank = TextField(nextT);
manageBestScore();
}
private function getRankNr(_arg1:Number):int{
var _local2:int;
_local2 = rankScore.length;
while (_local2 > 1) {
_local2--;
if ((((_arg1 < rankScore[_local2])) && ((_arg1 >= rankScore[(_local2 - 1)])))){
return ((_local2 - 1));
};
};
return ((rankScore.length - 1));
}
private function getCurrentBestScore():Number{
if ((((shared.data.bestScore == null)) || ((shared.data.bestScore == undefined)))){
shared.data.bestScore = new Number();
};
return (shared.data.bestScore);
}
public function resetAllRanks():void{
if ((((shared.data.bestScore == null)) || ((shared.data.bestScore == undefined)))){
shared.data.bestScore = new Number();
} else {
shared.data.bestScore = 0;
};
currentBestScore = 0;
shared.flush();
display();
}
private function manageBestScore():void{
currentBestScore = getCurrentBestScore();
if (score > currentBestScore){
currentBestScore = score;
};
setBestScore();
display();
}
private function display():void{
var _local1:int;
_local1 = getRankNr(currentBestScore);
rankTxt.text = ("Current rank: " + ranks[_local1]);
bestTxt.text = ("Personal best: " + currentBestScore);
if (_local1 == (rankScore.length - 1)){
nextRank.text = "Congratulations! Max rank reached! ";
} else {
nextRank.text = ("Score needed to achieve next rank: " + rankScore[(_local1 + 1)]);
};
}
private function setBestScore():void{
shared.data.bestScore = currentBestScore;
shared.flush();
}
}
}//package src.Game.Achievements
Section 40
//BackgroundManager (src.Game.Background.BackgroundManager)
package src.Game.Background {
import utils.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import utils.parentedmovieclip.*;
import flash.filters.*;
public class BackgroundManager extends ParentedMovieClip {
private const NR_OBJECTS:Number = 100;
private var myArray:Array;
private var color:int;// = 0
private var colorM:ColorMatrix;
public var base:Base;
public function BackgroundManager(_arg1:DisplayObjectContainer){
myArray = [];
color = 0;
super(_arg1, new Point());
addChild(new Background());
base = new Base(this);
addChild(base);
addTransition();
}
public function removeFadeOut():void{
color = 0;
colorM = new ColorMatrix();
filters = [new ColorMatrixFilter(colorM)];
addEventListener(Event.ENTER_FRAME, onFadeFrame);
}
private function onFadeFrame(_arg1:Event):void{
color = (color + ((100 - color) * 0.15));
color++;
colorM = new ColorMatrix();
colorM.adjustBrightness(-(color));
colorM.adjustSaturation(-(color));
filters = [new ColorMatrixFilter(colorM)];
if (color > 100){
dispatchEvent(new Event(Event.COMPLETE));
removeEventListener(Event.ENTER_FRAME, onFadeFrame);
remove();
};
}
private function onFrame(_arg1:Event):void{
color = (color + ((100 - color) * 0.15));
color++;
colorM = new ColorMatrix();
colorM.adjustBrightness((-100 + color));
colorM.adjustSaturation((-100 + color));
filters = [new ColorMatrixFilter(colorM)];
if (color >= 100){
removeEventListener(Event.ENTER_FRAME, onFrame);
filters = [];
};
}
private function addTransition():void{
colorM = new ColorMatrix();
colorM.adjustBrightness(-100);
colorM.adjustSaturation(-100);
filters = [new ColorMatrixFilter(colorM)];
addEventListener(Event.ENTER_FRAME, onFrame);
}
}
}//package src.Game.Background
Section 41
//FacebookButton (src.Game.Buttons.FacebookButton)
package src.Game.Buttons {
import flash.display.*;
import flash.events.*;
import src.Wrapper.*;
import flash.net.*;
public class FacebookButton extends SimpleButton {
private var description:String;// = "description=Don't touch golden skull if you find one. Here's what happens if you do!"
private var title:String;// = "title=Zombies want my brains!!!"
private var screenshot:String;// = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif"
private var swfURL:String;// = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1"
private var sharedURL:String;// = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook"
private var username:String;// = "username=teagames"
public function FacebookButton(){
description = "description=Don't touch golden skull if you find one. Here's what happens if you do!";
sharedURL = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook";
swfURL = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1";
title = "title=Zombies want my brains!!!";
username = "username=teagames";
screenshot = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif";
super();
addEventListener(MouseEvent.CLICK, onFB);
}
private function onFB(_arg1:MouseEvent):void{
var _local2:String;
if (Wrapper.FB_ENDPOINT == null){
Wrapper.FB_ENDPOINT = "http://api.addthis.com/oexchange/0.8/forward/facebook/offer";
};
_local2 = ((((((((((((Wrapper.FB_ENDPOINT + "?") + sharedURL) + "&") + swfURL) + "&") + title) + "&") + description) + "&") + username) + "&") + screenshot);
navigateToURL(new URLRequest(_local2));
}
}
}//package src.Game.Buttons
Section 42
//MusicButton (src.Game.Buttons.MusicButton)
package src.Game.Buttons {
import flash.display.*;
import flash.events.*;
import src.Game.*;
public class MusicButton extends MovieClip {
public function MusicButton(){
var _local1:Boolean;
super();
buttonMode = true;
_local1 = SoundManagerClass.musicFlag;
if (_local1){
gotoAndStop(1);
} else {
gotoAndStop(2);
};
addEventListener(MouseEvent.CLICK, onClicked);
}
private function onClicked(_arg1:MouseEvent):void{
var _local2:Boolean;
_local2 = SoundManagerClass.musicFlag;
if (_local2){
SoundManagerClass.stopMusic();
SoundManagerClass.musicFlag = false;
gotoAndStop(2);
} else {
SoundManagerClass.musicFlag = true;
SoundManagerClass.continueMusic();
gotoAndStop(1);
};
}
}
}//package src.Game.Buttons
Section 43
//NormalButton (src.Game.Buttons.NormalButton)
package src.Game.Buttons {
import flash.display.*;
import flash.events.*;
import src.Game.*;
public class NormalButton extends SimpleButton {
public function NormalButton(){
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
addEventListener(MouseEvent.CLICK, onMouseClicked);
}
private function onMouseOver(_arg1:MouseEvent):void{
SoundManagerClass.playSound("MouseOverSound", 1);
}
private function onMouseClicked(_arg1:MouseEvent):void{
SoundManagerClass.playSound("ClickSound", 1);
}
}
}//package src.Game.Buttons
Section 44
//SoundButton (src.Game.Buttons.SoundButton)
package src.Game.Buttons {
import flash.display.*;
import flash.events.*;
import src.Game.*;
public class SoundButton extends MovieClip {
public function SoundButton(){
var _local1:Boolean;
super();
buttonMode = true;
_local1 = SoundManagerClass.soundFlag;
if (_local1){
gotoAndStop(1);
} else {
gotoAndStop(2);
};
addEventListener(MouseEvent.CLICK, onClicked);
}
private function onClicked(_arg1:MouseEvent):void{
var _local2:Boolean;
_local2 = SoundManagerClass.soundFlag;
if (_local2){
SoundManagerClass.soundFlag = false;
gotoAndStop(2);
} else {
SoundManagerClass.soundFlag = true;
gotoAndStop(1);
};
}
}
}//package src.Game.Buttons
Section 45
//BaseData (src.Game.GameData.BaseData)
package src.Game.GameData {
public class BaseData {
public static const BASE_HP_PER_UPGRADE:int = 100;
public static const REPAIRMAN_UPGRADE_REPAIR_PER_MINUTE:int = 1;
public static const REPAIRMAN_REPAIR_PER_MINUTE:int = 10;
public static const TURRET_DAMAGE:int = 30;
public static const BASE_REPAIRCOST_PER_HP:int = 5;
public static const TURRET_COST_INCREASE:int = 100;
public static const TURRET_FIRE_RATE_INCREASE:int = 1;
public static const TURRET_RATE_OF_FIRE:int = 20;
public static const BASE_HP:int = 100;
public static const BASE_HP_COST_PER_UPGRADE:Array = [500, 1500, 4500, 12000, 35000];
public static const REPAIRMAN_UPGRADE_COST:int = 1000;
public static const TURRET_COST:int = 100;
public static const REPAIRMAN_UPGRADE_COST_INCREASE:int = 100;
}
}//package src.Game.GameData
Section 46
//Constants (src.Game.GameData.Constants)
package src.Game.GameData {
import flash.display.*;
public class Constants {
public static const FPS:int = 31;
public static var GAME_CONTAINER:MovieClip;
}
}//package src.Game.GameData
Section 47
//MiscUpgradeData (src.Game.GameData.MiscUpgradeData)
package src.Game.GameData {
public class MiscUpgradeData {
public static const TURRET_DESC:String = "Turret helps your defenses. At greater levels it does more damage and shoots faster.";
public static const REPAIRS_HP:Number = 50;
public static const REPAIRMAN_DESC:String = "Slowly repair your barracks during attacks.";
public static const HELI_FIRE_RATE:Array = [100, 90, 80, 60, 70];
public static const REPAIRS_COST:Number = 100;
public static const DESC_ARRAY:Array = [REPAIRS_DESC, REPAIRMAN_DESC, ENGINEERING_DESC, TURRET_DESC, HELI_DESC];
public static const REPAIRS_DELTA_COST:Number = 0;
public static const HELI_NAME:String = "HELICOPTER";
public static const MISC_MAX_LEVEL:int = 4;
public static const ENGINEERING_COST:Number = 1500;
public static const HELI_DAMAGE:Array = [100, 130, 160, 190, 240];
public static const IDX_HELI:int = 4;
public static const REPAIRMAN_DELTA_COST:Number = 3500;
public static const TURRET_DAMAGE:Array = [5, 8, 11, 15, 20];
public static const HELI_COST:Number = 5000;
public static const TURRET_COST:Number = 2500;
public static const REPAIRMAN_COST:Number = 1000;
public static const TURRET_FIRE_RATE:Array = [30, 25, 20, 15, 10];
public static const TURRET_DELTA_COST:Number = 4000;
public static const IDX_REPAIRS:int = 0;
public static const COST_ARRAY:Array = [REPAIRS_COST, REPAIRMAN_COST, ENGINEERING_COST, TURRET_COST, HELI_COST];
public static const HELI_DELTA_COST:Number = 6000;
public static const REPAIRS_DESC:String = "Restores hit points to your barracks.";
public static const REPAIRS_NAME:String = "REPAIRS";
public static const IDX_ENGINEERING:int = 2;
public static const IDX_TURRET:int = 3;
public static const ENGINEERING_NAME:String = "ENGINEERING";
public static const DELTA_ARRAY:Array = [REPAIRS_DELTA_COST, REPAIRMAN_DELTA_COST, ENGINEERING_DELTA_COST, TURRET_DELTA_COST, HELI_DELTA_COST];
public static const ENGINEERING_DESC:String = "Bigger max HP of barracks.";
public static const ENGINEERING_DELTA_COST:Number = 5000;
public static const NAMES_ARRAY:Array = [REPAIRS_NAME, REPAIRMAN_NAME, ENGINEERING_NAME, TURRET_NAME, HELI_NAME];
public static const IDX_REPAIRMEN:int = 1;
public static const HELI_DESC:String = "Helicopter fires guided missiles that hit strongest targets.";
public static const ENGINEERING_HP_PER_LEVEL:int = 100;
public static const REPAIRMAN_HP_PER_LEVEL_PER_MINUTE:Number = 20;
public static const TURRET_NAME:String = "TURRET";
public static const REPAIRMAN_NAME:String = "REPAIRMAN";
public static var UPGRADE_LVL_ARRAY:Array = [];
public static function Init():void{
UPGRADE_LVL_ARRAY = [0, 0, 0, 0, 0];
}
}
}//package src.Game.GameData
Section 48
//PerkData (src.Game.GameData.PerkData)
package src.Game.GameData {
public class PerkData {
public static const IDX_BIG_GUN_MASTER:int = 9;
public static const HELI_MASTER:int = 18;
public static const FAME_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 10";
public static const GEEK:int = 20;
public static const FAST_SHOT:int = 10;
public static const TURRET_DESCRIPTION:String = (("YOU HAVE A BIG TURRET. GIRLS LOVE IT. \n(TURRET DOES " + TURRET) + "% MORE DAMAGE PER LEVEL OF SKILL)");
public static const IDX_DEATHCRAFT:int = 5;
public static const PISTOLERO_DESCRIPTION:String = (("YOU FEEL YOU DON'T BELONG TO THIS AGE? SHOULD HAVE BEEN BORN IN WILD WEST? \n(+" + PISTOLERO_CRITICAL_DAMAGE) + "% CRITICAL DAMAGE FOR PISTOLS PER LEVEL OF PERK.) \n\n REQ. SHARPSHOOTER, CHAR LVL 5");
public static const BLOOD_THIRSTY_DESCRIPTION:String = (("YOU'RE OVERLY AGGRESSIVE AND SIMPLY CAN'T WAIT TOO LONG TO MAKE A MASSACRE. \n(+" + BLOOD_THIRSTY) + "% FASTER RELOADING PER LEVEL OF THIS PERK)");
public static const HATRED_NAME:String = "HATRED";
public static const ENGINEERING:int = 10;
public static const HATRED:int = 4;
public static const RIFLEMAN_NAME:String = "RIFLEMAN";
public static const GEEK_DESCRIPTION:String = (("GEEKY NATURED? WELL, IT REALLY HELPS WHEN YOU WANT TO MODIFY THAT AMMO CAPACITY OF YOUR WEAPON. \n(+" + GEEK) + "% LARGER CLIP SIZE PER LEVEL OF THIS SKILL)");
public static const HATRED_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 10";
public static const DEATHCRAFT:int = 30;
public static const HAPPY_SHOTGUN_DESCRIPTION:String = (("SHOTGUNS CAN DO A BLOODY MESS AND YOU'RE EAGER TO GET GOING! \n(+" + HAPPY_SHOTGUN_RELOADING) + "% FASTER RELOADING FOR SHOTGUNS PER LEVEL OF THIS PERK)");
public static const IDX_REPAIR_MASTER:int = 16;
public static const BIG_GUN_MASTERY_DAMAGE:int = 20;
public static const REPAIR_NAME:String = "REPAIR";
public static const FAME_DESCRIPTION:String = (("WINNER OF 'KILLEM ALL' AND 'NATURAL MASSACRE' REALITY SHOWS. \n(GET " + FAME) + "% MORE MONEY PER LEVEL OF THIS SKILL)");
public static const REPAIR_DESCRIPTION:String = (("CAN WE FIX IT? YES WE CAN! \n(REPAIRMAN WORK " + REPAIR) + "% FASTER PER LEVEL OF SKILL)");
public static const HATRED_DESCRIPTION:String = "YOU'RE SERIOUSLY DEMENTED AND HAVE SUPERNATURAL POWERS -> VERY BAD FOR YOUR ENEMIES.
(ENEMIES HAVE SMALL CHANCE OF RANDOMLY DYING)";
public static const BLOOD_THIRSTY_NAME:String = "BLOOD THIRSTY";
public static const IDX_PRECISION:int = 1;
public static const IDX_SHARPSHOOTER:int = 4;
public static const IDX_HAPPY_SHOTGUN:int = 10;
public static const IDX_PISTOLERO:int = 7;
public static const PISTOLERO_CRITICAL_DAMAGE:int = 75;
public static const DEATHCRAFT_DESCRIPTION:String = (("SOME PEOPLE ARE CAPABLE OF DOING SOME SERIOUS WOUNDS. YOU'RE INTERESTED IN KILLING ONLY. \n (YOUR CRITICALS HAVE " + DEATHCRAFT) + "% OF INSTANT DEATH CHANCE PER LEVEL OF THIS PERK)");
public static const IDX_ENGINEERING:int = 11;
public static const STEADY_HANDS:int = 10;
public static const ENGINEERING_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 10";
public static const HAPPY_SHOTGUN_NAME:String = "TRIGGER HAPPY";
public static const PRECISION:int = 7;
public static const IDX_GEEK:int = 6;
public static const IDX_HELI_MASTER:int = 13;
public static const HELI_MASTER_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 10";
public static const ENGINEERING_NAME:String = "ENGINEERING";
public static const STEADY_HANDS_NAME:String = "STEADY HANDS";
public static const RIFLEMAN_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 5
ONE BLOOD THIRSTY LEVEL
ONE REFLEXES LEVEL";
public static const TURRET_NAME:String = "BIG TURRET";
public static const PRECISION_DESCRIPTION:String = (("YOU'RE GENERALLY PRETTY GOOD WITH ANY TYPE OF GUN - AND YOUR ENEMIES WILL FEEL THAT. \n(+" + PRECISION) + "% MORE DAMAGE PER LEVEL OF THIS PERK)");
public static const FAST_SHOT_NAME:String = "REFLEXES";
public static const FAME:int = 12;
public static const REPAIR:int = 20;
public static const ENGINEERING_DESCRIPTION:String = (("THE DOCTOR OF ENGINEERING - YES, THAT'S YOU! \n(REDUCE " + ENGINEERING) + "% DAMAGE PER LEVEL OF SKILL)");
public static const REPAIR_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 10";
public static const HELI_MASTER_DESCRIPTION:String = (("YOUR ROBOTIC HELICOPTER IS DOING SUPER DAMAGE! \n(HELICOPTER DOES " + HELI_MASTER) + "% MORE DAMAGE PER LEVEL OF THIS SKILL)");
public static const RIFLEMAN_DESCRIPTION:String = (("YOUR DAD ALWAYS TOOK YOU TO DEER HUNTS. \n(+" + RIFLEMAN_RELOADING_AND_ATTACK_RATE) + "% FASTER RIFLE RELOADING AND SHOOTING PER LEVEL OF PERK)");
public static const HAPPY_SHOTGUN_RELOADING:int = 20;
public static const BIG_GUN_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 5
ONE STEADY HANDS LEVEL";
public static const IDX_STEADY_HANDS:int = 3;
public static const IDX_SUPER_TURRET:int = 15;
public static const DEATHCRAFT_NAME:String = "DEATHCRAFT";
public static const HELI_MASTER_NAME:String = "HELIMASTER";
public static const SHARPSHOOTER_NAME:String = "SHARPSHOOTER";
public static const BIG_GUN_NAME:String = "ARNIE";
public static const HAPPY_SHOTGUN_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 5
ONE BLOOD THIRSTY LEVEL";
public static const FAME_NAME:String = "FAME";
public static const PISTOLERO_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 5
ONE SHARPSHOOTER LEVEL";
public static const PRECISION_NAME:String = "PAIN GIVER";
public static const IDX_BLOOD_THIRSTY:int = 2;
public static const BIG_GUN_MASTERY_DESCRIPTION:String = (("STRONG LIKE ARNIE? WELL, CONTROLLING BIG GUNS IS MUCH EASIER FOR YOU. \n(+" + BIG_GUN_MASTERY_DAMAGE) + "% DAMAGE FOR BOZARS AND MINIGUNS PER LEVEL OF PERK)");
public static const TURRET_LOCKED_DESC:String = "REQUIRES:
CHARACTER LEVEL 10";
public static const IDX_FAST_SHOT:int = 0;
public static const PISTOLERO_NAME:String = "PISTOLERO";
public static const SHARPSHOOTER:int = 33;
public static const GEEK_NAME:String = "GEEK";
public static const RIFLEMAN_RELOADING_AND_ATTACK_RATE:int = 7;
public static const IDX_RIFLEMAN:int = 8;
public static const IDX_FAME:int = 14;
public static const BLOOD_THIRSTY:int = 10;
public static const TURRET:int = 18;
public static const IDX_HATRED:int = 12;
public static const STEADY_HANDS_DESCRIPTION:String = (("THIS IS WHAT YOGA DID TO YOU - ALWAYS RELAXED AND CONCENTRATED. \n(+" + STEADY_HANDS) + "% BETTER PRECISION PER LEVEL OF THIS PERK, BIGGER RADIUS FOR SHOTGUNS)");
public static const SHARPSHOOTER_DESCRIPTION:String = (("THEY CALL YOU EAGLE-EYE DUDE. NOT WITHOUT A REASON. \n(+" + SHARPSHOOTER) + "% TO BASE CRITICAL SHOT CHANCE OF WEAPON PER LEVEL OF PERK - CRITICALS DO 2x + 20 DAMAGE)");
public static var PERK_LOCKED_DESC_ARRAY:Array = [PISTOLERO_LOCKED_DESC, RIFLEMAN_LOCKED_DESC, BIG_GUN_LOCKED_DESC, HAPPY_SHOTGUN_LOCKED_DESC, ENGINEERING_LOCKED_DESC, HATRED_LOCKED_DESC, HELI_MASTER_LOCKED_DESC, FAME_LOCKED_DESC, TURRET_LOCKED_DESC, REPAIR_LOCKED_DESC];
public static var PERK_DATA:Array;
public static var PERK_NAME_ARRAY:Array = [FAST_SHOT_NAME, PRECISION_NAME, BLOOD_THIRSTY_NAME, STEADY_HANDS_NAME, SHARPSHOOTER_NAME, DEATHCRAFT_NAME, GEEK_NAME, PISTOLERO_NAME, RIFLEMAN_NAME, BIG_GUN_NAME, HAPPY_SHOTGUN_NAME, ENGINEERING_NAME, HATRED_NAME, HELI_MASTER_NAME, FAME_NAME, TURRET_NAME, REPAIR_NAME];
public static var FAST_SHOT_DESCRIPTION:String = (("THAT SQUIRREL HUNTING YOU DID AS A YOUNG BOY GOT YOU SOME PRETTY GOOD REFLEXES. \n(+" + FAST_SHOT) + "% FASTER SHOOTING PER LEVEL OF PERK)");
public static var PERK_DESC_ARRAY:Array = [FAST_SHOT_DESCRIPTION, PRECISION_DESCRIPTION, BLOOD_THIRSTY_DESCRIPTION, STEADY_HANDS_DESCRIPTION, SHARPSHOOTER_DESCRIPTION, DEATHCRAFT_DESCRIPTION, GEEK_DESCRIPTION, PISTOLERO_DESCRIPTION, RIFLEMAN_DESCRIPTION, BIG_GUN_MASTERY_DESCRIPTION, HAPPY_SHOTGUN_DESCRIPTION, ENGINEERING_DESCRIPTION, HATRED_DESCRIPTION, HELI_MASTER_DESCRIPTION, FAME_DESCRIPTION, TURRET_DESCRIPTION, REPAIR_DESCRIPTION];
public static function initPerkData():void{
PERK_DATA = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
}
public static function increasePerkLevel(_arg1:int):void{
if ((((PERK_DATA[_arg1] < 3)) && ((PERK_DATA[_arg1] >= 0)))){
var _local2 = PERK_DATA;
var _local3 = _arg1;
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
} else {
trace("Invalid perk index");
};
}
public static function getCharLevel():int{
var _local1:int;
var _local2:int;
_local1 = PERK_DATA.length;
_local2 = 0;
while (_local1-- > 0) {
_local2 = (_local2 + PERK_DATA[_local1]);
};
return (_local2);
}
}
}//package src.Game.GameData
Section 49
//SavedData (src.Game.GameData.SavedData)
package src.Game.GameData {
import utils.*;
import src.Game.Gameplay.Base.*;
import src.Game.Gameplay.UI.*;
public class SavedData {
public static var BASE_HP:Number;
public static var WEAPON_EQUIPPED:int;
public static var BASE_MAX:Number;
public static var CASH:Number;
public static var WEAPON_ARRAY:Array;
public static var WEAPON_UPGRADES:Array;
public static var MISC_DATA:Array;
public static var PERKS_ARRAY:Array;
public static function SaveData():void{
PERKS_ARRAY = ArrayClone.clone(PerkData.PERK_DATA);
CASH = CashPrizeCounter.CASH;
WEAPON_ARRAY = ArrayClone.clone(WeaponData.ALL_WEAPON_OWNERSHIP);
WEAPON_UPGRADES = ArrayClone.clone(WeaponData.ALL_WEAPON_UPGRADES);
WEAPON_EQUIPPED = WeaponData.EQUIPPED_WEAPON_IDX;
MISC_DATA = ArrayClone.clone(MiscUpgradeData.UPGRADE_LVL_ARRAY);
BASE_HP = BaseModel.hitPoints;
BASE_MAX = BaseModel.maxHitPoints;
}
public static function LoadData():void{
WeaponData.EQUIPPED_WEAPON_IDX = WEAPON_EQUIPPED;
PerkData.PERK_DATA = PERKS_ARRAY;
CashPrizeCounter.CASH = CASH;
WeaponData.ALL_WEAPON_OWNERSHIP = WEAPON_ARRAY;
WeaponData.ALL_WEAPON_UPGRADES = WEAPON_UPGRADES;
MiscUpgradeData.UPGRADE_LVL_ARRAY = MISC_DATA;
BaseModel.maxHitPoints = BASE_MAX;
BaseModel.hitPoints = BASE_HP;
}
}
}//package src.Game.GameData
Section 50
//WaveData (src.Game.GameData.WaveData)
package src.Game.GameData {
public class WaveData {
public static const WAVE24:Array = [40, 20, 24, 15, 30, 24, 10, 3];
public static const WAVE_DURATION_SECONDS:int = 60;
public static const ENEMY_TYPES:int = 8;
public static const WAVE1:Array = [16, 0, 0, 0, 0, 0, 0, 0];
public static const WAVE2:Array = [21, 1, 0, 0, 0, 0, 0, 0];
public static const WAVE3:Array = [27, 3, 0, 0, 0, 0, 0, 0];
public static const WAVE4:Array = [32, 5, 1, 0, 0, 0, 0, 0];
public static const WAVE5:Array = [40, 10, 2, 0, 0, 0, 0, 0];
public static const WAVE6:Array = [45, 15, 3, 1, 0, 0, 0, 0];
public static const WAVE7:Array = [45, 21, 4, 0, 0, 0, 0, 0];
public static const WAVE8:Array = [40, 28, 7, 1, 0, 0, 0, 0];
public static const WAVE9:Array = [40, 30, 11, 2, 0, 0, 0, 0];
public static const WAVE19:Array = [40, 20, 20, 15, 15, 12, 2, 0];
public static const WAVE13:Array = [40, 30, 16, 12, 10, 0, 0, 0];
public static const WAVE14:Array = [40, 20, 16, 14, 15, 0, 0, 0];
public static const WAVE15:Array = [40, 25, 20, 15, 15, 1, 0, 0];
public static const WAVE16:Array = [40, 20, 16, 15, 15, 4, 0, 0];
public static const WAVE17:Array = [40, 20, 16, 15, 15, 8, 0, 0];
public static const WAVE10:Array = [40, 30, 15, 4, 0, 0, 0, 0];
public static const WAVE11:Array = [40, 30, 16, 9, 1, 0, 0, 0];
public static const WAVE12:Array = [40, 30, 16, 10, 5, 0, 0, 0];
public static const WAVE_DURATION_FRAMES:int = 1860;
public static const WAVE18:Array = [40, 20, 16, 15, 15, 12, 1, 0];
public static const WAVE20:Array = [40, 20, 24, 15, 15, 12, 4, 0];
public static const WAVE21:Array = [40, 20, 16, 15, 15, 12, 6, 1];
public static const WAVE22:Array = [40, 20, 20, 15, 15, 12, 9, 2];
public static const WAVE23:Array = [40, 20, 24, 15, 15, 12, 10, 3];
public static const WAVE25:Array = [40, 20, 24, 15, 30, 24, 12, 6];
public static var ALL_WAVE_ARRAY:Array = [WAVE1, WAVE2, WAVE3, WAVE4, WAVE5, WAVE6, WAVE7, WAVE8, WAVE9, WAVE10, WAVE11, WAVE12, WAVE13, WAVE14, WAVE15, WAVE16, WAVE17, WAVE18, WAVE19, WAVE20, WAVE21, WAVE22, WAVE23, WAVE24, WAVE25];
}
}//package src.Game.GameData
Section 51
//WeaponData (src.Game.GameData.WeaponData)
package src.Game.GameData {
public class WeaponData {
public static const HK_P90_DAMAGE:Array = [10, 12, 14, 16, 18];
public static const PISTOL_RATE_OF_FIRE_COST:Array = [0, 150, 200, 300, 350];
public static const PISTOL_COST_DATA:Array = new Array(PISTOL_DAMAGE_COST, PISTOL_RATE_OF_FIRE_COST, PISTOL_RELOAD_TIME_COST, PISTOL_CLIP_SIZE_COST);
public static const ASSAULT_RIFLE_CRITICAL_CHANCE:Number = 2;
public static const HK_P90_NAME:String = "AP90 SMG (AUTOMATIC)";
public static const HK_P90_DESC:String = "Its great rate of fire more than makes up for its low damage.";
public static const SNIPER_RELOAD_TIME_COST:Array = [8000, 600, 750, 1000, 1250];
public static const COMBAT_SHOTGUN_SIZE:Array = [12, 15, 18, 21, 24];
public static const MINIGUN_RADIUS:Number = 30;
public static const BOZAR_DAMAGE:Array = [28, 32, 36, 40, 45];
public static const SHOTGUN_SIZE_COST:Array = [6000, 500, 600, 750, 1000];
public static const BOZAR_CRITICAL_CHANCE:Number = 2;
public static const HK_P90_SIZE_COST:Array = [10000, 750, 1000, 1250, 1500];
public static const UZI_RELOAD_TIME:Array = [55, 50, 45, 40, 36];
public static const GAUSS_RELOAD_TIME_COST:Array = [36000, 2000, 2500, 3000, 5000];
public static const ALL_WEAPON_DATA_ARRAY:Array = [PISTOL_DATA, UZI_DATA, MAGNUM_DATA, ASSAULT_RIFLE_DATA, SHOTGUN_DATA, SNIPER_DATA, HK_P90_DATA, MINIGUN_DATA, COMBAT_SHOTGUN_DATA, PPK12_DATA, BOZAR_DATA, GAUSS_DATA];
public static const IDX_SHOTGUN:int = 4;
public static const MAGNUM_RELOAD_TIME_COST:Array = [2000, 300, 400, 500, 600];
public static const PISTOL_NAME:String = "10mm Pistol (SINGLE SHOT)";
public static const ASSAULT_RIFLE_RATE_OF_FIRE:Array = [300, 350, 400, 450, 500];
public static const PISTOL_DESC:String = "Your starting gun. A classic. Single shot, moderate critical chance.";
public static const PISTOL_RADIUS:Number = 12;
public static const SHOTGUN_DATA:Array = [SHOTGUN_DAMAGE, SHOTGUN_RATE_OF_FIRE, SHOTGUN_RELOAD_TIME, SHOTGUN_SIZE, SHOTGUN_CRITICAL_CHANCE, SHOTGUN_RADIUS, SHOTGUN_CLASS, SHOTGUN_NAME, SHOTGUN_DESC];
public static const GAUSS_SIZE_COST:Array = [36000, 2000, 2500, 3000, 5000];
public static const ASSAULT_RIFLE_RADIUS:Number = 15;
public static const IDX_CLIP_SIZE:int = 3;
public static const IDX_RADIUS:int = 5;
public static const BOZAR_CLASS:int = 3;
public static const BOZAR_COST_DATA:Array = [BOZAR_DAMAGE_COST, BOZAR_RATE_OF_FIRE_COST, BOZAR_RELOAD_TIME_COST, BOZAR_SIZE_COST];
public static const SNIPER_CRITICAL_CHANCE:Number = 45;
public static const IDX_AK47:int = 3;
public static const PISTOL_CLASS:int = 0;
public static const PPK12_DAMAGE_COST:Array = [18000, 1250, 1500, 2000, 2500];
public static const SNIPER_RATE_OF_FIRE:Array = [100, 120, 150, 180, 210];
public static const PISTOL_RELOAD_TIME_COST:Array = [0, 150, 200, 300, 350];
public static const ASSAULT_RIFLE_NAME:String = "AK-47 (AUTOMATIC)";
public static const UZI_COST_DATA:Array = [UZI_DAMAGE_COST, UZI_RATE_OF_FIRE_COST, UZI_RELOAD_TIME_COST, UZI_CLIP_SIZE_COST];
public static const ASSAULT_RIFLE_DESC:String = "Perhaps the most known automatic assault rifle ever. Excellent overall weapon.";
public static const BOZAR_DATA:Array = [BOZAR_DAMAGE, BOZAR_RATE_OF_FIRE, BOZAR_RELOAD_TIME, BOZAR_SIZE, BOZAR_CRITICAL_CHANCE, BOZAR_RADIUS, BOZAR_CLASS, BOZAR_NAME, BOZAR_DESC];
public static const SHOTGUN_RATE_OF_FIRE_COST:Array = [6000, 500, 600, 750, 1000];
public static const SHOTGUN_SIZE:Array = [5, 6, 7, 8, 10];
public static const SNIPER_DAMAGE:Array = [50, 60, 70, 80, 90];
public static const MINIGUN_DATA:Array = [MINIGUN_DAMAGE, MINIGUN_RATE_OF_FIRE, MINIGUN_RELOAD_TIME, MINIGUN_SIZE, MINIGUN_CRITICAL_CHANCE, MINIGUN_RADIUS, MINIGUN_CLASS, MINIGUN_NAME, MINIGUN_DESC];
public static const UZI_DATA:Array = [UZI_DAMAGE, UZI_RATE_OF_FIRE, UZI_RELOAD_TIME, UZI_CLIP_SIZE, UZI_CRITICAL_CHANCE, UZI_RADIUS, UZI_CLASS, UZI_NAME, UZI_DESC];
public static const MAGNUM_RELOAD_TIME:Array = [70, 63, 55, 50, 45];
public static const MINIGUN_DAMAGE_COST:Array = [12000, 750, 1000, 1250, 1500];
public static const IDX_SNIPER:int = 5;
public static const HK_P90_RATE_OF_FIRE:Array = [300, 450, 550, 700, 800];
public static const MAGNUM_RATE_OF_FIRE_COST:Array = [2000, 400, 500, 600, 750];
public static const MAGNUM_CRITICAL_CHANCE:Number = 30;
public static const BOZAR_SIZE_COST:Array = [20000, 1250, 1500, 2000, 2500];
public static const MAGNUM_COST_DATA:Array = [MAGNUM_DAMAGE_COST, MAGNUM_RATE_OF_FIRE_COST, MAGNUM_RELOAD_TIME_COST, MAGNUM_CLIP_SIZE_COST];
public static const BIG_GUNS_CLASS_TYPE:int = 3;
public static const SNIPER_DATA:Array = [SNIPER_DAMAGE, SNIPER_RATE_OF_FIRE, SNIPER_RELOAD_TIME, SNIPER_SIZE, SNIPER_CRITICAL_CHANCE, SNIPER_RADIUS, SNIPER_CLASS, SNIPER_NAME, SNIPER_DESC];
public static const COMBAT_SHOTGUN_RELOAD_TIME_COST:Array = [15000, 1000, 1250, 1500, 2000];
public static const MAGNUM_RADIUS:Number = 15;
public static const PPK12_RATE_OF_FIRE_COST:Array = [18000, 1250, 1500, 2000, 2500];
public static const BOZAR_SIZE:Array = [45, 50, 55, 60, 65];
public static const MINIGUN_CRITICAL_CHANCE:Number = 0.5;
public static const PISTOL_RATE_OF_FIRE:Array = [120, 135, 150, 180, 210];
public static const PISTOL_CRITICAL_CHANCE:Number = 15;
public static const COMBAT_SHOTGUN_RELOAD_TIME:Array = [55, 50, 46, 43, 40];
public static const PPK12_RELOAD_TIME_COST:Array = [18000, 1250, 1500, 2000, 2500];
public static const MINIGUN_SIZE:Array = [350, 400, 500, 550, 600];
public static const PPK12_CLASS:int = 0;
public static const IDX_GAUSS_RIFLE:int = 11;
public static const HK_P90_RADIUS:Number = 8;
public static const COMBAT_SHOTGUN_CRITICAL_CHANCE:Number = 1;
public static const UZI_DAMAGE_COST:Array = [1000, 300, 400, 500, 600];
public static const IDX_MAGNUM:int = 2;
public static const HK_P90_DATA:Array = [HK_P90_DAMAGE, HK_P90_RATE_OF_FIRE, HK_P90_RELOAD_TIME, HK_P90_SIZE, HK_P90_CRITICAL_CHANCE, HK_P90_RADIUS, HK_P90_CLASS, HK_P90_NAME, HK_P90_DESC];
public static const PPK12_DESC:String = "Two stage coil gun. The speed of fired bullets make their damage extreme, highest critical rate amongst pistols.";
public static const PPK12_NAME:String = "Gauss Pistol (SINGLE SHOT)";
public static const SNIPER_SIZE:Array = [5, 6, 8, 10, 12];
public static const BOZAR_RADIUS:Number = 18;
public static const IDX_PISTOL:int = 0;
public static const UZI_RATE_OF_FIRE:Array = [500, 550, 600, 700, 800];
public static const PPK12_DAMAGE:Array = [60, 75, 90, 120, 150];
public static const BOZAR_RATE_OF_FIRE_COST:Array = [20000, 1250, 1500, 2000, 2500];
public static const ALL_WEAPON_COST_DATA_ARRAY:Array = [PISTOL_COST_DATA, UZI_COST_DATA, MAGNUM_COST_DATA, ASSAULT_RIFLE_COST_DATA, SHOTGUN_COST_DATA, SNIPER_COST_DATA, HK_P90_COST_DATA, MINIGUN_COST_DATA, COMBAT_SHOTGUN_COST_DATA, PPK12_COST_DATA, BOZAR_COST_DATA, GAUSS_COST_DATA];
public static const PISTOL_DATA:Array = new Array(PISTOL_DAMAGE, PISTOL_RATE_OF_FIRE, PISTOL_RELOAD_TIME, PISTOL_CLIP_SIZE, PISTOL_CRITICAL_CHANCE, PISTOL_RADIUS, PISTOL_CLASS, PISTOL_NAME, PISTOL_DESC);
public static const ASSAULT_RIFLE_RELOAD_TIME:Array = [70, 63, 55, 50, 45];
public static const IDX_RELOAD:int = 2;
public static const SNIPER_RATE_OF_FIRE_COST:Array = [8000, 600, 750, 1000, 1250];
public static const SHOTGUN_CRITICAL_CHANCE:Number = 1;
public static const MINIGUN_COST_DATA:Array = [MINIGUN_DAMAGE_COST, MINIGUN_RATE_OF_FIRE_COST, MINIGUN_RELOAD_TIME_COST, MINIGUN_SIZE_COST];
public static const PISTOL_CLASS_TYPE:int = 0;
public static const SNIPER_COST_DATA:Array = [SNIPER_DAMAGE_COST, SNIPER_RATE_OF_FIRE_COST, SNIPER_RELOAD_TIME_COST, SNIPER_SIZE_COST];
public static const BOZAR_RELOAD_TIME:Array = [55, 50, 47, 43, 40];
public static const HK_P90_SIZE:Array = [27, 30, 34, 37, 40];
public static const HK_P90_RELOAD_TIME:Array = [27, 24, 21, 18, 16];
public static const IDX_RATE_OF_FIRE:int = 1;
public static const IDX_UZI:int = 1;
public static const MAGNUM_DAMAGE_COST:Array = [2000, 400, 500, 600, 750];
public static const COMBAT_SHOTGUN_CLASS:int = 2;
public static const HK_P90_CRITICAL_CHANCE:Number = 2;
public static const ASSAULT_RIFLE_DATA:Array = [ASSAULT_RIFLE_DAMAGE, ASSAULT_RIFLE_RATE_OF_FIRE, ASSAULT_RIFLE_RELOAD_TIME, ASSAULT_RIFLE_SIZE, ASSAULT_RIFLE_CRITICAL_CHANCE, ASSAULT_RIFLE_RADIUS, ASSAULT_RIFLE_CLASS, ASSAULT_RIFLE_NAME, ASSAULT_RIFLE_DESC];
public static const IDX_MINIGUN:int = 7;
public static const UZI_DAMAGE:Array = [4, 5, 6, 7, 7.5];
public static const GAUSS_RELOAD_TIME:Array = [47, 43, 40, 36, 33];
public static const GAUSS_DAMAGE:Array = [105, 120, 135, 150, 180];
public static const SNIPER_RADIUS:Number = 8;
public static const SHOTGUN_DAMAGE:Array = [22, 25, 28, 30, 32];
public static const GAUSS_NAME:String = "Gauss Rifle (AUTOMATIC)";
public static const GAUSS_DESC:String = "Expands on two-staged coil concept. Best overall weapon. Critical hits happening almost as often as with sniper rifle.";
public static const MAGNUM_NAME:String = "Magnum (SINGLE SHOT)";
public static const COMBAT_SHOTGUN_DAMAGE_COST:Array = [15000, 1000, 1250, 1500, 2000];
public static const MAGNUM_DESC:String = "No explanation needed. Devastating gun, but somewhat lower rate of fire.";
public static const GAUSS_CRITICAL_CHANCE:Number = 20;
public static const SNIPER_SIZE_COST:Array = [8000, 600, 750, 1000, 1250];
public static const SNIPER_CLASS:int = 1;
public static const PPK12_COST_DATA:Array = [PPK12_DAMAGE_COST, PPK12_RATE_OF_FIRE_COST, PPK12_RELOAD_TIME_COST, PPK12_SIZE_COST];
public static const MINIGUN_SIZE_COST:Array = [12000, 750, 1000, 1250, 1500];
public static const SHOTGUN_RELOAD_TIME_COST:Array = [6000, 500, 600, 750, 1000];
public static const ASSAULT_RIFLE_SIZE:Array = [35, 45, 55, 65, 75];
public static const HK_P90_CLASS:int = 1;
public static const BOZAR_RELOAD_TIME_COST:Array = [20000, 1250, 1500, 2000, 2500];
public static const MINIGUN_RATE_OF_FIRE:Array = [600, 800, 1100, 1400, 1700];
public static const PPK12_DATA:Array = [PPK12_DAMAGE, PPK12_RATE_OF_FIRE, PPK12_RELOAD_TIME, PPK12_SIZE, PPK12_CRITICAL_CHANCE, PPK12_RADIUS, PPK12_CLASS, PPK12_NAME, PPK12_DESC];
public static const ASSAULT_RIFLE_CLASS:int = 1;
public static const ASSAULT_RIFLE_COST_DATA:Array = [ASSAULT_RIFLE_DAMAGE_COST, ASSAULT_RIFLE_RATE_OF_FIRE_COST, ASSAULT_RIFLE_RELOAD_TIME_COST, ASSAULT_RIFLE_SIZE_COST];
public static const ASSAULT_RIFLE_DAMAGE_COST:Array = [4500, 400, 500, 600, 800];
public static const HK_P90_RELOAD_TIME_COST:Array = [10000, 750, 1000, 1250, 1500];
public static const SNIPER_RELOAD_TIME:Array = [75, 70, 63, 55, 45];
public static const GAUSS_CLASS:int = 1;
public static const UZI_CLIP_SIZE_COST:Array = [1000, 300, 400, 500, 600];
public static const PPK12_SIZE_COST:Array = [18000, 1250, 1500, 2000, 2500];
public static const IDX_BOZAR:int = 10;
public static const PPK12_RADIUS:Number = 5;
public static const HK_P90_DAMAGE_COST:Array = [10000, 750, 1000, 1250, 1500];
public static const COMBAT_SHOTGUN_DAMAGE:Array = [40, 45, 50, 55, 60];
public static const IDX_CRIT_CHANCE:int = 4;
public static const BOZAR_DAMAGE_COST:Array = [20000, 1250, 1500, 2000, 2500];
public static const GAUSS_RATE_OF_FIRE:Array = [330, 360, 390, 420, 450];
public static const MAGNUM_RATE_OF_FIRE:Array = [100, 120, 150, 165, 180];
public static const CRITICAL_HIT_MULTIPLIER:Number = 3;
public static const COMBAT_SHOTGUN_NAME:String = "Combat shotgun (AUTOMATIC)";
public static const COMBAT_SHOTGUN_DESC:String = "Much faster version of regular shotgun.";
public static const GAUSS_DAMAGE_COST:Array = [36000, 3000, 5000, 7000, 10000];
public static const PPK12_SIZE:Array = [27, 30, 34, 37, 40];
public static const PISTOL_CLIP_SIZE:Array = [6, 7, 8, 9, 10];
public static const ASSAULT_RIFLE_SIZE_COST:Array = [4500, 400, 500, 600, 800];
public static const SHOTGUN_RELOAD_TIME:Array = [70, 63, 55, 50, 45];
public static const PISTOL_CLIP_SIZE_COST:Array = [0, 200, 250, 300, 400];
public static const UZI_RADIUS:Number = 10;
public static const MINIGUN_RELOAD_TIME_COST:Array = [12000, 750, 1000, 1250, 1500];
public static const PISTOL_RELOAD_TIME:Array = [55, 51, 47, 43, 40];
public static const SHOTGUN_RATE_OF_FIRE:Array = [70, 80, 90, 95, 100];
public static const PPK12_RATE_OF_FIRE:Array = [170, 190, 210, 240, 270];
public static const MINIGUN_CLASS:int = 3;
public static const MINIGUN_DAMAGE:Array = [6, 7, 8, 10, 12];
public static const SHOTGUN_RADIUS:Number = 35;
public static const GAUSS_RADIUS:Number = 5;
public static const GAUSS_DATA:Array = [GAUSS_DAMAGE, GAUSS_RATE_OF_FIRE, GAUSS_RELOAD_TIME, GAUSS_SIZE, GAUSS_CRITICAL_CHANCE, GAUSS_RADIUS, GAUSS_CLASS, GAUSS_NAME, GAUSS_DESC];
public static const MAGNUM_DATA:Array = [MAGNUM_DAMAGE, MAGNUM_RATE_OF_FIRE, MAGNUM_RELOAD_TIME, MAGNUM_CLIP_SIZE, MAGNUM_CRITICAL_CHANCE, MAGNUM_RADIUS, MAGNUM_CLASS, MAGNUM_NAME, MAGNUM_DESC];
public static const COMBAT_SHOTGUN_RATE_OF_FIRE_COST:Array = [15000, 1000, 1250, 1500, 2000];
public static const PISTOL_DAMAGE:Array = [10, 11, 12, 14, 16];
public static const COMBAT_SHOTGUN_COST_DATA:Array = [COMBAT_SHOTGUN_DAMAGE_COST, COMBAT_SHOTGUN_RATE_OF_FIRE_COST, COMBAT_SHOTGUN_RELOAD_TIME_COST, COMBAT_SHOTGUN_SIZE_COST];
public static const PPK12_CRITICAL_CHANCE:Number = 40;
public static const BOZAR_RATE_OF_FIRE:Array = [500, 600, 700, 800, 900];
public static const SHOTGUN_DESC:String = "Excellent damage, low rate of fire, great for crowd control.";
public static const SHOTGUN_NAME:String = "DB Shotgun (SINGLE SHOT)";
public static const SNIPER_DAMAGE_COST:Array = [8000, 600, 750, 1000, 1250];
public static const ASSAULT_RIFLE_DAMAGE:Array = [12, 14, 16, 18, 20];
public static const IDX_DAMAGE:int = 0;
public static const ASSAULT_RIFLE_RATE_OF_FIRE_COST:Array = [4500, 400, 500, 600, 800];
public static const UZI_CLIP_SIZE:Array = [25, 30, 35, 40, 45];
public static const IDX_HKP90:int = 6;
public static const COMBAT_SHOTGUN_RATE_OF_FIRE:Array = [150, 180, 210, 230, 250];
public static const GAUSS_SIZE:Array = [40, 45, 50, 55, 60];
public static const IDX_PPK12_GAUSS:int = 9;
public static const ASSAULT_RIFLE_RELOAD_TIME_COST:Array = [4500, 400, 500, 600, 800];
public static const MAGNUM_CLASS:int = 0;
public static const UZI_RELOAD_TIME_COST:Array = [1000, 300, 400, 500, 600];
public static const MINIGUN_RATE_OF_FIRE_COST:Array = [12000, 750, 1000, 1250, 1500];
public static const MAGNUM_CLIP_SIZE_COST:Array = [2000, 300, 400, 500, 600];
public static const UZI_RATE_OF_FIRE_COST:Array = [1000, 300, 400, 500, 600];
public static const BOZAR_NAME:String = "Bozar (AUTOMATIC)";
public static const BOZAR_DESC:String = "Ultimate crowd control heavy gun.";
public static const UZI_CLASS:int = 1;
public static const PPK12_RELOAD_TIME:Array = [33, 30, 27, 24, 21];
public static const MINIGUN_NAME:String = "Personal Minigun (AUTOMATIC)";
public static const MAGNUM_CLIP_SIZE:Array = [6, 7, 8, 10, 12];
public static const UZI_NAME:String = "10mm-SMG (AUTOMATIC)";
public static const MINIGUN_DESC:String = "If massive slaughter is your choice then minigun is the way to go.";
public static const UZI_DESC:String = "Very fine automatic weapon. Excellent fire rate, but low damage and critical chance.";
public static const IDX_COMBAT_SGUN:int = 8;
public static const RIFLE_CLASS_TYPE:int = 1;
public static const HK_P90_RATE_OF_FIRE_COST:Array = [10000, 750, 1000, 1250, 1500];
public static const SHOTGUN_CLASS_TYPE:int = 2;
public static const SHOTGUN_CLASS:int = 2;
public static const SHOTGUN_COST_DATA:Array = [SHOTGUN_DAMAGE_COST, SHOTGUN_RATE_OF_FIRE_COST, SHOTGUN_RELOAD_TIME_COST, SHOTGUN_SIZE_COST];
public static const SHOTGUN_DAMAGE_COST:Array = [6000, 500, 600, 750, 1000];
public static const HK_P90_COST_DATA:Array = [HK_P90_DAMAGE_COST, HK_P90_RATE_OF_FIRE_COST, HK_P90_RELOAD_TIME_COST, HK_P90_SIZE_COST];
public static const COMBAT_SHOTGUN_SIZE_COST:Array = [15000, 1000, 1250, 1500, 2000];
public static const COMBAT_SHOTGUN_RADIUS:Number = 30;
public static const PISTOL_DAMAGE_COST:Array = [0, 250, 300, 350, 400];
public static const IDX_WEAPON_CLASS:int = 6;
public static const UZI_CRITICAL_CHANCE:Number = 2;
public static const MAGNUM_DAMAGE:Array = [25, 28, 32, 37, 45];
public static const MINIGUN_RELOAD_TIME:Array = [110, 100, 90, 85, 80];
public static const SNIPER_DESC:String = "Devastating damage, great precision and excellent critical chance make this gun very popular.";
public static const SNIPER_NAME:String = "Sniper (SINGLE SHOT)";
public static const COMBAT_SHOTGUN_DATA:Array = [COMBAT_SHOTGUN_DAMAGE, COMBAT_SHOTGUN_RATE_OF_FIRE, COMBAT_SHOTGUN_RELOAD_TIME, COMBAT_SHOTGUN_SIZE, COMBAT_SHOTGUN_CRITICAL_CHANCE, COMBAT_SHOTGUN_RADIUS, COMBAT_SHOTGUN_CLASS, COMBAT_SHOTGUN_NAME, COMBAT_SHOTGUN_DESC];
public static const GAUSS_RATE_OF_FIRE_COST:Array = [36000, 3000, 5000, 7000, 10000];
public static const GAUSS_COST_DATA:Array = [GAUSS_DAMAGE_COST, GAUSS_RATE_OF_FIRE_COST, GAUSS_RELOAD_TIME_COST, GAUSS_SIZE_COST];
public static var BOZAR_UPGRADE_DATA:Array;
public static var COMBAT_SHOTGUN_UPGRADE_DATA:Array;
public static var SNIPER_UPGRADE_DATA:Array;
public static var HK_P90_UPGRADE_DATA:Array;
public static var PISTOL_UPGRADE_DATA:Array;
public static var ALL_WEAPON_UPGRADES:Array;
public static var UZI_UPGRADE_DATA:Array;
public static var ASSSAULT_RIFLE_UPGRADE_DATA:Array;
public static var MINIGUN_UPGRADE_DATA:Array;
public static var EQUIPPED_WEAPON_IDX:int;
public static var GAUSS_UPGRADE_DATA:Array;
public static var MAGNUM_UPGRADE_DATA:Array;
public static var PPK12_UPGRADE_DATA:Array;
public static var SHOTGUN_UPGRADE_DATA:Array;
public static var ALL_WEAPON_OWNERSHIP:Array = [true, false, false, false, false, false, false, false, false, false, false, false];
public static function Init():void{
ALL_WEAPON_OWNERSHIP = [true, false, false, false, false, false, false, false, false, false, false, false];
EQUIPPED_WEAPON_IDX = 0;
PISTOL_UPGRADE_DATA = [0, 0, 0, 0];
UZI_UPGRADE_DATA = [0, 0, 0, 0];
MAGNUM_UPGRADE_DATA = [0, 0, 0, 0];
ASSSAULT_RIFLE_UPGRADE_DATA = [0, 0, 0, 0];
SHOTGUN_UPGRADE_DATA = [0, 0, 0, 0];
SNIPER_UPGRADE_DATA = [0, 0, 0, 0];
HK_P90_UPGRADE_DATA = [0, 0, 0, 0];
MINIGUN_UPGRADE_DATA = [0, 0, 0, 0];
COMBAT_SHOTGUN_UPGRADE_DATA = [0, 0, 0, 0];
PPK12_UPGRADE_DATA = [0, 0, 0, 0];
BOZAR_UPGRADE_DATA = [0, 0, 0, 0];
GAUSS_UPGRADE_DATA = [0, 0, 0, 0];
ALL_WEAPON_UPGRADES = [PISTOL_UPGRADE_DATA, UZI_UPGRADE_DATA, MAGNUM_UPGRADE_DATA, ASSSAULT_RIFLE_UPGRADE_DATA, SHOTGUN_UPGRADE_DATA, SNIPER_UPGRADE_DATA, HK_P90_UPGRADE_DATA, MINIGUN_UPGRADE_DATA, COMBAT_SHOTGUN_UPGRADE_DATA, PPK12_UPGRADE_DATA, BOZAR_UPGRADE_DATA, GAUSS_UPGRADE_DATA];
}
}
}//package src.Game.GameData
Section 52
//Base (src.Game.Gameplay.Base.Base)
package src.Game.Gameplay.Base {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class Base extends FrameablePMC {
private const BASE_TEXT_ARRAY:Array;
private var frame1TH:Number;
public var commentDuration:int;// = 155
public var myTxt:TextField;
private var smokeArray:Array;
public var hitPoints:Number;
public var commentDurationCounter:int;// = 0
public var commentFlag:Boolean;// = false
private var myT:TextField;
public var repairDeltaTime:int;
private var frame2TH:Number;
public var frameCount:int;// = 0
public var repairMan:int;
public var commentOccurance:int;// = 775
public var hpCounter:HPCounter;
public function Base(_arg1:DisplayObjectContainer){
hitPoints = BaseModel.hitPoints;
frameCount = 0;
commentDuration = (Constants.FPS * 5);
commentDurationCounter = 0;
commentFlag = false;
commentOccurance = (25 * Constants.FPS);
frame1TH = (BaseModel.maxHitPoints * 0.66);
frame2TH = (BaseModel.maxHitPoints * 0.33);
smokeArray = [];
BASE_TEXT_ARRAY = ["...great, now I'm stranded in this godforsaken hut forever...", " ... #$%& you golden skull ...", " ... you'll never get me alive...", " ...I should have became a lawyer... or a dentist...", " #$%&!!!", "... I am so screwed... ", "... of all the graves in the world...", "... ffs, how long will this last...", "...woot, more zombies", "... tomb raiding ftw, yeah right...", "... okay I got it, I'll never touch your precious skull again...", "dieeeeee!!!!", "...scumbags...", "...should have stayed at home to play some cool games...", "...grave robbing can't get uglier than this", "well... um... I guess it can always get worse for you in life", "I am dreaming, I'm gonna wake up every moment now...", "shiizzz... this sucks", "... I'm gonna kill every single one of you ...", " ... these monsters are annoying ...", "... way to go mr. Tomb Raider ...", "... how many of these guys are there ...", "... no more zombies, please ...", "... I'll just shoot them until they're dead ...", "... bullet for the undead ...", "... a bit of help here perhaps ...", "WTF??", "...Joey, you've really done it this time...", "... I'm in it only for the money..."];
super(_arg1, Gameplay.baseArray, new Point(410, 290));
scaleX = (scaleY = 1.11);
gotoAndStop(1);
myT = TextField(myTxt);
cacheAsBitmap = true;
}
public function addRandomSmoke():void{
var _local1:Number;
var _local2:Number;
var _local3:MovieClip;
if (smokeArray.length > 4){
return;
};
_local1 = ((40 + (Math.random() * 100)) + x);
_local2 = ((40 + (Math.random() * 80)) + y);
_local3 = new Explosion(Constants.GAME_CONTAINER, smokeArray, new Point(_local1, _local2));
}
public function Init():void{
var _local1:int;
var _local2:Number;
rotation = 0;
smokeArray = [];
this.repairMan = (MiscUpgradeData.UPGRADE_LVL_ARRAY[MiscUpgradeData.IDX_REPAIRMEN] * MiscUpgradeData.REPAIRMAN_HP_PER_LEVEL_PER_MINUTE);
_local1 = (Constants.FPS * 60);
_local2 = (1 - ((PerkData.PERK_DATA[PerkData.IDX_REPAIR_MASTER] * PerkData.REPAIR) * 0.01));
repairDeltaTime = Math.ceil(((_local2 * _local1) / repairMan));
this.frameArray = Gameplay.baseArray;
Gameplay.baseArray.push(this);
hpCounter = new HPCounter(BaseModel.hitPoints, BaseModel.maxHitPoints);
manageAnimation();
hitPoints = BaseModel.hitPoints;
frame1TH = (BaseModel.maxHitPoints * 0.66);
frame2TH = (BaseModel.maxHitPoints * 0.33);
}
private function manageAnimation():void{
if (hitPoints > frame1TH){
gotoAndStop(1);
} else {
if (hitPoints > frame2TH){
gotoAndStop(2);
} else {
gotoAndStop(3);
};
};
}
override public function onFrame():void{
var _local1:int;
var _local2:int;
hitPoints = BaseModel.TakeDamage(0);
manageAnimation();
if ((frameCount++ % repairDeltaTime) == (repairDeltaTime - 1)){
BaseModel.Repair(1);
hpCounter.updateHPCounter(BaseModel.hitPoints);
};
_local1 = smokeArray.length;
while (_local1-- > 0) {
smokeArray[_local1].onFrame();
};
if ((frameCount % commentOccurance) == (5 * Constants.FPS)){
myT = TextField(myTxt);
commentFlag = true;
_local2 = Math.floor((Math.random() * BASE_TEXT_ARRAY.length));
myT.text = ("" + BASE_TEXT_ARRAY[_local2]);
trace("TEXT");
};
if (commentFlag == true){
commentDurationCounter++;
if (commentDurationCounter == commentDuration){
commentDurationCounter = 0;
commentFlag = false;
myT.text = "";
};
};
}
public function takeDamage(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
_local2 = (PerkData.ENGINEERING * PerkData.PERK_DATA[PerkData.IDX_ENGINEERING]);
_local3 = ((1 - (_local2 * 0.01)) * _arg1);
hitPoints = BaseModel.TakeDamage(_local3);
hpCounter.updateHPCounter(hitPoints);
manageAnimation();
if (hitPoints <= 0){
dispatchEvent(new BaseEvent(BaseEvent.KILLED));
};
}
}
}//package src.Game.Gameplay.Base
Section 53
//BaseEvent (src.Game.Gameplay.Base.BaseEvent)
package src.Game.Gameplay.Base {
import flash.events.*;
public class BaseEvent extends Event {
public static const KILLED:String = "string";
public function BaseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("BaseEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new BaseEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay.Base
Section 54
//BaseModel (src.Game.Gameplay.Base.BaseModel)
package src.Game.Gameplay.Base {
import src.Game.GameData.*;
public class BaseModel {
public static var instantDeaths:int;
public static var zombiesKilled:int;
public static var maxHitPoints:int;
public static var baseLevel:int;
public static var totalDamageTaken:int;
public static var hitPoints:Number;
public static var repairsLevel:int;
public static function FullyRepaired():Boolean{
if (hitPoints == maxHitPoints){
return (true);
};
return (false);
}
public static function InitBaseData():void{
instantDeaths = 0;
zombiesKilled = 0;
totalDamageTaken = 0;
baseLevel = 0;
repairsLevel = 0;
maxHitPoints = BaseData.BASE_HP;
hitPoints = maxHitPoints;
}
public static function Repair(_arg1:int):void{
hitPoints = (hitPoints + _arg1);
if (hitPoints > maxHitPoints){
hitPoints = maxHitPoints;
};
}
public static function IncreaseMaxHP(_arg1):void{
maxHitPoints = (maxHitPoints + _arg1);
hitPoints = (hitPoints + _arg1);
}
public static function RepairToFull():void{
hitPoints = maxHitPoints;
}
public static function InitHP():void{
maxHitPoints = (BaseData.BASE_HP + (BaseData.BASE_HP_PER_UPGRADE * baseLevel));
}
public static function TakeDamage(_arg1:Number):Number{
hitPoints = (hitPoints - _arg1);
totalDamageTaken = (totalDamageTaken + _arg1);
return (hitPoints);
}
}
}//package src.Game.Gameplay.Base
Section 55
//Explosion (src.Game.Gameplay.Base.Explosion)
package src.Game.Gameplay.Base {
import flash.display.*;
import flash.geom.*;
import utils.parentedmovieclip.*;
public class Explosion extends FrameablePMC {
public function Explosion(_arg1:DisplayObjectContainer, _arg2:Array, _arg3:Point){
super(_arg1, _arg2, _arg3);
}
override public function onFrame():void{
if (currentFrame == totalFrames){
remove();
};
}
}
}//package src.Game.Gameplay.Base
Section 56
//CollisionManager (src.Game.Gameplay.Collision.CollisionManager)
package src.Game.Gameplay.Collision {
import flash.events.*;
import src.Game.Gameplay.Weapon.*;
import flash.geom.*;
import src.Game.Gameplay.Enemies.*;
import src.Game.Gameplay.Base.*;
import src.Game.Gameplay.*;
import src.Game.Gameplay.Turrets.*;
import src.Game.GameData.*;
import src.Game.Gameplay.ParticleEffect.*;
public class CollisionManager extends EventDispatcher {
private var enemyArray:Array;
public function CollisionManager(_arg1:Array){
this.enemyArray = _arg1;
}
public function returnStrongestEnemyIdx():int{
var _local1:int;
var _local2:int;
var _local3:Number;
var _local4:Enemy;
_local1 = enemyArray.length;
_local2 = -1;
_local3 = 0;
while (_local1-- > 0) {
_local4 = Enemy(enemyArray[_local1]);
if (_local4.hitPoints > _local3){
_local3 = _local4.hitPoints;
_local2 = _local1;
};
};
return (_local2);
}
public function enemyToAmmoCollision(_arg1:Hero, _arg2:Weapon):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:int;
var _local7:Boolean;
var _local8:Enemy;
var _local9:ParticleExplosion;
var _local10:Explosion;
_local3 = (_arg1.diameter / 4);
_local4 = Math.floor((_arg1.x + ((-1 + (2 * Math.random())) * _local3)));
_local5 = Math.floor((_arg1.y + ((-1 + (2 * Math.random())) * _local3)));
_local6 = enemyArray.length;
_local7 = false;
while (_local6-- > 0) {
_local8 = Enemy(enemyArray[_local6]);
if (_arg2.weaponTypeIdx == WeaponData.SHOTGUN_CLASS_TYPE){
if (distance(new Point(_arg1.x, _arg1.y), new Point(_local8.x, _local8.y)) < (2 * _local3)){
_local8.takeDamage(_arg2.damage, _arg2.criticalChance, _arg2.weaponTypeIdx);
if (!(_local8 is Enemy7)){
_local9 = new ParticleExplosion(new Point(_arg1.x, _arg1.y), 0);
};
_local7 = true;
};
} else {
if (distance(new Point(_arg1.x, _arg1.y), new Point(_local8.x, _local8.y)) < (_local8.defaultWidth + (2 * _local3))){
if (((((_local8.hitTestPoint((_local4 + 3), _local5)) || (_local8.hitTestPoint(_local4, _local5)))) || (_local8.hitTestPoint((_local4 + 5), _local5)))){
_local8.takeDamage(_arg2.damage, _arg2.criticalChance, _arg2.weaponTypeIdx);
if (!(_local8 is Enemy7)){
_local9 = new ParticleExplosion(new Point(_arg1.x, _arg1.y), 0);
};
return;
};
};
};
};
if ((((_local7 == false)) && ((Constants.GAME_CONTAINER.stage.mouseY > 200)))){
_local9 = new ParticleExplosion(new Point(_local4, _local5), 1);
if (Gameplay.explosionArray.length < 6){
_local10 = new Explosion(Constants.GAME_CONTAINER, Gameplay.explosionArray, new Point(_local4, _local5));
};
};
}
public function enemyToHelicopterCollision(_arg1:HeliTurret):void{
var _local2:int;
var _local3:Enemy;
_local2 = returnStrongestEnemyIdx();
if (_local2 >= 0){
_local3 = Enemy(enemyArray[_local2]);
_local3.takeDamage(_arg1.damage, 0, -1);
};
}
public function distance(_arg1:Point, _arg2:Point):Number{
var _local3:Number;
var _local4:Number;
_local3 = (_arg1.x - _arg2.x);
_local4 = (_arg1.y - _arg2.y);
return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
}
public function returnClosestEnemyIdx():int{
var _local1:int;
var _local2:int;
var _local3:Number;
var _local4:Enemy;
_local1 = enemyArray.length;
_local2 = -1;
_local3 = 0;
while (_local1-- > 0) {
_local4 = Enemy(enemyArray[_local1]);
if (_local4.x > _local3){
_local3 = _local4.x;
_local2 = _local1;
};
};
return (_local2);
}
public function enemyToTurretCollision(_arg1:BaseTurret):void{
var _local2:int;
var _local3:Enemy;
_local2 = returnClosestEnemyIdx();
if (_local2 >= 0){
_local3 = Enemy(enemyArray[_local2]);
_local3.takeDamage(_arg1.damage, 0, -1);
};
}
}
}//package src.Game.Gameplay.Collision
Section 57
//CriticalHitAnim (src.Game.Gameplay.Enemies.CriticalHitAnim)
package src.Game.Gameplay.Enemies {
import flash.display.*;
import flash.geom.*;
import utils.parentedmovieclip.*;
public class CriticalHitAnim extends FrameablePMC {
public function CriticalHitAnim(_arg1:DisplayObjectContainer, _arg2:Array, _arg3:Point){
super(_arg1, _arg2, _arg3);
scaleX = (scaleY = 1.5);
rotation = -135;
}
override public function onFrame():void{
if (currentFrame == totalFrames){
remove();
};
}
}
}//package src.Game.Gameplay.Enemies
Section 58
//CriticalHitEvent (src.Game.Gameplay.Enemies.CriticalHitEvent)
package src.Game.Gameplay.Enemies {
import flash.events.*;
public class CriticalHitEvent extends Event {
public static const CRIT:String = "crit";
public function CriticalHitEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("CriticalHitEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new CriticalHitEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay.Enemies
Section 59
//Enemy (src.Game.Gameplay.Enemies.Enemy)
package src.Game.Gameplay.Enemies {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Gameplay.*;
import src.Game.Achievements.*;
import src.Game.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
public class Enemy extends FrameablePMC {
private const FRAMES_TO_DIE:int = 160;
public var defaultWidth:int;
private var hpMax:int;
public var myState:int;
private var defaultAttackYCoord:int;// = 350
public var hitPoints:int;
public var myTotalY:Number;
public var myIdx:int;
public var damage:int;
public var cashPrize:Number;
public var frameCount:int;// = 0
public var attackXCoord:int;
public var base:Base;
private var FRAMES_TO_DEALPHA:int;// = 40
public var velocity:Number;
public var framesToShoot:Number;
public static const STATE_ATTACK:int = 1;
public static const STATE_DIE:int = 2;
public static const STATE_RUN:int = 0;
public static var criticalHit:Boolean = false;
public function Enemy(_arg1:Point, _arg2:int, _arg3:Number, _arg4:int, _arg5:Number, _arg6:int, _arg7:Base, _arg8:Number){
var _local9:Number;
var _local10:Number;
var _local11:Number;
frameCount = 0;
FRAMES_TO_DEALPHA = (FRAMES_TO_DIE / 4);
defaultAttackYCoord = 350;
this.cashPrize = _arg8;
this.base = _arg7;
this.attackXCoord = _arg4;
this.hitPoints = (_arg2 * (1 + (0.25 * Game.difficulty)));
this.velocity = _arg3;
this.framesToShoot = _arg5;
this.damage = _arg6;
this.hpMax = _arg2;
defaultWidth = width;
_local9 = _arg1.y;
_local10 = (_local9 - defaultAttackYCoord);
_local11 = (_local10 / 3);
this.attackXCoord = (this.attackXCoord + _local11);
super(Constants.GAME_CONTAINER, Gameplay.enemyArray, _arg1);
manageDepth();
gotoRunState();
}
protected function attack():void{
var _local1:MovieClip;
_local1 = MovieClip(getChildAt(0));
if ((frameCount % framesToShoot) == 0){
_local1.gotoAndPlay(1);
};
if (_local1.currentFrame == 1){
_local1.gotoAndPlay(2);
};
if (_local1.currentFrame == (_local1.totalFrames - 1)){
_local1.gotoAndStop(_local1.totalFrames);
base.takeDamage(damage);
SoundManagerClass.PlayAttackSound(myIdx);
};
}
private function gotoRunState():void{
myState = STATE_RUN;
gotoAndStop((myState + 1));
}
protected function gotoDieState():void{
if (myState != STATE_DIE){
cacheAsBitmap = true;
dispatchEvent(new EnemyDeadEvent(EnemyDeadEvent.DEAD));
myState = STATE_DIE;
gotoAndStop((myState + 1));
};
}
protected function die():void{
var _local1:MovieClip;
if (numChildren > 0){
_local1 = MovieClip(getChildAt(0));
if (_local1){
if (_local1.currentFrame == (_local1.totalFrames - 1)){
frameCount = 0;
_local1.gotoAndStop(_local1.totalFrames);
};
if (_local1.currentFrame == _local1.totalFrames){
if ((frameCount % FRAMES_TO_DEALPHA) == 0){
alpha = (alpha - 0.2);
};
if (frameCount == FRAMES_TO_DIE){
remove();
};
};
};
};
}
private function manageDepth():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Enemy;
var _local5:Number;
var _local6:Enemy;
var _local7:int;
myTotalY = (y + (height / 2));
Gameplay.enemyArray = Gameplay.enemyArray.sortOn("myTotalY", Array.NUMERIC);
_local1 = frameArray.length;
_local2 = frameArray.indexOf(this);
_local3 = -1;
while (_local1-- > 0) {
_local4 = frameArray[_local1];
_local5 = _local4.myTotalY;
if (myTotalY < _local5){
_local3 = _local1;
};
};
if (_local3 > 0){
_local6 = Enemy(frameArray[_local3]);
_local7 = parent.getChildIndex(_local6);
parent.addChildAt(this, _local7);
};
}
protected function run():void{
x = (x + velocity);
if (x > attackXCoord){
gotoAttackState();
};
}
private function gotoAttackState():void{
myState = STATE_ATTACK;
frameCount = 0;
gotoAndStop((myState + 1));
}
override public function onFrame():void{
var _local1:Number;
frameCount++;
if ((frameCount % 50) == 1){
_local1 = (PerkData.HATRED * PerkData.PERK_DATA[PerkData.IDX_HATRED]);
if ((Math.random() * 100) <= _local1){
trace("HATRED");
gotoDieState();
};
};
if (myState == STATE_RUN){
run();
} else {
if (myState == STATE_ATTACK){
attack();
} else {
if (myState == STATE_DIE){
die();
} else {
throw (new Error("Invalid State"));
};
};
};
if ((((((((x < -50)) || ((x > 600)))) || ((y < 0)))) || ((y > 510)))){
die();
};
}
public function stopAnimation():void{
var _local1:MovieClip;
_local1 = MovieClip(getChildAt(0));
_local1.gotoAndStop(_local1.currentFrame);
}
public function takeDamage(_arg1:Number, _arg2:Number, _arg3:int):void{
var _local4:Number;
var _local5:CriticalHitAnim;
var _local6:Number;
var _local7:Number;
if (hitPoints == hpMax){
if (_arg1 >= hpMax){
BaseModel.instantDeaths++;
if (BaseModel.instantDeaths == 666){
AchievementManager.setAchievement(AchievementManager.IDX_SATAN, Constants.GAME_CONTAINER);
};
};
};
_local4 = _arg1;
if (_arg1 < hpMax){
x = (x - int(((_arg1 / hpMax) * 10)));
} else {
x = (x - 6);
};
if ((Math.random() * 100) < _arg2){
dispatchEvent(new CriticalHitEvent(CriticalHitEvent.CRIT));
_local4 = (_local4 * WeaponData.CRITICAL_HIT_MULTIPLIER);
_local4 = (_local4 + 20);
_local5 = new CriticalHitAnim(parent, Gameplay.explosionArray, new Point((x - width), y));
SoundManagerClass.playSound("CriticalHitSound", 0.2);
if (criticalHit == false){
criticalHit = true;
AchievementManager.setAchievement(AchievementManager.IDX_SHARP_EYE, Constants.GAME_CONTAINER);
};
_local6 = (PerkData.DEATHCRAFT * PerkData.PERK_DATA[PerkData.IDX_DEATHCRAFT]);
if ((Math.random() * 100) < _local6){
gotoDieState();
trace("INSTA_DEATH");
return;
};
if (_arg3 == WeaponData.PISTOL_CLASS_TYPE){
_local7 = ((0.01 * PerkData.PISTOLERO_CRITICAL_DAMAGE) * PerkData.PERK_DATA[PerkData.IDX_PISTOLERO]);
_local4 = (_local4 * (1 + _local7));
};
};
hitPoints = (hitPoints - _local4);
if (hitPoints <= 0){
gotoDieState();
};
}
}
}//package src.Game.Gameplay.Enemies
Section 60
//Enemy2 (src.Game.Gameplay.Enemies.Enemy2)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Achievements.*;
import src.Game.*;
public class Enemy2 extends Enemy {
public static const CASH_PRIZE:Number = 100;
public static const DAMAGE:Number = 2;
public static const FRAMES_TO_SHOOT:Number = 40;
public static const HIT_POINTS:Number = 65;
public static const ATTACK_POINT:Number = 300;
public static const VELOCITY:Number = 1;
public static var killedCount:int = 0;
public function Enemy2(_arg1:Base){
var _local2:Point;
myIdx = 1;
_local2 = new Point(0, (300 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
SoundManagerClass.playSound("Enemy2DieSound", 0.66);
if (killedCount++ == 10){
AchievementManager.setAchievement(AchievementManager.IDX_BUTCHER, Game.GAME_DISPLAY_CONTAINER);
};
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 61
//Enemy3 (src.Game.Gameplay.Enemies.Enemy3)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.*;
public class Enemy3 extends Enemy {
public static const CASH_PRIZE:Number = 150;
public static const DAMAGE:Number = 1;
public static const FRAMES_TO_SHOOT:Number = 30;
public static const HIT_POINTS:Number = 75;
public static const ATTACK_POINT:Number = 300;
public static const VELOCITY:Number = 8;
public function Enemy3(_arg1:Base){
var _local2:Point;
myIdx = 2;
_local2 = new Point(0, (300 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
SoundManagerClass.playSound("Enemy3DieSound", 0.33);
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 62
//Enemy4 (src.Game.Gameplay.Enemies.Enemy4)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.*;
public class Enemy4 extends Enemy {
public static const CASH_PRIZE:Number = 175;
public static const DAMAGE:Number = 5;
public static const FRAMES_TO_SHOOT:Number = 60;
public static const HIT_POINTS:Number = 120;
public static const ATTACK_POINT:Number = 390;
public static const VELOCITY:Number = 4;
public function Enemy4(_arg1:Base){
var _local2:Point;
myIdx = 3;
_local2 = new Point(0, (300 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
SoundManagerClass.playSound("Enemy4DieSound", 0.33);
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 63
//Enemy5 (src.Game.Gameplay.Enemies.Enemy5)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.*;
public class Enemy5 extends Enemy {
public static const CASH_PRIZE:Number = 200;
public static const DAMAGE:Number = 5;
public static const FRAMES_TO_SHOOT:Number = 60;
public static const HIT_POINTS:Number = 250;
public static const ATTACK_POINT:Number = 300;
public static const VELOCITY:Number = 4;
public function Enemy5(_arg1:Base){
var _local2:Point;
myIdx = 4;
_local2 = new Point(0, (300 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
SoundManagerClass.playSound("Enemy5DieSound", 0.33);
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 64
//Enemy6 (src.Game.Gameplay.Enemies.Enemy6)
package src.Game.Gameplay.Enemies {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.*;
public class Enemy6 extends Enemy {
public static const CASH_PRIZE:Number = 250;
public static const DAMAGE:Number = 12;
public static const FRAMES_TO_SHOOT:Number = 100;
public static const HIT_POINTS:Number = 400;
public static const ATTACK_POINT:Number = 200;
public static const VELOCITY:Number = 3;
public function Enemy6(_arg1:Base){
var _local2:Point;
myIdx = 5;
_local2 = new Point(0, (300 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function attack():void{
var _local1:int;
var _local2:Number;
var _local3:MovieClip;
_local1 = 40;
_local2 = (damage / _local1);
_local3 = MovieClip(getChildAt(0));
if ((frameCount % framesToShoot) == 0){
_local3.gotoAndPlay(1);
};
if (_local3.currentFrame == 1){
_local3.gotoAndPlay(2);
};
if ((((_local3.currentFrame >= 45)) && ((_local3.currentFrame <= (45 + _local1))))){
base.takeDamage(_local2);
};
if (_local3.currentFrame == (_local3.totalFrames - 1)){
_local3.gotoAndStop(_local3.totalFrames);
};
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
SoundManagerClass.playSound("Enemy6DieSound", 0.33);
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 65
//Enemy7 (src.Game.Gameplay.Enemies.Enemy7)
package src.Game.Gameplay.Enemies {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Achievements.*;
import src.Game.*;
import src.Game.GameData.*;
public class Enemy7 extends Enemy {
public static const CASH_PRIZE:Number = 300;
public static const DAMAGE:Number = 20;
public static const FRAMES_TO_SHOOT:Number = 100;
public static const HIT_POINTS:Number = 600;
public static const ATTACK_POINT:Number = 100;
public static const VELOCITY:Number = 3;
public function Enemy7(_arg1:Base){
var _local2:Point;
myIdx = 6;
_local2 = new Point(0, (150 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function attack():void{
var _local1:int;
var _local2:Number;
var _local3:MovieClip;
_local1 = 30;
_local2 = (damage / _local1);
_local3 = MovieClip(getChildAt(0));
if ((frameCount % framesToShoot) == 0){
_local3.gotoAndPlay(1);
};
if (_local3.currentFrame == 1){
_local3.gotoAndPlay(2);
};
if ((((_local3.currentFrame >= 50)) && ((_local3.currentFrame <= (50 + _local1))))){
base.takeDamage(_local2);
};
if (_local3.currentFrame == (_local3.totalFrames - 1)){
_local3.gotoAndStop(_local3.totalFrames);
};
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
if (Game.difficulty > 0){
AchievementManager.setAchievement(AchievementManager.IDX_ALIENTASTIC, Constants.GAME_CONTAINER);
};
super.gotoDieState();
}
override public function onFrame():void{
super.onFrame();
}
}
}//package src.Game.Gameplay.Enemies
Section 66
//Enemy8 (src.Game.Gameplay.Enemies.Enemy8)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Achievements.*;
import src.Game.*;
import src.Game.GameData.*;
public class Enemy8 extends Enemy {
public static const CASH_PRIZE:Number = 600;
public static const DAMAGE:Number = 20;
public static const FRAMES_TO_SHOOT:Number = 100;
public static const HIT_POINTS:Number = 5000;
public static const ATTACK_POINT:Number = 200;
public static const VELOCITY:Number = 2;
public function Enemy8(_arg1:Base){
var _local2:Point;
myIdx = 7;
_local2 = new Point(0, (300 + (Math.random() * 100)));
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
if (myState == STATE_DIE){
return;
};
SoundManagerClass.playSound("Enemy6DieSound", 0.33);
if (Game.difficulty >= 0){
AchievementManager.setAchievement(AchievementManager.IDX_GOLEM_KILLER, Constants.GAME_CONTAINER);
};
super.gotoDieState();
}
override protected function run():void{
var _local1:int;
_local1 = (frameCount % 160);
if ((((_local1 > 40)) && ((_local1 < 80)))){
return;
};
if ((((_local1 > 120)) && ((_local1 < 160)))){
return;
};
super.run();
}
}
}//package src.Game.Gameplay.Enemies
Section 67
//EnemyCreatedEvent (src.Game.Gameplay.Enemies.EnemyCreatedEvent)
package src.Game.Gameplay.Enemies {
import flash.events.*;
public class EnemyCreatedEvent extends Event {
public var enemy:Enemy;
public static const ENEMY_CREATED:String = "created";
public function EnemyCreatedEvent(_arg1:String, _arg2:Enemy, _arg3:Boolean=false, _arg4:Boolean=false){
this.enemy = _arg2;
super(_arg1, _arg3, _arg4);
}
override public function toString():String{
return (formatToString("EnemyCreatedEvent", "enemy", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new EnemyCreatedEvent(type, enemy, bubbles, cancelable));
}
}
}//package src.Game.Gameplay.Enemies
Section 68
//EnemyDeadEvent (src.Game.Gameplay.Enemies.EnemyDeadEvent)
package src.Game.Gameplay.Enemies {
import flash.events.*;
public class EnemyDeadEvent extends Event {
public static const DEAD:String = "dead";
public function EnemyDeadEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("EnemyDeadEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new EnemyDeadEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay.Enemies
Section 69
//WalkingZombie (src.Game.Gameplay.Enemies.WalkingZombie)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Achievements.*;
import src.Game.*;
public class WalkingZombie extends Enemy {
public var walk:enemy1walk;
public static const CASH_PRIZE:Number = 50;
public static const DAMAGE:Number = 1;
public static const FRAMES_TO_SHOOT:Number = 40;
public static const HIT_POINTS:Number = 12;
public static const ATTACK_POINT:Number = 400;
public static const VELOCITY:Number = 1.5;
public function WalkingZombie(_arg1:Base){
var _local2:Point;
_local2 = new Point(0, (300 + (Math.random() * 150)));
myIdx = 0;
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
var _local1:Number;
if (myState == STATE_DIE){
return;
};
BaseModel.zombiesKilled++;
if (BaseModel.zombiesKilled == AchievementManager.ZOMBIE_KILLER){
AchievementManager.setAchievement(AchievementManager.IDX_ZOMBASSACRE, parent);
};
_local1 = Math.random();
if (_local1 < 0.33){
SoundManagerClass.playSound("ZombieDie1Sound", 0.2);
} else {
if (_local1 < 0.66){
SoundManagerClass.playSound("ZombieDie2Sound", 0.2);
};
};
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 70
//WalkingZombie1 (src.Game.Gameplay.Enemies.WalkingZombie1)
package src.Game.Gameplay.Enemies {
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Achievements.*;
import src.Game.*;
public class WalkingZombie1 extends Enemy {
public static const CASH_PRIZE:Number = 50;
public static const DAMAGE:Number = 1;
public static const FRAMES_TO_SHOOT:Number = 40;
public static const HIT_POINTS:Number = 6;
public static const ATTACK_POINT:Number = 400;
public static const VELOCITY:Number = 2.5;
public function WalkingZombie1(_arg1:Base){
var _local2:Point;
_local2 = new Point(0, (300 + (Math.random() * 150)));
myIdx = 0;
super(_local2, HIT_POINTS, VELOCITY, ATTACK_POINT, FRAMES_TO_SHOOT, DAMAGE, _arg1, CASH_PRIZE);
}
override protected function gotoDieState():void{
var _local1:Number;
if (myState == STATE_DIE){
return;
};
BaseModel.zombiesKilled++;
if (BaseModel.zombiesKilled == AchievementManager.ZOMBIE_KILLER){
AchievementManager.setAchievement(AchievementManager.IDX_ZOMBASSACRE, parent);
};
_local1 = Math.random();
if (_local1 < 0.66){
SoundManagerClass.playSound("ZombieDeath", 0.2);
};
super.gotoDieState();
}
}
}//package src.Game.Gameplay.Enemies
Section 71
//Particle (src.Game.Gameplay.ParticleEffect.Particle)
package src.Game.Gameplay.ParticleEffect {
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
import flash.filters.*;
public class Particle extends FrameablePMC {
const dx:Number = 0.1;
const dy:Number = 0.1;
var speed:Number;
var frameCount:int;// = 7
var vx:Number;
var vy:Number;
public function Particle(_arg1:Point, _arg2:int){
speed = (1 + (Math.random() * 5));
frameCount = 7;
super(Constants.GAME_CONTAINER, Gameplay.particleArray, _arg1);
if (_arg2 == 0){
rotation = ((Math.random() * 45) + 210);
} else {
rotation = (Math.random() * 360);
speed = (speed * 0.8);
};
vx = (Math.cos(degreesToRadians(rotation)) * speed);
vy = (Math.sin(degreesToRadians(rotation)) * speed);
if (vy > 0){
vy = (vy * -1);
};
if (_arg2 == 0){
addChild(new ParticleBlood());
} else {
addChild(new ParticleDirt());
};
filters = [new BlurFilter(2, 2, 2)];
cacheAsBitmap = true;
}
public function degreesToRadians(_arg1:Number):Number{
return (((_arg1 * Math.PI) / 180));
}
override public function onFrame():void{
if (frameCount-- < 0){
remove();
};
vy = (vy + dy);
vx = (vx - dx);
x = (x + vx);
y = (y + vy);
}
}
}//package src.Game.Gameplay.ParticleEffect
Section 72
//ParticleExplosion (src.Game.Gameplay.ParticleEffect.ParticleExplosion)
package src.Game.Gameplay.ParticleEffect {
import flash.geom.*;
import src.Game.Gameplay.*;
public class ParticleExplosion {
private const MAX_PARTICLES:int = 90;
private const NR:int = 12;
var counter:int;// = 12
public function ParticleExplosion(_arg1:Point, _arg2:int){
var _local3:Particle;
counter = NR;
super();
if (counter > (MAX_PARTICLES - Gameplay.particleArray.length)){
} else {
while (counter-- > 0) {
_local3 = new Particle(_arg1, _arg2);
};
};
}
}
}//package src.Game.Gameplay.ParticleEffect
Section 73
//BaseTurret (src.Game.Gameplay.Turrets.BaseTurret)
package src.Game.Gameplay.Turrets {
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
public class BaseTurret extends FrameablePMC {
public var fireRate:int;
public var damage:int;
public var frameCount:int;// = 0
public var myLvl:int;
public static const MY_X:int = 420;
public static const MY_Y:int = 425;
public function BaseTurret(){
var _local1:Number;
frameCount = 0;
this.myLvl = MiscUpgradeData.UPGRADE_LVL_ARRAY[MiscUpgradeData.IDX_TURRET];
this.fireRate = MiscUpgradeData.TURRET_FIRE_RATE[this.myLvl];
this.damage = MiscUpgradeData.TURRET_DAMAGE[this.myLvl];
_local1 = (1 + ((0.01 * PerkData.PERK_DATA[PerkData.IDX_SUPER_TURRET]) * PerkData.TURRET));
this.damage = (this.damage * _local1);
super(Constants.GAME_CONTAINER, Gameplay.turretArray, new Point(MY_X, MY_Y));
if (this.myLvl < 1){
this.x = (this.x - 1000);
remove();
};
}
override public function onFrame():void{
if (currentFrame == 1){
gotoAndStop(1);
};
if ((frameCount++ % fireRate) == 2){
if (Gameplay.enemyArray.length > 0){
gotoAndPlay(24);
SoundManagerClass.playSound("MagnumSound", 0.1);
};
dispatchEvent(new TurretEvent(TurretEvent.TURRET));
};
}
}
}//package src.Game.Gameplay.Turrets
Section 74
//gfx_missile (src.Game.Gameplay.Turrets.gfx_missile)
package src.Game.Gameplay.Turrets {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.Enemies.*;
import src.Game.Gameplay.*;
import utils.parentedmovieclip.*;
public class gfx_missile extends FrameablePMC {
private var dmg:Number;
public function gfx_missile(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:Number){
this.dmg = _arg3;
super(_arg1, Gameplay.onFrameArray, _arg2);
}
override public function onFrame():void{
if (currentFrame == totalFrames){
remove();
};
if (currentFrame == 1){
dmgAllInRange();
};
}
private function dmgAllInRange():void{
var _local1:Array;
var _local2:int;
var _local3:Enemy;
var _local4:Number;
_local1 = Gameplay.enemyArray;
_local2 = _local1.length;
while (_local2-- > 0) {
_local3 = Enemy(_local1[_local2]);
if (hitTestObject(_local3)){
_local4 = (x - _local3.x);
if (_local4 > 5){
_local4 = 5;
} else {
if (_local4 < -5){
_local4 = -5;
};
};
_local3.x = (_local3.x - (_local4 * 1));
_local3.takeDamage(dmg, 0, -1);
};
};
}
}
}//package src.Game.Gameplay.Turrets
Section 75
//HeliMissile (src.Game.Gameplay.Turrets.HeliMissile)
package src.Game.Gameplay.Turrets {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.Enemies.*;
import src.Game.Gameplay.*;
import utils.parentedmovieclip.*;
public class HeliMissile extends FrameablePMC {
private var dmg:Number;
private var target:Enemy;
var dy:Number;
var dx:Number;
private var enemyArray:Array;
private var goalRotation:Number;
public function HeliMissile(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:Number){
super(_arg1, Gameplay.onFrameArray, _arg2);
enemyArray = Gameplay.enemyArray;
target = enemyArray[returnStrongestEnemyIdx()];
this.dmg = _arg3;
rotation = 180;
visible = false;
}
public function distance(_arg1:Point, _arg2:Point):Number{
var _local3:Number;
var _local4:Number;
_local3 = (_arg1.x - _arg2.x);
_local4 = (_arg1.y - _arg2.y);
return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
}
public function returnStrongestEnemyIdx():int{
var _local1:int;
var _local2:int;
var _local3:Number;
var _local4:Enemy;
_local1 = enemyArray.length;
_local2 = -1;
_local3 = 0;
while (_local1-- > 0) {
_local4 = Enemy(enemyArray[_local1]);
if (_local4.hitPoints > _local3){
_local3 = _local4.hitPoints;
_local2 = _local1;
};
};
return (_local2);
}
override public function onFrame():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:MovieClip;
if (!target){
target = null;
remove();
return;
};
if (!target.parent){
target = null;
remove();
return;
};
if (target.myState == 2){
remove();
target = null;
return;
};
visible = true;
dx = (target.x - x);
dy = (target.y - y);
goalRotation = ((180 * Math.atan2(dy, dx)) / Math.PI);
_local1 = (goalRotation - rotation);
if (_local1 > 180){
_local1 = (_local1 - 360);
} else {
if (_local1 < -180){
_local1 = (_local1 + 360);
};
};
rotation = (rotation + (_local1 * 0.15));
_local2 = (Math.cos(((rotation / 180) * Math.PI)) * 10);
_local3 = (Math.sin(((rotation / 180) * Math.PI)) * 10);
x = (x + _local2);
y = (y + _local3);
if (((this.hitTestObject(target)) && ((distance(new Point(x, y), new Point(target.x, target.y)) < (1.5 * target.defaultWidth))))){
_local4 = new gfx_missile(parent, new Point(target.x, (target.y + (target.height * 0.5))), (dmg * 0.2));
target.takeDamage(dmg, 0, -1);
remove();
};
}
}
}//package src.Game.Gameplay.Turrets
Section 76
//HeliTurret (src.Game.Gameplay.Turrets.HeliTurret)
package src.Game.Gameplay.Turrets {
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
public class HeliTurret extends FrameablePMC {
public var fireRate:int;
public var damage:int;
public var frameCount:int;// = 0
public var myLvl:int;
public static const MY_X:int = 450;
public static const MY_Y:int = 155;
public function HeliTurret(){
var _local1:Number;
frameCount = 0;
this.myLvl = MiscUpgradeData.UPGRADE_LVL_ARRAY[MiscUpgradeData.IDX_HELI];
this.fireRate = MiscUpgradeData.HELI_FIRE_RATE[this.myLvl];
this.damage = MiscUpgradeData.HELI_DAMAGE[this.myLvl];
_local1 = (1 + ((PerkData.PERK_DATA[PerkData.IDX_HELI_MASTER] * PerkData.HELI_MASTER) * 0.01));
this.damage = (this.damage * _local1);
super(Constants.GAME_CONTAINER, Gameplay.turretArray, new Point(MY_X, MY_Y));
if (this.myLvl < 1){
this.x = (this.x - 1000);
remove();
};
}
override public function onFrame():void{
var _local1:HeliMissile;
if ((frameCount++ % fireRate) == (fireRate - 1)){
gotoAndPlay(1);
if (Gameplay.enemyArray.length > 0){
_local1 = new HeliMissile(parent, new Point((x + 20), (y + 40)), damage);
};
};
}
}
}//package src.Game.Gameplay.Turrets
Section 77
//TurretEvent (src.Game.Gameplay.Turrets.TurretEvent)
package src.Game.Gameplay.Turrets {
import flash.events.*;
public class TurretEvent extends Event {
public static const TURRET:String = "turret";
public static const HELI:String = "heli";
public function TurretEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("TurretEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new TurretEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay.Turrets
Section 78
//AmmoCounter (src.Game.Gameplay.UI.AmmoCounter)
package src.Game.Gameplay.UI {
import utils.*;
import flash.display.*;
import flash.geom.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class AmmoCounter extends ParentedMovieClip {
public var ammoText:TextField;
private var barFill:MovieClip;
private var maxAmmo:int;
public var acfill:AC_BarFill;
private var ammoTextfield:TextField;
private var currentAmmo:int;
public function AmmoCounter(_arg1:int){
var _local2:Tween;
this.maxAmmo = _arg1;
this.currentAmmo = _arg1;
super(Constants.GAME_CONTAINER, new Point(10, 10));
this.ammoTextfield = TextField(ammoText);
ammoTextfield.text = ((("" + _arg1) + "/") + currentAmmo);
this.barFill = MovieClip(acfill);
scaleX = (scaleY = 0.45);
_local2 = new Tween(this);
_local2.tweenToCoordinates(new Point(x, (y - 200)), new Point(x, y));
}
public function updateWhenReloading(_arg1:int, _arg2:int){
var _local3:Number;
var _local4:int;
_local3 = (_arg1 / _arg2);
_local4 = (101 - Math.floor(((_local3 * 100) - 1)));
barFill.bg.gotoAndStop(_local4);
}
public function updateAmmoCounter(_arg1:int){
var _local2:Number;
var _local3:int;
_local2 = (_arg1 / maxAmmo);
_local3 = (101 - Math.floor(((_local2 * 100) - 1)));
barFill.bg.gotoAndStop(_local3);
this.currentAmmo = _arg1;
ammoTextfield.text = (ammoTextfield.text = ((("" + _arg1) + "/") + maxAmmo));
}
}
}//package src.Game.Gameplay.UI
Section 79
//CashPrizeCounter (src.Game.Gameplay.UI.CashPrizeCounter)
package src.Game.Gameplay.UI {
import utils.*;
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class CashPrizeCounter extends ParentedMovieClip {
public var cashTxt:TextField;
public static const MY_X:int = 350;
public static const MY_Y:int = 10;
public static const STARTING_CASH:Number = 500;
public static var CASH:Number;
public function CashPrizeCounter(_arg1:DisplayObjectContainer){
var _local2:Tween;
super(_arg1, new Point(MY_X, MY_Y));
_local2 = new Tween(this);
_local2.tweenToCoordinates(new Point(x, (y - 200)), new Point(x, y));
cacheAsBitmap = true;
updateText();
}
public function updateText():void{
cashTxt.text = (("" + CASH) + "$");
}
public static function Init():void{
CASH = STARTING_CASH;
}
public static function Update(_arg1:int):void{
CASH = (CASH + Math.round(_arg1));
}
}
}//package src.Game.Gameplay.UI
Section 80
//GameplayIntro (src.Game.Gameplay.UI.GameplayIntro)
package src.Game.Gameplay.UI {
import utils.*;
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class GameplayIntro extends FrameablePMC {
public var myTxt:TextField;
private var frameCountToGo:int;// = 30
private var frameCount:int;// = 0
public function GameplayIntro(_arg1:int){
var _local2:int;
var _local3:int;
var _local4:Tween;
frameCount = 0;
frameCountToGo = 30;
super(Constants.GAME_CONTAINER, Gameplay.onFrameArray, new Point(0, -500));
_local2 = (1 + _arg1);
_local3 = WaveData.ALL_WAVE_ARRAY.length;
SoundManagerClass.playSound("BattleStartSound2", 0.66);
myTxt.text = ((("WAVE \n" + _local2) + "/") + _local3);
_local4 = new Tween(this);
_local4.tweenToCoordinates(new Point(x, y), new Point(0, 100), 0, 0.2, false);
}
override public function onFrame():void{
var _local1:Tween;
if (frameCount++ == frameCountToGo){
_local1 = new Tween(this);
_local1.tweenToCoordinates(new Point(x, y), new Point((x + 1200), y), 0, 0.2, false);
};
if (frameCount == (3 * frameCountToGo)){
remove();
};
}
}
}//package src.Game.Gameplay.UI
Section 81
//HPCounter (src.Game.Gameplay.UI.HPCounter)
package src.Game.Gameplay.UI {
import utils.*;
import flash.display.*;
import flash.geom.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class HPCounter extends ParentedMovieClip {
private var barFill:MovieClip;
private var barFillWidth:int;
private var currentHP:int;
public var HPText:TextField;
private var maxHP:int;
public var acfill:HP_BarFillcopy;
private var HPTextfield:TextField;
public function HPCounter(_arg1:int, _arg2:int){
var _local3:Tween;
this.maxHP = _arg2;
this.currentHP = _arg1;
super(Constants.GAME_CONTAINER, new Point(((600 - (this.width / 2)) - 10), 10));
scaleX = (scaleY = 0.5);
this.HPTextfield = TextField(HPText);
HPTextfield.text = ((("" + _arg1) + "/") + _arg2);
cacheAsBitmap = true;
this.barFill = MovieClip(acfill);
this.barFillWidth = this.barFill.width;
updateHPCounter(_arg1);
_local3 = new Tween(this);
_local3.tweenToCoordinates(new Point(x, (y - 200)), new Point(x, y));
}
public function updateHPCounter(_arg1:int){
var _local2:Number;
var _local3:int;
_local2 = (_arg1 / maxHP);
_local3 = (101 - Math.floor(((_local2 * 100) - 1)));
acfill.hp.gotoAndStop(_local3);
this.currentHP = _arg1;
if (_arg1 < 0){
_arg1 = 0;
};
HPTextfield.text = (HPTextfield.text = ((("" + _arg1) + "/") + maxHP));
}
}
}//package src.Game.Gameplay.UI
Section 82
//UIOther (src.Game.Gameplay.UI.UIOther)
package src.Game.Gameplay.UI {
import utils.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.*;
import src.Game.Buttons.*;
import utils.parentedmovieclip.*;
public class UIOther extends ParentedMovieClip {
public var musicBut:MusicButton;
public var medBut:MediumQualityButton;
private var soundB:SimpleButton;
private var lowB:MovieClip;
private var qArray:Array;
public var highBut:HighQualityButton;
public var lowBut:LowQualityButton;
private var musicB:SimpleButton;
private var highB:MovieClip;
public var soundBut:SoundButton;
private var medB:MovieClip;
public function UIOther(){
var _local1:Tween;
super(Game.GAME_DISPLAY_CONTAINER, new Point(((585 - (this.width / 2)) - 10), (540 - height)));
_local1 = new Tween(this);
_local1.tweenToCoordinates(new Point(x, (y + 200)), new Point(x, y));
scaleX = (scaleY = 0.7);
lowB = MovieClip(lowBut);
medB = MovieClip(medBut);
highB = MovieClip(highBut);
cacheAsBitmap = true;
lowB.addEventListener(MouseEvent.CLICK, onLowClicked);
medB.addEventListener(MouseEvent.CLICK, onMedClicked);
highB.addEventListener(MouseEvent.CLICK, onHighClicked);
qArray = [lowB, medB, highB];
initQualityButtons();
}
private function onMedClicked(_arg1:MouseEvent):void{
stage.quality = "medium";
initQualityButtons();
}
private function onLowClicked(_arg1:MouseEvent):void{
stage.quality = "low";
initQualityButtons();
}
private function initQualityButtons():void{
trace(("STAGE: " + stage.quality));
if (stage.quality == "LOW"){
lowB.gotoAndStop(1);
medB.gotoAndStop(2);
highB.gotoAndStop(2);
} else {
if (stage.quality == "MEDIUM"){
lowB.gotoAndStop(2);
medB.gotoAndStop(1);
highB.gotoAndStop(2);
} else {
lowB.gotoAndStop(2);
medB.gotoAndStop(2);
highB.gotoAndStop(1);
};
};
}
private function onHighClicked(_arg1:MouseEvent):void{
stage.quality = "high";
initQualityButtons();
}
}
}//package src.Game.Gameplay.UI
Section 83
//WeaponIconGameplay (src.Game.Gameplay.UI.WeaponIconGameplay)
package src.Game.Gameplay.UI {
import utils.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
public class WeaponIconGameplay extends ParentedMovieClip {
public function WeaponIconGameplay(){
var _local1:int;
var _local2:String;
var _local3:Class;
var _local4:Tween;
var _local5:MovieClip;
super(Constants.GAME_CONTAINER, new Point(200, 15));
scaleX = (scaleY = 0.2);
_local1 = WeaponData.EQUIPPED_WEAPON_IDX;
_local2 = ("Weapon" + _local1.toString());
_local3 = (getDefinitionByName(_local2) as Class);
_local4 = new Tween(this);
_local4.tweenToCoordinates(new Point(x, (y - 200)), new Point(x, y));
_local5 = new (_local3);
addChild(_local5);
cacheAsBitmap = true;
}
}
}//package src.Game.Gameplay.UI
Section 84
//DamageEvent (src.Game.Gameplay.Weapon.DamageEvent)
package src.Game.Gameplay.Weapon {
import flash.events.*;
public class DamageEvent extends Event {
public static const DAMAGE_EVENT:String = "damage";
public function DamageEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("DamageEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new DamageEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay.Weapon
Section 85
//EquippedWeaponData (src.Game.Gameplay.Weapon.EquippedWeaponData)
package src.Game.Gameplay.Weapon {
import src.Game.GameData.*;
public class EquippedWeaponData {
public var rateLevel:int;// = 0
public var myType:int;// = 0
public var reloadLevel:int;// = 0
public var myIdx:int;// = 0
public var clipSizeLevel:int;// = 0
public var damageLevel:int;// = 0
public function EquippedWeaponData(_arg1:int=0){
myIdx = 0;
myType = 0;
damageLevel = 0;
rateLevel = 0;
reloadLevel = 0;
clipSizeLevel = 0;
super();
this.myIdx = WeaponData.EQUIPPED_WEAPON_IDX;
this.myType = WeaponData.ALL_WEAPON_DATA_ARRAY[this.myIdx][WeaponData.IDX_WEAPON_CLASS];
this.damageLevel = WeaponData.ALL_WEAPON_UPGRADES[this.myIdx][WeaponData.IDX_DAMAGE];
this.rateLevel = WeaponData.ALL_WEAPON_UPGRADES[this.myIdx][WeaponData.IDX_RATE_OF_FIRE];
this.reloadLevel = WeaponData.ALL_WEAPON_UPGRADES[this.myIdx][WeaponData.IDX_RELOAD];
this.clipSizeLevel = WeaponData.ALL_WEAPON_UPGRADES[this.myIdx][WeaponData.IDX_CLIP_SIZE];
}
}
}//package src.Game.Gameplay.Weapon
Section 86
//Weapon (src.Game.Gameplay.Weapon.Weapon)
package src.Game.Gameplay.Weapon {
import flash.events.*;
import flash.geom.*;
import src.Game.Gameplay.*;
import src.Game.Achievements.*;
import src.Game.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class Weapon extends FrameablePMC {
public var reloadTime:int;
public var weaponIdx:Number;
private var ammoLeftFlag:Boolean;// = true
private var reloadTimeCounter:int;// = 0
private var bulletCount:int;
public var clipCapacity:int;
private var bulletsPerFrame:int;
private var ammoCounter:AmmoCounter;
public var damage:Number;
public var weaponTypeIdx:Number;
public var targetRadius:Number;
public var framesUntilNextBullet:int;
public var criticalChance:Number;
private var bulletsPerFrameCounter:int;// = 0
private var mousePressedFlag:Boolean;// = false
private var framesUntilNextBulletCounter:int;// = 0
public static var BULLETS_FIRED:int = 0;
public function Weapon(_arg1:WeaponProperties){
framesUntilNextBulletCounter = 0;
reloadTimeCounter = 0;
mousePressedFlag = false;
ammoLeftFlag = true;
bulletsPerFrameCounter = 0;
this.damage = _arg1.damage;
this.framesUntilNextBullet = _arg1.framesUntilNextBullet;
this.reloadTime = _arg1.reloadTime;
this.clipCapacity = _arg1.clipCapacity;
this.criticalChance = _arg1.criticalChance;
this.targetRadius = _arg1.targetRadius;
this.weaponTypeIdx = _arg1.weaponTypeIdx;
this.weaponIdx = _arg1.weaponIdx;
this.bulletCount = this.clipCapacity;
this.bulletsPerFrame = _arg1.weaponBulletsPerRound;
super(Constants.GAME_CONTAINER, Gameplay.weaponArray, new Point(-100, -100));
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseIsPressedHandler);
bulletCount = clipCapacity;
ammoCounter = new AmmoCounter(this.clipCapacity);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
}
private function bulletShoot():void{
if (Constants.GAME_CONTAINER.stage.mouseX < 500){
SoundManagerClass.PlayWeaponSound(weaponIdx);
};
if ((((bulletCount <= 0)) || ((Gameplay.heroRef.visible == false)))){
return;
};
if (BULLETS_FIRED++ == 1000){
AchievementManager.setAchievement(AchievementManager.IDX_SHOOTER, Game.GAME_DISPLAY_CONTAINER);
};
bulletCount--;
dispatchEvent(new DamageEvent(DamageEvent.DAMAGE_EVENT));
}
private function mouseIsPressedHandler(_arg1:MouseEvent):void{
mousePressedFlag = true;
stage.addEventListener(MouseEvent.MOUSE_UP, mouseIsUnpressedHandler);
}
private function traceProperties():void{
trace(("DAMAGE: " + damage));
trace(("RATE OF FIRE: " + framesUntilNextBullet));
trace(("RELOAD TIME: " + reloadTime));
trace(("CLIP CAPACITY: " + clipCapacity));
trace(("CRITICAL CHANCE: " + criticalChance));
trace(("TARGET RADIUS: " + targetRadius));
}
public function kill():void{
if (stage.hasEventListener(MouseEvent.MOUSE_UP)){
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseIsUnpressedHandler);
};
if (stage.hasEventListener(MouseEvent.MOUSE_DOWN)){
stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseIsPressedHandler);
};
if (stage.hasEventListener(KeyboardEvent.KEY_DOWN)){
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
};
}
private function mouseIsUnpressedHandler(_arg1:MouseEvent):void{
mousePressedFlag = false;
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseIsUnpressedHandler);
}
private function triggerPulled():void{
bulletsPerFrameCounter = 0;
while (bulletsPerFrameCounter++ < bulletsPerFrame) {
bulletShoot();
};
}
private function handleReloading():void{
reloadTimeCounter++;
ammoCounter.updateWhenReloading(reloadTimeCounter, reloadTime);
if (reloadTimeCounter == (reloadTime - 5)){
SoundManagerClass.playSound("ReloadSound", 0.66);
};
if (reloadTimeCounter == reloadTime){
framesUntilNextBulletCounter = 0;
reloadTimeCounter = 0;
mousePressedFlag = false;
ammoLeftFlag = true;
bulletCount = clipCapacity;
};
}
override public function onFrame():void{
if (ammoLeftFlag == false){
handleReloading();
return;
};
if (framesUntilNextBulletCounter != 0){
framesUntilNextBulletCounter++;
if (framesUntilNextBulletCounter >= (framesUntilNextBullet + 1)){
framesUntilNextBulletCounter = 0;
};
};
if (mousePressedFlag){
if (framesUntilNextBulletCounter == 0){
triggerPulled();
framesUntilNextBulletCounter++;
if (bulletCount == 0){
ammoLeftFlag = false;
};
};
};
ammoCounter.updateAmmoCounter(bulletCount);
}
private function onKeyDownEvent(_arg1:KeyboardEvent):void{
if ((((_arg1.keyCode == "R".charCodeAt(0))) || ((_arg1.keyCode == " ".charCodeAt())))){
ammoLeftFlag = false;
};
}
}
}//package src.Game.Gameplay.Weapon
Section 87
//WeaponProperties (src.Game.Gameplay.Weapon.WeaponProperties)
package src.Game.Gameplay.Weapon {
import src.Game.GameData.*;
public class WeaponProperties {
public var targetRadius:Number;
public var reloadTime:Number;
public var weaponIdx:Number;
public var framesUntilNextBullet:Number;
public var weaponBulletsPerRound:int;// = 1
public var weaponTypeIdx:Number;
public var clipCapacity:Number;
private var rateOfFire:Number;
public var damage:Number;
public var criticalChance:Number;
public function WeaponProperties(_arg1:EquippedWeaponData){
var _local2:Array;
weaponBulletsPerRound = 1;
super();
this.weaponIdx = _arg1.myIdx;
this.weaponTypeIdx = _arg1.myType;
_local2 = WeaponData.ALL_WEAPON_DATA_ARRAY[weaponIdx];
this.damage = _local2[WeaponData.IDX_DAMAGE][_arg1.damageLevel];
this.rateOfFire = _local2[WeaponData.IDX_RATE_OF_FIRE][_arg1.rateLevel];
this.reloadTime = _local2[WeaponData.IDX_RELOAD][_arg1.reloadLevel];
this.clipCapacity = _local2[WeaponData.IDX_CLIP_SIZE][_arg1.clipSizeLevel];
this.criticalChance = Number(_local2[WeaponData.IDX_CRIT_CHANCE]);
this.targetRadius = Number(_local2[WeaponData.IDX_RADIUS]);
initDamageData();
initRateOfFireData();
initReloadTimeData();
initClipCapacity();
initCriticalChance();
initTargetRadius();
}
private function initReloadTimeData():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local1 = (PerkData.BLOOD_THIRSTY * PerkData.PERK_DATA[PerkData.IDX_BLOOD_THIRSTY]);
_local2 = 0;
_local3 = 0;
if (weaponTypeIdx == WeaponData.SHOTGUN_CLASS_TYPE){
_local2 = (PerkData.HAPPY_SHOTGUN_RELOADING * PerkData.PERK_DATA[PerkData.IDX_HAPPY_SHOTGUN]);
} else {
if (weaponTypeIdx == WeaponData.RIFLE_CLASS_TYPE){
_local3 = (PerkData.RIFLEMAN_RELOADING_AND_ATTACK_RATE * PerkData.PERK_DATA[PerkData.IDX_RIFLEMAN]);
};
};
_local4 = ((((100 - _local1) - _local2) - _local3) * 0.01);
reloadTime = (reloadTime * _local4);
reloadTime = Math.round(reloadTime);
}
private function initTargetRadius():void{
var _local1:Number;
_local1 = (PerkData.STEADY_HANDS * PerkData.PERK_DATA[PerkData.IDX_STEADY_HANDS]);
if (weaponTypeIdx == WeaponData.SHOTGUN_CLASS_TYPE){
targetRadius = (targetRadius * (1 + (0.01 * _local1)));
} else {
targetRadius = (targetRadius * (1 - (0.01 * _local1)));
};
targetRadius = Math.round(targetRadius);
}
private function traceProperties():void{
trace(("DAMAGE: " + damage));
trace(("RATE OF FIRE: " + framesUntilNextBullet));
trace(("RELOAD TIME: " + reloadTime));
trace(("CLIP CAPACITY: " + clipCapacity));
trace(("CRITICAL CHANCE: " + criticalChance));
trace(("TARGET RADIUS: " + targetRadius));
}
private function initCriticalChance():void{
var _local1:Number;
_local1 = (PerkData.SHARPSHOOTER * PerkData.PERK_DATA[PerkData.IDX_SHARPSHOOTER]);
criticalChance = (criticalChance * (1 + (_local1 * 0.01)));
criticalChance = Math.round(criticalChance);
}
private function initDamageData():void{
var _local1:Number;
var _local2:Number;
_local1 = (PerkData.PRECISION * PerkData.PERK_DATA[PerkData.IDX_PRECISION]);
_local2 = 0;
if (weaponTypeIdx == WeaponData.BIG_GUNS_CLASS_TYPE){
_local2 = (PerkData.BIG_GUN_MASTERY_DAMAGE * PerkData.PERK_DATA[PerkData.IDX_BIG_GUN_MASTER]);
};
damage = (damage * (1 + ((_local1 + _local2) / 100)));
}
private function initRateOfFireData():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = (PerkData.FAST_SHOT * PerkData.PERK_DATA[PerkData.IDX_FAST_SHOT]);
_local2 = 0;
if (weaponTypeIdx == WeaponData.RIFLE_CLASS_TYPE){
_local2 = (PerkData.RIFLEMAN_RELOADING_AND_ATTACK_RATE * PerkData.PERK_DATA[PerkData.IDX_RIFLEMAN]);
};
_local3 = ((_local1 + _local2) * 0.01);
rateOfFire = (rateOfFire * (1 + _local3));
framesUntilNextBullet = ((Constants.FPS * 60) / rateOfFire);
weaponBulletsPerRound = Math.ceil((1 / framesUntilNextBullet));
trace(("BULLETS PER ROUND: " + weaponBulletsPerRound));
}
private function initClipCapacity():void{
var _local1:Number;
_local1 = (PerkData.GEEK * PerkData.PERK_DATA[PerkData.IDX_GEEK]);
clipCapacity = (clipCapacity * (1 + (_local1 * 0.01)));
clipCapacity = Math.round(clipCapacity);
}
}
}//package src.Game.Gameplay.Weapon
Section 88
//Gameplay (src.Game.Gameplay.Gameplay)
package src.Game.Gameplay {
import flash.display.*;
import flash.events.*;
import src.Game.Gameplay.Weapon.*;
import src.Game.Gameplay.Enemies.*;
import src.Game.Gameplay.Base.*;
import src.Game.Gameplay.Turrets.*;
import src.Game.Screens.*;
import src.Game.Achievements.*;
import src.Game.*;
import src.Game.GameData.*;
import src.Game.Gameplay.Collision.*;
import pixelblitz.utils.*;
import src.Game.Gameplay.UI.*;
import flash.ui.*;
public class Gameplay extends MovieClip {
private var hero:Hero;
private var uiOther:UIOther;
private var collisionManager:CollisionManager;
private var gotoInstr:Boolean;
private var cashPrizeCounter:CashPrizeCounter;
private var endLevelMsg:Boolean;// = false
private var waveManager:WaveManager;
public var score:Number;// = 100
public var currentLevel:int;
private var heli:HeliTurret;
public var waveManagerComplete:Boolean;// = false
private var base:Base;
private var wp:Weapon;
private var gamePauseManager:PauseManager;
private var turret:BaseTurret;
public static var explosionArray:Array = [];
public static var achivementMsgArray:Array = [];
public static var onFrameArray:Array = [];
public static var baseArray:Array = [];
public static var enemyArray:Array = [];
public static var particleArray:Array = [];
public static var turretArray:Array = [];
public static var heroRef:Hero;
public static var pausedFlag:Boolean = false;
public static var weaponArray:Array = [];
public function Gameplay(_arg1:DisplayObjectContainer, _arg2:int, _arg3:Base){
var _local4:WeaponProperties;
var _local5:WeaponIconGameplay;
var _local6:GameplayIntro;
var _local7:FPSCounter;
score = 100;
endLevelMsg = false;
waveManagerComplete = false;
super();
SoundManagerClass.soundManager.stopAllSounds();
SoundManagerClass.startMusic("BloodySunsetDesert", 1, 0, 10);
pausedFlag = false;
Mouse.hide();
this.currentLevel = _arg2;
_arg1.addChild(this);
Constants.GAME_CONTAINER = this;
addEventListener(Event.ENTER_FRAME, onFrame);
explosionArray = [];
onFrameArray = [];
achivementMsgArray = [];
weaponArray = [];
baseArray = [];
enemyArray = [];
turretArray = [];
particleArray = [];
_local4 = new WeaponProperties(new EquippedWeaponData());
wp = new Weapon(_local4);
hero = new Hero(wp.targetRadius);
heroRef = hero;
wp.addEventListener(DamageEvent.DAMAGE_EVENT, onWeaponDamage);
this.base = _arg3;
_arg3.Init();
_arg3.addEventListener(BaseEvent.KILLED, onBaseKilled);
collisionManager = new CollisionManager(enemyArray);
cashPrizeCounter = new CashPrizeCounter(this);
turret = new BaseTurret();
turret.addEventListener(TurretEvent.TURRET, onTurretShoot);
heli = new HeliTurret();
heli.addEventListener(TurretEvent.HELI, onHeliShoot);
waveManager = new WaveManager(_arg3, enemyArray, _arg2);
waveManager.addEventListener(Event.COMPLETE, onWaveManagerComplete);
waveManager.addEventListener(EnemyCreatedEvent.ENEMY_CREATED, onEnemyCreated);
uiOther = new UIOther();
gamePauseManager = new PauseManager(this);
gamePauseManager.addEventListener(PauseEvent.PAUSED, onGamePaused);
_local5 = new WeaponIconGameplay();
_local6 = new GameplayIntro(_arg2);
_local7 = new FPSCounter();
}
private function gotoEndLevel():void{
var _local1:LevelPassedScreen;
HideCursor();
removeEventListener(Event.ENTER_FRAME, onFrame);
SoundManagerClass.stopMusic();
_local1 = new LevelPassedScreen(this);
_local1.addEventListener(Event.COMPLETE, onLevelPassed);
}
private function onBaseKilled(_arg1:BaseEvent):void{
SoundManagerClass.stopMusic();
gotoBaseKilled();
}
private function onGamePaused(_arg1:PauseEvent):void{
var _local2:PauseScreen;
removeEventListener(Event.ENTER_FRAME, onFrame);
_local2 = new PauseScreen(this);
_local2.addEventListener(PauseEvent.UNPAUSED, onGameUnpaused);
_local2.addEventListener(NavigationEvent.GAMEOVER, gotoBaseKilled);
}
private function onLevelLostComplete(_arg1:Event):void{
dispatchEvent(new GameplayEvent(GameplayEvent.LOST));
remove();
}
private function onWeaponDamage(_arg1:DamageEvent):void{
var _local2:Weapon;
_local2 = Weapon(_arg1.currentTarget);
collisionManager.enemyToAmmoCollision(hero, _local2);
hero.setDiameter();
}
private function gotoBaseKilled(_arg1:NavigationEvent=null):void{
var _local2:LevelLostScreen;
var _local3:int;
Mouse.show();
removeEventListener(Event.ENTER_FRAME, onFrame);
_local2 = new LevelLostScreen(this);
_local2.addEventListener(Event.COMPLETE, onLevelLostComplete);
_local2.addEventListener(NavigationEvent.BACK, onLevelRetry);
_local3 = enemyArray.length;
while (_local3-- > 0) {
Enemy(enemyArray[_local3]).stopAnimation();
};
}
private function onWaveManagerComplete(_arg1:Event):void{
waveManager.removeEventListener(Event.COMPLETE, onWaveManagerComplete);
waveManager.removeEventListener(EnemyCreatedEvent.ENEMY_CREATED, onEnemyCreated);
waveManager = null;
waveManagerComplete = true;
}
private function remove():void{
wp.kill();
removeEventListener(Event.ENTER_FRAME, onFrame);
gamePauseManager.remove();
uiOther.remove();
if (parent){
parent.removeChild(this);
};
}
private function onGameUnpaused(_arg1:PauseEvent):void{
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onLevelPassed(_arg1:Event):void{
LevelPassedScreen(_arg1.currentTarget).removeEventListener(Event.COMPLETE, onLevelPassed);
dispatchEvent(new Event(Event.COMPLETE));
remove();
}
private function onTurretShoot(_arg1:TurretEvent):void{
var _local2:BaseTurret;
_local2 = BaseTurret(_arg1.currentTarget);
collisionManager.enemyToTurretCollision(_local2);
}
private function onLevelRetry(_arg1:NavigationEvent):void{
dispatchEvent(new GameplayEvent(GameplayEvent.RETRY));
remove();
}
private function onEnemyCreated(_arg1:EnemyCreatedEvent):void{
_arg1.enemy.addEventListener(EnemyDeadEvent.DEAD, onEnemyDead);
}
private function onFrame(_arg1:Event):void{
var _local2:int;
var _local3:AchievementMsg;
var _local4:AchievementMsg;
if ((((((mouseY < 80)) || ((mouseX > 500)))) && (hero.visible))){
HideCursor();
} else {
if ((((((mouseY >= 80)) && ((mouseX <= 500)))) && ((hero.visible == false)))){
ShowCursor();
};
};
_local2 = onFrameArray.length;
while (_local2 > 0) {
_local2--;
onFrameArray[_local2].onFrame();
};
_local2 = achivementMsgArray.length;
while (_local2 > 0) {
_local2--;
achivementMsgArray[_local2].onFrame();
};
_local2 = weaponArray.length;
while (_local2-- > 0) {
weaponArray[_local2].onFrame();
};
_local2 = baseArray.length;
while (_local2-- > 0) {
baseArray[_local2].onFrame();
};
_local2 = enemyArray.length;
while (_local2-- > 0) {
enemyArray[_local2].onFrame();
};
_local2 = turretArray.length;
while (_local2-- > 0) {
turretArray[_local2].onFrame();
};
_local2 = particleArray.length;
while (_local2-- > 0) {
particleArray[_local2].onFrame();
};
_local2 = explosionArray.length;
while (_local2-- > 0) {
explosionArray[_local2].onFrame();
};
if (!waveManagerComplete){
waveManager.onFrame();
};
if ((((enemyArray.length == 0)) && (waveManagerComplete))){
if (currentLevel == (WaveData.ALL_WAVE_ARRAY.length - 1)){
if (endLevelMsg == false){
_local3 = AchievementManager.setAchievement(AchievementManager.IDX_PROFICIENCY, this);
_local3.addEventListener(Event.REMOVED_FROM_STAGE, onAcMsgRemoved);
endLevelMsg = true;
if (Game.difficulty > 0){
_local4 = AchievementManager.setAchievement(AchievementManager.IDX_SURVIVOR, this);
_local4.addEventListener(Event.REMOVED_FROM_STAGE, onAcMsgRemoved);
};
};
} else {
gotoEndLevel();
};
};
if ((currentLevel + 1) == AchievementManager.DEFENDER_WAVE){
if (BaseModel.totalDamageTaken < AchievementManager.DEFENDER_DAMAGE){
AchievementManager.setAchievement(AchievementManager.IDX_DEFENDER, this);
};
};
}
private function onHeliShoot(_arg1:TurretEvent):void{
var _local2:HeliTurret;
_local2 = HeliTurret(_arg1.currentTarget);
collisionManager.enemyToHelicopterCollision(_local2);
}
private function onEnemyDead(_arg1:EnemyDeadEvent):void{
var _local2:Enemy;
var _local3:Number;
_local2 = Enemy(_arg1.currentTarget);
_local3 = (1 + ((PerkData.FAME * PerkData.PERK_DATA[PerkData.IDX_FAME]) * 0.01));
CashPrizeCounter.Update((_local2.cashPrize * _local3));
cashPrizeCounter.updateText();
}
private function onAcMsgRemoved(_arg1:Event):void{
_arg1.currentTarget.removeEventListener(Event.REMOVED_FROM_STAGE, onAcMsgRemoved);
if (achivementMsgArray.length == 1){
gotoEndLevel();
};
}
public static function ShowCursor():void{
heroRef.visible = true;
Mouse.hide();
}
public static function HideCursor():void{
heroRef.visible = false;
Mouse.show();
}
}
}//package src.Game.Gameplay
Section 89
//GameplayEvent (src.Game.Gameplay.GameplayEvent)
package src.Game.Gameplay {
import flash.events.*;
public class GameplayEvent extends Event {
public static const LOST:String = "losts";
public static const RETRY:String = "retry";
public function GameplayEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("GameplayEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new GameplayEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay
Section 90
//Hero (src.Game.Gameplay.Hero)
package src.Game.Gameplay {
import flash.geom.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
public class Hero extends FrameablePMC {
public var diameter:Number;
private var defaultDiameter:Number;
public function Hero(_arg1:Number){
diameter = (2 * _arg1);
defaultDiameter = diameter;
super(Constants.GAME_CONTAINER, Gameplay.onFrameArray, new Point(0, 0));
}
public function setDiameter():void{
diameter = (defaultDiameter * 2.5);
}
override public function onFrame():void{
x = stage.mouseX;
y = stage.mouseY;
parent.addChild(this);
this.height = (this.height + ((diameter - height) * 0.5));
this.height = (this.height + ((defaultDiameter - height) * 0.2));
this.diameter = (this.diameter + ((defaultDiameter - diameter) * 0.1));
this.width = this.height;
}
}
}//package src.Game.Gameplay
Section 91
//PauseEvent (src.Game.Gameplay.PauseEvent)
package src.Game.Gameplay {
import flash.events.*;
public class PauseEvent extends Event {
public static const PAUSED:String = "pauseeed";
public static const UNPAUSED:String = "unpaused";
public function PauseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("PauseEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new PauseEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Gameplay
Section 92
//PauseManager (src.Game.Gameplay.PauseManager)
package src.Game.Gameplay {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import utils.parentedmovieclip.*;
public class PauseManager extends ParentedMovieClip {
public function PauseManager(_arg1:DisplayObjectContainer){
super(_arg1, new Point(0, 0));
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
private function pauseGame(_arg1:Event=null):void{
trace("PAUSE");
if (Gameplay.pausedFlag == false){
dispatchEvent(new PauseEvent(PauseEvent.PAUSED));
Gameplay.pausedFlag = true;
};
}
override public function remove():void{
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
super.remove();
}
private function onKeyDown(_arg1:KeyboardEvent):void{
if ((((((_arg1.keyCode == 27)) || ((_arg1.keyCode == 112)))) || ((_arg1.keyCode == 80)))){
pauseGame();
};
}
}
}//package src.Game.Gameplay
Section 93
//PauseScreen (src.Game.Gameplay.PauseScreen)
package src.Game.Gameplay {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Screens.*;
import utils.parentedmovieclip.*;
public class PauseScreen extends ParentedMovieClip {
public var cont:ContinueBut;
public var quit:QuitGameBut;
public function PauseScreen(_arg1:DisplayObjectContainer){
super(_arg1, new Point());
Gameplay.HideCursor();
cont.addEventListener(MouseEvent.CLICK, onMouseClicked);
quit.addEventListener(MouseEvent.CLICK, onQuitGame);
}
private function onMouseClicked(_arg1:MouseEvent):void{
dispatchEvent(new PauseEvent(PauseEvent.UNPAUSED));
remove();
Gameplay.pausedFlag = false;
Gameplay.ShowCursor();
}
private function onQuitGame(_arg1:MouseEvent):void{
dispatchEvent(new NavigationEvent(NavigationEvent.GAMEOVER));
remove();
}
}
}//package src.Game.Gameplay
Section 94
//WaveManager (src.Game.Gameplay.WaveManager)
package src.Game.Gameplay {
import utils.*;
import flash.events.*;
import src.Game.Gameplay.Enemies.*;
import src.Game.Gameplay.Base.*;
import src.Game.GameData.*;
public class WaveManager extends EventDispatcher {
private const ENEMY_TYPES:int = 8;
private var zombieCount:int;// = 0
private var DURATION:int;// = 1860
private var base:Base;
private var waveArray:Array;
private var frameCount:int;
private var enemyArray:Array;
public function WaveManager(_arg1:Base, _arg2:Array, _arg3:int){
DURATION = WaveData.WAVE_DURATION_FRAMES;
frameCount = (DURATION + 1);
zombieCount = 0;
super();
waveArray = ArrayClone.clone(WaveData.ALL_WAVE_ARRAY[_arg3]);
this.base = _arg1;
this.enemyArray = _arg2;
DURATION = WaveData.WAVE_DURATION_FRAMES;
if (_arg3 == 0){
DURATION = (DURATION - (30 * Constants.FPS));
} else {
if (_arg3 == 1){
DURATION = (DURATION - (20 * Constants.FPS));
} else {
if (_arg3 == 2){
DURATION = (DURATION - (10 * Constants.FPS));
};
};
};
frameCount = (DURATION + 1);
}
private function createEnemy(_arg1:int):void{
var _local2:Enemy;
if (_arg1 == 0){
if (Math.random() < 0.5){
if (Math.random() < 0.33){
_local2 = new WalkingZombie(base);
zombieCount++;
} else {
zombieCount++;
_local2 = new WalkingZombie(base);
};
} else {
if ((zombieCount % 3) == 0){
_local2 = new WalkingZombie(base);
} else {
_local2 = new WalkingZombie(base);
};
};
};
if (_arg1 == 1){
_local2 = new Enemy2(base);
};
if (_arg1 == 2){
_local2 = new Enemy3(base);
};
if (_arg1 == 3){
_local2 = new Enemy4(base);
};
if (_arg1 == 4){
_local2 = new Enemy5(base);
};
if (_arg1 == 5){
_local2 = new Enemy6(base);
};
if (_arg1 == 6){
_local2 = new Enemy7(base);
};
if (_arg1 == 7){
_local2 = new Enemy8(base);
};
dispatchEvent(new EnemyCreatedEvent(EnemyCreatedEvent.ENEMY_CREATED, _local2));
}
public function onFrame():void{
var _local1:int;
var _local2:int;
var _local3:Number;
if (frameCount-- > 0){
_local1 = waveArray.length;
while (_local1-- > 0) {
_local2 = waveArray[_local1];
if (_local2 > 0){
_local3 = (_local2 / frameCount);
if (Gameplay.enemyArray.length == 0){
_local3 = (_local3 * 10);
};
if (Math.random() < _local3){
var _local4 = waveArray;
var _local5 = _local1;
var _local6 = (_local4[_local5] - 1);
_local4[_local5] = _local6;
createEnemy(_local1);
};
};
};
} else {
dispatchEvent(new Event(Event.COMPLETE));
};
}
}
}//package src.Game.Gameplay
Section 95
//CharacterScreen (src.Game.Screens.Character.CharacterScreen)
package src.Game.Screens.Character {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Screens.*;
import src.Game.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class CharacterScreen extends ParentedMovieClip {
public var lvlDataTxt:TextField;
public var descTxt:TextField;
public var bg:Background;
public var levelData:int;// = 1
public static const DY:int = 22;
public static const START_X:int = 45;
public static const START_Y:int = 90;
public static var perkControlArray:Array = [];
public function CharacterScreen(_arg1:DisplayObjectContainer){
levelData = 1;
super(_arg1, new Point(0, 0));
bg.visible = false;
x = (x - 600);
lvlDataTxt.text = "";
descTxt.text = "CHOOSE ONE OF PERKS TO CONTINUE";
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onMouseOver(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
var _local4:Boolean;
_local2 = PerkControl(_arg1.currentTarget).myIdx;
_local3 = PerkControl(_arg1.currentTarget).perkLvl;
_local4 = checkPerkEnabled(_local3, _local2);
descTxt.text = ("" + PerkData.PERK_DESC_ARRAY[_local2]);
if ((((_local4 == false)) && ((_local3 == 0)))){
descTxt.text = ("" + PerkData.PERK_LOCKED_DESC_ARRAY[(_local2 - 7)]);
};
}
private function exitScreen(_arg1:Event):void{
x = (x + ((-600 - x) / 3));
if (x < -550){
removeEventListener(Event.ENTER_FRAME, exitScreen);
dispatchEvent(new NavigationEvent(NavigationEvent.BACK));
remove();
};
}
private function checkPerkEnabled(_arg1:int, _arg2:int):Boolean{
if (_arg1 >= 3){
return (false);
};
if ((((((_arg2 > 6)) && ((_arg2 <= 10)))) && ((PerkData.getCharLevel() < 4)))){
return (false);
};
if (_arg2 == 7){
if (PerkData.PERK_DATA[PerkData.IDX_SHARPSHOOTER] == 0){
return (false);
};
} else {
if (_arg2 == 8){
if ((((PerkData.PERK_DATA[PerkData.IDX_BLOOD_THIRSTY] == 0)) || ((PerkData.PERK_DATA[PerkData.IDX_FAST_SHOT] == 0)))){
return (false);
};
} else {
if (_arg2 == 9){
if (PerkData.PERK_DATA[PerkData.IDX_STEADY_HANDS] == 0){
return (false);
};
} else {
if (_arg2 == 10){
if (PerkData.PERK_DATA[PerkData.IDX_BLOOD_THIRSTY] == 0){
return (false);
};
};
};
};
};
if ((((((_arg2 > 10)) && ((_arg2 <= 16)))) && ((PerkData.getCharLevel() < 9)))){
return (false);
};
return (true);
}
private function onMouseOut(_arg1:MouseEvent):void{
descTxt.text = "CHOOSE ONE OF PERKS TO CONTINUE";
}
private function onPerkSelected(_arg1:PerkEvent):void{
var _local2:PerkControl;
_local2 = PerkControl(_arg1.currentTarget);
var _local3 = PerkData.PERK_DATA;
var _local4 = _local2.myIdx;
var _local5 = (_local3[_local4] + 1);
_local3[_local4] = _local5;
finished();
}
private function finished():void{
addEventListener(Event.ENTER_FRAME, exitScreen);
SoundManagerClass.playSound("StartBattleSound", 0.33);
}
private function onFrame(_arg1:Event):void{
x = (x + ((0 - x) / 3));
if (x > -3){
x = 0;
removeEventListener(Event.ENTER_FRAME, onFrame);
createPerkControls();
};
}
private function createPerkControls():void{
var _local1:int;
var _local2:int;
var _local3:Boolean;
var _local4:PerkControl;
_local1 = 17;
while (_local1-- > 0) {
_local2 = PerkData.PERK_DATA[_local1];
trace(("PERK LEVEL: " + _local2));
levelData = (levelData + _local2);
_local3 = checkPerkEnabled(_local2, _local1);
_local4 = new PerkControl(this, _local1, _local2, _local3);
_local4.addEventListener(PerkEvent.PERK_SELECTED, onPerkSelected);
_local4.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
_local4.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
_local4.x = START_X;
_local4.y = (START_Y + (_local1 * DY));
perkControlArray[_local1] = _local4;
};
lvlDataTxt.text = ("CHAR LEVEL: " + levelData);
if (levelData > 1){
SoundManagerClass.playSound("BloodySunsetMain", 0.66, 0, 1000);
};
}
}
}//package src.Game.Screens.Character
Section 96
//PerkControl (src.Game.Screens.Character.PerkControl)
package src.Game.Screens.Character {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class PerkControl extends ParentedMovieClip {
public var perkNameTxt:TextField;
private var myName:String;
public var perkLvl:int;
public var myIdx:int;
public var perkLvlTxt:TextField;
private var perkLvlT:TextField;
private var perkNameT:TextField;
public var plusC:buttonperk;
public function PerkControl(_arg1:DisplayObjectContainer, _arg2:int, _arg3:int, _arg4:Boolean){
this.myIdx = _arg2;
this.perkLvl = _arg3;
myName = PerkData.PERK_NAME_ARRAY[_arg2];
this.perkNameT = TextField(perkNameTxt);
this.perkLvlT = TextField(perkLvlTxt);
super(_arg1, new Point(0, 0));
perkNameTxt.mouseEnabled = false;
perkLvlTxt.mouseEnabled = false;
plusC.addEventListener(MouseEvent.CLICK, onPerkBought);
if (_arg4 == false){
plusC.visible = false;
addChild(new ButtonLocked());
};
addText();
}
private function addText():void{
perkNameTxt.text = myName;
perkLvlTxt.text = ("" + perkLvl.toString());
if (perkLvl == 3){
perkLvlTxt.text = "MAX";
};
}
private function onPerkBought(_arg1:MouseEvent):void{
dispatchEvent(new PerkEvent(PerkEvent.PERK_SELECTED));
}
}
}//package src.Game.Screens.Character
Section 97
//PerkEvent (src.Game.Screens.Character.PerkEvent)
package src.Game.Screens.Character {
import flash.events.*;
public class PerkEvent extends Event {
public static const PERK_SELECTED:String = "perk_sel";
public function PerkEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("PerkEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new PerkEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Screens.Character
Section 98
//WeaponEvent (src.Game.Screens.Upgrade.WeaponIcons.WeaponEvent)
package src.Game.Screens.Upgrade.WeaponIcons {
import flash.events.*;
public class WeaponEvent extends Event {
public static const WEAPON_SELECTED:String = "wepon_sel";
public function WeaponEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("WeaponEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new WeaponEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Screens.Upgrade.WeaponIcons
Section 99
//WeaponIcon (src.Game.Screens.Upgrade.WeaponIcons.WeaponIcon)
package src.Game.Screens.Upgrade.WeaponIcons {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Wrapper.*;
import utils.parentedmovieclip.*;
public class WeaponIcon extends ParentedMovieClip {
public var myIdx:int;
public var selected:Boolean;// = false
private var costume:MovieClip;
public function WeaponIcon(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:int){
selected = false;
this.costume = costume;
this.myIdx = _arg3;
super(_arg1, _arg2);
buttonMode = true;
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
addEventListener(MouseEvent.CLICK, onMouseClicked);
initCostume();
}
private function onMouseOver(_arg1:MouseEvent):void{
if (!selected){
alpha = 0.6;
};
removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
private function gotoTeaGames(_arg1:MouseEvent):void{
Wrapper.GET_CLICK_URL(Wrapper.LINK_MENUEXCLUSIVE);
}
public function selectWeapon():void{
dispatchEvent(new WeaponEvent(WeaponEvent.WEAPON_SELECTED));
selected = true;
alpha = 0.4;
}
private function onMouseClicked(_arg1:MouseEvent):void{
selectWeapon();
}
private function onMouseOut(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
if (!selected){
alpha = 1;
};
}
private function initCostume():void{
if (myIdx == 0){
costume = new WeaponIcon0();
};
if (myIdx == 1){
costume = new WeaponIcon1();
};
if (myIdx == 2){
costume = new WeaponIcon2();
};
if (myIdx == 3){
costume = new WeaponIcon3();
};
if (myIdx == 4){
costume = new WeaponIcon4();
};
if (myIdx == 5){
costume = new WeaponIcon5();
};
if (myIdx == 6){
costume = new WeaponIcon6();
};
if (myIdx == 7){
costume = new WeaponIcon7();
};
if (myIdx == 8){
costume = new WeaponIcon8();
};
if (myIdx == 9){
costume = new WeaponIcon9();
};
if (myIdx == 10){
costume = new WeaponIconExclusive();
removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
removeEventListener(MouseEvent.CLICK, onMouseClicked);
addEventListener(MouseEvent.CLICK, gotoTeaGames);
};
if (myIdx == 11){
costume = new WeaponIcon11();
};
addChild(costume);
}
public function unSelectWeapon():void{
alpha = 1;
selected = false;
}
}
}//package src.Game.Screens.Upgrade.WeaponIcons
Section 100
//MiscUpgradeControl (src.Game.Screens.Upgrade.MiscUpgradeControl)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class MiscUpgradeControl extends ParentedMovieClip {
public var descTxt:TextField;
private var myLevel:int;
private var myName:String;
private var myDesc:String;
public var costTxt:TextField;
public var myIdx:int;
public var myCost:Number;
private var myCostume:MovieClip;
public var nameTxt:TextField;
public static const ICON_X:Number = 10;
public static const ICON_Y:Number = 0;
public function MiscUpgradeControl(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:int){
this.myIdx = _arg3;
super(_arg1, _arg2);
myLevel = MiscUpgradeData.UPGRADE_LVL_ARRAY[_arg3];
myCost = (MiscUpgradeData.COST_ARRAY[_arg3] + (myLevel * MiscUpgradeData.DELTA_ARRAY[_arg3]));
myDesc = MiscUpgradeData.DESC_ARRAY[_arg3];
myName = MiscUpgradeData.NAMES_ARRAY[_arg3];
TextField(nameTxt).text = ("" + MiscUpgradeData.NAMES_ARRAY[_arg3]);
TextField(descTxt).text = ("" + MiscUpgradeData.DESC_ARRAY[_arg3]);
TextField(costTxt).text = ("" + myCost);
InitCostume();
CreateIcon();
buttonMode = true;
mouseChildren = false;
}
private function onMouseClicked(_arg1:MouseEvent):void{
dispatchEvent(new UpgradeEvent(UpgradeEvent.UPGRADE));
}
private function InitCostume():void{
if (myIdx == MiscUpgradeData.IDX_REPAIRS){
myCostume = new RepairIcon();
} else {
if (myIdx == MiscUpgradeData.IDX_REPAIRMEN){
myCostume = new RepairManIcon();
} else {
if (myIdx == MiscUpgradeData.IDX_ENGINEERING){
myCostume = new EngineeringIcon();
} else {
if (myIdx == MiscUpgradeData.IDX_TURRET){
myCostume = new TurretIcon();
} else {
if (myIdx == MiscUpgradeData.IDX_HELI){
myCostume = new HelicopterIcon();
};
};
};
};
};
}
private function CreateIcon():void{
var _local1:MiscUpgradeIcon;
_local1 = new MiscUpgradeIcon(this, new Point(ICON_X, ICON_Y), myLevel, myCostume, myIdx);
if ((((CashPrizeCounter.CASH >= myCost)) && ((myLevel < MiscUpgradeData.MISC_MAX_LEVEL)))){
addEventListener(MouseEvent.CLICK, onMouseClicked);
if (((BaseModel.FullyRepaired()) && ((myIdx == MiscUpgradeData.IDX_REPAIRS)))){
removeEventListener(MouseEvent.CLICK, onMouseClicked);
};
} else {
if (myLevel >= MiscUpgradeData.MISC_MAX_LEVEL){
TextField(descTxt).text = (TextField(descTxt).text + "\nMAX LVL REACHED");
TextField(costTxt).text = "MAXED";
};
};
}
}
}//package src.Game.Screens.Upgrade
Section 101
//MiscUpgradeIcon (src.Game.Screens.Upgrade.MiscUpgradeIcon)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class MiscUpgradeIcon extends ParentedMovieClip {
private var myLvl:int;
public var lvlTxt:TextField;
public function MiscUpgradeIcon(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:int, _arg4:MovieClip, _arg5:int){
super(_arg1, _arg2);
width = (height = 40);
addChildAt(_arg4, 0);
TextField(lvlTxt).text = ("" + _arg3);
if (_arg5 == 0){
TextField(lvlTxt).visible = false;
};
buttonMode = true;
_arg4.buttonMode = true;
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
}
private function onMouseOver(_arg1:MouseEvent):void{
SoundManagerClass.playSound("MouseOverSound", 0.66);
}
}
}//package src.Game.Screens.Upgrade
Section 102
//MiscUpgradeScreen (src.Game.Screens.Upgrade.MiscUpgradeScreen)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.*;
import src.Game.GameData.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class MiscUpgradeScreen extends ParentedMovieClip {
public var controlArray:Array;
public static const CONTROL_DY:int = 45;
public static const CONTROL_START_X:int = 50;
public static const CONTROL_START_Y:int = 175;
public static const TOTAL_MISC_UPGRADES:int = 5;
public function MiscUpgradeScreen(_arg1:DisplayObjectContainer){
controlArray = [];
super(_arg1, new Point(0, 0));
InitControls();
}
private function InitControls():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:MiscUpgradeControl;
_local1 = TOTAL_MISC_UPGRADES;
while (_local1-- > 0) {
_local2 = CONTROL_START_X;
_local3 = (CONTROL_START_Y + (_local1 * CONTROL_DY));
_local4 = new MiscUpgradeControl(this, new Point(_local2, _local3), _local1);
controlArray.push(_local4);
_local4.addEventListener(UpgradeEvent.UPGRADE, onUpgradeReceived);
};
}
private function onUpgradeReceived(_arg1:UpgradeEvent):void{
var _local2:MiscUpgradeControl;
var _local3:int;
_local2 = MiscUpgradeControl(_arg1.currentTarget);
_local3 = _local2.myIdx;
if (_local3 != 0){
var _local4 = MiscUpgradeData.UPGRADE_LVL_ARRAY;
var _local5 = _local3;
var _local6 = (_local4[_local5] + 1);
_local4[_local5] = _local6;
};
manageUpgrades(_local3);
CashPrizeCounter.Update((-1 * _local2.myCost));
dispatchEvent(new UpgradeEvent(UpgradeEvent.UPGRADE));
SoundManagerClass.playSound("ReloadSound", 0.33);
destroyControls();
InitControls();
}
private function manageUpgrades(_arg1:int):void{
if (_arg1 == MiscUpgradeData.IDX_REPAIRS){
BaseModel.Repair(MiscUpgradeData.REPAIRS_HP);
} else {
if (_arg1 == MiscUpgradeData.IDX_REPAIRMEN){
} else {
if (_arg1 == MiscUpgradeData.IDX_ENGINEERING){
BaseModel.IncreaseMaxHP(MiscUpgradeData.ENGINEERING_HP_PER_LEVEL);
} else {
if (_arg1 == MiscUpgradeData.IDX_TURRET){
} else {
if (_arg1 == MiscUpgradeData.IDX_HELI){
};
};
};
};
};
}
private function destroyControls():void{
var _local1:int;
var _local2:MiscUpgradeControl;
_local1 = TOTAL_MISC_UPGRADES;
while (_local1-- > 0) {
_local2 = MiscUpgradeControl(controlArray[_local1]);
_local2.removeEventListener(UpgradeEvent.UPGRADE, onUpgradeReceived);
controlArray.splice(_local1, 1);
_local2.remove();
};
}
}
}//package src.Game.Screens.Upgrade
Section 103
//PropertyUpgradeControl (src.Game.Screens.Upgrade.PropertyUpgradeControl)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class PropertyUpgradeControl extends ParentedMovieClip {
public var butOff:PropertyButtonMask;
public var myCostDataArray:Array;
public var propertyTxt:TextField;
public var costTxt:TextField;
public var myIdx:int;
public var myPropertyAmount:Number;
public var but:PropertyButton;
public var myCost:Number;
public var myUpgradeLevel:int;
public var myWeaponIdx:int;
public var myWeaponData:Array;
public var nameTxt:TextField;
public static const PROPERTIES_NAMES:Array = ["DAMAGE", "FIRE RATE", "RELOAD TIME", "CLIP SIZE"];
public function PropertyUpgradeControl(_arg1:DisplayObjectContainer, _arg2:Point, _arg3:int, _arg4:int){
this.myWeaponIdx = _arg4;
this.myIdx = _arg3;
super(_arg1, _arg2);
scaleX = (scaleY = 1.1);
myWeaponData = WeaponData.ALL_WEAPON_DATA_ARRAY[_arg4];
myUpgradeLevel = WeaponData.ALL_WEAPON_UPGRADES[_arg4][_arg3];
myPropertyAmount = myWeaponData[_arg3][WeaponData.ALL_WEAPON_UPGRADES[_arg4][_arg3]];
myCostDataArray = WeaponData.ALL_WEAPON_COST_DATA_ARRAY[_arg4];
if ((WeaponData.ALL_WEAPON_UPGRADES[_arg4][_arg3] + 1) <= 4){
myCost = myCostDataArray[_arg3][(WeaponData.ALL_WEAPON_UPGRADES[_arg4][_arg3] + 1)];
TextField(costTxt).text = (("" + myCost) + "$");
if (CashPrizeCounter.CASH >= myCost){
but.addEventListener(MouseEvent.CLICK, onButtonClicked);
SimpleButton(but).visible = true;
MovieClip(butOff).visible = false;
} else {
SimpleButton(but).visible = false;
MovieClip(butOff).visible = true;
};
} else {
TextField(costTxt).text = "MAXED";
SimpleButton(but).visible = false;
MovieClip(butOff).visible = true;
};
TextField(propertyTxt).mouseEnabled = false;
TextField(nameTxt).text = PROPERTIES_NAMES[_arg3];
TextField(propertyTxt).text = ("" + myPropertyAmount);
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
}
private function onMouseOver(_arg1:MouseEvent):void{
SoundManagerClass.playSound("MouseOverSound", 0.66);
}
public function upgrade():void{
CashPrizeCounter.Update((-1 * myCost));
var _local1 = WeaponData.ALL_WEAPON_UPGRADES[myWeaponIdx];
var _local2 = myIdx;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
}
private function onButtonClicked(_arg1:MouseEvent):void{
SoundManagerClass.playSound("ReloadSound", 0.33);
upgrade();
dispatchEvent(new UpgradeEvent(UpgradeEvent.UPGRADE));
}
}
}//package src.Game.Screens.Upgrade
Section 104
//TabSelectControl (src.Game.Screens.Upgrade.TabSelectControl)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.events.*;
import src.Game.*;
public class TabSelectControl extends Sprite {
public var misc:MiscTab;
public var currentSelection:int;// = 0
public var weapons:WeaponsTab;
public static const MISC_S:int = 1;
public static const WEAPONS_S:int = 0;
public function TabSelectControl(){
currentSelection = WEAPONS_S;
super();
weapons.addEventListener(MouseEvent.CLICK, onWeaponsSelected);
misc.addEventListener(MouseEvent.CLICK, onMiscSelected);
weapons.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
misc.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
dispatchEvent(new TabSelectedEvent(TabSelectedEvent.WEAPONS));
}
private function onMiscSelected(_arg1:MouseEvent):void{
if (currentSelection != MISC_S){
SoundManagerClass.playSound("ClickSound");
currentSelection = MISC_S;
dispatchEvent(new TabSelectedEvent(TabSelectedEvent.MISC));
};
}
private function onWeaponsSelected(_arg1:MouseEvent):void{
if (currentSelection != WEAPONS_S){
SoundManagerClass.playSound("ClickSound");
currentSelection = WEAPONS_S;
dispatchEvent(new TabSelectedEvent(TabSelectedEvent.WEAPONS));
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
SoundManagerClass.playSound("MouseOverSound");
}
}
}//package src.Game.Screens.Upgrade
Section 105
//TabSelectedEvent (src.Game.Screens.Upgrade.TabSelectedEvent)
package src.Game.Screens.Upgrade {
import flash.events.*;
public class TabSelectedEvent extends Event {
public static const MISC:String = "misc";
public static const WEAPONS:String = "weapons";
public function TabSelectedEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("TabSelectedEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new TabSelectedEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Screens.Upgrade
Section 106
//UpgradeEvent (src.Game.Screens.Upgrade.UpgradeEvent)
package src.Game.Screens.Upgrade {
import flash.events.*;
public class UpgradeEvent extends Event {
public static const UPGRADE:String = "upgrade";
public function UpgradeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("UpgradeEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new UpgradeEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Screens.Upgrade
Section 107
//UpgradeScreen (src.Game.Screens.Upgrade.UpgradeScreen)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Gameplay.Base.*;
import src.Game.Screens.*;
import flash.text.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class UpgradeScreen extends ParentedMovieClip {
public var hp:Hp_tab_shop;
public var cashTxt:TextField;
private var _tabCtrl:TabSelectControl;
public var healthTxt:TextField;
public var exitBut:ExitButton;
private var miscUpgradeScr:MiscUpgradeScreen;
public var tabCtrl:TabSelectControl;
private var weaponUpgrScr:WeaponUpgradeScreen;
public function UpgradeScreen(_arg1:DisplayObjectContainer){
super(_arg1, new Point(0, 0));
_tabCtrl = TabSelectControl(tabCtrl);
_tabCtrl.addEventListener(TabSelectedEvent.WEAPONS, onWeaponsSelected);
_tabCtrl.addEventListener(TabSelectedEvent.MISC, onMiscSelected);
_tabCtrl.dispatchEvent(new TabSelectedEvent(TabSelectedEvent.WEAPONS));
displayCashAndHealth();
x = (x - 600);
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onMiscSelected(_arg1:TabSelectedEvent):void{
if (weaponUpgrScr){
if (weaponUpgrScr.parent){
weaponUpgrScr.removeEventListener(UpgradeEvent.UPGRADE, onUpgraded);
weaponUpgrScr.remove();
};
};
miscUpgradeScr = new MiscUpgradeScreen(this);
miscUpgradeScr.addEventListener(UpgradeEvent.UPGRADE, onUpgraded);
}
private function exitScreen(_arg1:Event):void{
x = (x + ((-600 - x) / 3));
if (x < -550){
removeEventListener(Event.ENTER_FRAME, exitScreen);
dispatchEvent(new NavigationEvent(NavigationEvent.BACK));
remove();
};
}
private function displayCashAndHealth():void{
var _local1:int;
TextField(cashTxt).text = (("" + Math.round(CashPrizeCounter.CASH)) + "$");
TextField(healthTxt).text = ((("HP: " + Math.round(BaseModel.hitPoints)) + "/") + Math.round(BaseModel.maxHitPoints));
_local1 = (100 - Math.ceil(((100 * BaseModel.hitPoints) / BaseModel.maxHitPoints)));
if (_local1 == 0){
_local1 = 1;
};
hp.gotoAndStop(_local1);
}
private function onWeaponsSelected(_arg1:TabSelectedEvent):void{
if (miscUpgradeScr){
if (miscUpgradeScr.parent){
miscUpgradeScr.removeEventListener(UpgradeEvent.UPGRADE, onUpgraded);
miscUpgradeScr.remove();
};
};
weaponUpgrScr = new WeaponUpgradeScreen(this);
weaponUpgrScr.addEventListener(UpgradeEvent.UPGRADE, onUpgraded);
}
private function onFrame(_arg1:Event):void{
x = (x + ((0 - x) / 3));
if (x > -3){
x = 0;
removeEventListener(Event.ENTER_FRAME, onFrame);
exitBut.addEventListener(MouseEvent.CLICK, onBackClicked);
};
}
private function onUpgraded(_arg1:UpgradeEvent):void{
displayCashAndHealth();
}
private function onBackClicked(_arg1:MouseEvent):void{
addEventListener(Event.ENTER_FRAME, exitScreen);
}
}
}//package src.Game.Screens.Upgrade
Section 108
//WeaponUpgradeScreen (src.Game.Screens.Upgrade.WeaponUpgradeScreen)
package src.Game.Screens.Upgrade {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.Screens.Upgrade.WeaponIcons.*;
import src.Game.*;
import src.Game.GameData.*;
import flash.text.*;
import utils.parentedmovieclip.*;
import src.Game.Gameplay.UI.*;
public class WeaponUpgradeScreen extends ParentedMovieClip {
public var buyBut:BuyButton;
public var descTxt:TextField;
public var equipBut:EquipButton;
public var currentSelectedCost:Number;
public var costTxt:TextField;
public var currentSelectedWeapon:int;
public var upgradeControlsArray:Array;
public var eqMark:EquippedMark;
public var iconArray:Array;
public var nameTxt:TextField;
public static const DATA_DESC_IDX:int = 8;
public static const UPGRADES_START_X:int = 95;
public static const ICONS_START_X:int = 72;
public static const ICONS_START_Y:int = 180;
public static const ICONS_DX:int = 76;
public static const ICONS_DY:int = 50;
public static const UPGRADES_START_Y:int = 300;
public static const UPGRADES_DY:int = 20;
public static const DATA_NAME_IDX:int = 7;
public function WeaponUpgradeScreen(_arg1:DisplayObjectContainer){
var _local2:int;
iconArray = [];
upgradeControlsArray = [];
super(_arg1, new Point(0, 0));
addIcons();
hideButtons();
_local2 = WeaponData.EQUIPPED_WEAPON_IDX;
selectWeapon(_local2);
WeaponIcon(iconArray[_local2]).selectWeapon();
SimpleButton(equipBut).addEventListener(MouseEvent.CLICK, onEquipButtonPressed);
SimpleButton(buyBut).addEventListener(MouseEvent.CLICK, onBuyButtonPressed);
}
private function removeAllWeaponElements():void{
removeUpgradeControls();
}
private function selectWeapon(_arg1:int):void{
var _local2:Boolean;
_local2 = WeaponData.ALL_WEAPON_OWNERSHIP[_arg1];
currentSelectedWeapon = _arg1;
removeAllWeaponElements();
addNamesAndDesc(_arg1);
if (_local2){
weaponOwnedHandler(_arg1);
} else {
weaponNotOwnedHandler(_arg1);
};
}
private function weaponOwnedHandler(_arg1:int):void{
var _local2:int;
var _local3:Array;
var _local4:Number;
var _local5:Number;
var _local6:PropertyUpgradeControl;
_local2 = 4;
_local3 = Array(WeaponData.ALL_WEAPON_UPGRADES[_arg1]);
while (_local2-- > 0) {
_local4 = UPGRADES_START_X;
_local5 = (UPGRADES_START_Y + (_local2 * UPGRADES_DY));
_local6 = new PropertyUpgradeControl(this, new Point(_local4, _local5), _local2, _arg1);
upgradeControlsArray.push(_local6);
_local6.addEventListener(UpgradeEvent.UPGRADE, onWeaponUpgraded);
};
if (WeaponData.EQUIPPED_WEAPON_IDX == _arg1){
MovieClip(eqMark).visible = true;
} else {
SimpleButton(equipBut).visible = true;
};
}
private function onEquipButtonPressed(_arg1:MouseEvent):void{
trace("EQUIP");
WeaponData.EQUIPPED_WEAPON_IDX = currentSelectedWeapon;
updateScreen();
}
private function updateScreen():void{
hideButtons();
trace(("CURRENT WEAPON: " + currentSelectedWeapon));
selectWeapon(currentSelectedWeapon);
dispatchEvent(new UpgradeEvent(UpgradeEvent.UPGRADE));
}
private function onWeaponSelected(_arg1:WeaponEvent):void{
var _local2:int;
var _local3:int;
var _local4:WeaponIcon;
hideButtons();
_local2 = WeaponIcon(_arg1.currentTarget).myIdx;
currentSelectedWeapon = _local2;
_local3 = iconArray.length;
while (_local3-- > 0) {
_local4 = WeaponIcon(iconArray[_local3]);
if (_local3 != currentSelectedWeapon){
_local4.unSelectWeapon();
};
};
selectWeapon(_local2);
}
private function onBuyButtonPressed(_arg1:MouseEvent):void{
CashPrizeCounter.Update((-1 * currentSelectedCost));
WeaponData.ALL_WEAPON_OWNERSHIP[currentSelectedWeapon] = true;
WeaponData.EQUIPPED_WEAPON_IDX = currentSelectedWeapon;
updateScreen();
SoundManagerClass.playSound("Buy");
}
private function weaponNotOwnedHandler(_arg1:int):void{
var _local2:Number;
_local2 = WeaponData.ALL_WEAPON_COST_DATA_ARRAY[_arg1][0][0];
currentSelectedCost = _local2;
TextField(costTxt).text = (("COST: " + _local2) + "$");
TextField(costTxt).visible = true;
if (_local2 <= CashPrizeCounter.CASH){
SimpleButton(buyBut).visible = true;
} else {
TextField(descTxt).text = "\nNOT ENOUGH CASH";
};
}
private function onWeaponUpgraded(_arg1:UpgradeEvent):void{
updateScreen();
}
private function removeUpgradeControls():void{
var _local1:int;
var _local2:PropertyUpgradeControl;
_local1 = upgradeControlsArray.length;
while (_local1-- > 0) {
_local2 = PropertyUpgradeControl(upgradeControlsArray[_local1]);
_local2.removeEventListener(UpgradeEvent.UPGRADE, onWeaponUpgraded);
_local2.remove();
upgradeControlsArray.splice(_local1, 1);
};
}
private function addNamesAndDesc(_arg1:int):void{
var _local2:String;
var _local3:String;
_local2 = WeaponData.ALL_WEAPON_DATA_ARRAY[_arg1][DATA_NAME_IDX];
_local3 = WeaponData.ALL_WEAPON_DATA_ARRAY[_arg1][DATA_DESC_IDX];
TextField(nameTxt).text = _local2;
if ((((((_arg1 == WeaponData.IDX_PISTOL)) || ((_arg1 == WeaponData.IDX_MAGNUM)))) || ((_arg1 == WeaponData.IDX_PPK12_GAUSS)))){
_local3 = (_local3 + "\nPISTOL CLASS");
} else {
if ((((((((((_arg1 == WeaponData.IDX_UZI)) || ((_arg1 == WeaponData.IDX_AK47)))) || ((_arg1 == WeaponData.IDX_SNIPER)))) || ((_arg1 == WeaponData.IDX_HKP90)))) || ((_arg1 == WeaponData.IDX_GAUSS_RIFLE)))){
_local3 = (_local3 + "\nRIFLE CLASS");
} else {
if ((((_arg1 == WeaponData.IDX_SHOTGUN)) || ((_arg1 == WeaponData.IDX_COMBAT_SGUN)))){
_local3 = (_local3 + "\nSHOTGUN CLASS");
} else {
if ((((_arg1 == WeaponData.IDX_MINIGUN)) || ((_arg1 == WeaponData.IDX_BOZAR)))){
_local3 = (_local3 + "\nHEAVY GUN CLASS");
};
};
};
};
TextField(descTxt).text = _local3;
}
private function hideButtons():void{
SimpleButton(buyBut).visible = false;
SimpleButton(equipBut).visible = false;
MovieClip(eqMark).visible = false;
TextField(costTxt).visible = false;
}
private function addIcons():void{
var _local1:int;
var _local2:Number;
var _local3:Number;
var _local4:WeaponIcon;
_local1 = 12;
while (_local1-- > 0) {
_local2 = (ICONS_START_X + ((_local1 % 6) * ICONS_DX));
_local3 = (ICONS_START_Y + (Math.floor((_local1 / 6)) * ICONS_DY));
_local4 = new WeaponIcon(this, new Point(_local2, _local3), _local1);
iconArray[_local1] = WeaponIcon(_local4);
_local4.addEventListener(WeaponEvent.WEAPON_SELECTED, onWeaponSelected);
};
}
}
}//package src.Game.Screens.Upgrade
Section 109
//CreditsScreen (src.Game.Screens.CreditsScreen)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
public class CreditsScreen extends MovieClip {
public var backBut:SimpleButton;
private var back:SimpleButton;
public function CreditsScreen(_arg1:DisplayObjectContainer){
_arg1.addChild(this);
back = SimpleButton(backBut);
back.addEventListener(MouseEvent.CLICK, onBack);
}
private function onBack(_arg1:MouseEvent):void{
if (parent){
parent.removeChild(this);
};
dispatchEvent(new NavigationEvent(NavigationEvent.BACK));
}
}
}//package src.Game.Screens
Section 110
//DifficultyScreen (src.Game.Screens.DifficultyScreen)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.*;
import src.Wrapper.*;
import utils.parentedmovieclip.*;
public class DifficultyScreen extends ParentedMovieClip {
var normalBut:SimpleButton;
var easyBut:SimpleButton;
var frameDelay:int;// = 3
public var normalB:button_normal;
public var easyB:button_easy;
var hardBut:SimpleButton;
var frameCount:int;// = 0
public var hardB:button_hard;
public function DifficultyScreen(_arg1:DisplayObjectContainer){
frameCount = 0;
frameDelay = 3;
super(_arg1, new Point());
Game.difficulty = 0;
easyBut = SimpleButton(easyB);
normalBut = SimpleButton(normalB);
hardBut = SimpleButton(hardB);
easyBut.visible = (normalBut.visible = (hardBut.visible = false));
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onHard(_arg1:MouseEvent):void{
Game.difficulty = 1;
remove();
}
override public function remove():void{
TeagamesAPI.GameStarted();
super.remove();
dispatchEvent(new Event(Event.COMPLETE));
SoundManagerClass.playSound("StartBattleSound", 0.33);
}
private function onEasy(_arg1:MouseEvent):void{
Game.difficulty = -1;
remove();
}
private function addListeners():void{
easyBut.addEventListener(MouseEvent.CLICK, onEasy);
normalBut.addEventListener(MouseEvent.CLICK, onNormal);
hardBut.addEventListener(MouseEvent.CLICK, onHard);
}
private function onNormal(_arg1:MouseEvent):void{
Game.difficulty = 0;
remove();
}
private function onFrame(_arg1:Event):void{
frameCount++;
if ((frameCount % frameDelay) == 0){
if ((frameCount / frameDelay) == 2){
easyBut.visible = true;
} else {
if ((frameCount / frameDelay) == 3){
normalBut.visible = true;
} else {
if ((frameCount / frameDelay) == 4){
hardBut.visible = true;
removeEventListener(Event.ENTER_FRAME, onFrame);
addListeners();
};
};
};
};
}
}
}//package src.Game.Screens
Section 111
//GameIntroText (src.Game.Screens.GameIntroText)
package src.Game.Screens {
import utils.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class GameIntroText extends ParentedMovieClip {
var myT3:TextField;
public var joeyMC:JoeyMC;
public var myTxt:TextField;
var tween1:Tween;
var myT2:TextField;
var tween:Tween;
var myT:TextField;
public var myTxt2:TextField;
public var myTxt3:TextField;
var frameCount:int;// = 270
var joey:MovieClip;
public function GameIntroText(_arg1:DisplayObjectContainer){
var _local2:Tween;
frameCount = 270;
super(_arg1, new Point(0, 0));
myT = TextField(myTxt);
myT2 = TextField(myTxt2);
myT3 = TextField(myTxt3);
joey = MovieClip(joeyMC);
_local2 = new Tween(joey);
_local2.tweenToCoordinates(new Point((joey.x + 500), joey.y), new Point(joey.x, joey.y), 0, 0.25);
myT.visible = (myT2.visible = (myT3.visible = false));
addEventListener(Event.ENTER_FRAME, onFrame);
addEventListener(MouseEvent.CLICK, onMouseClicked);
}
private function onMouseClicked(_arg1:MouseEvent):void{
dispatchEvent(new Event(Event.COMPLETE));
removeEventListener(Event.ENTER_FRAME, onFrame);
remove();
}
private function onFrame(_arg1:Event):void{
var _local2:Tween;
var _local3:Tween;
var _local4:Tween;
var _local5:Tween;
if (frameCount == 240){
myT.visible = true;
} else {
if (frameCount == 210){
myT2.visible = true;
} else {
if (frameCount == 75){
myT3.visible = true;
};
};
};
if (frameCount-- == 0){
_local2 = new Tween(joey);
_local3 = new Tween(myT);
_local4 = new Tween(myT2);
_local5 = new Tween(myT3);
_local2.tweenToCoordinates(new Point(joey.x, joey.y), new Point((joey.x + 600), joey.y));
_local3.tweenToCoordinates(new Point(myT.x, myT.y), new Point((myT.x - 600), myT.y));
_local4.tweenToCoordinates(new Point(myT2.x, myT2.y), new Point((myT2.x - 600), myT2.y));
_local5.tweenToCoordinates(new Point(myT3.x, myT3.y), new Point((myT3.x - 600), myT3.y));
};
if (frameCount < -20){
removeEventListener(Event.ENTER_FRAME, onFrame);
remove();
dispatchEvent(new Event(Event.COMPLETE));
};
}
}
}//package src.Game.Screens
Section 112
//GameOverScreen (src.Game.Screens.GameOverScreen)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import src.Game.Achievements.*;
import frosmo.*;
import src.Wrapper.*;
import flash.net.*;
import flash.text.*;
public class GameOverScreen extends MovieClip {
public var exitB:SimpleButton;
public var scoreT:TextField;
private var description:String;// = "description=Don't touch golden skull if you find one. Here's what happens if you do!"
private var restartB:SimpleButton;
private var exit:SimpleButton;
private var ac:SimpleButton;
private var submit:SimpleButton;
public var submitBut:SimpleButton;
private var menu:SimpleButton;
private var screenshot:String;// = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif"
private var title:String;// = "title=Zombies want my brains!!!"
private var score:Number;
private var swfURL:String;// = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1"
private var sharedURL:String;// = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook"
private var username:String;// = "username=teagames"
private var scoreText:TextField;
public var restartBut:SimpleButton;
public var acBut:SimpleButton;
public function GameOverScreen(_arg1:DisplayObjectContainer, _arg2:Number){
var _local3:RankManager;
description = "description=Don't touch golden skull if you find one. Here's what happens if you do!";
sharedURL = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook";
swfURL = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1";
title = "title=Zombies want my brains!!!";
username = "username=teagames";
screenshot = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif";
super();
_local3 = new RankManager(this, _arg2);
this.score = _arg2;
if (_arg1){
_arg1.addChild(this);
};
initDisplay();
submitScore();
}
private function onAchievementsClicked(_arg1:MouseEvent):void{
var _local2:AchievementsScreen;
_local2 = new AchievementsScreen(parent);
visible = false;
_local2.addEventListener(NavigationEvent.BACK, onBackFromAchievements);
}
private function initDisplay():void{
scoreText = TextField(scoreT);
scoreText.text = ("You scored: " + score);
submit = SimpleButton(submitBut);
submit.addEventListener(MouseEvent.CLICK, onSubmitClicked);
restartB = SimpleButton(restartBut);
restartB.addEventListener(MouseEvent.CLICK, onRestartClicked);
exit = SimpleButton(exitB);
exit.addEventListener(MouseEvent.CLICK, onExitClicked);
ac = SimpleButton(acBut);
ac.addEventListener(MouseEvent.CLICK, onAchievementsClicked);
if (Wrapper.FROSMO_V){
submit.visible = false;
restartB.visible = false;
menu.visible = false;
} else {
exit.visible = false;
};
}
private function onSubmitClicked(_arg1:MouseEvent):void{
mochiSubmit();
}
private function submitScore():void{
var _local1:Number;
if (Wrapper.TEST){
return;
};
if (Wrapper.FROSMO_V){
_local1 = Api.getNumber("Score");
Api.submitScore(score.toString(), null, null);
} else {
KongregateLoader.kongregate.stats.submit("Score", score);
MindJoltLoader.MindJoltAPI.service.submitScore(score);
};
}
private function onBackFromAchievements(_arg1:NavigationEvent):void{
visible = true;
}
private function mochiSubmit():void{
var scoreA:Number;
var o:Object;
var boardID:String;
scoreA = score;
o = {n:Wrapper.MOCHI_LEADERBOARD, f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:scoreA, onClose:function (){
}});
}
private function onMenuClicked(_arg1:MouseEvent):void{
if (parent){
parent.removeChild(this);
};
dispatchEvent(new NavigationEvent(NavigationEvent.BACK));
}
private function onExitClicked(_arg1:MouseEvent):void{
var _local2:URLRequest;
_local2 = new URLRequest(Api.exitUrl);
navigateToURL(_local2, "_self");
}
private function onRestartClicked(_arg1:MouseEvent):void{
if (parent){
parent.removeChild(this);
};
dispatchEvent(new NavigationEvent(NavigationEvent.START));
}
}
}//package src.Game.Screens
Section 113
//GamePassedScreen (src.Game.Screens.GamePassedScreen)
package src.Game.Screens {
import utils.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.*;
import src.Wrapper.*;
import flash.net.*;
import flash.text.*;
import utils.parentedmovieclip.*;
import flash.filters.*;
public class GamePassedScreen extends ParentedMovieClip {
public var restT:TextField;
private var description:String;// = "description=Don't touch golden skull if you find one. Here's what happens if you do!"
public var shareBut:ShareButton;
public var whileT:TextField;
public var submitBut:SumbitButton;
private var title:String;// = "title=Zombies want my brains!!!"
var color:int;// = 0
private var screenshot:String;// = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif"
public var submittedTxt:TextField;
var colorM:ColorMatrix;
public var menuBut:QuitGameButton;
private var swfURL:String;// = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1"
var frameCount:int;// = 0
private var sharedURL:String;// = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook"
private var username:String;// = "username=teagames"
public function GamePassedScreen(_arg1:DisplayObjectContainer){
frameCount = 0;
color = 0;
description = "description=Don't touch golden skull if you find one. Here's what happens if you do!";
sharedURL = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook";
swfURL = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1";
title = "title=Zombies want my brains!!!";
username = "username=teagames";
screenshot = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif";
super(_arg1, new Point(0, 0));
colorM = new ColorMatrix();
colorM.adjustBrightness(-100);
colorM.adjustSaturation(-100);
filters = [new ColorMatrixFilter(colorM)];
SoundManagerClass.startMusic("BloodySunsetGameWonStinger");
restT.visible = false;
whileT.visible = false;
shareBut.visible = false;
submitBut.visible = false;
menuBut.visible = false;
submittedTxt.visible = false;
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onMouseClicked(_arg1:MouseEvent):void{
removeEventListener(Event.ENTER_FRAME, onFrame);
remove();
dispatchEvent(new Event(Event.COMPLETE));
}
private function onSubmitClicked(_arg1:MouseEvent):void{
submitBut.visible = false;
submittedTxt.visible = true;
TeagamesAPI.SendScore();
}
private function onFrame(_arg1:Event):void{
if (frameCount < 100){
x = (x + -1);
y = (y + -1);
scaleX = (scaleX * 1.001);
scaleY = scaleX;
};
if (frameCount++ == 101){
restT.visible = true;
} else {
if (frameCount == 200){
whileT.visible = true;
shareBut.visible = true;
submitBut.visible = true;
menuBut.visible = true;
shareBut.addEventListener(MouseEvent.CLICK, onShareClicked);
submitBut.addEventListener(MouseEvent.CLICK, onSubmitClicked);
menuBut.addEventListener(MouseEvent.CLICK, onMouseClicked);
};
};
color = (color + ((100 - color) * 0.15));
color++;
colorM = new ColorMatrix();
colorM.adjustBrightness((-100 + color));
colorM.adjustSaturation((-100 + color));
filters = [new ColorMatrixFilter(colorM)];
if (color >= 100){
filters = [];
};
}
private function onShareClicked(_arg1:MouseEvent):void{
var _local2:String;
if (Wrapper.FB_ENDPOINT == null){
Wrapper.FB_ENDPOINT = "http://api.addthis.com/oexchange/0.8/forward/facebook/offer";
};
_local2 = ((((((((((((Wrapper.FB_ENDPOINT + "?") + sharedURL) + "&") + swfURL) + "&") + title) + "&") + description) + "&") + username) + "&") + screenshot);
navigateToURL(new URLRequest(_local2));
}
}
}//package src.Game.Screens
Section 114
//Instructions (src.Game.Screens.Instructions)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class Instructions extends ParentedMovieClip {
private const INSTR_TEXT:String = "Play game good to win, try not to lose and play good game!
Try to beat highscore!
And rock the game!";
public var msgT:TextField;
public var startB:button_start;
private var start:SimpleButton;
public function Instructions(_arg1:DisplayObjectContainer){
super(_arg1, new Point(0, 0));
start = SimpleButton(startB);
start.addEventListener(MouseEvent.CLICK, onMouseClicked);
}
private function onMouseClicked(_arg1:MouseEvent):void{
remove();
dispatchEvent(new Event(Event.COMPLETE));
}
}
}//package src.Game.Screens
Section 115
//IntroScreen (src.Game.Screens.IntroScreen)
package src.Game.Screens {
import utils.*;
import flash.display.*;
import flash.events.*;
import src.Game.*;
import src.Wrapper.*;
import flash.net.*;
import src.Game.Buttons.*;
import flash.filters.*;
public class IntroScreen extends MovieClip {
private var colorMatrix:ColorMatrix;
public var exclusiveBut:button_exclusive;
public var musicBut:MusicButton;
private var achievements:SimpleButton;
private var cash:SimpleButton;
public var bg:MovieClip;
public var cashBut:button_moregames;
private var color:Number;// = 0
private var start:SimpleButton;
public var creditsBut:buttons_credits;
private var credits:SimpleButton;
private var host:SimpleButton;
private var exclusive:SimpleButton;
public var hostBut:HostGame;
private var framecount:int;// = 0
public var startBut:button_start;
public var acBut:button_achievements;
public function IntroScreen(_arg1:DisplayObjectContainer, _arg2:Boolean=false){
framecount = 0;
color = 0;
super();
trace("HERE IM");
_arg1.addChild(this);
init();
addEventListener(Event.ENTER_FRAME, onFrame);
if (_arg2){
addEventListener(MouseEvent.CLICK, onMouseClicked);
SoundManagerClass.switchMusicIfDifferent("BloodySunsetIntroStinger", 0);
} else {
skipToMenus();
};
}
private function onHostClicked(_arg1:MouseEvent):void{
var _local2:URLRequest;
_local2 = new URLRequest(Wrapper.FGD_PAGE);
navigateToURL(_local2);
}
private function init():void{
start = NormalButton(startBut);
achievements = NormalButton(acBut);
cash = NormalButton(cashBut);
credits = NormalButton(creditsBut);
host = NormalButton(hostBut);
exclusive = SimpleButton(exclusiveBut);
if (Wrapper.FROSMO_V){
cash.visible = false;
host.visible = false;
};
exclusive.visible = (start.visible = (credits.visible = (cash.visible = (achievements.visible = false))));
start.addEventListener(MouseEvent.CLICK, onStartClicked);
achievements.addEventListener(MouseEvent.CLICK, onAchieveClick);
cash.addEventListener(MouseEvent.CLICK, onCashClicked);
credits.addEventListener(MouseEvent.CLICK, onCreditsClicked);
host.addEventListener(MouseEvent.CLICK, onHostClicked);
exclusive.addEventListener(MouseEvent.CLICK, exclusiveClicked);
}
private function onCreditsClicked(_arg1:MouseEvent):void{
dispatchEvent(new NavigationEvent(NavigationEvent.CREDITS));
remove();
}
private function onCashClicked(_arg1:MouseEvent):void{
Wrapper.GET_CLICK_URL(Wrapper.LINK_MENUMOREGAMES);
}
private function onAchieveClick(_arg1:MouseEvent):void{
dispatchEvent(new NavigationEvent(NavigationEvent.ACHIEVEMENTS));
remove();
}
private function onStartClicked(_arg1:MouseEvent):void{
addEventListener(Event.ENTER_FRAME, startGame);
colorMatrix = new ColorMatrix();
}
private function startGame(_arg1:Event):void{
start.visible = false;
credits.visible = false;
cash.visible = false;
achievements.visible = false;
exclusive.visible = false;
color = (color + ((-100 - color) * 0.05));
color = (color - 0.5);
colorMatrix = new ColorMatrix();
colorMatrix.adjustSaturation((color - 20));
colorMatrix.adjustBrightness(color);
colorMatrix.adjustContrast(color);
filters = [new ColorMatrixFilter(colorMatrix)];
if (color < -80){
removeEventListener(Event.ENTER_FRAME, startGame);
dispatchEvent(new NavigationEvent(NavigationEvent.START));
remove();
};
}
private function onMouseClicked(_arg1:MouseEvent):void{
skipToMenus();
}
private function exclusiveClicked(_arg1:MouseEvent):void{
Wrapper.GET_CLICK_URL(Wrapper.LINK_MENUEXCLUSIVE);
}
public function remove():void{
if (parent){
parent.removeChild(this);
};
}
public function skipToMenus():void{
bg.bg.gotoAndStop(240);
bg.bg.tmove.gotoAndStop(289);
start.visible = true;
credits.visible = true;
cash.visible = true;
achievements.visible = true;
exclusive.visible = true;
SoundManagerClass.playSound("ReloadSound", 0.33);
SoundManagerClass.switchMusicIfDifferent("BloodySunsetMain", 1000);
removeEventListener(Event.ENTER_FRAME, onFrame);
removeEventListener(MouseEvent.CLICK, onMouseClicked);
}
private function onFrame(_arg1:Event):void{
if (framecount == 250){
SoundManagerClass.fadeCurrentMusic();
};
if (framecount++ == 260){
start.visible = true;
SoundManagerClass.playSound("ReloadSound", 0.33);
} else {
if (framecount == 263){
achievements.visible = true;
} else {
if (framecount == 265){
cash.visible = true;
exclusive.visible = true;
} else {
if (framecount == 270){
credits.visible = true;
removeEventListener(Event.ENTER_FRAME, onFrame);
removeEventListener(MouseEvent.CLICK, onMouseClicked);
SoundManagerClass.switchMusicIfDifferent("BloodySunsetMain", 1000);
};
};
};
};
}
}
}//package src.Game.Screens
Section 116
//LevelLostScreen (src.Game.Screens.LevelLostScreen)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import src.Game.*;
import src.Wrapper.*;
import flash.net.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class LevelLostScreen extends ParentedMovieClip {
private var description:String;// = "description=Don't touch golden skull if you find one. Here's what happens if you do!"
private var submitMsgT:TextField;
public var submitMsg:TextField;
private var title:String;// = "title=Zombies want my brains!!!"
private var screenshot:String;// = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif"
private var submitBut:SimpleButton;
private var nextBut:SimpleButton;
private var swfURL:String;// = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1"
private var sharedURL:String;// = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook"
private var username:String;// = "username=teagames"
public function LevelLostScreen(_arg1:DisplayObjectContainer){
description = "description=Don't touch golden skull if you find one. Here's what happens if you do!";
sharedURL = "url=http://www.teagames.com/games/bloodysunset/play.php?sms_ss=facebook";
swfURL = "swfurl=http://www.teagames.com/share/fb.swf&width=1&height=1";
title = "title=Zombies want my brains!!!";
username = "username=teagames";
screenshot = "screenshot=http://www.teagames.com/skin2/gamescreenshots/bloodysunset.gif";
addFrameScript(99, frame100);
super(_arg1, new Point());
x = (x + ((width / 2) - 55));
y = (y + ((height / 2) - 55));
addEventListener(Event.ENTER_FRAME, enterScreen);
SoundManagerClass.soundManager.stopAllSounds();
SoundManagerClass.playSound("BloodySunsetGameOverStinger", 0.66);
}
private function onTryAgainClicked(_arg1:MouseEvent):void{
dispatchEvent(new NavigationEvent(NavigationEvent.BACK));
TeagamesAPI.PlayAgain();
}
private function onMouseClicked(_arg1:MouseEvent):void{
SoundManagerClass.soundManager.stopAllSounds();
dispatchEvent(new Event(Event.COMPLETE));
TeagamesAPI.PlayAgain();
}
private function onSubmitClicked(_arg1:MouseEvent):void{
submitBut.visible = false;
submitMsgT.visible = true;
trace("SCORE SUBMITTED");
TeagamesAPI.SendScore();
}
private function enterScreen(_arg1:Event):void{
var _local2:SimpleButton;
var _local3:SimpleButton;
var _local4:int;
if (currentFrame == 81){
submitMsgT = TextField(submitMsg);
submitMsgT.visible = false;
removeEventListener(Event.ENTER_FRAME, enterScreen);
_local4 = numChildren;
while (_local4-- > 0) {
trace(getQualifiedClassName(getChildAt(_local4)));
if ((getChildAt(_local4) is TryAgainButton)){
nextBut = SimpleButton(getChildAt(_local4));
nextBut.addEventListener(MouseEvent.CLICK, onTryAgainClicked);
};
if ((getChildAt(_local4) is QuitGameButton)){
_local2 = SimpleButton(getChildAt(_local4));
_local2.addEventListener(MouseEvent.CLICK, onMouseClicked);
};
if ((getChildAt(_local4) is SumbitButton)){
trace("SUBMIT ADDED");
submitBut = SimpleButton(getChildAt(_local4));
submitBut.addEventListener(MouseEvent.CLICK, onSubmitClicked);
};
if ((getChildAt(_local4) is ShareButton)){
trace("SHARE ADDED");
_local3 = SimpleButton(getChildAt(_local4));
_local3.addEventListener(MouseEvent.CLICK, onShareClicked);
};
};
};
}
function frame100(){
stop();
}
private function onShareClicked(_arg1:MouseEvent):void{
var _local2:String;
trace("SHARE CLICKED");
if (Wrapper.FB_ENDPOINT == null){
Wrapper.FB_ENDPOINT = "http://api.addthis.com/oexchange/0.8/forward/facebook/offer";
};
_local2 = ((((((((((((Wrapper.FB_ENDPOINT + "?") + sharedURL) + "&") + swfURL) + "&") + title) + "&") + description) + "&") + username) + "&") + screenshot);
navigateToURL(new URLRequest(_local2));
}
}
}//package src.Game.Screens
Section 117
//LevelPassedScreen (src.Game.Screens.LevelPassedScreen)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Game.*;
import src.Wrapper.*;
import utils.parentedmovieclip.*;
public class LevelPassedScreen extends ParentedMovieClip {
private var nextBut:SimpleButton;
public function LevelPassedScreen(_arg1:DisplayObjectContainer){
var _local2:int;
addFrameScript(99, frame100);
super(_arg1, new Point());
x = (x + ((width / 2) - 55));
y = (y + ((height / 2) - 55));
addEventListener(Event.ENTER_FRAME, enterScreen);
SoundManagerClass.startMusic("BloodySunsetLevelPassed");
if (Wrapper.KONG_V){
KongregateLoader.kongregate.stats.submit("WAVE", Game.currentLevel);
};
_local2 = numChildren;
while (_local2-- > 0) {
if ((getChildAt(_local2) is buttons_NEXT)){
nextBut = SimpleButton(getChildAt(_local2));
nextBut.visible = false;
};
};
}
private function onMouseClicked(_arg1:MouseEvent):void{
SoundManagerClass.soundManager.stopAllSounds(true);
dispatchEvent(new Event(Event.COMPLETE));
SoundManagerClass.stopMusic();
}
private function enterScreen(_arg1:Event):void{
var _local2:SimpleButton;
var _local3:int;
if (currentFrame == 70){
removeEventListener(Event.ENTER_FRAME, enterScreen);
_local3 = numChildren;
while (_local3-- > 0) {
if ((getChildAt(_local3) is buttons_NEXT)){
_local2 = SimpleButton(getChildAt(_local3));
_local2.addEventListener(MouseEvent.CLICK, onMouseClicked);
_local2.visible = true;
};
};
};
}
function frame100(){
stop();
}
}
}//package src.Game.Screens
Section 118
//NameSelectScreen (src.Game.Screens.NameSelectScreen)
package src.Game.Screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import src.Wrapper.*;
import flash.text.*;
import utils.parentedmovieclip.*;
public class NameSelectScreen extends ParentedMovieClip {
public var myTxt:TextField;
public var start:button_start;
var txtField:TextField;
public function NameSelectScreen(_arg1:DisplayObjectContainer){
super(_arg1, new Point());
txtField = TextField(myTxt);
stage.focus = txtField;
txtField.text = "Joey";
start.addEventListener(MouseEvent.CLICK, onStartClicked);
}
private function onStartClicked(_arg1:MouseEvent):void{
Wrapper.PLAYER_NAME = txtField.text;
remove();
}
}
}//package src.Game.Screens
Section 119
//NavigationEvent (src.Game.Screens.NavigationEvent)
package src.Game.Screens {
import flash.events.*;
public class NavigationEvent extends Event {
public static const START:String = "START";
public static const BACK:String = "BACK";
public static const HOST:String = "HOST";
public static const ACHIEVEMENTS:String = "AC";
public static const GAMEOVER:String = "GAMEOVER";
public static const INSTR_EXIT:String = "INSTR";
public static const CASH:String = "CASH";
public static const CREDITS:String = "CREDITS";
public function NavigationEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("NavigationEvent", "type", "bubbles", "cancelable", "eventPhase"));
}
override public function clone():Event{
return (new NavigationEvent(type, bubbles, cancelable));
}
}
}//package src.Game.Screens
Section 120
//Game (src.Game.Game)
package src.Game {
import flash.display.*;
import flash.events.*;
import src.Game.Gameplay.Weapon.*;
import src.Game.Gameplay.Enemies.*;
import src.Game.Gameplay.Base.*;
import src.Game.Gameplay.*;
import src.Game.Screens.*;
import src.Game.Achievements.*;
import src.Game.Screens.Character.*;
import src.Game.Screens.Upgrade.*;
import frosmo.*;
import src.Game.GameData.*;
import src.Wrapper.*;
import FGL.GameTracker.*;
import src.Game.Gameplay.UI.*;
import src.Game.Background.*;
public class Game extends MovieClip {
private var gameplayToIntroscreenFlag:Boolean;
private var achievements:AchievementsScreen;
private var gameplay:Gameplay;
private var charScreen:CharacterScreen;
private var firstTime:Boolean;// = true
private var creditsScreen:CreditsScreen;
private var upgradeScreen:UpgradeScreen;
private var bgManager:BackgroundManager;
private var gameOver:GameOverScreen;
private var introScreen:IntroScreen;
public static var GAME_DISPLAY_CONTAINER:DisplayObjectContainer;
public static var rnd:Function;
public static var difficulty:int = 0;
public static var currentLevel:int = 0;
public static var GAME_TRACK:GameTracker;
public function Game(_arg1:DisplayObjectContainer){
var _local2:GameIntroText;
firstTime = true;
super();
if (Wrapper.FROSMO_V){
rnd = Api.random;
Api.setNumber("Score", 0);
} else {
rnd = Math.random;
};
SoundManagerClass.init();
AchievementManager.init();
_arg1.addChild(this);
GAME_DISPLAY_CONTAINER = _arg1;
GAME_TRACK = new GameTracker();
GAME_TRACK.beginGame(0, "START GAME");
_local2 = new GameIntroText(this);
_local2.addEventListener(Event.COMPLETE, onGameIntroComplete);
}
private function gotoDifficultySelect():void{
var _local1:DifficultyScreen;
GAME_TRACK.customMsg("DIFFICULTY SELECT");
_local1 = new DifficultyScreen(this);
_local1.addEventListener(Event.COMPLETE, onDiffScreenRemoved);
}
private function introScreenShow():void{
BaseModel.InitBaseData();
PerkData.initPerkData();
CashPrizeCounter.Init();
WeaponData.Init();
MiscUpgradeData.Init();
PerkData.initPerkData();
currentLevel = 0;
Enemy2.killedCount = 0;
Weapon.BULLETS_FIRED = 0;
introScreen = new IntroScreen(parent, firstTime);
firstTime = false;
introScreen.addEventListener(NavigationEvent.START, onStart);
introScreen.addEventListener(NavigationEvent.CREDITS, onCredits);
introScreen.addEventListener(NavigationEvent.ACHIEVEMENTS, onAchievements);
}
private function gotoCharScreen():void{
if (!bgManager){
bgManager = new BackgroundManager(parent);
} else {
if (((bgManager) && (!(bgManager.parent)))){
bgManager = new BackgroundManager(parent);
};
};
SavedData.SaveData();
charScreen = new CharacterScreen(parent);
charScreen.addEventListener(NavigationEvent.BACK, onBackFromCharScreen);
}
private function onDiffScreenRemoved(_arg1:Event):void{
GAME_TRACK.alert(0, "DIFFICULTY SELECTED", (("DIFFICULTY " + difficulty) + " SELECTED"));
removeEventListener(Event.COMPLETE, onDiffScreenRemoved);
gotoCharScreen();
}
private function onBgFaded(_arg1:Event):void{
var _local2:GamePassedScreen;
_local2 = new GamePassedScreen(this);
_local2.addEventListener(Event.COMPLETE, onGamePassedScreenOver);
}
private function gotoWinScreen():void{
GAME_TRACK.customMsg("GAME PASSED");
bgManager.removeFadeOut();
bgManager.addEventListener(Event.COMPLETE, onBgFaded);
}
private function onCreditsBack(_arg1:NavigationEvent):void{
introScreenShow();
}
private function onInstructionsComplete(_arg1:Event):void{
trace(Wrapper.PLAYER_NAME);
if (((Wrapper.TEAGAMES_V) && ((Wrapper.PLAYER_NAME == null)))){
trace("SELECT NAME");
selectName();
} else {
gotoDifficultySelect();
};
}
private function onGamePassedScreenOver(_arg1:Event):void{
introScreenShow();
}
private function onSelectNameRemoved(_arg1:Event):void{
gotoDifficultySelect();
}
private function selectName():void{
var _local1:NameSelectScreen;
_local1 = new NameSelectScreen(this);
_local1.addEventListener(Event.REMOVED_FROM_STAGE, onSelectNameRemoved);
}
private function onLevelLost(_arg1:GameplayEvent):void{
GAME_TRACK.endLevel();
bgManager.remove();
introScreenShow();
}
private function creditsShow():void{
creditsScreen = new CreditsScreen(parent);
creditsScreen.addEventListener(NavigationEvent.BACK, onCreditsBack);
}
private function onBackFromCharScreen(_arg1:NavigationEvent):void{
upgradeScreen = new UpgradeScreen(parent);
upgradeScreen.addEventListener(NavigationEvent.BACK, onBackFromUpdateScreen);
}
private function onAchievements(_arg1:NavigationEvent):void{
achievements = new AchievementsScreen(this);
achievements.addEventListener(NavigationEvent.BACK, onCreditsBack);
}
private function onCredits(_arg1:NavigationEvent):void{
creditsShow();
}
private function onStart(_arg1:NavigationEvent):void{
var _local2:Instructions;
if (introScreen){
introScreen.remove();
};
if (!bgManager){
bgManager = new BackgroundManager(this);
} else {
if (((bgManager) && (!(bgManager.parent)))){
bgManager = new BackgroundManager(this);
};
};
if (currentLevel == 0){
_local2 = new Instructions(this);
_local2.addEventListener(Event.COMPLETE, onInstructionsComplete);
} else {
gotoDifficultySelect();
};
}
private function onLevelRetry(_arg1:GameplayEvent):void{
SavedData.LoadData();
gotoCharScreen();
}
private function onGameoverBack(_arg1:NavigationEvent):void{
introScreenShow();
}
private function onWaveComplete(_arg1:Event):void{
GAME_TRACK.endLevel();
currentLevel++;
if (currentLevel == WaveData.ALL_WAVE_ARRAY.length){
gotoWinScreen();
} else {
gotoCharScreen();
};
}
private function onGameIntroComplete(_arg1:Event):void{
GAME_TRACK.customMsg("INTRO SCREEN LOADED");
introScreenShow();
}
private function onBackFromUpdateScreen(_arg1:NavigationEvent):void{
GAME_TRACK.beginLevel(currentLevel, CashPrizeCounter.CASH, "START LEVEL", "START LEVEL");
gameplay = new Gameplay(this, currentLevel, bgManager.base);
gameplay.addEventListener(NavigationEvent.GAMEOVER, onGameOver);
gameplay.addEventListener(Event.COMPLETE, onWaveComplete);
gameplay.addEventListener(GameplayEvent.LOST, onLevelLost);
gameplay.addEventListener(GameplayEvent.RETRY, onLevelRetry);
}
private function onGameOver(_arg1:NavigationEvent):void{
gameplayToIntroscreenFlag = false;
gameOver = new GameOverScreen(parent, Gameplay(_arg1.currentTarget).score);
gameOver.addEventListener(NavigationEvent.BACK, onGameoverBack);
gameOver.addEventListener(NavigationEvent.START, onStart);
}
}
}//package src.Game
Section 121
//SoundManagerClass (src.Game.SoundManagerClass)
package src.Game {
import com.reintroducing.sound.*;
public class SoundManagerClass {
public static var musicFlag:Boolean = true;
public static var currentMusicName:String;
public static var SOUND_POSITIONS:Array = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
public static var soundFlag:Boolean = true;
public static var soundManager:SoundManager = SoundManager.getInstance();
public static function startMusic(_arg1:String, _arg2:Number=0.66, _arg3:Number=0, _arg4:int=0):void{
currentMusicName = _arg1;
if (musicFlag){
soundManager.playSound(_arg1, _arg2, _arg3, _arg4);
};
}
public static function continueMusic(_arg1:Number=0.66, _arg2:Number=0, _arg3:int=0):void{
soundManager.playSound(currentMusicName, _arg1, _arg2, _arg3);
}
public static function fadeCurrentMusic():void{
soundManager.fadeSound(currentMusicName, 0, 1);
}
public static function playSound(_arg1:String, _arg2:Number=1, _arg3:Number=0, _arg4:int=0):void{
if (soundFlag){
soundManager.playSound(_arg1, _arg2, _arg3, _arg4);
};
}
public static function switchMusicIfDifferent(_arg1:String, _arg2:int){
if (_arg1 != currentMusicName){
SoundManagerClass.stopMusic();
SoundManagerClass.startMusic(_arg1, 0.66, 0, _arg2);
};
}
public static function init():void{
soundManager.addLibrarySound(ReloadSound, "ReloadSound");
soundManager.addLibrarySound(PistolSound, "PistolSound");
soundManager.addLibrarySound(MagnumSound, "MagnumSound");
soundManager.addLibrarySound(ShotgunSound, "ShotgunSound");
soundManager.addLibrarySound(SniperSound, "SniperSound");
soundManager.addLibrarySound(Buy, "Buy");
soundManager.addLibrarySound(AchievementSound, "AchievementSound");
soundManager.addLibrarySound(StartBattleSound, "StartBattleSound");
soundManager.addLibrarySound(BattleStartSound2, "BattleStartSound2");
soundManager.addLibrarySound(CriticalHitSound, "CriticalHitSound");
soundManager.addLibrarySound(ZombieDie1Sound, "ZombieDie1Sound");
soundManager.addLibrarySound(ZombieDie2Sound, "ZombieDie2Sound");
soundManager.addLibrarySound(Enemy2DieSound, "Enemy2DieSound");
soundManager.addLibrarySound(Enemy3DieSound, "Enemy3DieSound");
soundManager.addLibrarySound(Enemy4DieSound, "Enemy4DieSound");
soundManager.addLibrarySound(Enemy5DieSound, "Enemy5DieSound");
soundManager.addLibrarySound(Enemy6DieSound, "Enemy6DieSound");
soundManager.addLibrarySound(Enemy8DieSound, "Enemy8DieSound");
soundManager.addLibrarySound(Enemy1AttackSound, "Enemy1AttackSound");
soundManager.addLibrarySound(Enemy2AttackSound, "Enemy2AttackSound");
soundManager.addLibrarySound(Enemy3AttackSound, "Enemy3AttackSound");
soundManager.addLibrarySound(Enemy4AttackSound, "Enemy4AttackSound");
soundManager.addLibrarySound(MouseOverSound, "MouseOverSound");
soundManager.addLibrarySound(ClickSound, "ClickSound");
soundManager.addLibrarySound(BloodySunsetMain, "BloodySunsetMain");
soundManager.addLibrarySound(BloodySunsetLevelPassed, "BloodySunsetLevelPassed");
soundManager.addLibrarySound(BloodySunsetIntroStinger, "BloodySunsetIntroStinger");
soundManager.addLibrarySound(BloodySunsetGameWonStinger, "BloodySunsetGameWonStinger");
soundManager.addLibrarySound(BloodySunsetGameOverStinger, "BloodySunsetGameOverStinger");
soundManager.addLibrarySound(BloodySunsetDesert, "BloodySunsetDesert");
soundManager.addLibrarySound(ZombieDeath, "ZombieDeath");
}
public static function stopMusic():void{
if (currentMusicName != null){
soundManager.stopSound(currentMusicName);
};
}
public static function PlayAttackSound(_arg1:int):void{
if (_arg1 == 0){
playSound("Enemy1AttackSound", 0.2);
} else {
if (_arg1 == 1){
playSound("Enemy2AttackSound", 0.2);
} else {
if (_arg1 == 2){
playSound("Enemy3AttackSound", 0.2);
} else {
if (_arg1 == 3){
playSound("Enemy4AttackSound", 0.2);
} else {
if (_arg1 == 4){
playSound("Enemy3AttackSound", 0.2);
} else {
if (_arg1 == 7){
playSound("Enemy3AttackSound", 0.2);
};
};
};
};
};
};
}
public static function PlayWeaponSound(_arg1:int):void{
if (_arg1 == 0){
playSound("PistolSound", 0.2);
} else {
if (_arg1 == 1){
playSound("PistolSound", 0.15);
} else {
if (_arg1 == 2){
playSound("MagnumSound", 0.2);
} else {
if (_arg1 == 3){
playSound("MagnumSound", 0.15);
} else {
if (_arg1 == 4){
playSound("ShotgunSound", 0.16);
} else {
if (_arg1 == 5){
playSound("MagnumSound", 0.16);
} else {
if (_arg1 == 6){
soundManager.stopSound("PistolSound");
playSound("PistolSound", 0.15);
} else {
if (_arg1 == 7){
soundManager.stopSound("PistolSound");
playSound("PistolSound", 0.15);
} else {
if (_arg1 == 8){
playSound("ShotgunSound", 0.2);
} else {
if (_arg1 == 9){
playSound("SniperSound", 0.2);
} else {
if (_arg1 == 10){
playSound("SniperSound", 0.15);
} else {
if (_arg1 == 11){
playSound("SniperSound", 0.2);
};
};
};
};
};
};
};
};
};
};
};
};
}
}
}//package src.Game
Section 122
//FrosmoLogo (src.Wrapper.Branding.FrosmoLogo)
package src.Wrapper.Branding {
import flash.display.*;
import flash.events.*;
import src.Wrapper.*;
public class FrosmoLogo extends SimpleButton {
public function FrosmoLogo(){
addEventListener(MouseEvent.CLICK, onMouseClicked);
if (Wrapper.FROSMO_V){
visible = false;
};
}
private function onMouseClicked(_arg1:MouseEvent):void{
Wrapper.GET_CLICK_URL(Wrapper.LINK_MENULOGO);
}
}
}//package src.Wrapper.Branding
Section 123
//GamingOcean (src.Wrapper.Branding.GamingOcean)
package src.Wrapper.Branding {
import flash.display.*;
import flash.events.*;
import src.Wrapper.*;
import flash.net.*;
public class GamingOcean extends SimpleButton {
public function GamingOcean(){
addEventListener(MouseEvent.CLICK, onClick);
if (Wrapper.FROSMO_V){
visible = false;
};
}
private function onClick(_arg1:MouseEvent):void{
var _local2:URLRequest;
trace("CLICKED");
_local2 = new URLRequest("http://www.gamingocean.com");
navigateToURL(_local2);
}
}
}//package src.Wrapper.Branding
Section 124
//KongregateLoader (src.Wrapper.KongregateLoader)
package src.Wrapper {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class KongregateLoader extends Sprite {
public static var kongregate;
public function KongregateLoader(_arg1:DisplayObjectContainer, _arg2){
var _local3:Object;
var _local4:String;
var _local5:URLRequest;
var _local6:Loader;
super();
_arg1.addChild(this);
_local3 = LoaderInfo(_arg2.loaderInfo).parameters;
_local4 = ((_local3.kongregate_api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf"));
Security.allowDomain(_local4);
_local5 = new URLRequest(_local4);
_local6 = new Loader();
_local6.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
_local6.load(_local5);
this.addChild(_local6);
}
function loadComplete(_arg1:Event):void{
kongregate = _arg1.target.content;
kongregate.services.connect();
}
}
}//package src.Wrapper
Section 125
//MindJoltLoader (src.Wrapper.MindJoltLoader)
package src.Wrapper {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class MindJoltLoader extends Sprite {
public static var MindJoltAPI:Object;
public function MindJoltLoader(_arg1:DisplayObjectContainer, _arg2){
var gameParams:Object;
var urlLoader:Loader;
var loadFinished:Function;
var parent = _arg1;
var root = _arg2;
super();
loadFinished = function (_arg1:Event):void{
MindJoltAPI = _arg1.currentTarget.content;
MindJoltAPI.service.connect();
trace("[MindJoltAPI] service manually loaded");
};
gameParams = LoaderInfo(root.loaderInfo).parameters;
urlLoader = new Loader();
urlLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadFinished);
urlLoader.load(new URLRequest(((gameParams.mjPath) || ("http://static.mindjolt.com/api/as3/scoreapi_as3_local.swf"))));
this.addChild(urlLoader);
}
}
}//package src.Wrapper
Section 126
//TeagamesAPI (src.Wrapper.TeagamesAPI)
package src.Wrapper {
import mochi.as3.*;
import src.Game.*;
import com.adobe.crypto.*;
import flash.net.*;
import src.Game.Gameplay.UI.*;
import flash.external.*;
public class TeagamesAPI {
private static function mochiSubmit(_arg1:int, _arg2:int):void{
var o:Object;
var boardID:String;
var scoreNum = _arg1;
var diff = _arg2;
if (diff == -1){
o = {n:[4, 14, 12, 13, 0, 12, 10, 5, 4, 2, 11, 0, 1, 9, 11, 1], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:scoreNum});
} else {
if (diff == 0){
o = {n:[10, 4, 8, 15, 7, 5, 1, 3, 3, 10, 2, 6, 2, 10, 10, 14], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:scoreNum});
} else {
if (diff == 1){
o = {n:[8, 13, 6, 6, 14, 15, 12, 4, 9, 5, 2, 14, 2, 5, 0, 6], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:scoreNum});
};
};
};
}
private static function kongSubmit(_arg1:int, _arg2:int):void{
}
public static function UpsellLink():void{
if (Wrapper.TEAGAMES_V){
ExternalInterface.call("UpsellLink", "");
};
}
public static function ShareTracker(_arg1:String):void{
if (Wrapper.TEAGAMES_V){
ExternalInterface.call((("ShareTracker('" + _arg1) + "')"), "");
};
}
public static function SendScore():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:String;
var _local6:String;
var _local7:String;
var _local8:String;
var _local9:URLRequest;
var _local10:URLVariables;
var _local11:URLLoader;
_local1 = CashPrizeCounter.CASH;
_local2 = Game.currentLevel;
_local3 = Game.difficulty;
if (((((Wrapper.MOCHI_V) || (Wrapper.NEWGROUNDS_V))) || (Wrapper.FGD_V))){
mochiSubmit(_local1, _local3);
return;
};
if (Wrapper.KONG_V){
kongSubmit(_local1, _local3);
};
_local4 = "bloodysunset";
_local5 = Wrapper.PLAYER_NAME;
_local6 = "joeysgoldenskull";
_local7 = ((((((((("" + String(_local4)) + ".") + String(_local1)) + ".") + String(_local6)) + ".") + String(_local5)) + ".") + String(_local3));
trace(_local7);
trace(((((((("GAME ID: " + _local4) + "\nCASH: ") + _local1) + "\nPLAYER NAME: ") + _local5) + "\nDIFF: ") + _local3));
_local8 = MD5.hash(_local7);
trace(_local8);
_local9 = new URLRequest("submit.php");
_local9.method = URLRequestMethod.POST;
_local10 = new URLVariables();
_local10.gameid = _local4;
_local10.name = _local5;
_local10.score = _local1;
_local10.gametype = _local3;
_local10.wave = _local2;
_local10.check = _local8;
_local9.data = _local10;
_local11 = new URLLoader();
_local11.dataFormat = URLLoaderDataFormat.VARIABLES;
_local11.load(_local9);
}
public static function PlayAgain():void{
if (Wrapper.TEAGAMES_V){
ExternalInterface.call("PlayAgain", "");
};
}
public static function GameStarted():void{
if (Wrapper.TEAGAMES_V){
ExternalInterface.call("PlayStart", "");
};
}
}
}//package src.Wrapper
Section 127
//Wrapper (src.Wrapper.Wrapper)
package src.Wrapper {
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import src.Game.*;
import frosmo.*;
import flash.net.*;
public dynamic class Wrapper extends MovieClip {
private const FROSMO_CLIENT_ID:String = "example";
private const GAME_RES:String = "600x510";
private const MOCHIBOT_STRING:String = "4877b68d";
var _mochiads_game_id:String;// = "fbb8a5a8536ef620"
public static const MOCHI_LEADERBOARD:Array = [5, 6, 13, 8, 12, 14, 5, 14, 13, 4, 6, 8, 6, 15, 5, 7];
public static const LINK_MENUEXCLUSIVE:int = 2;
public static const MOCHIADS_STRING:String = "fbb8a5a8536ef620";
public static const NEWGROUNDS_V:Boolean = false;
public static const SOURCE_FGD:String = "?utm_source=fgd";
public static const TEAGAMES_V:Boolean = false;
public static const CPM_STAR_CODE:String = "3076QAFC45E97";
public static const LINK_MENUHIGHSCORES:int = 4;
public static const LINK_PREROLL:int = 0;
public static const LINK_MENUMOREGAMES:int = 3;
public static const TEST:Boolean = false;
public static const FROSMO_PAGE:String = "http://www.teagames.com/";
public static const SOURCE_NEWGROUNDS:String = "?utm_source=newgrounds";
public static const FROSMO_V:Boolean = false;
public static const FGD_PAGE:String = "http://www.flashgamedistribution.com";
public static const SOURCE_KONGREGATE:String = "?utm_source=kongregate";
public static const LINK_MENULOGO:int = 1;
public static const SOURCE_MOCHI:String = "?utm_source=mochi";
public static const KONG_V:Boolean = true;
public static const MOCHI_V:Boolean = false;
public static const FGD_V:Boolean = false;
public static var PLAYER_NAME:String;
public static var FB_ENDPOINT:String;
public function Wrapper(){
_mochiads_game_id = "fbb8a5a8536ef620";
super();
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function gotoGame():void{
var _local1:Game;
_local1 = new Game(this);
SoundManagerClass.init();
}
private function onError():void{
trace("CONNECTION ERROR");
}
private function onAddedToStage(_arg1:Event):void{
var _local2:KongregateLoader;
var _local3:MindJoltLoader;
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
MochiBot.track(this, "0aeca1c5");
PLAYER_NAME = root.loaderInfo.parameters.playername;
FB_ENDPOINT = root.loaderInfo.parameters.fbEndpointURL;
trace(("FLASHVAR: " + PLAYER_NAME));
if (KONG_V){
_local2 = new KongregateLoader(this, root);
};
if (TEST){
gotoGame();
return;
};
MochiServices.connect(MOCHIADS_STRING, this);
if (FROSMO_V){
Api.connect(FROSMO_CLIENT_ID, this, onError, onConnected);
} else {
_local2 = new KongregateLoader(this, root);
_local3 = new MindJoltLoader(this, root);
gotoGame();
};
}
private function onConnected():void{
gotoGame();
}
public static function GET_CLICK_URL(_arg1:int):void{
var _local2:String;
var _local3:String;
_local2 = "http://www.teagames.com/";
if (KONG_V){
_local3 = SOURCE_KONGREGATE;
} else {
if (NEWGROUNDS_V){
_local3 = SOURCE_NEWGROUNDS;
} else {
if (MOCHI_V){
_local3 = SOURCE_MOCHI;
} else {
if (FGD_V){
_local3 = SOURCE_FGD;
};
};
};
};
_local2 = (_local2 + _local3);
_local2 = (_local2 + "&utm_medium=distribution&utm_content=");
if (_arg1 == LINK_PREROLL){
_local2 = (_local2 + "preroll");
} else {
if (_arg1 == LINK_MENUMOREGAMES){
_local2 = (_local2 + "more-games");
} else {
if (_arg1 == LINK_MENULOGO){
_local2 = (_local2 + "main-menu");
} else {
if (_arg1 == LINK_MENUHIGHSCORES){
} else {
if (_arg1 == LINK_MENUEXCLUSIVE){
_local2 = (("http://www.teagames.com/games/bloodysunset/play.php?utm_source=" + _local3) + "&utm_medium=distribution&utm_content=exclusive-content");
};
};
};
};
};
_local2 = (_local2 + "&utm_campaign=bloodysunset");
navigateToURL(new URLRequest(_local2));
}
}
}//package src.Wrapper
Section 128
//FrameablePMC (utils.parentedmovieclip.FrameablePMC)
package utils.parentedmovieclip {
import utils.*;
import flash.display.*;
import flash.geom.*;
public class FrameablePMC extends ParentedMovieClip {
protected var frameArray:Array;
public function FrameablePMC(_arg1:DisplayObjectContainer, _arg2:Array, _arg3:Point){
super(_arg1, _arg3);
frameArray = _arg2;
frameArray.push(this);
}
override public function remove():void{
super.remove();
ArrayClone.removeFromArray(frameArray, this);
}
public function onFrame():void{
}
}
}//package utils.parentedmovieclip
Section 129
//ParentedMovieClip (utils.parentedmovieclip.ParentedMovieClip)
package utils.parentedmovieclip {
import flash.display.*;
import flash.geom.*;
public class ParentedMovieClip extends MovieClip {
public function ParentedMovieClip(_arg1:DisplayObjectContainer, _arg2:Point){
_arg1.addChild(this);
x = _arg2.x;
y = _arg2.y;
}
public function remove():void{
if (parent){
parent.removeChild(this);
};
}
}
}//package utils.parentedmovieclip
Section 130
//ArrayClone (utils.ArrayClone)
package utils {
import flash.utils.*;
public class ArrayClone {
public static function removeFromArray(_arg1:Array, _arg2:Object):void{
var _local3:int;
_local3 = _arg1.length;
while (_local3 >= 0) {
if (_arg1[_local3] == _arg2){
_arg1.splice(_local3, 1);
};
_local3--;
};
}
public static function clone(_arg1:Object){
var _local2:ByteArray;
_local2 = new ByteArray();
_local2.writeObject(_arg1);
_local2.position = 0;
return (_local2.readObject());
}
}
}//package utils
Section 131
//ColorMatrix (utils.ColorMatrix)
package utils {
public dynamic class ColorMatrix extends Array {
private static const IDENTITY_MATRIX:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
private static const LENGTH:Number = IDENTITY_MATRIX.length;
private static const DELTA_INDEX:Array = [0, 0.01, 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.1, 0.11, 0.12, 0.14, 0.15, 0.16, 0.17, 0.18, 0.2, 0.21, 0.22, 0.24, 0.25, 0.27, 0.28, 0.3, 0.32, 0.34, 0.36, 0.38, 0.4, 0.42, 0.44, 0.46, 0.48, 0.5, 0.53, 0.56, 0.59, 0.62, 0.65, 0.68, 0.71, 0.74, 0.77, 0.8, 0.83, 0.86, 0.89, 0.92, 0.95, 0.98, 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36, 1.42, 1.48, 1.54, 1.6, 1.66, 1.72, 1.78, 1.84, 1.9, 1.96, 2, 2.12, 2.25, 2.37, 2.5, 2.62, 2.75, 2.87, 3, 3.2, 3.4, 3.6, 3.8, 4, 4.3, 4.7, 4.9, 5, 5.5, 6, 6.5, 6.8, 7, 7.3, 7.5, 7.8, 8, 8.4, 8.7, 9, 9.4, 9.6, 9.8, 10];
public function ColorMatrix(_arg1:Array=null){
_arg1 = fixMatrix(_arg1);
copyMatrix(((_arg1.length)==LENGTH) ? _arg1 : IDENTITY_MATRIX);
}
public function adjustBrightness(_arg1:Number):void{
_arg1 = cleanValue(_arg1, 100);
if ((((_arg1 == 0)) || (isNaN(_arg1)))){
return;
};
multiplyMatrix([1, 0, 0, 0, _arg1, 0, 1, 0, 0, _arg1, 0, 0, 1, 0, _arg1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
}
protected function multiplyMatrix(_arg1:Array):void{
var _local2:Array;
var _local3:uint;
var _local4:uint;
var _local5:Number;
var _local6:Number;
_local2 = [];
_local3 = 0;
while (_local3 < 5) {
_local4 = 0;
while (_local4 < 5) {
_local2[_local4] = this[(_local4 + (_local3 * 5))];
_local4++;
};
_local4 = 0;
while (_local4 < 5) {
_local5 = 0;
_local6 = 0;
while (_local6 < 5) {
_local5 = (_local5 + (_arg1[(_local4 + (_local6 * 5))] * _local2[_local6]));
_local6++;
};
this[(_local4 + (_local3 * 5))] = _local5;
_local4++;
};
_local3++;
};
}
public function adjustSaturation(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_arg1 = cleanValue(_arg1, 100);
if ((((_arg1 == 0)) || (isNaN(_arg1)))){
return;
};
_local2 = (1 + ((_arg1)>0) ? ((3 * _arg1) / 100) : (_arg1 / 100));
_local3 = 0.3086;
_local4 = 0.6094;
_local5 = 0.082;
multiplyMatrix([((_local3 * (1 - _local2)) + _local2), (_local4 * (1 - _local2)), (_local5 * (1 - _local2)), 0, 0, (_local3 * (1 - _local2)), ((_local4 * (1 - _local2)) + _local2), (_local5 * (1 - _local2)), 0, 0, (_local3 * (1 - _local2)), (_local4 * (1 - _local2)), ((_local5 * (1 - _local2)) + _local2), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
}
public function reset():void{
var _local1:uint;
_local1 = 0;
while (_local1 < LENGTH) {
this[_local1] = IDENTITY_MATRIX[_local1];
_local1++;
};
}
public function adjustColor(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
adjustHue(_arg4);
adjustContrast(_arg2);
adjustBrightness(_arg1);
adjustSaturation(_arg3);
}
public function clone():ColorMatrix{
return (new ColorMatrix(this));
}
public function toArray():Array{
return (slice(0, 20));
}
protected function cleanValue(_arg1:Number, _arg2:Number):Number{
return (Math.min(_arg2, Math.max(-(_arg2), _arg1)));
}
public function adjustHue(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_arg1 = ((cleanValue(_arg1, 180) / 180) * Math.PI);
if ((((_arg1 == 0)) || (isNaN(_arg1)))){
return;
};
_local2 = Math.cos(_arg1);
_local3 = Math.sin(_arg1);
_local4 = 0.213;
_local5 = 0.715;
_local6 = 0.072;
multiplyMatrix([((_local4 + (_local2 * (1 - _local4))) + (_local3 * -(_local4))), ((_local5 + (_local2 * -(_local5))) + (_local3 * -(_local5))), ((_local6 + (_local2 * -(_local6))) + (_local3 * (1 - _local6))), 0, 0, ((_local4 + (_local2 * -(_local4))) + (_local3 * 0.143)), ((_local5 + (_local2 * (1 - _local5))) + (_local3 * 0.14)), ((_local6 + (_local2 * -(_local6))) + (_local3 * -0.283)), 0, 0, ((_local4 + (_local2 * -(_local4))) + (_local3 * -((1 - _local4)))), ((_local5 + (_local2 * -(_local5))) + (_local3 * _local5)), ((_local6 + (_local2 * (1 - _local6))) + (_local3 * _local6)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
}
public function concat(_arg1:Array):void{
_arg1 = fixMatrix(_arg1);
if (_arg1.length != LENGTH){
return;
};
multiplyMatrix(_arg1);
}
protected function copyMatrix(_arg1:Array):void{
var _local2:Number;
var _local3:uint;
_local2 = LENGTH;
_local3 = 0;
while (_local3 < _local2) {
this[_local3] = _arg1[_local3];
_local3++;
};
}
protected function fixMatrix(_arg1:Array=null):Array{
if (_arg1 == null){
return (IDENTITY_MATRIX);
};
if ((_arg1 is ColorMatrix)){
_arg1 = _arg1.slice(0);
};
if (_arg1.length < LENGTH){
_arg1 = _arg1.slice(0, _arg1.length).concat(IDENTITY_MATRIX.slice(_arg1.length, LENGTH));
} else {
if (_arg1.length > LENGTH){
_arg1 = _arg1.slice(0, LENGTH);
};
};
return (_arg1);
}
public function adjustContrast(_arg1:Number):void{
var _local2:Number;
_arg1 = cleanValue(_arg1, 100);
if ((((_arg1 == 0)) || (isNaN(_arg1)))){
return;
};
if (_arg1 < 0){
_local2 = (127 + ((_arg1 / 100) * 127));
} else {
_local2 = (_arg1 % 1);
if (_local2 == 0){
_local2 = DELTA_INDEX[_arg1];
} else {
_local2 = ((DELTA_INDEX[(_arg1 << 0)] * (1 - _local2)) + (DELTA_INDEX[((_arg1 << 0) + 1)] * _local2));
};
_local2 = ((_local2 * 127) + 127);
};
multiplyMatrix([(_local2 / 127), 0, 0, 0, (0.5 * (127 - _local2)), 0, (_local2 / 127), 0, 0, (0.5 * (127 - _local2)), 0, 0, (_local2 / 127), 0, (0.5 * (127 - _local2)), 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
}
public function toString():String{
return ((("ColorMatrix [ " + this.join(" , ")) + " ]"));
}
}
}//package utils
Section 132
//Tween (utils.Tween)
package utils {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Tween extends Sprite {
private var pointChangeFlag:Boolean;// = false
private var startScale:Number;
private var scaleChangeTweenDelay:Number;
private var startAlpha:Number;
private var alphaChangeTweenDelay:int;
private var scaleChangeFlag:Boolean;// = false
private var coordChangeRemoveOnArrival:Boolean;// = false
private var endScale:Number;
private var alphaChangeFlag:Boolean;// = false
private var endAlpha:Number;
private var startPoint:Point;
private var endPoint:Point;
private var myDisplayObject:DisplayObject;
private var scaleChangeFactor:Number;
private var alphaChangeFactor:Number;
private var coordChangeFactor:Number;
private var coordChangeTweenDelay:int;
public function Tween(_arg1:DisplayObject){
pointChangeFlag = false;
coordChangeRemoveOnArrival = false;
alphaChangeFlag = false;
scaleChangeFlag = false;
super();
myDisplayObject = _arg1;
myDisplayObject.parent.addChild(this);
addEventListener(Event.ENTER_FRAME, onFrame);
_arg1.addEventListener(Event.REMOVED_FROM_STAGE, onDisplayedObjectRemove);
}
public function remove():void{
myDisplayObject.removeEventListener(Event.REMOVED_FROM_STAGE, onDisplayedObjectRemove);
if (parent){
parent.removeChild(this);
};
removeEventListener(Event.ENTER_FRAME, onFrame);
}
public function tweenToScale(_arg1:Number, _arg2:Number, _arg3:int=0, _arg4:Number=0.1){
this.startScale = _arg1;
this.endScale = _arg2;
this.scaleChangeFactor = _arg4;
this.scaleChangeTweenDelay = _arg3;
scaleChangeFlag = true;
myDisplayObject.scaleX = (myDisplayObject.scaleY = _arg1);
}
public function tweenToAlpha(_arg1:Number, _arg2:Number, _arg3:int=0, _arg4:Number=0.1){
this.startAlpha = _arg1;
this.endAlpha = _arg2;
this.alphaChangeFactor = _arg4;
this.alphaChangeTweenDelay = _arg3;
alphaChangeFlag = true;
myDisplayObject.alpha = _arg1;
}
private function onFrame(_arg1:Event):void{
if (pointChangeFlag){
if (coordChangeTweenDelay-- <= 0){
myDisplayObject.x = (myDisplayObject.x + ((endPoint.x - myDisplayObject.x) * coordChangeFactor));
myDisplayObject.y = (myDisplayObject.y + ((endPoint.y - myDisplayObject.y) * coordChangeFactor));
if ((((Math.round(myDisplayObject.x) == Math.round(endPoint.x))) && ((Math.round(myDisplayObject.y) == Math.round(endPoint.y))))){
pointChangeFlag = false;
if (coordChangeRemoveOnArrival){
if (myDisplayObject){
if (myDisplayObject.parent){
myDisplayObject.parent.removeChild(myDisplayObject);
};
};
};
};
};
};
if (alphaChangeFlag){
if (alphaChangeTweenDelay-- <= 0){
myDisplayObject.alpha = (myDisplayObject.alpha + ((endAlpha - myDisplayObject.alpha) * alphaChangeFactor));
if (Math.round((myDisplayObject.alpha * 100)) == Math.round(endAlpha)){
alphaChangeFlag = false;
};
};
};
if (scaleChangeFlag){
if (scaleChangeTweenDelay-- <= 0){
myDisplayObject.scaleX = (myDisplayObject.scaleX + ((endScale - myDisplayObject.scaleX) * scaleChangeFactor));
myDisplayObject.scaleY = (myDisplayObject.scaleY + ((endScale - myDisplayObject.scaleY) * scaleChangeFactor));
if (Math.round((myDisplayObject.scaleX * 100)) == Math.round(endScale)){
scaleChangeFlag = false;
};
};
};
if ((((((pointChangeFlag == false)) && ((alphaChangeFlag == false)))) && ((scaleChangeFlag == false)))){
remove();
};
}
public function tweenToCoordinates(_arg1:Point, _arg2:Point, _arg3:int=0, _arg4:Number=0.15, _arg5:Boolean=false){
this.startPoint = _arg1;
this.endPoint = _arg2;
this.coordChangeFactor = _arg4;
this.coordChangeTweenDelay = _arg3;
pointChangeFlag = true;
this.coordChangeRemoveOnArrival = _arg5;
myDisplayObject.x = _arg1.x;
myDisplayObject.y = _arg1.y;
}
private function onDisplayedObjectRemove(_arg1:Event):void{
remove();
}
}
}//package utils
Section 133
//_splash (_splash)
package {
import flash.display.*;
public dynamic class _splash extends MovieClip {
public function _splash(){
addFrameScript(44, frame45);
}
function frame45(){
stop();
}
}
}//package
Section 134
//aaaaa (aaaaa)
package {
import flash.display.*;
public dynamic class aaaaa extends MovieClip {
public function aaaaa(){
addFrameScript(99, frame100);
}
function frame100(){
stop();
}
}
}//package
Section 135
//AC_BarFill (AC_BarFill)
package {
import flash.display.*;
public dynamic class AC_BarFill extends MovieClip {
public var bg:Bullet_gage;
}
}//package
Section 136
//AchievementLockedMark (AchievementLockedMark)
package {
import flash.display.*;
public dynamic class AchievementLockedMark extends MovieClip {
}
}//package
Section 137
//AchievementsButton (AchievementsButton)
package {
import src.Game.Buttons.*;
public dynamic class AchievementsButton extends NormalButton {
}
}//package
Section 138
//AchievementSound (AchievementSound)
package {
import flash.media.*;
public dynamic class AchievementSound extends Sound {
}
}//package
Section 139
//AchivementUnlockedMark (AchivementUnlockedMark)
package {
import flash.display.*;
public dynamic class AchivementUnlockedMark extends MovieClip {
}
}//package
Section 140
//AcMask (AcMask)
package {
import flash.display.*;
public dynamic class AcMask extends MovieClip {
}
}//package
Section 141
//b_utton_startcopy (b_utton_startcopy)
package {
import flash.display.*;
public dynamic class b_utton_startcopy extends SimpleButton {
}
}//package
Section 142
//BackButton (BackButton)
package {
import src.Game.Buttons.*;
public dynamic class BackButton extends NormalButton {
}
}//package
Section 143
//Background (Background)
package {
import flash.display.*;
public dynamic class Background extends MovieClip {
}
}//package
Section 144
//BattleStartSound2 (BattleStartSound2)
package {
import flash.media.*;
public dynamic class BattleStartSound2 extends Sound {
}
}//package
Section 145
//bg_2 (bg_2)
package {
import flash.display.*;
public dynamic class bg_2 extends MovieClip {
}
}//package
Section 146
//bg_3 (bg_3)
package {
import flash.display.*;
public dynamic class bg_3 extends MovieClip {
}
}//package
Section 147
//BloodySunsetDesert (BloodySunsetDesert)
package {
import flash.media.*;
public dynamic class BloodySunsetDesert extends Sound {
}
}//package
Section 148
//BloodySunsetGameOverStinger (BloodySunsetGameOverStinger)
package {
import flash.media.*;
public dynamic class BloodySunsetGameOverStinger extends Sound {
}
}//package
Section 149
//BloodySunsetGameWonStinger (BloodySunsetGameWonStinger)
package {
import flash.media.*;
public dynamic class BloodySunsetGameWonStinger extends Sound {
}
}//package
Section 150
//BloodySunsetIntroStinger (BloodySunsetIntroStinger)
package {
import flash.media.*;
public dynamic class BloodySunsetIntroStinger extends Sound {
}
}//package
Section 151
//BloodySunsetLevelPassed (BloodySunsetLevelPassed)
package {
import flash.media.*;
public dynamic class BloodySunsetLevelPassed extends Sound {
}
}//package
Section 152
//BloodySunsetMain (BloodySunsetMain)
package {
import flash.media.*;
public dynamic class BloodySunsetMain extends Sound {
}
}//package
Section 153
//Bullet_gage (Bullet_gage)
package {
import flash.display.*;
public dynamic class Bullet_gage extends MovieClip {
}
}//package
Section 154
//bullet_gun (bullet_gun)
package {
import flash.display.*;
public dynamic class bullet_gun extends MovieClip {
}
}//package
Section 155
//button_achievements (button_achievements)
package {
import src.Game.Buttons.*;
public dynamic class button_achievements extends NormalButton {
}
}//package
Section 156
//button_back (button_back)
package {
import flash.display.*;
public dynamic class button_back extends SimpleButton {
}
}//package
Section 157
//button_easy (button_easy)
package {
import src.Game.Buttons.*;
public dynamic class button_easy extends NormalButton {
}
}//package
Section 158
//button_exclusive (button_exclusive)
package {
import flash.display.*;
public dynamic class button_exclusive extends SimpleButton {
}
}//package
Section 159
//button_hard (button_hard)
package {
import src.Game.Buttons.*;
public dynamic class button_hard extends NormalButton {
}
}//package
Section 160
//button_moregames (button_moregames)
package {
import src.Game.Buttons.*;
public dynamic class button_moregames extends NormalButton {
}
}//package
Section 161
//button_normal (button_normal)
package {
import src.Game.Buttons.*;
public dynamic class button_normal extends NormalButton {
}
}//package
Section 162
//button_start (button_start)
package {
import src.Game.Buttons.*;
public dynamic class button_start extends NormalButton {
}
}//package
Section 163
//ButtonLocked (ButtonLocked)
package {
import flash.display.*;
public dynamic class ButtonLocked extends MovieClip {
}
}//package
Section 164
//buttonperk (buttonperk)
package {
import src.Game.Buttons.*;
public dynamic class buttonperk extends NormalButton {
}
}//package
Section 165
//buttons_credits (buttons_credits)
package {
import src.Game.Buttons.*;
public dynamic class buttons_credits extends NormalButton {
}
}//package
Section 166
//buttons_NEXT (buttons_NEXT)
package {
import flash.display.*;
public dynamic class buttons_NEXT extends SimpleButton {
}
}//package
Section 167
//Buy (Buy)
package {
import flash.media.*;
public dynamic class Buy extends Sound {
}
}//package
Section 168
//BuyButton (BuyButton)
package {
import flash.display.*;
public dynamic class BuyButton extends SimpleButton {
}
}//package
Section 169
//ClickSound (ClickSound)
package {
import flash.media.*;
public dynamic class ClickSound extends Sound {
}
}//package
Section 170
//ContinueBut (ContinueBut)
package {
import flash.display.*;
public dynamic class ContinueBut extends SimpleButton {
}
}//package
Section 171
//CPMStar (CPMStar)
package {
import flash.display.*;
public dynamic class CPMStar extends MovieClip {
}
}//package
Section 172
//AdLoader (CPMStar.AdLoader)
package CPMStar {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class AdLoader extends Sprite {
private var contentspotid:String;
private var cpmstarLoader:Loader;
public function AdLoader(_arg1:String){
this.contentspotid = _arg1;
addEventListener(Event.ADDED, addedHandler);
}
private function addedHandler(_arg1:Event):void{
var _local2:String;
var _local3:DisplayObjectContainer;
removeEventListener(Event.ADDED, addedHandler);
Security.allowDomain("server.cpmstar.com");
_local2 = "http://server.cpmstar.com/adviewas3.swf";
_local3 = parent;
cpmstarLoader = new Loader();
cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler);
cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler);
cpmstarLoader.load(new URLRequest(((_local2 + "?contentspotid=") + contentspotid)));
addChild(cpmstarLoader);
}
private function dispatchHandler(_arg1:Event):void{
dispatchEvent(_arg1);
}
}
}//package CPMStar
Section 173
//CreditsButton (CreditsButton)
package {
import src.Game.Buttons.*;
public dynamic class CreditsButton extends NormalButton {
}
}//package
Section 174
//CriticalHitSound (CriticalHitSound)
package {
import flash.media.*;
public dynamic class CriticalHitSound extends Sound {
}
}//package
Section 175
//end_humsong (end_humsong)
package {
import flash.display.*;
public dynamic class end_humsong extends MovieClip {
}
}//package
Section 176
//enemy1attack (enemy1attack)
package {
import flash.display.*;
public dynamic class enemy1attack extends MovieClip {
}
}//package
Section 177
//Enemy1AttackSound (Enemy1AttackSound)
package {
import flash.media.*;
public dynamic class Enemy1AttackSound extends Sound {
}
}//package
Section 178
//enemy1die (enemy1die)
package {
import flash.display.*;
public dynamic class enemy1die extends MovieClip {
public function enemy1die(){
addFrameScript(19, frame20);
}
function frame20(){
}
}
}//package
Section 179
//enemy1diefade (enemy1diefade)
package {
import flash.display.*;
public dynamic class enemy1diefade extends MovieClip {
public function enemy1diefade(){
addFrameScript(19, frame20);
}
function frame20(){
}
}
}//package
Section 180
//enemy1walk (enemy1walk)
package {
import flash.display.*;
public dynamic class enemy1walk extends MovieClip {
}
}//package
Section 181
//Enemy2AttackSound (Enemy2AttackSound)
package {
import flash.media.*;
public dynamic class Enemy2AttackSound extends Sound {
}
}//package
Section 182
//Enemy2DieSound (Enemy2DieSound)
package {
import flash.media.*;
public dynamic class Enemy2DieSound extends Sound {
}
}//package
Section 183
//enemy2shadowwalk (enemy2shadowwalk)
package {
import flash.display.*;
public dynamic class enemy2shadowwalk extends MovieClip {
}
}//package
Section 184
//enemy3attack (enemy3attack)
package {
import flash.display.*;
public dynamic class enemy3attack extends MovieClip {
}
}//package
Section 185
//Enemy3AttackSound (Enemy3AttackSound)
package {
import flash.media.*;
public dynamic class Enemy3AttackSound extends Sound {
}
}//package
Section 186
//enemy3die (enemy3die)
package {
import flash.display.*;
public dynamic class enemy3die extends MovieClip {
}
}//package
Section 187
//enemy3dieani (enemy3dieani)
package {
import flash.display.*;
public dynamic class enemy3dieani extends MovieClip {
}
}//package
Section 188
//Enemy3DieSound (Enemy3DieSound)
package {
import flash.media.*;
public dynamic class Enemy3DieSound extends Sound {
}
}//package
Section 189
//enemy3walk (enemy3walk)
package {
import flash.display.*;
public dynamic class enemy3walk extends MovieClip {
}
}//package
Section 190
//enemy4attack (enemy4attack)
package {
import flash.display.*;
public dynamic class enemy4attack extends MovieClip {
}
}//package
Section 191
//Enemy4AttackSound (Enemy4AttackSound)
package {
import flash.media.*;
public dynamic class Enemy4AttackSound extends Sound {
}
}//package
Section 192
//enemy4die (enemy4die)
package {
import flash.display.*;
public dynamic class enemy4die extends MovieClip {
}
}//package
Section 193
//Enemy4DieSound (Enemy4DieSound)
package {
import flash.media.*;
public dynamic class Enemy4DieSound extends Sound {
}
}//package
Section 194
//enemy4walk (enemy4walk)
package {
import flash.display.*;
public dynamic class enemy4walk extends MovieClip {
}
}//package
Section 195
//enemy4walk_hand (enemy4walk_hand)
package {
import flash.display.*;
public dynamic class enemy4walk_hand extends MovieClip {
}
}//package
Section 196
//enemy5attack (enemy5attack)
package {
import flash.display.*;
public dynamic class enemy5attack extends MovieClip {
}
}//package
Section 197
//enemy5ball (enemy5ball)
package {
import flash.display.*;
public dynamic class enemy5ball extends MovieClip {
}
}//package
Section 198
//enemy5ball2 (enemy5ball2)
package {
import flash.display.*;
public dynamic class enemy5ball2 extends MovieClip {
}
}//package
Section 199
//enemy5ballTween1 (enemy5ballTween1)
package {
import flash.display.*;
public dynamic class enemy5ballTween1 extends MovieClip {
}
}//package
Section 200
//enemy5balTween10 (enemy5balTween10)
package {
import flash.display.*;
public dynamic class enemy5balTween10 extends MovieClip {
}
}//package
Section 201
//enemy5balTween11 (enemy5balTween11)
package {
import flash.display.*;
public dynamic class enemy5balTween11 extends MovieClip {
}
}//package
Section 202
//enemy5balTween12 (enemy5balTween12)
package {
import flash.display.*;
public dynamic class enemy5balTween12 extends MovieClip {
}
}//package
Section 203
//enemy5balTween13 (enemy5balTween13)
package {
import flash.display.*;
public dynamic class enemy5balTween13 extends MovieClip {
}
}//package
Section 204
//enemy5balTween14 (enemy5balTween14)
package {
import flash.display.*;
public dynamic class enemy5balTween14 extends MovieClip {
}
}//package
Section 205
//enemy5balTween15 (enemy5balTween15)
package {
import flash.display.*;
public dynamic class enemy5balTween15 extends MovieClip {
}
}//package
Section 206
//enemy5balTween2 (enemy5balTween2)
package {
import flash.display.*;
public dynamic class enemy5balTween2 extends MovieClip {
}
}//package
Section 207
//enemy5balTween3 (enemy5balTween3)
package {
import flash.display.*;
public dynamic class enemy5balTween3 extends MovieClip {
}
}//package
Section 208
//enemy5balTween4 (enemy5balTween4)
package {
import flash.display.*;
public dynamic class enemy5balTween4 extends MovieClip {
}
}//package
Section 209
//enemy5balTween5 (enemy5balTween5)
package {
import flash.display.*;
public dynamic class enemy5balTween5 extends MovieClip {
}
}//package
Section 210
//enemy5balTween6 (enemy5balTween6)
package {
import flash.display.*;
public dynamic class enemy5balTween6 extends MovieClip {
}
}//package
Section 211
//enemy5balTween7 (enemy5balTween7)
package {
import flash.display.*;
public dynamic class enemy5balTween7 extends MovieClip {
}
}//package
Section 212
//enemy5balTween8 (enemy5balTween8)
package {
import flash.display.*;
public dynamic class enemy5balTween8 extends MovieClip {
}
}//package
Section 213
//enemy5balTween9 (enemy5balTween9)
package {
import flash.display.*;
public dynamic class enemy5balTween9 extends MovieClip {
}
}//package
Section 214
//enemy5die (enemy5die)
package {
import flash.display.*;
public dynamic class enemy5die extends MovieClip {
}
}//package
Section 215
//Enemy5DieSound (Enemy5DieSound)
package {
import flash.media.*;
public dynamic class Enemy5DieSound extends Sound {
}
}//package
Section 216
//enemy5shadowTween6 (enemy5shadowTween6)
package {
import flash.display.*;
public dynamic class enemy5shadowTween6 extends MovieClip {
}
}//package
Section 217
//enemy5shadowwalk (enemy5shadowwalk)
package {
import flash.display.*;
public dynamic class enemy5shadowwalk extends MovieClip {
}
}//package
Section 218
//enemy5Tween1 (enemy5Tween1)
package {
import flash.display.*;
public dynamic class enemy5Tween1 extends MovieClip {
}
}//package
Section 219
//enemy5Tween2 (enemy5Tween2)
package {
import flash.display.*;
public dynamic class enemy5Tween2 extends MovieClip {
}
}//package
Section 220
//enemy5Tween22 (enemy5Tween22)
package {
import flash.display.*;
public dynamic class enemy5Tween22 extends MovieClip {
}
}//package
Section 221
//enemy5Tween3 (enemy5Tween3)
package {
import flash.display.*;
public dynamic class enemy5Tween3 extends MovieClip {
}
}//package
Section 222
//enemy5Tween4 (enemy5Tween4)
package {
import flash.display.*;
public dynamic class enemy5Tween4 extends MovieClip {
}
}//package
Section 223
//enemy5walk (enemy5walk)
package {
import flash.display.*;
public dynamic class enemy5walk extends MovieClip {
}
}//package
Section 224
//enemy6attack (enemy6attack)
package {
import flash.display.*;
public dynamic class enemy6attack extends MovieClip {
}
}//package
Section 225
//enemy6die (enemy6die)
package {
import flash.display.*;
public dynamic class enemy6die extends MovieClip {
}
}//package
Section 226
//enemy6dieact (enemy6dieact)
package {
import flash.display.*;
public dynamic class enemy6dieact extends MovieClip {
}
}//package
Section 227
//Enemy6DieSound (Enemy6DieSound)
package {
import flash.media.*;
public dynamic class Enemy6DieSound extends Sound {
}
}//package
Section 228
//enemy6eshadowwalk (enemy6eshadowwalk)
package {
import flash.display.*;
public dynamic class enemy6eshadowwalk extends MovieClip {
}
}//package
Section 229
//enemy6walk (enemy6walk)
package {
import flash.display.*;
public dynamic class enemy6walk extends MovieClip {
}
}//package
Section 230
//enemy7_die (enemy7_die)
package {
import flash.display.*;
public dynamic class enemy7_die extends MovieClip {
}
}//package
Section 231
//enemy7attack (enemy7attack)
package {
import flash.display.*;
public dynamic class enemy7attack extends MovieClip {
}
}//package
Section 232
//enemy7attta (enemy7attta)
package {
import flash.display.*;
public dynamic class enemy7attta extends MovieClip {
}
}//package
Section 233
//enemy7die (enemy7die)
package {
import flash.display.*;
public dynamic class enemy7die extends MovieClip {
}
}//package
Section 234
//enemy7laser (enemy7laser)
package {
import flash.display.*;
public dynamic class enemy7laser extends MovieClip {
}
}//package
Section 235
//enemy7laserhit (enemy7laserhit)
package {
import flash.display.*;
public dynamic class enemy7laserhit extends MovieClip {
}
}//package
Section 236
//enemy7Tween1 (enemy7Tween1)
package {
import flash.display.*;
public dynamic class enemy7Tween1 extends MovieClip {
}
}//package
Section 237
//enemy7walk (enemy7walk)
package {
import flash.display.*;
public dynamic class enemy7walk extends MovieClip {
}
}//package
Section 238
//enemy7walk2Tween1copy (enemy7walk2Tween1copy)
package {
import flash.display.*;
public dynamic class enemy7walk2Tween1copy extends MovieClip {
}
}//package
Section 239
//enemy8 (enemy8)
package {
import flash.display.*;
public dynamic class enemy8 extends MovieClip {
}
}//package
Section 240
//enemy8attack (enemy8attack)
package {
import flash.display.*;
public dynamic class enemy8attack extends MovieClip {
}
}//package
Section 241
//enemy8die (enemy8die)
package {
import flash.display.*;
public dynamic class enemy8die extends MovieClip {
}
}//package
Section 242
//Enemy8DieSound (Enemy8DieSound)
package {
import flash.media.*;
public dynamic class Enemy8DieSound extends Sound {
}
}//package
Section 243
//enemy8walk (enemy8walk)
package {
import flash.display.*;
public dynamic class enemy8walk extends MovieClip {
}
}//package
Section 244
//EngineeringIcon (EngineeringIcon)
package {
import flash.display.*;
public dynamic class EngineeringIcon extends MovieClip {
}
}//package
Section 245
//EquipButton (EquipButton)
package {
import flash.display.*;
public dynamic class EquipButton extends SimpleButton {
}
}//package
Section 246
//EquippedMark (EquippedMark)
package {
import flash.display.*;
import flash.text.*;
public dynamic class EquippedMark extends MovieClip {
public var eqTxt:TextField;
}
}//package
Section 247
//ExitButton (ExitButton)
package {
import flash.display.*;
public dynamic class ExitButton extends SimpleButton {
}
}//package
Section 248
//ExitGameButton (ExitGameButton)
package {
import src.Game.Buttons.*;
public dynamic class ExitGameButton extends NormalButton {
}
}//package
Section 249
//helicopter (helicopter)
package {
import flash.display.*;
public dynamic class helicopter extends MovieClip {
}
}//package
Section 250
//helicopter_fan (helicopter_fan)
package {
import flash.display.*;
public dynamic class helicopter_fan extends MovieClip {
}
}//package
Section 251
//helicopter_fan2 (helicopter_fan2)
package {
import flash.display.*;
public dynamic class helicopter_fan2 extends MovieClip {
}
}//package
Section 252
//helicopter_move (helicopter_move)
package {
import flash.display.*;
public dynamic class helicopter_move extends MovieClip {
}
}//package
Section 253
//HelicopterIcon (HelicopterIcon)
package {
import flash.display.*;
public dynamic class HelicopterIcon extends MovieClip {
}
}//package
Section 254
//HighQualityButton (HighQualityButton)
package {
import flash.display.*;
public dynamic class HighQualityButton extends MovieClip {
}
}//package
Section 255
//HostGame (HostGame)
package {
import src.Game.Buttons.*;
public dynamic class HostGame extends NormalButton {
}
}//package
Section 256
//HP_BarFillcopy (HP_BarFillcopy)
package {
import flash.display.*;
public dynamic class HP_BarFillcopy extends MovieClip {
public var hp:HP_gage;
}
}//package
Section 257
//HP_BarFillcopy1 (HP_BarFillcopy1)
package {
import flash.display.*;
public dynamic class HP_BarFillcopy1 extends MovieClip {
}
}//package
Section 258
//HP_gage (HP_gage)
package {
import flash.display.*;
public dynamic class HP_gage extends MovieClip {
}
}//package
Section 259
//Hp_tab_shop (Hp_tab_shop)
package {
import flash.display.*;
public dynamic class Hp_tab_shop extends MovieClip {
}
}//package
Section 260
//JoeyMC (JoeyMC)
package {
import flash.display.*;
public dynamic class JoeyMC extends MovieClip {
}
}//package
Section 261
//LowQualityButton (LowQualityButton)
package {
import flash.display.*;
public dynamic class LowQualityButton extends MovieClip {
}
}//package
Section 262
//MagnumSound (MagnumSound)
package {
import flash.media.*;
public dynamic class MagnumSound extends Sound {
}
}//package
Section 263
//MainMenuBut (MainMenuBut)
package {
import src.Game.Buttons.*;
public dynamic class MainMenuBut extends NormalButton {
}
}//package
Section 264
//MediumQualityButton (MediumQualityButton)
package {
import flash.display.*;
public dynamic class MediumQualityButton extends MovieClip {
}
}//package
Section 265
//MiscTab (MiscTab)
package {
import flash.display.*;
public dynamic class MiscTab extends SimpleButton {
}
}//package
Section 266
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 267
//MouseOverSound (MouseOverSound)
package {
import flash.media.*;
public dynamic class MouseOverSound extends Sound {
}
}//package
Section 268
//ParticleBlood (ParticleBlood)
package {
import flash.display.*;
public dynamic class ParticleBlood extends MovieClip {
}
}//package
Section 269
//ParticleDirt (ParticleDirt)
package {
import flash.display.*;
public dynamic class ParticleDirt extends MovieClip {
}
}//package
Section 270
//PistolSound (PistolSound)
package {
import flash.media.*;
public dynamic class PistolSound extends Sound {
}
}//package
Section 271
//PlayButton (PlayButton)
package {
import flash.display.*;
public dynamic class PlayButton extends SimpleButton {
}
}//package
Section 272
//PlayCash (PlayCash)
package {
import src.Game.Buttons.*;
public dynamic class PlayCash extends NormalButton {
}
}//package
Section 273
//PlusControl (PlusControl)
package {
import flash.display.*;
public dynamic class PlusControl extends SimpleButton {
}
}//package
Section 274
//PreloadMC (PreloadMC)
package {
import flash.display.*;
public dynamic class PreloadMC extends MovieClip {
public function PreloadMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 275
//PropertyButton (PropertyButton)
package {
import flash.display.*;
public dynamic class PropertyButton extends SimpleButton {
}
}//package
Section 276
//PropertyButtonMask (PropertyButtonMask)
package {
import flash.display.*;
public dynamic class PropertyButtonMask extends MovieClip {
}
}//package
Section 277
//QHighOffButton (QHighOffButton)
package {
import flash.display.*;
public dynamic class QHighOffButton extends SimpleButton {
}
}//package
Section 278
//QHighOnButton (QHighOnButton)
package {
import flash.display.*;
public dynamic class QHighOnButton extends SimpleButton {
}
}//package
Section 279
//QLowOffButton (QLowOffButton)
package {
import flash.display.*;
public dynamic class QLowOffButton extends SimpleButton {
}
}//package
Section 280
//QLowOnButton (QLowOnButton)
package {
import flash.display.*;
public dynamic class QLowOnButton extends SimpleButton {
}
}//package
Section 281
//QMediumOffButton (QMediumOffButton)
package {
import flash.display.*;
public dynamic class QMediumOffButton extends SimpleButton {
}
}//package
Section 282
//QMediumOnButton (QMediumOnButton)
package {
import flash.display.*;
public dynamic class QMediumOnButton extends SimpleButton {
}
}//package
Section 283
//QuitGameBut (QuitGameBut)
package {
import flash.display.*;
public dynamic class QuitGameBut extends SimpleButton {
}
}//package
Section 284
//QuitGameButton (QuitGameButton)
package {
import flash.display.*;
public dynamic class QuitGameButton extends SimpleButton {
}
}//package
Section 285
//ReloadSound (ReloadSound)
package {
import flash.media.*;
public dynamic class ReloadSound extends Sound {
}
}//package
Section 286
//RepairIcon (RepairIcon)
package {
import flash.display.*;
public dynamic class RepairIcon extends MovieClip {
}
}//package
Section 287
//RepairManIcon (RepairManIcon)
package {
import flash.display.*;
public dynamic class RepairManIcon extends MovieClip {
}
}//package
Section 288
//RestartBut (RestartBut)
package {
import src.Game.Buttons.*;
public dynamic class RestartBut extends NormalButton {
}
}//package
Section 289
//ShareButton (ShareButton)
package {
import flash.display.*;
public dynamic class ShareButton extends SimpleButton {
}
}//package
Section 290
//ShotgunSound (ShotgunSound)
package {
import flash.media.*;
public dynamic class ShotgunSound extends Sound {
}
}//package
Section 291
//SniperSound (SniperSound)
package {
import flash.media.*;
public dynamic class SniperSound extends Sound {
}
}//package
Section 292
//StartBattleSound (StartBattleSound)
package {
import flash.media.*;
public dynamic class StartBattleSound extends Sound {
}
}//package
Section 293
//StartButton (StartButton)
package {
import src.Game.Buttons.*;
public dynamic class StartButton extends NormalButton {
}
}//package
Section 294
//SubmitButton (SubmitButton)
package {
import src.Game.Buttons.*;
public dynamic class SubmitButton extends NormalButton {
}
}//package
Section 295
//SumbitButton (SumbitButton)
package {
import flash.display.*;
public dynamic class SumbitButton extends SimpleButton {
}
}//package
Section 296
//TeagamesExclusive (TeagamesExclusive)
package {
import flash.display.*;
public dynamic class TeagamesExclusive extends MovieClip {
}
}//package
Section 297
//title_move (title_move)
package {
import flash.display.*;
public dynamic class title_move extends MovieClip {
public function title_move(){
addFrameScript(290, frame291);
}
function frame291(){
stop();
}
}
}//package
Section 298
//TryAgainButton (TryAgainButton)
package {
import flash.display.*;
public dynamic class TryAgainButton extends SimpleButton {
}
}//package
Section 299
//TurretIcon (TurretIcon)
package {
import flash.display.*;
public dynamic class TurretIcon extends MovieClip {
}
}//package
Section 300
//UziSound (UziSound)
package {
import flash.media.*;
public dynamic class UziSound extends Sound {
}
}//package
Section 301
//Weapon0 (Weapon0)
package {
import flash.display.*;
public dynamic class Weapon0 extends MovieClip {
}
}//package
Section 302
//Weapon1 (Weapon1)
package {
import flash.display.*;
public dynamic class Weapon1 extends MovieClip {
}
}//package
Section 303
//Weapon10 (Weapon10)
package {
import flash.display.*;
public dynamic class Weapon10 extends MovieClip {
}
}//package
Section 304
//Weapon11 (Weapon11)
package {
import flash.display.*;
public dynamic class Weapon11 extends MovieClip {
}
}//package
Section 305
//Weapon2 (Weapon2)
package {
import flash.display.*;
public dynamic class Weapon2 extends MovieClip {
}
}//package
Section 306
//Weapon3 (Weapon3)
package {
import flash.display.*;
public dynamic class Weapon3 extends MovieClip {
}
}//package
Section 307
//Weapon4 (Weapon4)
package {
import flash.display.*;
public dynamic class Weapon4 extends MovieClip {
}
}//package
Section 308
//Weapon5 (Weapon5)
package {
import flash.display.*;
public dynamic class Weapon5 extends MovieClip {
}
}//package
Section 309
//Weapon6 (Weapon6)
package {
import flash.display.*;
public dynamic class Weapon6 extends MovieClip {
}
}//package
Section 310
//Weapon7 (Weapon7)
package {
import flash.display.*;
public dynamic class Weapon7 extends MovieClip {
}
}//package
Section 311
//Weapon8 (Weapon8)
package {
import flash.display.*;
public dynamic class Weapon8 extends MovieClip {
}
}//package
Section 312
//Weapon9 (Weapon9)
package {
import flash.display.*;
public dynamic class Weapon9 extends MovieClip {
}
}//package
Section 313
//WeaponIcon0 (WeaponIcon0)
package {
import flash.display.*;
public dynamic class WeaponIcon0 extends MovieClip {
}
}//package
Section 314
//WeaponIcon1 (WeaponIcon1)
package {
import flash.display.*;
public dynamic class WeaponIcon1 extends MovieClip {
}
}//package
Section 315
//WeaponIcon10 (WeaponIcon10)
package {
import flash.display.*;
public dynamic class WeaponIcon10 extends MovieClip {
}
}//package
Section 316
//WeaponIcon11 (WeaponIcon11)
package {
import flash.display.*;
public dynamic class WeaponIcon11 extends MovieClip {
}
}//package
Section 317
//WeaponIcon2 (WeaponIcon2)
package {
import flash.display.*;
public dynamic class WeaponIcon2 extends MovieClip {
}
}//package
Section 318
//WeaponIcon3 (WeaponIcon3)
package {
import flash.display.*;
public dynamic class WeaponIcon3 extends MovieClip {
}
}//package
Section 319
//WeaponIcon4 (WeaponIcon4)
package {
import flash.display.*;
public dynamic class WeaponIcon4 extends MovieClip {
}
}//package
Section 320
//WeaponIcon5 (WeaponIcon5)
package {
import flash.display.*;
public dynamic class WeaponIcon5 extends MovieClip {
}
}//package
Section 321
//WeaponIcon6 (WeaponIcon6)
package {
import flash.display.*;
public dynamic class WeaponIcon6 extends MovieClip {
}
}//package
Section 322
//WeaponIcon7 (WeaponIcon7)
package {
import flash.display.*;
public dynamic class WeaponIcon7 extends MovieClip {
}
}//package
Section 323
//WeaponIcon8 (WeaponIcon8)
package {
import flash.display.*;
public dynamic class WeaponIcon8 extends MovieClip {
}
}//package
Section 324
//WeaponIcon9 (WeaponIcon9)
package {
import flash.display.*;
public dynamic class WeaponIcon9 extends MovieClip {
}
}//package
Section 325
//WeaponIconExclusive (WeaponIconExclusive)
package {
import flash.display.*;
public dynamic class WeaponIconExclusive extends MovieClip {
}
}//package
Section 326
//WeaponsTab (WeaponsTab)
package {
import flash.display.*;
public dynamic class WeaponsTab extends SimpleButton {
}
}//package
Section 327
//ZombieDeath (ZombieDeath)
package {
import flash.media.*;
public dynamic class ZombieDeath extends Sound {
}
}//package
Section 328
//ZombieDie1Sound (ZombieDie1Sound)
package {
import flash.media.*;
public dynamic class ZombieDie1Sound extends Sound {
}
}//package
Section 329
//ZombieDie2Sound (ZombieDie2Sound)
package {
import flash.media.*;
public dynamic class ZombieDie2Sound extends Sound {
}
}//package