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

<div style="position:absolute;top:-99px;left:-99px;"><img src="https://tools.swfchan.com/stathit.asp?noj=FRM96851955-20DC&rnd=96851955" width="1" height="1"></div>

armorgames poto-cabenga-5870.swf

This is the info page for
Flash #264413

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


Text
G

N

I

D

A

O

L

9999999999

XXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXX

ENTER YOUR NICKNAME :

SCORE WILL BE SAVED UNDER :

VIEW SCORE

VIEW SCORE

XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX

<p align="center"><font face="Hogg-OBG" size="45" color="#ed257a" letterSpacing="0.000000" kerning="1">You Scored: 342300</font></p>

<p align="center"><font face="Hogg-OBG" size="45" color="#ffff00" letterSpacing="0.000000" kerning="1">High Score: 342300</font></p>

click to submit your score

<p align="left"><font face="Hogg-OBG" size="32" color="#f9ed25" letterSpacing="0.000000" kerning="1">2300</font></p>

<p align="center"><font face="Hogg-OBG" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Hold Button to Dash </font></p>

<p align="right"><font face="Hogg-OBG" size="32" color="#f9ed25" letterSpacing="0.000000" kerning="1">5</font></p>

<p align="right"><font face="Hogg-OBG" size="32" color="#f9ed25" letterSpacing="0.000000" kerning="1">5</font></p>

NEW HIGH SCORE!

f for fullscreen

click here for credits

Art & Design by Richard Hogg

<p align="left"><font face="Hogg-OBG" size="34" color="#673090" letterSpacing="0.000000" kerning="1">High Score: 99999</font></p>

view high scores

click here to return to game

ActionScript [AS3]

Section 1
//Debug (alcon.Debug) package alcon { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; import flash.system.*; public final class Debug { public static const LEVEL_WARN:int = 2; public static const LEVEL_DEBUG:int = 0; public static const LEVEL_INFO:int = 1; public static const LEVEL_FATAL:int = 4; public static const LEVEL_ERROR:int = 3; private static var _stage:Stage; private static var _filterLevel:int = 0; private static var _isEnabled:Boolean = true; private static var _isConnected:Boolean = false; private static var _isPollingFPS:Boolean = false; private static var _stopWatch:StopWatch; private static var _connection:LocalConnection; private static var _fpsMeter:FPSMeter; public static function forceGC():void{ try { } catch(e1:Error) { try { new LocalConnection().connect("forceGC"); new LocalConnection().connect("forceGC"); } catch(e2:Error) { }; }; } private static function send(_arg1:String, _arg2, _arg3:int=1, _arg4:int=0):void{ var _local5:Number; var _local6:ByteArray; if (_isEnabled){ if (!_isConnected){ _isConnected = true; _connection = new LocalConnection(); _connection.addEventListener(StatusEvent.STATUS, onStatus); }; _local5 = 0; if (typeof(_arg2) == "string"){ _local5 = String(_arg2).length; } else { if (typeof(_arg2) == "object"){ _local6 = new ByteArray(); _local6.writeObject(_arg2); _local5 = _local6.length; _local6 = null; }; }; if (_local5 > 39000){ storeDataLSO(_arg1, _arg2); _arg1 = "onLargeData"; _arg2 = null; }; _connection.send("_alcon_lc", _arg1, _arg2, _arg3, _arg4, ""); }; } public static function stop():void{ if (_fpsMeter){ _isPollingFPS = false; _fpsMeter.stop(); _fpsMeter.removeEventListener(FPSMeter.FPS_UPDATE, onFPSUpdate); _fpsMeter = null; _stage = null; }; } public static function timerReset():void{ if (_stopWatch){ _stopWatch.reset(); }; } private static function onFPSUpdate(_arg1:Event):void{ send("onFPS", ((((((_fpsMeter.fps + ",") + _stage.frameRate) + ",") + _fpsMeter.frt) + ",") + System.totalMemory)); } public static function delimiter():void{ Debug.trace("[%DLT%]", 5); } public static function set enabled(_arg1:Boolean):void{ _isEnabled = _arg1; } public static function inspect(_arg1:Object):void{ send("onInspect", _arg1, 1, -1); } public static function timerStart(_arg1:String=""):void{ if (_isEnabled){ if (!_stopWatch){ _stopWatch = new StopWatch(); }; _stopWatch.start(_arg1); }; } public static function createCategory(_arg1:int, _arg2:String="", _arg3:uint=0, _arg4:uint=0xFFFF00):void{ send("onCategory", [_arg1, _arg2, _arg3, _arg4], 0, 0); } private static function storeDataLSO(_arg1:String, _arg2):void{ var flushResult:String; var m = _arg1; var d = _arg2; var sharedObject:SharedObject = SharedObject.getLocal("alcon", "/"); sharedObject.data["alconMethod"] = m; sharedObject.data["alconData"] = d; try { flushResult = sharedObject.flush(); if (flushResult == SharedObjectFlushStatus.FLUSHED){ return; }; } catch(e:Error) { Security.showSettings(SecurityPanel.LOCAL_STORAGE); }; } public static function hexDump(_arg1:Object):void{ send("onHexDump", _arg1, 0, 0); } private static function onStatus(_arg1:StatusEvent):void{ } public static function get enabled():Boolean{ return (_isEnabled); } public static function trace(... _args):void{ var _local2:int = ((_args[1] is int)) ? _args[1] : 1; if ((((_local2 >= _filterLevel)) && ((_local2 < 7)))){ send("onData", _args[0], _local2, 0); }; } public static function timerToString():void{ if (_stopWatch){ Debug.trace(_stopWatch.toString()); }; } public static function mark(_arg1:uint=0xFF00FF):void{ send("onMarker", _arg1, 1, -1); } public static function timerInSeconds():void{ if (_stopWatch){ Debug.trace((_stopWatch.timeInSeconds + "s")); }; } public static function set filterLevel(_arg1:int):void{ if ((((_arg1 >= 0)) && ((_arg1 < 5)))){ _filterLevel = _arg1; }; } public static function monitor(_arg1:Stage, _arg2:int=500):void{ if (_isPollingFPS){ Debug.stop(); }; if (((_isEnabled) && (!(_fpsMeter)))){ _isPollingFPS = true; _stage = _arg1; sendCapabilities(); _fpsMeter = new FPSMeter(_stage, _arg2); _fpsMeter.addEventListener(FPSMeter.FPS_UPDATE, onFPSUpdate); _fpsMeter.start(); }; } public static function time():void{ Debug.trace("[%TME%]", 5); } private static function sendCapabilities():void{ var _local3:XML; var _local4:String; var _local1:XML = describeType(Capabilities); var _local2:Array = []; for each (_local3 in _local1.*) { _local4 = _local3.@name.toString(); if ((((((_local4.length > 0)) && (!((_local4 == "_internal"))))) && (!((_local4 == "prototype"))))){ _local2.push({p:_local4, v:Capabilities[_local4].toString()}); }; }; _local2.sortOn(["p"], Array.CASEINSENSITIVE); send("onCap", _local2); } public static function clear():void{ Debug.trace("[%CLR%]", 5); } public static function timerStop():void{ if (_stopWatch){ _stopWatch.stop(); }; } public static function timerInMilliSeconds():void{ if (_stopWatch){ Debug.trace((_stopWatch.timeInMilliSeconds + "ms")); }; } public static function get filterLevel():int{ return (_filterLevel); } public static function traceObj(_arg1:Object, _arg2:int=64, _arg3:int=1):void{ if ((((_arg3 >= _filterLevel)) && ((_arg3 < 7)))){ send("onData", _arg1, _arg3, _arg2); }; } public static function timerStopToString(_arg1:Boolean=false):void{ if (_stopWatch){ _stopWatch.stop(); Debug.trace(_stopWatch.toString()); if (_arg1){ _stopWatch.reset(); }; }; } public static function pause():void{ Debug.trace("[%PSE%]", 5); } } }//package alcon
Section 2
//FPSMeter (alcon.FPSMeter) package alcon { import flash.events.*; import flash.display.*; import flash.utils.*; public class FPSMeter extends EventDispatcher { private var _delayMax:int;// = 10 private var _pollInterval:int; private var _delay:int; private var _ms:int; private var _timer:Timer; private var _prev:int; private var _frt:int; private var _fps:int; private var _isRunning:Boolean; private var _stage:Stage; public static const FPS_UPDATE:String = "fpsUpdate"; public function FPSMeter(_arg1:Stage, _arg2:int=500){ _stage = _arg1; _pollInterval = _arg2; reset(); } public function stop():void{ if (_isRunning){ _timer.stop(); _timer.removeEventListener(TimerEvent.TIMER, onTimer); _stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame); _timer = null; reset(); }; } public function reset():void{ _fps = 0; _frt = 0; _ms = 0; _delay = 0; _prev = 0; _isRunning = false; } public function start():void{ if (!_isRunning){ _isRunning = true; _timer = new Timer(_pollInterval, 0); _timer.addEventListener(TimerEvent.TIMER, onTimer); _stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); _timer.start(); }; } private function onTimer(_arg1:TimerEvent):void{ dispatchEvent(new Event(FPSMeter.FPS_UPDATE)); } public function get frt():int{ return (_frt); } public function get fps():int{ return (_fps); } private function onEnterFrame(_arg1:Event):void{ var _local2:Number = getTimer(); _delay++; if (_delay >= _delayMax){ _delay = 0; _fps = int(((1000 * _delayMax) / (_local2 - _prev))); _prev = _local2; }; _frt = (_local2 - _ms); _ms = _local2; } } }//package alcon
Section 3
//StopWatch (alcon.StopWatch) package alcon { import flash.utils.*; public class StopWatch { private var _stopTimeKeys:Array; private var _startTimeKeys:Array; private var _started:Boolean;// = false private var _title:String; public function StopWatch(){ reset(); } public function get started():Boolean{ return (_started); } public function get timeInMilliSeconds():int{ if (_started){ _stopTimeKeys[(_startTimeKeys.length - 1)] = getTimer(); }; var _local1:int; var _local2:int; while (_local2 < _startTimeKeys.length) { _local1 = (_local1 + (_stopTimeKeys[_local2] - _startTimeKeys[_local2])); _local2++; }; return (_local1); } public function stop():void{ var _local1:int; if (_started){ _local1 = getTimer(); _stopTimeKeys[(_startTimeKeys.length - 1)] = _local1; _started = false; }; } public function toString():String{ var _local3:int; var _local4:int; var _local1 = "\n ********************* [STOPWATCH] *********************"; if (_title != ""){ _local1 = (_local1 + ("\n * " + _title)); }; var _local2:int; while (_local2 < _startTimeKeys.length) { _local3 = _startTimeKeys[_local2]; _local4 = _stopTimeKeys[_local2]; _local1 = (_local1 + (((((("\n * started [" + format(_local3)) + "ms] stopped [") + format(_local4)) + "ms] time [") + format((_local4 - _local3))) + "ms]")); _local2++; }; if (_local2 == 0){ _local1 = (_local1 + "\n * never started."); } else { _local1 = (_local1 + (("\n * total runnning time: " + timeInSeconds) + "s")); }; _local1 = (_local1 + "\n *******************************************************"); return (_local1); } public function get timeInSeconds():Number{ return ((timeInMilliSeconds / 1000)); } public function reset():void{ _startTimeKeys = []; _stopTimeKeys = []; _started = false; } private function format(_arg1:int):String{ var _local2 = ""; var _local3:int = _arg1.toString().length; var _local4:int; while (_local4 < (5 - _local3)) { _local2 = (_local2 + "0"); _local4++; }; return ((_local2 + _arg1)); } public function start(_arg1:String=""):void{ if (!_started){ _title = _arg1; _started = true; _startTimeKeys.push(getTimer()); }; } } }//package alcon
Section 4
//Debug (com.hexagonstar.util.debug.Debug) package com.hexagonstar.util.debug { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; import flash.system.*; public final class Debug { public static const LEVEL_WARN:int = 2; public static const LEVEL_DEBUG:int = 0; public static const LEVEL_INFO:int = 1; public static const LEVEL_FATAL:int = 4; public static const LEVEL_ERROR:int = 3; private static var _stage:Stage; private static var _filterLevel:int = 0; private static var _isEnabled:Boolean = true; private static var _isConnected:Boolean = false; private static var _isPollingFPS:Boolean = false; private static var _stopWatch:StopWatch; private static var _connection:LocalConnection; private static var _fpsMeter:FPSMeter; public static function forceGC():void{ try { } catch(e1:Error) { try { new LocalConnection().connect("forceGC"); new LocalConnection().connect("forceGC"); } catch(e2:Error) { }; }; } private static function send(_arg1:String, _arg2, _arg3:int=1, _arg4:int=0):void{ var _local5:Number; var _local6:ByteArray; if (_isEnabled){ if (!_isConnected){ _isConnected = true; _connection = new LocalConnection(); _connection.addEventListener(StatusEvent.STATUS, onStatus); }; _local5 = 0; if (typeof(_arg2) == "string"){ _local5 = String(_arg2).length; } else { if (typeof(_arg2) == "object"){ _local6 = new ByteArray(); _local6.writeObject(_arg2); _local5 = _local6.length; _local6 = null; }; }; if (_local5 > 39000){ storeDataLSO(_arg1, _arg2); _arg1 = "onLargeData"; _arg2 = null; }; _connection.send("_alcon_lc", _arg1, _arg2, _arg3, _arg4, ""); }; } public static function stop():void{ if (_fpsMeter){ _isPollingFPS = false; _fpsMeter.stop(); _fpsMeter.removeEventListener(FPSMeter.FPS_UPDATE, onFPSUpdate); _fpsMeter = null; _stage = null; }; } public static function timerReset():void{ if (_stopWatch){ _stopWatch.reset(); }; } private static function onFPSUpdate(_arg1:Event):void{ send("onFPS", ((((((_fpsMeter.fps + ",") + _stage.frameRate) + ",") + _fpsMeter.frt) + ",") + System.totalMemory)); } public static function delimiter():void{ Debug.trace("[%DLT%]", 5); } public static function set enabled(_arg1:Boolean):void{ _isEnabled = _arg1; } public static function inspect(_arg1:Object):void{ send("onInspect", _arg1, 1, -1); } public static function timerStart(_arg1:String=""):void{ if (_isEnabled){ if (!_stopWatch){ _stopWatch = new StopWatch(); }; _stopWatch.start(_arg1); }; } public static function createCategory(_arg1:int, _arg2:String="", _arg3:uint=0, _arg4:uint=0xFFFF00):void{ send("onCategory", [_arg1, _arg2, _arg3, _arg4], 0, 0); } private static function storeDataLSO(_arg1:String, _arg2):void{ var flushResult:String; var m = _arg1; var d = _arg2; var sharedObject:SharedObject = SharedObject.getLocal("alcon", "/"); sharedObject.data["alconMethod"] = m; sharedObject.data["alconData"] = d; try { flushResult = sharedObject.flush(); if (flushResult == SharedObjectFlushStatus.FLUSHED){ return; }; } catch(e:Error) { Security.showSettings(SecurityPanel.LOCAL_STORAGE); }; } public static function hexDump(_arg1:Object):void{ send("onHexDump", _arg1, 0, 0); } private static function onStatus(_arg1:StatusEvent):void{ } public static function get enabled():Boolean{ return (_isEnabled); } public static function trace(... _args):void{ var _local2:int = ((_args[1] is int)) ? _args[1] : 1; if ((((_local2 >= _filterLevel)) && ((_local2 < 7)))){ send("onData", _args[0], _local2, 0); }; } public static function timerToString():void{ if (_stopWatch){ Debug.trace(_stopWatch.toString()); }; } public static function mark(_arg1:uint=0xFF00FF):void{ send("onMarker", _arg1, 1, -1); } public static function timerInSeconds():void{ if (_stopWatch){ Debug.trace((_stopWatch.timeInSeconds + "s")); }; } public static function set filterLevel(_arg1:int):void{ if ((((_arg1 >= 0)) && ((_arg1 < 5)))){ _filterLevel = _arg1; }; } public static function monitor(_arg1:Stage, _arg2:int=500):void{ if (_isPollingFPS){ Debug.stop(); }; if (((_isEnabled) && (!(_fpsMeter)))){ _isPollingFPS = true; _stage = _arg1; sendCapabilities(); _fpsMeter = new FPSMeter(_stage, _arg2); _fpsMeter.addEventListener(FPSMeter.FPS_UPDATE, onFPSUpdate); _fpsMeter.start(); }; } public static function time():void{ Debug.trace("[%TME%]", 5); } private static function sendCapabilities():void{ var _local3:XML; var _local4:String; var _local1:XML = describeType(Capabilities); var _local2:Array = []; for each (_local3 in _local1.*) { _local4 = _local3.@name.toString(); if ((((((_local4.length > 0)) && (!((_local4 == "_internal"))))) && (!((_local4 == "prototype"))))){ _local2.push({p:_local4, v:Capabilities[_local4].toString()}); }; }; _local2.sortOn(["p"], Array.CASEINSENSITIVE); send("onCap", _local2); } public static function clear():void{ Debug.trace("[%CLR%]", 5); } public static function timerStop():void{ if (_stopWatch){ _stopWatch.stop(); }; } public static function timerInMilliSeconds():void{ if (_stopWatch){ Debug.trace((_stopWatch.timeInMilliSeconds + "ms")); }; } public static function get filterLevel():int{ return (_filterLevel); } public static function traceObj(_arg1:Object, _arg2:int=64, _arg3:int=1):void{ if ((((_arg3 >= _filterLevel)) && ((_arg3 < 7)))){ send("onData", _arg1, _arg3, _arg2); }; } public static function timerStopToString(_arg1:Boolean=false):void{ if (_stopWatch){ _stopWatch.stop(); Debug.trace(_stopWatch.toString()); if (_arg1){ _stopWatch.reset(); }; }; } public static function pause():void{ Debug.trace("[%PSE%]", 5); } } }//package com.hexagonstar.util.debug
Section 5
//FPSMeter (com.hexagonstar.util.debug.FPSMeter) package com.hexagonstar.util.debug { import flash.events.*; import flash.display.*; import flash.utils.*; public class FPSMeter extends EventDispatcher { private var _delayMax:int;// = 10 private var _pollInterval:int; private var _delay:int; private var _ms:int; private var _timer:Timer; private var _prev:int; private var _frt:int; private var _fps:int; private var _isRunning:Boolean; private var _stage:Stage; public static const FPS_UPDATE:String = "fpsUpdate"; public function FPSMeter(_arg1:Stage, _arg2:int=500){ _stage = _arg1; _pollInterval = _arg2; reset(); } public function stop():void{ if (_isRunning){ _timer.stop(); _timer.removeEventListener(TimerEvent.TIMER, onTimer); _stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame); _timer = null; reset(); }; } public function reset():void{ _fps = 0; _frt = 0; _ms = 0; _delay = 0; _prev = 0; _isRunning = false; } public function start():void{ if (!_isRunning){ _isRunning = true; _timer = new Timer(_pollInterval, 0); _timer.addEventListener(TimerEvent.TIMER, onTimer); _stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); _timer.start(); }; } private function onTimer(_arg1:TimerEvent):void{ dispatchEvent(new Event(FPSMeter.FPS_UPDATE)); } public function get frt():int{ return (_frt); } public function get fps():int{ return (_fps); } private function onEnterFrame(_arg1:Event):void{ var _local2:Number = getTimer(); _delay++; if (_delay >= _delayMax){ _delay = 0; _fps = int(((1000 * _delayMax) / (_local2 - _prev))); _prev = _local2; }; _frt = (_local2 - _ms); _ms = _local2; } } }//package com.hexagonstar.util.debug
Section 6
//StopWatch (com.hexagonstar.util.debug.StopWatch) package com.hexagonstar.util.debug { import flash.utils.*; public class StopWatch { private var _stopTimeKeys:Array; private var _startTimeKeys:Array; private var _started:Boolean;// = false private var _title:String; public function StopWatch(){ reset(); } public function get started():Boolean{ return (_started); } public function get timeInMilliSeconds():int{ if (_started){ _stopTimeKeys[(_startTimeKeys.length - 1)] = getTimer(); }; var _local1:int; var _local2:int; while (_local2 < _startTimeKeys.length) { _local1 = (_local1 + (_stopTimeKeys[_local2] - _startTimeKeys[_local2])); _local2++; }; return (_local1); } public function stop():void{ var _local1:int; if (_started){ _local1 = getTimer(); _stopTimeKeys[(_startTimeKeys.length - 1)] = _local1; _started = false; }; } public function toString():String{ var _local3:int; var _local4:int; var _local1 = "\n ********************* [STOPWATCH] *********************"; if (_title != ""){ _local1 = (_local1 + ("\n * " + _title)); }; var _local2:int; while (_local2 < _startTimeKeys.length) { _local3 = _startTimeKeys[_local2]; _local4 = _stopTimeKeys[_local2]; _local1 = (_local1 + (((((("\n * started [" + format(_local3)) + "ms] stopped [") + format(_local4)) + "ms] time [") + format((_local4 - _local3))) + "ms]")); _local2++; }; if (_local2 == 0){ _local1 = (_local1 + "\n * never started."); } else { _local1 = (_local1 + (("\n * total runnning time: " + timeInSeconds) + "s")); }; _local1 = (_local1 + "\n *******************************************************"); return (_local1); } public function get timeInSeconds():Number{ return ((timeInMilliSeconds / 1000)); } public function reset():void{ _startTimeKeys = []; _stopTimeKeys = []; _started = false; } private function format(_arg1:int):String{ var _local2 = ""; var _local3:int = _arg1.toString().length; var _local4:int; while (_local4 < (5 - _local3)) { _local2 = (_local2 + "0"); _local4++; }; return ((_local2 + _arg1)); } public function start(_arg1:String=""):void{ if (!_started){ _title = _arg1; _started = true; _startTimeKeys.push(getTimer()); }; } } }//package com.hexagonstar.util.debug
Section 7
//Behaviour (flesh.particles.Behaviour) package flesh.particles { import flash.display.*; import flesh.*; import flash.utils.*; import flash.net.*; public class Behaviour { public var directionRange:Number; public var rotationAccel:Number; public var motionType:int; public var alphaEndTime:Number; public var scaleRange:Number; public var dragMultiplier:Number; public var emitterBehaviourName:String; public var id:String; public var velocityY:RangedValue; public var scaleSpeed:RangedValue; public var scaleStartTime:Number; public var colours:Array; public var colourType:Number; public var velocityX:RangedValue; public var speedRange:Number; public var motionStartTime:Number; public var targetScale:Number; public var speed:RangedValue; public var paintAdditive:Boolean; public var alphaAccel:Number; public var targetAlpha:Number; public var scale:RangedValue; public var alpha:RangedValue; public var bitmapDataArray:Array; public var rotationSpeed:RangedValue; public var restitution:Number; public var emitterRate:Number; public var rotationStartTime:Number; public var accelX:RangedValue; public var accelY:RangedValue; public var bitmapData:BitmapData; public var floorOffsetY:Number; public var rotation:RangedValue; public var direction:RangedValue; public var alphaSpeed:RangedValue; public var alphaStartTime:Number; public var numberOfRotations:Number; public var scaleEndTime:Number; public var displayObject:DisplayObject; public var scaleType:int; public var motionEndTime:Number; public var alphaType:int; public var bitmapMask:String; public var scaleAccel:Number; public var killOnEnd:Boolean; public var bitmapMaskIndex:int; public var rotationType:int; public var colour0:Number; public var targetRegion:Region; public var lifeTime:Number; public var rotationEndTime:Number; public var colour1:Number; public static var usingZipHandler:Boolean = false; public static var behaviourDictionary:Dictionary = null; public function Behaviour(){ lifeTime = 5; killOnEnd = true; paintAdditive = true; displayObject = null; setDefaults(); } public function setMotionTargetedWithDrag(_arg1:Region, _arg2:RangedValue, _arg3:RangedValue, _arg4:Number, _arg5:Number=0, _arg6:Number=1):void{ trace(("MOTION_TYPE_TARGETED_WITH_DRAG dragMultiplier = " + dragMultiplier)); this.motionType = Particle.MOTION_TYPE_TARGETED_WITH_DRAG; this.targetRegion = _arg1; this.dragMultiplier = dragMultiplier; this.accelX = _arg2; this.accelY = _arg3; this.motionStartTime = _arg5; this.motionEndTime = _arg6; } public function setRotationTargeted(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ this.rotationType = Particle.ROTATION_TYPE_TARGETED; this.rotation = _arg1; this.numberOfRotations = _arg3; this.rotationSpeed = _arg2; this.rotationStartTime = _arg4; this.rotationEndTime = _arg5; } public function setScaleTargeted(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ this.scaleType = Particle.SCALE_TYPE_TARGETED; this.scale = _arg1; this.scaleSpeed = _arg2; this.targetScale = _arg3; this.scaleStartTime = _arg4; this.scaleEndTime = _arg5; this.scaleRange = (_arg1.max - _arg1.min); } public function setMotionPolarEqualDistribution(_arg1:RangedValue, _arg2:RangedValue, _arg3:RangedValue, _arg4:RangedValue, _arg5:Number, _arg6:Number=0, _arg7:Number=1):void{ setMotionPolar(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7); this.motionType = Particle.MOTION_TYPE_POLAR_EQUAL_DISTRIBUTION; } public function bitmapLoaded(_arg1:Bitmap, _arg2:String):void{ bitmapData = _arg1.bitmapData; } public function setAlphaTargeted(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ this.alphaType = Particle.ALPHA_TYPE_TARGETED; this.alpha = _arg1; this.alphaSpeed = _arg2; this.targetAlpha = _arg3; this.alphaStartTime = _arg4; this.alphaEndTime = _arg5; } public function loadMotionFromXML(_arg1:XML):void{ var _local6:RangedValue; var _local7:RangedValue; var _local8:XML; var _local2:String = Utils.getStringAttributeFromXML(_arg1, "type"); if (_local2 == null){ trace(" ** Error: no type specified for MOTION"); return; }; var _local3:Number = Utils.getFloatAttributeFromXML(_arg1, "startTime", 0); var _local4:Number = Utils.getFloatAttributeFromXML(_arg1, "endTime", 1); floorOffsetY = Utils.getFloatAttributeFromXML(_arg1, "floorOffsetY", 100000); restitution = Utils.getFloatAttributeFromXML(_arg1, "restitution", 1); var _local5:int = getMotionTypeFromString(_local2); switch (_local5){ case Particle.MOTION_TYPE_CARTESIAN: setMotionCartesian(getRFloatFromXML(_arg1, "velocityX"), getRFloatFromXML(_arg1, "velocityY"), getRFloatFromXML(_arg1, "accelX"), getRFloatFromXML(_arg1, "accelY"), Utils.getFloatAttributeFromXML(_arg1, "dragMultiplier", 0), _local3, _local4); break; case Particle.MOTION_TYPE_POLAR: setMotionPolar(getRFloatFromXML(_arg1, "direction"), getRFloatFromXML(_arg1, "speed"), getRFloatFromXML(_arg1, "accelX"), getRFloatFromXML(_arg1, "accelY"), Utils.getFloatAttributeFromXML(_arg1, "dragMultiplier", 0), _local3, _local4); break; case Particle.MOTION_TYPE_TARGETED: _local6 = getRFloatFromXML(_arg1, "accelX"); _local7 = getRFloatFromXML(_arg1, "accelY"); targetRegion = null; for each (_local8 in _arg1.children()) { if (_local8.name() == "REGION"){ targetRegion = new Region(); targetRegion.loadXML(_local8); break; }; }; dragMultiplier = Utils.getFloatAttributeFromXML(_arg1, "dragMultiplier", 0); if (dragMultiplier != 0){ setMotionTargetedWithDrag(targetRegion, _local6, _local7, dragMultiplier, _local3, _local4); } else { setMotionTargeted(targetRegion, _local6, _local7, _local3, _local4); }; break; case Particle.MOTION_TYPE_AWAY_FROM_CENTRE: setMotionAwayFromCentre(getRFloatFromXML(_arg1, "speed"), getRFloatFromXML(_arg1, "accelX"), getRFloatFromXML(_arg1, "accelY"), Utils.getFloatAttributeFromXML(_arg1, "dragMultiplier", 0), _local3, _local4); break; case Particle.MOTION_TYPE_POLAR_EQUAL_DISTRIBUTION: setMotionPolarEqualDistribution(getRFloatFromXML(_arg1, "direction"), getRFloatFromXML(_arg1, "speed"), getRFloatFromXML(_arg1, "accelX"), getRFloatFromXML(_arg1, "accelY"), Utils.getFloatAttributeFromXML(_arg1, "dragMultiplier", 0), _local3, _local4); break; }; } public function loadFromXML(_arg1:XML):void{ var _local3:XML; var _local4:ImageLoader; this.id = Utils.getStringAttributeFromXML(_arg1, "id"); this.bitmapData = null; lifeTime = Utils.getFloatAttributeFromXML(_arg1, "lifetime", 3); dragMultiplier = Utils.getFloatAttributeFromXML(_arg1, "dragMultiplier", 0); paintAdditive = Utils.getBooleanAttributeFromXML(_arg1, "additive", paintAdditive); emitterBehaviourName = Utils.getStringAttributeFromXML(_arg1, "emitterBehaviour", null); emitterRate = Utils.getFloatAttributeFromXML(_arg1, "emitterRate", 5); var _local2:String = Utils.getStringAttributeFromXML(_arg1, "bitmap"); if (_local2 != null){ if (_local2.indexOf("*") != -1){ bitmapDataArray = new Array(); bitmapMaskIndex = 0; bitmapMask = _local2; trace(("loading bitmaps against mask " + bitmapMask)); loadNextBitmapMask(); } else { if (usingZipHandler){ bitmapLoaded(ZipHandler.getBitmap(_local2), _local2); } else { _local4 = new ImageLoader(); _local4.loadSprite(_local2, bitmapLoaded); }; }; }; for each (_local3 in _arg1.children()) { if (_local3.name() == "MOTION"){ loadMotionFromXML(_local3); } else { if (_local3.name() == "ROTATION"){ loadRotationFromXML(_local3); } else { if (_local3.name() == "SCALE"){ loadScaleFromXML(_local3); } else { if (_local3.name() == "ALPHA"){ loadAlphaFromXML(_local3); } else { if (_local3.name() == "COLOUR"){ loadColourFromXML(_local3); }; }; }; }; }; }; } public function loadColourFromXML(_arg1:XML):void{ var _local6:Array; var _local7:int; var _local8:int; var _local2:String = Utils.getStringAttributeFromXML(_arg1, "type"); if (_local2 == null){ trace(" ** Error: no type specified for COLOUR"); return; }; var _local3:Number = Utils.getFloatAttributeFromXML(_arg1, "startTime", 0); var _local4:Number = Utils.getFloatAttributeFromXML(_arg1, "endTime", 1); var _local5:int = getColourTypeFromString(_local2); switch (_local5){ case Particle.COLOUR_TYPE_INTERPOLATED: setColourInterpolated(Utils.getIntAttributeFromXML(_arg1, "colour0", 0), Utils.getIntAttributeFromXML(_arg1, "colour1", 0xFFFFFF)); break; case Particle.COLOUR_TYPE_RANDOMPICK: _local6 = new Array(); _local7 = 0; while (true) { _local8 = Utils.getIntAttributeFromXML(_arg1, ("colour" + _local7), 1); if (_local8 == 1){ break; } else { _local6.push(_local8); _local7++; }; }; setColourRandomPick(_local6); break; }; } public function setDisplayObject(_arg1:DisplayObject, _arg2:Boolean=true):void{ this.displayObject = _arg1; this.paintAdditive = _arg2; } public function setMotionPolar(_arg1:RangedValue, _arg2:RangedValue, _arg3:RangedValue, _arg4:RangedValue, _arg5:Number, _arg6:Number=0, _arg7:Number=1):void{ this.motionType = Particle.MOTION_TYPE_POLAR; this.direction = _arg1; this.speed = _arg2; this.accelX = _arg3; this.accelY = _arg4; this.dragMultiplier = _arg5; this.motionStartTime = _arg6; this.motionEndTime = _arg7; this.speedRange = (_arg2.max - _arg2.min); this.directionRange = (_arg1.max - _arg1.min); } public function setScalePulse(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number=0, _arg4:Number=1):void{ this.scaleType = Particle.SCALE_TYPE_PULSE; this.scale = _arg1; this.scaleSpeed = _arg2; this.scaleStartTime = _arg3; this.scaleEndTime = _arg4; } public function loadScaleFromXML(_arg1:XML):void{ var _local2:String = Utils.getStringAttributeFromXML(_arg1, "type"); if (_local2 == null){ trace(" ** Error: no type specified for SCALE"); return; }; var _local3:Number = Utils.getFloatAttributeFromXML(_arg1, "startTime", 0); var _local4:Number = Utils.getFloatAttributeFromXML(_arg1, "endTime", 1); var _local5:int = getScaleTypeFromString(_local2); switch (_local5){ case Particle.SCALE_TYPE_TARGETED: setScaleTargeted(getRFloatFromXML(_arg1, "initial"), getRFloatFromXML(_arg1, "speed"), Utils.getFloatAttributeFromXML(_arg1, "target", 0), _local3, _local4); break; }; } public function setMotionAwayFromCentre(_arg1:RangedValue, _arg2:RangedValue, _arg3:RangedValue, _arg4:Number, _arg5:Number=0, _arg6:Number=1):void{ this.motionType = Particle.MOTION_TYPE_AWAY_FROM_CENTRE; this.speed = _arg1; this.accelX = _arg2; this.accelY = _arg3; this.dragMultiplier = _arg4; this.motionStartTime = _arg5; this.motionEndTime = _arg6; } public function setColourInterpolated(_arg1:uint, _arg2:uint):void{ this.colourType = Particle.COLOUR_TYPE_INTERPOLATED; this.colour0 = _arg1; this.colour1 = _arg2; } public function setMotionTarget(_arg1:Region):void{ this.targetRegion = _arg1; } public function setColourRandomPickInterpolated(_arg1:Array):void{ this.colourType = Particle.COLOUR_TYPE_RANDOMPICK_INTERPOLATED; this.colours = _arg1; } public function setScaleLinkedToPolarSpeed3D(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ setScaleConstant(_arg1, _arg2, _arg3, _arg4, _arg5); this.scaleType = Particle.SCALE_TYPE_LINKED_TO_POLAR_SPEED; } public function loadedBitmapMask(_arg1:Bitmap, _arg2:String):void{ bitmapDataArray.push(_arg1.bitmapData); bitmapMaskIndex++; loadNextBitmapMask(); } public function loadNextBitmapMask():void{ var _local2:ImageLoader; var _local1:String = bitmapMask; _local1 = _local1.replace("*", bitmapMaskIndex); if (usingZipHandler){ if (ZipHandler.hasBitmapFile(_local1)){ loadedBitmapMask(ZipHandler.getBitmap(_local1), _local1); }; } else { _local2 = new ImageLoader(); _local2.loadSprite(_local1, loadedBitmapMask); }; } public function setRotationConstant(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ this.rotationType = Particle.ROTATION_TYPE_CONSTANT; this.rotation = _arg1; this.rotationSpeed = _arg2; this.rotationAccel = _arg3; this.rotationStartTime = _arg4; this.rotationEndTime = _arg5; } public function setScaleConstant(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ this.scaleType = Particle.SCALE_TYPE_CONSTANT; this.scale = _arg1; this.scaleSpeed = _arg2; this.scaleAccel = _arg3; this.scaleStartTime = _arg4; this.scaleEndTime = _arg5; this.scaleRange = (_arg1.max - _arg1.min); } public function setMotionTargeted(_arg1:Region, _arg2:RangedValue, _arg3:RangedValue, _arg4:Number=0, _arg5:Number=1):void{ this.motionType = Particle.MOTION_TYPE_TARGETED; this.targetRegion = _arg1; this.accelX = _arg2; this.accelY = _arg3; this.motionStartTime = _arg4; this.motionEndTime = _arg5; } public function loadAlphaFromXML(_arg1:XML):void{ var _local2:String = Utils.getStringAttributeFromXML(_arg1, "type"); if (_local2 == null){ trace(" ** Error: no type specified for ALPHA"); return; }; var _local3:Number = Utils.getFloatAttributeFromXML(_arg1, "startTime", 0); var _local4:Number = Utils.getFloatAttributeFromXML(_arg1, "endTime", 1); var _local5:int = getScaleTypeFromString(_local2); switch (_local5){ case Particle.ALPHA_TYPE_TARGETED: setAlphaTargeted(getRFloatFromXML(_arg1, "initial"), getRFloatFromXML(_arg1, "speed"), Utils.getFloatAttributeFromXML(_arg1, "target", 0), _local3, _local4); break; }; } public function setDefaults():void{ this.motionType = Particle.MOTION_TYPE_NONE; this.velocityX = Particle.getSimpleRFloat(0); this.velocityY = Particle.getSimpleRFloat(0); this.accelX = Particle.getSimpleRFloat(0); this.accelY = Particle.getSimpleRFloat(0); this.dragMultiplier = 0; this.rotationType = Particle.ROTATION_TYPE_NONE; this.rotation = Particle.getSimpleRFloat(0); this.rotationSpeed = Particle.getSimpleRFloat(0); this.rotationAccel = 0; this.scaleType = Particle.SCALE_TYPE_NONE; this.scale = Particle.getSimpleRFloat(1); this.scaleSpeed = Particle.getSimpleRFloat(0); this.scaleAccel = 0; this.alphaType = Particle.ALPHA_TYPE_NONE; this.alpha = Particle.getSimpleRFloat(1); this.alphaSpeed = Particle.getSimpleRFloat(0); this.alphaAccel = 0; this.colourType = Particle.COLOUR_TYPE_NONE; this.emitterBehaviourName = null; } public function setAlphaConstant(_arg1:RangedValue, _arg2:RangedValue, _arg3:Number, _arg4:Number=0, _arg5:Number=1):void{ this.alphaType = Particle.ALPHA_TYPE_CONSTANT; this.alpha = _arg1; this.alphaSpeed = _arg2; this.alphaAccel = _arg3; this.alphaStartTime = _arg4; this.alphaEndTime = _arg5; } public function setRotationFromDirection():void{ this.rotationType = Particle.ROTATION_TYPE_FROM_DIRECTION; } public function loadRotationFromXML(_arg1:XML):void{ var _local2:String = Utils.getStringAttributeFromXML(_arg1, "type"); if (_local2 == null){ trace(" ** Error: no type specified for ROTATION"); return; }; var _local3:Number = Utils.getFloatAttributeFromXML(_arg1, "startTime", 0); var _local4:Number = Utils.getFloatAttributeFromXML(_arg1, "endTime", 1); var _local5:int = getRotationTypeFromString(_local2); switch (_local5){ case Particle.ROTATION_TYPE_CONSTANT: setRotationConstant(getRFloatFromXML(_arg1, "initial"), getRFloatFromXML(_arg1, "speed"), Utils.getFloatAttributeFromXML(_arg1, "accel", 0), _local3, _local4); break; case Particle.ROTATION_TYPE_FROM_DIRECTION: setRotationFromDirection(); break; }; } public function setMotionCartesian(_arg1:RangedValue, _arg2:RangedValue, _arg3:RangedValue, _arg4:RangedValue, _arg5:Number, _arg6:Number=0, _arg7:Number=1):void{ this.motionType = Particle.MOTION_TYPE_CARTESIAN; this.velocityX = _arg1; this.velocityY = _arg2; this.accelX = _arg3; this.accelY = _arg4; this.dragMultiplier = _arg5; this.motionStartTime = _arg6; this.motionEndTime = _arg7; } public function setColourRandomPick(_arg1:Array):void{ this.colourType = Particle.COLOUR_TYPE_RANDOMPICK; this.colours = _arg1; } public static function getMotionTypeFromString(_arg1:String):int{ var _local2:int = Particle.MOTION_TYPE_COUNT; while (--_local2 >= 0) { if (_arg1.toUpperCase() == Particle.MOTION_TYPE_NAMES[_local2].toUpperCase()){ return (_local2); }; }; return (Particle.MOTION_TYPE_NONE); } public static function getScaleTypeFromString(_arg1:String):int{ var _local2:int = Particle.SCALE_TYPE_COUNT; while (--_local2 >= 0) { if (_arg1.toUpperCase() == Particle.SCALE_TYPE_NAMES[_local2].toUpperCase()){ return (_local2); }; }; return (Particle.SCALE_TYPE_NONE); } public static function useZipHandler(_arg1:Boolean):void{ usingZipHandler = _arg1; } public static function getRFloatFromXML(_arg1:XML, _arg2:String):RangedValue{ var _local4:Number; var _local5:Number; var _local3:Number = Utils.getFloatAttributeFromXML(_arg1, _arg2, -1); if (_local3 != -1){ return (RangedValue.getSimpleRFloat(_local3)); }; _local4 = Utils.getFloatAttributeFromXML(_arg1, (_arg2 + ".min"), -1); _local5 = Utils.getFloatAttributeFromXML(_arg1, (_arg2 + ".max"), -1); return (RangedValue.getLinearRFloat(_local4, _local5)); } public static function createBehaviourDictionary(_arg1:XML):Dictionary{ var _local2:XML; var _local3:Behaviour; var _local4:String; behaviourDictionary = new Dictionary(); for each (_local2 in _arg1.children()) { _local3 = new (Behaviour); _local4 = Utils.getStringAttributeFromXML(_local2, "id"); _local3.loadFromXML(_local2); behaviourDictionary[_local4] = _local3; }; return (behaviourDictionary); } public static function getRotationTypeFromString(_arg1:String):int{ var _local2:int = Particle.ROTATION_TYPE_COUNT; while (--_local2 >= 0) { if (_arg1.toUpperCase() == Particle.ROTATION_TYPE_NAMES[_local2].toUpperCase()){ return (_local2); }; }; return (Particle.ROTATION_TYPE_NONE); } public static function getAlphaTypeFromString(_arg1:String):int{ var _local2:int = Particle.ALPHA_TYPE_COUNT; while (--_local2 >= 0) { if (_arg1.toUpperCase() == Particle.ALPHA_TYPE_NAMES[_local2].toUpperCase()){ return (_local2); }; }; return (Particle.ALPHA_TYPE_NONE); } public static function getColourTypeFromString(_arg1:String):int{ var _local2:int = Particle.COLOUR_TYPE_COUNT; while (--_local2 >= 0) { if (_arg1.toUpperCase() == Particle.COLOUR_TYPE_NAMES[_local2].toUpperCase()){ return (_local2); }; }; return (Particle.COLOUR_TYPE_NONE); } } }//package flesh.particles
Section 8
//Emitter (flesh.particles.Emitter) package flesh.particles { import flash.display.*; import flesh.*; public class Emitter { private var container:DisplayObjectContainer; private var particlesPerSecond:Number; private var timeStored:Number; private var particlePool:ManagedPool; private var emitting:Boolean; private var lifeTime:Number; private var particleCount:int; public var region:Region; private var usesOwnParticlePool:Boolean; private var behaviour:Behaviour; public function Emitter(_arg1:DisplayObjectContainer, _arg2:Number, _arg3:Number, _arg4:Behaviour, _arg5:uint, _arg6:Number, _arg7:Number, _arg8:Number=0, _arg9:Number=0, _arg10:Boolean=false){ this.container = _arg1; this.lifeTime = _arg2; this.particlesPerSecond = _arg3; this.behaviour = _arg4; this.region = Region.createRegion(_arg5, _arg6, _arg7, _arg8, _arg9, _arg10); this.timeStored = 0; this.usesOwnParticlePool = false; this.particlePool = null; this.emitting = false; } public function deactivate():void{ } public function update(_arg1:Number):void{ var _local3:Vector; if (!emitting){ return; }; if (usesOwnParticlePool){ particlePool.updateAll(_arg1); }; timeStored = (timeStored + _arg1); if (lifeTime > 0){ lifeTime = (lifeTime - _arg1); if (lifeTime < 0){ deactivate(); }; }; var _local2:int = Math.floor((particlesPerSecond * timeStored)); if (_local2 == 0){ return; }; timeStored = (timeStored - (_local2 / particlesPerSecond)); if (region.getType() == Region.TYPE_POINT){ _local3 = region.getRandomPositionInRegion(); Particle.requestParticles(this.container, _local2, behaviour, _local3.x, _local3.y, region.getCentreX(), region.getCentreY(), particlePool); } else { Particle.requestParticlesForRegion(region, this.container, _local2, behaviour, particlePool); }; } public function setParticleRate(_arg1:Number):void{ this.particlesPerSecond = _arg1; } public function useOwnParticlePool(_arg1:String, _arg2:int):void{ this.particleCount = _arg2; var _local3:Particle = new Particle(0); this.particlePool = new ManagedPool(_arg1, _local3, _arg2); this.usesOwnParticlePool = true; } public function start():void{ this.emitting = true; } public function stop():void{ this.emitting = false; } public function setPosition(_arg1:Number, _arg2:Number):void{ region.setPosition(_arg1, _arg2); } public function setBehaviour(_arg1:Behaviour):void{ this.behaviour = _arg1; } } }//package flesh.particles
Section 9
//Particle (flesh.particles.Particle) package flesh.particles { import flash.display.*; import flesh.*; import flash.geom.*; public class Particle extends PoolObject { public var rotationAccel:Number; public var alphaEndTime:Number; public var scaleRange:Number; public var dragMultiplier:Number; public var minScale:Number; public var finalRotation:Number; public var displayType:Number; public var scaleSpeed:Number; public var scaleStartTime:Number; public var position:Vector; public var alphaAccel:Number; public var ownedByEmitterPool:Boolean; public var rotateType:int; public var motionStartTime:Number; public var maxScale:Number; public var scale:Number; public var moving:Boolean; public var rotating:Boolean; public var paintAdditive:Boolean; public var alpha:Number; public var deathTime:Number; public var rotationSpeed:Number; public var emitter:Emitter; public var rotationStartTime:Number; public var finalScale:Number; public var rotation:Number; public var container:DisplayObjectContainer; public var scaling:Boolean; public var alphaSpeed:Number; public var alphaStartTime:Number; public var scaleEndTime:Number; public var finalX:Number; public var finalY:Number; public var scaleType:int; public var scaleMin:Number; public var emitterPool:ManagedPool; public var motionEndTime:Number; public var alpharizing:Boolean; public var scaleAccel:Number; public var behaviour:Behaviour; public var sprite:DisplayObject; public var colour:Number; public var killOnEnd:Boolean; public var floorY:Number; public var velocity:Vector; public var lineThickness:Number; public var accel:Vector; public var lifeTime:Number; public var rotationEndTime:Number; public var lineLength:Number; public static const MOTION_TYPE_NAMES:Array = new Array("none", "cartesian", "polar", "targeted", "awayFromCentre", "polarEqualDistribution", "targetedWithDrag"); public static const ALPHA_TYPE_NAMES:Array = new Array("none", "constant", "targeted"); public static const SCALE_TYPE_NAMES:Array = new Array("none", "constant", "targeted", "linkedToPolarSpeed", "pulse"); public static const COLOUR_TYPE_NAMES:Array = new Array("none", "interpolated", "randompick", "randompickinterpolated"); public static const ROTATION_TYPE_NAMES:Array = new Array("none", "constant", "targeted", "fromDirection"); public static var SCALE_TYPE_TARGETED:uint = 2; public static var MOTION_TYPE_POLAR:uint = 2; public static var ROTATION_TYPE_CONSTANT:uint = 1; public static var ROTATION_TYPE_COUNT:uint = 4; public static var MOTION_TYPE_CARTESIAN:uint = 1; public static var MOTION_TYPE_TARGETED:uint = 3; public static var ALPHA_TYPE_TARGETED:uint = 2; public static var MOTION_TYPE_TARGETED_WITH_DRAG:uint = 6; public static var pool:ManagedPool; public static var ZERO_RFLOAT:RangedValue = getSimpleRFloat(0); public static var ROTATION_TYPE_NONE:uint = 0; public static var COLOUR_TYPE_RANDOMPICK_INTERPOLATED:uint = 3; public static var COLOUR_TYPE_RANDOMPICK:uint = 2; public static var MOTION_TYPE_POLAR_EQUAL_DISTRIBUTION:uint = 5; public static var SCALE_TYPE_CONSTANT:uint = 1; public static var COLOUR_TYPE_INTERPOLATED:uint = 1; public static var ALPHA_TYPE_COUNT:uint = 3; public static var SCALE_TYPE_NONE:uint = 0; public static var MOTION_TYPE_COUNT:uint = 7; public static var ROTATION_TYPE_TARGETED:uint = 2; public static var ALPHA_TYPE_CONSTANT:uint = 1; public static var SCALE_TYPE_LINKED_TO_POLAR_SPEED:uint = 3; public static var MOTION_TYPE_NONE:uint = 0; public static var MOTION_TYPE_AWAY_FROM_CENTRE:uint = 4; public static var ALPHA_TYPE_NONE:uint = 0; private static var max:int; public static var SCALE_TYPE_COUNT:uint = 5; public static var SCALE_TYPE_PULSE:uint = 4; public static var COLOUR_TYPE_NONE:uint = 0; public static var ROTATION_TYPE_FROM_DIRECTION:uint = 3; private static var visible:Boolean = true; private static var globalAlpha:Number = 1; public static var COLOUR_TYPE_COUNT:uint = 4; public function Particle(_arg1:uint){ super(_arg1); sprite = null; position = new Vector(0, 0); velocity = new Vector(0, 0); accel = new Vector(0, 0); active = false; } public function setRotation(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ this.rotateType = ROTATION_TYPE_CONSTANT; this.rotation = _arg1; this.rotationSpeed = _arg2; this.rotationAccel = _arg3; this.rotationStartTime = _arg4; this.rotationEndTime = _arg5; this.rotating = true; } public function applyStateToSprite():void{ sprite.x = position.x; sprite.y = position.y; sprite.rotation = ((rotation * 360) / Utils.RAD360); sprite.alpha = alpha; sprite.scaleX = (sprite.scaleY = scale); } public function setScale(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ this.scaleType = SCALE_TYPE_CONSTANT; this.scale = _arg1; this.scaleSpeed = _arg2; this.scaleAccel = _arg3; this.scaleStartTime = _arg4; this.scaleEndTime = _arg5; this.scaling = true; } public function init(_arg1:DisplayObjectContainer, _arg2:Behaviour, _arg3:Number, _arg4:Number, _arg5:Number):void{ var _local6:Sprite; var _local7:Bitmap; var _local8:BitmapData; var _local9:Graphics; var _local10:MovieClip; var _local11:Behaviour; if (_arg2.bitmapData != null){ _local7 = new Bitmap(_arg2.bitmapData); _local7.smoothing = true; _local6 = new Sprite(); _local6.addChild(_local7); _local7.x = -((_arg2.bitmapData.width * 0.5)); _local7.y = -((_arg2.bitmapData.height * 0.5)); this.sprite = _local6; } else { if (_arg2.bitmapDataArray != null){ _local8 = _arg2.bitmapDataArray[int((Math.random() * _arg2.bitmapDataArray.length))]; _local7 = new Bitmap(_local8); _local7.smoothing = true; _local6 = new Sprite(); _local6.addChild(_local7); _local7.x = -((_local8.width * 0.5)); _local7.y = -((_local8.height * 0.5)); this.sprite = _local6; } else { if (_arg2.displayObject != null){ this.sprite = Utils.duplicateDisplayObject(_arg2.displayObject); } else { _local6 = new Sprite(); _local9 = _local6.graphics; _local9.beginFill(0xFF0000); _local9.drawCircle(0, 0, 10); _local9.endFill(); this.sprite = _local6; }; }; }; if ((sprite is MovieClip)){ _local10 = (sprite as MovieClip); _local10.gotoAndStop((1 + int((_local10.totalFrames * Math.random())))); }; this.sprite.cacheAsBitmap = true; this.deathTime = _arg5; this.killOnEnd = _arg2.killOnEnd; this.position.set(_arg3, _arg4); this.paintAdditive = _arg2.paintAdditive; initDefaults(); this.container = _arg1; this.container.addChild(this.sprite); if (paintAdditive){ this.sprite.blendMode = BlendMode.ADD; }; if (_arg2.emitterBehaviourName != null){ _local11 = Behaviour.behaviourDictionary[_arg2.emitterBehaviourName]; if (_local11 == null){ trace(("couldn't find emitterBehaviour " + _arg2.emitterBehaviourName)); } else { trace(("created emitter for particle with behaviour " + _arg2.emitterBehaviourName)); emitter = new Emitter(this.container, 0, _arg2.emitterRate, _local11, Region.TYPE_POINT, position.x, position.y); emitter.start(); }; }; } public function setAlpha(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ this.alpha = _arg1; this.alphaSpeed = _arg2; this.alphaAccel = _arg3; this.alphaStartTime = _arg4; this.alphaEndTime = _arg5; this.alpharizing = true; } public function setScalePulse(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.scaleType = SCALE_TYPE_PULSE; this.scaleMin = (this.scale = _arg1); this.scaleRange = (_arg2 - _arg1); this.scaleSpeed = _arg3; this.scaleAccel = 0; this.scaling = true; } override public function deactivate():void{ this.container.removeChild(this.sprite); sprite = null; if (ownedByEmitterPool){ emitterPool.notifyDeactivated(this); } else { pool.notifyDeactivated(this); }; if (emitter != null){ emitter.stop(); emitter = null; }; active = false; } public function initDefaults():void{ this.lifeTime = 0; this.rotation = 0; this.scale = (this.alpha = 1); this.moving = false; this.rotating = false; this.scaling = false; this.alpharizing = false; this.colour = 4294967295; this.active = true; this.emitter = null; } override public function createInstance(_arg1:uint):PoolObject{ return (new Particle(_arg1)); } public function setMotion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):void{ this.velocity.set(_arg1, _arg2); this.accel.set(_arg3, _arg4); this.dragMultiplier = _arg5; this.motionStartTime = _arg6; this.motionEndTime = _arg7; this.moving = true; } override public function update(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Vector; var _local5:Vector; var _local6:Vector; var _local7:Number; var _local8:Number; if (emitter != null){ emitter.update(_arg1); }; if (((moving) && ((((((lifeTime >= motionStartTime)) && ((lifeTime <= motionEndTime)))) || ((behaviour.motionType == MOTION_TYPE_TARGETED_WITH_DRAG)))))){ _local2 = position.x; _local3 = position.y; _local4 = velocity.clone(); _local4.multiply(_arg1); position.addVector(_local4); if (position.y >= floorY){ position.y = floorY; velocity.multiply(behaviour.restitution); velocity.y = -(velocity.y); if (rotating){ rotationSpeed = (rotationSpeed * behaviour.restitution); }; }; _local5 = accel.clone(); _local5.multiply(_arg1); velocity.addVector(_local5); if (dragMultiplier != 0){ _local6 = velocity.clone(); _local6.multiply((_arg1 * dragMultiplier)); velocity.subtractVector(_local6); }; if (behaviour.motionType == MOTION_TYPE_TARGETED_WITH_DRAG){ _local7 = Utils.getDistanceBetweenLineAndPoint(_local2, _local3, position.x, position.y, finalX, finalY); if (_local7 < _local4.length()){ position.set(finalX, finalY); finishedJourney(); return; }; }; if (emitter != null){ emitter.setPosition(position.x, position.y); }; }; if (((((rotating) && ((lifeTime >= rotationStartTime)))) && ((lifeTime <= rotationEndTime)))){ if (rotateType == ROTATION_TYPE_FROM_DIRECTION){ rotation = Utils.getAngle(velocity.x, velocity.y); } else { rotation = (rotation + (rotationSpeed * _arg1)); rotationSpeed = (rotationSpeed + (rotationAccel * _arg1)); }; }; if (((((scaling) && ((lifeTime >= scaleStartTime)))) && ((lifeTime <= scaleEndTime)))){ if (scaleType == SCALE_TYPE_PULSE){ scaleAccel = (scaleAccel + (scaleSpeed * _arg1)); if (scaleAccel > (Math.PI * 2)){ scaleAccel = (scaleAccel - (Math.PI * 2)); }; _local8 = ((Math.sin(scaleAccel) + 1) * 0.5); scale = ((_local8 * scaleRange) + scaleMin); } else { scale = (scale + (scaleSpeed * _arg1)); scaleSpeed = (scaleSpeed + (scaleAccel * _arg1)); }; }; if (((((alpharizing) && ((lifeTime >= alphaStartTime)))) && ((lifeTime <= alphaEndTime)))){ alpha = (alpha + (alphaSpeed * _arg1)); alphaSpeed = (alphaSpeed + (alphaAccel * _arg1)); }; if ((((lifeTime < deathTime)) && (!((behaviour.motionType == MOTION_TYPE_TARGETED_WITH_DRAG))))){ lifeTime = (lifeTime + _arg1); if (lifeTime >= deathTime){ finishedJourney(); return; }; }; applyStateToSprite(); } public function setColour(_arg1:uint):void{ this.colour = _arg1; var _local2:ColorTransform = sprite.transform.colorTransform; _local2.color = _arg1; sprite.transform.colorTransform = _local2; } public function setRotationFromDirection():void{ this.rotationStartTime = 0; this.rotationEndTime = 1; this.rotateType = ROTATION_TYPE_FROM_DIRECTION; this.rotating = true; } public function finishedJourney():void{ if (killOnEnd){ deactivate(); return; }; position.set(finalX, finalY); rotation = finalRotation; scale = finalScale; scaling = false; moving = false; rotating = false; } public static function getLinearRFloat(_arg1:Number, _arg2:Number):RangedValue{ var _local3:RangedValue = new RangedValue(); _local3.type = RangedValue.TYPE_LINEAR; _local3.min = _arg1; _local3.max = _arg2; return (_local3); } public static function setAllVisible(_arg1:Boolean):void{ visible = _arg1; } public static function initStart(_arg1:int):void{ Particle.max = _arg1; var _local2:Particle = new Particle(0); pool = new ManagedPool("GlossParticlePool", _local2, _arg1); } public static function getValue(_arg1:RangedValue):Number{ switch (_arg1.type){ case RangedValue.TYPE_NONE: return (_arg1.min); case RangedValue.TYPE_LINEAR: return ((_arg1.min + (Math.random() * (_arg1.max - _arg1.min)))); case RangedValue.TYPE_SINE: return ((_arg1.min + (Math.sin((Math.random() * Math.PI)) * (_arg1.max - _arg1.min)))); }; return (0); } public static function deactivateAllParticles():void{ pool.deactivateAll(); } public static function updateAll(_arg1:Number):void{ var _local3:Particle; var _local2:Number = pool.getActiveObjectCount(); while (--_local2 >= 0) { _local3 = Particle(pool.getActiveObject(_local2)); _local3.update(_arg1); }; } public static function getSimpleRFloat(_arg1:Number):RangedValue{ var _local2:RangedValue = new RangedValue(); _local2.type = RangedValue.TYPE_NONE; _local2.min = (_local2.max = _arg1); return (_local2); } public static function requestParticles(_arg1:DisplayObjectContainer, _arg2:Number, _arg3:Behaviour, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:ManagedPool=null, _arg9:Boolean=false, _arg10:Array=null):void{ var _local12:Particle; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Vector; var _local24:Number; var _local25:Vector; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:int; var _local47:int; var _local11:int = _arg2; if (_arg10 != null){ _arg10.splice(0); }; while (_local11 > 0) { if (_arg8 != null){ _local12 = (_arg8.requestObject() as Particle); if (_local12 != null){ _local12.ownedByEmitterPool = true; _local12.emitterPool = _arg8; }; } else { _local12 = (pool.requestObject() as Particle); if (_local12 != null){ _local12.ownedByEmitterPool = false; _local12.emitterPool = null; }; }; if (_local12 == null){ break; }; if (_arg10 != null){ _arg10.push(_local12); }; _local13 = _arg3.lifeTime; _local14 = 0; _local12.behaviour = _arg3; _local12.finalScale = 1; _local12.finalRotation = 0; _local12.init(_arg1, _arg3, _arg4, _arg5, _local13); if (_arg3.motionType != MOTION_TYPE_NONE){ _local17 = (_local13 * _arg3.motionStartTime); _local18 = (_local13 * _arg3.motionEndTime); _local19 = 0; _local20 = 0; _local21 = getValue(_arg3.accelX); _local22 = getValue(_arg3.accelY); _local12.floorY = (_arg5 + _arg3.floorOffsetY); switch (_arg3.motionType){ case MOTION_TYPE_CARTESIAN: _local19 = getValue(_arg3.velocityX); _local20 = getValue(_arg3.velocityY); break; case MOTION_TYPE_POLAR_EQUAL_DISTRIBUTION: case MOTION_TYPE_POLAR: if (_arg3.motionType == MOTION_TYPE_POLAR_EQUAL_DISTRIBUTION){ _local24 = (_arg3.direction.min + ((_local11 / _arg2) * _arg3.directionRange)); } else { _local24 = getValue(_arg3.direction); }; _local14 = getValue(_arg3.speed); _local19 = (Math.sin(((_local24 * Utils.RAD360) / 360)) * _local14); _local20 = (-(Math.cos(((_local24 * Utils.RAD360) / 360))) * _local14); break; case MOTION_TYPE_TARGETED: case MOTION_TYPE_TARGETED_WITH_DRAG: _local25 = new Vector(0, 0); _local25 = _arg3.targetRegion.getRandomPositionInRegion(); _local12.finalX = _local25.x; _local12.finalY = _local25.y; _local26 = (_local25.x - _arg4); _local27 = (_local25.y - _arg5); _local15 = (_local18 - _local17); _local16 = ((_local18 - _local17) * _local15); _local19 = ((_local26 - ((0.5 * _local21) * _local16)) / _local15); _local20 = ((_local27 - ((0.5 * _local22) * _local16)) / _local15); break; case MOTION_TYPE_AWAY_FROM_CENTRE: _local23 = new Vector((_arg4 - _arg6), (_arg5 - _arg7)); _local23.unit(); _local14 = getValue(_arg3.speed); _local19 = (_local23.x * _local14); _local20 = (_local23.y * _local14); break; }; if (_arg9){ _local19 = -(_local19); _local21 = -(_local21); }; _local12.setMotion(_local19, _local20, _local21, _local22, _arg3.dragMultiplier, _local17, _local18); }; if (_arg3.rotationType == ROTATION_TYPE_FROM_DIRECTION){ _local12.setRotationFromDirection(); } else { if (_arg3.rotationType != ROTATION_TYPE_NONE){ _local28 = (_local13 * _arg3.rotationStartTime); _local29 = (_local13 * _arg3.rotationEndTime); _local30 = 0; _local31 = getValue(_arg3.rotation); _local32 = getValue(_arg3.rotationSpeed); switch (_arg3.rotationType){ case ROTATION_TYPE_CONSTANT: _local30 = _arg3.rotationAccel; break; case ROTATION_TYPE_TARGETED: _local15 = (_local29 - _local28); _local16 = ((_local29 - _local28) * _local15); _local33 = ((_arg3.numberOfRotations * Math.PI) * 2); _local30 = ((_local33 - (_local32 * _local15)) / (0.5 * _local16)); _local12.finalRotation = (_local31 + _local33); break; }; _local12.setRotation(_local31, _local32, _local30, _local28, _local29); }; }; if (_arg3.scaleType != SCALE_TYPE_NONE){ _local34 = (_local13 * _arg3.scaleStartTime); _local35 = (_local13 * _arg3.scaleEndTime); _local36 = getValue(_arg3.scaleSpeed); if (_arg3.scaleType == SCALE_TYPE_PULSE){ _local12.setScalePulse(_arg3.scale.min, _arg3.scale.max, _local36); } else { _local37 = 0; if (_arg3.scaleType == SCALE_TYPE_LINKED_TO_POLAR_SPEED){ _local39 = (_arg3.speedRange / _local14); _local38 = (_arg3.scale.min + (_arg3.scaleRange * _local39)); } else { _local38 = getValue(_arg3.scale); }; switch (_arg3.scaleType){ case SCALE_TYPE_LINKED_TO_POLAR_SPEED: case SCALE_TYPE_CONSTANT: _local37 = _arg3.rotationAccel; break; case SCALE_TYPE_TARGETED: _local33 = (_arg3.targetScale - _local38); _local15 = (_local35 - _local34); _local16 = ((_local35 - _local34) * _local15); _local37 = ((_local33 - (_local36 * _local15)) / (0.5 * _local16)); _local12.finalScale = _arg3.targetScale; break; }; _local12.setScale(_local38, _local36, _local37, _local34, _local35); }; }; if (_arg3.alphaType != ALPHA_TYPE_NONE){ _local40 = (_local13 * _arg3.alphaStartTime); _local41 = (_local13 * _arg3.alphaEndTime); _local42 = 0; _local43 = getValue(_arg3.alpha); _local44 = getValue(_arg3.alphaSpeed); switch (_arg3.alphaType){ case ALPHA_TYPE_CONSTANT: _local42 = _arg3.alphaAccel; break; case ALPHA_TYPE_TARGETED: _local33 = (_arg3.targetAlpha - _local43); _local15 = (_local41 - _local40); _local16 = ((_local41 - _local40) * _local15); _local42 = ((_local33 - (_local44 * _local15)) / (0.5 * _local16)); break; }; _local12.setAlpha(_local43, _local44, _local42, _local40, _local41); }; if (_arg3.colourType != COLOUR_TYPE_NONE){ _local45 = 4294967295; switch (_arg3.colourType){ case COLOUR_TYPE_INTERPOLATED: _local45 = Utils.getInterpolatedColour(_arg3.colour0, _arg3.colour1, Math.random(), 1); break; case COLOUR_TYPE_RANDOMPICK: if (_arg3.colours.length > 0){ _local45 = _arg3.colours[Math.floor((_arg3.colours.length * Math.random()))]; }; break; case COLOUR_TYPE_RANDOMPICK_INTERPOLATED: if (_arg3.colours.length > 0){ _local46 = Math.floor(((_arg3.colours.length * 0.5) * Math.random())); _local47 = (_local46 << 1); _local45 = Utils.getInterpolatedColour(_arg3.colours[_local47], _arg3.colours[(_local47 + 1)], Math.random(), 1); }; break; }; _local12.setColour(_local45); }; _local12.applyStateToSprite(); --_local11; if (_local11 <= 0){ return; }; }; if (_local11 > 0){ trace(" ** NOT ENOUGH PARTICLES!!"); }; } public static function getSineRFloat(_arg1:Number, _arg2:Number):RangedValue{ var _local3:RangedValue = new RangedValue(); _local3.type = RangedValue.TYPE_SINE; _local3.min = _arg1; _local3.max = _arg2; return (_local3); } public static function requestParticlesForRegion(_arg1:Region, _arg2:DisplayObjectContainer, _arg3:Number, _arg4:Behaviour, _arg5:ManagedPool=null, _arg6:Boolean=false, _arg7:Array=null):void{ var _local8:Vector; var _local9:int = _arg3; while (--_local9 >= 0) { _local8 = _arg1.getRandomPositionInRegion(); requestParticles(_arg2, 1, _arg4, _local8.x, _local8.y, _arg1.getCentreX(), _arg1.getCentreY(), _arg5, _arg6, _arg7); }; } public static function setGlobalAlpha(_arg1:Number):void{ globalAlpha = _arg1; } } }//package flesh.particles
Section 10
//RangedValue (flesh.particles.RangedValue) package flesh.particles { public class RangedValue { public var min:Number; public var max:Number; public var type:int; public static const TYPE_LINEAR:int = 1; public static const TYPE_SINE:int = 2; public static const TYPE_NONE:int = 0; public static function getLinearRFloat(_arg1:Number, _arg2:Number):RangedValue{ var _local3:RangedValue = new (RangedValue); _local3.type = TYPE_LINEAR; _local3.min = _arg1; _local3.max = _arg2; return (_local3); } public static function getSineRFloat(_arg1:Number, _arg2:Number):RangedValue{ var _local3:RangedValue = new (RangedValue); _local3.type = TYPE_SINE; _local3.min = _arg1; _local3.max = _arg2; return (_local3); } public static function getSimpleRFloat(_arg1:Number):RangedValue{ var _local2:RangedValue = new (RangedValue); _local2.type = TYPE_NONE; _local2.min = (_local2.max = _arg1); return (_local2); } } }//package flesh.particles
Section 11
//Region (flesh.particles.Region) package flesh.particles { import flesh.*; public class Region { private var width:Number; private var outlineOnly:Boolean; private var centreX:Number; private var centreY:Number; private var endPosition:Vector; private var height:Number; private var position:Vector; private var lineDirection:Vector; private var type:int; public static const TYPE_ELLIPSE:int = 2; public static const TYPE_NAMES:Array = new Array("POINT", "LINE", "ELLIPSE", "RECT"); public static const TYPE_RECT:int = 3; public static const TYPE_POINT:int = 0; public static const TYPE_COUNT:int = 4; public static const TYPE_LINE:int = 1; public static const TYPE_NONE:int = -1; public function Region(){ position = new Vector(0, 0); endPosition = new Vector(0, 0); lineDirection = new Vector(0, 0); } public function loadXML(_arg1:XML):void{ var _local5:int; var _local6:int; var _local2:String = Utils.getStringAttributeFromXML(_arg1, "type", null); if (_local2 == null){ trace(" ** Error: no type specified for REGION"); return; }; type = getRegionTypeFromString(_local2); if (type == TYPE_NONE){ trace(" ** Error: unknown type specified for REGION"); }; var _local3:int = Utils.getIntAttributeFromXML(_arg1, "x", 0); var _local4:int = Utils.getIntAttributeFromXML(_arg1, "y", 0); switch (type){ case TYPE_POINT: setPosition(_local3, _local4); break; case TYPE_LINE: _local5 = Utils.getIntAttributeFromXML(_arg1, "x1", 0); _local6 = Utils.getIntAttributeFromXML(_arg1, "y1", 0); setLine(_local3, _local4, _local5, _local6); break; case TYPE_ELLIPSE: _local5 = Utils.getIntAttributeFromXML(_arg1, "x1", 0); _local6 = Utils.getIntAttributeFromXML(_arg1, "y1", 0); setEllipse(_local3, _local4, _local5, _local6); break; case TYPE_RECT: _local5 = Utils.getIntAttributeFromXML(_arg1, "x1", 0); _local6 = Utils.getIntAttributeFromXML(_arg1, "y1", 0); setRect(_local3, _local4, _local5, _local6); break; }; } public function getRandomPositionInRegion():Vector{ var _local1:Number; var _local3:Number; var _local4:Number; var _local5:Vector; var _local6:int; switch (type){ case TYPE_POINT: return (new Vector(position.x, position.y)); case TYPE_LINE: _local5 = lineDirection.clone(); _local5.multiply((Math.random() * width)); _local5.addVector(position); return (_local5); case TYPE_ELLIPSE: if (outlineOnly){ _local1 = ((Math.random() * Math.PI) * 2); return (new Vector((centreX + (Math.sin(_local1) * (width / 2))), (centreY - (Math.cos(_local1) * (height / 2))))); }; _local1 = ((Math.random() * Math.PI) * 2); return (new Vector((centreX + ((Math.sin(_local1) * Math.random()) * (width / 2))), (centreY - ((Math.cos(_local1) * Math.random()) * (height / 2))))); case TYPE_RECT: _local3 = (Math.random() * width); _local4 = (Math.random() * height); if (outlineOnly){ _local6 = Math.floor((Math.random() * 4)); switch (_local6){ case 0: return (new Vector((position.x + _local3), position.y)); case 1: return (new Vector((position.x + _local3), (position.y + height))); case 2: return (new Vector(position.x, (position.y + _local4))); case 3: return (new Vector((position.x + width), (position.y + _local4))); }; } else { return (new Vector((position.x + _local3), (position.y + _local4))); }; break; }; var _local2:Vector = new Vector(0, 0); return (_local2); } public function getPosition():Vector{ return (position); } public function setEndPosition(_arg1:Number, _arg2:Number):void{ endPosition.set(_arg1, _arg2); } public function setEllipse(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ setPosition(_arg1, _arg2); setEndPosition(_arg3, _arg4); this.width = (_arg3 - _arg1); this.height = (_arg4 - _arg2); this.centreX = (_arg1 + (width / 2)); this.centreY = (_arg2 + (height / 2)); type = TYPE_ELLIPSE; } public function setRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ setPosition(_arg1, _arg2); setEndPosition(_arg3, _arg4); this.width = (_arg3 - _arg1); this.height = (_arg4 - _arg2); this.centreX = (_arg1 + (width / 2)); this.centreY = (_arg2 + (height / 2)); type = TYPE_RECT; } public function getCentreY():Number{ return (centreY); } public function getCentreX():Number{ return (centreX); } public function getType():uint{ return (type); } public function setPosition(_arg1:Number, _arg2:Number):void{ this.centreX = _arg1; this.centreY = _arg2; position.set(_arg1, _arg2); } public function getLinePosition():Vector{ return (lineDirection); } public function setLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ setPosition(_arg1, _arg2); setEndPosition(_arg3, _arg4); lineDirection = endPosition.clone(); lineDirection.subtractVector(position); this.width = lineDirection.unit(); this.centreX = ((_arg1 + _arg3) / 2); this.centreY = ((_arg2 + _arg4) / 2); type = TYPE_LINE; } public static function createLineRegion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Region{ var _local5:Region = new (Region); _local5.setLine(_arg1, _arg2, _arg3, _arg4); return (_local5); } public static function createEllipseRegion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean=false):Region{ var _local6:Region = new (Region); _local6.setEllipse(_arg1, _arg2, _arg3, _arg4); _local6.outlineOnly = _arg5; return (_local6); } public static function createPointRegion(_arg1:Number, _arg2:Number):Region{ var _local3:Region = new (Region); _local3.setPosition(_arg1, _arg2); return (_local3); } public static function createRegion(_arg1:uint, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Boolean=false):Region{ var _local7:Region; switch (_arg1){ case TYPE_POINT: _local7 = createPointRegion(_arg2, _arg3); break; case TYPE_LINE: _local7 = createLineRegion(_arg2, _arg3, _arg4, _arg5); break; case TYPE_ELLIPSE: _local7 = createEllipseRegion(_arg2, _arg3, _arg4, _arg5, _arg6); break; case TYPE_RECT: _local7 = createRectRegion(_arg2, _arg3, _arg4, _arg5, _arg6); break; }; if (_local7 != null){ _local7.type = _arg1; }; return (_local7); } public static function createRectRegion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean=false):Region{ var _local6:Region = new (Region); _local6.setRect(_arg1, _arg2, _arg3, _arg4); _local6.outlineOnly = _arg5; return (_local6); } public static function getRegionTypeFromString(_arg1:String):int{ var _local2:int = TYPE_COUNT; while (--_local2 >= 0) { if (_arg1.toUpperCase().indexOf(TYPE_NAMES[_local2]) != -1){ return (_local2); }; }; return (TYPE_NONE); } } }//package flesh.particles
Section 12
//ArmorGamesInterface (flesh.ArmorGamesInterface) package flesh { import flash.events.*; import flash.display.*; import flash.net.*; import flash.system.*; public class ArmorGamesInterface { private var isGuiVisible:Boolean; private var agi:Object; private var devKey:String; private var gameKey:String; private var parentClip:Sprite; private static var agi_url:String = "http://agi.armorgames.com/assets/agi/AGI.swf"; public function ArmorGamesInterface(){ isGuiVisible = false; } public function isHighScoreVisible():Boolean{ return (isGuiVisible); } public function init(_arg1:Sprite, _arg2:String, _arg3:String):void{ this.parentClip = _arg1; this.devKey = _arg2; this.gameKey = _arg3; Security.allowDomain(agi_url); var _local4:URLRequest = new URLRequest(agi_url); var _local5:Loader = new Loader(); _local5.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); _local5.load(_local4); } private function onCloseHandler():void{ isGuiVisible = false; } public function submitScore(_arg1:int):void{ agi.showScoreboardSubmit(_arg1); isGuiVisible = true; } public function viewScores():void{ agi.showScoreboardList(); isGuiVisible = true; } private function loadComplete(_arg1:Event):void{ agi = _arg1.currentTarget.content; parentClip.addChild((agi as DisplayObject)); agi.init(devKey, gameKey); agi.initAGUI({onClose:onCloseHandler}); } } }//package flesh
Section 13
//DelayedFunction (flesh.DelayedFunction) package flesh { public class DelayedFunction { public var time:Number; public var f:Function; public function DelayedFunction(_arg1:Function, _arg2:Number){ this.f = _arg1; this.time = _arg2; } public function update(_arg1:Number):Boolean{ time = (time - _arg1); if (time <= 0){ f.call(); return (true); }; return (false); } } }//package flesh
Section 14
//DraggableSprite (flesh.DraggableSprite) package flesh { import flash.events.*; import flash.display.*; public class DraggableSprite { public var mouseOffsetX:Number; public var mouseOffsetY:Number; public var sprite:Sprite; public var beingDragged:Boolean; public var startX:Number; public var startY:Number; public var dropFunction:Function; public function DraggableSprite(_arg1:Sprite, _arg2:Function=null){ this.sprite = _arg1; this.dropFunction = _arg2; this.startX = _arg1.x; this.startY = _arg1.y; reset(); } public function mouseDown(_arg1:MouseEvent):void{ mouseOffsetX = (sprite.x - sprite.root.mouseX); mouseOffsetY = (sprite.y - sprite.root.mouseY); this.sprite.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDown); this.sprite.addEventListener(MouseEvent.MOUSE_UP, mouseUp); beingDragged = true; } public function mouseUp(_arg1:MouseEvent):void{ var _local2:Boolean; this.sprite.removeEventListener(MouseEvent.MOUSE_UP, mouseUp); if (dropFunction != null){ _local2 = dropFunction(sprite); }; reset(); } public function update(_arg1:Number):void{ if (beingDragged){ sprite.x = (sprite.root.mouseX + mouseOffsetX); sprite.y = (sprite.root.mouseY + mouseOffsetY); }; } public function reset():void{ beingDragged = false; sprite.x = startX; sprite.y = startY; this.sprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); } } }//package flesh
Section 15
//FleshSound (flesh.FleshSound) package flesh { import flash.events.*; import flash.media.*; public class FleshSound { private var fadeInVolume:Number; private var stopOnFadeOut:Boolean; private var defaultVolume:Number; public var name:String; private var sound:Sound; private var channels:Array; private var state:uint; private var fadeVolumePerSecond:Number; private var loopNextSound:Boolean; private var urlString:String; public var id:String; private var transform:SoundTransform; private var soundToPlayOnFadeOut:FleshSound; private var type:uint; public var filters:String; private var multiMode:uint; public static const MUSIC:uint = 0; public static const SINGLETON:uint = 0; public static const STATE_PLAYING:uint = 0; public static const MULTIPLE:uint = 1; public static const FX:uint = 1; public static const STATE_FADING_IN:uint = 3; public static const STATE_FADING_OUT:uint = 2; public static const STATE_STOPPED:uint = 1; public function FleshSound(_arg1:String, _arg2:Sound, _arg3:uint, _arg4:uint){ this.id = _arg1; this.channels = new Array(); this.type = _arg3; this.multiMode = _arg4; this.urlString = urlString; this.sound = _arg2; transform = new SoundTransform(1, 0); state = STATE_STOPPED; } public function fadeIn(_arg1:Boolean=false, _arg2:Number=0, _arg3:Number=0, _arg4:Number=-1):SoundChannel{ return (play(_arg1, _arg2, _arg3, _arg4)); } public function loadFailed(_arg1:Event):void{ sound.removeEventListener(IOErrorEvent.IO_ERROR, loadFailed); trace((" ** ERROR: Couldn't load sound " + getUrl())); } public function setDefaultVolume(_arg1:Number):void{ defaultVolume = _arg1; } public function play(_arg1:Boolean=false, _arg2:Number=0, _arg3:Number=0, _arg4:Number=-1, _arg5:Number=0):SoundChannel{ var _local6:Number = ((_arg4 == -1)) ? defaultVolume : _arg4; if ((((((state == STATE_PLAYING)) && ((_arg3 > 0)))) && ((transform.volume == 0)))){ state = STATE_FADING_IN; fadeInVolume = _local6; return (null); }; if ((((multiMode == SINGLETON)) && ((channels.length > 0)))){ stop(); }; transform.pan = _arg2; if (_arg3 > 0){ fadeInVolume = _local6; fadeVolumePerSecond = (fadeInVolume / _arg3); state = STATE_FADING_IN; trace(((("fading in sound " + id) + " fadeVolumePerSecond = ") + fadeVolumePerSecond)); } else { state = STATE_PLAYING; }; transform.volume = ((_arg3 > 0)) ? 0 : _local6; var _local7:SoundChannel = sound.play((_arg5 * 1000), (_arg1) ? 100000 : 1, transform); if (_local7 != null){ channels.push(_local7); _local7.addEventListener(Event.SOUND_COMPLETE, soundFinished); }; return (_local7); } public function getSound():Sound{ return (sound); } public function stop():void{ var _local1:uint; while (_local1 < channels.length) { channels[_local1].stop(); _local1++; }; channels.splice(0); state = STATE_STOPPED; } public function applyTransformToAllChannels():void{ var _local1:SoundChannel; for each (_local1 in channels) { _local1.soundTransform = transform; }; } public function stopChannel(_arg1:SoundChannel):void{ _arg1.stop(); var _local2:int = channels.indexOf(_arg1); if (_local2 != -1){ channels.splice(_local2, 1); _arg1.removeEventListener(Event.SOUND_COMPLETE, soundFinished); }; } public function soundFinished(_arg1:Event):void{ var _local2:SoundChannel = SoundChannel(_arg1.target); _local2.removeEventListener(Event.SOUND_COMPLETE, soundFinished); channels.splice(channels.indexOf(_local2), 1); } public function update(_arg1:Number):void{ var _local2:SoundChannel; switch (state){ case STATE_FADING_OUT: transform.volume = (transform.volume - (fadeVolumePerSecond * _arg1)); _local2 = (channels[0] as SoundChannel); if (_local2 == null){ stop(); trace("strange sound problem"); return; }; _local2.soundTransform = transform; if (transform.volume <= 0){ transform.volume = 0; _local2.soundTransform = transform; if (stopOnFadeOut){ stop(); } else { state = STATE_PLAYING; }; if (soundToPlayOnFadeOut != null){ soundToPlayOnFadeOut.play(loopNextSound); }; }; break; case STATE_FADING_IN: transform.volume = (transform.volume + (fadeVolumePerSecond * _arg1)); if (transform.volume >= fadeInVolume){ transform.volume = fadeInVolume; state = STATE_PLAYING; }; _local2 = (channels[0] as SoundChannel); if (_local2 != null){ _local2.soundTransform = transform; }; break; }; } public function fadeOut(_arg1:Boolean=true, _arg2:FleshSound=null, _arg3:Boolean=true, _arg4:Number=1):void{ if (channels.length == 0){ return; }; this.soundToPlayOnFadeOut = _arg2; this.loopNextSound = _arg3; this.stopOnFadeOut = _arg1; fadeVolumePerSecond = (transform.volume / _arg4); state = STATE_FADING_OUT; } public function getType():uint{ return (type); } public function getUrl():String{ return (urlString); } public function loadComplete(_arg1:Event):void{ sound.removeEventListener(Event.COMPLETE, loadComplete); SoundManager.notifySoundLoaded(this); } } }//package flesh
Section 16
//FloatingText (flesh.FloatingText) package flesh { import flash.display.*; public class FloatingText { public var scaleAmount:Number; public var sprite:Sprite; public var parent:DisplayObjectContainer; public var fadeSpeed:Number; public var preFadeTime:Number; public var dy:Number; public function FloatingText(_arg1:DisplayObjectContainer, _arg2:Class, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number=-50, _arg7:Number=0.5, _arg8:Number=3, _arg9:Number=0, _arg10:int=0xFFFFFF){ this.parent = _arg1; this.sprite = new (_arg2); this.sprite["text"].text = _arg3; this.sprite.x = _arg4; this.sprite.y = _arg5; this.sprite.cacheAsBitmap = true; this.dy = _arg6; this.scaleAmount = _arg9; this.fadeSpeed = (1 / _arg8); this.preFadeTime = _arg7; if (_arg10 != 0xFFFFFF){ sprite["text"].textColor = _arg10; }; _arg1.addChild(sprite); } public function update(_arg1:Number):void{ sprite.y = (sprite.y + (dy * _arg1)); sprite.scaleX = (sprite.scaleX + (scaleAmount * _arg1)); sprite.scaleY = sprite.scaleX; if (preFadeTime > 0){ preFadeTime = (preFadeTime - _arg1); } else { sprite.alpha = (sprite.alpha - (fadeSpeed * _arg1)); if (sprite.alpha <= 0){ remove(); }; }; } public function remove():void{ Utils.removeChild(sprite, parent); Utils.removeFloatingText(this); } } }//package flesh
Section 17
//FPSCounter (flesh.FPSCounter) package flesh { import flash.display.*; import flash.text.*; import flash.system.*; public class FPSCounter extends Sprite { private var memGraphics:Graphics; private var total:Number; private var time:Array; private var fpsGraphSprite:Sprite; private var versionTextField:TextField; private var maxMem:int; private var maxMemInMeg:int; private var fpsGraphics:Graphics; private var memGraphSprite:Sprite; private var lastMem:int; private var ready:Boolean; private var fpsTextField:TextField; private var maxFPS:Number; private var minFPS:Number; private var memTextField:TextField; private var pointer:Number; public static var BUFFER_SIZE:int = 60; public static var GRAPH_HEIGHT:int = 20; public function FPSCounter(_arg1:Number=20, _arg2:Number=10, _arg3:int=0xFFFFFF, _arg4:String=""){ fpsTextField = new TextField(); this.addChild(fpsTextField); memTextField = new TextField(); this.addChild(memTextField); memTextField.y = (GRAPH_HEIGHT + 2); versionTextField = new TextField(); versionTextField.text = _arg4; this.addChild(versionTextField); versionTextField.y = 60; versionTextField = new TextField(); this.addChild(versionTextField); versionTextField.y = 60; versionTextField.text = _arg4; time = new Array(BUFFER_SIZE); total = 0; pointer = 0; var _local5:Number = BUFFER_SIZE; while (--_local5 >= 0) { time[_local5] = 0; }; maxMem = 0; ready = false; minFPS = 100000; maxFPS = 0; this.x = _arg1; this.y = _arg2; fpsTextField.textColor = (memTextField.textColor = _arg3); fpsTextField.selectable = (memTextField.selectable = false); fpsGraphSprite = new Sprite(); fpsGraphics = fpsGraphSprite.graphics; this.addChild(fpsGraphSprite); clearFpsGraph(); memGraphSprite = new Sprite(); memGraphics = memGraphSprite.graphics; this.addChild(memGraphSprite); memGraphSprite.y = (GRAPH_HEIGHT + 2); clearMemGraph(); fpsGraphSprite.x = (fpsGraphSprite.x - BUFFER_SIZE); memGraphSprite.x = (memGraphSprite.x - BUFFER_SIZE); } public function getFPS():Number{ if (!ready){ return (0); }; var _local1:Number = (total / BUFFER_SIZE); var _local2:Number = Math.round((1 / _local1)); return (_local2); } public function paintMemBar():void{ memGraphics.lineStyle(1, 0xFFFF); memGraphics.moveTo(pointer, GRAPH_HEIGHT); var _local1:int = System.totalMemory; if (_local1 > maxMem){ maxMem = _local1; maxMemInMeg = ((_local1 / (0x0400 * 0x0400)) + 4); }; var _local2:int = ((GRAPH_HEIGHT * _local1) / ((0x0400 * 0x0400) * maxMemInMeg)); if (_local2 > GRAPH_HEIGHT){ _local2 = GRAPH_HEIGHT; }; if ((lastMem - _local1) > (0x0400 * 0x0400)){ memGraphics.lineStyle(1, 0xFF0000); }; lastMem = _local1; memGraphics.lineTo(pointer, (GRAPH_HEIGHT - _local2)); memGraphics.lineStyle(1, 0); memGraphics.lineTo(pointer, 0); } public function addTime(_arg1:Number):void{ total = (total - time[pointer]); total = (total + _arg1); var _local2 = pointer++; time[_local2] = _arg1; if (pointer >= BUFFER_SIZE){ clearFpsGraph(); clearMemGraph(); pointer = 0; ready = true; }; if (ready){ setMemText(memTextField); setFPSText(fpsTextField); paintFPSBar(); paintMemBar(); }; } public function clearFpsGraph():void{ fpsGraphics.clear(); fpsGraphics.beginFill(0); fpsGraphics.drawRect(0, 0, BUFFER_SIZE, GRAPH_HEIGHT); fpsGraphics.endFill(); } private function setMemText(_arg1:TextField):void{ if (!ready){ return; }; _arg1.text = (int((lastMem / (0x0400 * 0x0400))) + "mb"); } public function clearMemGraph():void{ memGraphics.clear(); memGraphics.beginFill(0); memGraphics.drawRect(0, 0, BUFFER_SIZE, GRAPH_HEIGHT); memGraphics.endFill(); } public function paintFPSBar():void{ fpsGraphics.lineStyle(1, 0xFF00); fpsGraphics.moveTo(pointer, GRAPH_HEIGHT); var _local1:Number = time[pointer]; var _local2:Number = (total / BUFFER_SIZE); var _local3:Number = (_local1 - _local2); var _local4:int = ((GRAPH_HEIGHT * _local1) * 10); if (_local4 > GRAPH_HEIGHT){ _local4 = GRAPH_HEIGHT; }; if (_local3 > 0.02){ fpsGraphics.lineStyle(1, 0xFF0000); }; fpsGraphics.lineTo(pointer, (GRAPH_HEIGHT - _local4)); fpsGraphics.lineStyle(1, 0); } private function setFPSText(_arg1:TextField):void{ if (!ready){ return; }; var _local2:Number = getFPS(); if (_local2 < minFPS){ minFPS = _local2; }; if (_local2 > maxFPS){ maxFPS = _local2; }; _arg1.text = (_local2 + "fps"); } } }//package flesh
Section 18
//ImageLoader (flesh.ImageLoader) package flesh { import flash.events.*; import flash.display.*; import flash.net.*; public class ImageLoader { private var failFunction:Function; private var returnFunction:Function; private var imageLoader:Loader; private var url:String; public function ImageLoader(){ imageLoader = new Loader(); } public function loadUrlSuccess(_arg1:Event):void{ var loaderInfo:LoaderInfo; var object:Object; var e = _arg1; try { loaderInfo = (e.target as LoaderInfo); object = loaderInfo.loader.content; returnFunction(object, url); } catch(e:Error) { trace("loadUrlSuccess Error"); }; } public function loadUrlFail(_arg1:IOErrorEvent):void{ trace(("problem loading: " + _arg1.text)); } public function loadSprite(_arg1:String, _arg2:Function, _arg3:Function=null):void{ this.returnFunction = _arg2; this.failFunction = _arg3; var _local4:int = _arg1.lastIndexOf("/"); if (_local4 == -1){ _local4 = 0; } else { _local4++; }; this.url = _arg1.substring(_local4, _arg1.length); var _local5:URLRequest = new URLRequest(_arg1); imageLoader.contentLoaderInfo.addEventListener(Event.INIT, loadUrlSuccess); if (_arg3 == null){ _arg3 = loadUrlFail; }; imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadUrlFail); imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.DISK_ERROR, _arg3); imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, _arg3); imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, _arg3); imageLoader.load(_local5); } } }//package flesh
Section 19
//KeyCodes (flesh.KeyCodes) package flesh { public class KeyCodes { public static const NUM_0:uint = 48; public static const NUM_2:uint = 50; public static const NUM_4:uint = 52; public static const NUM_6:uint = 54; public static const NUM_1:uint = 49; public static const NUM_3:uint = 51; public static const NUM_5:uint = 53; public static const NUM_7:uint = 55; public static const NUM_9:uint = 57; public static const A:uint = 65; public static const B:uint = 66; public static const C:uint = 67; public static const D:uint = 68; public static const E:uint = 69; public static const F:uint = 70; public static const G:uint = 71; public static const H:uint = 72; public static const I:uint = 73; public static const J:uint = 74; public static const K:uint = 75; public static const L:uint = 76; public static const M:uint = 77; public static const N:uint = 78; public static const O:uint = 79; public static const P:uint = 80; public static const Q:uint = 81; public static const R:uint = 82; public static const S:uint = 83; public static const T:uint = 84; public static const U:uint = 85; public static const V:uint = 86; public static const W:uint = 87; public static const X:uint = 88; public static const Y:uint = 89; public static const Z:uint = 90; public static const NUM_8:uint = 56; } }//package flesh
Section 20
//KeyPoll (flesh.KeyPoll) package flesh { import flash.events.*; import flash.display.*; import flash.utils.*; public class KeyPoll { private var states:ByteArray; private var dispObj:DisplayObject; public function KeyPoll(_arg1:DisplayObject){ states = new ByteArray(); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); dispObj = _arg1; dispObj.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener, false, 0, true); dispObj.addEventListener(KeyboardEvent.KEY_UP, keyUpListener, false, 0, true); dispObj.addEventListener(Event.ACTIVATE, activateListener, false, 0, true); dispObj.addEventListener(Event.DEACTIVATE, deactivateListener, false, 0, true); } private function activateListener(_arg1:Event):void{ var _local2:int; while (_local2 < 8) { states[_local2] = 0; _local2++; }; } private function deactivateListener(_arg1:Event):void{ var _local2:int; while (_local2 < 8) { states[_local2] = 0; _local2++; }; } public function isDown(_arg1:uint):Boolean{ return (!(((states[(_arg1 >>> 3)] & (1 << (_arg1 & 7))) == 0))); } private function keyDownListener(_arg1:KeyboardEvent):void{ states[(_arg1.keyCode >>> 3)] = (states[(_arg1.keyCode >>> 3)] | (1 << (_arg1.keyCode & 7))); } public function isUp(_arg1:uint):Boolean{ return (((states[(_arg1 >>> 3)] & (1 << (_arg1 & 7))) == 0)); } private function keyUpListener(_arg1:KeyboardEvent):void{ states[(_arg1.keyCode >>> 3)] = (states[(_arg1.keyCode >>> 3)] & ~((1 << (_arg1.keyCode & 7)))); } } }//package flesh
Section 21
//ManagedPool (flesh.ManagedPool) package flesh { public class ManagedPool { public var activePool:Array; public var max:uint; public var maxActiveObjectCount:uint; public var inactivePool:Array; private var id:String; public function ManagedPool(_arg1:String, _arg2:PoolObject, _arg3:Number){ this.id = _arg1; this.max = _arg3; activePool = new Array(0); inactivePool = new Array(_arg3); var _local4:uint = _arg3; while (--_local4 >= 0) { inactivePool[_local4] = _arg2.createInstance(_local4); inactivePool[_local4].active = false; }; maxActiveObjectCount = 0; } public function paintAll(_arg1:Object):void{ var _local2:uint = activePool.length; while (--_local2 >= 0) { activePool[_local2].paint(_arg1); }; } public function getActiveObject(_arg1:uint):PoolObject{ return (activePool[_arg1]); } public function deactivateAll():void{ var _local2:PoolObject; while (activePool.length > 0) { _local2 = activePool.shift(); _local2.deactivate(); inactivePool.push(_local2); }; var _local1:uint; while (_local1 < inactivePool.length) { _local2 = inactivePool[_local1]; _local2.index = _local1; _local2.active = false; _local1++; }; } private function getObjectAt(_arg1:uint):PoolObject{ var _local2:uint = activePool.length; while (--_local2 >= 0) { if (activePool[_local2].index == _arg1){ return (activePool[_local2]); }; }; _local2 = inactivePool.length; while (--_local2 >= 0) { if (inactivePool[_local2].index == _arg1){ return (inactivePool[_local2]); }; }; return (null); } public function setAllInactive():void{ deactivateAll(); } public function getActiveObjectCount():uint{ return (activePool.length); } public function requestObject():PoolObject{ var _local1:uint; var _local2:PoolObject; if (inactivePool.length > 0){ _local1 = 0; while (_local1 < inactivePool.length) { _local2 = inactivePool[_local1]; if (!_local2.active){ inactivePool.splice(_local1, 1); activePool.push(_local2); if (activePool.length > maxActiveObjectCount){ maxActiveObjectCount = activePool.length; }; _local2.active = true; _local2.index = (activePool.length - 1); return (_local2); }; _local1++; }; }; trace((("ManagedPool " + id) + " doesn't have enough objects")); return (null); } public function updateAll(_arg1:Number):void{ var _local2:uint = activePool.length; while (--_local2 >= 0) { activePool[_local2].update(_arg1); }; } public function getMaxActiveObjectCount():int{ return (maxActiveObjectCount); } public function getRandomActiveObject():PoolObject{ var _local1:uint; while (true) { _local1 = Math.floor((Math.random() * activePool.length)); if (activePool[_local1].active){ return (activePool[_local1]); }; }; return (null); } public function notifyDeactivated(_arg1:PoolObject):void{ _arg1.active = false; var _local2:int = activePool.indexOf(_arg1); if (_local2 != -1){ activePool.splice(_local2, 1); }; var _local3:int = inactivePool.indexOf(_arg1); if (_local3 == -1){ inactivePool.push(_arg1); }; } } }//package flesh
Section 22
//ParallaxScrollingLayer (flesh.ParallaxScrollingLayer) package flesh { import flash.display.*; public class ParallaxScrollingLayer extends Sprite { public var bgWidth:Number; public var closestBg:DisplayObject; public var flipListener:Object; public var bg1:DisplayObject; public var bg2:DisplayObject; public var index:int; public var furthestBg:DisplayObject; public var shakeDecay:Number; public var scrollSpeed:Number; public var baseY:Number; public var shakeAmount:Number; public function ParallaxScrollingLayer(_arg1:int, _arg2:DisplayObject, _arg3:Number, _arg4:Number){ this.index = _arg1; this.scrollSpeed = _arg3; this.bgWidth = _arg2.width; this.y = (this.baseY = _arg4); closestBg = (bg1 = _arg2); this.addChild(bg1); bg1.x = 0; bg1.cacheAsBitmap = true; bg2 = null; if (_arg3 != 0){ bg2 = Utils.duplicateDisplayObject(bg1); this.addChild(bg2); bg2.x = bgWidth; furthestBg = bg2; bg2.cacheAsBitmap = true; }; flipListener = null; shakeAmount = 0; } public function registerFlipListener(_arg1:Object):void{ flipListener = _arg1; } public function shake(_arg1:Number, _arg2:Number):void{ shakeAmount = _arg1; shakeDecay = _arg2; } public function update(_arg1:Number):void{ if (shakeAmount > 0){ this.x = ((Math.random() * shakeAmount) - (shakeAmount * 0.5)); this.y = ((baseY + (Math.random() * shakeAmount)) - (shakeAmount * 0.5)); shakeAmount = (shakeAmount - (_arg1 * shakeDecay)); if (shakeAmount < 0){ this.x = 0; this.y = baseY; }; }; if (bg2 == null){ return; }; var _local2:Number = (closestBg.x + bgWidth); if (_local2 <= 0){ if (closestBg == bg1){ bg1.x = (bg2.x + bgWidth); closestBg = bg2; furthestBg = bg1; } else { if (closestBg == bg2){ bg2.x = (bg1.x + bgWidth); closestBg = bg1; furthestBg = bg2; }; }; if (flipListener != null){ flipListener.notifyFlipped(index); }; }; var _local3:Number = (scrollSpeed * _arg1); closestBg.x = (closestBg.x - _local3); furthestBg.x = ((closestBg.x + bgWidth) - 3); } public function setBothBgVisible(_arg1:Boolean):void{ bg1.visible = (bg2.visible = _arg1); } public function setLeftBgVisible(_arg1:Boolean):void{ var _local2:DisplayObject = ((bg1.x > bg2.x)) ? bg2 : bg1; _local2.visible = _arg1; } public function setRightBgVisible(_arg1:Boolean):void{ var _local2:DisplayObject = ((bg1.x < bg2.x)) ? bg2 : bg1; _local2.visible = _arg1; } public function setScrollSpeed(_arg1:Number):void{ this.scrollSpeed = _arg1; } } }//package flesh
Section 23
//ParallaxScrollingSprite (flesh.ParallaxScrollingSprite) package flesh { import flash.display.*; public class ParallaxScrollingSprite extends Sprite { public var layers:Array; public function ParallaxScrollingSprite(_arg1:Array){ var _local3:DisplayObject; var _local4:Number; var _local5:Number; var _local6:ParallaxScrollingLayer; super(); layers = new Array(); var _local2:int; while (_local2 < _arg1.length) { _local3 = _arg1[_local2]; _local4 = _arg1[(_local2 + 1)]; _local5 = _arg1[(_local2 + 2)]; _local6 = new ParallaxScrollingLayer((_local2 / 3), _local3, _local5, _local4); this.addChild(_local6); layers.push(_local6); _local2 = (_local2 + 3); }; } public function setLayerVisible(_arg1:int, _arg2:Boolean):void{ layers[_arg1].visible = _arg2; } public function getOffset(_arg1:int):Number{ return (layers[_arg1].closestBg.x); } public function setBothBgVisible(_arg1:int, _arg2:Boolean):void{ layers[_arg1].setBothBgVisible(_arg2); } public function setLeftBgVisible(_arg1:int, _arg2:Boolean):void{ layers[_arg1].setLeftBgVisible(_arg2); } public function getLayerAt(_arg1:int):ParallaxScrollingLayer{ return (layers[_arg1]); } public function setLayerAlpha(_arg1:int, _arg2:Number):void{ layers[_arg1].alpha = _arg2; } public function update(_arg1:Number):void{ var _local2:ParallaxScrollingLayer; for each (_local2 in layers) { _local2.update(_arg1); }; } public function shakeLayer(_arg1:int, _arg2:Number=20, _arg3:Number=10):void{ layers[_arg1].shake(_arg2, _arg3); } public function setScrollSpeed(_arg1:int, _arg2:Number):void{ layers[_arg1].setScrollSpeed(_arg2); } public function setRightBgVisible(_arg1:int, _arg2:Boolean):void{ layers[_arg1].setRightBgVisible(_arg2); } public function registerFlipListener(_arg1:int, _arg2:Object):void{ layers[_arg1].registerFlipListener(_arg2); } } }//package flesh
Section 24
//PoolObject (flesh.PoolObject) package flesh { public class PoolObject { public var index:uint; public var active:Boolean; public function PoolObject(_arg1:uint){ this.index = _arg1; active = false; } public function createInstance(_arg1:uint):PoolObject{ return (undefined); } public function getIndex():uint{ return (index); } public function update(_arg1:Number):void{ } public function deactivate():void{ active = false; } public function paint(_arg1:Object):void{ } } }//package flesh
Section 25
//Portals (flesh.Portals) package flesh { public class Portals { public static const SPIL:uint = 2; public static const GIMME5:uint = 1; public static const ARMOR:uint = 4; public static const NONE:int = 0; public static const MINICLIP:uint = 3; } }//package flesh
Section 26
//Preloader (flesh.Preloader) package flesh { import flash.events.*; import flash.display.*; import alcon.*; import flash.utils.*; public class Preloader extends MovieClip { private var logoClassInstance:Object; private var logoX:int; private var logoY:int; private var waitUntilEndOfLogoAnimation:Boolean; private var logoClass:Class; private var logoClipClass:Class; public function Preloader(_arg1:Class, _arg2:Boolean){ Debug.trace("Preloader::ctor"); this.logoClipClass = _arg1; this.waitUntilEndOfLogoAnimation = _arg2; stop(); stage.showDefaultContextMenu = false; stage.scaleMode = StageScaleMode.NO_SCALE; stage.quality = StageQuality.HIGH; addEventListener(Event.ENTER_FRAME, mainloop); } private function triggerLogo():void{ Debug.trace("Preloader::triggerLogo"); logoClass = (getDefinitionByName("PreloaderLogo") as Class); if (logoClass){ logoClassInstance = new logoClass(logoClipClass, waitUntilEndOfLogoAnimation); addChild((logoClassInstance as DisplayObject)); }; } private function triggerGame():void{ var _local2:Object; Debug.trace("Preloader::triggerGame"); var _local1:Class = (getDefinitionByName("App") as Class); if (_local1){ _local2 = new (_local1); addChild((_local2 as DisplayObject)); _local2.initGame(); logoClassInstance.dispose(); }; } private function mainloop(_arg1:Event):void{ Debug.trace(("Preloader::mainLoop framesLoaded = " + framesLoaded)); if (framesLoaded >= 2){ nextFrame(); triggerLogo(); removeEventListener(Event.ENTER_FRAME, mainloop); addEventListener(Event.ENTER_FRAME, mainloop2); }; } private function mainloop2(_arg1:Event):void{ if (framesLoaded == totalFrames){ if (logoClassInstance.animCompletedFlag == true){ removeEventListener(Event.ENTER_FRAME, mainloop2); nextFrame(); triggerGame(); }; }; } } }//package flesh
Section 27
//Screen (flesh.Screen) package flesh { import flash.events.*; import flash.display.*; import flash.text.*; import flash.utils.*; public class Screen extends Sprite { public var buttons:Array;// = null public var scaleMouseButton:Boolean; private var id:String; public var extraToolTips:Dictionary; public var screenManager:ScreenManager; public var toolTipText:TextField; public var toolTipsEnabled:Boolean; public var mouseButton:DisplayObject; public var toolTipFormat:TextFormat; public var buttonToolTips:Array; private var buttonsScale:Array; public var extraToolTipObject:DisplayObject; public var autoBlankTooltip:Boolean; public var scaleMouseButtonSpecific:Dictionary; public function Screen(_arg1:String){ this.id = _arg1; this.toolTipsEnabled = false; scaleMouseButton = true; extraToolTips = new Dictionary(); scaleMouseButtonSpecific = new Dictionary(); autoBlankTooltip = true; } public function addExtraToolTip(_arg1:DisplayObject, _arg2:String):void{ extraToolTips[_arg1.name] = _arg2; _arg1.addEventListener(MouseEvent.MOUSE_OVER, mouseOverExtraToolTipObject); _arg1.addEventListener(MouseEvent.MOUSE_OUT, mouseOutExtraToolTipObject); } public function linkButtonsByName(_arg1:Array):void{ var name:String; var sprite:Sprite; var array:Array; var i:uint; var buttonNamesArray = _arg1; buttons = new Array(); buttonsScale = new Array(); for each (name in buttonNamesArray) { try { if (name.indexOf(".") != -1){ array = name.split("."); sprite = (this.getChildByName(array[0]) as Sprite); i = 1; while (i < array.length) { sprite = (sprite.getChildByName(array[i]) as Sprite); i = (i + 1); }; } else { sprite = (this.getChildByName(name) as Sprite); }; } catch(err:Error) { }; linkButton(sprite, name); }; } public function firePressed():void{ } public function setScaleMouseButton(_arg1:Boolean):void{ scaleMouseButton = _arg1; } public function buttonClickedId(_arg1:String):void{ } public function getId():String{ return (id); } public function buttonClicked(_arg1:uint):void{ } private function scaleButton(_arg1:DisplayObject, _arg2:Number):void{ var _local3:int = buttons.indexOf(_arg1); if (_local3 == -1){ return; }; var _local4:Number = buttonsScale[_local3]; var _local5:Number = ((_arg2 * _local4) - _arg1.scaleX); _arg1.scaleX = (_arg1.scaleX + (_local5 * 0.5)); _arg1.scaleY = _arg1.scaleX; } public function notifyScreenEntered():void{ } public function linkButtons(_arg1:Array):void{ var _local2:String; var _local3:Sprite; var _local4:Array; var _local5:uint; buttons = new Array(); buttonsScale = new Array(); for each (_local2 in _arg1) { if (_local2.indexOf(".") != -1){ _local4 = _local2.split("."); _local3 = this[_local4[0]]; if (_local3 != null){ _local5 = 1; while (_local5 < _local4.length) { if (_local3[_local4[_local5]] != null){ _local3 = _local3[_local4[_local5]]; }; _local5++; }; }; } else { _local3 = this[_local2]; }; linkButton(_local3, _local2); }; } public function keyDown(_arg1:KeyboardEvent):void{ } public function mouseOutExtraToolTipObject(_arg1:Event):void{ extraToolTipObject = null; } public function mouseOverButton(_arg1:MouseEvent):void{ var _local2:String; var _local3:int; mouseButton = (_arg1.target as Sprite); if (mouseButton == null){ return; }; while (true) { if (buttons.indexOf(mouseButton) != -1){ break; }; mouseButton = mouseButton.parent; if (mouseButton == null){ break; }; }; if (toolTipsEnabled){ _local2 = null; _local3 = buttons.indexOf(mouseButton); if (buttonToolTips.length > _local3){ _local2 = buttonToolTips[_local3]; }; if (_local2 != null){ toolTipText.text = _local2; }; }; } public function notifyLoaded():void{ } public function resetTooltip():void{ if (toolTipText != null){ toolTipText.text = ""; }; } public function updateMouseButton(_arg1:Number):void{ var _local2:Sprite; if (toolTipsEnabled){ if (root.mouseX > 400){ toolTipText.x = ((root.mouseX - toolTipText.textWidth) - 10); } else { toolTipText.x = (root.mouseX + 10); }; toolTipText.y = (root.mouseY - (toolTipText.textHeight * 0.5)); if ((((((mouseButton == null)) && ((extraToolTipObject == null)))) && (autoBlankTooltip))){ toolTipText.text = ""; }; }; if (scaleMouseButton){ if (mouseButton != null){ if ((((scaleMouseButtonSpecific[mouseButton.name] == undefined)) || ((scaleMouseButtonSpecific[mouseButton.name] == true)))){ scaleButton(mouseButton, 1.1); }; }; for each (_local2 in buttons) { if (_local2 != mouseButton){ scaleButton(_local2, 1); }; }; }; } public function mouseOverExtraToolTipObject(_arg1:Event):void{ extraToolTipObject = (_arg1.target as DisplayObject); toolTipText.text = extraToolTips[extraToolTipObject.name]; } public function linkButton(_arg1:Sprite, _arg2:String=null):void{ if (buttons == null){ buttons = new Array(); buttonsScale = new Array(); }; if (_arg1 == null){ trace((((" ** Error: Couldn't find button " + _arg2) + " in screen ") + id)); return; }; _arg1.buttonMode = true; _arg1.tabEnabled = false; _arg1.addEventListener(MouseEvent.MOUSE_OVER, mouseOverButton); _arg1.addEventListener(MouseEvent.MOUSE_OUT, mouseOutButton); buttons.push(_arg1); buttonsScale.push(_arg1.scaleX); _arg1.addEventListener(MouseEvent.CLICK, mouseClick); } public function update(_arg1:Number):void{ } public function mouseClick(_arg1:MouseEvent):void{ if (screenManager.isTransitioning()){ return; }; mouseButton = (_arg1.target as Sprite); if (mouseButton == null){ return; }; while (true) { if (buttons.indexOf(mouseButton) != -1){ break; }; mouseButton = mouseButton.parent; if (mouseButton == null){ break; }; }; var _local2:int = buttons.indexOf(mouseButton); screenManager.notifyButtonPressed(); buttonClicked(_local2); buttonClickedId(mouseButton.name); } public function setManager(_arg1:ScreenManager):void{ this.screenManager = _arg1; } public function setupTooltips(_arg1:TextField, _arg2:Array):void{ this.toolTipsEnabled = true; this.toolTipText = _arg1; this.buttonToolTips = _arg2; this.toolTipText.mouseEnabled = false; toolTipFormat = new TextFormat(); _arg1.defaultTextFormat = toolTipFormat; } public function setAllButtonsVisible(_arg1:Boolean):void{ var _local2:Sprite; for each (_local2 in buttons) { _local2.visible = _arg1; }; } public function mouseOutButton(_arg1:MouseEvent):void{ mouseButton = null; } public function setScaleSpecificMouseButton(_arg1:String, _arg2:Boolean):void{ scaleMouseButtonSpecific[_arg1] = _arg2; } } }//package flesh
Section 28
//ScreenManager (flesh.ScreenManager) package flesh { import flash.events.*; import flash.display.*; public class ScreenManager extends Sprite { private var currentScreen:Screen; private var screenArray:Array; private var scaleButtons:Boolean; private var transitionManager:ScreenTransitionManager; private var buttonClickSoundId:String; private var playSound:Function; public function ScreenManager(){ screenArray = new Array(); transitionManager = new ScreenTransitionManager(this); currentScreen = null; scaleButtons = true; buttonClickSoundId = null; } public function notifyButtonPressed():void{ if (buttonClickSoundId != null){ playSound(buttonClickSoundId); }; } public function hideAllScreens():void{ var _local1:Screen; for each (_local1 in screenArray) { if (this.contains(_local1)){ this.removeChild(_local1); }; }; currentScreen = null; transitionManager.reset(); } public function update(_arg1:Number):void{ if (transitionManager.isTransitioning()){ transitionManager.update(_arg1); } else { if (currentScreen != null){ currentScreen.update(_arg1); if (scaleButtons){ currentScreen.updateMouseButton(_arg1); }; }; }; } public function setDefaultTransitionType(_arg1:uint):void{ transitionManager.setDefaultType(_arg1); } public function getCurrentScreen():Screen{ return (currentScreen); } public function removeScreen(_arg1:String):void{ var _local2:int; while (_local2 < screenArray.length) { if (screenArray[_local2].getId() == _arg1){ screenArray.splice(_local2, 1); return; }; _local2++; }; } public function getCurrentScreenId():String{ if (currentScreen == null){ return (null); }; return (currentScreen.getId()); } public function setScaleButtons(_arg1:Boolean):void{ this.scaleButtons = _arg1; } public function keyDown(_arg1:KeyboardEvent):void{ if (currentScreen != null){ currentScreen.keyDown(_arg1); }; } public function getScreen(_arg1:String):Screen{ var _local2:Screen; for each (_local2 in screenArray) { if (_local2.getId() == _arg1){ return (_local2); }; }; return (undefined); } public function isTransitioning():Boolean{ return (transitionManager.isTransitioning()); } public function addScreen(_arg1:Screen):void{ screenArray.push(_arg1); _arg1.setManager(this); _arg1.notifyLoaded(); } public function setScreen(_arg1:String, _arg2:uint=1000):void{ var _local3:Screen = getScreen(_arg1); if (_local3 == null){ trace(("** ScreenManager cannot transition to unfound screen " + _arg1)); }; if (currentScreen != null){ transitionManager.transition(currentScreen, _local3, _arg2); } else { _local3.alpha = 1; transitionManager.setScreenScaleAndCentre(_local3, 1); _local3.x = (_local3.y = 0); this.addChild(_local3); }; currentScreen = _local3; _local3.resetTooltip(); _local3.notifyScreenEntered(); } public function setPlaySoundFunction(_arg1:Function):void{ playSound = _arg1; } public function setButtonClickSoundId(_arg1:String):void{ buttonClickSoundId = _arg1; } } }//package flesh
Section 29
//ScreenTransitionManager (flesh.ScreenTransitionManager) package flesh { import flash.display.*; public class ScreenTransitionManager { private var xAngle:Number; private var maskSprite:Sprite; private var angle:Number; private var yAngle:Number; private var defaultType:uint; private var screenManager:ScreenManager; private var sourceScreen:Screen; private var maskSizeX:Number; private var maskSizeY:Number; private var destScreen:Screen; private var transitionType:uint; private var angleSpeed:Number; private var maskCheckScale:Number; private var isTransitioningFlag:Boolean; public static const TYPE_MASK_OUT:uint = 4; public static const TYPE_ROTATE_OUT_TOP_LEFT:uint = 2; private static const HALF_CHECK_SIZE:int = 32; private static const CHECK_SIZE:int = 64; public static const TYPE_ZOOM_OUT_FADE_SOURCE:uint = 1; public static const TYPE_ROTATE_IN_TOP_LEFT:uint = 3; public static const TYPE_ZOOM_IN_DEST:uint = 0; public static const TYPE_NONE:uint = 999; public static const DEFAULT_TYPE:uint = 1000; public function ScreenTransitionManager(_arg1:ScreenManager){ this.screenManager = _arg1; defaultType = TYPE_ZOOM_IN_DEST; reset(); maskSprite = new Sprite(); } public function putSourceScreenOnTop():void{ if (screenManager.getChildIndex(sourceScreen) < screenManager.getChildIndex(destScreen)){ screenManager.swapChildren(sourceScreen, destScreen); }; } public function update(_arg1:Number):void{ switch (transitionType){ case TYPE_MASK_OUT: paintCheckerBoardOnMask(maskCheckScale); maskCheckScale = (maskCheckScale - (_arg1 * 0.7)); if (maskCheckScale <= 0){ finishedTransition(); }; break; case TYPE_ROTATE_OUT_TOP_LEFT: angleSpeed = (angleSpeed + (_arg1 * 0.3)); angle = (angle - angleSpeed); sourceScreen.rotation = ((angle * 360) / Utils.RAD360); if (angle <= -(Utils.RAD90)){ finishedTransition(); }; break; case TYPE_ROTATE_IN_TOP_LEFT: angleSpeed = (angleSpeed + (_arg1 * 0.3)); angle = (angle + angleSpeed); destScreen.rotation = ((angle * 360) / Utils.RAD360); if (angle >= 0){ finishedTransition(); }; break; case TYPE_ZOOM_OUT_FADE_SOURCE: setScreenScaleAndCentre(sourceScreen, (sourceScreen.scaleX * (1 + (_arg1 * 5)))); sourceScreen.alpha = (sourceScreen.alpha - _arg1); if (sourceScreen.alpha < 0){ finishedTransition(); }; break; case TYPE_ZOOM_IN_DEST: xAngle = (xAngle + (_arg1 * 3)); if (xAngle > Utils.RAD120){ xAngle = Utils.RAD120; }; yAngle = (yAngle + (_arg1 * 2.5)); setScreenScaleAndCentre(destScreen, (Math.sin(xAngle) / Math.sin(Utils.RAD120)), (Math.sin(yAngle) / Math.sin(Utils.RAD120))); if (yAngle >= Utils.RAD120){ destScreen.x = (destScreen.y = 0); destScreen.scaleX = (destScreen.scaleY = 1); finishedTransition(); }; break; }; } private function initTransition():void{ switch (transitionType){ case TYPE_MASK_OUT: sourceScreen.mask = maskSprite; maskSizeX = sourceScreen.width; maskSizeY = sourceScreen.height; maskCheckScale = 1; paintCheckerBoardOnMask(maskCheckScale); putSourceScreenOnTop(); break; case TYPE_ZOOM_IN_DEST: yAngle = 0; xAngle = 0; destScreen.scaleX = (destScreen.scaleY = 0); putDestScreenOnTop(); break; case TYPE_ZOOM_OUT_FADE_SOURCE: putSourceScreenOnTop(); break; case TYPE_ROTATE_OUT_TOP_LEFT: angle = (angleSpeed = 0); putSourceScreenOnTop(); break; case TYPE_ROTATE_IN_TOP_LEFT: angle = -(Utils.RAD90); angleSpeed = 0; destScreen.rotation = -90; putDestScreenOnTop(); break; }; } public function reset():void{ isTransitioningFlag = false; } public function transition(_arg1:Screen, _arg2:Screen, _arg3:uint):void{ if (_arg3 == DEFAULT_TYPE){ _arg3 = defaultType; }; if (_arg3 == TYPE_NONE){ if (screenManager.contains(_arg1)){ screenManager.removeChild(_arg1); }; if (!screenManager.contains(_arg2)){ screenManager.addChild(_arg2); }; isTransitioningFlag = false; return; }; this.sourceScreen = _arg1; this.destScreen = _arg2; this.transitionType = _arg3; if (!screenManager.contains(_arg1)){ screenManager.addChild(_arg1); }; if (!screenManager.contains(_arg2)){ screenManager.addChild(_arg2); }; initTransition(); isTransitioningFlag = true; } public function setDefaultType(_arg1:uint):void{ this.defaultType = _arg1; } public function putDestScreenOnTop():void{ if (screenManager.getChildIndex(sourceScreen) > screenManager.getChildIndex(destScreen)){ screenManager.swapChildren(sourceScreen, destScreen); }; } public function isTransitioning():Boolean{ return (isTransitioningFlag); } private function paintCheckerBoardOnMask(_arg1:Number):void{ var _local4:int; var _local2:Graphics = maskSprite.graphics; _local2.clear(); var _local3:int; while (_local3 < maskSizeX) { _local4 = 0; while (_local4 < maskSizeY) { _local2.beginFill(0xFFFFFF, 1); _local2.drawCircle((_local3 + HALF_CHECK_SIZE), (_local4 + HALF_CHECK_SIZE), ((CHECK_SIZE * 0.75) * _arg1)); _local4 = (_local4 + CHECK_SIZE); }; _local3 = (_local3 + CHECK_SIZE); }; _local2 = destScreen.graphics; _local2.drawRect(0, 0, maskSizeX, maskSizeY); } public function setScreenScaleAndCentre(_arg1:Screen, _arg2:Number, _arg3:Number=-1):void{ _arg1.scaleX = _arg2; if (_arg3 != -1){ _arg1.scaleY = _arg3; } else { _arg1.scaleY = _arg2; }; _arg1.x = ((640 - _arg1.width) * 0.5); _arg1.y = ((480 - _arg1.height) * 0.5); } private function finishedTransition():void{ sourceScreen.mask = (destScreen.mask = null); destScreen.rotation = (sourceScreen.rotation = 0); sourceScreen.alpha = 1; setScreenScaleAndCentre(sourceScreen, 1); sourceScreen.x = (sourceScreen.y = 0); screenManager.removeChild(sourceScreen); isTransitioningFlag = false; } } }//package flesh
Section 30
//SeededRandom (flesh.SeededRandom) package flesh { public class SeededRandom { protected var _currentSeed:uint;// = 0 protected var _seed:uint;// = 0 protected static var _instance:SeededRandom; public function SeededRandom(_arg1:uint=1){ _seed = (_currentSeed = _arg1); } public function set seed(_arg1:uint):void{ _seed = (_currentSeed = _arg1); } public function random():Number{ return ((((_currentSeed = ((_currentSeed * 16807) % 2147483647)) / 2147483647) + 2.33E-10)); } public function boolean(_arg1:Number=0.5):Boolean{ return ((random() < _arg1)); } public function get currentSeed():uint{ return (_currentSeed); } public function bit(_arg1:Number=0.5):int{ return (((random())<_arg1) ? 1 : 0); } public function reset():void{ _seed = _currentSeed; } public function get seed():uint{ return (_seed); } public function float(_arg1:Number, _arg2:Number=NaN):Number{ if (isNaN(_arg2)){ _arg2 = _arg1; _arg1 = 0; }; return (((random() * (_arg2 - _arg1)) + _arg1)); } public function sign(_arg1:Number=0.5):int{ return (((random())<_arg1) ? 1 : -1); } public function integer(_arg1:Number, _arg2:Number=NaN):int{ if (isNaN(_arg2)){ _arg2 = _arg1; _arg1 = 0; }; return (Math.floor(float(_arg1, _arg2))); } public static function random():Number{ return (instance.random()); } public static function set seed(_arg1:uint):void{ instance.seed = _arg1; } public static function get currentSeed():uint{ return (instance.currentSeed); } public static function bit(_arg1:Number=0.5):int{ return (instance.bit(_arg1)); } public static function boolean(_arg1:Number=0.5):Boolean{ return (instance.boolean(_arg1)); } public static function get seed():uint{ return (instance.seed); } public static function get instance():SeededRandom{ if (_instance == null){ _instance = new (SeededRandom); }; return (_instance); } public static function reset():void{ instance.reset(); } public static function float(_arg1:Number, _arg2:Number=NaN):Number{ return (instance.float(_arg1, _arg2)); } public static function sign(_arg1:Number=0.5):int{ return (instance.sign(_arg1)); } public static function integer(_arg1:Number, _arg2:Number=NaN):int{ return (instance.integer(_arg1, _arg2)); } } }//package flesh
Section 31
//SoundManager (flesh.SoundManager) package flesh { import flash.utils.*; import flash.media.*; public class SoundManager { public static const CROSS_FADE_MUSIC_TIME:Number = 0.5; public static const SOUND_DATA_PROPERTY_COUNT:uint = 4; private static var soundCount:uint; private static var sounds:Dictionary; private static var instance:SoundManager; private static var currentMusic:FleshSound; private static var soundsArray:Array; public static function getSoundsAsDictionary():Dictionary{ return (sounds); } public static function update(_arg1:Number):void{ var _local2:FleshSound; for each (_local2 in sounds) { _local2.update(_arg1); }; } public static function fadeInSound(_arg1:String):void{ var _local2:FleshSound = sounds[_arg1]; _local2.fadeIn(); } public static function setNameAndFilters(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:FleshSound = sounds[_arg1]; if (_local4 != null){ _local4.name = _arg2; _local4.filters = _arg3; } else { trace(("couldn't find sound " + _arg1)); }; } public static function getSound(_arg1:String):FleshSound{ if (sounds == null){ return (null); }; return (sounds[_arg1]); } public static function stopAllSounds():void{ var _local1:FleshSound; for each (_local1 in sounds) { _local1.stop(); }; currentMusic = null; } public static function notifySoundLoaded(_arg1:FleshSound):void{ trace(("loaded " + _arg1.getUrl())); } public static function stopSound(_arg1:String):void{ var _local2:FleshSound = sounds[_arg1]; if (_local2 == currentMusic){ currentMusic = null; }; _local2.stop(); } public static function initStart(_arg1:Array):void{ sounds = new Dictionary(); soundsArray = new Array(); soundCount = 0; currentMusic = null; } public static function getSoundsAsArray():Array{ return (soundsArray); } public static function embedSound(_arg1:Array, _arg2:Sound):void{ var _local3:uint = soundCount; var _local4:uint = (_local3 * SOUND_DATA_PROPERTY_COUNT); var _local5:String = _arg1[_local4]; var _local6:uint = _arg1[(_local4 + 1)]; var _local7:uint = _arg1[(_local4 + 2)]; var _local8:Number = _arg1[(_local4 + 3)]; var _local9:FleshSound = new FleshSound(_local5, _arg2, _local6, _local7); _local9.setDefaultVolume(_local8); sounds[_local5] = _local9; soundsArray.push(_local9); soundCount++; } public static function playSound(_arg1:String, _arg2:Boolean=false, _arg3:Number=0, _arg4:Number=-1):SoundChannel{ var _local5:FleshSound = sounds[_arg1]; if (_local5 == null){ trace(("sound not found " + _arg1)); return (null); }; if (_local5.getType() == FleshSound.MUSIC){ if (currentMusic == null){ trace("currentMusic is null"); } else { if (currentMusic.id == _local5.id){ return (null); }; }; }; if ((((_local5.getType() == FleshSound.MUSIC)) && (!((currentMusic == null))))){ currentMusic.fadeOut(false, null, false, CROSS_FADE_MUSIC_TIME); currentMusic = _local5; return (_local5.play(_arg2, _arg3, CROSS_FADE_MUSIC_TIME, _arg4)); }; if (_local5.getType() == FleshSound.MUSIC){ currentMusic = _local5; }; return (_local5.play(_arg2, _arg3, 0, _arg4)); } public static function fadeOutSound(_arg1:String):void{ var _local2:FleshSound = sounds[_arg1]; if (_local2 == currentMusic){ currentMusic = null; }; _local2.fadeOut(); } } }//package flesh
Section 32
//Utils (flesh.Utils) package flesh { import flash.display.*; import flash.utils.*; import flash.media.*; import flash.geom.*; import alcon.*; public class Utils { public static const OPPOSITE_DIR:Array = new Array(DOWN, UP, RIGHT, LEFT); public static const MOVE:Array = new Array(0, -1, 0, 1, -1, 0, 1, 0); public static var LEFT:uint = 2; private static var draggingSprites:Array = null; public static var RAD30:Number = (Math.PI / 6); public static var RAD360:Number = (Math.PI * 2); public static var RAD120:Number = ((Math.PI / 2) + (Math.PI / 6)); private static var mixerByteArray:ByteArray = null; public static var RAD45:Number = (Math.PI / 4); public static var RAD135:Number = (RAD45 + RAD90); private static var delayedFunctions:Array = null; public static var ANTICLOCKWISE:uint = 0; public static var RAD270:Number = (RAD180 + RAD90); public static var RAD315:Number = (RAD270 + RAD45); public static var CLOCKWISE:uint = 1; public static var allFloatingText:Array = null; public static var RAD280:Number = (RAD270 + RAD10); public static var UP:uint = 0; public static var DOWN:uint = 1; public static var RAD80:Number = (RAD90 - RAD10); public static var RAD90:Number = (Math.PI / 2); public static var RAD10:Number = (Math.PI / 18); public static var RAD15:Number = (Math.PI / 12); public static var RAD180:Number = Math.PI; public static var RAD5:Number = (Math.PI / 36); public static var RAD225:Number = (RAD180 + RAD45); public static var RIGHT:uint = 3; public static function getIndexOfString(_arg1:String, _arg2:Array, _arg3:int):int{ if (_arg1 == null){ return (_arg3); }; var _local4:int = _arg2.indexOf(_arg1); if (_local4 == -1){ return (_arg3); }; return (_local4); } public static function paintRectOnSprite(_arg1:Sprite, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1000, _arg5:Number=1000, _arg6:int=0xFF0000, _arg7:Number=1, _arg8:Boolean=false, _arg9:Number=1):void{ var _local10:Graphics = _arg1.graphics; if (_arg8){ _local10.lineStyle(_arg9, _arg6, _arg7); } else { _local10.beginFill(_arg6, _arg7); }; _local10.drawRect(_arg2, _arg3, _arg4, _arg5); if (!_arg8){ _local10.endFill(); }; } public static function getAngleBetweenAngles(_arg1:Number, _arg2:Number):Number{ if ((((_arg1 > RAD270)) && ((_arg2 < RAD90)))){ return (((RAD360 - _arg1) + _arg2)); }; if ((((_arg2 > RAD270)) && ((_arg1 < RAD90)))){ return (((RAD360 - _arg2) + _arg1)); }; return (Math.abs((_arg1 - _arg2))); } public static function removeChild(_arg1:DisplayObject, _arg2:DisplayObjectContainer=null):void{ if (_arg1 == null){ return; }; if (_arg2 == null){ _arg2 = _arg1.parent; }; if (((((!((_arg1 == null))) && (!((_arg2 == null))))) && (_arg2.contains(_arg1)))){ _arg2.removeChild(_arg1); }; } public static function ccw(_arg1:Vector2D, _arg2:Vector2D, _arg3:Vector2D):int{ var _local4:Number = (_arg2.x - _arg1.x); var _local5:Number = (_arg2.y - _arg1.y); var _local6:Number = (_arg3.x - _arg1.x); var _local7:Number = (_arg3.y - _arg1.y); if ((_local4 * _local7) > (_local5 * _local6)){ return (1); }; if ((_local4 * _local7) < (_local5 * _local6)){ return (-1); }; if (((((_local4 * _local6) < 0)) || (((_local5 * _local7) < 0)))){ return (-1); }; if (((_local4 * _local4) + (_local5 * _local5)) < ((_local6 * _local6) + (_local7 * _local7))){ return (1); }; return (0); } public static function getAngle(_arg1:Number, _arg2:Number):Number{ var _local3:Number = (Math.atan2(_arg2, _arg1) + (Math.PI / 2)); if (_local3 < 0){ _local3 = (_local3 + (Math.PI * 2)); }; return (_local3); } public static function trim(_arg1:String):String{ if (_arg1 == null){ return (_arg1); }; var _local2:int; while (_arg1.charCodeAt(_local2) < 33) { _local2++; }; var _local3:int = (_arg1.length - 1); while (_arg1.charCodeAt(_local3) < 33) { _local3--; }; return (_arg1.substring(_local2, (_local3 + 1))); } public static function getInterpolatedColour(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (getInterpolatedColourUtil((0xFF & (_arg1 >> 24)), (0xFF & (_arg1 >> 16)), (0xFF & (_arg1 >> 8)), (0xFF & (_arg1 >> 0)), (0xFF & (_arg2 >> 24)), (0xFF & (_arg2 >> 16)), (0xFF & (_arg2 >> 8)), (0xFF & (_arg2 >> 0)), _arg3, _arg4)); } public static function toDegrees(_arg1:Number):Number{ return (((_arg1 * 180) / Math.PI)); } public static function encryptText(_arg1:String):String{ var _local5:int; var _local2:SeededRandom = new SeededRandom(4435543); var _local3 = ""; var _local4:uint; while (_local4 < _arg1.length) { _local5 = _arg1.charCodeAt(_local4); if (_local5 > 34){ _local5 = (_local5 + _local2.integer(1, 4)); }; _local3 = (_local3 + String.fromCharCode(_local5)); _local4++; }; return (_local3); } public static function getVectorBetweenLineAndPoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Vector{ var _local7:Number = (_arg3 - _arg1); var _local8:Number = (_arg4 - _arg2); var _local9:Number = ((((_arg5 - _arg1) * _local7) + ((_arg6 - _arg2) * _local8)) / ((_local7 * _local7) + (_local8 * _local8))); var _local10:Number = 0; var _local11:Number = 0; if ((((_local9 >= 0)) && ((_local9 <= 1)))){ _local10 = (_arg1 + int((_local9 * _local7))); _local11 = (_arg2 + int((_local9 * _local8))); } else { if (_local9 < 0){ _local10 = _arg1; _local11 = _arg2; } else { if (_local9 > 0){ _local10 = _arg3; _local11 = _arg4; }; }; }; _local7 = (_local10 - _arg5); _local8 = (_local11 - _arg6); return (new Vector(_local7, _local8)); } public static function getMixerEQ(_arg1:uint=0, _arg2:uint=0x0200):Number{ var _local5:Number; if (mixerByteArray == null){ mixerByteArray = new ByteArray(); }; SoundMixer.computeSpectrum(mixerByteArray, true); var _local3:Number = 0; var _local4:uint; while (_local4 < 0x0200) { _local5 = mixerByteArray.readFloat(); if ((((_local4 >= _arg1)) && ((_local4 < _arg2)))){ _local3 = (_local3 + _local5); }; _local4++; }; return ((_local3 / (_arg2 - _arg1))); } public static function clearFloatingText():void{ if (allFloatingText == null){ return; }; while (allFloatingText.length > 0) { allFloatingText[0].remove(); }; } public static function updateDelayedFunctions(_arg1:Number):void{ if (delayedFunctions == null){ return; }; var _local2:uint = delayedFunctions.length; while (--_local2 >= 0) { if (delayedFunctions[_local2].update(_arg1)){ delayedFunctions.splice(_local2, 1); }; }; } public static function getRandomElementFromChanceArray(_arg1:Array):int{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:uint; var _local2:Number = 0; for each (_local3 in _arg1) { _local2 = (_local2 + _local3); }; _local4 = (Math.random() * _local2); _local5 = 0; _local6 = 0; while (_local6 < _arg1.length) { _local5 = (_local5 + _arg1[_local6]); if (_local4 < _local5){ return (_local6); }; _local6++; }; return (0); } public static function getRandomNumberInRange(_arg1:Number=0, _arg2:Number=1):Number{ return (((Math.random() * (_arg2 - _arg1)) + _arg1)); } public static function decryptText(_arg1:String):String{ var _local5:int; var _local2:SeededRandom = new SeededRandom(4435543); var _local3 = ""; var _local4:uint; while (_local4 < _arg1.length) { _local5 = _arg1.charCodeAt(_local4); if (_local5 > 34){ _local5 = (_local5 - _local2.integer(1, 4)); }; _local3 = (_local3 + String.fromCharCode(_local5)); _local4++; }; return (_local3); } public static function duplicateDisplayObject(_arg1:DisplayObject, _arg2:Boolean=false):DisplayObject{ var _local5:Rectangle; var _local3:Class = Object(_arg1).constructor; var _local4:DisplayObject = new (_local3); _local4.transform = _arg1.transform; _local4.filters = _arg1.filters; _local4.cacheAsBitmap = _arg1.cacheAsBitmap; _local4.opaqueBackground = _arg1.opaqueBackground; if (_arg1.scale9Grid){ _local5 = _arg1.scale9Grid; _local4.scale9Grid = _local5; }; if (((_arg2) && (_arg1.parent))){ _arg1.parent.addChild(_local4); }; return (_local4); } public static function getDistanceBetweenPoints(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local5:Number = (_arg3 - _arg1); var _local6:Number = (_arg4 - _arg2); return (Math.sqrt(((_local5 * _local5) + (_local6 * _local6)))); } public static function getPeakMixerEQ(_arg1:uint=0, _arg2:uint=0x0200):int{ var _local6:Number; if (mixerByteArray == null){ mixerByteArray = new ByteArray(); }; SoundMixer.computeSpectrum(mixerByteArray, true); var _local3:Number = 0; var _local4 = -1; var _local5:uint; while (_local5 < 0x0200) { _local6 = mixerByteArray.readFloat(); if ((((((_local5 >= _arg1)) && ((_local5 < _arg2)))) && ((_local6 > _local3)))){ _local3 = _local6; _local4 = _local5; }; _local5++; }; return (_local4); } public static function formatDecimals(_arg1:Number, _arg2:uint):String{ var _local5:int; var _local10:int; var _local3:Number = Math.pow(10, _arg2); var _local4:String = String((Math.round((_arg1 * _local3)) / _local3)); var _local6:int; while (_local6 < _local4.length) { if (_local4.charAt(_local6) == "."){ _local5 = _local6; }; _local6++; }; var _local7:String = _local4; var _local8:String = _local4.substr((_local5 + 1), _local4.length); var _local9:Number = (_arg2 - _local8.length); if ((((_local8.length < _arg2)) && ((_local5 > 0)))){ _local10 = 0; while (_local10 < _local9) { _local7 = (_local7 + "0"); _local10++; }; }; return (_local7); } public static function createFloatingText(_arg1:DisplayObjectContainer, _arg2:Class, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number=-50, _arg7:Number=0.5, _arg8:Number=3, _arg9:Number=0.1, _arg10:int=0xFFFFFF):void{ if (allFloatingText == null){ allFloatingText = new Array(); }; var _local11:FloatingText = new FloatingText(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10); allFloatingText.push(_local11); } public static function paintCircleOnSprite(_arg1:Sprite, _arg2:int=3, _arg3:int=0xFF0000, _arg4:Number=1, _arg5:Boolean=false, _arg6:Number=1):void{ var _local7:Graphics = _arg1.graphics; if (_arg5){ _local7.lineStyle(_arg6, _arg3, _arg4); } else { _local7.beginFill(_arg3, _arg4); }; _local7.drawCircle(0, 0, _arg2); if (!_arg5){ _local7.endFill(); }; } public static function setSpriteColour(_arg1:Sprite, _arg2:int):void{ var _local3:ColorTransform = _arg1.transform.colorTransform; _local3.color = _arg2; _arg1.transform.colorTransform = _local3; } public static function toRadians(_arg1:Number):Number{ return (((_arg1 * Math.PI) / 180)); } public static function delayFunction(_arg1:Function, _arg2:Number):void{ if (delayedFunctions == null){ delayedFunctions = new Array(); }; delayedFunctions.push(new DelayedFunction(_arg1, _arg2)); } public static function paintMixerEQToSprite(_arg1:Sprite, _arg2:int=0xFF0000, _arg3:int=0):void{ var _local4:int; var _local7:Number; var _local8:Number; if (mixerByteArray == null){ mixerByteArray = new ByteArray(); }; SoundMixer.computeSpectrum(mixerByteArray, true); _arg1.graphics.clear(); var _local5 = !((_arg3 == 0)); if (!_local5){ _arg1.graphics.beginFill(_arg2); }; _arg1.graphics.moveTo(0, 0); var _local6:uint = 2; _local4 = 0; while (_local4 < 0x0100) { if (_local5){ _arg1.graphics.beginFill(Utils.getInterpolatedColour(_arg2, _arg3, _local4, 0x0100)); }; _local7 = mixerByteArray.readFloat(); _local8 = (_local7 * 100); _arg1.graphics.drawRect(_local4, 0, _local6, -(_local8)); if (_local5){ _arg1.graphics.endFill(); }; _local4 = (_local4 + _local6); }; if (!_local5){ _arg1.graphics.endFill(); }; } public static function addChildAt(_arg1:DisplayObject, _arg2:DisplayObjectContainer, _arg3:int):void{ if (((((!((_arg1 == null))) && (!((_arg2 == null))))) && (!(_arg2.contains(_arg1))))){ _arg2.addChildAt(_arg1, _arg3); }; } public static function stopDraggingSprite(_arg1:Sprite):void{ if (draggingSprites == null){ return; }; var _local2:int = draggingSprites.indexOf(_arg1); if (_local2 != -1){ draggingSprites.splice(_local2, 1); }; } public static function paintBigRedRectOnSprite(_arg1:Sprite, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1000, _arg5:Number=1000):void{ var _local6:Graphics = _arg1.graphics; _local6.beginFill(0xFF0000); _local6.drawRect(_arg2, _arg3, _arg4, _arg5); _local6.endFill(); } public static function getFloatAttributeFromXML(_arg1:XML, _arg2:String, _arg3:Number=0):Number{ if (_arg1.attribute(_arg2).length() > 0){ return (parseFloat(_arg1.attribute(_arg2))); }; return (_arg3); } public static function clearDraggingSprite():void{ if (draggingSprites != null){ draggingSprites.splice(0); }; } public static function getIntAttributeFromXML(_arg1:XML, _arg2:String, _arg3:int=0):int{ if (_arg1.attribute(_arg2).length() > 0){ return (parseInt(_arg1.attribute(_arg2))); }; return (_arg3); } public static function updateFloatingText(_arg1:Number):void{ if (allFloatingText == null){ return; }; var _local2:uint = allFloatingText.length; while (--_local2 >= 0) { allFloatingText[_local2].update(_arg1); }; } public static function getProjectedPoint2D(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Vector2D):void{ var _local5:Number = Math.sin(_arg3); var _local6:Number = Math.cos(_arg3); var _local7:Number = (_local6 * _arg1); var _local8:Number = (_local5 * _arg1); var _local9:Number = (_local6 * _arg2); var _local10:Number = -((_local5 * _arg2)); _arg4.set((_local7 + _local10), (_local8 + _local9)); } public static function getRandomIntInRange(_arg1:Number=0, _arg2:Number=1):int{ return (int(((Math.random() * (_arg2 - _arg1)) + _arg1))); } public static function clearDelayedFunctions():void{ if (delayedFunctions != null){ delayedFunctions.splice(0); }; } public static function getInterpolatedColourUtil(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number):Number{ var _local11:Number = (_arg10 - _arg9); _arg1 = (((_arg5 * _arg9) + (_arg1 * _local11)) / _arg10); _arg2 = (((_arg6 * _arg9) + (_arg2 * _local11)) / _arg10); _arg3 = (((_arg7 * _arg9) + (_arg3 * _local11)) / _arg10); _arg4 = (((_arg8 * _arg9) + (_arg4 * _local11)) / _arg10); _arg1 = ((_arg1)>0xFF) ? 0xFF : ((_arg1)<0) ? 0 : _arg1; _arg2 = ((_arg2)>0xFF) ? 0xFF : ((_arg2)<0) ? 0 : _arg2; _arg3 = ((_arg3)>0xFF) ? 0xFF : ((_arg3)<0) ? 0 : _arg3; _arg4 = ((_arg4)>0xFF) ? 0xFF : ((_arg4)<0) ? 0 : _arg4; var _local12:Number = Math.round(_arg1); var _local13:Number = Math.round(_arg2); var _local14:Number = Math.round(_arg3); var _local15:Number = Math.round(_arg4); return (((((_local12 << 24) | (_local13 << 16)) | (_local14 << 8)) | _local15)); } public static function getDistanceBetweenLineAndPoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{ var _local7:Number = (_arg3 - _arg1); var _local8:Number = (_arg4 - _arg2); var _local9:Number = ((((_arg5 - _arg1) * _local7) + ((_arg6 - _arg2) * _local8)) / ((_local7 * _local7) + (_local8 * _local8))); var _local10:Number = 0; var _local11:Number = 0; if ((((_local9 >= 0)) && ((_local9 <= 1)))){ _local10 = (_arg1 + int((_local9 * _local7))); _local11 = (_arg2 + int((_local9 * _local8))); } else { if (_local9 < 0){ _local10 = _arg1; _local11 = _arg2; } else { if (_local9 > 0){ _local10 = _arg3; _local11 = _arg4; }; }; }; _local7 = (_local10 - _arg5); _local8 = (_local11 - _arg6); var _local12:Number = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); return (_local12); } public static function getTurnDirection(_arg1:Number, _arg2:Number):int{ var _local3:Number; var _local4:Number; if (_arg2 >= _arg1){ _local3 = (_arg2 - _arg1); _local4 = ((RAD360 - _arg2) + _arg1); if (_local3 <= _local4){ return (1); }; return (-1); //unresolved jump }; _local3 = (_arg1 - _arg2); _local4 = ((RAD360 - _arg1) + _arg2); if (_local3 <= _local4){ return (-1); }; return (1); } public static function replaceCharactersInText(_arg1:String, _arg2:int, _arg3:int):String{ var _local6:int; if (_arg1.indexOf(String.fromCharCode(_arg3)) != -1){ Debug.trace(("Utils.replaceCharactersInText already has character " + _arg3)); trace(("Utils.replaceCharactersInText already has character " + _arg3)); }; var _local4 = ""; var _local5:uint; while (_local5 < _arg1.length) { _local6 = _arg1.charCodeAt(_local5); if (_local6 == _arg2){ _local6 = _arg3; }; _local4 = (_local4 + String.fromCharCode(_local6)); _local5++; }; return (_local4); } public static function getBooleanAttributeFromXML(_arg1:XML, _arg2:String, _arg3:Boolean=false):Boolean{ if (_arg1.attribute(_arg2).length() > 0){ return ((_arg1.attribute(_arg2) == "true")); }; return (_arg3); } public static function getSquaredDistanceBetweenPoints(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local5:Number = (_arg3 - _arg1); var _local6:Number = (_arg4 - _arg2); return (((_local5 * _local5) + (_local6 * _local6))); } public static function getVector2DBetweenLineAndPoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Vector2D{ var _local7:Number = (_arg3 - _arg1); var _local8:Number = (_arg4 - _arg2); var _local9:Number = ((((_arg5 - _arg1) * _local7) + ((_arg6 - _arg2) * _local8)) / ((_local7 * _local7) + (_local8 * _local8))); var _local10:Number = 0; var _local11:Number = 0; if ((((_local9 >= 0)) && ((_local9 <= 1)))){ _local10 = (_arg1 + int((_local9 * _local7))); _local11 = (_arg2 + int((_local9 * _local8))); } else { if (_local9 < 0){ _local10 = _arg1; _local11 = _arg2; } else { if (_local9 > 0){ _local10 = _arg3; _local11 = _arg4; }; }; }; _local7 = (_local10 - _arg5); _local8 = (_local11 - _arg6); return (new Vector2D(_local7, _local8)); } public static function getProjectedPoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Vector):void{ var _local5:Number = Math.sin(_arg3); var _local6:Number = Math.cos(_arg3); var _local7:Number = (_local6 * _arg1); var _local8:Number = (_local5 * _arg1); var _local9:Number = (_local6 * _arg2); var _local10:Number = -((_local5 * _arg2)); _arg4.set((_local7 + _local10), (_local8 + _local9)); } public static function linesIntersect(_arg1:Vector2D, _arg2:Vector2D, _arg3:Vector2D, _arg4:Vector2D):Boolean{ return (((((ccw(_arg1, _arg2, _arg3) * ccw(_arg1, _arg2, _arg4)) <= 0)) && (((ccw(_arg3, _arg4, _arg1) * ccw(_arg3, _arg4, _arg2)) <= 0)))); } public static function startDraggingSprite(_arg1:Sprite, _arg2:Function=null):void{ if (draggingSprites == null){ draggingSprites = new Array(); }; draggingSprites.push(new DraggableSprite(_arg1, _arg2)); } public static function removeFloatingText(_arg1:FloatingText):void{ var _local2:int = allFloatingText.indexOf(_arg1); if (_local2 != -1){ allFloatingText.splice(_local2, 1); }; } public static function getStringAttributeFromXML(_arg1:XML, _arg2:String, _arg3:String=null):String{ if (_arg1.attribute(_arg2).length() > 0){ return (_arg1.attribute(_arg2)); }; return (_arg3); } public static function addChild(_arg1:DisplayObject, _arg2:DisplayObjectContainer):void{ if (((((!((_arg1 == null))) && (!((_arg2 == null))))) && (!(_arg2.contains(_arg1))))){ _arg2.addChild(_arg1); }; } public static function updateDraggingSprites(_arg1:Number):void{ if (draggingSprites == null){ return; }; var _local2:uint = draggingSprites.length; while (--_local2 >= 0) { draggingSprites[_local2].update(_arg1); }; } } }//package flesh
Section 33
//Vector (flesh.Vector) package flesh { public class Vector { public var y:Number; public var x:Number; public function Vector(_arg1:Number, _arg2:Number){ x = _arg1; y = _arg2; } public function getUnitNormal():Vector{ var _local1:Vector = new Vector(y, -(x)); _local1.unit(); return (_local1); } public function addVector(_arg1:Vector):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function setVector(_arg1:Vector):void{ x = _arg1.x; y = _arg1.y; } public function addNew(_arg1:Vector):Vector{ return (new Vector((x - _arg1.x), (y - _arg1.y))); } public function unit():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 > 0){ x = (x / _local1); y = (y / _local1); return (_local1); }; return (0); } public function subtract(_arg1:Number, _arg2:Number):void{ x = (x - _arg1); y = (y - _arg2); } public function invert():void{ x = -(x); y = -(y); } public function multiplyNew(_arg1:Number):Vector{ return (new Vector((x * _arg1), (y * _arg1))); } public function square():void{ x = (x * x); y = (y * y); } public function add(_arg1:Number, _arg2:Number):void{ x = (x + _arg1); y = (y + _arg2); } public function set(_arg1:Number, _arg2:Number):void{ x = _arg1; y = _arg2; } public function multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function subtractNew(_arg1:Vector):Vector{ return (new Vector((x - _arg1.x), (y - _arg1.y))); } public function dotProduct(_arg1:Vector):Number{ return (((this.x * _arg1.x) + (this.y * _arg1.y))); } public function makeNormal():void{ var _local1:Number = x; x = y; y = -(_local1); } public function subtractVector(_arg1:Vector):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function divide(_arg1:Number):void{ x = (x / _arg1); y = (y / _arg1); } public function toString():String{ return (((x + ",") + y)); } public function getSquaredLength():Number{ return (((x * x) + (y * y))); } public function clone():Vector{ return (new Vector(x, y)); } public static function getRandomVectorBetween(_arg1:Vector, _arg2:Vector):Vector{ var _local3:Vector = _arg2.clone(); _local3.subtractVector(_arg1); _local3.multiply(Math.random()); _local3.addVector(_arg1); return (_local3); } } }//package flesh
Section 34
//Vector2D (flesh.Vector2D) package flesh { public class Vector2D { public var y:Number; public var x:Number; public function Vector2D(_arg1:Number, _arg2:Number){ x = _arg1; y = _arg2; } public function getUnitNormal():Vector2D{ var _local1:Vector2D = new Vector2D(y, -(x)); _local1.unit(); return (_local1); } public function addVector(_arg1:Vector2D):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function setVector(_arg1:Vector2D):void{ x = _arg1.x; y = _arg1.y; } public function addNew(_arg1:Vector2D):Vector2D{ return (new Vector2D((x - _arg1.x), (y - _arg1.y))); } public function unit():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 > 0){ x = (x / _local1); y = (y / _local1); return (_local1); }; return (0); } public function subtract(_arg1:Number, _arg2:Number):void{ x = (x - _arg1); y = (y - _arg2); } public function invert():void{ x = -(x); y = -(y); } public function multiplyNew(_arg1:Number):Vector2D{ return (new Vector2D((x * _arg1), (y * _arg1))); } public function square():void{ x = (x * x); y = (y * y); } public function add(_arg1:Number, _arg2:Number):void{ x = (x + _arg1); y = (y + _arg2); } public function set(_arg1:Number, _arg2:Number):void{ x = _arg1; y = _arg2; } public function multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function subtractNew(_arg1:Vector2D):Vector2D{ return (new Vector2D((x - _arg1.x), (y - _arg1.y))); } public function dotProduct(_arg1:Vector2D):Number{ return (((this.x * _arg1.x) + (this.y * _arg1.y))); } public function makeNormal():void{ var _local1:Number = x; x = y; y = -(_local1); } public function subtractVector(_arg1:Vector2D):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function divide(_arg1:Number):void{ x = (x / _arg1); y = (y / _arg1); } public function toString():String{ return (((x + ",") + y)); } public function getSquaredLength():Number{ return (((x * x) + (y * y))); } public function clone():Vector2D{ return (new Vector2D(x, y)); } public static function getRandomVectorBetween(_arg1:Vector2D, _arg2:Vector2D):Vector2D{ var _local3:Vector2D = _arg2.clone(); _local3.subtractVector(_arg1); _local3.multiply(Math.random()); _local3.addVector(_arg1); return (_local3); } } }//package flesh
Section 35
//ZipHandler (flesh.ZipHandler) package flesh { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; import nochump.util.zip.*; public class ZipHandler { private static var xmlFiles:Dictionary = null; private static var imageLoaders:Array; private static var bitmapDataFiles:Dictionary = null; private static var urlStream:URLStream; private static var completeFunction:Function; private static var imageLoaderURLs:Array; public static function getXML(_arg1:String):XML{ var _local2:XML = (getFile(_arg1, xmlFiles) as XML); if (_local2 == null){ trace(("ZipHandler: couldn't find bitmap file " + _arg1)); }; return (_local2); } private static function loadFailed(_arg1:Event):void{ trace("couldn't load zipFile!"); } private static function zipLoaded(_arg1:Event):void{ var _local5:ZipEntry; var _local6:ByteArray; var _local7:Loader; urlStream.removeEventListener(Event.COMPLETE, zipLoaded); var _local2:URLStream = URLStream(_arg1.target); var _local3:ZipFile = new ZipFile(_local2); var _local4:int; while (_local4 < _local3.entries.length) { _local5 = _local3.entries[_local4]; _local6 = _local3.getInput(_local5); if (hasFileExtension(_local5.name, ".xml")){ if (xmlFiles == null){ xmlFiles = new Dictionary(); }; trace(("ZipHander: adding XML file " + _local5.name)); xmlFiles[_local5.name] = new XML(_local6.toString()); } else { if (((((hasFileExtension(_local5.name, ".png")) || (hasFileExtension(_local5.name, ".jpg")))) || (hasFileExtension(_local5.name, ".gif")))){ if (imageLoaders == null){ imageLoaders = new Array(); imageLoaderURLs = new Array(); }; if (bitmapDataFiles == null){ bitmapDataFiles = new Dictionary(); }; _local7 = new Loader(); _local7.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData); _local7.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadBitmapFailed); _local7.loadBytes(_local6); imageLoaders.push(_local7); imageLoaderURLs.push(_local5.name); }; }; _local4++; }; if (((!((completeFunction == null))) && ((imageLoaders == null)))){ completeFunction(); }; } public static function hasBitmapFile(_arg1:String):Boolean{ var _local2:Object = getFile(_arg1, bitmapDataFiles); return (!((_local2 == null))); } private static function hasFileExtension(_arg1:String, _arg2:String):Boolean{ var _local3:int = _arg1.indexOf(_arg2); return ((_local3 == (_arg1.length - _arg2.length))); } public static function getBitmap(_arg1:String):Bitmap{ var _local2:BitmapData = (getFile(_arg1, bitmapDataFiles) as BitmapData); if (_local2 == null){ trace(("ZipHandler: couldn't find bitmap file " + _arg1)); return (null); }; return (new Bitmap(_local2)); } private static function getBitmapData(_arg1:Event):void{ var _local2:LoaderInfo = (_arg1.target as LoaderInfo); var _local3:Loader = _local2.loader; var _local4:int = imageLoaders.indexOf(_local3); var _local5:String = imageLoaderURLs[_local4]; var _local6:BitmapData = Bitmap(_arg1.target.content).bitmapData; trace((((((("ZipHander: adding bitmap file " + _local5) + " (") + _local6.width) + "x") + _local6.height) + ")")); bitmapDataFiles[_local5] = _local6; _local3.contentLoaderInfo.removeEventListener(Event.COMPLETE, getBitmapData); imageLoaders.splice(_local4, 1); imageLoaderURLs.splice(_local4, 1); if (((!((completeFunction == null))) && ((imageLoaders.length == 0)))){ completeFunction(); }; } public static function loadZipFile(_arg1:String, _arg2:Function=null):void{ ZipHandler.completeFunction = _arg2; urlStream = new URLStream(); urlStream.addEventListener(Event.COMPLETE, zipLoaded); urlStream.addEventListener(IOErrorEvent.IO_ERROR, loadFailed); urlStream.load(new URLRequest(_arg1)); } public static function getFile(_arg1:String, _arg2:Dictionary):Object{ if (_arg2[_arg1] != null){ return (_arg2[_arg1]); }; if (_arg1.indexOf("/") != -1){ _arg1 = _arg1.substring((_arg1.indexOf("/") + 1), _arg1.length); if (_arg2[_arg1] != null){ return (_arg2[_arg1]); }; }; return (null); } private static function loadBitmapFailed(_arg1:Event):void{ trace(" ** loadBitmapFailed"); } } }//package flesh
Section 36
//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_HIDE:String = "StoreHide"; public static const LOGGED_IN:String = "LoggedIn"; public static const NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const IO_ERROR:String = "IOError"; public static const STORE_ITEMS:String = "StoreItems"; public static const USER_INFO:String = "UserInfo"; public static const LOGIN_SHOW:String = "LoginShow"; public static const PROFILE_HIDE:String = "ProfileHide"; public static const STORE_SHOW:String = "StoreShow"; public static const ITEM_NEW:String = "ItemNew"; public static const ITEM_OWNED:String = "ItemOwned"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const ERROR:String = "Error"; public static const LOGGED_OUT:String = "LoggedOut"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const LOGIN_HIDE:String = "LoginHide"; public static const LOGIN_SHOWN:String = "LoginShown"; public static var _user_info:Object = null; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static var _inventory:MochiInventory; public static function getUserInfo():void{ MochiServices.send("coins_getUserInfo"); } public static function requestLogin():void{ MochiServices.send("coins_requestLogin"); } public static function showItem(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showItem call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("coins_saveUserProperties", _arg1); } public static function get loggedIn():Boolean{ return (!((_user_info == null))); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ if (_arg1 == LOGGED_IN){ _inventory = new MochiInventory(); _user_info = _arg2; } else { if (_arg1 == LOGGED_OUT){ if (inventory){ _inventory.release(); _inventory = null; }; _user_info = null; }; }; _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showLoginWidget", {options:_arg1}); } public static function get inventory():MochiInventory{ return (_inventory); } public static function showStore(_arg1:Object=null):void{ MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function getAPIURL():String{ if (!_user_info){ return (null); }; return (_user_info.api_url); } public static function hideLoginWidget():void{ MochiServices.send("coins_hideLoginWidget"); } public static function getAPIToken():String{ if (!_user_info){ return (null); }; return (_user_info.api_token); } public static function showVideo(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showVideo call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } } }//package mochi.as3
Section 37
//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function reencode():void{ var _local1:uint = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function set value(_arg1:Number):void{ setValue(_arg1); } public function toString():String{ var _local1:String = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function get value():Number{ return (Number(this.toString())); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 38
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ return; }; for (_local3 in eventTable[_arg1]) { var _local6 = eventTable[_arg1]; _local6[_local3](_arg2); }; } public function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ eventTable[_arg1] = []; return; }; for (_local3 in eventTable[_arg1]) { if (eventTable[_arg1][_local3] != _arg2){ } else { eventTable[_arg1].splice(Number(_local3), 1); }; }; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_arg2); } } }//package mochi.as3
Section 39
//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { import flash.display.*; public class MochiEvents { public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const FORMAT_LONG:String = "LongForm"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived"; public static const FORMAT_SHORT:String = "ShortForm"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_CENTER:String = "ALIGN_C"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); private static var gameStart:Number; private static var levelStart:Number; public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{ var _local4:Object; var _local3:Object = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; _local3.clip = _arg1; MochiServices.send("events_setNotifications", _local3, null, null); } public static function endGame():void{ var _local1:Number = (new Date().time - gameStart); trigger("end_game", {time:_local1}); } public static function startGame():void{ gameStart = new Date().time; trigger("start_game"); } public static function trigger(_arg1:String, _arg2:Object=null):void{ if (_arg2 == null){ _arg2 = {}; } else { if (_arg2["kind"] != undefined){ trace("WARNING: optional arguments package contains key 'id', it will be overwritten"); _arg2["kind"] = _arg1; }; }; MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startLevel():void{ levelStart = new Date().time; trigger("start_level"); } public static function endLevel():void{ var _local1:Number = (new Date().time - levelStart); trigger("end_level", {time:_local1}); } } }//package mochi.as3
Section 40
//MochiInventory (mochi.as3.MochiInventory) package mochi.as3 { import flash.events.*; import flash.utils.*; public dynamic class MochiInventory extends Proxy { private var _timer:Timer; private var _names:Array; private var _syncID:Number; private var _consumableProperties:Object; private var _outstandingID:Number; private var _syncPending:Boolean; public static const READY:String = "InvReady"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IoError"; private static const CONSUMER_KEY:String = "MochiConsumables"; public static const WRITTEN:String = "InvWritten"; public static const NOT_READY:String = "InvNotReady"; public static const VALUE_ERROR:String = "InvValueError"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public function MochiInventory():void{ MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems); MochiCoins.addEventListener(MochiCoins.LOGGED_IN, loggedIn); MochiCoins.addEventListener(MochiCoins.LOGGED_OUT, loggedOut); _syncPending = false; _outstandingID = 0; _syncID = 0; _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, sync); _timer.start(); if (MochiCoins.loggedIn){ loggedIn(); } else { loggedOut(); }; } private function newItems(_arg1:Object):void{ this[_arg1.id] = (this[_arg1.id] + _arg1.count); } public function release():void{ MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems); MochiCoins.removeEventListener(MochiCoins.LOGGED_IN, loggedIn); MochiCoins.removeEventListener(MochiCoins.LOGGED_OUT, loggedOut); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (-1); }; if (_consumableProperties[_arg1]){ return (MochiDigits(_consumableProperties[_arg1]).value); }; return (undefined); } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (false); }; if (_consumableProperties[_arg1] == undefined){ return (false); }; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1)); } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:MochiDigits; if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return; }; if (!(_arg2 is Number)){ triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2}); return; }; if (_consumableProperties[_arg1]){ _local3 = MochiDigits(_consumableProperties[_arg1]); if (_local3.value == _arg2){ return; }; _local3.value = _arg2; } else { _names.push(_arg1); _consumableProperties[_arg1] = new MochiDigits(_arg2); }; _syncID++; } private function sync(_arg1:Event=null):void{ var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; var _local2:Object = {}; for (_local3 in _consumableProperties) { _local2[_local3] = MochiDigits(_consumableProperties[_local3]).value; }; MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag); _syncPending = true; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (_names[(_arg1 - 1)]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ if (!_consumableProperties[_arg1]){ return (false); }; _names.splice(_names.indexOf(_arg1), 1); delete _consumableProperties[_arg1]; return (true); } private function getConsumableBag(_arg1:MochiUserData):void{ var _local2:String; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); return; }; _consumableProperties = {}; _names = new Array(); if (_arg1.data){ for (_local2 in _arg1.data) { _names.push(_local2); _consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]); }; }; triggerEvent(READY, {}); } private function loggedOut(_arg1:Object=null):void{ _consumableProperties = null; } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } } }//package mochi.as3
Section 41
//MochiScores (mochi.as3.MochiScores) package mochi.as3 { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var n:Number; var options = _arg1; if (options != null){ delete options.clip; MochiServices.setContainer(); MochiServices.bringToTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; } else { if ((options.score is MochiDigits)){ options.score = options.score.value; }; }; n = Number(options.score); if (isNaN(n)){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'")); } else { if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite")); } else { if (Math.floor(n) != n){ trace((("WARNING: Submitted score '" + options.score) + "' will be truncated")); }; options.score = n; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); } else { trace("Warning: Container is not a MovieClip, cannot call default onClose."); }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (MochiScores.boardID != null){ options.boardID = MochiScores.boardID; }; }; MochiServices.warnID(options.boardID, true); trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal"); MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; var _local2:Object = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ _arg1 = Number(_arg1); if (isNaN(_arg1)){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'")); } else { if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite")); } else { if (Math.floor(_arg1) != _arg1){ trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated")); }; _arg1 = Number(_arg1); }; }; MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ MochiServices.warnID(_arg1, true); MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package mochi.as3
Section 42
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.geom.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _preserved:Object; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; public static var servicesSync:MochiSync = new MochiSync(); private static var _clip:MovieClip; private static var _id:String; private static var _services:String = "services.swf"; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _loader:Loader; private static var _connecting:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _listenChannelName:String = "__ms_"; public static var onError:Object; public static var netup:Boolean = true; private static var _mochiLC:String = "MochiLC.swf"; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function onReceive(_arg1:Object):void{ var methodName:String; var pkg = _arg1; var cb:String = pkg.callbackID; var cblst:Object = _clip._callbacks[cb]; if (!cblst){ return; }; var method:* = cblst.callbackMethod; methodName = ""; var obj:Object = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete _clip._callbacks[cb]; } public static function get childClip():Object{ return (_clip); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local4:int; var _local14:Loader; var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; var _local6:Array = [0, 64, 0, 0, 0]; var _local7:MovieClip = new MovieClip(); var _local8:LocalConnection = new LocalConnection(); var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time)); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); var _local10:ByteArray = new ByteArray(); var _local11:ByteArray = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); var _local12:uint = ((_local3.length + _local11.length) + 4); var _local13:uint = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var avm1Click:DisplayObject; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; var vars:Object = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); var s = "?"; var i:Number = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); var _local2:Rectangle = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function warnID(_arg1:String, _arg2:Boolean):void{ _arg1 = _arg1.toLowerCase(); if (_arg1.length != 16){ trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length")); return; } else { if (_arg1 == "1e113c7239048b3f"){ if (_arg2){ trace("WARNING: Using testing board ID"); } else { trace("WARNING: Using testing board ID as game ID"); }; return; } else { if (_arg1 == "84993a1de4031cd8"){ if (_arg2){ trace("WARNING: Using testing game ID as board ID"); } else { trace("WARNING: Using testing game ID"); }; return; }; }; }; var _local3:Number = 0; while (_local3 < _arg1.length) { switch (_arg1.charAt(_local3)){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "a": case "b": case "c": case "d": case "e": case "f": break; default: trace(("WARNING: Board ID contains illegal characters: " + _arg1)); return; }; _local3++; }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _mochiLocalConnection.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.4 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_clip._queue))){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } public static function get id():String{ return (_id); } private static function onEvent(_arg1:Object):void{ var _local2:String = _arg1.target; var _local3:String = _arg1.event; switch (_local2){ case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "sync": servicesSync.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function urlOptions(_arg1:Object):Object{ var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; var _local2:Object = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { _local3 = _arg1.loaderInfo.parameters.mochiad_options; }; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } private static function initComChannels():void{ if (!_connected){ trace("[SERVICES_API] connected!"); _connecting = false; _connected = true; _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_clip._queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function loadLCBridge(_arg1:Object):void{ var loader:Loader; var clip = _arg1; loader = new Loader(); var mochiLCURL:String = (_servURL + _mochiLC); var req:URLRequest = new URLRequest(mochiLCURL); var complete:Function = function (_arg1:Object):void{ _mochiLocalConnection = MovieClip(loader.content); listen(); }; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); loader.load(req); clip.addChild(loader); } private static function listen():void{ _mochiLocalConnection.connect(_listenChannelName); _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; trace("Waiting for MochiAds services to connect..."); } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var _local3:String = ("_mochiservices_com_" + _arg1); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; var _local4:String = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local4 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local4); _clip = createEmptyMovieClip(_arg2, _local3, 10336, false); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); var _local5:URLRequest = new URLRequest(_local4); var _local6:URLVariables = new URLVariables(); _local6.listenLC = _listenChannelName; _local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local6.api_version = getVersion(); if (widget){ _local6.widget = true; }; _local5.data = _local6; _loader.load(_local5); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if ((clip is DisplayObject)){ if (clip.stage == null){ trace("MochiServices connect requires the containing clip be attached to the stage"); }; if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; var mc:MovieClip = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function bringToTop(_arg1:Event=null):void{ var e = _arg1; if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load. (timeout)"); MochiServices.disconnect(); MochiServices.onError("IOError"); }; } } }//package mochi.as3
Section 43
//MochiSync (mochi.as3.MochiSync) package mochi.as3 { import flash.utils.*; public dynamic class MochiSync extends Proxy { private var _syncContainer:Object; public static var SYNC_PROPERTY:String = "UpdateProperty"; public static var SYNC_REQUEST:String = "SyncRequest"; public function MochiSync():void{ _syncContainer = {}; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ if (_syncContainer[_arg1] == _arg2){ return; }; var _local3:String = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } public function triggerEvent(_arg1:String, _arg2:Object):void{ switch (_arg1){ case SYNC_REQUEST: MochiServices.send("sync_syncronize", _syncContainer); break; case SYNC_PROPERTY: _syncContainer[_arg2.name] = _arg2.value; break; }; } } }//package mochi.as3
Section 44
//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.utils.*; import flash.net.*; public class MochiUserData extends EventDispatcher { public var callback:Function;// = null public var operation:String;// = null public var error:Event;// = null public var data;// = null public var _loader:URLLoader; public var key:String;// = null public function MochiUserData(_arg1:String="", _arg2:Function=null){ this.key = _arg1; this.callback = _arg2; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray = new ByteArray(); _local2.objectEncoding = ObjectEncoding.AMF3; _local2.writeObject(_arg1); _local2.compress(); return (_local2); } public function errorHandler(_arg1:IOErrorEvent):void{ data = null; error = _arg1; if (callback != null){ performCallback(); } else { dispatchEvent(_arg1); }; close(); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } public function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function getEvent():void{ request("get", serialize(null)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } public function performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function request(_arg1:String, _arg2:ByteArray):void{ var _operation = _arg1; var _data = _arg2; operation = _operation; var api_url:String = MochiCoins.getAPIURL(); var api_token:String = MochiCoins.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); var args:URLVariables = new URLVariables(); args.op = _operation; args.key = key; var req:URLRequest = new URLRequest((((MochiCoins.getAPIURL() + "/") + "MochiUserData?") + args.toString())); req.method = URLRequestMethod.POST; req.contentType = "application/x-mochi-userdata"; req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)]; req.data = _data; _loader.dataFormat = URLLoaderDataFormat.BINARY; _loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); try { _loader.load(req); } catch(e:SecurityError) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString()))); }; } public function completeHandler(_arg1:Event):void{ var event = _arg1; try { if (_loader.data.length){ data = deserialize(_loader.data); } else { data = null; }; } catch(e:Error) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString()))); return; }; if (callback != null){ performCallback(); } else { dispatchEvent(event); }; close(); } public function close():void{ if (_loader){ _loader.removeEventListener(Event.COMPLETE, completeHandler); _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.close(); _loader = null; }; error = null; callback = null; } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } } }//package mochi.as3
Section 45
//EdgeMetrics (mx.core.EdgeMetrics) package mx.core { public class EdgeMetrics { public var top:Number; public var left:Number; public var bottom:Number; public var right:Number; mx_internal static const VERSION:String = "3.0.0.0"; public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0); ; public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){ this.left = _arg1; this.top = _arg2; this.right = _arg3; this.bottom = _arg4; } public function clone():EdgeMetrics{ return (new EdgeMetrics(left, top, right, bottom)); } } }//package mx.core
Section 46
//FlexMovieClip (mx.core.FlexMovieClip) package mx.core { import flash.display.*; import mx.utils.*; public class FlexMovieClip extends MovieClip { mx_internal static const VERSION:String = "3.0.0.0"; public function FlexMovieClip(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 47
//FlexSprite (mx.core.FlexSprite) package mx.core { import flash.display.*; import mx.utils.*; public class FlexSprite extends Sprite { mx_internal static const VERSION:String = "3.0.0.0"; public function FlexSprite(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 48
//IBorder (mx.core.IBorder) package mx.core { public interface IBorder { function get borderMetrics():EdgeMetrics; } }//package mx.core
Section 49
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 50
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(_arg1:Point):Point; function get name():String; function set width(_arg1:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(_arg1:String):void; function set scaleX(_arg1:Number):void; function set scaleY(_arg1:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(_arg1:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(_arg1:Point):Point; function get height():Number; function set blendMode(_arg1:String):void; function get parent():DisplayObjectContainer; function getBounds(_arg1:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(_arg1:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(_arg1:Number):void; function set accessibilityProperties(_arg1:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(_arg1:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(_arg1:Number):void; function set mask(_arg1:DisplayObject):void; function getRect(_arg1:DisplayObject):Rectangle; function get alpha():Number; function set transform(_arg1:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(_arg1:DisplayObject):Boolean; function set opaqueBackground(_arg1:Object):void; function set visible(_arg1:Boolean):void; function get mask():DisplayObject; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function get transform():Transform; function set filters(_arg1:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(_arg1:Number):void; function get stage():Stage; } }//package mx.core
Section 51
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(_arg1:Array):void; function get isDocument():Boolean; function set repeaters(_arg1:Array):void; function initializeRepeaterArrays(_arg1:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(_arg1:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 52
//MovieClipAsset (mx.core.MovieClipAsset) package mx.core { public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder { private var _measuredHeight:Number; private var _measuredWidth:Number; mx_internal static const VERSION:String = "3.0.0.0"; public function MovieClipAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function get borderMetrics():EdgeMetrics{ if (scale9Grid == null){ return (EdgeMetrics.EMPTY); }; return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom)))); } } }//package mx.core
Section 53
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 54
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.0.0.0"; } }//package mx.core
Section 55
//SpriteAsset (mx.core.SpriteAsset) package mx.core { public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject, IBorder { private var _measuredHeight:Number; private var _measuredWidth:Number; mx_internal static const VERSION:String = "3.0.0.0"; public function SpriteAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function get borderMetrics():EdgeMetrics{ if (scale9Grid == null){ return (EdgeMetrics.EMPTY); }; return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom)))); } } }//package mx.core
Section 56
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import mx.core.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.0.0.0"; private static var counter:int = 0; public static function displayObjectToString(_arg1:DisplayObject):String{ var _local2:String; var _local4:String; var _local5:Array; var _local3:DisplayObject = _arg1; while (_local3 != null) { if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){ break; }; _local4 = _local3.name; if ((_local3 is IRepeaterClient)){ _local5 = IRepeaterClient(_local3).instanceIndices; if (_local5){ _local4 = (_local4 + (("[" + _local5.join("][")) + "]")); }; }; _local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2); _local3 = _local3.parent; }; return (_local2); } public static function createUniqueName(_arg1:Object):String{ if (!_arg1){ return (null); }; var _local2:String = getQualifiedClassName(_arg1); var _local3:int = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; var _local4:int = _local2.charCodeAt((_local2.length - 1)); if ((((_local4 >= 48)) && ((_local4 <= 57)))){ _local2 = (_local2 + "_"); }; return ((_local2 + counter++)); } } }//package mx.utils
Section 57
//Inflater (nochump.util.zip.Inflater) package nochump.util.zip { import flash.utils.*; public class Inflater { private var lencode:Object; private var bitbuf:int; private var distcode:Object; private var incnt:uint; private var inbuf:ByteArray; private var bitcnt:int; private static const LENS:Array = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258]; private static const MAXDCODES:int = 30; private static const MAXCODES:int = (MAXLCODES + MAXDCODES); private static const MAXBITS:int = 15; private static const MAXLCODES:int = 286; private static const FIXLCODES:int = 288; private static const LEXT:Array = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]; private static const DISTS:Array = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 0x0101, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]; private static const DEXT:Array = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; private function bits(_arg1:int):int{ var _local2:int; _local2 = bitbuf; while (bitcnt < _arg1) { if (incnt == inbuf.length){ throw (new Error("available inflate data did not terminate", 2)); }; _local2 = (_local2 | (inbuf[incnt++] << bitcnt)); bitcnt = (bitcnt + 8); }; bitbuf = (_local2 >> _arg1); bitcnt = (bitcnt - _arg1); return ((_local2 & ((1 << _arg1) - 1))); } public function inflate(_arg1:ByteArray):uint{ var _local2:int; var _local3:*; var _local4:*; incnt = (bitbuf = (bitcnt = 0)); _local2 = 0; do { _local3 = bits(1); _local4 = bits(2); if (_local4 == 0){ stored(_arg1); } else { if (_local4 == 3){ throw (new Error("invalid block type (type == 3)", -1)); }; lencode = {count:[], symbol:[]}; distcode = {count:[], symbol:[]}; if (_local4 == 1){ constructFixedTables(); } else { if (_local4 == 2){ _local2 = constructDynamicTables(); }; }; if (_local2 != 0){ return (_local2); }; _local2 = codes(_arg1); }; } while (_local2 == 0); return (_local2); } public function setInput(_arg1:ByteArray):void{ inbuf = _arg1; inbuf.endian = Endian.LITTLE_ENDIAN; } private function construct(_arg1:Object, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; var _local7:int; _local4 = []; _local5 = 0; while (_local5 <= MAXBITS) { _arg1.count[_local5] = 0; _local5++; }; _local6 = 0; while (_local6 < _arg3) { var _local8 = _arg1.count; var _local9 = _arg2[_local6]; var _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; _local6++; }; if (_arg1.count[0] == _arg3){ return (0); }; _local7 = 1; _local5 = 1; while (_local5 <= MAXBITS) { _local7 = (_local7 << 1); _local7 = (_local7 - _arg1.count[_local5]); if (_local7 < 0){ return (_local7); }; _local5++; }; _local4[1] = 0; _local5 = 1; while (_local5 < MAXBITS) { _local4[(_local5 + 1)] = (_local4[_local5] + _arg1.count[_local5]); _local5++; }; _local6 = 0; while (_local6 < _arg3) { if (_arg2[_local6] != 0){ _local9 = _local4; _local10 = _arg2[_local6]; var _local11 = (_local9[_local10] + 1); _local9[_local10] = _local11; _local8 = _local9[_local10]; _arg1.symbol[_local8] = _local6; }; _local6++; }; return (_local7); } private function constructFixedTables():void{ var _local1:Array; var _local2:int; _local1 = []; _local2 = 0; while (_local2 < 144) { _local1[_local2] = 8; _local2++; }; while (_local2 < 0x0100) { _local1[_local2] = 9; _local2++; }; while (_local2 < 280) { _local1[_local2] = 7; _local2++; }; while (_local2 < FIXLCODES) { _local1[_local2] = 8; _local2++; }; construct(lencode, _local1, FIXLCODES); _local2 = 0; while (_local2 < MAXDCODES) { _local1[_local2] = 5; _local2++; }; construct(distcode, _local1, MAXDCODES); } private function stored(_arg1:ByteArray):void{ var _local2:uint; bitbuf = 0; bitcnt = 0; if ((incnt + 4) > inbuf.length){ throw (new Error("available inflate data did not terminate", 2)); }; _local2 = inbuf[incnt++]; var _temp1 = _local2; _local2 = (_temp1 | (inbuf[++] << 8)); if (((!((inbuf[incnt++] == (~(_local2) & 0xFF)))) || (!((inbuf[incnt++] == ((~(_local2) >> 8) & 0xFF)))))){ throw (new Error("stored block length did not match one's complement", -2)); }; if ((incnt + _local2) > inbuf.length){ throw (new Error("available inflate data did not terminate", 2)); }; while (_local2--) { _arg1[_arg1.length] = inbuf[incnt++]; }; } private function constructDynamicTables():int{ var _local1:Array; var _local2:Array; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; _local1 = []; _local2 = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; _local3 = (bits(5) + 0x0101); _local4 = (bits(5) + 1); _local5 = (bits(4) + 4); if ((((_local3 > MAXLCODES)) || ((_local4 > MAXDCODES)))){ throw (new Error("dynamic block code description: too many length or distance codes", -3)); }; _local6 = 0; while (_local6 < _local5) { _local1[_local2[_local6]] = bits(3); _local6++; }; while (_local6 < 19) { _local1[_local2[_local6]] = 0; _local6++; }; _local7 = construct(lencode, _local1, 19); if (_local7 != 0){ throw (new Error("dynamic block code description: code lengths codes incomplete", -4)); }; _local6 = 0; while (_local6 < (_local3 + _local4)) { _local8 = decode(lencode); if (_local8 < 16){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local10 = _temp1; _local1[_local10] = _local8; } else { _local9 = 0; if (_local8 == 16){ if (_local6 == 0){ throw (new Error("dynamic block code description: repeat lengths with no first length", -5)); }; _local9 = _local1[(_local6 - 1)]; _local8 = (3 + bits(2)); } else { if (_local8 == 17){ _local8 = (3 + bits(3)); } else { _local8 = (11 + bits(7)); }; }; if ((_local6 + _local8) > (_local3 + _local4)){ throw (new Error("dynamic block code description: repeat more than specified lengths", -6)); }; while (_local8--) { var _temp2 = _local6; _local6 = (_local6 + 1); _local10 = _temp2; _local1[_local10] = _local9; }; }; }; _local7 = construct(lencode, _local1, _local3); if ((((_local7 < 0)) || ((((_local7 > 0)) && (!(((_local3 - lencode.count[0]) == 1))))))){ throw (new Error("dynamic block code description: invalid literal/length code lengths", -7)); }; _local7 = construct(distcode, _local1.slice(_local3), _local4); if ((((_local7 < 0)) || ((((_local7 > 0)) && (!(((_local4 - distcode.count[0]) == 1))))))){ throw (new Error("dynamic block code description: invalid distance code lengths", -8)); }; return (_local7); } private function decode(_arg1:Object):int{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 1; while (_local5 <= MAXBITS) { _local2 = (_local2 | bits(1)); _local6 = _arg1.count[_local5]; if (_local2 < (_local3 + _local6)){ return (_arg1.symbol[(_local4 + (_local2 - _local3))]); }; _local4 = (_local4 + _local6); _local3 = (_local3 + _local6); _local3 = (_local3 << 1); _local2 = (_local2 << 1); _local5++; }; return (-9); } private function codes(_arg1:ByteArray):int{ var _local2:*; var _local3:*; var _local4:*; do { _local2 = decode(lencode); if (_local2 < 0){ return (_local2); }; if (_local2 < 0x0100){ _arg1[_arg1.length] = _local2; } else { if (_local2 > 0x0100){ _local2 = (_local2 - 0x0101); if (_local2 >= 29){ throw (new Error("invalid literal/length or distance code in fixed or dynamic block", -9)); }; _local3 = (LENS[_local2] + bits(LEXT[_local2])); _local2 = decode(distcode); if (_local2 < 0){ return (_local2); }; _local4 = (DISTS[_local2] + bits(DEXT[_local2])); if (_local4 > _arg1.length){ throw (new Error("distance is too far back in fixed or dynamic block", -10)); }; while (_local3--) { _arg1[_arg1.length] = _arg1[(_arg1.length - _local4)]; }; }; }; } while (_local2 != 0x0100); return (0); } } }//package nochump.util.zip
Section 58
//ZipConstants (nochump.util.zip.ZipConstants) package nochump.util.zip { class ZipConstants { static const ENDOFF:uint = 16; static const CENSIG:uint = 33639248; static const CENNAM:uint = 28; static const EXTSIG:uint = 134695760; static const LOCSIG:uint = 67324752; static const ENDSIG:uint = 101010256; static const CENVER:uint = 6; static const DEFLATED:uint = 8; static const LOCNAM:uint = 26; static const ENDTOT:uint = 10; static const LOCVER:uint = 4; static const CENHDR:uint = 46; static const CENOFF:uint = 42; static const EXTHDR:uint = 16; static const LOCHDR:uint = 30; static const STORED:uint = 0; static const ENDHDR:uint = 22; } }//package nochump.util.zip
Section 59
//ZipEntry (nochump.util.zip.ZipEntry) package nochump.util.zip { import flash.utils.*; public class ZipEntry { private var _compressedSize:int;// = -1 private var _extra:ByteArray; var offset:int; private var _crc:uint; var dostime:uint; var version:int; private var _size:int;// = -1 private var _method:int;// = -1 private var _comment:String; private var _name:String; var flag:int; public function ZipEntry(_arg1:String){ _size = -1; _compressedSize = -1; _method = -1; super(); _name = _arg1; } public function get compressedSize():int{ return (_compressedSize); } public function set size(_arg1:int):void{ _size = _arg1; } public function get name():String{ return (_name); } public function get time():Number{ var _local1:Date; _local1 = new Date((((dostime >> 25) & 127) + 1980), (((dostime >> 21) & 15) - 1), ((dostime >> 16) & 31), ((dostime >> 11) & 31), ((dostime >> 5) & 63), ((dostime & 31) << 1)); return (_local1.time); } public function get size():int{ return (_size); } public function get extra():ByteArray{ return (_extra); } public function set time(_arg1:Number):void{ var _local2:Date; _local2 = new Date(_arg1); dostime = ((((((((_local2.fullYear - 1980) & 127) << 25) | ((_local2.month + 1) << 21)) | (_local2.day << 16)) | (_local2.hours << 11)) | (_local2.minutes << 5)) | (_local2.seconds >> 1)); } public function get crc():uint{ return (_crc); } public function get method():int{ return (_method); } public function isDirectory():Boolean{ return ((_name.charAt((_name.length - 1)) == "/")); } public function set method(_arg1:int):void{ _method = _arg1; } public function set crc(_arg1:uint):void{ _crc = _arg1; } public function get comment():String{ return (_comment); } public function set extra(_arg1:ByteArray):void{ _extra = _arg1; } public function toString():String{ return (_name); } public function set compressedSize(_arg1:int):void{ _compressedSize = _arg1; } public function set comment(_arg1:String):void{ _comment = _arg1; } } }//package nochump.util.zip
Section 60
//ZipError (nochump.util.zip.ZipError) package nochump.util.zip { import flash.errors.*; public class ZipError extends IOError { public function ZipError(_arg1:String="", _arg2:int=0){ super(_arg1, _arg2); } } }//package nochump.util.zip
Section 61
//ZipFile (nochump.util.zip.ZipFile) package nochump.util.zip { import flash.utils.*; import flash.system.*; public class ZipFile { private var entryList:Array; private var buf:ByteArray; private var locOffsetTable:Dictionary; private var entryTable:Dictionary; public function ZipFile(_arg1:IDataInput){ buf = new ByteArray(); buf.endian = Endian.LITTLE_ENDIAN; _arg1.readBytes(buf); readEntries(); } private function findEND():uint{ var _local1:uint; var _local2:uint; _local1 = (buf.length - ZipConstants.ENDHDR); _local2 = Math.max(0, (_local1 - 0xFFFF)); while (_local1 >= _local2) { if (buf[_local1] != 80){ } else { buf.position = _local1; if (buf.readUnsignedInt() == ZipConstants.ENDSIG){ return (_local1); }; }; _local1--; }; throw (new ZipError("invalid zip")); } public function getEntry(_arg1:String):ZipEntry{ return (entryTable[_arg1]); } private function readEND():void{ var _local1:ByteArray; _local1 = new ByteArray(); _local1.endian = Endian.LITTLE_ENDIAN; buf.position = findEND(); buf.readBytes(_local1, 0, ZipConstants.ENDHDR); _local1.position = ZipConstants.ENDTOT; entryList = new Array(_local1.readUnsignedShort()); _local1.position = ZipConstants.ENDOFF; buf.position = _local1.readUnsignedInt(); } public function get size():uint{ return (entryList.length); } private function readEntries():void{ var _local1:uint; var _local2:ByteArray; var _local3:uint; var _local4:ZipEntry; readEND(); entryTable = new Dictionary(); locOffsetTable = new Dictionary(); _local1 = 0; while (_local1 < entryList.length) { _local2 = new ByteArray(); _local2.endian = Endian.LITTLE_ENDIAN; buf.readBytes(_local2, 0, ZipConstants.CENHDR); if (_local2.readUnsignedInt() != ZipConstants.CENSIG){ throw (new ZipError("invalid CEN header (bad signature)")); }; _local2.position = ZipConstants.CENNAM; _local3 = _local2.readUnsignedShort(); if (_local3 == 0){ throw (new ZipError("missing entry name")); }; _local4 = new ZipEntry(buf.readUTFBytes(_local3)); _local3 = _local2.readUnsignedShort(); _local4.extra = new ByteArray(); if (_local3 > 0){ buf.readBytes(_local4.extra, 0, _local3); }; buf.position = (buf.position + _local2.readUnsignedShort()); _local2.position = ZipConstants.CENVER; _local4.version = _local2.readUnsignedShort(); _local4.flag = _local2.readUnsignedShort(); if ((_local4.flag & 1) == 1){ throw (new ZipError("encrypted ZIP entry not supported")); }; _local4.method = _local2.readUnsignedShort(); _local4.dostime = _local2.readUnsignedInt(); _local4.crc = _local2.readUnsignedInt(); _local4.compressedSize = _local2.readUnsignedInt(); _local4.size = _local2.readUnsignedInt(); entryList[_local1] = _local4; entryTable[_local4.name] = _local4; _local2.position = ZipConstants.CENOFF; locOffsetTable[_local4.name] = _local2.readUnsignedInt(); _local1++; }; } public function getInput(_arg1:ZipEntry):ByteArray{ var _local2:uint; var _local3:ByteArray; var _local4:ByteArray; var _local5:Inflater; buf.position = ((locOffsetTable[_arg1.name] + ZipConstants.LOCHDR) - 2); _local2 = buf.readShort(); buf.position = (buf.position + (_arg1.name.length + _local2)); _local3 = new ByteArray(); if (_arg1.compressedSize > 0){ buf.readBytes(_local3, 0, _arg1.compressedSize); }; switch (_arg1.method){ case ZipConstants.STORED: return (_local3); case ZipConstants.DEFLATED: if (Security.sandboxType == Security.APPLICATION){ _local3.inflate(); return (_local3); }; _local4 = new ByteArray(); _local5 = new Inflater(); _local5.setInput(_local3); _local5.inflate(_local4); return (_local4); default: throw (new ZipError("invalid compression method")); }; } public function get entries():Array{ return (entryList); } } }//package nochump.util.zip
Section 62
//ArmorIntroScreen (screens.ArmorIntroScreen) package screens { import flash.events.*; import flash.display.*; import flesh.*; import flash.net.*; public dynamic class ArmorIntroScreen extends Screen { public var engine:Engine; private var armorSplash:MovieClip; public static const BUTTON_INSTANCE_NAMES:Array = new Array("splash"); public function ArmorIntroScreen(_arg1:Engine){ super("armor"); this.engine = _arg1; linkButtons(BUTTON_INSTANCE_NAMES); this.scaleMouseButton = false; armorSplash = this["splash"]; armorSplash.visible = false; trace(("armorSplash = " + armorSplash)); } override public function buttonClickedId(_arg1:String):void{ switch (_arg1){ case "armorSplash": navigateToURL(new URLRequest("http://www.armorgames.com"), "_blank"); break; }; } override public function keyDown(_arg1:KeyboardEvent):void{ } override public function notifyScreenEntered():void{ if (armorSplash){ armorSplash.gotoAndPlay(1); }; armorSplash.addEventListener(Event.ENTER_FRAME, updateAnim); } public function updateAnim(_arg1:Event):void{ armorSplash.visible = true; if (armorSplash.currentFrame == armorSplash.totalFrames){ armorSplash.stop(); armorSplash.removeEventListener(Event.ENTER_FRAME, updateAnim); engine.openTitle(); }; } override public function firePressed():void{ } } }//package screens
Section 63
//CreditsScreen (screens.CreditsScreen) package screens { import flash.events.*; import flesh.*; import flash.net.*; public dynamic class CreditsScreen extends Screen { public var engine:Engine; public static const BUTTON_INSTANCE_NAMES:Array = new Array("buttonDick", "buttonRicky", "buttonKwok", "buttonOktomusic", "buttonMark", "buttonKokoromi", "buttonHoneyslug"); public function CreditsScreen(_arg1:Engine){ super("credits"); this.engine = _arg1; linkButtons(BUTTON_INSTANCE_NAMES); this.scaleMouseButton = false; } override public function buttonClickedId(_arg1:String):void{ switch (_arg1){ case "buttonDick": navigateToURL(new URLRequest("http://www.h099.com"), "_blank"); break; case "buttonRicky": navigateToURL(new URLRequest("http://twitter.com/KommanderKlobb"), "_blank"); break; case "buttonKwok": navigateToURL(new URLRequest("http://www.kwokfunglam.com"), "_blank"); break; case "buttonOktomusic": navigateToURL(new URLRequest("http://www.oktomusic.co.uk"), "_blank"); break; case "buttonMark": navigateToURL(new URLRequest("http://twitter.com/Honeyslug"), "_blank"); break; case "buttonKokoromi": navigateToURL(new URLRequest("http://www.kokoromi.org"), "_blank"); break; case "buttonHoneyslug": navigateToURL(new URLRequest("http://www.honeyslug.com"), "_blank"); break; }; } override public function keyDown(_arg1:KeyboardEvent):void{ engine.openTitle(); } override public function update(_arg1:Number):void{ } override public function notifyScreenEntered():void{ } override public function firePressed():void{ } } }//package screens
Section 64
//EndScreen (screens.EndScreen) package screens { import flash.events.*; import flash.display.*; import flesh.*; import flash.net.*; public dynamic class EndScreen extends Screen { public var engine:Engine; public var timeOnThisScreen:Number; public static const BUTTON_COUNT:uint = 1; public static const BUTTON_SUBMIT_SCORE:uint = 0; public static const BUTTON_INSTANCE_NAMES:Array = new Array("buttonScoreSubmit"); public function EndScreen(_arg1:Engine){ super("end"); linkButtons(BUTTON_INSTANCE_NAMES); this.engine = _arg1; this.scaleMouseButton = false; } override public function keyDown(_arg1:KeyboardEvent):void{ switch (Engine.PORTAL){ case Portals.GIMME5: if (engine.g5HiScores.visible){ return; }; break; case Portals.ARMOR: if (engine.armorGamesInterface.isHighScoreVisible()){ return; }; break; }; if (timeOnThisScreen > 2){ engine.openTitle(); }; } override public function buttonClicked(_arg1:uint):void{ switch (_arg1){ case BUTTON_SUBMIT_SCORE: engine.submitHighScore(World.instance.score); this["buttonScoreSubmit"].visible = false; break; }; } override public function update(_arg1:Number):void{ timeOnThisScreen = (timeOnThisScreen + _arg1); if ((((Engine.PORTAL == Portals.GIMME5)) && ((timeOnThisScreen > 3)))){ engine.openScreen("g5HighScore"); }; } override public function notifyScreenEntered():void{ this["playerScoreText"].text = ("You scored: " + World.instance.score); this["highScoreText"].text = ("High score: " + engine.highScore); this["highScoreText"].visible = false; timeOnThisScreen = 0; this["buttonScoreSubmit"].visible = true; } override public function firePressed():void{ } } }//package screens
Section 65
//G5HighScoreScreen (screens.G5HighScoreScreen) package screens { import flesh.*; public dynamic class G5HighScoreScreen extends Screen { public var engine:Engine; public static const BUTTON_INSTANCE_NAMES:Array = new Array("buttonReturn"); public function G5HighScoreScreen(_arg1:Engine){ super("g5HighScore"); this.engine = _arg1; linkButtons(BUTTON_INSTANCE_NAMES); this.scaleMouseButton = false; } override public function buttonClickedId(_arg1:String):void{ switch (_arg1){ case "buttonReturn": engine.g5HiScores.visible = false; engine.openTitle(); break; }; } override public function notifyScreenEntered():void{ } override public function firePressed():void{ } } }//package screens
Section 66
//G5IntroScreen (screens.G5IntroScreen) package screens { import flash.events.*; import flash.display.*; import flesh.*; import flash.net.*; public dynamic class G5IntroScreen extends Screen { public var engine:Engine; private var splashClip:MovieClip; public static const BUTTON_INSTANCE_NAMES:Array = new Array("splash", "buttonPlay"); public function G5IntroScreen(_arg1:Engine){ super("g5"); this.engine = _arg1; linkButtons(BUTTON_INSTANCE_NAMES); this.scaleMouseButton = false; splashClip = this["splash"]; splashClip.visible = false; this["buttonPlay"].visible = false; this["buttonPlay"].gotoAndStop(1); this["buttonPlay"].addEventListener(MouseEvent.MOUSE_OVER, mouseOverPlayButton); this["buttonPlay"].addEventListener(MouseEvent.MOUSE_OUT, mouseOutPlayButton); } override public function buttonClickedId(_arg1:String):void{ switch (_arg1){ case "splash": navigateToURL(new URLRequest("http://www.gimme5games.com/?ref=poto-and-cabenga_SPLASH"), "_blank"); break; case "buttonPlay": MochiBot.track(this, "2484d7f5"); engine.openTitle(); break; }; } override public function keyDown(_arg1:KeyboardEvent):void{ } public function mouseOutPlayButton(_arg1:Event):void{ this["buttonPlay"].gotoAndStop(1); } override public function notifyScreenEntered():void{ if (splashClip){ splashClip.gotoAndPlay(1); }; splashClip.addEventListener(Event.ENTER_FRAME, updateAnim); } public function updateAnim(_arg1:Event):void{ splashClip.visible = true; if (splashClip.currentFrame == splashClip.totalFrames){ splashClip.stop(); splashClip.removeEventListener(Event.ENTER_FRAME, updateAnim); this["buttonPlay"].visible = true; }; } override public function firePressed():void{ } public function mouseOverPlayButton(_arg1:Event):void{ this["buttonPlay"].gotoAndStop(2); } } }//package screens
Section 67
//GameScreen (screens.GameScreen) package screens { import flash.events.*; import flash.display.*; import flash.text.*; import flesh.*; import flash.net.*; public dynamic class GameScreen extends Screen { public var instructionsTime:Number; public var engine:Engine; public var eventText:TextField; public var fadingInEventText:Boolean; public var lastUpdateTime:Number; public var displayScore:int; public var instructionsText:TextField; public var scoreText:TextField; public static const BUTTON_NAME:String = "Space"; public function GameScreen(_arg1:Engine){ super("game"); this.engine = _arg1; scoreText = this["scoreText"]; instructionsText = this["instructionsText"]; } public function setLifeText(_arg1:Boolean, _arg2:int):void{ var _local3:TextField = (_arg1) ? this["topLivesText"] : this["bottomLivesText"]; _local3.text = ("" + _arg2); } public function reset():void{ scoreText.text = ""; scoreText.alpha = 0; instructionsText.alpha = 0; instructionsText.text = ""; this["newHighScore"].visible = false; this["topLivesIcon"].alpha = (this["bottomLivesIcon"].alpha = 0); this["topLivesText"].visible = false; this["bottomLivesText"].visible = false; } override public function notifyScreenEntered():void{ instructionsText.y = 200; } public function setInstructionsText(_arg1:String):void{ instructionsText.text = _arg1; instructionsText.alpha = 0; instructionsTime = 0; } override public function update(_arg1:Number):void{ var _local2:Number = World.instance.levelTime; if (((((World.instance.newHighScore) && ((_local2 > (World.TIME_END - 8))))) && ((_local2 < (World.TIME_END + 4))))){ this["newHighScore"].visible = ((Math.floor((_local2 * 2)) % 2) == 0); } else { this["newHighScore"].visible = false; }; if ((((World.instance.levelTime > World.TIME_ENEMIES)) && ((this["topLivesIcon"].alpha < 1)))){ this["topLivesIcon"].alpha = (this["topLivesIcon"].alpha + _arg1); this["bottomLivesIcon"].alpha = this["topLivesIcon"].alpha; this["topLivesText"].visible = true; this["bottomLivesText"].visible = true; }; if (((!((scoreText.text == ""))) && ((scoreText.alpha < 1)))){ scoreText.alpha = (scoreText.alpha + _arg1); }; if (instructionsText.text != ""){ if (instructionsTime < 6){ instructionsTime = (instructionsTime + _arg1); instructionsText.alpha = (instructionsText.alpha + _arg1); } else { instructionsText.alpha = (instructionsText.alpha - _arg1); if (instructionsText.alpha <= 0){ instructionsText.text = ""; }; }; }; if (Math.floor(lastUpdateTime) != Math.floor(World.instance.levelTime)){ switch (Math.floor(World.instance.levelTime)){ case 1: setInstructionsText((("HOLD " + BUTTON_NAME) + " to DASH")); break; case 6: setInstructionsText((("RELEASE " + BUTTON_NAME) + " to JUMP")); break; case (World.TIME_TOP_SCREEN_APPEARS + 2): instructionsText.y = 100; setInstructionsText((("PRESS " + BUTTON_NAME) + " to JUMP")); break; case (World.TIME_TOP_SCREEN_APPEARS + 7): setInstructionsText((("DON'T HOLD " + BUTTON_NAME) + " to DASH")); break; case (World.TIME_ENEMIES - 1): instructionsText.y = 200; setInstructionsText("Avoid Beasties!"); break; case (World.TIME_ENEMIES_FROM_BEHIND - 3): setInstructionsText("Watch out Behind!"); break; case World.TIME_SQUASHABLE_ENEMIES: setInstructionsText("Some Beasties can be Squashed"); break; case (World.TIME_BIG_ENEMIES - 3): setInstructionsText("Eggs & Gut-Nodules clear Beasties!"); break; case World.TIME_HARD: setInstructionsText("Beastie Rush!"); break; case World.TIME_SPEED_UP: setInstructionsText("Speed Up!"); break; }; }; lastUpdateTime = World.instance.levelTime; } override public function firePressed():void{ } public function setScoreText(_arg1:int):void{ scoreText.text = ("" + _arg1); } } }//package screens
Section 68
//TitleScreen (screens.TitleScreen) package screens { import flash.events.*; import flash.display.*; import flesh.*; import flash.net.*; public dynamic class TitleScreen extends Screen { public var boardID:String; public var engine:Engine; public var creditsClip:MovieClip; public var copyrightSprite:Sprite; public var time:Number; public var logoSprite:Sprite; public var creditsId:int; public var timeBeforeNextCredits:Number; public var playedSound:Boolean; public static const BUTTON_G5:uint = 4; public static const INITIAL_TIME_BEFORE_CREDITS:Number = 5; public static const BUTTON_ARMOR:uint = 3; public static const TIME_BEFORE_LOGO_APPEARS:Number = 0.5; public static const BUTTON_COUNT:uint = 5; public static const BUTTON_INSTANCE_NAMES:Array = new Array("logo.buttonHighScoreSubmit", "logo.buttonViewHighScores", "copyright.creditsButton", "buttonArmor", "buttonG5"); public static const TIME_PER_CREDIT:Number = 3; public static const BUTTON_VIEW_SCORES:uint = 1; public static const TIME_BETWEEN_CREDITS:Number = 0; public static const BUTTON_CREDITS:uint = 2; public static const BUTTON_SUBMIT_SCORE:uint = 0; public static const CREDITS:Array = new Array("ART & DESIGN BY RICHARD HOGG", "CODE & DESIGN BY RICKY HAGGETT", "ANIMATION BY KWOK FUNG LAM", "MUSIC BY DNR (WWW.DNRMUSIC.COM)", "TESTING & FEEDBACK BY MARK INMAN"); public function TitleScreen(_arg1:Engine){ super("title"); this.engine = _arg1; linkButtons(BUTTON_INSTANCE_NAMES); creditsClip = this["credits"]; copyrightSprite = this["copyright"]; logoSprite = this["logo"]; this.scaleMouseButton = false; buttons[BUTTON_ARMOR].visible = (Engine.PORTAL == Portals.ARMOR); buttons[BUTTON_G5].visible = (Engine.PORTAL == Portals.GIMME5); } override public function keyDown(_arg1:KeyboardEvent):void{ if ((((Engine.PORTAL == Portals.ARMOR)) && (engine.armorGamesInterface.isHighScoreVisible()))){ return; }; if (((!((_arg1.keyCode == KeyCodes.F))) && ((time > (TIME_BEFORE_LOGO_APPEARS + 2))))){ Engine.instance.playSound("LEAF_COLLECT2"); engine.startGame(); }; } override public function update(_arg1:Number):void{ var _local2:Number; time = (time + _arg1); if (time > TIME_BEFORE_LOGO_APPEARS){ if (!playedSound){ Engine.instance.playSound("FALL"); playedSound = true; }; _local2 = (7 - logoSprite.y); logoSprite.y = (logoSprite.y + (_local2 * 0.05)); if (Engine.PORTAL != Portals.NONE){ _local2 = (450 - copyrightSprite.y); } else { _local2 = (460 - copyrightSprite.y); }; copyrightSprite.y = (copyrightSprite.y + (_local2 * 0.05)); }; timeBeforeNextCredits = (timeBeforeNextCredits - _arg1); if (timeBeforeNextCredits < -(TIME_PER_CREDIT)){ _local2 = (-600 - creditsClip.x); creditsClip.x = (creditsClip.x + (_local2 * 0.05)); if (Math.abs(_local2) < 10){ creditsId++; if (creditsId >= CREDITS.length){ creditsId = 0; }; creditsClip["creditsText"].text = CREDITS[creditsId]; creditsClip.x = 1000; timeBeforeNextCredits = TIME_BETWEEN_CREDITS; }; } else { if (timeBeforeNextCredits < 0){ _local2 = (320 - creditsClip.x); creditsClip.x = (creditsClip.x + (_local2 * 0.1)); }; }; } override public function notifyScreenEntered():void{ playedSound = false; buttons[BUTTON_SUBMIT_SCORE].visible = (Engine.instance.highScore > 0); boardID = Engine.instance.scoresObject.f(0, ""); this["logo"]["highScoreText"].text = ("High score: " + engine.highScore); logoSprite.y = -600; copyrightSprite.y = 800; creditsClip.x = 1000; creditsId = 0; creditsClip["creditsText"].text = CREDITS[creditsId]; time = 0; timeBeforeNextCredits = INITIAL_TIME_BEFORE_CREDITS; } override public function buttonClicked(_arg1:uint):void{ switch (_arg1){ case BUTTON_VIEW_SCORES: engine.viewScores(); break; case BUTTON_G5: navigateToURL(new URLRequest("http://www.gimme5games.com/?ref=poto-and-cabenga_TITLE"), "_blank"); break; case BUTTON_ARMOR: navigateToURL(new URLRequest("http://www.armorgames.com"), "_blank"); break; case BUTTON_CREDITS: engine.openScreen("credits"); break; case BUTTON_SUBMIT_SCORE: buttons[BUTTON_SUBMIT_SCORE].visible = false; engine.submitHighScore(Engine.instance.highScore); break; }; } } }//package screens
Section 69
//App (App) package { import flash.events.*; import flash.display.*; import flash.text.*; import flesh.*; import flash.utils.*; import mochi.as3.*; import flash.system.*; public dynamic class App extends Sprite { private var needToAddEngineKeyListener:Boolean; public var engine:Engine; public var fpsCounter:FPSCounter; public var _mochiads_game_id:String;// = "15693ddd8d40f3a7" private var lastUpdateTime:Number; public var key:KeyPoll; public static const WIDTH:uint = 640; public static const HEIGHT:uint = 480; public static var instance:App; public static var RoundedMask:Class = App_RoundedMask; public function App(){ needToAddEngineKeyListener = false; instance = this; fpsCounter = new FPSCounter(600, 20, 0, World.VERSION); } public function onMochiConnectError(_arg1:String):void{ trace(("Mochi connect error: " + _arg1)); } public function update(_arg1:Event):void{ var _local2:Number = getTimer(); var _local3:Number = ((_local2 - lastUpdateTime) / 1000); lastUpdateTime = _local2; fpsCounter.addTime(_local3); if (needToAddEngineKeyListener){ needToAddEngineKeyListener = false; stage.addEventListener(KeyboardEvent.KEY_DOWN, engine.keyDown, false, 0, true); stage.addEventListener(KeyboardEvent.KEY_UP, engine.keyUp, false, 0, true); }; engine.update(_local3); } public function lockedToSiteFailed():void{ var _local1:TextField = new TextField(); _local1.width = 1000; _local1.textColor = 0xFFFFFF; _local1.x = (_local1.y = 10); _local1.text = "This game is locked to a different domain - please email ricky@honeyslug.com if you’d like a version to host on your site."; this.addChild(_local1); engine.visible = false; } public function initGame():void{ trace("**** initGame()"); initEngine(); lastUpdateTime = getTimer(); stageIsNotNull(null); } public function initEngine():void{ engine = new Engine(this); checkDomainLock(); engine.scaleX = (engine.scaleY = 1); var _local1:Sprite = new RoundedMask(); this.addChild(_local1); engine.mask = _local1; this.addChild(engine); this.addChild(fpsCounter); fpsCounter.visible = false; if (Engine.ONLY_RUN_LOCALLY){ Engine.traceBoth(("Security.sandboxType = " + Security.sandboxType)); if (Security.sandboxType == Security.REMOTE){ lockedToSiteFailed(); return; }; }; addEventListener(Event.ENTER_FRAME, update, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, engine.mouseDown, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, engine.mouseUp, false, 0, true); addEventListener(MouseEvent.MOUSE_MOVE, engine.mouseMove, false, 0, true); addEventListener(MouseEvent.MOUSE_WHEEL, engine.mouseWheel, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, engine.mouseOut, false, 0, true); } public function checkDomainLock():void{ var _local1:String; var _local2:Array; var _local3:Boolean; var _local4:String; if (Engine.LOCKED_TO_DOMAIN != ""){ _local1 = App.getHostURL(); trace(("hostUrl = " + _local1)); _local2 = Engine.LOCKED_TO_DOMAIN.split(","); _local3 = false; for each (_local4 in _local2) { if (_local1.indexOf(("http://" + _local4)) == 0){ _local3 = true; }; }; if (!_local3){ trace("failed domain lock check"); App.instance.lockedToSiteFailed(); return; }; }; } public function stageIsNotNull(_arg1:Event):void{ trace("********* stageIsNotNull"); this.tabEnabled = false; engine.tabEnabled = false; needToAddEngineKeyListener = true; key = new KeyPoll(parent.root.stage); if (Engine.PORTAL == Portals.NONE){ trace("mochi connect"); MochiServices.connect(_mochiads_game_id, root, onMochiConnectError); }; if (Engine.START_FULLSCREEN){ this.stage.displayState = StageDisplayState.FULL_SCREEN; }; } public static function getHostURL():String{ return (instance.root.loaderInfo.loaderURL); } } }//package
Section 70
//App_RoundedMask (App_RoundedMask) package { import mx.core.*; public class App_RoundedMask extends SpriteAsset { } }//package
Section 71
//EndSequence (EndSequence) package { import flash.display.*; public class EndSequence extends MovieClip { public var frameTime:Number; public function update(_arg1:Number):void{ var _local2:int; frameTime = (frameTime + _arg1); if (frameTime > 0.08){ frameTime = 0; _local2 = currentFrame; _local2++; this.gotoAndStop(_local2); if (_local2 == 40){ Engine.instance.playSoundPanned("WYRM_FART", Engine.HALFWIDTH); }; if (_local2 == 71){ Engine.instance.playSoundPanned("FALL", Engine.HALFWIDTH); }; if (_local2 == 139){ Engine.instance.playSoundPanned("LAND", Engine.HALFWIDTH); Player.pool.deactivateAll(); World.instance.player0 = Player.create(true, Engine.HALFWIDTH, World.GROUND_Y0); World.instance.player1 = Player.create(false, Engine.HALFWIDTH, World.GROUND_Y1); }; }; } public function reset():void{ this.gotoAndStop(1); frameTime = 0; } } }//package
Section 72
//Engine (Engine) package { import flash.events.*; import flash.display.*; import flesh.*; import flash.utils.*; import flesh.particles.*; import mochi.as3.*; import flash.net.*; import screens.*; import flash.ui.*; import alcon.*; public dynamic class Engine extends Sprite { public var gameScreen:GameScreen; public var sound:Boolean; public var highScore:int; public var state:uint; public var world:World; public var armorGamesInterface:ArmorGamesInterface; public var screenManager:ScreenManager; public var endScreen:EndScreen; public var app:App; public var paused:Boolean; public var levelId:int; public var scoresObject:Object; public var urlStream:URLStream; public var g5HiScores:ZattikkaHiScores; public var cookie:SharedObject; public var titleScreen:TitleScreen; public var particleBehaviours:Dictionary; public static const CHEAT_KEYS:Boolean = false; public static const PORTAL:int = 4; public static const STATE_GAME:uint = 2; public static const LOCKED_TO_DOMAIN:String = ""; public static const MUTE:Boolean = false; public static const HALFHEIGHT:Number = 240; public static const WIDTH:uint = 640; public static const HEIGHT:uint = 480; public static const ONLY_RUN_LOCALLY:Boolean = false; public static const STATE_GAME_OVER:uint = 3; public static const INVUNERABLE:Boolean = false; public static const HALFWIDTH:Number = 320; public static const STATE_LOADING:uint = 0; public static const DATA_ROOT:String = "../data/"; public static const START_FULLSCREEN:Boolean = false; public static const DT_MULTIPLY:Number = 1; public static const STATE_END:uint = 4; public static const STATE_SPLASH:uint = 1; public static const STRAIGHT_INTO_GAME:Boolean = false; public static const STATE_MENU:uint = 5; public static var FartSprite:Class = Engine_FartSprite; public static var instance:Engine; public static var DustSprite:Class = Engine_DustSprite; public static var SmokeBottomSprite:Class = Engine_SmokeBottomSprite; public static var SplatBlackSprite:Class = Engine_SplatBlackSprite; public static var SplatGreenSprite:Class = Engine_SplatGreenSprite; public static var LeafSprite:Class = Engine_LeafSprite; public static var SmokeTopSprite:Class = Engine_SmokeTopSprite; public static var SplatWhiteSprite:Class = Engine_SplatWhiteSprite; public function Engine(_arg1:App){ var app = _arg1; super(); instance = this; this.app = app; this.state = STATE_LOADING; this.sound = true; scoresObject = {n:[6, 1, 9, 15, 3, 12, 1, 1, 0, 2, 5, 15, 3, 12, 4, 5], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; var bgRect:Sprite = new Sprite(); Utils.paintRectOnSprite(bgRect, 0, 0, WIDTH, HEIGHT, 6920633); this.addChild(bgRect); Particle.initStart(200); particleBehaviours = Behaviour.createBehaviourDictionary(ParticleBehavioursXML.XML_DATA); particleBehaviours["FOOTSTEP_TOP"].setDisplayObject(new SmokeTopSprite(), false); particleBehaviours["FOOTSTEP_BOTTOM"].setDisplayObject(new SmokeBottomSprite(), false); particleBehaviours["LEAF"].setDisplayObject(new LeafSprite(), false); particleBehaviours["FART"].setDisplayObject(new FartSprite(), false); particleBehaviours["SPLAT_BLACK"].setDisplayObject(new SplatBlackSprite(), false); particleBehaviours["SPLAT_WHITE"].setDisplayObject(new SplatWhiteSprite(), false); particleBehaviours["SPLAT_GREEN"].setDisplayObject(new SplatGreenSprite(), false); initStart(); } public function togglePause():void{ paused = !(paused); } public function mouseMove(_arg1:MouseEvent):void{ } public function viewScores():void{ switch (Engine.PORTAL){ case Portals.NONE: break; case Portals.ARMOR: armorGamesInterface.viewScores(); break; case Portals.GIMME5: navigateToURL(new URLRequest("http://www.gimme5games.com/index.jsp?id=poto-and-cabenga_hs&ref=poto-and-cabenga_HISCORE"), "_blank"); break; }; } public function keyDown(_arg1:KeyboardEvent):void{ if (paused){ return; }; switch (_arg1.keyCode){ case KeyCodes.F: if (PreloadedApp.instance.stage.displayState == StageDisplayState.NORMAL){ PreloadedApp.instance.stage.displayState = StageDisplayState.FULL_SCREEN; PreloadedApp.instance.stage.scaleMode = StageScaleMode.EXACT_FIT; } else { PreloadedApp.instance.stage.displayState = StageDisplayState.NORMAL; }; break; }; switch (state){ case STATE_GAME: world.keyDown(_arg1.keyCode); switch (_arg1.keyCode){ case Keyboard.END: app.fpsCounter.visible = !(app.fpsCounter.visible); break; case Keyboard.TAB: if (CHEAT_KEYS){ }; break; case Keyboard.SHIFT: if (CHEAT_KEYS){ }; break; case 80: togglePause(); break; case Keyboard.PAGE_UP: if (CHEAT_KEYS){ }; break; case Keyboard.ESCAPE: break; }; break; case STATE_MENU: case STATE_END: if (_arg1.keyCode == Keyboard.SPACE){ screenManager.getCurrentScreen().firePressed(); }; screenManager.keyDown(_arg1); break; }; } public function initStart():void{ trace("initStart"); highScore = 0; screenManager = new ScreenManager(); screenManager.setDefaultTransitionType(ScreenTransitionManager.TYPE_NONE); gameScreen = new GameScreen(this); screenManager.addScreen(gameScreen); titleScreen = new TitleScreen(this); screenManager.addScreen(titleScreen); endScreen = new EndScreen(this); screenManager.addScreen(endScreen); screenManager.addScreen(new CreditsScreen(this)); world = new World(); if (!MUTE){ SoundManager.initStart(SoundData.SOUND_DATA); SoundData.initStart(); playSoundPanned("JUMP0", 0, 0); playSoundPanned("JUMP1", 0, 0); }; this.addChild(world); this.addChild(screenManager); paused = false; switch (PORTAL){ case Portals.ARMOR: screenManager.addScreen(new ArmorIntroScreen(this)); armorGamesInterface = new ArmorGamesInterface(); armorGamesInterface.init(this, "6e1abb5f4edaa4034f775a755528a13b", "poto-cabenga"); openScreen("armor"); state = STATE_SPLASH; break; case Portals.GIMME5: g5HiScores = new ZattikkaHiScores(); g5HiScores.x = ((640 - g5HiScores.width) * 0.5); g5HiScores.y = ((480 - g5HiScores.height) * 0.5); addChild(g5HiScores); screenManager.addScreen(new G5IntroScreen(this)); screenManager.addScreen(new G5HighScoreScreen(this)); openScreen("g5"); state = STATE_SPLASH; break; default: if (STRAIGHT_INTO_GAME){ startGame(); } else { openTitle(); }; break; }; } public function mouseWheel(_arg1:MouseEvent):void{ } public function mouseUp(_arg1:MouseEvent):void{ } public function playSound(_arg1:String):void{ if (MUTE){ return; }; if (!sound){ return; }; SoundManager.playSound(_arg1, false); } public function openTitle(_arg1:Boolean=true):void{ if (_arg1){ reset(); }; world.resetInvisible(); gameScreen.alpha = 1; gameScreen.reset(); openScreen("title"); world.player1.clip.x = Engine.HALFWIDTH; world.levelTime = 0; state = STATE_MENU; } public function writeToCookie():void{ cookie.flush(); } public function setupCookie():void{ cookie = SharedObject.getLocal("ArtThief"); if (cookie.size == 0){ trace("cookie size = 0: first play"); writeToCookie(); } else { trace("have existing cookie - read from it"); readFromCookie(); }; } public function setSound(_arg1:Boolean):void{ this.sound = _arg1; if (!sound){ SoundManager.stopAllSounds(); } else { playMusic("MUSIC_GAME"); }; } public function reset():void{ Utils.clearDelayedFunctions(); Particle.deactivateAllParticles(); Utils.clearFloatingText(); gameScreen.reset(); world.reset(); world.resetInvisible(); openScreen("game"); state = STATE_GAME; } public function openGameOver():void{ if (highScore <= world.score){ highScore = world.score; }; if (!MUTE){ SoundManager.fadeOutSound("MUSIC_GAME"); }; openScreen("end"); Utils.clearDelayedFunctions(); state = STATE_END; } public function playMusic(_arg1:String):void{ if (MUTE){ return; }; if (!sound){ return; }; SoundManager.playSound(_arg1, true); } public function submitHighScore(_arg1:int):void{ var theScore = _arg1; if (theScore < 0){ theScore = 0; }; PreloadedApp.instance.stage.displayState = StageDisplayState.NORMAL; try { switch (Engine.PORTAL){ case Portals.NONE: MochiScores.showLeaderboard({boardID:titleScreen.boardID, score:theScore}); break; case Portals.ARMOR: armorGamesInterface.submitScore(theScore); break; case Portals.GIMME5: openScreen("g5HighScore"); g5HiScores.setDetails(389, 0, "poto-and-cabenga", "mVWBenIAj5QlT2h", false, theScore, ("" + theScore), "points!", true); break; }; } catch(e:Error) { trace(e.message); }; } public function keyUp(_arg1:KeyboardEvent):void{ world.keyUp(_arg1.keyCode); } public function openScreen(_arg1:String):void{ trace(("openScreen " + _arg1)); state = STATE_MENU; if (!this.contains(screenManager)){ this.addChild(screenManager); }; screenManager.setScreen(_arg1); } public function setState(_arg1:uint):void{ state = _arg1; } public function update(_arg1:Number):void{ if (_arg1 > 0.1){ Debug.trace((("dt is " + _arg1) + " capping to 0.1")); _arg1 = 0.1; }; if (state == STATE_LOADING){ return; }; if (paused){ return; }; _arg1 = (_arg1 * DT_MULTIPLY); SoundManager.update(_arg1); Utils.updateDelayedFunctions(_arg1); Utils.updateFloatingText(_arg1); Particle.updateAll(_arg1); switch (state){ case STATE_SPLASH: case STATE_GAME_OVER: case STATE_END: screenManager.update(_arg1); break; case STATE_MENU: world.update(_arg1); screenManager.update(_arg1); break; case STATE_GAME: world.update(_arg1); screenManager.update(_arg1); break; }; } public function readFromCookie():void{ } public function gameOver():void{ state = STATE_GAME_OVER; Utils.delayFunction(openGameOver, 1); } public function mouseDown(_arg1:MouseEvent):void{ if (((paused) && ((state == STATE_GAME)))){ togglePause(); }; } public function mouseOut(_arg1:MouseEvent):void{ } public function playSoundPanned(_arg1:String, _arg2:Number, _arg3:Number=-1):void{ if (MUTE){ return; }; if (!sound){ return; }; SoundManager.playSound(_arg1, false, (((_arg2 / WIDTH) * 2) - 1), _arg3); } public function startGame():void{ reset(); } public function pause():void{ paused = true; } public static function traceBoth(_arg1:String):void{ Debug.trace(_arg1); trace(_arg1); } } }//package
Section 73
//Engine_DustSprite (Engine_DustSprite) package { import mx.core.*; public class Engine_DustSprite extends SpriteAsset { } }//package
Section 74
//Engine_FartSprite (Engine_FartSprite) package { import mx.core.*; public class Engine_FartSprite extends SpriteAsset { } }//package
Section 75
//Engine_LeafSprite (Engine_LeafSprite) package { import mx.core.*; public class Engine_LeafSprite extends SpriteAsset { } }//package
Section 76
//Engine_SmokeBottomSprite (Engine_SmokeBottomSprite) package { import mx.core.*; public class Engine_SmokeBottomSprite extends SpriteAsset { } }//package
Section 77
//Engine_SmokeTopSprite (Engine_SmokeTopSprite) package { import mx.core.*; public class Engine_SmokeTopSprite extends SpriteAsset { } }//package
Section 78
//Engine_SplatBlackSprite (Engine_SplatBlackSprite) package { import mx.core.*; public class Engine_SplatBlackSprite extends SpriteAsset { } }//package
Section 79
//Engine_SplatGreenSprite (Engine_SplatGreenSprite) package { import mx.core.*; public class Engine_SplatGreenSprite extends SpriteAsset { } }//package
Section 80
//Engine_SplatWhiteSprite (Engine_SplatWhiteSprite) package { import mx.core.*; public class Engine_SplatWhiteSprite extends SpriteAsset { } }//package
Section 81
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 82
//ParticleBehavioursXML (ParticleBehavioursXML) package { public class ParticleBehavioursXML { public static const XML_DATA:XML = <BEHAVIOURS> <BEHAVIOUR id="SPLAT_WHITE" lifetime="1"> <MOTION type="cartesian" velocityX.min="-150" velocityX.max="150" velocityY.min="-250" velocityY.max="-200" accelX="0" accelY="400" dragMultiplier="0"/> <ROTATION type="fromDirection"/> <SCALE type="targeted" initial.min="0.6" initial.max="0.8" speed="1" target="0"/> <!--ALPHA type="targeted" initial = "1.0" target="0" startTime="0.6" /--> </BEHAVIOUR> <BEHAVIOUR id="SPLAT_BLACK" lifetime="1"> <MOTION type="cartesian" velocityX.min="-150" velocityX.max="150" velocityY.min="-250" velocityY.max="-200" accelX="0" accelY="400" dragMultiplier="0"/> <ROTATION type="fromDirection"/> <SCALE type="targeted" initial.min="0.6" initial.max="0.8" speed="1" target="0"/> <!--ALPHA type="targeted" initial = "1.0" target="0" startTime="0.6" /--> </BEHAVIOUR> <BEHAVIOUR id="SPLAT_GREEN" lifetime="1"> <MOTION type="cartesian" velocityX.min="-150" velocityX.max="150" velocityY.min="-250" velocityY.max="-200" accelX="0" accelY="400" dragMultiplier="0"/> <ROTATION type="fromDirection"/> <SCALE type="targeted" initial.min="0.6" initial.max="0.8" speed="1" target="0"/> <!--ALPHA type="targeted" initial = "1.0" target="0" startTime="0.6" /--> </BEHAVIOUR> <BEHAVIOUR id="FOOTSTEP_TOP" lifetime="1"> <MOTION type="cartesian" velocityX.min="-30" velocityX.max="30" velocityY.min="-30" velocityY.max="-60" accelX="0" accelY="50"> </MOTION> <ROTATION type="constant" initial.min="0" initial.max="360" speed.min="-4" speed.max="4" accel="0"/> <SCALE type="targeted" initial.min="0.1" initial.max="0.2" speed="1" target="0"/> <!--ALPHA type="targeted" initial.min="0.1" initial.max="0.5" startTime="0.5" target="0" /--> </BEHAVIOUR> <BEHAVIOUR id="FOOTSTEP_BOTTOM" lifetime="1"> <MOTION type="cartesian" velocityX.min="-30" velocityX.max="30" velocityY.min="-30" velocityY.max="-60" accelX="0" accelY="50"> </MOTION> <ROTATION type="constant" initial.min="0" initial.max="360" speed.min="-4" speed.max="4" accel="0"/> <SCALE type="targeted" initial.min="0.1" initial.max="0.2" speed="1" target="0"/> <!--ALPHA type="targeted" initial.min="0.1" initial.max="0.5" startTime="0.5" target="0" /--> </BEHAVIOUR> <BEHAVIOUR id="FART" lifetime="2"> <MOTION type="cartesian" velocityX.min="-100" velocityX.max="100" velocityY.min="-100" velocityY.max="100" accelX="0" accelY="0" dragMultiplier="2"/> <ROTATION type="constant" initial.min="0" initial.max="360" speed.min="-4" speed.max="4" accel="0"/> <SCALE type="targeted" initial.min="0.1" initial.max="0.3" speed="0.4" target="1" startTime="0"/> <ALPHA type="targeted" initial="0.5" target="0" startTime="0.8"/> </BEHAVIOUR> <BEHAVIOUR id="LEAF" lifetime="3"> <MOTION type="cartesian" velocityX.min="-60" velocityX.max="60" velocityY.min="-60" velocityY.max="60" accelX="-200" accelY="-100" dragMultiplier="0"/> <ROTATION type="constant" initial.min="0" initial.max="360" speed.min="-2" speed.max="-3" accel="-2"/> <SCALE type="targeted" initial.min="0.3" initial.max="0.5" speed="1" target="1" startTime="0"/> <ALPHA type="targeted" initial="1" target="0" startTime="0.6"/> </BEHAVIOUR> </BEHAVIOURS> ; } }//package
Section 83
//Player (Player) package { import flash.events.*; import flash.display.*; import flesh.*; import flesh.particles.*; import alcon.*; public class Player extends PoolObject { public var animClip:MovieClip; public var dyLastFrame:Number; public var lives:int; public var invincibleTime:Number; public var clip:MovieClip; public var invincibleFlash:int; public var timeSinceLastFootstepSound:Number; public var dx:Number; public var dy:Number; public var state:int; public var frameTime:Number; public var top:Boolean; public var hangTime:Number; public var groundY:Number; public var otherPlayer:Player; public var lostRider:Boolean; public static const GRAVITY_X:Number = -2500; public static const MIN_X:int = 120; public static const FRAME_WTF:int = 5; public static const STATE_RUN:int = 0; public static const ACCEL_X:Number = 2500; public static const STATE_HIT:int = 2; public static const MAX_X:int = 520; public static const GRAVITY:Number = 1875; public static const MIN_SPEED_X:Number = -125; public static const STATE_JUMP:int = 1; public static const STATE_THINKING:int = 3; public static const MAX:Number = 2; public static const MAX_SPEED_X:Number = 125; public static const JUMP_DY:Number = -562.5; public static const FRAME_DASH:int = 2; public static const MIN_X_WYRM:int = 200; public static const FRAME_JUMP:int = 3; public static const LIFE_COUNT:int = 9; public static const INVINCIBLE_TIME:Number = 4; public static const FRAME_DIE:int = 4; public static const HANG_TIME:Number = 0.5; public static const FRAME_WALK:int = 1; public static var BottomSteedRiderClip:Class = Player_BottomSteedRiderClip; public static var pool:ManagedPool; public static var BottomSteedClip:Class = Player_BottomSteedClip; public static var TopHeroClip:Class = Player_TopHeroClip; public function Player(_arg1:uint){ super(_arg1); } public function collidedWithObject(_arg1:WorldObject):void{ var _local2:Region; var _local3:int; Debug.trace(((((((((((((("player " + (top) ? "top" : "bot") + " collided with worldObject ") + _arg1.index) + " type = ") + _arg1.type) + " frame = ") + _arg1.clip.currentFrame) + " squashable = ") + _arg1.isSquashable()) + " player state = ") + state) + " dy = ") + dy)); if (_arg1.type == WorldObject.TYPE_LEAF){ _arg1.deactivate(); Particle.requestParticles((_arg1.top) ? World.instance.particleSpriteTop : World.instance.particleSpriteBottom, 8, Engine.instance.particleBehaviours["LEAF"], _arg1.clip.x, (_arg1.clip.y - 8), _arg1.clip.x, (_arg1.clip.y - 8)); World.instance.addPoints(100); do { _local3 = Math.floor((Math.random() * 3)); } while (_local3 == World.instance.lastLeafSoundId); World.instance.lastLeafSoundId = _local3; Engine.instance.playSoundPanned(("LEAF_COLLECT" + _local3), clip.x); } else { if ((((_arg1.type == WorldObject.TYPE_BOTTOM_EGG)) || ((_arg1.type == WorldObject.TYPE_TOP_NODULE)))){ _arg1.kill(1); WorldObject.killAllBaddies(!(_arg1.top)); Engine.instance.playSoundPanned("SMARTBOMB", clip.x); World.instance.wyrmBackground.bite(1.5); if (_arg1.top){ _local2 = Region.createLineRegion((_arg1.clip.x + 15), (clip.y - 20), (clip.x + 15), (clip.y - 20)); Particle.requestParticlesForRegion(_local2, World.instance.particleSpriteTop, 10, Engine.instance.particleBehaviours["SPLAT_GREEN"]); World.instance.shakeBottomScreen(); } else { World.instance.shakeTopScreen(); }; World.instance.addPoints(250); } else { if (((_arg1.isSquashable()) && ((((dy > 0)) || ((dyLastFrame > 0)))))){ _arg1.squash(); World.instance.addPoints(500); Engine.instance.playSoundPanned("SQUASH_ENEMY", clip.x); _local2 = Region.createLineRegion((_arg1.clip.x - 10), (clip.y + 10), (clip.x + 15), (clip.y + 15)); Particle.requestParticlesForRegion(_local2, (top) ? World.instance.particleSpriteTop : World.instance.particleSpriteBottom, 10, Engine.instance.particleBehaviours[(top) ? "SPLAT_WHITE" : "SPLAT_BLACK"]); if (dy > 0){ dy = (-(dy) * 0.5); } else { dy = (-(dyLastFrame) * 0.5); }; } else { hit(_arg1); }; }; }; } override public function update(_arg1:Number):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; dyLastFrame = dy; if (invincibleTime > 0){ invincibleTime = (invincibleTime - _arg1); invincibleFlash++; if (invincibleFlash > 1){ invincibleFlash = 0; }; clip.visible = (invincibleFlash < 1); } else { clip.visible = true; }; var _local2:Boolean = (((((index == 0)) && (!(World.instance.buttonIsDown)))) || ((((index == 1)) && (World.instance.buttonIsDown)))); if (World.instance.loseControlOfPlayers){ _local4 = (Engine.HALFWIDTH - clip.x); if (_local4 > 5){ _local2 = true; } else { if (_local4 < -5){ _local2 = false; } else { if (((top) && (World.instance.topScreenStoppedScrolling))){ setFrame(FRAME_WTF); } else { setFrame(FRAME_WALK); }; return; }; }; }; switch (state){ case STATE_RUN: if (!_local2){ setFrame(FRAME_WALK); } else { setFrame(FRAME_DASH); if (Math.random() < 0.3){ _local7 = (clip.x - (top) ? 10 : 30); Particle.requestParticles((top) ? World.instance.particleSpriteTop : World.instance.particleSpriteBottom, 1, Engine.instance.particleBehaviours[(top) ? "FOOTSTEP_TOP" : "FOOTSTEP_BOTTOM"], _local7, clip.y, _local7, clip.y); }; }; break; case STATE_HIT: animClip = clip["anim"]; if (animClip == null){ return; }; frameTime = (frameTime + _arg1); if (frameTime > 0.08){ frameTime = 0; _local8 = animClip.currentFrame; ++_local8; if (_local8 > animClip.totalFrames){ lives--; Engine.instance.gameScreen.setLifeText(top, lives); if (lives > 0){ invincibleTime = INVINCIBLE_TIME; reset((Engine.WIDTH - otherPlayer.clip.x), groundY); } else { if (Engine.instance.state == Engine.STATE_GAME){ Engine.instance.gameOver(); }; }; } else { animClip.gotoAndStop(_local8); if (_local8 == 5){ Engine.instance.playSoundPanned("PLAYER_SPLAT", clip.x); clip.y = groundY; }; }; }; break; case STATE_JUMP: if (hangTime > 0){ hangTime = (hangTime - _arg1); break; }; _local5 = clip.y; _local5 = (_local5 + (dy * _arg1)); _local6 = dy; dy = (dy + (GRAVITY * _arg1)); if ((((dy > 0)) && ((_local6 <= 0)))){ hangTime = HANG_TIME; }; if ((((dy > 0)) && ((_local5 > groundY)))){ _local5 = groundY; run(); }; clip.y = _local5; break; }; if (Engine.instance.state != Engine.STATE_GAME){ return; }; if (_local2){ _local4 = MAX_SPEED_X; } else { _local4 = MIN_SPEED_X; }; if (state == STATE_HIT){ _local4 = -60; } else { if ((((World.instance.player0.state == STATE_JUMP)) || ((World.instance.player1.state == STATE_JUMP)))){ _local4 = 0; }; }; var _local3:Number = clip.x; _local3 = (_local3 + (_local4 * _arg1)); if (_local3 < MIN_X){ _local4 = 0; _local3 = MIN_X; }; if ((((((World.instance.levelTime < (World.TIME_WYRM_CHARGE + 3))) && (!(top)))) && ((_local3 < MIN_X_WYRM)))){ _local4 = 0; _local3 = MIN_X_WYRM; }; if (_local3 > MAX_X){ _local4 = 0; _local3 = MAX_X; }; clip.x = _local3; } public function setFrame(_arg1:int):void{ if (clip.currentFrame != _arg1){ clip.gotoAndStop(_arg1); clip.addEventListener(Event.ENTER_FRAME, clipEnteredFrame); }; } public function reset(_arg1:Number, _arg2:Number):void{ clip.x = _arg1; clip.y = _arg2; clip.alpha = 1; groundY = _arg2; dx = (dy = 0); hangTime = 0; frameTime = 0; clip.rotation = 0; timeSinceLastFootstepSound = 0; clip.scaleX = (clip.scaleY = 1); invincibleFlash = 0; setFrame(FRAME_WALK); run(); } public function hit(_arg1:WorldObject):void{ if ((((((invincibleTime > 0)) || (Engine.INVUNERABLE))) || ((state == STATE_HIT)))){ return; }; if ((((((state == STATE_JUMP)) && ((dy < 0)))) && ((Math.abs((clip.x - _arg1.clip.x)) > 12)))){ return; }; if (Math.abs((clip.x - _arg1.clip.x)) > 36){ return; }; var _local2:MovieClip = _arg1.clip; Engine.instance.playSoundPanned("PLAYER_DIE", clip.x); setState(STATE_HIT); setFrame(FRAME_DIE); frameTime = 0; dy = 0; World.instance.addPoints(-200); } public function setState(_arg1:int):void{ state = _arg1; } public function init(_arg1:Boolean, _arg2:int, _arg3:int):void{ Utils.removeChild(clip); lostRider = false; lives = LIFE_COUNT; this.top = _arg1; Engine.instance.gameScreen.setLifeText(_arg1, lives); if (_arg1){ clip = new TopHeroClip(); Utils.addChild(clip, World.instance.playerSpriteTop); } else { clip = new BottomSteedRiderClip(); Utils.addChild(clip, World.instance.playerSpriteBottom); }; invincibleTime = 0; reset(_arg2, _arg3); } public function run():void{ dy = 0; setState(STATE_RUN); } public function loseRider():void{ if (lostRider){ return; }; var _local1:Number = clip.x; var _local2:Number = clip.y; Utils.removeChild(clip); clip = new BottomSteedClip(); clip.x = _local1; clip.y = _local2; World.instance.playerSpriteBottom.addChild(clip); lostRider = true; if (state == STATE_JUMP){ clip.gotoAndStop(FRAME_JUMP); } else { clip.gotoAndStop(FRAME_WALK); }; } public function clipEnteredFrame(_arg1:Event=null):void{ animClip = clip["anim"]; clip.removeEventListener(Event.ENTER_FRAME, clipEnteredFrame); } public function jump():void{ if (state != STATE_RUN){ return; }; setState(STATE_JUMP); setFrame(FRAME_JUMP); dy = JUMP_DY; if (((!(top)) || ((World.instance.levelTime > World.TIME_TOP_SCREEN_APPEARS)))){ Engine.instance.playSoundPanned("JUMP0", clip.x); }; } override public function createInstance(_arg1:uint):PoolObject{ return (new Player(_arg1)); } override public function deactivate():void{ active = false; clip.visible = false; Utils.removeChild(clip); pool.notifyDeactivated(this); } public static function create(_arg1:Boolean, _arg2:int, _arg3:int):Player{ var _local4:Player = (pool.requestObject() as Player); _local4.init(_arg1, _arg2, _arg3); return (_local4); } public static function initStart():void{ pool = new ManagedPool("PlayerPool", new Player(0), MAX); } } }//package
Section 84
//Player_BottomSteedClip (Player_BottomSteedClip) package { import mx.core.*; import flash.display.*; public class Player_BottomSteedClip extends MovieClipAsset { public var buttonG5:DisplayObject; public var buttonReturn:DisplayObject; public var playerScoreText:DisplayObject; public var buttonPlay:DisplayObject; public var anim:DisplayObject; public var topLivesText:DisplayObject; public var credits:DisplayObject; public var buttonOktomusic:DisplayObject; public var buttonMark:DisplayObject; public var buttonKwok:DisplayObject; public var logo:DisplayObject; public var buttonArmor:DisplayObject; public var buttonKokoromi:DisplayObject; public var bottomLivesIcon:DisplayObject; public var buttonHighScoreSubmit:DisplayObject; public var buttonScoreSubmit:DisplayObject; public var buttonViewHighScores:DisplayObject; public var copyright:DisplayObject; public var topLivesIcon:DisplayObject; public var newHighScore:DisplayObject; public var buttonHoneyslug:DisplayObject; public var highScoreText:DisplayObject; public var scoreText:DisplayObject; public var splash:DisplayObject; public var buttonRicky:DisplayObject; public var bottomLivesText:DisplayObject; public var creditsButton:DisplayObject; public var creditsText:DisplayObject; public var instructionsText:DisplayObject; public var buttonDick:DisplayObject; } }//package
Section 85
//Player_BottomSteedRiderClip (Player_BottomSteedRiderClip) package { import mx.core.*; import flash.display.*; public class Player_BottomSteedRiderClip extends MovieClipAsset { public var buttonG5:DisplayObject; public var buttonReturn:DisplayObject; public var playerScoreText:DisplayObject; public var buttonPlay:DisplayObject; public var anim:DisplayObject; public var topLivesText:DisplayObject; public var credits:DisplayObject; public var buttonOktomusic:DisplayObject; public var buttonMark:DisplayObject; public var buttonKwok:DisplayObject; public var logo:DisplayObject; public var buttonArmor:DisplayObject; public var buttonKokoromi:DisplayObject; public var bottomLivesIcon:DisplayObject; public var buttonHighScoreSubmit:DisplayObject; public var buttonScoreSubmit:DisplayObject; public var buttonViewHighScores:DisplayObject; public var copyright:DisplayObject; public var topLivesIcon:DisplayObject; public var newHighScore:DisplayObject; public var buttonHoneyslug:DisplayObject; public var highScoreText:DisplayObject; public var scoreText:DisplayObject; public var splash:DisplayObject; public var buttonRicky:DisplayObject; public var bottomLivesText:DisplayObject; public var creditsButton:DisplayObject; public var creditsText:DisplayObject; public var instructionsText:DisplayObject; public var buttonDick:DisplayObject; } }//package
Section 86
//Player_TopHeroClip (Player_TopHeroClip) package { import mx.core.*; import flash.display.*; public class Player_TopHeroClip extends MovieClipAsset { public var buttonG5:DisplayObject; public var buttonReturn:DisplayObject; public var playerScoreText:DisplayObject; public var buttonPlay:DisplayObject; public var anim:DisplayObject; public var topLivesText:DisplayObject; public var credits:DisplayObject; public var buttonOktomusic:DisplayObject; public var buttonMark:DisplayObject; public var buttonKwok:DisplayObject; public var logo:DisplayObject; public var buttonArmor:DisplayObject; public var buttonKokoromi:DisplayObject; public var bottomLivesIcon:DisplayObject; public var buttonHighScoreSubmit:DisplayObject; public var buttonScoreSubmit:DisplayObject; public var buttonViewHighScores:DisplayObject; public var copyright:DisplayObject; public var topLivesIcon:DisplayObject; public var newHighScore:DisplayObject; public var buttonHoneyslug:DisplayObject; public var highScoreText:DisplayObject; public var scoreText:DisplayObject; public var splash:DisplayObject; public var buttonRicky:DisplayObject; public var bottomLivesText:DisplayObject; public var creditsButton:DisplayObject; public var creditsText:DisplayObject; public var instructionsText:DisplayObject; public var buttonDick:DisplayObject; } }//package
Section 87
//PreloadedApp (PreloadedApp) package { import flesh.*; public dynamic class PreloadedApp extends Preloader { public static var PreloaderLogoClip:Class = PreloadedApp_PreloaderLogoClip; public static var instance:PreloadedApp; public function PreloadedApp(){ trace("PreloadedApp ctor"); super(PreloaderLogoClip, false); instance = this; } } }//package
Section 88
//PreloadedApp_PreloaderLogoClip (PreloadedApp_PreloaderLogoClip) package { import mx.core.*; public class PreloadedApp_PreloaderLogoClip extends MovieClipAsset { } }//package
Section 89
//PreloaderLogo (PreloaderLogo) package { import flash.events.*; import flash.display.*; public class PreloaderLogo extends Sprite { private var gywLogo:MovieClip; public var waitUntilEndOfAnimation:Boolean;// = false public var animCompletedFlag:Boolean;// = false public function PreloaderLogo(_arg1:Class, _arg2:Boolean){ gywLogo = new (_arg1); this.waitUntilEndOfAnimation = _arg2; waiting(); } public function waiting():void{ addEventListener(Event.ADDED_TO_STAGE, logoAddedToStage); } private function waitingToEnd(_arg1:Event):void{ if (((waitUntilEndOfAnimation) && ((gywLogo.currentFrame == gywLogo.totalFrames)))){ gywLogo.gotoAndStop(gywLogo.totalFrames); gywLogo.removeEventListener(Event.ENTER_FRAME, waitingToEnd); animCompletedFlag = true; } else { if (waitUntilEndOfAnimation == false){ animCompletedFlag = true; }; }; } private function logoAddedToStage(_arg1:Event):void{ stage.addChild(gywLogo); gywLogo.gotoAndPlay(1); gywLogo.addEventListener(Event.ENTER_FRAME, waitingToEnd); } public function dispose():void{ stage.removeChild(gywLogo); } } }//package
Section 90
//SoundData (SoundData) package { import flesh.*; public class SoundData { private static var Sound11:Class = SoundData_Sound11; private static var Sound13:Class = SoundData_Sound13; private static var Sound15:Class = SoundData_Sound15; private static var Sound10:Class = SoundData_Sound10; private static var Sound12:Class = SoundData_Sound12; private static var Sound14:Class = SoundData_Sound14; private static var Sound16:Class = SoundData_Sound16; private static var Sound0:Class = SoundData_Sound0; private static var Sound2:Class = SoundData_Sound2; private static var Sound3:Class = SoundData_Sound3; private static var Sound4:Class = SoundData_Sound4; private static var Sound5:Class = SoundData_Sound5; private static var Sound6:Class = SoundData_Sound6; private static var Sound7:Class = SoundData_Sound7; private static var Sound1:Class = SoundData_Sound1; private static var Sound9:Class = SoundData_Sound9; private static var Sound8:Class = SoundData_Sound8; public static var SOUND_DATA:Array; public static function initStart():void{ var _local2:XML; var _local3:String; var _local4:int; var _local5:int; var _local6:Number; var _local1:XML = SoundDataXML.XML_DATA; SOUND_DATA = new Array(); for each (_local2 in _local1.children()) { _local3 = Utils.getStringAttributeFromXML(_local2, "id"); _local4 = ((Utils.getStringAttributeFromXML(_local2, "type") == "sfx")) ? FleshSound.FX : FleshSound.MUSIC; _local5 = (Utils.getBooleanAttributeFromXML(_local2, "multiple")) ? FleshSound.MULTIPLE : FleshSound.SINGLETON; _local6 = Utils.getFloatAttributeFromXML(_local2, "volume"); SOUND_DATA.push(_local3); SOUND_DATA.push(_local4); SOUND_DATA.push(_local5); SOUND_DATA.push(_local6); }; SoundManager.embedSound(SOUND_DATA, new Sound0()); SoundManager.embedSound(SOUND_DATA, new Sound1()); SoundManager.embedSound(SOUND_DATA, new Sound2()); SoundManager.embedSound(SOUND_DATA, new Sound3()); SoundManager.embedSound(SOUND_DATA, new Sound4()); SoundManager.embedSound(SOUND_DATA, new Sound5()); SoundManager.embedSound(SOUND_DATA, new Sound6()); SoundManager.embedSound(SOUND_DATA, new Sound7()); SoundManager.embedSound(SOUND_DATA, new Sound8()); SoundManager.embedSound(SOUND_DATA, new Sound9()); SoundManager.embedSound(SOUND_DATA, new Sound10()); SoundManager.embedSound(SOUND_DATA, new Sound11()); SoundManager.embedSound(SOUND_DATA, new Sound12()); SoundManager.embedSound(SOUND_DATA, new Sound13()); SoundManager.embedSound(SOUND_DATA, new Sound14()); SoundManager.embedSound(SOUND_DATA, new Sound15()); SoundManager.embedSound(SOUND_DATA, new Sound16()); } } }//package
Section 91
//SoundData_Sound0 (SoundData_Sound0) package { import mx.core.*; public class SoundData_Sound0 extends SoundAsset { } }//package
Section 92
//SoundData_Sound1 (SoundData_Sound1) package { import mx.core.*; public class SoundData_Sound1 extends SoundAsset { } }//package
Section 93
//SoundData_Sound10 (SoundData_Sound10) package { import mx.core.*; public class SoundData_Sound10 extends SoundAsset { } }//package
Section 94
//SoundData_Sound11 (SoundData_Sound11) package { import mx.core.*; public class SoundData_Sound11 extends SoundAsset { } }//package
Section 95
//SoundData_Sound12 (SoundData_Sound12) package { import mx.core.*; public class SoundData_Sound12 extends SoundAsset { } }//package
Section 96
//SoundData_Sound13 (SoundData_Sound13) package { import mx.core.*; public class SoundData_Sound13 extends SoundAsset { } }//package
Section 97
//SoundData_Sound14 (SoundData_Sound14) package { import mx.core.*; public class SoundData_Sound14 extends SoundAsset { } }//package
Section 98
//SoundData_Sound15 (SoundData_Sound15) package { import mx.core.*; public class SoundData_Sound15 extends SoundAsset { } }//package
Section 99
//SoundData_Sound16 (SoundData_Sound16) package { import mx.core.*; public class SoundData_Sound16 extends SoundAsset { } }//package
Section 100
//SoundData_Sound2 (SoundData_Sound2) package { import mx.core.*; public class SoundData_Sound2 extends SoundAsset { } }//package
Section 101
//SoundData_Sound3 (SoundData_Sound3) package { import mx.core.*; public class SoundData_Sound3 extends SoundAsset { } }//package
Section 102
//SoundData_Sound4 (SoundData_Sound4) package { import mx.core.*; public class SoundData_Sound4 extends SoundAsset { } }//package
Section 103
//SoundData_Sound5 (SoundData_Sound5) package { import mx.core.*; public class SoundData_Sound5 extends SoundAsset { } }//package
Section 104
//SoundData_Sound6 (SoundData_Sound6) package { import mx.core.*; public class SoundData_Sound6 extends SoundAsset { } }//package
Section 105
//SoundData_Sound7 (SoundData_Sound7) package { import mx.core.*; public class SoundData_Sound7 extends SoundAsset { } }//package
Section 106
//SoundData_Sound8 (SoundData_Sound8) package { import mx.core.*; public class SoundData_Sound8 extends SoundAsset { } }//package
Section 107
//SoundData_Sound9 (SoundData_Sound9) package { import mx.core.*; public class SoundData_Sound9 extends SoundAsset { } }//package
Section 108
//SoundDataXML (SoundDataXML) package { public class SoundDataXML { public static const XML_DATA:XML = <SOUNDS> <SOUND id="FALL" type="sfx" multiple="true" volume="0.3"/> <SOUND id="WYRM_FART" type="sfx" multiple="true" volume="0.3"/> <SOUND id="JUMP0" type="sfx" multiple="true" volume="0.7"/> <SOUND id="JUMP1" type="sfx" multiple="true" volume="0.7"/> <SOUND id="LAND" type="sfx" multiple="true" volume="0.7"/> <SOUND id="LEAF_COLLECT0" type="sfx" multiple="true" volume="0.3"/> <SOUND id="PLAYER_DIE" type="sfx" multiple="true" volume="0.3"/> <SOUND id="SMARTBOMB" type="sfx" multiple="false" volume="0.3"/> <SOUND id="SQUASH_ENEMY" type="sfx" multiple="false" volume="0.7"/> <SOUND id="THINK" type="sfx" multiple="false" volume="0.7"/> <SOUND id="WYRM_BITE" type="sfx" multiple="false" volume="0.7"/> <SOUND id="WYRM_ROAR" type="sfx" multiple="false" volume="0.4"/> <SOUND id="WYRM_JAW_SNAP" type="sfx" multiple="false" volume="0.7"/> <SOUND id="MUSIC_GAME" type="music" multiple="false" volume="0.4"/> <SOUND id="LEAF_COLLECT1" type="sfx" multiple="true" volume="0.3"/> <SOUND id="LEAF_COLLECT2" type="sfx" multiple="true" volume="0.3"/> <SOUND id="PLAYER_SPLAT" type="sfx" multiple="true" volume="0.3"/> </SOUNDS> ; } }//package
Section 109
//World (World) package { import flash.display.*; import flesh.*; import flesh.particles.*; import flash.ui.*; public class World extends Sprite { public var maxTimeBetweenBaddies:Number; public var minTimeBetweenBaddies:Number; public var baddieTypes:Array; public var endSequence:EndSequence; public var state:String; public var score:int; public var leavesSpawned:int; public var timeSinceLastLeaf:Number; public var parallaxBackground:ParallaxScrollingSprite; public var topScreenReachedEnd:Boolean; public var wyrmBackground:WyrmBackground; public var timeSinceLastSmartBomb:Number; public var seededRandom:SeededRandom; public var baddieSpriteTop:Sprite; public var loseControlOfPlayers:Boolean; public var buttonIsDown:Boolean; public var wyrmForeground:WyrmForeground; public var topScreenScrollAmount:Number; public var baddieSpriteBottom:Sprite; public var preparingToStopTopScreenScroll:Boolean; public var playerSpriteBottom:Sprite; public var newHighScore:Boolean; public var timeTilNextBaddie:Number; public var dtMultiply:Number; public var lastLeafSoundId:int; public var topScreenStoppedScrolling:Boolean; public var playerSpriteTop:Sprite; public var displayScore:int; public var levelTime:Number; public var nextBaddieOnTopScreen:Boolean; public var player1:Player; public var particleSpriteTop:Sprite; public var lastLevelTime:Number; public var particleSpriteBottom:Sprite; public var player0:Player; public var scoreColourSlider:Number; public static const INITIAL_MAX_TIME_BETWEEN_OBJECTS:Number = 2; public static const TIME_BETWEEN_LEAVES:Number = 15; public static const TIME_TOP_SCREEN_APPEARS:int = 35; public static const PARALLAX_ARRAY:Array = new Array(new BottomBg0Clouds(), 275, 10, new BottomBg1Mountains(), 331, 20, new BottomBg2Hills(), 348, 30, new BottomBg3Floor(), 427, 60, new Sprite(), 0, 0, new BottomBg5Foreground(), 421, 150, new TopBg0AnusBack(), -40, 60, new TopBg0Back(), -40, 60, new TopBg1AnusFloor(), 181, 60, new TopBg1Floor(), 181, 60, new Sprite(), 0, 0, new TopBg3Top(), -55, 60, new TopBg3AnusTop(), -55, 60); public static const TIME_ENEMIES:int = 55; public static const TIME_OBJECTS_ON_TOP_SCREEN:int = 40; public static const TIME_SQUASHABLE_ENEMIES:int = 110; public static const TIME_WYRM_CHARGE:int = 25; public static const TIME_MEDIUM:int = 120; public static const TIME_HARD:int = 160; public static const GROUND_Y0:Number = 190; public static const GROUND_Y1:Number = 430; public static const START_TIME:int = 0; public static const VERSION:String = "1.0.29"; public static const TIME_BIG_ENEMIES:int = 140; public static const TIME_END:int = 250; public static const TIME_ENEMIES_FROM_BEHIND:int = 90; public static const INITIAL_MIN_TIME_BETWEEN_OBJECTS:Number = 2; public static const LEVEL_HEIGHT:Number = 141; public static const TIME_SPEED_UP:int = 200; public static const LEVEL_SEED:int = 3; public static const TIME_WYRM_APPEARS:int = 20; public static const TIME_OBJECTS_APPEAR:int = 4; public static const TIME_SWAP_IN_ANUS:int = 240; public static var TopBg3Top:Class = World_TopBg3Top; public static var BottomBg3Floor:Class = World_BottomBg3Floor; public static var instance:World; public static var TopBg0Back:Class = World_TopBg0Back; public static var TopScreenMaskSprite:Class = World_TopScreenMaskSprite; public static var TopBg1Floor:Class = World_TopBg1Floor; public static var BottomBg2Hills:Class = World_BottomBg2Hills; public static var BottomBg0Clouds:Class = World_BottomBg0Clouds; public static var BottomBg1Mountains:Class = World_BottomBg1Mountains; public static var TopBg0AnusBack:Class = World_TopBg0AnusBack; public static var BottomBg5Foreground:Class = World_BottomBg5Foreground; public static var TopBg3AnusTop:Class = World_TopBg3AnusTop; public static var TopBg1AnusFloor:Class = World_TopBg1AnusFloor; public function World(){ var _local4:Sprite; super(); instance = this; seededRandom = new SeededRandom(LEVEL_SEED); parallaxBackground = new ParallaxScrollingSprite(PARALLAX_ARRAY); baddieTypes = new Array(); WorldObject.initStart(); Player.initStart(); this.addChild(parallaxBackground); baddieSpriteBottom = new Sprite(); playerSpriteBottom = new Sprite(); baddieSpriteTop = new Sprite(); playerSpriteTop = new Sprite(); var _local1:Sprite = parallaxBackground.getLayerAt(4); wyrmBackground = new WyrmBackground(); _local1.addChild(wyrmBackground); _local1.addChild(playerSpriteBottom); _local1.addChild(baddieSpriteBottom); var _local2:Sprite = parallaxBackground.getLayerAt(10); _local2.addChild(playerSpriteTop); _local2.addChild(baddieSpriteTop); parallaxBackground.registerFlipListener(6, this); particleSpriteTop = new Sprite(); _local2.addChild(particleSpriteTop); particleSpriteBottom = new Sprite(); _local1.addChild(particleSpriteBottom); wyrmForeground = new WyrmForeground(); _local1.addChild(wyrmForeground); buttonIsDown = false; var _local3:uint = 6; while (_local3 < 13) { _local4 = new TopScreenMaskSprite(); parallaxBackground.getLayerAt(_local3).mask = _local4; this.addChild(_local4); _local3++; }; endSequence = new EndSequence(); endSequence.x = -20; endSequence.y = 312; this.addChild(endSequence); } public function resetTopScreenScroll():void{ preparingToStopTopScreenScroll = false; topScreenStoppedScrolling = false; var _local1:uint = 6; while (_local1 < 13) { if (_local1 != 10){ parallaxBackground.setScrollSpeed(_local1, 60); }; _local1++; }; } public function notifyFlipped(_arg1:int):void{ if (levelTime < TIME_SWAP_IN_ANUS){ return; }; loseControlOfPlayers = true; topScreenReachedEnd = true; showAnus(); } public function spawnWorldObject(_arg1:int, _arg2:int, _arg3:Boolean, _arg4:Boolean, _arg5:Boolean):void{ if (((((!(_arg4)) && ((_arg1 >= WorldObject.TYPE_TOP_BADDIE_SPIKEY)))) && ((_arg1 <= WorldObject.TYPE_TOP_BADDIE_BIG)))){ _arg1 = (_arg1 - 5); } else { if (((!(_arg4)) && ((_arg1 == WorldObject.TYPE_TOP_NODULE)))){ _arg1 = WorldObject.TYPE_BOTTOM_EGG; }; }; var _local6:Number = ((_arg2 == Utils.LEFT)) ? (Engine.WIDTH + 32) : -32; var _local7:Number = (_arg4) ? (_arg3) ? (GROUND_Y0 - LEVEL_HEIGHT) : GROUND_Y0 : (_arg3) ? (GROUND_Y1 - LEVEL_HEIGHT) : GROUND_Y1; if (_arg1 == WorldObject.TYPE_LEAF){ leavesSpawned++; timeSinceLastLeaf = 0; }; WorldObject.create(_arg4, _arg1, _local6, _local7, _arg2); } public function hideAnus():void{ parallaxBackground.setLayerVisible(6, false); parallaxBackground.setLayerVisible(8, false); parallaxBackground.setLayerVisible(12, false); parallaxBackground.setBothBgVisible(7, true); parallaxBackground.setBothBgVisible(9, true); parallaxBackground.setBothBgVisible(11, true); parallaxBackground.setBothBgVisible(6, true); parallaxBackground.setBothBgVisible(8, true); parallaxBackground.setBothBgVisible(12, true); } public function fartOnBottomScreen():void{ var _local1:Region = Region.createRectRegion(0, 200, 640, 480); Particle.requestParticlesForRegion(_local1, particleSpriteBottom, 150, Engine.instance.particleBehaviours["FART"]); } public function shakeBottomScreen():void{ var _local1:uint; while (_local1 < 6) { parallaxBackground.shakeLayer(_local1); _local1++; }; } public function resetInvisible():void{ WorldObject.pool.deactivateAll(); player0.otherPlayer = player1; player1.otherPlayer = player0; baddieTypes.splice(0); baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_SPIKEY); baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_SPIKEY); levelTime = START_TIME; minTimeBetweenBaddies = INITIAL_MIN_TIME_BETWEEN_OBJECTS; maxTimeBetweenBaddies = INITIAL_MAX_TIME_BETWEEN_OBJECTS; leavesSpawned = 0; timeSinceLastLeaf = 0; timeSinceLastSmartBomb = 0; dtMultiply = 1; score = (displayScore = 0); scoreColourSlider = 0; setTimeTilNextBaddie(); Engine.instance.gameScreen.scoreText.textColor = 0xFFFF00; setTopScreenMaskX(Engine.WIDTH); hideAnus(); newHighScore = false; wyrmForeground.reset(); wyrmBackground.visible = true; wyrmBackground.reset(); endSequence.visible = false; loseControlOfPlayers = false; } public function setTimeTilNextBaddie():void{ timeTilNextBaddie = (minTimeBetweenBaddies + (seededRandom.random() * (maxTimeBetweenBaddies - minTimeBetweenBaddies))); } public function showAnus():void{ parallaxBackground.setRightBgVisible(7, false); parallaxBackground.setRightBgVisible(9, false); parallaxBackground.setRightBgVisible(11, false); parallaxBackground.setLeftBgVisible(8, false); parallaxBackground.setLeftBgVisible(12, false); parallaxBackground.setLayerVisible(6, true); parallaxBackground.setLayerVisible(8, true); parallaxBackground.setLayerVisible(12, true); preparingToStopTopScreenScroll = true; topScreenScrollAmount = 0; Utils.delayFunction(startEndSequence, (11.6 + 5)); } public function keyDown(_arg1:int):void{ if (loseControlOfPlayers){ return; }; switch (_arg1){ case KeyCodes.Q: case Keyboard.SPACE: if (!buttonIsDown){ player0.jump(); }; buttonIsDown = true; break; }; } public function shakeTopScreen():void{ var _local1:uint = 6; while (_local1 < 13) { parallaxBackground.shakeLayer(_local1); _local1++; }; } public function levelTimeCrossed(_arg1:Number):Boolean{ return ((((lastLevelTime < _arg1)) && ((levelTime >= _arg1)))); } public function update(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Boolean; var _local5:int; var _local6:Boolean; var _local7:int; var _local8:Boolean; _arg1 = (_arg1 * dtMultiply); lastLevelTime = levelTime; if (preparingToStopTopScreenScroll){ topScreenScrollAmount = (topScreenScrollAmount + (60 * _arg1)); if (topScreenScrollAmount >= 810){ preparingToStopTopScreenScroll = false; stopTopScreenScroll(); }; }; timeSinceLastSmartBomb = (timeSinceLastSmartBomb + _arg1); if (endSequence.visible){ Engine.instance.gameScreen.alpha = (Engine.instance.gameScreen.alpha - (_arg1 * 2)); endSequence.update(_arg1); if (endSequence.currentFrame == endSequence.totalFrames){ Engine.instance.openTitle(false); } else { if (endSequence.currentFrame >= 136){ _local2 = (0 - parallaxBackground.y); parallaxBackground.y = (parallaxBackground.y + (_local2 * 0.5)); }; }; }; if (Engine.instance.state == Engine.STATE_GAME){ levelTime = (levelTime + (_arg1 / dtMultiply)); }; if (displayScore < score){ displayScore = (displayScore + 10); Engine.instance.gameScreen.setScoreText(displayScore); if (scoreColourSlider < 1){ scoreColourSlider = (scoreColourSlider + 0.1); }; } else { if (displayScore > score){ displayScore = (displayScore - 10); if (scoreColourSlider > -1){ scoreColourSlider = (scoreColourSlider - 0.1); }; Engine.instance.gameScreen.scoreText.textColor = Utils.getInterpolatedColour(0xFFFF00, 0xFF0000, -(scoreColourSlider), 1); Engine.instance.gameScreen.setScoreText(displayScore); } else { scoreColourSlider = (scoreColourSlider * 0.95); }; }; if (scoreColourSlider > 0){ Engine.instance.gameScreen.scoreText.textColor = Utils.getInterpolatedColour(0xFFFF00, 0xFFFFFF, scoreColourSlider, 1); } else { Engine.instance.gameScreen.scoreText.textColor = Utils.getInterpolatedColour(0xFFFF00, 0xFF0000, -(scoreColourSlider), 1); }; if (!endSequence.visible){ _local3 = parallaxBackground.getLayerAt(6).mask.x; if ((((levelTime > TIME_TOP_SCREEN_APPEARS)) && ((_local3 > -240)))){ setTopScreenMaskX((_local3 - (_arg1 * 800))); }; }; if (levelTimeCrossed(TIME_TOP_SCREEN_APPEARS)){ Engine.instance.playMusic("MUSIC_GAME"); }; if (levelTimeCrossed(TIME_MEDIUM)){ }; if (levelTimeCrossed(TIME_HARD)){ minTimeBetweenBaddies = (maxTimeBetweenBaddies = 1.25); }; if ((((levelTime > TIME_SPEED_UP)) && ((dtMultiply < 1.175)))){ dtMultiply = (dtMultiply + (_arg1 * 0.1)); }; parallaxBackground.update(_arg1); WorldObject.pool.updateAll(_arg1); Player.pool.updateAll(_arg1); wyrmForeground.update(_arg1); if (levelTime > (TIME_TOP_SCREEN_APPEARS + 5)){ wyrmBackground.update(_arg1); }; if (levelTimeCrossed(TIME_SQUASHABLE_ENEMIES)){ baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_SQUASHABLE); baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_SQUASHABLE); baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_SQUASHABLE); baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_FLY); }; if (levelTimeCrossed(TIME_HARD)){ baddieTypes.push(WorldObject.TYPE_TOP_BADDIE_BIG); baddieTypes.push(WorldObject.TYPE_TOP_NODULE); }; if (levelTimeCrossed((TIME_END - 3))){ if (Engine.instance.highScore <= score){ newHighScore = true; Engine.instance.highScore = score; }; }; if ((((((((levelTime > TIME_OBJECTS_APPEAR)) && ((((levelTime < (TIME_WYRM_APPEARS - 1))) || ((levelTime > (TIME_WYRM_CHARGE + 2))))))) && ((levelTime < (TIME_END - 10))))) && (!(loseControlOfPlayers)))){ timeTilNextBaddie = (timeTilNextBaddie - _arg1); timeSinceLastLeaf = (timeSinceLastLeaf + _arg1); if (timeTilNextBaddie < 0){ setTimeTilNextBaddie(); _local4 = (((levelTime < TIME_ENEMIES)) || ((timeSinceLastLeaf > TIME_BETWEEN_LEAVES))); _local5 = ((((((levelTime < TIME_ENEMIES_FROM_BEHIND)) || (_local4))) || ((seededRandom.random() < 0.9)))) ? Utils.LEFT : Utils.RIGHT; if (_local4){ _local7 = WorldObject.TYPE_LEAF; _local6 = (seededRandom.random() < 0.75); } else { do { _local7 = baddieTypes[Math.floor((seededRandom.random() * baddieTypes.length))]; } while ((((((((((_local7 == WorldObject.TYPE_TOP_NODULE)) || ((_local7 == WorldObject.TYPE_BOTTOM_EGG)))) || ((_local7 == WorldObject.TYPE_BOTTOM_BADDIE_BIG)))) || ((_local7 == WorldObject.TYPE_TOP_BADDIE_BIG)))) && ((timeSinceLastSmartBomb < 15)))); _local6 = (_local7 == WorldObject.TYPE_TOP_BADDIE_FLY); if ((((((((_local7 == WorldObject.TYPE_TOP_NODULE)) || ((_local7 == WorldObject.TYPE_BOTTOM_EGG)))) || ((_local7 == WorldObject.TYPE_BOTTOM_BADDIE_BIG)))) || ((_local7 == WorldObject.TYPE_TOP_BADDIE_BIG)))){ _local5 = Utils.LEFT; timeSinceLastSmartBomb = 0; }; }; if (_local7 == WorldObject.TYPE_TOP_BADDIE_BIG){ _local5 = Utils.LEFT; }; if ((((((((((levelTime >= TIME_ENEMIES_FROM_BEHIND)) && (((levelTime - TIME_ENEMIES_FROM_BEHIND) < 10)))) && (!(_local4)))) && (!((_local7 == WorldObject.TYPE_BOTTOM_EGG))))) && (!((_local7 == WorldObject.TYPE_TOP_NODULE))))){ _local5 = Utils.RIGHT; }; if ((((((levelTime >= TIME_SQUASHABLE_ENEMIES)) && (((levelTime - TIME_SQUASHABLE_ENEMIES) < 15)))) && (!(_local4)))){ _local5 = Utils.LEFT; _local6 = false; _local7 = WorldObject.TYPE_TOP_BADDIE_SQUASHABLE; }; if ((((((levelTime >= TIME_BIG_ENEMIES)) && (((levelTime - TIME_BIG_ENEMIES) < 15)))) && (!(_local4)))){ _local5 = Utils.LEFT; _local6 = false; _local7 = WorldObject.TYPE_TOP_BADDIE_BIG; }; _local8 = (((levelTime > (TIME_TOP_SCREEN_APPEARS + 1))) && (nextBaddieOnTopScreen)); nextBaddieOnTopScreen = !(nextBaddieOnTopScreen); spawnWorldObject(_local7, _local5, _local6, _local8, _local4); if (_local7 == WorldObject.TYPE_TOP_BADDIE_BIG){ spawnWorldObject((_local8) ? WorldObject.TYPE_BOTTOM_EGG : WorldObject.TYPE_TOP_NODULE, Utils.LEFT, false, !(_local8), false); timeTilNextBaddie = (timeTilNextBaddie + 2); }; }; }; } public function reset():void{ seededRandom.seed = LEVEL_SEED; Player.pool.deactivateAll(); player0 = Player.create(true, Engine.HALFWIDTH, GROUND_Y0); player1 = Player.create(false, Engine.HALFWIDTH, GROUND_Y1); resetTopScreenScroll(); } public function keyUp(_arg1:int):void{ switch (_arg1){ case KeyCodes.Q: case Keyboard.SPACE: if (buttonIsDown){ player1.jump(); }; buttonIsDown = false; break; }; } public function setTopScreenMaskX(_arg1:Number):void{ var _local2:uint = 6; while (_local2 < 13) { parallaxBackground.getLayerAt(_local2).mask.x = _arg1; _local2++; }; } public function addPoints(_arg1:int):void{ score = (score + _arg1); } public function stopTopScreenScroll():void{ if (!Engine.MUTE){ SoundManager.fadeOutSound("MUSIC_GAME"); }; topScreenStoppedScrolling = true; var _local1:uint = 6; while (_local1 < 13) { if (_local1 != 10){ parallaxBackground.setScrollSpeed(_local1, 0); }; _local1++; }; } public function startEndSequence():void{ wyrmBackground.reset(); wyrmBackground.visible = false; setTopScreenMaskX(Engine.WIDTH); parallaxBackground.y = 600; endSequence.reset(); endSequence.visible = true; } } }//package
Section 110
//World_BottomBg0Clouds (World_BottomBg0Clouds) package { import mx.core.*; public class World_BottomBg0Clouds extends SpriteAsset { } }//package
Section 111
//World_BottomBg1Mountains (World_BottomBg1Mountains) package { import mx.core.*; public class World_BottomBg1Mountains extends SpriteAsset { } }//package
Section 112
//World_BottomBg2Hills (World_BottomBg2Hills) package { import mx.core.*; public class World_BottomBg2Hills extends SpriteAsset { } }//package
Section 113
//World_BottomBg3Floor (World_BottomBg3Floor) package { import mx.core.*; public class World_BottomBg3Floor extends SpriteAsset { } }//package
Section 114
//World_BottomBg5Foreground (World_BottomBg5Foreground) package { import mx.core.*; public class World_BottomBg5Foreground extends SpriteAsset { } }//package
Section 115
//World_TopBg0AnusBack (World_TopBg0AnusBack) package { import mx.core.*; public class World_TopBg0AnusBack extends SpriteAsset { } }//package
Section 116
//World_TopBg0Back (World_TopBg0Back) package { import mx.core.*; public class World_TopBg0Back extends SpriteAsset { } }//package
Section 117
//World_TopBg1AnusFloor (World_TopBg1AnusFloor) package { import mx.core.*; public class World_TopBg1AnusFloor extends SpriteAsset { } }//package
Section 118
//World_TopBg1Floor (World_TopBg1Floor) package { import mx.core.*; public class World_TopBg1Floor extends SpriteAsset { } }//package
Section 119
//World_TopBg3AnusTop (World_TopBg3AnusTop) package { import mx.core.*; public class World_TopBg3AnusTop extends SpriteAsset { } }//package
Section 120
//World_TopBg3Top (World_TopBg3Top) package { import mx.core.*; public class World_TopBg3Top extends SpriteAsset { } }//package
Section 121
//World_TopScreenMaskSprite (World_TopScreenMaskSprite) package { import mx.core.*; public class World_TopScreenMaskSprite extends SpriteAsset { } }//package
Section 122
//WorldObject (WorldObject) package { import flash.events.*; import flash.display.*; import flesh.*; public class WorldObject extends PoolObject { public var timeBeforeCharge:Number; private var WorldObjectClip:Class; public var maxSpeed:Number; public var speed:Number; public var clip:MovieClip; public var state:int; public var top:Boolean; public var fadeDelay:Number; public var squashTime:Number; public var killFlash:int; public var rotateAngle:Number; public var type:int; public var direction:int; public static const TYPE_LEAF:uint = 1; public static const MAX:uint = 25; public static const STATE_FADING:uint = 2; public static const TYPE_BOTTOM_BADDIE_BIG:uint = 5; public static const TYPE_BOTTOM_BADDIE_SQUASHABLE:uint = 4; public static const TYPE_TOP_BADDIE_SPIKEY:uint = 7; public static const STATE_SQUASHED:uint = 1; public static const TYPE_TOP_NODULE_BREAK:uint = 13; public static const TYPE_TOP_BADDIE_FLY:uint = 8; public static const TYPE_BOTTOM_EGG_BREAK:uint = 12; public static const TYPE_TOP_BADDIE_SQUASHABLE_DIE:uint = 15; public static const TYPE_BOTTOM_BADDIE_SPIKEY:uint = 2; public static const TYPE_TOP_BADDIE_BIG:uint = 10; public static const TYPE_TOP_BADDIE_SQUASHABLE:uint = 9; public static const TYPE_BOTTOM_BADDIE_SQUASHABLE_DIE:uint = 14; public static const STATE_NORMAL:uint = 0; public static const TYPE_BOTTOM_EGG:uint = 6; public static const TYPE_TOP_NODULE:uint = 11; public static const TYPE_BOTTOM_BADDIE_FLY:uint = 3; public static var pool:ManagedPool; public function WorldObject(_arg1:uint){ WorldObjectClip = WorldObject_WorldObjectClip; super(_arg1); clip = new WorldObjectClip(); } override public function update(_arg1:Number):void{ var _local2:Number; var _local3:Player; if (direction == Utils.RIGHT){ if (timeBeforeCharge > 0){ timeBeforeCharge = (timeBeforeCharge - _arg1); _local2 = (30 - clip.x); clip.x = (clip.x + (_local2 * 0.05)); } else { speed = (speed + (300 * _arg1)); clip.x = (clip.x + (speed * _arg1)); }; } else { clip.x = (clip.x + (speed * _arg1)); }; if ((((clip.x < -100)) || ((clip.x > (Engine.WIDTH + 100))))){ deactivate(); return; }; switch (state){ case STATE_NORMAL: for each (_local3 in Player.pool.activePool) { if (clip.hitTestObject(_local3.clip)){ _local3.collidedWithObject(this); }; }; break; case STATE_SQUASHED: squashTime = (squashTime + _arg1); if (squashTime > 1){ deactivate(); }; break; case STATE_FADING: if (fadeDelay > 0){ fadeDelay = (fadeDelay - _arg1); } else { killFlash++; clip.visible = (((killFlash / 1) % 2) == 0); if (killFlash > 20){ deactivate(); }; }; break; }; if (type == TYPE_LEAF){ rotateAngle = (rotateAngle + (_arg1 * 5)); clip.rotation = (Math.sin(rotateAngle) * 10); }; } public function init(_arg1:Boolean, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{ this.top = _arg1; this.type = _arg2; this.direction = _arg5; rotateAngle = 0; clip.x = _arg3; clip.y = _arg4; clip.rotation = 0; clip.alpha = 1; clip.visible = true; timeBeforeCharge = 2; state = STATE_NORMAL; setFrame(_arg2); clip.scaleX = ((_arg5 == Utils.LEFT)) ? 1 : -1; clip.scaleY = 1; Utils.addChild(clip, (_arg1) ? World.instance.baddieSpriteTop : World.instance.baddieSpriteBottom); if (_arg5 == Utils.LEFT){ speed = Player.MIN_SPEED_X; } else { speed = (Player.MAX_SPEED_X * 5); }; switch (_arg2){ case TYPE_TOP_BADDIE_BIG: case TYPE_BOTTOM_BADDIE_BIG: speed = (speed * 0.5); break; case TYPE_LEAF: speed = (speed * 0.75); break; case TYPE_TOP_BADDIE_FLY: case TYPE_BOTTOM_BADDIE_FLY: speed = (speed * 1.5); break; case TYPE_TOP_BADDIE_SPIKEY: case TYPE_BOTTOM_BADDIE_SPIKEY: case TYPE_TOP_BADDIE_SQUASHABLE: case TYPE_BOTTOM_BADDIE_SQUASHABLE: speed = (speed * 1.25); break; case TYPE_TOP_NODULE: case TYPE_BOTTOM_EGG: speed = -60; break; }; maxSpeed = speed; if (_arg5 == Utils.RIGHT){ speed = 0; }; } public function kill(_arg1:Number=0):void{ state = STATE_FADING; this.fadeDelay = _arg1; killFlash = 0; if (type == TYPE_BOTTOM_EGG){ clip.gotoAndStop(TYPE_BOTTOM_EGG_BREAK); } else { if (type == TYPE_TOP_NODULE){ clip.gotoAndStop(TYPE_TOP_NODULE_BREAK); }; }; } public function squash():void{ state = STATE_SQUASHED; squashTime = 0; if (type == TYPE_TOP_BADDIE_SQUASHABLE){ clip.gotoAndStop(TYPE_TOP_BADDIE_SQUASHABLE_DIE); } else { if (type == TYPE_BOTTOM_BADDIE_SQUASHABLE){ clip.gotoAndStop(TYPE_BOTTOM_BADDIE_SQUASHABLE_DIE); }; }; } public function isSquashable():Boolean{ return ((((type == WorldObject.TYPE_BOTTOM_BADDIE_SQUASHABLE)) || ((type == WorldObject.TYPE_TOP_BADDIE_SQUASHABLE)))); } public function isBaddie():Boolean{ return ((((((type >= TYPE_BOTTOM_BADDIE_SPIKEY)) && ((type <= TYPE_TOP_BADDIE_BIG)))) && (!((type == TYPE_BOTTOM_EGG))))); } public function setFrame(_arg1:int):void{ clip.gotoAndStop(_arg1); clip.addEventListener(Event.ENTER_FRAME, clipFrameChanged); } override public function createInstance(_arg1:uint):PoolObject{ return (new WorldObject(_arg1)); } public function clipFrameChanged(_arg1:Event):void{ var _local2:MovieClip; if (type == TYPE_LEAF){ _local2 = clip["leaf"]; _local2.gotoAndStop((Math.floor((Math.random() * 2)) + 1)); }; clip.removeEventListener(Event.ENTER_FRAME, clipFrameChanged); } override public function deactivate():void{ active = false; pool.notifyDeactivated(this); Utils.removeChild(clip); } public static function killAllBaddies(_arg1:Boolean):void{ var _local2:WorldObject; for each (_local2 in pool.activePool) { if (_local2.top != _arg1){ } else { if (_local2.isBaddie()){ _local2.kill(); }; }; }; } public static function create(_arg1:Boolean, _arg2:int, _arg3:int, _arg4:int, _arg5:int):WorldObject{ var _local6:WorldObject = (pool.requestObject() as WorldObject); _local6.init(_arg1, _arg2, _arg3, _arg4, _arg5); return (_local6); } public static function initStart():void{ pool = new ManagedPool("ObstaclePool", new WorldObject(0), MAX); } } }//package
Section 123
//WorldObject_WorldObjectClip (WorldObject_WorldObjectClip) package { import mx.core.*; import flash.display.*; public class WorldObject_WorldObjectClip extends MovieClipAsset { public var buttonG5:DisplayObject; public var buttonReturn:DisplayObject; public var playerScoreText:DisplayObject; public var buttonPlay:DisplayObject; public var anim:DisplayObject; public var topLivesText:DisplayObject; public var credits:DisplayObject; public var buttonOktomusic:DisplayObject; public var buttonMark:DisplayObject; public var buttonKwok:DisplayObject; public var logo:DisplayObject; public var buttonArmor:DisplayObject; public var buttonKokoromi:DisplayObject; public var bottomLivesIcon:DisplayObject; public var buttonHighScoreSubmit:DisplayObject; public var buttonScoreSubmit:DisplayObject; public var buttonViewHighScores:DisplayObject; public var copyright:DisplayObject; public var topLivesIcon:DisplayObject; public var newHighScore:DisplayObject; public var buttonHoneyslug:DisplayObject; public var clip:DisplayObject; public var highScoreText:DisplayObject; public var leaf:DisplayObject; public var scoreText:DisplayObject; public var splash:DisplayObject; public var buttonRicky:DisplayObject; public var bottomLivesText:DisplayObject; public var creditsText:DisplayObject; public var instructionsText:DisplayObject; public var creditsButton:DisplayObject; public var buttonDick:DisplayObject; } }//package
Section 124
//WyrmBackground (WyrmBackground) package { import flash.display.*; import flesh.*; public dynamic class WyrmBackground extends MovieClip { public var dir:int; public var mouthOpenTime:Number; public static const RANGE:Number = (MAX_X - MIN_X); public static const SPEED:Number = 120; public static const MIN_X:Number = -80; public static const MAX_X:Number = (Engine.WIDTH + 80); public function bite(_arg1:Number=0.5):void{ mouthOpenTime = _arg1; } public function update(_arg1:Number):void{ var _local3:Number; if (mouthOpenTime > 0){ mouthOpenTime = (mouthOpenTime - _arg1); if (mouthOpenTime <= 0){ }; }; switch (dir){ case Utils.LEFT: x = (x - (SPEED * _arg1)); if (x < MIN_X){ dir = Utils.RIGHT; }; break; case Utils.RIGHT: x = (x + (SPEED * _arg1)); if (x > MAX_X){ dir = Utils.LEFT; }; break; }; var _local2:Number = Math.sin((((x - MIN_X) / RANGE) * Utils.RAD180)); if (dir == Utils.LEFT){ _local3 = (1 - (0.5 * _local2)); } else { _local3 = (0.25 + (0.75 * _local2)); }; scaleX = ((dir == Utils.LEFT)) ? _local3 : -(_local3); scaleY = _local3; } public function reset():void{ x = MAX_X; y = 284; mouthOpenTime = 0; dir = Utils.LEFT; } } }//package
Section 125
//WyrmForeground (WyrmForeground) package { import flash.display.*; public dynamic class WyrmForeground extends MovieClip { public var speed:Number; public var frameTime:Number; public var crossedRider:Boolean; public var mouthOpenTime:Number; public static const HERO_DISAPPEAR_FRAME:int = 17; public static const FLY_LAST_FRAME:int = 14; public static const MAX_SPEED:Number = 400; public static const EAT_FIRST_FRAME:int = 17; public static const START_X:Number = 118; public static const CHARGE_ACCEL:Number = 600; public function update(_arg1:Number):void{ var _local2:Number; if (World.instance.levelTime > World.TIME_WYRM_APPEARS){ frameTime = (frameTime + _arg1); if (frameTime > 0.08){ frameTime = 0; gotoNextFrame(); }; }; if (World.instance.levelTimeCrossed(World.TIME_WYRM_APPEARS)){ Engine.instance.playSoundPanned("WYRM_ROAR", x); }; if (World.instance.levelTimeCrossed(World.TIME_WYRM_CHARGE)){ Engine.instance.playSoundPanned("WYRM_ROAR", x); }; if ((((World.instance.levelTime > World.TIME_WYRM_CHARGE)) && (!(crossedRider)))){ speed = (speed + (CHARGE_ACCEL * _arg1)); if (speed > MAX_SPEED){ speed = MAX_SPEED; }; x = (x + (speed * _arg1)); if (((((x + 80) > World.instance.player1.clip.x)) && (!(World.instance.player1.lostRider)))){ crossedRider = true; mouthOpenTime = 0; }; } else { if (World.instance.levelTime > World.TIME_WYRM_APPEARS){ if (((((World.instance.levelTimeCrossed((World.TIME_WYRM_APPEARS + 1))) || (World.instance.levelTimeCrossed((World.TIME_WYRM_APPEARS + 2))))) || (World.instance.levelTimeCrossed((World.TIME_WYRM_APPEARS + 2.5))))){ bite(0.15); }; _local2 = (START_X - x); x = (x + (_local2 * 0.1)); }; }; } public function reset():void{ x = -150; y = 327; speed = 0; mouthOpenTime = 0; frameTime = 0; gotoAndStop(1); crossedRider = false; } public function gotoNextFrame():void{ var _local1:int = currentFrame; if ((((World.instance.levelTime < World.TIME_WYRM_CHARGE)) || (!(crossedRider)))){ _local1++; if (_local1 > FLY_LAST_FRAME){ _local1 = 1; }; } else { if (_local1 < EAT_FIRST_FRAME){ _local1 = EAT_FIRST_FRAME; } else { _local1++; }; if (_local1 == HERO_DISAPPEAR_FRAME){ World.instance.player1.loseRider(); } else { if (_local1 == 28){ Engine.instance.playSoundPanned("WYRM_BITE", x); }; }; }; if ((((_local1 == 1)) || ((_local1 == 12)))){ Engine.instance.playSoundPanned("WYRM_JAW_SNAP", x); }; gotoAndStop(_local1); } public function bite(_arg1:Number=0.5):void{ mouthOpenTime = _arg1; } } }//package
Section 126
//ZattikkaHiScores (ZattikkaHiScores) package { import flash.events.*; import flash.display.*; import flash.net.*; import com.hexagonstar.util.debug.*; import flash.external.*; public class ZattikkaHiScores extends MovieClip { private const EVENT_VIEW_HI_SCORE:String = "ViewHiScore="; private const MSG_SERVER_ERROR:String = "Could not contact server, please try again in a few minutes."; private const FB_ACTION:String = "/Facebook.action?"; private const HS_PLATFORM_WEB:int = 0; private const TEST_SERVER_URL:String = "http://api.staging.zattikka.com"; private const DEV_TEST_MODE_FB:int = 2; private const EVENT_SUBMIT_HI_SCORE:String = "SubmitHiScore="; private const DEV_TEST_MODE_G5:int = 1; private const EVENT_GET_HI_SCORES:String = "GetHiScores="; private const VERSION_NUM:String = "1.0.15 (AS3)"; private const EVENT_VIEW_HI_SCORES:String = "ViewHiScores="; private const TW_ACTION:String = "/Twitter.action?"; private const LIVE_SERVER_URL:String = "http://api.zattikka.com"; private const MSG_SUBMITTING_DETAILS:String = "Submitting hi-score details to the server, please wait."; private const GFTP_URL:String = "http://www.gamesfortheplanet.com"; private const MSG_PLEASE_ENTER_NICKNAME:String = "Please enter your nickname."; private const EVENT_PUBLISH_HI_SCORE_FEED_EXTERNAL:String = "PublishHiScoreFeedExternal="; private const EVENT_POST_TWEET:String = "PostTweet="; private const HS_PLATFORM_FACEBOOK:int = 1; private const HS_ACTION:String = "/HiScore.action?"; private const EVENT_PUBLISH_HI_SCORE_FEED:String = "PublishHiScoreFeed="; private const DEV_TEST_MODE_OFF:int = 0; public var btnGFTP:SimpleButton; private var gameKey:String; private var SERVER_URL:String;// = "http://api.zattikka.com" private var g5UserExists:Boolean; private var entryScreen:MovieClip;// = null private var devTestMode:int;// = 0 private var caller:Object; private var score:Number; private var g5User:Object; private var fbUser:Object; private var cxn:LocalConnection; private var lowIsBest:Boolean; private var gameId:Number; private var infoScreen:MovieClip;// = null private var levelId:Number; private var fbSessionKey:String; public var movEntryScreen:MovieClip; private var msg1:String; private var msg2:String; private var fbUserExists:Boolean; public var movInfoScreen:MovieClip; private var gameCode:String; public function ZattikkaHiScores(){ debug((("[ZattikkaHiScores VERSION " + VERSION_NUM) + "]")); this.visible = false; } private function grabG5User():void{ this.g5User = ExternalInterface.call("getG5User"); this.g5UserExists = ((g5User == null)) ? false : !(isNaN(this.g5User[0])); if (devTestMode == DEV_TEST_MODE_G5){ this.g5User = new Array("9", "RocketRonz"); this.g5UserExists = ((g5User == null)) ? false : !(isNaN(this.g5User[0])); }; debug(("[ZattikkaHiScores::grabG5User] " + (g5UserExists) ? ((("userId = " + this.g5User[0]) + ", userName = ") + this.g5User[1]) : "g5User is empty")); } private function grabFacebookUser():void{ this.fbUser = ExternalInterface.call("getFBUser"); this.fbUserExists = ((fbUser == null)) ? false : !(isNaN(this.fbUser[0])); this.fbSessionKey = ExternalInterface.call("getFBSessionKey"); if (devTestMode == DEV_TEST_MODE_FB){ this.fbUser = new Array("1383775213", "Dolphin Gimme-Five"); this.fbUserExists = ((fbUser == null)) ? false : !(isNaN(this.fbUser[0])); this.fbSessionKey = "ad4dff81c4d2467efc456072-1383775213"; }; debug(("[ZattikkaHiScores::grabFacebookUser] " + (fbUserExists) ? ((((("userId = " + this.fbUser[0]) + ", userName = ") + this.fbUser[1]) + ", sessionKey = ") + this.fbSessionKey) : "fbUser is empty")); } private function getRandomString(_arg1:int):String{ var _local2 = ""; var _local3:int; while (_local3 < _arg1) { _local2 = (_local2 + String.fromCharCode(getRandom(48, 122))); _local3++; }; return (_local2); } public function showInfoMessage(_arg1:String, _arg2:Boolean):void{ infoScreen["txtInfo"].text = _arg1; infoScreen["btnBack"].visible = _arg2; infoScreen["btnView"].visible = ((!(_arg2)) && (!(fbUserExists))); infoScreen.visible = true; entryScreen.visible = false; } private function showEntryScreen():void{ entryScreen["txtMsg1"].text = msg1; entryScreen["txtMsg2"].text = msg2; entryScreen["movNameAuto"].visible = ((g5UserExists) || (fbUserExists)); entryScreen["movNameManual"].visible = ((!(g5UserExists)) && (!(fbUserExists))); entryScreen["movNameAuto"]["txtName"].text = (g5UserExists) ? this.g5User[1] : (fbUserExists) ? this.fbUser[1] : ""; entryScreen["movNameManual"]["txtName"].text = ""; entryScreen.visible = true; infoScreen.visible = false; } private function replaceAll(_arg1:String, _arg2:String, _arg3:String):String{ var _local4 = ""; var _local5:int; while (_local5 < _arg1.length) { if (_arg1.charAt(_local5) == _arg2){ _local4 = (_local4 + _arg3); } else { _local4 = (_local4 + _arg1.charAt(_local5)); }; _local5++; }; return (_local4); } private function xor(_arg1:String, _arg2:String, _arg3:Boolean):String{ var _local7:int; var _local4 = ""; var _local5:int; var _local6:int; while (_local5 < _arg1.length) { if (_local6 >= _arg2.length){ _local6 = 0; }; _local7 = ((_arg1.charCodeAt(_local5) ^ _arg2.charCodeAt(_local6)) + 1); if (_arg3){ debug(((("charCode = " + _local7) + " = ") + String.fromCharCode(_local7))); }; _local4 = (_local4 + String.fromCharCode(_local7)); _local5++; _local6++; }; return (_local4); } private function submitScore():void{ showInfoMessage(MSG_SUBMITTING_DETAILS, false); infoScreen.visible = true; entryScreen.visible = false; var _local1:int = (fbUserExists) ? HS_PLATFORM_FACEBOOK : HS_PLATFORM_WEB; var _local2 = ""; var _local3 = ""; if (fbUserExists){ _local3 = this.fbUser[0]; _local2 = this.fbUser[1]; } else { if (g5UserExists){ _local3 = this.g5User[0]; _local2 = this.g5User[1]; } else { _local2 = entryScreen["movNameManual"]["txtName"].text; }; }; var _local4:String = String(new Date().getTime()); var _local5:String = _local4.split("").reverse().join(""); var _local6:String = xor(_local5, this.gameKey, false); var _local7 = ""; _local7 = (_local7 + (this.gameId + ",")); _local7 = (_local7 + (this.levelId + ",")); _local7 = (_local7 + (_local1 + ",")); _local7 = (_local7 + (this.score + ",")); _local7 = (_local7 + (_local3 + ",")); _local7 = (_local7 + (replaceAll(_local2, ",", "") + ",")); _local7 = (_local7 + ","); _local7 = (_local7 + lowIsBest); var _local8:String = xor(_local7, _local6, false); debug(((("key [" + _local6.length) + "] = ") + _local6)); debug(((("plain [" + _local7.length) + "] = ") + _local7)); debug(((("cipher [" + _local8.length) + "] = ") + _local8)); _local8 = ((getRandomString(5) + _local8) + getRandomString(5)); var _local9:URLVariables = new URLVariables(); _local9.gameId = this.gameId; _local9.platformId = _local1; _local9.time = _local4; _local9.data = _local8; _local9.returnMessage = true; hitServer(HS_ACTION, EVENT_SUBMIT_HI_SCORE, _local9); } private function debug(_arg1:String):void{ trace(_arg1); Debug.trace(_arg1); } public function viewHiScores(_arg1:int, _arg2:Boolean=false):void{ debug(((("[ZattikkaHiScores::viewHiScores] gameId = " + _arg1) + ", testMode = ") + _arg2)); initServerURL(_arg2); var _local3:String = ((SERVER_URL + HS_ACTION) + EVENT_VIEW_HI_SCORES); _local3 = (_local3 + ("&gameId=" + _arg1)); navigateToURL(new URLRequest(_local3), "_blank"); } private function facebookFeedExternal():void{ navigateToURL(new URLRequest(((SERVER_URL + FB_ACTION) + EVENT_PUBLISH_HI_SCORE_FEED_EXTERNAL)), "_blank"); try { cxn = new LocalConnection(); cxn.allowDomain("*"); cxn.client = this; cxn.connect("_cxnZattikkaHS"); } catch(err:Error) { }; } public function setDetails(_arg1:int, _arg2:int, _arg3:String, _arg4:String, _arg5:Boolean, _arg6:Number, _arg7:String, _arg8:String, _arg9:Boolean=false):void{ var gameId = _arg1; var levelId = _arg2; var gameCode = _arg3; var gameKey = _arg4; var lowIsBest = _arg5; var score = _arg6; var msg1 = _arg7; var msg2 = _arg8; var testMode = _arg9; debug(((((((((((("[ZattikkaHiScores::setDetails] gameId = " + gameId) + ", levelId = ") + levelId) + ", gameCode = ") + gameCode) + ", lowIsBest = ") + lowIsBest) + ", score = ") + score) + ", testMode = ") + testMode)); initServerURL(testMode); entryScreen = this["movEntryScreen"]; infoScreen = this["movInfoScreen"]; entryScreen.visible = false; infoScreen.visible = false; this.gameId = gameId; this.levelId = levelId; this.gameCode = gameCode; this.gameKey = gameKey; this.lowIsBest = lowIsBest; this.score = score; this.msg1 = msg1; this.msg2 = msg2; try { grabG5User(); if (!g5UserExists){ grabFacebookUser(); }; } catch(err:Error) { }; this["btnGFTP"].addEventListener(MouseEvent.MOUSE_DOWN, onButtonPress); entryScreen["btnSubmit"].addEventListener(MouseEvent.MOUSE_DOWN, onButtonPress); entryScreen["btnTwitter"].addEventListener(MouseEvent.MOUSE_DOWN, onButtonPress); entryScreen["btnFacebook"].addEventListener(MouseEvent.MOUSE_DOWN, onButtonPress); infoScreen["btnView"].addEventListener(MouseEvent.MOUSE_DOWN, onButtonPress); infoScreen["btnBack"].addEventListener(MouseEvent.MOUSE_DOWN, onButtonPress); if (fbUserExists){ btn_submitScore(); } else { showEntryScreen(); }; this.visible = true; } private function facebookFeed():void{ var _local1:URLVariables = new URLVariables(); _local1.gameId = this.gameId; _local1.levelId = this.levelId; _local1.score = this.score; _local1.sessionKey = this.fbSessionKey; _local1.returnMessage = true; hitServer(FB_ACTION, EVENT_PUBLISH_HI_SCORE_FEED, _local1); } public function setFBUser(_arg1:String, _arg2:String):void{ debug(((("[ZattikkaHiScores::setFBUser] fbUserId = " + _arg1) + ", fbSessionKey = ") + _arg2)); this.fbUser = new Array(_arg1, ""); this.fbUserExists = true; this.fbSessionKey = _arg2; cxn.close(); facebookFeed(); } public function loadHandler(_arg1:String, _arg2:Boolean, _arg3:Event):void{ var response:URLLoader; var xml:XML; var resCode:int; var stripesEvent = _arg1; var success = _arg2; var event = _arg3; debug(((((("[ZattikkaHiScores::loadHandler] stripesEvent = " + stripesEvent) + ", success = ") + success) + ", event = ") + event.toString())); if (!success){ if (stripesEvent == EVENT_GET_HI_SCORES){ caller.getHiScores_Error(); } else { showInfoMessage(MSG_SERVER_ERROR, true); }; } else { response = URLLoader(event.target); xml = new XML(response.data); resCode = xml.@code; switch (stripesEvent){ case EVENT_SUBMIT_HI_SCORE: showInfoMessage(xml.@msg, (resCode == -1)); if (((fbUserExists) && ((((resCode == 1)) || ((resCode == 2)))))){ try { ExternalInterface.call("refreshFBHiScores", this.score, this.levelId); ExternalInterface.call("streamPublish_FBConnect", this.msg1, this.levelId); } catch(err:Error) { }; }; break; case EVENT_PUBLISH_HI_SCORE_FEED: submitScore(); break; case EVENT_GET_HI_SCORES: caller.getHiScores_Callback(xml); break; }; }; } private function getRandom(_arg1:Number, _arg2:Number):Number{ return ((Math.floor((Math.random() * ((_arg2 - _arg1) + 1))) + _arg1)); } private function hitServer(_arg1:String, _arg2:String, _arg3:URLVariables):void{ var stripesAction = _arg1; var stripesEvent = _arg2; var vars = _arg3; debug(((("[ZattikkaHiScores::hitServer] url = " + SERVER_URL) + stripesAction) + stripesEvent)); var request:URLRequest = new URLRequest(((SERVER_URL + stripesAction) + stripesEvent)); var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; request.data = vars; request.method = URLRequestMethod.POST; request.requestHeaders = new Array(new URLRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); loader.addEventListener(Event.COMPLETE, function (_arg1:Event):void{ loadHandler(stripesEvent, true, _arg1); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:Event):void{ loadHandler(stripesEvent, false, _arg1); }); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:Event):void{ loadHandler(stripesEvent, false, _arg1); }); loader.load(request); } private function twitterTweet():void{ var _local1:String = ((SERVER_URL + TW_ACTION) + EVENT_POST_TWEET); _local1 = (_local1 + ("&gameId=" + this.gameId)); _local1 = (_local1 + ("&levelId=" + this.levelId)); _local1 = (_local1 + ("&score=" + this.score)); navigateToURL(new URLRequest(_local1), "_blank"); submitScore(); } public function onButtonPress(_arg1:MouseEvent):void{ switch (_arg1.target.name){ case "btnGFTP": navigateToURL(new URLRequest(GFTP_URL), "_blank"); break; case "btnSubmit": btn_submitScore(); break; case "btnTwitter": if (((((!(this.g5UserExists)) && (!(this.fbUserExists)))) && ((entryScreen["movNameManual"]["txtName"].text.length == 0)))){ showInfoMessage(MSG_PLEASE_ENTER_NICKNAME, true); } else { twitterTweet(); }; break; case "btnFacebook": if (this.fbUserExists){ facebookFeed(); } else { facebookFeedExternal(); }; break; case "btnView": viewScore(); break; case "btnBack": setDetails(this.gameId, this.levelId, this.gameCode, this.gameKey, this.lowIsBest, this.score, this.msg1, this.msg2); break; }; } public function viewScore():void{ var _local1:String = ((SERVER_URL + HS_ACTION) + EVENT_VIEW_HI_SCORE); _local1 = (_local1 + ("&gameId=" + this.gameId)); _local1 = (_local1 + ("&levelId=" + this.levelId)); _local1 = (_local1 + ("&platformId=" + HS_PLATFORM_WEB)); _local1 = (_local1 + ("&gameCode=" + this.gameCode)); if (this.g5UserExists){ _local1 = (_local1 + ("&userId=" + this.g5User[0])); } else { _local1 = (_local1 + ("&name=" + entryScreen["movNameManual"]["txtName"].text)); }; navigateToURL(new URLRequest(_local1), "_blank"); } private function btn_submitScore():void{ if (((((!(this.g5UserExists)) && (!(this.fbUserExists)))) && ((entryScreen["movNameManual"]["txtName"].text.length == 0)))){ showInfoMessage(MSG_PLEASE_ENTER_NICKNAME, true); } else { submitScore(); }; } public function getHiScores(_arg1:Object, _arg2:int, _arg3:int, _arg4:int, _arg5:Boolean, _arg6:Boolean=false):void{ debug(((((((((("[ZattikkaHiScores::getHiScores] gameId = " + _arg2) + ", levelId = ") + _arg3) + ", numRows = ") + _arg4) + ", lowIsBest = ") + _arg5) + ", testMode = ") + _arg6)); initServerURL(_arg6); this.caller = _arg1; var _local7:URLVariables = new URLVariables(); _local7.gameId = _arg2; _local7.levelId = _arg3; _local7.platformId = 0; _local7.viewPlatformId = 0; _local7.userId = ""; _local7.numRows = _arg4; _local7.lowIsBest = _arg5; hitServer(HS_ACTION, EVENT_GET_HI_SCORES, _local7); } public function initServerURL(_arg1:Boolean):void{ var params:Object; var fvSvrUrl:Object; var testMode = _arg1; if (testMode){ SERVER_URL = TEST_SERVER_URL; } else { try { params = LoaderInfo(this.root.loaderInfo).parameters; fvSvrUrl = params["svrUrl"]; if (((!((fvSvrUrl == null))) && ((fvSvrUrl.length > 0)))){ SERVER_URL = String(fvSvrUrl); }; } catch(err:Error) { }; }; debug(("[ZattikkaHiScores::initServerURL] SERVER_URL = " + SERVER_URL)); } } }//package

Library Items

Symbol 1 BitmapUsed by:2
Symbol 2 GraphicUses:1Used by:15
Symbol 3 FontUsed by:4 5 6 7 8 9 10 230 231 235 236 241 242 251 254
Symbol 4 TextUses:3Used by:11
Symbol 5 TextUses:3Used by:11
Symbol 6 TextUses:3Used by:11
Symbol 7 TextUses:3Used by:11
Symbol 8 TextUses:3Used by:11
Symbol 9 TextUses:3Used by:11
Symbol 10 TextUses:3Used by:11
Symbol 11 MovieClipUses:4 5 6 7 8 9 10Used by:15
Symbol 12 GraphicUsed by:13
Symbol 13 MovieClipUses:12Used by:14
Symbol 14 MovieClipUses:13Used by:15
Symbol 15 MovieClip {PreloadedApp_PreloaderLogoClip} [preloaderLogoArmor]Uses:2 11 14
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClip {App_RoundedMask} [roundedMask]Uses:16
Symbol 18 GraphicUsed by:19
Symbol 19 MovieClipUses:18Used by:20
Symbol 20 MovieClip {World_TopBg0AnusBack} [top_bg_0_anus_back]Uses:19
Symbol 21 GraphicUsed by:22
Symbol 22 MovieClipUses:21Used by:23
Symbol 23 MovieClip {World_TopBg1Floor} [top_bg_1_floor]Uses:22
Symbol 24 GraphicUsed by:25
Symbol 25 MovieClipUses:24Used by:26
Symbol 26 MovieClip {World_TopBg3AnusTop} [top_bg_3_anus_top]Uses:25
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClipUses:27Used by:29
Symbol 29 MovieClip {World_TopBg3Top} [top_bg_3_top]Uses:28
Symbol 30 GraphicUsed by:31
Symbol 31 MovieClip {World_BottomBg1Mountains} [bottom_bg_1_mountains]Uses:30
Symbol 32 GraphicUsed by:33
Symbol 33 MovieClip {World_TopScreenMaskSprite} [topScreenMask]Uses:32
Symbol 34 GraphicUsed by:107 127 147
Symbol 35 GraphicUsed by:107 127 147
Symbol 36 GraphicUsed by:107 127 147
Symbol 37 GraphicUsed by:107
Symbol 38 GraphicUsed by:107 127 147
Symbol 39 GraphicUsed by:107 127 147
Symbol 40 GraphicUsed by:107 127 147
Symbol 41 GraphicUsed by:107 127 147
Symbol 42 GraphicUsed by:107 127 147
Symbol 43 GraphicUsed by:107 127 147
Symbol 44 GraphicUsed by:107
Symbol 45 GraphicUsed by:107 127 147
Symbol 46 GraphicUsed by:107 127 147
Symbol 47 GraphicUsed by:107 127 147
Symbol 48 GraphicUsed by:107 127 147
Symbol 49 GraphicUsed by:107
Symbol 50 GraphicUsed by:107 127 147
Symbol 51 GraphicUsed by:107 127 147
Symbol 52 GraphicUsed by:107
Symbol 53 GraphicUsed by:107 127 147
Symbol 54 GraphicUsed by:107 127 147
Symbol 55 GraphicUsed by:107
Symbol 56 GraphicUsed by:107 127 147
Symbol 57 GraphicUsed by:107 127 147
Symbol 58 GraphicUsed by:107
Symbol 59 GraphicUsed by:107 127 147
Symbol 60 GraphicUsed by:107 127 147
Symbol 61 GraphicUsed by:107
Symbol 62 GraphicUsed by:107 127 147
Symbol 63 GraphicUsed by:107 127 147
Symbol 64 GraphicUsed by:107
Symbol 65 GraphicUsed by:107 127 147
Symbol 66 GraphicUsed by:107 127 147
Symbol 67 GraphicUsed by:107
Symbol 68 GraphicUsed by:107 127 147
Symbol 69 GraphicUsed by:107 127 147
Symbol 70 GraphicUsed by:107
Symbol 71 GraphicUsed by:107 127 147
Symbol 72 GraphicUsed by:107
Symbol 73 GraphicUsed by:107
Symbol 74 GraphicUsed by:107
Symbol 75 GraphicUsed by:107
Symbol 76 GraphicUsed by:107
Symbol 77 GraphicUsed by:107
Symbol 78 GraphicUsed by:107
Symbol 79 GraphicUsed by:107
Symbol 80 GraphicUsed by:107
Symbol 81 GraphicUsed by:107
Symbol 82 GraphicUsed by:107
Symbol 83 GraphicUsed by:107
Symbol 84 GraphicUsed by:107
Symbol 85 GraphicUsed by:107
Symbol 86 GraphicUsed by:107
Symbol 87 GraphicUsed by:107
Symbol 88 GraphicUsed by:107
Symbol 89 GraphicUsed by:107
Symbol 90 GraphicUsed by:107
Symbol 91 GraphicUsed by:107
Symbol 92 GraphicUsed by:107
Symbol 93 GraphicUsed by:107
Symbol 94 GraphicUsed by:107
Symbol 95 GraphicUsed by:107
Symbol 96 GraphicUsed by:107
Symbol 97 GraphicUsed by:107
Symbol 98 GraphicUsed by:107
Symbol 99 GraphicUsed by:107
Symbol 100 GraphicUsed by:107
Symbol 101 GraphicUsed by:107
Symbol 102 GraphicUsed by:107
Symbol 103 GraphicUsed by:107
Symbol 104 GraphicUsed by:107
Symbol 105 GraphicUsed by:107
Symbol 106 GraphicUsed by:107
Symbol 107 MovieClip {WyrmForeground} [bottom_foreground_wyrm]Uses:34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
Symbol 108 GraphicUsed by:109
Symbol 109 MovieClip {World_BottomBg0Clouds} [bottom_bg_0_clouds]Uses:108
Symbol 110 GraphicUsed by:111
Symbol 111 MovieClipUses:110Used by:112
Symbol 112 MovieClip {World_TopBg1AnusFloor} [top_bg_1_anus_floor]Uses:111
Symbol 113 GraphicUsed by:127
Symbol 114 GraphicUsed by:127
Symbol 115 GraphicUsed by:127
Symbol 116 GraphicUsed by:127
Symbol 117 GraphicUsed by:127
Symbol 118 GraphicUsed by:127
Symbol 119 GraphicUsed by:127
Symbol 120 GraphicUsed by:127
Symbol 121 GraphicUsed by:127
Symbol 122 GraphicUsed by:127
Symbol 123 GraphicUsed by:127
Symbol 124 GraphicUsed by:127
Symbol 125 GraphicUsed by:127
Symbol 126 GraphicUsed by:127
Symbol 127 MovieClip {EndSequence} [endSequence]Uses:34 113 114 38 41 45 35 39 42 46 36 40 43 47 48 50 51 53 54 56 57 59 60 62 63 65 66 68 69 115 71 116 117 118 119 120 121 122 123 124 125 126
Symbol 128 GraphicUsed by:129
Symbol 129 MovieClipUses:128Used by:130
Symbol 130 MovieClip {World_TopBg0Back} [top_bg_0_back]Uses:129
Symbol 131 GraphicUsed by:132
Symbol 132 MovieClip {World_BottomBg5Foreground} [bottom_bg_5_foreground]Uses:131
Symbol 133 GraphicUsed by:147
Symbol 134 GraphicUsed by:147
Symbol 135 GraphicUsed by:147
Symbol 136 GraphicUsed by:147
Symbol 137 GraphicUsed by:147
Symbol 138 GraphicUsed by:147
Symbol 139 GraphicUsed by:147
Symbol 140 GraphicUsed by:147
Symbol 141 GraphicUsed by:147
Symbol 142 GraphicUsed by:147
Symbol 143 GraphicUsed by:147
Symbol 144 GraphicUsed by:147
Symbol 145 GraphicUsed by:147
Symbol 146 GraphicUsed by:147
Symbol 147 MovieClipUses:34 35 36 133 38 39 40 41 42 43 134 45 46 47 48 135 50 51 136 53 54 137 56 57 138 59 60 139 62 63 140 65 66 141 68 69 142 71 143 144 145 146Used by:148
Symbol 148 MovieClip {WyrmBackground} [bottom_bg_wyrm]Uses:147
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClipUses:149Used by:151
Symbol 151 MovieClip {World_BottomBg2Hills} [bottom_bg_2_hills]Uses:150
Symbol 152 GraphicUsed by:153
Symbol 153 MovieClip {World_BottomBg3Floor} [bottom_bg_3_floor]Uses:152
Symbol 154 GraphicUsed by:171
Symbol 155 GraphicUsed by:170
Symbol 156 GraphicUsed by:170
Symbol 157 GraphicUsed by:170
Symbol 158 SoundUsed by:170
Symbol 159 SoundUsed by:170
Symbol 160 GraphicUsed by:170
Symbol 161 GraphicUsed by:162
Symbol 162 MovieClipUses:161Used by:170
Symbol 163 SoundUsed by:170
Symbol 164 SoundUsed by:170
Symbol 165 SoundUsed by:170
Symbol 166 GraphicUsed by:167
Symbol 167 ButtonUses:166Used by:170
Symbol 168 SoundUsed by:170
Symbol 169 SoundUsed by:170
Symbol 170 MovieClipUses:155 156 157 158 159 160 162 163 164 165 167 168 169Used by:171
Symbol 171 MovieClip {screens.ArmorIntroScreen} [armorIntroScreen]Uses:154 170
Symbol 172 GraphicUsed by:173
Symbol 173 MovieClip {Engine_DustSprite} [dust]Uses:172
Symbol 174 GraphicUsed by:175
Symbol 175 MovieClipUses:174Used by:176
Symbol 176 MovieClip {Engine_SmokeTopSprite} [smokeTop]Uses:175
Symbol 177 GraphicUsed by:178
Symbol 178 MovieClipUses:177Used by:179
Symbol 179 MovieClip {Engine_SmokeBottomSprite} [smokeBottom]Uses:178
Symbol 180 GraphicUsed by:183
Symbol 181 GraphicUsed by:182
Symbol 182 MovieClipUses:181Used by:183
Symbol 183 MovieClipUses:180 182Used by:221
Symbol 184 GraphicUsed by:205
Symbol 185 FontUsed by:186 187 199 217
Symbol 186 EditableTextUses:185Used by:205
Symbol 187 EditableTextUses:185Used by:205
Symbol 188 GraphicUsed by:189 190
Symbol 189 MovieClipUses:188Used by:190
Symbol 190 ButtonUses:189 188Used by:205
Symbol 191 GraphicUsed by:192 193
Symbol 192 MovieClipUses:191Used by:193
Symbol 193 ButtonUses:192 191Used by:205
Symbol 194 GraphicUsed by:195 196
Symbol 195 MovieClipUses:194Used by:196
Symbol 196 ButtonUses:195 194Used by:205
Symbol 197 GraphicUsed by:205
Symbol 198 GraphicUsed by:202
Symbol 199 EditableTextUses:185Used by:202 204
Symbol 200 FontUsed by:201 203
Symbol 201 TextUses:200Used by:202
Symbol 202 MovieClipUses:198 199 201Used by:205
Symbol 203 TextUses:200Used by:204
Symbol 204 MovieClipUses:199 203Used by:205
Symbol 205 MovieClipUses:184 186 187 190 193 196 197 202 204Used by:221
Symbol 206 GraphicUsed by:207 208
Symbol 207 MovieClipUses:206Used by:208
Symbol 208 ButtonUses:207 206Used by:218
Symbol 209 GraphicUsed by:213 214
Symbol 210 FontUsed by:211 212
Symbol 211 TextUses:210Used by:213 214
Symbol 212 TextUses:210Used by:213 214
Symbol 213 MovieClipUses:209 211 212Used by:214
Symbol 214 ButtonUses:213 209 211 212Used by:218
Symbol 215 GraphicUsed by:216
Symbol 216 MovieClipUses:215Used by:218
Symbol 217 EditableTextUses:185Used by:218
Symbol 218 MovieClipUses:208 214 216 217Used by:221
Symbol 219 GraphicUsed by:220
Symbol 220 ButtonUses:219Used by:221
Symbol 221 MovieClip {ZattikkaHiScores} [ZattikkaHiScores]Uses:183 205 218 220
Symbol 222 GraphicUsed by:223
Symbol 223 MovieClip {Engine_FartSprite} [fart]Uses:222
Symbol 224 GraphicUsed by:225
Symbol 225 MovieClip {Engine_SplatBlackSprite} [splatBlack]Uses:224
Symbol 226 GraphicUsed by:234 272
Symbol 227 GraphicUsed by:228
Symbol 228 MovieClipUses:227Used by:234
Symbol 229 FontUsed by:230 231 232 235 236 241 242 243 246 248 254 259 270
Symbol 230 EditableTextUses:3 229Used by:234
Symbol 231 EditableTextUses:3 229Used by:234
Symbol 232 TextUses:229Used by:233
Symbol 233 MovieClipUses:232Used by:234
Symbol 234 MovieClip {screens.EndScreen} [screenEnd]Uses:226 228 230 231 233
Symbol 235 EditableTextUses:3 229Used by:245
Symbol 236 EditableTextUses:3 229Used by:245
Symbol 237 GraphicUsed by:238
Symbol 238 MovieClipUses:237Used by:245
Symbol 239 GraphicUsed by:240
Symbol 240 MovieClipUses:239Used by:245
Symbol 241 EditableTextUses:3 229Used by:245
Symbol 242 EditableTextUses:3 229Used by:245
Symbol 243 TextUses:229Used by:244
Symbol 244 MovieClipUses:243Used by:245
Symbol 245 MovieClip {screens.GameScreen} [screenGame]Uses:235 236 238 240 241 242 244
Symbol 246 TextUses:229Used by:247
Symbol 247 MovieClipUses:246Used by:250
Symbol 248 TextUses:229Used by:249
Symbol 249 MovieClipUses:248Used by:250
Symbol 250 MovieClipUses:247 249Used by:269
Symbol 251 EditableTextUses:3Used by:252
Symbol 252 MovieClipUses:251Used by:269
Symbol 253 GraphicUsed by:261
Symbol 254 EditableTextUses:3 229Used by:261
Symbol 255 GraphicUsed by:256
Symbol 256 MovieClipUses:255Used by:261
Symbol 257 GraphicUsed by:258
Symbol 258 MovieClipUses:257Used by:261
Symbol 259 TextUses:229Used by:260
Symbol 260 MovieClipUses:259Used by:261
Symbol 261 MovieClipUses:253 254 256 258 260Used by:269
Symbol 262 GraphicUsed by:266 271
Symbol 263 GraphicUsed by:264
Symbol 264 MovieClipUses:263Used by:266
Symbol 265 GraphicUsed by:266
Symbol 266 MovieClipUses:262 264 265Used by:269
Symbol 267 GraphicUsed by:268
Symbol 268 MovieClipUses:267Used by:269
Symbol 269 MovieClip {screens.TitleScreen} [screenTitle]Uses:250 252 261 266 268
Symbol 270 TextUses:229Used by:271
Symbol 271 MovieClipUses:262 270Used by:272
Symbol 272 MovieClip {screens.G5HighScoreScreen} [screenG5HighScore]Uses:226 271
Symbol 273 GraphicUsed by:274
Symbol 274 MovieClip {Engine_SplatWhiteSprite} [splatWhite]Uses:273
Symbol 275 GraphicUsed by:276
Symbol 276 MovieClip {Engine_SplatGreenSprite} [splatGreen]Uses:275
Symbol 277 GraphicUsed by:292
Symbol 278 GraphicUsed by:279
Symbol 279 MovieClipUses:278Used by:292
Symbol 280 GraphicUsed by:281
Symbol 281 MovieClipUses:280Used by:292
Symbol 282 GraphicUsed by:283
Symbol 283 MovieClipUses:282Used by:292
Symbol 284 GraphicUsed by:285
Symbol 285 MovieClipUses:284Used by:292
Symbol 286 GraphicUsed by:287
Symbol 287 MovieClipUses:286Used by:292
Symbol 288 GraphicUsed by:289
Symbol 289 MovieClipUses:288Used by:292
Symbol 290 GraphicUsed by:291
Symbol 291 MovieClipUses:290Used by:292
Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits]Uses:277 279 281 283 285 287 289 291
Symbol 293 GraphicUsed by:314
Symbol 294 GraphicUsed by:295
Symbol 295 MovieClipUses:294Used by:308
Symbol 296 GraphicUsed by:297
Symbol 297 MovieClipUses:296Used by:308
Symbol 298 GraphicUsed by:299
Symbol 299 MovieClipUses:298Used by:308
Symbol 300 GraphicUsed by:301
Symbol 301 MovieClipUses:300Used by:308
Symbol 302 GraphicUsed by:303
Symbol 303 MovieClipUses:302Used by:308
Symbol 304 GraphicUsed by:305
Symbol 305 MovieClipUses:304Used by:308
Symbol 306 GraphicUsed by:307
Symbol 307 MovieClipUses:306Used by:308
Symbol 308 MovieClipUses:295 297 299 301 303 305 307Used by:314
Symbol 309 GraphicUsed by:313
Symbol 310 GraphicUsed by:311
Symbol 311 MovieClipUses:310Used by:313
Symbol 312 GraphicUsed by:313
Symbol 313 MovieClipUses:309 311 312Used by:314
Symbol 314 MovieClip {screens.G5IntroScreen} [screenG5Splash]Uses:293 308 313
Symbol 315 GraphicUsed by:316 415
Symbol 316 MovieClip {Engine_LeafSprite} [leaf]Uses:315
Symbol 317 GraphicUsed by:325
Symbol 318 GraphicUsed by:325
Symbol 319 GraphicUsed by:325
Symbol 320 GraphicUsed by:325
Symbol 321 GraphicUsed by:325
Symbol 322 GraphicUsed by:325
Symbol 323 GraphicUsed by:325
Symbol 324 GraphicUsed by:325
Symbol 325 MovieClipUses:317 318 319 320 321 322 323 324Used by:335
Symbol 326 GraphicUsed by:332
Symbol 327 GraphicUsed by:332
Symbol 328 GraphicUsed by:332
Symbol 329 GraphicUsed by:332
Symbol 330 GraphicUsed by:332
Symbol 331 GraphicUsed by:332
Symbol 332 MovieClipUses:326 327 328 329 330 331Used by:335
Symbol 333 GraphicUsed by:334
Symbol 334 MovieClipUses:333Used by:335
Symbol 335 MovieClip {Player_BottomSteedRiderClip} [bottom_steedRider]Uses:325 332 334
Symbol 336 GraphicUsed by:340
Symbol 337 GraphicUsed by:340
Symbol 338 GraphicUsed by:340
Symbol 339 GraphicUsed by:340
Symbol 340 MovieClipUses:336 337 338 339Used by:357
Symbol 341 GraphicUsed by:344
Symbol 342 GraphicUsed by:344
Symbol 343 GraphicUsed by:344
Symbol 344 MovieClipUses:341 342 343Used by:357
Symbol 345 GraphicUsed by:346
Symbol 346 MovieClipUses:345Used by:357
Symbol 347 GraphicUsed by:356
Symbol 348 GraphicUsed by:356
Symbol 349 GraphicUsed by:356
Symbol 350 GraphicUsed by:356
Symbol 351 GraphicUsed by:356
Symbol 352 GraphicUsed by:356
Symbol 353 GraphicUsed by:356
Symbol 354 GraphicUsed by:356
Symbol 355 GraphicUsed by:356
Symbol 356 MovieClipUses:347 348 349 350 351 352 353 354 355Used by:357
Symbol 357 MovieClip {Player_BottomSteedClip} [bottom_steed]Uses:340 344 346 356
Symbol 358 GraphicUsed by:370
Symbol 359 GraphicUsed by:370
Symbol 360 GraphicUsed by:370
Symbol 361 GraphicUsed by:370
Symbol 362 GraphicUsed by:370
Symbol 363 GraphicUsed by:370
Symbol 364 GraphicUsed by:370
Symbol 365 GraphicUsed by:370
Symbol 366 GraphicUsed by:370
Symbol 367 GraphicUsed by:370
Symbol 368 GraphicUsed by:370
Symbol 369 GraphicUsed by:370
Symbol 370 MovieClipUses:358 359 360 361 362 363 364 365 366 367 368 369Used by:412
Symbol 371 GraphicUsed by:379
Symbol 372 GraphicUsed by:379
Symbol 373 GraphicUsed by:379
Symbol 374 GraphicUsed by:379
Symbol 375 GraphicUsed by:379
Symbol 376 GraphicUsed by:379
Symbol 377 GraphicUsed by:379
Symbol 378 GraphicUsed by:379
Symbol 379 MovieClipUses:371 372 373 374 375 376 377 378Used by:412
Symbol 380 GraphicUsed by:381
Symbol 381 MovieClipUses:380Used by:412
Symbol 382 GraphicUsed by:392
Symbol 383 GraphicUsed by:392
Symbol 384 GraphicUsed by:392
Symbol 385 GraphicUsed by:392
Symbol 386 GraphicUsed by:392
Symbol 387 GraphicUsed by:392
Symbol 388 GraphicUsed by:392
Symbol 389 GraphicUsed by:392
Symbol 390 GraphicUsed by:392
Symbol 391 GraphicUsed by:392
Symbol 392 MovieClipUses:382 383 384 385 386 387 388 389 390 391Used by:412
Symbol 393 GraphicUsed by:411
Symbol 394 GraphicUsed by:411
Symbol 395 GraphicUsed by:411
Symbol 396 GraphicUsed by:411
Symbol 397 GraphicUsed by:411
Symbol 398 GraphicUsed by:411
Symbol 399 GraphicUsed by:411
Symbol 400 GraphicUsed by:411
Symbol 401 GraphicUsed by:411
Symbol 402 GraphicUsed by:411
Symbol 403 GraphicUsed by:411
Symbol 404 GraphicUsed by:411
Symbol 405 GraphicUsed by:411
Symbol 406 GraphicUsed by:411
Symbol 407 GraphicUsed by:411
Symbol 408 GraphicUsed by:411
Symbol 409 GraphicUsed by:411
Symbol 410 GraphicUsed by:411
Symbol 411 MovieClipUses:393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410Used by:412
Symbol 412 MovieClip {Player_TopHeroClip} [top_hero]Uses:370 379 381 392 411
Symbol 413 GraphicUsed by:415
Symbol 414 GraphicUsed by:415
Symbol 415 MovieClipUses:413 315 414Used by:531
Symbol 416 GraphicUsed by:421
Symbol 417 GraphicUsed by:421
Symbol 418 GraphicUsed by:421
Symbol 419 GraphicUsed by:421
Symbol 420 GraphicUsed by:421
Symbol 421 MovieClipUses:416 417 418 419 420Used by:531
Symbol 422 GraphicUsed by:437
Symbol 423 GraphicUsed by:437
Symbol 424 GraphicUsed by:437
Symbol 425 GraphicUsed by:437
Symbol 426 GraphicUsed by:437
Symbol 427 GraphicUsed by:437
Symbol 428 GraphicUsed by:437
Symbol 429 GraphicUsed by:437
Symbol 430 GraphicUsed by:437
Symbol 431 GraphicUsed by:437
Symbol 432 GraphicUsed by:437
Symbol 433 GraphicUsed by:437
Symbol 434 GraphicUsed by:437
Symbol 435 GraphicUsed by:437
Symbol 436 GraphicUsed by:437
Symbol 437 MovieClipUses:422 423 424 425 426 427 428 429 430 431 432 433 434 435 436Used by:531
Symbol 438 GraphicUsed by:441
Symbol 439 GraphicUsed by:441
Symbol 440 GraphicUsed by:441
Symbol 441 MovieClipUses:438 439 440Used by:531
Symbol 442 GraphicUsed by:446
Symbol 443 GraphicUsed by:446
Symbol 444 GraphicUsed by:446
Symbol 445 GraphicUsed by:446
Symbol 446 MovieClipUses:442 443 444 445Used by:531
Symbol 447 GraphicUsed by:448 518
Symbol 448 MovieClipUses:447Used by:531
Symbol 449 GraphicUsed by:450
Symbol 450 MovieClipUses:449Used by:451
Symbol 451 MovieClipUses:450Used by:531
Symbol 452 GraphicUsed by:457
Symbol 453 GraphicUsed by:457
Symbol 454 GraphicUsed by:457
Symbol 455 GraphicUsed by:457
Symbol 456 GraphicUsed by:457
Symbol 457 MovieClipUses:452 453 454 455 456Used by:531
Symbol 458 GraphicUsed by:462
Symbol 459 GraphicUsed by:462
Symbol 460 GraphicUsed by:462
Symbol 461 GraphicUsed by:462
Symbol 462 MovieClipUses:458 459 460 461Used by:531
Symbol 463 GraphicUsed by:472
Symbol 464 GraphicUsed by:472
Symbol 465 GraphicUsed by:472
Symbol 466 GraphicUsed by:472
Symbol 467 GraphicUsed by:472
Symbol 468 GraphicUsed by:472
Symbol 469 GraphicUsed by:472
Symbol 470 GraphicUsed by:472
Symbol 471 GraphicUsed by:472
Symbol 472 MovieClipUses:463 464 465 466 467 468 469 470 471Used by:531
Symbol 473 GraphicUsed by:509
Symbol 474 GraphicUsed by:509
Symbol 475 GraphicUsed by:509
Symbol 476 GraphicUsed by:509
Symbol 477 GraphicUsed by:509
Symbol 478 GraphicUsed by:509
Symbol 479 GraphicUsed by:509
Symbol 480 GraphicUsed by:509
Symbol 481 GraphicUsed by:509
Symbol 482 GraphicUsed by:509
Symbol 483 GraphicUsed by:509
Symbol 484 GraphicUsed by:509
Symbol 485 GraphicUsed by:509
Symbol 486 GraphicUsed by:509
Symbol 487 GraphicUsed by:509
Symbol 488 GraphicUsed by:509
Symbol 489 GraphicUsed by:509
Symbol 490 GraphicUsed by:509
Symbol 491 GraphicUsed by:509
Symbol 492 GraphicUsed by:509
Symbol 493 GraphicUsed by:509
Symbol 494 GraphicUsed by:509
Symbol 495 GraphicUsed by:509
Symbol 496 GraphicUsed by:509
Symbol 497 GraphicUsed by:509
Symbol 498 GraphicUsed by:509
Symbol 499 GraphicUsed by:509
Symbol 500 GraphicUsed by:509
Symbol 501 GraphicUsed by:509
Symbol 502 GraphicUsed by:509
Symbol 503 GraphicUsed by:509
Symbol 504 GraphicUsed by:509
Symbol 505 GraphicUsed by:509
Symbol 506 GraphicUsed by:509
Symbol 507 GraphicUsed by:509
Symbol 508 GraphicUsed by:509
Symbol 509 MovieClipUses:473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508Used by:531
Symbol 510 GraphicUsed by:511
Symbol 511 MovieClipUses:510Used by:531
Symbol 512 GraphicUsed by:518
Symbol 513 GraphicUsed by:518
Symbol 514 GraphicUsed by:518
Symbol 515 GraphicUsed by:518
Symbol 516 GraphicUsed by:518
Symbol 517 GraphicUsed by:518
Symbol 518 MovieClipUses:447 512 513 514 515 516 517Used by:531
Symbol 519 GraphicUsed by:524
Symbol 520 GraphicUsed by:524
Symbol 521 GraphicUsed by:524
Symbol 522 GraphicUsed by:524
Symbol 523 GraphicUsed by:524
Symbol 524 MovieClipUses:519 520 521 522 523Used by:531
Symbol 525 GraphicUsed by:527
Symbol 526 GraphicUsed by:527
Symbol 527 MovieClipUses:525 526Used by:531
Symbol 528 GraphicUsed by:530
Symbol 529 GraphicUsed by:530
Symbol 530 MovieClipUses:528 529Used by:531
Symbol 531 MovieClip {WorldObject_WorldObjectClip} [worldObject]Uses:415 421 437 441 446 448 451 457 462 472 509 511 518 524 527 530
Symbol 532 Sound {SoundData_Sound4} [sound4]
Symbol 533 Sound {SoundData_Sound16} [sound16]
Symbol 534 Sound {SoundData_Sound8} [sound8]
Symbol 535 Sound {SoundData_Sound12} [sound12]
Symbol 536 Sound {SoundData_Sound0} [sound0]
Symbol 537 Sound {SoundData_Sound11} [sound11]
Symbol 538 Sound {SoundData_Sound5} [sound5]
Symbol 539 Sound {SoundData_Sound9} [sound9]
Symbol 540 Sound {SoundData_Sound15} [sound15]
Symbol 541 Sound {SoundData_Sound14} [sound14]
Symbol 542 Sound {SoundData_Sound1} [sound1]
Symbol 543 Sound {SoundData_Sound6} [sound6]
Symbol 544 Sound {SoundData_Sound13} [sound13]
Symbol 545 Sound {SoundData_Sound7} [sound7]
Symbol 546 Sound {SoundData_Sound2} [sound2]
Symbol 547 Sound {SoundData_Sound3} [sound3]
Symbol 548 Sound {SoundData_Sound10} [sound10]

Instance Names

"splash"Symbol 171 MovieClip {screens.ArmorIntroScreen} [armorIntroScreen] Frame 1Symbol 170 MovieClip
"txtName"Symbol 202 MovieClip Frame 1Symbol 199 EditableText
"txtName"Symbol 204 MovieClip Frame 1Symbol 199 EditableText
"txtMsg1"Symbol 205 MovieClip Frame 1Symbol 186 EditableText
"txtMsg2"Symbol 205 MovieClip Frame 1Symbol 187 EditableText
"btnSubmit"Symbol 205 MovieClip Frame 1Symbol 190 Button
"btnTwitter"Symbol 205 MovieClip Frame 1Symbol 193 Button
"btnFacebook"Symbol 205 MovieClip Frame 1Symbol 196 Button
"txtMsg1"Symbol 205 MovieClip Frame 1Symbol 186 EditableText
"txtMsg2"Symbol 205 MovieClip Frame 1Symbol 187 EditableText
"movNameManual"Symbol 205 MovieClip Frame 1Symbol 202 MovieClip
"movNameAuto"Symbol 205 MovieClip Frame 1Symbol 204 MovieClip
"btnBack"Symbol 218 MovieClip Frame 1Symbol 208 Button
"btnView"Symbol 218 MovieClip Frame 1Symbol 214 Button
"txtInfo"Symbol 218 MovieClip Frame 1Symbol 217 EditableText
"movEntryScreen"Symbol 221 MovieClip {ZattikkaHiScores} [ZattikkaHiScores] Frame 1Symbol 205 MovieClip
"movInfoScreen"Symbol 221 MovieClip {ZattikkaHiScores} [ZattikkaHiScores] Frame 1Symbol 218 MovieClip
"btnGFTP"Symbol 221 MovieClip {ZattikkaHiScores} [ZattikkaHiScores] Frame 1Symbol 220 Button
"playerScoreText"Symbol 234 MovieClip {screens.EndScreen} [screenEnd] Frame 1Symbol 230 EditableText
"highScoreText"Symbol 234 MovieClip {screens.EndScreen} [screenEnd] Frame 1Symbol 231 EditableText
"buttonScoreSubmit"Symbol 234 MovieClip {screens.EndScreen} [screenEnd] Frame 1Symbol 233 MovieClip
"scoreText"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 235 EditableText
"instructionsText"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 236 EditableText
"topLivesIcon"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 238 MovieClip
"bottomLivesIcon"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 240 MovieClip
"topLivesText"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 241 EditableText
"bottomLivesText"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 242 EditableText
"newHighScore"Symbol 245 MovieClip {screens.GameScreen} [screenGame] Frame 1Symbol 244 MovieClip
"creditsButton"Symbol 250 MovieClip Frame 1Symbol 249 MovieClip
"creditsText"Symbol 252 MovieClip Frame 1Symbol 251 EditableText
"highScoreText"Symbol 261 MovieClip Frame 1Symbol 254 EditableText
"buttonHighScoreSubmit"Symbol 261 MovieClip Frame 1Symbol 258 MovieClip
"buttonViewHighScores"Symbol 261 MovieClip Frame 1Symbol 260 MovieClip
"copyright"Symbol 269 MovieClip {screens.TitleScreen} [screenTitle] Frame 1Symbol 250 MovieClip
"credits"Symbol 269 MovieClip {screens.TitleScreen} [screenTitle] Frame 1Symbol 252 MovieClip
"logo"Symbol 269 MovieClip {screens.TitleScreen} [screenTitle] Frame 1Symbol 261 MovieClip
"buttonArmor"Symbol 269 MovieClip {screens.TitleScreen} [screenTitle] Frame 1Symbol 266 MovieClip
"buttonG5"Symbol 269 MovieClip {screens.TitleScreen} [screenTitle] Frame 1Symbol 268 MovieClip
"buttonReturn"Symbol 272 MovieClip {screens.G5HighScoreScreen} [screenG5HighScore] Frame 1Symbol 271 MovieClip
"buttonDick"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 279 MovieClip
"buttonRicky"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 281 MovieClip
"buttonKwok"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 283 MovieClip
"buttonOktomusic"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 285 MovieClip
"buttonMark"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 287 MovieClip
"buttonKokoromi"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 289 MovieClip
"buttonHoneyslug"Symbol 292 MovieClip {screens.CreditsScreen} [screenCredits] Frame 1Symbol 291 MovieClip
"splash"Symbol 314 MovieClip {screens.G5IntroScreen} [screenG5Splash] Frame 1Symbol 308 MovieClip
"buttonPlay"Symbol 314 MovieClip {screens.G5IntroScreen} [screenG5Splash] Frame 1Symbol 313 MovieClip
"anim"Symbol 335 MovieClip {Player_BottomSteedRiderClip} [bottom_steedRider] Frame 1Symbol 325 MovieClip
"anim"Symbol 335 MovieClip {Player_BottomSteedRiderClip} [bottom_steedRider] Frame 2Symbol 332 MovieClip
"anim"Symbol 335 MovieClip {Player_BottomSteedRiderClip} [bottom_steedRider] Frame 3Symbol 334 MovieClip
"anim"Symbol 357 MovieClip {Player_BottomSteedClip} [bottom_steed] Frame 1Symbol 340 MovieClip
"anim"Symbol 357 MovieClip {Player_BottomSteedClip} [bottom_steed] Frame 2Symbol 344 MovieClip
"anim"Symbol 357 MovieClip {Player_BottomSteedClip} [bottom_steed] Frame 3Symbol 346 MovieClip
"anim"Symbol 357 MovieClip {Player_BottomSteedClip} [bottom_steed] Frame 4Symbol 356 MovieClip
"anim"Symbol 412 MovieClip {Player_TopHeroClip} [top_hero] Frame 1Symbol 370 MovieClip
"anim"Symbol 412 MovieClip {Player_TopHeroClip} [top_hero] Frame 2Symbol 379 MovieClip
"anim"Symbol 412 MovieClip {Player_TopHeroClip} [top_hero] Frame 3Symbol 381 MovieClip
"anim"Symbol 412 MovieClip {Player_TopHeroClip} [top_hero] Frame 4Symbol 392 MovieClip
"anim"Symbol 412 MovieClip {Player_TopHeroClip} [top_hero] Frame 5Symbol 411 MovieClip
"leaf"Symbol 531 MovieClip {WorldObject_WorldObjectClip} [worldObject] Frame 1Symbol 415 MovieClip
"clip"Symbol 531 MovieClip {WorldObject_WorldObjectClip} [worldObject] Frame 6Symbol 448 MovieClip
"clip"Symbol 531 MovieClip {WorldObject_WorldObjectClip} [worldObject] Frame 11Symbol 511 MovieClip
"clip"Symbol 531 MovieClip {WorldObject_WorldObjectClip} [worldObject] Frame 12Symbol 518 MovieClip
"clip"Symbol 531 MovieClip {WorldObject_WorldObjectClip} [worldObject] Frame 13Symbol 524 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1458 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 15 as "preloaderLogoArmor"
ExportAssets (56)Timeline Frame 3Symbol 17 as "roundedMask"
ExportAssets (56)Timeline Frame 3Symbol 20 as "top_bg_0_anus_back"
ExportAssets (56)Timeline Frame 3Symbol 23 as "top_bg_1_floor"
ExportAssets (56)Timeline Frame 3Symbol 26 as "top_bg_3_anus_top"
ExportAssets (56)Timeline Frame 3Symbol 29 as "top_bg_3_top"
ExportAssets (56)Timeline Frame 3Symbol 31 as "bottom_bg_1_mountains"
ExportAssets (56)Timeline Frame 3Symbol 33 as "topScreenMask"
ExportAssets (56)Timeline Frame 3Symbol 107 as "bottom_foreground_wyrm"
ExportAssets (56)Timeline Frame 3Symbol 109 as "bottom_bg_0_clouds"
ExportAssets (56)Timeline Frame 3Symbol 112 as "top_bg_1_anus_floor"
ExportAssets (56)Timeline Frame 3Symbol 127 as "endSequence"
ExportAssets (56)Timeline Frame 3Symbol 130 as "top_bg_0_back"
ExportAssets (56)Timeline Frame 3Symbol 132 as "bottom_bg_5_foreground"
ExportAssets (56)Timeline Frame 3Symbol 148 as "bottom_bg_wyrm"
ExportAssets (56)Timeline Frame 3Symbol 151 as "bottom_bg_2_hills"
ExportAssets (56)Timeline Frame 3Symbol 153 as "bottom_bg_3_floor"
ExportAssets (56)Timeline Frame 3Symbol 171 as "armorIntroScreen"
ExportAssets (56)Timeline Frame 3Symbol 173 as "dust"
ExportAssets (56)Timeline Frame 3Symbol 176 as "smokeTop"
ExportAssets (56)Timeline Frame 3Symbol 179 as "smokeBottom"
ExportAssets (56)Timeline Frame 3Symbol 221 as "ZattikkaHiScores"
ExportAssets (56)Timeline Frame 3Symbol 223 as "fart"
ExportAssets (56)Timeline Frame 3Symbol 225 as "splatBlack"
ExportAssets (56)Timeline Frame 3Symbol 234 as "screenEnd"
ExportAssets (56)Timeline Frame 3Symbol 245 as "screenGame"
ExportAssets (56)Timeline Frame 3Symbol 269 as "screenTitle"
ExportAssets (56)Timeline Frame 3Symbol 272 as "screenG5HighScore"
ExportAssets (56)Timeline Frame 3Symbol 274 as "splatWhite"
ExportAssets (56)Timeline Frame 3Symbol 276 as "splatGreen"
ExportAssets (56)Timeline Frame 3Symbol 292 as "screenCredits"
ExportAssets (56)Timeline Frame 3Symbol 314 as "screenG5Splash"
ExportAssets (56)Timeline Frame 3Symbol 316 as "leaf"
ExportAssets (56)Timeline Frame 3Symbol 335 as "bottom_steedRider"
ExportAssets (56)Timeline Frame 3Symbol 357 as "bottom_steed"
ExportAssets (56)Timeline Frame 3Symbol 412 as "top_hero"
ExportAssets (56)Timeline Frame 3Symbol 531 as "worldObject"
ExportAssets (56)Timeline Frame 3Symbol 532 as "sound4"
ExportAssets (56)Timeline Frame 3Symbol 533 as "sound16"
ExportAssets (56)Timeline Frame 3Symbol 534 as "sound8"
ExportAssets (56)Timeline Frame 3Symbol 535 as "sound12"
ExportAssets (56)Timeline Frame 3Symbol 536 as "sound0"
ExportAssets (56)Timeline Frame 3Symbol 537 as "sound11"
ExportAssets (56)Timeline Frame 3Symbol 538 as "sound5"
ExportAssets (56)Timeline Frame 3Symbol 539 as "sound9"
ExportAssets (56)Timeline Frame 3Symbol 540 as "sound15"
ExportAssets (56)Timeline Frame 3Symbol 541 as "sound14"
ExportAssets (56)Timeline Frame 3Symbol 542 as "sound1"
ExportAssets (56)Timeline Frame 3Symbol 543 as "sound6"
ExportAssets (56)Timeline Frame 3Symbol 544 as "sound13"
ExportAssets (56)Timeline Frame 3Symbol 545 as "sound7"
ExportAssets (56)Timeline Frame 3Symbol 546 as "sound2"
ExportAssets (56)Timeline Frame 3Symbol 547 as "sound3"
ExportAssets (56)Timeline Frame 3Symbol 548 as "sound10"
SerialNumber (41)Timeline Frame 1

Labels

"PreloadedApp"Frame 1
"two"Frame 2
"three"Frame 3
"fly loop"Symbol 107 MovieClip {WyrmForeground} [bottom_foreground_wyrm] Frame 1
"eat seq"Symbol 107 MovieClip {WyrmForeground} [bottom_foreground_wyrm] Frame 15
"this project is at 25 fps, animation is timed to that so don't need to double up."Symbol 411 MovieClip Frame 1
"when he stops walking play the full length of this movie clip [frame 115] before cutting to the exterior anus shot"Symbol 411 MovieClip Frame 1
"walk"Symbol 441 MovieClip Frame 1
"walk"Symbol 472 MovieClip Frame 1
"break"Symbol 518 MovieClip Frame 2
"twang"Symbol 524 MovieClip Frame 2




https://swfchan.com/53/264413/info.shtml
Created: 17/5 -2026 15:13:53 Last modified: 17/5 -2026 15:13:53 Server time: 20/05 -2026 05:31:51