Section 1
//Algorithms (as3.Algorithms)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Algorithms {
public static function insertIntoArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (false);
};
_local3++;
};
_arg2.push(_arg1);
return (true);
}
public static function orderPointsClockwise(_arg1:Array):Array{
var _local2:int;
var _local3:Object;
var _local4:Array;
var _local5:Array;
var _local6:Number;
var _local7:int;
var _local8:int;
_local3 = new Object();
_local3.x = (_local3.y = 0);
_local2 = 0;
while (_local2 < _arg1.length) {
_local3.x = (_local3.x + _arg1[_local2].x);
_local3.y = (_local3.y + _arg1[_local2].y);
_local2++;
};
_local3.x = (_local3.x / _arg1.length);
_local3.y = (_local3.y / _arg1.length);
_local4 = new Array(_arg1.length);
_local2 = 0;
while (_local2 < _arg1.length) {
_local4[_local2] = Math.atan2((_arg1[_local2].y - _local3.y), (_arg1[_local2].x - _local3.x));
_local2++;
};
_local5 = new Array();
_local2 = 0;
while (_local2 < _arg1.length) {
_local6 = Infinity;
_local7 = -1;
_local8 = 0;
while (_local8 < _arg1.length) {
if (((!(isNaN(_local4[_local8]))) && ((_local4[_local8] < _local6)))){
_local7 = _local8;
_local6 = _local4[_local8];
};
_local8++;
};
_local5.push(_arg1[_local7]);
_local4[_local7] = NaN;
_local2++;
};
return (_local5);
}
public static function pointsToShape(_arg1:Array):Array{
var _local2:Array;
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:*;
_local2 = new Array();
_local6 = 0;
_local7 = 0;
while (_local7 < (_arg1.length - 1)) {
_local3 = new Object();
_local4 = (_arg1[(_local7 + 1)].x - _arg1[_local7].x);
_local5 = (_arg1[(_local7 + 1)].y - _arg1[_local7].y);
_local3.length = Math.floor(_pointShapeDistance(_arg1[_local7], _arg1[(_local7 + 1)]));
if (Math.abs(_local4) > (Math.abs(_local5) * 3)){
_local3.dir = ((_local4 > 0)) ? "r" : "l";
} else {
if (Math.abs(_local5) > (Math.abs(_local4) * 3)){
_local3.dir = ((_local5 > 0)) ? "d" : "u";
} else {
_local3.dir = ((_local5 > 0)) ? "d" : "u";
_local3.dir = (_local3.dir + ((_local4 > 0)) ? "r" : "l");
};
};
_local2.push(_local3);
_local6 = Math.max(_local6, _local3.length);
_local7++;
};
_local7 = 0;
while (_local7 < _local2.length) {
if (_local2[_local7].length < (_local6 / 5)){
_local2.splice(_local7, 1);
_local7--;
};
if ((((_local7 > 0)) && ((_local2[_local7].dir == _local2[(_local7 - 1)].dir)))){
_local2[(_local7 - 1)].length = (_local2[(_local7 - 1)].length + _local2[_local7].length);
_local2.splice(_local7, 1);
_local7--;
};
_local7++;
};
_local7 = 0;
while (_local7 < _local2.length) {
switch (_local2[_local7].dir){
case "ur":
_local2[_local7] = "e";
break;
case "dr":
_local2[_local7] = "f";
break;
case "dl":
_local2[_local7] = "g";
break;
case "ul":
_local2[_local7] = "h";
break;
default:
_local2[_local7] = _local2[_local7].dir;
};
_local7++;
};
return (_local2);
}
public static function deform(_arg1:MovieClip, _arg2:Number, _arg3:Number){
var _local4:Matrix;
var _local5:Matrix;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Matrix;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local4 = new Matrix();
_local4.a = 1;
_local4.b = 0;
_local4.c = 0;
_local4.d = 1;
_local5 = new Matrix();
_local5.a = ((1 + (Math.abs(_arg2) * _arg1.deformDist)) - (Math.abs(_arg3) * _arg1.deformDist));
_local5.b = 0;
_local5.c = 0;
_local5.d = ((1 + (Math.abs(_arg3) * _arg1.deformDist)) - (Math.abs(_arg2) * _arg1.deformDist));
_local6 = Math.sqrt(((_arg2 * _arg2) + (_arg3 * _arg3)));
_local7 = 0;
_local8 = (Boolean(((_arg2 * _arg3) < 0))) ? -1 : 1;
if (_local6){
_local10 = Math.atan2(_arg3, _arg2);
_local11 = Math.floor(((_local10 * 8) / Number((Math.PI * 2))));
_local12 = (_local10 - (((_local11 * Math.PI) * 2) / 8));
_local7 = (_local12 / Number((Math.PI * 0.25)));
if ((_local11 % 2)){
_local7 = (1 - _local7);
};
};
_local9 = new Matrix();
_local9.a = 1;
_local9.b = ((((_local8 * _local7) * _arg1.maxAngle) * _arg1.deformDist) * _local6);
_local9.c = ((((_local8 * _local7) * _arg1.maxAngle) * _arg1.deformDist) * _local6);
_local9.d = 1;
_local4.concat(_local5);
_local4.concat(_local9);
_local4.tx = _arg1.transform.matrix.tx;
_local4.ty = _arg1.transform.matrix.ty;
_arg1.transform.matrix = _local4;
}
public static function deformMatrix(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number=1){
var _local5:Matrix;
var _local6:Number;
var _local7:Matrix;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Matrix;
var _local16:Number;
var _local17:Number;
var _local18:Number;
_local5 = new Matrix();
_local5.a = 1;
_local5.b = 0;
_local5.c = 0;
_local5.d = 1;
_local6 = ((Math.abs(_arg2) - Math.abs(_arg3)) * _arg4);
_local7 = new Matrix();
_local7.a = (1 + _local6);
_local7.b = 0;
_local7.c = 0;
_local7.d = (1 - _local6);
_local8 = (Math.PI * 0.25);
_local9 = ((Math.PI * 2) / 8);
_local10 = (1 / _local9);
_local11 = (Math.sqrt(((_arg2 * _arg2) + (_arg3 * _arg3))) * _arg4);
_local12 = 0;
_local13 = (Boolean(!(((_arg2 <= 0) == (_arg3 <= 0))))) ? -1 : 1;
if (_local11){
_local16 = Math.atan2(_arg3, _arg2);
_local17 = Math.floor((_local16 * _local10));
_local18 = (_local16 - (_local17 * _local9));
_local12 = (_local18 / Number(_local8));
if ((_local17 % 2)){
_local12 = (1 - _local12);
};
};
_local14 = ((_local13)<0) ? ((-(_local12) * _local8) * _local11) : ((_local12 * _local8) * _local11);
_local15 = new Matrix();
_local15.a = 1;
_local15.b = _local14;
_local15.c = _local14;
_local15.d = 1;
_local5.concat(_local7);
_local5.concat(_local15);
_arg1.a = _local5.a;
_arg1.b = _local5.b;
_arg1.c = _local5.c;
_arg1.d = _local5.d;
}
public static function isInArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (true);
};
_local3++;
};
return (false);
}
public static function removeFromArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
_arg2.splice(_local3, 1);
return (true);
};
_local3++;
};
return (false);
}
private static function _pointShapeDistance(_arg1:Object, _arg2:Object):Number{
return (Math.sqrt((Math.pow((_arg2.x - _arg1.x), 2) + Math.pow((_arg2.y - _arg1.y), 2))));
}
public static function simplifyPointsList(_arg1:Array):Array{
var _local2:Array;
var _local3:Number;
var _local4:*;
_local2 = new Array();
_local3 = 0;
_local2.push(_arg1[0]);
_local4 = 1;
while (_local4 < (_arg1.length - 1)) {
if ((((Math.abs((_pointShapeAngle(_arg1[(_local4 + 1)], _arg1[_local4]) - _pointShapeAngle(_arg1[_local4], _arg1[(_local4 - 1)]))) >= (Math.PI / 2.5))) || ((Math.abs(_local3) >= (Math.PI / 3))))){
_local2.push(_arg1[_local4]);
_local3 = 0;
} else {
_local3 = (_local3 + (_pointShapeAngle(_arg1[(_local4 + 1)], _arg1[_local4]) - _pointShapeAngle(_arg1[_local4], _arg1[(_local4 - 1)])));
};
_local4++;
};
_local2.push(_arg1[(_arg1.length - 1)]);
return (_local2);
}
private static function _pointShapeAngle(_arg1:Object, _arg2:Object):Number{
return (Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x)));
}
public static function balancePoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:int=1):Array{
var _local8:Array;
var _local9:int;
_local8 = [_arg1, _arg2, _arg3];
_local9 = 0;
while (_local9 < _arg7) {
_local8 = [(_local8[0] + (_arg2 * _arg4)), ((_local8[1] * _arg4) + _local8[2]), ((_arg5 - _local8[0]) * _arg6)];
_local9++;
};
return (_local8);
}
public static function myGetShape(_arg1:Array):String{
var _local2:Array;
var _local3:Number;
var _local4:String;
var _local5:String;
_local2 = simplifyPointsList(_arg1);
_local5 = pointsToShape(_local2).join("");
switch (_local5){
case "d":
return ("|v");
case "u":
return ("|^");
case "ef":
case "hg":
return ("^");
case "dr":
case "lu":
return ("L");
case "ur":
case "ld":
return ("Γ");
case "ldr":
case "lur":
return ("[");
case "ufu":
case "dhd":
return ("N");
default:
return ("");
};
}
public static function updateHand(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Array, _arg5:Array, _arg6:Object){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local7 = (Math.PI * 0.5);
_arg1.x = _arg2;
_arg1.y = _arg3;
_arg4[0] = Geometry.interpolateAngle(_arg4[0], _arg5[0], 0.2);
_arg4[1] = Geometry.interpolateAngle(_arg4[1], _arg5[1], 0.2);
if (_arg5.length >= 3){
_arg4[2] = Geometry.interpolateAngle(_arg4[2], _arg5[2], 0.2);
} else {
_arg4[2] = Geometry.interpolateAngle(_arg4[2], 0, 0.2);
};
if (_arg4[0] > _local7){
_arg4[0] = _local7;
} else {
if (_arg4[0] < -(_local7)){
_arg4[0] = -(_local7);
};
};
if (_arg4[1] > _local7){
_arg4[1] = _local7;
} else {
if (_arg4[1] < -(_local7)){
_arg4[1] = -(_local7);
};
};
_local8 = Math.abs((_arg4[2] / _local7));
if (_arg4[0] < 0){
_arg1.addChildAt(_arg1.thumb_mc, 0);
} else {
_arg1.addChildAt(_arg1.thumb_mc, (_arg1.numChildren - 1));
};
if (_arg4[1] > 0){
_arg1.addChildAt(_arg1.wrist_mc, 0);
} else {
_arg1.addChildAt(_arg1.wrist_mc, (_arg1.numChildren - 1));
};
_local9 = (_arg4[0] / _local7);
_local10 = (_arg4[1] / _local7);
_local11 = Math.abs(_local9);
_local12 = Math.abs(_local10);
_local13 = ((((_local9 * _local10) * _local7) * (1 - _local8)) + (_local8 * _arg4[2]));
_arg1.glove_mc.scaleX = (_arg6.glove.max.x - (((_arg6.glove.max.x - _arg6.glove.min.x) * _local11) * (1 - _local12)));
_arg1.wrist_mc.scaleX = (_arg6.wrist.max.x - (((_arg6.wrist.max.x - _arg6.wrist.min.x) * _local11) * (1 - _local12)));
_arg1.thumb_mc.x = (_arg6.orig.thumbX + (((_arg6.end.thumbX - _arg6.orig.thumbX) * _local11) * (1 - _local12)));
_arg1.glove_mc.scaleY = (_arg6.glove.max.y - (((_arg6.glove.max.y - _arg6.glove.min.y) * _local12) * (1 - _local11)));
_arg1.thumb_mc.scaleY = _arg1.glove_mc.scaleY;
_arg1.wrist_mc.scaleY = (_arg6.wrist.min.y + (((_arg6.wrist.max.y - _arg6.wrist.min.y) * _local12) * (1 - _local11)));
_arg1.wrist_mc.y = (_arg6.orig.wristY + (((_arg6.end.wristY - _arg6.orig.wristY) * _local12) * (1 - _local11)));
_arg1.rotation = (_arg4[2] * Geometry.RAD_TO_DEG);
}
public static function liquidInPolygon(_arg1:Number, _arg2:Array, _arg3:Number, _arg4:Number):Array{
var _local5:Number;
var _local6:Number;
var _local7:Object;
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Array;
var _local13:Array;
var _local14:Array;
var _local15:Point;
var _local16:Number;
var _local17:Number;
var _local18:int;
_local5 = -(Infinity);
_local6 = Infinity;
_local8 = 0;
while (_local8 < _arg2.length) {
_local7 = Geometry.rotate(_arg1, _arg2[_local8].x, _arg2[_local8].y);
_arg2[_local8].x = _local7.x;
_arg2[_local8].y = _local7.y;
_local5 = Math.max(_arg2[_local8].y, _local5);
_local6 = Math.min(_arg2[_local8].y, _local6);
_local8++;
};
_local9 = (_arg4 * _arg3);
_local10 = 0;
_local11 = 0;
_local13 = [];
_local14 = [];
_local15 = new Point();
_local16 = Math.abs((_local5 - _local6));
_local17 = ((_local6 + _local5) * 0.5);
_local18 = 50;
do {
_local13 = Geometry.getSidePoints(_arg2, _local17);
_local14 = [];
_local8 = 0;
while (_local8 < _arg2.length) {
if (_arg2[_local8].y >= _local17){
_local14.push(_arg2[_local8]);
};
_local8++;
};
_local12 = _local13.concat(_local14);
_local12 = orderPointsClockwise(_local12);
trace("Algorithm::liquidInPolygon\nYou'll have to fix this later. Try to connect the 'sides' and 'lower' arrays coherently.\nAvoid having to use the orderPointsClockwise() function.");
_local10 = Geometry.polygonArea(_local12);
_local17 = (_local17 - ((_local16 * (_local9 - _local10)) / _arg4));
_local18--;
} while ((((Math.abs((_local10 - _local9)) > Geometry.TOLERANCE)) && ((_local18 > 0))));
_local8 = 0;
while (_local8 < _local12.length) {
_local7 = Geometry.rotate(-(_arg1), _local12[_local8].x, _local12[_local8].y);
_local12[_local8].x = _local7.x;
_local12[_local8].y = _local7.y;
_local8++;
};
return (_local12);
}
public static function hasLabel(_arg1:MovieClip, _arg2:String):Boolean{
var _local3:Array;
var _local4:FrameLabel;
var _local5:int;
_local3 = _arg1.currentLabels;
_local5 = 0;
while (_local5 < _local3.length) {
_local4 = _local3[_local5];
if (_local4.name == _arg2){
return (true);
};
_local5++;
};
return (false);
}
public static function adjustScreen(_arg1:DisplayObject, _arg2:DisplayObject){
var _local3:Stage;
var _local4:Rectangle;
if (!_arg1.stage){
return;
};
_local3 = _arg1.stage;
_local4 = _arg2.getRect(_local3);
if (_local4.width < _local3.stageWidth){
_arg1.scaleX = (_arg1.scaleX * (_local3.stageWidth / _local4.width));
_arg1.scaleY = _arg1.scaleX;
_local4 = _arg2.getRect(_local3);
};
if (_local4.height < _local3.stageHeight){
_arg1.scaleY = (_arg1.scaleY * (_local3.stageHeight / _local4.height));
_arg1.scaleX = _arg1.scaleY;
_local4 = _arg2.getRect(_local3);
};
if (_local4.x > 0){
_arg1.x = (_arg1.x - _local4.x);
_local4 = _arg2.getRect(_local3);
};
if (_local4.y > 0){
_arg1.y = (_arg1.y - _local4.y);
_local4 = _arg2.getRect(_local3);
};
if ((_local4.x + _local4.width) < _local3.stageWidth){
_arg1.x = (_arg1.x + (_local3.stageWidth - (_local4.x + _local4.width)));
_local4 = _arg2.getRect(_local3);
};
if ((_local4.y + _local4.height) < _local3.stageHeight){
_arg1.y = (_arg1.y + (_local3.stageHeight - (_local4.y + _local4.height)));
_local4 = _arg2.getRect(_local3);
};
}
public static function approximatePoint(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
}
}//package as3
Section 2
//Geometry (as3.Geometry)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Geometry {
public static const DEG_TO_RAD:Number = 0.0174532925199433;
public static const RAD_TO_DEG:Number = 57.2957795130823;
public static const TOLERANCE:Number = 1E-5;
function regularPolygonArea(_arg1:Number, _arg2:int){
var _local3:Number;
var _local4:Number;
if (_arg2 < 3){
return (0);
};
_local3 = ((Math.PI * 2) / _arg2);
_local4 = (Math.sin(_local3) * _arg1);
return ((((_local4 * _arg1) * 0.5) * _arg2));
}
public static function intersectLines(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Boolean=false):Object{
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Object;
var _local19:Boolean;
var _local20:Boolean;
_local10 = (_arg1 - _arg3);
_local11 = (_arg5 - _arg7);
_local12 = (_arg2 - _arg4);
_local13 = (_arg6 - _arg8);
_local14 = ((_arg1 * _arg4) - (_arg2 * _arg3));
_local15 = ((_arg5 * _arg8) - (_arg6 * _arg7));
_local16 = ((_local10 * _local13) - (_local12 * _local11));
if (!_local16){
return (null);
};
_local17 = (1 / _local16);
_local18 = {x:(((_local14 * _local11) - (_local10 * _local15)) * _local17), y:(((_local14 * _local13) - (_local12 * _local15)) * _local17)};
if (_arg9){
_local19 = pointInsideRect(_local18.x, _local18.y, _arg1, _arg2, _arg3, _arg4);
_local20 = pointInsideRect(_local18.x, _local18.y, _arg5, _arg6, _arg7, _arg8);
if (((!(_local19)) || (!(_local20)))){
return (null);
};
};
return (_local18);
}
public static function pointFromEllipse(_arg1:Object, _arg2:Object):Object{
var _local3:Point;
var _local4:Object;
_local3 = new Point();
_local3.x = (_arg1.x + ((_arg1.radius * Math.cos(_arg2.angle)) * _arg2.distance));
_local3.y = (_arg1.y + (((_arg1.radius * _arg1.excentricity) * Math.sin(_arg2.angle)) * _arg2.distance));
_local4 = rotate(_arg1.rotation, _local3.x, _local3.y, _arg1.x, _arg1.y);
return (new Point(_local4.x, _local4.y));
}
public static function polygonArea(_arg1:Array):Number{
var _local2:Point;
var _local3:Point;
var _local4:Number;
if (_arg1.length < 3){
return (0);
};
_local4 = 0;
return (_local4);
}
public static function getEllipse(_arg1:DisplayObject):Object{
var obj:Object;
var rect:Rectangle;
var clip = _arg1;
obj = {};
rect = clip.getRect(clip);
obj.x = clip.x;
obj.y = clip.y;
obj.radius = (-(rect.x) * clip.scaleX);
obj.rotation = ((clip.rotation * Math.PI) / 180);
obj.excentricity = (clip.scaleY / clip.scaleX);
obj.toString = function (){
return ((((((((((("[ x=" + this.x) + ", y=") + this.y) + ", radius=") + this.radius) + ", rotation=") + this.rotation) + ", excentricity=") + this.excentricity) + " ]"));
};
return (obj);
}
public static function pointToEllipse(_arg1:Object, _arg2:Object):Object{
var obj:Object;
var untranslated:Point;
var unrotated:Object;
var unexcentered:Point;
var unscaled:Point;
var point = _arg1;
var ellipse = _arg2;
obj = {};
untranslated = new Point((point.x - ellipse.x), (point.y - ellipse.y));
unrotated = rotate(-(ellipse.rotation), untranslated.x, untranslated.y);
unexcentered = new Point(unrotated.x, (unrotated.y / ellipse.excentricity));
unscaled = new Point((unexcentered.x / ellipse.radius), (unexcentered.y / ellipse.radius));
obj.distance = Math.sqrt(((unscaled.x * unscaled.x) + (unscaled.y * unscaled.y)));
obj.hDist = unscaled.x;
obj.vDist = unscaled.y;
obj.normal = (Math.atan2(unscaled.y, unscaled.x) + ellipse.rotation);
obj.angle = Math.atan2(unscaled.y, unscaled.x);
obj.rotation = ellipse.rotation;
obj.toString = function (){
return ((((((((((((("[ distance=" + obj.distance) + ", normal=") + obj.normal) + ", angle=") + obj.angle) + ", hDist=") + obj.hDist) + ", vDist=") + obj.vDist) + ", rotation=") + obj.rotation) + " ]"));
};
return (obj);
}
public static function getOuterPoints(_arg1:Array):Array{
var _local2:Array;
var _local3:Point;
var _local4:int;
var _local5:Array;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Point;
var _local11:int;
var _local12:Number;
var _local13:Point;
var _local14:int;
var _local15:Number;
var _local16:Number;
_local2 = _arg1.concat();
_local3 = _local2[0];
_local4 = 1;
while (_local4 < _local2.length) {
if (_local2[_local4].y < _local3.y){
_local3 = _local2[_local4];
};
_local4++;
};
_local5 = [_local3];
_local6 = Infinity;
_local8 = 0;
_local9 = 0;
_local10 = _local5[0];
_local11 = _local2.length;
while (1) {
_local12 = (Math.PI * 2);
_local13 = null;
_local4 = 0;
while (_local4 < _local2.length) {
_local7 = Math.atan2((_local2[_local4].y - _local5[(_local5.length - 1)].y), (_local2[_local4].x - _local5[(_local5.length - 1)].x));
_local16 = getLowestPositiveAngle((_local7 - _local8));
if ((((_local16 <= _local12)) && (!((_local2[_local4] == _local5[(_local5.length - 1)]))))){
_local13 = _local2[_local4];
_local12 = _local16;
};
_local4++;
};
if ((((_local13 == null)) || ((((_local13 == _local5[0])) && ((_local5.length > 1)))))){
break;
};
_local15 = _local8;
_local8 = getLowestPositiveAngle(Math.atan2((_local13.y - _local5[(_local5.length - 1)].y), (_local13.x - _local5[(_local5.length - 1)].x)));
_local9 = (_local9 + getLowestPositiveAngle((_local8 - _local15)));
if (_local9 >= (Math.PI * 2)){
break;
};
_local5.push(_local13);
--_local11;
if (!_local11){
trace(("FAILURE: " + (_local9 - (Math.PI * 2))), "\n");
break;
};
};
if ((((_local5.length > 2)) && ((_local5[(_local5.length - 1)] == _local5[1])))){
_local5.pop();
};
return (_local5);
}
public static function getSidePoints(_arg1:Array, _arg2:Number):Array{
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Array;
var _local7:Point;
var _local8:Point;
var _local9:Number;
var _local10:Number;
var _local11:Array;
var _local12:Number;
var _local13:Number;
_local4 = Infinity;
_local5 = -(Infinity);
_local3 = 0;
while (_local3 < _arg1.length) {
if (_arg1[_local3].y < _local4){
_local4 = _arg1[_local3].y;
};
if (_arg1[_local3].y > _local5){
_local5 = _arg1[_local3].y;
};
_local3++;
};
if (_arg2 < _local4){
_arg2 = _local4;
} else {
if (_arg2 > _local5){
_arg2 = _local5;
};
};
_local6 = [];
_local3 = 0;
while (_local3 < _arg1.length) {
_local7 = _arg1[_local3];
_local8 = _arg1[((_local3 + 1) % _arg1.length)];
if ((((((_arg2 <= _local7.y)) && ((_arg2 >= _local8.y)))) || ((((_arg2 >= _local7.y)) && ((_arg2 <= _local8.y)))))){
if (_local8.y == _local7.y){
_local6.push(new Point(_local7.x, _local7.y));
_local6.push(new Point(_local8.x, _local8.y));
} else {
_local12 = ((_arg2 - _local7.y) / (_local8.y - _local7.y));
_local13 = (_local7.x + ((_local8.x - _local7.x) * _local12));
_local6.push(new Point(_local13, _arg2));
};
};
_local3++;
};
_local9 = Infinity;
_local10 = -(Infinity);
_local3 = 0;
while (_local3 < _local6.length) {
_local7 = _local6[_local3];
if (_local7.x < _local9){
_local9 = _local7.x;
};
if (_local7.x > _local10){
_local10 = _local7.x;
};
_local3++;
};
_local11 = [];
_local3 = 0;
while (_local3 < _local6.length) {
if (_local6[_local3].x <= (_local9 + TOLERANCE)){
_local11[0] = _local6[_local3];
};
if (_local6[_local3].x >= (_local10 - TOLERANCE)){
_local11[1] = _local6[_local3];
};
_local3++;
};
return (_local11);
}
public static function projectPointOnLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Object{
var _local7:Object;
var _local8:Object;
_local7 = getNormal(_arg3, _arg4, _arg5, _arg6);
_local8 = intersectLines(_arg1, _arg2, (_arg1 + _local7.x), (_arg2 + _local7.y), _arg3, _arg4, _arg5, _arg6, false);
if (_local8 == null){
throw ("Unexpected error in Geometry::closestPointToLine. Perpendicular lines aren't intersecting!\n");
};
return (_local8);
}
private static function getLowestPositiveAngle(_arg1:Number):Number{
var _local2:Number;
_local2 = _arg1;
while (_local2 < 0) {
_local2 = (_local2 + (Math.PI * 2));
};
while (_local2 >= (Math.PI * 2)) {
_local2 = (_local2 - (Math.PI * 2));
};
return (_local2);
}
public static function generateRegularPolygon(_arg1:Number, _arg2:Number):Array{
var _local3:Array;
var _local4:Number;
var _local5:int;
_local3 = new Array(_arg1);
_local4 = ((Math.PI * 2) / _arg1);
_local5 = 0;
while (_local5 < _arg1) {
_local3[_local5] = new Point();
_local3[_local5].x = (_arg2 * Math.cos((_local5 * _local4)));
_local3[_local5].y = (_arg2 * Math.sin((_local5 * _local4)));
_local5++;
};
return (_local3);
}
public static function triangleArea(_arg1:Point, _arg2:Point, _arg3:Point):Number{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local4 = (_arg2.x - _arg1.x);
_local5 = (_arg3.x - _arg1.x);
_local6 = (_arg2.y - _arg1.y);
_local7 = (_arg3.y - _arg1.y);
return ((0.5 * Math.abs(((_local4 * _local7) - (_local5 * _local6)))));
}
public static function pointInsideRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
if (_arg3 < _arg5){
_local7 = _arg3;
_local9 = _arg5;
} else {
_local7 = _arg5;
_local9 = _arg3;
};
if (_arg4 < _arg6){
_local8 = _arg4;
_local10 = _arg6;
} else {
_local8 = _arg6;
_local10 = _arg4;
};
_local11 = 0.0001;
return (!((((((((_arg1 < (_local7 - _local11))) || ((_arg1 > (_local9 + _local11))))) || ((_arg2 < (_local8 - _local11))))) || ((_arg2 > (_local10 + _local11))))));
}
public static function interpolateAngle(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number;
var _local5:Number;
while (_arg1 < 0) {
_arg1 = (_arg1 + (Math.PI * 2));
};
while (_arg2 < 0) {
_arg2 = (_arg2 + (Math.PI * 2));
};
while (_arg1 >= (Math.PI * 2)) {
_arg1 = (_arg1 - (Math.PI * 2));
};
while (_arg2 >= (Math.PI * 2)) {
_arg2 = (_arg2 - (Math.PI * 2));
};
if (_arg1 > _arg2){
if ((_arg1 - _arg2) > Math.PI){
_arg1 = (_arg1 - (Math.PI * 2));
};
} else {
if ((_arg2 - _arg1) > Math.PI){
_arg2 = (_arg2 - (Math.PI * 2));
};
};
_local5 = (_arg1 + (_arg3 * (_arg2 - _arg1)));
while (_local5 > Math.PI) {
_local5 = (_local5 - (Math.PI * 2));
};
while (_local5 < -(Math.PI)) {
_local5 = (_local5 + (Math.PI * 2));
};
return (_local5);
}
public static function rotate(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0, _arg5:Number=0):Object{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local6 = (_arg2 - _arg4);
_local7 = (_arg3 - _arg5);
_local8 = Math.cos(_arg1);
_local9 = Math.sin(_arg1);
return ({x:((_arg4 + (_local6 * _local8)) - (_local7 * _local9)), y:((_arg5 + (_local6 * _local9)) + (_local7 * _local8))});
}
public static function rotatePoint(_arg1:Number, _arg2:Point, _arg3:Point=null):Point{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
if (_arg3 == null){
_local5 = 0;
_local4 = _local5;
} else {
_local4 = _arg3.x;
_local5 = _arg3.y;
};
_local6 = (_arg2.x - _local4);
_local7 = (_arg2.y - _local5);
_local8 = Math.cos(_arg1);
_local9 = Math.sin(_arg1);
return (new Point(((_local4 + (_local6 * _local8)) - (_local7 * _local9)), ((_local5 + (_local6 * _local9)) + (_local7 * _local8))));
}
public static function getNormal(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Object;
_local5 = (_arg1 - _arg3);
_local6 = (_arg2 - _arg4);
_local7 = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
if (!_local7){
return ({x:0, y:0});
};
_local8 = {x:(_local6 / _local7), y:(-(_local5) / _local7)};
return (_local8);
}
public static function intersectPolygons(_arg1:Array, _arg2:Array){
var _local3:int;
var _local4:int;
var _local5:Array;
var _local6:Point;
var _local7:Point;
var _local8:Point;
var _local9:Point;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Object;
var _local15:int;
var _local16:int;
_local3 = (_arg1.length - 1);
_local4 = (_arg2.length - 1);
_local5 = [];
if ((((_local3 < 2)) || ((_local4 < 2)))){
return;
};
_local15 = 0;
while (_local15 < _local3) {
_local6 = _arg1[_local15];
_local7 = _arg1[(_local15 + 1)];
_local10 = _local6.x;
_local11 = _local6.y;
_local12 = _local7.x;
_local13 = _local7.y;
_local16 = 0;
while (_local16 < _local4) {
_local8 = _arg2[_local16];
_local9 = _arg2[(_local16 + 1)];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local16++;
};
_local8 = _arg2[_local16];
_local9 = _arg2[0];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local15++;
};
_local6 = _arg1[_local15];
_local7 = _arg1[0];
_local10 = _local6.x;
_local11 = _local6.y;
_local12 = _local7.x;
_local13 = _local7.y;
_local16 = 0;
while (_local16 < _local4) {
_local8 = _arg2[_local16];
_local9 = _arg2[(_local16 + 1)];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local16++;
};
_local8 = _arg2[_local16];
_local9 = _arg2[0];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
return (_local5);
}
}
}//package as3
Section 3
//Physics (as3.Physics)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Physics {
public static const ROTATION_PROP:String = "rotation";
public static const Y_PROP:String = "y";
public static const SKEWY_PROP:String = "skewY";
public static const SCALEX_PROP:String = "scaleX";
public static const X_PROP:String = "x";
public static const SCALEY_PROP:String = "scaleY";
public static const SKEWX_PROP:String = "skewX";
public static function attach(_arg1:Array, _arg2:DisplayObject, _arg3:MovieClip, _arg4:Array=null){
var _local5:Point;
var _local6:Point;
_local5 = _arg2.localToGlobal(new Point());
_local6 = _arg3.globalToLocal(_local5);
if (_arg4 == null){
_arg4 = [];
};
_arg1[_arg1.length] = {mc:_arg2, par:_arg3, point:_local6, props:_arg4};
}
public static function updateSkewY(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.y - _arg1.position.y)) / _arg1.hWeight));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.b = _arg4[0];
}
public static function updateElastic(_arg1:Array){
var _local2:int;
var _local3:int;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
updateElasticClip(_arg1[_local2]);
_local2++;
};
}
public static function updateAttached(_arg1:Array){
var _local2:int;
var _local3:int;
var _local4:Object;
var _local5:Point;
var _local6:Point;
var _local7:int;
var _local8:int;
var _local9:Array;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
_local4 = _arg1[_local2];
if (_local4.mc.parent){
_local5 = _local4.par.localToGlobal(_local4.point);
_local6 = _local4.mc.parent.globalToLocal(_local5);
_local4.mc.x = _local6.x;
_local4.mc.y = _local6.y;
};
_local9 = _local4.props;
_local8 = _local9.length;
_local7 = 0;
while (_local7 < _local8) {
_local4.mc[_local9[_local7]] = _local4.par[_local9[_local7]];
_local7++;
};
_local2++;
};
}
public static function detach(_arg1:Array, _arg2:DisplayObject, _arg3:MovieClip, _arg4:Array=null){
var _local5:int;
var _local6:int;
var _local7:Object;
_local6 = _arg1.length;
_local5 = 0;
while (_local5 < _local6) {
_local7 = _arg1[_local5];
if ((((_local7.mc == _arg2)) && ((_local7.par == _arg3)))){
_arg1.splice(_local5, 1);
return;
};
_local5++;
};
}
public static function verlet(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1, _arg6:Number=1){
var _local7:int;
var _local8:Number;
var _local9:int;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local8 = ((0.5 * _arg5) * _arg5);
_local9 = (_arg6 / _arg5);
_local10 = _arg1[0];
_local11 = _arg1[1];
_local12 = 0;
_local7 = 0;
while (_local7 < _local9) {
_local12 = (_arg4 * (_arg2 - _local10));
_local10 = (_local10 + ((_local11 * _arg5) + (_local12 * _local8)));
_local11 = ((_local11 + (_local12 * _arg5)) * _arg3);
_local7++;
};
_arg1[0] = _local10;
_arg1[1] = _local11;
}
public static function updateSkewX(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.x - _arg1.position.x)) / _arg1.vWeight));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.c = _arg4[0];
}
public static function balancePoint(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int=1){
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:int;
_local6 = _arg1[0];
_local7 = _arg1[1];
_local8 = _arg1[2];
_local9 = 0;
while (_local9 < _arg5) {
_arg1[1] = ((_arg1[1] * _arg2) + _arg1[2]);
_arg1[2] = ((_arg3 - _arg1[0]) * _arg4);
_arg1[0] = (_arg1[0] + (_local7 * _arg2));
_local9++;
};
}
public static function setElastic(_arg1:Array, _arg2:DisplayObjectContainer, _arg3:MovieClip, _arg4:Array, _arg5:Array, _arg6:Array, _arg7:Array, _arg8:Array, _arg9:Array):Object{
var _local10:Array;
var _local11:int;
var _local12:int;
var _local13:String;
var _local14:Point;
var _local15:Rectangle;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
if (!_arg3.parent){
return (null);
};
_local10 = [ROTATION_PROP];
_local12 = _arg4.length;
_local11 = 0;
while (_local11 < _local12) {
_local13 = _arg4[_local11];
_local10[_local11] = [_arg6[_local11], 0, 0];
_local11++;
};
_local14 = _arg3.localToGlobal(new Point());
_local14 = _arg2.globalToLocal(_local14);
_local15 = _arg3.getBounds(_arg3);
_local16 = (_local15.right + _local15.left);
_local17 = (_local15.bottom + _local15.top);
_local18 = ((_local16)<0) ? _local15.left : _local15.right;
_local19 = ((_local17)<0) ? _local15.top : _local15.bottom;
_arg1[_arg1.length] = {clip:_arg3, props:_arg4, position:_local14, values:_local10, topLevel:_arg2, rect:_local15, hWeight:_local18, vWeight:_local19, frictions:_arg5, dests:_arg6, multipliers:_arg7, speeds:_arg8, scales:_arg9};
return (_arg1[(_arg1.length - 1)]);
}
public static function editElastic(_arg1:Array, _arg2:MovieClip, _arg3:String, _arg4:Number){
var _local5:int;
var _local6:int;
_local6 = _arg1.length;
_local5 = 0;
while (_local5 < _local6) {
if (_arg1[_local5].clip == _arg2){
_arg1[_local5].dests[_arg3] = _arg4;
return;
};
_local5++;
};
}
public static function updateScaleX(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
var _local10:Rectangle;
var _local11:Number;
_local10 = _arg1.clip.getBounds(_arg1.topLevel);
_local11 = (_local10.right - _local10.left);
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.x - _arg1.position.x)) / _local11));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.a = _arg4[0];
}
public static function updateScaleY(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
var _local10:Rectangle;
var _local11:Number;
_local10 = _arg1.clip.getBounds(_arg1.topLevel);
_local11 = (_local10.bottom - _local10.top);
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.y - _arg1.position.y)) / _local11));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.d = _arg4[0];
}
public static function updateElasticClip(_arg1:Object){
var _local2:int;
var _local3:Array;
var _local4:int;
var _local5:Point;
var _local6:String;
var _local7:Matrix;
_local3 = _arg1.props;
_local4 = _local3.length;
_local5 = _arg1.clip.localToGlobal(new Point());
_local5 = _arg1.topLevel.globalToLocal(_local5);
_local7 = _arg1.clip.transform.matrix;
_local2 = 0;
while (_local2 < _local4) {
_local6 = _local3[_local2];
switch (_local6){
case SKEWX_PROP:
updateSkewX(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SKEWY_PROP:
updateSkewY(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SCALEX_PROP:
updateScaleX(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SCALEY_PROP:
updateScaleY(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
};
_local2++;
};
_arg1.clip.transform.matrix = _local7;
_arg1.position = _local5;
}
}
}//package as3
Section 4
//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=NaN, _arg7:Number=NaN){
var _local8:MovieClip;
if (!_arg1){
return;
};
_local8 = getPartAt(_arg2);
if (!_local8){
throw ("This part is not in the list. Try using addPart() first.");
};
if (_arg1[_arg2]){
delete _arg1[_arg2];
};
_arg1[_arg2] = [];
_arg1[_arg2][FRAME] = _arg3;
if (isNaN(_arg4)){
_arg1[_arg2][ROTATION] = undefined;
} else {
_arg1[_arg2][ROTATION] = _arg4;
};
if (isNaN(_arg5)){
_arg1[_arg2][ROTATION_SPEED] = undefined;
} else {
_arg1[_arg2][ROTATION_SPEED] = _arg5;
};
if (isNaN(_arg6)){
_arg1[_arg2][X_POS] = undefined;
} else {
_arg1[_arg2][X_POS] = _arg6;
};
if (isNaN(_arg7)){
_arg1[_arg2][Y_POS] = undefined;
} else {
_arg1[_arg2][Y_POS] = _arg7;
};
}
public function get state():String{
return (_state);
}
public function get offset():Number{
return (_offset);
}
public function get blinking():Boolean{
return (_blinking);
}
private function _reacting(_arg1:Event){
var _local2:Object;
_local2 = getReaction((_arg1.target as EventDispatcher), _arg1.type);
if (_local2 == null){
throw ("Reaction not found on the list.");
};
react(_local2.state, _local2.timer);
}
public function destroy(){
var _local1:int;
if (_expansion != null){
_expansion.removeEventListener("checkpoint", expansionReaction);
_expansion = null;
};
_local1 = 0;
while (_local1 < _reactions.length) {
_reactions[_local1].hit.removeEventListener(_reactions[_local1].type, _reacting);
delete _reactions[_local1];
_local1++;
};
_reactions = [];
_curState = [];
_states = [];
_parts = [];
_partTypes = [];
_partBaseValues = [];
_savedState = null;
_state = "";
_canBlink = true;
_blinking = false;
_offset = 0;
_frequency = 0;
_angle = 0;
_position = 0;
_timer = -1;
}
public function endReact(){
if (!_savedState){
return;
};
_curState.state = _savedState.state;
_savedState = null;
setState(_curState.state);
_timer = -1;
dispatchEvent(new Event("endreact"));
}
public function removePart(_arg1:MovieClip){
var _local2:int;
var _local3:int;
_local2 = 0;
while (_local2 < _parts.length) {
if (_parts[_local2] == _arg1){
delete _parts[_local2];
delete _partTypes[_local2];
_parts[_local2] = null;
_partTypes[_local2] = 0;
_local3 = 0;
while (_local3 < _eyes.length) {
if (_eyes[_local3] == _local2){
_eyes.splice(_local3, 1);
break;
};
_local3++;
};
if (_local2 == (_parts.length - 1)){
_parts.splice(_local2, 1);
_partTypes.splice(_local2, 1);
};
return;
};
_local2++;
};
}
public function getReaction(_arg1:EventDispatcher, _arg2:String):Object{
var _local3:int;
_local3 = 0;
while (_local3 < _reactions.length) {
if ((((_reactions[_local3].hit == _arg1)) && ((_reactions[_local3].type == _arg2)))){
return (_reactions[_local3]);
};
_local3++;
};
return (null);
}
public function set offset(_arg1:Number){
if (!isNaN(_arg1)){
_offset = _arg1;
};
}
public function get position():Number{
return (_position);
}
private function eFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
if ((((((((Math.random() > 0.99)) && (_canBlink))) && ((_savedState == null)))) && (_eyes.length))){
_local2 = 0;
while (_local2 < _eyes.length) {
_parts[_eyes[_local2]].gotoAndPlay("blink");
_local2++;
};
_blinking = true;
dispatchEvent(new Event("blink"));
};
if (((_blinking) && ((_parts[_eyes[0]].currentLabel == "endblink")))){
_local2 = 0;
while (_local2 < _eyes.length) {
if (((_curState[_eyes[_local2]]) && (_curState[_eyes[_local2]][FRAME]))){
_parts[_eyes[_local2]].gotoAndPlay(_curState[_eyes[_local2]][FRAME]);
};
_local2++;
};
_blinking = false;
dispatchEvent(new Event("endblink"));
};
_local2 = 0;
while (_local2 < _curState.length) {
if (((_curState[_local2]) && (_parts[_local2]))){
if (!isNaN((_curState[_local2][ROTATION] + _curState[_local2][ROTATION_SPEED]))){
_local3 = (_curState[_local2][ROTATION] + _partBaseValues[_local2].rotation);
_local4 = (_local3 - 360);
_local5 = (_local3 + 360);
_local6 = _local3;
_local7 = Math.abs((_local4 - _parts[_local2].rotation));
_local8 = Math.abs((_local5 - _parts[_local2].rotation));
_local9 = Math.abs((_local3 - _parts[_local2].rotation));
if (_local7 <= _local9){
_local6 = _local4;
};
if ((((_local8 <= _local7)) && ((_local8 <= _local9)))){
_local6 = _local5;
};
if (_parts[_local2].rotation < (_local6 - _curState[_local2][ROTATION_SPEED])){
_parts[_local2].rotation = (_parts[_local2].rotation + _curState[_local2][ROTATION_SPEED]);
} else {
if (_parts[_local2].rotation > (_local6 + _curState[_local2][ROTATION_SPEED])){
_parts[_local2].rotation = (_parts[_local2].rotation - _curState[_local2][ROTATION_SPEED]);
} else {
_parts[_local2].rotation = _local3;
};
};
};
if (!isNaN(_curState[_local2][X_POS])){
_local3 = (_curState[_local2][X_POS] + _partBaseValues[_local2].x);
_parts[_local2].x = (_parts[_local2].x + ((_local3 - _parts[_local2].x) * 0.5));
};
if (!isNaN(_curState[_local2][Y_POS])){
_local3 = (_curState[_local2][Y_POS] + _partBaseValues[_local2].y);
_parts[_local2].y = (_parts[_local2].y + ((_local3 - _parts[_local2].y) * 0.5));
};
};
_local2++;
};
_position = Math.sin(_angle);
_angle = (_angle + _frequency);
if (_angle > 500){
_angle = (_angle - ((Math.PI * 2) * (500 / (Math.PI * 2))));
};
if (_savedState){
if (_timer > 0){
_timer--;
} else {
if (_timer == 0){
endReact();
};
};
};
dispatchEvent(new Event("enterFrame"));
}
public function react(_arg1:String, _arg2:int=30){
var _local3:Array;
if (((_savedState) && (!(_interruptible)))){
return;
};
if (((!(_arg1)) || (!(_arg1.length)))){
return;
};
_local3 = null;
if (!_savedState){
_local3 = _curState;
} else {
_local3 = _savedState;
};
_savedState = null;
_timer = _arg2;
setState(_arg1);
if (_local3 != null){
_savedState = _local3;
};
dispatchEvent(new Event("react"));
}
public function removePartAt(_arg1:uint){
var _local2:int;
if ((((_arg1 >= _parts.length)) || ((_parts[_arg1] == null)))){
return;
};
delete _parts[_arg1];
delete _partTypes[_arg1];
_parts[_arg1] = null;
_partTypes[_arg1] = 0;
_local2 = 0;
while (_local2 < _eyes.length) {
if (_eyes[_local2] == _arg1){
_eyes.splice(_local2, 1);
break;
};
_local2++;
};
if (_arg1 == (_parts.length - 1)){
_parts.splice(_arg1, 1);
_partTypes.splice(_arg1, 1);
};
}
public function addPart(_arg1:MovieClip, _arg2:int=0, _arg3:Boolean=false):int{
var _local4:int;
if (!_arg1){
return (-1);
};
_local4 = 0;
while (_local4 < _parts.length) {
if (_parts[_local4] == _arg1){
_partTypes[_local4] = _arg2;
return (_local4);
};
_local4++;
};
_local4 = 0;
while (_local4 < _parts.length) {
if (_parts[_local4] == null){
break;
};
_local4++;
};
_arg1.stop();
if (_arg3){
_eyes.push(_local4);
};
_parts[_local4] = _arg1;
_partTypes[_local4] = _arg2;
_partBaseValues[_local4] = {x:_arg1.x, y:_arg1.y, scaleX:_arg1.scaleX, scaleY:_arg1.scaleY, rotation:_arg1.rotation};
return (_local4);
}
public function get interruptible():Boolean{
return (_interruptible);
}
public function get curState():Array{
return (_curState);
}
public function getStateByName(_arg1:String):Object{
if (!_states[_arg1]){
return (null);
};
return (_states[_arg1]);
}
public function set frequency(_arg1:Number){
if (!isNaN(_arg1)){
_frequency = _arg1;
};
}
public function getPartID(_arg1:MovieClip):int{
var _local2:int;
_local2 = 0;
while (_local2 < _parts.length) {
if (_parts[_local2] == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function get timer():int{
return (_timer);
}
public function get defaultState():String{
if (!_savedState){
return (_state);
};
return (_savedState.state);
}
public function get angle():Number{
return (_angle);
}
public function set canBlink(_arg1:Boolean){
_canBlink = _arg1;
}
public function reactTo(_arg1:Expansion, _arg2:Boolean=false){
if (_expansion != null){
_expansion.removeEventListener("checkpoint", expansionReaction);
_expansion = null;
};
_permanent = _arg2;
if (!_arg1){
return;
};
_expansion = _arg1;
_arg1.addEventListener("checkpoint", expansionReaction, false, 1, true);
}
public function get frequency():Number{
return (_frequency);
}
private function expansionReaction(_arg1:ExpansionEvent){
if (((!(_arg1.reaction)) || (!(_arg1.reaction.length)))){
return;
};
if (_permanent){
if (reacting){
_savedState.state = _arg1.reaction;
} else {
setState(_arg1.reaction);
};
} else {
react(_arg1.reaction, _arg1.timer);
};
}
public function setState(_arg1:String, _arg2:Boolean=false){
var _local3:Array;
var _local4:int;
var _local5:String;
if (_arg1 == _state){
return;
};
if (_savedState){
if (_arg2){
_savedState.state = _arg1;
};
return;
};
if (!_states[_arg1]){
return;
};
_local3 = _curState;
_curState = [];
_curState.state = (_state = _arg1);
if (_states[_arg1]["canBlink"] != undefined){
_curState.canBlink = (_canBlink = _states[_arg1]["canBlink"]);
};
if (!isNaN(_states[_arg1]["frequency"])){
_curState.frequency = (_frequency = _states[_arg1]["frequency"]);
};
if (!isNaN(_states[_arg1]["offset"])){
_curState.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
//_btn1_71 (gemmaMinerva_fla._btn1_71)
package gemmaMinerva_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn1_71 extends MovieClip {
public var _txt:TextField;
}
}//package gemmaMinerva_fla
Section 8
//_btn2_72 (gemmaMinerva_fla._btn2_72)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class _btn2_72 extends MovieClip {
public function _btn2_72(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package gemmaMinerva_fla
Section 9
//_btn3_73 (gemmaMinerva_fla._btn3_73)
package gemmaMinerva_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn3_73 extends MovieClip {
public var _txt:TextField;
}
}//package gemmaMinerva_fla
Section 10
//g_arm1_56 (gemmaMinerva_fla.g_arm1_56)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_arm1_56 extends MovieClip {
public function g_arm1_56(){
addFrameScript(1, frame2, 10, frame11, 15, frame16, 25, frame26);
}
function frame16(){
this.gotoAndPlay(this.currentLabel);
}
function frame26(){
this.gotoAndPlay("down");
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame11(){
this.gotoAndPlay("belly");
}
}
}//package gemmaMinerva_fla
Section 11
//g_belly_52 (gemmaMinerva_fla.g_belly_52)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_belly_52 extends MovieClip {
public var ellipse:MovieClip;
}
}//package gemmaMinerva_fla
Section 12
//g_drops_69 (gemmaMinerva_fla.g_drops_69)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_drops_69 extends MovieClip {
public function g_drops_69(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package gemmaMinerva_fla
Section 13
//g_eye1_63 (gemmaMinerva_fla.g_eye1_63)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_eye1_63 extends MovieClip {
public var pupil:MovieClip;
public function g_eye1_63(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 13, frame14, 15, frame16, 18, frame19, 20, frame21, 29, frame30);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame16(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame19(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame21(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame30(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package gemmaMinerva_fla
Section 14
//g_eye2_65 (gemmaMinerva_fla.g_eye2_65)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_eye2_65 extends MovieClip {
public var pupil:MovieClip;
public function g_eye2_65(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 13, frame14, 15, frame16, 18, frame19, 20, frame21, 29, frame30);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame16(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame19(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame21(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame30(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package gemmaMinerva_fla
Section 15
//g_keypad_35 (gemmaMinerva_fla.g_keypad_35)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_keypad_35 extends MovieClip {
public var k0:MovieClip;
public var k4:MovieClip;
public var k6:MovieClip;
public var k7:MovieClip;
public var k8:MovieClip;
public var k2:MovieClip;
public var k5:MovieClip;
public var k9:MovieClip;
public var k1:MovieClip;
public var k3:MovieClip;
}
}//package gemmaMinerva_fla
Section 16
//g_poke_32 (gemmaMinerva_fla.g_poke_32)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class g_poke_32 extends MovieClip {
public function g_poke_32(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package gemmaMinerva_fla
Section 17
//m_eye1_27 (gemmaMinerva_fla.m_eye1_27)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class m_eye1_27 extends MovieClip {
public var pupil:MovieClip;
public function m_eye1_27(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 13, frame14, 15, frame16, 29, frame30);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
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 frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame30(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package gemmaMinerva_fla
Section 18
//m_eye2_25 (gemmaMinerva_fla.m_eye2_25)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class m_eye2_25 extends MovieClip {
public var pupil:MovieClip;
public function m_eye2_25(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 13, frame14, 15, frame16, 29, frame30);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame14(){
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 frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame30(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package gemmaMinerva_fla
Section 19
//m_mouth_28 (gemmaMinerva_fla.m_mouth_28)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class m_mouth_28 extends MovieClip {
public function m_mouth_28(){
addFrameScript(18, frame19, 38, frame39, 58, frame59, 78, frame79, 98, frame99, 118, frame119, 138, frame139, 158, frame159, 178, frame179);
}
function frame159(){
this.gotoAndPlay(this.currentLabel);
}
function frame79(){
this.gotoAndPlay(this.currentLabel);
}
function frame19(){
this.gotoAndPlay(this.currentLabel);
}
function frame179(){
this.gotoAndPlay(this.currentLabel);
}
function frame39(){
this.gotoAndPlay(this.currentLabel);
}
function frame99(){
this.gotoAndPlay(this.currentLabel);
}
function frame119(){
this.gotoAndPlay(this.currentLabel);
}
function frame139(){
this.gotoAndPlay(this.currentLabel);
}
function frame59(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package gemmaMinerva_fla
Section 20
//m_paper_5 (gemmaMinerva_fla.m_paper_5)
package gemmaMinerva_fla {
import flash.display.*;
public dynamic class m_paper_5 extends MovieClip {
public var k0:MovieClip;
public var k4:MovieClip;
public var k6:MovieClip;
public var k7:MovieClip;
public var k8:MovieClip;
public var k2:MovieClip;
public var k5:MovieClip;
public var k9:MovieClip;
public var k1:MovieClip;
public var k3:MovieClip;
}
}//package gemmaMinerva_fla
Section 21
//MainTimeline (gemmaMinerva_fla.MainTimeline)
package gemmaMinerva_fla {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import expansion.*;
import as3.*;
import flash.text.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.media.*;
import flash.net.*;
import flash.printing.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public const GEMMA_TOP_END_FRAME:int = 422;
public const GEMMA_TAIL_END:int = 53;
public const GEMMA_X:Number = -36;
public const GEMMA_Y:Number = -42;
public const GEMMA_TAIL_START:int = 10;
public const LEGS_SYNC:int = 1;
public const BLUSH_ONCE:int = 2;
public const GEMMA_UNCLOTHED_FRAME:int = 430;
public const GEMMA_BREAST_FRAME:int = 300;
public const MINERVA_X:int = 332;
public const MINERVA_Y:int = 338;
public const LEGS_ALTERNATE:int = 2;
public const GEMMA_TOP_TIGHT:int = 411;
public const BLUSH_OFF:int = 0;
public const MINERVA_MAX_SIZE:int = 400;
public const GEMMA_TOP_FRAME:int = 412;
public const LEGS_STOPPED:int = 0;
public const BLUSH_ON:int = 1;
public const GEMMA_CODE:int = 5625;
public const MINERVA_CODE:int = 802;
public const GEMMA_MAX_SIZE:int = 400;
public var size:int;
public var panel:Panel;
public var oldMX:Number;
public var oldMY:Number;
public var mEye1ID:int;
public var mPupil2ID:int;
public var gPupil2ID:int;
public var transitionDst:Class;
public var gExp:Expression;
public var transitionBmp1:BitmapData;
public var transitionBmp3:BitmapData;
public var transitionBmp4:BitmapData;
public var gEye2ID:int;
public var gB1Y:Number;
public var st:Array;
public var gB2Y:Number;
public var gPupil1ID:int;
public var transitionSrc:MovieClip;
public var gB2X:Number;
public var transitionBmp2:BitmapData;
public var gArm1ID:int;
public var mB1X:Number;
public var minervaKeys:Array;
public var mExp:Expression;
public var mPupil1ID:int;
public var mB1Y:Number;
public var gB1X:Number;
public var mB2X:Number;
public var gEye1ID:int;
public var mBlush:Number;
public var mLeg1Angle:Number;
public var _gCover:Shape;
public var gemmaKeyMC:MovieClip;
public var mB2Y:Number;
public var transitionBmpTime:int;
public var mMouthID:int;
public var oldY:Number;
public var oldX:Number;
public var gemma:MovieClip;
public var gemmaTopTimer:int;
public var mLeg2Angle:Number;
public var minerva:MovieClip;
public var mEar1C:Array;
public var mLegMode:int;
public var gemmaTopBroken:int;
public var gemmaKeys:Array;
public var gMouthID:int;
public var mEar2C:Array;
public var transitionTime:int;
public var mBlushState:int;
public var growth:int;
public var zoom:Number;
public var gT1X:Number;
public var gT1Y:Number;
public var mEye2ID:int;
public var transitionBmp:BitmapData;
public var _gRect:Rectangle;
public function MainTimeline(){
addFrameScript(0, frame1);
}
public function gemmaFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
if (gemma.tail.currentFrame == 1){
if (Math.random() < 0.005){
gemma.tail.gotoAndPlay(GEMMA_TAIL_START);
};
} else {
if (gemma.tail.currentFrame == GEMMA_TAIL_END){
gemma.tail.gotoAndStop(1);
};
};
if (gemmaTopBroken == 1){
if (gemmaTopTimer > 0){
gExp.setState("tight");
gemmaTopTimer--;
gemma.top1.nextFrame();
gemma.top2.nextFrame();
gemma.breast1.nextFrame();
gemma.breast2.nextFrame();
if (gemma.top1.currentFrame > GEMMA_TOP_FRAME){
gemma.top1.gotoAndStop(GEMMA_TOP_TIGHT);
gemma.top2.gotoAndStop(GEMMA_TOP_TIGHT);
gemma.breast1.gotoAndStop(GEMMA_TOP_TIGHT);
gemma.breast2.gotoAndStop(GEMMA_TOP_TIGHT);
};
} else {
gemma.top1.nextFrame();
gemma.top2.nextFrame();
gemma.breast1.nextFrame();
gemma.breast2.nextFrame();
if (gemma.top1.currentFrame >= GEMMA_TOP_END_FRAME){
gemmaTopBroken = 2;
setGemmaSize(size);
};
};
};
_local2 = size;
size = (size + growth);
if ((((size > GEMMA_MAX_SIZE)) && ((_local2 >= GEMMA_MAX_SIZE)))){
size = 1;
growth = 0;
panel._expand._txt.text = "Expand";
gemmaTopBroken = 0;
gemmaTopTimer = 0;
setGemmaSize(size);
gExp.endReact();
gExp.setState("normal");
} else {
if ((((size < 1)) && ((_local2 <= 1)))){
size = 1;
growth = 0;
panel._revert._txt.text = "Revert";
};
};
if (growth > 0){
setGemmaSize(size);
if (size == GEMMA_MAX_SIZE){
growth = 0;
};
if (size < 5){
} else {
if (size < 40){
gExp.setState("notice");
} else {
if (size < 100){
gExp.setState("surprised");
} else {
if (size < 200){
gExp.setState("nervous");
} else {
if (size < 300){
gExp.setState("happy");
} else {
if (size < 400){
if (((!(gemmaTopBroken)) && ((size > 370)))){
gExp.setState("pressure");
} else {
gExp.setState("enjoy");
};
} else {
if (gemmaTopBroken > 1){
gExp.setState("over");
};
panel._expand._txt.text = "Reset";
};
};
};
};
};
};
if (((!(gemmaTopBroken)) && ((size >= GEMMA_MAX_SIZE)))){
gemmaBreakTop();
};
} else {
if (growth < 0){
setGemmaSize(size);
if (size == 1){
growth = 0;
gExp.setState("normal");
} else {
if (size < 200){
gExp.setState("smaller");
} else {
if (size < 400){
gExp.setState("revert");
};
};
};
} else {
if (size == 400){
if (gemmaTopBroken > 1){
gExp.setState("over");
};
panel._expand._txt.text = "Reset";
};
};
};
if (gemmaTopBroken == 1){
if (gemmaTopTimer == 0){
gExp.setState("over");
gExp.interruptible = true;
gExp.react("break", 20);
gExp.interruptible = false;
gemma.drops.play();
gemmaTopTimer = -1;
} else {
if (gemmaTopTimer > 0){
gExp.setState("tight");
};
};
};
if (zoom){
gemma.scaleY = (gemma.scaleX = (gemma.scaleX + zoom));
Algorithms.adjustScreen(gemma, gemma.bg);
};
_local3 = (((gExp.position * 0.5) + 0.5) * gExp.offset);
gemma.breast1.x = (gB1X - _local3);
gemma.breast2.x = (gB2X - _local3);
gemma.top1.x = (gT1X - _local3);
gemma.top1.scaleX = (1 + (_local3 * 0.01));
gemma.mouth.gotoAndStop(gExp.curState[gMouthID][Expression.FRAME]);
gemma.mouth.gotoAndStop((gemma.mouth.currentFrame + int((_local3 * 19))));
}
public function gemmaBreakTop(){
gemma.top1.gotoAndStop(GEMMA_TOP_TIGHT);
gemma.top2.gotoAndStop(GEMMA_TOP_TIGHT);
gemma.breast1.gotoAndStop(GEMMA_TOP_TIGHT);
gemma.breast2.gotoAndStop(GEMMA_TOP_TIGHT);
gemmaTopBroken = 1;
gemmaTopTimer = 30;
}
public function minervaFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:int;
var _local6:Matrix;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:int;
_local2 = size;
size = (size + growth);
if ((((_local2 == MINERVA_MAX_SIZE)) && ((size > _local2)))){
size = 1;
setMinervaSize(size);
growth = 0;
mExp.endReact();
mExp.setState("normal");
panel._expand._txt.text = "Expand";
mBlushState = BLUSH_OFF;
} else {
if ((((_local2 == 1)) && ((size < _local2)))){
size = 1;
growth = 0;
};
};
if (growth > 0){
if (size >= MINERVA_MAX_SIZE){
size = MINERVA_MAX_SIZE;
growth = 0;
panel._expand._txt.text = "Reset";
};
setMinervaSize(size);
if (size < 10){
} else {
if (size < 140){
mExp.setState("notice");
} else {
if (size < 280){
mExp.setState("enjoy");
if (mBlushState == BLUSH_ON){
mBlushState = BLUSH_OFF;
};
} else {
if (size < 400){
mExp.setState("pleasure");
mBlushState = BLUSH_ON;
} else {
mExp.setState("over");
if (mBlushState == BLUSH_ON){
mBlushState = BLUSH_OFF;
};
};
};
};
};
} else {
if (growth < 0){
if (size <= 1){
size = 1;
growth = 0;
panel._revert._txt.text = "Revert";
} else {
if (size < 200){
mExp.setState("smaller");
} else {
if (size < 400){
mExp.setState("revert");
};
};
};
setMinervaSize(size);
} else {
if (size == MINERVA_MAX_SIZE){
panel._expand._txt.text = "Reset";
mExp.setState("over");
mBlushState = BLUSH_OFF;
};
};
};
if (mBlushState){
if (mBlush < 1){
mBlush = (mBlush + 0.1);
if (mBlush >= 1){
mBlush = 1;
if (mBlushState == BLUSH_ONCE){
mBlushState = BLUSH_OFF;
};
};
minerva.blush.alpha = mBlush;
};
} else {
if (mBlush > 0){
mBlush = (mBlush - 0.1);
if (mBlush < 0){
mBlush = 0;
};
minerva.blush.alpha = mBlush;
};
};
_local3 = (size / MINERVA_MAX_SIZE);
_local4 = (((mExp.position * 0.5) + 0.5) * mExp.offset);
_local5 = (_local4 * 19);
minerva.mouth.gotoAndStop(mExp.curState[mMouthID][Expression.FRAME]);
minerva.mouth.gotoAndStop((minerva.mouth.currentFrame + _local5));
minerva.body.gotoAndStop((1 + int((_local4 * 25))));
minerva.breast1.x = (mB1X + (_local4 * 1));
minerva.breast1.y = (mB1Y + _local4);
minerva.breast2.x = (mB2X + (_local4 * 2));
minerva.breast2.y = (mB2Y + _local4);
_local6 = minerva.breast1.transform.matrix;
_local6.c = ((-(_local4) * 0.02) * _local3);
minerva.breast1.transform.matrix = _local6;
_local6 = minerva.breast2.transform.matrix;
_local6.a = (1 - ((_local4 * 0.01) * _local3));
minerva.breast2.transform.matrix = _local6;
Physics.verlet(mEar1C, 0, 0.9, 0.5, 0.2, 2);
_local6 = minerva.ear1.transform.matrix;
_local6.c = mEar1C[0];
_local6.b = mEar1C[0];
_local6.d = (1 - (mEar1C[0] * 0.5));
minerva.ear1.transform.matrix = _local6;
Physics.verlet(mEar2C, 0, 0.9, 0.5, 0.2, 2);
_local6 = minerva.ear2.transform.matrix;
_local6.c = -(mEar2C[0]);
_local6.b = mEar2C[0];
_local6.d = (1 - (mEar2C[0] * 0.5));
minerva.ear2.transform.matrix = _local6;
_local7 = (Math.PI / 7);
if ((((mLegMode == LEGS_STOPPED)) || (growth))){
if (mLeg1Angle > 0){
mLeg1Angle = (mLeg1Angle + _local7);
if (mLeg1Angle >= (Math.PI * 2)){
mLeg1Angle = 0;
};
};
if (mLeg2Angle > 0){
mLeg2Angle = (mLeg2Angle + _local7);
if (mLeg2Angle >= (Math.PI * 2)){
mLeg2Angle = 0;
};
};
} else {
if (mLegMode == LEGS_SYNC){
if (Math.abs((mLeg2Angle - mLeg1Angle)) < 0.01){
mLeg1Angle = (mLeg1Angle + _local7);
mLeg2Angle = mLeg1Angle;
} else {
mLeg2Angle = (mLeg2Angle + _local7);
if (mLeg2Angle >= (Math.PI * 2)){
mLeg2Angle = (mLeg2Angle - (Math.PI * 2));
};
};
} else {
if (mLegMode == LEGS_ALTERNATE){
if ((((Math.abs(((mLeg2Angle + Math.PI) - mLeg1Angle)) < 0.01)) || ((Math.abs(((mLeg2Angle - Math.PI) - mLeg1Angle)) < 0.01)))){
mLeg1Angle = (mLeg1Angle + _local7);
mLeg2Angle = (mLeg2Angle + _local7);
if (mLeg1Angle >= (Math.PI * 2)){
mLeg1Angle = (mLeg1Angle - (Math.PI * 2));
};
if (mLeg2Angle >= (Math.PI * 2)){
mLeg2Angle = (mLeg2Angle - (Math.PI * 2));
};
} else {
mLeg2Angle = (mLeg2Angle + _local7);
if (mLeg2Angle >= (Math.PI * 2)){
mLeg2Angle = (mLeg2Angle - (Math.PI * 2));
};
};
};
};
};
if (mLeg1Angle > (Math.PI * 2)){
mLeg1Angle = (mLeg1Angle - (Math.PI * 2));
};
if (mLeg2Angle > (Math.PI * 2)){
mLeg2Angle = (mLeg2Angle - (Math.PI * 2));
};
_local8 = (0.5 - (0.5 * Math.cos(mLeg1Angle)));
_local9 = (0.5 - (0.5 * Math.cos(mLeg2Angle)));
_local10 = (1 + (_local8 * 9));
_local11 = (1 + (_local9 * 9));
minerva.leg1.gotoAndStop(_local10);
minerva.leg2.gotoAndStop(_local11);
if (zoom > 0){
if (minerva.scaleX < 3){
minerva.scaleX = (minerva.scaleX + zoom);
minerva.scaleY = minerva.scaleX;
Algorithms.adjustScreen(minerva, minerva.bg);
};
} else {
if (zoom < 0){
minerva.scaleX = (minerva.scaleX + zoom);
minerva.scaleY = minerva.scaleX;
Algorithms.adjustScreen(minerva, minerva.bg);
};
};
}
public function gemmaKeyRelease(_arg1:Event){
var _local2:MovieClip;
_local2 = gemmaKeyMC;
if (_local2 != null){
_local2.gotoAndStop(1);
};
gemmaKeyMC = null;
stage.removeEventListener(MouseEvent.MOUSE_UP, gemmaKeyRelease);
}
public function unloadPanel(){
if (!panel){
return;
};
panel._expand.removeEventListener(MouseEvent.MOUSE_DOWN, expand);
panel._revert.removeEventListener(MouseEvent.MOUSE_DOWN, revert);
panel._plus.removeEventListener(MouseEvent.MOUSE_DOWN, zoomIn);
panel._minus.removeEventListener(MouseEvent.MOUSE_DOWN, zoomOut);
panel._cont.removeEventListener(MouseEvent.MOUSE_DOWN, setContinuous);
panel.removeEventListener(Event.ENTER_FRAME, updatePanel);
stage.removeChild(panel);
panel = null;
}
public function zoomIn(_arg1:Event){
zoom = 0.02;
stage.addEventListener(MouseEvent.MOUSE_UP, endZoom);
}
public function gemmaZero(_arg1:Event){
gemma.x = GEMMA_X;
gemma.y = GEMMA_Y;
gemma.scaleX = (gemma.scaleY = 1);
}
public function transitioning(_arg1:Event){
var _local2:Number;
var _local3:DisplacementMapFilter;
transitionTime--;
transitionBmpTime--;
_local2 = Math.random();
if (transitionBmpTime <= 0){
transitionBmpTime = (1 + (Math.random() * 3));
if (_local2 < 0.25){
transitionBmp = transitionBmp1;
} else {
if (_local2 < 0.5){
transitionBmp = transitionBmp2;
} else {
if (_local2 < 0.75){
transitionBmp = transitionBmp3;
} else {
transitionBmp = transitionBmp4;
};
};
};
};
_local3 = new DisplacementMapFilter(transitionBmp, new Point((-(transitionSrc.x) - (transitionSrc.bg.x * transitionSrc.scaleX)), (-(transitionSrc.y) - (transitionSrc.bg.y * transitionSrc.scaleY))), BitmapDataChannel.RED, BitmapDataChannel.BLUE, 600, 600, "wrap");
transitionSrc.filters = [_local3];
if (!transitionTime){
stage.removeEventListener(Event.ENTER_FRAME, transitioning);
if (transitionDst == Gemma){
unloadMinerva();
loadGemma();
} else {
unloadGemma();
loadMinerva();
};
};
}
public function zoomOut(_arg1:Event){
zoom = -0.02;
stage.addEventListener(MouseEvent.MOUSE_UP, endZoom);
}
public function expand(_arg1:Event){
if (growth > 0){
growth = 0;
panel._expand._txt.text = "Expand";
panel._revert._txt.text = "Revert";
} else {
growth = 1;
panel._expand._txt.text = "Expanding";
panel._revert._txt.text = "Revert";
};
stage.addEventListener(MouseEvent.MOUSE_UP, endExpand);
}
public function gemmaMMove(_arg1:MouseEvent){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, gemmaMMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, gemmaMUp);
}
public function moveNumber(_arg1:Event){
var _local2:MovieClip;
_local2 = (_arg1.currentTarget as MovieClip);
_local2.y = (_local2.y - 3);
_local2.timer--;
if (_local2.timer <= 0){
_local2.removeEventListener(Event.ENTER_FRAME, moveNumber);
_local2.parent.removeChild(_local2);
};
}
public function loadMinervaExpressions(){
var _local1:Array;
mExp = new Expression(stage);
mMouthID = mExp.addPart(minerva.mouth, Expression.ANIMATED);
mEye1ID = mExp.addPart(minerva.eye1, Expression.ANIMATED, true);
mEye2ID = mExp.addPart(minerva.eye2, Expression.ANIMATED, true);
mPupil1ID = mExp.addPart(minerva.eye1.pupil, Expression.ANIMATED);
mPupil2ID = mExp.addPart(minerva.eye2.pupil, Expression.ANIMATED);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.1, 1);
mExp.addPartToState(_local1, mMouthID, "smile", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "big", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "big", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 0);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 0);
mExp.addState("normal", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.25, 1);
mExp.addPartToState(_local1, mMouthID, "small", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "open", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "open", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 6);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 6);
mExp.addState("notice", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.25, 1);
mExp.addPartToState(_local1, mMouthID, "happy", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "big", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "big", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 4);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 4);
mExp.addState("enjoy", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.25, 1);
mExp.addPartToState(_local1, mMouthID, "open2", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "small", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "small", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 2);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 2);
mExp.addState("pleasure", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.2, 0.75);
mExp.addPartToState(_local1, mMouthID, "happy2", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "small", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "small", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 4);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 4);
mExp.addState("over", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.2, 0.75);
mExp.addPartToState(_local1, mMouthID, "closed", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "sad", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "sad", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 0);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 0);
mExp.addState("smaller", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, true, 0.2, 1);
mExp.addPartToState(_local1, mMouthID, "sad", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "open", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "open", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, 0, 4);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, 0, 4);
mExp.addState("revert", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, false, 0.4, 0.5);
mExp.addPartToState(_local1, mMouthID, "smile2", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "sad", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "shut", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, -6, 0);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, -1, 0);
mExp.addState("breastpoke", _local1);
_local1 = [];
mExp.addStateAttributes(_local1, false, 1.4, 0.3);
mExp.addPartToState(_local1, mMouthID, "happy", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye1ID, "shut", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mEye2ID, "shut", NaN, NaN, NaN, NaN);
mExp.addPartToState(_local1, mPupil1ID, null, NaN, NaN, -6, 0);
mExp.addPartToState(_local1, mPupil2ID, null, NaN, NaN, -1, 0);
mExp.addState("bellypoke", _local1);
mExp.setState("normal");
mExp.activate();
}
public function minervaNumberPress(_arg1:Event){
var _local2:MovieClip;
var _local3:String;
var _local4:int;
var _local5:int;
_local2 = (_arg1.target as MovieClip);
_local3 = _local2.name;
if (_local3.charAt(0) == "k"){
_local4 = int(_local3.charAt(1));
minervaKeys.shift();
minervaKeys[minervaKeys.length] = _local4;
createNumber(_local4, minerva, minerva.mouseX, minerva.mouseY);
_local5 = ((((minervaKeys[0] * 1000) + (minervaKeys[1] * 100)) + (minervaKeys[2] * 10)) + minervaKeys[3]);
if (_local5 == GEMMA_CODE){
transition(minerva, Gemma);
};
};
}
function frame1(){
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
gemma = null;
minerva = null;
panel = null;
size = 1;
growth = 0;
zoom = 0;
transitionSrc = null;
transitionDst = null;
gemmaTopBroken = 0;
gemmaTopTimer = 0;
gExp = null;
gemmaKeys = null;
gemmaKeyMC = null;
mExp = null;
while (numChildren) {
removeChildAt(0);
};
stage.addEventListener(Event.RESIZE, updateTransitionBmp);
updateTransitionBmp(null);
if ((((new LocalConnection().domain.indexOf("chan") > -1)) || ((new LocalConnection().domain.indexOf(".ru") > -1)))){
gemma = new Gemma();
gemma.x = GEMMA_X;
gemma.y = GEMMA_Y;
stage.addChild(gemma);
gemma.belly.gotoAndStop(1);
gemma.top1.gotoAndStop(1);
gemma.top2.gotoAndStop(1);
gemma.breast1.gotoAndStop(1);
gemma.breast2.gotoAndStop(1);
gemma.arm1.gotoAndStop(1);
gemma.mouth.gotoAndStop("sad2");
gemma.eye1.gotoAndStop("small");
gemma.eye2.gotoAndStop("small");
gemma.tail.gotoAndStop(1);
gemma.removeChild(gemma.keypad);
_gRect = gemma.breast2.getBounds(stage).union(gemma.top1.getBounds(stage)).union(gemma.top2.getBounds(stage));
_gCover = new Shape();
stage.addChild(_gCover);
_gCover.graphics.beginFill(0);
_gCover.graphics.drawRect(_gRect.x, _gRect.y, _gRect.width, _gRect.height);
_gCover.graphics.endFill();
_gRect.y = (_gRect.y + 170);
_gRect.width = (_gRect.width + 30);
_gRect.height = (_gRect.height + 30);
_gCover.graphics.beginFill(0);
_gCover.graphics.drawRect(_gRect.x, _gRect.y, _gRect.width, _gRect.height);
_gCover.graphics.endFill();
gemma.txt = new TextField();
gemma.tf = new TextFormat();
gemma.tf.size = 32;
gemma.tf.font = "_typewriter";
gemma.tf.bold = true;
gemma.tf.color = 0xFF0000;
gemma.txt.defaultTextFormat = gemma.tf;
gemma.txt.background = true;
gemma.txt.backgroundColor = 0xFFFFFF;
gemma.txt.wordWrap = true;
gemma.txt.x = (gemma.txt.y = 20);
gemma.txt.width = 300;
gemma.txt.height = 300;
gemma.txt.text = (("Hey... welcome to " + new LocalConnection().domain) + ".\nHave fun\n...or whatever.");
stage.addChild(gemma.txt);
gemma.txt = new TextField();
gemma.tf.bold = false;
gemma.tf.size = 14;
gemma.txt.defaultTextFormat = gemma.tf;
gemma.txt.width = 300;
gemma.txt.height = 40;
gemma.txt.text = "http://doom-the-wolf.deviantart.com";
gemma.txt.background = true;
gemma.txt.backgroundColor = 0xFFFFFF;
gemma.txt.x = (stage.stageWidth - gemma.txt.width);
gemma.txt.y = (stage.stageHeight - gemma.txt.height);
stage.addChild(gemma.txt);
} else {
if (Math.random() < 0.05){
loadMinerva();
} else {
loadGemma();
};
};
}
public function gemmaDrop(_arg1:MouseEvent){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, gemmaDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, gemmaDrop);
}
public function updatePanel(_arg1:Event){
if (panel.hitTestPoint(stage.mouseX, stage.mouseY)){
panel.y = (panel.y + (((stage.stageHeight - 100) - panel.y) * 0.5));
} else {
panel.y = (panel.y + ((stage.stageHeight - panel.y) * 0.5));
};
}
public function loadPanel(){
unloadPanel();
panel = new Panel();
stage.addChild(panel);
panel.addEventListener(Event.ENTER_FRAME, updatePanel);
panel.y = stage.stageHeight;
panel.x = 0;
panel._expand.gotoAndStop(1);
panel._revert.gotoAndStop(1);
panel._cont_txt.text = "Continuous";
panel._cont.gotoAndStop(1);
panel._expand._txt.text = "Expand";
panel._revert._txt.text = "Revert";
panel._plus._txt.text = "+";
panel._minus._txt.text = "-";
panel._zero._txt.text = "0";
panel._expand.addEventListener(MouseEvent.MOUSE_DOWN, expand);
panel._revert.addEventListener(MouseEvent.MOUSE_DOWN, revert);
panel._plus.addEventListener(MouseEvent.MOUSE_DOWN, zoomIn);
panel._minus.addEventListener(MouseEvent.MOUSE_DOWN, zoomOut);
panel._cont.addEventListener(MouseEvent.MOUSE_DOWN, setContinuous);
}
public function loadGemmaExpressions(){
gExp = new Expression(stage);
gMouthID = gExp.addPart(gemma.mouth, Expression.ANIMATED, false);
gEye1ID = gExp.addPart(gemma.eye1, Expression.ANIMATED, true);
gEye2ID = gExp.addPart(gemma.eye2, Expression.ANIMATED, true);
gPupil1ID = gExp.addPart(gemma.eye1.pupil, Expression.ANIMATED, false);
gPupil2ID = gExp.addPart(gemma.eye2.pupil, Expression.ANIMATED, false);
gArm1ID = gExp.addPart(gemma.arm1, Expression.MOVABLE, false);
st = [];
gExp.addStateAttributes(st, true, 0.1, 0.5);
gExp.addPartToState(st, gMouthID, "smile", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "open2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "open2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 1, -2);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, -2);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("normal", st);
st = [];
gExp.addStateAttributes(st, true, 0.2, 0.5);
gExp.addPartToState(st, gMouthID, "closed", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 4);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 1, 4);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("notice", st);
st = [];
gExp.addStateAttributes(st, true, 0.3, 1);
gExp.addPartToState(st, gMouthID, "medium", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 1, 8);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("surprised", st);
st = [];
gExp.addStateAttributes(st, true, 0.3, 0.5);
gExp.addPartToState(st, gMouthID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 7);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 7);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("nervous", st);
st = [];
gExp.addStateAttributes(st, true, 0.25, 1);
gExp.addPartToState(st, gMouthID, "happy", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 7);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 7);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("happy", st);
st = [];
gExp.addStateAttributes(st, true, 0.25, 1);
gExp.addPartToState(st, gMouthID, "happy2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "medium", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "medium", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("enjoy", st);
st = [];
gExp.addStateAttributes(st, true, 0.25, 1);
gExp.addPartToState(st, gMouthID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("pressure", st);
st = [];
gExp.addStateAttributes(st, true, 0.25, 1);
gExp.addPartToState(st, gMouthID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "tight2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 8);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("tight", st);
st = [];
gExp.addStateAttributes(st, true, 0.25, 1);
gExp.addPartToState(st, gMouthID, "sad2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 4);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 4);
gExp.addPartToState(st, gArm1ID, "belly", NaN, NaN, NaN, NaN);
gExp.addState("break", st);
st = [];
gExp.addStateAttributes(st, true, 0.25, 1);
gExp.addPartToState(st, gMouthID, "smile", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "medium", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "medium", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 7);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 2, 7);
gExp.addPartToState(st, gArm1ID, "belly", NaN, NaN, NaN, NaN);
gExp.addState("over", st);
st = [];
gExp.addStateAttributes(st, true, 0.2, 0.7);
gExp.addPartToState(st, gMouthID, "open", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "big", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "big", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("revert", st);
st = [];
gExp.addStateAttributes(st, true, 0.2, 0.7);
gExp.addPartToState(st, gMouthID, "happy", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("smaller", st);
st = [];
gExp.addStateAttributes(st, false, 0.4, 0.3);
gExp.addPartToState(st, gMouthID, "happy2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "shut", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("bellypoke", st);
st = [];
gExp.addStateAttributes(st, false, 0.4, 0.3);
gExp.addPartToState(st, gMouthID, "tight", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "shut", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("bellypoke2", st);
st = [];
gExp.addStateAttributes(st, false, 0.4, 0.3);
gExp.addPartToState(st, gMouthID, "smile", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "shut", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gArm1ID, "belly", NaN, NaN, NaN, NaN);
gExp.addState("bellypoke3", st);
st = [];
gExp.addStateAttributes(st, false, 0.3, 0.9);
gExp.addPartToState(st, gMouthID, "happy3", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "tight2", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "small", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 1, 5);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("breastpoke", st);
st = [];
gExp.addStateAttributes(st, false, 0.3, 0.9);
gExp.addPartToState(st, gMouthID, "smile", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "sad", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 0);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 0);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("legpoke", st);
st = [];
gExp.addStateAttributes(st, false, 0.3, 0.9);
gExp.addPartToState(st, gMouthID, "smile", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye1ID, "closed", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gEye2ID, "closed", NaN, NaN, NaN, NaN);
gExp.addPartToState(st, gPupil1ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gPupil2ID, null, NaN, NaN, 0, 5);
gExp.addPartToState(st, gArm1ID, "down", NaN, NaN, NaN, NaN);
gExp.addState("facepoke", st);
gExp.setState("normal");
gExp.activate();
}
public function minervaResize(_arg1:Event){
Algorithms.adjustScreen(minerva, minerva.bg);
}
public function setMinervaSize(_arg1:int){
minerva.breast1.gotoAndStop(_arg1);
minerva.breast2.gotoAndStop(_arg1);
}
public function gemmaDrag(_arg1:MouseEvent){
gemma.x = ((oldX + stage.mouseX) - oldMX);
gemma.y = ((oldY + stage.mouseY) - oldMY);
Algorithms.adjustScreen(gemma, gemma.bg);
}
public function setContinuous(_arg1:Event){
var _local2:MovieClip;
_local2 = (_arg1.currentTarget as MovieClip);
_local2.gotoAndStop((3 - _local2.currentFrame));
growth = 0;
panel._expand._txt.text = "Expand";
panel._revert._txt.text = "Revert";
}
public function minervaZero(_arg1:Event){
minerva.x = MINERVA_X;
minerva.y = MINERVA_Y;
minerva.scaleX = (minerva.scaleY = 1);
Algorithms.adjustScreen(minerva, minerva.bg);
}
public function minervaDraggable(_arg1:int, _arg2:int){
if ((((((((((((((((((((((((((panel.y < (stage.stageHeight - 50))) || (minerva.body.hitTestPoint(_arg1, _arg2, true)))) || (minerva.head.hitTestPoint(_arg1, _arg2, true)))) || (minerva.breast1.hitTestPoint(_arg1, _arg2, true)))) || (minerva.breast2.hitTestPoint(_arg1, _arg2, true)))) || (minerva.arm1.hitTestPoint(_arg1, _arg2, true)))) || (minerva.arm2.hitTestPoint(_arg1, _arg2, true)))) || (minerva.leg1.hitTestPoint(_arg1, _arg2, true)))) || (minerva.leg2.hitTestPoint(_arg1, _arg2, true)))) || (minerva.tail.hitTestPoint(_arg1, _arg2, true)))) || (minerva.ear1.hitTestPoint(_arg1, _arg2, true)))) || (minerva.ear2.hitTestPoint(_arg1, _arg2, true)))) || (minerva.note.hitTestPoint(_arg1, _arg2, true)))){
return (false);
};
return (true);
}
public function gemmaMDown(_arg1:MouseEvent){
if (gemmaDraggable(stage.mouseX, stage.mouseY)){
oldMX = stage.mouseX;
oldMY = stage.mouseY;
oldX = gemma.x;
oldY = gemma.y;
stage.addEventListener(MouseEvent.MOUSE_MOVE, gemmaDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, gemmaDrop);
return;
};
stage.addEventListener(MouseEvent.MOUSE_MOVE, gemmaMMove);
stage.addEventListener(MouseEvent.MOUSE_UP, gemmaMUp);
}
public function endZoom(_arg1:Event){
zoom = 0;
stage.removeEventListener(MouseEvent.MOUSE_UP, endZoom);
}
public function endExpand(_arg1:Event){
if (panel._cont.currentFrame == 1){
growth = 0;
panel._expand._txt.text = "Expand";
panel._revert._txt.text = "Revert";
};
stage.removeEventListener(MouseEvent.MOUSE_UP, endExpand);
}
public function transition(_arg1:MovieClip, _arg2:Class){
transitionSrc = _arg1;
transitionDst = _arg2;
transitionTime = 40;
transitionBmp = null;
transitionBmpTime = 0;
stage.addEventListener(Event.ENTER_FRAME, transitioning);
}
public function createNumber(_arg1:int, _arg2:MovieClip, _arg3:int, _arg4:int){
var _local5:MovieClip;
var _local6:TextField;
var _local7:TextFormat;
_local5 = new MovieClip();
_local6 = new TextField();
_local7 = new TextFormat();
_local7.bold = true;
_local7.size = 18;
_local7.color = 0;
_local6.defaultTextFormat = _local7;
_local6.text = _arg1.toString();
_local6.width = (_local6.textWidth + 5);
_local6.height = (_local6.textHeight + 5);
_local6.selectable = false;
_local5.x = (_arg3 - (_local6.width * 0.5));
_local5.y = (_arg4 - _local6.height);
_local5.addChild(_local6);
_arg2.addChild(_local5);
_local5.timer = 30;
_local5.addEventListener(Event.ENTER_FRAME, moveNumber);
}
public function unloadGemma(){
gemmaKeys = null;
gemma.keypad.k0.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k1.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k2.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k3.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k4.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k5.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k6.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k7.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k8.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k9.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gExp.activate(false);
gExp.destroy();
gExp = null;
gemma.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaMDown);
stage.removeEventListener(Event.ENTER_FRAME, gemmaFrame);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, gemmaDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, gemmaDrop);
stage.removeChild(gemma);
panel.removeEventListener(MouseEvent.MOUSE_DOWN, gemmaZero);
unloadPanel();
}
public function unloadMinerva(){
stage.removeEventListener(Event.ENTER_FRAME, minervaFrame);
stage.removeEventListener(Event.RESIZE, minervaResize);
stage.removeEventListener(MouseEvent.MOUSE_DOWN, minervaMDown);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, minervaDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, minervaDrop);
minerva.note.removeEventListener(MouseEvent.MOUSE_DOWN, minervaNumberPress);
minervaKeys = [0, 0, 0, 0];
minerva.blush.alpha = 0;
mBlush = 0;
mEar1C = [0, 0, 0];
mEar2C = [0, 0, 0];
mLeg1Angle = (mLeg2Angle = 0);
mLegMode = 0;
stage.removeChild(minerva);
unloadPanel();
mExp.activate(false);
mExp.destroy();
mExp = null;
}
public function minervaDrop(_arg1:Event){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, minervaDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, minervaDrop);
}
public function minervaMDown(_arg1:Event){
var _local2:int;
var _local3:int;
_local2 = stage.mouseX;
_local3 = stage.mouseY;
if (minervaDraggable(_local2, _local3)){
oldMX = stage.mouseX;
oldMY = stage.mouseY;
oldX = minerva.x;
oldY = minerva.y;
stage.addEventListener(MouseEvent.MOUSE_MOVE, minervaDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, minervaDrop);
return;
};
if (((minerva.breast1.hitTestPoint(_local2, _local3, true)) || (minerva.breast2.hitTestPoint(_local2, _local3, true)))){
mExp.react("breastpoke");
minerva.poke.x = minerva.mouseX;
minerva.poke.y = minerva.mouseY;
minerva.poke.gotoAndPlay(2);
} else {
if (minerva.body.hitTestPoint(_local2, _local3, true)){
mExp.react("bellypoke");
minerva.poke.x = minerva.mouseX;
minerva.poke.y = minerva.mouseY;
minerva.poke.gotoAndPlay(2);
} else {
if (minerva.ear1.hitTestPoint(_local2, _local3, true)){
mEar1C[1] = 0.07;
minerva.poke.x = minerva.mouseX;
minerva.poke.y = minerva.mouseY;
minerva.poke.gotoAndPlay(2);
} else {
if (minerva.ear2.hitTestPoint(_local2, _local3, true)){
mEar2C[1] = 0.07;
minerva.poke.x = minerva.mouseX;
minerva.poke.y = minerva.mouseY;
minerva.poke.gotoAndPlay(2);
} else {
if (((minerva.leg1.hitTestPoint(_local2, _local3, true)) || (minerva.leg2.hitTestPoint(_local2, _local3, true)))){
mLegMode = ((mLegMode + 1) % 3);
};
};
};
};
};
}
public function gemmaKeyPress(_arg1:Event){
var _local2:MovieClip;
var _local3:int;
_local2 = (_arg1.currentTarget as MovieClip);
_local2.gotoAndStop(2);
gemmaKeyMC = _local2;
gemmaKeys.shift();
gemmaKeys[gemmaKeys.length] = int(_local2.name.slice(1, 2));
createNumber(int(_local2.name.slice(1, 2)), gemma, gemma.mouseX, gemma.mouseY);
gemma.poke.x = gemma.mouseX;
gemma.poke.y = gemma.mouseY;
gemma.poke.gotoAndPlay(2);
_local3 = ((((gemmaKeys[0] * 1000) + (gemmaKeys[1] * 100)) + (gemmaKeys[2] * 10)) + gemmaKeys[3]);
if (_local3 == MINERVA_CODE){
transition(gemma, Minerva);
};
stage.addEventListener(MouseEvent.MOUSE_UP, gemmaKeyRelease);
}
public function setGemmaSize(_arg1:int){
var _local2:Matrix;
var _local3:int;
var _local4:int;
var _local5:Boolean;
var _local6:Boolean;
_arg1 = ((_arg1)>GEMMA_MAX_SIZE) ? GEMMA_MAX_SIZE : _arg1;
_arg1 = ((_arg1)<1) ? 1 : _arg1;
gemma.belly.gotoAndStop(_arg1);
_local2 = gemma.arm1.transform.matrix;
_local2.c = ((_arg1 / GEMMA_MAX_SIZE) * 0.05);
gemma.arm1.transform.matrix = _local2;
_arg1 = ((gemmaTopBroken)==2) ? (_arg1 + GEMMA_UNCLOTHED_FRAME) : _arg1;
if (!(gemmaTopBroken % 2)){
gemma.breast1.gotoAndStop(_arg1);
gemma.breast2.gotoAndStop(_arg1);
gemma.top1.gotoAndStop(_arg1);
gemma.top2.gotoAndStop(_arg1);
};
_local3 = gemma.getChildIndex(gemma.breast1);
_local4 = gemma.getChildIndex(gemma.fur);
_local5 = (((gemma.breast1.currentFrame < GEMMA_BREAST_FRAME)) || ((gemma.breast1.currentFrame >= GEMMA_UNCLOTHED_FRAME)));
_local6 = (_local4 < _local3);
if (_local5 == _local6){
gemma.swapChildren(gemma.fur, gemma.breast1);
};
}
public function updateTransitionBmp(_arg1:Event){
var _local2:int;
var _local3:int;
_local2 = stage.stageWidth;
_local3 = stage.stageHeight;
if (transitionBmp1){
transitionBmp1.dispose();
};
if (transitionBmp2){
transitionBmp2.dispose();
};
if (transitionBmp3){
transitionBmp3.dispose();
};
if (transitionBmp4){
transitionBmp4.dispose();
};
transitionBmp1 = new BitmapData(_local2, _local3, false, 0x808080);
transitionBmp2 = new BitmapData(_local2, _local3, false, 0x808080);
transitionBmp3 = new BitmapData(_local2, _local3, false, 0x808080);
transitionBmp4 = new BitmapData(_local2, _local3, false, 0x808080);
generateBmp(transitionBmp1);
generateBmp(transitionBmp2);
generateBmp(transitionBmp3);
generateBmp(transitionBmp4);
}
public function gemmaDraggable(_arg1:int, _arg2:int):Boolean{
if ((((((((((((((((((((((((((((panel.y < (stage.stageHeight - 50))) || (gemma.body.hitTestPoint(_arg1, _arg2, true)))) || (gemma.breast1.hitTestPoint(_arg1, _arg2, true)))) || (gemma.breast2.hitTestPoint(_arg1, _arg2, true)))) || (gemma.backhair.hitTestPoint(_arg1, _arg2, true)))) || (gemma.belly.hitTestPoint(_arg1, _arg2, true)))) || (gemma.leg2.hitTestPoint(_arg1, _arg2, true)))) || (gemma.arm1.hitTestPoint(_arg1, _arg2, true)))) || (gemma.arm2.hitTestPoint(_arg1, _arg2, true)))) || (gemma.tail.hitTestPoint(_arg1, _arg2, true)))) || (gemma.blade.hitTestPoint(_arg1, _arg2, true)))) || (gemma.hair1.hitTestPoint(_arg1, _arg2, true)))) || (gemma.hair2.hitTestPoint(_arg1, _arg2, true)))) || (gemma.keypad.hitTestPoint(_arg1, _arg2, true)))){
return (false);
};
return (true);
}
public function loadMinerva(){
minerva = new Minerva();
minerva.x = MINERVA_X;
minerva.y = MINERVA_Y;
minerva.body.gotoAndStop(1);
minerva.poke.gotoAndStop(1);
stage.addChild(minerva);
stage.addEventListener(Event.ENTER_FRAME, minervaFrame);
stage.addEventListener(Event.RESIZE, minervaResize);
stage.addEventListener(MouseEvent.MOUSE_DOWN, minervaMDown);
loadMinervaExpressions();
loadPanel();
panel._info.text = "Interactive Minerva breast expansion.\nDrawn, animated and programmed by Doom the wolf.\nhttp://doom-the-wolf.deviantart.com";
panel._zero.addEventListener(MouseEvent.MOUSE_DOWN, minervaZero);
size = 1;
growth = 0;
setMinervaSize(size);
mB1X = minerva.breast1.x;
mB1Y = minerva.breast1.y;
mB2X = minerva.breast2.x;
mB2Y = minerva.breast2.y;
minerva.blush.alpha = 0;
mBlush = 0;
mEar1C = [0, 0, 0];
mEar2C = [0, 0, 0];
mLeg1Angle = (mLeg2Angle = 0);
mLegMode = 0;
minerva.leg1.gotoAndStop(1);
minerva.leg2.gotoAndStop(1);
minerva.note.addEventListener(MouseEvent.MOUSE_DOWN, minervaNumberPress);
minervaKeys = [0, 0, 0, 0];
}
public function gemmaResize(_arg1:Event){
Algorithms.adjustScreen(gemma, gemma.bg);
}
public function gemmaMUp(_arg1:MouseEvent){
var _local2:int;
var _local3:int;
var _local4:Boolean;
_local2 = stage.mouseX;
_local3 = stage.mouseY;
_local4 = false;
if ((((gemmaTopBroken == 1)) || (gExp.reacting))){
} else {
if (gemma.belly.ellipse.hitTestPoint(_local2, _local3, true)){
if (size < 100){
gExp.react("bellypoke2", 20);
} else {
if (size < 370){
gExp.react("bellypoke", 20);
} else {
gExp.react("bellypoke3", 20);
};
};
_local4 = true;
} else {
if (((gemma.breast1.hitTestPoint(_local2, _local3, true)) || (gemma.breast2.hitTestPoint(_local2, _local3, true)))){
gExp.react("breastpoke", 20);
_local4 = true;
} else {
if (((gemma.leg2.hitTestPoint(_local2, _local3, true)) || (gemma.belly.hitTestPoint(_local2, _local3, true)))){
gExp.react("legpoke", 20);
_local4 = true;
} else {
if (((gemma.head.hitTestPoint(_local2, _local3, true)) || (gemma.hair1.hitTestPoint(_local2, _local3, true)))){
gExp.react("facepoke", 20);
_local4 = true;
};
};
};
};
};
if (_local4){
gemma.poke.x = gemma.mouseX;
gemma.poke.y = gemma.mouseY;
gemma.poke.gotoAndPlay(2);
};
stage.removeEventListener(MouseEvent.MOUSE_MOVE, gemmaMMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, gemmaMUp);
}
public function generateBmp(_arg1:BitmapData){
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Number;
var _local8:int;
var _local9:Number;
var _local10:int;
_local2 = stage.stageWidth;
_local3 = stage.stageHeight;
_local4 = 0;
_local10 = 0;
while (_local10 < _local3) {
_local4 = (Math.random() * 25);
_local5 = 0;
_local6 = (Math.random() * 0xFF);
_local7 = (Math.random() * 0.25);
_local8 = ((-0.25 + (Math.random() * 0.5)) * _local2);
_local9 = (-0.5 + Math.random());
while (_local5 < _local4) {
_local5++;
var _temp1 = _local10;
_local10 = (_local10 + 1);
_arg1.fillRect(new Rectangle(_local8, _temp1, (((0.75 + _local7) * _local2) - (_local5 * 3)), 1), ((((_local6 + (_local5 * _local9)) & 0xFF) << 16) | 0x8080));
};
};
}
public function minervaDrag(_arg1:Event){
minerva.x = ((oldX + stage.mouseX) - oldMX);
minerva.y = ((oldY + stage.mouseY) - oldMY);
Algorithms.adjustScreen(minerva, minerva.bg);
}
public function loadGemma(){
gemma = new Gemma();
stage.addChild(gemma);
gemma.x = GEMMA_X;
gemma.y = GEMMA_Y;
gemma.tail.gotoAndStop(1);
gemma.addEventListener(MouseEvent.MOUSE_DOWN, gemmaMDown);
stage.addEventListener(Event.ENTER_FRAME, gemmaFrame);
stage.addEventListener(Event.RESIZE, gemmaResize);
gemma.poke.mouseEnabled = false;
gemma.keypad.k0.gotoAndStop(1);
gemma.keypad.k1.gotoAndStop(1);
gemma.keypad.k2.gotoAndStop(1);
gemma.keypad.k3.gotoAndStop(1);
gemma.keypad.k4.gotoAndStop(1);
gemma.keypad.k5.gotoAndStop(1);
gemma.keypad.k6.gotoAndStop(1);
gemma.keypad.k7.gotoAndStop(1);
gemma.keypad.k8.gotoAndStop(1);
gemma.keypad.k9.gotoAndStop(1);
gemma.keypad.k0.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k1.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k2.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k3.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k4.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k5.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k6.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k7.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k8.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
gemma.keypad.k9.addEventListener(MouseEvent.MOUSE_DOWN, gemmaKeyPress);
loadGemmaExpressions();
loadPanel();
panel._info.text = "Interactive pregnant Gemma.\nDrawn, animated and programmed by Doom the wolf.\nhttp://doom-the-wolf.deviantart.com";
panel._zero.addEventListener(MouseEvent.MOUSE_DOWN, gemmaZero);
size = (growth = 0);
zoom = 0;
gemmaTopBroken = 0;
setGemmaSize(1);
gB1X = gemma.breast1.x;
gB1Y = gemma.breast1.y;
gB2X = gemma.breast2.x;
gB2Y = gemma.breast2.y;
gT1X = gemma.top1.x;
gT1Y = gemma.top1.y;
gemmaKeys = [0, 0, 0, 0];
gemmaKeyMC = null;
}
public function revert(_arg1:Event){
if (growth < 0){
growth = 0;
panel._expand._txt.text = "Expand";
panel._revert._txt.text = "Revert";
} else {
growth = -1;
panel._expand._txt.text = "Expand";
panel._revert._txt.text = "Reverting";
};
stage.addEventListener(MouseEvent.MOUSE_UP, endExpand);
}
}
}//package gemmaMinerva_fla
Section 22
//Gemma (Gemma)
package {
import flash.display.*;
public dynamic class Gemma extends MovieClip {
public var water:MovieClip;
public var eye2:MovieClip;
public var eye1:MovieClip;
public var bg:MovieClip;
public var tail:MovieClip;
public var leg2:MovieClip;
public var arm2:MovieClip;
public var backhair:MovieClip;
public var arm1:MovieClip;
public var top1:MovieClip;
public var fur:MovieClip;
public var breast1:MovieClip;
public var hair2:MovieClip;
public var drops:MovieClip;
public var poke:MovieClip;
public var breast2:MovieClip;
public var top2:MovieClip;
public var body:MovieClip;
public var blade:MovieClip;
public var mouth:MovieClip;
public var nose:MovieClip;
public var keypad:MovieClip;
public var hair1:MovieClip;
public var belly:MovieClip;
public var head:MovieClip;
}
}//package
Section 23
//Minerva (Minerva)
package {
import flash.display.*;
public dynamic class Minerva extends MovieClip {
public var blush:MovieClip;
public var leg1:MovieClip;
public var eye2:MovieClip;
public var bg:MovieClip;
public var tail:MovieClip;
public var leg2:MovieClip;
public var arm2:MovieClip;
public var eye1:MovieClip;
public var arm1:MovieClip;
public var breast1:MovieClip;
public var rock:MovieClip;
public var poke:MovieClip;
public var breast2:MovieClip;
public var body:MovieClip;
public var ear1:MovieClip;
public var ear2:MovieClip;
public var mouth:MovieClip;
public var head:MovieClip;
public var note:MovieClip;
}
}//package
Section 24
//Panel (Panel)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Panel extends MovieClip {
public var _revert:MovieClip;
public var _cont:MovieClip;
public var _minus:MovieClip;
public var _cont_txt:TextField;
public var _zero:MovieClip;
public var _plus:MovieClip;
public var _info:TextField;
public var _expand:MovieClip;
}
}//package