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
//_btn1_2 (scratazon_fla._btn1_2)
package scratazon_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn1_2 extends MovieClip {
public var _txt:TextField;
}
}//package scratazon_fla
Section 4
//_btn2_3 (scratazon_fla._btn2_3)
package scratazon_fla {
import flash.display.*;
public dynamic class _btn2_3 extends MovieClip {
public function _btn2_3(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package scratazon_fla
Section 5
//_btn3_4 (scratazon_fla._btn3_4)
package scratazon_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn3_4 extends MovieClip {
public var _txt:TextField;
public function _btn3_4(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package scratazon_fla
Section 6
//breasts_18 (scratazon_fla.breasts_18)
package scratazon_fla {
import flash.display.*;
public dynamic class breasts_18 extends MovieClip {
public var ellipse1:MovieClip;
public var ellipse2:MovieClip;
}
}//package scratazon_fla
Section 7
//eye1_28 (scratazon_fla.eye1_28)
package scratazon_fla {
import flash.display.*;
public dynamic class eye1_28 extends MovieClip {
public var pupil:MovieClip;
public function eye1_28(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 13, frame14, 24, frame25, 34, frame35, 44, frame45);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame25(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame35(){
this.gotoAndPlay(this.currentLabel);
}
function frame45(){
this.stop();
}
}
}//package scratazon_fla
Section 8
//eye2_26 (scratazon_fla.eye2_26)
package scratazon_fla {
import flash.display.*;
public dynamic class eye2_26 extends MovieClip {
public var pupil:MovieClip;
public function eye2_26(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 13, frame14, 24, frame25, 34, frame35, 44, frame45);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame25(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame35(){
this.gotoAndPlay(this.currentLabel);
}
function frame45(){
this.stop();
}
}
}//package scratazon_fla
Section 9
//head_21 (scratazon_fla.head_21)
package scratazon_fla {
import flash.display.*;
public dynamic class head_21 extends MovieClip {
public var antenna1:MovieClip;
public var antenna2:MovieClip;
public var eye2:MovieClip;
public var blush1:MovieClip;
public var blush2:MovieClip;
public var eye1:MovieClip;
public var ear1:MovieClip;
public var ear2:MovieClip;
public var mouth:MovieClip;
}
}//package scratazon_fla
Section 10
//leg1_16 (scratazon_fla.leg1_16)
package scratazon_fla {
import flash.display.*;
public dynamic class leg1_16 extends MovieClip {
public function leg1_16(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package scratazon_fla
Section 11
//leg2_12 (scratazon_fla.leg2_12)
package scratazon_fla {
import flash.display.*;
public dynamic class leg2_12 extends MovieClip {
public function leg2_12(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package scratazon_fla
Section 12
//MainTimeline (scratazon_fla.MainTimeline)
package scratazon_fla {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
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 BLUSH_START_TIME:int = 5;
public const BLUSH_START_INV:Number = 0.2;
public var size:int;
public var reacting:Boolean;
public var sFilters:Array;
public var oldMX:int;
public var states:Object;
public var MAX_SIZE;
public var eye1:MovieClip;
public var eye2:MovieClip;
public var oldMY:int;
public var blushTimer:int;
public var blushActive:Boolean;
public var curState:Object;
public var BLUSH_END_TIME:int;
public var lcd_stolen_bg:MovieClip;
public var blushReduceTime:int;
public var pupil1:MovieClip;
public var pupil2:MovieClip;
public var state:String;
public var offset:Number;
public var bounds:Rectangle;
public var p1X:Number;
public var p1Y:Number;
public var speechStack:Array;
public var mouth:MovieClip;
public var angle:Number;
public var p2Y:Number;
public var p2X:Number;
public var BREAK_START:int;
public var speech:MovieClip;
public var _panel:MovieClip;
public var reactTimer:int;
public var blinking:Boolean;
public var oldY:int;
public var speechBits:int;
public var oldX:int;
public var scratazon:MovieClip;
public var blush1:MovieClip;
public var blush2:MovieClip;
public var tailSpeech:int;
public var BREAK_END:int;
public var frequency:Number;
public var canBlink:Boolean;
public var SCRATAZON_X:Number;
public var SCRATAZON_Y:Number;
public var lcd_stolen_item:MovieClip;
public var growth:int;
public var lcd_stolen:String;
public var zoom:Number;
public var head:MovieClip;
public var BLUSH_END_INV:Number;
public function MainTimeline(){
addFrameScript(0, frame1);
}
public function eFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Number;
blushActive = false;
_local2 = scratazon.breasts.currentFrame;
if (growth > 0){
size = (size + growth);
setSize(size);
if (_local2 < BREAK_END){
if (size < 40){
} else {
if (size < BREAK_START){
setState("notice");
} else {
if (size < 155){
setState("breaking");
} else {
if (size < BREAK_END){
setState("happy");
};
};
};
};
} else {
if (size < 20){
} else {
if (size < BREAK_START){
setState("enjoy");
} else {
if (size < BREAK_END){
setState("smile");
} else {
if (size < 200){
setState("happy");
} else {
if (size < 250){
setState("enjoy");
} else {
if ((((size == 250)) && ((_panel._nonstop.currentFrame == 1)))){
setState("big");
growth = 0;
_panel._expand.gotoAndStop(1);
} else {
if (size < 350){
setState("breathe");
} else {
if (size < 500){
setState("bigger");
} else {
if (size >= 500){
growth = 0;
_panel._expand.gotoAndStop(1);
setState("over");
react("comment", 100);
say("Ooh, yes! This will definitely make me stand out as the leader of the Scratazons.", 0);
say("They're so big, round and jiggly!", 1);
};
};
};
};
};
};
};
};
};
};
} else {
if (growth < 0){
size = (size + growth);
setSize(size);
if (size <= 1){
growth = 0;
} else {
if (size < 40){
} else {
setState("revert");
say("Hey, I was enjoying that!", 2);
};
};
};
};
if (state == "breathe"){
blushActive = true;
};
updateSize();
if (((canBlink) && ((Math.random() > 0.99)))){
blinking = true;
eye1.gotoAndPlay("blink");
eye2.gotoAndPlay("blink");
};
if (((blinking) && ((eye1.currentLabel == "endblink")))){
blinking = false;
eye1.gotoAndPlay(curState.eye1);
eye2.gotoAndPlay(curState.eye2);
};
if ((((Math.random() > 0.995)) && ((scratazon.tail.currentFrame == 1)))){
scratazon.tail.gotoAndPlay(2);
};
if ((((Math.random() > 0.995)) && ((scratazon.leg1.currentFrame == 1)))){
scratazon.leg1.gotoAndPlay(2);
scratazon.leg2.gotoAndPlay(2);
};
_local3 = (Math.sin(angle) * offset);
_local4 = (curState.head + (_local3 * 0.5));
angle = (angle + frequency);
if (head.rotation < (_local4 - 1)){
head.rotation = (head.rotation + 1);
} else {
if (head.rotation > (_local4 + 1)){
head.rotation = (head.rotation - 1);
} else {
head.rotation = _local4;
};
};
scratazon.arm1.scaleY = (1 + (head.rotation * 0.01));
scratazon.arm2.scaleY = (1 + (head.rotation * 0.01));
updateBlush();
if ((((reactTimer > 0)) && (!(--reactTimer)))){
endReact();
};
updateSpeech();
}
public function dropScreen(_arg1:Event){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragScreen);
stage.removeEventListener(MouseEvent.MOUSE_UP, dropScreen);
}
public function zoomIn(_arg1:Event){
zoom = 0.02;
}
public function updateSize(){
var _local1:int;
_local1 = scratazon.breasts.currentFrame;
if ((((_local1 >= BREAK_START)) && ((_local1 <= BREAK_END)))){
if ((((((_local1 == 85)) || ((_local1 == 112)))) || ((_local1 == 122)))){
react("rip", 6);
blush(30);
};
scratazon.breasts.gotoAndStop((_local1 + 1));
scratazon.clothes.gotoAndStop((_local1 + 1));
size = (_local1 + 1);
if (size < BREAK_START){
} else {
if (size < 155){
setState("breaking");
} else {
if (size < BREAK_END){
setState("happy");
};
};
};
if (size == 155){
react("accept", 6);
scratazon.shirt_break.gotoAndPlay(2);
};
};
}
public function characterPoke(_arg1:Event){
var _local2:MovieClip;
var _local3:int;
_local2 = (_arg1.target as MovieClip);
if (!_local2){
return;
};
_local3 = scratazon.breasts.currentFrame;
if ((((_local2 == scratazon.breasts.ellipse1)) || ((_local2 == scratazon.breasts.ellipse2)))){
if ((((_local3 >= BREAK_START)) && ((_local3 <= BREAK_END)))){
say("Tight. Too tight! It's ripping.", -1, false);
} else {
if (size < 40){
react("breastpoke1");
say("You like my boobs?", -1, false);
} else {
if (size < 250){
react("breastpoke2");
say("Look, they're growing! They feel soft, right?", -1, false);
} else {
if (size < MAX_SIZE){
react("breastpoke3");
say("Oh, look at what you've done to me!", -1, false);
} else {
react("breastpoke4", 60);
say("You really want some of this? Maybe I can arrange some time with you later.", -1, false);
blush(20);
};
};
};
};
} else {
if (_local2 == scratazon.tail){
if (!reacting){
scratazon.tail.gotoAndPlay(2);
if (tailSpeech == 0){
react("comment", 80);
say("My tail's so big and fluffy.");
} else {
if (tailSpeech == 1){
say("It's hard to put my suit on over it.");
react("tailpoke", 100);
} else {
if (tailSpeech == 2){
react("comment", 100);
say("I get my guards to dress me every day.");
} else {
if (tailSpeech == 3){
react("tailpoke2", 100);
say("You wanna help undress me today?");
};
};
};
};
tailSpeech = ((tailSpeech + 1) % 4);
};
};
};
}
public function zoomOut(_arg1:Event){
zoom = -0.02;
}
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.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
BREAK_START = 85;
BREAK_END = 169;
MAX_SIZE = 500;
SCRATAZON_X = 335;
SCRATAZON_Y = 378;
scratazon = new Scratazon();
size = 1;
growth = 0;
setSize(1);
scratazon.x = SCRATAZON_X;
scratazon.y = SCRATAZON_Y;
stage.addChildAt(scratazon, 0);
stage.addEventListener(Event.ENTER_FRAME, eFrame);
state = "";
curState = {};
states = [];
reactTimer = 0;
reacting = false;
canBlink = false;
blinking = false;
frequency = 0.1;
offset = 1;
angle = 0;
head = scratazon.head;
mouth = head.mouth;
eye1 = head.eye1;
eye2 = head.eye2;
pupil1 = eye1.pupil;
pupil2 = eye2.pupil;
p1X = pupil1.x;
p1Y = pupil1.y;
p2X = pupil2.x;
p2Y = pupil2.y;
states["normal"] = {mouth:"smile", eye1:"medium", eye2:"medium", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, canBlink:true, offset:1, frequency:0.1};
states["notice"] = {mouth:"closed", eye1:"big2", eye2:"big2", head:5, p1X:-2, p1Y:5, p2X:2, p2Y:5, canBlink:true, offset:0.5, frequency:0.2};
states["breaking"] = {mouth:"closed", eye1:"open", eye2:"open", head:0, p1X:-2, p1Y:5, p2X:2, p2Y:5, canBlink:false, offset:1, frequency:0.25};
states["happy"] = {mouth:"happy", eye1:"medium", eye2:"medium", head:0, p1X:0, p1Y:2, p2X:0, p2Y:2, canBlink:false, offset:1, frequency:0.25};
states["big"] = {mouth:"smile", eye1:"open", eye2:"open", head:0, p1X:2, p1Y:3, p2X:3, p2Y:3, canBlink:true, offset:1, frequency:0.25};
states["enjoy"] = {mouth:"happy2", eye1:"small", eye2:"small", head:0, p1X:0, p1Y:2, p2X:0, p2Y:2, canBlink:true, offset:1, frequency:0.25};
states["smile"] = {mouth:"smile", eye1:"small", eye2:"small", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, canBlink:true, offset:1, frequency:0.15};
states["breathe"] = {mouth:"breathe", eye1:"closed", eye2:"closed", head:-3, p1X:0, p1Y:0, p2X:0, p2Y:0, canBlink:false, offset:1, frequency:0.184};
states["bigger"] = {mouth:"teeth", eye1:"medium", eye2:"medium", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, canBlink:true, offset:1, frequency:0.2};
states["over"] = {mouth:"smile", eye1:"big2", eye2:"big2", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, canBlink:true, offset:1, frequency:0.2};
states["revert"] = {mouth:"open", eye1:"big2", eye2:"big2", head:0, p1X:2, p1Y:6, p2X:1, p2Y:6, canBlink:true, offset:0.5, frequency:0.2};
states["accept"] = {mouth:"accept", eye1:"accept", eye2:"accept", head:0, p1X:0, p1Y:2, p2X:0, p2Y:2, canBlink:false, offset:1, frequency:0.2};
states["rip"] = {mouth:"rip", eye1:"rip", eye2:"rip", head:0, p1X:-2, p1Y:5, p2X:2, p2Y:5, canBlink:false, offset:1, frequency:0.15};
states["comment"] = {mouth:"happy2", eye1:"big", eye2:"shut", head:0, p1X:-6, p1Y:-2, p2X:-2, p2Y:-2, canBlink:false, offset:1, frequency:0.2};
states["breastpoke1"] = {mouth:"open", eye1:"big", eye2:"big", head:0, p1X:-6, p1Y:-2, p2X:-2, p2Y:-2, canBlink:false, offset:1, frequency:0.2};
states["breastpoke2"] = {mouth:"smile", eye1:"shut", eye2:"shut", head:0, p1X:-6, p1Y:-2, p2X:-2, p2Y:-2, canBlink:false, offset:1, frequency:0.2};
states["breastpoke3"] = {mouth:"teeth", eye1:"small", eye2:"shut", head:0, p1X:-6, p1Y:0, p2X:-2, p2Y:0, canBlink:false, offset:1, frequency:0.2};
states["breastpoke4"] = {mouth:"happy", eye1:"small", eye2:"small", head:0, p1X:-6, p1Y:0, p2X:-2, p2Y:0, canBlink:false, offset:1, frequency:0.2};
states["tailpoke"] = {mouth:"open", eye1:"small", eye2:"small", head:0, p1X:-6, p1Y:0, p2X:-2, p2Y:0, canBlink:false, offset:1, frequency:0.2};
states["tailpoke2"] = {mouth:"teeth", eye1:"small", eye2:"small", head:0, p1X:-6, p1Y:0, p2X:-2, p2Y:0, canBlink:false, offset:1, frequency:0.2};
setState("normal");
BLUSH_END_TIME = 0;
BLUSH_END_INV = 0;
blushReduceTime = 0;
blushTimer = 0;
blushActive = false;
blush1 = scratazon.head.blush1;
blush2 = scratazon.head.blush2;
scratazon.head.blush1.alpha = 0;
scratazon.head.blush2.alpha = 0;
scratazon.addEventListener(MouseEvent.MOUSE_DOWN, characterPoke);
speech = scratazon.speech;
speechStack = [];
speechBits = 0;
tailSpeech = 0;
speech.visible = false;
zoom = 0;
sFilters = null;
_panel._expand._txt.text = "Expand";
_panel._revert._txt.text = "Revert";
_panel._cont_txt.text = "Autoplay";
_panel._nonstop_txt.text = "Don't stop";
_panel._info.text = "Scratazon leader´s interactive breast expansion\nDrawn, animated and programmed by Doom the wolf\nhttp://doom-the-wolf.deviantart.com";
_panel._cont.gotoAndStop(2);
_panel._nonstop.gotoAndStop(1);
_panel._plus._txt.text = "+";
_panel._minus._txt.text = "-";
_panel._expand.gotoAndStop(1);
_panel._revert.gotoAndStop(1);
_panel._expand.mouseChildren = (_panel._plus.mouseChildren = (_panel._minus.mouseChildren = (_panel._revert.mouseChildren = false)));
_panel.addEventListener(Event.ENTER_FRAME, panelFrame);
_panel.addEventListener(MouseEvent.MOUSE_DOWN, panelDown);
stage.addEventListener(MouseEvent.MOUSE_UP, panelUp);
stage.addEventListener(MouseEvent.MOUSE_DOWN, pickScreen);
}
public function panelDown(_arg1:Event){
var _local2:InteractiveObject;
var _local3:MovieClip;
_local2 = (_arg1.target as InteractiveObject);
if (_local2 == _panel._expand){
if (size >= MAX_SIZE){
reset();
} else {
if (growth < 1){
growth = 1;
_panel._revert.gotoAndStop(1);
_panel._expand.gotoAndStop(2);
} else {
growth = 0;
_panel._expand.gotoAndStop(1);
};
};
} else {
if (_local2 == _panel._revert){
if (growth > -1){
growth = -1;
_panel._revert.gotoAndStop(2);
_panel._expand.gotoAndStop(1);
} else {
growth = 0;
_panel._revert.gotoAndStop(1);
};
} else {
if ((((_local2 == _panel._cont)) || ((_local2 == _panel._nonstop)))){
if (_local2 == _panel._cont){
growth = 0;
_panel._revert.gotoAndStop(1);
_panel._expand.gotoAndStop(1);
};
_local3 = (_local2 as MovieClip);
_local3.gotoAndStop((3 - _local3.currentFrame));
} else {
if (_local2 == _panel._plus){
zoom = 0.02;
sFilters = scratazon.room.stars.filters;
scratazon.room.stars.filters = [];
} else {
if (_local2 == _panel._minus){
zoom = -0.02;
sFilters = scratazon.room.stars.filters;
scratazon.room.stars.filters = [];
};
};
};
};
};
}
public function dragScreen(_arg1:Event){
scratazon.x = ((oldX + stage.mouseX) - oldMX);
scratazon.y = ((oldY + stage.mouseY) - oldMY);
Algorithms.adjustScreen(scratazon, scratazon.bg);
}
public function blush(_arg1:int){
if (_arg1 <= BLUSH_START_TIME){
_arg1 = (BLUSH_START_TIME + 1);
};
if (blushTimer > 0){
} else {
if (blushReduceTime > 0){
blushTimer = Math.ceil((BLUSH_START_TIME * (1 - (blushReduceTime / BLUSH_END_TIME))));
} else {
blushTimer = BLUSH_START_TIME;
};
};
blushReduceTime = (BLUSH_END_TIME = (_arg1 - BLUSH_START_TIME));
BLUSH_END_INV = (1 / BLUSH_END_TIME);
}
public function updateSpeech(){
if (speech.visible){
if (speech.letter < speech.phraseLength){
speech._txt.appendText(speech.phrase.charAt(speech.letter++));
speech._txt.scrollV = speech._txt.maxScrollV;
} else {
if (speech.time > 0){
speech.time--;
if (speechStack.length){
say(speechStack.pop());
};
if (speech.time <= 0){
speech._txt.text = "";
speech.phrase = "";
speech.letter = 0;
speech.phraseLength = 0;
speech.visible = false;
};
};
};
};
}
public function setState(_arg1:String){
var _local2:Object;
var _local3:String;
if ((((state == _arg1)) || (reacting))){
return;
};
_local2 = states[_arg1];
if (!_local2){
return;
};
for (_local3 in _local2) {
curState[_local3] = _local2[_local3];
};
curState.state = (state = _arg1);
mouth.gotoAndPlay(curState.mouth);
eye1.gotoAndPlay(curState.eye1);
eye2.gotoAndPlay(curState.eye2);
pupil1.x = (p1X + curState.p1X);
pupil1.y = (p1Y + curState.p1Y);
pupil2.x = (p2X + curState.p2X);
pupil2.y = (p2Y + curState.p2Y);
canBlink = curState.canBlink;
frequency = curState.frequency;
offset = curState.offset;
}
public function reset(){
size = 1;
scratazon.breasts.gotoAndStop(size);
scratazon.clothes.gotoAndStop(size);
setState("normal");
speechBits = 0;
}
public function endReact(){
if (reacting){
reacting = false;
reactTimer = 0;
setState(curState.state);
};
}
public function react(_arg1:String, _arg2:int=30){
var _local3:String;
_local3 = curState.state;
reacting = false;
state = "";
setState(_arg1);
curState.state = _local3;
reactTimer = _arg2;
reacting = true;
}
public function setSize(_arg1:int){
var _local2:int;
_local2 = scratazon.breasts.currentFrame;
if ((((_local2 >= BREAK_START)) && ((_local2 <= BREAK_END)))){
return;
};
if (_arg1 < 1){
_arg1 = 1;
} else {
if (_arg1 > MAX_SIZE){
_arg1 = MAX_SIZE;
};
};
size = _arg1;
if (_local2 >= BREAK_END){
scratazon.breasts.gotoAndStop((size + MAX_SIZE));
scratazon.clothes.gotoAndStop((size + MAX_SIZE));
} else {
scratazon.breasts.gotoAndStop(size);
scratazon.clothes.gotoAndStop(size);
};
if (size >= MAX_SIZE){
_panel._expand._txt.text = "Reset";
} else {
if (size >= 250){
_panel._expand._txt.text = "Bigger!";
} else {
_panel._expand._txt.text = "Expand";
};
};
}
public function isDraggable(_arg1:Object):Boolean{
var _local2:Object;
_local2 = scratazon.head;
return (!((((((((((((((((((((((((((((((((((((((((((((((((_arg1 == scratazon.head)) || ((_arg1 == scratazon.breasts)))) || ((_arg1 == scratazon.breasts.ellipse1)))) || ((_arg1 == scratazon.breasts.ellipse2)))) || ((_arg1 == _local2)))) || ((_arg1 == _local2.eye1)))) || ((_arg1 == _local2.eye2)))) || ((_arg1 == _local2.eye1.pupil)))) || ((_arg1 == _local2.eye2.pupil)))) || ((_arg1 == _local2.antenna1)))) || ((_arg1 == _local2.antenna2)))) || ((_arg1 == _local2.ear1)))) || ((_arg1 == _local2.ear2)))) || ((_arg1 == _local2.mouth)))) || ((_arg1 == _local2.blush1)))) || ((_arg1 == _local2.blush2)))) || ((_arg1 == scratazon.body)))) || ((_arg1 == scratazon.leg1)))) || ((_arg1 == scratazon.leg2)))) || ((_arg1 == scratazon.arm1)))) || ((_arg1 == scratazon.arm2)))) || ((_arg1 == scratazon.tail)))) || ((_arg1 == scratazon.clothes)))) || ((_panel.y < (stage.stageHeight - 50))))));
}
public function updateBlush(){
if (blushActive){
if (blush1.alpha < 1){
blush1.alpha = (blush1.alpha + 0.2);
if (blush1.alpha > 1){
blush1.alpha = 1;
};
blush2.alpha = blush1.alpha;
blushReduceTime = int((blush1.alpha * 15));
};
} else {
if (blushTimer > 0){
blushTimer--;
blush2.alpha = (blush1.alpha = (1 - (blushTimer * BLUSH_START_INV)));
} else {
if (blushReduceTime > 0){
blushReduceTime--;
blush2.alpha = (blush1.alpha = (blushReduceTime * BLUSH_END_INV));
} else {
blush2.alpha = (blush1.alpha = 0);
};
};
};
}
public function panelFrame(_arg1:Event){
var _local2:Number;
if (_panel.hitTestPoint(stage.mouseX, stage.mouseY, false)){
_local2 = (stage.stageHeight - 100);
} else {
_local2 = stage.stageHeight;
};
_panel.y = (_panel.y + ((_local2 - _panel.y) * 0.5));
if (zoom){
scratazon.scaleX = (scratazon.scaleX + zoom);
if (scratazon.scaleX < 0.5){
scratazon.scaleX = 0.5;
} else {
if (scratazon.scaleX > 3){
scratazon.scaleX = 3;
};
};
scratazon.scaleY = scratazon.scaleX;
Algorithms.adjustScreen(scratazon, scratazon.bg);
};
}
public function panelUp(_arg1:Event){
if (_panel._cont.currentFrame == 1){
growth = 0;
_panel._expand.gotoAndStop(1);
_panel._revert.gotoAndStop(1);
};
if (zoom){
scratazon.room.stars.filters = sFilters;
};
zoom = 0;
}
public function say(_arg1:String, _arg2:int=-1, _arg3:Boolean=true){
if (_arg2 > 0){
if ((speechBits & (1 << _arg2))){
return;
};
speechBits = (speechBits | (1 << _arg2));
};
if (((speech.visible) && ((speech.letter < speech.phraseLength)))){
if (_arg3){
speechStack[speechStack.length] = _arg1;
};
return;
};
if (!speech.visible){
speech._txt.text = "";
} else {
speech._txt.appendText("\n\n");
};
speech.phrase = _arg1;
speech.letter = 0;
speech.phraseLength = _arg1.length;
speech.visible = true;
speech.time = (_arg1.length + 20);
}
public function pickScreen(_arg1:Event){
var _local2:Object;
_local2 = _arg1.target;
if (isDraggable(_local2)){
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragScreen);
stage.addEventListener(MouseEvent.MOUSE_UP, dropScreen);
oldMX = stage.mouseX;
oldMY = stage.mouseY;
oldX = scratazon.x;
oldY = scratazon.y;
};
}
}
}//package scratazon_fla
Section 13
//mouth_31 (scratazon_fla.mouth_31)
package scratazon_fla {
import flash.display.*;
public dynamic class mouth_31 extends MovieClip {
public function mouth_31(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 14, frame15, 24, frame25, 26, frame27, 28, frame29, 30, frame31, 69, frame70);
}
function frame70(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndStop(this.currentLabel);
}
function frame25(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndStop(this.currentLabel);
}
function frame29(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndStop(this.currentLabel);
}
function frame15(){
this.stop();
}
function frame31(){
this.gotoAndPlay(this.currentLabel);
}
function frame27(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package scratazon_fla
Section 14
//panel_1 (scratazon_fla.panel_1)
package scratazon_fla {
import flash.display.*;
import flash.text.*;
public dynamic class panel_1 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 _plus:MovieClip;
public var _info:TextField;
public var _expand:MovieClip;
public var _nonstop_txt:TextField;
}
}//package scratazon_fla
Section 15
//room_7 (scratazon_fla.room_7)
package scratazon_fla {
import flash.display.*;
public dynamic class room_7 extends MovieClip {
public var stars:MovieClip;
public var glow:MovieClip;
}
}//package scratazon_fla
Section 16
//shirt_break_20 (scratazon_fla.shirt_break_20)
package scratazon_fla {
import flash.display.*;
public dynamic class shirt_break_20 extends MovieClip {
public function shirt_break_20(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package scratazon_fla
Section 17
//speech_33 (scratazon_fla.speech_33)
package scratazon_fla {
import flash.display.*;
import flash.text.*;
public dynamic class speech_33 extends MovieClip {
public var _txt:TextField;
}
}//package scratazon_fla
Section 18
//tail_11 (scratazon_fla.tail_11)
package scratazon_fla {
import flash.display.*;
public dynamic class tail_11 extends MovieClip {
public function tail_11(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package scratazon_fla
Section 19
//Scratazon (Scratazon)
package {
import flash.display.*;
public dynamic class Scratazon extends MovieClip {
public var leg1:MovieClip;
public var leg2:MovieClip;
public var bg:MovieClip;
public var clothes:MovieClip;
public var tail:MovieClip;
public var arm2:MovieClip;
public var arm1:MovieClip;
public var shirt_break:MovieClip;
public var bed:MovieClip;
public var body:MovieClip;
public var breasts:MovieClip;
public var room:MovieClip;
public var head:MovieClip;
public var speech:MovieClip;
}
}//package