Section 1
//Algorithms (as3.Algorithms)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Algorithms {
public static function insertIntoArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (false);
};
_local3++;
};
_arg2.push(_arg1);
return (true);
}
public static function orderPointsClockwise(_arg1:Array):Array{
var _local2:int;
var _local3:Object;
var _local4:Array;
var _local5:Array;
var _local6:Number;
var _local7:int;
var _local8:int;
_local3 = new Object();
_local3.x = (_local3.y = 0);
_local2 = 0;
while (_local2 < _arg1.length) {
_local3.x = (_local3.x + _arg1[_local2].x);
_local3.y = (_local3.y + _arg1[_local2].y);
_local2++;
};
_local3.x = (_local3.x / _arg1.length);
_local3.y = (_local3.y / _arg1.length);
_local4 = new Array(_arg1.length);
_local2 = 0;
while (_local2 < _arg1.length) {
_local4[_local2] = Math.atan2((_arg1[_local2].y - _local3.y), (_arg1[_local2].x - _local3.x));
_local2++;
};
_local5 = new Array();
_local2 = 0;
while (_local2 < _arg1.length) {
_local6 = Infinity;
_local7 = -1;
_local8 = 0;
while (_local8 < _arg1.length) {
if (((!(isNaN(_local4[_local8]))) && ((_local4[_local8] < _local6)))){
_local7 = _local8;
_local6 = _local4[_local8];
};
_local8++;
};
_local5.push(_arg1[_local7]);
_local4[_local7] = NaN;
_local2++;
};
return (_local5);
}
public static function pointsToShape(_arg1:Array):Array{
var _local2:Array;
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:*;
_local2 = new Array();
_local6 = 0;
_local7 = 0;
while (_local7 < (_arg1.length - 1)) {
_local3 = new Object();
_local4 = (_arg1[(_local7 + 1)].x - _arg1[_local7].x);
_local5 = (_arg1[(_local7 + 1)].y - _arg1[_local7].y);
_local3.length = Math.floor(_pointShapeDistance(_arg1[_local7], _arg1[(_local7 + 1)]));
if (Math.abs(_local4) > (Math.abs(_local5) * 3)){
_local3.dir = ((_local4 > 0)) ? "r" : "l";
} else {
if (Math.abs(_local5) > (Math.abs(_local4) * 3)){
_local3.dir = ((_local5 > 0)) ? "d" : "u";
} else {
_local3.dir = ((_local5 > 0)) ? "d" : "u";
_local3.dir = (_local3.dir + ((_local4 > 0)) ? "r" : "l");
};
};
_local2.push(_local3);
_local6 = Math.max(_local6, _local3.length);
_local7++;
};
_local7 = 0;
while (_local7 < _local2.length) {
if (_local2[_local7].length < (_local6 / 5)){
_local2.splice(_local7, 1);
_local7--;
};
if ((((_local7 > 0)) && ((_local2[_local7].dir == _local2[(_local7 - 1)].dir)))){
_local2[(_local7 - 1)].length = (_local2[(_local7 - 1)].length + _local2[_local7].length);
_local2.splice(_local7, 1);
_local7--;
};
_local7++;
};
_local7 = 0;
while (_local7 < _local2.length) {
switch (_local2[_local7].dir){
case "ur":
_local2[_local7] = "e";
break;
case "dr":
_local2[_local7] = "f";
break;
case "dl":
_local2[_local7] = "g";
break;
case "ul":
_local2[_local7] = "h";
break;
default:
_local2[_local7] = _local2[_local7].dir;
};
_local7++;
};
return (_local2);
}
public static function deform(_arg1:MovieClip, _arg2:Number, _arg3:Number){
var _local4:Matrix;
var _local5:Matrix;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Matrix;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local4 = new Matrix();
_local4.a = 1;
_local4.b = 0;
_local4.c = 0;
_local4.d = 1;
_local5 = new Matrix();
_local5.a = ((1 + (Math.abs(_arg2) * _arg1.deformDist)) - (Math.abs(_arg3) * _arg1.deformDist));
_local5.b = 0;
_local5.c = 0;
_local5.d = ((1 + (Math.abs(_arg3) * _arg1.deformDist)) - (Math.abs(_arg2) * _arg1.deformDist));
_local6 = Math.sqrt(((_arg2 * _arg2) + (_arg3 * _arg3)));
_local7 = 0;
_local8 = (Boolean(((_arg2 * _arg3) < 0))) ? -1 : 1;
if (_local6){
_local10 = Math.atan2(_arg3, _arg2);
_local11 = Math.floor(((_local10 * 8) / Number((Math.PI * 2))));
_local12 = (_local10 - (((_local11 * Math.PI) * 2) / 8));
_local7 = (_local12 / Number((Math.PI * 0.25)));
if ((_local11 % 2)){
_local7 = (1 - _local7);
};
};
_local9 = new Matrix();
_local9.a = 1;
_local9.b = ((((_local8 * _local7) * _arg1.maxAngle) * _arg1.deformDist) * _local6);
_local9.c = ((((_local8 * _local7) * _arg1.maxAngle) * _arg1.deformDist) * _local6);
_local9.d = 1;
_local4.concat(_local5);
_local4.concat(_local9);
_local4.tx = _arg1.transform.matrix.tx;
_local4.ty = _arg1.transform.matrix.ty;
_arg1.transform.matrix = _local4;
}
public static function deformMatrix(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number=1){
var _local5:Matrix;
var _local6:Number;
var _local7:Matrix;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Matrix;
var _local16:Number;
var _local17:Number;
var _local18:Number;
_local5 = new Matrix();
_local5.a = 1;
_local5.b = 0;
_local5.c = 0;
_local5.d = 1;
_local6 = ((Math.abs(_arg2) - Math.abs(_arg3)) * _arg4);
_local7 = new Matrix();
_local7.a = (1 + _local6);
_local7.b = 0;
_local7.c = 0;
_local7.d = (1 - _local6);
_local8 = (Math.PI * 0.25);
_local9 = ((Math.PI * 2) / 8);
_local10 = (1 / _local9);
_local11 = (Math.sqrt(((_arg2 * _arg2) + (_arg3 * _arg3))) * _arg4);
_local12 = 0;
_local13 = (Boolean(!(((_arg2 <= 0) == (_arg3 <= 0))))) ? -1 : 1;
if (_local11){
_local16 = Math.atan2(_arg3, _arg2);
_local17 = Math.floor((_local16 * _local10));
_local18 = (_local16 - (_local17 * _local9));
_local12 = (_local18 / Number(_local8));
if ((_local17 % 2)){
_local12 = (1 - _local12);
};
};
_local14 = ((_local13)<0) ? ((-(_local12) * _local8) * _local11) : ((_local12 * _local8) * _local11);
_local15 = new Matrix();
_local15.a = 1;
_local15.b = _local14;
_local15.c = _local14;
_local15.d = 1;
_local5.concat(_local7);
_local5.concat(_local15);
_arg1.a = _local5.a;
_arg1.b = _local5.b;
_arg1.c = _local5.c;
_arg1.d = _local5.d;
}
public static function isInArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (true);
};
_local3++;
};
return (false);
}
public static function removeFromArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
_arg2.splice(_local3, 1);
return (true);
};
_local3++;
};
return (false);
}
private static function _pointShapeDistance(_arg1:Object, _arg2:Object):Number{
return (Math.sqrt((Math.pow((_arg2.x - _arg1.x), 2) + Math.pow((_arg2.y - _arg1.y), 2))));
}
public static function simplifyPointsList(_arg1:Array):Array{
var _local2:Array;
var _local3:Number;
var _local4:*;
_local2 = new Array();
_local3 = 0;
_local2.push(_arg1[0]);
_local4 = 1;
while (_local4 < (_arg1.length - 1)) {
if ((((Math.abs((_pointShapeAngle(_arg1[(_local4 + 1)], _arg1[_local4]) - _pointShapeAngle(_arg1[_local4], _arg1[(_local4 - 1)]))) >= (Math.PI / 2.5))) || ((Math.abs(_local3) >= (Math.PI / 3))))){
_local2.push(_arg1[_local4]);
_local3 = 0;
} else {
_local3 = (_local3 + (_pointShapeAngle(_arg1[(_local4 + 1)], _arg1[_local4]) - _pointShapeAngle(_arg1[_local4], _arg1[(_local4 - 1)])));
};
_local4++;
};
_local2.push(_arg1[(_arg1.length - 1)]);
return (_local2);
}
private static function _pointShapeAngle(_arg1:Object, _arg2:Object):Number{
return (Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x)));
}
public static function balancePoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:int=1):Array{
var _local8:Array;
var _local9:int;
_local8 = [_arg1, _arg2, _arg3];
_local9 = 0;
while (_local9 < _arg7) {
_local8 = [(_local8[0] + (_arg2 * _arg4)), ((_local8[1] * _arg4) + _local8[2]), ((_arg5 - _local8[0]) * _arg6)];
_local9++;
};
return (_local8);
}
public static function myGetShape(_arg1:Array):String{
var _local2:Array;
var _local3:Number;
var _local4:String;
var _local5:String;
_local2 = simplifyPointsList(_arg1);
_local5 = pointsToShape(_local2).join("");
switch (_local5){
case "d":
return ("|v");
case "u":
return ("|^");
case "ef":
case "hg":
return ("^");
case "dr":
case "lu":
return ("L");
case "ur":
case "ld":
return ("Γ");
case "ldr":
case "lur":
return ("[");
case "ufu":
case "dhd":
return ("N");
default:
return ("");
};
}
public static function updateHand(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Array, _arg5:Array, _arg6:Object){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local7 = (Math.PI * 0.5);
_arg1.x = _arg2;
_arg1.y = _arg3;
_arg4[0] = Geometry.interpolateAngle(_arg4[0], _arg5[0], 0.2);
_arg4[1] = Geometry.interpolateAngle(_arg4[1], _arg5[1], 0.2);
if (_arg5.length >= 3){
_arg4[2] = Geometry.interpolateAngle(_arg4[2], _arg5[2], 0.2);
} else {
_arg4[2] = Geometry.interpolateAngle(_arg4[2], 0, 0.2);
};
if (_arg4[0] > _local7){
_arg4[0] = _local7;
} else {
if (_arg4[0] < -(_local7)){
_arg4[0] = -(_local7);
};
};
if (_arg4[1] > _local7){
_arg4[1] = _local7;
} else {
if (_arg4[1] < -(_local7)){
_arg4[1] = -(_local7);
};
};
_local8 = Math.abs((_arg4[2] / _local7));
if (_arg4[0] < 0){
_arg1.addChildAt(_arg1.thumb_mc, 0);
} else {
_arg1.addChildAt(_arg1.thumb_mc, (_arg1.numChildren - 1));
};
if (_arg4[1] > 0){
_arg1.addChildAt(_arg1.wrist_mc, 0);
} else {
_arg1.addChildAt(_arg1.wrist_mc, (_arg1.numChildren - 1));
};
_local9 = (_arg4[0] / _local7);
_local10 = (_arg4[1] / _local7);
_local11 = Math.abs(_local9);
_local12 = Math.abs(_local10);
_local13 = ((((_local9 * _local10) * _local7) * (1 - _local8)) + (_local8 * _arg4[2]));
_arg1.glove_mc.scaleX = (_arg6.glove.max.x - (((_arg6.glove.max.x - _arg6.glove.min.x) * _local11) * (1 - _local12)));
_arg1.wrist_mc.scaleX = (_arg6.wrist.max.x - (((_arg6.wrist.max.x - _arg6.wrist.min.x) * _local11) * (1 - _local12)));
_arg1.thumb_mc.x = (_arg6.orig.thumbX + (((_arg6.end.thumbX - _arg6.orig.thumbX) * _local11) * (1 - _local12)));
_arg1.glove_mc.scaleY = (_arg6.glove.max.y - (((_arg6.glove.max.y - _arg6.glove.min.y) * _local12) * (1 - _local11)));
_arg1.thumb_mc.scaleY = _arg1.glove_mc.scaleY;
_arg1.wrist_mc.scaleY = (_arg6.wrist.min.y + (((_arg6.wrist.max.y - _arg6.wrist.min.y) * _local12) * (1 - _local11)));
_arg1.wrist_mc.y = (_arg6.orig.wristY + (((_arg6.end.wristY - _arg6.orig.wristY) * _local12) * (1 - _local11)));
_arg1.rotation = (_arg4[2] * Geometry.RAD_TO_DEG);
}
public static function liquidInPolygon(_arg1:Number, _arg2:Array, _arg3:Number, _arg4:Number):Array{
var _local5:Number;
var _local6:Number;
var _local7:Object;
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Array;
var _local13:Array;
var _local14:Array;
var _local15:Point;
var _local16:Number;
var _local17:Number;
var _local18:int;
_local5 = -(Infinity);
_local6 = Infinity;
_local8 = 0;
while (_local8 < _arg2.length) {
_local7 = Geometry.rotate(_arg1, _arg2[_local8].x, _arg2[_local8].y);
_arg2[_local8].x = _local7.x;
_arg2[_local8].y = _local7.y;
_local5 = Math.max(_arg2[_local8].y, _local5);
_local6 = Math.min(_arg2[_local8].y, _local6);
_local8++;
};
_local9 = (_arg4 * _arg3);
_local10 = 0;
_local11 = 0;
_local13 = [];
_local14 = [];
_local15 = new Point();
_local16 = Math.abs((_local5 - _local6));
_local17 = ((_local6 + _local5) * 0.5);
_local18 = 50;
do {
_local13 = Geometry.getSidePoints(_arg2, _local17);
_local14 = [];
_local8 = 0;
while (_local8 < _arg2.length) {
if (_arg2[_local8].y >= _local17){
_local14.push(_arg2[_local8]);
};
_local8++;
};
_local12 = _local13.concat(_local14);
_local12 = orderPointsClockwise(_local12);
trace("Algorithm::liquidInPolygon\nYou'll have to fix this later. Try to connect the 'sides' and 'lower' arrays coherently.\nAvoid having to use the orderPointsClockwise() function.");
_local10 = Geometry.polygonArea(_local12);
_local17 = (_local17 - ((_local16 * (_local9 - _local10)) / _arg4));
_local18--;
} while ((((Math.abs((_local10 - _local9)) > Geometry.TOLERANCE)) && ((_local18 > 0))));
_local8 = 0;
while (_local8 < _local12.length) {
_local7 = Geometry.rotate(-(_arg1), _local12[_local8].x, _local12[_local8].y);
_local12[_local8].x = _local7.x;
_local12[_local8].y = _local7.y;
_local8++;
};
return (_local12);
}
public static function hasLabel(_arg1:MovieClip, _arg2:String):Boolean{
var _local3:Array;
var _local4:FrameLabel;
var _local5:int;
_local3 = _arg1.currentLabels;
_local5 = 0;
while (_local5 < _local3.length) {
_local4 = _local3[_local5];
if (_local4.name == _arg2){
return (true);
};
_local5++;
};
return (false);
}
public static function adjustScreen(_arg1:DisplayObject, _arg2:DisplayObject){
var _local3:Stage;
var _local4:Rectangle;
if (!_arg1.stage){
return;
};
_local3 = _arg1.stage;
_local4 = _arg2.getRect(_local3);
if (_local4.width < _local3.stageWidth){
_arg1.scaleX = (_arg1.scaleX * (_local3.stageWidth / _local4.width));
_arg1.scaleY = _arg1.scaleX;
_local4 = _arg2.getRect(_local3);
};
if (_local4.height < _local3.stageHeight){
_arg1.scaleY = (_arg1.scaleY * (_local3.stageHeight / _local4.height));
_arg1.scaleX = _arg1.scaleY;
_local4 = _arg2.getRect(_local3);
};
if (_local4.x > 0){
_arg1.x = (_arg1.x - _local4.x);
_local4 = _arg2.getRect(_local3);
};
if (_local4.y > 0){
_arg1.y = (_arg1.y - _local4.y);
_local4 = _arg2.getRect(_local3);
};
if ((_local4.x + _local4.width) < _local3.stageWidth){
_arg1.x = (_arg1.x + (_local3.stageWidth - (_local4.x + _local4.width)));
_local4 = _arg2.getRect(_local3);
};
if ((_local4.y + _local4.height) < _local3.stageHeight){
_arg1.y = (_arg1.y + (_local3.stageHeight - (_local4.y + _local4.height)));
_local4 = _arg2.getRect(_local3);
};
}
public static function approximatePoint(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
}
}//package as3
Section 2
//Geometry (as3.Geometry)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Geometry {
public static const DEG_TO_RAD:Number = 0.0174532925199433;
public static const RAD_TO_DEG:Number = 57.2957795130823;
public static const TOLERANCE:Number = 1E-5;
function regularPolygonArea(_arg1:Number, _arg2:int){
var _local3:Number;
var _local4:Number;
if (_arg2 < 3){
return (0);
};
_local3 = ((Math.PI * 2) / _arg2);
_local4 = (Math.sin(_local3) * _arg1);
return ((((_local4 * _arg1) * 0.5) * _arg2));
}
public static function intersectLines(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Boolean=false):Object{
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Object;
var _local19:Boolean;
var _local20:Boolean;
_local10 = (_arg1 - _arg3);
_local11 = (_arg5 - _arg7);
_local12 = (_arg2 - _arg4);
_local13 = (_arg6 - _arg8);
_local14 = ((_arg1 * _arg4) - (_arg2 * _arg3));
_local15 = ((_arg5 * _arg8) - (_arg6 * _arg7));
_local16 = ((_local10 * _local13) - (_local12 * _local11));
if (!_local16){
return (null);
};
_local17 = (1 / _local16);
_local18 = {x:(((_local14 * _local11) - (_local10 * _local15)) * _local17), y:(((_local14 * _local13) - (_local12 * _local15)) * _local17)};
if (_arg9){
_local19 = pointInsideRect(_local18.x, _local18.y, _arg1, _arg2, _arg3, _arg4);
_local20 = pointInsideRect(_local18.x, _local18.y, _arg5, _arg6, _arg7, _arg8);
if (((!(_local19)) || (!(_local20)))){
return (null);
};
};
return (_local18);
}
public static function pointFromEllipse(_arg1:Object, _arg2:Object):Object{
var _local3:Point;
var _local4:Object;
_local3 = new Point();
_local3.x = (_arg1.x + ((_arg1.radius * Math.cos(_arg2.angle)) * _arg2.distance));
_local3.y = (_arg1.y + (((_arg1.radius * _arg1.excentricity) * Math.sin(_arg2.angle)) * _arg2.distance));
_local4 = rotate(_arg1.rotation, _local3.x, _local3.y, _arg1.x, _arg1.y);
return (new Point(_local4.x, _local4.y));
}
public static function polygonArea(_arg1:Array):Number{
var _local2:Point;
var _local3:Point;
var _local4:Number;
if (_arg1.length < 3){
return (0);
};
_local4 = 0;
return (_local4);
}
public static function getEllipse(_arg1:DisplayObject):Object{
var obj:Object;
var rect:Rectangle;
var clip = _arg1;
obj = {};
rect = clip.getRect(clip);
obj.x = clip.x;
obj.y = clip.y;
obj.radius = (-(rect.x) * clip.scaleX);
obj.rotation = ((clip.rotation * Math.PI) / 180);
obj.excentricity = (clip.scaleY / clip.scaleX);
obj.toString = function (){
return ((((((((((("[ x=" + this.x) + ", y=") + this.y) + ", radius=") + this.radius) + ", rotation=") + this.rotation) + ", excentricity=") + this.excentricity) + " ]"));
};
return (obj);
}
public static function pointToEllipse(_arg1:Object, _arg2:Object):Object{
var obj:Object;
var untranslated:Point;
var unrotated:Object;
var unexcentered:Point;
var unscaled:Point;
var point = _arg1;
var ellipse = _arg2;
obj = {};
untranslated = new Point((point.x - ellipse.x), (point.y - ellipse.y));
unrotated = rotate(-(ellipse.rotation), untranslated.x, untranslated.y);
unexcentered = new Point(unrotated.x, (unrotated.y / ellipse.excentricity));
unscaled = new Point((unexcentered.x / ellipse.radius), (unexcentered.y / ellipse.radius));
obj.distance = Math.sqrt(((unscaled.x * unscaled.x) + (unscaled.y * unscaled.y)));
obj.hDist = unscaled.x;
obj.vDist = unscaled.y;
obj.normal = (Math.atan2(unscaled.y, unscaled.x) + ellipse.rotation);
obj.angle = Math.atan2(unscaled.y, unscaled.x);
obj.rotation = ellipse.rotation;
obj.toString = function (){
return ((((((((((((("[ distance=" + obj.distance) + ", normal=") + obj.normal) + ", angle=") + obj.angle) + ", hDist=") + obj.hDist) + ", vDist=") + obj.vDist) + ", rotation=") + obj.rotation) + " ]"));
};
return (obj);
}
public static function getOuterPoints(_arg1:Array):Array{
var _local2:Array;
var _local3:Point;
var _local4:int;
var _local5:Array;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Point;
var _local11:int;
var _local12:Number;
var _local13:Point;
var _local14:int;
var _local15:Number;
var _local16:Number;
_local2 = _arg1.concat();
_local3 = _local2[0];
_local4 = 1;
while (_local4 < _local2.length) {
if (_local2[_local4].y < _local3.y){
_local3 = _local2[_local4];
};
_local4++;
};
_local5 = [_local3];
_local6 = Infinity;
_local8 = 0;
_local9 = 0;
_local10 = _local5[0];
_local11 = _local2.length;
while (1) {
_local12 = (Math.PI * 2);
_local13 = null;
_local4 = 0;
while (_local4 < _local2.length) {
_local7 = Math.atan2((_local2[_local4].y - _local5[(_local5.length - 1)].y), (_local2[_local4].x - _local5[(_local5.length - 1)].x));
_local16 = getLowestPositiveAngle((_local7 - _local8));
if ((((_local16 <= _local12)) && (!((_local2[_local4] == _local5[(_local5.length - 1)]))))){
_local13 = _local2[_local4];
_local12 = _local16;
};
_local4++;
};
if ((((_local13 == null)) || ((((_local13 == _local5[0])) && ((_local5.length > 1)))))){
break;
};
_local15 = _local8;
_local8 = getLowestPositiveAngle(Math.atan2((_local13.y - _local5[(_local5.length - 1)].y), (_local13.x - _local5[(_local5.length - 1)].x)));
_local9 = (_local9 + getLowestPositiveAngle((_local8 - _local15)));
if (_local9 >= (Math.PI * 2)){
break;
};
_local5.push(_local13);
--_local11;
if (!_local11){
trace(("FAILURE: " + (_local9 - (Math.PI * 2))), "\n");
break;
};
};
if ((((_local5.length > 2)) && ((_local5[(_local5.length - 1)] == _local5[1])))){
_local5.pop();
};
return (_local5);
}
public static function getSidePoints(_arg1:Array, _arg2:Number):Array{
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Array;
var _local7:Point;
var _local8:Point;
var _local9:Number;
var _local10:Number;
var _local11:Array;
var _local12:Number;
var _local13:Number;
_local4 = Infinity;
_local5 = -(Infinity);
_local3 = 0;
while (_local3 < _arg1.length) {
if (_arg1[_local3].y < _local4){
_local4 = _arg1[_local3].y;
};
if (_arg1[_local3].y > _local5){
_local5 = _arg1[_local3].y;
};
_local3++;
};
if (_arg2 < _local4){
_arg2 = _local4;
} else {
if (_arg2 > _local5){
_arg2 = _local5;
};
};
_local6 = [];
_local3 = 0;
while (_local3 < _arg1.length) {
_local7 = _arg1[_local3];
_local8 = _arg1[((_local3 + 1) % _arg1.length)];
if ((((((_arg2 <= _local7.y)) && ((_arg2 >= _local8.y)))) || ((((_arg2 >= _local7.y)) && ((_arg2 <= _local8.y)))))){
if (_local8.y == _local7.y){
_local6.push(new Point(_local7.x, _local7.y));
_local6.push(new Point(_local8.x, _local8.y));
} else {
_local12 = ((_arg2 - _local7.y) / (_local8.y - _local7.y));
_local13 = (_local7.x + ((_local8.x - _local7.x) * _local12));
_local6.push(new Point(_local13, _arg2));
};
};
_local3++;
};
_local9 = Infinity;
_local10 = -(Infinity);
_local3 = 0;
while (_local3 < _local6.length) {
_local7 = _local6[_local3];
if (_local7.x < _local9){
_local9 = _local7.x;
};
if (_local7.x > _local10){
_local10 = _local7.x;
};
_local3++;
};
_local11 = [];
_local3 = 0;
while (_local3 < _local6.length) {
if (_local6[_local3].x <= (_local9 + TOLERANCE)){
_local11[0] = _local6[_local3];
};
if (_local6[_local3].x >= (_local10 - TOLERANCE)){
_local11[1] = _local6[_local3];
};
_local3++;
};
return (_local11);
}
public static function projectPointOnLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Object{
var _local7:Object;
var _local8:Object;
_local7 = getNormal(_arg3, _arg4, _arg5, _arg6);
_local8 = intersectLines(_arg1, _arg2, (_arg1 + _local7.x), (_arg2 + _local7.y), _arg3, _arg4, _arg5, _arg6, false);
if (_local8 == null){
throw ("Unexpected error in Geometry::closestPointToLine. Perpendicular lines aren't intersecting!\n");
};
return (_local8);
}
private static function getLowestPositiveAngle(_arg1:Number):Number{
var _local2:Number;
_local2 = _arg1;
while (_local2 < 0) {
_local2 = (_local2 + (Math.PI * 2));
};
while (_local2 >= (Math.PI * 2)) {
_local2 = (_local2 - (Math.PI * 2));
};
return (_local2);
}
public static function generateRegularPolygon(_arg1:Number, _arg2:Number):Array{
var _local3:Array;
var _local4:Number;
var _local5:int;
_local3 = new Array(_arg1);
_local4 = ((Math.PI * 2) / _arg1);
_local5 = 0;
while (_local5 < _arg1) {
_local3[_local5] = new Point();
_local3[_local5].x = (_arg2 * Math.cos((_local5 * _local4)));
_local3[_local5].y = (_arg2 * Math.sin((_local5 * _local4)));
_local5++;
};
return (_local3);
}
public static function triangleArea(_arg1:Point, _arg2:Point, _arg3:Point):Number{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local4 = (_arg2.x - _arg1.x);
_local5 = (_arg3.x - _arg1.x);
_local6 = (_arg2.y - _arg1.y);
_local7 = (_arg3.y - _arg1.y);
return ((0.5 * Math.abs(((_local4 * _local7) - (_local5 * _local6)))));
}
public static function pointInsideRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
if (_arg3 < _arg5){
_local7 = _arg3;
_local9 = _arg5;
} else {
_local7 = _arg5;
_local9 = _arg3;
};
if (_arg4 < _arg6){
_local8 = _arg4;
_local10 = _arg6;
} else {
_local8 = _arg6;
_local10 = _arg4;
};
_local11 = 0.0001;
return (!((((((((_arg1 < (_local7 - _local11))) || ((_arg1 > (_local9 + _local11))))) || ((_arg2 < (_local8 - _local11))))) || ((_arg2 > (_local10 + _local11))))));
}
public static function interpolateAngle(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number;
var _local5:Number;
while (_arg1 < 0) {
_arg1 = (_arg1 + (Math.PI * 2));
};
while (_arg2 < 0) {
_arg2 = (_arg2 + (Math.PI * 2));
};
while (_arg1 >= (Math.PI * 2)) {
_arg1 = (_arg1 - (Math.PI * 2));
};
while (_arg2 >= (Math.PI * 2)) {
_arg2 = (_arg2 - (Math.PI * 2));
};
if (_arg1 > _arg2){
if ((_arg1 - _arg2) > Math.PI){
_arg1 = (_arg1 - (Math.PI * 2));
};
} else {
if ((_arg2 - _arg1) > Math.PI){
_arg2 = (_arg2 - (Math.PI * 2));
};
};
_local5 = (_arg1 + (_arg3 * (_arg2 - _arg1)));
while (_local5 > Math.PI) {
_local5 = (_local5 - (Math.PI * 2));
};
while (_local5 < -(Math.PI)) {
_local5 = (_local5 + (Math.PI * 2));
};
return (_local5);
}
public static function rotate(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0, _arg5:Number=0):Object{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local6 = (_arg2 - _arg4);
_local7 = (_arg3 - _arg5);
_local8 = Math.cos(_arg1);
_local9 = Math.sin(_arg1);
return ({x:((_arg4 + (_local6 * _local8)) - (_local7 * _local9)), y:((_arg5 + (_local6 * _local9)) + (_local7 * _local8))});
}
public static function rotatePoint(_arg1:Number, _arg2:Point, _arg3:Point=null):Point{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
if (_arg3 == null){
_local5 = 0;
_local4 = _local5;
} else {
_local4 = _arg3.x;
_local5 = _arg3.y;
};
_local6 = (_arg2.x - _local4);
_local7 = (_arg2.y - _local5);
_local8 = Math.cos(_arg1);
_local9 = Math.sin(_arg1);
return (new Point(((_local4 + (_local6 * _local8)) - (_local7 * _local9)), ((_local5 + (_local6 * _local9)) + (_local7 * _local8))));
}
public static function getNormal(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Object;
_local5 = (_arg1 - _arg3);
_local6 = (_arg2 - _arg4);
_local7 = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
if (!_local7){
return ({x:0, y:0});
};
_local8 = {x:(_local6 / _local7), y:(-(_local5) / _local7)};
return (_local8);
}
public static function intersectPolygons(_arg1:Array, _arg2:Array){
var _local3:int;
var _local4:int;
var _local5:Array;
var _local6:Point;
var _local7:Point;
var _local8:Point;
var _local9:Point;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Object;
var _local15:int;
var _local16:int;
_local3 = (_arg1.length - 1);
_local4 = (_arg2.length - 1);
_local5 = [];
if ((((_local3 < 2)) || ((_local4 < 2)))){
return;
};
_local15 = 0;
while (_local15 < _local3) {
_local6 = _arg1[_local15];
_local7 = _arg1[(_local15 + 1)];
_local10 = _local6.x;
_local11 = _local6.y;
_local12 = _local7.x;
_local13 = _local7.y;
_local16 = 0;
while (_local16 < _local4) {
_local8 = _arg2[_local16];
_local9 = _arg2[(_local16 + 1)];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local16++;
};
_local8 = _arg2[_local16];
_local9 = _arg2[0];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local15++;
};
_local6 = _arg1[_local15];
_local7 = _arg1[0];
_local10 = _local6.x;
_local11 = _local6.y;
_local12 = _local7.x;
_local13 = _local7.y;
_local16 = 0;
while (_local16 < _local4) {
_local8 = _arg2[_local16];
_local9 = _arg2[(_local16 + 1)];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local16++;
};
_local8 = _arg2[_local16];
_local9 = _arg2[0];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
return (_local5);
}
}
}//package as3
Section 3
//Physics (as3.Physics)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Physics {
public static const ROTATION_PROP:String = "rotation";
public static const Y_PROP:String = "y";
public static const SKEWY_PROP:String = "skewY";
public static const SCALEX_PROP:String = "scaleX";
public static const X_PROP:String = "x";
public static const SCALEY_PROP:String = "scaleY";
public static const SKEWX_PROP:String = "skewX";
public static function attach(_arg1:Array, _arg2:DisplayObject, _arg3:MovieClip, _arg4:Array=null){
var _local5:Point;
var _local6:Point;
_local5 = _arg2.localToGlobal(new Point());
_local6 = _arg3.globalToLocal(_local5);
if (_arg4 == null){
_arg4 = [];
};
_arg1[_arg1.length] = {mc:_arg2, par:_arg3, point:_local6, props:_arg4};
}
public static function updateSkewY(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.y - _arg1.position.y)) / _arg1.hWeight));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.b = _arg4[0];
}
public static function updateElastic(_arg1:Array){
var _local2:int;
var _local3:int;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
updateElasticClip(_arg1[_local2]);
_local2++;
};
}
public static function updateAttached(_arg1:Array){
var _local2:int;
var _local3:int;
var _local4:Object;
var _local5:Point;
var _local6:Point;
var _local7:int;
var _local8:int;
var _local9:Array;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
_local4 = _arg1[_local2];
if (_local4.mc.parent){
_local5 = _local4.par.localToGlobal(_local4.point);
_local6 = _local4.mc.parent.globalToLocal(_local5);
_local4.mc.x = _local6.x;
_local4.mc.y = _local6.y;
};
_local9 = _local4.props;
_local8 = _local9.length;
_local7 = 0;
while (_local7 < _local8) {
_local4.mc[_local9[_local7]] = _local4.par[_local9[_local7]];
_local7++;
};
_local2++;
};
}
public static function setElastic(_arg1:Array, _arg2:DisplayObjectContainer, _arg3:MovieClip, _arg4:Array, _arg5:Array, _arg6:Array, _arg7:Array, _arg8:Array, _arg9:Array):Object{
var _local10:Array;
var _local11:int;
var _local12:int;
var _local13:String;
var _local14:Point;
var _local15:Rectangle;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
if (!_arg3.parent){
return (null);
};
_local10 = [ROTATION_PROP];
_local12 = _arg4.length;
_local11 = 0;
while (_local11 < _local12) {
_local13 = _arg4[_local11];
_local10[_local11] = [_arg6[_local11], 0, 0];
_local11++;
};
_local14 = _arg3.localToGlobal(new Point());
_local14 = _arg2.globalToLocal(_local14);
_local15 = _arg3.getBounds(_arg3);
_local16 = (_local15.right + _local15.left);
_local17 = (_local15.bottom + _local15.top);
_local18 = ((_local16)<0) ? _local15.left : _local15.right;
_local19 = ((_local17)<0) ? _local15.top : _local15.bottom;
_arg1[_arg1.length] = {clip:_arg3, props:_arg4, position:_local14, values:_local10, topLevel:_arg2, rect:_local15, hWeight:_local18, vWeight:_local19, frictions:_arg5, dests:_arg6, multipliers:_arg7, speeds:_arg8, scales:_arg9};
return (_arg1[(_arg1.length - 1)]);
}
public static function updateSkewX(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.x - _arg1.position.x)) / _arg1.vWeight));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.c = _arg4[0];
}
public static function balancePoint(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int=1){
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:int;
_local6 = _arg1[0];
_local7 = _arg1[1];
_local8 = _arg1[2];
_local9 = 0;
while (_local9 < _arg5) {
_arg1[1] = ((_arg1[1] * _arg2) + _arg1[2]);
_arg1[2] = ((_arg3 - _arg1[0]) * _arg4);
_arg1[0] = (_arg1[0] + (_local7 * _arg2));
_local9++;
};
}
public static function editElastic(_arg1:Array, _arg2:MovieClip, _arg3:String, _arg4:Number){
var _local5:int;
var _local6:int;
_local6 = _arg1.length;
_local5 = 0;
while (_local5 < _local6) {
if (_arg1[_local5].clip == _arg2){
_arg1[_local5].dests[_arg3] = _arg4;
return;
};
_local5++;
};
}
public static function updateScaleX(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
var _local10:Rectangle;
var _local11:Number;
_local10 = _arg1.clip.getBounds(_arg1.topLevel);
_local11 = (_local10.right - _local10.left);
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.x - _arg1.position.x)) / _local11));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.a = _arg4[0];
}
public static function updateScaleY(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
var _local10:Rectangle;
var _local11:Number;
_local10 = _arg1.clip.getBounds(_arg1.topLevel);
_local11 = (_local10.bottom - _local10.top);
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.y - _arg1.position.y)) / _local11));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.d = _arg4[0];
}
public static function updateElasticClip(_arg1:Object){
var _local2:int;
var _local3:Array;
var _local4:int;
var _local5:Point;
var _local6:String;
var _local7:Matrix;
_local3 = _arg1.props;
_local4 = _local3.length;
_local5 = _arg1.clip.localToGlobal(new Point());
_local5 = _arg1.topLevel.globalToLocal(_local5);
_local7 = _arg1.clip.transform.matrix;
_local2 = 0;
while (_local2 < _local4) {
_local6 = _local3[_local2];
switch (_local6){
case SKEWX_PROP:
updateSkewX(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SKEWY_PROP:
updateSkewY(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SCALEX_PROP:
updateScaleX(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SCALEY_PROP:
updateScaleY(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
};
_local2++;
};
_arg1.clip.transform.matrix = _local7;
_arg1.position = _local5;
}
}
}//package as3
Section 4
//_btn1_27 (delphox_fla._btn1_27)
package delphox_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn1_27 extends MovieClip {
public var _txt:TextField;
}
}//package delphox_fla
Section 5
//_btn2_28 (delphox_fla._btn2_28)
package delphox_fla {
import flash.display.*;
public dynamic class _btn2_28 extends MovieClip {
public function _btn2_28(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package delphox_fla
Section 6
//_btn3_29 (delphox_fla._btn3_29)
package delphox_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn3_29 extends MovieClip {
public var _txt:TextField;
}
}//package delphox_fla
Section 7
//arm1_25 (delphox_fla.arm1_25)
package delphox_fla {
import flash.display.*;
public dynamic class arm1_25 extends MovieClip {
public var robe1:MovieClip;
public var robe2:MovieClip;
}
}//package delphox_fla
Section 8
//arm2_3 (delphox_fla.arm2_3)
package delphox_fla {
import flash.display.*;
public dynamic class arm2_3 extends MovieClip {
public var robe1:MovieClip;
public var robe2:MovieClip;
}
}//package delphox_fla
Section 9
//delphox_1 (delphox_fla.delphox_1)
package delphox_fla {
import flash.display.*;
public dynamic class delphox_1 extends MovieClip {
public var leg1:MovieClip;
public var leg2:MovieClip;
public var bg:MovieClip;
public var tail:MovieClip;
public var arm2:MovieClip;
public var arm1:MovieClip;
public var breast1:MovieClip;
public var breast2:MovieClip;
public var body:MovieClip;
public var tree:MovieClip;
public var branch:MovieClip;
public var branch2:MovieClip;
public var belly:MovieClip;
public var head:MovieClip;
public var robe1:MovieClip;
public var robe2:MovieClip;
}
}//package delphox_fla
Section 10
//eye_17 (delphox_fla.eye_17)
package delphox_fla {
import flash.display.*;
public dynamic class eye_17 extends MovieClip {
public var pupil:MovieClip;
public function eye_17(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 19, frame20, 25, frame26, 27, frame28, 29, frame30);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame26(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame20(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame30(){
this.gotoAndPlay(this.currentLabel);
}
function frame28(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package delphox_fla
Section 11
//head_14 (delphox_fla.head_14)
package delphox_fla {
import flash.display.*;
public dynamic class head_14 extends MovieClip {
public var blush:MovieClip;
public var eye:MovieClip;
public var ear1:MovieClip;
public var mouth:MovieClip;
public var nose:MovieClip;
}
}//package delphox_fla
Section 12
//MainTimeline (delphox_fla.MainTimeline)
package delphox_fla {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import expansion.*;
import as3.*;
import flash.text.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.media.*;
import flash.net.*;
import flash.printing.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public const BIG_SIZE:int = 400;
public const PREGNANT_SIZE:int = 240;
public const BAR_X_MARGIN:Number = 8;
public const BAR_CORNERS:Number = 4;
public const MARKER_WIDTH1_2:Number = 5;
public const MIN_BAR_WIDTH:Number = 200;
public const MARKER_HEIGHT:Number = 8;
public const BAR_SPEED:int = 2;
public const BAR_HEIGHT:Number = 16;
public const BAR_Y_MARGIN:Number = 8;
public const FINAL_SIZE:int = 600;
public const BAR_MULTIPLIER:Number = 0.2;
public const BAR_FRICTION:Number = 0.5;
public var size:Number;
public var VORTEX_FACTOR:Number;
public var EYE_ID:int;
public var oldMY:Number;
public var MAX_SIZE:int;
public var MAX_Y:Number;
public var oldMX:Number;
public var MAX__SIZE:int;
public var DEFORM_SPEED:int;
public var INV_VORTEX_FACTOR:Number;
public var BAR_WIDTH:Number;
public var BLUSH_ON_SPEED:Number;
public var lcd_stolen_bg:MovieClip;
public var STICK:MovieClip;
public var settingSize:Boolean;
public var delphox:MovieClip;
public var leg1Bounds:Rectangle;
public var expression:Expression;
public var BLUSH_OFF_SPEED:Number;
public var MIN_DEFORM_MULTIPLIER:Number;
public var bounds:Rectangle;
public var MAX_LEG_SCALE_Y:Number;
public var barSize:Array;
public var growthBar:MovieClip;
public var growthMarker:MovieClip;
public var STICK_ICON:MovieClip;
public var _SIZE:int;
public var _panel:MovieClip;
public var oldY:Number;
public var STICK_WIDTH:Number;
public var DEST_MAX_SIZE:int;
public var DEST__SIZE:int;
public var tmp:Array;
public var oldX:Number;
public var DELPHOX_X:Number;
public var DELPHOX_Y:Number;
public var zooming:Number;
public var BLUSH_VALUE:Number;
public var DEFORM_FRICTION:Number;
public var MAX_DEFORM_MULTIPLIER:Number;
public var DEFORM_IMPULSE:Number;
public var DEFORM_Y:Array;
public var DEFORM_X:Array;
public var VORTICITY:Number;
public var DELPHOX_SCALE:Number;
public var destRobeAlpha:Number;
public var BLUSH_MODE:int;
public var START_X:Number;
public var PUPIL_ID:int;
public var MAX_LEG_SKEW_X:Number;
public var _2:MovieClip;
public var START_Y:Number;
public var _1:MovieClip;
public var MOUTH_ID:int;
public var ATTACHED:Array;
public var lcd_stolen_item:MovieClip;
public var growth:Number;
public var __NOTE:String;
public var lcd_stolen:String;
public var robeAlpha:Number;
public function MainTimeline(){
addFrameScript(0, frame1);
}
public function eFrame(_arg1:Event){
if (growth > 0){
size = (size + growth);
if (size >= MAX_SIZE){
size = MAX_SIZE;
growth = 0;
_panel._expand.gotoAndStop(1);
};
setSize(size);
switch (true){
case (size < 10):
expression.setState("normal");
break;
case (size < PREGNANT_SIZE):
expression.setState("expand");
break;
case (size == PREGNANT_SIZE):
if (((!(_panel._nonstop.visible)) || ((_panel._nonstop.currentFrame == 1)))){
growth = 0;
_panel._expand.gotoAndStop(1);
};
expression.setState("pregnant");
break;
case (size < BIG_SIZE):
expression.setState("bigger");
break;
case (size == BIG_SIZE):
if (((!(_panel._nonstop.visible)) || ((_panel._nonstop.currentFrame == 1)))){
growth = 0;
_panel._expand.gotoAndStop(1);
};
expression.setState("big");
break;
case (size < FINAL_SIZE):
expression.setState("more");
break;
case (size == FINAL_SIZE):
growth = 0;
_panel._expand.gotoAndStop(1);
expression.setState("final");
break;
};
} else {
if (growth < 0){
size = (size + growth);
if (size <= 1){
size = 1;
growth = 0;
_panel._revert.gotoAndStop(1);
};
setSize(size);
if (size < PREGNANT_SIZE){
expression.setState("revert");
} else {
expression.setState("bigRevert");
};
} else {
if (size > MAX_SIZE){
size = MAX_SIZE;
};
switch (true){
case (size <= 10):
expression.setState("normal");
break;
case (size <= PREGNANT_SIZE):
expression.setState("pregnant");
break;
case (size <= BIG_SIZE):
expression.setState("big");
break;
case (size <= FINAL_SIZE):
expression.setState("final");
break;
};
};
};
updateMaxSize();
updateSize();
update_Size();
updateBlush();
updateDeform();
updateRobe();
updatePanel();
delphox.body.y = (START_Y + (((MAX_Y - START_Y) * size) / FINAL_SIZE));
Physics.updateAttached(ATTACHED);
updateSkew();
if (((expression.reacting) && ((expression.state == "fire")))){
if (delphox.head.mouth.currentLabel == "endfire"){
expression.endReact();
if (((STICK.parent) && (STICK.visible))){
STICK.gotoAndPlay("fire");
};
};
};
if ((((((Math.random() < 0.01)) && ((size > (PREGNANT_SIZE * 0.75))))) && (!(expression.reacting)))){
kick();
};
}
public function zoomIn(_arg1:MouseEvent){
zooming = 0.02;
}
public function dropSizeBar(_arg1:MouseEvent){
settingSize = false;
stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragSizeBar);
stage.removeEventListener(MouseEvent.MOUSE_UP, dropSizeBar);
}
public function blushOff(){
BLUSH_MODE = 0;
}
public function updateSize(){
if (((settingSize) && (!(growth)))){
size = (1 + (((MAX_SIZE - 1) * (stage.mouseX - growthBar.x)) / BAR_WIDTH));
size = ((size)<1) ? 1 : ((size)>MAX_SIZE) ? MAX_SIZE : size;
};
Physics.balancePoint(barSize, BAR_FRICTION, size, BAR_MULTIPLIER, BAR_SPEED);
if ((((Math.abs((barSize[0] - size)) < 1)) && ((Math.abs(barSize[1]) < 1)))){
barSize[0] = size;
barSize[1] = (barSize[2] = 0);
};
growthMarker.x = (growthBar.x + ((BAR_WIDTH * (barSize[0] - 1)) / (MAX_SIZE - 1)));
if (growthMarker.x < growthBar.x){
growthMarker.x = growthBar.x;
};
if (growthMarker.x > (growthBar.x + BAR_WIDTH)){
growthMarker.x = (growthBar.x + BAR_WIDTH);
};
setSize(barSize[0]);
updateSizeBar();
}
public function zoomOut(_arg1:MouseEvent){
zooming = -0.02;
}
public function dragSizeBar(_arg1:MouseEvent){
var _local2:Number;
_local2 = stage.mouseX;
growthMarker.x = ((_local2)<growthBar.x) ? growthBar.x : ((_local2)>(growthBar.x + BAR_WIDTH)) ? (growthBar.x + BAR_WIDTH) : _local2;
}
public function kick(){
var _local1:Number;
_local1 = ((Math.random() * 2) * Math.PI);
generateImpulse(_local1);
generateImpulse(_local1);
expression.react("kick", 12);
if (Math.random() < 0.5){
blush();
};
}
public function updateMaxSize(){
if (MAX_SIZE < (DEST_MAX_SIZE - 8)){
MAX_SIZE = (MAX_SIZE + 2);
} else {
if (MAX_SIZE > (DEST_MAX_SIZE + 8)){
MAX_SIZE = (MAX_SIZE - 8);
} else {
MAX_SIZE = DEST_MAX_SIZE;
};
};
}
public function updateMagic(_arg1:Event){
var _local2:MovieClip;
var _local3:Number;
var _local4:Graphics;
_local2 = (_arg1.currentTarget as MovieClip);
_local3 = (_local2.life / _local2.maxLife);
_local4 = _local2.graphics;
_local2.ringAlpha = (1 - _local3);
_local2.ringRadius = (_local2.maxRingRadius * Math.sqrt(_local3));
_local2.ringThickness = (_local2.maxRingThickness * (1 - _local3));
_local4.clear();
_local4.lineStyle(_local2.ringThickness, _local2.ringColor, _local2.ringAlpha);
_local4.drawCircle(0, 0, _local2.ringRadius);
_local2.life++;
if (_local2.life >= _local2.maxLife){
_local4.clear();
_local2.removeEventListener(Event.ENTER_FRAME, updateMagic);
_local2.parent.removeChild(_local2);
};
}
public function expand(_arg1:MouseEvent){
if (size < MAX_SIZE){
if (growth < 1){
_panel._expand.gotoAndStop(2);
_panel._revert.gotoAndStop(1);
growth = 1;
} else {
_panel._expand.gotoAndStop(1);
growth = 0;
};
} else {
resetAll();
};
}
function frame1(){
lcd_stolen = new LocalConnection().domain;
if (lcd_stolen.toLowerCase().indexOf("swfchan") != -1){
stop();
lcd_stolen_bg = new MovieClip();
while (numChildren) {
removeChildAt(0);
};
lcd_stolen_bg.graphics.beginFill(0xFFFFFF);
lcd_stolen_bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
lcd_stolen_bg.graphics.endFill();
lcd_stolen_item = new MovieClip();
lcd_stolen_item.tF = new TextFormat();
lcd_stolen_item.tF.bold = true;
lcd_stolen_item.tF.size = 64;
lcd_stolen_item.tF.color = 0xFF2200;
lcd_stolen_item.tF.font = "Trebuchet MS";
lcd_stolen_item.txt = new TextField();
lcd_stolen_item.txt.defaultTextFormat = lcd_stolen_item.tF;
lcd_stolen_item.txt.text = "swfchan.com";
lcd_stolen_item.txt.width = (lcd_stolen_item.txt.textWidth + 5);
lcd_stolen_item.txt.height = (lcd_stolen_item.txt.textHeight + 5);
lcd_stolen_item.bmp = new Bitmap(new BitmapData((lcd_stolen_item.txt.textWidth + 5), (lcd_stolen_item.txt.textHeight + 5), true, 0));
lcd_stolen_item.bmp.bitmapData.draw(lcd_stolen_item.txt);
lcd_stolen_item.bmp.x = (lcd_stolen_item.bmp.x - (lcd_stolen_item.bmp.width * 0.5));
lcd_stolen_item.bmp.y = (lcd_stolen_item.bmp.y - (lcd_stolen_item.bmp.height * 0.5));
lcd_stolen_item.addChild(lcd_stolen_item.bmp);
delete lcd_stolen_item.txt;
delete lcd_stolen_item.tF;
lcd_stolen_item.x = (Math.random() * stage.stageWidth);
lcd_stolen_item.y = (Math.random() * stage.stageWidth);
lcd_stolen_item.vX = (5 + (Math.random() * 10));
lcd_stolen_item.vY = (5 + (Math.random() * 10));
lcd_stolen_item.vR = (1 + ((Math.random() * 5) * ((Math.random())<0.5) ? -1 : 1));
stage.addChild(lcd_stolen_bg);
stage.addChild(lcd_stolen_item);
stage.addEventListener(Event.RESIZE, function (_arg1:Event){
lcd_stolen_bg.graphics.clear();
lcd_stolen_bg.graphics.beginFill(0xFFFFFF);
lcd_stolen_bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
lcd_stolen_bg.graphics.endFill();
});
stage.addEventListener(Event.ENTER_FRAME, function (_arg1:Event){
lcd_stolen_item.x = (lcd_stolen_item.x + lcd_stolen_item.vX);
lcd_stolen_item.y = (lcd_stolen_item.y + lcd_stolen_item.vY);
lcd_stolen_item.rotation = (lcd_stolen_item.rotation + lcd_stolen_item.vR);
bounds = lcd_stolen_item.getBounds(stage);
if ((((((bounds.left < 0)) && ((lcd_stolen_item.vX < 0)))) || ((((bounds.right > stage.stageWidth)) && ((lcd_stolen_item.vX > 0)))))){
lcd_stolen_item.vX = -(lcd_stolen_item.vX);
};
if ((((((bounds.top < 0)) && ((lcd_stolen_item.vY < 0)))) || ((((bounds.bottom > stage.stageHeight)) && ((lcd_stolen_item.vY > 0)))))){
lcd_stolen_item.vY = -(lcd_stolen_item.vY);
};
});
return;
};
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
__NOTE = "I thought you guys had left already. There's nothing interesting here.";
DEST_MAX_SIZE = PREGNANT_SIZE;
MAX_SIZE = PREGNANT_SIZE;
size = 1;
growth = 0;
expression = new Expression(stage);
growthBar = new MovieClip();
growthMarker = new MovieClip();
barSize = [1, 0, 0];
settingSize = false;
_1 = delphox.breast1;
_2 = delphox.breast2;
STICK_ICON = new Stick();
STICK = new Stick();
STICK_ICON.graphics.lineStyle(1, 0xFF0000);
STICK_ICON.graphics.beginFill(39423, 0.5);
STICK_ICON.graphics.drawRoundRect(0, 0, STICK_ICON.width, STICK_ICON.height, 16, 16);
STICK_ICON.graphics.endFill();
STICK_ICON.scaleX = (STICK_ICON.scaleY = 0.5);
STICK_ICON.buttonMode = true;
STICK.mouseEnabled = (STICK.mouseChildren = false);
STICK_WIDTH = STICK_ICON.width;
delphox.branch2.tabEnabled = false;
delphox.branch2.tabChildren = false;
delphox.head.blush.alpha = 0;
setSize(1);
MOUTH_ID = expression.addPart(delphox.head.mouth, Expression.ANIMATED, false);
EYE_ID = expression.addPart(delphox.head.eye, Expression.ANIMATED, true);
PUPIL_ID = expression.addPart(delphox.head.eye.pupil, Expression.ANIMATED, false);
tmp = [];
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "smile");
expression.addPartToState(tmp, EYE_ID, "open");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("normal", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "medium");
expression.addPartToState(tmp, EYE_ID, "sad2");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("expand", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "oh");
expression.addPartToState(tmp, EYE_ID, "open");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 4, 8);
expression.addState("bigger", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "open");
expression.addPartToState(tmp, EYE_ID, "closed");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("more", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "happy");
expression.addPartToState(tmp, EYE_ID, "medium");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 2, 4);
expression.addState("pregnant", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "smile2");
expression.addPartToState(tmp, EYE_ID, "sad");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("big", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "happy2");
expression.addPartToState(tmp, EYE_ID, "small");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 4, 8);
expression.addState("final", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "medium");
expression.addPartToState(tmp, EYE_ID, "small");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("revert", tmp);
expression.addStateAttributes(tmp, true, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "closed");
expression.addPartToState(tmp, EYE_ID, "medium");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 3, 6);
expression.addState("bigRevert", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "fire");
expression.addPartToState(tmp, EYE_ID, "small");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("fire", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "happy");
expression.addPartToState(tmp, EYE_ID, "sad");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 3, 8);
expression.addState("clothesOff", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "happy2");
expression.addPartToState(tmp, EYE_ID, "medium");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 4, 4);
expression.addState("clothesOn", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "teeth");
expression.addPartToState(tmp, EYE_ID, "small");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, -3);
expression.addState("_Expand", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "small");
expression.addPartToState(tmp, EYE_ID, "sad2");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 8);
expression.addState("_Revert", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "smile2");
expression.addPartToState(tmp, EYE_ID, "shut");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 8);
expression.addState("bellyPoke", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "teeth");
expression.addPartToState(tmp, EYE_ID, "sad");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, 0, 0);
expression.addState("kick", tmp);
expression.addStateAttributes(tmp, false, 0.1, 1);
expression.addPartToState(tmp, MOUTH_ID, "teeth");
expression.addPartToState(tmp, EYE_ID, "medium");
expression.addPartToState(tmp, PUPIL_ID, null, 0, 0, -4, -4);
expression.addState("breastPoke", tmp);
expression.activate();
expression.setState("normal");
stage.addEventListener(Event.ENTER_FRAME, eFrame);
stage.addEventListener(Event.RESIZE, resize);
resize(null);
BLUSH_VALUE = 0;
BLUSH_MODE = 0;
BLUSH_ON_SPEED = 0.2;
BLUSH_OFF_SPEED = 0.05;
destRobeAlpha = 1;
robeAlpha = 1;
zooming = 0;
DELPHOX_X = delphox.x;
DELPHOX_Y = delphox.y;
DELPHOX_SCALE = delphox.scaleX;
_panel._cont_txt.text = "Continuous";
_panel._nonstop_txt.text = "Non-stop";
_panel._info.text = "Interactive pregnant Delphox.\nDrawn, animated and programmed by Doom the wolf\nhttp://doom-the-wolf.deviantart.com";
_panel._expand._txt.text = "Expand";
_panel._revert._txt.text = "Revert";
_panel._plus._txt.text = "+";
_panel._zero._txt.text = "0";
_panel._minus._txt.text = "-";
_panel._cont.gotoAndStop(1);
_panel._nonstop.gotoAndStop(1);
_panel._expand.gotoAndStop(1);
_panel._revert.gotoAndStop(1);
_panel._nonstop.visible = (_panel._nonstop_txt.visible = false);
_panel._cont.addEventListener(MouseEvent.MOUSE_DOWN, invertFrame);
_panel._nonstop.addEventListener(MouseEvent.MOUSE_DOWN, invertFrame);
_panel._expand.addEventListener(MouseEvent.MOUSE_DOWN, expand);
_panel._revert.addEventListener(MouseEvent.MOUSE_DOWN, revert);
_panel._plus.addEventListener(MouseEvent.MOUSE_DOWN, zoomIn);
_panel._minus.addEventListener(MouseEvent.MOUSE_DOWN, zoomOut);
_panel._zero.addEventListener(MouseEvent.MOUSE_DOWN, zoomReset);
stage.addEventListener(MouseEvent.MOUSE_UP, stopExpansion);
stage.addEventListener(MouseEvent.MOUSE_DOWN, pickStage);
BAR_WIDTH = MIN_BAR_WIDTH;
addChild(growthBar);
addChild(growthMarker);
growthMarker.visible = false;
_SIZE = 1;
DEST__SIZE = 1;
MAX__SIZE = 120;
set_Size(_SIZE);
delphox.branch2.addEventListener(MouseEvent.MOUSE_DOWN, moveBranch2);
VORTICITY = 1;
VORTEX_FACTOR = 0.5;
INV_VORTEX_FACTOR = (1 - VORTEX_FACTOR);
DEFORM_X = [0, 0, 0];
DEFORM_Y = [0, 0, 0];
DEFORM_FRICTION = 0.3;
MIN_DEFORM_MULTIPLIER = 0.3;
MAX_DEFORM_MULTIPLIER = 0.1;
DEFORM_SPEED = 8;
DEFORM_IMPULSE = 0.08;
delphox.addEventListener(MouseEvent.MOUSE_DOWN, pokeStuff);
ATTACHED = [];
START_Y = delphox.body.y;
START_X = delphox.body.x;
MAX_Y = (START_Y + 8);
MAX_LEG_SKEW_X = 0.03;
leg1Bounds = delphox.leg1.getBounds(delphox.leg1);
MAX_LEG_SCALE_Y = ((leg1Bounds.bottom - (MAX_Y - START_Y)) / leg1Bounds.bottom);
Physics.attach(ATTACHED, delphox.head, delphox.body);
Physics.attach(ATTACHED, delphox.arm1, delphox.body);
Physics.attach(ATTACHED, delphox.arm2, delphox.body);
Physics.attach(ATTACHED, delphox.leg1, delphox.body);
Physics.attach(ATTACHED, delphox.leg2, delphox.body);
Physics.attach(ATTACHED, delphox.breast1, delphox.body);
Physics.attach(ATTACHED, delphox.breast2, delphox.body);
Physics.attach(ATTACHED, delphox.belly, delphox.body);
Physics.attach(ATTACHED, delphox.robe1, delphox.body);
Physics.attach(ATTACHED, delphox.robe2, delphox.body);
Physics.attach(ATTACHED, delphox.tail, delphox.body);
}
public function updatePanel(){
if (_panel.hitTestPoint(stage.mouseX, stage.mouseY, false)){
_panel.y = (_panel.y + (((stage.stageHeight - 100) - _panel.y) * 0.5));
} else {
_panel.y = (_panel.y + ((stage.stageHeight - _panel.y) * 0.5));
};
if (_panel.y < (stage.stageHeight - 10)){
if (((STICK.parent) && (STICK.visible))){
Mouse.show();
};
STICK.alpha = 0.1;
} else {
if (((STICK.parent) && (STICK.visible))){
Mouse.hide();
};
STICK.alpha = 1;
};
if (zooming){
delphox.scaleX = (delphox.scaleX + zooming);
delphox.scaleY = delphox.scaleX;
if (delphox.scaleX > 3){
delphox.scaleX = (delphox.scaleY = 3);
};
Algorithms.adjustScreen(delphox, delphox.bg);
};
if (growth > 0){
_panel._expand._txt.text = "Expanding...";
} else {
if (size >= MAX_SIZE){
_panel._expand._txt.text = "Reset";
} else {
if (size < PREGNANT_SIZE){
_panel._expand._txt.text = "Expand";
} else {
if (size < BIG_SIZE){
_panel._expand._txt.text = "Bigger";
} else {
if (size < FINAL_SIZE){
_panel._expand._txt.text = "More!";
};
};
};
};
};
if (growth < 0){
_panel._revert._txt.text = "Reverting...";
} else {
_panel._revert._txt.text = "Revert";
};
}
public function resize(_arg1:Event){
Algorithms.adjustScreen(delphox, delphox.bg);
growthBar.x = ((stage.stageWidth - BAR_WIDTH) - BAR_X_MARGIN);
growthBar.y = BAR_Y_MARGIN;
growthMarker.y = growthBar.y;
if (STICK_ICON.parent){
STICK_ICON.x = ((stage.stageWidth - BAR_X_MARGIN) - STICK_WIDTH);
STICK_ICON.y = ((BAR_HEIGHT + BAR_Y_MARGIN) + BAR_Y_MARGIN);
};
}
public function stopExpansion(_arg1:MouseEvent){
if (_panel._cont.currentFrame == 1){
growth = 0;
_panel._revert.gotoAndStop(1);
_panel._expand.gotoAndStop(1);
};
zooming = 0;
}
public function stickSelection(_arg1:Event){
var _local2:int;
var _local3:int;
var _local4:Boolean;
_local2 = stage.mouseX;
_local3 = stage.mouseY;
if (STICK.visible){
if (STICK_ICON.hitTestPoint(_local2, _local3, false)){
STICK.visible = false;
Mouse.show();
STICK.gotoAndPlay("normal");
} else {
if (STICK.currentLabel == "fire"){
_local4 = true;
if (_panel.hitTestPoint(_local2, _local3, true)){
_local4 = false;
} else {
if ((((destRobeAlpha > 0)) && (delphox.robe1.hitTestPoint(_local2, _local3, true)))){
showRobe(false);
expression.endReact();
expression.react("clothesOff", 30);
blush();
} else {
if (((_1.hitTestPoint(_local2, _local3, true)) || (_2.hitTestPoint(_local2, _local3, true)))){
if (DEST__SIZE < MAX__SIZE){
DEST__SIZE = MAX__SIZE;
if (_SIZE < DEST__SIZE){
expression.react("_Expand", -1);
blushOn();
};
} else {
DEST__SIZE = 1;
if (((expression.reacting) && ((expression.state == "_Expand")))){
blushOff();
expression.endReact();
};
if (_SIZE > DEST__SIZE){
expression.react("_Revert", 50);
};
};
} else {
if (delphox.belly.hitTestPoint(_local2, _local3, true)){
if (DEST_MAX_SIZE == PREGNANT_SIZE){
DEST_MAX_SIZE = BIG_SIZE;
_panel._nonstop.visible = (_panel._nonstop_txt.visible = true);
} else {
if (DEST_MAX_SIZE == BIG_SIZE){
DEST_MAX_SIZE = FINAL_SIZE;
_panel._nonstop.visible = (_panel._nonstop_txt.visible = true);
} else {
if (DEST_MAX_SIZE == FINAL_SIZE){
DEST_MAX_SIZE = PREGNANT_SIZE;
_panel._nonstop.visible = (_panel._nonstop_txt.visible = false);
};
};
};
} else {
if (growthBar.hitTestPoint(_local2, _local3, true)){
if (!growthMarker.visible){
growthBar.addEventListener(MouseEvent.MOUSE_DOWN, pickSizeBar);
growthMarker.visible = true;
} else {
_local4 = false;
};
} else {
if (delphox.robe1.hitTestPoint(_local2, _local3, true)){
if (_1.currentFrame > 1){
_local4 = false;
} else {
showRobe(true);
expression.react("clothesOn", 30);
};
} else {
_local4 = false;
};
};
};
};
};
};
if (_local4){
generateMagicEffect();
};
} else {
if (delphox.head.mouth.hitTestPoint(_local2, _local3, true)){
if (!expression.reacting){
expression.react("fire", -1);
};
};
};
};
} else {
if (STICK_ICON.hitTestPoint(_local2, _local3, false)){
STICK.visible = true;
Mouse.hide();
};
};
}
public function pickSizeBar(_arg1:MouseEvent){
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragSizeBar);
stage.addEventListener(MouseEvent.MOUSE_UP, dropSizeBar);
settingSize = true;
}
public function updateDeform(){
var _local1:int;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Matrix;
_local2 = DEFORM_X[1];
_local3 = DEFORM_Y[1];
_local4 = (MIN_DEFORM_MULTIPLIER + (((MAX_DEFORM_MULTIPLIER - MIN_DEFORM_MULTIPLIER) * size) / FINAL_SIZE));
_local1 = 0;
while (_local1 < DEFORM_SPEED) {
Physics.balancePoint(DEFORM_X, DEFORM_FRICTION, 0, _local4, 1);
Physics.balancePoint(DEFORM_Y, DEFORM_FRICTION, 0, _local4, 1);
_local2 = DEFORM_X[1];
_local3 = DEFORM_Y[1];
DEFORM_X[1] = (((VORTEX_FACTOR * VORTICITY) * _local3) + (INV_VORTEX_FACTOR * _local2));
DEFORM_Y[1] = (((-(VORTEX_FACTOR) * VORTICITY) * _local2) + (INV_VORTEX_FACTOR * _local3));
_local1++;
};
_local5 = delphox.belly.transform.matrix;
Algorithms.deformMatrix(_local5, DEFORM_X[0], DEFORM_Y[0]);
delphox.belly.transform.matrix = _local5;
}
public function blush(){
BLUSH_MODE = 2;
}
public function generateMagicEffect(){
var _local1:MovieClip;
_local1 = new MovieClip();
stage.addChildAt(_local1, stage.getChildIndex(STICK));
_local1.addEventListener(Event.ENTER_FRAME, updateMagic);
_local1.maxRingRadius = 150;
_local1.maxRingThickness = 30;
_local1.maxLife = 15;
_local1.ringColor = 0xFF9900;
_local1.life = 0;
_local1.x = stage.mouseX;
_local1.y = stage.mouseY;
}
public function blushOn(){
BLUSH_MODE = 1;
}
public function generatePokeSprite(){
var _local1:MovieClip;
_local1 = new Poke();
_local1.x = delphox.mouseX;
_local1.y = delphox.mouseY;
delphox.addChild(_local1);
_local1.addEventListener(Event.ENTER_FRAME, pokeSprite);
}
public function zoomReset(_arg1:MouseEvent){
zooming = 0;
delphox.x = DELPHOX_X;
delphox.y = DELPHOX_Y;
delphox.scaleX = (delphox.scaleY = DELPHOX_SCALE);
Algorithms.adjustScreen(delphox, delphox.bg);
}
public function invertFrame(_arg1:MouseEvent){
var _local2:MovieClip;
_local2 = (_arg1.currentTarget as MovieClip);
if (_local2){
_local2.gotoAndStop((3 - _local2.currentFrame));
};
}
public function updateSizeBar(){
var _local1:Graphics;
var _local2:Number;
BAR_WIDTH = ((MIN_BAR_WIDTH * MAX_SIZE) / PREGNANT_SIZE);
if (BAR_WIDTH > (stage.stageWidth - (BAR_X_MARGIN + BAR_X_MARGIN))){
BAR_WIDTH = (stage.stageWidth - (BAR_X_MARGIN + BAR_X_MARGIN));
};
_local1 = growthBar.graphics;
_local1.clear();
_local1.lineStyle(2, 0xFF0000);
_local1.beginFill(0x990000);
_local1.drawRoundRect(0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_CORNERS, BAR_CORNERS);
_local1.endFill();
if (MAX_SIZE >= BIG_SIZE){
_local1.lineStyle(2, 0xFF9900);
_local1.beginFill(0x996600);
_local1.drawRoundRect(0, 0, ((BAR_WIDTH * BIG_SIZE) / MAX_SIZE), BAR_HEIGHT, BAR_CORNERS, BAR_CORNERS);
_local1.endFill();
} else {
_local1.lineStyle(2, 0xFF9900);
_local1.beginFill(0x996600);
_local1.drawRoundRect(0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_CORNERS, BAR_CORNERS);
_local1.endFill();
};
_local1.lineStyle(2, 0xFFFF00);
_local1.beginFill(0xCC9900);
_local1.drawRoundRect(0, 0, ((BAR_WIDTH * PREGNANT_SIZE) / MAX_SIZE), BAR_HEIGHT, BAR_CORNERS, BAR_CORNERS);
_local1.endFill();
_local2 = ((barSize[0] - 1) / (MAX_SIZE - 1));
if (_local2 < 0){
_local2 = 0;
};
if (_local2 > 1){
_local2 = 1;
};
_local1.lineStyle(2, 0xFF00);
_local1.beginFill(0x9900);
_local1.drawRoundRect(0, 0, (BAR_WIDTH * _local2), BAR_HEIGHT, BAR_CORNERS, BAR_CORNERS);
_local1.endFill();
_local1 = growthMarker.graphics;
_local1.clear();
if (size >= MAX_SIZE){
_local1.lineStyle(2, 0xFF0000);
_local1.beginFill(0x990000);
} else {
_local1.lineStyle(2, 0xFF);
_local1.beginFill(153);
};
_local1.moveTo(-(MARKER_WIDTH1_2), 0);
_local1.lineTo(MARKER_WIDTH1_2, 0);
_local1.lineTo(0, MARKER_HEIGHT);
_local1.lineTo(-(MARKER_WIDTH1_2), 0);
_local1.endFill();
growthBar.x = ((stage.stageWidth - BAR_WIDTH) - BAR_X_MARGIN);
growthBar.y = BAR_Y_MARGIN;
growthMarker.y = growthBar.y;
}
public function moveStick(_arg1:MouseEvent){
STICK.x = stage.mouseX;
STICK.y = stage.mouseY;
}
public function dropStage(_arg1:MouseEvent){
stage.removeEventListener(MouseEvent.MOUSE_UP, dropStage);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveStage);
}
public function pokeBreast(_arg1:Event){
if (((STICK.visible) && (STICK.parent))){
return;
};
generatePokeSprite();
if (!expression.reacting){
expression.react("breastPoke", 30);
if (Math.random() < 0.25){
blush();
};
};
}
public function pickStage(_arg1:MouseEvent){
if (!isDraggable()){
return;
};
stage.addEventListener(MouseEvent.MOUSE_UP, dropStage);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveStage);
oldMX = stage.mouseX;
oldMY = stage.mouseY;
oldX = delphox.x;
oldY = delphox.y;
}
public function updateSkew(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Matrix;
_local1 = ((delphox.body.y - START_Y) / (MAX_Y - START_Y));
_local2 = (MAX_LEG_SKEW_X * _local1);
_local3 = (1 + ((MAX_LEG_SCALE_Y - 1) * _local1));
_local4 = (1 + ((MAX_LEG_SCALE_Y - 1) * _local1));
_local5 = delphox.leg1.transform.matrix;
_local5.c = _local2;
_local5.d = _local3;
delphox.leg1.transform.matrix = _local5;
_local5 = delphox.leg2.transform.matrix;
_local5.c = _local2;
_local5.d = _local4;
delphox.leg2.transform.matrix = _local5;
}
public function setSize(_arg1:int){
delphox.belly.gotoAndStop(_arg1);
delphox.robe1.gotoAndStop(_arg1);
updateSizeBar();
}
public function isDraggable(){
var _local1:int;
var _local2:int;
_local1 = stage.mouseX;
_local2 = stage.mouseY;
if (((((((((((((((((((((((((((delphox.body.hitTestPoint(_local1, _local2, true)) || (delphox.belly.hitTestPoint(_local1, _local2, true)))) || (delphox.head.hitTestPoint(_local1, _local2, true)))) || (delphox.arm1.hitTestPoint(_local1, _local2, true)))) || (delphox.robe1.hitTestPoint(_local1, _local2, true)))) || (delphox.tail.hitTestPoint(_local1, _local2, true)))) || (delphox.leg1.hitTestPoint(_local1, _local2, true)))) || (delphox.leg2.hitTestPoint(_local1, _local2, true)))) || (delphox.arm2.hitTestPoint(_local1, _local2, true)))) || (growthBar.hitTestPoint(_local1, _local2, true)))) || (growthMarker.hitTestPoint(_local1, _local2, true)))) || (delphox.branch2.hitTestPoint(_local1, _local2, true)))) || ((_panel.y < (stage.stageHeight - 10))))) || (((STICK_ICON.parent) && (STICK_ICON.hitTestPoint(_local1, _local2, false)))))){
return (false);
};
return (true);
}
public function updateRobe(){
if ((((destRobeAlpha == 1)) && ((_SIZE > 1)))){
return;
};
if (destRobeAlpha != robeAlpha){
robeAlpha = (robeAlpha + ((destRobeAlpha)>robeAlpha) ? 0.1 : -0.1);
delphox.robe1.alpha = (delphox.robe2.alpha = (delphox.arm1.robe1.alpha = (delphox.arm1.robe2.alpha = (delphox.arm2.robe1.alpha = (delphox.arm2.robe2.alpha = robeAlpha)))));
};
}
public function moveStage(_arg1:MouseEvent){
delphox.x = ((oldX + stage.mouseX) - oldMX);
delphox.y = ((oldY + stage.mouseY) - oldMY);
Algorithms.adjustScreen(delphox, delphox.bg);
}
public function updateBlush(){
if (BLUSH_MODE){
if (BLUSH_VALUE < 1){
BLUSH_VALUE = (BLUSH_VALUE + BLUSH_ON_SPEED);
if (BLUSH_VALUE >= 1){
BLUSH_VALUE = 1;
if (BLUSH_MODE == 2){
BLUSH_MODE = 0;
};
};
delphox.head.blush.alpha = BLUSH_VALUE;
} else {
if (BLUSH_MODE == 2){
BLUSH_MODE = 0;
};
};
} else {
if (BLUSH_VALUE > 0){
BLUSH_VALUE = (BLUSH_VALUE - BLUSH_OFF_SPEED);
if (BLUSH_VALUE <= 0){
BLUSH_VALUE = 0;
};
delphox.head.blush.alpha = BLUSH_VALUE;
};
};
}
public function pokeBelly(_arg1:Event){
var _local2:Rectangle;
var _local3:Number;
var _local4:Number;
var _local5:Number;
if (((STICK.visible) && (STICK.parent))){
return;
};
_local2 = delphox.belly.getBounds(stage);
_local3 = (_local2.x + (_local2.width * 0.5));
_local4 = (_local2.y + (_local2.height * 0.5));
_local5 = Math.atan2((_local4 - stage.mouseY), (_local3 - stage.mouseX));
generateImpulse(_local5);
generatePokeSprite();
if (((!(expression.reacting)) && ((size > (PREGNANT_SIZE >> 2))))){
expression.react("bellyPoke", 20);
if (Math.random() < 0.25){
blush();
};
};
}
public function pokeSprite(_arg1:Event){
var _local2:MovieClip;
_local2 = (_arg1.currentTarget as MovieClip);
if (_local2.currentFrame == _local2.totalFrames){
_local2.removeEventListener(Event.ENTER_FRAME, pokeSprite);
_local2.parent.removeChild(_local2);
};
}
public function update_Size(){
if (_SIZE < DEST__SIZE){
_SIZE++;
set_Size(_SIZE);
if ((((((_SIZE == DEST__SIZE)) && (expression.reacting))) && ((expression.state == "_Expand")))){
blushOff();
expression.endReact();
};
} else {
if (_SIZE > DEST__SIZE){
_SIZE--;
set_Size(_SIZE);
};
};
}
public function pokeStuff(_arg1:Event){
var _local2:Number;
var _local3:Number;
_local2 = stage.mouseX;
_local3 = stage.mouseY;
if ((((delphox.robe1.alpha <= 0.1)) || (!(delphox.robe1.hitTestPoint(_local2, _local3, true))))){
if (delphox.breast1.hitTestPoint(_local2, _local3, true)){
pokeBreast(null);
} else {
if (delphox.belly.hitTestPoint(_local2, _local3, true)){
pokeBelly(null);
} else {
if (delphox.breast2.hitTestPoint(_local2, _local3, true)){
pokeBreast(null);
};
};
};
};
}
public function showRobe(_arg1:Boolean=true){
destRobeAlpha = int(_arg1);
}
public function set_Size(_arg1:int){
if ((((robeAlpha > 0)) && ((_arg1 > 1)))){
return;
};
_1.gotoAndStop(_arg1);
_2.gotoAndStop(_arg1);
}
public function moveBranch2(_arg1:MouseEvent){
delphox.branch2.visible = false;
stage.addChild(STICK_ICON);
stage.addChild(STICK);
STICK.visible = true;
STICK_ICON.visible = true;
STICK.x = stage.mouseX;
STICK.y = stage.mouseY;
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveStick);
stage.addEventListener(MouseEvent.MOUSE_UP, stickSelection);
resize(null);
Mouse.hide();
}
public function generateImpulse(_arg1:Number){
var _local2:Number;
_local2 = (size / FINAL_SIZE);
DEFORM_X[1] = ((DEFORM_IMPULSE * _local2) * Math.cos(_arg1));
DEFORM_Y[1] = ((DEFORM_IMPULSE * _local2) * Math.sin(_arg1));
}
public function revert(_arg1:MouseEvent){
if (growth > -1){
_panel._revert.gotoAndStop(2);
_panel._expand.gotoAndStop(1);
growth = -1;
} else {
_panel._revert.gotoAndStop(1);
growth = 0;
};
}
public function resetAll(){
if (STICK.parent){
Mouse.show();
STICK.parent.removeChild(STICK);
STICK_ICON.parent.removeChild(STICK_ICON);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveStick);
stage.removeEventListener(MouseEvent.MOUSE_UP, stickSelection);
};
if (growthMarker.visible){
growthMarker.visible = false;
growthBar.removeEventListener(MouseEvent.MOUSE_DOWN, pickSizeBar);
};
MAX_SIZE = PREGNANT_SIZE;
delphox.branch2.visible = true;
_panel._expand.gotoAndStop(1);
_panel._revert.gotoAndStop(1);
growth = 0;
_SIZE = (size = 1);
barSize[0] = 1;
barSize[1] = (barSize[2] = 0);
set_Size(1);
setSize(1);
growthMarker.x = growthBar.x;
updateSizeBar();
}
}
}//package delphox_fla
Section 13
//mouth_15 (delphox_fla.mouth_15)
package delphox_fla {
import flash.display.*;
public dynamic class mouth_15 extends MovieClip {
public function mouth_15(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 13, frame14, 15, frame16, 17, frame18, 19, frame20, 21, frame22, 48, frame49);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
this.gotoAndPlay(this.currentLabel);
}
function frame18(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame16(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame22(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame20(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame49(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package delphox_fla
Section 14
//panel_26 (delphox_fla.panel_26)
package delphox_fla {
import flash.display.*;
import flash.text.*;
public dynamic class panel_26 extends MovieClip {
public var _nonstop:MovieClip;
public var _revert:MovieClip;
public var _cont:MovieClip;
public var _minus:MovieClip;
public var _cont_txt:TextField;
public var _zero:MovieClip;
public var _plus:MovieClip;
public var _info:TextField;
public var _expand:MovieClip;
public var _nonstop_txt:TextField;
}
}//package delphox_fla
Section 15
//Expansion (expansion.Expansion)
package expansion {
import flash.display.*;
import flash.events.*;
public class Expansion extends EventDispatcher {
private var _expanding:Array;
private var _sizes:Array;
private var _active:Boolean;
private var _numExpandables:uint;
private var _expandables:Array;
private var _checkPoints:Array;
private var _maxSizes:Array;
private var _stage:Stage;
public function Expansion(_arg1:Stage){
_stage = _arg1;
_active = false;
_numExpandables = 0;
_expandables = [];
_sizes = [];
_maxSizes = [];
_expanding = [];
_checkPoints = [];
if (_arg1 == null){
throw ("ERROR: Stage must not be null.");
};
}
public function set size(_arg1:Number){
var _local2:int;
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
return;
};
setSize(_local2, _arg1);
_local2++;
};
}
public function setSize(_arg1:uint, _arg2:Number){
if (isNaN(_arg2)){
return;
};
_sizes[_arg1] = Math.max(1, Math.min(_arg2, _maxSizes[_arg1]));
_expandables[_arg1].gotoAndStop(Math.floor(_sizes[_arg1]));
}
public function getExpandableID(_arg1:MovieClip):int{
var _local2:int;
while (_local2 < _expandables.length) {
if (_expandables[_local2] == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
private function eFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Boolean;
var _local5:Array;
var _local6:int;
_local4 = false;
_local5 = [];
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
} else {
_local3 = _sizes[_local2];
_sizes[_local2] = Math.max(1, Math.min(_maxSizes[_local2], (_sizes[_local2] + _expanding[_local2])));
if (_local3 != _sizes[_local2]){
_local4 = true;
_expandables[_local2].gotoAndStop(Math.floor(_sizes[_local2]));
while (_local6 < _checkPoints.length) {
if (_checkPoints[_local6].expandable == _local2){
if ((((((_checkPoints[_local6].direction > 0)) && ((_checkPoints[_local6].size > _local3)))) && ((_checkPoints[_local6].size <= _sizes[_local2])))){
_local5.push(new ExpansionEvent("checkpoint", _expandables[_local2], _checkPoints[_local6].size, _checkPoints[_local6].direction, _checkPoints[_local6].reaction, _checkPoints[_local6].timer));
break;
} else {
if ((((((_checkPoints[_local6].direction < 0)) && ((_checkPoints[_local6].size >= _sizes[_local2])))) && ((_checkPoints[_local6].size < _local3)))){
_local5.push(new ExpansionEvent("checkpoint", _expandables[_local2], _checkPoints[_local6].size, _checkPoints[_local6].direction, _checkPoints[_local6].reaction, _checkPoints[_local6].timer));
break;
};
};
};
_local6++;
};
};
};
_local2++;
};
if (_local4){
dispatchEvent(new Event("sizeChanged"));
_local2 = 0;
while (_local2 < _local5.length) {
dispatchEvent(_local5[_local2]);
_local2++;
};
};
}
public function set maxSize(_arg1:uint){
var _local2:int;
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
return;
};
setMaxSize(_local2, _arg1);
_local2++;
};
}
public function set growth(_arg1:Number){
var _local2:int;
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
return;
};
setGrowth(_local2, _arg1);
_local2++;
};
}
public function insertExpandable(_arg1:MovieClip, _arg2:int=-1):int{
var _local3:int;
if (_arg1 == null){
return (-1);
};
_local3 = 0;
while (_local3 < _expandables.length) {
if (_expandables[_local3] == _arg1){
if (_arg2 > 0){
_maxSizes[_local3] = _arg2;
} else {
if (!_arg2){
_maxSizes[_local3] = _arg1.totalFrames;
};
};
return (_local3);
};
_local3++;
};
_local3 = 0;
while (_local3 < _expandables.length) {
if (_expandables[_local3] == null){
break;
};
_local3++;
};
_arg1.gotoAndStop(1);
_numExpandables++;
_sizes[_local3] = 1;
_expandables[_local3] = _arg1;
_expanding[_local3] = 0;
if (_arg2 > 0){
_maxSizes[_local3] = _arg2;
} else {
_maxSizes[_local3] = _arg1.totalFrames;
};
return (_local3);
}
public function clearCheckPoint(_arg1:uint, _arg2:int, _arg3:int=1){
var _local4:MovieClip;
var _local5:int;
_local4 = _expandables[_arg1];
if (!_local4){
return;
};
_local5 = 0;
while (_local5 < _checkPoints.length) {
if ((((((_checkPoints[_local5].size == _arg2)) && ((_checkPoints.expandable == _local4)))) && ((_checkPoints[_local5].direction == _arg3)))){
delete _checkPoints[_local5];
_checkPoints.splice(_local5, 1);
return;
};
_local5++;
};
}
public function get numExpandables():uint{
return (_numExpandables);
}
public function removeExpandable(_arg1:MovieClip){
var _local2:int;
while (_local2 < _expandables.length) {
if (_expandables[_local2] == _arg1){
clearCheckPointByID(_local2);
delete _expandables[_local2];
_expandables[_local2] = null;
_sizes[_local2] = 0;
_maxSizes[_local2] = 0;
_expanding[_local2] = 0;
_numExpandables--;
if (_local2 == (_expandables.length - 1)){
_expandables.splice(_local2, 1);
_sizes.splice(_local2, 1);
_maxSizes.splice(_local2, 1);
_expanding.splice(_local2, 1);
};
return;
};
_local2++;
};
}
public function getGrowth(_arg1:uint):Number{
if (_arg1 > _expandables.length){
return (0);
};
return (_expanding[_arg1]);
}
public function setMaxSize(_arg1:uint, _arg2:uint){
if (isNaN(_arg2)){
return;
};
_maxSizes[_arg1] = Math.max(1, Math.min(_expandables[_arg1].totalFrames, _arg2));
if (_sizes[_arg1] > _arg2){
setSize(_arg1, _arg2);
};
}
public function setGrowth(_arg1:uint, _arg2:Number){
if (isNaN(_arg2)){
return;
};
_expanding[_arg1] = _arg2;
}
public function getMaxSize(_arg1:uint):uint{
if (_arg1 > _expandables.length){
return (0);
};
return (_maxSizes[_arg1]);
}
public function getCheckPoint(_arg1:int, _arg2:int, _arg3:int=1):String{
var _local4:MovieClip;
var _local5:int;
_local4 = _expandables[_arg1];
if (!_local4){
return ("");
};
_local5 = 0;
while (_local5 < _checkPoints.length) {
if ((((((_checkPoints[_local5].size == _arg2)) && ((_checkPoints.expandable == _local4)))) && ((_checkPoints[_local5].direction == _arg3)))){
return (_checkPoints[_local5].reaction);
};
_local5++;
};
return ("");
}
private function clearCheckPointByID(_arg1:uint){
var _local2:MovieClip;
var _local3:int;
_local2 = _expandables[_arg1];
if (!_local2){
return;
};
_local3 = 0;
while (_local3 < _checkPoints.length) {
if (_checkPoints.expandable == _local2){
delete _checkPoints[_local3];
_checkPoints.splice(_local3, 1);
_local3--;
};
_local3++;
};
}
public function getExpandable(_arg1:uint):MovieClip{
if (_arg1 > _expandables.length){
return (null);
};
return (_expandables[_arg1]);
}
public function removeExpandableAt(_arg1:uint){
if ((((_arg1 < _expandables.length)) && (!((_expandables[_arg1] == null))))){
clearCheckPointByID(_arg1);
_expandables[_arg1] = null;
_sizes[_arg1] = 0;
_maxSizes[_arg1] = 0;
_expanding[_arg1] = 0;
_numExpandables--;
if (_arg1 == (_expandables.length - 1)){
_expandables.splice(_arg1, 1);
_sizes.splice(_arg1, 1);
_maxSizes.splice(_arg1, 1);
_expanding.splice(_arg1, 1);
};
};
}
public function setCheckPoint(_arg1:uint, _arg2:int, _arg3:int=1, _arg4:String="", _arg5:int=30){
var _local6:MovieClip;
var _local7:int;
_local6 = _expandables[_arg1];
if (!_local6){
return;
};
_local7 = 0;
while (_local7 < _checkPoints.length) {
if ((((((_checkPoints[_local7].size == _arg2)) && ((_checkPoints[_local7].expandable == _arg1)))) && ((_checkPoints[_local7].direction == _arg3)))){
_checkPoints[_local7].reaction = _arg4;
return;
};
_local7++;
};
if (_arg3 < 0){
_arg3 = -1;
} else {
if (_arg3 > 0){
_arg3 = 1;
};
};
_checkPoints.push({size:_arg2, reaction:_arg4, expandable:_arg1, direction:_arg3, timer:_arg5});
}
public function activate(_arg1:Boolean=true){
if (_active == _arg1){
return;
};
_active = _arg1;
if (_active){
_stage.addEventListener("enterFrame", eFrame);
} else {
_stage.removeEventListener("enterFrame", eFrame);
};
}
public function getSize(_arg1:uint):Number{
if (_arg1 > _expandables.length){
return (0);
};
return (_sizes[_arg1]);
}
}
}//package expansion
Section 16
//ExpansionEvent (expansion.ExpansionEvent)
package expansion {
import flash.display.*;
import flash.events.*;
public class ExpansionEvent extends Event {
public var timer:int;
public var size:int;
public var reaction:String;
public var expandable:MovieClip;
public var direction:int;
public function ExpansionEvent(_arg1:String, _arg2:MovieClip, _arg3:int, _arg4:int=1, _arg5:String="", _arg6:int=30){
super(_arg1);
expandable = _arg2;
size = _arg3;
direction = _arg4;
reaction = _arg5;
timer = _arg6;
}
}
}//package expansion
Section 17
//Expression (expansion.Expression)
package expansion {
import flash.display.*;
import flash.events.*;
public class Expression extends EventDispatcher {
private var _position:Number;
private var _state:String;
private var _curState:Array;
private var _states:Array;
private var _active:Boolean;
private var _permanent:Boolean;
private var _offset:Number;
private var _interruptible:Boolean;
private var _eyes:Array;
private var _partBaseValues:Array;
private var _timer:int;
private var _canBlink:Boolean;
private var _partTypes:Array;
private var _expansion:Expansion;
private var _angle:Number;
private var _frequency:Number;
private var _parts:Array;
private var _blinking:Boolean;
private var _savedState:Array;
private var _reactions:Array;
private var _stage:Stage;
public static const ANIMATED:int = 0;
public static const ROTATION_SPEED:int = 2;
public static const X_POS:int = 3;
public static const Y_POS:int = 4;
public static const FRAME:int = 0;
public static const MOVABLE:int = 1;
public static const ROTATION:int = 1;
public function Expression(_arg1:Stage){
_active = false;
_stage = _arg1;
_state = "";
_canBlink = true;
_blinking = false;
_offset = 0;
_frequency = 0;
_angle = 0;
_position = 0;
_curState = [];
_states = [];
_eyes = [];
_parts = [];
_partTypes = [];
_partBaseValues = [];
_savedState = null;
_reactions = [];
_interruptible = true;
_timer = -1;
_permanent = false;
_expansion = null;
if (_arg1 == null){
throw ("ERROR: Stage must not be null.");
};
}
public function get reacting():Boolean{
return (!((_savedState == null)));
}
public function get canBlink():Boolean{
return (_canBlink);
}
public function addPartToState(_arg1:Array, _arg2:int, _arg3:String, _arg4:Number=0, _arg5:Number=1, _arg6:Number=0, _arg7:Number=0){
var _local8:MovieClip;
if (!_arg1){
return;
};
_local8 = getPartAt(_arg2);
if (!_local8){
throw ("This part is not in the list. Try using addPart() first.");
};
if (_arg1[_arg2]){
delete _arg1[_arg2];
};
_arg1[_arg2] = [];
_arg1[_arg2][FRAME] = _arg3;
if (isNaN(_arg4)){
_arg1[_arg2][ROTATION] = undefined;
} else {
_arg1[_arg2][ROTATION] = _arg4;
};
if (isNaN(_arg5)){
_arg1[_arg2][ROTATION_SPEED] = undefined;
} else {
_arg1[_arg2][ROTATION_SPEED] = _arg5;
};
if (isNaN(_arg6)){
_arg1[_arg2][X_POS] = undefined;
} else {
_arg1[_arg2][X_POS] = _arg6;
};
if (isNaN(_arg7)){
_arg1[_arg2][Y_POS] = undefined;
} else {
_arg1[_arg2][Y_POS] = _arg7;
};
}
public function get state():String{
return (_state);
}
public function get offset():Number{
return (_offset);
}
public function get blinking():Boolean{
return (_blinking);
}
private function _reacting(_arg1:Event){
var _local2:Object;
_local2 = getReaction((_arg1.target as EventDispatcher), _arg1.type);
if (_local2 == null){
throw ("Reaction not found on the list.");
};
react(_local2.state, _local2.timer);
}
public function destroy(){
var _local1:int;
if (_expansion != null){
_expansion.removeEventListener("checkpoint", expansionReaction);
_expansion = null;
};
_local1 = 0;
while (_local1 < _reactions.length) {
_reactions[_local1].hit.removeEventListener(_reactions[_local1].type, _reacting);
delete _reactions[_local1];
_local1++;
};
_reactions = [];
_curState = [];
_states = [];
_parts = [];
_partTypes = [];
_partBaseValues = [];
_savedState = null;
_state = "";
_canBlink = true;
_blinking = false;
_offset = 0;
_frequency = 0;
_angle = 0;
_position = 0;
_timer = -1;
}
public function endReact(){
if (!_savedState){
return;
};
_curState.state = _savedState.state;
_savedState = null;
setState(_curState.state);
_timer = -1;
dispatchEvent(new Event("endreact"));
}
public function removePart(_arg1:MovieClip){
var _local2:int;
var _local3:int;
_local2 = 0;
while (_local2 < _parts.length) {
if (_parts[_local2] == _arg1){
delete _parts[_local2];
delete _partTypes[_local2];
_parts[_local2] = null;
_partTypes[_local2] = 0;
_local3 = 0;
while (_local3 < _eyes.length) {
if (_eyes[_local3] == _local2){
_eyes.splice(_local3, 1);
break;
};
_local3++;
};
if (_local2 == (_parts.length - 1)){
_parts.splice(_local2, 1);
_partTypes.splice(_local2, 1);
};
return;
};
_local2++;
};
}
public function getReaction(_arg1:EventDispatcher, _arg2:String):Object{
var _local3:int;
_local3 = 0;
while (_local3 < _reactions.length) {
if ((((_reactions[_local3].hit == _arg1)) && ((_reactions[_local3].type == _arg2)))){
return (_reactions[_local3]);
};
_local3++;
};
return (null);
}
public function set offset(_arg1:Number){
if (!isNaN(_arg1)){
_offset = _arg1;
};
}
public function get position():Number{
return (_position);
}
private function eFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
if ((((((((Math.random() > 0.99)) && (_canBlink))) && ((_savedState == null)))) && (_eyes.length))){
_local2 = 0;
while (_local2 < _eyes.length) {
_parts[_eyes[_local2]].gotoAndPlay("blink");
_local2++;
};
_blinking = true;
dispatchEvent(new Event("blink"));
};
if (((_blinking) && ((_parts[_eyes[0]].currentLabel == "endblink")))){
_local2 = 0;
while (_local2 < _eyes.length) {
if (((_curState[_eyes[_local2]]) && (_curState[_eyes[_local2]][FRAME]))){
_parts[_eyes[_local2]].gotoAndPlay(_curState[_eyes[_local2]][FRAME]);
};
_local2++;
};
_blinking = false;
dispatchEvent(new Event("endblink"));
};
_local2 = 0;
while (_local2 < _curState.length) {
if (((_curState[_local2]) && (_parts[_local2]))){
if (!isNaN((_curState[_local2][ROTATION] + _curState[_local2][ROTATION_SPEED]))){
_local3 = (_curState[_local2][ROTATION] + _partBaseValues[_local2].rotation);
_local4 = (_local3 - 360);
_local5 = (_local3 + 360);
_local6 = _local3;
_local7 = Math.abs((_local4 - _parts[_local2].rotation));
_local8 = Math.abs((_local5 - _parts[_local2].rotation));
_local9 = Math.abs((_local3 - _parts[_local2].rotation));
if (_local7 <= _local9){
_local6 = _local4;
};
if ((((_local8 <= _local7)) && ((_local8 <= _local9)))){
_local6 = _local5;
};
if (_parts[_local2].rotation < (_local6 - _curState[_local2][ROTATION_SPEED])){
_parts[_local2].rotation = (_parts[_local2].rotation + _curState[_local2][ROTATION_SPEED]);
} else {
if (_parts[_local2].rotation > (_local6 + _curState[_local2][ROTATION_SPEED])){
_parts[_local2].rotation = (_parts[_local2].rotation - _curState[_local2][ROTATION_SPEED]);
} else {
_parts[_local2].rotation = _local3;
};
};
};
if (!isNaN(_curState[_local2][X_POS])){
_local3 = (_curState[_local2][X_POS] + _partBaseValues[_local2].x);
_parts[_local2].x = (_parts[_local2].x + ((_local3 - _parts[_local2].x) * 0.5));
};
if (!isNaN(_curState[_local2][Y_POS])){
_local3 = (_curState[_local2][Y_POS] + _partBaseValues[_local2].y);
_parts[_local2].y = (_parts[_local2].y + ((_local3 - _parts[_local2].y) * 0.5));
};
};
_local2++;
};
_position = Math.sin(_angle);
_angle = (_angle + _frequency);
if (_angle > 500){
_angle = (_angle - ((Math.PI * 2) * (500 / (Math.PI * 2))));
};
if (_savedState){
if (_timer > 0){
_timer--;
} else {
if (_timer == 0){
endReact();
};
};
};
dispatchEvent(new Event("enterFrame"));
}
public function react(_arg1:String, _arg2:int=30){
var _local3:Array;
if (((_savedState) && (!(_interruptible)))){
return;
};
if (((!(_arg1)) || (!(_arg1.length)))){
return;
};
_local3 = null;
if (!_savedState){
_local3 = _curState;
} else {
_local3 = _savedState;
};
_savedState = null;
_timer = _arg2;
setState(_arg1);
if (_local3 != null){
_savedState = _local3;
};
dispatchEvent(new Event("react"));
}
public function removePartAt(_arg1:uint){
var _local2:int;
if ((((_arg1 >= _parts.length)) || ((_parts[_arg1] == null)))){
return;
};
delete _parts[_arg1];
delete _partTypes[_arg1];
_parts[_arg1] = null;
_partTypes[_arg1] = 0;
_local2 = 0;
while (_local2 < _eyes.length) {
if (_eyes[_local2] == _arg1){
_eyes.splice(_local2, 1);
break;
};
_local2++;
};
if (_arg1 == (_parts.length - 1)){
_parts.splice(_arg1, 1);
_partTypes.splice(_arg1, 1);
};
}
public function addPart(_arg1:MovieClip, _arg2:int=0, _arg3:Boolean=false):int{
var _local4:int;
if (!_arg1){
return (-1);
};
_local4 = 0;
while (_local4 < _parts.length) {
if (_parts[_local4] == _arg1){
_partTypes[_local4] = _arg2;
return (_local4);
};
_local4++;
};
_local4 = 0;
while (_local4 < _parts.length) {
if (_parts[_local4] == null){
break;
};
_local4++;
};
_arg1.stop();
if (_arg3){
_eyes.push(_local4);
};
_parts[_local4] = _arg1;
_partTypes[_local4] = _arg2;
_partBaseValues[_local4] = {x:_arg1.x, y:_arg1.y, scaleX:_arg1.scaleX, scaleY:_arg1.scaleY, rotation:_arg1.rotation};
return (_local4);
}
public function get interruptible():Boolean{
return (_interruptible);
}
public function get curState():Array{
return (_curState);
}
public function getStateByName(_arg1:String):Object{
if (!_states[_arg1]){
return (null);
};
return (_states[_arg1]);
}
public function set frequency(_arg1:Number){
if (!isNaN(_arg1)){
_frequency = _arg1;
};
}
public function getPartID(_arg1:MovieClip):int{
var _local2:int;
_local2 = 0;
while (_local2 < _parts.length) {
if (_parts[_local2] == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function get timer():int{
return (_timer);
}
public function get defaultState():String{
if (!_savedState){
return (_state);
};
return (_savedState.state);
}
public function get angle():Number{
return (_angle);
}
public function set canBlink(_arg1:Boolean){
_canBlink = _arg1;
}
public function reactTo(_arg1:Expansion, _arg2:Boolean=false){
if (_expansion != null){
_expansion.removeEventListener("checkpoint", expansionReaction);
_expansion = null;
};
_permanent = _arg2;
if (!_arg1){
return;
};
_expansion = _arg1;
_arg1.addEventListener("checkpoint", expansionReaction, false, 1, true);
}
public function get frequency():Number{
return (_frequency);
}
private function expansionReaction(_arg1:ExpansionEvent){
if (((!(_arg1.reaction)) || (!(_arg1.reaction.length)))){
return;
};
if (_permanent){
if (reacting){
_savedState.state = _arg1.reaction;
} else {
setState(_arg1.reaction);
};
} else {
react(_arg1.reaction, _arg1.timer);
};
}
public function setState(_arg1:String, _arg2:Boolean=false){
var _local3:Array;
var _local4:int;
var _local5:String;
if (_arg1 == _state){
return;
};
if (_savedState){
if (_arg2){
_savedState.state = _arg1;
};
return;
};
if (!_states[_arg1]){
return;
};
_local3 = _curState;
_curState = [];
_curState.state = (_state = _arg1);
if (_states[_arg1]["canBlink"] != undefined){
_canBlink = _states[_arg1]["canBlink"];
};
if (!isNaN(_states[_arg1]["frequency"])){
_frequency = _states[_arg1]["frequency"];
};
if (!isNaN(_states[_arg1]["offset"])){
_offset = _states[_arg1]["offset"];
};
_blinking = false;
_local4 = 0;
while (_local4 < _states[_arg1].length) {
_curState[_local4] = _states[_arg1][_local4];
_local4++;
};
_local4 = 0;
while (_local4 < _parts.length) {
if (((((!(_states[_arg1][_local4])) || (!(_states[_arg1][_local4][FRAME])))) || (!(_states[_arg1][_local4][FRAME].length)))){
} else {
if ((((_partTypes[_local4] == MOVABLE)) && (_local3[_local4]))){
_local5 = ((_local3[_local4][FRAME] + "2") + _states[_arg1][_local4][FRAME]);
if (((!((_parts[_local4].currentLabel == _states[_arg1][_local4][FRAME]))) && (hasLabel(_parts[_local4], _local5)))){
_parts[_local4].gotoAndPlay(_local5);
} else {
if (_states[_arg1][_local4][FRAME] != _local3[_local4][FRAME]){
_parts[_local4].gotoAndPlay(_states[_arg1][_local4][FRAME]);
throw ((((((("Label " + _local5) + " is missing! in Movieclip #") + _local4) + "(") + _parts[_local4].name) + ")."));
};
};
} else {
if (((_states[_arg1][_local4][FRAME]) && (_states[_arg1][_local4][FRAME].length))){
_parts[_local4].gotoAndPlay(_states[_arg1][_local4][FRAME]);
};
};
};
_local4++;
};
}
public function set interruptible(_arg1:Boolean){
_interruptible = _arg1;
}
public function removeState(_arg1:String){
delete _states[_arg1];
}
public function addStateAttributes(_arg1:Array, _arg2:Boolean, _arg3:Number=NaN, _arg4:Number=NaN){
if (!_arg1){
return;
};
_arg1.canBlink = _arg2;
if (!isNaN(_arg3)){
_arg1.frequency = _arg3;
};
if (!isNaN(_arg4)){
_arg1.offset = _arg4;
};
}
public function removeReaction(_arg1:EventDispatcher, _arg2:String){
var _local3:int;
_local3 = 0;
while (_local3 < _reactions.length) {
if ((((_reactions[_local3].hit == _arg1)) && ((_reactions[_local3].type == _arg2)))){
_reactions[_local3].hit.removeEventListener(_arg2, _reacting);
delete _reactions[_local3];
_reactions.splice(_local3, 1);
return;
};
_local3++;
};
}
public function addState(_arg1:String, _arg2:Array){
var _local3:int;
if (_states[_arg1]){
delete _states[_arg1];
};
_states[_arg1] = new Array();
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3]){
_states[_arg1][_local3] = _arg2[_local3].concat();
} else {
_states[_arg1][_local3] = null;
};
_local3++;
};
_states[_arg1].canBlink = _arg2.canBlink;
_states[_arg1].frequency = _arg2.frequency;
_states[_arg1].offset = _arg2.offset;
}
public function addReaction(_arg1:EventDispatcher, _arg2:String, _arg3:String, _arg4:int=30){
var _local5:Object;
_local5 = getReaction(_arg1, _arg2);
if (_local5 != null){
_local5.state = _arg3;
return;
};
_arg1.addEventListener(_arg2, _reacting, false, 2, true);
_reactions.push({hit:_arg1, type:_arg2, state:_arg3, timer:_arg4});
}
public function getBaseValues(_arg1:uint):Object{
var _local2:MovieClip;
_local2 = getPartAt(_arg1);
if (!_local2){
return (null);
};
return (_partBaseValues[_arg1]);
}
public function activate(_arg1:Boolean=true){
if (_active == _arg1){
return;
};
_active = _arg1;
if (_active){
_stage.addEventListener("enterFrame", eFrame);
} else {
_stage.removeEventListener("enterFrame", eFrame);
};
}
public function getPartAt(_arg1:int):MovieClip{
if (_parts[_arg1]){
return (_parts[_arg1]);
};
return (null);
}
public static function hasLabel(_arg1:MovieClip, _arg2:String):Boolean{
var _local3:Array;
var _local4:FrameLabel;
var _local5:int;
_local3 = _arg1.currentLabels;
_local5 = 0;
while (_local5 < _local3.length) {
_local4 = _local3[_local5];
if (_local4.name == _arg2){
return (true);
};
_local5++;
};
return (false);
}
}
}//package expansion
Section 18
//Poke (Poke)
package {
import flash.display.*;
public dynamic class Poke extends MovieClip {
}
}//package
Section 19
//Stick (Stick)
package {
import flash.display.*;
public dynamic class Stick extends MovieClip {
public function Stick(){
addFrameScript(1, frame2, 26, frame27);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame27(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package