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:MovieClip, _arg2:MovieClip){
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
//Drawing (as3.Drawing)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Drawing {
public static function drawHeart(_arg1:Graphics, _arg2:Number, _arg3:Number){
var _local4:Number;
var _local5:Number;
var _local6:Object;
var _local7:Object;
var _local8:Object;
var _local9:Object;
var _local10:Object;
var _local11:Object;
var _local12:Object;
var _local13:Object;
var _local14:Object;
var _local15:Object;
_local4 = (_arg3 / 1.5);
_local5 = (_arg2 / 1.5);
_local6 = {x:0, y:1};
_local7 = {x:1, y:0};
_local8 = {x:0, y:-1};
_local9 = {x:1.2, y:-0.5};
_local10 = {x:1, y:-1};
_local11 = {x:0.5, y:-1.2};
_local12 = Geometry.intersectLines(_local7.x, _local7.y, (_local7.x + 1), (_local7.y - 1), _local9.x, _local9.y, _local9.x, (_local9.y + 1));
_local13 = Geometry.intersectLines(_local10.x, _local10.y, (_local10.x + 1), (_local10.y + 1), _local9.x, _local9.y, _local9.x, (_local9.y + 1));
_local14 = Geometry.intersectLines(_local10.x, _local10.y, (_local10.x + 1), (_local10.y + 1), _local11.x, _local11.y, (_local11.x + 1), _local11.y);
_local15 = Geometry.intersectLines(_local8.x, _local8.y, (_local8.x + 1), (_local8.y - 1), _local11.x, _local11.y, (_local11.x + 1), _local11.y);
_arg1.moveTo((_local5 * _local6.x), (_local4 * _local6.y));
_arg1.lineTo((_local5 * _local7.x), (_local4 * _local7.y));
_arg1.curveTo((_local5 * _local12.x), (_local4 * _local12.y), (_local5 * _local9.x), (_local4 * _local9.y));
_arg1.curveTo((_local5 * _local13.x), (_local4 * _local13.y), (_local5 * _local10.x), (_local4 * _local10.y));
_arg1.curveTo((_local5 * _local14.x), (_local4 * _local14.y), (_local5 * _local11.x), (_local4 * _local11.y));
_arg1.curveTo((_local5 * _local15.x), (_local4 * _local15.y), (_local5 * _local8.x), (_local4 * _local8.y));
_arg1.curveTo((-(_local5) * _local15.x), (_local4 * _local15.y), (-(_local5) * _local11.x), (_local4 * _local11.y));
_arg1.curveTo((-(_local5) * _local14.x), (_local4 * _local14.y), (-(_local5) * _local10.x), (_local4 * _local10.y));
_arg1.curveTo((-(_local5) * _local13.x), (_local4 * _local13.y), (-(_local5) * _local9.x), (_local4 * _local9.y));
_arg1.curveTo((-(_local5) * _local12.x), (_local4 * _local12.y), (-(_local5) * _local7.x), (_local4 * _local7.y));
_arg1.lineTo((-(_local5) * _local6.x), (_local4 * _local6.y));
}
public static function drawSparkle(_arg1:Graphics, _arg2:Number, _arg3:int, _arg4:Number, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0){
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
if (_arg3 < 1){
return;
};
_local14 = ((Math.PI * 2) / _arg3);
_arg1.moveTo(((Math.cos(_arg5) * _arg2) + _arg6), (_arg7 + (Math.sin(_arg5) * _arg2)));
_local15 = 0;
while (_local15 < _arg3) {
_local8 = (Math.cos(((Number((_local15 + 1)) * _local14) + _arg5)) * _arg2);
_local9 = (Math.sin(((Number((_local15 + 1)) * _local14) + _arg5)) * _arg2);
_local10 = ((Math.cos(((Number((_local15 + 0.5)) * _local14) + _arg5)) * _arg2) * _arg4);
_local11 = ((Math.sin(((Number((_local15 + 0.5)) * _local14) + _arg5)) * _arg2) * _arg4);
_local12 = ((Math.cos(((Number((_local15 + 0.25)) * _local14) + _arg5)) * _arg2) * _arg4);
_local13 = ((Math.sin(((Number((_local15 + 0.25)) * _local14) + _arg5)) * _arg2) * _arg4);
_arg1.curveTo((_arg6 + _local12), (_arg7 + _local13), (_arg6 + _local10), (_arg7 + _local11));
_local12 = ((Math.cos(((Number((_local15 + 0.75)) * _local14) + _arg5)) * _arg2) * _arg4);
_local13 = ((Math.sin(((Number((_local15 + 0.75)) * _local14) + _arg5)) * _arg2) * _arg4);
_arg1.curveTo((_arg6 + _local12), (_arg7 + _local13), (_arg6 + _local8), (_arg7 + _local9));
_local15++;
};
}
public static function drawCurvyLine(_arg1:Graphics, _arg2:Object, _arg3:Array, _arg4:Object, _arg5:Number=0.25){
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:Object;
var _local10:Object;
_local7 = _arg3.length;
_local8 = (_local7 - 1);
if (_arg2 == null){
_arg2 = _arg3[0];
};
if (_arg4 == null){
_arg4 = _arg3[_local8];
};
_local6 = 1;
while (_local6 < _local7) {
if (_local6 < _local8){
_local9 = getLinePoint(_arg3[(_local6 - 1)], _arg3[_local6], _arg3[(_local6 + 1)]);
} else {
_local9 = _arg4;
};
if (_local6 > 1){
_local10 = getLinePoint(_arg3[(_local6 - 2)], _arg3[(_local6 - 1)], _arg3[_local6]);
} else {
_local10 = _arg2;
};
drawConnection(_arg1, _arg3[(_local6 - 1)], _arg3[_local6], _local10, _local9, _arg5);
_local6++;
};
}
public static function drawPolygon(_arg1:Array, _arg2:Graphics){
var _local3:int;
_arg2.moveTo(_arg1[0].x, _arg1[0].y);
_local3 = 1;
while (_local3 < _arg1.length) {
_arg2.lineTo(_arg1[_local3].x, _arg1[_local3].y);
_local3++;
};
}
public static function drawPoints(_arg1:Array, _arg2:Graphics){
var _local3:int;
_local3 = 0;
while (_local3 < _arg1.length) {
_arg2.moveTo(_arg1[_local3].x, (_arg1[_local3].y - 0.5));
_arg2.lineTo(_arg1[_local3].x, (_arg1[_local3].y + 0.5));
_local3++;
};
}
public static function drawConnection(_arg1:Graphics, _arg2:Object, _arg3:Object, _arg4:Object, _arg5:Object, _arg6:Number){
var _local7:Number;
var _local8:Number;
var _local9:Number;
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:Number;
var _local19:Number;
var _local20:Number;
var _local21:Object;
var _local22:Object;
var _local23:Object;
var _local24:Object;
var _local25:Object;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Object;
var _local31:Object;
_local10 = (_arg4.x - _arg2.x);
_local11 = (_arg4.y - _arg2.y);
_local12 = (_arg5.x - _arg3.x);
_local13 = (_arg5.y - _arg3.y);
_local14 = Math.atan2(_local11, _local10);
_local15 = Math.atan2(_local13, _local12);
_local16 = Math.cos(_local14);
_local17 = Math.sin(_local14);
_local18 = Math.cos(_local15);
_local19 = Math.sin(_local15);
_local7 = (_arg3.x - _arg2.x);
_local8 = (_arg3.y - _arg2.y);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local20 = (_arg6 * _local9);
_local21 = {x:(_arg2.x + (_local16 * _local20)), y:(_arg2.y + (_local17 * _local20))};
_local22 = {x:(_arg2.x - (_local16 * _local20)), y:(_arg2.y - (_local17 * _local20))};
_local23 = {x:(_arg3.x + (_local18 * _local20)), y:(_arg3.y + (_local19 * _local20))};
_local24 = {x:(_arg3.x - (_local18 * _local20)), y:(_arg3.y - (_local19 * _local20))};
_local25 = {x:(0.5 * (_arg2.x + _arg3.x)), y:(0.5 * (_arg2.y + _arg3.y))};
_local7 = (_local21.x - _local25.x);
_local8 = (_local21.y - _local25.y);
_local26 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local7 = (_local22.x - _local25.x);
_local8 = (_local22.y - _local25.y);
_local27 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local7 = (_local23.x - _local25.x);
_local8 = (_local23.y - _local25.y);
_local28 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local7 = (_local24.x - _local25.x);
_local8 = (_local24.y - _local25.y);
_local29 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local30 = ((_local26)<_local27) ? _local21 : _local22;
_local31 = ((_local28)<_local29) ? _local23 : _local24;
_local25.x = ((_local30.x + _local31.x) * 0.5);
_local25.y = ((_local30.y + _local31.y) * 0.5);
_arg1.curveTo(_local30.x, _local30.y, _local25.x, _local25.y);
_arg1.curveTo(_local31.x, _local31.y, _arg3.x, _arg3.y);
}
public static function controlPointIntersect(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Object):Object{
var _local5:Object;
var _local6:Object;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local5 = Geometry.intersectLines(_arg1.x, _arg1.y, _arg2.x, _arg2.y, _arg3.x, _arg3.y, _arg4.x, _arg4.y);
if (!_local5){
return (null);
};
_local6 = {x:((_arg2.x + _arg3.x) * 0.5), y:((_arg2.y + _arg3.y) * 0.5)};
_local7 = (_arg3.x - _arg2.x);
_local8 = (_arg3.y - _arg2.y);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local10 = (_local5.x - _local6.x);
_local11 = (_local5.y - _local6.y);
_local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
if (_local12 > _local9){
return (null);
};
return ({x:(_local6.x + ((_local5.x - _local6.x) * 0.5)), y:(_local6.y + ((_local5.y - _local6.y) * 0.5))});
}
public static function getLinePoint(_arg1:Object, _arg2:Object, _arg3:Object):Object{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
_local4 = (_arg2.x - _arg1.x);
_local5 = (_arg2.y - _arg1.y);
_local6 = Math.atan2(_local5, _local4);
_local7 = (_arg3.x - _arg2.x);
_local8 = (_arg3.y - _arg2.y);
_local9 = Math.atan2(_local8, _local7);
_local10 = Geometry.interpolateAngle(_local6, _local9, 0.5);
return ({x:(_arg2.x + (Math.cos(_local10) * 2)), y:(_arg2.y + (Math.sin(_local10) * 2))});
}
public static function drawClosedCurve(_arg1:Array, _arg2:Graphics):Array{
var _local3:Point;
var _local4:Point;
var _local5:Point;
var _local6:Point;
var _local7:Array;
var _local8:int;
var _local9:Object;
if (_arg1.length < 3){
return ([]);
};
_local7 = new Array();
_arg2.moveTo(_arg1[0].x, _arg1[0].y);
_local8 = 0;
while (_local8 < _arg1.length) {
_local3 = _arg1[_local8];
_local4 = _arg1[(int(((_arg1.length + _local8) - 1)) % _arg1.length)];
_local5 = _arg1[(int((_local8 + 1)) % _arg1.length)];
_local6 = _arg1[(int((_local8 + 2)) % _arg1.length)];
_local9 = controlPointIntersect(_local4, _local3, _local5, _local6);
if (_local9 == null){
_arg2.lineTo(_local5.x, _local5.y);
} else {
_local7.push(_local9);
_arg2.curveTo(_local9.x, _local9.y, _local5.x, _local5.y);
};
_local8++;
};
return (_local7);
}
}
}//package as3
Section 3
//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 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, _arg5, _arg4, _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);
}
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 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 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 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);
}
}
}//package as3
Section 4
//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 5
//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 6
//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;
_arg1[_arg2][ROTATION] = _arg4;
_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]))){
_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 7
//Speech (expansion.Speech)
package expansion {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class Speech extends EventDispatcher {
private var _contained:Boolean;
private var _textSpeed:int;
private var _checkpoints:Array;
private var _txt:TextField;
private var _events:Array;
private var _interruptible:Boolean;
private var _letter:int;
private var _timer:int;
private var _mouth:MovieClip;
private var _phrase:String;
private var _paused:int;
private var _pauseTime:int;
private var _expansion:Expansion;
private var _interruptionText:String;
private var _pauseCharacter:String;
public function Speech(_arg1:TextField, _arg2:Boolean=true){
_txt = _arg1;
_mouth = null;
_contained = _arg2;
_textSpeed = 1;
_timer = 0;
_letter = 0;
_phrase = "";
_expansion = null;
_events = [];
_checkpoints = [];
if (!_txt){
throw ("ERROR: No TextField object found!");
};
_interruptionText = "--";
_interruptible = false;
_pauseCharacter = "";
_paused = -1;
_pauseTime = 10;
_txt.visible = false;
_txt.text = "";
if (((_contained) && (_txt.parent))){
_txt.parent.visible = _txt.visible;
};
}
public function destroy(){
var _local1:int;
_local1 = 0;
while (_local1 < _events.length) {
_events[_local1].object.removeEventListener(_events[_local1].type, _event);
_local1++;
};
_events = [];
_local1 = 0;
while (_local1 < _checkpoints.length) {
delete _checkpoints[_local1];
_local1++;
};
_checkpoints = [];
listenTo(null);
clearSpeech();
if (((_contained) && (_txt.parent))){
_txt.parent.visible = true;
};
_txt.visible = true;
_txt = null;
}
public function set mouth(_arg1:MovieClip){
_mouth = _arg1;
}
public function get interruptionText():String{
return (_interruptionText);
}
public function clearCheckPoint(_arg1:MovieClip, _arg2:int, _arg3:int=1){
var _local4:int;
_local4 = 0;
while (_local4 < _checkpoints.length) {
if ((((((_checkpoints[_local4].part == _arg1)) && ((_checkpoints[_local4].size == _arg2)))) && ((_checkpoints[_local4].direction == _arg3)))){
_checkpoints.splice(_local4, 1);
return;
};
_local4++;
};
}
public function clearSpeech(){
_letter = 0;
_phrase = "";
_txt.removeEventListener("enterFrame", _speaking);
_txt.text = "";
if (((_contained) && (_txt.parent))){
_txt.parent.visible = false;
};
_txt.visible = false;
}
public function get textSpeed():int{
return (_textSpeed);
}
private function _event(_arg1:Event){
var _local2:Object;
_local2 = getEvent((_arg1.target as EventDispatcher), _arg1.type);
if (!_local2){
return;
};
say(_local2.phrase, _local2.time);
}
public function set interruptionText(_arg1:String){
_interruptionText = _arg1;
}
public function set pauseCharacter(_arg1:String){
_pauseCharacter = _arg1;
}
private function _checkpoint(_arg1:ExpansionEvent){
var _local2:Object;
_local2 = getCheckPoint(_arg1.expandable, _arg1.size, _arg1.direction);
if (!_local2){
return;
};
say(_local2.phrase, _local2.time);
}
public function get position():int{
return (_letter);
}
private function _speaking(_arg1:Event){
var _local2:String;
var _local3:int;
if (_paused > 0){
_paused--;
} else {
if (_letter < _phrase.length){
_local3 = 0;
while ((((_local3 < _textSpeed)) && ((_letter < _phrase.length)))) {
_local2 = _phrase.charAt(_letter++);
if (_local2 == _pauseCharacter){
_paused = _pauseTime;
if (_mouth != null){
_mouth.gotoAndStop("_m");
};
return;
};
_txt.appendText(_local2);
_txt.scrollV = _txt.maxScrollV;
_local3++;
};
if (_mouth != null){
_local2 = _local2.toLowerCase();
if ((((((((((((((((((_local2 == "k")) || ((_local2 == "t")))) || ((_local2 == "y")))) || ((_local2 == "s")))) || ((_local2 == "q")))) || ((_local2 == "d")))) || ((_local2 == "g")))) || ((_local2 == "j")))) || ((_local2 == "z")))){
_local2 = "i";
};
if ((((_local2 == "w")) || ((_local2 == "r")))){
_local2 = "u";
};
if (_local2 == "h"){
_local2 = "a";
};
if ((((_local2 == "l")) || ((_local2 == "d")))){
_local2 = "o";
};
switch (_local2){
case "a":
case "e":
case "i":
case "o":
case "u":
_mouth.gotoAndStop(("_" + _local2));
break;
default:
_mouth.gotoAndStop("_m");
};
};
if (_letter >= _phrase.length){
if (_mouth != null){
_mouth.gotoAndStop("_m");
};
dispatchEvent(new Event("speechFinished"));
};
} else {
if (_timer > 0){
_timer--;
} else {
clearSpeech();
dispatchEvent(new Event("speechCleared"));
};
};
};
}
public function set textSpeed(_arg1:int){
if (_arg1 < 1){
_arg1 = 1;
};
_textSpeed = _arg1;
}
public function get interruptible():Boolean{
return (_interruptible);
}
public function get phrase():String{
return (_phrase);
}
public function listenTo(_arg1:Expansion){
if (_expansion){
_expansion.removeEventListener("checkpoint", _checkpoint);
_expansion = null;
};
if (!_arg1){
return;
};
_expansion = _arg1;
_expansion.addEventListener("checkpoint", _checkpoint, false, 0, true);
}
public function get timer():int{
return (_timer);
}
public function get mouth():MovieClip{
return (_mouth);
}
public function get speaking():Boolean{
return (((_txt.visible) && ((_letter < _phrase.length))));
}
public function get pauseCharacter():String{
return (_pauseCharacter);
}
public function set pauseTime(_arg1:int){
_pauseTime = _arg1;
}
public function getCheckPoint(_arg1:MovieClip, _arg2:int, _arg3:int=1):Object{
var _local4:int;
_local4 = 0;
while (_local4 < _checkpoints.length) {
if ((((((_checkpoints[_local4].part == _arg1)) && ((_checkpoints[_local4].size == _arg2)))) && ((_checkpoints[_local4].direction == _arg3)))){
return (_checkpoints[_local4]);
};
_local4++;
};
return (null);
}
public function get pauseTime():int{
return (_pauseTime);
}
public function get textField():TextField{
return (_txt);
}
public function set contained(_arg1:Boolean){
if (((_contained) && (_txt.parent))){
if (!_arg1){
_txt.parent.visible = true;
} else {
_txt.parent.visible = _txt.visible;
};
};
_contained = _arg1;
}
public function setEvent(_arg1:EventDispatcher, _arg2:String, _arg3:String, _arg4:int=-1){
var _local5:Object;
if (((((!(_arg1)) || (!(_arg2)))) || (!(_arg2.length)))){
return;
};
_local5 = getEvent(_arg1, _arg2);
if (_local5 != null){
_local5.phrase = phrase;
_local5.time = _arg4;
return;
};
_events.push({object:_arg1, type:_arg2, phrase:_arg3, time:_arg4});
_arg1.addEventListener(_arg2, _event, false, 5, true);
}
public function set interruptible(_arg1:Boolean){
_interruptible = _arg1;
}
public function clearEvent(_arg1:EventDispatcher, _arg2:String){
var _local3:int;
_local3 = 0;
while (_local3 < _events.length) {
if ((((_events[_local3].object == _arg1)) && ((_events[_local3].type == _arg2)))){
_arg1.removeEventListener(_arg2, _event);
_events.splice(_local3, 1);
return;
};
_local3++;
};
}
public function get contained():Boolean{
return (_contained);
}
public function setCheckPoint(_arg1:MovieClip, _arg2:int, _arg3:int=1, _arg4:String="", _arg5:int=-1){
var _local6:Object;
if (!_arg1){
return;
};
_local6 = getCheckPoint(_arg1, _arg2, _arg3);
if (_local6 != null){
_local6.phrase = _arg4;
_local6.time = _arg5;
return;
};
_checkpoints.push({part:_arg1, size:_arg2, direction:_arg3, phrase:_arg4, time:_arg5});
}
public function say(_arg1:String, _arg2:int=-1){
var _local3:String;
var _local4:String;
if (((speaking) && (!(_interruptible)))){
return;
};
_paused = -1;
if (!_txt){
throw ("ERROR: No TextField object found!");
};
if (_txt.length > 0){
_local3 = _phrase.charAt((_letter - 1));
_local4 = _phrase.charAt(_letter);
if ((((((((_letter > 0)) && ((_letter < _phrase.length)))) && (isLetter(_local3)))) && (isLetter(_local4)))){
_txt.appendText(_interruptionText);
};
_txt.appendText("\n\n");
_txt.scrollV = _txt.maxScrollV;
};
if (((_contained) && (_txt.parent))){
_txt.parent.visible = true;
};
if (_arg2 < 0){
_arg2 = (_arg1.length + 20);
};
_phrase = _arg1;
_letter = 0;
_timer = _arg2;
_txt.visible = true;
_txt.addEventListener("enterFrame", _speaking);
}
public function getEvent(_arg1:EventDispatcher, _arg2:String):Object{
var _local3:int;
_local3 = 0;
while (_local3 < _events.length) {
if ((((_events[_local3].object == _arg1)) && ((_events[_local3].type == _arg2)))){
return (_events[_local3]);
};
_local3++;
};
return (null);
}
public static function isLetter(_arg1:String){
var _local2:int;
var _local3:Array;
var _local4:int;
_local2 = _arg1.charCodeAt(0);
if ((((_local2 >= "a".charCodeAt(0))) && ((_local2 <= "z".charCodeAt(0))))){
return (true);
};
if ((((_local2 >= "A".charCodeAt(0))) && ((_local2 <= "Z".charCodeAt(0))))){
return (true);
};
if ((((_local2 >= "0".charCodeAt(0))) && ((_local2 <= "9".charCodeAt(0))))){
return (true);
};
_local3 = ["á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "à", "è", "ì", "ò", "ù", "À", "È", "Ì", "Ò", "Ù", "ä", "ë", "ï", "ö", "ü", "Ä", "Ë", "Ï", "Ö", "Ü", "â", "ê", "î", "ô", "û", "Â", "Ê", "Î", "Ô", "Û", "ñ", "Ñ"];
_local4 = 0;
while (_local4 < _local3.length) {
if (_local3[_local4] == _arg1){
return (true);
};
_local4++;
};
return (false);
}
}
}//package expansion
Section 8
//_btn1_43 (sylvia_fla._btn1_43)
package sylvia_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn1_43 extends MovieClip {
public var _txt:TextField;
}
}//package sylvia_fla
Section 9
//arm1_34 (sylvia_fla.arm1_34)
package sylvia_fla {
import flash.display.*;
public dynamic class arm1_34 extends MovieClip {
public var m3:MovieClip;
public var m1:MovieClip;
public var m4:MovieClip;
public var m2:MovieClip;
public function arm1_34(){
addFrameScript(1, frame2, 35, frame36);
}
function frame36(){
this.gotoAndStop(this.currentLabel);
}
function frame2(){
this.gotoAndStop(this.currentLabel);
}
}
}//package sylvia_fla
Section 10
//arm2_12 (sylvia_fla.arm2_12)
package sylvia_fla {
import flash.display.*;
public dynamic class arm2_12 extends MovieClip {
public var m3:MovieClip;
public var m6:MovieClip;
public var m1:MovieClip;
public var m4:MovieClip;
public var m5:MovieClip;
public var m2:MovieClip;
}
}//package sylvia_fla
Section 11
//belly_31 (sylvia_fla.belly_31)
package sylvia_fla {
import flash.display.*;
public dynamic class belly_31 extends MovieClip {
public var kicks1:MovieClip;
public var m1:MovieClip;
public var m2:MovieClip;
public var ellipse:MovieClip;
public var kicks2:MovieClip;
}
}//package sylvia_fla
Section 12
//body_18 (sylvia_fla.body_18)
package sylvia_fla {
import flash.display.*;
public dynamic class body_18 extends MovieClip {
public var m3:MovieClip;
public var m6:MovieClip;
public var m7:MovieClip;
public var m8:MovieClip;
public var m4:MovieClip;
public var m5:MovieClip;
public var m9:MovieClip;
public var m1:MovieClip;
public var m2:MovieClip;
}
}//package sylvia_fla
Section 13
//breast1_32 (sylvia_fla.breast1_32)
package sylvia_fla {
import flash.display.*;
public dynamic class breast1_32 extends MovieClip {
public var m3:MovieClip;
public var m6:MovieClip;
public var m7:MovieClip;
public var m8:MovieClip;
public var center:MovieClip;
public var m4:MovieClip;
public var m5:MovieClip;
public var m9:MovieClip;
public var m1:MovieClip;
public var m2:MovieClip;
public var ellipse:MovieClip;
}
}//package sylvia_fla
Section 14
//breast2_19 (sylvia_fla.breast2_19)
package sylvia_fla {
import flash.display.*;
public dynamic class breast2_19 extends MovieClip {
public var m10:MovieClip;
public var m3:MovieClip;
public var m6:MovieClip;
public var m7:MovieClip;
public var m8:MovieClip;
public var center:MovieClip;
public var m4:MovieClip;
public var m5:MovieClip;
public var m9:MovieClip;
public var m1:MovieClip;
public var m2:MovieClip;
public var ellipse:MovieClip;
}
}//package sylvia_fla
Section 15
//eye_28 (sylvia_fla.eye_28)
package sylvia_fla {
import flash.display.*;
public dynamic class eye_28 extends MovieClip {
public var pupil:MovieClip;
public function eye_28(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 13, frame14, 15, frame16, 17, frame18, 19, frame20, 34, frame35);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
this.gotoAndPlay(this.currentLabel);
}
function frame18(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame16(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame20(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame35(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package sylvia_fla
Section 16
//hand_mc_35 (sylvia_fla.hand_mc_35)
package sylvia_fla {
import flash.display.*;
public dynamic class hand_mc_35 extends MovieClip {
public var wrist_mc:MovieClip;
public var glove_mc:MovieClip;
public var thumb_mc:MovieClip;
}
}//package sylvia_fla
Section 17
//head_22 (sylvia_fla.head_22)
package sylvia_fla {
import flash.display.*;
public dynamic class head_22 extends MovieClip {
public var blush:MovieClip;
public var eye:MovieClip;
public var ear1:MovieClip;
public var ear2:MovieClip;
public var mouth:MovieClip;
}
}//package sylvia_fla
Section 18
//leg1_21 (sylvia_fla.leg1_21)
package sylvia_fla {
import flash.display.*;
public dynamic class leg1_21 extends MovieClip {
public var m3:MovieClip;
public var m1:MovieClip;
public var m4:MovieClip;
public var m5:MovieClip;
public var m2:MovieClip;
}
}//package sylvia_fla
Section 19
//MainTimeline (sylvia_fla.MainTimeline)
package sylvia_fla {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import expansion.*;
import flash.text.*;
import as3.*;
import flash.filters.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
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 L_CONTROL:int = 1;
public const gloveMinXScale:Number = 0.7;
public const SKEWX_PROP:String = "skewX";
public const SCALEX_PROP:String = "scaleX";
public const gloveMinYScale:Number = 0.5;
public const STAGE_WIDTH:int = 800;
public const BLUSH_START_SPEED:Number = 0.1;
public const WAND_REVERT:int = 2;
public const SKEWY_PROP:String = "skewY";
public const INV_PI1_4:Number = 1.27323954473516;
public const SCALEY_PROP:String = "scaleY";
public const wristMinXScale:Number = 0.8;
public const STAGE_HEIGHT:int = 600;
public const WAND_EXPAND:int = 1;
public const MAX_SKEW_X:Number = 0.785398163397448;
public const MAX_WAND_SPARKLES:int = 20;
public const MAX_SKEW_Y:Number = 0.392699081698724;
public const gloveMaxXScale:Number = 1;
public const L_ANCHOR:int = 0;
public const WAND_NONE:int = 0;
public const wristMinYScale:Number = 1;
public const BLUSH_STOP_SPEED:Number = 0.02;
public const gloveMaxYScale:Number = 1;
public const wristMaxXScale:Number = 1;
public const ROTATION_PROP:String = "rotation";
public const wristMaxYScale:Number = 1.5;
public var KICK_COLOR:uint;
public var origWristY:Number;
public var MAGIC_PHRASES:Array;
public var TOP_LEFT_POINTS:Array;
public var W_MULT:Number;
public var BREATHE_WEIGHT:Number;
public var KICK_SHADE_ALPHA:Number;
public var BREAST2_Y:Array;
public var LEG_ROTATION_OFFSET:Number;
public var BREAST2_X:Array;
public var BELLY_DEF_DIST:Number;
public var mouthID:int;
public var ELLIPSE_RADIUS:Number;
public var wand_mc:Wand;
public var wandXDist:Number;
public var WAND_EXPLAINED:Boolean;
public var TOP_STRAP_COLOR:uint;
public var MIN_KICK_DURATION:int;
public var HAND_WEIGHT:Number;
public var blushValue:Number;
public var KICK_SCALE_SPEED:Number;
public var TOP_STRAP_MID_POINTS:Array;
public var BREAST1_X:Array;
public var KICK_SKEW_SPEED:Number;
public var BREAST1_Y:Array;
public var B1Y_OFFSET:Number;
public var S_CLOTHES:int;
public var MIN_VINE_SCALE:Number;
public var textYDist:Number;
public var BREAST2_TIGHT_X:Number;
public var BEVEL_ENABLED:Boolean;
public var BREAST2_TIGHT_Y:Number;
public var KICK_BLUSH_ALPHA:Number;
public var MIN_KICK_SIZE:Number;
public var PARENT:DisplayObjectContainer;
public var handPressed:Boolean;
public var BELLY_DEF_X:Array;
public var zoomSeparationDist:Number;
public var _bF:BlurFilter;
public var BELLY_DEF_Y:Array;
public var KICK_COLOR_ALPHA:Number;
public var CLOTHES_POINTS:Array;
public var BEVEL_FRONT_CLIP:MovieClip;
public var speech:Speech;
public var isDown:Array;
public var MIN_BELLY_F:Number;
public var SPARKLE_CLIP:MovieClip;
public var CENTER_CLIP:MovieClip;
public var BODY_Y:Number;
public var MIN_BELLY_M:Number;
public var KICK_BLUSH_WIDTH:int;
public var textXDist:Number;
public var BREASTS_TIGHT:Boolean;
public var MAX_KICK_SIZE:Number;
public var F_CLOTHES:Number;
public var zoomScale:Number;
public var FINAL_SIZE:int;
public var handSpin:Array;
public var MAGIC_PHRASE_LEN:int;
public var zoomValue:Number;
public var BOTTOM_FRONT_POINTS:Array;
public var handLimits:Object;
public var SIZE_UNLOCKED:Boolean;
public var REVERT_PHRASE:int;
public var WAND_SPARKLES:Array;
public var LEG_X_OFFSET:Number;
public var MAX_VINE_SKEWY:Number;
public var MAX_VINE_SKEWX:Number;
public var BREAST1_TIGHT_X:Number;
public var BREAST1_TIGHT_Y:Number;
public var MAGIC_PHRASE_POS:int;
public var KICK_BLUSH:uint;
public var SPARKLE_SIZE:Number;
public var zoomYDist:Number;
public var ENVIRON_X:Number;
public var ENVIRON_Y:Number;
public var MAX_BODY_ROTATION:Number;
public var INV_MAX_KICK_RADIUS:Number;
public var hand_tool_mc:MovieClip;
public var handPicked:Boolean;
public var GLOW_CLIPS:Array;
public var KICK_FILL_CLIP:MovieClip;
public var START_SIZE:int;
public var W_FRICTION:Number;
public var CONSTANT_EXPANSION:Boolean;
public var BREAST_RUB_PHRASES:Array;
public var B_SPEED:int;
public var keyCount:int;
public var KICK_RADIUS_CHANGE:Number;
public var TOP_BREAK_FRAME:uint;
public var TOP_CLIP_BACK:MovieClip;
public var endThumbX:Number;
public var MAX_BELLY_F:Number;
public var BEVEL_BACK_CLIP:MovieClip;
public var PUSH_SIZE:int;
public var WAND:MovieClip;
public var MAX_BELLY_M:Number;
public var BELLY_X:Number;
public var BELLY_Y:Number;
public var speech_mc:MovieClip;
public var BEVEL_ARRAY:Array;
public var MAX_SIZE:int;
public var BREAST2_LOOSE_X:Number;
public var BREAST2_LOOSE_Y:Number;
public var BELLY_S:int;
public var oldMY:int;
public var SPARKLES:Array;
public var KICK_ANGLE_CHANGE:Number;
public var TOP_BROKEN:Boolean;
public var MAX_VINE_SCALE:Number;
public var zoomXDist:Number;
public var SPARKLE_PEAK_TIME:Number;
public var oldMX:int;
public var _mc:MovieClip;
public var MAX_KICK_RADIUS:Number;
public var W_SPEED:int;
public var WAND_ALPHA:Number;
public var MIN_KICK_FRAME:int;
public var KICK_LINE_CLIP:MovieClip;
public var B_FRICTION:Number;
public var ATTACH_LIST:Array;
public var plus_mc:MovieClip;
public var BELLY_SPEED:Number;
public var LEG_Y_OFFSET:Number;
public var WEIGHT:Array;
public var bFilter:BevelFilter;
public var initHandSpin:Array;
public var DISABLED:Boolean;
public var B2X_OFFSET:Number;
public var zero_mc:MovieClip;
public var handYDist:Number;
public var shapeClip:MovieClip;
public var expression:Expression;
public var BEVEL_ACTIVE:Boolean;
public var copy_mc:MovieClip;
public var wandPicked:Boolean;
public var STRONG_KICK_SIZE:Number;
public var SPARKLE_COLOR:uint;
public var SPARKLE_DURATION:uint;
public var DEST_BREAST2_X:Number;
public var DEST_BREAST2_Y:Number;
public var OUTER_KICK_LIMIT:Number;
public var blushMode:int;
public var time:int;
public var TOP_FILL_COLOR:uint;
public var KICK_SHADE:uint;
public var NUM_SPARKLES:uint;
public var ENVIRON_ELEMENTS:Array;
public var KICKS:Array;
public var origThumbX:Number;
public var BOTTOM_CLIP_FRONT:MovieClip;
public var TOP_STRAP_BACK_POINTS:Array;
public var GLOW_CLIP:MovieClip;
public var HEAD_ROTATION:Number;
public var DEST_BREAST1_X:Number;
public var DEST_BREAST1_Y:Number;
public var pupilID:int;
public var B_MULT:Number;
public var eyeID:int;
public var TOP_CLIP_FRONT1:MovieClip;
public var TOP_CLIP_FRONT2:MovieClip;
public var oldY:Number;
public var BREAST1_LOOSE_X:Number;
public var handXDist:Number;
public var oldX:Number;
public var SPEED_ENABLED:Boolean;
public var endWristY:Number;
public var BOTTOM_BACK_POINTS:Array;
public var SPARKLE_MAX_VY:Number;
public var BREAST1_LOOSE_Y:Number;
public var MOUTH_FRAMES:int;
public var ELLIPSE_CLIP:MovieClip;
public var TOP_RIGHT_POINTS:Array;
public var info_txt:TextField;
public var BOTTOM_CLIP_BACK:MovieClip;
public var maxZoom:Number;
public var B2Y_OFFSET:Number;
public var hand_mc:MovieClip;
public var bellyID:int;
public var SPIN_C:Number;
public var SPIN_D:Number;
public var B1X_OFFSET:Number;
public var SPIN_A:Number;
public var sylvia:MovieClip;
public var _state:Array;
public var SPIN_B:Number;
public var KICK_PROBABILITY:Number;
public var wandYDist:Number;
public var KICK_PEAK_TIME:Number;
public var TOP_STRAP_RIGHT_POINTS:Array;
public var MAX_KICK_DURATION:int;
public var COMPLETING:Boolean;
public var SPARKLE_START:uint;
public var zoomDir:Number;
public var KICK_PHRASES:Array;
public var wandMode:int;
public var minus_mc:MovieClip;
public var __WHY:String;
public var BELLY_RUB_PHRASES:Array;
public var belly:Expansion;
public var TOP_STRAP_LEFT_POINTS:Array;
public var MIN_BELLY_SPEED:Number;
public var MAX_BELLY_SPEED:Number;
public var _c:int;
public var SPARKLE_GRAVITY:Number;
public var ELASTIC_LIST:Array;
public var DESTINATION_WEIGHT:Number;
public var shapePoints:Array;
public var _l:Array;
public var EXPAND_PHRASE:int;
public function MainTimeline(){
addFrameScript(0, frame1);
}
public function dropHand(_arg1:Event){
if (!hand_mc.visible){
return;
};
hand_mc.visible = false;
handPressed = false;
handPicked = false;
stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveHand);
stage.removeEventListener(MouseEvent.MOUSE_DOWN, handDown);
stage.removeEventListener(MouseEvent.MOUSE_UP, handUp);
}
public function eFrame(_arg1:Event){
var _local2:Number;
var _local3:int;
var _local4:Number;
var _local5:int;
var _local6:Number;
var _local7:Point;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Graphics;
time++;
if (CONSTANT_EXPANSION){
belly.growth = 1;
if ((((belly.getSize(0) > TOP_BREAK_FRAME)) && (!(TOP_BROKEN)))){
breakTop();
expression.react("teeth", -1);
speech.say("Oh!|| It broke.");
};
if (belly.getSize(0) == belly.getMaxSize(0)){
belly.growth = 0;
CONSTANT_EXPANSION = false;
};
};
if (belly.getGrowth(0) < 0){
_local6 = belly.getSize(0);
if (_local6 > 100){
if (REVERT_PHRASE == 0){
REVERT_PHRASE++;
speech.say("Hey! That's the wrong way. Make me bigger.");
};
expression.setState("sad");
} else {
if (_local6 > 30){
expression.setState("sad");
} else {
expression.setState("normal");
};
};
};
if ((((Math.random() < KICK_PROBABILITY)) && ((belly.getSize(bellyID) > MIN_KICK_FRAME)))){
startKick();
};
_local2 = (0.5 + (0.5 * expression.position));
_local3 = Math.floor((MOUTH_FRAMES * _local2));
_local4 = ((belly.getSize(0) - START_SIZE) / (FINAL_SIZE - START_SIZE));
if ((((_local4 < 0)) || (!(sylvia.body.visible)))){
_local4 = 0;
};
DESTINATION_WEIGHT = ((_local4 + (BREATHE_WEIGHT * _local3)) + HAND_WEIGHT);
balancePoint(WEIGHT, W_FRICTION, DESTINATION_WEIGHT, W_MULT, W_SPEED);
updateWeight(WEIGHT[0]);
updateElastic();
sylvia.body.gotoAndStop((1 + _local3));
sylvia.head.rotation = (-(_local2) * HEAD_ROTATION);
sylvia.head.mouth.gotoAndStop(sylvia.head.mouth.currentLabel);
_local5 = sylvia.head.mouth.currentFrame;
sylvia.head.mouth.gotoAndStop((_local5 + _local3));
sylvia.breast1.x = (sylvia.breast1.x + (_local2 * B1X_OFFSET));
sylvia.breast1.y = (sylvia.breast1.y + (_local2 * B1Y_OFFSET));
sylvia.breast2.x = (sylvia.breast2.x + (_local2 * B2X_OFFSET));
sylvia.breast2.y = (sylvia.breast2.y + (_local2 * B2Y_OFFSET));
handFrame();
updateBelly();
updateBreasts();
updateClothes();
updateKicks();
updateBlush();
updateBevel();
updateGlow();
if (speech_mc.visible){
_local7 = sylvia.head.mouth.localToGlobal(new Point());
var _temp1 = speech_mc.globalToLocal(_local7);
_local7 = speech_mc.globalToLocal(_local7);
_temp1.x = (_local7.x * 0.7);
_local7.y = (_local7.y * 0.7);
_local8 = Math.atan2(_local7.x, _local7.y);
_local9 = (Math.sin((_local8 + (Math.PI * 0.5))) * 20);
_local10 = (Math.cos((_local8 + (Math.PI * 0.5))) * 20);
_local11 = speech_mc.graphics;
_local11.clear();
_local11.lineStyle(1);
_local11.moveTo(_local7.x, _local7.y);
_local11.lineTo(_local9, _local10);
_local11.lineTo(-(_local9), -(_local10));
_local11.lineTo(_local7.x, _local7.y);
_local11 = speech_mc._mc.graphics;
_local11.clear();
_local11.beginFill(0xFFFFFF);
_local11.moveTo(_local7.x, _local7.y);
_local11.lineTo(_local9, _local10);
_local11.lineTo(-(_local9), -(_local10));
_local11.lineTo(_local7.x, _local7.y);
_local11.endFill();
};
}
public function generateBevel(){
var _local1:int;
var _local2:Array;
var _local3:Number;
var _local4:Number;
var _local5:Point;
var _local6:int;
var _local7:int;
_local1 = (3 + (Math.random() * 5));
_local2 = new Array(_local1);
if (Math.random() > 0.5){
_local2.clip = BEVEL_FRONT_CLIP;
_local2.owner = sylvia.breast1.center;
_local3 = -1;
_local4 = 0;
} else {
_local2.clip = BEVEL_BACK_CLIP;
_local2.owner = sylvia.breast2.center;
_local3 = 2;
_local4 = 0;
};
_local2.alpha = 1;
_local5 = _local2.owner.localToGlobal(new Point());
_local5 = _local2.clip.globalToLocal(_local5);
_local7 = _local2.length;
_local6 = 0;
while (_local6 < _local7) {
_local2[_local6] = {x:((_local5.x + (Math.random() * 10)) - 5), y:((_local5.y + (Math.random() * 10)) - 5), vX:((_local3 + (Math.random() * 2)) - 1), vY:((_local4 + (Math.random() * 2)) - 1)};
_local6++;
};
BEVEL_ARRAY[BEVEL_ARRAY.length] = _local2;
}
public function useWand(_arg1:Event){
var _local2:Number;
var _local3:Number;
if (DISABLED){
return;
};
if (!wandPicked){
wandPicked = true;
return;
};
if (isDown[Keyboard.SPACE]){
return;
};
if (wand_mc.hitTestPoint(stage.mouseX, stage.mouseY, true)){
dropWand(null);
return;
};
if (hittingButtons(stage.mouseX, stage.mouseY)){
if (hand_tool_mc.hitTestPoint(stage.mouseX, stage.mouseY, true)){
pickHand(null);
};
return;
};
_local2 = (stage.mouseX / stage.stageWidth);
_local3 = (stage.mouseY / stage.stageHeight);
if (((((((((TOP_CLIP_BACK.hitTestPoint(stage.mouseX, stage.mouseY, true)) || (TOP_CLIP_FRONT2.hitTestPoint(stage.mouseX, stage.mouseY, true)))) || (TOP_CLIP_FRONT1.hitTestPoint(stage.mouseX, stage.mouseY, true)))) && ((belly.getSize(0) < TOP_BREAK_FRAME)))) && (((TOP_BROKEN) || ((belly.getMaxSize(0) == FINAL_SIZE)))))){
if (!speech.speaking){
if (TOP_BROKEN){
speech.say("Nice fix!");
} else {
speech.say("You better fix that when you're done staring at my breasts.");
};
};
breakTop();
return;
} else {
if ((((_local2 < 0.5)) && ((_local3 > 0.5)))){
} else {
if ((((_local2 > 0.5)) && ((_local3 < 0.5)))){
} else {
if ((((_local2 < 0.5)) && ((_local3 < 0.5)))){
} else {
if ((((_local2 > 0.5)) && ((_local3 > 0.5)))){
if (CENTER_CLIP.parent){
enableComplete();
};
if (SPEED_ENABLED){
if (BELLY_SPEED < MAX_BELLY_SPEED){
BELLY_SPEED = MAX_BELLY_SPEED;
if (WAND){
WAND.glow.scaleY = (WAND.glow.scaleX = 1.5);
};
} else {
BELLY_SPEED = MIN_BELLY_SPEED;
if (WAND){
WAND.glow.scaleY = (WAND.glow.scaleX = 1);
};
};
};
} else {
if (belly.getSize(0) == FINAL_SIZE){
complete();
};
};
};
};
};
};
CONSTANT_EXPANSION = false;
WAND_ALPHA = 1;
wandEffect(null);
stage.addEventListener(Event.ENTER_FRAME, wandFrame, false, 0, true);
}
public function getKickTransform(_arg1:Number, _arg2:Number):Object{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local3 = Math.sqrt(((_arg1 * _arg1) + (_arg2 * _arg2)));
_local4 = Math.atan((_arg2 / _arg1));
_local5 = Math.atan2(_arg2, _arg1);
_local6 = (1 - (Math.abs(_arg1) * 0.8));
_local7 = (1 - (Math.abs(_arg2) * 0.8));
_local9 = 0;
_local10 = (-(_arg2) * 0.75);
_local11 = (_arg1 * 0.75);
if (_local4 > 0){
_local8 = (-(MAX_SKEW_X) * (1 - (Math.abs(((Math.PI * 0.25) - _local4)) * INV_PI1_4)));
} else {
_local8 = (MAX_SKEW_X * (1 - (Math.abs(((-(Math.PI) * 0.25) - _local4)) * INV_PI1_4)));
};
if (_local5 > 0){
_local9 = ((Math.cos(_local5) * Math.sin(_local5)) * MAX_SKEW_Y);
} else {
_local9 = ((Math.cos(_local5) * -(Math.sin(_local5))) * MAX_SKEW_Y);
};
return ({scaleX:_local6, scaleY:_local7, skewAngleX:(_local8 * _local3), skewAngleY:(_local9 * _local3), hTilt:_local11, vTilt:_local10});
}
public 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 function pickHand(_arg1:Event){
if (DISABLED){
return;
};
if (((hand_mc.visible) && (hand_tool_mc.hitTestPoint(stage.mouseX, stage.mouseY, true)))){
dropHand(null);
return;
};
dropWand(null);
hand_mc.visible = true;
hand_mc.x = sylvia.mouseX;
hand_mc.y = sylvia.mouseY;
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHand, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_DOWN, handDown, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, handUp, false, 0, true);
}
public function setElastic(_arg1:MovieClip, _arg2:Array, _arg3:Array, _arg4:Array, _arg5:Array, _arg6:Array, _arg7:Array):Object{
var _local8:Array;
var _local9:int;
var _local10:int;
var _local11:String;
var _local12:Point;
var _local13:Rectangle;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
if (!_arg1.parent){
return (null);
};
_local8 = [];
_local10 = _arg2.length;
_local9 = 0;
while (_local9 < _local10) {
_local11 = _arg2[_local9];
_local8[_local9] = [_arg4[_local9], 0, 0];
_local9++;
};
_local12 = _arg1.localToGlobal(new Point());
_local12 = PARENT.globalToLocal(_local12);
_local13 = _arg1.getBounds(_arg1);
_local14 = (_local13.right + _local13.left);
_local15 = (_local13.bottom + _local13.top);
_local16 = ((_local14)<0) ? _local13.left : _local13.right;
_local17 = ((_local15)<0) ? _local13.top : _local13.bottom;
ELASTIC_LIST[ELASTIC_LIST.length] = {clip:_arg1, props:_arg2, position:_local12, values:_local8, rect:_local13, hWeight:_local16, vWeight:_local17, frictions:_arg3, dests:_arg4, multipliers:_arg5, speeds:_arg6, scales:_arg7};
return (ELASTIC_LIST[(ELASTIC_LIST.length - 1)]);
}
public function resetClothesList(_arg1:Array){
var _local2:int;
var _local3:int;
var _local4:Object;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
_local4 = _arg1[_local2];
setClothesPoint(_local4.point, _local4.closed);
_local4.x = [0, 0];
_local4.y = [0, 0];
_local2++;
};
}
public function blushOff(){
blushMode = 0;
}
function frame1(){
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
__WHY = "This took way too much work to do. I don't think I'm going to do another one like this any time soon. Is it not animated well enough? I got tired of animating, so I did it all in code. \n\nWhy are you staring at my code? There's nothing of value to you here. If you want to learn how to make animations, do it on your own. If you don't want to learn, why are you even here? This code has nothing useful to you.";
MAX_BODY_ROTATION = 10;
LEG_ROTATION_OFFSET = 15;
LEG_X_OFFSET = -4;
LEG_Y_OFFSET = 4;
MAX_VINE_SKEWY = (MAX_BODY_ROTATION * Geometry.DEG_TO_RAD);
MAX_VINE_SKEWX = ((0.5 * MAX_BODY_ROTATION) * Geometry.DEG_TO_RAD);
MIN_VINE_SCALE = 0.1;
MAX_VINE_SCALE = 0.075;
BODY_Y = sylvia.body.y;
PUSH_SIZE = 200;
START_SIZE = 400;
MAX_SIZE = 600;
FINAL_SIZE = 900;
ATTACH_LIST = [];
ELASTIC_LIST = [];
PARENT = sylvia;
time = 0;
SPIN_A = 1;
SPIN_B = 0;
SPIN_C = 0;
SPIN_D = 1;
BELLY_DEF_X = [0, 0, 0];
BELLY_DEF_Y = [0, 0, 0];
BELLY_X = sylvia.belly.x;
BELLY_Y = sylvia.belly.y;
BELLY_DEF_DIST = 0.15;
MIN_BELLY_F = 0.3;
MAX_BELLY_F = 0.6;
MIN_BELLY_M = 0.2;
MAX_BELLY_M = 0.06;
BELLY_S = 2;
WEIGHT = [0, 0, 0];
W_FRICTION = 0.5;
DESTINATION_WEIGHT = 0;
HAND_WEIGHT = 0;
W_MULT = 0.2;
W_SPEED = 1;
BREASTS_TIGHT = true;
BREAST1_TIGHT_X = 3;
BREAST1_TIGHT_Y = -3;
BREAST1_LOOSE_X = -3;
BREAST1_LOOSE_Y = 3;
BREAST2_TIGHT_X = -3;
BREAST2_TIGHT_Y = -1;
BREAST2_LOOSE_X = 0;
BREAST2_LOOSE_Y = 1;
DEST_BREAST1_X = 0;
DEST_BREAST1_Y = 0;
DEST_BREAST2_X = 0;
DEST_BREAST2_Y = 0;
BREAST1_X = [0, 0, 0];
BREAST1_Y = [0, 0, 0];
BREAST2_X = [0, 0, 0];
BREAST2_Y = [0, 0, 0];
B_FRICTION = 0.4;
B_MULT = 0.2;
B_SPEED = 5;
TOP_CLIP_FRONT1 = new MovieClip();
TOP_CLIP_FRONT2 = new MovieClip();
TOP_CLIP_BACK = new MovieClip();
BOTTOM_CLIP_FRONT = new MovieClip();
BOTTOM_CLIP_BACK = new MovieClip();
TOP_FILL_COLOR = 10066431;
TOP_STRAP_COLOR = 13421823;
TOP_BREAK_FRAME = 450;
TOP_BROKEN = false;
CLOTHES_POINTS = [];
F_CLOTHES = 0.3;
S_CLOTHES = 5;
attach(sylvia.belly, sylvia.body);
attach(sylvia.arm1, sylvia.body);
attach(sylvia.arm2, sylvia.body);
attach(sylvia.head, sylvia.body);
attach(sylvia.breast1, sylvia.body);
attach(sylvia.breast2, sylvia.body);
attach(sylvia.wing1, sylvia.body, ["rotation"]);
attach(sylvia.leg1, sylvia.body);
attach(sylvia.leg2, sylvia.body);
attach(sylvia.tail, sylvia.body);
attach(sylvia.hair1, sylvia.head);
attach(sylvia.hair2, sylvia.head);
setElastic(sylvia.hair1, [SKEWX_PROP, SKEWY_PROP, SCALEY_PROP], [0.5, 0.5, 0.6], [0, 0, 1], [0.25, 0.2, 0.2], [1, 1, 2], [0.25, 0.025, 0.25]);
setElastic(sylvia.hair2, [SKEWX_PROP, SKEWY_PROP, SCALEY_PROP], [0.5, 0.5, 0.6], [0, 0, 1], [0.25, 0.2, 0.2], [1, 1, 2], [1, 0.1, 1]);
setElastic(sylvia.head.ear1, [SKEWY_PROP], [0.3], [0], [0.7], [4], [0.2]);
setElastic(sylvia.head.ear2, [SKEWY_PROP], [0.3], [0], [0.7], [4], [0.2]);
setElastic(sylvia.tail, [SKEWX_PROP], [0.5], [0], [0.25], [1], [1]);
_c = 0;
_l = CLOTHES_POINTS;
_mc = sylvia.breast1;
var _local1 = _c++;
_l[_local1] = {point:new Point(), closed:_mc.m1, open:sylvia.arm1.m4, mul:0.4};
var _local2 = _c++;
_l[_local2] = {point:new Point(), closed:_mc.m2, open:sylvia.arm1.m3, mul:0.3};
var _local3 = _c++;
_l[_local3] = {point:new Point(), closed:_mc.m3, open:sylvia.arm1.m3, mul:0.2};
var _local4 = _c++;
_l[_local4] = {point:new Point(), closed:_mc.m4, open:sylvia.arm1.m3, mul:0.1};
var _local5 = _c++;
_l[_local5] = {point:new Point(), closed:_mc.m5, open:sylvia.arm1.m3, mul:0.2};
var _local6 = _c++;
_l[_local6] = {point:new Point(), closed:_mc.m6, open:sylvia.arm1.m3, mul:0.3};
var _local7 = _c++;
_l[_local7] = {point:new Point(), closed:_mc.m7, open:sylvia.arm1.m4, mul:0.4};
var _local8 = _c++;
_l[_local8] = {point:new Point(), closed:_mc.m8, open:sylvia.arm1.m4, mul:0.4};
var _local9 = _c++;
_l[_local9] = {point:new Point(), closed:_mc.m9, open:sylvia.arm1.m4, mul:0.4};
_mc = sylvia.breast2;
var _local10 = _c++;
_l[_local10] = {point:new Point(), closed:_mc.m1, open:sylvia.arm2.m5, mul:0.4};
var _local11 = _c++;
_l[_local11] = {point:new Point(), closed:_mc.m2, open:sylvia.arm2.m6, mul:0.3};
var _local12 = _c++;
_l[_local12] = {point:new Point(), closed:_mc.m3, open:sylvia.arm2.m6, mul:0.2};
var _local13 = _c++;
_l[_local13] = {point:new Point(), closed:_mc.m4, open:sylvia.arm2.m6, mul:0.1};
var _local14 = _c++;
_l[_local14] = {point:new Point(), closed:_mc.m5, open:sylvia.arm2.m6, mul:0.1};
var _local15 = _c++;
_l[_local15] = {point:new Point(), closed:_mc.m6, open:sylvia.arm2.m6, mul:0.2};
var _local16 = _c++;
_l[_local16] = {point:new Point(), closed:_mc.m7, open:sylvia.arm2.m6, mul:0.3};
var _local17 = _c++;
_l[_local17] = {point:new Point(), closed:_mc.m8, open:sylvia.arm2.m5, mul:0.4};
var _local18 = _c++;
_l[_local18] = {point:new Point(), closed:_mc.m9, open:sylvia.arm2.m5, mul:0.4};
var _local19 = _c++;
_l[_local19] = {point:new Point(), closed:_mc.m10, open:sylvia.arm2.m5, mul:0.4};
_mc = sylvia.arm1;
var _local20 = _c++;
_l[_local20] = {point:new Point(), closed:_mc.m1};
var _local21 = _c++;
_l[_local21] = {point:new Point(), closed:_mc.m2};
var _local22 = _c++;
_l[_local22] = {point:new Point(), closed:_mc.m3};
var _local23 = _c++;
_l[_local23] = {point:new Point(), closed:_mc.m4};
_mc = sylvia.arm2;
var _local24 = _c++;
_l[_local24] = {point:new Point(), closed:_mc.m1};
var _local25 = _c++;
_l[_local25] = {point:new Point(), closed:_mc.m2};
var _local26 = _c++;
_l[_local26] = {point:new Point(), closed:_mc.m3};
var _local27 = _c++;
_l[_local27] = {point:new Point(), closed:_mc.m4};
_mc = sylvia.body;
var _local28 = _c++;
_l[_local28] = {point:new Point(), closed:_mc.m1};
var _local29 = _c++;
_l[_local29] = {point:new Point(), closed:_mc.m2};
var _local30 = _c++;
_l[_local30] = {point:new Point(), closed:_mc.m3};
var _local31 = _c++;
_l[_local31] = {point:new Point(), closed:_mc.m4};
var _local32 = _c++;
_l[_local32] = {point:new Point(), closed:_mc.m5};
var _local33 = _c++;
_l[_local33] = {point:new Point(), closed:_mc.m6};
var _local34 = _c++;
_l[_local34] = {point:new Point(), closed:_mc.m7};
var _local35 = _c++;
_l[_local35] = {point:new Point(), closed:_mc.m8};
var _local36 = _c++;
_l[_local36] = {point:new Point(), closed:_mc.m9};
_mc = sylvia.belly;
var _local37 = _c++;
_l[_local37] = {point:new Point(), closed:_mc.m1};
var _local38 = _c++;
_l[_local38] = {point:new Point(), closed:_mc.m2};
_mc = sylvia.leg1;
var _local39 = _c++;
_l[_local39] = {point:new Point(), closed:_mc.m1};
var _local40 = _c++;
_l[_local40] = {point:new Point(), closed:_mc.m2};
var _local41 = _c++;
_l[_local41] = {point:new Point(), closed:_mc.m3};
var _local42 = _c++;
_l[_local42] = {point:new Point(), closed:_mc.m4};
var _local43 = _c++;
_l[_local43] = {point:new Point(), closed:_mc.m5};
TOP_LEFT_POINTS = [{id:0, type:L_ANCHOR}, {id:1, type:L_CONTROL}, {id:2, type:L_ANCHOR}, {id:3, type:L_ANCHOR}, {id:4, type:L_CONTROL}, {id:5, type:L_ANCHOR}, {id:6, type:L_ANCHOR}, {id:7, type:L_CONTROL}, {id:8, type:L_ANCHOR}];
TOP_RIGHT_POINTS = [{id:9, type:L_ANCHOR}, {id:10, type:L_CONTROL}, {id:11, type:L_ANCHOR}, {id:12, type:L_CONTROL}, {id:13, type:L_ANCHOR}, {id:14, type:L_CONTROL}, {id:15, type:L_ANCHOR}, {id:16, type:L_ANCHOR}, {id:17, type:L_CONTROL}, {id:18, type:L_ANCHOR}];
TOP_STRAP_LEFT_POINTS = [{id:19, type:L_ANCHOR}, {id:20, type:L_ANCHOR}, {id:22, type:L_CONTROL}, {id:5, type:L_ANCHOR}, {id:6, type:L_ANCHOR}, {id:21, type:L_CONTROL}];
TOP_STRAP_RIGHT_POINTS = [{id:23, type:L_ANCHOR}, {id:24, type:L_ANCHOR}, {id:26, type:L_CONTROL}, {id:15, type:L_ANCHOR}, {id:16, type:L_ANCHOR}, {id:25, type:L_CONTROL}];
TOP_STRAP_MID_POINTS = [{id:2, type:L_ANCHOR}, {id:3, type:L_ANCHOR}, {id:18, type:L_ANCHOR}, {id:9, type:L_ANCHOR}];
TOP_STRAP_BACK_POINTS = [{id:0, type:L_ANCHOR}, {id:8, type:L_ANCHOR}, {id:27, type:L_ANCHOR}, {id:28, type:L_ANCHOR}];
BOTTOM_FRONT_POINTS = [{id:38, type:L_ANCHOR}, {id:39, type:L_CONTROL}, {id:40, type:L_ANCHOR}, {id:41, type:L_CONTROL}, {id:42, type:L_ANCHOR}, {id:29, type:L_CONTROL}, {id:36, type:L_ANCHOR}];
BOTTOM_BACK_POINTS = [{id:36, type:L_ANCHOR}, {id:37, type:L_CONTROL}, {id:30, type:L_ANCHOR}, {id:31, type:L_ANCHOR}, {id:32, type:L_CONTROL}, {id:33, type:L_ANCHOR}, {id:34, type:L_CONTROL}, {id:35, type:L_ANCHOR}, {id:38, type:L_ANCHOR}];
sylvia.addChildAt(TOP_CLIP_BACK, sylvia.getChildIndex(sylvia.breast2));
sylvia.addChildAt(TOP_CLIP_FRONT2, (sylvia.getChildIndex(sylvia.breast2) + 1));
sylvia.addChildAt(TOP_CLIP_FRONT1, (sylvia.getChildIndex(sylvia.arm1) + 1));
sylvia.addChildAt(BOTTOM_CLIP_FRONT, (sylvia.getChildIndex(sylvia.leg1) + 1));
sylvia.addChildAt(BOTTOM_CLIP_BACK, (sylvia.getChildIndex(sylvia.body) + 1));
sylvia.rect = new MovieClip();
sylvia.addChildAt(sylvia.rect, 0);
sylvia.rect.graphics.beginFill(0, 0);
sylvia.rect.graphics.drawRect(sylvia.bg.x, sylvia.bg.y, sylvia.bg.width, sylvia.bg.height);
_bF = new BlurFilter(4, 4, 1);
_bF.blurX = (_bF.blurY = 16);
sylvia.leaf1.filters = [_bF];
_bF.blurX = (_bF.blurY = 16);
sylvia.vine4.filters = [_bF];
_bF.blurX = (_bF.blurY = 16);
sylvia.leaf2.filters = [_bF];
_bF.blurX = (_bF.blurY = 8);
sylvia.leaf3.filters = [_bF];
_bF.blurX = (_bF.blurY = 16);
sylvia.leaf4.filters = [_bF];
_bF.blurX = (_bF.blurY = 8);
sylvia.plant.filters = [_bF];
_bF.blurX = (_bF.blurY = 64);
sylvia.bgLeaves.filters = [_bF];
_bF.blurX = (_bF.blurY = 32);
sylvia.tree.filters = [_bF];
_bF.blurX = (_bF.blurY = 32);
sylvia.grass.filters = [_bF];
ENVIRON_X = sylvia.x;
ENVIRON_Y = sylvia.y;
ENVIRON_ELEMENTS = [];
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.bg, propX:-1, propY:-1};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.leaf1, propX:1.2, propY:1.2};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.vine4, propX:0.4, propY:0.4};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.leaf2, propX:-0.2, propY:-0.2};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.leaf3, propX:-0.2, propY:-0.2};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.leaf4, propX:-0.3, propY:-0.3};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.plant, propX:-0.1, propY:-0.1};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.grass, propX:-0.4, propY:-0.4};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.tree, propX:-0.6, propY:-0.6};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
ENVIRON_ELEMENTS[ENVIRON_ELEMENTS.length] = {clip:sylvia.bgLeaves, propX:-0.8, propY:-0.8};
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].x = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.x;
ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].y = ENVIRON_ELEMENTS[(ENVIRON_ELEMENTS.length - 1)].clip.y;
speech = new Speech(speech_mc._txt);
speech.mouth = sylvia.head.mouth;
speech.pauseCharacter = "|";
speech.pauseTime = 5;
speech.interruptible = true;
speech.addEventListener("speechFinished", speechFinished);
KICK_PHRASES = ["Ooh! I'm feeling kicks!", "Mmhhmmm...", "Ouch!, that's strong.", "My babies really want to get out."];
BELLY_RUB_PHRASES = ["Mmm...| that's good.", "Yes, keep doing that.", "I could get used to this."];
BREAST_RUB_PHRASES = ["You think I'm attracive, right?", "They're nice and soft", "Ooh, keep on rubbing!"];
MAGIC_PHRASE_POS = 0;
MAGIC_PHRASES = ["Are you new to the forest?", "I'm a forest fairy. Did you notice?", "We're...| different from you.", "We need to call upon those talented in magic to get pregnant.", "You like chatting, don't you?", "These vines are very bouncy.", "Finding a mage takes time, thank-you for coming by.", "At least we don't have pain or discomfort when pregnant.", "Am I small, or is this forest big?", "This is the first time I've met a mage before.", "Birth?| That's...|| also different.", "We give birth to many young fairies at a time.", "All female. Don't ask me why.", "Maybe it was our strong relation with mages...", "Have you noticed how slowly your camera zooms in?", "It takes a lot of work to resize all these blurry backgrounds.", "Birth is a pleasant experience to us.", "No, they come out in a different way.", "Have you ever seen a fairy before?", "I can change my size.", "I mean...| if you'd like to...| Maybe another day.", "You're a nice person to talk to.", "I'm sorry you can't talk back...| I'm like a japanese RPG girl.", "But I know what you're thinking| ...I think.", "Not today, but if you ever want a one night stand...| I can be whatever size you need me.", "Birth?| It's better you just see for yourself.", "Since we get pregnant by magic, you could leave me pregnant forever.| I wouldn't like that very much.", "My breasts are so soft and round.", "I like you.| Do you like me?", "Thank-you for spending time with me.| It has been a nice conversation.", "Would you like to start over?"];
MAGIC_PHRASE_LEN = MAGIC_PHRASES.length;
belly = new Expansion(stage);
bellyID = belly.insertExpandable(sylvia.belly, MAX_SIZE);
MIN_BELLY_SPEED = 2;
MAX_BELLY_SPEED = 30;
BELLY_SPEED = MIN_BELLY_SPEED;
belly.setCheckPoint(bellyID, 30, 1);
belly.setCheckPoint(bellyID, 100, 1);
belly.setCheckPoint(bellyID, 220, 1);
belly.setCheckPoint(bellyID, 360, 1);
belly.setCheckPoint(bellyID, 500, 1);
belly.setCheckPoint(bellyID, 600, 1);
belly.setCheckPoint(bellyID, 601, 1);
belly.setCheckPoint(bellyID, 750, 1);
belly.setCheckPoint(bellyID, 900, 1);
belly.addEventListener("checkpoint", expanded);
expression = new Expression(stage);
MOUTH_FRAMES = 15;
HEAD_ROTATION = 5;
B1X_OFFSET = 1;
B1Y_OFFSET = -2;
B2X_OFFSET = 2;
B2Y_OFFSET = -1;
BREATHE_WEIGHT = 0.002;
mouthID = expression.addPart(sylvia.head.mouth, Expression.ANIMATED);
eyeID = expression.addPart(sylvia.head.eye, Expression.ANIMATED, true);
pupilID = expression.addPart(sylvia.head.eye.pupil);
_state = [];
expression.addStateAttributes(_state, true, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "medium", 0);
expression.addPartToState(_state, mouthID, "smile", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("normal", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.2, 0.5);
expression.addPartToState(_state, eyeID, "big", 0);
expression.addPartToState(_state, mouthID, "happy", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 4, 7);
expression.addState("notice", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.2, 0.7);
expression.addPartToState(_state, eyeID, "small", 0);
expression.addPartToState(_state, mouthID, "smile", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("enjoy", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "small", 0);
expression.addPartToState(_state, mouthID, "closed", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("sad", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "open", 0);
expression.addPartToState(_state, mouthID, "unhappy", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 4, 12);
expression.addState("surprised", _state);
_state = [];
expression.addStateAttributes(_state, false, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "shut", 0);
expression.addPartToState(_state, mouthID, "teeth", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("ecstatic", _state);
_state = [];
expression.addStateAttributes(_state, false, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "mad", 0);
expression.addPartToState(_state, mouthID, "teeth", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 2, 5);
expression.addState("sly", _state);
_state = [];
expression.addStateAttributes(_state, false, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "shut", 0);
expression.addPartToState(_state, mouthID, "teeth2", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("teeth", _state);
_state = [];
expression.addStateAttributes(_state, false, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "sad", 0);
expression.addPartToState(_state, mouthID, "happy2", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("emotional", _state);
_state = [];
expression.addStateAttributes(_state, false, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "open", 0);
expression.addPartToState(_state, mouthID, "_o", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("oh", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.2, 0.4);
expression.addPartToState(_state, eyeID, "closed", 0);
expression.addPartToState(_state, mouthID, "happy2", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("feel", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.2, 0.4);
expression.addPartToState(_state, eyeID, "medium", 0);
expression.addPartToState(_state, mouthID, "closed", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("unhappy", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.2, 0.4);
expression.addPartToState(_state, eyeID, "medium", 0);
expression.addPartToState(_state, mouthID, "happy2", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("calm", _state);
_state = [];
expression.addStateAttributes(_state, true, 0.2, 0.4);
expression.addPartToState(_state, eyeID, "open", 0);
expression.addPartToState(_state, mouthID, "happy3", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("happy", _state);
_state = [];
expression.addStateAttributes(_state, false, 0.1, 0.5);
expression.addPartToState(_state, eyeID, "medium", 0);
expression.addPartToState(_state, mouthID, "unhappy", 0);
expression.addPartToState(_state, pupilID, null, 0, 1, 0, 0);
expression.addState("speak", _state);
DISABLED = false;
WAND_EXPLAINED = false;
SIZE_UNLOCKED = false;
EXPAND_PHRASE = 0;
REVERT_PHRASE = 0;
SPEED_ENABLED = false;
CONSTANT_EXPANSION = false;
expression.setState("normal");
expression.activate();
belly.activate();
resetClothes();
sylvia.head.blush.alpha = 0;
speech.say("Oh, hello!||||\nSo you finally arrived|.|.|.||\nYou're here because I wanted you to be here.||\nI think you know what to do.");
stage.addEventListener("enterFrame", eFrame);
WAND = null;
WAND_ALPHA = 1;
wandMode = WAND_NONE;
wandPicked = false;
wand_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickWand);
zoomDir = 0;
zoomValue = 0;
zoomScale = 0.02;
maxZoom = 2.4;
plus_mc._txt.text = "+";
zero_mc._txt.text = "0";
minus_mc._txt.text = "-";
plus_mc.addEventListener(MouseEvent.MOUSE_DOWN, startZoom);
minus_mc.addEventListener(MouseEvent.MOUSE_DOWN, startZoom);
zero_mc.addEventListener(MouseEvent.MOUSE_DOWN, startZoom);
copy_mc.addEventListener(MouseEvent.MOUSE_DOWN, displayCopy);
info_txt.visible = false;
stage.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
stage.addEventListener(Event.RESIZE, resizeStage);
zoomYDist = (minus_mc.y - STAGE_HEIGHT);
zoomXDist = minus_mc.x;
zoomSeparationDist = (zero_mc.y - minus_mc.y);
wandXDist = (wand_mc.x - STAGE_WIDTH);
wandYDist = (wand_mc.y - STAGE_HEIGHT);
handXDist = (hand_tool_mc.x - STAGE_WIDTH);
handYDist = (hand_tool_mc.y - STAGE_HEIGHT);
textXDist = (speech_mc.x - STAGE_WIDTH);
textYDist = speech_mc.y;
hand_mc = sylvia.hand_mc;
initHandSpin = [(Math.PI * 0.2), 0, (-(Math.PI) * 0.25)];
handSpin = [0, 0, 0];
origWristY = hand_mc.wrist_mc.y;
endWristY = (origWristY - 15);
origThumbX = hand_mc.thumb_mc.x;
endThumbX = hand_mc.glove_mc.x;
handLimits = {glove:{min:new Point(0.7, 0.5), max:new Point(1, 1)}, wrist:{min:new Point(0.8, 1), max:new Point(1, 1.5)}, orig:{thumbX:origThumbX, wristY:origWristY}, end:{thumbX:endThumbX, wristY:endWristY}};
sylvia.hand_mc.visible = false;
handPicked = false;
handPressed = false;
hand_tool_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickHand);
blushMode = 0;
blushValue = 0;
SPARKLES = [];
WAND_SPARKLES = [];
SPARKLE_CLIP = null;
SPARKLE_GRAVITY = 0.25;
SPARKLE_MAX_VY = 5;
NUM_SPARKLES = 100;
SPARKLE_COLOR = 6702284;
SPARKLE_START = 15;
SPARKLE_DURATION = 40;
SPARKLE_SIZE = 15;
SPARKLE_PEAK_TIME = 0.25;
ELLIPSE_CLIP = sylvia.belly.ellipse;
ELLIPSE_RADIUS = ELLIPSE_CLIP.getRect(ELLIPSE_CLIP).right;
MIN_KICK_FRAME = 300;
KICK_PROBABILITY = (0.1 / 20);
KICK_FILL_CLIP = sylvia.belly.kicks1;
KICK_LINE_CLIP = sylvia.belly.kicks2;
KICK_BLUSH = 16737894;
KICK_COLOR = 12294639;
KICK_SHADE = 6702284;
KICK_BLUSH_ALPHA = 0.5;
KICK_COLOR_ALPHA = 0.25;
KICK_SHADE_ALPHA = 0.75;
KICK_BLUSH_WIDTH = 32;
MAX_KICK_SIZE = 0.31;
MIN_KICK_SIZE = 0.1;
MAX_KICK_RADIUS = 1;
INV_MAX_KICK_RADIUS = (1 / MAX_KICK_RADIUS);
OUTER_KICK_LIMIT = 0.85;
KICK_ANGLE_CHANGE = (Math.PI * 0.25);
KICK_RADIUS_CHANGE = 0.2;
MIN_KICK_DURATION = 3;
MAX_KICK_DURATION = 10;
KICK_PEAK_TIME = 0.25;
STRONG_KICK_SIZE = 0.5;
KICK_SCALE_SPEED = 0.05;
KICK_SKEW_SPEED = Math.tan(((Math.PI * 0.25) * 0.1));
KICKS = [];
shapeClip = new MovieClip();
isDown = new Array(128);
shapePoints = [];
keyCount = 0;
while (keyCount < 128) {
isDown[keyCount] = false;
keyCount++;
};
stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown);
stage.addEventListener(KeyboardEvent.KEY_UP, kUp);
BEVEL_ENABLED = false;
BEVEL_ACTIVE = false;
BEVEL_ARRAY = [];
BEVEL_FRONT_CLIP = new MovieClip();
BEVEL_BACK_CLIP = new MovieClip();
bFilter = new BevelFilter(4, 45, 0xFFFFFF, 0.5, 0, 0.6, 4, 4);
sylvia.addChildAt(BEVEL_FRONT_CLIP, (sylvia.getChildIndex(sylvia.breast1) + 1));
sylvia.addChildAt(BEVEL_BACK_CLIP, (sylvia.getChildIndex(sylvia.arm2) + 1));
BEVEL_FRONT_CLIP.filters = [bFilter];
BEVEL_BACK_CLIP.filters = [bFilter];
CENTER_CLIP = new MovieClip();
CENTER_CLIP.graphics.lineStyle(1, 0xFFFFFF);
CENTER_CLIP.graphics.moveTo(-20, 0);
CENTER_CLIP.graphics.lineTo(20, 0);
CENTER_CLIP.graphics.moveTo(0, -20);
CENTER_CLIP.graphics.lineTo(0, 20);
CENTER_CLIP.cacheAsBitmap = true;
CENTER_CLIP.x = (stage.stageWidth * 0.5);
CENTER_CLIP.y = (stage.stageHeight * 0.5);
GLOW_CLIP = new MovieClip();
GLOW_CLIPS = [];
COMPLETING = false;
resizeStage(null);
}
public function kUp(_arg1:KeyboardEvent){
isDown[_arg1.keyCode] = false;
}
public function updateWeight(_arg1:Number){
var _local2:Matrix;
var _local3:Number;
var _local4:Number;
var _local5:Number;
sylvia.body.rotation = (-(_arg1) * MAX_BODY_ROTATION);
_local2 = sylvia.vine1.transform.matrix;
_local2.b = Math.tan((_arg1 * MAX_VINE_SKEWY));
sylvia.vine1.transform.matrix = _local2;
sylvia.vine2.scaleY = (1 + (_arg1 * MAX_VINE_SCALE));
sylvia.vine2.scaleX = (1 - (_arg1 * MAX_VINE_SCALE));
_local2 = sylvia.vine3.transform.matrix;
_local2.d = (1 - (_arg1 * MIN_VINE_SCALE));
_local2.c = Math.tan((_arg1 * MAX_VINE_SKEWX));
sylvia.vine3.transform.matrix = _local2;
sylvia.body.y = (BODY_Y + (_arg1 * 30));
updateAttached();
_local3 = (sylvia.body.rotation * Geometry.DEG_TO_RAD);
_local4 = Math.cos(_local3);
_local5 = Math.sin(_local3);
SPIN_A = (SPIN_D = _local4);
SPIN_B = _local5;
SPIN_C = -(_local5);
sylvia.leg1.x = (sylvia.leg1.x + (_arg1 * LEG_X_OFFSET));
sylvia.leg1.y = (sylvia.leg1.y + (_arg1 * LEG_Y_OFFSET));
sylvia.leg1.rotation = (sylvia.body.rotation + (LEG_ROTATION_OFFSET * _arg1));
sylvia.leg2.rotation = (0.5 * sylvia.leg1.rotation);
}
public function expanded(_arg1:ExpansionEvent){
var _local2:Number;
var _local3:Number;
var _local4:MovieClip;
_local2 = _arg1.size;
_local3 = _arg1.direction;
_local4 = _arg1.expandable;
if (_local3 > 0){
switch (_local2){
case 30:
expression.setState("notice", true);
if (EXPAND_PHRASE == 0){
EXPAND_PHRASE++;
expression.endReact();
speech.say("Ah, yes.| I'm feeling it now.|.|.");
};
break;
case 100:
expression.setState("normal", true);
if (EXPAND_PHRASE == 1){
EXPAND_PHRASE++;
expression.react("emotional", 50);
speech.say("Being pregnant...| feels...| nice.");
};
break;
case 220:
expression.setState("enjoy", true);
if (EXPAND_PHRASE == 2){
EXPAND_PHRASE++;
expression.react("oh", 50);
speech.say("Ooh...| It's really showing now, isn't it?");
speech.interruptible = false;
};
break;
case 360:
expression.setState("calm", true);
if (EXPAND_PHRASE == 3){
EXPAND_PHRASE++;
expression.react("feel", 50);
speech.say("I'm so big my breasts are being pushed up.");
speech.interruptible = false;
};
break;
case 500:
expression.setState("calm", true);
if (EXPAND_PHRASE == 4){
EXPAND_PHRASE++;
expression.react("speak", 40);
speech.say("I think I'm almost there.");
speech.interruptible = false;
};
break;
case 600:
if (belly.getMaxSize(0) == MAX_SIZE){
expression.setState("unhappy", true);
if (EXPAND_PHRASE == 5){
EXPAND_PHRASE++;
expression.react("unhappy", 70);
speech.interruptible = true;
speech.say("Is that all?| Don't leave me like this.");
speech.interruptible = false;
};
} else {
if (EXPAND_PHRASE < 5){
EXPAND_PHRASE = 6;
};
expression.setState("enjoy", true);
};
break;
case 601:
expression.setState("happy", true);
if (EXPAND_PHRASE == 6){
EXPAND_PHRASE++;
expression.react("ecstatic", 70);
speech.interruptible = true;
speech.say("Ah, this is getting good!");
speech.interruptible = false;
};
break;
case 750:
expression.setState("surprised", true);
if (EXPAND_PHRASE == 7){
EXPAND_PHRASE++;
speech.interruptible = true;
speech.say("This is...| bigger than I expected.");
speech.interruptible = false;
};
break;
case 900:
expression.setState("notice", true);
if (EXPAND_PHRASE == 8){
EXPAND_PHRASE++;
expression.react("ecstatic", 40);
speech.interruptible = true;
speech.say("Yes, this is it!| I'm finally ready.");
speech.interruptible = false;
};
if (!CENTER_CLIP.parent){
enableComplete();
};
break;
default:
break;
};
};
}
public function drawInnerLight(_arg1:Graphics, _arg2:Object){
_arg1.moveTo(_arg2.left.x, _arg2.left.y);
_arg1.curveTo(_arg2.top.x, _arg2.top.y, _arg2.right.x, _arg2.right.y);
_arg1.curveTo(_arg2.midRight.x, _arg2.midRight.y, _arg2.bottom.x, _arg2.bottom.y);
_arg1.curveTo(_arg2.midLeft.x, _arg2.midLeft.y, _arg2.left.x, _arg2.left.y);
}
public function updateBelly(){
var _local1:Matrix;
var _local2:Matrix;
var _local3:Matrix;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local1 = sylvia.belly.transform.matrix;
_local2 = new Matrix();
_local3 = new Matrix();
_local4 = ((belly.getSize(0) - 1) / (FINAL_SIZE - 1));
_local5 = (MIN_BELLY_F + (_local4 * (MAX_BELLY_F - MIN_BELLY_F)));
_local6 = (MIN_BELLY_M + (_local4 * (MAX_BELLY_M - MIN_BELLY_M)));
balancePoint(BELLY_DEF_X, _local5, 0, _local6, BELLY_S);
balancePoint(BELLY_DEF_Y, _local5, 0, _local6, BELLY_S);
Algorithms.deformMatrix(_local3, BELLY_DEF_X[0], BELLY_DEF_Y[0], BELLY_DEF_DIST);
_local2.a = SPIN_A;
_local2.b = SPIN_B;
_local2.c = SPIN_C;
_local2.d = SPIN_D;
_local3.concat(_local2);
_local3.tx = _local1.tx;
_local3.ty = _local1.ty;
sylvia.belly.transform.matrix = _local3;
}
public function updateBreasts(){
var _local1:Matrix;
var _local2:Number;
if (((BREASTS_TIGHT) && (sylvia.belly.visible))){
_local2 = ((belly.getSize(0) - PUSH_SIZE) / (TOP_BREAK_FRAME - PUSH_SIZE));
if (_local2 < 0){
_local2 = 0;
};
if (_local2 > 1){
_local2 = 1;
};
DEST_BREAST1_X = (BREAST1_TIGHT_X - (_local2 * 4));
DEST_BREAST1_Y = (BREAST1_TIGHT_Y - (_local2 * 4));
DEST_BREAST2_X = (BREAST2_TIGHT_X - (_local2 * 5));
DEST_BREAST2_Y = (BREAST2_TIGHT_Y - (_local2 * 7));
_local1 = sylvia.breast1.transform.matrix;
_local1.a = SPIN_A;
_local1.b = (SPIN_B - (_local2 * 0.15));
_local1.c = (SPIN_C - (_local2 * 0.05));
_local1.d = SPIN_D;
sylvia.breast1.transform.matrix = _local1;
_local1 = sylvia.breast2.transform.matrix;
_local1.a = SPIN_A;
_local1.b = SPIN_B;
_local1.c = (SPIN_C - (_local2 * 0.1));
_local1.d = (SPIN_D - (_local2 * 0.2));
sylvia.breast2.transform.matrix = _local1;
} else {
DEST_BREAST1_X = BREAST1_LOOSE_X;
DEST_BREAST1_Y = BREAST1_LOOSE_Y;
DEST_BREAST2_X = BREAST2_LOOSE_X;
DEST_BREAST2_Y = BREAST2_LOOSE_Y;
_local1 = sylvia.breast1.transform.matrix;
_local1.a = SPIN_A;
_local1.b = SPIN_B;
_local1.c = SPIN_C;
_local1.d = SPIN_D;
sylvia.breast1.transform.matrix = _local1;
_local1 = sylvia.breast2.transform.matrix;
_local1.a = SPIN_A;
_local1.b = SPIN_B;
_local1.c = SPIN_C;
_local1.d = SPIN_D;
sylvia.breast2.transform.matrix = _local1;
};
balancePoint(BREAST1_X, B_FRICTION, DEST_BREAST1_X, B_MULT, B_SPEED);
balancePoint(BREAST1_Y, B_FRICTION, DEST_BREAST1_Y, B_MULT, B_SPEED);
balancePoint(BREAST2_X, B_FRICTION, DEST_BREAST2_X, B_MULT, B_SPEED);
balancePoint(BREAST2_Y, B_FRICTION, DEST_BREAST2_Y, B_MULT, B_SPEED);
sylvia.breast1.x = (sylvia.breast1.x + BREAST1_X[0]);
sylvia.breast1.y = (sylvia.breast1.y + BREAST1_Y[0]);
sylvia.breast2.x = (sylvia.breast2.x + BREAST2_X[0]);
sylvia.breast2.y = (sylvia.breast2.y + BREAST2_Y[0]);
}
public function createGlow(){
var _local1:MovieClip;
var _local2:Matrix;
var _local3:Number;
var _local4:Graphics;
if (!COMPLETING){
return;
};
_local1 = new MovieClip();
_local2 = new Matrix();
_local3 = (100 + (Math.random() * 50));
_local2.createGradientBox(_local3, _local3, 0, (-(_local3) * 0.5), (-(_local3) * 0.5));
_local4 = _local1.graphics;
_local4.clear();
_local4.beginGradientFill(GradientType.RADIAL, [0xFFFF00, 0xFFFF00], [1, 0], [32, 0xFF], _local2);
_local4.drawCircle(0, 0, (_local3 * 0.5));
_local4.endFill();
_local1.x = GLOW_CLIP.x;
_local1.y = GLOW_CLIP.y;
_local1.vX = ((Math.random() * 20) - 10);
_local1.vY = ((Math.random() * 20) - 10);
_local1.fX = 0;
_local1.fY = 0;
GLOW_CLIP.parent.addChild(_local1);
GLOW_CLIPS[GLOW_CLIPS.length] = _local1;
}
public function blush(){
blushMode = 2;
}
public function stopWand(_arg1:Event){
stage.removeEventListener(Event.ENTER_FRAME, wandFrame);
if (belly.getGrowth(0) < 0){
expression.setState("normal");
};
belly.growth = 0;
WAND_ALPHA = 0.5;
BEVEL_ACTIVE = false;
wandEffect(null);
}
public function updateBevel(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Array;
var _local6:Object;
_local3 = BEVEL_ARRAY.length;
BEVEL_FRONT_CLIP.graphics.clear();
BEVEL_BACK_CLIP.graphics.clear();
_local1 = 0;
while (_local1 < _local3) {
_local5 = BEVEL_ARRAY[_local1];
drawBevel(_local5);
_local4 = _local5.length;
_local2 = 0;
while (_local2 < _local4) {
_local6 = _local5[_local2];
_local5[_local2].x = (_local6.x + _local6.vX);
_local6.y = (_local6.y + _local6.vY);
_local6.vX = (_local6.vX + ((Math.random() * 1) - 0.5));
_local6.vY = (_local6.vY + ((1.5 + (Math.random() * 2)) - 1));
_local2++;
};
_local5.alpha = (_local5.alpha - 0.05);
if (_local5.alpha < 0){
BEVEL_ARRAY.splice(_local1, 1);
_local3--;
_local1--;
};
_local1++;
};
}
public function complete(){
var _local1:MovieClip;
var _local2:Object;
var _local3:Point;
var _local4:Point;
var _local5:Point;
var _local6:Object;
var _local7:Object;
var _local8:Number;
var _local9:Matrix;
var _local10:Graphics;
if (DISABLED){
return;
};
DISABLED = true;
blushOn();
COMPLETING = true;
_local1 = sylvia.belly.ellipse;
_local2 = Geometry.getEllipse(_local1);
_local3 = new Point(_local2.x, _local2.y);
_local4 = new Point(_local2.radius, 0);
_local5 = new Point(0, (_local2.radius * _local2.excentricity));
_local6 = Geometry.rotate(_local2.rotation, _local4.x, _local4.y);
_local7 = Geometry.rotate(_local2.rotation, _local5.x, _local5.y);
_local4 = _local1.parent.localToGlobal(new Point(_local6.x, _local6.y));
_local5 = _local1.parent.localToGlobal(new Point(_local7.x, _local7.y));
_local3 = _local1.parent.localToGlobal(_local3);
_local8 = Math.max(Point.distance(_local4, _local3), Point.distance(_local5, _local3));
_local3 = sylvia.globalToLocal(_local3);
sylvia.addChild(GLOW_CLIP);
GLOW_CLIP.x = _local3.x;
GLOW_CLIP.y = _local3.y;
_local9 = new Matrix();
_local9.createGradientBox((_local8 * 2), (_local8 * 2), 0, -(_local8), -(_local8));
_local10 = GLOW_CLIP.graphics;
_local10.clear();
_local10.beginGradientFill(GradientType.RADIAL, [16777164, 0xFFFF00], [1, 0], [0, 0xFF], _local9);
_local10.drawCircle(0, 0, _local8);
_local10.endFill();
belly.growth = 0;
stage.addEventListener(Event.ENTER_FRAME, completing, false, 0, true);
BELLY_SPEED = MAX_BELLY_SPEED;
SPEED_ENABLED = true;
if (WAND){
WAND.glow.scaleY = (WAND.glow.scaleX = 1.5);
};
expression.setState("ecstatic", true);
speech.say("It's...| happening.|| Just...| wait.");
}
public function updateClothesPoints(_arg1:Array){
var _local2:int;
var _local3:int;
var _local4:Object;
var _local5:Point;
var _local6:Point;
var _local7:Number;
var _local8:Number;
var _local9:Array;
_local3 = _arg1.length;
_local9 = [];
_local2 = 0;
while (_local2 < _local3) {
_local4 = _arg1[_local2];
if (!((_local4.open) && (TOP_BROKEN))){
if (((!(TOP_BROKEN)) && ((sylvia.getChildIndex(TOP_CLIP_FRONT2) < sylvia.getChildIndex(sylvia.breast2))))){
sylvia.removeChild(TOP_CLIP_FRONT2);
sylvia.addChildAt(TOP_CLIP_FRONT2, (sylvia.getChildIndex(sylvia.breast2) + 1));
};
setClothesPoint(_local4.point, _local4.closed);
} else {
if (!_local4.open){
} else {
_local5 = _local4.closed.localToGlobal(new Point());
_local6 = _local4.open.localToGlobal(new Point());
_local7 = Point.distance(_local5, _local6);
_local6.y = (_local6.y + _local7);
_local8 = _local4.x[0];
_local6 = sylvia.globalToLocal(_local6);
_local9 = Algorithms.balancePoint(_local4.point.x, _local4.x[0], _local4.x[1], F_CLOTHES, _local6.x, _local4.mul, S_CLOTHES);
_local4.point.x = _local9[0];
_local4.x[0] = _local9[1];
_local4.x[1] = _local9[2];
if ((((((_local8 >= 15)) && ((_local4.x[0] <= 15)))) && ((sylvia.getChildIndex(TOP_CLIP_FRONT2) > sylvia.getChildIndex(sylvia.breast2))))){
sylvia.removeChild(TOP_CLIP_FRONT2);
sylvia.addChildAt(TOP_CLIP_FRONT2, sylvia.getChildIndex(sylvia.body));
};
_local9 = Algorithms.balancePoint(_local4.point.y, _local4.y[0], _local4.y[1], F_CLOTHES, _local6.y, _local4.mul, S_CLOTHES);
_local4.point.y = _local9[0];
_local4.y[0] = _local9[1];
_local4.y[1] = _local9[2];
};
};
_local2++;
};
}
public 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 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 function dropStage(_arg1:Event){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveStage);
stage.removeEventListener(MouseEvent.MOUSE_UP, dropStage);
stage.removeEventListener(Event.MOUSE_LEAVE, dropStage);
}
public function editElastic(_arg1:MovieClip, _arg2:String, _arg3:Number){
var _local4:int;
var _local5:int;
_local5 = ELASTIC_LIST.length;
_local4 = 0;
while (_local4 < _local5) {
if (ELASTIC_LIST[_local4].clip == _arg1){
ELASTIC_LIST[_local4].dests[_arg2] = _arg3;
return;
};
_local4++;
};
}
public function moveWand(_arg1:Event){
WAND.x = stage.mouseX;
WAND.y = stage.mouseY;
wandEffect(null);
}
public function drawPointList(_arg1:Graphics, _arg2:Array, _arg3:Array, _arg4:Boolean=true){
var _local5:int;
var _local6:int;
var _local7:Object;
var _local8:Object;
var _local9:Point;
var _local10:Point;
var _local11:Point;
if (_arg3.length < 2){
return;
};
_local5 = 1;
_local6 = _arg2.length;
_local9 = _arg3[_arg2[0].id].point;
_arg1.moveTo(_local9.x, _local9.y);
while (_local5 < _local6) {
var _temp1 = _local5;
_local5 = (_local5 + 1);
_local7 = _arg2[_temp1];
_local10 = _arg3[_local7.id].point;
if (_local7.type == L_ANCHOR){
_arg1.lineTo(_local10.x, _local10.y);
} else {
var _temp2 = _local5;
_local5 = (_local5 + 1);
_local8 = _arg2[_temp2];
if (!_local8){
if (_arg4){
_local8 = _arg2[0];
} else {
return;
};
};
if (_local8.type != L_ANCHOR){
throw ("Can't have two control points in a row!");
};
_local11 = _arg3[_local8.id].point;
_arg1.curveTo(_local10.x, _local10.y, _local11.x, _local11.y);
};
};
if ((((_arg2[(_local6 - 1)].type == L_ANCHOR)) && (_arg4))){
_arg1.lineTo(_local9.x, _local9.y);
};
}
public function dropWand(_arg1:Event){
if (WAND == null){
return;
};
WAND.parent.removeChild(WAND);
WAND = null;
wandPicked = false;
stage.removeEventListener(MouseEvent.MOUSE_DOWN, useWand);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveWand);
stage.removeEventListener(MouseEvent.MOUSE_UP, stopWand);
stage.removeEventListener(Event.ENTER_FRAME, wandFrame);
}
public function blendColor(_arg1:uint, _arg2:uint, _arg3:Number=0.5):uint{
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
_local4 = int((((_arg1 & 0xFF) * (1 - _arg3)) + ((_arg2 & 0xFF) * _arg3)));
_local5 = int(((((_arg1 >> 8) & 0xFF) * (1 - _arg3)) + (((_arg2 >> 8) & 0xFF) * _arg3)));
_local6 = int(((((_arg1 >> 16) & 0xFF) * (1 - _arg3)) + (((_arg2 >> 16) & 0xFF) * _arg3)));
_local7 = int(((((_arg1 >> 24) & 0xFF) * (1 - _arg3)) + (((_arg2 >> 24) & 0xFF) * _arg3)));
return (((((_local7 << 24) | (_local6 << 16)) | (_local5 << 8)) | _local4));
}
public function updateAttached(){
var _local1:int;
var _local2:int;
var _local3:Object;
var _local4:Point;
var _local5:Point;
var _local6:int;
var _local7:int;
var _local8:Array;
_local2 = ATTACH_LIST.length;
_local1 = 0;
while (_local1 < _local2) {
_local3 = ATTACH_LIST[_local1];
if (_local3.mc.parent){
_local4 = _local3.par.localToGlobal(_local3.point);
_local5 = _local3.mc.parent.globalToLocal(_local4);
_local3.mc.x = _local5.x;
_local3.mc.y = _local5.y;
};
_local8 = _local3.props;
_local7 = _local8.length;
_local6 = 0;
while (_local6 < _local7) {
_local3.mc[_local8[_local6]] = _local3.par[_local8[_local6]];
_local6++;
};
_local1++;
};
}
public function moveStage(_arg1:Event){
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = 0.5;
_local3 = (stage.mouseX - oldMX);
_local4 = (stage.mouseY - oldMY);
sylvia.x = (oldX + (_local3 * _local2));
sylvia.y = (oldY + (_local4 * _local2));
Algorithms.adjustScreen(sylvia, sylvia.rect);
move3D();
}
public function setVisible(_arg1:Boolean){
sylvia.body.visible = (sylvia.belly.visible = (sylvia.leg1.visible = (sylvia.leg2.visible = (sylvia.arm1.visible = (sylvia.arm2.visible = (sylvia.breast1.visible = (sylvia.breast2.visible = (sylvia.wing1.visible = (sylvia.head.visible = (sylvia.hair1.visible = (sylvia.hair2.visible = (sylvia.tail.visible = (TOP_CLIP_BACK.visible = (TOP_CLIP_FRONT1.visible = (TOP_CLIP_FRONT2.visible = (BOTTOM_CLIP_FRONT.visible = (BOTTOM_CLIP_BACK.visible = _arg1)))))))))))))))));
generateSparkles(NUM_SPARKLES, SPARKLE_START, SPARKLE_SIZE, SPARKLE_PEAK_TIME);
}
public function handDown(_arg1:Event){
if (DISABLED){
return;
};
if (((((sylvia.belly.hitTestPoint(stage.mouseX, stage.mouseY, true)) || (sylvia.breast1.hitTestPoint(stage.mouseX, stage.mouseY, true)))) || (sylvia.breast2.hitTestPoint(stage.mouseX, stage.mouseY, true)))){
handPressed = true;
};
}
public function updateBlush(){
if (blushMode){
if (blushValue < 1){
blushValue = (blushValue + BLUSH_START_SPEED);
if (blushValue > 1){
blushValue = 1;
};
};
} else {
if (blushValue > 0){
blushValue = (blushValue - BLUSH_STOP_SPEED);
if (blushValue < 0){
blushValue = 0;
};
};
};
sylvia.head.blush.alpha = blushValue;
}
public function pickWand(_arg1:Event){
if (DISABLED){
return;
};
if (((!((WAND == null))) || (wandPicked))){
return;
};
dropHand(null);
if (!WAND_EXPLAINED){
if (belly.getSize(0) == 1){
expression.react("sly", -1);
speech.say("Ah,| a magic wand. |Oh, you...!||||\nCome on, then. Make me *|P|R|E|G|N|A|N|T|*.");
};
WAND_EXPLAINED = true;
};
WAND = new Wand();
WAND_ALPHA = 0.5;
wandEffect(null);
stage.addChild(WAND);
WAND.x = wand_mc.x;
WAND.y = wand_mc.y;
if (BELLY_SPEED < MAX_BELLY_SPEED){
WAND.glow.scaleY = (WAND.glow.scaleX = 1);
} else {
WAND.glow.scaleY = (WAND.glow.scaleX = 1.5);
};
stage.addEventListener(MouseEvent.MOUSE_DOWN, useWand, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveWand, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, stopWand, false, 0, true);
}
public function drawBevel(_arg1:Array){
var _local2:Graphics;
var _local3:int;
var _local4:int;
_local2 = _arg1.clip.graphics;
_local3 = _arg1.length;
_local2.beginFill(0xFFFFFF, Math.sqrt(_arg1.alpha));
_local2.moveTo(_arg1[0].x, _arg1[0].y);
Drawing.drawCurvyLine(_local2, _arg1[(_local3 - 1)], _arg1, _arg1[0]);
_local2.endFill();
}
public function drawKick(_arg1:Object){
var _local2:Matrix;
var _local3:Object;
var _local4:Object;
var _local5:Number;
var _local6:Graphics;
var _local7:Object;
_local2 = new Matrix();
if (_arg1.distance < OUTER_KICK_LIMIT){
_local3 = getKickTransform((Math.cos(_arg1.angle) * _arg1.distance), (Math.sin(_arg1.angle) * _arg1.distance));
_local4 = getInnerKick(_arg1.point.x, _arg1.point.y, _arg1.size, _local3);
_local5 = (_arg1.size * 0.5);
_local2.createGradientBox(_arg1.size, _arg1.size, 0, (_arg1.point.x - _local5), (_arg1.point.y - _local5));
_local6 = KICK_FILL_CLIP.graphics;
_local6.beginGradientFill("radial", [KICK_BLUSH, KICK_COLOR], [KICK_BLUSH_ALPHA, KICK_COLOR_ALPHA], [KICK_BLUSH_WIDTH, 0xFF], _local2);
drawInnerLight(_local6, _local4);
_local6.endFill();
_local6.beginFill(KICK_SHADE, KICK_SHADE_ALPHA);
drawInnerShade(_local6, _local4);
_local6.endFill();
} else {
_local7 = getOuterKick(_arg1);
_local2.createGradientBox(_arg1.size, _arg1.size, 0, (_arg1.point.x - _local5), (_arg1.point.y - _local5));
_local6 = KICK_FILL_CLIP.graphics;
_local6.beginGradientFill("radial", [KICK_BLUSH, KICK_COLOR], [1, 1], [KICK_BLUSH_WIDTH, 0xFF], _local2);
drawOuterLight(_local6, _local7);
_local6.endFill();
_local6.beginFill(KICK_SHADE, KICK_SHADE_ALPHA);
drawOuterShade(_local6, _local7, Math.cos(_arg1.angle), Math.sin(_arg1.angle));
_local6.endFill();
_local6 = KICK_LINE_CLIP.graphics;
_local6.lineStyle(0.2, 0);
drawOuterLine(_local6, _local7);
};
}
public function resetAll(){
var _local1:int;
var _local2:int;
var _local3:MovieClip;
DISABLED = false;
_local2 = GLOW_CLIPS.length;
_local1 = 0;
while (_local1 < _local2) {
_local3 = GLOW_CLIPS[_local1];
_local3.graphics.clear();
_local3.parent.removeChild(_local3);
_local1++;
};
GLOW_CLIPS.length = 0;
endComplete(true);
dropWand(null);
dropHand(null);
if (TOP_BROKEN){
breakTop();
};
speech.clearSpeech();
belly.growth = 0;
belly.size = 1;
belly.maxSize = MAX_SIZE;
if (CENTER_CLIP.parent){
enableComplete();
};
expression.endReact();
expression.setState("normal");
EXPAND_PHRASE = (REVERT_PHRASE = 0);
SPEED_ENABLED = false;
BELLY_SPEED = MIN_BELLY_SPEED;
sylvia.x = ENVIRON_X;
sylvia.y = ENVIRON_Y;
sylvia.scaleX = (sylvia.scaleY = 1);
Algorithms.adjustScreen(sylvia, sylvia.rect);
move3D();
sylvia.head.blush.alpha = 0;
speech.say("Oh, hello!||||\nSo you finally arrived|.|.|.|| Again...||\nYou're here because I wanted you to be here.||\nI think you know what to do.");
}
public function startKick(){
var _local1:Object;
var _local2:Number;
if (DISABLED){
return;
};
_local1 = {};
_local1.startAngle = ((Math.random() * Math.PI) * 2);
_local1.startRadius = (Math.random() * MAX_KICK_RADIUS);
_local1.endAngle = ((_local1.startAngle + ((Math.random() * KICK_ANGLE_CHANGE) * 2)) - KICK_ANGLE_CHANGE);
_local1.endRadius = ((_local1.startRadius + (Math.random() * (KICK_RADIUS_CHANGE * 2))) - KICK_RADIUS_CHANGE);
if (_local1.endRadius > MAX_KICK_RADIUS){
_local1.endRadius = MAX_KICK_RADIUS;
};
if (_local1.endRadius < -(MAX_KICK_RADIUS)){
_local1.endRadius = -(MAX_KICK_RADIUS);
};
_local1.maxSize = (MIN_KICK_SIZE + (Math.random() * (MAX_KICK_SIZE - MIN_KICK_SIZE)));
_local1.duration = (MIN_KICK_DURATION + (Math.random() * (MAX_KICK_DURATION - MIN_KICK_DURATION)));
_local1.angle = 0;
_local1.distance = 0;
_local1.point = null;
_local1.size = 0;
_local1.time = 0;
KICKS[KICKS.length] = _local1;
expression.react("kick");
if (_local1.maxSize >= (MAX_KICK_SIZE * STRONG_KICK_SIZE)){
if (Math.random() < 0.2){
speech.say(KICK_PHRASES[((Math.random() * KICK_PHRASES.length) | 0)]);
};
_local2 = (_local1.startRadius * INV_MAX_KICK_RADIUS);
BELLY_DEF_X[1] = (Math.cos(_local1.startAngle) * _local2);
BELLY_DEF_Y[1] = (Math.sin(_local1.startAngle) * _local2);
};
}
public function drawInnerShade(_arg1:Graphics, _arg2:Object){
_arg1.moveTo(_arg2.left.x, _arg2.left.y);
_arg1.curveTo(_arg2.center.x, _arg2.center.y, _arg2.right.x, _arg2.right.y);
_arg1.curveTo(_arg2.midRight.x, _arg2.midRight.y, _arg2.bottom.x, _arg2.bottom.y);
_arg1.curveTo(_arg2.midLeft.x, _arg2.midLeft.y, _arg2.left.x, _arg2.left.y);
}
public function generateSparkle(_arg1:int, _arg2:int, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:Number, _arg7:Number=0.5, _arg8:Number=0, _arg9:Number=0):Object{
var _local10:Object;
_local10 = {};
_local10.x = _arg1;
_local10.y = _arg2;
_local10.color = _arg3;
_local10.startFrame = _arg4;
_local10.duration = _arg5;
_local10.maxSize = _arg6;
_local10.peakTime = _arg7;
_local10.startSpin = _arg8;
_local10.endSpin = _arg9;
_local10.vX = 0;
_local10.vY = 0;
_local10.time = 0;
return (_local10);
}
public function updateGlow(){
var _local1:int;
var _local2:int;
var _local3:MovieClip;
var _local4:Point;
_local1 = GLOW_CLIPS.length;
if (!_local1){
return;
};
_local2 = 0;
while (_local2 < _local1) {
_local3 = GLOW_CLIPS[_local2];
if (_local3.alpha < 1){
_local3.alpha--;
};
_local3.x = (_local3.x + _local3.vX);
_local3.y = (_local3.y + _local3.vY);
_local3.vX = (_local3.vX + _local3.fX);
_local3.vY = (_local3.vY + _local3.fY);
_local3.fX = (_local3.fX + (((Math.random() * 0.2) - 0.1) + (_local3.vX * 0.01)));
_local3.fY = (_local3.fY + (((Math.random() * 0.2) - 0.1) + (_local3.vY * 0.01)));
_local4 = _local3.localToGlobal(new Point());
if ((((((((_local4.x > stage.stageWidth)) || ((_local4.x < 0)))) || ((_local4.y > stage.stageHeight)))) || ((_local4.y < 0)))){
_local3.alpha = (_local3.alpha - 0.1);
};
if (_local3.alpha <= 0){
_local3.graphics.clear();
_local3.parent.removeChild(_local3);
GLOW_CLIPS.splice(_local2, 1);
_local2--;
_local1--;
};
_local2++;
};
}
public function drawOuterLight(_arg1:Graphics, _arg2:Object){
_arg1.moveTo(_arg2.top.x, _arg2.top.y);
_arg1.curveTo(_arg2.rightTop.x, _arg2.rightTop.y, _arg2.right.x, _arg2.right.y);
_arg1.curveTo(_arg2.rightBottom.x, _arg2.rightBottom.y, _arg2.bottom.x, _arg2.bottom.y);
_arg1.curveTo(_arg2.left.x, _arg2.left.y, _arg2.top.x, _arg2.top.y);
}
public function updateSparkles(){
var _local1:int;
var _local2:int;
var _local3:Object;
var _local4:Graphics;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local2 = SPARKLES.length;
_local4 = SPARKLE_CLIP.graphics;
_local4.clear();
_local1 = 0;
while (_local1 < _local2) {
_local3 = SPARKLES[_local1];
_local3.time++;
if (_local3.time > (_local3.startFrame + _local3.duration)){
SPARKLES.splice(_local1, 1);
_local2--;
_local1--;
} else {
if (_local3.time > _local3.startFrame){
_local3.vY = (_local3.vY + SPARKLE_GRAVITY);
_local3.vY = ((_local3.vY)>SPARKLE_MAX_VY) ? SPARKLE_MAX_VY : _local3.vY;
_local3.x = (_local3.x + _local3.vX);
_local3.y = (_local3.y + _local3.vY);
};
drawSparkle(_local4, _local3);
};
_local1++;
};
_local2 = WAND_SPARKLES.length;
_local1 = 0;
while (_local1 < _local2) {
_local3 = WAND_SPARKLES[_local1];
_local3.time++;
_local5 = (sylvia.belly.x - _local3.x);
_local6 = (sylvia.belly.y - _local3.y);
_local7 = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
_local8 = Math.sqrt(((_local3.vX * _local3.vX) + (_local3.vY * _local3.vY)));
if ((((_local7 < _local8)) || ((_local3.time > (_local3.startFrame + _local3.duration))))){
WAND_SPARKLES.splice(_local1, 1);
_local2--;
_local1--;
} else {
_local7 = (1 / _local7);
if (_local3.time > _local3.startFrame){
_local3.vX = (_local3.vX + ((_local5 * _local7) * 2));
_local3.vY = (_local3.vY + ((_local6 * _local7) * 2));
_local3.x = (_local3.x + _local3.vX);
_local3.y = (_local3.y + _local3.vY);
};
drawSparkle(_local4, _local3);
};
_local1++;
};
}
public function updateElastic(){
var _local1:int;
var _local2:int;
_local2 = ELASTIC_LIST.length;
_local1 = 0;
while (_local1 < _local2) {
updateElasticClip(ELASTIC_LIST[_local1]);
_local1++;
};
}
public function move3D(){
var _local1:int;
var _local2:int;
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local2 = ENVIRON_ELEMENTS.length;
_local4 = (1 / sylvia.scaleX);
_local5 = ((sylvia.x - ENVIRON_X) * _local4);
_local6 = ((sylvia.y - ENVIRON_Y) * _local4);
_local1 = 0;
while (_local1 < _local2) {
_local3 = ENVIRON_ELEMENTS[_local1];
_local3.clip.x = (_local3.x + (_local3.propX * _local5));
_local3.clip.y = (_local3.y + (_local3.propY * _local6));
_local1++;
};
}
public function drawOuterLine(_arg1:Graphics, _arg2:Object){
_arg1.moveTo(_arg2.top.x, _arg2.top.y);
_arg1.curveTo(_arg2.rightTop.x, _arg2.rightTop.y, _arg2.right.x, _arg2.right.y);
_arg1.curveTo(_arg2.rightBottom.x, _arg2.rightBottom.y, _arg2.bottom.x, _arg2.bottom.y);
}
public function handFrame(){
var _local1:Array;
var _local2:Number;
var _local3:Number;
var _local4:Number;
if (!hand_mc.visible){
return;
};
_local1 = getHandSpin();
Algorithms.updateHand(hand_mc, sylvia.mouseX, sylvia.mouseY, handSpin, _local1, handLimits);
_local2 = ((_local1[0] / Math.PI) * 0.5);
_local3 = ((_local1[1] / Math.PI) * 0.5);
_local4 = ((belly.getSize(0) - 1) / (FINAL_SIZE - 1));
if (_local1[5] == 3){
HAND_WEIGHT = ((-0.25 * (_local1[4] - 1)) * _local4);
} else {
HAND_WEIGHT = 0;
};
if (Math.abs(_local2) > 1){
trace(_local2);
};
if (Math.abs(_local3) > 1){
trace(_local3);
};
BELLY_DEF_X[2] = (_local2 * 0.05);
BELLY_DEF_Y[2] = (_local3 * 0.05);
if (((!(handPressed)) || ((((_local1[4] == _local1[3])) && ((_local1[4] == 0)))))){
} else {
if (((!(expression.reacting)) || (!((expression.state == "feel"))))){
expression.endReact();
expression.react("feel", 5);
if (Math.random() < 0.15){
switch (_local1[5]){
case 1:
case 2:
speech.say(BREAST_RUB_PHRASES[Math.floor((Math.random() * BREAST_RUB_PHRASES.length))]);
break;
case 3:
if (_local4 < 0.1){
speech.say("Aah... You want my belly to grow, right?");
} else {
speech.say(BELLY_RUB_PHRASES[Math.floor((Math.random() * BELLY_RUB_PHRASES.length))]);
};
break;
};
};
} else {
expression.interruptible = true;
expression.react("feel", 5);
if (((((!(speech.speaking)) && ((Math.random() < 0.01)))) && ((_local4 > 0.25)))){
switch (_local1[5]){
case 1:
case 2:
speech.say(BREAST_RUB_PHRASES[Math.floor((Math.random() * BREAST_RUB_PHRASES.length))]);
break;
case 3:
speech.say(BELLY_RUB_PHRASES[Math.floor((Math.random() * BELLY_RUB_PHRASES.length))]);
break;
};
};
};
};
}
public function attach(_arg1:MovieClip, _arg2:MovieClip, _arg3:Array=null){
var _local4:Point;
var _local5:Point;
_local4 = _arg1.localToGlobal(new Point());
_local5 = _arg2.globalToLocal(_local4);
if (_arg3 == null){
_arg3 = [];
};
ATTACH_LIST[ATTACH_LIST.length] = {mc:_arg1, par:_arg2, point:_local5, props:_arg3};
}
public function drawingShape(_arg1:Event){
shapeClip.graphics.lineTo(stage.mouseX, stage.mouseY);
shapePoints[shapePoints.length] = {x:stage.mouseX, y:stage.mouseY};
}
public function stopShapeDrawing(_arg1:Event){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, drawingShape);
stage.removeEventListener(MouseEvent.MOUSE_UP, stopShapeDrawing);
determineShapeAction();
}
public 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(stage);
_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 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(stage);
_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 function resizeStage(_arg1:Event){
sylvia.scaleX = (sylvia.scaleY = 1);
Algorithms.adjustScreen(sylvia, sylvia.rect);
move3D();
plus_mc.x = (zero_mc.x = (minus_mc.x = zoomXDist));
minus_mc.y = (stage.stageHeight + zoomYDist);
zero_mc.y = (minus_mc.y + zoomSeparationDist);
plus_mc.y = (zero_mc.y + zoomSeparationDist);
wand_mc.x = (stage.stageWidth + wandXDist);
wand_mc.y = (stage.stageHeight + wandYDist);
hand_tool_mc.x = (stage.stageWidth + handXDist);
hand_tool_mc.y = (stage.stageHeight + handYDist);
speech_mc.x = (stage.stageWidth + textXDist);
speech_mc.y = textYDist;
CENTER_CLIP.x = (stage.stageWidth * 0.5);
CENTER_CLIP.y = (stage.stageHeight * 0.5);
}
public function getOuterKick(_arg1:Object):Object{
var _local2:Point;
var _local3:Point;
var _local4:Point;
var _local5:Point;
var _local6:Point;
var _local7:Point;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Matrix;
_local2 = new Point(0, -1);
_local3 = new Point(0, -1);
_local4 = new Point(0.5, 0);
_local5 = new Point(-0.5, 0);
_local6 = new Point(0.5, -0.5);
_local7 = new Point(0.5, 0.5);
_local8 = _arg1.size;
_local9 = _arg1.size;
_local2.y = (_local2.y * _local8);
_local3.y = -(_local2.y);
_local4.x = (_local4.x * _local9);
_local5.x = (_local5.x * _local9);
_local6.x = (_local6.x * _local9);
_local7.x = _local6.x;
_local6.y = (_local6.y * _local8);
_local7.y = -(_local6.y);
_local10 = Math.cos(_arg1.angle);
_local11 = Math.sin(_arg1.angle);
_local12 = new Matrix(_local10, _local11, -(_local11), _local10, _arg1.point.x, _arg1.point.y);
_local2 = _local12.transformPoint(_local2);
_local3 = _local12.transformPoint(_local3);
_local4 = _local12.transformPoint(_local4);
_local5 = _local12.transformPoint(_local5);
_local6 = _local12.transformPoint(_local6);
_local7 = _local12.transformPoint(_local7);
return ({top:_local2, bottom:_local3, left:_local5, right:_local4, rightTop:_local6, rightBottom:_local7});
}
public function generateSparkles(_arg1:int=1, _arg2:int=0, _arg3:Number=1, _arg4:Number=0.5){
var _local5:int;
var _local6:Point;
return;
}
public function mDown(_arg1:Event){
if (DISABLED){
return;
};
if (isDown[Keyboard.SPACE]){
startShapeDrawing();
return;
};
if (WAND != null){
return;
};
if (hittingSylvia(new Point(stage.mouseX, stage.mouseY))){
if (sylvia.head.hitTestPoint(stage.mouseX, stage.mouseY, true)){
expression.react("speak");
if ((((((MAGIC_PHRASE_POS == (MAGIC_PHRASE_LEN - 1))) && ((belly.getMaxSize(0) < FINAL_SIZE)))) && (1))){
belly.maxSize = FINAL_SIZE;
speech.say("So...| What are you waiting for? Keep on going.");
MAGIC_PHRASE_POS++;
} else {
speech.interruptible = true;
speech.say(MAGIC_PHRASES[MAGIC_PHRASE_POS++]);
};
speech.interruptible = false;
MAGIC_PHRASE_POS = (MAGIC_PHRASE_POS % MAGIC_PHRASE_LEN);
};
if (!speech.speaking){
if (sylvia.arm1.hitTestPoint(stage.mouseX, stage.mouseY, true)){
speech.say("I'm sorry to say, I'm hardly animated at all.| Look at my arm.| It never moves.| Almost everything you see here is moving through code.");
} else {
if (sylvia.wing1.hitTestPoint(stage.mouseX, stage.mouseY, true)){
speech.say("My wings look like an insect's wings, right?");
} else {
if (((sylvia.hair1.hitTestPoint(stage.mouseX, stage.mouseY, true)) || (sylvia.hair2.hitTestPoint(stage.mouseX, stage.mouseY, true)))){
speech.say("I have beautiful hair. It's colorful.");
} else {
if (((((((((sylvia.arm2.hitTestPoint(stage.mouseX, stage.mouseY, true)) && (!(sylvia.body.hitTestPoint(stage.mouseX, stage.mouseY, true))))) && (!(sylvia.belly.hitTestPoint(stage.mouseX, stage.mouseY, true))))) && (!(sylvia.breast2.hitTestPoint(stage.mouseX, stage.mouseY, true))))) && ((Math.random() < 0.2)))){
speech.say("The keyboard might be useful here...| but don't press the Enter Key!");
};
};
};
};
};
return;
};
if (hittingButtons(stage.mouseX, stage.mouseY)){
return;
};
oldMX = stage.mouseX;
oldMY = stage.mouseY;
oldX = sylvia.x;
oldY = sylvia.y;
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveStage, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, dropStage, false, 0, true);
stage.addEventListener(Event.MOUSE_LEAVE, dropStage, false, 0, true);
}
public function startShapeDrawing(){
stage.addChild(shapeClip);
shapeClip.graphics.clear();
shapeClip.graphics.lineStyle(2, 0xFFFFFF);
shapeClip.graphics.moveTo(stage.mouseX, stage.mouseY);
shapePoints.length = 0;
shapePoints[shapePoints.length] = {x:stage.mouseX, y:stage.mouseY};
stage.addEventListener(MouseEvent.MOUSE_MOVE, drawingShape, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, stopShapeDrawing, false, 0, true);
}
public function getHandSpin():Array{
var _local1:MovieClip;
var _local2:int;
var _local3:Number;
var _local4:Object;
var _local5:Point;
var _local6:Point;
var _local7:Point;
var _local8:Object;
var _local9:Object;
var _local10:Point;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Array;
_local1 = null;
_local2 = 0;
_local3 = 0;
if (!handPressed){
return ([0, 0, 0, 0, 0, 0]);
};
if (sylvia.breast1.hitTestPoint(stage.mouseX, stage.mouseY, true)){
_local1 = sylvia.breast1.ellipse;
_local2 = 1;
} else {
if (sylvia.breast2.hitTestPoint(stage.mouseX, stage.mouseY, true)){
_local1 = sylvia.breast2.ellipse;
_local2 = 2;
} else {
if (sylvia.belly.hitTestPoint(stage.mouseX, stage.mouseY, true)){
_local1 = sylvia.belly.ellipse;
_local2 = 3;
};
};
};
if (_local1 == null){
return ([0, 0, 0, 0, 0, 0]);
};
if (_local1 == sylvia.belly.ellipse){
_local3 = ((belly.getSize(0) - 1) / (FINAL_SIZE - 1));
} else {
_local3 = 1;
};
_local4 = Geometry.getEllipse(_local1);
_local5 = new Point(_local4.x, _local4.y);
_local6 = new Point(_local4.radius, 0);
_local7 = new Point(0, (_local4.radius * _local4.excentricity));
_local8 = Geometry.rotate(_local4.rotation, _local6.x, _local6.y);
_local9 = Geometry.rotate(_local4.rotation, _local7.x, _local7.y);
_local6 = _local1.parent.localToGlobal(new Point(_local8.x, _local8.y));
_local7 = _local1.parent.localToGlobal(new Point(_local9.x, _local9.y));
_local5 = _local1.parent.localToGlobal(_local5);
_local10 = sylvia.localToGlobal(new Point(hand_mc.x, hand_mc.y));
_local11 = Math.min(Point.distance(_local6, _local5), Point.distance(_local7, _local5));
_local12 = Point.distance(_local10, _local5);
_local13 = Math.atan2((_local10.y - _local5.y), (_local10.x - _local5.x));
_local14 = (_local12 / _local11);
_local15 = (Math.cos(_local13) * _local14);
_local16 = (Math.sin(_local13) * _local14);
_local17 = (((_local16 * _local15))<0) ? -1 : 1;
_local18 = Math.atan((_local16 / _local15));
_local19 = ((Math.PI * 0.25) - Math.abs(((Math.PI * 0.25) - Math.abs(_local18))));
_local20 = (((_local17 * _local19) * Math.PI) * 0.25);
_local21 = [((_local15 * Math.PI) * 0.5), ((_local16 * Math.PI) * 0.5), _local20, _local15, _local16, _local2];
_local21[0] = Geometry.interpolateAngle(initHandSpin[0], _local21[0], _local3);
_local21[1] = Geometry.interpolateAngle(initHandSpin[1], _local21[1], _local3);
_local21[2] = Geometry.interpolateAngle(initHandSpin[2], _local21[2], _local3);
return (_local21);
}
public function drawOuterShade(_arg1:Graphics, _arg2:Object, _arg3:Number, _arg4:Number){
if (_arg3 >= Math.SQRT1_2){
_arg1.moveTo(_arg2.top.x, _arg2.top.y);
_arg1.curveTo(_arg2.bottom.x, _arg2.bottom.y, _arg2.right.x, _arg2.right.y);
_arg1.curveTo(_arg2.rightBottom.x, _arg2.rightBottom.y, _arg2.bottom.x, _arg2.bottom.y);
_arg1.curveTo(_arg2.left.x, _arg2.left.y, _arg2.top.x, _arg2.top.y);
} else {
if (_arg3 <= -(Math.SQRT1_2)){
_arg1.moveTo(_arg2.bottom.x, _arg2.bottom.y);
_arg1.curveTo(_arg2.top.x, _arg2.top.y, _arg2.right.x, _arg2.right.y);
_arg1.curveTo(_arg2.rightTop.x, _arg2.rightTop.y, _arg2.top.x, _arg2.top.y);
_arg1.curveTo(_arg2.left.x, _arg2.left.y, _arg2.bottom.x, _arg2.bottom.y);
} else {
if (_arg4 > 0){
drawOuterLight(_arg1, _arg2);
};
};
};
}
public function determineShapeAction(){
var _local1:String;
shapePoints = Algorithms.simplifyPointsList(shapePoints);
_local1 = Algorithms.pointsToShape(shapePoints).join("");
switch (_local1){
case "urdl":
case "rdlu":
case "dlur":
case "lurd":
case "uldr":
case "ldru":
case "drul":
case "ruld":
speech.interruptible = true;
speech.say("Nice rectangle magic! This is pretty big.");
if (EXPAND_PHRASE < 5){
EXPAND_PHRASE = 5;
};
belly.size = MAX_SIZE;
break;
case "lef":
case "efl":
case "fle":
case "hgr":
case "rhg":
case "grh":
if (EXPAND_PHRASE < 8){
EXPAND_PHRASE = 8;
};
speech.say("What special magic! I feel huge!");
belly.size = (belly.maxSize = FINAL_SIZE);
if (!CENTER_CLIP.parent){
enableComplete();
};
break;
case "lfe":
case "fel":
case "elf":
case "ghr":
case "rgh":
case "hrg":
speech.say("Ooh... You put me back to normal.");
belly.size = 1;
break;
case "efgh":
case "fghe":
case "ghef":
case "hefg":
case "gfeh":
case "fehg":
case "ehgf":
case "hgfe":
if (!BEVEL_ENABLED){
speech.say("Oh, are you preparing your green spell?");
BEVEL_ENABLED = true;
};
break;
case "rgr":
case "lel":
if (!SPEED_ENABLED){
speech.say("So you want to use yellow magic to speed it up?");
SPEED_ENABLED = true;
};
break;
case "ufu":
case "dhd":
if (belly.getMaxSize(0) < FINAL_SIZE){
speech.say("So you can make my belly grow very big?");
belly.maxSize = FINAL_SIZE;
};
break;
case "rgrh":
case "grhr":
case "rhrg":
case "hrgr":
case "lfle":
case "flel":
case "lelf":
case "elfl":
if (((!(CONSTANT_EXPANSION)) || ((belly.getSize(0) == belly.getMaxSize(0))))){
speech.say("Oh, I'm growing on my own. When will it stop?");
CONSTANT_EXPANSION = true;
};
break;
default:
break;
};
if ((((belly.getSize(0) > TOP_BREAK_FRAME)) && (!(TOP_BROKEN)))){
breakTop();
};
shapeClip.graphics.clear();
shapeClip.parent.removeChild(shapeClip);
}
public function blushOn(){
blushMode = 1;
}
public function getInnerKick(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Object):Object{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Point;
var _local9:Point;
var _local10:Point;
var _local11:Point;
var _local12:Point;
var _local13:Point;
var _local14:Point;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Matrix;
_local5 = 0.5;
_local6 = (Math.SQRT1_2 - 0.5);
_local7 = (_local5 + (2 * _local6));
_local8 = new Point(-1, 0);
_local9 = new Point(1, 0);
_local10 = new Point(0, 1);
_local11 = new Point(0, -1);
_local12 = new Point((_arg4.vTilt * 2), (_arg4.hTilt * 2));
_local13 = new Point(_local7, _local7);
_local14 = new Point(-(_local7), _local7);
_local12.y = Math.abs(_arg4.vTilt);
_local12.x = _arg4.hTilt;
_local15 = (_arg3 * _arg4.scaleX);
_local16 = (_arg3 * _arg4.scaleY);
_local9.x = (_local9.x * _local15);
_local8.x = -(_local9.x);
_local10.y = (_local10.y * _local16);
_local11.y = (_local11.y * _local16);
_local13.x = (_local13.x * _local15);
_local13.y = (_local13.y * _local16);
_local14.x = -(_local13.x);
_local14.y = _local13.y;
_local12.y = (_local12.y * _local16);
_local12.x = (_local12.x * _local15);
_local17 = Math.tan(_arg4.skewAngleX);
_local18 = Math.tan(_arg4.skewAngleY);
_local19 = new Matrix(1, _local18, _local17, 1, _arg1, _arg2);
_local8 = _local19.transformPoint(_local8);
_local9 = _local19.transformPoint(_local9);
_local10 = _local19.transformPoint(_local10);
_local11 = _local19.transformPoint(_local11);
_local12 = _local19.transformPoint(_local12);
_local14 = _local19.transformPoint(_local14);
_local13 = _local19.transformPoint(_local13);
return ({left:_local8, right:_local9, bottom:_local10, top:_local11, center:_local12, midLeft:_local14, midRight:_local13});
}
public function drawSparkle(_arg1:Graphics, _arg2:Object){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:uint;
if (_arg2.time < _arg2.startFrame){
return;
};
_local3 = ((_arg2.time - _arg2.startFrame) / _arg2.duration);
_local5 = (_arg2.time - _arg2.startFrame);
_local6 = (_arg2.peakTime * _arg2.duration);
if (_local3 <= _arg2.peakTime){
_local7 = _local6;
_local4 = (1 - ((_local6 - _local5) / _local7));
} else {
_local7 = (_arg2.duration - _local6);
_local4 = (1 - ((_local5 - _local6) / _local7));
};
_local8 = (_local4 * _arg2.maxSize);
_local9 = (_arg2.startSpin + (_local3 * (_arg2.endSpin - _arg2.startSpin)));
_local10 = blendColor(_arg2.color, 0xFFFFFF, _local4);
_arg1.beginFill(_local10);
Drawing.drawSparkle(_arg1, _local8, 4, 0.15, _local9, _arg2.x, _arg2.y);
_arg1.endFill();
}
public function zooming(_arg1:Event){
sylvia.scaleY = (sylvia.scaleX = (sylvia.scaleX + zoomDir));
if (sylvia.scaleX > maxZoom){
sylvia.scaleX = maxZoom;
sylvia.scaleY = sylvia.scaleX;
};
Algorithms.adjustScreen(sylvia, sylvia.rect);
move3D();
}
public function endComplete(_arg1:Boolean=false){
DISABLED = false;
blushOff();
stage.removeEventListener(Event.ENTER_FRAME, completing);
if (GLOW_CLIP.parent){
GLOW_CLIP.parent.removeChild(GLOW_CLIP);
GLOW_CLIP.graphics.clear();
};
COMPLETING = false;
if (!_arg1){
expression.setState("normal", true);
speech.say("Ah...| Thank-you for helping me.|| Thanks to you, our forest will continue to have lots of fairies.");
};
}
public 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 = PARENT.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;
}
public function hittingButtons(_arg1:Number, _arg2:Number):Boolean{
if (plus_mc.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
if (minus_mc.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
if (zero_mc.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
if (wand_mc.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
if (hand_tool_mc.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
return (false);
}
public function wandFrame(_arg1:Event){
var _local2:Number;
var _local3:Number;
var _local4:Point;
var _local5:ColorTransform;
var _local6:uint;
var _local7:uint;
var _local8:uint;
_local2 = (stage.mouseX / stage.stageWidth);
_local3 = (stage.mouseY / stage.stageHeight);
_local4 = sylvia.globalToLocal(new Point(WAND.x, WAND.y));
_local5 = WAND.glow.transform.colorTransform;
_local6 = (_local5.redMultiplier * 0xFF);
_local7 = (_local5.greenMultiplier * 0xFF);
_local8 = (_local5.blueMultiplier * 0xFF);
if ((((_local2 < 0.5)) && ((_local3 > 0.5)))){
wandMode = WAND_REVERT;
belly.growth = (((_local2 * 2) - 1) * BELLY_SPEED);
} else {
if ((((_local2 > 0.5)) && ((_local3 < 0.5)))){
wandMode = WAND_EXPAND;
if (expression.defaultState == "sad"){
expression.setState("normal", true);
};
belly.growth = (((_local2 * 2) - 1) * BELLY_SPEED);
if ((((belly.getSize(0) > TOP_BREAK_FRAME)) && (!(TOP_BROKEN)))){
breakTop();
expression.react("teeth", -1);
speech.say("Oh!|| It broke.");
};
} else {
if ((((_local2 < 0.5)) && ((_local3 < 0.5)))){
if (BEVEL_ENABLED){
if (!TOP_BROKEN){
breakTop();
};
generateBevel();
if (!BEVEL_ACTIVE){
BEVEL_ACTIVE = true;
expression.react("surprised", 70);
speech.say("Ooh! That's...");
};
};
belly.growth = 0;
} else {
if ((((_local2 > 0.5)) && ((_local3 > 0.5)))){
belly.growth = 0;
};
};
};
};
}
public function endZoom(_arg1:Event){
stage.removeEventListener(Event.ENTER_FRAME, zooming);
stage.removeEventListener(MouseEvent.MOUSE_UP, endZoom);
}
public function startZoom(_arg1:Event){
var _local2:MovieClip;
if (DISABLED){
return;
};
_local2 = (_arg1.currentTarget as MovieClip);
if (_local2 == plus_mc){
zoomDir = zoomScale;
} else {
if (_local2 == minus_mc){
zoomDir = -(zoomScale);
} else {
if (_local2 == zero_mc){
sylvia.x = ENVIRON_X;
sylvia.y = ENVIRON_Y;
sylvia.scaleX = (sylvia.scaleY = 1);
Algorithms.adjustScreen(sylvia, sylvia.rect);
move3D();
return;
};
};
};
stage.addEventListener(Event.ENTER_FRAME, zooming, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, endZoom, false, 0, true);
}
public function handUp(_arg1:Event){
handPressed = false;
HAND_WEIGHT = 0;
}
public function displayCopy(_arg1:Event){
info_txt.visible = !(info_txt.visible);
}
public function updateClothes(){
var _local1:Graphics;
updateClothesPoints(CLOTHES_POINTS);
TOP_CLIP_BACK.graphics.clear();
TOP_CLIP_FRONT2.graphics.clear();
TOP_CLIP_FRONT1.graphics.clear();
BOTTOM_CLIP_FRONT.graphics.clear();
BOTTOM_CLIP_BACK.graphics.clear();
_local1 = TOP_CLIP_FRONT1.graphics;
_local1.lineStyle(0.1);
_local1.beginFill(TOP_FILL_COLOR);
drawPointList(_local1, TOP_LEFT_POINTS, CLOTHES_POINTS);
_local1.endFill();
_local1 = TOP_CLIP_FRONT2.graphics;
_local1.lineStyle(0.1);
_local1.beginFill(TOP_FILL_COLOR);
drawPointList(_local1, TOP_RIGHT_POINTS, CLOTHES_POINTS);
_local1.endFill();
_local1 = TOP_CLIP_FRONT1.graphics;
_local1.lineStyle(0.1);
_local1.beginFill(TOP_STRAP_COLOR);
drawPointList(_local1, TOP_STRAP_LEFT_POINTS, CLOTHES_POINTS);
_local1.endFill();
_local1 = TOP_CLIP_FRONT2.graphics;
_local1.lineStyle(0.1);
_local1.beginFill(TOP_STRAP_COLOR);
drawPointList(_local1, TOP_STRAP_RIGHT_POINTS, CLOTHES_POINTS);
_local1.endFill();
if (!TOP_BROKEN){
_local1 = TOP_CLIP_FRONT1.graphics;
_local1.lineStyle(0.1);
_local1.beginFill(TOP_STRAP_COLOR);
drawPointList(_local1, TOP_STRAP_MID_POINTS, CLOTHES_POINTS);
_local1.endFill();
};
_local1 = TOP_CLIP_FRONT2.graphics;
_local1.lineStyle(0.1);
_local1.beginFill(TOP_STRAP_COLOR);
drawPointList(_local1, TOP_STRAP_BACK_POINTS, CLOTHES_POINTS);
_local1.endFill();
_local1 = BOTTOM_CLIP_FRONT.graphics;
_local1.lineStyle(undefined, undefined, undefined);
_local1.beginFill(TOP_FILL_COLOR);
drawPointList(_local1, BOTTOM_FRONT_POINTS, CLOTHES_POINTS);
_local1.endFill();
_local1.lineStyle(0.1);
drawPointList(_local1, BOTTOM_FRONT_POINTS, CLOTHES_POINTS, false);
_local1 = BOTTOM_CLIP_BACK.graphics;
_local1.lineStyle(undefined, undefined, undefined);
_local1.beginFill(TOP_FILL_COLOR);
drawPointList(_local1, BOTTOM_BACK_POINTS, CLOTHES_POINTS);
_local1.endFill();
_local1.lineStyle(0.1);
drawPointList(_local1, BOTTOM_BACK_POINTS, CLOTHES_POINTS, false);
}
public function speechFinished(_arg1:Event){
sylvia.head.mouth.gotoAndPlay(expression.curState[mouthID][Expression.FRAME]);
if (expression.timer < 0){
expression.endReact();
};
speech.interruptible = true;
}
public function setClothesPoint(_arg1:Point, _arg2:MovieClip){
var _local3:Point;
var _local4:Point;
_local3 = _arg2.localToGlobal(new Point());
_local4 = sylvia.globalToLocal(_local3);
_arg1.x = _local4.x;
_arg1.y = _local4.y;
}
public function updateKicks(){
var _local1:int;
var _local2:int;
var _local3:Object;
var _local4:Number;
var _local5:Object;
var _local6:Number;
var _local7:Number;
_local2 = KICKS.length;
KICK_FILL_CLIP.graphics.clear();
KICK_LINE_CLIP.graphics.clear();
_local5 = Geometry.getEllipse(ELLIPSE_CLIP);
_local1 = 0;
while (_local1 < _local2) {
_local3 = KICKS[_local1];
_local4 = (_local3.time / _local3.duration);
_local3.angle = (_local3.startAngle + (_local4 * (_local3.endAngle - _local3.startAngle)));
_local3.distance = (_local3.startRadius + (_local4 * (_local3.endRadius - _local3.startRadius)));
_local3.point = Geometry.pointFromEllipse(_local5, _local3);
_local6 = (KICK_PEAK_TIME * _local3.duration);
if (_local3.time < _local6){
_local7 = (1 - ((_local6 - _local3.time) / _local6));
} else {
_local7 = (1 - ((_local3.time - _local6) / (_local3.duration - _local6)));
};
_local3.size = ((_local7 * _local3.maxSize) * _local5.radius);
_local3.time++;
if (_local3.time > _local3.duration){
KICKS.splice(_local1, 1);
_local1--;
_local2--;
} else {
drawKick(_local3);
};
_local1++;
};
if (!KICKS.length){
return;
};
}
public function kDown(_arg1:KeyboardEvent){
if (((!(isDown[Keyboard.ENTER])) && ((_arg1.keyCode == Keyboard.ENTER)))){
resetAll();
};
isDown[_arg1.keyCode] = true;
}
public function wandEffect(_arg1:Event){
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:ColorTransform;
_local2 = (stage.stageWidth * 0.25);
_local3 = (stage.stageWidth * 0.75);
_local4 = (stage.stageHeight * 0.25);
_local5 = (stage.stageHeight * 0.75);
_local6 = (_local3 - _local2);
_local7 = (_local5 - _local4);
_local8 = ((stage.mouseX - _local2) / _local6);
_local9 = ((stage.mouseY - _local4) / _local7);
if (_local8 < 0){
_local8 = 0;
};
if (_local8 > 1){
_local8 = 1;
};
if (_local9 < 0){
_local9 = 0;
};
if (_local9 > 1){
_local9 = 1;
};
_local10 = _local8;
_local11 = (((1 - _local8) * (1 - _local9)) + (_local8 * _local9));
_local12 = ((1 - _local8) * _local9);
if ((((_local8 == 0.5)) && ((_local9 == 0.5)))){
_local12 = 1;
_local11 = _local12;
_local10 = _local11;
};
_local13 = new ColorTransform(_local10, _local11, _local12, WAND_ALPHA);
WAND.glow.transform.colorTransform = _local13;
}
public function completing(_arg1:Event){
var _local2:Number;
var _local3:MovieClip;
var _local4:Object;
var _local5:Point;
var _local6:int;
_local2 = ((belly.getSize(0) - 1) / (FINAL_SIZE - 1));
_local3 = sylvia.belly.ellipse;
_local4 = Geometry.getEllipse(_local3);
_local5 = new Point(_local4.x, _local4.y);
_local5 = _local3.parent.localToGlobal(_local5);
_local5 = sylvia.globalToLocal(_local5);
GLOW_CLIP.x = _local5.x;
GLOW_CLIP.y = _local5.y;
GLOW_CLIP.alpha = _local2;
GLOW_CLIP.scaleX = (GLOW_CLIP.scaleY = (0.2 + (_local2 * 0.8)));
belly.size = (belly.getSize(0) - 2);
_local6 = belly.getSize(0);
if (_local6 <= 1){
endComplete();
} else {
if (!(_local6 % 32)){
createGlow();
};
};
}
public function enableComplete(){
if (CENTER_CLIP.parent){
stage.removeChild(CENTER_CLIP);
} else {
stage.addChild(CENTER_CLIP);
};
}
public function breakTop(){
var _local1:int;
BREASTS_TIGHT = !(BREASTS_TIGHT);
TOP_BROKEN = !(BREASTS_TIGHT);
if (!BREASTS_TIGHT){
_local1 = 9;
while (_local1 <= 18) {
CLOTHES_POINTS[_local1].x[0] = 20;
_local1++;
};
};
}
public function moveHand(_arg1:Event){
hand_mc.x = sylvia.mouseX;
hand_mc.y = sylvia.mouseY;
}
public function hittingSylvia(_arg1:Point){
if (sylvia.body.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.belly.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.breast1.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.breast2.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.wing1.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.leg1.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.leg2.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.arm1.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.arm2.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.tail.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.hair1.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
if (sylvia.hair2.hitTestPoint(_arg1.x, _arg1.y, true)){
return (true);
};
return (false);
}
public function resetClothes(){
resetClothesList(CLOTHES_POINTS);
}
}
}//package sylvia_fla
Section 20
//speech_mc_44 (sylvia_fla.speech_mc_44)
package sylvia_fla {
import flash.display.*;
import flash.text.*;
public dynamic class speech_mc_44 extends MovieClip {
public var _mc:MovieClip;
public var _txt:TextField;
}
}//package sylvia_fla
Section 21
//sylvia_1 (sylvia_fla.sylvia_1)
package sylvia_fla {
import flash.display.*;
public dynamic class sylvia_1 extends MovieClip {
public var leg1:MovieClip;
public var leg2:MovieClip;
public var vine2:MovieClip;
public var bg:MovieClip;
public var bgLeaves:MovieClip;
public var tail:MovieClip;
public var arm2:MovieClip;
public var hand_mc:MovieClip;
public var plant:MovieClip;
public var arm1:MovieClip;
public var breast1:MovieClip;
public var hair2:MovieClip;
public var wing1:MovieClip;
public var leaf1:MovieClip;
public var leaf4:MovieClip;
public var breast2:MovieClip;
public var body:MovieClip;
public var leaf3:MovieClip;
public var grass:MovieClip;
public var leaf2:MovieClip;
public var vine3:MovieClip;
public var vine4:MovieClip;
public var vine1:MovieClip;
public var hair1:MovieClip;
public var belly:MovieClip;
public var tree:MovieClip;
public var head:MovieClip;
}
}//package sylvia_fla
Section 22
//Wand (Wand)
package {
import flash.display.*;
public dynamic class Wand extends MovieClip {
public var glow:MovieClip;
}
}//package