Section 1
//KongregateEvent (com.kongregate.as3.client.events.KongregateEvent)
package com.kongregate.as3.client.events {
import flash.events.*;
public class KongregateEvent extends Event {
public static const COMPLETE:String = "component_api_available";
public function KongregateEvent(_arg1:String){
super(_arg1);
}
}
}//package com.kongregate.as3.client.events
Section 2
//AbstractShadowService (com.kongregate.as3.client.services.AbstractShadowService)
package com.kongregate.as3.client.services {
import flash.events.*;
public class AbstractShadowService extends EventDispatcher {
protected function alert(_arg1:String, _arg2:String, _arg3="", _arg4:String=""):void{
trace(((((((("Kongregate API: " + _arg1) + ".") + _arg2) + "(") + _arg3) + ") ") + _arg4));
}
}
}//package com.kongregate.as3.client.services
Section 3
//HighScoreServiceShadow (com.kongregate.as3.client.services.HighScoreServiceShadow)
package com.kongregate.as3.client.services {
public class HighScoreServiceShadow extends AbstractShadowService implements IHighScoreServices {
private var mode:String;
public function HighScoreServiceShadow(){
mode = "";
}
public function submit(_arg1:Number, _arg2:String=null):void{
alert("IHighScoreServices", "submit", arguments);
}
public function connect():Boolean{
alert("IKongregateServices", "connect");
return (true);
}
public function requestList(_arg1:Function):void{
alert("IHighScoreServices", "requestList", "", (("[Mode: " + mode) + "]"));
_arg1({success:false});
}
public function setMode(_arg1:String):void{
alert("IHighScoreServices", "setMode", arguments);
this.mode = _arg1;
}
}
}//package com.kongregate.as3.client.services
Section 4
//IHighScoreServices (com.kongregate.as3.client.services.IHighScoreServices)
package com.kongregate.as3.client.services {
public interface IHighScoreServices {
function setMode(_arg1:String):void;
function submit(_arg1:Number, _arg2:String=null):void;
function requestList(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 5
//IKongregateServices (com.kongregate.as3.client.services.IKongregateServices)
package com.kongregate.as3.client.services {
import flash.events.*;
public interface IKongregateServices extends IEventDispatcher {
function getPlayerInfo(_arg1:Function):void;
function connect(_arg1:Number=-1):Boolean;
}
}//package com.kongregate.as3.client.services
Section 6
//IStatServices (com.kongregate.as3.client.services.IStatServices)
package com.kongregate.as3.client.services {
public interface IStatServices {
function submitArray(_arg1:Array):void;
function submit(_arg1:String, _arg2:Number):void;
}
}//package com.kongregate.as3.client.services
Section 7
//IUserServices (com.kongregate.as3.client.services.IUserServices)
package com.kongregate.as3.client.services {
public interface IUserServices {
function getName():String;
function getPlayerInfo(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 8
//KongregateServiceShadow (com.kongregate.as3.client.services.KongregateServiceShadow)
package com.kongregate.as3.client.services {
public class KongregateServiceShadow extends AbstractShadowService implements IKongregateServices {
public function getName():String{
alert("IKongregateServices", "getName");
return ("Guest");
}
public function connect(_arg1:Number=-1):Boolean{
alert("IKongregateServices", "connect", arguments);
return (true);
}
public function getPlayerInfo(_arg1:Function):void{
alert("IKongregateServices", "getPlayerInfo");
_arg1(new Object());
}
}
}//package com.kongregate.as3.client.services
Section 9
//StatServiceShadow (com.kongregate.as3.client.services.StatServiceShadow)
package com.kongregate.as3.client.services {
public class StatServiceShadow extends AbstractShadowService implements IStatServices {
public function submitArray(_arg1:Array):void{
alert("IStatServices", "submitArray", arguments);
}
public function submit(_arg1:String, _arg2:Number):void{
alert("IStatServices", "submitStat", arguments);
}
}
}//package com.kongregate.as3.client.services
Section 10
//UserServiceShadow (com.kongregate.as3.client.services.UserServiceShadow)
package com.kongregate.as3.client.services {
public class UserServiceShadow extends AbstractShadowService implements IUserServices {
public function getName():String{
alert("UserService", "getName");
return ("Guest");
}
public function getPlayerInfo(_arg1:Function):void{
alert("UserService", "getPlayerInfo");
_arg1({isGuest:true, name:"Guest", points:0, level:0, isMode:false, isAdmin:false, isDeveloper:false, avatarPath:"", chatAvatarPath:""});
}
}
}//package com.kongregate.as3.client.services
Section 11
//IAPIBootstrap (com.kongregate.as3.client.IAPIBootstrap)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
public interface IAPIBootstrap {
function init(_arg1:Event=null, _arg2:Stage=null):void;
function hideLog():void;
function showLog(_arg1:int=0):void;
}
}//package com.kongregate.as3.client
Section 12
//KongregateAPI (com.kongregate.as3.client.KongregateAPI)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
import com.kongregate.as3.client.services.*;
import flash.net.*;
import com.kongregate.as3.client.events.*;
import flash.system.*;
import flash.errors.*;
import flash.utils.*;
public class KongregateAPI extends Sprite {
private const VERSION:Number = 1;
private var loader:Loader;
private var loadedDomain:ApplicationDomain;
private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices";
private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices";
private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices";
private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices";
private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf";
private static var _connected:Boolean;
private static var kUser:IUserServices;
private static var _loaded:Boolean;
private static var kServices:IKongregateServices;
private static var kScores:IHighScoreServices;
private static var mInstance:KongregateAPI;
private static var kStats:IStatServices;
private static var kAPI:IAPIBootstrap;
public function KongregateAPI(){
if (mInstance != null){
throw (new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access."));
};
mInstance = this;
this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
}
public function get loaded():Boolean{
return (_loaded);
}
public function get connected():Boolean{
return (_connected);
}
private function alertConnected(_arg1:TimerEvent=null):void{
var _local2:KongregateEvent;
var _local3:Boolean;
_local2 = new KongregateEvent(KongregateEvent.COMPLETE);
_local3 = this.dispatchEvent(_local2);
}
private function init(_arg1:Event):void{
var _local2:Object;
var _local3:String;
var _local4:URLRequest;
var _local5:LoaderContext;
this.removeEventListener(Event.ADDED_TO_STAGE, init);
_loaded = false;
_connected = false;
_local2 = LoaderInfo(root.loaderInfo).parameters;
_local3 = _local2.api_path;
if (_local3 == null){
trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded.");
createShadowServices();
return;
};
Security.allowDomain("*.kongregate.com");
Security.allowDomain("kongregatetrunk.com");
_local4 = new URLRequest(_local3);
_local5 = new LoaderContext(false);
_local5.applicationDomain = ApplicationDomain.currentDomain;
_local5.securityDomain = SecurityDomain.currentDomain;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(_local4, _local5);
}
public function get api():IAPIBootstrap{
return (kAPI);
}
private function loadComplete(_arg1:Event):void{
getServices();
}
public function get scores():IHighScoreServices{
return (kScores);
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
throw (new IOError(("API file not found. " + _arg1)));
}
public function get services():IKongregateServices{
return (kServices);
}
public function get stats():IStatServices{
return (kStats);
}
private function createShadowServices():void{
var _local1:Timer;
trace(">>> Kongregate Shadow Services instantiated for local development..");
kServices = new KongregateServiceShadow();
kScores = new HighScoreServiceShadow();
kStats = new StatServiceShadow();
kUser = new UserServiceShadow();
_local1 = new Timer(200, 1);
_local1.addEventListener(TimerEvent.TIMER_COMPLETE, alertConnected);
_local1.start();
_connected = true;
}
public function get user():IUserServices{
return (kUser);
}
private function getServices():void{
var _local1:ApplicationDomain;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local1 = ApplicationDomain.currentDomain;
kAPI = IAPIBootstrap(loader.getChildAt(0));
this.addChild(loader);
_local2 = _local1.getDefinition(CLASS_SERVICES);
trace(_local2);
kServices = _local2.getInstance();
_local3 = _local1.getDefinition(CLASS_SCORES);
kScores = _local3.getInstance();
_local4 = _local1.getDefinition(CLASS_STATS);
kStats = _local4.getInstance();
_local5 = _local1.getDefinition(CLASS_USER);
kUser = _local5.getInstance();
kServices.connect(VERSION);
_loaded = true;
_connected = true;
alertConnected();
}
public static function getInstance():KongregateAPI{
if (!mInstance){
throw (new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it."));
};
return (mInstance);
}
}
}//package com.kongregate.as3.client
Section 13
//List (fl.controls.List)
package fl.controls {
import flash.display.*;
public dynamic class List extends MovieClip {
}
}//package fl.controls
Section 14
//TextInput (fl.controls.TextInput)
package fl.controls {
import flash.display.*;
public dynamic class TextInput extends MovieClip {
}
}//package fl.controls
Section 15
//armor_preload_1 (sff_fla.armor_preload_1)
package sff_fla {
import flash.display.*;
public dynamic class armor_preload_1 extends MovieClip {
public function armor_preload_1(){
addFrameScript(125, frame126);
}
function frame126(){
}
}
}//package sff_fla
Section 16
//AUDIOPRELOAD_8 (sff_fla.AUDIOPRELOAD_8)
package sff_fla {
import flash.display.*;
public dynamic class AUDIOPRELOAD_8 extends MovieClip {
public function AUDIOPRELOAD_8(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package sff_fla
Section 17
//btn_audio_129 (sff_fla.btn_audio_129)
package sff_fla {
import flash.display.*;
import flash.text.*;
public dynamic class btn_audio_129 extends MovieClip {
public var sound_text:TextField;
}
}//package sff_fla
Section 18
//diffusion_intro_5 (sff_fla.diffusion_intro_5)
package sff_fla {
import flash.display.*;
public dynamic class diffusion_intro_5 extends MovieClip {
public var pm:PointManager;
public function diffusion_intro_5(){
addFrameScript(0, frame1, 0xFF, frame256, 356, frame357);
}
function frame1(){
pm = new PointManager(this);
}
function frame357(){
pm = null;
stop();
}
function frame256(){
pm.fadeout();
}
}
}//package sff_fla
Section 19
//IntUtil (utils.IntUtil)
package 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 utils
Section 20
//MD5 (utils.MD5)
package utils {
public class MD5 {
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 createBlocks(_arg1:String):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[(_local5 >> 5)] = (_local2[(_local5 >> 5)] | ((_arg1.charCodeAt((_local5 / 8)) & _local4) << (_local5 % 32)));
_local5 = (_local5 + 8);
};
_local2[(_local3 >> 5)] = (_local2[(_local3 >> 5)] | (128 << (_local3 % 32)));
_local2[((((_local3 + 64) >>> 9) << 4) + 14)] = _local3;
return (_local2);
}
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));
}
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: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[(_local12 + 0)], 7, -680876936);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 1)], 12, -389564586);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 2)], 17, 606105819);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 3)], 22, -1044525330);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 4)], 7, -176418897);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 5)], 12, 1200080426);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 6)], 17, -1473231341);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 7)], 22, -45705983);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 8)], 7, 1770035416);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 9)], 12, -1958414417);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 10)], 17, -42063);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 11)], 22, -1990404162);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 12)], 7, 1804603682);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 13)], 12, -40341101);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 14)], 17, -1502002290);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 15)], 22, 1236535329);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 1)], 5, -165796510);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 6)], 9, -1069501632);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 11)], 14, 643717713);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 0)], 20, -373897302);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 5)], 5, -701558691);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 10)], 9, 38016083);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 15)], 14, -660478335);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 4)], 20, -405537848);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 9)], 5, 568446438);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 14)], 9, -1019803690);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 3)], 14, -187363961);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 8)], 20, 1163531501);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 13)], 5, -1444681467);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 2)], 9, -51403784);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 7)], 14, 1735328473);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 12)], 20, -1926607734);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 5)], 4, -378558);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 8)], 11, -2022574463);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 11)], 16, 1839030562);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 14)], 23, -35309556);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 1)], 4, -1530992060);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 4)], 11, 1272893353);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 7)], 16, -155497632);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 10)], 23, -1094730640);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 13)], 4, 681279174);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 0)], 11, -358537222);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 3)], 16, -722521979);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 6)], 23, 76029189);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 9)], 4, -640364487);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 12)], 11, -421815835);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 15)], 16, 530742520);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 2)], 23, -995338651);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 0)], 6, -198630844);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 7)], 10, 1126891415);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 14)], 15, -1416354905);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 5)], 21, -57434055);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 12)], 6, 1700485571);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 3)], 10, -1894986606);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 10)], 15, -1051523);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 1)], 21, -2054922799);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 8)], 6, 1873313359);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 15)], 10, -30611744);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 6)], 15, -1560198380);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 13)], 21, 1309151649);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 4)], 6, -145523070);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 11)], 10, -1120210379);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 2)], 15, 718787259);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 9)], 21, -343485551);
_local2 = (_local2 + _local6);
_local3 = (_local3 + _local7);
_local4 = (_local4 + _local8);
_local5 = (_local5 + _local9);
_local12 = (_local12 + 16);
};
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));
}
}
}//package utils
Section 21
//AIMoveEntry (AIMoveEntry)
package {
public class AIMoveEntry {
var head_damage_probability:Number;
var hold_time:int;
var torso_damage_probability:Number;
var hold_move:Boolean;
var id:int;
var normal_probability:Number;
public function AIMoveEntry(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean, _arg6:int=20){
id = _arg1;
normal_probability = _arg2;
head_damage_probability = _arg3;
torso_damage_probability = _arg4;
hold_move = _arg5;
hold_time = _arg6;
}
}
}//package
Section 22
//Application (Application)
package {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
public class Application extends MovieClip {
public var game_over:Boolean;
var layer_objects:Sprite;
var layer_characters:Sprite;
var frame_counter:int;
var time_offset:int;
var hs_screen:HighScoreScreen;
public var load_complete:Boolean;
var title_movie:TitleMovie;
public var keystate:ApplicationKeystate;
public var display_debug:Boolean;
var selected_option:int;
var gameflow_state:int;
var last_player_score:int;
var layer_interface:Sprite;
public var current_time:Number;
public var audio:SoundManager;
public var score_api:WebScoreAPI;
public var game:Game;
public static const AS_CREDITS:int = 4;
public static const AS_SCORE_CHECK:int = 5;
public static const AS_TITLE_SCREEN:int = 1;
public static const AS_HIGH_SCORES:int = 3;
public static const AS_PLAYING_GAME:int = 2;
public static const AS_INTRO_MOVIE:int = 0;
public static var APPLICATION:Application;
public function Application(){
trace("APPLICATION : loaded");
Security.allowDomain("*");
Security.allowInsecureDomain("*");
stop();
}
public function loading_complete(){
load_complete = true;
}
public function get_button(_arg1:Number, _arg2:Number):int{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
_local3 = (250 - 20);
_local4 = (250 + 45);
_local5 = (250 + 90);
_local6 = (250 + 140);
_local7 = (250 + 175);
if ((((((((_arg1 > 200)) && ((_arg1 < 600)))) && ((_arg2 >= _local3)))) && ((_arg2 < _local4)))){
return (0);
};
if ((((((((_arg1 > 200)) && ((_arg1 < 600)))) && ((_arg2 >= _local4)))) && ((_arg2 < _local5)))){
return (1);
};
if ((((((((_arg1 > 200)) && ((_arg1 < 600)))) && ((_arg2 >= _local5)))) && ((_arg2 < _local6)))){
return (2);
};
if ((((((((_arg1 > 200)) && ((_arg1 < 600)))) && ((_arg2 >= _local6)))) && ((_arg2 < _local7)))){
return (3);
};
if ((((((_arg1 > 200)) && ((_arg1 < 600)))) && ((_arg2 >= _local7)))){
return (4);
};
if (_arg2 < 300){
return (0);
};
return (4);
}
public function update_mouse_highlight(){
selected_option = get_button(this.mouseX, this.mouseY);
if (title_movie.btn_play_game == null){
return;
};
title_movie.btn_play_game.stop();
title_movie.btn_high_scores.stop();
title_movie.btn_audio.stop();
title_movie.btn_credits.stop();
title_movie.btn_more_stick.stop();
title_movie.btn_play_game.alpha = 0.6;
title_movie.btn_high_scores.alpha = 0.6;
title_movie.btn_credits.alpha = 0.6;
title_movie.btn_audio.alpha = 0.6;
title_movie.btn_more_stick.alpha = 0.6;
if (selected_option == 0){
title_movie.btn_play_game.alpha = 1;
} else {
if (selected_option == 2){
title_movie.btn_high_scores.alpha = 1;
} else {
if (selected_option == 3){
title_movie.btn_audio.alpha = 1;
} else {
if (selected_option == 1){
title_movie.btn_more_stick.alpha = 1;
} else {
if (selected_option == 4){
title_movie.btn_credits.alpha = 1;
};
};
};
};
};
}
public function signal_game_over():void{
game_over = true;
last_player_score = game.score_manager.current_score;
}
public function keyup_listener(_arg1:KeyboardEvent):void{
keystate.keyup_listener(_arg1);
}
public function enter_state(_arg1:int){
trace("APPLICATION: switching to global state ", _arg1);
if ((((gameflow_state == AS_TITLE_SCREEN)) && ((_arg1 == AS_PLAYING_GAME)))){
removeEventListener(MouseEvent.CLICK, mouse_click_handler);
removeChild(title_movie);
title_movie = null;
audio.music_stop();
} else {
if (gameflow_state == AS_HIGH_SCORES){
hs_screen.shutdown();
removeChild(hs_screen);
hs_screen = null;
};
};
gameflow_state = _arg1;
if ((((((gameflow_state == AS_INTRO_MOVIE)) || ((gameflow_state == AS_TITLE_SCREEN)))) || ((gameflow_state == AS_HIGH_SCORES)))){
if (!title_movie){
title_movie = new TitleMovie();
addChild(title_movie);
title_movie.x = 350;
title_movie.y = 250;
addEventListener(MouseEvent.CLICK, mouse_click_handler);
};
if (gameflow_state == AS_TITLE_SCREEN){
title_movie.gotoAndPlay("start_loop");
} else {
if (gameflow_state == AS_HIGH_SCORES){
title_movie.gotoAndPlay("high_scores");
hs_screen = new HighScoreScreen();
addChild(hs_screen);
hs_screen.initialize();
};
};
} else {
if (gameflow_state == AS_PLAYING_GAME){
create_game();
} else {
if (gameflow_state == AS_HIGH_SCORES){
title_movie.gotoAndStop("high_scores");
} else {
if (gameflow_state == AS_CREDITS){
title_movie.gotoAndStop("credits");
};
};
};
};
}
public function load_progress(_arg1:ProgressEvent):void{
var _local2:Number;
_local2 = Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100));
trace("load pct: ", _local2);
}
public function create_game(){
trace("APPLICATION: create_game() called");
game = new Game();
addChild(game);
game.initialize();
game_over = false;
}
public function initialize(){
trace("APPLICATION: initialize()");
APPLICATION = this;
display_debug = false;
load_complete = true;
selected_option = -1;
gameflow_state = -1;
game_over = false;
keystate = null;
time_offset = -1;
frame_counter = 0;
last_player_score = -1;
trace("APPLICATION : starting game");
addEventListener(Event.ENTER_FRAME, update);
audio = new SoundManager();
score_api = new WebScoreAPI();
stage.scaleMode = StageScaleMode.NO_SCALE;
layer_objects = new Sprite();
addChild(layer_objects);
layer_characters = new Sprite();
addChild(layer_characters);
layer_interface = new Sprite();
addChild(layer_interface);
keystate = new ApplicationKeystate();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown_listener);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup_listener);
stage.showDefaultContextMenu = false;
loading_complete();
enter_state(AS_INTRO_MOVIE);
}
public function keydown_listener(_arg1:KeyboardEvent):void{
var _local2:MouseEvent;
var _local3:int;
keystate.keydown_listener(_arg1);
if (gameflow_state != AS_PLAYING_GAME){
if (_arg1.keyCode == Keyboard.ENTER){
_local2 = new MouseEvent(MouseEvent.CLICK);
mouse_click_handler(_local2);
};
};
if (gameflow_state == AS_PLAYING_GAME){
if (_arg1.keyCode == 68){
if (_arg1.ctrlKey == true){
};
};
if (display_debug){
if (game.gameflow_state == Game.GF_PLAYING){
if ((((_arg1.keyCode >= 48)) && ((_arg1.keyCode <= 57)))){
_local3 = ((_arg1.keyCode - 48) + 1);
game.desired_level = _local3;
game.switch_gameflow_state(Game.GF_FADING_OUT);
};
};
};
};
}
public function update(_arg1:Event):void{
var _local2:Number;
var _local3:Number;
var _local4:int;
var _local5:int;
if (load_complete != true){
return;
};
_local2 = getTimer();
_local3 = (_local2 - current_time);
if (time_offset == -1){
time_offset = _local2;
};
_local4 = (_local2 - time_offset);
_local5 = (_local4 / 33);
if (_local5 > frame_counter){
frame_counter++;
if ((_local5 - frame_counter) > 10){
frame_counter = _local5;
};
if (game_over){
game.shutdown();
removeChild(game);
game = null;
enter_state(AS_HIGH_SCORES);
game_over = false;
};
if ((((gameflow_state == AS_INTRO_MOVIE)) || ((gameflow_state == AS_TITLE_SCREEN)))){
update_mouse_highlight();
if (title_movie){
if (title_movie.version_text){
};
};
if (title_movie.currentFrame > 23){
if (audio.active_music == -1){
audio.start_music(0, 0.8);
};
};
};
if (gameflow_state == AS_INTRO_MOVIE){
if (title_movie.currentFrame >= 24){
gameflow_state = AS_TITLE_SCREEN;
};
};
if (hs_screen){
hs_screen.update();
};
if (game){
game.update();
};
audio.update();
};
}
public function mouse_click_handler(_arg1:MouseEvent):void{
var _local2:Boolean;
if (gameflow_state == AS_TITLE_SCREEN){
if (selected_option == 0){
enter_state(AS_PLAYING_GAME);
} else {
if (selected_option == 2){
enter_state(AS_HIGH_SCORES);
} else {
if (selected_option == 3){
_local2 = audio.sound_enabled;
audio.enable_sound(!(_local2));
if (_local2){
title_movie.btn_audio.sound_text.text = "SOUND : OFF";
} else {
title_movie.btn_audio.sound_text.text = "SOUND : ON";
};
} else {
if (selected_option == 1){
navigateToURL(new URLRequest("http://www.armorgames.com/tag/stick"), "_blank");
} else {
if (selected_option == 4){
enter_state(AS_CREDITS);
};
};
};
};
};
} else {
if (gameflow_state == AS_CREDITS){
enter_state(AS_TITLE_SCREEN);
} else {
if (gameflow_state == AS_HIGH_SCORES){
if (hs_screen.exit_allowed() == true){
enter_state(AS_TITLE_SCREEN);
};
};
};
};
}
public static function get_singleton():Application{
return (APPLICATION);
}
}
}//package
Section 23
//ApplicationKeystate (ApplicationKeystate)
package {
import flash.events.*;
import flash.ui.*;
public class ApplicationKeystate {
var buffered_presses:Object;
var key_array:Object;
public static const KEY_RIGHT:uint = Keyboard.RIGHT;
public static const KEY_PAUSE:uint = 80;
public static const KEY_KICK:uint = 68;
public static const KEY_LEFT:uint = Keyboard.LEFT;
public static const KEY_DOWN:uint = Keyboard.DOWN;
public static const KEY_BLOCK:uint = 65;
public static const KEY_PUNCH:uint = 83;
public static const KEY_JUMP:uint = Keyboard.SPACE;
public static const KEY_UP:uint = Keyboard.UP;
public function ApplicationKeystate(){
key_array = new Object();
buffered_presses = new Object();
}
public function keyup_listener(_arg1:KeyboardEvent):void{
delete key_array[_arg1.keyCode];
}
public function keydown_listener(_arg1:KeyboardEvent):void{
key_array[_arg1.keyCode] = true;
buffered_presses[_arg1.keyCode] = true;
if (_arg1.keyCode == KEY_PAUSE){
Application.get_singleton().game.signal_pause();
};
}
public function get_buffered_press(_arg1:uint):Boolean{
var _local2:Boolean;
_local2 = (_arg1 in buffered_presses);
if (_local2){
delete buffered_presses[_arg1];
};
return (_local2);
}
public function is_key_down(_arg1:uint):Boolean{
return (Boolean((_arg1 in key_array)));
}
}
}//package
Section 24
//Avatar (Avatar)
package {
public class Avatar extends BaseNPC {
var killed:Boolean;
public function Avatar(){
addFrameScript(4, frame5, 13, frame14, 26, frame27, 36, frame37);
faction_id = 0;
killed = false;
brain = null;
move_graph = new AvatarMoveGraph();
move_graph.avatar = this;
move_graph.initialize();
damage_data.maximum_hp = 250;
damage_data.current_hp = damage_data.maximum_hp;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(70, 70);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(1, 1);
stop();
}
function frame14(){
gotoAndPlay("run_start");
}
override public function receive_damage(_arg1:Boolean, _arg2:DamageEvent, _arg3:int):Boolean{
var _local4:int;
var _local5:Game;
var _local6:LevelManager;
var _local7:Vector2D;
var _local8:Number;
if (damage_data.current_hp > 0){
_local4 = check_damage_reduction(_arg2.hp_amount, _arg3);
if (_local4 == 0){
return (false);
};
if (_arg2.npc_ptr){
_arg2.npc_ptr.damaged_player = true;
};
damage_data.current_hp = (damage_data.current_hp - _local4);
_local5 = Application.get_singleton().game;
_local6 = Application.get_singleton().game.level_manager;
if (damage_data.current_hp <= 0){
damage_data.current_hp = 0;
_local7 = _local6.get_respawn_location(move_graph.physics.position.x, move_graph.physics.position.y);
_local5.signal_player_death(_local7.x, _local7.y);
killed = true;
} else {
Application.get_singleton().game.score_manager.send_event(ScoreManager.SCORE_EVENT_PLAYER_DAMAGE);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_HIT);
if (_arg2.knockback != 0){
if (_arg1){
_local8 = (move_graph.physics.position.x + _arg2.knockback);
} else {
_local8 = (move_graph.physics.position.x - _arg2.knockback);
};
if (Application.get_singleton().game.world_database.check_x_collision(_local8, move_graph.physics.position.y, move_graph.physics.bounding_width, (move_graph.physics.ground_point * 0.5)) == false){
move_graph.physics.position.x = _local8;
};
};
move_graph.switch_move(AvatarMoveGraph.AVATAR_DAMAGE_HEAD, !(_arg1), true);
};
_local5.game_interface.notify_health_change((damage_data.current_hp / damage_data.maximum_hp));
return (true);
};
return (false);
}
function frame5(){
}
function frame27(){
stop();
}
function frame37(){
stop();
}
}
}//package
Section 25
//AvatarBlock (AvatarBlock)
package {
public class AvatarBlock extends IMove {
public function AvatarBlock(){
starting_frame = 65;
current_frame = starting_frame;
frame_count = 0;
looping = true;
combo = new MoveCombo();
combo.name = "Block";
combo.complexity_id = 1;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_ALWAYS;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.BLOCK);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 26
//AvatarCrouchKick (AvatarCrouchKick)
package {
public class AvatarCrouchKick extends IMove {
public function AvatarCrouchKick(){
var _local1:DamageFrame;
super();
starting_frame = 122;
current_frame = starting_frame;
frame_count = 10;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 126;
_local1.amount = 70;
_local1.knockback = 10;
_local1.box_center.set(51, 22);
_local1.box_size.set(60, 30);
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Crouch kick";
combo.complexity_id = 4;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.DOWN);
combo.move_array.push(MoveCombo.KICK);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 27
//AvatarCrouchPunch (AvatarCrouchPunch)
package {
public class AvatarCrouchPunch extends IMove {
public function AvatarCrouchPunch(){
var _local1:DamageFrame;
super();
starting_frame = 200;
current_frame = starting_frame;
frame_count = 10;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 202;
_local1.amount = 50;
_local1.knockback = 10;
_local1.box_center.set(51, 22);
_local1.box_size.set(60, 30);
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Crouch punch";
combo.complexity_id = 3;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.DOWN);
combo.move_array.push(MoveCombo.PUNCH);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 28
//AvatarDamageHead (AvatarDamageHead)
package {
public class AvatarDamageHead extends IMove {
public function AvatarDamageHead(){
starting_frame = 135;
current_frame = starting_frame;
frame_count = 7;
looping = false;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (false);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 29
//AvatarDeath (AvatarDeath)
package {
public class AvatarDeath extends IMove {
public function AvatarDeath(){
starting_frame = 220;
current_frame = starting_frame;
frame_count = 24;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (false);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 30
//AvatarForwardKick (AvatarForwardKick)
package {
public class AvatarForwardKick extends IMove {
public function AvatarForwardKick(){
var _local1:DamageFrame;
super();
starting_frame = 80;
current_frame = starting_frame;
frame_count = 12;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 82;
_local1.amount = 50;
_local1.knockback = 40;
_local1.box_center.set(65, -28);
_local1.box_size.set(70, 50);
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Forward kick";
combo.complexity_id = 4;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.FORWARD);
combo.move_array.push(MoveCombo.KICK);
}
override public function update():void{
super.update();
if (animation_finished){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 150;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
}
}//package
Section 31
//AvatarJump (AvatarJump)
package {
public class AvatarJump extends IMove {
public function AvatarJump(){
starting_frame = 40;
current_frame = starting_frame;
frame_count = 15;
combo = new MoveCombo();
combo.name = "Jump";
combo.complexity_id = 2;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_NEVER;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.JUMP);
looping = false;
}
override public function update():void{
super.update();
if (animation_finished){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 250;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
npc.move_graph.physics.set_desired_y_velocity(-200);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_JUMP);
}
}
}//package
Section 32
//AvatarJumpKick (AvatarJumpKick)
package {
public class AvatarJumpKick extends IMove {
public function AvatarJumpKick(){
var _local1:DamageFrame;
super();
starting_frame = 145;
current_frame = starting_frame;
frame_count = 13;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 150;
_local1.amount = 100;
_local1.knockback = 40;
_local1.box_center.set(44, -35);
_local1.box_size.set(120, 40);
_local1.multiple_hit = true;
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Jump kick";
combo.complexity_id = 4;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.FORWARD_UP);
combo.move_array.push(MoveCombo.KICK);
}
override public function update():void{
super.update();
if (animation_finished){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 150;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
npc.move_graph.physics.set_desired_y_velocity(100);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
}
}//package
Section 33
//AvatarKick (AvatarKick)
package {
public class AvatarKick extends IMove {
public function AvatarKick(){
var _local1:DamageFrame;
super();
starting_frame = 70;
current_frame = starting_frame;
frame_count = 10;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 72;
_local1.amount = 30;
_local1.knockback = 10;
_local1.box_center.set(25, -28);
_local1.box_size.set(110, 60);
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Kick";
combo.complexity_id = 3;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.KICK);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
}
}//package
Section 34
//AvatarMove (AvatarMove)
package {
public class AvatarMove extends IMove {
public function AvatarMove(){
starting_frame = 5;
current_frame = starting_frame;
frame_count = 8;
looping = true;
combo = new MoveCombo();
combo.name = "Move";
combo.complexity_id = 1;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_ALWAYS;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.FORWARD);
}
override public function update():void{
if (current_frame == 8){
Application.get_singleton().audio.sfx_event(SoundManager.SM_FOOTSTEP);
};
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 180;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
}
}
}//package
Section 35
//AvatarMoveCrouch (AvatarMoveCrouch)
package {
public class AvatarMoveCrouch extends IMove {
public function AvatarMoveCrouch(){
starting_frame = 3;
current_frame = starting_frame;
frame_count = 0;
looping = true;
combo = new MoveCombo();
combo.name = "Crouch";
combo.complexity_id = 1;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_ALWAYS;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.DOWN);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 36
//AvatarMoveGraph (AvatarMoveGraph)
package {
public class AvatarMoveGraph extends NPCMoveGraph {
var avatar:Avatar;
var evaluator:MoveEvaluator;
var character_facing:Boolean;
public static const AVATAR_SUPER_PUNCH:int = 14;
public static const AVATAR_CROUCH_KICK:int = 13;
public static const AVATAR_FORWARD_KICK:int = 10;
public static const AVATAR_BLOCK:int = 8;
public static const AVATAR_PUNCH2:int = 5;
public static const AVATAR_STAND:int = 0;
public static const AVATAR_JUMP_KICK:int = 7;
public static const AVATAR_DAMAGE_HEAD:int = 12;
public static const AVATAR_JUMP:int = 6;
public static const AVATAR_CROUCH:int = 2;
public static const AVATAR_PUNCH:int = 4;
public static const AVATAR_TURN_AROUND:int = 3;
public static const AVATAR_KICK:int = 9;
public static const AVATAR_DEATH:int = 16;
public static const AVATAR_CROUCH_PUNCH:int = 15;
public static const AVATAR_MOVE:int = 1;
public static const AVATAR_SPIN_KICK:int = 11;
public function AvatarMoveGraph(){
physics = new BasePhysics();
current_move = AVATAR_STAND;
temp_v = new Vector2D(0, 0);
character_facing = true;
}
override public function update():void{
var _local1:Boolean;
var _local2:Boolean;
var _local3:Boolean;
var _local4:Boolean;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:IMove;
var _local9:Boolean;
if (avatar.killed){
if (current_move != AVATAR_DEATH){
internal_switch_move(AVATAR_DEATH, character_facing);
};
} else {
_local3 = !(move_list[current_move].face_right);
evaluator.update();
if (((!((desired_move == current_move))) && (!((desired_move == -1))))){
internal_switch_move(desired_move, desired_move_direction);
desired_move = -1;
} else {
_local4 = true;
if (move_list[current_move].combo == null){
if (move_list[current_move].animation_finished == false){
_local4 = false;
};
} else {
if ((((move_list[current_move].combo.override_flags == MoveCombo.OR_NEVER)) && ((move_list[current_move].animation_finished == false)))){
_local4 = false;
};
};
if (_local4){
_local5 = -1;
_local6 = 0;
if (move_list[current_move].animation_finished == false){
if (move_list[current_move].combo.override_flags == MoveCombo.OR_HIGHER_ID){
_local6 = move_list[current_move].combo.complexity_id;
};
};
_local7 = 0;
while (_local7 < move_list.length) {
_local8 = move_list[_local7];
if (evaluator.match_move(_local8, !(character_facing))){
_local9 = false;
if (_local8.combo.complexity_id > _local6){
_local9 = true;
};
if (_local8.chi_move){
_local9 = (Application.get_singleton().game.score_manager.chi_value == 1);
};
if (_local9){
_local5 = _local7;
_local6 = _local8.combo.complexity_id;
};
};
_local7++;
};
if (_local5 != -1){
if (_local5 != current_move){
if (move_list[_local5].combo){
if (move_list[_local5].combo.flip_direction_start){
character_facing = !(character_facing);
};
};
internal_switch_move(_local5, character_facing);
};
} else {
if (move_list[current_move].animation_finished){
if (move_list[current_move].combo){
if (move_list[current_move].combo.allow_hold == false){
internal_switch_move(AVATAR_STAND, character_facing);
};
};
};
};
};
};
};
move_list[current_move].update();
physics.update();
temp_v.x = 0;
temp_v.y = 0;
Application.get_singleton().game.camera.get_tile_position(physics.position.x, physics.position.y, 0, temp_v);
avatar.x = temp_v.x;
avatar.y = temp_v.y;
}
public function internal_switch_move(_arg1:int, _arg2:Boolean):void{
if (current_move != -1){
move_list[current_move].move_exit();
};
current_move = _arg1;
move_list[current_move].face_right = _arg2;
move_list[current_move].move_enter();
if (move_list[current_move].chi_move){
Application.get_singleton().game.score_manager.send_event(ScoreManager.SCORE_EVENT_CHI_MOVE);
};
}
override public function initialize(){
evaluator = new MoveEvaluator();
move_list = new Array();
move_list[AVATAR_STAND] = new AvatarMoveStand();
move_list[AVATAR_STAND].npc = avatar;
move_list[AVATAR_MOVE] = new AvatarMove();
move_list[AVATAR_MOVE].npc = avatar;
move_list[AVATAR_CROUCH] = new AvatarMoveCrouch();
move_list[AVATAR_CROUCH].npc = avatar;
move_list[AVATAR_CROUCH_KICK] = new AvatarCrouchKick();
move_list[AVATAR_CROUCH_KICK].npc = avatar;
move_list[AVATAR_TURN_AROUND] = new AvatarTurnAround();
move_list[AVATAR_TURN_AROUND].npc = avatar;
move_list[AVATAR_PUNCH] = new AvatarPunch();
move_list[AVATAR_PUNCH].npc = avatar;
move_list[AVATAR_PUNCH2] = new AvatarPunch2();
move_list[AVATAR_PUNCH2].npc = avatar;
move_list[AVATAR_JUMP] = new AvatarJump();
move_list[AVATAR_JUMP].npc = avatar;
move_list[AVATAR_JUMP_KICK] = new AvatarJumpKick();
move_list[AVATAR_JUMP_KICK].npc = avatar;
move_list[AVATAR_BLOCK] = new AvatarBlock();
move_list[AVATAR_BLOCK].npc = avatar;
move_list[AVATAR_KICK] = new AvatarKick();
move_list[AVATAR_KICK].npc = avatar;
move_list[AVATAR_FORWARD_KICK] = new AvatarForwardKick();
move_list[AVATAR_FORWARD_KICK].npc = avatar;
move_list[AVATAR_SPIN_KICK] = new AvatarSpinKick();
move_list[AVATAR_SPIN_KICK].npc = avatar;
move_list[AVATAR_DAMAGE_HEAD] = new AvatarDamageHead();
move_list[AVATAR_DAMAGE_HEAD].npc = avatar;
move_list[AVATAR_SUPER_PUNCH] = new AvatarSuperPunch();
move_list[AVATAR_SUPER_PUNCH].npc = avatar;
move_list[AVATAR_CROUCH_PUNCH] = new AvatarCrouchPunch();
move_list[AVATAR_CROUCH_PUNCH].npc = avatar;
move_list[AVATAR_DEATH] = new AvatarDeath();
move_list[AVATAR_DEATH].npc = avatar;
transition_list = new AvatarTransitionList();
transition_list.create();
}
override public function set_position(_arg1:Number, _arg2:Number):void{
physics.set_position(_arg1, _arg2);
}
}
}//package
Section 37
//AvatarMoveStand (AvatarMoveStand)
package {
public class AvatarMoveStand extends IMove {
public function AvatarMoveStand(){
starting_frame = 0;
current_frame = starting_frame;
frame_count = 0;
looping = true;
combo = new MoveCombo();
combo.name = "Stand";
combo.complexity_id = 1;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_ALWAYS;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.NO_MOVE);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 38
//AvatarPunch (AvatarPunch)
package {
public class AvatarPunch extends IMove {
public function AvatarPunch(){
var _local1:DamageFrame;
super();
starting_frame = 20;
current_frame = starting_frame;
frame_count = 10;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 22;
_local1.amount = 25;
_local1.knockback = 10;
_local1.box_center = new Vector2D(40, -35);
_local1.box_size = new Vector2D(20, 20);
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Punch";
combo.complexity_id = 2;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.PUNCH);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
}
}//package
Section 39
//AvatarPunch2 (AvatarPunch2)
package {
public class AvatarPunch2 extends IMove {
public function AvatarPunch2(){
var _local1:DamageFrame;
super();
starting_frame = 30;
current_frame = starting_frame;
frame_count = 7;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 32;
_local1.amount = 25;
_local1.box_center = new Vector2D(40, -35);
_local1.box_size = new Vector2D(20, 20);
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
}
}
}//package
Section 40
//AvatarSpinKick (AvatarSpinKick)
package {
public class AvatarSpinKick extends IMove {
public function AvatarSpinKick(){
var _local1:DamageFrame;
super();
starting_frame = 95;
current_frame = starting_frame;
frame_count = 28;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 102;
_local1.amount = 100;
_local1.knockback = 30;
_local1.box_center = new Vector2D(57, -45);
_local1.box_size = new Vector2D(70, 50);
damage_frame_list.push(_local1);
_local1 = new DamageFrame();
_local1.index = 111;
_local1.amount = 150;
_local1.knockback = 50;
_local1.box_center = new Vector2D(57, -34);
_local1.box_size = new Vector2D(70, 50);
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Spin kick";
combo.complexity_id = 10;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_HIGHER_ID;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.FORWARD);
combo.move_array.push(MoveCombo.KICK);
combo.move_array.push(MoveCombo.FORWARD);
combo.move_array.push(MoveCombo.KICK_PUNCH);
}
override public function update():void{
var _local1:Number;
super.update();
if (current_frame == 108){
_local1 = 205;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
};
if (current_frame > 115){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 41
//AvatarSuperPunch (AvatarSuperPunch)
package {
public class AvatarSuperPunch extends IMove {
public function AvatarSuperPunch(){
var _local1:DamageFrame;
super();
starting_frame = 165;
current_frame = starting_frame;
frame_count = 20;
chi_move = true;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 167;
_local1.amount = 100;
_local1.knockback = 0;
_local1.box_center = new Vector2D(20, -45);
_local1.box_size = new Vector2D(90, 50);
damage_frame_list.push(_local1);
_local1 = new DamageFrame();
_local1.index = 171;
_local1.amount = 100;
_local1.knockback = 0;
_local1.box_center = new Vector2D(20, -34);
_local1.box_size = new Vector2D(90, 50);
damage_frame_list.push(_local1);
_local1 = new DamageFrame();
_local1.index = 176;
_local1.amount = 400;
_local1.knockback = 30;
_local1.box_center = new Vector2D(20, -34);
_local1.box_size = new Vector2D(50, 50);
_local1.multiple_hit = true;
damage_frame_list.push(_local1);
combo = new MoveCombo();
combo.name = "Super punch";
combo.complexity_id = 10;
combo.flip_direction_start = false;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_NEVER;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.KICK_PUNCH_BLOCK);
}
override public function update():void{
super.update();
if ((((((current_frame == 165)) || ((current_frame == 169)))) || ((current_frame == 174)))){
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_SWING);
};
if (current_frame > 182){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 75;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
Application.get_singleton().audio.sfx_event(SoundManager.SM_CHI_MOVE);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 42
//AvatarTransitionList (AvatarTransitionList)
package {
public class AvatarTransitionList extends BaseTransitionList {
override public function create():void{
}
}
}//package
Section 43
//AvatarTurnAround (AvatarTurnAround)
package {
public class AvatarTurnAround extends IMove {
public function AvatarTurnAround(){
starting_frame = 5;
current_frame = starting_frame;
frame_count = 7;
looping = true;
combo = new MoveCombo();
combo.name = "Turn around";
combo.complexity_id = 2;
combo.flip_direction_start = true;
combo.flip_direction_end = false;
combo.required_ground_state = GS_GROUND;
combo.override_flags = MoveCombo.OR_ALWAYS;
combo.move_array = new Array();
combo.move_array.push(MoveCombo.BACK);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 200;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
}
}
}//package
Section 44
//BaseAI (BaseAI)
package {
public class BaseAI {
var hold_timer:int;
var death_move_list:Array;
var jump_move:int;
var current_state:int;
var damage_timer:int;
var hold_move:Boolean;
var move_spacing:int;
var always_engage:Boolean;
var move_spacing_variance:int;
var attack_move_list:Array;
var idle_move_list:Array;
var idle_timer:int;
var torso_damage_move:int;
var head_damage_move:int;
var damage_head:Boolean;
var traversal_move:int;
var engagement_distance:Number;
var parent:BaseBrain;
var recently_damaged:Boolean;
public static const FIGHTING_REPOSITION:int = 3;
public static const WAITING_TO_ENGAGE:int = 0;
public static const MOVING_TO_WAIT_POINT:int = 1;
public static const FIGHTING_PLAYER:int = 2;
public function BaseAI(_arg1:BaseBrain){
parent = _arg1;
always_engage = false;
recently_damaged = false;
damage_timer = 0;
damage_head = false;
idle_move_list = new Array();
attack_move_list = new Array();
death_move_list = new Array();
hold_timer = 0;
hold_move = false;
idle_timer = 0;
current_state = WAITING_TO_ENGAGE;
}
public function update():void{
var _local1:BaseNPC;
var _local2:NPCMoveGraph;
var _local3:int;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:Boolean;
var _local8:Vector2D;
var _local9:Boolean;
var _local10:*;
var _local11:Boolean;
var _local12:Boolean;
var _local13:int;
var _local14:int;
var _local15:AIMoveEntry;
var _local16:Boolean;
var _local17:Number;
_local1 = parent.parent;
_local2 = _local1.move_graph;
if (recently_damaged){
damage_timer--;
if (damage_timer <= 0){
damage_timer = 0;
recently_damaged = false;
};
};
if (is_jumping() == true){
return;
};
if (_local1.move_graph.physics.ground_contact == false){
return;
};
if (_local1.damage_data.current_hp == 0){
return;
};
if (idle_timer > 0){
idle_timer--;
};
_local3 = _local2.current_move;
if ((((_local3 == head_damage_move)) || ((_local3 == torso_damage_move)))){
if (_local2.current_move_finished() == false){
hold_timer = 0;
hold_move = false;
return;
};
};
_local4 = _local2.physics.position.x;
_local5 = _local2.physics.position.y;
_local6 = parent.move_target;
_local7 = (_local4 < _local6.x);
_local8 = Application.get_singleton().game.player.move_graph.physics.position;
_local9 = true;
_local10 = Math.abs((_local8.x - _local4));
if (Application.get_singleton().game.pathfind.has_data()){
if (Math.abs((_local8.y - _local5)) > 20){
_local9 = false;
};
};
_local11 = !((_local2.move_list[_local3].face_right == _local7));
if (_local1.engage_status == BaseNPC.ENGAGE_PLAYER){
if ((((_local10 < engagement_distance)) && (_local9))){
_local12 = false;
if (hold_move){
hold_timer--;
if (hold_timer == 0){
hold_move = false;
_local12 = true;
};
} else {
_local12 = _local2.current_move_finished();
};
if (current_state != FIGHTING_PLAYER){
current_state = FIGHTING_PLAYER;
_local12 = true;
};
if (_local12 == true){
_local13 = 0;
if (recently_damaged){
if (damage_head){
_local13 = 1;
} else {
_local13 = 2;
};
};
_local14 = select_move(attack_move_list, _local13);
_local15 = attack_move_list[_local14];
_local16 = !(_local15.hold_move);
if (!_local16){
hold_move = true;
hold_timer = _local15.hold_time;
};
_local2.switch_move(_local15.id, _local7, _local16);
};
} else {
if ((((((_local2.current_move_finished() == true)) || ((hold_move == true)))) || (_local11))){
hold_move = false;
current_state = FIGHTING_REPOSITION;
_local2.switch_move(traversal_move, _local7, _local11);
};
};
} else {
_local17 = Math.sqrt((((_local6.x - _local4) * (_local6.x - _local4)) + ((_local6.y - _local5) * (_local6.y - _local5))));
if (_local10 < _local1.wait_distance){
current_state = WAITING_TO_ENGAGE;
if (idle_timer == 0){
_local14 = select_move(idle_move_list, 0);
_local2.switch_move(idle_move_list[_local14].id, _local7, _local11);
idle_timer = ((Math.random() * 90) + 30);
};
} else {
current_state = MOVING_TO_WAIT_POINT;
_local2.switch_move(traversal_move, _local7, _local11);
};
};
}
public function is_jumping():Boolean{
var _local1:BaseNPC;
var _local2:NPCMoveGraph;
_local1 = parent.parent;
_local2 = _local1.move_graph;
return ((((_local2.current_move == jump_move)) && ((_local2.current_move_finished() == false))));
}
public function force_jump(_arg1:Boolean):void{
var _local2:BaseNPC;
var _local3:NPCMoveGraph;
_local2 = parent.parent;
_local3 = _local2.move_graph;
_local3.switch_move(jump_move, _arg1, true);
}
public function notify_damage(_arg1:int, _arg2:Boolean){
var _local3:BaseNPC;
var _local4:NPCMoveGraph;
var _local5:int;
recently_damaged = true;
damage_timer = 50;
_local3 = parent.parent;
_local4 = _local3.move_graph;
if (_local3.damage_data.current_hp > 0){
if (_arg1 == DamageData.DAMAGE_AREA_HEAD){
_local4.switch_move(head_damage_move, _arg2, true);
damage_head = true;
} else {
_local4.switch_move(torso_damage_move, _arg2, true);
damage_head = false;
};
} else {
_local5 = select_move(death_move_list, (_arg1 + 1));
_local4.switch_move(death_move_list[_local5].id, _arg2, true);
};
}
function select_move(_arg1:Array, _arg2:int):int{
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:int;
_local3 = _arg1.length;
_local4 = 0;
_local5 = Math.random();
_local6 = 0;
while (_local6 < _local3) {
if (_arg2 == 0){
_local4 = (_local4 + _arg1[_local6].normal_probability);
} else {
if (_arg2 == 1){
_local4 = (_local4 + _arg1[_local6].head_damage_probability);
} else {
_local4 = (_local4 + _arg1[_local6].torso_damage_probability);
};
};
if (_local4 > _local5){
return (_local6);
};
_local6++;
};
return ((_local3 - 1));
}
}
}//package
Section 45
//BaseBrain (BaseBrain)
package {
public class BaseBrain {
var movement_state:int;
var update_timer:int;
var target_zone:int;
var ai:BaseAI;
var parent:BaseNPC;
var current_zone:int;
var jump_timer:int;
var jump_dir:Boolean;
var move_target:Vector2D;
public static const MS_JUMP_CONNECTION:int = 2;
public static const MS_PLAYER:int = 0;
public static const MS_NORMAL_CONNECTION:int = 1;
public function BaseBrain(){
movement_state = MS_PLAYER;
update_timer = 0;
jump_timer = 0;
current_zone = -1;
target_zone = -1;
move_target = new Vector2D(0, 0);
}
public function update():void{
update_child();
update_pathfind();
ai.update();
}
function update_pathfind():void{
var _local1:Pathfind;
var _local2:BaseNPC;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:*;
var _local9:int;
var _local10:PathfindZone;
var _local11:Boolean;
var _local12:int;
var _local13:PathfindConnection;
var _local14:*;
if (parent.damage_data.current_hp == 0){
return;
};
_local1 = Application.get_singleton().game.pathfind;
_local2 = Application.get_singleton().game.player;
if (ai.is_jumping() == true){
return;
};
_local3 = parent.move_graph.physics.position.x;
_local4 = parent.move_graph.physics.position.y;
_local5 = _local2.move_graph.physics.position.x;
_local6 = _local2.move_graph.physics.position.y;
current_zone = _local1.get_contained_zone(_local3, _local4);
_local7 = _local1.get_contained_zone(_local5, _local6);
_local8 = _local1.get_next_zone(current_zone, _local7);
if (((((!((current_zone == -1))) && (!((_local7 == -1))))) && (!((current_zone == _local7))))){
_local9 = _local1.get_next_zone(current_zone, _local7);
if (_local9 != target_zone){
trace("pathfinding - player: ", _local7, " npc: ", current_zone);
_local10 = _local1.zone_list[current_zone];
_local11 = false;
_local12 = 0;
while (_local12 < _local10.connection_list.length) {
_local13 = _local10.connection_list[_local12];
if (_local13.zone_connection == _local9){
if (_local13.left_side){
move_target.x = _local10.x_left;
} else {
move_target.x = _local10.x_right;
};
move_target.y = _local10.height;
_local11 = true;
if (_local13.jump_connection){
movement_state = MS_JUMP_CONNECTION;
jump_dir = !(_local13.left_side);
} else {
movement_state = MS_NORMAL_CONNECTION;
};
};
_local12++;
};
target_zone = _local9;
if (!_local11){
trace(((("PATHFIND: error! couldn't find connection from zone " + current_zone) + " to zone ") + _local9));
};
};
if (movement_state == MS_JUMP_CONNECTION){
_local14 = Math.abs((_local3 - move_target.x));
if (_local14 < 30){
ai.force_jump(jump_dir);
};
};
} else {
target_zone = -1;
move_target.x = _local5;
move_target.y = _local6;
};
}
public function notify_damage(_arg1:int, _arg2:Boolean){
ai.notify_damage(_arg1, _arg2);
}
public function update_child():void{
}
public function set_parent(_arg1:BaseNPC){
parent = _arg1;
}
}
}//package
Section 46
//BaseNPC (BaseNPC)
package {
import flash.display.*;
public class BaseNPC extends MovieClip {
var global_damage_multiplier:Number;
var npc_type:int;
public var boss_monster:Boolean;
var faction_id:int;
public var wait_distance:Number;
public var engage_status:int;
var move_graph;
public var damaged_player:Boolean;
var damage_data;
public var health_bar:EnemyHealthBar;
var brain;
public static const NOT_ASSIGNED:int = 3;
public static const WAIT_FAR:int = 2;
public static const WAIT_CLOSE:int = 1;
public static const ENGAGE_PLAYER:int = 0;
public function BaseNPC(){
move_graph = NPCMoveGraph;
damage_data = DamageData;
brain = BaseBrain;
super();
boss_monster = false;
global_damage_multiplier = 1;
damaged_player = false;
damage_data = new DamageData();
engage_status = NOT_ASSIGNED;
wait_distance = ((Math.random() * 200) + 100);
this.name = "character";
stop();
on_create();
}
public function check_damage_reduction(_arg1:int, _arg2:int):int{
if (move_graph.current_move != -1){
return (move_graph.move_list[move_graph.current_move].modulate_damage(_arg1, _arg2));
};
return (_arg1);
}
public function create(){
if (boss_monster){
health_bar = new EnemyHealthBar(this);
};
}
public function on_create(){
}
public function set_position(_arg1:Number, _arg2:Number):void{
move_graph.set_position(_arg1, _arg2);
this.x = _arg1;
this.y = _arg2;
}
public function receive_damage(_arg1:Boolean, _arg2:DamageEvent, _arg3:int):Boolean{
var _local4:int;
if (damage_data.current_hp > 0){
_local4 = _arg2.hp_amount;
if (_arg2.unblockable == false){
_local4 = check_damage_reduction(_arg2.hp_amount, _arg3);
};
if (_local4 == 0){
return (false);
};
Application.get_singleton().audio.sfx_event(SoundManager.SM_NPC_HIT);
damage_data.current_hp = (damage_data.current_hp - _local4);
if (health_bar){
health_bar.notify_health_change((damage_data.current_hp / damage_data.maximum_hp));
};
if (damage_data.current_hp <= 0){
if (health_bar){
health_bar.destroy_bar();
health_bar = null;
};
run_death_sfx();
if (boss_monster){
Application.get_singleton().game.score_manager.send_event(ScoreManager.SCORE_EVENT_BOSS_KILL, this);
} else {
Application.get_singleton().game.score_manager.send_event(ScoreManager.SCORE_EVENT_BASIC_KILL, this);
};
Application.get_singleton().game.level_manager.get_current_level().death_notification(npc_type);
damage_data.current_hp = 0;
} else {
Application.get_singleton().game.score_manager.send_event(ScoreManager.SCORE_EVENT_BASIC_HIT, this);
};
if (_arg1){
move_graph.physics.position.x = (move_graph.physics.position.x + _arg2.knockback);
} else {
move_graph.physics.position.x = (move_graph.physics.position.x - _arg2.knockback);
};
brain.notify_damage(_arg3, !(_arg1));
return (true);
};
return (false);
}
public function run_death_sfx():void{
Application.get_singleton().audio.sfx_event(SoundManager.SM_NPC_DEATH);
}
public function update():void{
move_graph.update();
if (brain){
brain.update();
};
}
}
}//package
Section 47
//BasePhysics (BasePhysics)
package {
public class BasePhysics {
var acceleration:Vector2D;
var ground_contact;
var position:Vector2D;
var bounding_width:Number;
var gravity:Number;
var ground_point:Number;
var velocity:Vector2D;
public function BasePhysics(){
ground_contact = Boolean;
super();
position = new Vector2D(0, -200);
velocity = new Vector2D(0, 0);
acceleration = new Vector2D(0, 0);
gravity = 800;
ground_contact = false;
bounding_width = 25;
ground_point = 45;
}
public function update():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
ground_contact = false;
_local1 = (1 / 30);
_local2 = (position.x + (velocity.x * _local1));
_local3 = (position.y + (velocity.y * _local1));
if (Math.abs(velocity.x) > 0){
if (Application.get_singleton().game.world_database.check_x_collision(_local2, _local3, bounding_width, (ground_point * 0.5))){
_local2 = position.x;
velocity.x = 0;
};
};
if (velocity.y > 0){
_local4 = (_local3 + ground_point);
_local5 = Application.get_singleton().game.world_database.get_ground_y(_local2, _local3);
if (_local4 >= _local5){
_local3 = (_local5 - ground_point);
velocity.y = 0;
ground_contact = true;
};
};
position.x = _local2;
position.y = _local3;
velocity.y = (velocity.y + (gravity * _local1));
}
public function set_position(_arg1:Number, _arg2:Number):void{
position.x = _arg1;
position.y = _arg2;
velocity.x = 0;
velocity.y = 0;
acceleration.x = 0;
acceleration.y = 0;
}
public function set_desired_y_velocity(_arg1:Number):void{
velocity.y = _arg1;
}
public function set_desired_x_velocity(_arg1:Number):void{
velocity.x = _arg1;
}
}
}//package
Section 48
//BaseTile (BaseTile)
package {
import flash.display.*;
public class BaseTile {
public var depth:Number;
var clip_ptr:MovieClip;
var collision_type:int;
var original_x:Number;
var original_y:Number;
var obb_width:Number;
var obb_height:Number;
public var top_adjust:Number;
public static const CTYPE_GROUND:int = 1;
public static const CTYPE_NONE:int = 2;
public static const CTYPE_WALL:int = 0;
public function BaseTile(){
depth = 0;
collision_type = CTYPE_NONE;
top_adjust = 0;
}
public function update():void{
}
public function initialize(_arg1:MovieClip):void{
clip_ptr = _arg1;
obb_width = clip_ptr.width;
obb_height = clip_ptr.height;
original_x = clip_ptr.x;
original_y = clip_ptr.y;
}
}
}//package
Section 49
//BaseTransitionList (BaseTransitionList)
package {
public class BaseTransitionList {
var database:Array;
public function BaseTransitionList(){
database = new Array();
}
public function create():void{
}
}
}//package
Section 50
//BlurPoint (BlurPoint)
package {
import flash.display.*;
import flash.filters.*;
public class BlurPoint extends MovieClip {
public var px;
public var py:Number;
var depth_dir:Number;
var alpha_speed:Number;
var bf:BlurFilter;
var timer:int;
var update_counter:int;
public var vx;
public var vy:Number;
var depth:Number;
var alpha_val:Number;
var depth_speed:Number;
public function BlurPoint(){
alpha_val = 0;
alpha_speed = (0.1 + (Math.random() * 0.3));
depth_speed = (0.05 + (Math.random() * 0.3));
timer = 0;
update_counter = (1 + (Math.random() * 5));
bf = new BlurFilter();
bf.quality = BitmapFilterQuality.MEDIUM;
this.filters = new Array(bf);
this.alpha = alpha_val;
vx = ((Math.random() * 50) - 25);
vy = ((Math.random() * 50) - 25);
depth = Math.random();
if (depth > 0.5){
depth_dir = -1;
} else {
depth_dir = 1;
};
}
public function update(){
var _local1:Number;
var _local2:Number;
_local1 = (1 / 30);
alpha_val = (alpha_val + (alpha_speed * _local1));
this.alpha = alpha_val;
px = (px + (vx * _local1));
py = (py + (vy * _local1));
if (px < -380){
px = 380;
};
if (py < -280){
py = 280;
};
if (px > 380){
px = -380;
};
if (py > 280){
py = -280;
};
this.x = px;
this.y = py;
this.scaleX = (0.8 + (depth * 0.4));
this.scaleY = (0.8 + (depth * 0.4));
depth = (depth + ((depth_dir * _local1) * depth_speed));
if ((((depth < 0)) || ((depth > 1)))){
depth_dir = -(depth_dir);
};
timer--;
if (timer < 0){
timer = update_counter;
_local2 = (depth * 30);
bf.blurX = _local2;
bf.blurY = _local2;
this.filters = new Array(bf);
};
}
}
}//package
Section 51
//BossA (BossA)
package {
public class BossA extends BaseNPC {
override public function on_create(){
faction_id = 1;
boss_monster = true;
move_graph = new BossAMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new BossABrain();
brain.set_parent(this);
damage_data.maximum_hp = 800;
damage_data.current_hp = 800;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
}
override public function run_death_sfx():void{
Application.get_singleton().audio.sfx_event(SoundManager.SM_BOSS1_DEATH);
}
}
}//package
Section 52
//BossA_AI (BossA_AI)
package {
public class BossA_AI extends BaseAI {
public function BossA_AI(_arg1:BaseBrain){
super(_arg1);
traversal_move = BossAMoveGraph.BOSS_A_WALK;
jump_move = -1;
idle_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_STAND, 1, 1, 1, false));
attack_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_HIT_HIGH, 0.35, 0.2, 0.2, false));
attack_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_HIT_LOW, 0.3, 0.2, 0.2, false));
attack_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_TRIPLE_HIT, 0.05, 0.1, 0.1, false));
attack_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_JUMP_BACK, 0.05, 0.15, 0.15, false));
attack_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_BLOCK, 0.15, 0.35, 0.35, true));
death_move_list.push(new AIMoveEntry(BossAMoveGraph.BOSS_A_DEATH, 1, 1, 1, true));
head_damage_move = BossAMoveGraph.BOSS_A_DAMAGE_TORSO;
torso_damage_move = BossAMoveGraph.BOSS_A_DAMAGE_TORSO;
engagement_distance = 120;
}
}
}//package
Section 53
//BossABlock (BossABlock)
package {
public class BossABlock extends IMove {
public function BossABlock(){
starting_frame = 20;
current_frame = starting_frame;
frame_count = 5;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 54
//BossABrain (BossABrain)
package {
public class BossABrain extends BaseBrain {
public function BossABrain(){
ai = new BossA_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 55
//BossADamageTorso (BossADamageTorso)
package {
public class BossADamageTorso extends IMove {
public function BossADamageTorso(){
starting_frame = 160;
current_frame = starting_frame;
frame_count = 8;
looping = false;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 56
//BossADeath (BossADeath)
package {
public class BossADeath extends IMove {
public function BossADeath(){
starting_frame = 200;
current_frame = starting_frame;
frame_count = 30;
looping = false;
}
override public function update():void{
super.update();
if (current_frame >= 215){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
if (!face_right){
npc.move_graph.physics.set_desired_x_velocity(75);
} else {
npc.move_graph.physics.set_desired_x_velocity(-75);
};
}
}
}//package
Section 57
//BossAHitHigh (BossAHitHigh)
package {
public class BossAHitHigh extends IMove {
public function BossAHitHigh(){
var _local1:DamageFrame;
super();
starting_frame = 110;
current_frame = starting_frame;
frame_count = 20;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 115;
_local1.amount = 30;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(60, 30);
_local1.knockback = 30;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 58
//BossAHitLow (BossAHitLow)
package {
public class BossAHitLow extends IMove {
public function BossAHitLow(){
var _local1:DamageFrame;
super();
starting_frame = 130;
current_frame = starting_frame;
frame_count = 29;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 135;
_local1.amount = 30;
_local1.box_center = new Vector2D(85, 0);
_local1.box_size = new Vector2D(50, 20);
_local1.knockback = 20;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 59
//BossAJumpBack (BossAJumpBack)
package {
public class BossAJumpBack extends IMove {
public function BossAJumpBack(){
starting_frame = 80;
current_frame = starting_frame;
frame_count = 30;
looping = false;
}
override public function update():void{
var _local1:Number;
super.update();
_local1 = -200;
if (!face_right){
_local1 = -(_local1);
};
if (current_frame == 85){
npc.move_graph.physics.set_desired_x_velocity(_local1);
npc.move_graph.physics.set_desired_y_velocity(-100);
};
if (current_frame == 96){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 60
//BossAMoveGraph (BossAMoveGraph)
package {
public class BossAMoveGraph extends NPCMoveGraph {
public static const BOSS_A_STAND:int = 0;
public static const BOSS_A_JUMP_BACK:int = 6;
public static const BOSS_A_TRIPLE_HIT:int = 4;
public static const BOSS_A_DEATH:int = 8;
public static const BOSS_A_DAMAGE_TORSO:int = 7;
public static const BOSS_A_HIT_LOW:int = 3;
public static const BOSS_A_WALK:int = 1;
public static const BOSS_A_BLOCK:int = 5;
public static const BOSS_A_HIT_HIGH:int = 2;
public function BossAMoveGraph(){
current_move = BOSS_A_STAND;
}
override public function initialize(){
var _local1:int;
move_list = new Array();
move_list[BOSS_A_STAND] = new BossAStand();
move_list[BOSS_A_WALK] = new BossAWalk();
move_list[BOSS_A_HIT_HIGH] = new BossAHitHigh();
move_list[BOSS_A_HIT_LOW] = new BossAHitLow();
move_list[BOSS_A_TRIPLE_HIT] = new BossATripleHit();
move_list[BOSS_A_BLOCK] = new BossABlock();
move_list[BOSS_A_JUMP_BACK] = new BossAJumpBack();
move_list[BOSS_A_DAMAGE_TORSO] = new BossADamageTorso();
move_list[BOSS_A_DEATH] = new BossADeath();
_local1 = 0;
while (_local1 < move_list.length) {
move_list[_local1].npc = npc;
_local1++;
};
}
}
}//package
Section 61
//BossAStand (BossAStand)
package {
public class BossAStand extends IMove {
public function BossAStand(){
starting_frame = 0;
current_frame = starting_frame;
frame_count = 0;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 62
//BossATripleHit (BossATripleHit)
package {
public class BossATripleHit extends IMove {
public function BossATripleHit(){
var _local1:DamageFrame;
super();
starting_frame = 30;
current_frame = starting_frame;
frame_count = 50;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 54;
_local1.amount = 40;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(90, 30);
_local1.knockback = 5;
damage_frame_list.push(_local1);
_local1 = new DamageFrame();
_local1.index = 60;
_local1.amount = 40;
_local1.box_center = new Vector2D(95, 0);
_local1.box_size = new Vector2D(90, 30);
_local1.knockback = 5;
damage_frame_list.push(_local1);
_local1 = new DamageFrame();
_local1.index = 67;
_local1.amount = 40;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(90, 30);
_local1.knockback = 40;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 63
//BossAWalk (BossAWalk)
package {
public class BossAWalk extends IMove {
public function BossAWalk(){
starting_frame = 180;
current_frame = starting_frame;
frame_count = 16;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 70;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
}
}
}//package
Section 64
//BossB (BossB)
package {
public class BossB extends BaseNPC {
override public function on_create(){
faction_id = 1;
boss_monster = true;
move_graph = new BossBMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new BossBBrain();
brain.set_parent(this);
damage_data.maximum_hp = 1200;
damage_data.current_hp = 1200;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
move_graph.physics.ground_point = 55;
}
override public function run_death_sfx():void{
Application.get_singleton().audio.sfx_event(SoundManager.SM_BOSS1_DEATH);
}
}
}//package
Section 65
//BossB_AI (BossB_AI)
package {
public class BossB_AI extends BaseAI {
public function BossB_AI(_arg1:BaseBrain){
super(_arg1);
traversal_move = BossBMoveGraph.BOSS_B_RUN;
jump_move = -1;
idle_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_STAND, 1, 1, 1, false));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_PUNCH, 0.2, 0.2, 0.2, false));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_PUNCH2, 0.15, 0.1, 0.2, false));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_KICK, 0.1, 0.2, 0.1, false));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_JUMP_KICK, 0.2, 0.1, 0.1, false));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_CARTWHEEL, 0.15, 0.1, 0.2, false));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_BLOCK, 0.1, 0.2, 0, true));
attack_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_CROUCH_BLOCK, 0.1, 0.2, 0.3, true));
death_move_list.push(new AIMoveEntry(BossBMoveGraph.BOSS_B_DEATH, 1, 1, 1, true));
head_damage_move = BossBMoveGraph.BOSS_B_DAMAGE;
torso_damage_move = BossBMoveGraph.BOSS_B_DAMAGE;
engagement_distance = 80;
}
}
}//package
Section 66
//BossBBlock (BossBBlock)
package {
public class BossBBlock extends IMove {
public function BossBBlock(){
starting_frame = 100;
current_frame = starting_frame;
frame_count = 1;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 67
//BossBBrain (BossBBrain)
package {
public class BossBBrain extends BaseBrain {
public function BossBBrain(){
ai = new BossB_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 68
//BossBCartwheel (BossBCartwheel)
package {
public class BossBCartwheel extends IMove {
public function BossBCartwheel(){
starting_frame = 50;
current_frame = starting_frame;
frame_count = 30;
looping = false;
}
override public function update():void{
var _local1:Number;
super.update();
_local1 = 400;
if (!face_right){
_local1 = -(_local1);
};
if (current_frame == 51){
npc.move_graph.physics.set_desired_x_velocity(_local1);
};
if (current_frame == 79){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (0);
}
}
}//package
Section 69
//BossBCrouchBlock (BossBCrouchBlock)
package {
public class BossBCrouchBlock extends IMove {
public function BossBCrouchBlock(){
starting_frame = 105;
current_frame = starting_frame;
frame_count = 2;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_TORSO){
return (0);
};
return (_arg1);
}
}
}//package
Section 70
//BossBDamage (BossBDamage)
package {
public class BossBDamage extends IMove {
public function BossBDamage(){
starting_frame = 160;
current_frame = starting_frame;
frame_count = 6;
looping = false;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 71
//BossBDeath (BossBDeath)
package {
public class BossBDeath extends IMove {
public function BossBDeath(){
starting_frame = 175;
current_frame = starting_frame;
frame_count = 26;
looping = false;
}
override public function update():void{
super.update();
if (current_frame >= 200){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
if (!face_right){
npc.move_graph.physics.set_desired_x_velocity(75);
} else {
npc.move_graph.physics.set_desired_x_velocity(-75);
};
}
}
}//package
Section 72
//BossBJumpKick (BossBJumpKick)
package {
public class BossBJumpKick extends IMove {
public function BossBJumpKick(){
var _local1:DamageFrame;
super();
starting_frame = 80;
current_frame = starting_frame;
frame_count = 18;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 86;
_local1.amount = 30;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(120, 30);
_local1.knockback = 30;
_local1.allowed_areas = 0;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 73
//BossBKick (BossBKick)
package {
public class BossBKick extends IMove {
public function BossBKick(){
var _local1:DamageFrame;
super();
starting_frame = 30;
current_frame = starting_frame;
frame_count = 12;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 32;
_local1.amount = 20;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(120, 100);
_local1.knockback = 30;
_local1.allowed_areas = 1;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 74
//BossBMoveGraph (BossBMoveGraph)
package {
public class BossBMoveGraph extends NPCMoveGraph {
public static const BOSS_B_BLOCK:int = 7;
public static const BOSS_B_STAND:int = 0;
public static const BOSS_B_JUMP_KICK:int = 6;
public static const BOSS_B_CARTWHEEL:int = 2;
public static const BOSS_B_DAMAGE:int = 9;
public static const BOSS_B_CROUCH_BLOCK:int = 8;
public static const BOSS_B_PUNCH2:int = 4;
public static const BOSS_B_DEATH:int = 10;
public static const BOSS_B_KICK:int = 5;
public static const BOSS_B_RUN:int = 1;
public static const BOSS_B_PUNCH:int = 3;
public function BossBMoveGraph(){
current_move = BOSS_B_STAND;
}
override public function initialize(){
var _local1:int;
move_list = new Array();
move_list[BOSS_B_STAND] = new BossBStand();
move_list[BOSS_B_RUN] = new BossBRun();
move_list[BOSS_B_CARTWHEEL] = new BossBCartwheel();
move_list[BOSS_B_PUNCH] = new BossBPunch();
move_list[BOSS_B_PUNCH2] = new BossBPunch2();
move_list[BOSS_B_KICK] = new BossBKick();
move_list[BOSS_B_JUMP_KICK] = new BossBJumpKick();
move_list[BOSS_B_BLOCK] = new BossBBlock();
move_list[BOSS_B_CROUCH_BLOCK] = new BossBCrouchBlock();
move_list[BOSS_B_DAMAGE] = new BossBDamage();
move_list[BOSS_B_DEATH] = new BossBDeath();
_local1 = 0;
while (_local1 < move_list.length) {
move_list[_local1].npc = npc;
_local1++;
};
}
}
}//package
Section 75
//BossBPunch (BossBPunch)
package {
public class BossBPunch extends IMove {
public function BossBPunch(){
var _local1:DamageFrame;
super();
starting_frame = 5;
current_frame = starting_frame;
frame_count = 9;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 7;
_local1.amount = 20;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(120, 100);
_local1.knockback = 30;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 76
//BossBPunch2 (BossBPunch2)
package {
public class BossBPunch2 extends IMove {
public function BossBPunch2(){
var _local1:DamageFrame;
super();
starting_frame = 15;
current_frame = starting_frame;
frame_count = 14;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 18;
_local1.amount = 10;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(120, 100);
_local1.knockback = 30;
_local1.allowed_areas = 1;
damage_frame_list.push(_local1);
_local1 = new DamageFrame();
_local1.index = 23;
_local1.amount = 20;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(60, 100);
_local1.knockback = 30;
_local1.allowed_areas = 1;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 77
//BossBRun (BossBRun)
package {
public class BossBRun extends IMove {
public function BossBRun(){
starting_frame = 140;
current_frame = starting_frame;
frame_count = 12;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 210;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
}
}
}//package
Section 78
//BossBStand (BossBStand)
package {
public class BossBStand extends IMove {
public function BossBStand(){
starting_frame = 0;
current_frame = starting_frame;
frame_count = 0;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 79
//BossC (BossC)
package {
public class BossC extends BaseNPC {
override public function on_create(){
faction_id = 1;
boss_monster = true;
move_graph = new BossCMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new BossCBrain();
brain.set_parent(this);
damage_data.maximum_hp = 1500;
damage_data.current_hp = 1500;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
move_graph.physics.ground_point = 55;
}
override public function run_death_sfx():void{
Application.get_singleton().audio.sfx_event(SoundManager.SM_BOSS1_DEATH);
}
}
}//package
Section 80
//BossC_AI (BossC_AI)
package {
public class BossC_AI extends BaseAI {
public function BossC_AI(_arg1:BaseBrain){
super(_arg1);
traversal_move = BossCMoveGraph.BOSS_C_STAND;
jump_move = -1;
idle_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_STAND, 1, 1, 1, false));
attack_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_IDLE, 0.5, 0, 0, false));
attack_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_FIREBALL, 0.35, 0, 0, false));
attack_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_TELEPORT, 0.15, 0.4, 0.4, false));
attack_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_PUNCH, 0, 0.3, 0.3, false));
attack_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_KICK, 0, 0.3, 0.3, false));
death_move_list.push(new AIMoveEntry(BossCMoveGraph.BOSS_C_DEATH, 1, 1, 1, true));
head_damage_move = BossCMoveGraph.BOSS_C_DAMAGE;
torso_damage_move = BossCMoveGraph.BOSS_C_DAMAGE;
engagement_distance = 1500;
}
}
}//package
Section 81
//BossCBrain (BossCBrain)
package {
public class BossCBrain extends BaseBrain {
public function BossCBrain(){
ai = new BossC_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 82
//BossCDamage (BossCDamage)
package {
public class BossCDamage extends IMove {
public function BossCDamage(){
starting_frame = 50;
current_frame = starting_frame;
frame_count = 5;
looping = false;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 83
//BossCDeath (BossCDeath)
package {
public class BossCDeath extends IMove {
public function BossCDeath(){
starting_frame = 140;
current_frame = starting_frame;
frame_count = 41;
looping = false;
}
override public function update():void{
super.update();
if (current_frame >= 170){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
Application.get_singleton().audio.sfx_event(SoundManager.SM_BOSS3_DEATH);
if (!face_right){
npc.move_graph.physics.set_desired_x_velocity(75);
} else {
npc.move_graph.physics.set_desired_x_velocity(-75);
};
}
}
}//package
Section 84
//BossCFireball (BossCFireball)
package {
public class BossCFireball extends IMove {
public function BossCFireball(){
starting_frame = 10;
current_frame = starting_frame;
frame_count = 27;
looping = false;
}
override public function update():void{
var _local1:int;
var _local2:Number;
var _local3:Vector2D;
super.update();
if (current_frame == 14){
_local1 = 40;
_local2 = 300;
if (!face_right){
_local1 = -(_local1);
_local2 = -(_local2);
};
_local3 = npc.move_graph.physics.position;
Application.get_singleton().game.projectile_manager.create(ProjectileManager.PT_FIREBALL, (_local3.x + _local1), (_local3.y + 0), _local2, 0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_BOSS3_FIREBALL);
}
}
}//package
Section 85
//BossCIdle (BossCIdle)
package {
public class BossCIdle extends IMove {
public function BossCIdle(){
starting_frame = 120;
current_frame = starting_frame;
frame_count = 10;
damage_frame_list = new Array();
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 86
//BossCKick (BossCKick)
package {
public class BossCKick extends IMove {
public function BossCKick(){
var _local1:DamageFrame;
super();
starting_frame = 105;
current_frame = starting_frame;
frame_count = 10;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 108;
_local1.amount = 30;
_local1.box_center = new Vector2D(95, 30);
_local1.box_size = new Vector2D(80, 60);
_local1.knockback = 20;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 87
//BossCMoveGraph (BossCMoveGraph)
package {
public class BossCMoveGraph extends NPCMoveGraph {
public static const BOSS_C_PUNCH:int = 4;
public static const BOSS_C_FIREBALL:int = 1;
public static const BOSS_C_STAND:int = 0;
public static const BOSS_C_IDLE:int = 6;
public static const BOSS_C_DEATH:int = 7;
public static const BOSS_C_KICK:int = 5;
public static const BOSS_C_TELEPORT:int = 2;
public static const BOSS_C_DAMAGE:int = 3;
public function BossCMoveGraph(){
current_move = BOSS_C_STAND;
}
override public function initialize(){
var _local1:int;
move_list = new Array();
move_list[BOSS_C_STAND] = new BossCStand();
move_list[BOSS_C_FIREBALL] = new BossCFireball();
move_list[BOSS_C_TELEPORT] = new BossCTeleport();
move_list[BOSS_C_DAMAGE] = new BossCDamage();
move_list[BOSS_C_PUNCH] = new BossCPunch();
move_list[BOSS_C_KICK] = new BossCKick();
move_list[BOSS_C_IDLE] = new BossCIdle();
move_list[BOSS_C_DEATH] = new BossCDeath();
_local1 = 0;
while (_local1 < move_list.length) {
move_list[_local1].npc = npc;
_local1++;
};
}
}
}//package
Section 88
//BossCPunch (BossCPunch)
package {
public class BossCPunch extends IMove {
public function BossCPunch(){
var _local1:DamageFrame;
super();
starting_frame = 90;
current_frame = starting_frame;
frame_count = 8;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 93;
_local1.amount = 20;
_local1.box_center = new Vector2D(95, -40);
_local1.box_size = new Vector2D(80, 100);
_local1.knockback = 10;
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 89
//BossCStand (BossCStand)
package {
public class BossCStand extends IMove {
public function BossCStand(){
starting_frame = 0;
current_frame = starting_frame;
frame_count = 0;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 90
//BossCTeleport (BossCTeleport)
package {
public class BossCTeleport extends IMove {
public function BossCTeleport(){
starting_frame = 40;
current_frame = starting_frame;
frame_count = 9;
chi_move = true;
chi_color = 16772846;
looping = false;
}
override public function update():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
super.update();
if (current_frame == 48){
_local1 = Application.get_singleton().game.player.move_graph.physics.position.x;
_local2 = ((Math.random() * 300) + 100);
if (Math.random() > 0.5){
_local2 = -(_local2);
};
_local3 = (_local1 + _local2);
if (_local3 < -600){
_local3 = -600;
};
if (_local3 > 600){
_local3 = 600;
};
npc.set_position(_local3, 230);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_BOSS3_TELEPORT);
}
}
}//package
Section 91
//Cave1 (Cave1)
package {
import flash.display.*;
public dynamic class Cave1 extends MovieClip {
public var stalag2:MovieClip;
public var fill1:MovieClip;
public var fill3:MovieClip;
public var fill2:MovieClip;
public var road1:MovieClip;
public var stalag:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 92
//Cave2 (Cave2)
package {
import flash.display.*;
public dynamic class Cave2 extends MovieClip {
public var stalag3:MovieClip;
public var road123:MovieClip;
public var road1:MovieClip;
public var stalaga:MovieClip;
public var road14:MovieClip;
public var road12:MovieClip;
public var stalag2a:MovieClip;
public var road1a:MovieClip;
public var road13:MovieClip;
public var fill:MovieClip;
public var stalag:MovieClip;
public var platform:MovieClip;
public var small_platform:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 93
//CaveLevel1 (CaveLevel1)
package {
public class CaveLevel1 extends Level {
public function CaveLevel1(){
music_id = 3;
}
override public function level_setup():void{
var _local1:*;
level_object = new Cave1();
player_start = new Vector2D(-888, 210);
camera_left_limit = -2000;
camera_right_limit = 1275;
finish_zone_active = true;
finish_zone_center = new Vector2D(1700, 280);
finish_zone_size = new Vector2D(150, 900);
respawn_points.push(new Vector2D(-650, 220));
respawn_points.push(new Vector2D(-340, 220));
respawn_points.push(new Vector2D(-50, 220));
_local1 = new PopulationNode();
_local1.location = new Vector2D(600, 210);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.7;
_local1.start_distance = 600;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(-100, 210);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.1;
_local1.start_distance = 1500;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(1200, 210);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 3;
_local1.enemy_timer = 0;
_local1.enemy_rate = 1;
_local1.start_distance = 1200;
population_nodes.push(_local1);
}
}
}//package
Section 94
//CaveLevel2 (CaveLevel2)
package {
public class CaveLevel2 extends Level {
override public function level_setup():void{
var _local1:*;
level_object = new Cave2();
engage_count = 2;
player_start = new Vector2D(-888, 230);
camera_left_limit = -2000;
camera_right_limit = 1275;
finish_zone_active = true;
finish_zone_center = new Vector2D(1500, -200);
finish_zone_size = new Vector2D(200, 200);
respawn_points.push(new Vector2D(-800, 230));
respawn_points.push(new Vector2D(-13, -132));
_local1 = new PopulationNode();
_local1.location = new Vector2D(-500, 228);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.5;
_local1.start_distance = 1500;
_local1.spread_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(200, -165);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 2;
_local1.enemy_timer = 0;
_local1.enemy_rate = 3;
_local1.start_distance = 500;
_local1.spread_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(700, -170);
_local1.enemy_type = PopulationNode.PT_ENEMY_E;
_local1.total_enemies = 2;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.25;
_local1.start_distance = 600;
_local1.spread_distance = 200;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(750, -170);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.25;
_local1.start_distance = 600;
_local1.spread_distance = 100;
population_nodes.push(_local1);
}
public function CaveLevel1(){
music_id = 3;
}
override public function setup_pathfind(_arg1:Pathfind):void{
var _local2:PathfindZone;
var _local3:PathfindConnection;
_local2 = new PathfindZone(-2000, -660, 276);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -714;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 1;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -700;
_local3.left_side = false;
_local3.jump_connection = false;
_local3.zone_connection = 8;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-714, -603, 203);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -603;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 2;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -720;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 0;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -603;
_local3.left_side = false;
_local3.jump_connection = false;
_local3.zone_connection = 8;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-653, -166, 158);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -176;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 3;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -603;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 1;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-186, -51, 106);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -140;
_local3.left_side = true;
_local3.jump_connection = true;
_local3.zone_connection = 4;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -166;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 2;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-253, -125, 46);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -234;
_local3.left_side = true;
_local3.jump_connection = true;
_local3.zone_connection = 5;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -135;
_local3.left_side = false;
_local3.jump_connection = false;
_local3.zone_connection = 3;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-655, -216, -18);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -234;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 6;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -226;
_local3.left_side = false;
_local3.jump_connection = false;
_local3.zone_connection = 4;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-226, -97, -81);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -107;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 7;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -216;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 5;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-66, 2000, -125);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -66;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 6;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-660, -80, 276);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -700;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 0;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -600;
_local3.left_side = true;
_local3.jump_connection = true;
_local3.zone_connection = 1;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
}
}
}//package
Section 95
//DamageData (DamageData)
package {
public class DamageData {
var head_box:Vector2D;
var torso_box_size:Vector2D;
var current_hp:int;
var maximum_hp:int;
var death_timer:Number;
var head_box_size:Vector2D;
var torso_box:Vector2D;
public static const DAMAGE_AREA_TORSO = 1;
public static const DAMAGE_AREA_HEAD = 0;
public function DamageData(){
death_timer = 0;
head_box = new Vector2D(0, 0);
head_box_size = new Vector2D(0, 0);
torso_box = new Vector2D(0, 0);
torso_box_size = new Vector2D(0, 0);
}
}
}//package
Section 96
//DamageEvent (DamageEvent)
package {
public class DamageEvent {
var world_location:Vector2D;
var multiple_hit:Boolean;
var faction_id:int;
var unblockable:Boolean;
var npc_ptr:BaseNPC;
var damage_size:Vector2D;
var npc_location:Vector2D;
var allowed_areas:int;
var hp_amount:int;
var knockback:int;
public function DamageEvent(){
hp_amount = 0;
npc_ptr = null;
faction_id = -1;
multiple_hit = false;
unblockable = false;
knockback = 0;
npc_location = new Vector2D(0, 0);
world_location = new Vector2D(0, 0);
damage_size = new Vector2D(0, 0);
allowed_areas = 2;
}
}
}//package
Section 97
//DamageFrame (DamageFrame)
package {
public class DamageFrame {
var multiple_hit:Boolean;
var box_center:Vector2D;
var allowed_areas:int;
var index:int;
var box_size:Vector2D;
var amount:int;
var knockback:int;
public function DamageFrame(){
multiple_hit = false;
knockback = 0;
allowed_areas = 2;
box_center = new Vector2D(0, 0);
box_size = new Vector2D(0, 0);
}
}
}//package
Section 98
//DamageSystem (DamageSystem)
package {
public class DamageSystem {
var game_ptr:Game;
public function DamageSystem(_arg1:Game){
game_ptr = _arg1;
}
public function test_entity(_arg1:BaseNPC, _arg2:DamageEvent):Boolean{
var _local3:Boolean;
var _local4:*;
var _local5:*;
var _local6:Boolean;
var _local7:Boolean;
_local3 = false;
_local4 = (_arg1.x + _arg1.damage_data.head_box.x);
_local5 = (_arg1.y + _arg1.damage_data.head_box.y);
_local6 = true;
_local7 = true;
if (_arg2.allowed_areas == 0){
_local7 = false;
};
if (_arg2.allowed_areas == 1){
_local6 = false;
};
if (_local6){
if (game_ptr.world_database.box_overlap_2D(_arg2.world_location.x, _arg2.world_location.y, _arg2.damage_size.x, _arg2.damage_size.y, (_arg1.x + _arg1.damage_data.head_box.x), (_arg1.y + _arg1.damage_data.head_box.y), _arg1.damage_data.head_box_size.x, _arg1.damage_data.head_box_size.y)){
_local3 = (_arg1.x > _arg2.npc_location.x);
return (_arg1.receive_damage(_local3, _arg2, DamageData.DAMAGE_AREA_HEAD));
};
};
if (_local7){
_local4 = (_arg1.x + _arg1.damage_data.torso_box.x);
_local5 = (_arg1.y + _arg1.damage_data.torso_box.y);
if (game_ptr.world_database.box_overlap_2D(_arg2.world_location.x, _arg2.world_location.y, _arg2.damage_size.x, _arg2.damage_size.y, (_arg1.x + _arg1.damage_data.torso_box.x), (_arg1.y + _arg1.damage_data.torso_box.y), _arg1.damage_data.torso_box_size.x, _arg1.damage_data.torso_box_size.y)){
_local3 = (_arg1.x > _arg2.npc_location.x);
return (_arg1.receive_damage(_local3, _arg2, DamageData.DAMAGE_AREA_TORSO));
};
};
return (false);
}
function test_intersection(_arg1:Vector2D, _arg2:Number, _arg3:Number, _arg4:Vector2D, _arg5:Vector2D):Boolean{
var _local6:*;
var _local7:*;
_local6 = (_arg4.x + _arg2);
_local7 = (_arg4.y + _arg3);
if (_arg1.x < (_local6 + _arg5.x)){
if (_arg1.x > (_local6 - _arg5.x)){
if (_arg1.y < (_local7 + _arg5.y)){
if (_arg1.y > (_local7 - _arg5.y)){
return (true);
};
};
};
};
return (false);
}
public function execute_damage(_arg1:DamageEvent):Boolean{
var _local2:Boolean;
var _local3:int;
var _local4:BaseNPC;
_local2 = false;
if (_arg1.faction_id == 0){
if (game_ptr.populator.npc_list){
_local3 = 0;
while (_local3 < game_ptr.populator.npc_list.length) {
_local4 = game_ptr.populator.npc_list[_local3];
if (_local4){
if (_local4.damage_data){
if (test_entity(_local4, _arg1)){
_local2 = true;
if (_arg1.multiple_hit == false){
break;
};
};
};
};
_local3++;
};
};
} else {
if (test_entity(Application.get_singleton().game.player, _arg1)){
_local2 = true;
};
};
return (_local2);
}
}
}//package
Section 99
//DeathZone (DeathZone)
package {
public class DeathZone {
var size:Vector2D;
var position:Vector2D;
var respawn_location:Vector2D;
}
}//package
Section 100
//Dojo1 (Dojo1)
package {
import flash.display.*;
public dynamic class Dojo1 extends MovieClip {
public var floating:MovieClip;
public var road1:MovieClip;
public var mountain1:MovieClip;
public var mountain2:MovieClip;
public var road1b:MovieClip;
public var fill:MovieClip;
public var basefloor:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 101
//DojoLevel (DojoLevel)
package {
public class DojoLevel extends Level {
public function DojoLevel(){
music_id = 1;
}
override public function level_setup():void{
var _local1:*;
music_id = 1;
level_object = new Dojo1();
player_start = new Vector2D(-322, 120);
camera_left_limit = -500;
camera_right_limit = 1000;
finish_zone_active = true;
finish_zone_center = new Vector2D(1300, 100);
finish_zone_size = new Vector2D(200, 400);
_local1 = new PopulationNode();
_local1.location = new Vector2D(700, 120);
_local1.total_enemies = 1;
_local1.enemy_type = PopulationNode.PT_ENEMY_E;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0;
_local1.start_distance = 400;
population_nodes.push(_local1);
}
}
}//package
Section 102
//EnemyA (EnemyA)
package {
import flash.geom.*;
public class EnemyA extends BaseNPC {
override public function on_create(){
var _local1:ColorTransform;
faction_id = 1;
move_graph = new EnemyAMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new EnemyABrain();
brain.set_parent(this);
global_damage_multiplier = 0.6;
damage_data.maximum_hp = 150;
damage_data.current_hp = 150;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
_local1 = new ColorTransform();
_local1.color = 7571135;
this.transform.colorTransform = _local1;
}
}
}//package
Section 103
//EnemyA_AI (EnemyA_AI)
package {
public class EnemyA_AI extends BaseAI {
public function EnemyA_AI(_arg1:BaseBrain){
super(_arg1);
traversal_move = EnemyAMoveGraph.ENEMY_A_MOVE_RUN;
jump_move = EnemyAMoveGraph.ENEMY_A_JUMP;
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.5, 1, 1, false));
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_IDLE_POINT, 0.5, 1, 1, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_PUNCH, 0.4, 0.4, 0.4, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH, 0.1, 0.1, 0.1, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_PUNCH, 0.1, 0.1, 0.1, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.4, 0.4, 0.4, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_BLOCK, 0, 0, 0, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_BLOCK, 0, 0, 0, true));
death_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_DEATH, 1, 1, 1, true));
head_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_HEAD;
torso_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_TORSO;
engagement_distance = 80;
}
}
}//package
Section 104
//EnemyABlock (EnemyABlock)
package {
public class EnemyABlock extends IMove {
public function EnemyABlock(){
starting_frame = 140;
current_frame = starting_frame;
frame_count = 1;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 105
//EnemyABrain (EnemyABrain)
package {
public class EnemyABrain extends BaseBrain {
public function EnemyABrain(){
ai = new EnemyA_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 106
//EnemyACrouch (EnemyACrouch)
package {
public class EnemyACrouch extends IMove {
public function EnemyACrouch(){
starting_frame = 5;
current_frame = starting_frame;
frame_count = 1;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 107
//EnemyACrouchBlock (EnemyACrouchBlock)
package {
public class EnemyACrouchBlock extends IMove {
public function EnemyACrouchBlock(){
starting_frame = 145;
current_frame = starting_frame;
frame_count = 1;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_TORSO){
return (0);
};
return (_arg1);
}
}
}//package
Section 108
//EnemyACrouchPunch (EnemyACrouchPunch)
package {
public class EnemyACrouchPunch extends IMove {
public function EnemyACrouchPunch(){
var _local1:DamageFrame;
super();
starting_frame = 75;
current_frame = starting_frame;
frame_count = 14;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 77;
_local1.amount = 25;
_local1.box_center = new Vector2D(55, 0);
_local1.box_size = new Vector2D(20, 20);
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
override public function modulate_damage(_arg1:Number, _arg2:int):Number{
if (_arg2 == DamageData.DAMAGE_AREA_HEAD){
return (0);
};
return (_arg1);
}
}
}//package
Section 109
//EnemyADamageHead (EnemyADamageHead)
package {
public class EnemyADamageHead extends IMove {
public function EnemyADamageHead(){
starting_frame = 10;
current_frame = starting_frame;
frame_count = 8;
looping = false;
}
override public function update():void{
super.update();
if (current_frame >= 17){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 110
//EnemyADamageTorso (EnemyADamageTorso)
package {
public class EnemyADamageTorso extends IMove {
public function EnemyADamageTorso(){
starting_frame = 20;
current_frame = starting_frame;
frame_count = 7;
looping = false;
}
override public function update():void{
super.update();
if (current_frame >= 22){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 111
//EnemyADeath (EnemyADeath)
package {
public class EnemyADeath extends IMove {
public function EnemyADeath(){
starting_frame = 100;
current_frame = starting_frame;
frame_count = 25;
looping = false;
}
override public function update():void{
super.update();
if (current_frame >= 115){
npc.move_graph.physics.set_desired_x_velocity(0);
};
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
if (!face_right){
npc.move_graph.physics.set_desired_x_velocity(150);
} else {
npc.move_graph.physics.set_desired_x_velocity(-150);
};
}
}
}//package
Section 112
//EnemyAIdlePoint (EnemyAIdlePoint)
package {
public class EnemyAIdlePoint extends IMove {
public function EnemyAIdlePoint(){
starting_frame = 170;
current_frame = starting_frame;
frame_count = 29;
looping = false;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 113
//EnemyAJump (EnemyAJump)
package {
public class EnemyAJump extends IMove {
public function EnemyAJump(){
starting_frame = 220;
current_frame = starting_frame;
frame_count = 10;
looping = false;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 150;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
npc.move_graph.physics.set_desired_y_velocity(-250);
}
}
}//package
Section 114
//EnemyAKnifeThrow (EnemyAKnifeThrow)
package {
public class EnemyAKnifeThrow extends IMove {
public function EnemyAKnifeThrow(){
starting_frame = 250;
current_frame = starting_frame;
frame_count = 13;
looping = false;
}
override public function update():void{
var _local1:int;
var _local2:Number;
var _local3:Vector2D;
super.update();
if (current_frame == 0x0101){
_local1 = 40;
_local2 = 300;
if (!face_right){
_local1 = -(_local1);
_local2 = -(_local2);
};
_local3 = npc.move_graph.physics.position;
Application.get_singleton().game.projectile_manager.create(ProjectileManager.PT_KNIFE, (_local3.x + _local1), (_local3.y - 40), _local2, 0);
};
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
Application.get_singleton().audio.sfx_event(SoundManager.SM_KNIFE_THROW);
}
}
}//package
Section 115
//EnemyAMoveGraph (EnemyAMoveGraph)
package {
public class EnemyAMoveGraph extends NPCMoveGraph {
public static const ENEMY_A_PUNCH:int = 6;
public static const ENEMY_A_CROUCH_PUNCH:int = 7;
public static const ENEMY_A_KNIFE_THROW:int = 12;
public static const ENEMY_A_BLOCK:int = 8;
public static const ENEMY_A_DAMAGE_HEAD:int = 3;
public static const ENEMY_A_CROUCH_BLOCK:int = 9;
public static const ENEMY_A_STAND:int = 0;
public static const ENEMY_A_JUMP:int = 11;
public static const ENEMY_A_CROUCH:int = 2;
public static const ENEMY_A_DAMAGE_TORSO:int = 4;
public static const ENEMY_A_MOVE_RUN:int = 1;
public static const ENEMY_A_IDLE_POINT:int = 10;
public static const ENEMY_A_DEATH:int = 5;
public function EnemyAMoveGraph(){
current_move = ENEMY_A_STAND;
}
override public function initialize(){
move_list = new Array(5);
move_list[ENEMY_A_STAND] = new EnemyAMoveStand();
move_list[ENEMY_A_STAND].npc = npc;
move_list[ENEMY_A_MOVE_RUN] = new EnemyAMoveRun();
move_list[ENEMY_A_MOVE_RUN].npc = npc;
move_list[ENEMY_A_CROUCH] = new EnemyACrouch();
move_list[ENEMY_A_CROUCH].npc = npc;
move_list[ENEMY_A_DAMAGE_HEAD] = new EnemyADamageHead();
move_list[ENEMY_A_DAMAGE_HEAD].npc = npc;
move_list[ENEMY_A_DAMAGE_TORSO] = new EnemyADamageTorso();
move_list[ENEMY_A_DAMAGE_TORSO].npc = npc;
move_list[ENEMY_A_DEATH] = new EnemyADeath();
move_list[ENEMY_A_DEATH].npc = npc;
move_list[ENEMY_A_PUNCH] = new EnemyAPunch();
move_list[ENEMY_A_PUNCH].npc = npc;
move_list[ENEMY_A_CROUCH_PUNCH] = new EnemyACrouchPunch();
move_list[ENEMY_A_CROUCH_PUNCH].npc = npc;
move_list[ENEMY_A_BLOCK] = new EnemyABlock();
move_list[ENEMY_A_BLOCK].npc = npc;
move_list[ENEMY_A_CROUCH_BLOCK] = new EnemyACrouchBlock();
move_list[ENEMY_A_CROUCH_BLOCK].npc = npc;
move_list[ENEMY_A_IDLE_POINT] = new EnemyAIdlePoint();
move_list[ENEMY_A_IDLE_POINT].npc = npc;
move_list[ENEMY_A_JUMP] = new EnemyAJump();
move_list[ENEMY_A_JUMP].npc = npc;
move_list[ENEMY_A_KNIFE_THROW] = new EnemyAKnifeThrow();
move_list[ENEMY_A_KNIFE_THROW].npc = npc;
}
}
}//package
Section 116
//EnemyAMoveRun (EnemyAMoveRun)
package {
public class EnemyAMoveRun extends IMove {
public function EnemyAMoveRun(){
starting_frame = 33;
current_frame = starting_frame;
frame_count = 12;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
var _local1:Number;
super.move_enter();
_local1 = 125;
if (!face_right){
_local1 = -(_local1);
};
npc.move_graph.physics.set_desired_x_velocity(_local1);
}
}
}//package
Section 117
//EnemyAMoveStand (EnemyAMoveStand)
package {
public class EnemyAMoveStand extends IMove {
public function EnemyAMoveStand(){
starting_frame = 0;
current_frame = starting_frame;
frame_count = 0;
looping = true;
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (true);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 118
//EnemyAPunch (EnemyAPunch)
package {
public class EnemyAPunch extends IMove {
public function EnemyAPunch(){
var _local1:DamageFrame;
super();
starting_frame = 50;
current_frame = starting_frame;
frame_count = 12;
damage_frame_list = new Array();
_local1 = new DamageFrame();
_local1.index = 52;
_local1.amount = 25;
_local1.box_center = new Vector2D(40, -35);
_local1.box_size = new Vector2D(20, 20);
damage_frame_list.push(_local1);
}
override public function update():void{
super.update();
}
override public function input_transition_allowed():Boolean{
return (animation_finished);
}
override public function move_enter():void{
super.move_enter();
npc.move_graph.physics.set_desired_x_velocity(0);
}
}
}//package
Section 119
//EnemyB (EnemyB)
package {
import flash.geom.*;
public class EnemyB extends EnemyA {
override public function on_create(){
var _local1:ColorTransform;
faction_id = 1;
move_graph = new EnemyAMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new EnemyBBrain();
brain.set_parent(this);
damage_data.maximum_hp = 325;
damage_data.current_hp = 325;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
_local1 = new ColorTransform();
_local1.color = 11482421;
this.transform.colorTransform = _local1;
}
}
}//package
Section 120
//EnemyB_AI (EnemyB_AI)
package {
public class EnemyB_AI extends BaseAI {
public function EnemyB_AI(_arg1:BaseBrain){
super(_arg1);
traversal_move = EnemyAMoveGraph.ENEMY_A_MOVE_RUN;
jump_move = EnemyAMoveGraph.ENEMY_A_JUMP;
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.5, 1, 1, false));
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_IDLE_POINT, 0.5, 1, 1, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_PUNCH, 0.4, 0.3, 0.15, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH, 0.1, 0.05, 0.05, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_PUNCH, 0.1, 0.05, 0.2, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0, 0.05, 0.05, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_BLOCK, 0.3, 0.5, 0.05, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_BLOCK, 0.1, 0.05, 0.5, true));
death_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_DEATH, 1, 1, 1, true));
head_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_HEAD;
torso_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_TORSO;
engagement_distance = 80;
}
}
}//package
Section 121
//EnemyBBrain (EnemyBBrain)
package {
public class EnemyBBrain extends BaseBrain {
public function EnemyBBrain(){
ai = new EnemyB_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 122
//EnemyE (EnemyE)
package {
import flash.geom.*;
public class EnemyE extends EnemyA {
override public function on_create(){
var _local1:ColorTransform;
faction_id = 1;
move_graph = new EnemyAMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new EnemyEBrain();
brain.set_parent(this);
global_damage_multiplier = 0.5;
damage_data.maximum_hp = 150;
damage_data.current_hp = 150;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
_local1 = new ColorTransform();
_local1.color = 0x6C6C6C;
this.transform.colorTransform = _local1;
}
}
}//package
Section 123
//EnemyE_AI (EnemyE_AI)
package {
public class EnemyE_AI extends BaseAI {
public function EnemyE_AI(_arg1:BaseBrain){
super(_arg1);
traversal_move = EnemyAMoveGraph.ENEMY_A_MOVE_RUN;
jump_move = EnemyAMoveGraph.ENEMY_A_JUMP;
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.5, 1, 1, false));
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_IDLE_POINT, 0.5, 1, 1, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_PUNCH, 0.3, 0.3, 0.3, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH, 0, 0.1, 0.1, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_PUNCH, 0, 0.1, 0.1, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.7, 0.5, 0.5, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_BLOCK, 0, 0, 0, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_BLOCK, 0, 0, 0, true));
death_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_DEATH, 1, 1, 1, true));
head_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_HEAD;
torso_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_TORSO;
engagement_distance = 80;
}
}
}//package
Section 124
//EnemyEBrain (EnemyEBrain)
package {
public class EnemyEBrain extends BaseBrain {
public function EnemyEBrain(){
ai = new EnemyE_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 125
//EnemyHealthBar (EnemyHealthBar)
package {
import flash.display.*;
public class EnemyHealthBar extends MovieClip {
var fill_bar:Shape;
var parent_clip:MovieClip;
public function EnemyHealthBar(_arg1:MovieClip){
parent_clip = _arg1;
parent_clip.addChild(this);
this.x = -30;
this.y = -90;
this.alpha = 1;
fill_bar = new Shape();
fill_bar.graphics.beginFill(0xFF0000, 1);
fill_bar.graphics.drawRect(0, 0, -49, 5);
fill_bar.x = (this.x + 50);
fill_bar.y = (this.y + 1);
fill_bar.graphics.endFill();
parent_clip.addChild(fill_bar);
}
public function destroy_bar():void{
parent_clip.removeChild(fill_bar);
parent_clip.removeChild(this);
fill_bar = null;
}
public function notify_health_change(_arg1:Number){
fill_bar.scaleX = _arg1;
}
}
}//package
Section 126
//EnemyK (EnemyK)
package {
import flash.geom.*;
public class EnemyK extends EnemyA {
override public function on_create(){
var _local1:ColorTransform;
faction_id = 1;
move_graph = new EnemyAMoveGraph();
move_graph.npc = this;
move_graph.initialize();
brain = new EnemyKBrain();
brain.set_parent(this);
damage_data.maximum_hp = 300;
damage_data.current_hp = 300;
damage_data.head_box.set(0, -40);
damage_data.head_box_size.set(50, 50);
damage_data.torso_box.set(0, 0);
damage_data.torso_box_size.set(50, 50);
_local1 = new ColorTransform();
_local1.color = 3101989;
this.transform.colorTransform = _local1;
}
}
}//package
Section 127
//EnemyK_AI (EnemyK_AI)
package {
public class EnemyK_AI extends BaseAI {
public function EnemyK_AI(_arg1:BaseBrain){
super(_arg1);
always_engage = true;
traversal_move = EnemyAMoveGraph.ENEMY_A_MOVE_RUN;
jump_move = EnemyAMoveGraph.ENEMY_A_JUMP;
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.5, 1, 1, false));
idle_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_IDLE_POINT, 0.5, 1, 1, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_KNIFE_THROW, 0.8, 0.2, 0.05, true, 50));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_PUNCH, 0, 0.2, 0.05, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH, 0, 0.05, 0.05, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_PUNCH, 0, 0.05, 0.2, false));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_STAND, 0.2, 0.05, 0.05, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_BLOCK, 0, 0.6, 0.05, true));
attack_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_CROUCH_BLOCK, 0, 0.05, 0.6, true));
death_move_list.push(new AIMoveEntry(EnemyAMoveGraph.ENEMY_A_DEATH, 1, 1, 1, true));
head_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_HEAD;
torso_damage_move = EnemyAMoveGraph.ENEMY_A_DAMAGE_TORSO;
engagement_distance = 300;
}
}
}//package
Section 128
//EnemyKBrain (EnemyKBrain)
package {
public class EnemyKBrain extends BaseBrain {
public function EnemyKBrain(){
ai = new EnemyK_AI(this);
}
override public function update_child():void{
}
}
}//package
Section 129
//Fireball (Fireball)
package {
public dynamic class Fireball extends Projectile {
}
}//package
Section 130
//FloorTile (FloorTile)
package {
import flash.display.*;
public class FloorTile extends BaseTile {
override public function initialize(_arg1:MovieClip):void{
collision_type = CTYPE_GROUND;
super.initialize(_arg1);
}
}
}//package
Section 131
//Game (Game)
package {
import flash.events.*;
import flash.display.*;
import flash.system.*;
import flash.utils.*;
public class Game extends Sprite {
var score_manager:ScoreManager;
var populator:Populator;
var pause_overlay:MovieClip;
var game_win:Boolean;
var camera:GameCamera;
var game_interface:Interface;
var death_counter:int;
var game_paused:Boolean;
var time_adjust:Number;
var splash_screen:SplashScreen;
var projectile_manager:ProjectileManager;
var damage:DamageSystem;
var pathfind:Pathfind;
var time_counter:int;
var player_respawn_location:Vector2D;
var world_database:WorldDatabase;
var last_player_health:Number;
var desired_level:int;
var fade_time:int;
var gameflow_state:int;
var seconds_since_game_start:int;
var last_fps:Number;
var fade_timer:int;
var fade_shape:Shape;
var player:Avatar;
var kill_player:Boolean;
var level_manager:LevelManager;
var landscape_container:Sprite;
public static const GF_GAME_OVER:int = 5;
public static const GF_RESPAWNING_PLAYER:int = 4;
public static const GF_FADING_OUT:int = 2;
public static const GF_FADING_IN:int = 0;
public static const GF_PLAYING:int = 1;
public static const GF_WIN:int = 6;
public static const GF_LOADING_BLACK:int = 3;
public function Game(){
desired_level = 0;
seconds_since_game_start = 0;
time_counter = 0;
time_adjust = 0;
last_fps = 0;
fade_time = 7;
fade_timer = 0;
fade_shape = null;
gameflow_state = GF_PLAYING;
kill_player = false;
death_counter = 0;
last_player_health = 0;
game_win = false;
game_paused = false;
}
public function mouse_click_handler(_arg1:MouseEvent):void{
if (game_interface){
game_interface.notify_mouse_click(_arg1);
};
}
public function switch_gameflow_state(_arg1:int):void{
var _local2:Level;
var _local3:Level;
var _local4:Level;
if (_arg1 == GF_PLAYING){
Application.get_singleton().addEventListener(MouseEvent.CLICK, mouse_click_handler);
} else {
Application.get_singleton().removeEventListener(MouseEvent.CLICK, mouse_click_handler);
};
if ((((_arg1 == GF_LOADING_BLACK)) || ((_arg1 == GF_FADING_OUT)))){
if (fade_shape == null){
fade_shape = new Shape();
fade_shape.graphics.beginFill(0, 1);
fade_shape.graphics.drawRect(0, 0, 750, 500);
fade_shape.x = 0;
fade_shape.y = 0;
fade_shape.graphics.endFill();
Application.get_singleton().addChild(fade_shape);
};
};
if (_arg1 == GF_LOADING_BLACK){
fade_timer = fade_time;
if (desired_level != -1){
level_manager.start_level(desired_level);
};
player = new Avatar();
Application.get_singleton().layer_characters.addChild(player);
_local2 = level_manager.get_current_level();
player.set_position(_local2.player_start.x, _local2.player_start.y);
camera.reset(_local2.player_start.x, _local2.player_start.y);
if (last_player_health != 0){
player.damage_data.current_hp = (last_player_health + (player.damage_data.maximum_hp * 0.4));
if (player.damage_data.current_hp > player.damage_data.maximum_hp){
player.damage_data.current_hp = player.damage_data.maximum_hp;
};
};
game_interface = new Interface();
Application.get_singleton().layer_interface.addChild(game_interface);
game_interface.create();
force_fade_to_top();
} else {
if (_arg1 == GF_PLAYING){
Application.get_singleton().removeChild(fade_shape);
fade_shape = null;
if (((Application.get_singleton().audio.fading_out) || ((Application.get_singleton().audio.music_volume == 0)))){
Application.get_singleton().audio.start_music(level_manager.get_current_level().music_id);
};
player.move_graph.internal_switch_move(AvatarMoveGraph.AVATAR_MOVE, true);
} else {
if (_arg1 == GF_FADING_IN){
fade_timer = fade_time;
force_fade_to_top();
} else {
if (_arg1 == GF_FADING_OUT){
fade_timer = fade_time;
fade_shape.alpha = 0;
_local3 = level_manager.get_current_level();
_local4 = level_manager.get_next_level();
if (_local4){
if (((!((_local4.music_id == _local3.music_id))) && (!((_local4.music_id == -1))))){
Application.get_singleton().audio.music_fade_out();
};
};
Application.get_singleton().layer_interface.removeChild(game_interface);
game_interface = null;
last_player_health = player.damage_data.current_hp;
Application.get_singleton().layer_characters.removeChild(player);
player = null;
force_fade_to_top();
} else {
if (_arg1 == GF_GAME_OVER){
Application.get_singleton().audio.music_fade_out();
splash_screen = new GameOverScreen();
splash_screen.initialize();
} else {
if (_arg1 == GF_WIN){
Application.get_singleton().audio.start_music(0, 0.8);
splash_screen = new GameWinScreen();
splash_screen.initialize();
};
};
};
};
};
};
gameflow_state = _arg1;
}
public function shutdown():void{
if (splash_screen){
splash_screen.shutdown();
splash_screen = null;
};
level_manager.clear();
populator.clear_npcs();
Application.get_singleton().layer_interface.removeChild(game_interface);
game_interface = null;
Application.get_singleton().layer_characters.removeChild(player);
player = null;
}
public function initialize():void{
damage = new DamageSystem(this);
world_database = new WorldDatabase(this);
camera = new GameCamera();
pathfind = new Pathfind();
populator = new Populator(this);
score_manager = new ScoreManager();
level_manager = new LevelManager();
projectile_manager = new ProjectileManager();
switch_gameflow_state(GF_LOADING_BLACK);
seconds_since_game_start = 0;
stage.focus = Application.get_singleton();
}
public function force_fade_to_top():void{
Application.get_singleton().setChildIndex(fade_shape, (Application.get_singleton().numChildren - 1));
}
public function signal_pause():void{
if (gameflow_state == GF_PLAYING){
if (game_paused){
if (pause_overlay){
Application.get_singleton().removeChild(pause_overlay);
pause_overlay = null;
};
game_paused = false;
} else {
pause_overlay = new pause_screen();
pause_overlay.x = 350;
pause_overlay.y = 250;
Application.get_singleton().addChild(pause_overlay);
game_paused = true;
};
};
}
public function execute_damage(_arg1:DamageEvent):Boolean{
return (damage.execute_damage(_arg1));
}
public function signal_player_death(_arg1:Number, _arg2:Number, _arg3:Boolean=false){
kill_player = true;
if (_arg3){
death_counter = 1;
} else {
death_counter = 50;
};
player_respawn_location = new Vector2D(_arg1, _arg2);
score_manager.send_event(ScoreManager.SCORE_EVENT_PLAYER_DEATH);
Application.get_singleton().audio.sfx_event(SoundManager.SM_PLAYER_DEATH);
}
public function update():void{
var _local1:Number;
var _local2:Boolean;
var _local3:Number;
var _local4:Number;
var _local5:int;
var _local6:int;
if (game_paused){
return;
};
if (((game_win) && (!((gameflow_state == GF_WIN))))){
switch_gameflow_state(GF_WIN);
};
if ((((score_manager.player_lives == 0)) && (!((gameflow_state == GF_GAME_OVER))))){
switch_gameflow_state(GF_GAME_OVER);
};
_local1 = (getTimer() / 1000);
_local2 = false;
switch (gameflow_state){
case GF_PLAYING:
_local2 = true;
break;
case GF_FADING_OUT:
fade_timer--;
fade_shape.alpha = (1 - (fade_timer / fade_time));
if (fade_timer == 0){
switch_gameflow_state(GF_LOADING_BLACK);
};
break;
case GF_LOADING_BLACK:
fade_timer--;
fade_shape.alpha = 1;
if (fade_timer == 0){
switch_gameflow_state(GF_FADING_IN);
};
break;
case GF_FADING_IN:
_local2 = true;
fade_timer--;
fade_shape.alpha = (fade_timer / fade_time);
if (fade_timer == 0){
switch_gameflow_state(GF_PLAYING);
};
break;
case GF_GAME_OVER:
case GF_WIN:
if (splash_screen){
splash_screen.update();
};
_local2 = false;
if (splash_screen.ready_to_exit){
Application.get_singleton().signal_game_over();
Application.get_singleton().audio.start_music(0, 0.8);
};
};
if (_local2){
if (player){
player.update();
populator.update();
camera.update();
world_database.update();
level_manager.update();
score_manager.update();
projectile_manager.update();
game_interface.update();
};
if (level_manager.get_current_level()){
if (level_manager.get_current_level().level_finished){
desired_level++;
switch_gameflow_state(GF_FADING_OUT);
};
};
if (kill_player){
death_counter--;
if (death_counter == 0){
player.set_position(player_respawn_location.x, player_respawn_location.y);
score_manager.player_lives--;
if (score_manager.player_lives != 0){
player.damage_data.current_hp = player.damage_data.maximum_hp;
game_interface.notify_health_change(1);
player.move_graph.switch_move(AvatarMoveGraph.AVATAR_STAND, true, true);
player.killed = false;
kill_player = false;
};
};
};
};
_local3 = (getTimer() / 1000);
time_counter++;
if (time_counter >= 30){
seconds_since_game_start++;
if (gameflow_state == GF_PLAYING){
score_manager.elapsed_time = seconds_since_game_start;
_local4 = (getTimer() / 1000);
last_fps = Math.round((time_counter / (_local4 - time_adjust)));
time_counter = 0;
time_adjust = _local4;
if (Application.get_singleton().display_debug){
game_interface.fps_text.text = ("FPS: " + last_fps.toString());
_local5 = (System.totalMemory / 1000000);
_local6 = ((System.totalMemory / 10000) % 100);
game_interface.memory_text.text = (((("Memory: " + _local5.toString()) + ".") + _local6.toString()) + " MB");
game_interface.player_loc.text = (((("Player: (" + player.move_graph.physics.position.x.toFixed(1)) + " , ") + player.move_graph.physics.position.y.toFixed(1)) + ")");
} else {
game_interface.fps_text.text = "";
game_interface.memory_text.text = "";
game_interface.player_loc.text = "";
};
};
};
}
}
}//package
Section 132
//game_over_screen (game_over_screen)
package {
import flash.display.*;
import flash.text.*;
public dynamic class game_over_screen extends MovieClip {
public var user_score:TextField;
public var user_time:TextField;
public function game_over_screen(){
addFrameScript(158, frame159, 179, frame180);
}
function frame159(){
}
function frame180(){
stop();
}
}
}//package
Section 133
//game_win_screen (game_win_screen)
package {
import flash.display.*;
import flash.text.*;
public dynamic class game_win_screen extends MovieClip {
public var user_score:TextField;
public var user_time:TextField;
public function game_win_screen(){
addFrameScript(174, frame175, 194, frame195);
}
function frame175(){
}
function frame195(){
stop();
}
}
}//package
Section 134
//GameCamera (GameCamera)
package {
public class GameCamera {
var left_limit:Number;
var min_y_bounds:Number;
var max_x_bounds:Number;
var right_limit:Number;
var velocity_x:Number;
var velocity_y:Number;
public var position_x:Number;
public var position_y:Number;
var min_x_bounds:Number;
var max_y_bounds:Number;
public function GameCamera(){
left_limit = -1000000;
right_limit = 1000000;
position_x = 0;
position_y = 0;
velocity_x = 0;
velocity_y = 0;
}
public function update():void{
var _local1:Avatar;
_local1 = Application.get_singleton().game.player;
if (_local1 == null){
return;
};
if (_local1.x > 425){
velocity_x = 7;
} else {
if (_local1.x < 325){
velocity_x = -7;
} else {
velocity_x = (velocity_x * 0.8);
if (Math.abs(velocity_x) < 0.5){
velocity_x = 0;
};
};
};
if (_local1.y > 400){
velocity_y = 6;
} else {
if (_local1.y < 300){
velocity_y = -6;
} else {
velocity_y = (velocity_y * 0.8);
if (Math.abs(velocity_y) < 0.5){
velocity_y = 0;
};
};
};
position_x = (position_x + velocity_x);
position_y = (position_y + velocity_y);
if (position_x < left_limit){
position_x = left_limit;
};
if (position_x > right_limit){
position_x = right_limit;
};
}
public function reset(_arg1:Number, _arg2:Number){
velocity_x = 0;
velocity_y = 0;
position_x = (_arg1 - 350);
position_y = (_arg2 - 350);
}
public function get_tile_position(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Vector2D){
var _local5:Number;
_local5 = ((100 - _arg3) / 100);
_arg4.x = (_arg1 - (_local5 * position_x));
_arg4.y = (_arg2 - (_local5 * position_y));
}
}
}//package
Section 135
//GameOverScreen (GameOverScreen)
package {
import flash.display.*;
public class GameOverScreen extends SplashScreen {
var showed_hints:Boolean;
var timer:int;
var hint:MovieClip;
override public function shutdown():void{
if (hint){
Application.get_singleton().removeChild(hint);
hint = null;
};
Application.get_singleton().removeChild(clip);
clip = null;
}
override public function initialize():void{
clip = new game_over_screen();
Application.get_singleton().addChild(clip);
clip.play();
clip.x = 350;
clip.y = 250;
timer = 0;
showed_hints = false;
}
override public function update():void{
var _local1:MovieClip;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
timer++;
if (timer > 300){
ready_to_exit = true;
};
if ((((clip.currentFrame > 160)) && ((showed_hints == false)))){
showed_hints = true;
_local2 = (Math.random() * 9);
if (_local2 == 0){
_local1 = new hint1();
} else {
if (_local2 == 1){
_local1 = new hint2();
} else {
if (_local2 == 2){
_local1 = new hint3();
} else {
if (_local2 == 3){
_local1 = new hint4();
} else {
if (_local2 == 4){
_local1 = new hint5();
} else {
if (_local2 == 5){
_local1 = new hint6();
} else {
if (_local2 == 6){
_local1 = new hint7();
} else {
if (_local2 == 7){
_local1 = new hint8();
} else {
if (_local2 == 8){
_local1 = new hint9();
};
};
};
};
};
};
};
};
};
hint = _local1;
Application.get_singleton().addChild(hint);
hint.x = 370;
hint.y = 425;
_local3 = Application.get_singleton().game.score_manager.elapsed_time;
_local4 = (_local3 / 60);
_local5 = (_local3 - (_local4 * 60));
_local6 = (_local5 / 10);
_local7 = (_local5 % 10);
clip.user_score.text = ("YOUR SCORE: " + Application.get_singleton().game.score_manager.get_current_score());
clip.user_time.text = (((("YOU SURVIVED: " + _local4) + ":") + _local6) + _local7);
};
}
}
}//package
Section 136
//GameWinScreen (GameWinScreen)
package {
public class GameWinScreen extends SplashScreen {
var timer:int;
var showed_ending:Boolean;
override public function shutdown():void{
Application.get_singleton().removeChild(clip);
clip = null;
}
override public function initialize():void{
clip = new game_win_screen();
Application.get_singleton().addChild(clip);
clip.play();
clip.x = 350;
clip.y = 250;
timer = 0;
showed_ending = false;
}
override public function update():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
timer++;
if (timer > 400){
ready_to_exit = true;
};
if ((((clip.currentFrame > 180)) && ((showed_ending == false)))){
showed_ending = true;
_local1 = Application.get_singleton().game.score_manager.elapsed_time;
_local2 = (_local1 / 60);
_local3 = (_local1 - (_local2 * 60));
_local4 = (_local3 / 10);
_local5 = (_local3 % 10);
clip.user_score.text = ("FINAL SCORE: " + Application.get_singleton().game.score_manager.get_current_score());
clip.user_time.text = (((("TOTAL TIME: " + _local2) + ":") + _local4) + _local5);
};
}
}
}//package
Section 137
//HealthBar (HealthBar)
package {
import flash.display.*;
import flash.text.*;
import flash.geom.*;
public class HealthBar extends MovieClip {
var fill_bar:Shape;
public var life_counter:TextField;
var chi_bar:Shape;
public function HealthBar(_arg1:MovieClip){
var _local2:Avatar;
super();
_arg1.addChild(this);
this.x = 59;
this.y = 448;
this.alpha = 1;
fill_bar = new Shape();
fill_bar.graphics.beginFill(0xFF0000, 1);
fill_bar.graphics.drawRect(0, 0, 148, 17);
fill_bar.x = 60;
fill_bar.y = 451;
fill_bar.graphics.endFill();
_arg1.addChild(fill_bar);
chi_bar = new Shape();
chi_bar.graphics.beginFill(0xFFFFFF, 1);
chi_bar.graphics.drawRect(0, 0, 148, 11);
chi_bar.x = 60;
chi_bar.y = 421;
chi_bar.graphics.endFill();
_arg1.addChild(chi_bar);
notify_chi_change(Application.get_singleton().game.score_manager.chi_value);
_local2 = Application.get_singleton().game.player;
if (_local2){
notify_health_change((_local2.damage_data.current_hp / _local2.damage_data.maximum_hp));
};
}
public function notify_chi_change(_arg1:Number){
var _local2:ColorTransform;
_local2 = new ColorTransform();
_local2.color = 22015;
chi_bar.scaleX = _arg1;
if (_arg1 == 1){
_local2.color = 13421823;
};
chi_bar.transform.colorTransform = _local2;
}
public function notify_health_change(_arg1:Number){
var _local2:int;
fill_bar.scaleX = _arg1;
_local2 = (Application.get_singleton().game.score_manager.player_lives - 1);
if (_local2 < 0){
_local2 = 0;
};
life_counter.text = _local2.toString();
}
}
}//package
Section 138
//high_scores_screen (high_scores_screen)
package {
import flash.display.*;
public dynamic class high_scores_screen extends MovieClip {
}
}//package
Section 139
//HighScoreScreen (HighScoreScreen)
package {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.text.*;
import flash.ui.*;
public class HighScoreScreen extends SplashScreen {
var waiting_on_scores:Boolean;
var timer:int;
var score_list_array:Array;
var showed_scores:Boolean;
var name_entry:MovieClip;
var request_scores:Boolean;
override public function shutdown():void{
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keydown_listener);
Application.get_singleton().removeChild(clip);
clip = null;
}
public function exit_allowed():Boolean{
return ((name_entry == null));
}
override public function initialize():void{
request_scores = true;
waiting_on_scores = false;
clip = new high_scores_screen();
score_list_array = new Array();
Application.get_singleton().addChild(clip);
clip.play();
clip.x = 350;
clip.y = 250;
timer = 0;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown_listener);
}
public function keydown_listener(_arg1:KeyboardEvent):void{
var _local2:String;
var _local3:WebScoreAPI;
if (name_entry){
if (_arg1.keyCode == Keyboard.ENTER){
_local2 = name_entry.name_text.text;
trace("SCORE: submitting player ", _local2, " with score ", Application.get_singleton().last_player_score);
_local3 = Application.get_singleton().score_api;
_local3.submit_score(_local2, Application.get_singleton().last_player_score);
Application.get_singleton().last_player_score = -1;
request_scores = true;
Application.get_singleton().removeChild(name_entry);
name_entry = null;
};
};
}
override public function update():void{
var _local1:WebScoreAPI;
var _local2:int;
if (request_scores){
request_scores = false;
Application.get_singleton().score_api.retrieve_scores();
waiting_on_scores = true;
};
if (waiting_on_scores){
if (Application.get_singleton().score_api.scores_available()){
waiting_on_scores = false;
if (Application.get_singleton().last_player_score != -1){
_local1 = Application.get_singleton().score_api;
_local2 = Application.get_singleton().last_player_score;
if (_local2 > _local1.hs_scores[9]){
name_entry = new NameEntry();
Application.get_singleton().addChild(name_entry);
name_entry.x = 350;
name_entry.y = 250;
name_entry.name_text.maxChars = 15;
name_entry.name_text.restrict = "A-Z 0-9._";
};
};
hs_callback();
};
};
}
public function hs_callback():void{
var _local1:int;
var _local2:WebScoreAPI;
var _local3:int;
var _local4:TextFormat;
var _local5:TextFormat;
var _local6:TextField;
var _local7:GlowFilter;
var _local8:TextField;
var _local9:int;
var _local10:TextField;
_local1 = 0;
while (_local1 < score_list_array.length) {
clip.removeChild(score_list_array[_local1]);
_local1++;
};
score_list_array = new Array();
_local2 = Application.get_singleton().score_api;
_local3 = 9;
_local4 = new TextFormat("BadaBoom BB", 36, 0xFFFFFF);
_local5 = new TextFormat("BadaBoom BB", 26, 0xDDDDDD);
_local6 = new TextField();
_local6.text = ((_local2.hs_names[0] + " ") + _local2.hs_scores[0]);
_local6.x = -40;
_local6.y = -125;
_local6.autoSize = TextFieldAutoSize.CENTER;
_local6.embedFonts = true;
_local6.selectable = false;
_local6.setTextFormat(_local4);
_local7 = new GlowFilter();
_local7.color = 11162931;
_local7.blurX = 16;
_local7.blurY = 16;
_local7.quality = BitmapFilterQuality.HIGH;
_local6.filters = new Array(_local7);
score_list_array.push(_local6);
clip.addChild(_local6);
_local1 = 0;
while (_local1 < _local3) {
_local8 = new TextField();
_local9 = (-70 + (_local1 * 28));
_local8.x = -90;
_local8.y = _local9;
_local8.autoSize = TextFieldAutoSize.RIGHT;
_local8.text = (_local2.hs_names[(_local1 + 1)] + " ");
_local8.selectable = false;
_local8.setTextFormat(_local5);
score_list_array.push(_local8);
clip.addChild(_local8);
_local10 = new TextField();
_local10.text = _local2.hs_scores[(_local1 + 1)];
_local10.x = 30;
_local10.y = _local9;
_local10.autoSize = TextFieldAutoSize.LEFT;
_local10.setTextFormat(_local5);
clip.addChild(_local10);
score_list_array.push(_local10);
_local1++;
};
}
}
}//package
Section 140
//hint1 (hint1)
package {
import flash.display.*;
public dynamic class hint1 extends MovieClip {
}
}//package
Section 141
//hint10 (hint10)
package {
import flash.display.*;
public dynamic class hint10 extends MovieClip {
}
}//package
Section 142
//hint2 (hint2)
package {
import flash.display.*;
public dynamic class hint2 extends MovieClip {
}
}//package
Section 143
//hint3 (hint3)
package {
import flash.display.*;
public dynamic class hint3 extends MovieClip {
}
}//package
Section 144
//hint4 (hint4)
package {
import flash.display.*;
public dynamic class hint4 extends MovieClip {
}
}//package
Section 145
//hint5 (hint5)
package {
import flash.display.*;
public dynamic class hint5 extends MovieClip {
}
}//package
Section 146
//hint6 (hint6)
package {
import flash.display.*;
public dynamic class hint6 extends MovieClip {
}
}//package
Section 147
//hint7 (hint7)
package {
import flash.display.*;
public dynamic class hint7 extends MovieClip {
}
}//package
Section 148
//hint8 (hint8)
package {
import flash.display.*;
public dynamic class hint8 extends MovieClip {
}
}//package
Section 149
//hint9 (hint9)
package {
import flash.display.*;
public dynamic class hint9 extends MovieClip {
}
}//package
Section 150
//IMove (IMove)
package {
import flash.filters.*;
public class IMove {
var damage_frame_list:Array;
var chi_color:int;
var face_right:Boolean;
var chi_move:Boolean;
var animation_finished:Boolean;
public var combo:MoveCombo;
var npc:BaseNPC;
var current_frame:int;
var starting_frame:int;
var ground_type:int;
var frame_count:int;
var looping:Boolean;
public static const GS_AIR:int = 2;
public static const GS_GROUND:int = 0;
public static const GS_GROUND_CROUCH:int = 1;
public function IMove(){
looping = false;
face_right = true;
animation_finished = false;
chi_move = false;
chi_color = 11188991;
}
public function move_exit():void{
if (chi_move){
npc.filters = null;
};
}
public function move_enter():void{
var _local1:GlowFilter;
if (combo){
};
animation_finished = false;
current_frame = starting_frame;
npc.gotoAndStop(current_frame);
if (!face_right){
npc.scaleX = -1;
} else {
npc.scaleX = 1;
};
if (chi_move){
_local1 = new GlowFilter();
_local1.alpha = 0.8;
_local1.blurX = 16;
_local1.blurY = 16;
_local1.quality = 1;
_local1.color = chi_color;
npc.filters = new Array(_local1);
};
}
public function input_transition_allowed():Boolean{
return (true);
}
public function modulate_damage(_arg1:Number, _arg2:int):Number{
return (_arg1);
}
public function update():void{
var _local1:int;
var _local2:DamageFrame;
var _local3:DamageEvent;
if ((starting_frame + frame_count) <= current_frame){
if (looping){
npc.gotoAndStop(starting_frame);
current_frame = starting_frame;
} else {
current_frame = (starting_frame + frame_count);
npc.gotoAndStop(current_frame);
animation_finished = true;
};
} else {
npc.nextFrame();
current_frame++;
};
if (damage_frame_list != null){
_local1 = 0;
while (_local1 < damage_frame_list.length) {
_local2 = damage_frame_list[_local1];
if (_local2.index == current_frame){
_local3 = new DamageEvent();
_local3.hp_amount = (_local2.amount * npc.global_damage_multiplier);
_local3.faction_id = npc.faction_id;
_local3.npc_location.x = npc.x;
_local3.npc_location.y = npc.y;
_local3.npc_ptr = npc;
_local3.world_location.x = _local2.box_center.x;
_local3.world_location.y = _local2.box_center.y;
if (!face_right){
_local3.world_location.x = -(_local3.world_location.x);
};
_local3.world_location.x = (_local3.world_location.x + npc.x);
_local3.world_location.y = (_local3.world_location.y + npc.y);
_local3.damage_size.x = _local2.box_size.x;
_local3.damage_size.y = _local2.box_size.y;
_local3.knockback = _local2.knockback;
_local3.multiple_hit = _local2.multiple_hit;
_local3.unblockable = chi_move;
_local3.allowed_areas = _local2.allowed_areas;
Application.get_singleton().game.execute_damage(_local3);
};
_local1++;
};
};
}
}
}//package
Section 151
//Interface (Interface)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class Interface extends MovieClip {
public var special_message_2:TextField;
public var app_timing:TextField;
public var special_message:TextField;
public var score:TextField;
public var sound_icon:SoundIcon;
var health_bar:HealthBar;
public var memory_text:TextField;
public var fps_text:TextField;
public var score_header:TextField;
public var total_time:TextField;
public var player_loc:TextField;
public function Interface(){
this.name = "interface";
health_bar = null;
}
public function destroy():void{
health_bar = null;
}
public function create():void{
health_bar = new HealthBar(this);
}
public function notify_chi_change(_arg1:Number){
health_bar.notify_chi_change(_arg1);
}
public function notify_mouse_click(_arg1:MouseEvent):void{
var _local2:Boolean;
if ((((((((_arg1.stageX > 630)) && ((_arg1.stageX < 690)))) && ((_arg1.stageY > 430)))) && ((_arg1.stageY < 490)))){
_local2 = Application.get_singleton().audio.sound_enabled;
Application.get_singleton().audio.enable_sound(!(_local2));
if (_local2){
sound_icon.gotoAndStop(2);
} else {
sound_icon.gotoAndStop(1);
};
};
}
public function notify_health_change(_arg1:Number){
health_bar.notify_health_change(_arg1);
}
public function update():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
_local1 = Application.get_singleton().game.score_manager.elapsed_time;
_local2 = (_local1 / 60);
_local3 = (_local1 - (_local2 * 60));
_local4 = (_local3 / 10);
_local5 = (_local3 % 10);
total_time.text = (((_local2 + ":") + _local4) + _local5);
}
}
}//package
Section 152
//Knife (Knife)
package {
public dynamic class Knife extends Projectile {
}
}//package
Section 153
//Level (Level)
package {
import flash.display.*;
public class Level {
var player_start:Vector2D;
var camera_right_limit:Number;
var population_nodes:Array;
var respawn_point_hit:Array;
var finish_zone_active:Boolean;
var finish_zone_size:Vector2D;
var finish_zone_center:Vector2D;
var camera_left_limit:Number;
var level_object:MovieClip;
var level_finished:Boolean;
var engage_count:int;
var respawn_points:Array;
var music_id:int;
var death_zones:Array;
public function Level(){
clear();
}
public function level_setup():void{
}
public function update():void{
var _local1:Game;
var _local2:Vector2D;
var _local3:int;
var _local4:Vector2D;
var _local5:Number;
_local1 = Application.get_singleton().game;
_local2 = _local1.player.move_graph.physics.position;
_local3 = 0;
while (_local3 < respawn_points.length) {
if (respawn_point_hit[_local3] == false){
_local4 = respawn_points[_local3];
_local5 = (((_local4.x - _local2.x) * (_local4.x - _local2.x)) + ((_local4.y - _local2.y) * (_local4.y - _local2.y)));
if (_local5 < 50000){
respawn_point_hit[_local3] = true;
trace("LEVEL: respawn point", _local3, "hit");
} else {
break;
};
};
_local3++;
};
if (finish_zone_active){
if (_local1.player){
if (!level_finished){
if (_local1.populator.current_npc_count == 0){
if (_local1.world_database.box_overlap_2D(_local2.x, _local2.y, 1, 1, finish_zone_center.x, finish_zone_center.y, finish_zone_size.x, finish_zone_size.y)){
level_finished = true;
trace("level finished!");
};
};
};
};
};
}
public function death_notification(_arg1:int):void{
}
public function setup_pathfind(_arg1:Pathfind):void{
}
final public function post_level_setup():void{
var _local1:int;
_local1 = 0;
while (_local1 < respawn_points.length) {
respawn_point_hit.push(false);
_local1++;
};
}
public function clear():void{
music_id = -1;
engage_count = 1;
finish_zone_active = false;
level_finished = false;
population_nodes = new Array();
respawn_points = new Array();
respawn_point_hit = new Array();
death_zones = new Array();
}
}
}//package
Section 154
//LevelManager (LevelManager)
package {
import flash.display.*;
public class LevelManager {
var level_list:Array;
var current_level:int;
public function LevelManager(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
super();
current_level = -1;
level_list = new Array();
_local1 = new DojoLevel();
level_list.push(_local1);
_local2 = new MountainLevel();
level_list.push(_local2);
_local3 = new MountainLevel2();
level_list.push(_local3);
_local4 = new CaveLevel1();
level_list.push(_local4);
_local5 = new CaveLevel2();
level_list.push(_local5);
_local6 = new TempleLevelA();
level_list.push(_local6);
_local7 = new TempleLevelB();
level_list.push(_local7);
_local8 = new TempleLevelC();
level_list.push(_local8);
_local9 = new TempleLevelD();
level_list.push(_local9);
_local10 = new TempleLevelE();
level_list.push(_local10);
_local11 = new TempleLevelF();
level_list.push(_local11);
_local12 = new TempleLevelEnd();
level_list.push(_local12);
}
public function get_respawn_location(_arg1:Number, _arg2:Number):Vector2D{
var _local3:Vector2D;
var _local4:Level;
var _local5:int;
var _local6:int;
_local3 = new Vector2D(0, 0);
_local4 = level_list[current_level];
if (_local4.respawn_points.length == 0){
_local3.x = _local4.player_start.x;
_local3.y = _local4.player_start.y;
} else {
_local5 = 0;
_local6 = 0;
while (_local6 < _local4.respawn_points.length) {
if (_local4.respawn_point_hit[_local6] == false){
break;
} else {
_local5 = _local6;
};
_local6++;
};
_local3.x = _local4.respawn_points[_local5].x;
_local3.y = _local4.respawn_points[_local5].y;
};
return (_local3);
}
public function advance_level():void{
start_level((current_level + 1));
}
public function get_next_level():Level{
if (current_level < (level_list.length - 1)){
return (level_list[(current_level + 1)]);
};
return (null);
}
public function update():void{
var _local1:Game;
var _local2:Vector2D;
var _local3:int;
var _local4:DeathZone;
if (current_level != -1){
level_list[current_level].update();
_local1 = Application.get_singleton().game;
if (_local1.player){
_local2 = _local1.player.move_graph.physics.position;
_local3 = 0;
while (_local3 < level_list[current_level].death_zones.length) {
_local4 = level_list[current_level].death_zones[_local3];
if (_local1.world_database.box_overlap_2D(_local2.x, _local2.y, 20, 20, _local4.position.x, _local4.position.y, _local4.size.x, _local4.size.y) == true){
_local1.signal_player_death(_local4.respawn_location.x, _local4.respawn_location.y, true);
};
_local3++;
};
};
};
}
public function parse_level_objects(_arg1:MovieClip):void{
var _local2:Game;
var _local3:DisplayObject;
var _local4:uint;
_local2 = Application.get_singleton().game;
_local2.world_database.clear_all_objects();
_local4 = 0;
while (_local4 < _arg1.numChildren) {
_local3 = _arg1.getChildAt(_local4);
_local2.world_database.add_shape(_local3);
_local4++;
};
}
public function clear():void{
if (current_level != -1){
Application.get_singleton().layer_objects.removeChild(level_list[current_level].level_object);
level_list[current_level].clear();
};
}
public function get_current_level():Level{
return (level_list[current_level]);
}
public function start_level(_arg1:int){
var _local2:Level;
var _local3:Game;
clear();
current_level = _arg1;
_local2 = level_list[current_level];
_local3 = Application.get_singleton().game;
_local2.level_setup();
_local2.post_level_setup();
_local3.populator.clear_npcs();
_local3.camera.left_limit = _local2.camera_left_limit;
_local3.camera.right_limit = _local2.camera_right_limit;
_local3.pathfind.clear_zones();
_local2.setup_pathfind(_local3.pathfind);
_local3.pathfind.precompute_graph();
Application.get_singleton().layer_objects.addChild(_local2.level_object);
parse_level_objects(_local2.level_object);
}
}
}//package
Section 155
//Mountain1 (Mountain1)
package {
import flash.display.*;
public dynamic class Mountain1 extends MovieClip {
public var road:MovieClip;
public var mountain1:MovieClip;
public var mountain2:MovieClip;
public var fill:MovieClip;
public var bridge:MovieClip;
public var rockstair2:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 156
//Mountain2 (Mountain2)
package {
import flash.display.*;
public dynamic class Mountain2 extends MovieClip {
public var road1:MovieClip;
public var rockstair11:MovieClip;
public var mountain1:MovieClip;
public var mountain2:MovieClip;
public var rockstair22:MovieClip;
public var cliff1:MovieClip;
public var rockstair33:MovieClip;
public var fill:MovieClip;
public var bridge:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 157
//MountainLevel (MountainLevel)
package {
public class MountainLevel extends Level {
public function MountainLevel(){
music_id = 2;
}
override public function level_setup():void{
var _local1:DeathZone;
var _local2:*;
var _local3:*;
music_id = 2;
level_object = new Mountain1();
player_start = new Vector2D(-888, 320);
camera_left_limit = -2000;
camera_right_limit = 1375;
finish_zone_active = true;
finish_zone_center = new Vector2D(2000, 470);
finish_zone_size = new Vector2D(300, 200);
respawn_points.push(new Vector2D(-850, 320));
respawn_points.push(new Vector2D(-540, 320));
respawn_points.push(new Vector2D(-80, 320));
respawn_points.push(new Vector2D(400, 320));
respawn_points.push(new Vector2D(900, 410));
respawn_points.push(new Vector2D(1720, 530));
_local1 = new DeathZone();
_local1.position = new Vector2D(1225, 700);
_local1.size = new Vector2D(500, 200);
_local1.respawn_location = new Vector2D(880, 380);
death_zones.push(_local1);
_local2 = new PopulationNode();
_local2.location = new Vector2D(-34, 250);
_local2.enemy_type = PopulationNode.PT_ENEMY_E;
_local2.total_enemies = 1;
_local2.enemy_timer = 0;
_local2.enemy_rate = 1;
_local2.start_distance = 1400;
population_nodes.push(_local2);
_local3 = new PopulationNode();
_local3.location = new Vector2D(620, 241);
_local3.enemy_type = PopulationNode.PT_ENEMY_E;
_local3.total_enemies = 2;
_local3.enemy_timer = 0;
_local3.enemy_rate = 2;
_local3.start_distance = 1000;
population_nodes.push(_local3);
}
}
}//package
Section 158
//MountainLevel2 (MountainLevel2)
package {
public class MountainLevel2 extends Level {
public function MountainLevel2(){
music_id = 2;
}
override public function level_setup():void{
var _local1:PopulationNode;
var _local2:PopulationNode;
var _local3:PopulationNode;
var _local4:DeathZone;
level_object = new Mountain2();
player_start = new Vector2D(-888, 230);
camera_left_limit = -2000;
camera_right_limit = 1275;
finish_zone_active = true;
finish_zone_center = new Vector2D(1700, 300);
finish_zone_size = new Vector2D(100, 300);
_local1 = new PopulationNode();
_local1.location = new Vector2D(-480, 220);
_local1.enemy_type = PopulationNode.PT_ENEMY_E;
_local1.total_enemies = 1;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0;
_local1.start_distance = 500;
population_nodes.push(_local1);
_local2 = new PopulationNode();
_local2.location = new Vector2D(480, 200);
_local2.enemy_type = PopulationNode.PT_ENEMY_A;
_local2.total_enemies = 1;
_local2.enemy_timer = 0;
_local2.enemy_rate = 0.5;
_local2.start_distance = 500;
population_nodes.push(_local2);
_local3 = new PopulationNode();
_local3.location = new Vector2D(1400, 210);
_local3.enemy_type = PopulationNode.PT_ENEMY_E;
_local3.total_enemies = 3;
_local3.enemy_timer = 0;
_local3.enemy_rate = 1;
_local3.start_distance = 1200;
population_nodes.push(_local3);
_local4 = new DeathZone();
_local4.position = new Vector2D(-80, 600);
_local4.size = new Vector2D(500, 200);
_local4.respawn_location = new Vector2D(-220, 220);
death_zones.push(_local4);
}
}
}//package
Section 159
//MoveCombo (MoveCombo)
package {
public class MoveCombo {
public var required_ground_state:int;
public var flip_direction_end:Boolean;
public var name:String;
public var flip_direction_start:Boolean;
public var move_array:Array;
public var override_flags:int;
public var allow_hold:Boolean;
public var complexity_id:int;
public static const PUNCH_BLOCK:int = 13;
public static const KICK:int = 8;
public static const NO_MOVE:int = 16;
public static const OR_NEVER:int = 2;
public static const KICK_PUNCH_BLOCK:int = 14;
public static const KICK_PUNCH:int = 11;
public static const MAX_KEYS:int = 17;
public static const UP:int = 3;
public static const PUNCH:int = 9;
public static const FORWARD:int = 0;
public static const BACK:int = 2;
public static const DOWN:int = 1;
public static const OR_ALWAYS:int = 0;
public static const BLOCK:int = 10;
public static const JUMP:int = 15;
public static const OR_HIGHER_ID:int = 1;
public static const BACK_UP:int = 6;
public static const FORWARD_UP:int = 7;
public static const BACK_DOWN:int = 5;
public static const KICK_BLOCK:int = 12;
public static const FORWARD_DOWN:int = 4;
public static var action_debug_names:Array;
public function MoveCombo(){
allow_hold = false;
action_debug_names = new Array(MAX_KEYS);
action_debug_names[FORWARD] = "F";
action_debug_names[DOWN] = "D";
action_debug_names[BACK] = "B";
action_debug_names[UP] = "U";
action_debug_names[FORWARD_DOWN] = "F+D";
action_debug_names[BACK_DOWN] = "B+D";
action_debug_names[BACK_UP] = "B+U";
action_debug_names[FORWARD_UP] = "F+U";
action_debug_names[KICK] = "K";
action_debug_names[PUNCH] = "P";
action_debug_names[BLOCK] = "B";
action_debug_names[KICK_PUNCH] = "K+P";
action_debug_names[KICK_BLOCK] = "K+B";
action_debug_names[PUNCH_BLOCK] = "P+B";
action_debug_names[KICK_PUNCH_BLOCK] = "K+P+B";
action_debug_names[JUMP] = "J";
action_debug_names[NO_MOVE] = "-";
}
}
}//package
Section 160
//MoveEvaluator (MoveEvaluator)
package {
public class MoveEvaluator {
var last_button_state:int;
var action_list:Array;
var queue_pointer:int;
var current_keystate:Array;
var frame_counter:int;
var queue_size:int;
var last_arrow_state:int;
var action_time:Array;
var last_queue_state:int;
public function MoveEvaluator(){
var _local1:*;
super();
frame_counter = 0;
last_arrow_state = MoveCombo.NO_MOVE;
last_button_state = MoveCombo.NO_MOVE;
last_queue_state = MoveCombo.NO_MOVE;
queue_size = 30;
queue_pointer = 0;
action_list = new Array(queue_size);
_local1 = 0;
while (_local1 < queue_size) {
action_list[_local1] = -1;
_local1++;
};
action_time = new Array(queue_size);
current_keystate = new Array(MoveCombo.MAX_KEYS);
_local1 = 0;
while (_local1 < MoveCombo.MAX_KEYS) {
current_keystate[_local1] = false;
_local1++;
};
}
public function update():void{
var _local1:ApplicationKeystate;
var _local2:Boolean;
var _local3:Boolean;
var _local4:Boolean;
var _local5:Boolean;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Boolean;
var _local9:Boolean;
var _local10:int;
var _local11:Boolean;
var _local12:int;
clear_queue_entries();
_local1 = Application.get_singleton().keystate;
_local2 = _local1.is_key_down(ApplicationKeystate.KEY_JUMP);
if (current_keystate[MoveCombo.JUMP] != _local2){
current_keystate[MoveCombo.JUMP] = _local2;
if (_local2){
add_action(MoveCombo.JUMP);
};
};
_local3 = _local1.is_key_down(ApplicationKeystate.KEY_PUNCH);
_local4 = _local1.is_key_down(ApplicationKeystate.KEY_KICK);
_local5 = _local1.is_key_down(ApplicationKeystate.KEY_BLOCK);
_local10 = -1;
if (((((_local3) && (_local4))) && (_local5))){
_local10 = MoveCombo.KICK_PUNCH_BLOCK;
} else {
if (((_local3) && (_local4))){
_local10 = MoveCombo.KICK_PUNCH;
};
if (((_local4) && (_local5))){
_local10 = MoveCombo.KICK_BLOCK;
};
if (((_local3) && (_local5))){
_local10 = MoveCombo.PUNCH_BLOCK;
};
};
if (_local10 == -1){
if (_local3){
_local10 = MoveCombo.PUNCH;
};
if (_local4){
_local10 = MoveCombo.KICK;
};
if (_local5){
_local10 = MoveCombo.BLOCK;
};
};
if (_local10 == -1){
_local10 = MoveCombo.NO_MOVE;
};
if (_local10 != last_button_state){
current_keystate[last_button_state] = false;
if (_local10 != MoveCombo.NO_MOVE){
current_keystate[_local10] = true;
add_action(_local10);
};
last_button_state = _local10;
};
_local6 = _local1.is_key_down(ApplicationKeystate.KEY_UP);
_local7 = _local1.is_key_down(ApplicationKeystate.KEY_DOWN);
_local8 = _local1.is_key_down(ApplicationKeystate.KEY_RIGHT);
_local9 = _local1.is_key_down(ApplicationKeystate.KEY_LEFT);
_local10 = -1;
if (((_local6) && (_local8))){
_local10 = MoveCombo.FORWARD_UP;
};
if (((_local7) && (_local8))){
_local10 = MoveCombo.FORWARD_DOWN;
};
if (((_local6) && (_local9))){
_local10 = MoveCombo.BACK_UP;
};
if (((_local7) && (_local9))){
_local10 = MoveCombo.BACK_DOWN;
};
if (_local10 == -1){
if (_local6){
_local10 = MoveCombo.UP;
};
if (_local7){
_local10 = MoveCombo.DOWN;
};
if (_local8){
_local10 = MoveCombo.FORWARD;
};
if (_local9){
_local10 = MoveCombo.BACK;
};
};
if (_local10 == -1){
_local10 = MoveCombo.NO_MOVE;
};
_local11 = false;
if ((((last_button_state == MoveCombo.NO_MOVE)) && ((_local2 == false)))){
if (_local10 != MoveCombo.NO_MOVE){
_local12 = (queue_pointer - 1);
if (_local12 < 0){
_local12 = (_local12 + queue_size);
};
if (action_list[_local12] != _local10){
_local11 = true;
};
};
};
if (((!((_local10 == last_arrow_state))) || (_local11))){
current_keystate[last_arrow_state] = false;
if (_local10 != MoveCombo.NO_MOVE){
current_keystate[_local10] = true;
add_action(_local10);
};
last_arrow_state = _local10;
};
if ((((((last_button_state == MoveCombo.NO_MOVE)) && ((last_arrow_state == MoveCombo.NO_MOVE)))) && (!(_local2)))){
if (current_keystate[MoveCombo.NO_MOVE] == false){
current_keystate[MoveCombo.NO_MOVE] = true;
add_action(MoveCombo.NO_MOVE);
};
} else {
current_keystate[MoveCombo.NO_MOVE] = false;
};
frame_counter++;
}
public function match_move(_arg1:IMove, _arg2:Boolean):Boolean{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Boolean;
if (_arg1.combo == null){
return (false);
};
if (_arg1.combo.move_array == null){
return (false);
};
_local3 = _arg1.combo.move_array.length;
_local4 = (queue_pointer - _local3);
if (_local4 < 0){
_local4 = (_local4 + queue_size);
};
_local5 = 0;
while (_local5 < _local3) {
_local6 = action_list[_local4];
if (_local6 == -1){
_local6 = MoveCombo.NO_MOVE;
};
if (_arg2){
if (_local6 == MoveCombo.FORWARD){
_local6 = MoveCombo.BACK;
} else {
if (_local6 == MoveCombo.FORWARD_UP){
_local6 = MoveCombo.BACK_UP;
} else {
if (_local6 == MoveCombo.BACK){
_local6 = MoveCombo.FORWARD;
} else {
if (_local6 == MoveCombo.BACK_UP){
_local6 = MoveCombo.FORWARD_UP;
} else {
if (_local6 == MoveCombo.FORWARD_DOWN){
_local6 = MoveCombo.BACK_DOWN;
} else {
if (_local6 == MoveCombo.BACK_DOWN){
_local6 = MoveCombo.FORWARD_DOWN;
};
};
};
};
};
};
};
_local7 = (_local6 == _arg1.combo.move_array[_local5]);
if (_local7 == false){
return (false);
};
_local4++;
if (_local4 >= queue_size){
_local4 = (_local4 - queue_size);
};
_local5++;
};
return (true);
}
public function add_action(_arg1:int){
current_keystate[_arg1] = true;
action_list[queue_pointer] = _arg1;
action_time[queue_pointer] = frame_counter;
queue_pointer = ((queue_pointer + 1) % queue_size);
last_queue_state = _arg1;
}
public function clear_queue_entries():void{
var _local1:int;
_local1 = 0;
while (_local1 < queue_size) {
if ((frame_counter - action_time[_local1]) > 20){
if (action_list[_local1] == MoveCombo.BLOCK){
if (last_queue_state == MoveCombo.NO_MOVE){
action_list[_local1] = -1;
};
} else {
action_list[_local1] = -1;
};
};
_local1++;
};
}
}
}//package
Section 161
//MusicBoss2 (MusicBoss2)
package {
import flash.media.*;
public dynamic class MusicBoss2 extends Sound {
}
}//package
Section 162
//MusicCave (MusicCave)
package {
import flash.media.*;
public dynamic class MusicCave extends Sound {
}
}//package
Section 163
//MusicDojo (MusicDojo)
package {
import flash.media.*;
public dynamic class MusicDojo extends Sound {
}
}//package
Section 164
//MusicEndBoss (MusicEndBoss)
package {
import flash.media.*;
public dynamic class MusicEndBoss extends Sound {
}
}//package
Section 165
//MusicIntro (MusicIntro)
package {
import flash.media.*;
public dynamic class MusicIntro extends Sound {
}
}//package
Section 166
//MusicMountain1 (MusicMountain1)
package {
import flash.media.*;
public dynamic class MusicMountain1 extends Sound {
}
}//package
Section 167
//MusicTemple2 (MusicTemple2)
package {
import flash.media.*;
public dynamic class MusicTemple2 extends Sound {
}
}//package
Section 168
//NameEntry (NameEntry)
package {
import flash.display.*;
import flash.text.*;
public dynamic class NameEntry extends MovieClip {
public var name_text:TextField;
}
}//package
Section 169
//NPCMoveGraph (NPCMoveGraph)
package {
public class NPCMoveGraph {
var physics:BasePhysics;
var transition_list:BaseTransitionList;
var temp_v:Vector2D;
var move_list:Array;
var current_move:int;
var desired_move_direction:Boolean;
var npc:BaseNPC;
var desired_move:int;
var force_desired_move:Boolean;
public function NPCMoveGraph(){
physics = new BasePhysics();
current_move = 0;
desired_move = -1;
temp_v = new Vector2D(0, 0);
}
public function update():void{
move_list[current_move].update();
if (desired_move != -1){
if (((!((desired_move == current_move))) || (force_desired_move))){
move_list[current_move].move_exit();
current_move = desired_move;
force_desired_move = false;
move_list[current_move].face_right = desired_move_direction;
move_list[current_move].move_enter();
};
};
physics.update();
temp_v.x = 0;
temp_v.y = 0;
Application.get_singleton().game.camera.get_tile_position(physics.position.x, physics.position.y, 0, temp_v);
npc.x = temp_v.x;
npc.y = temp_v.y;
}
public function current_move_finished():Boolean{
if (current_move != -1){
return (move_list[current_move].animation_finished);
};
return (true);
}
public function set_position(_arg1:Number, _arg2:Number):void{
physics.set_position(_arg1, _arg2);
}
public function initialize(){
}
public function switch_move(_arg1:int, _arg2:Boolean, _arg3:Boolean=false){
desired_move = _arg1;
desired_move_direction = _arg2;
force_desired_move = _arg3;
}
}
}//package
Section 170
//Pathfind (Pathfind)
package {
public class Pathfind {
var predecessor_array:Array;
var distance_graph:Array;
var shortest_distances:Array;
var zone_list:Array;
var path_graph:Array;
var unsettled_vertices:Array;
var settled_vertices:Array;
public static const MAX_DISTANCE:Number = 10000000;
public function Pathfind(){
zone_list = new Array();
}
public function get_next_zone(_arg1:int, _arg2:int):int{
var _local3:int;
if (zone_list == null){
return (-1);
};
_local3 = ((_arg1 * zone_list.length) + _arg2);
return (path_graph[_local3]);
}
public function precompute_graph():void{
var _local1:int;
var _local2:*;
var _local3:*;
var _local4:int;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:int;
if (zone_list == null){
return;
};
shortest_distances = new Array(zone_list.length);
settled_vertices = new Array(zone_list.length);
unsettled_vertices = new Array(zone_list.length);
predecessor_array = new Array(zone_list.length);
_local1 = (zone_list.length * zone_list.length);
path_graph = new Array(_local1);
distance_graph = new Array(_local1);
_local2 = 0;
while (_local2 < _local1) {
path_graph[_local2] = -1;
distance_graph[_local2] = MAX_DISTANCE;
_local2++;
};
_local3 = 0;
while (_local3 < zone_list.length) {
_local4 = 0;
while (_local4 < zone_list[_local3].connection_list.length) {
_local2 = zone_list[_local3].connection_list[_local4].zone_connection;
_local5 = ((zone_list[_local3].x_left + zone_list[_local3].x_right) * 0.5);
_local6 = ((zone_list[_local2].x_left + zone_list[_local2].x_right) * 0.5);
_local7 = zone_list[_local3].height;
_local8 = zone_list[_local2].height;
distance_graph[((_local3 * zone_list.length) + _local2)] = Math.sqrt((((_local6 - _local5) * (_local6 - _local5)) + ((_local8 - _local7) * (_local8 - _local7))));
_local4++;
};
_local3++;
};
_local3 = 0;
while (_local3 < zone_list.length) {
_local4 = 0;
while (_local4 < zone_list.length) {
_local9 = ((_local3 * zone_list.length) + _local4);
if (_local3 == _local4){
path_graph[_local9] = _local4;
} else {
path_graph[_local9] = find_shortest_path(_local3, _local4);
};
_local4++;
};
_local3++;
};
}
public function clear_zones(){
if (zone_list){
zone_list = null;
zone_list = new Array();
};
path_graph = null;
distance_graph = null;
shortest_distances = null;
settled_vertices = null;
unsettled_vertices = null;
predecessor_array = null;
}
public function get_contained_zone(_arg1:Number, _arg2:Number):int{
var _local3:int;
var _local4:int;
var _local5:int;
if (zone_list == null){
return (-1);
};
_local3 = -1;
_local4 = 1000000;
_local5 = 0;
while (_local5 < zone_list.length) {
if ((((_arg1 >= zone_list[_local5].x_left)) && ((_arg1 <= zone_list[_local5].x_right)))){
if (zone_list[_local5].height > _arg2){
if (zone_list[_local5].height < _local4){
_local3 = _local5;
_local4 = zone_list[_local5].height;
};
};
};
_local5++;
};
return (_local3);
}
public function get_zone_pointer(_arg1:int):PathfindZone{
if (zone_list == null){
return (null);
};
return (zone_list[_arg1]);
}
public function find_shortest_path(_arg1:int, _arg2:int):int{
var _local3:int;
var _local4:Boolean;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:Number;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:int;
var _local14:Number;
if (zone_list == null){
return (-1);
};
_local3 = 0;
while (_local3 < zone_list.length) {
shortest_distances[_local3] = MAX_DISTANCE;
_local3++;
};
settled_vertices.length = 0;
unsettled_vertices.length = 0;
unsettled_vertices.push(_arg1);
shortest_distances[_arg1] = 0;
_local4 = false;
while (unsettled_vertices.length > 0) {
_local7 = -1;
_local8 = -1;
_local9 = MAX_DISTANCE;
_local10 = 0;
while (_local10 < unsettled_vertices.length) {
if (shortest_distances[unsettled_vertices[_local10]] < _local9){
_local7 = unsettled_vertices[_local10];
_local8 = _local10;
_local9 = shortest_distances[_local10];
};
_local10++;
};
settled_vertices.push(_local7);
if (unsettled_vertices.length > 1){
unsettled_vertices[_local8] = unsettled_vertices[(unsettled_vertices.length - 1)];
};
unsettled_vertices.pop();
_local11 = 0;
while (_local11 < zone_list[_local7].connection_list.length) {
_local12 = zone_list[_local7].connection_list[_local11].zone_connection;
_local4 = false;
_local13 = 0;
while (_local13 < settled_vertices.length) {
if (settled_vertices[_local13] == _local12){
_local4 = true;
break;
};
_local13++;
};
if (!_local4){
_local14 = distance_graph[((_local7 * zone_list.length) + _local12)];
if (shortest_distances[_local12] > (shortest_distances[_local7] + _local14)){
shortest_distances[_local12] = (shortest_distances[_local7] + _local14);
predecessor_array[_local12] = _local7;
unsettled_vertices.push(_local12);
};
};
_local11++;
};
};
_local5 = _arg2;
_local6 = predecessor_array[_arg2];
while (true) {
if (_local6 == _arg1){
return (_local5);
};
if (_local6 == _local5){
trace("PATHFIND: warning, no path possible from node", _arg1, "to node", _arg2);
return (_arg1);
};
_local5 = _local6;
_local6 = predecessor_array[_local6];
};
return (-1);
}
public function has_data():Boolean{
return ((zone_list.length > 0));
}
}
}//package
Section 171
//PathfindConnection (PathfindConnection)
package {
public class PathfindConnection {
var zone_connection:int;
var jump_connection:Boolean;
var x_boundary:Number;
var left_side:Boolean;
}
}//package
Section 172
//PathfindZone (PathfindZone)
package {
public class PathfindZone {
var x_left:Number;
var height:Number;
var x_right:Number;
var connection_list:Array;
public function PathfindZone(_arg1:Number, _arg2:Number, _arg3:Number){
x_left = _arg1;
x_right = _arg2;
height = _arg3;
connection_list = new Array();
}
}
}//package
Section 173
//pause_screen (pause_screen)
package {
import flash.display.*;
public dynamic class pause_screen extends MovieClip {
}
}//package
Section 174
//PointManager (PointManager)
package {
import flash.events.*;
import flash.display.*;
public class PointManager {
var point_count:int;
var parent_clip:MovieClip;
var point_list:Array;
public function PointManager(_arg1:MovieClip){
var _local2:int;
super();
parent_clip = _arg1;
parent_clip.addEventListener(Event.ENTER_FRAME, update);
point_count = 10;
point_list = new Array();
_local2 = 0;
while (_local2 < point_count) {
point_list[_local2] = new BlurPoint();
_arg1.addChild(point_list[_local2]);
point_list[_local2].px = ((Math.random() * 700) - 350);
point_list[_local2].py = ((Math.random() * 500) - 250);
point_list[_local2].update();
_local2++;
};
}
public function fadeout(){
var _local1:int;
_local1 = 0;
while (_local1 < point_count) {
point_list[_local1].alpha_speed = -((1.5 + (Math.random() * 2)));
_local1++;
};
}
public function update(_arg1:Event){
var _local2:int;
_local2 = 0;
while (_local2 < point_count) {
point_list[_local2].update();
_local2++;
};
}
}
}//package
Section 175
//PopulationNode (PopulationNode)
package {
public class PopulationNode {
var spawn_location:Vector2D;
var enemies_spawned:int;
var enemy_timer:Number;
var spread_distance:Number;
var enemy_type:int;
var activated:Boolean;
var total_enemies:int;
var enemy_rate:Number;
var start_distance:Number;
var location:Vector2D;
public static const PT_BOSS_A:int = 5;
public static const PT_BOSS_B:int = 6;
public static const PT_BOSS_C:int = 7;
public static const PT_ENEMY_A:int = 0;
public static const PT_ENEMY_B:int = 1;
public static const PT_ENEMY_E:int = 2;
public static const PT_ENEMY_K:int = 3;
public function PopulationNode(){
enemies_spawned = 0;
enemy_timer = 0;
enemy_type = PT_ENEMY_A;
spread_distance = 0;
activated = false;
}
public function update():void{
var _local1:Avatar;
var _local2:Number;
var _local3:Vector2D;
var _local4:Number;
var _local5:BaseNPC;
var _local6:Number;
_local1 = Application.get_singleton().game.player;
if (_local1 == null){
return;
};
_local2 = (1 / 30);
if (activated == false){
_local3 = _local1.move_graph.physics.position;
_local4 = Vector2D.distance_2D(_local3, location);
if (_local4 < start_distance){
activated = true;
trace("POPULATOR: zone activated, type: ", enemy_type, " position:", "(", location.x, ",", location.y, ")");
};
};
if (activated){
if (enemies_spawned < total_enemies){
enemy_timer = (enemy_timer - _local2);
if (enemy_timer <= 0){
enemy_timer = enemy_rate;
trace("POPULATOR: spawning enemy type ", enemy_type);
_local5 = create_via_type(enemy_type);
_local5.create();
_local6 = (spread_distance * (Math.random() - 0.5));
Application.get_singleton().game.populator.register_npc(_local5);
if (spawn_location){
_local5.set_position((spawn_location.x + _local6), spawn_location.y);
} else {
_local5.set_position((location.x + _local6), location.y);
};
enemies_spawned++;
};
};
};
}
public function create_via_type(_arg1:int):BaseNPC{
var _local2:BaseNPC;
_local2 = null;
if (_arg1 == PT_BOSS_A){
_local2 = new BossA();
} else {
if (_arg1 == PT_BOSS_B){
_local2 = new BossB();
} else {
if (_arg1 == PT_BOSS_C){
_local2 = new BossC();
} else {
if (_arg1 == PT_ENEMY_A){
_local2 = new EnemyA();
} else {
if (_arg1 == PT_ENEMY_B){
_local2 = new EnemyB();
} else {
if (_arg1 == PT_ENEMY_E){
_local2 = new EnemyE();
} else {
if (_arg1 == PT_ENEMY_K){
_local2 = new EnemyK();
};
};
};
};
};
};
};
if (_local2 == null){
trace("warning: unknown enemy type in populator node!");
} else {
_local2.npc_type = _arg1;
};
return (_local2);
}
}
}//package
Section 176
//Populator (Populator)
package {
public class Populator {
var game_ptr:Game;
var npc_list:Array;
var current_npc_count:int;
var targeting_counter:int;
var closest_distance_array:Array;
var closest_id_array:Array;
public function Populator(_arg1:Game){
game_ptr = _arg1;
npc_list = new Array();
targeting_counter = 0;
closest_id_array = new Array();
closest_distance_array = new Array();
current_npc_count = 0;
}
public function clear_npcs():void{
var _local1:int;
_local1 = 0;
while (_local1 < npc_list.length) {
if (npc_list[_local1] != null){
Application.get_singleton().layer_characters.removeChild(npc_list[_local1]);
npc_list[_local1] = null;
};
_local1++;
};
npc_list = new Array();
current_npc_count = 0;
}
public function register_npc(_arg1:BaseNPC):void{
var _local2:int;
current_npc_count++;
trace("NPC: active count now", current_npc_count);
Application.get_singleton().layer_characters.addChild(_arg1);
_local2 = 0;
while (_local2 < npc_list.length) {
if (npc_list[_local2] == null){
npc_list[_local2] = _arg1;
return;
};
_local2++;
};
npc_list.push(_arg1);
}
public function update():void{
var _local1:Number;
var _local2:Level;
var _local3:int;
var _local4:PopulationNode;
var _local5:Boolean;
_local1 = (1 / 30);
_local2 = Application.get_singleton().game.level_manager.get_current_level();
if (_local2){
_local3 = 0;
while (_local3 < _local2.population_nodes.length) {
_local4 = _local2.population_nodes[_local3];
_local4.update();
_local3++;
};
};
if (npc_list){
_local3 = 0;
while (_local3 < npc_list.length) {
_local5 = false;
if (npc_list[_local3] != null){
npc_list[_local3].update();
if (npc_list[_local3].damage_data.current_hp <= 0){
if (npc_list[_local3].damage_data.death_timer == 0){
current_npc_count--;
trace("NPC: active count now", current_npc_count);
};
npc_list[_local3].damage_data.death_timer = (npc_list[_local3].damage_data.death_timer + _local1);
if (npc_list[_local3].damage_data.death_timer > 5){
trace("NPC killed: player");
_local5 = true;
};
};
if (npc_list[_local3].move_graph.physics.position.y > 2000){
trace("NPC killed: world fall-through");
current_npc_count--;
_local5 = true;
};
if (_local5){
Application.get_singleton().layer_characters.removeChild(npc_list[_local3]);
npc_list[_local3] = null;
};
};
_local3++;
};
};
targeting_counter++;
if (targeting_counter > 6){
targeting_counter = 0;
update_targeting();
};
}
public function update_targeting():void{
var _local1:Level;
var _local2:Avatar;
var _local3:int;
var _local4:int;
var _local5:Vector2D;
var _local6:Boolean;
var _local7:int;
var _local8:int;
var _local9:*;
var _local10:*;
var _local11:Number;
var _local12:Number;
var _local13:int;
var _local14:int;
_local1 = Application.get_singleton().game.level_manager.get_current_level();
_local2 = Application.get_singleton().game.player;
_local3 = _local1.engage_count;
_local4 = 0;
_local5 = _local2.move_graph.physics.position;
_local6 = _local2.killed;
if (npc_list){
_local8 = 0;
while (_local8 < npc_list.length) {
if (npc_list[_local8]){
if (npc_list[_local8].damage_data.current_hp > 0){
if (_local6){
npc_list[_local8].engage_status = BaseNPC.WAIT_FAR;
} else {
if (npc_list[_local8].brain.ai.always_engage){
npc_list[_local8].engage_status = BaseNPC.ENGAGE_PLAYER;
} else {
_local9 = npc_list[_local8].move_graph.physics.position.x;
_local10 = npc_list[_local8].move_graph.physics.position.y;
_local11 = (((_local5.x - _local9) * (_local5.x - _local9)) + ((_local5.y - _local10) * (_local5.y - _local10)));
if (npc_list[_local8].engage_status != BaseNPC.WAIT_FAR){
npc_list[_local8].engage_status = BaseNPC.WAIT_FAR;
npc_list[_local8].wait_distance = (npc_list[_local8].brain.ai.engagement_distance + (Math.random() * 300));
};
if (_local4 < _local3){
closest_id_array[_local4] = _local8;
closest_distance_array[_local4] = _local11;
_local4++;
} else {
_local12 = 100000000;
_local13 = -1;
_local14 = 0;
while (_local14 < _local4) {
if (closest_distance_array[_local14] < _local12){
_local12 = closest_distance_array[_local14];
_local13 = 0;
};
_local14++;
};
if (_local12 > _local11){
closest_distance_array[_local13] = _local11;
closest_id_array[_local13] = _local8;
};
};
};
};
};
};
_local8++;
};
};
_local7 = 0;
while (_local7 < _local4) {
npc_list[closest_id_array[_local7]].engage_status = BaseNPC.ENGAGE_PLAYER;
_local7++;
};
}
}
}//package
Section 177
//preloader (preloader)
package {
import flash.events.*;
import flash.display.*;
import flash.system.*;
import flash.text.*;
public class preloader extends MovieClip {
var app:Application;
var preload_complete:Boolean;
public var load_text:TextField;
public function preloader(){
addFrameScript(489, frame490, 499, frame500);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
preload_complete = false;
app = null;
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
this.loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
addEventListener(Event.ENTER_FRAME, enter_frame_handler);
}
private function enter_frame_handler(_arg1:Event):void{
var _local2:Application;
if (currentFrame == 490){
if (preload_complete == false){
stop();
} else {
play();
};
};
if (currentFrame == 500){
if (!_local2){
_local2 = new Application();
addChild(_local2);
_local2.initialize();
removeEventListener(Event.ENTER_FRAME, enter_frame_handler);
};
};
}
function frame500(){
stop();
}
private function onLoadProgress(_arg1:ProgressEvent):void{
var _local2:int;
var _local3:int;
var _local4:int;
if (this.load_text){
_local2 = ((_arg1.bytesLoaded / _arg1.bytesTotal) * 100);
_local3 = (_arg1.bytesTotal / 1000000);
_local4 = ((_arg1.bytesTotal - (_local3 * 1000000)) / 10000);
this.load_text.text = ((((((("preloading: " + _local2.toString()) + "%") + " (of ") + _local3) + ".") + _local4) + " MB)");
};
}
function frame490(){
stop();
}
private function completeHandler(_arg1:Event):void{
trace("preload: complete");
preload_complete = true;
}
}
}//package
Section 178
//Projectile (Projectile)
package {
import flash.display.*;
public class Projectile extends MovieClip {
public var screen_pos:Vector2D;
public var px:Number;
public var py:Number;
public var active_time:Number;
public var type:int;
public var vx:Number;
public var vy:Number;
public function Projectile(){
type = -1;
active_time = 0;
screen_pos = new Vector2D(0, 0);
}
}
}//package
Section 179
//ProjectileManager (ProjectileManager)
package {
public class ProjectileManager {
var projectile_list:Array;
public static const PT_FIREBALL:int = 1;
public static const PT_KNIFE:int = 0;
public function ProjectileManager(){
projectile_list = new Array();
}
public function update():void{
var _local1:Number;
var _local2:Boolean;
var _local3:WorldDatabase;
var _local4:GameCamera;
var _local5:DamageEvent;
var _local6:int;
var _local7:Projectile;
_local1 = (1 / 30);
_local3 = Application.get_singleton().game.world_database;
_local4 = Application.get_singleton().game.camera;
_local5 = new DamageEvent();
_local6 = 0;
while (_local6 < projectile_list.length) {
_local2 = false;
_local7 = projectile_list[_local6];
if (!_local7){
} else {
_local7.active_time = (_local7.active_time + _local1);
if (_local7.active_time > 5){
_local2 = true;
};
_local7.px = (_local7.px + (_local7.vx * _local1));
_local7.py = (_local7.py + (_local7.vy * _local1));
if (_local3.check_x_collision(_local7.px, _local7.py, 10, 5) == true){
_local2 = true;
};
_local5.hp_amount = 50;
_local5.faction_id = 1;
_local5.npc_location.x = _local7.x;
_local5.npc_location.y = _local7.y;
_local5.world_location.x = _local7.x;
_local5.world_location.y = _local7.y;
if (_local7.type == PT_KNIFE){
_local5.damage_size.x = 15;
_local5.damage_size.y = 2;
_local5.allowed_areas = 0;
} else {
if (_local7.type == PT_FIREBALL){
_local5.damage_size.x = 15;
_local5.damage_size.y = 30;
_local5.allowed_areas = 1;
};
};
_local5.knockback = 20;
if (Application.get_singleton().game.execute_damage(_local5)){
_local2 = true;
Application.get_singleton().audio.sfx_event(SoundManager.SM_NPC_HIT);
};
if (_local2){
Application.get_singleton().layer_objects.removeChild(_local7);
projectile_list[_local6] = null;
} else {
_local4.get_tile_position(_local7.px, _local7.py, 0, _local7.screen_pos);
_local7.x = _local7.screen_pos.x;
_local7.y = _local7.screen_pos.y;
if (_local7.vx > 0){
_local7.scaleX = -1;
} else {
_local7.scaleX = 1;
};
};
};
_local6++;
};
}
public function create(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number){
var _local6:Projectile;
var _local7:int;
if (_arg1 == PT_KNIFE){
_local6 = new Knife();
};
if (_arg1 == PT_FIREBALL){
_local6 = new Fireball();
};
_local6.type = _arg1;
_local6.px = _arg2;
_local6.py = _arg3;
_local6.vx = _arg4;
_local6.vy = _arg5;
Application.get_singleton().layer_objects.addChild(_local6);
_local7 = 0;
while (_local7 < projectile_list.length) {
if (projectile_list[_local7] == null){
projectile_list[_local7] = _local6;
return;
};
_local7++;
};
projectile_list.push(_local6);
}
}
}//package
Section 180
//ScoreManager (ScoreManager)
package {
public class ScoreManager {
var current_message:String;
var current_message_time:int;
public var current_score:int;
public var display_score:int;
public var chi_value:Number;
public var damage_since_last_kill:Boolean;
public var player_lives:int;
public var elapsed_time:int;
var number_of_kills_since_damage:int;
public static const SCORE_EVENT_BASIC_KILL:int = 2;
public static const SCORE_EVENT_CHI_MOVE:int = 7;
public static const SCORE_EVENT_WIN_GAME:int = 8;
public static const SCORE_EVENT_ADVANCED_HIT:int = 1;
public static const SCORE_EVENT_PLAYER_DEATH:int = 6;
public static const SCORE_EVENT_BASIC_HIT:int = 0;
public static const SCORE_EVENT_PLAYER_DAMAGE:int = 4;
public static const SCORE_EVENT_BOSS_KILL:int = 5;
public function ScoreManager(){
display_score = 0;
current_score = 0;
chi_value = 0;
elapsed_time = 0;
player_lives = 3;
damage_since_last_kill = false;
number_of_kills_since_damage = 0;
current_message = null;
current_message_time = 0;
}
public function update():void{
var _local1:Interface;
var _local2:Boolean;
_local1 = Application.get_singleton().game.game_interface;
_local2 = false;
if (display_score < current_score){
display_score = (display_score + 125);
if (display_score > current_score){
display_score = current_score;
};
_local2 = true;
} else {
if (display_score > current_score){
display_score = (display_score - 125);
if (display_score < current_score){
display_score = current_score;
};
};
};
if (_local1){
_local1.score.text = display_score.toString();
_local1.score.alpha = 1;
if (current_message){
current_message_time--;
if (current_message_time < 12){
_local1.special_message.alpha = (current_message_time / 12);
_local1.special_message_2.alpha = (current_message_time / 12);
};
if (current_message_time <= 0){
current_message = null;
_local1.special_message.text = "";
_local1.special_message_2.text = "";
};
};
};
}
public function get_current_score():int{
return (current_score);
}
public function print_special_message(_arg1:String, _arg2:String):void{
var _local3:Interface;
current_message = _arg1;
current_message_time = 75;
_local3 = Application.get_singleton().game.game_interface;
if (_local3){
_local3.special_message.text = current_message;
_local3.special_message_2.text = _arg2;
_local3.special_message.alpha = 1;
_local3.special_message_2.alpha = 1;
};
}
public function send_event(_arg1:int, _arg2:BaseNPC=null){
var _local3:Boolean;
var _local4:Boolean;
var _local5:int;
if (_arg1 == SCORE_EVENT_BASIC_KILL){
_local4 = false;
if (damage_since_last_kill == false){
_local4 = true;
if (_arg2){
if (_arg2.damaged_player == true){
_local4 = false;
};
};
};
if (_local4){
if (number_of_kills_since_damage == 24){
current_score = (current_score + 25000);
print_special_message("Zen Master (x25)!!!!!!!", "+25000");
} else {
if (number_of_kills_since_damage == 9){
current_score = (current_score + 10000);
print_special_message("Ninja warrior! (x10)!!!!!", "+10000");
} else {
if (number_of_kills_since_damage == 4){
current_score = (current_score + 5000);
print_special_message("Flawless (x5)!!!", "+5000");
} else {
if (number_of_kills_since_damage == 2){
current_score = (current_score + 2000);
print_special_message("Triple perfect!!", "+2000");
} else {
if (number_of_kills_since_damage == 1){
current_score = (current_score + 1000);
print_special_message("Perfect (x2)!", "+1000");
} else {
current_score = (current_score + 500);
print_special_message("Perfect", "+500");
};
};
};
};
};
number_of_kills_since_damage++;
};
};
_local3 = false;
if (_arg1 == SCORE_EVENT_BASIC_HIT){
current_score = (current_score + 10);
_local3 = true;
chi_value = (chi_value + 0.1);
if (chi_value > 1){
chi_value = 1;
};
} else {
if (_arg1 == SCORE_EVENT_ADVANCED_HIT){
current_score = (current_score + 25);
} else {
if (_arg1 == SCORE_EVENT_BASIC_KILL){
current_score = (current_score + 100);
damage_since_last_kill = false;
_local3 = true;
chi_value = (chi_value + 0.2);
if (chi_value > 1){
chi_value = 1;
};
} else {
if (_arg1 == SCORE_EVENT_PLAYER_DAMAGE){
damage_since_last_kill = true;
number_of_kills_since_damage = 0;
_local3 = true;
chi_value = (chi_value - 0.2);
if (chi_value < 0){
chi_value = 0;
};
} else {
if (_arg1 == SCORE_EVENT_PLAYER_DEATH){
damage_since_last_kill = false;
number_of_kills_since_damage = 0;
if (player_lives > 1){
_local5 = (current_score * 0.2);
current_score = (current_score - _local5);
print_special_message("Death! (-20%)", ("-" + _local5));
};
_local3 = true;
chi_value = 0;
} else {
if (_arg1 == SCORE_EVENT_BOSS_KILL){
if (damage_since_last_kill == false){
current_score = (current_score + 25000);
print_special_message("Boss PERFECT!!!", "+25000");
} else {
current_score = (current_score + 10000);
print_special_message("Boss kill!", "+10000");
};
} else {
if (_arg1 == SCORE_EVENT_CHI_MOVE){
chi_value = 0;
_local3 = true;
} else {
if (_arg1 == SCORE_EVENT_WIN_GAME){
current_score = (current_score + 50000);
display_score = current_score;
print_special_message("Final boss DEFEATED!!!", "+50000");
};
};
};
};
};
};
};
};
if (_local3){
Application.get_singleton().game.game_interface.notify_chi_change(chi_value);
};
}
}
}//package
Section 181
//SFXBigHit1 (SFXBigHit1)
package {
import flash.media.*;
public dynamic class SFXBigHit1 extends Sound {
}
}//package
Section 182
//SFXBigHit2 (SFXBigHit2)
package {
import flash.media.*;
public dynamic class SFXBigHit2 extends Sound {
}
}//package
Section 183
//SFXBoss1Death (SFXBoss1Death)
package {
import flash.media.*;
public dynamic class SFXBoss1Death extends Sound {
}
}//package
Section 184
//SFXBoss3Death (SFXBoss3Death)
package {
import flash.media.*;
public dynamic class SFXBoss3Death extends Sound {
}
}//package
Section 185
//SFXChi1 (SFXChi1)
package {
import flash.media.*;
public dynamic class SFXChi1 extends Sound {
}
}//package
Section 186
//SFXChi2 (SFXChi2)
package {
import flash.media.*;
public dynamic class SFXChi2 extends Sound {
}
}//package
Section 187
//SFXChi3 (SFXChi3)
package {
import flash.media.*;
public dynamic class SFXChi3 extends Sound {
}
}//package
Section 188
//SFXDeath1 (SFXDeath1)
package {
import flash.media.*;
public dynamic class SFXDeath1 extends Sound {
}
}//package
Section 189
//SFXDeath2 (SFXDeath2)
package {
import flash.media.*;
public dynamic class SFXDeath2 extends Sound {
}
}//package
Section 190
//SFXDeath3 (SFXDeath3)
package {
import flash.media.*;
public dynamic class SFXDeath3 extends Sound {
}
}//package
Section 191
//SFXDeath4 (SFXDeath4)
package {
import flash.media.*;
public dynamic class SFXDeath4 extends Sound {
}
}//package
Section 192
//SFXDeath5 (SFXDeath5)
package {
import flash.media.*;
public dynamic class SFXDeath5 extends Sound {
}
}//package
Section 193
//SFXDeath6 (SFXDeath6)
package {
import flash.media.*;
public dynamic class SFXDeath6 extends Sound {
}
}//package
Section 194
//SFXDeath7 (SFXDeath7)
package {
import flash.media.*;
public dynamic class SFXDeath7 extends Sound {
}
}//package
Section 195
//SFXFireball (SFXFireball)
package {
import flash.media.*;
public dynamic class SFXFireball extends Sound {
}
}//package
Section 196
//SFXFootL1 (SFXFootL1)
package {
import flash.media.*;
public dynamic class SFXFootL1 extends Sound {
}
}//package
Section 197
//SFXFootL2 (SFXFootL2)
package {
import flash.media.*;
public dynamic class SFXFootL2 extends Sound {
}
}//package
Section 198
//SFXFootR1 (SFXFootR1)
package {
import flash.media.*;
public dynamic class SFXFootR1 extends Sound {
}
}//package
Section 199
//SFXFootR2 (SFXFootR2)
package {
import flash.media.*;
public dynamic class SFXFootR2 extends Sound {
}
}//package
Section 200
//SFXHit1 (SFXHit1)
package {
import flash.media.*;
public dynamic class SFXHit1 extends Sound {
}
}//package
Section 201
//SFXHit2 (SFXHit2)
package {
import flash.media.*;
public dynamic class SFXHit2 extends Sound {
}
}//package
Section 202
//SFXHit3 (SFXHit3)
package {
import flash.media.*;
public dynamic class SFXHit3 extends Sound {
}
}//package
Section 203
//SFXJump (SFXJump)
package {
import flash.media.*;
public dynamic class SFXJump extends Sound {
}
}//package
Section 204
//SFXKnifeThrow (SFXKnifeThrow)
package {
import flash.media.*;
public dynamic class SFXKnifeThrow extends Sound {
}
}//package
Section 205
//SFXPHit1 (SFXPHit1)
package {
import flash.media.*;
public dynamic class SFXPHit1 extends Sound {
}
}//package
Section 206
//SFXPHit2 (SFXPHit2)
package {
import flash.media.*;
public dynamic class SFXPHit2 extends Sound {
}
}//package
Section 207
//SFXPHit3 (SFXPHit3)
package {
import flash.media.*;
public dynamic class SFXPHit3 extends Sound {
}
}//package
Section 208
//SFXPHit4 (SFXPHit4)
package {
import flash.media.*;
public dynamic class SFXPHit4 extends Sound {
}
}//package
Section 209
//SFXPlayerDeath (SFXPlayerDeath)
package {
import flash.media.*;
public dynamic class SFXPlayerDeath extends Sound {
}
}//package
Section 210
//SFXSwing1 (SFXSwing1)
package {
import flash.media.*;
public dynamic class SFXSwing1 extends Sound {
}
}//package
Section 211
//SFXSwing2 (SFXSwing2)
package {
import flash.media.*;
public dynamic class SFXSwing2 extends Sound {
}
}//package
Section 212
//SFXTeleport (SFXTeleport)
package {
import flash.media.*;
public dynamic class SFXTeleport extends Sound {
}
}//package
Section 213
//SoundIcon (SoundIcon)
package {
import flash.display.*;
public dynamic class SoundIcon extends MovieClip {
public function SoundIcon(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 214
//SoundManager (SoundManager)
package {
import flash.media.*;
public class SoundManager {
var sound_enabled:Boolean;
var fading_out:Boolean;
var music_transform:SoundTransform;
var music_files:Array;
var music_channel:SoundChannel;
var foot_counter:Boolean;
var active_music:int;
var music_volume:Number;
public static const SM_PLAYER_SWING:int = 1;
public static const SM_NPC_HIT:int = 0;
public static const SM_BOSS1_DEATH:int = 3;
public static const SM_BOSS3_DEATH:int = 12;
public static const SM_PLAYER_HIT:int = 9;
public static const SM_PLAYER_JUMP:int = 4;
public static const SM_KNIFE_THROW:int = 6;
public static const SM_BOSS3_TELEPORT:int = 10;
public static const SM_NPC_DEATH:int = 2;
public static const SM_BOSS3_FIREBALL:int = 11;
public static const SM_CHI_MOVE:int = 8;
public static const SM_PLAYER_DEATH:int = 7;
public static const SM_FOOTSTEP:int = 5;
public function SoundManager(){
active_music = -1;
sound_enabled = true;
fading_out = false;
music_volume = 0;
music_files = new Array();
music_files.push(new MusicIntro());
music_files.push(new MusicDojo());
music_files.push(new MusicMountain1());
music_files.push(new MusicCave());
music_files.push(null);
music_files.push(new MusicTemple2());
music_files.push(new MusicBoss2());
music_files.push(new MusicEndBoss());
}
public function start_music(_arg1:uint, _arg2=0.65){
if (music_files[_arg1] == null){
return;
};
if (sound_enabled == false){
return;
};
if (_arg1 == active_music){
return;
};
fading_out = false;
music_volume = _arg2;
active_music = _arg1;
music_transform = new SoundTransform(music_volume, 0);
music_channel = music_files[active_music].play(0, 999, music_transform);
}
public function update():void{
if (active_music != -1){
if (fading_out){
music_volume = (music_volume - 0.04);
if (music_volume < 0){
music_volume = 0;
fading_out = false;
music_channel.stop();
} else {
music_transform.volume = music_volume;
music_channel.soundTransform = music_transform;
};
};
};
}
public function enable_sound(_arg1:Boolean):void{
if (_arg1 != sound_enabled){
sound_enabled = _arg1;
if (_arg1 == false){
music_stop();
};
};
}
public function music_stop(){
if (active_music != -1){
music_volume = 0;
fading_out = false;
if (music_channel){
music_channel.stop();
};
};
}
public function sfx_event(_arg1:int){
var _local2:Sound;
var _local3:int;
var _local4:Number;
var _local5:SoundTransform;
if (sound_enabled == false){
return;
};
_local4 = 1;
if (_arg1 == SM_PLAYER_SWING){
_local3 = (Math.random() * 2);
if (_local3 == 0){
_local2 = new SFXSwing1();
} else {
if (_local3 == 1){
_local2 = new SFXSwing2();
};
};
} else {
if (_arg1 == SM_NPC_HIT){
_local3 = (Math.random() * 5);
if (_local3 == 0){
_local2 = new SFXBigHit1();
} else {
if (_local3 == 1){
_local2 = new SFXBigHit2();
} else {
if (_local3 == 2){
_local2 = new SFXHit1();
} else {
if (_local3 == 3){
_local2 = new SFXHit2();
} else {
if (_local3 == 4){
_local2 = new SFXHit3();
};
};
};
};
};
} else {
if (_arg1 == SM_PLAYER_HIT){
_local4 = 0.5;
_local3 = (Math.random() * 4);
if (_local3 == 0){
_local2 = new SFXPHit1();
} else {
if (_local3 == 1){
_local2 = new SFXPHit2();
} else {
if (_local3 == 2){
_local2 = new SFXPHit3();
} else {
if (_local3 == 3){
_local2 = new SFXPHit4();
};
};
};
};
} else {
if (_arg1 == SM_CHI_MOVE){
_local3 = (Math.random() * 3);
if (_local3 == 0){
_local2 = new SFXChi1();
} else {
if (_local3 == 1){
_local2 = new SFXChi2();
} else {
if (_local3 == 2){
_local2 = new SFXChi3();
};
};
};
} else {
if (_arg1 == SM_NPC_DEATH){
_local3 = (Math.random() * 7);
if (_local3 == 0){
_local2 = new SFXDeath1();
} else {
if (_local3 == 1){
_local2 = new SFXDeath2();
} else {
if (_local3 == 2){
_local2 = new SFXDeath3();
} else {
if (_local3 == 3){
_local2 = new SFXDeath4();
} else {
if (_local3 == 4){
_local2 = new SFXDeath5();
} else {
if (_local3 == 5){
_local2 = new SFXDeath6();
} else {
if (_local3 == 6){
_local2 = new SFXDeath7();
};
};
};
};
};
};
};
} else {
if (_arg1 == SM_BOSS1_DEATH){
_local2 = new SFXBoss1Death();
} else {
if (_arg1 == SM_PLAYER_DEATH){
_local2 = new SFXPlayerDeath();
} else {
if (_arg1 == SM_PLAYER_JUMP){
_local4 = 0.8;
_local2 = new SFXJump();
} else {
if (_arg1 == SM_KNIFE_THROW){
_local4 = 0.4;
_local2 = new SFXKnifeThrow();
} else {
if (_arg1 == SM_FOOTSTEP){
_local4 = 0.5;
_local3 = (Math.random() * 2);
foot_counter = !(foot_counter);
if (foot_counter){
if (_local3 == 0){
_local2 = new SFXFootL1();
} else {
_local2 = new SFXFootL2();
};
} else {
if (_local3 == 0){
_local2 = new SFXFootR1();
} else {
_local2 = new SFXFootR2();
};
};
} else {
if (_arg1 == SM_BOSS3_TELEPORT){
_local2 = new SFXTeleport();
} else {
if (_arg1 == SM_BOSS3_FIREBALL){
_local2 = new SFXFireball();
} else {
if (_arg1 == SM_BOSS3_DEATH){
_local2 = new SFXBoss3Death();
};
};
};
};
};
};
};
};
};
};
};
};
};
if (_local2){
if (_local4 != 1){
_local5 = new SoundTransform(_local4, 0);
_local2.play(0, 0, _local5);
} else {
_local2.play();
};
};
}
public function music_fade_out(){
fading_out = true;
}
}
}//package
Section 215
//SplashScreen (SplashScreen)
package {
import flash.display.*;
public class SplashScreen extends MovieClip {
var clip:MovieClip;
public var ready_to_exit:Boolean;
public function shutdown():void{
}
public function initialize():void{
ready_to_exit = false;
}
public function update():void{
}
}
}//package
Section 216
//TempleA (TempleA)
package {
import flash.display.*;
public dynamic class TempleA extends MovieClip {
public var templebridge:MovieClip;
public var road1:MovieClip;
public var mountain1:MovieClip;
public var temple_entrance:MovieClip;
public var fill:MovieClip;
public var cliff:MovieClip;
public var lowdepth:MovieClip;
}
}//package
Section 217
//TempleB (TempleB)
package {
import flash.display.*;
public dynamic class TempleB extends MovieClip {
public var mountain1:MovieClip;
public var mountain2:MovieClip;
public var woodfloor:MovieClip;
public var fill:MovieClip;
public var basefloor:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 218
//TempleC (TempleC)
package {
import flash.display.*;
public dynamic class TempleC extends MovieClip {
public var floating2:MovieClip;
public var mountain1:MovieClip;
public var woodfloor:MovieClip;
public var fill:MovieClip;
public var basefloor:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 219
//TempleD (TempleD)
package {
import flash.display.*;
public dynamic class TempleD extends MovieClip {
public var middepth:MovieClip;
public var woodfloor:MovieClip;
public var fill:MovieClip;
public var cliff:MovieClip;
public var lowdepth:MovieClip;
}
}//package
Section 220
//TempleE (TempleE)
package {
import flash.display.*;
public dynamic class TempleE extends MovieClip {
public var mountain1:MovieClip;
public var mountain2:MovieClip;
public var woodfloor:MovieClip;
public var fill:MovieClip;
public var basefloor:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 221
//TempleEnd (TempleEnd)
package {
import flash.display.*;
public dynamic class TempleEnd extends MovieClip {
public var mountain1:MovieClip;
public var mountain2:MovieClip;
public var fill:MovieClip;
public var basefloor:MovieClip;
public var cliff:MovieClip;
}
}//package
Section 222
//TempleF (TempleF)
package {
import flash.display.*;
public dynamic class TempleF extends MovieClip {
public var floating2:MovieClip;
public var mountain1:MovieClip;
public var woodfloor:MovieClip;
public var fill:MovieClip;
public var basefloor2:MovieClip;
public var basefloor4:MovieClip;
public var basefloor5:MovieClip;
public var basefloor6:MovieClip;
public var basefloor7:MovieClip;
public var basefloor3:MovieClip;
public var basefloor8:MovieClip;
public var basefloor:MovieClip;
public var cliff:MovieClip;
public var basefloora:MovieClip;
}
}//package
Section 223
//TempleLevelA (TempleLevelA)
package {
public class TempleLevelA extends Level {
public function TempleLevelA(){
music_id = 2;
}
override public function level_setup():void{
var _local1:PopulationNode;
level_object = new TempleA();
player_start = new Vector2D(-1420, 296);
camera_left_limit = -2000;
camera_right_limit = 240;
finish_zone_active = true;
finish_zone_center = new Vector2D(940, 300);
finish_zone_size = new Vector2D(200, 500);
respawn_points.push(new Vector2D(-1000, 300));
_local1 = new PopulationNode();
_local1.location = new Vector2D(0, 300);
_local1.enemy_type = PopulationNode.PT_BOSS_A;
_local1.total_enemies = 1;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.1;
_local1.start_distance = 1000;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(-800, 300);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 2;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.5;
_local1.start_distance = 500;
population_nodes.push(_local1);
}
}
}//package
Section 224
//TempleLevelB (TempleLevelB)
package {
public class TempleLevelB extends Level {
public function TempleLevelB(){
music_id = 5;
}
override public function level_setup():void{
var _local1:PopulationNode;
level_object = new TempleB();
engage_count = 2;
player_start = new Vector2D(-275, 105);
camera_left_limit = -550;
camera_right_limit = 2000;
finish_zone_active = true;
finish_zone_center = new Vector2D(1800, -600);
finish_zone_size = new Vector2D(200, 300);
respawn_points.push(new Vector2D(-200, 105));
respawn_points.push(new Vector2D(900, 105));
respawn_points.push(new Vector2D(309, -360));
respawn_points.push(new Vector2D(30, -560));
_local1 = new PopulationNode();
_local1.location = new Vector2D(500, 105);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_rate = 1.5;
_local1.start_distance = 1500;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(900, 105);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 3;
_local1.start_distance = 1000;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(1200, 105);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 0;
_local1.start_distance = 1000;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(1500, 105);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 2;
_local1.start_distance = 1000;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(800, -379);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 3;
_local1.start_distance = 1500;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(400, -379);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_rate = 1;
_local1.start_distance = 300;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(300, -379);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 0.1;
_local1.start_distance = 300;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(380, -530);
_local1.spawn_location = new Vector2D(1000, -580);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 2;
_local1.enemy_rate = 1.5;
_local1.start_distance = 150;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(380, -530);
_local1.spawn_location = new Vector2D(1200, -580);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 0.5;
_local1.start_distance = 150;
population_nodes.push(_local1);
}
override public function setup_pathfind(_arg1:Pathfind):void{
var _local2:PathfindZone;
var _local3:PathfindConnection;
_local2 = new PathfindZone(-400, 2000, 200);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = 1890;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 1;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-600, 1900, -160);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = 1820;
_local3.left_side = false;
_local3.jump_connection = false;
_local3.zone_connection = 0;
_local2.connection_list.push(_local3);
_local3 = new PathfindConnection();
_local3.x_boundary = -440;
_local3.left_side = false;
_local3.jump_connection = true;
_local3.zone_connection = 2;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-480, 2000, -550);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -420;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 1;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
}
}
}//package
Section 225
//TempleLevelC (TempleLevelC)
package {
public class TempleLevelC extends Level {
public function TempleLevelC(){
music_id = 5;
}
override public function level_setup():void{
var _local1:PopulationNode;
level_object = new TempleC();
engage_count = 2;
player_start = new Vector2D(-480, 440);
camera_left_limit = -750;
camera_right_limit = 900;
finish_zone_active = true;
finish_zone_center = new Vector2D(1200, 0);
finish_zone_size = new Vector2D(100, 100);
_local1 = new PopulationNode();
_local1.location = new Vector2D(170, 250);
_local1.spawn_location = new Vector2D(170, 250);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_rate = 2;
_local1.start_distance = 1000;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(490, 100);
_local1.spawn_location = new Vector2D(900, 0);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 1.5;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(490, 100);
_local1.spawn_location = new Vector2D(130, 260);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_rate = 1.5;
_local1.start_distance = 100;
population_nodes.push(_local1);
}
}
}//package
Section 226
//TempleLevelD (TempleLevelD)
package {
public class TempleLevelD extends Level {
public function TempleLevelD(){
music_id = 6;
}
override public function level_setup():void{
var _local1:PopulationNode;
level_object = new TempleD();
engage_count = 2;
player_start = new Vector2D(-500, 160);
camera_left_limit = -850;
camera_right_limit = 500;
finish_zone_active = true;
finish_zone_center = new Vector2D(720, 200);
finish_zone_size = new Vector2D(100, 500);
_local1 = new PopulationNode();
_local1.location = new Vector2D(200, 160);
_local1.enemy_type = PopulationNode.PT_BOSS_B;
_local1.total_enemies = 1;
_local1.enemy_timer = 0;
_local1.enemy_rate = 0.1;
_local1.start_distance = 500;
population_nodes.push(_local1);
}
}
}//package
Section 227
//TempleLevelE (TempleLevelE)
package {
public class TempleLevelE extends Level {
public function TempleLevelE(){
music_id = 5;
}
override public function level_setup():void{
var _local1:PopulationNode;
level_object = new TempleE();
engage_count = 2;
player_start = new Vector2D(-285, -550);
respawn_points.push(new Vector2D(5, -570));
respawn_points.push(new Vector2D(1500, -370));
respawn_points.push(new Vector2D(1400, -200));
respawn_points.push(new Vector2D(-150, -200));
respawn_points.push(new Vector2D(140, 140));
camera_left_limit = -550;
camera_right_limit = 1800;
finish_zone_active = true;
finish_zone_center = new Vector2D(1640, 200);
finish_zone_size = new Vector2D(200, 500);
_local1 = new PopulationNode();
_local1.location = new Vector2D(505, -370);
_local1.spawn_location = new Vector2D(-75, -550);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(505, -370);
_local1.spawn_location = new Vector2D(1100, -370);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 2;
_local1.enemy_rate = 4.5;
_local1.start_distance = 300;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(1305, -370);
_local1.spawn_location = new Vector2D(1600, -370);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 0.45;
_local1.start_distance = 200;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(1783, -300);
_local1.spawn_location = new Vector2D(900, -200);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_rate = 6.1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(1783, -300);
_local1.spawn_location = new Vector2D(800, -200);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 3.1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(800, -300);
_local1.spawn_location = new Vector2D(500, -200);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 2.1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(300, -300);
_local1.spawn_location = new Vector2D(-200, -200);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 2;
_local1.enemy_rate = 1.1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(80, 110);
_local1.spawn_location = new Vector2D(800, 110);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 4.1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(80, 110);
_local1.spawn_location = new Vector2D(1000, 110);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 1;
_local1.enemy_rate = 1.4;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(500, 110);
_local1.spawn_location = new Vector2D(1200, 110);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 1.4;
_local1.start_distance = 100;
population_nodes.push(_local1);
}
override public function setup_pathfind(_arg1:Pathfind):void{
var _local2:PathfindZone;
var _local3:PathfindConnection;
_local2 = new PathfindZone(400, 2000, -520);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = 415;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 1;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-600, 1760, -340);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = 1740;
_local3.left_side = false;
_local3.jump_connection = false;
_local3.zone_connection = 2;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-370, 2000, -160);
_local2.connection_list = new Array();
_local3 = new PathfindConnection();
_local3.x_boundary = -330;
_local3.left_side = true;
_local3.jump_connection = false;
_local3.zone_connection = 3;
_local2.connection_list.push(_local3);
_arg1.zone_list.push(_local2);
_local2 = new PathfindZone(-600, 2000, 220);
_local2.connection_list = new Array();
_arg1.zone_list.push(_local2);
}
}
}//package
Section 228
//TempleLevelEnd (TempleLevelEnd)
package {
public class TempleLevelEnd extends Level {
var end_started:Boolean;
var end_timer:int;
public function TempleLevelEnd(){
music_id = 7;
}
override public function level_setup():void{
var _local1:PopulationNode;
end_started = false;
end_timer = 0;
level_object = new TempleEnd();
engage_count = 2;
player_start = new Vector2D(-800, 230);
respawn_points.push(new Vector2D(-800, 230));
respawn_points.push(new Vector2D(-100, 230));
camera_left_limit = -950;
camera_right_limit = 1500;
_local1 = new PopulationNode();
_local1.location = new Vector2D(400, 250);
_local1.spawn_location = new Vector2D(700, 250);
_local1.enemy_type = PopulationNode.PT_BOSS_C;
_local1.total_enemies = 1;
_local1.enemy_rate = 1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(-800, 250);
_local1.spawn_location = new Vector2D(100, 250);
_local1.enemy_type = PopulationNode.PT_ENEMY_K;
_local1.total_enemies = 1;
_local1.enemy_rate = 1;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(-800, 250);
_local1.spawn_location = new Vector2D(100, 250);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 4;
_local1.enemy_rate = 2;
_local1.start_distance = 100;
population_nodes.push(_local1);
}
override public function update():void{
super.update();
if (end_started){
end_timer++;
if (end_timer == 100){
Application.get_singleton().game.game_win = true;
};
};
}
override public function death_notification(_arg1:int):void{
if (_arg1 == PopulationNode.PT_BOSS_C){
Application.get_singleton().audio.music_stop();
Application.get_singleton().game.score_manager.send_event(ScoreManager.SCORE_EVENT_WIN_GAME);
end_started = true;
};
}
}
}//package
Section 229
//TempleLevelF (TempleLevelF)
package {
public class TempleLevelF extends Level {
public function TempleLevelF(){
music_id = 5;
}
override public function level_setup():void{
var _local1:PopulationNode;
level_object = new TempleF();
engage_count = 2;
player_start = new Vector2D(-480, 440);
camera_left_limit = -750;
camera_right_limit = 900;
finish_zone_active = true;
finish_zone_center = new Vector2D(1200, 0);
finish_zone_size = new Vector2D(100, 100);
_local1 = new PopulationNode();
_local1.location = new Vector2D(170, 250);
_local1.spawn_location = new Vector2D(170, 250);
_local1.enemy_type = PopulationNode.PT_ENEMY_B;
_local1.total_enemies = 2;
_local1.enemy_rate = 2;
_local1.start_distance = 1000;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(120, 260);
_local1.spawn_location = new Vector2D(700, 120);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 3;
_local1.enemy_rate = 2.5;
_local1.start_distance = 100;
population_nodes.push(_local1);
_local1 = new PopulationNode();
_local1.location = new Vector2D(40, 263);
_local1.spawn_location = new Vector2D(-570, 440);
_local1.enemy_type = PopulationNode.PT_ENEMY_A;
_local1.total_enemies = 2;
_local1.enemy_rate = 1.5;
_local1.start_distance = 100;
population_nodes.push(_local1);
}
}
}//package
Section 230
//TileDatabase (TileDatabase)
package {
public class TileDatabase {
static function create_tile(_arg1:String):BaseTile{
var _local2:FloorTile;
var _local3:WallTile;
var _local4:BaseTile;
if (_arg1.indexOf("fill") != -1){
_local4 = new BaseTile();
return (_local4);
};
if (_arg1.indexOf("cloud") != -1){
_local4 = new BaseTile();
_local4.depth = 98;
return (_local4);
};
if (_arg1.indexOf("road") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 27;
return (_local2);
};
if (_arg1.indexOf("basefloor") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 0;
return (_local2);
};
if (_arg1.indexOf("woodfloor") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 40;
return (_local2);
};
if (_arg1.indexOf("rockstair") != -1){
_local2 = new FloorTile();
return (_local2);
};
if (_arg1.indexOf("rockstair2") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 94;
return (_local2);
};
if (_arg1.indexOf("bridge") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 93;
return (_local2);
};
if (_arg1.indexOf("templebridge") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 0;
return (_local2);
};
if (_arg1.indexOf("temple_entrance") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 400;
return (_local2);
};
if (_arg1.indexOf("cliff") != -1){
_local3 = new WallTile();
return (_local3);
};
if (_arg1.indexOf("mountain1") != -1){
_local4 = new BaseTile();
_local4.depth = 85;
return (_local4);
};
if (_arg1.indexOf("mountain2") != -1){
_local4 = new BaseTile();
_local4.depth = 75;
return (_local4);
};
if (_arg1.indexOf("stalag") != -1){
_local4 = new BaseTile();
_local4.depth = 20;
return (_local4);
};
if (_arg1.indexOf("lowdepth") != -1){
_local4 = new BaseTile();
_local4.depth = 20;
return (_local4);
};
if (_arg1.indexOf("middepth") != -1){
_local4 = new BaseTile();
_local4.depth = 40;
return (_local4);
};
if (_arg1.indexOf("vld") != -1){
_local4 = new BaseTile();
_local4.depth = 5;
return (_local4);
};
if (_arg1.indexOf("floating") != -1){
_local4 = new BaseTile();
_local4.depth = -20;
return (_local4);
};
if (_arg1.indexOf("floating2") != -1){
_local4 = new BaseTile();
_local4.depth = -10;
return (_local4);
};
if (_arg1.indexOf("platform") != -1){
_local2 = new FloorTile();
_local2.top_adjust = 10;
return (_local2);
};
return (null);
}
}
}//package
Section 231
//TitleMovie (TitleMovie)
package {
import flash.display.*;
public dynamic class TitleMovie extends MovieClip {
public var btn_play_game:MovieClip;
public var btn_audio:MovieClip;
public var btn_high_scores:MovieClip;
public var btn_credits:MovieClip;
public var btn_more_stick:MovieClip;
public function TitleMovie(){
addFrameScript(38, frame39, 131, frame132, 142, frame143, 152, frame153);
}
function frame143(){
stop();
}
function frame153(){
stop();
}
function frame39(){
}
function frame132(){
gotoAndPlay("start_loop");
}
}
}//package
Section 232
//WallTile (WallTile)
package {
import flash.display.*;
public class WallTile extends BaseTile {
override public function initialize(_arg1:MovieClip):void{
collision_type = CTYPE_WALL;
super.initialize(_arg1);
}
}
}//package
Section 233
//WebScoreAPI (WebScoreAPI)
package {
import flash.events.*;
import flash.net.*;
import utils.*;
import flash.system.*;
public class WebScoreAPI {
var scores_ready:Boolean;
var submit_loader:URLLoader;
var encrypt:MD5;
var view_loader:URLLoader;
var hs_scores:Array;
var hs_names:Array;
static var HK:String = "sc0reHash";
public function WebScoreAPI(){
Security.allowDomain("*");
trace("WebScoreAPI created.");
hs_names = new Array(10);
hs_scores = new Array(10);
encrypt = new MD5();
view_loader = new URLLoader();
view_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
view_loader.addEventListener(Event.COMPLETE, view_callback);
submit_loader = new URLLoader();
submit_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
submit_loader.addEventListener(Event.COMPLETE, submit_callback);
scores_ready = false;
}
public function retrieve_scores(){
var i:int;
var variables:URLVariables;
var request:URLRequest;
scores_ready = false;
i = 0;
while (i < 10) {
hs_names[i] = null;
hs_scores[i] = null;
i = (i + 1);
};
variables = new URLVariables();
variables.viewtype = "FLASH";
request = new URLRequest();
request.url = "http://www.diffusiongames.com/sff_scores.php";
request.method = URLRequestMethod.GET;
request.data = variables;
try {
view_loader.load(request);
} catch(error:Error) {
trace("WebScoreAPI: Unable to load URL");
};
}
public function submit_score(_arg1:String, _arg2:int){
var s_input:String;
var s_result:String;
var variables:URLVariables;
var request:URLRequest;
var player_name = _arg1;
var player_score = _arg2;
scores_ready = false;
s_input = ((player_name + player_score) + HK);
s_result = MD5.hash(s_input);
variables = new URLVariables();
variables.username = player_name;
variables.highscore = player_score;
variables.action = "ADD";
variables.hash = s_result;
request = new URLRequest();
request.url = "http://www.diffusiongames.com/sff_scores.php";
request.method = URLRequestMethod.GET;
request.data = variables;
try {
submit_loader.load(request);
} catch(error:Error) {
trace("WebScoreAPI: Unable to load URL");
};
}
public function submit_callback(_arg1:Event):void{
if (_arg1.currentTarget.data.SUCCESS == "1"){
trace("WebScoreAPI: Score submit successful.");
} else {
trace("WebScoreAPI: Score submit unsuccessful (hash mismatch?)");
};
}
public function scores_available():Boolean{
return (scores_ready);
}
public function view_callback(_arg1:Event):void{
trace("WebScoreAPI: Score view successful.");
scores_ready = true;
hs_names[0] = _arg1.currentTarget.data.NAME0;
hs_scores[0] = _arg1.currentTarget.data.SCORE0;
hs_names[1] = _arg1.currentTarget.data.NAME1;
hs_scores[1] = _arg1.currentTarget.data.SCORE1;
hs_names[2] = _arg1.currentTarget.data.NAME2;
hs_scores[2] = _arg1.currentTarget.data.SCORE2;
hs_names[3] = _arg1.currentTarget.data.NAME3;
hs_scores[3] = _arg1.currentTarget.data.SCORE3;
hs_names[4] = _arg1.currentTarget.data.NAME4;
hs_scores[4] = _arg1.currentTarget.data.SCORE4;
hs_names[5] = _arg1.currentTarget.data.NAME5;
hs_scores[5] = _arg1.currentTarget.data.SCORE5;
hs_names[6] = _arg1.currentTarget.data.NAME6;
hs_scores[6] = _arg1.currentTarget.data.SCORE6;
hs_names[7] = _arg1.currentTarget.data.NAME7;
hs_scores[7] = _arg1.currentTarget.data.SCORE7;
hs_names[8] = _arg1.currentTarget.data.NAME8;
hs_scores[8] = _arg1.currentTarget.data.SCORE8;
hs_names[9] = _arg1.currentTarget.data.NAME9;
hs_scores[9] = _arg1.currentTarget.data.SCORE9;
}
}
}//package
Section 234
//Vector2D (Vector2D)
package {
class Vector2D {
var x:Number;
var y:Number;
function Vector2D(_arg1:Number, _arg2:Number){
x = _arg1;
y = _arg2;
}
public function set(_arg1:Number, _arg2:Number){
x = _arg1;
y = _arg2;
}
public function normalize():void{
var _local1:*;
_local1 = ((x * x) + (y * y));
if (Math.abs(_local1) > 1E-6){
x = (x / _local1);
y = (y / _local1);
};
}
public static function distance_2D(_arg1:Vector2D, _arg2:Vector2D):Number{
return (Math.sqrt((((_arg2.x - _arg1.x) * (_arg2.x - _arg1.x)) + ((_arg2.y - _arg1.y) * (_arg2.y - _arg1.y)))));
}
}
}//package
Section 235
//WorldDatabase (WorldDatabase)
package {
import flash.display.*;
public class WorldDatabase {
var game_ptr:Game;
var tile_list:Array;
var temp_mv:Vector2D;
public function WorldDatabase(_arg1:Game){
game_ptr = _arg1;
temp_mv = new Vector2D(0, 0);
tile_list = new Array();
}
public function add_shape(_arg1:DisplayObject){
var _local2:BaseTile;
var _local3:MovieClip;
if (_arg1.name != null){
if ((_arg1 is MovieClip)){
_local2 = TileDatabase.create_tile(_arg1.name);
if (_local2){
_local2.initialize((_arg1 as MovieClip));
tile_list.push(_local2);
_arg1.cacheAsBitmap = true;
_local3 = (_arg1 as MovieClip);
_local3.enabled = false;
};
};
};
}
public function clear_all_objects():void{
tile_list = new Array();
}
public function box_overlap_2D(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):Boolean{
var _local9:Boolean;
var _local10:Boolean;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:*;
_local9 = false;
_local10 = false;
_local11 = (_arg1 - (_arg3 * 0.5));
_local12 = (_arg1 + (_arg3 * 0.5));
_local13 = (_arg2 - (_arg4 * 0.5));
_local14 = (_arg2 + (_arg4 * 0.5));
_local15 = (_arg5 - (_arg7 * 0.5));
_local16 = (_arg5 + (_arg7 * 0.5));
_local17 = (_arg6 - (_arg8 * 0.5));
_local18 = (_arg6 + (_arg8 * 0.5));
if ((((_local11 > _local15)) && ((_local11 < _local16)))){
_local9 = true;
} else {
if ((((_local12 > _local15)) && ((_local12 < _local16)))){
_local9 = true;
} else {
if ((((_local15 > _local11)) && ((_local15 < _local12)))){
_local9 = true;
} else {
if ((((_local16 > _local11)) && ((_local16 < _local12)))){
_local9 = true;
};
};
};
};
if ((((_local13 > _local17)) && ((_local13 < _local18)))){
_local10 = true;
} else {
if ((((_local14 > _local17)) && ((_local14 < _local18)))){
_local10 = true;
} else {
if ((((_local17 > _local13)) && ((_local17 < _local14)))){
_local10 = true;
} else {
if ((((_local18 > _local13)) && ((_local18 < _local14)))){
_local10 = true;
};
};
};
};
return (((_local9) && (_local10)));
}
public function update():void{
var _local1:GameCamera;
var _local2:int;
var _local3:BaseTile;
var _local4:Number;
var _local5:int;
var _local6:int;
_local1 = Application.get_singleton().game.camera;
temp_mv.x = 0;
temp_mv.y = 0;
_local2 = 0;
while (_local2 < tile_list.length) {
_local3 = tile_list[_local2];
_local4 = ((100 - _local3.depth) / 100);
_local5 = (_local3.original_x - (_local4 * _local1.position_x));
_local6 = (_local3.original_y - (_local4 * _local1.position_y));
temp_mv.x = _local5;
temp_mv.y = _local6;
if (((!((temp_mv.x == _local3.clip_ptr.x))) || (!((temp_mv.y == _local3.clip_ptr.y))))){
_local3.clip_ptr.x = temp_mv.x;
_local3.clip_ptr.y = temp_mv.y;
};
_local2++;
};
}
public function get_ground_y(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:int;
var _local5:BaseTile;
var _local6:Number;
var _local7:Number;
var _local8:*;
var _local9:*;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local3 = 1000000;
_local4 = 0;
while (_local4 < tile_list.length) {
_local5 = tile_list[_local4];
if (_local5.collision_type == BaseTile.CTYPE_GROUND){
_local6 = _local5.original_x;
_local7 = _local5.original_y;
_local8 = _local5.obb_width;
_local9 = _local5.obb_height;
_local10 = ((_local7 - (_local9 * 0.5)) + _local5.top_adjust);
if (_local10 >= _arg2){
_local11 = (_local6 - (_local8 * 0.5));
_local12 = (_local6 + (_local8 * 0.5));
if ((((_arg1 >= _local11)) && ((_arg1 <= _local12)))){
if (_local10 < _local3){
_local3 = _local10;
};
};
};
};
_local4++;
};
return (_local3);
}
public function clip_vector(_arg1:Number, _arg2:Number, _arg3:Vector2D):Boolean{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Boolean;
var _local9:int;
var _local10:BaseTile;
var _local11:Number;
var _local12:Number;
var _local13:*;
var _local14:*;
var _local15:Number;
_local4 = Math.sqrt(((_arg3.x * _arg3.x) + (_arg3.y * _arg3.y)));
_local5 = (_arg3.x / _local4);
_local6 = (_arg3.y / _local4);
_local7 = 1000000;
_local8 = false;
_local9 = 0;
while (_local9 < tile_list.length) {
_local10 = tile_list[_local9];
if (_local10.collision_type == BaseTile.CTYPE_NONE){
} else {
_local11 = _local10.original_x;
_local12 = _local10.original_y;
_local13 = (_local10.obb_width * 0.5);
_local14 = (_local10.obb_height * 0.5);
_local15 = ray_box_collide(_arg1, _arg2, _local5, _local6, _local11, _local12, _local13, _local14);
if (_local15 >= 0){
if (_local15 <= _local4){
if (_local15 < _local7){
_local7 = _local15;
_local8 = true;
};
};
};
};
_local9++;
};
if (_local8){
_arg3.x = (_local5 * _local7);
_arg3.y = (_local6 * _local7);
return (true);
};
return (false);
}
public function ray_box_collide(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):Number{
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:*;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
_local9 = -10000000;
_local10 = 10000000;
_local11 = (_arg5 - _arg1);
_local12 = (_arg6 - _arg2);
_local15 = 0;
_local16 = _local11;
_local17 = _arg3;
if (Math.abs(_local17) > 1E-8){
_local13 = ((_local16 + _arg7) / _local17);
_local14 = ((_local16 - _arg7) / _local17);
if (_local13 > _local14){
_local15 = _local13;
_local13 = _local14;
_local14 = _local15;
};
if (_local13 > _local9){
_local9 = _local13;
};
if (_local14 < _local10){
_local10 = _local14;
};
if (_local9 > _local10){
return (-1);
};
if (_local10 < 0){
return (-1);
};
} else {
if (((((-(_local16) - _arg7) > 0)) || (((-(_local16) + _arg7) < 0)))){
return (-1);
};
};
_local16 = _local12;
_local17 = _arg4;
if (Math.abs(_local17) > 1E-8){
_local13 = ((_local16 + _arg8) / _local17);
_local14 = ((_local16 - _arg8) / _local17);
if (_local13 > _local14){
_local15 = _local13;
_local13 = _local14;
_local14 = _local15;
};
if (_local13 > _local9){
_local9 = _local13;
};
if (_local14 < _local10){
_local10 = _local14;
};
if (_local9 > _local10){
return (-1);
};
if (_local10 < 0){
return (-1);
};
} else {
if (((((-(_local16) - _arg8) > 0)) || (((-(_local16) + _arg8) < 0)))){
return (-1);
};
};
if (_local9 > 0){
return (_local9);
};
return (_local10);
}
public function check_x_collision(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Boolean{
var _local5:int;
var _local6:BaseTile;
var _local7:Number;
var _local8:Number;
var _local9:*;
var _local10:*;
_local5 = 0;
while (_local5 < tile_list.length) {
_local6 = tile_list[_local5];
if (_local6.collision_type == BaseTile.CTYPE_WALL){
_local7 = _local6.original_x;
_local8 = _local6.original_y;
_local9 = _local6.obb_width;
_local10 = _local6.obb_height;
if (box_overlap_2D(_arg1, _arg2, _arg3, _arg4, _local7, _local8, _local9, _local10)){
return (true);
};
};
_local5++;
};
return (false);
}
}
}//package