Section 1
//AbstractCollection (org.cove.ape.AbstractCollection)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractCollection {
private var _sprite:Sprite;
private var _isParented:Boolean;
private var _particles:Array;
private var _constraints:Array;
public function AbstractCollection(){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractCollection"){
throw (new ArgumentError("AbstractCollection can't be instantiated directly"));
};
_isParented = false;
_particles = new Array();
_constraints = new Array();
}
public function getAll():Array{
return (particles.concat(constraints));
}
function checkCollisionsVsCollection(_arg1:AbstractCollection):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:AbstractParticle;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:AbstractParticle;
var _local10:SpringConstraint;
var _local11:SpringConstraint;
var _local12:int;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local5 = _particles[_local3];
if (!_local5.collidable){
} else {
_local6 = _arg1.particles.length;
_local7 = 0;
while (_local7 < _local6) {
_local9 = _arg1.particles[_local7];
if (_local9.collidable){
CollisionDetector.test(_local5, _local9);
};
_local7++;
};
_local8 = _arg1.constraints.length;
_local7 = 0;
while (_local7 < _local8) {
_local10 = _arg1.constraints[_local7];
if (((_local10.collidable) && (!(_local10.isConnectedTo(_local5))))){
_local10.scp.updatePosition();
CollisionDetector.test(_local5, _local10.scp);
};
_local7++;
};
};
_local3++;
};
_local4 = _constraints.length;
_local3 = 0;
while (_local3 < _local4) {
_local11 = _constraints[_local3];
if (!_local11.collidable){
} else {
_local6 = _arg1.particles.length;
_local12 = 0;
while (_local12 < _local6) {
_local9 = _arg1.particles[_local12];
if (((_local9.collidable) && (!(_local11.isConnectedTo(_local9))))){
_local11.scp.updatePosition();
CollisionDetector.test(_local9, _local11.scp);
};
_local12++;
};
};
_local3++;
};
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
function checkInternalCollisions():void{
var _local1:int;
var _local2:int;
var _local3:AbstractParticle;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:AbstractParticle;
var _local8:SpringConstraint;
_local1 = _particles.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _particles[_local2];
if (!_local3.collidable){
} else {
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local7 = _particles[_local4];
if (_local7.collidable){
CollisionDetector.test(_local3, _local7);
};
_local4++;
};
_local5 = _constraints.length;
_local6 = 0;
while (_local6 < _local5) {
_local8 = _constraints[_local6];
if (((_local8.collidable) && (!(_local8.isConnectedTo(_local3))))){
_local8.scp.updatePosition();
CollisionDetector.test(_local3, _local8.scp);
};
_local6++;
};
};
_local2++;
};
}
public function addParticle(_arg1:AbstractParticle):void{
particles.push(_arg1);
if (isParented){
_arg1.init();
};
}
public function removeConstraint(_arg1:AbstractConstraint):void{
var _local2:int;
_local2 = constraints.indexOf(_arg1);
if (_local2 == -1){
return;
};
constraints.splice(_local2, 1);
_arg1.cleanup();
}
function get isParented():Boolean{
return (_isParented);
}
public function init():void{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].init();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].init();
_local1++;
};
}
function satisfyConstraints():void{
var _local1:int;
var _local2:int;
var _local3:AbstractConstraint;
_local1 = _constraints.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _constraints[_local2];
_local3.resolve();
_local2++;
};
}
public function paint():void{
var _local1:AbstractParticle;
var _local2:int;
var _local3:int;
var _local4:SpringConstraint;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local1 = _particles[_local3];
if (((!(_local1.fixed)) || (_local1.alwaysRepaint))){
_local1.paint();
};
_local3++;
};
_local2 = _constraints.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _constraints[_local3];
if (((!(_local4.fixed)) || (_local4.alwaysRepaint))){
_local4.paint();
};
_local3++;
};
}
public function addConstraint(_arg1:AbstractConstraint):void{
constraints.push(_arg1);
if (isParented){
_arg1.init();
};
}
function set isParented(_arg1:Boolean):void{
_isParented = _arg1;
}
public function removeParticle(_arg1:AbstractParticle):void{
var _local2:int;
_local2 = particles.indexOf(_arg1);
if (_local2 == -1){
return;
};
particles.splice(_local2, 1);
_arg1.cleanup();
}
public function cleanup():void{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].cleanup();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].cleanup();
_local1++;
};
}
public function get particles():Array{
return (_particles);
}
function integrate(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:AbstractParticle;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _particles[_local3];
_local4.update(_arg1);
_local3++;
};
}
public function get constraints():Array{
return (_constraints);
}
}
}//package org.cove.ape
Section 2
//AbstractConstraint (org.cove.ape.AbstractConstraint)
package org.cove.ape {
import flash.utils.*;
public class AbstractConstraint extends AbstractItem {
private var _stiffness:Number;
public function AbstractConstraint(_arg1:Number){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractConstraint"){
throw (new ArgumentError("AbstractConstraint can't be instantiated directly"));
};
this.stiffness = _arg1;
setStyle();
}
public function get stiffness():Number{
return (_stiffness);
}
public function set stiffness(_arg1:Number):void{
_stiffness = _arg1;
}
function resolve():void{
}
}
}//package org.cove.ape
Section 3
//AbstractItem (org.cove.ape.AbstractItem)
package org.cove.ape {
import flash.display.*;
public class AbstractItem {
var lineAlpha:Number;
var lineColor:uint;
var displayObjectOffset:Vector;
var lineThickness:Number;
var displayObject:DisplayObject;
var fillAlpha:Number;
private var _sprite:Sprite;
var fillColor:uint;
private var _visible:Boolean;
private var _alwaysRepaint:Boolean;
var displayObjectRotation:Number;
public function AbstractItem(){
_visible = true;
_alwaysRepaint = false;
}
public function setLine(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1):void{
lineThickness = _arg1;
lineColor = _arg2;
lineAlpha = _arg3;
}
public function set visible(_arg1:Boolean):void{
_visible = _arg1;
sprite.visible = _arg1;
}
public function setFill(_arg1:uint=0xFFFFFF, _arg2:Number=1):void{
fillColor = _arg1;
fillAlpha = _arg2;
}
public function init():void{
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
public function paint():void{
}
public function cleanup():void{
var _local1:int;
sprite.graphics.clear();
_local1 = 0;
while (_local1 < sprite.numChildren) {
sprite.removeChildAt(_local1);
_local1++;
};
}
public function setStyle(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1, _arg4:uint=0xFFFFFF, _arg5:Number=1):void{
setLine(_arg1, _arg2, _arg3);
setFill(_arg4, _arg5);
}
public function get visible():Boolean{
return (_visible);
}
final public function set alwaysRepaint(_arg1:Boolean):void{
_alwaysRepaint = _arg1;
}
final public function get alwaysRepaint():Boolean{
return (_alwaysRepaint);
}
}
}//package org.cove.ape
Section 4
//AbstractParticle (org.cove.ape.AbstractParticle)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractParticle extends AbstractItem {
private var _collidable:Boolean;
private var _multisample:int;
private var collision:Collision;
var prev:Vector;
private var _kfr:Number;
var curr:Vector;
private var _invMass:Number;
var interval:Interval;
private var _mass:Number;
private var temp:Vector;
public var instanceName:String;
private var _friction:Number;
private var forces:Vector;
var samp:Vector;
private var _center:Vector;
private var _fixed:Boolean;
public function AbstractParticle(_arg1:Number, _arg2:Number, _arg3:Boolean, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:String=""){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractParticle"){
throw (new ArgumentError("AbstractParticle can't be instantiated directly"));
};
interval = new Interval(0, 0);
curr = new Vector(_arg1, _arg2);
prev = new Vector(_arg1, _arg2);
samp = new Vector();
temp = new Vector();
fixed = _arg3;
forces = new Vector();
collision = new Collision(new Vector(), new Vector());
collidable = true;
this.mass = _arg4;
this.elasticity = _arg5;
this.friction = _arg6;
setStyle();
_center = new Vector();
_multisample = 0;
instanceName = _arg7;
}
public function update(_arg1:Number):void{
var _local2:Vector;
if (fixed){
return;
};
addForce(APEngine.force);
addMasslessForce(APEngine.masslessForce);
temp.copy(curr);
_local2 = velocity.plus(forces.multEquals(_arg1));
curr.plusEquals(_local2.multEquals(APEngine.damping));
prev.copy(temp);
forces.setTo(0, 0);
}
public function set friction(_arg1:Number):void{
if ((((_arg1 < 0)) || ((_arg1 > 1)))){
throw (new ArgumentError("Legal friction must be >= 0 and <=1"));
};
_friction = _arg1;
}
public function get px():Number{
return (curr.x);
}
public function get py():Number{
return (curr.y);
}
public function set py(_arg1:Number):void{
curr.y = _arg1;
prev.y = _arg1;
}
function getComponents(_arg1:Vector):Collision{
var _local2:Vector;
var _local3:Number;
_local2 = velocity;
_local3 = _arg1.dot(_local2);
collision.vn = _arg1.mult(_local3);
collision.vt = _local2.minus(collision.vn);
return (collision);
}
public function set mass(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("mass may not be set <= 0"));
};
_mass = _arg1;
_invMass = (1 / _mass);
}
public function get fixed():Boolean{
return (_fixed);
}
public function set px(_arg1:Number):void{
curr.x = _arg1;
prev.x = _arg1;
}
function initDisplay():void{
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
}
function get invMass():Number{
return ((fixed) ? 0 : _invMass);
}
public function get position():Vector{
return (new Vector(curr.x, curr.y));
}
public function get multisample():int{
return (_multisample);
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
}
public function set fixed(_arg1:Boolean):void{
_fixed = _arg1;
}
function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
curr.plusEquals(_arg1);
velocity = _arg2;
}
public function addMasslessForce(_arg1:Vector):void{
forces.plusEquals(_arg1);
}
public function set velocity(_arg1:Vector):void{
prev = curr.minus(_arg1);
}
public function set multisample(_arg1:int):void{
_multisample = _arg1;
}
public function get elasticity():Number{
return (_kfr);
}
public function set position(_arg1:Vector):void{
curr.copy(_arg1);
prev.copy(_arg1);
}
public function get center():Vector{
_center.setTo(px, py);
return (_center);
}
public function set collidable(_arg1:Boolean):void{
_collidable = _arg1;
}
public function get velocity():Vector{
return (curr.minus(prev));
}
public function get collidable():Boolean{
return (_collidable);
}
public function addForce(_arg1:Vector):void{
forces.plusEquals(_arg1.mult(invMass));
}
public function set elasticity(_arg1:Number):void{
_kfr = _arg1;
}
public function get friction():Number{
return (_friction);
}
public function get mass():Number{
return (_mass);
}
}
}//package org.cove.ape
Section 5
//APEngine (org.cove.ape.APEngine)
package org.cove.ape {
import flash.display.*;
public final class APEngine {
private static var _container:DisplayObjectContainer;
private static var _damping:Number;
private static var _constraintCollisionCycles:int;
private static var groups:Array;
static var masslessForce:Vector;
private static var _constraintCycles:int;
static var force:Vector;
private static var timeStep:Number;
private static var numGroups:int;
public static function get container():DisplayObjectContainer{
return (_container);
}
public static function get constraintCollisionCycles():int{
return (_constraintCollisionCycles);
}
public static function set damping(_arg1:Number):void{
_damping = _arg1;
}
public static function step():void{
var _local1:int;
var _local2:int;
CollisionDetector.collisionPairs = new Array();
integrate();
_local1 = 0;
while (_local1 < _constraintCycles) {
satisfyConstraints();
_local1++;
};
_local2 = 0;
while (_local2 < _constraintCollisionCycles) {
satisfyConstraints();
checkCollisions();
_local2++;
};
}
public static function init(_arg1:Number=0.25):void{
timeStep = (_arg1 * _arg1);
numGroups = 0;
groups = new Array();
force = new Vector(0, 0);
masslessForce = new Vector(0, 0);
damping = 1;
_constraintCycles = 0;
_constraintCollisionCycles = 1;
}
public static function get constraintCycles():int{
return (_constraintCycles);
}
public static function set constraintCollisionCycles(_arg1:int):void{
_constraintCollisionCycles = _arg1;
}
public static function set constraintCycles(_arg1:int):void{
_constraintCycles = _arg1;
}
public static function addForce(_arg1:Vector):void{
force.plusEquals(_arg1);
}
public static function get damping():Number{
return (_damping);
}
public static function set container(_arg1:DisplayObjectContainer):void{
_container = _arg1;
}
public static function addGroup(_arg1:Group):void{
groups.push(_arg1);
_arg1.isParented = true;
numGroups++;
_arg1.init();
}
public static function removeGroup(_arg1:Group):void{
var _local2:int;
_local2 = groups.indexOf(_arg1);
if (_local2 == -1){
return;
};
groups.splice(_local2, 1);
_arg1.isParented = false;
numGroups--;
_arg1.cleanup();
}
public static function paint():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.paint();
_local1++;
};
}
private static function checkCollisions():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.checkCollisions();
_local1++;
};
}
private static function integrate():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.integrate(timeStep);
_local1++;
};
}
private static function satisfyConstraints():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.satisfyConstraints();
_local1++;
};
}
public static function addMasslessForce(_arg1:Vector):void{
masslessForce.plusEquals(_arg1);
}
}
}//package org.cove.ape
Section 6
//CircleParticle (org.cove.ape.CircleParticle)
package org.cove.ape {
public class CircleParticle extends AbstractParticle {
private var _radius:Number;
public function CircleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:String="", _arg5:Boolean=false, _arg6:Number=1, _arg7:Number=0.3, _arg8:Number=0){
super(_arg1, _arg2, _arg5, _arg6, _arg7, _arg8, _arg4);
_radius = _arg3;
}
function getIntervalX():Interval{
interval.min = (curr.x - _radius);
interval.max = (curr.x + _radius);
return (interval);
}
function getIntervalY():Interval{
interval.min = (curr.y - _radius);
interval.max = (curr.y + _radius);
return (interval);
}
override public function init():void{
cleanup();
if (displayObject != null){
initDisplay();
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawCircle(0, 0, radius);
sprite.graphics.endFill();
};
paint();
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
}
public function get radius():Number{
return (_radius);
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number;
_local2 = samp.dot(_arg1);
interval.min = (_local2 - _radius);
interval.max = (_local2 + _radius);
return (interval);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
}
}
}//package org.cove.ape
Section 7
//Collision (org.cove.ape.Collision)
package org.cove.ape {
import org.cove.ape.*;
final class Collision {
var vn:Vector;
var vt:Vector;
function Collision(_arg1:Vector, _arg2:Vector){
this.vn = _arg1;
this.vt = _arg2;
}
}
}//package org.cove.ape
Section 8
//CollisionDetector (org.cove.ape.CollisionDetector)
package org.cove.ape {
public final class CollisionDetector {
public static var collisionPairs:Array;
private static function testIntervals(_arg1:Interval, _arg2:Interval):Number{
var _local3:Number;
var _local4:Number;
if (_arg1.max < _arg2.min){
return (0);
};
if (_arg2.max < _arg1.min){
return (0);
};
_local3 = (_arg2.max - _arg1.min);
_local4 = (_arg2.min - _arg1.max);
return (((Math.abs(_local3))<Math.abs(_local4)) ? _local3 : _local4);
}
private static function testTypes(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Boolean=false):Boolean{
if ((((_arg1 is RectangleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsOBB((_arg1 as RectangleParticle), (_arg2 as RectangleParticle), _arg3));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is CircleParticle)))){
return (testCirclevsCircle((_arg1 as CircleParticle), (_arg2 as CircleParticle), _arg3));
};
if ((((_arg1 is RectangleParticle)) && ((_arg2 is CircleParticle)))){
return (testOBBvsCircle((_arg1 as RectangleParticle), (_arg2 as CircleParticle), _arg3));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsCircle((_arg2 as RectangleParticle), (_arg1 as CircleParticle), _arg3));
};
return (false);
}
private static function testOBBvsCircle(_arg1:RectangleParticle, _arg2:CircleParticle, _arg3:Boolean=false):Boolean{
var _local4:Vector;
var _local5:Number;
var _local6:Array;
var _local7:int;
var _local8:Number;
var _local9:Vector;
var _local10:Number;
var _local11:Vector;
var _local12:Number;
_local5 = Number.POSITIVE_INFINITY;
_local6 = new Array(2);
_local7 = 0;
while (_local7 < 2) {
_local9 = _arg1.axes[_local7];
_local10 = testIntervals(_arg1.getProjection(_local9), _arg2.getProjection(_local9));
if (_local10 == 0){
return (false);
};
if (Math.abs(_local10) < Math.abs(_local5)){
_local4 = _local9;
_local5 = _local10;
};
_local6[_local7] = _local10;
_local7++;
};
_local8 = _arg2.radius;
if ((((Math.abs(_local6[0]) < _local8)) && ((Math.abs(_local6[1]) < _local8)))){
_local11 = closestVertexOnOBB(_arg2.samp, _arg1);
_local4 = _local11.minus(_arg2.samp);
_local12 = _local4.magnitude();
_local5 = (_local8 - _local12);
if (_local5 > 0){
_local4.divEquals(_local12);
} else {
return (false);
};
};
if (!_arg3){
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local4, _local5);
};
return (true);
}
private static function testCirclevsCircle(_arg1:CircleParticle, _arg2:CircleParticle, _arg3:Boolean=false):Boolean{
var _local4:Number;
var _local5:Number;
var _local6:Vector;
var _local7:Number;
var _local8:Number;
_local4 = testIntervals(_arg1.getIntervalX(), _arg2.getIntervalX());
if (_local4 == 0){
return (false);
};
_local5 = testIntervals(_arg1.getIntervalY(), _arg2.getIntervalY());
if (_local5 == 0){
return (false);
};
_local6 = _arg1.samp.minus(_arg2.samp);
_local7 = _local6.magnitude();
_local8 = ((_arg1.radius + _arg2.radius) - _local7);
if (_local8 > 0){
if (!_arg3){
_local6.divEquals(_local7);
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local6, _local8);
};
return (true);
};
return (false);
}
private static function sampVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Boolean=false):Boolean{
var _local4:Number;
var _local5:Number;
var _local6:int;
_local4 = (1 / (_arg1.multisample + 1));
_local5 = _local4;
_arg2.samp.copy(_arg2.curr);
_local6 = 0;
while (_local6 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local5 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local5 * (_arg1.curr.y - _arg1.prev.y))));
if (testTypes(_arg1, _arg2, _arg3)){
return (true);
};
_local5 = (_local5 + _local4);
_local6++;
};
return (false);
}
static function test(_arg1:AbstractParticle, _arg2:AbstractParticle):Boolean{
var _local3:Boolean;
if (((_arg1.fixed) && (_arg2.fixed))){
return (false);
};
_local3 = false;
if ((((_arg1.multisample == 0)) && ((_arg2.multisample == 0)))){
_local3 = normVsNorm(_arg1, _arg2);
} else {
if ((((_arg1.multisample > 0)) && ((_arg2.multisample == 0)))){
_local3 = sampVsNorm(_arg1, _arg2);
} else {
if ((((_arg2.multisample > 0)) && ((_arg1.multisample == 0)))){
_local3 = sampVsNorm(_arg2, _arg1);
} else {
if (_arg1.multisample == _arg2.multisample){
_local3 = sampVsSamp(_arg1, _arg2);
} else {
_local3 = normVsNorm(_arg1, _arg2);
};
};
};
};
if (_local3){
if (((!((_arg1.instanceName == ""))) && (!((_arg2.instanceName == ""))))){
collisionPairs.push(new CollisionPair(_arg1, _arg2));
};
};
return (_local3);
}
private static function closestVertexOnOBB(_arg1:Vector, _arg2:RectangleParticle):Vector{
var _local3:Vector;
var _local4:Vector;
var _local5:int;
var _local6:Number;
_local3 = _arg1.minus(_arg2.samp);
_local4 = new Vector(_arg2.samp.x, _arg2.samp.y);
_local5 = 0;
while (_local5 < 2) {
_local6 = _local3.dot(_arg2.axes[_local5]);
if (_local6 >= 0){
_local6 = _arg2.extents[_local5];
} else {
if (_local6 < 0){
_local6 = -(_arg2.extents[_local5]);
};
};
_local4.plusEquals(_arg2.axes[_local5].mult(_local6));
_local5++;
};
return (_local4);
}
private static function normVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Boolean=false):Boolean{
_arg1.samp.copy(_arg1.curr);
_arg2.samp.copy(_arg2.curr);
return (testTypes(_arg1, _arg2, _arg3));
}
private static function testOBBvsOBB(_arg1:RectangleParticle, _arg2:RectangleParticle, _arg3:Boolean=false):Boolean{
var _local4:Vector;
var _local5:Number;
var _local6:int;
var _local7:Vector;
var _local8:Number;
var _local9:Vector;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Boolean;
_local5 = Number.POSITIVE_INFINITY;
_local6 = 0;
while (_local6 < 2) {
_local7 = _arg1.axes[_local6];
_local8 = testIntervals(_arg1.getProjection(_local7), _arg2.getProjection(_local7));
if (_local8 == 0){
return (false);
};
_local9 = _arg2.axes[_local6];
_local10 = testIntervals(_arg1.getProjection(_local9), _arg2.getProjection(_local9));
if (_local10 == 0){
return (false);
};
_local11 = Math.abs(_local8);
_local12 = Math.abs(_local10);
if ((((_local11 < Math.abs(_local5))) || ((_local12 < Math.abs(_local5))))){
_local13 = (_local11 < _local12);
_local4 = (_local13) ? _local7 : _local9;
_local5 = (_local13) ? _local8 : _local10;
};
_local6++;
};
if (!_arg3){
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local4, _local5);
};
return (true);
}
public static function testOnly(_arg1:AbstractParticle, _arg2:AbstractParticle):Boolean{
if ((((_arg1.multisample == 0)) && ((_arg2.multisample == 0)))){
return (normVsNorm(_arg1, _arg2, true));
};
if ((((_arg1.multisample > 0)) && ((_arg2.multisample == 0)))){
return (sampVsNorm(_arg1, _arg2, true));
};
if ((((_arg2.multisample > 0)) && ((_arg1.multisample == 0)))){
return (sampVsNorm(_arg2, _arg1, true));
};
if (_arg1.multisample == _arg2.multisample){
return (sampVsSamp(_arg1, _arg2, true));
};
return (normVsNorm(_arg1, _arg2, true));
}
private static function sampVsSamp(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Boolean=false):Boolean{
var _local4:Number;
var _local5:Number;
var _local6:int;
_local4 = (1 / (_arg1.multisample + 1));
_local5 = _local4;
_local6 = 0;
while (_local6 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local5 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local5 * (_arg1.curr.y - _arg1.prev.y))));
_arg2.samp.setTo((_arg2.prev.x + (_local5 * (_arg2.curr.x - _arg2.prev.x))), (_arg2.prev.y + (_local5 * (_arg2.curr.y - _arg2.prev.y))));
if (testTypes(_arg1, _arg2, _arg3)){
return (true);
};
_local5 = (_local5 + _local4);
_local6++;
};
return (false);
}
}
}//package org.cove.ape
Section 9
//CollisionPair (org.cove.ape.CollisionPair)
package org.cove.ape {
public class CollisionPair {
public var obj1:AbstractParticle;
public var obj2:AbstractParticle;
public function CollisionPair(_arg1:AbstractParticle, _arg2:AbstractParticle){
obj1 = _arg1;
obj2 = _arg2;
}
}
}//package org.cove.ape
Section 10
//CollisionResolver (org.cove.ape.CollisionResolver)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionResolver {
static function resolveParticleParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Vector, _arg4:Number):void{
var _local5:Vector;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Collision;
var _local10:Collision;
var _local11:Vector;
var _local12:Vector;
var _local13:Vector;
var _local14:Vector;
_arg1.curr.copy(_arg1.samp);
_arg2.curr.copy(_arg2.samp);
_local5 = _arg3.mult(_arg4);
_local6 = (_arg1.elasticity + _arg2.elasticity);
_local7 = (_arg1.invMass + _arg2.invMass);
_local8 = clamp((1 - (_arg1.friction + _arg2.friction)), 0, 1);
_local9 = _arg1.getComponents(_arg3);
_local10 = _arg2.getComponents(_arg3);
_local11 = _local10.vn.mult(((_local6 + 1) * _arg1.invMass)).plus(_local9.vn.mult((_arg2.invMass - (_local6 * _arg1.invMass)))).divEquals(_local7);
_local12 = _local9.vn.mult(((_local6 + 1) * _arg2.invMass)).plus(_local10.vn.mult((_arg1.invMass - (_local6 * _arg2.invMass)))).divEquals(_local7);
_local9.vt.multEquals(_local8);
_local10.vt.multEquals(_local8);
_local13 = _local5.mult((_arg1.invMass / _local7));
_local14 = _local5.mult((-(_arg2.invMass) / _local7));
_local11.plusEquals(_local9.vt);
_local12.plusEquals(_local10.vt);
if (!_arg1.fixed){
_arg1.resolveCollision(_local13, _local11, _arg3, _arg4, -1, _arg2);
};
if (!_arg2.fixed){
_arg2.resolveCollision(_local14, _local12, _arg3, _arg4, 1, _arg1);
};
}
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 > _arg3){
return (_arg3);
};
if (_arg1 < _arg2){
return (_arg2);
};
return (_arg1);
}
}
}//package org.cove.ape
Section 11
//Composite (org.cove.ape.Composite)
package org.cove.ape {
public class Composite extends AbstractCollection {
private var delta:Vector;
public function Composite(){
delta = new Vector();
}
private function getRelativeAngle(_arg1:Vector, _arg2:Vector):Number{
delta.setTo((_arg2.x - _arg1.x), (_arg2.y - _arg1.y));
return (Math.atan2(delta.y, delta.x));
}
public function rotateByRadian(_arg1:Number, _arg2:Vector):void{
var _local3:AbstractParticle;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:Number;
var _local8:Number;
_local4 = particles;
_local5 = _local4.length;
_local6 = 0;
while (_local6 < _local5) {
_local3 = _local4[_local6];
_local7 = _local3.center.distance(_arg2);
_local8 = (getRelativeAngle(_arg2, _local3.center) + _arg1);
_local3.px = ((Math.cos(_local8) * _local7) + _arg2.x);
_local3.py = ((Math.sin(_local8) * _local7) + _arg2.y);
_local6++;
};
}
public function rotateByAngle(_arg1:Number, _arg2:Vector):void{
var _local3:Number;
_local3 = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
rotateByRadian(_local3, _arg2);
}
public function set fixed(_arg1:Boolean):void{
var _local2:int;
_local2 = 0;
while (_local2 < particles.length) {
particles[_local2].fixed = _arg1;
_local2++;
};
}
public function get fixed():Boolean{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
if (!particles[_local1].fixed){
return (false);
};
_local1++;
};
return (true);
}
}
}//package org.cove.ape
Section 12
//Group (org.cove.ape.Group)
package org.cove.ape {
public class Group extends AbstractCollection {
private var _collideInternal:Boolean;
private var _composites:Array;
private var _collisionList:Array;
public function Group(_arg1:Boolean=false){
_composites = new Array();
_collisionList = new Array();
this.collideInternal = _arg1;
}
function checkCollisions():void{
var _local1:int;
var _local2:int;
var _local3:Group;
if (collideInternal){
checkCollisionGroupInternal();
};
_local1 = collisionList.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = collisionList[_local2];
checkCollisionVsGroup(_local3);
_local2++;
};
}
public function get composites():Array{
return (_composites);
}
override public function init():void{
var _local1:int;
super.init();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].init();
_local1++;
};
}
public function removeCollidable(_arg1:Group):void{
var _local2:int;
_local2 = collisionList.indexOf(_arg1);
if (_local2 == -1){
return;
};
collisionList.splice(_local2, 1);
}
private function checkCollisionVsGroup(_arg1:Group):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Composite;
var _local6:int;
var _local7:Composite;
checkCollisionsVsCollection(_arg1);
_local2 = _composites.length;
_local3 = _arg1.composites.length;
_local4 = 0;
while (_local4 < _local2) {
_local5 = _composites[_local4];
_local5.checkCollisionsVsCollection(_arg1);
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
_local5.checkCollisionsVsCollection(_local7);
_local6++;
};
_local4++;
};
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
checkCollisionsVsCollection(_local7);
_local6++;
};
}
override function satisfyConstraints():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
super.satisfyConstraints();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.satisfyConstraints();
_local2++;
};
}
public function get collideInternal():Boolean{
return (_collideInternal);
}
public function addCollidableList(_arg1:Array):void{
var _local2:int;
var _local3:Group;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
collisionList.push(_local3);
_local2++;
};
}
public function removeComposite(_arg1:Composite):void{
var _local2:int;
_local2 = composites.indexOf(_arg1);
if (_local2 == -1){
return;
};
composites.splice(_local2, 1);
_arg1.isParented = false;
_arg1.cleanup();
}
override public function cleanup():void{
var _local1:int;
super.cleanup();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].cleanup();
_local1++;
};
}
override public function paint():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
super.paint();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.paint();
_local2++;
};
}
public function addCollidable(_arg1:Group):void{
collisionList.push(_arg1);
}
override public function getAll():Array{
return (particles.concat(constraints).concat(composites));
}
public function get collisionList():Array{
return (_collisionList);
}
override function integrate(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:Composite;
super.integrate(_arg1);
_local2 = _composites.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _composites[_local3];
_local4.integrate(_arg1);
_local3++;
};
}
public function addComposite(_arg1:Composite):void{
composites.push(_arg1);
_arg1.isParented = true;
if (isParented){
_arg1.init();
};
}
private function checkCollisionGroupInternal():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
var _local4:int;
var _local5:Composite;
checkInternalCollisions();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.checkCollisionsVsCollection(this);
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local5 = _composites[_local4];
_local3.checkCollisionsVsCollection(_local5);
_local4++;
};
_local2++;
};
}
public function set collideInternal(_arg1:Boolean):void{
_collideInternal = _arg1;
}
}
}//package org.cove.ape
Section 13
//Interval (org.cove.ape.Interval)
package org.cove.ape {
final class Interval {
var min:Number;
var max:Number;
function Interval(_arg1:Number, _arg2:Number){
this.min = _arg1;
this.max = _arg2;
}
function toString():String{
return (((min + " : ") + max));
}
}
}//package org.cove.ape
Section 14
//MathUtil (org.cove.ape.MathUtil)
package org.cove.ape {
final class MathUtil {
static var ONE_EIGHTY_OVER_PI:Number = 57.2957795130823;
static var PI_OVER_ONE_EIGHTY:Number = 0.0174532925199433;
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 < _arg2){
return (_arg2);
};
if (_arg1 > _arg3){
return (_arg3);
};
return (_arg1);
}
static function sign(_arg1:Number):int{
if (_arg1 < 0){
return (-1);
};
return (1);
}
}
}//package org.cove.ape
Section 15
//RectangleParticle (org.cove.ape.RectangleParticle)
package org.cove.ape {
public class RectangleParticle extends AbstractParticle {
private var _axes:Array;
private var _extents:Array;
private var _radian:Number;
public function RectangleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String="", _arg6:Number=0, _arg7:Boolean=false, _arg8:Number=1, _arg9:Number=0.3, _arg10:Number=0){
super(_arg1, _arg2, _arg7, _arg8, _arg9, _arg10, _arg5);
_extents = new Array((_arg3 / 2), (_arg4 / 2));
_axes = new Array(new Vector(0, 0), new Vector(0, 0));
radian = _arg6;
}
override public function init():void{
var _local1:Number;
var _local2:Number;
cleanup();
if (displayObject != null){
initDisplay();
} else {
_local1 = (extents[0] * 2);
_local2 = (extents[1] * 2);
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawRect((-(_local1) / 2), (-(_local2) / 2), _local1, _local2);
sprite.graphics.endFill();
};
paint();
}
public function set width(_arg1:Number):void{
_extents[0] = (_arg1 / 2);
}
function get axes():Array{
return (_axes);
}
public function get height():Number{
return ((_extents[1] * 2));
}
function get extents():Array{
return (_extents);
}
public function set angle(_arg1:Number):void{
radian = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
}
private function setAxes(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
_local2 = Math.sin(_arg1);
_local3 = Math.cos(_arg1);
axes[0].x = _local3;
axes[0].y = _local2;
axes[1].x = -(_local2);
axes[1].y = _local3;
}
public function get radian():Number{
return (_radian);
}
public function get width():Number{
return ((_extents[0] * 2));
}
public function set height(_arg1:Number):void{
_extents[1] = (_arg1 / 2);
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number;
var _local3:Number;
_local2 = ((extents[0] * Math.abs(_arg1.dot(axes[0]))) + (extents[1] * Math.abs(_arg1.dot(axes[1]))));
_local3 = samp.dot(_arg1);
interval.min = (_local3 - _local2);
interval.max = (_local3 + _local2);
return (interval);
}
public function set radian(_arg1:Number):void{
_radian = _arg1;
setAxes(_arg1);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
sprite.rotation = angle;
}
}
}//package org.cove.ape
Section 16
//SpringConstraint (org.cove.ape.SpringConstraint)
package org.cove.ape {
import flash.display.*;
public class SpringConstraint extends AbstractConstraint {
private var _collidable:Boolean;
private var _restLength:Number;
public var myInstanceName:String;
private var p1:AbstractParticle;
private var p2:AbstractParticle;
private var _scp:SpringConstraintParticle;
public function SpringConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Number=0.5, _arg4:Boolean=false, _arg5:Number=1, _arg6:String="", _arg7:Number=1, _arg8:Boolean=false){
super(_arg3);
myInstanceName = _arg6;
this.p1 = _arg1;
this.p2 = _arg2;
checkParticlesLocation();
_restLength = currLength;
setCollidable(_arg4, _arg5, _arg7, _arg8);
}
override public function init():void{
cleanup();
if (collidable){
scp.init();
} else {
if (displayObject != null){
initDisplay();
};
};
paint();
}
function initDisplay():void{
if (collidable){
scp.initDisplay();
} else {
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
};
}
public function set rectScale(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectScale = _arg1;
}
public function get radian():Number{
var _local1:Vector;
_local1 = delta;
return (Math.atan2(_local1.y, _local1.x));
}
function get scp():SpringConstraintParticle{
return (_scp);
}
public function get rectHeight():Number{
return (scp.rectHeight);
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
if (collidable){
scp.setDisplay(_arg1, _arg2, _arg3, _arg4);
} else {
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
};
}
private function checkParticlesLocation():void{
if ((((p1.curr.x == p2.curr.x)) && ((p1.curr.y == p2.curr.y)))){
p2.curr.x = (p2.curr.x + 0.0001);
};
}
public function set restLength(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("restLength must be greater than 0"));
};
_restLength = _arg1;
}
public function get currLength():Number{
return (p1.curr.distance(p2.curr));
}
public function get fixedEndLimit():Number{
return (scp.fixedEndLimit);
}
public function get rectScale():Number{
return (scp.rectScale);
}
function get delta():Vector{
return (p1.curr.minus(p2.curr));
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
public function get center():Vector{
return (p1.curr.plus(p2.curr).divEquals(2));
}
public function set rectHeight(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectHeight = _arg1;
}
public function get restLength():Number{
return (_restLength);
}
override public function paint():void{
var _local1:Vector;
if (collidable){
scp.paint();
} else {
if (displayObject != null){
_local1 = center;
sprite.x = _local1.x;
sprite.y = _local1.y;
sprite.rotation = angle;
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.moveTo(p1.px, p1.py);
sprite.graphics.lineTo(p2.px, p2.py);
};
};
}
public function setCollidable(_arg1:Boolean, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
_collidable = _arg1;
_scp = null;
if (_collidable){
_scp = new SpringConstraintParticle(p1, p2, this, _arg2, _arg3, _arg4, myInstanceName);
};
}
public function get collidable():Boolean{
return (_collidable);
}
public function isConnectedTo(_arg1:AbstractParticle):Boolean{
return ((((_arg1 == p1)) || ((_arg1 == p2))));
}
override function resolve():void{
var _local1:Number;
var _local2:Number;
var _local3:Vector;
if (((p1.fixed) && (p2.fixed))){
return;
};
_local1 = currLength;
_local2 = ((_local1 - restLength) / (_local1 * (p1.invMass + p2.invMass)));
_local3 = delta.mult((_local2 * stiffness));
p1.curr.minusEquals(_local3.mult(p1.invMass));
p2.curr.plusEquals(_local3.mult(p2.invMass));
}
public function get fixed():Boolean{
return (((p1.fixed) && (p2.fixed)));
}
public function set fixedEndLimit(_arg1:Number):void{
if (scp == null){
return;
};
scp.fixedEndLimit = _arg1;
}
}
}//package org.cove.ape
Section 17
//SpringConstraintParticle (org.cove.ape.SpringConstraintParticle)
package org.cove.ape {
import org.cove.ape.*;
import flash.display.*;
class SpringConstraintParticle extends RectangleParticle {
private var _fixedEndLimit:Number;
private var _rectScale:Number;
private var rca:Vector;
private var rcb:Vector;
private var s:Number;
private var parent:SpringConstraint;
private var scaleToLength:Boolean;
private var p1:AbstractParticle;
private var p2:AbstractParticle;
private var lambda:Vector;
private var avgVelocity:Vector;
private var _rectHeight:Number;
function SpringConstraintParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:SpringConstraint, _arg4:Number, _arg5:Number, _arg6:Boolean, _arg7:String=""){
super(0, 0, 0, 0, _arg7, 0, false, 1, 0.3, 0);
this.p1 = _arg1;
this.p2 = _arg2;
lambda = new Vector(0, 0);
avgVelocity = new Vector(0, 0);
parent = _arg3;
this.rectScale = _arg5;
this.rectHeight = _arg4;
this.scaleToLength = _arg6;
fixedEndLimit = 0;
rca = new Vector();
rcb = new Vector();
}
private function setCorners(_arg1:RectangleParticle, _arg2:int):void{
var _local3:Number;
var _local4:Number;
var _local5:Array;
var _local6:Array;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
_local3 = _arg1.curr.x;
_local4 = _arg1.curr.y;
_local5 = _arg1.axes;
_local6 = _arg1.extents;
_local7 = (_local5[0].x * _local6[0]);
_local8 = (_local5[0].y * _local6[0]);
_local9 = (_local5[1].x * _local6[1]);
_local10 = (_local5[1].y * _local6[1]);
_local11 = (_local7 - _local9);
_local12 = (_local8 - _local10);
_local13 = (_local7 + _local9);
_local14 = (_local8 + _local10);
if (_arg2 == 0){
rca.x = (_local3 - _local13);
rca.y = (_local4 - _local14);
rcb.x = (_local3 + _local11);
rcb.y = (_local4 + _local12);
} else {
if (_arg2 == 1){
rca.x = (_local3 + _local11);
rca.y = (_local4 + _local12);
rcb.x = (_local3 + _local13);
rcb.y = (_local4 + _local14);
} else {
if (_arg2 == 2){
rca.x = (_local3 + _local13);
rca.y = (_local4 + _local14);
rcb.x = (_local3 - _local11);
rcb.y = (_local4 - _local12);
} else {
if (_arg2 == 3){
rca.x = (_local3 - _local11);
rca.y = (_local4 - _local12);
rcb.x = (_local3 - _local13);
rcb.y = (_local4 - _local14);
};
};
};
};
}
override public function init():void{
var _local1:Sprite;
var _local2:Number;
var _local3:Number;
if (displayObject != null){
initDisplay();
} else {
_local1 = new Sprite();
parent.sprite.addChild(_local1);
_local1.name = "inner";
_local2 = (parent.currLength * rectScale);
_local3 = rectHeight;
_local1.graphics.clear();
_local1.graphics.lineStyle(parent.lineThickness, parent.lineColor, parent.lineAlpha);
_local1.graphics.beginFill(parent.fillColor, parent.fillAlpha);
_local1.graphics.drawRect((-(_local2) / 2), (-(_local3) / 2), _local2, _local3);
_local1.graphics.endFill();
};
paint();
}
function updatePosition():void{
var _local1:Vector;
_local1 = parent.center;
curr.setTo(_local1.x, _local1.y);
width = (scaleToLength) ? (parent.currLength * rectScale) : (parent.restLength * rectScale);
height = rectHeight;
radian = parent.radian;
}
private function closestPtSegmentSegment():Number{
var _local1:Vector;
var _local2:Vector;
var _local3:Vector;
var _local4:Vector;
var _local5:Vector;
var _local6:Vector;
var _local7:Vector;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Vector;
var _local16:Vector;
var _local17:Vector;
_local1 = p1.curr;
_local2 = p2.curr;
_local3 = rca;
_local4 = rcb;
_local5 = _local2.minus(_local1);
_local6 = _local4.minus(_local3);
_local7 = _local1.minus(_local3);
_local9 = _local5.dot(_local5);
_local10 = _local6.dot(_local6);
_local11 = _local6.dot(_local7);
_local12 = _local5.dot(_local7);
_local13 = _local5.dot(_local6);
_local14 = ((_local9 * _local10) - (_local13 * _local13));
if (_local14 != 0){
s = MathUtil.clamp((((_local13 * _local11) - (_local12 * _local10)) / _local14), 0, 1);
} else {
s = 0.5;
};
_local8 = (((_local13 * s) + _local11) / _local10);
if (_local8 < 0){
_local8 = 0;
s = MathUtil.clamp((-(_local12) / _local9), 0, 1);
} else {
if (_local8 > 0){
_local8 = 1;
s = MathUtil.clamp(((_local13 - _local12) / _local9), 0, 1);
};
};
_local15 = _local1.plus(_local5.mult(s));
_local16 = _local3.plus(_local6.mult(_local8));
_local17 = _local15.minus(_local16);
return (_local15.minus(_local16).dot(_local17));
}
function get rectHeight():Number{
return (_rectHeight);
}
function get fixedEndLimit():Number{
return (_fixedEndLimit);
}
private function closestParamPoint(_arg1:Vector):Number{
var _local2:Vector;
var _local3:Number;
_local2 = p2.curr.minus(p1.curr);
_local3 = (_local2.dot(_arg1.minus(p1.curr)) / _local2.dot(_local2));
return (MathUtil.clamp(_local3, 0, 1));
}
function set rectHeight(_arg1:Number):void{
_rectHeight = _arg1;
}
override public function paint():void{
var _local1:Vector;
var _local2:Sprite;
_local1 = parent.center;
_local2 = parent.sprite;
if (scaleToLength){
_local2.getChildByName("inner").width = (parent.currLength * rectScale);
} else {
if (displayObject != null){
_local2.getChildByName("inner").width = (parent.restLength * rectScale);
};
};
_local2.x = _local1.x;
_local2.y = _local1.y;
_local2.rotation = parent.angle;
}
private function getContactPointParam(_arg1:AbstractParticle):Number{
var _local2:Number;
var _local3:Number;
var _local4:Array;
var _local5:Number;
var _local6:int;
var _local7:Number;
if ((_arg1 is CircleParticle)){
_local2 = closestParamPoint(_arg1.curr);
} else {
if ((_arg1 is RectangleParticle)){
_local4 = new Array(4);
_local5 = Number.POSITIVE_INFINITY;
_local6 = 0;
while (_local6 < 4) {
setCorners((_arg1 as RectangleParticle), _local6);
_local7 = closestPtSegmentSegment();
if (_local7 < _local5){
_local5 = _local7;
_local3 = _local6;
_local4[_local6] = s;
};
_local6++;
};
_local2 = _local4[_local3];
};
};
return (_local2);
}
function set fixedEndLimit(_arg1:Number):void{
_fixedEndLimit = _arg1;
}
override function get invMass():Number{
if (((p1.fixed) && (p2.fixed))){
return (0);
};
return ((1 / ((p1.mass + p2.mass) / 2)));
}
override function initDisplay():void{
var _local1:Sprite;
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
_local1 = new Sprite();
_local1.name = "inner";
_local1.addChild(displayObject);
parent.sprite.addChild(_local1);
}
function set rectScale(_arg1:Number):void{
_rectScale = _arg1;
}
override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:AbstractParticle;
_local7 = getContactPointParam(_arg6);
_local8 = (1 - _local7);
_local9 = _local7;
if (p1.fixed){
if (_local9 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local9), (_arg1.y / _local9));
p2.curr.plusEquals(lambda);
p2.velocity = _arg2;
} else {
if (p2.fixed){
if (_local8 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local8), (_arg1.y / _local8));
p1.curr.plusEquals(lambda);
p1.velocity = _arg2;
} else {
_local10 = ((_local8 * _local8) + (_local9 * _local9));
if (_local10 == 0){
return;
};
lambda.setTo((_arg1.x / _local10), (_arg1.y / _local10));
p1.curr.plusEquals(lambda.mult(_local8));
p2.curr.plusEquals(lambda.mult(_local9));
if (_local7 == 0.5){
p1.velocity = _arg2;
p2.velocity = _arg2;
} else {
_local11 = ((_local7)<0.5) ? p1 : p2;
_local11.velocity = _arg2;
};
};
};
}
override public function get elasticity():Number{
return (((p1.elasticity + p2.elasticity) / 2));
}
function get rectScale():Number{
return (_rectScale);
}
override public function get velocity():Vector{
var _local1:Vector;
var _local2:Vector;
_local1 = p1.velocity;
_local2 = p2.velocity;
avgVelocity.setTo(((_local1.x + _local2.x) / 2), ((_local1.y + _local2.y) / 2));
return (avgVelocity);
}
override public function get friction():Number{
return (((p1.friction + p2.friction) / 2));
}
override public function get mass():Number{
return (((p1.mass + p2.mass) / 2));
}
}
}//package org.cove.ape
Section 18
//Vector (org.cove.ape.Vector)
package org.cove.ape {
public class Vector {
public var x:Number;
public var y:Number;
public function Vector(_arg1:Number=0, _arg2:Number=0){
x = _arg1;
y = _arg2;
}
public function cross(_arg1:Vector):Number{
return (((x * _arg1.y) - (y * _arg1.x)));
}
public function magnitude():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function divEquals(_arg1:Number):Vector{
if (_arg1 == 0){
_arg1 = 0.0001;
};
x = (x / _arg1);
y = (y / _arg1);
return (this);
}
public function times(_arg1:Vector):Vector{
return (new Vector((x * _arg1.x), (y * _arg1.y)));
}
public function plusEquals(_arg1:Vector):Vector{
x = (x + _arg1.x);
y = (y + _arg1.y);
return (this);
}
public function dot(_arg1:Vector):Number{
return (((x * _arg1.x) + (y * _arg1.y)));
}
public function toString():String{
return (((x + " : ") + y));
}
public function normalize():Vector{
var _local1:Number;
_local1 = magnitude();
if (_local1 == 0){
_local1 = 0.0001;
};
return (mult((1 / _local1)));
}
public function copy(_arg1:Vector):void{
x = _arg1.x;
y = _arg1.y;
}
public function minusEquals(_arg1:Vector):Vector{
x = (x - _arg1.x);
y = (y - _arg1.y);
return (this);
}
public function minus(_arg1:Vector):Vector{
return (new Vector((x - _arg1.x), (y - _arg1.y)));
}
public function plus(_arg1:Vector):Vector{
return (new Vector((x + _arg1.x), (y + _arg1.y)));
}
public function distance(_arg1:Vector):Number{
var _local2:Vector;
_local2 = this.minus(_arg1);
return (_local2.magnitude());
}
public function setTo(_arg1:Number, _arg2:Number):void{
x = _arg1;
y = _arg2;
}
public function multEquals(_arg1:Number):Vector{
x = (x * _arg1);
y = (y * _arg1);
return (this);
}
public function mult(_arg1:Number):Vector{
return (new Vector((x * _arg1), (y * _arg1)));
}
}
}//package org.cove.ape
Section 19
//injuredCircle_19 (tori_fla.injuredCircle_19)
package tori_fla {
import flash.display.*;
public dynamic class injuredCircle_19 extends MovieClip {
public function injuredCircle_19(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package tori_fla
Section 20
//injuredRect_23 (tori_fla.injuredRect_23)
package tori_fla {
import flash.display.*;
public dynamic class injuredRect_23 extends MovieClip {
public function injuredRect_23(){
addFrameScript(1, frame2);
}
function frame2(){
stop();
}
}
}//package tori_fla
Section 21
//MainTimeline (tori_fla.MainTimeline)
package tori_fla {
import flash.display.*;
public dynamic class MainTimeline extends MovieClip {
public function MainTimeline(){
addFrameScript(0, frame1);
}
function frame1(){
gameworld.main(stage);
}
}
}//package tori_fla
Section 22
//selector_20 (tori_fla.selector_20)
package tori_fla {
import flash.display.*;
public dynamic class selector_20 extends MovieClip {
public var arrowCW:MovieClip;
public var arrowCCW:MovieClip;
}
}//package tori_fla
Section 23
//whitecircle_4 (tori_fla.whitecircle_4)
package tori_fla {
import flash.display.*;
public dynamic class whitecircle_4 extends MovieClip {
public function whitecircle_4(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package tori_fla
Section 24
//armComposite (armComposite)
package {
import org.cove.ape.*;
public class armComposite extends Composite {
public var armPicture:greybox;
public var shoulderBroken:Boolean;
public var shoulder:CircleParticle;
public var forearm:SpringConstraint;
public var elbowEmitter:bloodEmitter;
public var shoulderEmitter:bloodEmitter;
public var armconstraintnode:CircleParticle;
public var elbow:CircleParticle;
public var elbowNodeEmitter:bloodEmitter;
public var elbownode:CircleParticle;
public var elbowbendconstraint:SpringConstraint;
public var arm:SpringConstraint;
public var fist:RectangleParticle;
public var elbowconnector:SpringConstraint;
public var forearmpic:greybox;
public var elbowBroken:Boolean;
public var elbowbendconstraint2:SpringConstraint;
public var shoulderconstraintnode:CircleParticle;
public function armComposite(_arg1:Vector, _arg2:String, _arg3:int){
var _local4:CircleParticle;
var _local5:SpringConstraint;
var _local6:CircleParticle;
var _local7:SpringConstraint;
var _local8:SpringConstraint;
var _local9:SpringConstraint;
var _local10:SpringConstraint;
var _local11:SpringConstraint;
var _local12:SpringConstraint;
var _local13:SpringConstraint;
super();
shoulder = new CircleParticle(_arg1.x, _arg1.y, 19, ((_arg3 + _arg2) + "Shoulder"));
if (_arg2 == "left"){
elbownode = new CircleParticle((_arg1.x - 15), (_arg1.y + 60), 17);
} else {
if (_arg2 == "right"){
elbownode = new CircleParticle((_arg1.x + 15), (_arg1.y + 60), 17);
} else {
elbownode = new CircleParticle(_arg1.x, (_arg1.y + 60), 17);
};
};
shoulder.friction = 0.5;
elbownode.friction = 0.5;
shoulder.visible = false;
elbownode.visible = false;
addParticle(shoulder);
addParticle(elbownode);
arm = new SpringConstraint(shoulder, elbownode, 1, true, 25, ((_arg3 + _arg2) + "Arm"));
armPicture = new greybox();
armPicture.cacheAsBitmap = true;
arm.setDisplay(armPicture);
addConstraint(arm);
elbow = new CircleParticle(elbownode.position.x, elbownode.position.y, 16, ((_arg3 + _arg2) + "Elbow"));
_local4 = new CircleParticle(elbownode.position.x, (elbownode.position.y + 60), 8);
fist = new RectangleParticle(_local4.position.x, _local4.position.y, 32, 32, ((_arg3 + _arg2) + "Fist"));
elbow.friction = 0.5;
elbow.visible = false;
_local4.collidable = false;
fist.friction = 0.5;
fist.setStyle(1.5, 0, 1, 0x999999);
addParticle(elbow);
addParticle(_local4);
addParticle(fist);
forearm = new SpringConstraint(elbow, _local4, 1, true, 18, ((_arg3 + _arg2) + "ForeArm"));
_local5 = new SpringConstraint(_local4, fist, 1);
forearmpic = new greybox();
forearmpic.cacheAsBitmap = true;
forearmpic.height = 18;
forearm.setDisplay(forearmpic);
forearm.setStyle(1.5, 0, 1, 0xCCCCCC);
_local5.visible = false;
addConstraint(forearm);
addConstraint(_local5);
elbowconnector = new SpringConstraint(elbownode, elbow, 1);
elbowconnector.visible = false;
addConstraint(elbowconnector);
if (_arg2 == "left"){
armconstraintnode = new CircleParticle((elbownode.position.x - 70), (elbownode.position.y - 70), 5);
_local6 = new CircleParticle((elbownode.position.x + 70), (elbownode.position.y - 50), 5);
shoulderconstraintnode = new CircleParticle((elbownode.position.x - 100), (elbownode.position.y + 30), 5);
} else {
if (_arg2 == "right"){
armconstraintnode = new CircleParticle((elbownode.position.x + 70), (elbownode.position.y - 70), 5);
_local6 = new CircleParticle((elbownode.position.x - 70), (elbownode.position.y - 50), 5);
shoulderconstraintnode = new CircleParticle((elbownode.position.x + 100), (elbownode.position.y + 30), 5);
};
};
armconstraintnode.collidable = false;
_local6.collidable = false;
shoulderconstraintnode.collidable = false;
armconstraintnode.visible = false;
_local6.visible = false;
shoulderconstraintnode.visible = false;
addParticle(armconstraintnode);
addParticle(_local6);
addParticle(shoulderconstraintnode);
_local7 = new SpringConstraint(elbownode, armconstraintnode, 1);
_local8 = new SpringConstraint(shoulder, armconstraintnode, 1);
_local9 = new SpringConstraint(elbownode, _local6, 1);
_local10 = new SpringConstraint(shoulder, _local6, 1);
_local11 = new SpringConstraint(armconstraintnode, _local6, 1);
_local12 = new SpringConstraint(shoulder, shoulderconstraintnode, 1);
_local13 = new SpringConstraint(elbownode, shoulderconstraintnode, 1);
elbowbendconstraint = new SpringConstraint(armconstraintnode, _local4, 0.5);
elbowbendconstraint2 = new SpringConstraint(_local6, _local4, 0.5);
_local7.visible = false;
_local8.visible = false;
_local9.visible = false;
_local10.visible = false;
_local11.visible = false;
_local12.visible = false;
_local13.visible = false;
elbowbendconstraint.visible = false;
elbowbendconstraint2.visible = false;
addConstraint(_local7);
addConstraint(_local8);
addConstraint(_local9);
addConstraint(_local10);
addConstraint(_local11);
addConstraint(_local12);
addConstraint(_local13);
addConstraint(elbowbendconstraint);
addConstraint(elbowbendconstraint2);
shoulderEmitter = new bloodEmitter(gameworld.baseLayer);
shoulderEmitter.updateConditions(shoulder.position.x, shoulder.position.y, arm.angle);
elbowEmitter = new bloodEmitter(gameworld.baseLayer);
elbowEmitter.updateConditions(elbow.position.x, elbow.position.y, forearm.angle);
elbowNodeEmitter = new bloodEmitter(gameworld.baseLayer);
elbowNodeEmitter.updateConditions(elbownode.position.x, elbownode.position.y, arm.angle);
elbowBroken = false;
shoulderBroken = false;
}
public function run():void{
shoulderEmitter.updateConditions(shoulder.position.x, shoulder.position.y, arm.angle);
elbowEmitter.updateConditions(elbow.position.x, elbow.position.y, forearm.angle);
elbowNodeEmitter.updateConditions(elbownode.position.x, elbownode.position.y, arm.angle);
}
public function clean():void{
shoulderEmitter.clean();
elbowEmitter.clean();
elbowNodeEmitter.clean();
}
}
}//package
Section 25
//BadaBoom (BadaBoom)
package {
import flash.text.*;
public dynamic class BadaBoom extends Font {
}
}//package
Section 26
//bloodEmitter (bloodEmitter)
package {
import flash.display.*;
public class bloodEmitter extends MovieClip {
public var bloodPool:Array;
private var poolSize:Number;// = 20
private var stopSprayBool:Boolean;// = false
public var emitterLife:Number;// = 50
static const VELY:int = 1;
static const VELX:int = 0;
static const LIFE:int = 2;
static const ACTIVE:int = 3;
static const ROTATION:int = 4;
public function bloodEmitter(_arg1){
var _local2:int;
poolSize = 20;
stopSprayBool = false;
emitterLife = 50;
super();
bloodPool = new Array();
_local2 = 0;
while (_local2 < poolSize) {
bloodPool[_local2] = new bloodparticle();
_arg1.addChild(bloodPool[_local2]);
bloodPool[_local2].visible = false;
bloodPool[_local2].x = this.x;
bloodPool[_local2].y = this.y;
bloodPool[_local2][VELX] = 0;
bloodPool[_local2][VELY] = -4;
bloodPool[_local2][LIFE] = 100;
bloodPool[_local2][ACTIVE] = false;
bloodPool[_local2][ROTATION] = 0;
_local2++;
};
}
private function resetParticle(_arg1, _arg2:int):void{
_arg1.x = this.x;
_arg1.y = this.y;
_arg1[VELX] = 0;
_arg1[VELY] = -4;
_arg1[LIFE] = 100;
_arg1[ROTATION] = this.rotation;
if (stopSprayBool){
_arg1[ACTIVE] = false;
_arg1.visible = false;
};
}
public function clean():void{
var _local1:*;
var _local2:int;
_local1 = gameworld.baseLayer;
_local2 = 0;
while (_local2 < poolSize) {
_local1.removeChild(bloodPool[_local2]);
_local2++;
};
}
public function startSpray():void{
bloodPool[0].visible = true;
bloodPool[0][ACTIVE] = true;
bloodPool[0].x = this.x;
bloodPool[0].y = this.y;
stopSprayBool = false;
}
public function updateConditions(_arg1:Number, _arg2:Number, _arg3:Number):void{
this.x = _arg1;
this.y = _arg2;
this.rotation = _arg3;
run();
}
public function run():void{
var _local1:int;
if (((!(bloodPool[0][ACTIVE])) && (!(stopSprayBool)))){
return;
};
if (--emitterLife == 0){
stopSpray();
};
if (emitterLife < 0){
emitterLife = -1;
};
_local1 = 0;
for (;_local1 < poolSize;_local1++) {
if (((!(bloodPool[_local1][ACTIVE])) && (stopSprayBool))){
continue;
} else {
if (!bloodPool[_local1][ACTIVE]){
return;
};
};
if (((((!(bloodPool[(poolSize - 1)][ACTIVE])) && (!((_local1 == (poolSize - 1)))))) && ((bloodPool[_local1][LIFE] < 95)))){
if (!bloodPool[(_local1 + 1)][ACTIVE]){
bloodPool[(_local1 + 1)].visible = true;
bloodPool[(_local1 + 1)][ACTIVE] = true;
bloodPool[(_local1 + 1)][ROTATION] = this.rotation;
bloodPool[(_local1 + 1)].x = this.x;
bloodPool[(_local1 + 1)].y = this.y;
};
};
if (bloodPool[_local1].y > 460){
bloodPool[_local1][VELY] = 0;
bloodPool[_local1][VELX] = 0;
};
bloodPool[_local1].x = (bloodPool[_local1].x + bloodPool[_local1][VELX]);
bloodPool[_local1].y = (bloodPool[_local1].y + bloodPool[_local1][VELY]);
bloodPool[_local1].rotation = bloodPool[_local1][ROTATION];
bloodPool[_local1][VELY] = (bloodPool[_local1][VELY] + 0.25);
var _local2 = bloodPool[_local1];
var _local3 = LIFE;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
if (_local4 < 0){
resetParticle(bloodPool[_local1], _local1);
};
};
}
public function stopSpray():void{
stopSprayBool = true;
}
}
}//package
Section 27
//bloodparticle (bloodparticle)
package {
import flash.display.*;
public dynamic class bloodparticle extends MovieClip {
public function bloodparticle(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
gotoAndStop(Math.round((Math.random() * this.totalFrames)));
}
}
}//package
Section 28
//bodyComposite (bodyComposite)
package {
import org.cove.ape.*;
public class bodyComposite extends Composite {
var myheight:Number;
public var rightShoulderEmitter:bloodEmitter;
public var righthipnode:CircleParticle;
public var neckEmitter:bloodEmitter;
public var headnode:CircleParticle;
public var leftShoulderEmitter:bloodEmitter;
public var leftshouldernode:CircleParticle;
var mywidth:Number;
public var lefthipnode:CircleParticle;
var body:SpringConstraint;
public var bottomnode:CircleParticle;
public var rightshouldernode:CircleParticle;
public function bodyComposite(_arg1:Vector, _arg2:int){
var _local3:SpringConstraint;
var _local4:SpringConstraint;
var _local5:SpringConstraint;
var _local6:SpringConstraint;
var _local7:SpringConstraint;
var _local8:SpringConstraint;
var _local9:SpringConstraint;
var _local10:SpringConstraint;
var _local11:SpringConstraint;
var _local12:SpringConstraint;
var _local13:SpringConstraint;
var _local14:SpringConstraint;
var _local15:SpringConstraint;
var _local16:SpringConstraint;
var _local17:*;
super();
mywidth = 90;
myheight = 120;
headnode = new CircleParticle(_arg1.x, (_arg1.y - (myheight / 2)), 5);
bottomnode = new CircleParticle(_arg1.x, (_arg1.y + (myheight / 2)), 5);
leftshouldernode = new CircleParticle((_arg1.x - (mywidth / 2)), (_arg1.y - (myheight / 2)), 5);
rightshouldernode = new CircleParticle((_arg1.x + (mywidth / 2)), (_arg1.y - (myheight / 2)), 5);
lefthipnode = new CircleParticle((_arg1.x - (mywidth / 2)), (_arg1.y + (myheight / 2)), 5);
righthipnode = new CircleParticle((_arg1.x + (mywidth / 2)), (_arg1.y + (myheight / 2)), 5);
headnode.visible = false;
bottomnode.visible = false;
leftshouldernode.visible = false;
rightshouldernode.visible = false;
lefthipnode.visible = false;
righthipnode.visible = false;
headnode.collidable = false;
bottomnode.visible = false;
bottomnode.collidable = false;
leftshouldernode.friction = 0.9;
rightshouldernode.friction = 0.9;
lefthipnode.friction = 0.9;
righthipnode.friction = 0.9;
addParticle(headnode);
addParticle(bottomnode);
addParticle(leftshouldernode);
addParticle(rightshouldernode);
addParticle(lefthipnode);
addParticle(righthipnode);
body = new SpringConstraint(headnode, bottomnode, 1, true, mywidth, (_arg2 + "body"));
_local3 = new SpringConstraint(leftshouldernode, headnode, 1);
_local4 = new SpringConstraint(rightshouldernode, headnode, 1);
_local5 = new SpringConstraint(lefthipnode, bottomnode, 1);
_local6 = new SpringConstraint(righthipnode, bottomnode, 1);
_local7 = new SpringConstraint(leftshouldernode, lefthipnode, 1);
_local8 = new SpringConstraint(rightshouldernode, righthipnode, 1);
_local9 = new SpringConstraint(leftshouldernode, bottomnode, 1);
_local10 = new SpringConstraint(headnode, lefthipnode, 1);
_local11 = new SpringConstraint(rightshouldernode, lefthipnode, 1);
_local12 = new SpringConstraint(rightshouldernode, bottomnode, 1);
_local13 = new SpringConstraint(headnode, righthipnode, 1);
_local14 = new SpringConstraint(leftshouldernode, righthipnode, 1);
_local15 = new SpringConstraint(leftshouldernode, rightshouldernode, 1);
_local16 = new SpringConstraint(lefthipnode, righthipnode, 1);
_local17 = new bodyimage();
body.setDisplay(_local17);
_local3.visible = false;
_local4.visible = false;
_local5.visible = false;
_local6.visible = false;
_local7.visible = false;
_local8.visible = false;
_local9.visible = false;
_local10.visible = false;
_local11.visible = false;
_local12.visible = false;
_local13.visible = false;
_local14.visible = false;
_local15.visible = false;
_local16.visible = false;
addConstraint(body);
addConstraint(_local3);
addConstraint(_local4);
addConstraint(_local5);
addConstraint(_local6);
addConstraint(_local7);
addConstraint(_local8);
addConstraint(_local9);
addConstraint(_local10);
addConstraint(_local11);
addConstraint(_local12);
addConstraint(_local13);
addConstraint(_local14);
addConstraint(_local15);
addConstraint(_local16);
leftShoulderEmitter = new bloodEmitter(gameworld.baseLayer);
leftShoulderEmitter.updateConditions(leftshouldernode.position.x, leftshouldernode.position.y, body.angle);
rightShoulderEmitter = new bloodEmitter(gameworld.baseLayer);
rightShoulderEmitter.updateConditions(rightshouldernode.position.x, rightshouldernode.position.y, body.angle);
neckEmitter = new bloodEmitter(gameworld.baseLayer);
neckEmitter.updateConditions(headnode.position.x, headnode.position.y, body.angle);
}
public function clean():void{
leftShoulderEmitter.clean();
rightShoulderEmitter.clean();
neckEmitter.clean();
}
public function run():void{
leftShoulderEmitter.updateConditions(leftshouldernode.position.x, leftshouldernode.position.y, body.angle);
rightShoulderEmitter.updateConditions(rightshouldernode.position.x, rightshouldernode.position.y, body.angle);
neckEmitter.updateConditions(headnode.position.x, headnode.position.y, body.angle);
}
}
}//package
Section 29
//bodyimage (bodyimage)
package {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.text.*;
import flash.media.*;
import flash.system.*;
import flash.utils.*;
import flash.ui.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class bodyimage extends MovieClip {
public var c1:MovieClip;
public var c3:MovieClip;
public var c4:MovieClip;
public var c5:MovieClip;
public var c2:MovieClip;
public var totalNum:Number;
public function bodyimage(){
addFrameScript(0, frame1);
}
function frame1(){
this.addEventListener(Event.ENTER_FRAME, run);
totalNum = 5;
}
public function run(_arg1:Event){
var _local2:Number;
if (parent.parent == null){
this.removeEventListener(Event.ENTER_FRAME, run);
return;
};
_local2 = 1;
while (_local2 <= totalNum) {
this[("c" + _local2)].rotation = (parent.parent.rotation * -1);
_local2++;
};
}
}
}//package
Section 30
//bonebreakSound (bonebreakSound)
package {
import flash.media.*;
public dynamic class bonebreakSound extends Sound {
}
}//package
Section 31
//cameraShake (cameraShake)
package {
import flash.display.*;
public dynamic class cameraShake extends MovieClip {
public var box:MovieClip;
public function cameraShake(){
addFrameScript(0, frame1);
}
function frame1(){
gameworld.baseLayer.x = 0;
gameworld.baseLayer.y = 0;
stop();
}
}
}//package
Section 32
//fighter (fighter)
package {
import org.cove.ape.*;
import flash.events.*;
import flash.text.*;
public class fighter extends Group {
private var head:CircleParticle;
public var rightElbowPic:joint;
private var rightelbowconnector:SpringConstraint;
private var LeftKnee:Boolean;
public var rightShoulderPic:joint;
private var leftlimit:SpringConstraint;
private var rightarmsupport:SpringConstraint;
private var rightlimit:SpringConstraint;
private var rightlegconnector:SpringConstraint;
public var headpicture:headimage;
private var RightElbow:Boolean;
private var rightthighconnector:SpringConstraint;
private var leftkneelimit:SpringConstraint;
private var leftarmsupport:SpringConstraint;
public var leftShoulderPic:joint;
public var executeJointActionBool:Boolean;
public var leftKneePic:joint;
public var playLightPunch:Boolean;
private var neck:SpringConstraint;
private var RightKnee:Boolean;
private var rightleg:legComposite;
private var headEmitter:bloodEmitter;
private var splitlimit2:SpringConstraint;
public var leftHipPic:joint;
private var leftlegconnector:SpringConstraint;
public var rightKneePic:joint;
private var necksupportright:SpringConstraint;
private var rightarmconnector:SpringConstraint;
public var score:int;
private var necksupportleft:SpringConstraint;
private var riselimit:SpringConstraint;
public var posVec:Vector;
private var body:bodyComposite;
private var leftleg:legComposite;
private var riselimitleft:SpringConstraint;
private var leftelbowconnector:SpringConstraint;
public var rightHipPic:joint;
public var bonebreak:bonebreakSound;
private var rightkneelimit:SpringConstraint;
private var rightarm:armComposite;
private var RightShoulder:Boolean;
private var riselimitright:SpringConstraint;
private var leftthighconnector:SpringConstraint;
private var headBroken:Boolean;
public var heavypunch:heavypunchSound;
public var scoreDisplay:textr;
public var lightpunch:lightpunchSound;
private var jointPress:Array;
private var LeftElbow:Boolean;
private var riselimit2:SpringConstraint;
private var splitlimit:SpringConstraint;
private var LeftShoulder:Boolean;
public var fighterName:String;
public var leftElbowPic:joint;
private var LeftHip:Boolean;
private var RightHip:Boolean;
private var leftarm:armComposite;
private var leftarmconnector:SpringConstraint;
private var riselimit3:SpringConstraint;
public var playHeavyPunch:Boolean;
public var mytype:Number;
static const RIGHT_ELBOW_PRESS:int = 5;
static const RIGHT_SHOLDER_PRESS:int = 7;
static const RIGHT_KNEE_PRESS:int = 3;
static const LEFT_SHOLDER_PRESS:int = 6;
static const LEFT_ELBOW_PRESS:int = 4;
static const RIGHT_HIP_PRESS:int = 1;
static const LEFT_HIP_PRESS:int = 0;
static const LEFT_KNEE_PRESS:int = 2;
public function fighter(_arg1:Vector, _arg2:Number=1){
executeJointActionBool = false;
jointPress = new Array();
jointPress[LEFT_HIP_PRESS] = 0;
jointPress[RIGHT_HIP_PRESS] = 0;
jointPress[LEFT_KNEE_PRESS] = 0;
jointPress[RIGHT_KNEE_PRESS] = 0;
jointPress[LEFT_ELBOW_PRESS] = 0;
jointPress[RIGHT_ELBOW_PRESS] = 0;
jointPress[LEFT_SHOLDER_PRESS] = 0;
jointPress[RIGHT_SHOLDER_PRESS] = 0;
RightHip = false;
LeftHip = false;
RightKnee = true;
LeftKnee = true;
RightShoulder = false;
LeftShoulder = false;
RightElbow = true;
LeftElbow = true;
this.posVec = _arg1;
body = new bodyComposite(posVec, _arg2);
addComposite(body);
rightarm = new armComposite(body.rightshouldernode.position, "right", _arg2);
addComposite(rightarm);
rightarmconnector = new SpringConstraint(body.rightshouldernode, rightarm.shoulder, 1);
rightarmsupport = new SpringConstraint(body.lefthipnode, rightarm.elbownode, 0.15);
rightelbowconnector = new SpringConstraint(body.righthipnode, rightarm.shoulderconstraintnode, 0.5);
rightarmconnector.visible = false;
rightarmsupport.visible = false;
rightelbowconnector.visible = false;
addConstraint(rightarmconnector);
addConstraint(rightarmsupport);
addConstraint(rightelbowconnector);
leftarm = new armComposite(body.leftshouldernode.position, "left", _arg2);
addComposite(leftarm);
leftarmconnector = new SpringConstraint(body.leftshouldernode, leftarm.shoulder, 1);
leftarmsupport = new SpringConstraint(body.righthipnode, leftarm.elbownode, 0.15);
leftelbowconnector = new SpringConstraint(body.lefthipnode, leftarm.shoulderconstraintnode, 0.5);
leftarmconnector.visible = false;
leftarmsupport.visible = false;
leftelbowconnector.visible = false;
addConstraint(leftarmconnector);
addConstraint(leftarmsupport);
addConstraint(leftelbowconnector);
rightleg = new legComposite(body.righthipnode.position, "right", _arg2);
addComposite(rightleg);
rightlegconnector = new SpringConstraint(body.righthipnode, rightleg.hip, 1.5);
rightlimit = new SpringConstraint(body.leftshouldernode, rightleg.kneenode, 0.5);
rightkneelimit = new SpringConstraint(body.leftshouldernode, rightleg.ankle, 0.2);
rightthighconnector = new SpringConstraint(body.rightshouldernode, rightleg.thighConstraintNode, 0.5);
rightlegconnector.visible = false;
rightlimit.visible = false;
rightkneelimit.visible = false;
rightthighconnector.visible = false;
addConstraint(rightlegconnector);
addConstraint(rightlimit);
addConstraint(rightkneelimit);
addConstraint(rightthighconnector);
leftleg = new legComposite(body.lefthipnode.position, "left", _arg2);
addComposite(leftleg);
leftlegconnector = new SpringConstraint(body.lefthipnode, leftleg.hip, 1.5);
leftlimit = new SpringConstraint(body.rightshouldernode, leftleg.kneenode, 0.5);
leftkneelimit = new SpringConstraint(body.rightshouldernode, leftleg.ankle, 0.2);
leftthighconnector = new SpringConstraint(body.leftshouldernode, leftleg.thighConstraintNode, 0.5);
leftlegconnector.visible = false;
leftlimit.visible = false;
leftkneelimit.visible = false;
leftthighconnector.visible = false;
addConstraint(leftlegconnector);
addConstraint(leftlimit);
addConstraint(leftkneelimit);
addConstraint(leftthighconnector);
riselimit = new SpringConstraint(leftarm.shoulder, rightarm.shoulder, 2);
riselimitleft = new SpringConstraint(leftarm.elbownode, body.lefthipnode, 0.09);
riselimitright = new SpringConstraint(rightarm.elbownode, body.righthipnode, 0.09);
riselimit2 = new SpringConstraint(leftarm.fist, rightarm.fist, 0.015);
riselimit3 = new SpringConstraint(leftarm.shoulder, rightarm.shoulder, 1);
riselimit.visible = false;
riselimitleft.visible = false;
riselimitright.visible = false;
riselimit2.visible = false;
riselimit3.visible = false;
addConstraint(riselimit);
addConstraint(riselimitleft);
addConstraint(riselimitright);
splitlimit = new SpringConstraint(leftleg.kneenode, rightleg.kneenode, 0.05);
splitlimit2 = new SpringConstraint(leftleg.ankle, rightleg.ankle, 0.015);
splitlimit.visible = false;
splitlimit2.visible = false;
createHead(_arg2);
this.mytype = _arg2;
placeJoints();
score = 0;
scoreDisplay = new textr("");
scoreDisplay.y = 20;
switch (_arg2){
case 1:
fighterName = "Tori";
scoreDisplay.align = "left";
scoreDisplay.color = 0xFF0000;
scoreDisplay.x = 70;
break;
case 2:
fighterName = "Uke";
scoreDisplay.align = "right";
scoreDisplay.color = 0xFF;
scoreDisplay.x = (gameworld.getStage().stageWidth - 130);
scoreDisplay.x = (750 - 70);
break;
};
scoreDisplay.str = ((fighterName + "\n") + score);
gameworld.baseLayer.addChild(scoreDisplay);
scoreDisplay.visible = false;
headBroken = false;
playHeavyPunch = false;
playLightPunch = false;
bonebreak = new bonebreakSound();
lightpunch = new lightpunchSound();
heavypunch = new heavypunchSound();
}
public function contractLeftShoulder(){
LeftShoulder = false;
leftShoulderPic.marker.visible = false;
leftShoulderPic.selector.arrowCCW.visible = false;
leftShoulderPic.selector.arrowCW.visible = true;
if (jointPress[LEFT_SHOLDER_PRESS] > -1){
var _local1 = jointPress;
var _local2 = LEFT_SHOLDER_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function extendLeftShoulder(){
LeftShoulder = true;
leftShoulderPic.marker.visible = true;
leftShoulderPic.selector.arrowCW.visible = false;
leftShoulderPic.selector.arrowCCW.visible = true;
if (jointPress[LEFT_SHOLDER_PRESS] < 1){
var _local1 = jointPress;
var _local2 = LEFT_SHOLDER_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function contractRightHip(){
RightHip = false;
rightHipPic.marker.visible = false;
rightHipPic.selector.arrowCW.visible = false;
rightHipPic.selector.arrowCCW.visible = true;
if (jointPress[RIGHT_HIP_PRESS] > -1){
var _local1 = jointPress;
var _local2 = RIGHT_HIP_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function mouseover(_arg1:Number, _arg2:Number):void{
if (gameworld.game.getState() == gameworld.PLAYSTATE){
gameworld.game.addGuideLines("Hit Space when ready with move");
};
if (gameworld.game.getState() == gameworld.ONLINESTATE){
gameworld.game.addGuideLines("Press space to upload move");
};
if (rightHipPic.hitTestPoint(_arg1, _arg2, true)){
rightHipPic.selector.visible = true;
if (RightHip){
gameworld.game.addGuideLines("Extending Right Hip ");
} else {
gameworld.game.addGuideLines("Contracting Right Hip ");
};
} else {
rightHipPic.selector.visible = false;
};
if (rightKneePic.hitTestPoint(_arg1, _arg2, true)){
rightKneePic.selector.visible = true;
if (RightKnee){
gameworld.game.addGuideLines("Extending Right Knee ");
} else {
gameworld.game.addGuideLines("Contracting Right Knee ");
};
} else {
rightKneePic.selector.visible = false;
};
if (leftHipPic.hitTestPoint(_arg1, _arg2, true)){
leftHipPic.selector.visible = true;
if (LeftHip){
gameworld.game.addGuideLines("Extending Left Hip ");
} else {
gameworld.game.addGuideLines("Contracting Left Hip ");
};
} else {
leftHipPic.selector.visible = false;
};
if (leftKneePic.hitTestPoint(_arg1, _arg2, true)){
leftKneePic.selector.visible = true;
if (LeftKnee){
gameworld.game.addGuideLines("Extending Left Knee ");
} else {
gameworld.game.addGuideLines("Contracting Left Knee ");
};
} else {
leftKneePic.selector.visible = false;
};
if (rightShoulderPic.hitTestPoint(_arg1, _arg2, true)){
rightShoulderPic.selector.visible = true;
if (RightShoulder){
gameworld.game.addGuideLines("Extending Right Shoulder ");
} else {
gameworld.game.addGuideLines("Contracting Right Shoulder ");
};
} else {
rightShoulderPic.selector.visible = false;
};
if (rightElbowPic.hitTestPoint(_arg1, _arg2, true)){
rightElbowPic.selector.visible = true;
if (RightElbow){
gameworld.game.addGuideLines("Extending Right Elbow");
} else {
gameworld.game.addGuideLines("Contracting Right Elbow");
};
} else {
rightElbowPic.selector.visible = false;
};
if (leftShoulderPic.hitTestPoint(_arg1, _arg2, true)){
leftShoulderPic.selector.visible = true;
if (LeftShoulder){
gameworld.game.addGuideLines("Extending Left Shoulder");
} else {
gameworld.game.addGuideLines("Contracting Left Shoulder");
};
} else {
leftShoulderPic.selector.visible = false;
};
if (leftElbowPic.hitTestPoint(_arg1, _arg2, true)){
leftElbowPic.selector.visible = true;
if (LeftElbow){
gameworld.game.addGuideLines("Extending Left Elbow");
} else {
gameworld.game.addGuideLines("Contracting Left Elbow");
};
} else {
leftElbowPic.selector.visible = false;
};
}
public function extendLeftElbow(){
LeftElbow = true;
leftElbowPic.marker.visible = false;
leftElbowPic.selector.arrowCCW.visible = false;
leftElbowPic.selector.arrowCW.visible = true;
if (jointPress[LEFT_ELBOW_PRESS] < 1){
var _local1 = jointPress;
var _local2 = LEFT_ELBOW_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function contractLeftElbow(){
LeftElbow = false;
leftElbowPic.marker.visible = true;
leftElbowPic.selector.arrowCW.visible = false;
leftElbowPic.selector.arrowCCW.visible = true;
if (jointPress[LEFT_ELBOW_PRESS] > -1){
var _local1 = jointPress;
var _local2 = LEFT_ELBOW_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
private function calculateScore():void{
var _local1:AbstractParticle;
var _local2:AbstractParticle;
var _local3:AbstractParticle;
var _local4:AbstractParticle;
var _local5:Number;
var _local6:Number;
var _local7:Boolean;
var _local8:int;
var _local9:Vector;
var _local10:*;
var _local11:fighter;
var _local12:Boolean;
var _local13:Boolean;
_local7 = false;
_local8 = 0;
while (_local8 < CollisionDetector.collisionPairs.length) {
_local1 = CollisionDetector.collisionPairs[_local8].obj1;
_local2 = CollisionDetector.collisionPairs[_local8].obj2;
if ((((_local1.instanceName == "Floor")) || ((_local2.instanceName == "Floor")))){
} else {
if (_local1.instanceName.charAt(0) == this.mytype.toString()){
_local3 = _local1;
_local4 = _local2;
} else {
_local3 = _local2;
_local4 = _local1;
};
if (_local3.velocity.magnitude() < 1.5){
} else {
if (_local3.velocity.magnitude() > 5){
_local7 = true;
gameworld.game.camShake.play();
};
_local9 = _local3.center.minus(_local4.center);
_local10 = _local9.plus(_local3.velocity);
if (_local10.magnitude() > _local9.magnitude()){
if (_local7){
heavypunch.play();
};
} else {
_local5 = parseInt(_local4.instanceName.charAt(0));
if (gameworld.game.player.mytype == _local5){
_local11 = gameworld.game.player;
} else {
_local11 = gameworld.game.villian;
};
_local6 = 4;
if ((((_local3.instanceName == (mytype + "leftFist"))) || ((_local3.instanceName == (mytype + "rightFist"))))){
_local6 = 2.7;
};
_local12 = (_local3.velocity.magnitude() > _local6);
if (_local3.velocity.magnitude() > 1.5){
if (_local4.instanceName == (_local5 + "rightHip")){
_local11.rightHipPic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakRightLeg();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "leftHip")){
_local11.leftHipPic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakLeftLeg();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "rightKnee")){
_local11.rightKneePic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakRightKnee();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "leftKnee")){
_local11.leftKneePic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakLeftKnee();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "rightElbow")){
_local11.rightElbowPic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakRightElbow();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "leftElbow")){
_local11.leftElbowPic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakLeftElbow();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "rightShoulder")){
_local11.rightShoulderPic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakRightArm();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "leftShoulder")){
_local11.leftShoulderPic.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakLeftArm();
this.score = (this.score + 2000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "head")){
_local11.headpicture.injured.gotoAndPlay(1);
if (_local12){
_local13 = _local11.breakHead();
this.score = (this.score + 5000);
gameworld.game.camShake.play();
};
} else {
if (_local4.instanceName == (_local5 + "rightArm")){
_local11.rightarm.armPicture.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "leftArm")){
_local11.leftarm.armPicture.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "rightForeArm")){
_local11.rightarm.forearmpic.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "leftForeArm")){
_local11.leftarm.forearmpic.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "rightThigh")){
_local11.rightleg.thighPicture.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "leftThigh")){
_local11.leftleg.thighPicture.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "rightLeg")){
_local11.rightleg.legPicture.injured.gotoAndPlay(2);
} else {
if (_local4.instanceName == (_local5 + "leftLeg")){
_local11.leftleg.legPicture.injured.gotoAndPlay(2);
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
if (((((!(playHeavyPunch)) && (!(_local12)))) && ((_local3.velocity.magnitude() > 5)))){
playHeavyPunch = true;
heavypunch.play();
} else {
if (((!(playLightPunch)) && (!(_local12)))){
playLightPunch = true;
lightpunch.play();
};
};
this.score = (this.score + (_local3.velocity.magnitude() * 100));
};
};
};
_local8++;
};
scoreDisplay.str = ((fighterName + "\n") + score);
}
public function getScore():Number{
return (score);
}
private function placeJoints(){
var _local1:Number;
_local1 = 3;
rightShoulderPic = new joint();
rightShoulderPic.width = ((rightarm.shoulder.radius * 2) + _local1);
rightShoulderPic.height = rightShoulderPic.width;
rightShoulderPic.instanceName = "rightShoulder";
rightShoulderPic.selector.arrowCW.visible = false;
gameworld.baseLayer.addChild(rightShoulderPic);
rightElbowPic = new joint();
rightElbowPic.width = ((rightarm.elbow.radius * 2) + (_local1 * 2));
rightElbowPic.height = rightElbowPic.width;
rightElbowPic.instanceName = "rightElbow";
rightElbowPic.selector.arrowCW.visible = false;
gameworld.baseLayer.addChild(rightElbowPic);
leftShoulderPic = new joint();
leftShoulderPic.width = ((leftarm.shoulder.radius * 2) + _local1);
leftShoulderPic.height = leftShoulderPic.width;
leftShoulderPic.instanceName = "leftShoulder";
leftShoulderPic.selector.arrowCCW.visible = false;
gameworld.baseLayer.addChild(leftShoulderPic);
leftElbowPic = new joint();
leftElbowPic.width = ((leftarm.elbow.radius * 2) + (_local1 * 2));
leftElbowPic.height = leftElbowPic.width;
leftElbowPic.instanceName = "leftElbow";
leftElbowPic.selector.arrowCCW.visible = false;
gameworld.baseLayer.addChild(leftElbowPic);
rightHipPic = new joint();
rightHipPic.width = ((rightleg.hip.radius * 2) + _local1);
rightHipPic.height = rightHipPic.width;
rightHipPic.instanceName = "rightHipPic";
rightHipPic.selector.arrowCW.visible = false;
gameworld.baseLayer.addChild(rightHipPic);
rightKneePic = new joint();
rightKneePic.width = ((rightleg.knee.radius * 2) + (_local1 * 2));
rightKneePic.height = rightKneePic.width;
rightKneePic.instanceName = "rightKnee";
rightKneePic.selector.arrowCCW.visible = false;
gameworld.baseLayer.addChild(rightKneePic);
leftHipPic = new joint();
leftHipPic.width = ((leftleg.hip.radius * 2) + _local1);
leftHipPic.height = leftHipPic.width;
leftHipPic.instanceName = "leftHip";
leftHipPic.selector.arrowCCW.visible = false;
gameworld.baseLayer.addChild(leftHipPic);
leftKneePic = new joint();
leftKneePic.width = ((leftleg.knee.radius * 2) + (_local1 * 2));
leftKneePic.height = leftKneePic.width;
leftKneePic.instanceName = "leftKnee";
leftKneePic.selector.arrowCW.visible = false;
gameworld.baseLayer.addChild(leftKneePic);
rightHipPic.gotoAndStop(mytype);
leftHipPic.gotoAndStop(mytype);
rightKneePic.gotoAndStop(mytype);
leftKneePic.gotoAndStop(mytype);
rightShoulderPic.gotoAndStop(mytype);
leftShoulderPic.gotoAndStop(mytype);
rightElbowPic.gotoAndStop(mytype);
leftElbowPic.gotoAndStop(mytype);
}
public function breakLeftKnee():Boolean{
leftleg.kneeEmitter.startSpray();
leftleg.kneeEmitter.emitterLife = 200;
leftleg.kneeNodeEmitter.startSpray();
leftleg.kneeNodeEmitter.emitterLife = 200;
leftleg.removeConstraint(leftleg.kneeconnector);
leftleg.removeConstraint(leftleg.kneebendConstraint);
leftleg.removeConstraint(leftleg.kneebendConstraint2);
leftleg.removeConstraint(leftleg.kneeConstraint1);
leftleg.removeConstraint(leftleg.kneeConstraint2);
this.removeConstraint(leftkneelimit);
this.removeConstraint(splitlimit2);
if (!leftleg.kneeBroken){
bonebreak.play();
leftleg.kneeBroken = true;
return (true);
};
return (false);
}
public function extendRightHip(){
RightHip = true;
rightHipPic.marker.visible = true;
rightHipPic.selector.arrowCCW.visible = false;
rightHipPic.selector.arrowCW.visible = true;
if (jointPress[RIGHT_HIP_PRESS] < 1){
var _local1 = jointPress;
var _local2 = RIGHT_HIP_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function contractLeftKnee(){
LeftKnee = false;
leftKneePic.marker.visible = true;
leftKneePic.selector.arrowCCW.visible = false;
leftKneePic.selector.arrowCW.visible = true;
if (jointPress[LEFT_KNEE_PRESS] > -1){
var _local1 = jointPress;
var _local2 = LEFT_KNEE_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function mouseAction(_arg1:Number, _arg2:Number):void{
if (rightHipPic.hitTestPoint(_arg1, _arg2, true)){
if (RightHip){
contractRightHip();
gameworld.game.addGuideLines("Contracting Right Hip ");
} else {
extendRightHip();
gameworld.game.addGuideLines("Extending Right Hip ");
};
};
if (rightKneePic.hitTestPoint(_arg1, _arg2, true)){
if (RightKnee){
contractRightKnee();
gameworld.game.addGuideLines("Contracting Right Knee ");
} else {
extendRightKnee();
gameworld.game.addGuideLines("Extending Right Knee ");
};
};
if (leftHipPic.hitTestPoint(_arg1, _arg2, true)){
if (LeftHip){
contractLeftHip();
gameworld.game.addGuideLines("Contracting Left Hip ");
} else {
extendLeftHip();
gameworld.game.addGuideLines("Extending Left Hip ");
};
};
if (leftKneePic.hitTestPoint(_arg1, _arg2, true)){
if (LeftKnee){
contractLeftKnee();
gameworld.game.addGuideLines("Contracting Left Knee ");
} else {
extendLeftKnee();
gameworld.game.addGuideLines("Extending Left Knee ");
};
};
if (rightShoulderPic.hitTestPoint(_arg1, _arg2, true)){
if (RightShoulder){
contractRightShoulder();
gameworld.game.addGuideLines("Contracting Right Shoulder ");
} else {
extendRightShoulder();
gameworld.game.addGuideLines("Extending Right Shoulder ");
};
};
if (rightElbowPic.hitTestPoint(_arg1, _arg2, true)){
if (RightElbow){
contractRightElbow();
gameworld.game.addGuideLines("Contracting Right Elbow ");
} else {
extendRightElbow();
gameworld.game.addGuideLines("Extending Right Elbow ");
};
};
if (leftShoulderPic.hitTestPoint(_arg1, _arg2, true)){
if (LeftShoulder){
contractLeftShoulder();
gameworld.game.addGuideLines("Contracting Left Shoulder ");
} else {
extendLeftShoulder();
gameworld.game.addGuideLines("Extending Left Shoulder ");
};
};
if (leftElbowPic.hitTestPoint(_arg1, _arg2, true)){
if (LeftElbow){
contractLeftElbow();
gameworld.game.addGuideLines("Contracting Left Elbow ");
} else {
extendLeftElbow();
gameworld.game.addGuideLines("Extending Left Elbow ");
};
};
}
public function clean():void{
gameworld.baseLayer.removeChild(rightHipPic);
gameworld.baseLayer.removeChild(rightKneePic);
gameworld.baseLayer.removeChild(leftHipPic);
gameworld.baseLayer.removeChild(leftKneePic);
gameworld.baseLayer.removeChild(rightShoulderPic);
gameworld.baseLayer.removeChild(rightElbowPic);
gameworld.baseLayer.removeChild(leftShoulderPic);
gameworld.baseLayer.removeChild(leftElbowPic);
gameworld.baseLayer.removeChild(scoreDisplay);
body.clean();
rightleg.clean();
leftleg.clean();
leftarm.clean();
rightarm.clean();
headEmitter.clean();
if (mytype == 1){
headpicture.removeEventListener(Event.ENTER_FRAME, headpicture.runplayer);
} else {
if (mytype == 2){
headpicture.removeEventListener(Event.ENTER_FRAME, headpicture.runvillian);
};
};
}
public function extendLeftKnee(){
LeftKnee = true;
leftKneePic.marker.visible = false;
leftKneePic.selector.arrowCW.visible = false;
leftKneePic.selector.arrowCCW.visible = true;
if (jointPress[LEFT_KNEE_PRESS] < 1){
var _local1 = jointPress;
var _local2 = LEFT_KNEE_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function setJoinArray(_arg1:Array):void{
var _local2:Number;
RightHip = false;
LeftHip = false;
RightKnee = false;
LeftKnee = false;
RightShoulder = false;
LeftShoulder = false;
RightElbow = false;
LeftElbow = false;
_local2 = 0;
while (_local2 < _arg1.length) {
if (_arg1[_local2] == 0){
RightHip = true;
};
if (_arg1[_local2] == 1){
LeftHip = true;
};
if (_arg1[_local2] == 2){
RightKnee = true;
};
if (_arg1[_local2] == 3){
LeftKnee = true;
};
if (_arg1[_local2] == 4){
RightShoulder = true;
};
if (_arg1[_local2] == 5){
LeftShoulder = true;
};
if (_arg1[_local2] == 6){
RightElbow = true;
};
if (_arg1[_local2] == 7){
LeftElbow = true;
};
_local2++;
};
if (RightHip){
contractRightHip();
} else {
extendRightHip();
};
if (LeftHip){
contractLeftHip();
} else {
extendLeftHip();
};
if (RightKnee){
contractRightKnee();
} else {
extendRightKnee();
};
if (LeftKnee){
contractLeftKnee();
} else {
extendLeftKnee();
};
if (RightShoulder){
contractRightShoulder();
} else {
extendRightShoulder();
};
if (LeftShoulder){
contractLeftShoulder();
} else {
extendLeftShoulder();
};
if (RightElbow){
contractRightElbow();
} else {
extendRightElbow();
};
if (LeftElbow){
contractLeftElbow();
} else {
extendLeftElbow();
};
}
public function breakRightKnee():Boolean{
rightleg.kneeEmitter.startSpray();
rightleg.kneeEmitter.emitterLife = 200;
rightleg.kneeNodeEmitter.startSpray();
rightleg.kneeNodeEmitter.emitterLife = 200;
rightleg.removeConstraint(rightleg.kneeconnector);
rightleg.removeConstraint(rightleg.kneebendConstraint);
rightleg.removeConstraint(rightleg.kneebendConstraint2);
rightleg.removeConstraint(rightleg.kneeConstraint1);
rightleg.removeConstraint(rightleg.kneeConstraint2);
this.removeConstraint(rightkneelimit);
this.removeConstraint(splitlimit2);
if (!rightleg.kneeBroken){
bonebreak.play();
rightleg.kneeBroken = true;
return (true);
};
return (false);
}
public function breakRightElbow():Boolean{
rightarm.elbowEmitter.startSpray();
rightarm.elbowEmitter.emitterLife = 200;
rightarm.elbowNodeEmitter.startSpray();
rightarm.elbowNodeEmitter.emitterLife = 200;
rightarm.removeConstraint(rightarm.elbowconnector);
rightarm.removeConstraint(rightarm.elbowbendconstraint);
rightarm.removeConstraint(rightarm.elbowbendconstraint2);
this.removeConstraint(riselimitright);
this.removeConstraint(riselimit2);
if (!rightarm.elbowBroken){
bonebreak.play();
rightarm.elbowBroken = true;
return (true);
};
return (false);
}
public function runInterval():void{
headEmitter.updateConditions(head.position.x, head.position.y, headpicture.angle);
body.run();
rightleg.run();
leftleg.run();
rightarm.run();
leftarm.run();
calculateScore();
}
public function resetSounds(){
playHeavyPunch = false;
playLightPunch = false;
}
public function breakRightLeg():Boolean{
rightleg.hipEmitter.startSpray();
rightleg.hipEmitter.emitterLife = 200;
this.removeConstraint(rightlegconnector);
this.removeConstraint(rightthighconnector);
this.removeConstraint(rightlimit);
this.removeConstraint(rightkneelimit);
this.removeConstraint(splitlimit);
this.removeConstraint(splitlimit2);
if (!rightleg.hipBroken){
bonebreak.play();
rightleg.hipBroken = true;
return (true);
};
return (false);
}
public function resetJointAction(){
var _local1:int;
executeJointActionBool = false;
_local1 = 0;
while (_local1 < jointPress.length) {
jointPress[_local1] = 0;
_local1++;
};
}
public function contractLeftHip(){
LeftHip = false;
leftHipPic.marker.visible = false;
leftHipPic.selector.arrowCCW.visible = false;
leftHipPic.selector.arrowCW.visible = true;
if (jointPress[LEFT_HIP_PRESS] > -1){
var _local1 = jointPress;
var _local2 = LEFT_HIP_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function run(){
if (((((((((!(LeftHip)) && (!(RightHip)))) && (LeftKnee))) && (RightKnee))) && ((splitlimit.currLength < 150)))){
splitlimit.stiffness = 1;
};
if (((((!(LeftShoulder)) && (!(RightShoulder)))) && ((riselimit.currLength < 100)))){
riselimit.stiffness = 1;
} else {
riselimit.stiffness = 0.025;
};
if (LeftShoulder){
riselimitleft.restLength = 500;
} else {
riselimitleft.restLength = 61;
};
if (RightShoulder){
riselimitright.restLength = 500;
} else {
riselimitright.restLength = 61;
};
rightHipPic.x = rightleg.hip.position.x;
rightHipPic.y = rightleg.hip.position.y;
rightKneePic.x = rightleg.knee.position.x;
rightKneePic.y = rightleg.knee.position.y;
leftHipPic.x = leftleg.hip.position.x;
leftHipPic.y = leftleg.hip.position.y;
leftKneePic.x = leftleg.knee.position.x;
leftKneePic.y = leftleg.knee.position.y;
rightShoulderPic.x = rightarm.shoulder.position.x;
rightShoulderPic.y = rightarm.shoulder.position.y;
rightElbowPic.x = rightarm.elbow.position.x;
rightElbowPic.y = rightarm.elbow.position.y;
leftShoulderPic.x = leftarm.shoulder.position.x;
leftShoulderPic.y = leftarm.shoulder.position.y;
leftElbowPic.x = leftarm.elbow.position.x;
leftElbowPic.y = leftarm.elbow.position.y;
}
public function contractRightKnee(){
RightKnee = false;
rightKneePic.marker.visible = true;
rightKneePic.selector.arrowCW.visible = false;
rightKneePic.selector.arrowCCW.visible = true;
if (jointPress[RIGHT_KNEE_PRESS] > -1){
var _local1 = jointPress;
var _local2 = RIGHT_KNEE_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function extendLeftHip(){
LeftHip = true;
leftHipPic.marker.visible = true;
leftHipPic.selector.arrowCW.visible = false;
leftHipPic.selector.arrowCCW.visible = true;
if (jointPress[LEFT_HIP_PRESS] < 1){
var _local1 = jointPress;
var _local2 = LEFT_HIP_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function breakHead():Boolean{
headEmitter.startSpray();
headEmitter.emitterLife = 200;
body.neckEmitter.startSpray();
body.neckEmitter.emitterLife = 200;
this.removeConstraint(neck);
this.removeConstraint(necksupportleft);
this.removeConstraint(necksupportright);
if (!headBroken){
bonebreak.play();
headBroken = true;
return (true);
};
return (false);
}
public function executeJointAction(){
var _local1:int;
_local1 = 0;
while (_local1 < jointPress.length) {
if (jointPress[_local1] == 0){
} else {
switch (_local1){
case LEFT_HIP_PRESS:
if (LeftHip){
leftthighconnector.restLength = 120;
} else {
leftthighconnector.restLength = 243;
};
break;
case RIGHT_HIP_PRESS:
if (RightHip){
rightthighconnector.restLength = 120;
} else {
rightthighconnector.restLength = 243;
};
break;
case LEFT_KNEE_PRESS:
if (LeftKnee){
leftleg.kneebendConstraint.restLength = 139;
} else {
leftleg.kneebendConstraint.restLength = 30;
};
break;
case RIGHT_KNEE_PRESS:
if (RightKnee){
rightleg.kneebendConstraint.restLength = 139;
} else {
rightleg.kneebendConstraint.restLength = 30;
};
break;
case LEFT_ELBOW_PRESS:
if (LeftElbow){
leftarm.elbowbendconstraint.restLength = 148;
} else {
leftarm.elbowbendconstraint.restLength = 70;
};
break;
case RIGHT_ELBOW_PRESS:
if (RightElbow){
rightarm.elbowbendconstraint.restLength = 148;
} else {
rightarm.elbowbendconstraint.restLength = 70;
};
break;
case LEFT_SHOLDER_PRESS:
if (LeftShoulder){
leftelbowconnector.restLength = 160;
} else {
leftelbowconnector.restLength = 105;
};
break;
case RIGHT_SHOLDER_PRESS:
if (RightShoulder){
rightelbowconnector.restLength = 160;
} else {
rightelbowconnector.restLength = 105;
};
break;
};
};
_local1++;
};
}
public function breakLeftLeg():Boolean{
leftleg.hipEmitter.startSpray();
leftleg.hipEmitter.emitterLife = 200;
this.removeConstraint(leftlegconnector);
this.removeConstraint(leftthighconnector);
this.removeConstraint(leftlimit);
this.removeConstraint(leftkneelimit);
this.removeConstraint(splitlimit);
this.removeConstraint(splitlimit2);
if (!leftleg.hipBroken){
bonebreak.play();
leftleg.hipBroken = true;
return (true);
};
return (false);
}
public function contractRightElbow(){
RightElbow = false;
rightElbowPic.marker.visible = true;
rightElbowPic.selector.arrowCCW.visible = false;
rightElbowPic.selector.arrowCW.visible = true;
if (jointPress[RIGHT_ELBOW_PRESS] > -1){
var _local1 = jointPress;
var _local2 = RIGHT_ELBOW_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function breakLeftElbow():Boolean{
leftarm.elbowEmitter.startSpray();
leftarm.elbowEmitter.emitterLife = 200;
leftarm.elbowNodeEmitter.startSpray();
leftarm.elbowNodeEmitter.emitterLife = 200;
leftarm.removeConstraint(leftarm.elbowconnector);
leftarm.removeConstraint(leftarm.elbowbendconstraint);
leftarm.removeConstraint(leftarm.elbowbendconstraint2);
this.removeConstraint(riselimitleft);
this.removeConstraint(riselimit2);
if (!leftarm.elbowBroken){
bonebreak.play();
leftarm.elbowBroken = true;
return (true);
};
return (false);
}
public function breakRightArm():Boolean{
rightarm.shoulderEmitter.startSpray();
rightarm.shoulderEmitter.emitterLife = 200;
body.rightShoulderEmitter.startSpray();
body.rightShoulderEmitter.emitterLife = 200;
this.removeConstraint(rightarmconnector);
this.removeConstraint(rightelbowconnector);
this.removeConstraint(rightarmsupport);
this.removeConstraint(riselimit);
this.removeConstraint(riselimitleft);
this.removeConstraint(riselimitright);
this.removeConstraint(riselimit2);
this.removeConstraint(riselimit3);
if (!rightarm.shoulderBroken){
bonebreak.play();
rightarm.shoulderBroken = true;
return (true);
};
return (false);
}
public function extendRightElbow(){
RightElbow = true;
rightElbowPic.marker.visible = false;
rightElbowPic.selector.arrowCW.visible = false;
rightElbowPic.selector.arrowCCW.visible = true;
if (jointPress[RIGHT_ELBOW_PRESS] < 1){
var _local1 = jointPress;
var _local2 = RIGHT_ELBOW_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function getJoinArray():Array{
var _local1:Array;
_local1 = new Array();
if (!RightHip){
_local1.push(0);
};
if (!LeftHip){
_local1.push(1);
};
if (!RightKnee){
_local1.push(2);
};
if (!LeftKnee){
_local1.push(3);
};
if (!RightShoulder){
_local1.push(4);
};
if (!LeftShoulder){
_local1.push(5);
};
if (!RightElbow){
_local1.push(6);
};
if (!LeftElbow){
_local1.push(7);
};
return (_local1);
}
public function extendRightKnee(){
RightKnee = true;
rightKneePic.marker.visible = false;
rightKneePic.selector.arrowCCW.visible = false;
rightKneePic.selector.arrowCW.visible = true;
if (jointPress[RIGHT_KNEE_PRESS] < 1){
var _local1 = jointPress;
var _local2 = RIGHT_KNEE_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function breakLeftArm():Boolean{
leftarm.shoulderEmitter.startSpray();
leftarm.shoulderEmitter.emitterLife = 200;
body.leftShoulderEmitter.startSpray();
body.leftShoulderEmitter.emitterLife = 200;
this.removeConstraint(leftarmconnector);
this.removeConstraint(leftelbowconnector);
this.removeConstraint(leftarmsupport);
this.removeConstraint(riselimit);
this.removeConstraint(riselimitleft);
this.removeConstraint(riselimitright);
this.removeConstraint(riselimit2);
this.removeConstraint(riselimit3);
if (!leftarm.shoulderBroken){
bonebreak.play();
leftarm.shoulderBroken = true;
return (true);
};
return (false);
}
public function extendRightShoulder(){
RightShoulder = true;
rightShoulderPic.marker.visible = true;
rightShoulderPic.selector.arrowCCW.visible = false;
rightShoulderPic.selector.arrowCW.visible = true;
if (jointPress[RIGHT_SHOLDER_PRESS] < 1){
var _local1 = jointPress;
var _local2 = RIGHT_SHOLDER_PRESS;
var _local3 = (_local1[_local2] + 1);
_local1[_local2] = _local3;
};
}
public function contractRightShoulder(){
RightShoulder = false;
rightShoulderPic.marker.visible = false;
rightShoulderPic.selector.arrowCW.visible = false;
rightShoulderPic.selector.arrowCCW.visible = true;
if (jointPress[RIGHT_SHOLDER_PRESS] > -1){
var _local1 = jointPress;
var _local2 = RIGHT_SHOLDER_PRESS;
var _local3 = (_local1[_local2] - 1);
_local1[_local2] = _local3;
};
}
public function getRotation():Number{
return (body.body.angle);
}
private function createHead(_arg1:Number){
head = new CircleParticle(posVec.x, ((posVec.y - (body.myheight / 2)) - 30), 30, (_arg1 + "head"));
head.friction = 0.5;
headpicture = new headimage();
headpicture.gotoAndStop(_arg1);
head.setDisplay(headpicture);
if (_arg1 == 1){
headpicture.addEventListener(Event.ENTER_FRAME, headpicture.runplayer);
} else {
headpicture.addEventListener(Event.ENTER_FRAME, headpicture.runvillian);
};
addParticle(head);
headEmitter = new bloodEmitter(gameworld.baseLayer);
headEmitter.updateConditions(head.position.x, head.position.y, headpicture.angle);
neck = new SpringConstraint(body.bottomnode, head, 0.5);
necksupportleft = new SpringConstraint(body.leftshouldernode, head, 0.5);
necksupportright = new SpringConstraint(body.rightshouldernode, head, 0.5);
neck.visible = false;
necksupportleft.visible = false;
necksupportright.visible = false;
addConstraint(neck);
addConstraint(necksupportleft);
addConstraint(necksupportright);
}
}
}//package
Section 33
//floorImage (floorImage)
package {
import flash.display.*;
public dynamic class floorImage extends MovieClip {
}
}//package
Section 34
//GameCursor (GameCursor)
package {
import flash.display.*;
public dynamic class GameCursor extends MovieClip {
public var cursorHitArea:MovieClip;
public function GameCursor(){
addFrameScript(0, frame1);
}
function frame1(){
this.hitArea = cursorHitArea;
}
}
}//package
Section 35
//gameoverSound (gameoverSound)
package {
import flash.media.*;
public dynamic class gameoverSound extends Sound {
}
}//package
Section 36
//gameworld (gameworld)
package {
import org.cove.ape.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.media.*;
import flash.ui.*;
public class gameworld extends Sprite {
public var villian:fighter;
private var winnerText:textr;
private var online_anim_start:Boolean;
private var myMenu:mainmenu;
private var sentScore:Boolean;
private var timeLimitr:textr;
private var urlLoader:MyURLLoader;
private var guideLines:textr;
private var txfld:TextField;
public var timeCounter:Number;
private var roundEnd:Boolean;
private var sglPlayMvs:Array;
public var camShake:cameraShake;
private var currentState:Number;
private var online_color:Number;
private var intervalStart:Boolean;
private var tmpsc:score;
private var debugTrace:TextField;
private var myfloor:Group;
public var player:fighter;
private var stepIntervalCount:Number;
private var sendStrings:String;
private var poll_online:Number;
private var currentMove:Array;
static const FRAME_COUNT = 30;
static const COLOR_BLUE = 2;
static const MENUSTATE:Number = 1;
static const COLOR_NONE = 0;
static const COLOR_RED = 1;
static const PLAYSTATE:Number = 2;
static const ONLINESTATE:Number = 3;
public static var baseLayer:Sprite;
public static var game:gameworld;
private static var mystage;
public static var cursor:MovieClip;
private static var embeddedFont:Font = null;
public function gameworld(){
currentState = MENUSTATE;
mystage.frameRate = 60;
mystage.scaleMode = StageScaleMode.EXACT_FIT;
this.addEventListener(Event.ENTER_FRAME, run);
initAPE((1 / 4), new Vector(0, 2));
camShake = new cameraShake();
setupScene();
Mouse.hide();
poll_online = 0;
online_anim_start = false;
online_color = COLOR_NONE;
sendStrings = "";
sentScore = false;
sglPlayMvs = new Array();
}
private function mousemove(_arg1:MouseEvent):void{
if (currentState == MENUSTATE){
myMenu.mousemove(_arg1.stageX, _arg1.stageY);
return;
};
cursor.x = _arg1.stageX;
cursor.y = _arg1.stageY;
}
public function getState():Number{
return (currentState);
}
private function setupScene():void{
mystage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
mystage.addEventListener(MouseEvent.MOUSE_MOVE, mouseover);
mystage.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
mystage.addEventListener(MouseEvent.MOUSE_MOVE, mousemove);
player = new fighter(new Vector(((750 / 2) - 100), 263), 1);
villian = new fighter(new Vector(((750 / 2) + 100), 263), 2);
createFloor();
APEngine.addGroup(player);
APEngine.addGroup(villian);
player.addCollidable(villian);
myfloor.addCollidable(player);
myfloor.addCollidable(villian);
stepIntervalCount = 0;
player.run();
villian.run();
timeCounter = 500;
timeLimitr = new textr("");
timeLimitr.x = ((750 / 2) - 50);
timeLimitr.y = 30;
timeLimitr.str = ("" + timeCounter);
timeLimitr.scale = 1.2;
baseLayer.addChild(timeLimitr);
guideLines = new textr("");
guideLines.x = (750 / 2);
guideLines.y = 480;
guideLines.str = "";
baseLayer.addChild(guideLines);
winnerText = new textr("");
winnerText.x = (750 / 2);
winnerText.y = ((500 / 2) - 150);
baseLayer.addChild(winnerText);
cursor = new GameCursor();
cursor.visible = false;
baseLayer.addChild(cursor);
sglPlayMvs = new Array();
sentScore = false;
}
public function connectToMultiPlayer():void{
urlLoader = new MyURLLoader(this);
}
public function addGuideLines(_arg1:String):void{
guideLines.str = _arg1;
}
public function setState(_arg1:Number):void{
currentState = _arg1;
if (urlLoader){
urlLoader.setSinglePlayer(true);
if (currentState == ONLINESTATE){
urlLoader.setSinglePlayer(false);
};
};
}
private function createFloor():void{
var _local1:RectangleParticle;
var _local2:RectangleParticle;
var _local3:RectangleParticle;
this.myfloor = new Group();
_local1 = new RectangleParticle((750 / 2), 520, 750, 100, "Floor", 0, true);
_local2 = new RectangleParticle(0, (500 / 2), 50, 1000, "Floor", 0, true);
_local3 = new RectangleParticle(750, (500 / 2), 50, 1000, "Floor", 0, true);
_local1.setDisplay(new floorImage());
_local2.setStyle(1.5, 0, 1, 0xEAEAEA);
_local3.setStyle(1.5, 0, 1, 0xEAEAEA);
_local1.friction = 1;
_local2.friction = 1;
_local3.friction = 1;
myfloor.addParticle(_local2);
myfloor.addParticle(_local3);
myfloor.addParticle(_local1);
APEngine.addGroup(this.myfloor);
}
private function setupMenu():void{
myMenu = new mainmenu(mystage);
baseLayer.addChild(myMenu);
}
public function getGameID():Number{
if (urlLoader == null){
return (0);
};
return (urlLoader.getGameID());
}
public function updateConnection():void{
if (urlLoader == null){
return;
};
urlLoader.update();
}
private function keydown(_arg1:KeyboardEvent):void{
var _local2:String;
if (currentState == MENUSTATE){
myMenu.menukeydown(_arg1);
return;
};
if ((((_arg1.keyCode == 32)) && ((stepIntervalCount == 0)))){
if (currentState == ONLINESTATE){
if ((((urlLoader.getTurn() == 1)) || ((urlLoader.getTurn() == 3)))){
poll_online = 0;
_local2 = "move=";
if (online_color == COLOR_BLUE){
_local2 = (_local2 + villian.getJoinArray());
sendStrings = _local2;
urlLoader.update(_local2);
trace(("send: " + _local2));
};
if (online_color == COLOR_RED){
_local2 = (_local2 + player.getJoinArray());
sendStrings = _local2;
urlLoader.update(_local2);
trace(("send: " + _local2));
};
deselect();
};
} else {
if (urlLoader.getReplayID() != 0){
return;
};
if (online_color == COLOR_BLUE){
sglPlayMvs.push(villian.getJoinArray());
currentMove = villian.getJoinArray();
};
if (online_color == COLOR_RED){
sglPlayMvs.push(player.getJoinArray());
currentMove = player.getJoinArray();
};
};
};
if (_arg1.keyCode == 27){
currentState = MENUSTATE;
setupMenu();
};
}
private function run(_arg1:Event):void{
var _local2:Sound;
var _local3:Boolean;
var _local4:Array;
var _local5:String;
var _local6:Number;
var _local7:String;
var _local8:Array;
var _local9:Array;
var _local10:String;
_local3 = false;
switch (currentState){
case MENUSTATE:
timeLimitr.visible = false;
guideLines.visible = false;
if (player.scoreDisplay.visible){
player.scoreDisplay.visible = false;
villian.scoreDisplay.visible = false;
};
cursor.visible = false;
myMenu.run();
break;
case PLAYSTATE:
online_color = COLOR_RED;
baseLayer.x = camShake.box.x;
baseLayer.y = camShake.box.y;
timeLimitr.visible = true;
guideLines.visible = true;
player.scoreDisplay.visible = true;
villian.scoreDisplay.visible = true;
cursor.visible = true;
player.run();
villian.run();
APEngine.paint();
guideLines.x = (750 / 2);
if (((tmpsc) && (urlLoader))){
tmpsc.move_to_top();
parent.setChildIndex(cursor, (parent.numChildren - 1));
if (tmpsc.hasPressedButton()){
if (urlLoader.hasScores()){
_local4 = urlLoader.getScores();
tmpsc.setArray(_local4);
} else {
if (sentScore == false){
urlLoader.clearScores();
_local5 = "";
_local6 = 0;
while (_local6 < sglPlayMvs.length) {
if (_local6 != 0){
_local5 = (_local5 + "&");
};
_local5 = (_local5 + ((("m" + _local6) + "=") + sglPlayMvs[_local6]));
_local6++;
};
_local7 = ((((_local5 + "&score=") + player.getScore()) + "&name=") + tmpsc.getName());
urlLoader.update(_local7);
};
sentScore = true;
};
};
};
if (((!((stepIntervalCount == 0))) || ((timeCounter <= 0)))){
deselect();
if (!roundEnd){
APEngine.step();
player.runInterval();
villian.runInterval();
guideLines.str = "";
};
if (--timeCounter < 0){
timeCounter = 0;
if (!roundEnd){
if (((urlLoader) && ((urlLoader.getReplayID() == 0)))){
tmpsc = new score();
tmpsc.setRoot(this);
tmpsc.x = (750 / 2);
baseLayer.addChild(tmpsc);
urlLoader.clearScores();
};
if (((urlLoader) && (!((urlLoader.getReplayID() == 0))))){
urlLoader = null;
};
_local2 = new gameoverSound();
_local2.play();
if (player.score > villian.score){
winnerText.str = (player.fighterName + " Wins!");
} else {
if (player.score < villian.score){
winnerText.str = (villian.fighterName + " Wins!");
} else {
winnerText.str = "Draw!";
};
};
guideLines.str = "Press ESC to bring up Menu";
winnerText.visible = true;
guideLines.visible = true;
};
roundEnd = true;
};
timeLimitr.str = ("" + timeCounter);
timeLimitr.x = ((750 / 2) - 50);
if ((((((++stepIntervalCount > FRAME_COUNT)) && ((timeCounter > 0)))) && (!(roundEnd)))){
stepIntervalCount = 0;
mystage.addEventListener(MouseEvent.MOUSE_MOVE, mouseover);
mystage.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
player.resetSounds();
villian.resetSounds();
player.resetJointAction();
villian.resetJointAction();
online_anim_start = false;
};
};
if (((urlLoader) && (!((urlLoader.getReplayID() == 0))))){
if (online_anim_start == false){
sendStrings = "";
_local8 = urlLoader.getMoveArray(urlLoader.getMoveNumber());
trace(((("move " + urlLoader.getMoveNumber()) + " ") + _local8));
if (_local8 != null){
currentMove = _local8;
urlLoader.addMoveNumber();
online_anim_start = true;
} else {
urlLoader.update();
return;
};
};
};
if (currentMove != null){
if (online_color == COLOR_BLUE){
villian.setJoinArray(currentMove);
villian.executeJointAction();
villian.executeJointActionBool = true;
};
if (online_color == COLOR_RED){
player.setJoinArray(currentMove);
player.executeJointAction();
player.executeJointActionBool = true;
};
stepIntervalCount++;
mystage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseover);
mystage.removeEventListener(MouseEvent.MOUSE_DOWN, mousedown);
currentMove = null;
deselect();
};
break;
case ONLINESTATE:
if (!urlLoader){
break;
};
if ((((urlLoader.getTurn() == 1)) || ((urlLoader.getTurn() == 2)))){
online_color = COLOR_BLUE;
};
if ((((urlLoader.getTurn() == 3)) || ((urlLoader.getTurn() == 4)))){
online_color = COLOR_RED;
};
if ((((urlLoader.getMoveNumber() == urlLoader.movesLength())) || ((urlLoader.movesLength() == 0)))){
if ((((((urlLoader.getTurn() == 2)) || ((urlLoader.getTurn() == 4)))) || ((urlLoader.movesLength() == 0)))){
poll_online++;
if ((((((poll_online > 120)) && (urlLoader.getUpdated()))) || ((poll_online > 1200)))){
if (sendStrings == ""){
urlLoader.update();
} else {
urlLoader.update(sendStrings);
};
poll_online = 0;
};
};
};
runOnlineEvents();
baseLayer.x = camShake.box.x;
baseLayer.y = camShake.box.y;
timeLimitr.visible = true;
guideLines.visible = true;
player.scoreDisplay.visible = true;
villian.scoreDisplay.visible = true;
cursor.visible = true;
player.run();
villian.run();
APEngine.paint();
guideLines.x = (750 / 2);
if (urlLoader.getTurn() == 0){
winnerText.str = " Replay ";
};
if (tmpsc){
tmpsc.move_to_top();
parent.setChildIndex(cursor, (parent.numChildren - 1));
if (tmpsc.hasPressedButton()){
if (urlLoader.hasScores()){
_local9 = urlLoader.getScores();
tmpsc.setArray(_local9);
} else {
if (online_color == COLOR_BLUE){
_local10 = ((("p1s=" + villian.getScore()) + "&name=") + tmpsc.getName());
urlLoader.update(_local10);
};
if (online_color == COLOR_RED){
_local10 = ((("p2s=" + player.getScore()) + "&name=") + tmpsc.getName());
urlLoader.update(_local10);
};
};
};
return;
};
if (((!((stepIntervalCount == 0))) || ((timeCounter <= 0)))){
deselect();
APEngine.step();
player.runInterval();
villian.runInterval();
if (!roundEnd){
guideLines.str = "";
};
if (--timeCounter < 0){
timeCounter = 0;
if (!roundEnd){
_local2 = new gameoverSound();
_local2.play();
if (player.score > villian.score){
winnerText.str = (player.fighterName + " Wins!");
} else {
if (player.score < villian.score){
winnerText.str = (villian.fighterName + " Wins!");
} else {
winnerText.str = "Draw!";
};
};
guideLines.str = "Press ESC to bring up Menu";
guideLines.visible = true;
winnerText.visible = true;
if (urlLoader.getTurn() != 0){
tmpsc = new score();
tmpsc.setRoot(this);
tmpsc.x = (750 / 2);
baseLayer.addChild(tmpsc);
};
};
roundEnd = true;
};
timeLimitr.str = ("" + timeCounter);
timeLimitr.x = ((750 / 2) - 50);
if ((((++stepIntervalCount > FRAME_COUNT)) && ((timeCounter > 0)))){
stepIntervalCount = 0;
mystage.addEventListener(MouseEvent.MOUSE_MOVE, mouseover);
mystage.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
player.resetSounds();
villian.resetSounds();
player.resetJointAction();
villian.resetJointAction();
online_anim_start = false;
deselect();
};
};
break;
};
}
public function runOnlineEvents():void{
var _local1:Array;
if (urlLoader.getMoveNumber() < urlLoader.movesLength()){
if (online_anim_start == false){
sendStrings = "";
online_anim_start = true;
_local1 = urlLoader.getMoveArray(urlLoader.getMoveNumber());
if ((urlLoader.getMoveNumber() % 2) == 0){
trace(("set player: " + _local1));
player.setJoinArray(_local1);
stepIntervalCount++;
player.executeJointAction();
player.executeJointActionBool = true;
deselect();
} else {
trace(("set villian: " + _local1));
villian.setJoinArray(_local1);
stepIntervalCount++;
villian.executeJointAction();
villian.executeJointActionBool = true;
deselect();
};
urlLoader.addMoveNumber();
};
};
}
private function deselect():void{
player.rightHipPic.selector.visible = false;
player.leftHipPic.selector.visible = false;
player.rightKneePic.selector.visible = false;
player.leftKneePic.selector.visible = false;
player.rightShoulderPic.selector.visible = false;
player.leftShoulderPic.selector.visible = false;
player.rightElbowPic.selector.visible = false;
player.leftElbowPic.selector.visible = false;
villian.rightHipPic.selector.visible = false;
villian.leftHipPic.selector.visible = false;
villian.rightKneePic.selector.visible = false;
villian.leftKneePic.selector.visible = false;
villian.rightShoulderPic.selector.visible = false;
villian.leftShoulderPic.selector.visible = false;
villian.rightElbowPic.selector.visible = false;
villian.leftElbowPic.selector.visible = false;
}
public function hasUpdated():Boolean{
if (urlLoader == null){
return (false);
};
return (urlLoader.getUpdated());
}
public function resetworld():void{
mystage.removeEventListener(KeyboardEvent.KEY_DOWN, keydown);
mystage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseover);
mystage.removeEventListener(MouseEvent.MOUSE_DOWN, mousedown);
mystage.removeEventListener(MouseEvent.MOUSE_MOVE, mousemove);
player.clean();
villian.clean();
if (timeLimitr){
baseLayer.removeChild(timeLimitr);
};
if (guideLines){
baseLayer.removeChild(guideLines);
};
if (winnerText){
baseLayer.removeChild(winnerText);
};
if (tmpsc){
baseLayer.removeChild(tmpsc);
};
APEngine.removeGroup(player);
APEngine.removeGroup(villian);
APEngine.removeGroup(myfloor);
setupScene();
tmpsc = null;
roundEnd = false;
sentScore = false;
}
private function mousedown(_arg1:MouseEvent):void{
if (currentState == MENUSTATE){
return;
};
if (urlLoader.getReplayID() != 0){
return;
};
if ((((currentState == ONLINESTATE)) && ((((((urlLoader.getTurn() == 0)) || ((urlLoader.getTurn() == 2)))) || ((urlLoader.getTurn() == 4)))))){
return;
};
if (online_color == COLOR_BLUE){
villian.mouseAction(_arg1.stageX, _arg1.stageY);
};
if (online_color == COLOR_RED){
player.mouseAction(_arg1.stageX, _arg1.stageY);
};
}
public function getReplayID():Number{
if (urlLoader == null){
return (0);
};
return (urlLoader.getReplayID());
}
private function initAPE(_arg1:Number, _arg2:Vector):void{
APEngine.init(_arg1);
APEngine.container = this;
APEngine.addMasslessForce(_arg2);
}
private function mouseover(_arg1:MouseEvent):void{
if (urlLoader.getReplayID() != 0){
return;
};
if ((((currentState == ONLINESTATE)) && ((((((urlLoader.getTurn() == 0)) || ((urlLoader.getTurn() == 2)))) || ((urlLoader.getTurn() == 4)))))){
return;
};
if (online_color == COLOR_BLUE){
villian.mouseover(_arg1.stageX, _arg1.stageY);
};
if (online_color == COLOR_RED){
player.mouseover(_arg1.stageX, _arg1.stageY);
};
}
public static function getStage(){
return (mystage);
}
public static function main(_arg1):void{
mystage = _arg1;
baseLayer = new Sprite();
mystage.addChild(baseLayer);
game = new (gameworld);
baseLayer.addChild(game);
game.resetworld();
game.setupMenu();
}
}
}//package
Section 37
//greybox (greybox)
package {
import flash.display.*;
public dynamic class greybox extends MovieClip {
public var injured:MovieClip;
public function greybox(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 38
//headimage (headimage)
package {
import flash.events.*;
import flash.display.*;
public dynamic class headimage extends MovieClip {
public var shade:MovieClip;
public var injured:MovieClip;
public var myorientation:Number;
public function headimage(){
addFrameScript(0, frame1, 1, frame2);
}
public function runplayer(_arg1:Event){
myorientation = gameworld.game.player.getRotation();
this.rotation = (myorientation + 90);
shade.rotation = ((myorientation + 90) * -1);
}
public function runvillian(_arg1:Event){
myorientation = gameworld.game.villian.getRotation();
this.rotation = (myorientation + 90);
shade.rotation = ((myorientation + 90) * -1);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 39
//heavypunchSound (heavypunchSound)
package {
import flash.media.*;
public dynamic class heavypunchSound extends Sound {
}
}//package
Section 40
//joint (joint)
package {
import flash.display.*;
public dynamic class joint extends MovieClip {
public var injured:MovieClip;
public var marker:MovieClip;
public var instanceName:String;
public var selector:MovieClip;
public function joint(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
selector.visible = false;
marker.visible = false;
instanceName = "";
stop();
}
function frame2(){
selector.visible = false;
marker.visible = false;
stop();
}
}
}//package
Section 41
//legComposite (legComposite)
package {
import org.cove.ape.*;
public class legComposite extends Composite {
public var leg:SpringConstraint;
public var hip:CircleParticle;
public var thighPicture:greybox;
public var thigh:SpringConstraint;
public var legPicture:greybox;
public var kneeEmitter:bloodEmitter;
public var kneeConstraint2:SpringConstraint;
public var thighConstraintNode:CircleParticle;
public var kneeConstraint1:SpringConstraint;
public var knee:CircleParticle;
public var hipBroken:Boolean;
public var kneeNodeEmitter:bloodEmitter;
public var kneenode:CircleParticle;
public var ankle:CircleParticle;
public var kneebendConstraint2:SpringConstraint;
public var hipEmitter:bloodEmitter;
public var kneeconnector:SpringConstraint;
public var kneeBroken:Boolean;
public var kneebendConstraint:SpringConstraint;
public function legComposite(_arg1:Vector, _arg2:String, _arg3:int){
var _local4:CircleParticle;
var _local5:CircleParticle;
var _local6:SpringConstraint;
var _local7:SpringConstraint;
var _local8:SpringConstraint;
var _local9:SpringConstraint;
var _local10:SpringConstraint;
var _local11:CircleParticle;
var _local12:SpringConstraint;
var _local13:SpringConstraint;
super();
hip = new CircleParticle(_arg1.x, _arg1.y, 19, ((_arg3 + _arg2) + "Hip"));
kneenode = new CircleParticle(_arg1.x, (_arg1.y + 70), 13);
hip.friction = 0.5;
hip.visible = false;
kneenode.friction = 0.5;
kneenode.visible = false;
addParticle(hip);
addParticle(kneenode);
thigh = new SpringConstraint(hip, kneenode, 1, true, 25, ((_arg3 + _arg2) + "Thigh"));
thighPicture = new greybox();
thighPicture.cacheAsBitmap = true;
thigh.setDisplay(thighPicture);
addConstraint(thigh);
knee = new CircleParticle(kneenode.position.x, kneenode.position.y, 16, ((_arg3 + _arg2) + "Knee"));
ankle = new CircleParticle(kneenode.position.x, (kneenode.position.y + 70), 5);
if (_arg2 == "left"){
_local4 = new CircleParticle((ankle.position.x + 13), ankle.position.y, 8, ((_arg3 + _arg2) + "Heel"));
_local5 = new CircleParticle((ankle.position.x - 40), ankle.position.y, 8, ((_arg3 + _arg2) + "Toe"));
} else {
_local4 = new CircleParticle((ankle.position.x - 13), ankle.position.y, 8, ((_arg3 + _arg2) + "Heel"));
_local5 = new CircleParticle((ankle.position.x + 40), ankle.position.y, 8, ((_arg3 + _arg2) + "Toe"));
};
knee.friction = 0.5;
knee.visible = false;
ankle.collidable = false;
ankle.visible = false;
_local4.visible = false;
_local5.visible = false;
_local5.multisample = 10;
_local4.friction = 1;
_local5.friction = 1;
addParticle(knee);
addParticle(ankle);
addParticle(_local4);
addParticle(_local5);
leg = new SpringConstraint(knee, ankle, 1, true, 25, ((_arg3 + _arg2) + "Leg"));
_local6 = new SpringConstraint(_local4, _local5, 1, true, 16, ((_arg3 + _arg2) + "Foot"));
_local7 = new SpringConstraint(ankle, _local4, 1);
_local8 = new SpringConstraint(ankle, _local5, 1);
_local9 = new SpringConstraint(knee, _local5, 1);
_local10 = new SpringConstraint(knee, _local4, 1);
legPicture = new greybox();
legPicture.cacheAsBitmap = true;
leg.setDisplay(legPicture);
_local6.setStyle(1.5, 0, 1, 0x999999);
_local7.visible = false;
_local8.visible = false;
_local9.visible = false;
_local10.visible = false;
addConstraint(leg);
addConstraint(_local6);
addConstraint(_local7);
addConstraint(_local8);
addConstraint(_local9);
addConstraint(_local10);
kneeconnector = new SpringConstraint(kneenode, knee, 1);
kneeconnector.visible = false;
addConstraint(kneeconnector);
if (_arg2 == "left"){
thighConstraintNode = new CircleParticle((kneenode.position.x - 150), kneenode.position.y, 5);
_local11 = new CircleParticle((kneenode.position.x + 70), (_local4.position.y - 20), 5);
} else {
thighConstraintNode = new CircleParticle((kneenode.position.x + 150), kneenode.position.y, 5);
_local11 = new CircleParticle((kneenode.position.x - 70), (_local4.position.y - 20), 5);
};
thighConstraintNode.collidable = false;
_local11.collidable = false;
thighConstraintNode.visible = false;
_local11.visible = false;
addParticle(thighConstraintNode);
addParticle(_local11);
_local12 = new SpringConstraint(kneenode, thighConstraintNode, 1);
_local13 = new SpringConstraint(hip, thighConstraintNode, 1);
kneeConstraint1 = new SpringConstraint(kneenode, _local11, 1);
kneeConstraint2 = new SpringConstraint(ankle, _local11, 1);
kneebendConstraint = new SpringConstraint(hip, _local11, 0.5);
kneebendConstraint2 = new SpringConstraint(ankle, thighConstraintNode, 0.5);
_local12.visible = false;
_local13.visible = false;
kneeConstraint1.visible = false;
kneeConstraint2.visible = false;
kneebendConstraint.visible = false;
kneebendConstraint2.visible = false;
addConstraint(_local12);
addConstraint(_local13);
addConstraint(kneeConstraint1);
addConstraint(kneeConstraint2);
addConstraint(kneebendConstraint);
addConstraint(kneebendConstraint2);
hipEmitter = new bloodEmitter(gameworld.baseLayer);
hipEmitter.updateConditions(hip.position.x, hip.position.y, thigh.angle);
kneeEmitter = new bloodEmitter(gameworld.baseLayer);
kneeEmitter.updateConditions(knee.position.x, knee.position.y, leg.angle);
kneeNodeEmitter = new bloodEmitter(gameworld.baseLayer);
kneeNodeEmitter.updateConditions(kneenode.position.x, kneenode.position.y, leg.angle);
kneeBroken = false;
hipBroken = false;
}
public function run():void{
hipEmitter.updateConditions(hip.position.x, hip.position.y, thigh.angle);
kneeEmitter.updateConditions(knee.position.x, knee.position.y, leg.angle);
kneeNodeEmitter.updateConditions(kneenode.position.x, kneenode.position.y, leg.angle);
}
public function clean():void{
hipEmitter.clean();
kneeEmitter.clean();
kneeNodeEmitter.clean();
}
}
}//package
Section 42
//lightpunchSound (lightpunchSound)
package {
import flash.media.*;
public dynamic class lightpunchSound extends Sound {
}
}//package
Section 43
//mainmenu (mainmenu)
package {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class mainmenu extends menu {
private var bloodemitter:bloodEmitter;
private var cursor:MovieClip;
private var connecting_multiplayer:Boolean;
private var mystage;
private static var initBool:Boolean = false;
public function mainmenu(_arg1){
mystage = _arg1;
init();
}
public function init():void{
gameworld.game.connectToMultiPlayer();
connecting_multiplayer = false;
mystage.addEventListener(MouseEvent.MOUSE_UP, menumouseup);
bloodemitter = new bloodEmitter(this);
bloodemitter.emitterLife = 10000;
bloodemitter.startSpray();
this.addChild(bloodemitter);
cursor = new GameCursor();
cursor.x = (mystage.stageWidth / 2);
cursor.y = (mystage.stageHeight / 2);
this.addChild(cursor);
bloodemitter.x = (cursor.x + 25);
bloodemitter.y = (cursor.y + 25);
if (initBool){
this.torimovie.visible = false;
};
try {
if (mystage.loaderInfo.parameters.id){
onlinebutton.visible = true;
} else {
onlinebutton.visible = false;
};
} catch(err:Error) {
};
}
public function menukeydown(_arg1:KeyboardEvent):void{
if (!initBool){
return;
};
if (_arg1.keyCode == 27){
this.removeChild(cursor);
this.removeChild(bloodemitter);
gameworld.baseLayer.removeChild(this);
gameworld.game.setState(gameworld.PLAYSTATE);
mystage.removeEventListener(MouseEvent.MOUSE_UP, menumouseup);
gameworld.cursor.x = cursor.x;
gameworld.cursor.y = cursor.y;
};
}
public function run():void{
bloodemitter.run();
bloodemitter.x = (cursor.x + 25);
bloodemitter.y = (cursor.y + 25);
if (connecting_multiplayer){
if (gameworld.game.hasUpdated()){
gameworld.game.connectToMultiPlayer();
initBool = true;
this.removeChild(cursor);
this.removeChild(bloodemitter);
gameworld.baseLayer.removeChild(this);
gameworld.game.setState(gameworld.ONLINESTATE);
gameworld.game.resetworld();
mystage.removeEventListener(MouseEvent.MOUSE_UP, menumouseup);
gameworld.cursor.x = cursor.x;
gameworld.cursor.y = cursor.y;
};
};
if (gameworld.game.getReplayID() != 0){
gameworld.game.connectToMultiPlayer();
initBool = true;
this.removeChild(cursor);
this.removeChild(bloodemitter);
gameworld.baseLayer.removeChild(this);
gameworld.game.resetworld();
gameworld.game.setState(gameworld.PLAYSTATE);
mystage.removeEventListener(MouseEvent.MOUSE_UP, menumouseup);
gameworld.cursor.x = cursor.x;
gameworld.cursor.y = cursor.y;
};
}
public function menumouseup(_arg1:MouseEvent):void{
var _local2:URLRequest;
connecting_multiplayer = false;
if (startbutton.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
gameworld.game.connectToMultiPlayer();
initBool = true;
this.removeChild(cursor);
this.removeChild(bloodemitter);
gameworld.baseLayer.removeChild(this);
gameworld.game.resetworld();
gameworld.game.setState(gameworld.PLAYSTATE);
mystage.removeEventListener(MouseEvent.MOUSE_UP, menumouseup);
gameworld.cursor.x = cursor.x;
gameworld.cursor.y = cursor.y;
} else {
if (websitebutton.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
_local2 = new URLRequest("http://www.toribash.com/");
navigateToURL(_local2);
} else {
if (high.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
mystage.quality = StageQuality.HIGH;
} else {
if (med.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
mystage.quality = StageQuality.MEDIUM;
} else {
if (low.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
mystage.quality = StageQuality.LOW;
} else {
if (onlinebutton.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
connecting_multiplayer = true;
gameworld.game.updateConnection();
};
};
};
};
};
};
}
public function mousemove(_arg1:Number, _arg2:Number):void{
cursor.x = _arg1;
cursor.y = _arg2;
}
}
}//package
Section 44
//menu (menu)
package {
import flash.display.*;
public dynamic class menu extends MovieClip {
public var startbutton:SimpleButton;
public var onlinebutton:SimpleButton;
public var low:SimpleButton;
public var high:SimpleButton;
public var websitebutton:SimpleButton;
public var torimovie:MovieClip;
public var med:SimpleButton;
}
}//package
Section 45
//MyURLLoader (MyURLLoader)
package {
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class MyURLLoader {
private var gameID:Number;
private var loader:URLLoader;
private var myMove:Number;
private var myRoot:Object;
private var scorelist:Array;
private var current_move_number:Number;
private var updated:Boolean;
private var replayID:Number;
private var moves:Array;
private var singlePlayer:Boolean;
private var newMov:Number;
private var errors:String;
public function MyURLLoader(_arg1:Object){
myRoot = _arg1;
Security.allowDomain("*");
gameID = 0;
if (myRoot.loaderInfo.parameters.id){
gameID = Number(myRoot.loaderInfo.parameters.id);
};
loader = new URLLoader();
configureListeners(loader);
moves = new Array();
newMov = 1;
current_move_number = 0;
updated = true;
myMove = 0;
replayID = 0;
if (myRoot.loaderInfo.parameters.spid){
replayID = Number(myRoot.loaderInfo.parameters.spid);
};
}
private function securityErrorHandler(_arg1:SecurityErrorEvent):void{
errors = (errors + _arg1);
}
public function getGameID():Number{
return (gameID);
}
public function getUpdated():Boolean{
return (updated);
}
public function getMoves():Array{
return (moves);
}
public function getScores():Array{
return (scorelist);
}
private function openHandler(_arg1:Event):void{
}
public function getReplayID():Number{
return (replayID);
}
public function getDomain(_arg1:String):String{
var _local2:String;
var _local3:Boolean;
var _local4:int;
_local2 = "";
_local3 = false;
_local4 = _arg1.length;
while (_local4 >= 0) {
if (_arg1.charAt(_local4) == "/"){
_local3 = true;
};
if (_local3){
_local2 = (_arg1.charAt(_local4) + _local2);
};
_local4--;
};
return (_local2);
}
public function movesLength():Number{
return (moves.length);
}
public function setSinglePlayer(_arg1:Boolean):void{
singlePlayer = _arg1;
}
public function clearScores():void{
scorelist = new Array();
}
private function completeHandler(_arg1:Event):void{
var loader:URLLoader;
var strtmp:String;
var vars:URLVariables;
var tmpcon:Number;
var num:Number;
var event = _arg1;
loader = URLLoader(event.target);
strtmp = loader.data;
try {
vars = new URLVariables(strtmp);
} catch(err:Error) {
return;
};
trace(("completeHandler: " + loader.data));
myMove = 0;
if (vars.m){
myMove = Number(vars.m);
};
scorelist = new Array();
tmpcon = 0;
while (1) {
if (vars[("ts" + tmpcon)]){
scorelist[tmpcon] = vars[("ts" + tmpcon)];
} else {
break;
};
tmpcon = (tmpcon + 1);
};
num = 0;
while (1) {
if (vars[("move" + num)]){
moves[num] = vars[("move" + num)].split(",");
newMov = num;
} else {
break;
};
num = (num + 1);
};
updated = true;
}
public function getMoveArray(_arg1:Number):Array{
return (moves[_arg1]);
}
private function httpStatusHandler(_arg1:HTTPStatusEvent):void{
}
public function update(_arg1:String=""):Boolean{
var urlstr:String;
var loader:URLLoader;
var request:URLRequest;
var tmpr = _arg1;
if (updated == false){
return (false);
};
updated = false;
urlstr = "";
if (singlePlayer){
urlstr = (getDomain(myRoot.loaderInfo.url) + "single.php?");
if (replayID != 0){
tmpr = (tmpr + ("spid=" + replayID));
};
} else {
urlstr = ((getDomain(myRoot.loaderInfo.url) + "tf_move.php?id=") + gameID);
};
if (tmpr != ""){
tmpr = (tmpr + "&");
};
urlstr = (urlstr + ((tmpr + "r=") + new Date().getTime()));
trace(("urlstr " + urlstr));
loader = new URLLoader();
request = new URLRequest(urlstr);
configureListeners(loader);
try {
loader.load(request);
} catch(error:Error) {
return (false);
};
return (true);
}
public function newistMove():Number{
return (newMov);
}
private function progressHandler(_arg1:ProgressEvent):void{
}
public function getErrors():String{
return (errors);
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
errors = (errors + _arg1);
}
public function hasScores():Boolean{
if (!scorelist){
return (false);
};
return ((scorelist.length > 0));
}
public function getMoveNumber():Number{
return (current_move_number);
}
public function getTurn():Number{
return (myMove);
}
private function configureListeners(_arg1:IEventDispatcher):void{
_arg1.addEventListener(Event.COMPLETE, completeHandler);
_arg1.addEventListener(Event.OPEN, openHandler);
_arg1.addEventListener(ProgressEvent.PROGRESS, progressHandler);
_arg1.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_arg1.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
_arg1.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
public function addMoveNumber():void{
current_move_number++;
}
}
}//package
Section 46
//score (score)
package {
import flash.events.*;
public class score extends scoreboard {
private var pressedButton:Boolean;
private var myName:String;
private var rootobj:Object;
public function score(){
pressedButton = false;
myName = "";
sub.addEventListener(MouseEvent.MOUSE_DOWN, menumousedown);
}
public function getName():String{
return (myName);
}
public function setArray(_arg1:Array):void{
var _local2:Number;
var _local3:*;
this.gotoAndStop(2);
if (((!(this.scorestr)) && (!(this.namestr)))){
return;
};
this.scorestr.text = "";
this.namestr.text = "";
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2].split(",");
if (_local3[0]){
this.scorestr.appendText(_local3[0]);
};
this.scorestr.appendText("\n");
if (_local3[1]){
this.namestr.appendText(_local3[1]);
};
this.namestr.appendText("\n");
_local2++;
};
}
public function menumousedown(_arg1:MouseEvent):void{
if (sub.hitTestPoint(_arg1.stageX, _arg1.stageY, false)){
if (((this.inname) && (!((this.inname.text == "YOUR NAME HERE"))))){
pressedButton = true;
myName = this.inname.text;
};
};
}
public function setRoot(_arg1:Object):void{
rootobj = _arg1;
x = (rootobj.width / 2);
y = 200;
}
public function hasPressedButton():Boolean{
return (pressedButton);
}
function move_to_top(){
parent.setChildIndex(this, (parent.numChildren - 1));
}
public function getCurrentFrame():Number{
return (this.currentFrame);
}
}
}//package
Section 47
//scoreboard (scoreboard)
package {
import flash.display.*;
import flash.text.*;
public dynamic class scoreboard extends MovieClip {
public var inname:TextField;
public var scorestr:TextField;
public var sub:SimpleButton;
public var namestr:TextField;
public function scoreboard(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 48
//textBox (textBox)
package {
import flash.display.*;
import flash.text.*;
public dynamic class textBox extends MovieClip {
public var intrs:TextField;
}
}//package
Section 49
//textr (textr)
package {
public class textr extends textBox {
public function textr(_arg1:String){
this.intrs.text = _arg1;
}
public function set align(_arg1:String):void{
}
public function set str(_arg1:String):void{
this.intrs.text = _arg1;
}
public function get textWidth():Number{
return (this.intrs.textWidth);
}
public function set scale(_arg1:Number):void{
intrs.scaleY = _arg1;
intrs.scaleX = _arg1;
}
public function set color(_arg1:uint):void{
intrs.textColor = _arg1;
}
}
}//package