Frame 1
function updateLine() {
if (!answer) {
w0_txt.text = "";
w1_txt.text = "";
w2_txt.text = "";
updateBar();
return(undefined);
}
w0_txt.text = Math.floor(answer[0] * 10) * 0.1;
w1_txt.text = Math.floor(answer[1] * 10) * 0.1;
w2_txt.text = Math.floor(answer[2] * 10) * 0.1;
mc.clear();
if (show_solution) {
updateProblem(mc, area, points, answer, solution);
} else {
updateProblem(mc, area, points, answer, null);
}
updateBar();
}
function updateBar() {
bar.clear();
if (answer) {
bar.lineStyle(4, 255);
bar.beginFill(153);
} else {
bar.lineStyle(4, 1118481);
bar.beginFill(0);
}
drawRoundRect(bar, 0, 0, 200, 30, 4);
bar.endFill();
if (!answer) {
return(undefined);
}
var _local1 = evaluateProblem(pList, answer);
if (_local1 == 1) {
bar.lineStyle(4, 16737894);
bar.beginFill(16711680);
} else {
bar.lineStyle(4, 16711680);
bar.beginFill(10027008);
}
drawRoundRect(bar, 0, 0, _local1 * 200, 30, 4);
bar.endFill();
var _local2 = (size - 1) / (maxSize - 1);
if (_local2 == 1) {
bar.lineStyle(4, 65280);
bar.beginFill(65280);
} else {
bar.lineStyle(4, 52224);
bar.beginFill(39168);
}
drawRoundRect(bar, 0, 0, _local2 * 200, 30, 4);
bar.endFill();
}
function drawRoundRect(mc, x0, y0, w0, h0, round) {
var _local1 = round;
_local1 = Math.min(round, w0 * 0.5);
if (isNaN(round) || (isNaN(_local1))) {
_local1 = 0;
}
mc.moveTo(_local1, 0);
mc.lineTo(w0 - _local1, 0);
mc.curveTo(w0, 0, w0, round);
mc.lineTo(w0, h0 - round);
mc.curveTo(w0, h0, w0 - _local1, h0);
mc.lineTo(_local1, h0);
mc.curveTo(0, h0, 0, h0 - round);
mc.lineTo(0, round);
mc.curveTo(0, 0, _local1, 0);
}
function setState(str) {
if ((condition != "") || (state == str)) {
return(undefined);
}
if (!states[str]) {
trace(("ERROR: State '" + str) + "' doesn't exist");
}
var _local1;
for (_local1 in states[str]) {
curState[_local1] = states[str][_local1];
}
curState.state = (state = str);
furret.head.mouth.gotoAndPlay(curState.mouth);
furret.head.eye1.gotoAndPlay(curState.eye1);
furret.head.eye2.gotoAndPlay(curState.eye2);
furret.head.eye1.pupil._x = p1X + curState.p1X;
furret.head.eye1.pupil._y = p1Y + curState.p1Y;
furret.head.eye2.pupil._x = p2X + curState.p2X;
furret.head.eye2.pupil._y = p2Y + curState.p2Y;
offset = curState.offset;
frequency = curState.frequency;
}
function setSize() {
size = Math.max(size, 1);
size = Math.min(size, maxSize);
var _local1 = Math.floor(size);
_local1 = Math.max(size, 1);
furret.belly.gotoAndStop(_local1);
furret.belly2.gotoAndStop(_local1);
updateBar();
}
function react(str, t) {
if (t) {
timer = t;
_root.onEnterFrame = function () {
if (timer <= 0) {
delete this.onEnterFrame;
condition = "";
setState(curState.state);
}
};
}
condition = "";
var _local3 = curState.state;
state = "";
setState(str);
curState.state = _local3;
condition = "react";
}
function blush_on() {
blushing = 1;
}
function blush_off() {
blushing = 0;
}
function blush() {
blushing = 2;
}
function highSin(x, waveLen, effect) {
var _local1 = Math.sin(x + (Math.cos(x) * effect));
return(_local1);
}
function movePart(p, n) {
if (p._currentframe == 1) {
p.gotoAndPlay(n);
}
}
function selectRubPoint() {
sensitive = rubPoints[Math.floor(Math.random() * rubPoints.length)];
rubCircle._x = sensitive._x;
rubCircle._y = sensitive._y;
rubCircle._alpha = 0;
rubDist = Infinity;
energy = maxRubEnergy;
if ((!furret.speech_mc._visible) || ((furret.speech_mc.letter >= furret.speech_mc.phrase.length) && (furret.speech_mc.timer < 20))) {
var _local1 = sayRubPoint();
say(furret.speech_mc, _local1[0], _local1[1]);
}
}
function sayRubPoint() {
if ((!sensitive) || (curMaxSize <= size)) {
return(null);
}
var _local5 = sensitive._x - furret._xmouse;
var _local4 = sensitive._y - furret._ymouse;
var _local6 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
var _local3 = Math.random();
if (((!rubbing) || (_local6 > farRubDist)) || ((_local6 > nearRubDist) && (!hittingFurret(_root._xmouse, _root._ymouse)))) {
var _local2 = 6;
switch (true) {
case _local3 < (1 / _local2) :
return([("Rub my " + sensitive._name) + ".", "talk"]);
case _local3 < (2 / _local2) :
return([("The " + sensitive._name) + "!", "talk"]);
case _local3 < (3 / _local2) :
return([("My... " + sensitive._name) + ".", "talk"]);
case _local3 < (4 / _local2) :
return(["Rub me... on my " + sensitive._name, "talk"]);
case _local3 < (5 / _local2) :
return([("It's in my " + sensitive._name) + " now!", "talk"]);
}
return([("I feel it in my " + sensitive._name) + ".", "talk"]);
}
if (_local6 < minRubDist) {
blush();
return(rubHit[Math.floor(Math.random() * rubHit.length)]);
}
if (_local6 < nearRubDist) {
return(rubClose[Math.floor(Math.random() * rubClose.length)]);
}
if (Math.abs(_local5) > Math.abs(_local4)) {
if (_local5 > 0) {
return(rubRight[Math.floor(Math.random() * rubRight.length)]);
}
return(rubLeft[Math.floor(Math.random() * rubLeft.length)]);
}
if (_local4 > 0) {
return(rubDown[Math.floor(Math.random() * rubDown.length)]);
}
return(rubUp[Math.floor(Math.random() * rubUp.length)]);
}
function hittingFurret(x0, y0) {
if (furret.breast1.hitTest(x0, y0, true)) {
return(true);
}
if (furret.belly.hitTest(x0, y0, true)) {
return(true);
}
if (furret.body.hitTest(x0, y0, true)) {
return(true);
}
if (furret.leg1.hitTest(x0, y0, true)) {
return(true);
}
if (furret.leg2.hitTest(x0, y0, true)) {
return(true);
}
if (furret.arm1.hitTest(x0, y0, true)) {
return(true);
}
if (furret.arm2.hitTest(x0, y0, true)) {
return(true);
}
if (furret.tail.hitTest(x0, y0, true)) {
return(true);
}
if (furret.head.hitTest(x0, y0, true)) {
return(true);
}
return(false);
}
function noHand() {
if (metal) {
return(true);
}
if (circle_mc.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (rect_mc.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (reset_view.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (furret.parallel_box.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (furret.box_cables.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (furret.upper_box.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (furret.machine_mc.top_icon.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (furret.machine_mc.skirt_icon.hitTest(_root._xmouse, _root._ymouse, true)) {
return(true);
}
if (_root._xmouse < 220) {
return(true);
}
return(false);
}
function kick() {
blush();
if ((Math.random() < 0.05) && ((!furret.speech_mc._visible) || (furret.speech_mc.timer <= 20))) {
var _local13 = kickPhrase[Math.floor(Math.random() * kickPhrase.length)];
say(furret.speech_mc, _local13[0], _local13[1]);
}
var _local5 = new Object();
var _local2 = furret.belly.ellipse;
var _local11 = Math.random();
var _local12 = (Math.random() * 2) * Math.PI;
_local5.radius = 5 + (Math.random() * 11);
_local5.turn = (_local11 * (size - 1)) / (FINAL_SIZE - 1);
_local5.angle = _local12;
_local5.timer = (_local5.maxTimer = 2 + Math.ceil(Math.random() * 5));
var _local8;
var _local7;
var _local4;
var _local3;
var _local6;
var _local9 = true;
var _local10 = 20;
do {
_local10--;
_local8 = (_local11 * Math.cos(_local12)) * ((_local2._width * 0.5) - _local5.radius);
_local7 = (_local11 * Math.sin(_local12)) * ((_local2._height * 0.5) - _local5.radius);
var _local1 = 0;
while (_local1 < kickList.length) {
_local4 = kickList[_local1]._x - (_local2._x + _local8);
_local3 = kickList[_local1]._y - (_local2._y + _local7);
_local6 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
if (_local6 < (kickList[_local1].radius + _local5.radius)) {
_local9 = true;
break;
}
_local1++;
}
} while ((!_local9) && (_local10 > 0));
if (!_local10) {
trace("ERROR!! No space for more kicks");
return(undefined);
}
_local5._x = _local2._x + _local8;
_local5._y = _local2._y + _local7;
kickList.push(_local5);
}
function drawKick(mc, kick) {
var _local5 = 1 - Math.abs(((kick.timer - (kick.maxTimer * 0.5)) * 2) / kick.maxTimer);
var _local2 = {x:kick._x, y:kick._y};
var _local6 = Math.PI - kick.angle;
var _local3 = (MIN_KICK_SIZE + (_local5 * INV_MIN_KICK_SIZE)) * kick.radius;
var _local12 = _local3 * (MIN_LIGHT_RADIUS + ((MAX_LIGHT_RADIUS - MIN_LIGHT_RADIUS) * (1 - _local5)));
var _local4 = ((1 - kick.turn) * 0.75) + 0.25;
var _local11 = (_local3 * _local5) * kick.turn;
var _local8 = rotate(_local6, {x:(-_local4) * _local11, y:0}, {x:0, y:0});
var _local10 = _local8.x;
var _local9 = _local8.y;
if (Math.abs(kick.turn) < 0.01) {
_local10 = Math.sin(kick.angle) * -0.1;
_local9 = Math.cos(kick.angle) * -0.1;
}
mc.lineStyle(1, 0, 50);
drawEllipse(kicks_mc, _local2.x, _local2.y, _local3, _local4, _local6, 5);
mc.lineStyle();
mc.beginFill(FURRET_LIGHT_COLOR);
drawEllipse(kicks_mc, _local2.x - _local10, _local2.y - _local9, _local3 + 1, _local4, _local6, 5);
mc.endFill();
}
function updateHand() {
hand_mc._x = furret._xmouse;
hand_mc._y = furret._ymouse;
var _local3 = getHandValues();
xSpin = xSpin + ((_local3[0] - xSpin) * 0.2);
ySpin = ySpin + ((_local3[1] - ySpin) * 0.2);
if (_local3.length >= 3) {
zSpin = zSpin + ((_local3[2] - zSpin) * 0.2);
} else {
zSpin = zSpin + ((-zSpin) * 0.2);
}
if (xSpin > maxSpin) {
xSpin = maxSpin;
} else if (xSpin < (-maxSpin)) {
xSpin = -maxSpin;
}
if (ySpin > maxSpin) {
ySpin = maxSpin;
} else if (ySpin < (-maxSpin)) {
ySpin = -maxSpin;
}
if (zSpin > maxSpin) {
zSpin = maxSpin;
} else if (zSpin < (-maxSpin)) {
zSpin = -maxSpin;
}
var _local6 = zSpin / 90;
if (ySpin > 0) {
hand_mc.wrist_mc.swapDepths(wristBack);
} else {
hand_mc.wrist_mc.swapDepths(wristFront);
}
if (xSpin < 0) {
hand_mc.thumb_mc.swapDepths(thumbBack);
} else {
hand_mc.thumb_mc.swapDepths(thumbFront);
}
var _local4 = xSpin / 90;
var _local5 = ySpin / 90;
var _local1 = Math.abs(_local4);
var _local2 = Math.abs(_local5);
var _local7 = (((_local4 * _local5) * 90) * (1 - _local6)) + (_local6 * zSpin);
hand_mc.glove_mc._xscale = gloveMaxXScale - (((gloveMaxXScale - gloveMinXScale) * _local1) * (1 - _local2));
hand_mc.wrist_mc._xscale = wristMaxXScale - (((wristMaxXScale - wristMinXScale) * _local1) * (1 - _local2));
hand_mc.thumb_mc._x = origThumbX + (((endThumbX - origThumbX) * _local1) * (1 - _local2));
hand_mc.glove_mc._yscale = gloveMaxYScale - (((gloveMaxYScale - gloveMinYScale) * _local2) * (1 - _local1));
hand_mc.thumb_mc._yscale = hand_mc.glove_mc._yscale;
hand_mc.wrist_mc._yscale = wristMinYScale + (((wristMaxYScale - wristMinYScale) * _local2) * (1 - _local1));
hand_mc.wrist_mc._y = origWristY + (((endWristY - origWristY) * _local2) * (1 - _local1));
hand_mc._rotation = _local7;
}
function getHandValues() {
var _local4 = [];
var _local2;
var _local3 = [];
var _local8 = _root._xmouse;
var _local6 = furret._xmouse;
var _local7 = _root._ymouse;
var _local5 = furret._ymouse;
if (furret.breast1.hitTest(_local8, _local7, true)) {
_local2 = furret.breast1.ellipse;
_local3 = ellipseHandValues(_local6, _local5, _local2._x + furret.breast1._x, _local2._y + furret.breast1._y, _local2._width * 0.5, _local2._height * 0.5, 0.5);
_local3[2] = 30;
return(_local3);
}
if (furret.belly.hitTest(_local8, _local7, true)) {
_local2 = furret.belly.ellipse;
_local3 = ellipseHandValues(_local6, _local5, _local2._x + furret.belly._x, _local2._y + furret.belly._y, _local2._width * 0.5, _local2._height * 0.5, size / FINAL_SIZE);
_local3[2] = 30;
return(_local3);
}
if (furret.breast2.hitTest(_local8, _local7, true)) {
_local2 = furret.breast2.ellipse;
_local3 = ellipseHandValues(_local6, _local5, _local2._x + furret.breast2._x, _local2._y + furret.breast2._y, _local2._width * 0.5, _local2._height * 0.5, 0.5);
_local3[2] = 30;
return(_local3);
}
if (furret.leg1.hitTest(_local8, _local7, true)) {
_local4 = closestLine(_local6, _local5, leg1Poly);
return(lineHandValues(_local6, _local5, _local4[0].x0, _local4[0].y0, _local4[1].x0, _local4[1].y0, 30, 1));
}
if (furret.leg2.hitTest(_local8, _local7, true)) {
_local4 = closestLine(_local6, _local5, leg2Poly);
return(lineHandValues(_local6, _local5, _local4[0].x0, _local4[0].y0, _local4[1].x0, _local4[1].y0, 30, 1));
}
if (furret.head.hitTest(_local8, _local7, true)) {
_local2 = furret.head.ellipse;
_local3 = ellipseHandValues(_local6, _local5, _local2._x + furret.head._x, _local2._y + furret.head._y, _local2._width * 0.5, _local2._height * 0.5, 1);
_local3[2] = 30;
return(_local3);
}
return([0, 0, 0]);
}
function lineHandValues(x0, y0, aX, aY, bX, bY, maxDist, depth) {
var _local3 = {x:aX, y:aY};
var _local13 = {x:bX, y:bY};
var _local6 = {x:x0, y:y0};
var _local2 = Math.atan2(bY - aY, bX - aX);
var _local5 = rotate(_local2, _local6, _local3);
var _local8 = _local5.y - _local3.y;
var _local7 = _local8 / maxDist;
var _local1 = ((_local2 * 180) / Math.PI) - 90;
while (_local1 > 90) {
_local1 = _local1 - 180;
}
while (_local1 <= -90) {
_local1 = _local1 + 180;
}
var _local4 = (_local7 * depth) * 90;
return([_local4, 0, _local1]);
}
function closestLine(x0, y0, p) {
var _local16 = -1;
var _local9 = Infinity;
var _local8;
var _local7;
var _local6;
var _local5 = Infinity;
var _local17 = {x:x0, y:y0};
var _local2;
var _local4;
var _local13;
var _local12;
var _local1 = 0;
while (_local1 < (p.length - 1)) {
_local2 = {x:p[_local1].x0, y:p[_local1].y0};
_local4 = {x:p[_local1 + 1].x0, y:p[_local1 + 1].y0};
_local12 = Math.atan2(_local4.y - _local2.y, _local4.x - _local2.x);
_local13 = rotate(_local12, _local17, _local2);
_local8 = Math.abs(_local13.y - _local2.y);
dX = _local2.x - x0;
dY = _local2.y - y0;
_local7 = Math.sqrt((dX * dX) + (dY * dY));
dX = _local4.x - x0;
dY = _local4.y - y0;
_local6 = Math.sqrt((dX * dX) + (dY * dY));
if (((_local8 < _local9) && (_local7 <= (_local5 + 0.1))) || (_local6 <= (_local5 + 0.1))) {
_local16 = _local1;
_local9 = _local8;
_local5 = Math.min(_local7, _local6);
}
_local1++;
}
return([p[_local16], p[_local16 + 1]]);
}
function ellipseHandValues(x0, y0, cX, cY, maxX, maxY, depth) {
var _local2 = (depth * (x0 - cX)) / maxX;
var _local1 = (depth * (y0 - cY)) / maxY;
return([_local2 * 90, _local1 * 90, 0]);
}
function getAverage(p, chosen) {
var _local5 = {x0:0, y0:0};
var _local4;
if (!chosen.length) {
return(_local5);
}
var _local1 = 0;
while (_local1 < chosen.length) {
_local4 = normalize(p[chosen[_local1]].x1 - p[chosen[_local1]].x0, p[chosen[_local1]].y1 - p[chosen[_local1]].y0);
_local5.x0 = _local5.x0 + _local4.x0;
_local5.y0 = _local5.y0 + _local4.y0;
_local1++;
}
_local5.x0 = _local5.x0 / chosen.length;
_local5.y0 = _local5.y0 / chosen.length;
return(_local5);
}
function normalize(x0, y0) {
var _local1 = Math.atan2(y0, x0);
return({x0:Math.cos(_local1), y0:Math.sin(_local1)});
}
function findNearestHandPoints(p, n) {
var _local5 = furret._xmouse;
var _local4 = furret._ymouse;
var _local2 = [];
var _local1 = 0;
while ((_local1 < n) && (_local1 < p.length)) {
_local2[_local1] = findNearestHandPoint(_local5, _local4, p, _local2);
_local1++;
}
return(_local2);
}
function findNearestHandPoint(x0, y0, p, np) {
var _local4 = true;
var _local9 = Infinity;
var _local8 = -1;
var _local2 = 0;
while (_local2 < p.length) {
_local4 = true;
var _local1 = 0;
while (_local1 < np.length) {
if (np[_local1] == _local2) {
_local4 = false;
break;
}
_local1++;
}
if (!_local4) {
} else {
var _local7 = p[_local2].x0 - x0;
var _local6 = p[_local2].y0 - y0;
var _local3 = Math.sqrt((_local7 * _local7) + (_local6 * _local6));
if (_local8 == -1) {
_local8 = _local2;
_local9 = _local3;
} else if (_local3 < _local9) {
_local8 = _local2;
_local9 = _local3;
}
}
_local2++;
}
return(_local8);
}
function speech_on() {
speaking = true;
skip_mc._visible = true;
next_phrase_mc._visible = true;
}
function speech_off() {
speaking = false;
skip_mc._visible = false;
next_phrase_mc._visible = false;
}
function clear_speech() {
speech_mc._visible = false;
furret.speech_mc._visible = false;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
cancel_speech();
speech_list = [];
speech_off();
}
function cancel_speech() {
delete furret.speech_mc.onEnterFrame;
delete furret.speech_mc.phrase;
delete furret.speech_mc.letter;
delete furret.speech_mc.timer;
furret.speech_mc._txt.text = "";
furret.speech_mc._visible = false;
delete speech_mc.onEnterFrame;
delete speech_mc.phrase;
delete speech_mc.letter;
delete speech_mc.timer;
speech_mc._txt.text = "";
speech_mc._visible = false;
}
function skip_phrase() {
var _local1;
if (furret.speech_mc._visible) {
if (furret.speech_mc.reacting) {
furret.speech_mc.reacting = false;
condition = "";
setState(curState.state);
}
_local1 = furret.speech_mc.phrase;
cancel_speech();
furret.speech_mc.onFinishSpeech(_local1);
} else {
if (speech_mc.reacting) {
speech_mc.reacting = false;
condition = "";
setState(curState.state);
}
_local1 = speech_mc.phrase;
cancel_speech();
speech_mc.onFinishSpeech(_local1);
}
}
function skip_speech() {
if (furret.speech_mc.reacting) {
furret.speech_mc.reacting = false;
condition = "";
setState(curState.state);
}
clear_speech();
switch (part) {
case 0 :
unlockPart1("Yes, please! Do it!");
return;
case 1 :
if (!metal) {
unlockPart2("Energy points");
}
return;
case 2 :
unlockPart3("Oh, yes!");
}
}
function startConversation1() {
reset_view.onPress();
speak(speech_mc, "Hello, Furret. Welcome to the fertility lab.", null);
speak(furret.speech_mc, "Are you going to make me pregnant?", "question");
speak(speech_mc, "Yes. This machine will cause you to become pregnant. It can control how much time is left before your due date.", null);
speak(speech_mc, "For safety reasons, we leave an entire week for your body to accomodate to its new state. Are you ready?", null);
speak(furret.speech_mc, "You can make my tummy get big right in front of me?... Wow!", "wonder");
speak(furret.speech_mc, "Yes, please! Do it!", "yes");
furret.speech_mc.onFinishSpeech = unlockPart1;
}
function unlockPart1(ph) {
if (ph.indexOf("Yes, please!") > -1) {
part = 1;
machineEnabled = true;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
speech_off();
} else {
nextSpeech();
}
}
function startAltered2() {
reset_view.onPress();
speak(speech_mc, "Your metal bra is interfering with my machine. Could you take it off?", null);
speak(furret.speech_mc, "Huh? I... left the key at home.", "sad");
speak(furret.speech_mc, "Isn't there anything you can do about it?", "wonder");
speak(speech_mc, "I'm afraid not. You'll have to come back some other day.", null);
}
function startConversation2() {
reset_view.onPress();
speak(speech_mc, "My machine has analyzed your body. The results are displayed on this graph.", null);
speak(furret.speech_mc, "What does all that mean?", "curious");
speak(speech_mc, "Now, Furret. I will explain how this works. Listen carefully.", null);
speak(speech_mc, "Your body is filled with positive and negative energy points, which appear here as red and blue dots.", null);
speak(speech_mc, "I will adjust my machine to emit a specific wavelength that resonates with your body's configuration.", null);
speak(speech_mc, "On this graph, the wave appears as a red and blue line.", null);
speak(speech_mc, "I will make sure that all the red points are on the red side of the line and all the blue points are on the blue side.", null);
speak(speech_mc, "Energy points that are on the wrong side of the line will limit the progress of your pregnancy.", null);
speech_mc.onFinishSpeech = unlockPart2;
}
function unlockPart2(ph) {
if (ph.indexOf("Energy points") > -1) {
part = 2;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
changeEnabled = true;
speech_off();
startConversation3();
} else {
nextSpeech();
}
}
function startConversation3() {
reset_view.onPress();
speak(furret.speech_mc, "Am I really supposed to be naked?", "question");
speak(speech_mc, "It isn't necessary, but it will help with the process.", null);
speak(speech_mc, "In order for this to work, I will need you to do something.", null);
speak(furret.speech_mc, "Huh? What is it? Is it hard?", "talk");
speak(speech_mc, "The wave emitted by my machine enables your body to develop its pregnancy, but it does not do it on its own.", null);
speak(speech_mc, "Using the energy of the wave, your body develops by itself.", null);
speak(speech_mc, "Under the influence of the wave, your body will feel a strange sensation in some places.", null);
speak(speech_mc, "When those places are rubbed, you will feel pleasure and your body will produce hormones.", null);
speak(speech_mc, "When those hormones react with the waves, they cause you to become pregnant.", null);
speak(furret.speech_mc, "That sounds... Wonderful!", "surprised");
speak(speech_mc, "I need you to tell me where to rub you. Do you understand?", null);
speak(furret.speech_mc, "Oh, yes! This is going to be so amazing!", "amazing");
furret.speech_mc.onFinishSpeech = unlockPart3;
}
function unlockPart3(ph) {
if (ph.indexOf("Oh, yes!") > -1) {
part = 3;
rubEnabled = true;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
speech_off();
selectRubPoint();
energy = maxRubEnergy;
} else {
nextSpeech();
}
}
function speak(mc, phrase, reaction) {
speech_list.push([mc, phrase, reaction]);
if (!speaking) {
loadSpeech();
}
}
function nextSpeech(ph) {
speech_off();
loadSpeech();
}
function loadSpeech() {
if (speech_list.length) {
speech_on();
var _local1 = speech_list.shift();
say(_local1[0], _local1[1], _local1[2]);
} else {
speech_off();
}
}
function say(mc, phrase, reaction) {
mc.reacting = false;
if (reaction) {
mc.reacting = true;
react(reaction);
}
if (mc._visible) {
if (mc.letter >= mc.phrase.length) {
mc._txt.text = "";
} else {
var _local4 = mc.phrase.charAt(mc.letter);
if (((((_local4 == newline) || (_local4 == " ")) || (_local4 == ".")) || (_local4 == ",")) || (_local4 == "!")) {
mc._txt.text = mc._txt.text + newline;
} else {
mc._txt.text = mc._txt.text + "--\n";
}
mc._txt.scroll = mc._txt.maxscroll;
}
} else {
mc._txt.text = "";
}
mc._visible = true;
mc.letter = 0;
mc.phrase = phrase;
mc.timer = 20 + phrase.length;
mc.onEnterFrame = function () {
if (this.letter < this.phrase.length) {
var _local2 = 0;
while (_local2 < 3) {
this._txt.text = this._txt.text + this.phrase.charAt(this.letter++);
this._txt.scroll = this._txt.maxscroll;
if (this.letter >= this.phrase.length) {
break;
}
_local2++;
}
} else if (this.timer > 0) {
this.timer--;
if (this.timer <= 20) {
if (this.reacting) {
this.reacting = false;
condition = "";
setState(curState.state);
}
}
} else {
var _local3 = this.phrase;
delete this.onEnterFrame;
delete this.phrase;
delete this.letter;
delete this.timer;
this._txt.text = "";
this._visible = false;
if (this.onFinishSpeech) {
this.onFinishSpeech(_local3);
}
}
};
}
function createNewProblem() {
problem = generateProblem(area, totalPoints, minProp);
pList = problem.points;
solution = problem.line;
answer = origAnswer.concat();
if (finished) {
answer = solution.concat();
}
updateProblem(mc, area, pList, answer);
}
function evaluateProblem(points, answer) {
var _local3;
var _local5 = 0;
var _local1 = 0;
while (_local1 < points.length) {
if (((answer[0] + (answer[1] * points[_local1].x)) + (answer[2] * points[_local1].y)) < 0) {
_local3 = 0;
} else {
_local3 = 1;
}
if (_local3 == points[_local1].type) {
_local5++;
} else {
_local5--;
}
_local1++;
}
if (_local5 < 0) {
_local5 = 0;
}
return(_local5 / points.length);
}
function updateProblem(mc, area, points, answer, solution) {
mc.lineStyle(1, 0);
mc.beginFill(16777215);
drawRect(mc, area);
mc.endFill();
drawPoints(mc, pList, [255, 16711680]);
mc.line.clear();
drawLine(mc.line, answer, area, 255, 16711680);
var _local2 = getEdges(answer, area);
if (_local2) {
mc.lineStyle(4, 16711935);
var _local1 = 0;
while (_local1 < _local2.length) {
drawRect(mc, {x:_local2[_local1].x - 2, y:_local2[_local1].y - 2, width:4, height:4});
_local1++;
}
}
if (solution != null) {
drawLine(mc.line, solution, area, 255, 16711680);
}
}
function createDistortedProblem(mc, area) {
mc.clear();
mc.line.clear();
mc.beginFill(16764108);
mc.lineStyle(1, 0);
bar.clear();
drawRect(mc, area);
mc.endFill();
var _local2 = [];
var _local1 = 0;
while (_local1 < (100 + (Math.random() * 50))) {
_local2[_local1] = {};
_local2[_local1].x = area.x + (Math.random() * area.width);
_local2[_local1].y = area.y + (Math.random() * area.height);
_local2[_local1].type = Math.floor(Math.random() * 8);
_local1++;
}
drawPoints(mc, _local2, [255, 16711680, 65280, 16776960, 16711935, 65535, 0, 16777215]);
}
function generateProblem(rect, nPoints, minProp) {
var _local2;
var _local8;
var _local5;
var _local3;
var _local1 = 50;
do {
_local2 = generateLine(rect, 100);
_local8 = getLine(_local2[0], _local2[1]);
_local5 = generatePoints(nPoints, rect, _local8, 10);
_local3 = countPoints(_local5);
_local1--;
if (!_local1) {
trace("ERROR!!");
}
} while ((((_local3[0] / nPoints) < minProp) || ((_local3[1] / nPoints) < minProp)) && (_local1 > 0));
return({line:_local8, points:_local5});
}
function generateLine(rect, minSpace) {
var _local5 = 0.5;
var _local8 = Math.random();
var _local6 = ((_local8 + 0.5) - _local5) + ((Math.random() * 2) * _local5);
var _local2 = generateEdgePoint(_local8, rect);
var _local3 = generateEdgePoint(_local6, rect);
minSpace = Math.max(minSpace, 0);
var _local4 = 50;
while (((((_local2.x == rect.x) || (_local2.x == (rect.x + rect.width))) && (Math.abs(_local3.x - _local2.x) < minSpace)) || (((_local2.y == rect.y) || (_local2.y == (rect.y + rect.height))) && (Math.abs(_local3.y - _local2.y) < minSpace))) && (_local4 > 0)) {
_local6 = ((_local8 + 0.5) - _local5) + ((Math.random() * 2) * _local5);
_local3 = generateEdgePoint(_local6, rect);
_local4--;
if (!_local4) {
trace("ERROR!!");
}
}
return([_local2, _local3]);
}
function generateEdgePoint(pos, rect) {
var _local3 = {x:0, y:0};
while (pos >= 1) {
pos--;
}
while (pos < 0) {
pos++;
}
var _local4 = (rect.width * 2) + (rect.height * 2);
switch (true) {
case pos < (rect.width / _local4) :
_local3.x = pos * rect.width;
_local3.y = 0;
break;
case pos < ((rect.width + rect.height) / _local4) :
_local3.x = rect.width;
_local3.y = (pos - (rect.width / _local4)) * _local4;
break;
case pos < (((rect.width * 2) + rect.height) / _local4) :
_local3.x = (pos - ((rect.height + rect.width) / _local4)) * _local4;
_local3.y = rect.height;
break;
default :
_local3.x = 0;
_local3.y = (pos - ((rect.height + (rect.width * 2)) / _local4)) * _local4;
}
_local3.x = _local3.x + rect.x;
_local3.y = _local3.y + rect.y;
return(_local3);
}
function getLine(p1, p2) {
var _local2 = p2.x - p1.x;
var _local1 = p2.y - p1.y;
var _local3 = Math.atan2(_local1, _local2);
var _local9 = Math.sqrt((_local2 * _local2) + (_local1 * _local1));
var _local7 = _local1 / _local2;
var _local6 = Math.sin(_local3);
var _local5 = -Math.cos(_local3);
return([((-_local6) * p1.x) - (_local5 * p1.y), _local6, _local5]);
}
function getEdges(line, rect) {
var _local7;
var _local11;
var _local9;
var _local10;
var _local2 = [];
if (line[2] == 0) {
_local7 = ((line[2] * rect.y) + line[0]) / (-line[1]);
_local11 = ((line[2] * (rect.y + rect.height)) + line[0]) / (-line[1]);
if ((_local7 <= (rect.x + rect.width)) && (rect.x <= _local7)) {
_local2.push({x:_local7, y:rect.y});
}
if ((_local11 <= (rect.x + rect.width)) && (rect.x <= _local11)) {
_local2.push({x:_local11, y:rect.y + rect.height});
}
} else if (line[1] == 0) {
_local9 = ((line[1] * rect.x) + line[0]) / (-line[2]);
_local10 = ((line[1] * (rect.x + rect.width)) + line[0]) / (-line[2]);
if ((_local9 <= (rect.y + rect.height)) && (rect.y <= _local9)) {
_local2.push({x:rect.x, y:_local9});
}
if ((_local10 <= (rect.y + rect.height)) && (rect.y <= _local10)) {
_local2.push({x:rect.x + rect.width, y:_local10});
}
} else {
_local7 = ((line[2] * rect.y) + line[0]) / (-line[1]);
_local9 = ((line[1] * rect.x) + line[0]) / (-line[2]);
_local11 = ((line[2] * (rect.y + rect.height)) + line[0]) / (-line[1]);
_local10 = ((line[1] * (rect.x + rect.width)) + line[0]) / (-line[2]);
if ((_local7 <= (rect.x + rect.width)) && (rect.x <= _local7)) {
_local2.push({x:_local7, y:rect.y});
}
if ((_local11 <= (rect.x + rect.width)) && (rect.x <= _local11)) {
_local2.push({x:_local11, y:rect.y + rect.height});
}
if ((_local9 <= (rect.y + rect.height)) && (rect.y <= _local9)) {
_local2.push({x:rect.x, y:_local9});
}
if ((_local10 <= (rect.y + rect.height)) && (rect.y <= _local10)) {
_local2.push({x:rect.x + rect.width, y:_local10});
}
var _local5;
var _local8 = 50;
while ((_local2.length > 2) && (_local8 > 0)) {
_local5 = false;
var _local1 = 0;
while (_local1 < _local2.length) {
var _local3 = 0;
while (_local3 < _local1) {
if ((Math.abs(_local2[_local1].x - _local2[_local3].x) < 0.1) && (Math.abs(_local2[_local1].y - _local2[_local3].y) < 0.1)) {
_local5 = true;
_local2.splice(_local1, 1);
break;
}
_local3++;
}
if (_local5) {
break;
}
_local1++;
}
}
}
if (_local8 <= 0) {
trace("ERROR!!! getEdges");
}
return(_local2);
}
function generatePoints(n, rect, line, minDist) {
var _local2 = [];
var _local1 = 0;
while (_local1 < n) {
_local2.push(generatePoint(rect, line, minDist));
_local1++;
}
return(_local2);
}
function generatePoint(rect, line, minDist) {
var _local1 = {x:rect.x + (Math.random() * rect.width), y:rect.y + (Math.random() * rect.height), type:0};
var _local3 = 10;
while ((_local3 > 0) && (point2Line(_local1, line) < minDist)) {
_local1.x = _local1.x + ((line[1] * minDist) * 1.5);
_local1.y = _local1.y + ((line[2] * minDist) * 1.5);
_local3--;
if (!_local3) {
trace("ERROR!!");
}
}
if (_local1.x < rect.x) {
_local1.x = rect.x;
} else if (_local1.x > (rect.x + rect.width)) {
_local1.x = rect.x + rect.width;
}
if (_local1.y < rect.y) {
_local1.y = rect.y;
} else if (_local1.y > (rect.y + rect.height)) {
_local1.y = rect.y + rect.height;
}
if (((line[0] + (_local1.x * line[1])) + (_local1.y * line[2])) < 0) {
_local1.type = 0;
} else {
_local1.type = 1;
}
return(_local1);
}
function countPoints(p) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < p.length) {
if (!_local3[p[_local2].type]) {
_local3[p[_local2].type] = 1;
var _local1 = 0;
while (_local1 < p[_local2].type) {
if (!_local3[_local1]) {
_local3[_local1] = 0;
}
_local1++;
}
} else {
_local3[p[_local2].type]++;
}
_local2++;
}
return(_local3);
}
function point2Line(p, line) {
var _local3;
var _local4;
var _local2;
var _local6 = Math.atan2(line[1], line[2]);
if ((line[2] == 0) && (line[1] == 0)) {
return(NaN);
}
if (line[1] != 0) {
_local3 = line[0] / (-line[1]);
_local2 = {x:_local3, y:0};
} else {
_local4 = line[0] / (-line[2]);
_local2 = {x:0, y:_local4};
}
var _local5 = rotate(-_local6, _local2, p);
return(Math.abs(_local5.y - p.y));
}
function rotate(a, p, b) {
var _local1 = {x:0, y:0};
var _local4 = p.x - b.x;
var _local2 = p.y - b.y;
_local1.x = (b.x + (Math.cos(a) * _local4)) + (Math.sin(a) * _local2);
_local1.y = (b.y - (Math.sin(a) * _local4)) + (Math.cos(a) * _local2);
return(_local1);
}
function drawLine(mc, line, rect, color1, color2) {
var _local1 = getEdges(line, rect);
var _local10 = _local1[1].x - _local1[0].x;
var _local9 = _local1[1].y - _local1[0].y;
var _local3 = Math.atan2(_local9, _local10) - (Math.PI/2);
var _local2 = 1;
var _local5 = {x:_local1[0].x - (Math.cos(_local3) * _local2), y:_local1[0].y - (Math.sin(_local3) * _local2)};
var _local8;
var _local7;
if (((line[0] + (_local5.x * line[1])) + (_local5.y * line[2])) < 0) {
_local8 = color1;
_local7 = color2;
} else {
_local8 = color2;
_local7 = color1;
}
mc.lineStyle(1, _local8);
mc.moveTo(_local1[0].x - (Math.cos(_local3) * _local2), _local1[0].y - (Math.sin(_local3) * _local2));
mc.lineTo(_local1[1].x - (Math.cos(_local3) * _local2), _local1[1].y - (Math.sin(_local3) * _local2));
mc.lineStyle(1, _local7);
mc.moveTo(_local1[0].x + (Math.cos(_local3) * _local2), _local1[0].y + (Math.sin(_local3) * _local2));
mc.lineTo(_local1[1].x + (Math.cos(_local3) * _local2), _local1[1].y + (Math.sin(_local3) * _local2));
mc.lineStyle(0, 0);
}
function drawPoints(mc, p, colors) {
var _local1 = 0;
while (_local1 < p.length) {
mc.lineStyle(2, colors[p[_local1].type]);
drawPoint(mc, p[_local1]);
mc.lineStyle(0, 0);
_local1++;
}
}
function drawPoint(mc, p) {
mc.moveTo(p.x - 0.5, p.y - 0.5);
mc.lineTo(p.x + 0.5, p.y + 0.5);
}
function drawRect(mc, rect) {
mc.moveTo(rect.x, rect.y);
mc.lineTo(rect.x + rect.width, rect.y);
mc.lineTo(rect.x + rect.width, rect.y + rect.height);
mc.lineTo(rect.x, rect.y + rect.height);
mc.lineTo(rect.x, rect.y);
}
function drawCircle(star, xPos, yPos, radius, CIRCLE_SIDES) {
var _local8;
var _local6;
var _local5;
var _local4;
var _local13;
var _local12;
var _local15;
var _local14;
var _local11;
var _local10;
var _local1 = (Math.PI*2) / CIRCLE_SIDES;
star.moveTo(xPos + radius, yPos);
var _local2 = 0;
while (_local2 < CIRCLE_SIDES) {
_local8 = Math.cos(_local2 * _local1);
_local6 = Math.sin(_local2 * _local1);
_local5 = Math.cos((_local2 * _local1) + _local1);
_local4 = Math.sin((_local2 * _local1) + _local1);
_local13 = Number(_local8 + _local5) * 0.5;
_local12 = Number(_local6 + _local4) * 0.5;
_local15 = Math.cos((_local2 * _local1) + (_local1 * 0.5));
_local14 = Math.sin((_local2 * _local1) + (_local1 * 0.5));
_local11 = (2 * _local15) - _local13;
_local10 = (2 * _local14) - _local12;
star.curveTo(xPos + (_local11 * radius), yPos + (_local10 * radius), xPos + (_local5 * radius), yPos + (_local4 * radius));
_local2++;
}
}
function drawEllipse(star, xPos, yPos, radius, flat, spin, CIRCLE_SIDES) {
var _local14;
var _local11;
var _local12;
var _local10;
var _local19;
var _local18;
var _local21;
var _local20;
var _local17;
var _local16;
var _local1 = (Math.PI*2) / CIRCLE_SIDES;
var _local5;
var _local3;
var _local9;
var _local6 = {x:0, y:0};
_local5 = rotate(spin, {x:radius * flat, y:0}, _local6);
star.moveTo(xPos + _local5.x, yPos + _local5.y);
var _local2 = 0;
while (_local2 < CIRCLE_SIDES) {
_local14 = Math.cos(_local2 * _local1);
_local11 = Math.sin(_local2 * _local1);
_local12 = Math.cos((_local2 * _local1) + _local1);
_local10 = Math.sin((_local2 * _local1) + _local1);
_local5 = rotate(spin, {x:_local14 * flat, y:_local11}, _local6);
_local3 = rotate(spin, {x:_local12 * flat, y:_local10}, _local6);
_local19 = Number(_local5.x + _local3.x) * 0.5;
_local18 = Number(_local5.y + _local3.y) * 0.5;
_local21 = Math.cos((_local2 * _local1) + (_local1 * 0.5));
_local20 = Math.sin((_local2 * _local1) + (_local1 * 0.5));
_local9 = rotate(spin, {x:_local21 * flat, y:_local20}, _local6);
_local17 = (2 * _local9.x) - _local19;
_local16 = (2 * _local9.y) - _local18;
star.curveTo(xPos + (_local17 * radius), yPos + (_local16 * radius), xPos + (_local3.x * radius), yPos + (_local3.y * radius));
_local2++;
}
}
function updateScreenPos() {
var _local3 = ((screenBounds.xMin * furret._xscale) * 0.01) + furret._x;
var _local1 = ((screenBounds.xMax * furret._xscale) * 0.01) + furret._x;
var _local4 = ((screenBounds.yMin * furret._yscale) * 0.01) + furret._y;
var _local2 = ((screenBounds.yMax * furret._yscale) * 0.01) + furret._y;
if (_local3 > 0) {
furret._x = furret._x - _local3;
}
if (_local1 < 800) {
furret._x = furret._x + (800 - _local1);
}
if (_local4 > 0) {
furret._y = furret._y - _local4;
}
if (_local2 < 600) {
furret._y = furret._y + (600 - _local2);
}
}
function bigMode() {
if (size < maxSize) {
return(undefined);
}
if (machine_on._currentframe == 1) {
return(undefined);
}
if (maxSize == FINAL_SIZE) {
return(undefined);
}
if (furret.box_cables._currentframe < 3) {
return(undefined);
}
reset_view.onPress();
furret.upper_box.on_switch.gotoAndStop(3 - this._currentframe);
furret.upper_box.diode.gotoAndStop(furret.upper_box.on_switch._currentframe);
maxSize = FINAL_SIZE;
say(furret.speech_mc, "Whoa!! I'm feeling something! Could it possibly get bigger!?", "shocked");
updateBar();
}
function toggleSkirt(v) {
furret.skirt1._visible = v;
furret.skirt2._visible = v;
}
function toggleTop(v) {
furret.top1._visible = v;
furret.top2._visible = v;
if (furret.top1._visible) {
storedProblem = problem;
storedAnswer = answer;
sotredPoints = pList;
answer = null;
if (machine_on._currentframe == 2) {
createDistortedProblem(mc, area);
}
} else if (storedAnswer) {
answer = storedAnswer;
points = storedPoints;
problem = storedProblem;
if (machine_on._currentframe == 2) {
updateLine();
}
}
}
function loadQuickMode() {
finished = true;
expand_mc.useHandCursor = true;
furret.box_cables.gotoAndStop(3);
furret.upper_box.on_switch.gotoAndStop(2);
furret.upper_box.diode.gotoAndStop(furret.upper_box.on_switch._currentframe);
maxSize = FINAL_SIZE;
part = 3;
machineEnabled = true;
changeEnabled = true;
rubEnabled = true;
if (answer) {
answer = solution.concat();
}
updateLine();
if (furret.speech_mc.reacting) {
furret.speech_mc.reacting = false;
condition = "";
setState(curState.state);
}
clear_speech();
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
speak(speech_mc, "All right! This machine should get you pregnant in no time!", null);
speak(furret.speech_mc, "Ooh! So fast? Yaay! ", "amazing");
}
var lc = new LocalConnection();
var metal = false;
var finished = false;
var emitting = true;
if ((lc.domain().indexOf("deviantart") == -1) && (!DEBUG)) {
}
var MESSAGE_TO_YOU_GUYS = "You think you're so smart decompiling my animations.\\Whatever, I'll just have to defend myself here in my own code, \\since you always fail to tell me my flaws directly on Deviantart. \\You know who you are: The people who say bad things about me when I'm not looking.\\You know I'm watching you, why not confront me directly and force me to change instead?\\I know you don't like me, but your reasons are wrong. They're always wrong. \\You guys misunderstand me a lot, probably on purpose.\\\n\n\\You say I'm a bad programmer, but the example you used was the one where I forgot to hndle a blank answer.\\That was not because I didn't know how to do it, \\it's because I didn't feel like doing rigorous testing on a stupid animation on Deviantart.\\This was one of the most hevily code-based animations I have ever done,\\and I had no desire to spend more time than I needed on it.\\I'm not going to waste my time making a professionally designed program just for my viewers.\\As you may have noticed, I fixed the problem as soon as I heard of it.\\Is that not enough to prove that I knew exactly what I was doing?\\No, nothing's enough for you. If it doesn't make me look bad, it's irrelevant, isn't it?\\\n\n\\Then you said I was self-important. How? I never claimed to be better than anyone else.\\I openly state that I am not an animator or an artist. The only skill I take pride in is programming.\\The only exception I made was on my page, which is where I rule and I make the rules.\\I might be stubborn, bad-tempered and confident in my programming skills, but I am not arrogant.\\I know my limits.\\\n\n\\And you called me indignant. What's wrong with that? There are kinds of people I don't like and that's not wrong.\\I admit that I did everything in my power to discourage a lot of people from visiting my Deviantart page.\\I am not ashamed of that.\\I'm not ashamed because I never forced them to go away. I made them want to go of their own will.\\It is not wrong to make my place unattractive to people I don't like.\\You want to know which people? I'll tell you: The ones who were most likely to pester me with request comments.\\Is that wrong? Really? You guys are just looking for excuses to hate me!\\And can you guess what? I succeeded in making them go away! They're gone.\\And since then I've been slowly lowering my negative tone through the months.\\How could you possibly think it's wrong to discourage those kinds of people from viewing my page?\\I'll repeat what I said earlier because you people like to ignore good justifications: \\I never forced them to go away. Never! They left because they wanted to. \\\n\n\\And then, someone from Vancouver Island thought it was his mission to violate my copyright \\and post my work all over the internet. That is illegal. You guys like being criminals, don't you? \\It's my work, and I should have all the rights to choose where it goes or if it disappears from the internet.\\Well, you forced me to do what I didn't want to do: Stop allowing my animations to work on local computers.\\Yes, because of you, none of my future animations will work on local computers anymore. \\\n\n\\Come and face me! Tell me directly what you really think, so I can discover exactly where we disagree and why.\\You cowards seem to be afraid of dialogue.\\You'd rather have your one-sided, negative perception of me forever than to really try to change it.\\If you see something wrong in the world, you either do something to fix it or shut up. \\You don't just stand there talking about it with your silly little friends, hidden away in the equivalent of 4chan. \\\n\n\\With this, I'm out. Expect a new message in my next animation.";
var hand_mc = furret.hand_mc;
if (!metal) {
furret.top1._visible = (furret.top2._visible = false);
}
furret.head.blush._alpha = 0;
furret.onEnterFrame = function () {
if (expanding) {
size = size + 1;
setSize();
}
if (Math.random() < 0.005) {
movePart(furret.leg1, 5);
}
if (Math.random() < 0.005) {
movePart(furret.leg2, 5);
}
var _local2;
kicks_mc.clear();
_local2 = 0;
while (_local2 < kickList.length) {
if (kickList[_local2].timer < 0) {
kickList.splice(_local2, 1);
_local2++;
} else {
drawKick(kicks_mc, kickList[_local2]);
kickList[_local2].timer--;
}
_local2++;
}
if ((Math.random() > 0.99) && (size >= 300)) {
kick();
}
var _local3 = (Math.sin(angle) * 0.5) + 0.5;
if (hand_mc._visible && (hittingFurret(_root._xmouse, _root._ymouse))) {
_local3 = (highSin(angle, 1, 1) * 0.5) + 0.5;
}
furret.breast1._x = b1X + ((0.5 * _local3) * offset);
furret.breast1._y = b1Y - ((2 * _local3) * offset);
furret.breast2._x = b2X - ((0.5 * _local3) * offset);
furret.breast2._y = b2Y - ((2 * _local3) * offset);
furret.breast1._yscale = 100 + ((1 * _local3) * offset);
furret.breast2._yscale = 100 + ((1 * _local3) * offset);
furret.body.gotoAndStop(Math.floor(5 + (15 * _local3)));
angle = angle + frequency;
if (headRotation > (headDest + headSpeed)) {
headRotation = headRotation - headSpeed;
} else if (headRotation < (headDest - headSpeed)) {
headRotation = headRotation + headSpeed;
} else {
headRotation = headDest;
headDest = curState.head;
}
furret.head._rotation = headRotation;
if (canBlink && (Math.random() > 0.99)) {
furret.head.eye1.gotoAndPlay("blink");
furret.head.eye2.gotoAndPlay("blink");
furret.head.eye1.pupil._x = p1X + curState.p1X;
furret.head.eye1.pupil._y = p1Y + curState.p1Y;
furret.head.eye2.pupil._x = p2X + curState.p2X;
furret.head.eye2.pupil._y = p2Y + curState.p2Y;
blinking = true;
}
if (blinking && (furret.head.eye1._currentlabel == "endblink")) {
furret.head.eye1.gotoAndPlay(curState.eye1);
furret.head.eye2.gotoAndPlay(curState.eye2);
furret.head.eye1.pupil._x = p1X + curState.p1X;
furret.head.eye1.pupil._y = p1Y + curState.p1Y;
furret.head.eye2.pupil._x = p2X + curState.p2X;
furret.head.eye2.pupil._y = p2Y + curState.p2Y;
blinking = false;
}
if (blushing) {
if ((furret.head.blush._alpha + 10) >= 100) {
furret.head.blush._alpha = 100;
if (blushing == 2) {
blushing = 0;
}
} else {
furret.head.blush._alpha = furret.head.blush._alpha + 10;
}
} else if ((furret.head.blush._alpha - 10) <= 0) {
furret.head.blush._alpha = 0;
} else {
furret.head.blush._alpha = furret.head.blush._alpha - 5;
}
var _local5;
var _local6 = evaluateProblem(pList, answer);
curMaxSize = Math.floor(_local6 * (maxSize - 1)) + 1;
if (revert_mc._currentframe == 2) {
size = size - 1;
if (size <= 1) {
size = 1;
}
setSize();
return(undefined);
}
if (!rubEnabled) {
rubCircle._alpha = 0;
return(undefined);
}
if (size >= curMaxSize) {
rubCircle._alpha = 0;
return(undefined);
}
if (sensitive && (!rubbing)) {
rubCircle._alpha = 0;
notRubTimer++;
if (!(notRubTimer % 200)) {
_local5 = sayRubPoint();
if (Math.random() < 0.333) {
say(furret.speech_mc, "Huh... you're not rubbing me. " + _local5[0], _local5[1]);
} else if (Math.random() < 0.333) {
say(furret.speech_mc, "Why aren't you rubbing? " + _local5[0], _local5[1]);
} else {
say(furret.speech_mc, "Is something wrong? Rub me! " + _local5[0], _local5[1]);
}
}
}
if (rubMoved <= 0) {
return(undefined);
}
rubMoved--;
if (rubDist < nearRubDist) {
rubCircle._alpha = 100 * (1 - (rubDist / nearRubDist));
} else {
rubCircle._alpha = 0;
}
if (rubbing && (rubDist < minRubDist)) {
var _local4 = size;
size = Math.min(curMaxSize, size + rubConversion);
if (_local4 < size) {
setSize();
energy--;
if (energy <= 0) {
selectRubPoint();
}
switch (true) {
case (size >= curMaxSize) && (curMaxSize < maxSize) :
say(furret.speech_mc, "Huh... it stopped?", "wonder");
furret.onMouseUp();
break;
case (_local4 < 50) && (size >= 50) :
say(furret.speech_mc, "My belly feels weird! Not that you have to rub it, I mean...", "wonder");
break;
case (_local4 < 100) && (size >= 100) :
say(furret.speech_mc, "Oh, my! It's working! I'm pregnant!", "surprised");
break;
case (_local4 < 200) && (size >= 200) :
say(furret.speech_mc, "My belly is actually getting big now!", "happy");
break;
case (_local4 < 300) && (size >= 300) :
say(furret.speech_mc, "I feel it moving inside me.", "enjoy");
break;
case (_local4 < 400) && (size >= 400) :
say(furret.speech_mc, "I'm so happy I came here!", "happy");
break;
case (_local4 < 500) && (size >= 500) :
say(furret.speech_mc, "Wow! there's more?", "surprised");
break;
case size >= maxSize :
if (size == MAX_SIZE) {
say(furret.speech_mc, "Aahh... Aahh.. So good... Is it finally over?", "ah");
} else if (size == FINAL_SIZE) {
finished = true;
expand_mc.useHandCursor = true;
expand_mc.gotoAndStop(1);
so = SharedObject.getLocal("furret");
so.data.finished = true;
so.flush();
so = null;
say(furret.speech_mc, "Hnnnngg...! I can't believe it! Just look at my belly! And it felt so good, too!", "nnn");
}
furret.onMouseUp();
}
}
}
};
var MAX_SIZE = 440;
var FINAL_SIZE = 600;
var maxSize = MAX_SIZE;
var curMaxSize = 1;
var part = 0;
var machineEnabled = false;
var changeEnabled = false;
var rubEnabled = false;
var show_solution = false;
var size = 1;
furret.belly.gotoAndStop(1);
furret.belly2.gotoAndStop(1);
skip_mc._visible = false;
next_phrase_mc._visible = false;
skip_mc.onPress = function () {
if (this._visible) {
skip_speech();
}
};
next_phrase_mc.onPress = skip_phrase;
machine_on.gotoAndStop(1);
furret.machine_mc.red_light.gotoAndStop(2);
furret.machine_mc.green_light.gotoAndStop(1);
machine_on.onRelease = function () {
if (!machineEnabled) {
return(undefined);
}
this.gotoAndStop(3 - this._currentframe);
furret.machine_mc.red_light.gotoAndStop(3 - this._currentframe);
furret.machine_mc.green_light.gotoAndStop(this._currentframe);
if (part == 1) {
if (!metal) {
startConversation2();
}
}
if (this._currentframe == 2) {
hold_mc.gotoAndStop(1 + Number(emitting));
if (finished) {
expand_mc.gotoAndStop(1);
}
if (metal) {
if (!speaking) {
startAltered2();
}
createDistortedProblem(mc, area);
changeEnabled = true;
} else if (furret.top1._visible) {
createDistortedProblem(mc, area);
} else if (!pList) {
createNewProblem();
} else {
answer = origAnswer.concat();
if (answer) {
answer = solution.concat();
}
}
} else if (changeEnabled) {
hold_mc.gotoAndStop(3);
expand_mc.gotoAndStop(3);
answer = null;
bar.clear();
mc.clear();
mc.line.clear();
mc.beginFill(0);
mc.lineStyle(1, 1118481);
drawRect(mc, area);
mc.endFill();
} else {
this.gotoAndStop(2);
hold_mc.gotoAndStop(1 + Number(emitting));
if (finished) {
expand_mc.gotoAndStop(1);
}
}
updateLine();
};
w0_up.id = 0;
w0_down.id = 0;
w0_up.dir = 1;
w0_down.dir = -1;
w1_up.id = 1;
w1_down.id = 1;
w1_up.dir = 0.1;
w1_down.dir = -0.1;
w2_up.id = 2;
w2_down.id = 2;
w2_up.dir = 0.1;
w2_down.dir = -0.1;
w0_up.onPress = function () {
if ((!machineEnabled) || (!changeEnabled)) {
return(undefined);
}
this.gotoAndStop(2);
answer[this.id] = answer[this.id] + this.dir;
updateLine();
this.phase = 0;
this.timer = 5;
this.onEnterFrame = function () {
if (this.timer > 0) {
this.timer--;
} else {
this.phase = (this.phase + 1) % 2;
if (!this.phase) {
answer[this.id] = answer[this.id] + this.dir;
updateLine();
}
}
};
};
w0_up.onMouseUp = function () {
this.gotoAndStop(1);
delete this.timer;
delete this.phase;
delete this.onEnterFrame;
};
w1_up.onPress = w0_up.onPress;
w2_up.onPress = w0_up.onPress;
w0_down.onPress = w0_up.onPress;
w1_down.onPress = w0_up.onPress;
w2_down.onPress = w0_up.onPress;
w1_up.onMouseUp = w0_up.onMouseUp;
w2_up.onMouseUp = w0_up.onMouseUp;
w0_down.onMouseUp = w0_up.onMouseUp;
w1_down.onMouseUp = w0_up.onMouseUp;
w2_down.onMouseUp = w0_up.onMouseUp;
var state = "";
var condition = "";
var states = {};
var curState = {};
var canBlink = true;
var blinking = false;
var frequency = 0.1;
var offset = 1;
var angle = 0;
var p1X = furret.head.eye1.pupil._x;
var p1Y = furret.head.eye1.pupil._y;
var p2X = furret.head.eye2.pupil._x;
var p2Y = furret.head.eye2.pupil._y;
var b1X = furret.breast1._x;
var b1Y = furret.breast1._y;
var b2X = furret.breast2._x;
var b2Y = furret.breast2._y;
var headSpeed = 0.5;
var headRotation = 0;
var headDest = 0;
var timer = 0;
states.normal = {mouth:"smile", eye1:"big", eye2:"big", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.2, offset:0.5, canBlink:true};
states.talk = {mouth:"ah", eye1:"medium", eye2:"medium", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.2, offset:0.5, canBlink:true};
states.wonder = {mouth:"small", eye1:"open", eye2:"open", head:0, p1X:3, p1Y:-3, p2X:3, p2Y:-3, frequency:0.2, offset:0.5, canBlink:true};
states.surprised = {mouth:"happy", eye1:"open", eye2:"open", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.2, offset:0.5, canBlink:true};
states.enjoy = {mouth:"happy", eye1:"small", eye2:"small", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.2, offset:0.5, canBlink:true};
states.happy = {mouth:"happy2", eye1:"sad", eye2:"sad", head:0, p1X:0, p1Y:4, p2X:0, p2Y:4, frequency:0.2, offset:0.5, canBlink:true};
states.question = {mouth:"oh", eye1:"open", eye2:"open", head:0, p1X:-1, p1Y:3, p2X:-1, p2Y:3, frequency:0.2, offset:0.5, canBlink:true};
states.yes = {mouth:"happy2", eye1:"open", eye2:"open", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.2, offset:0.5, canBlink:true};
states.curious = {mouth:"oh", eye1:"sad", eye2:"sad", head:0, p1X:0, p1Y:-2, p2X:0, p2Y:-2, frequency:0.2, offset:0.5, canBlink:true};
states.kick = {mouth:"teeth2", eye1:"sad", eye2:"shut", head:-4, p1X:-1, p1Y:4, p2X:-1, p2Y:4, frequency:0.3, offset:1, canBlink:false};
states.amazing = {mouth:"happy2", eye1:"shut", eye2:"shut", head:-4, p1X:-1, p1Y:4, p2X:-1, p2Y:4, frequency:0.3, offset:1, canBlink:false};
states.shocked = {mouth:"open", eye1:"open", eye2:"open", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.3, offset:0.5, canBlink:true};
states.look = {mouth:"ah", eye1:"open", eye2:"open", head:0, p1X:0, p1Y:5, p2X:0, p2Y:5, frequency:0.3, offset:0.5, canBlink:true};
states.sad = {mouth:"oh", eye1:"sad", eye2:"sad", head:0, p1X:4, p1Y:7, p2X:4, p2Y:7, frequency:0.3, offset:0.5, canBlink:true};
states.oh = {mouth:"oh", eye1:"closed", eye2:"closed", head:-2, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.3, offset:1, canBlink:false};
states.ah = {mouth:"ah", eye1:"closed", eye2:"closed", head:-5, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.3, offset:1, canBlink:false};
states.mmm = {mouth:"smile", eye1:"closed", eye2:"closed", head:2, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.3, offset:1, canBlink:false};
states.nnn = {mouth:"teeth1", eye1:"closed", eye2:"closed", head:5, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.3, offset:1, canBlink:false};
states.smile = {mouth:"teeth2", eye1:"closed", eye2:"closed", head:0, p1X:0, p1Y:0, p2X:0, p2Y:0, frequency:0.3, offset:1, canBlink:false};
setState("normal");
var blushing = 0;
furret.leg1.gotoAndStop(1);
furret.leg2.gotoAndStop(1);
var rubPoints = [{_x:-5, _y:15, _name:"belly"}, {_x:-33, _y:-10, _name:"belly"}, {_x:-26, _y:-50, _name:"belly"}, {_x:4, _y:-83, _name:"chest"}, {_x:40, _y:-51, _name:"belly"}, {_x:33, _y:-15, _name:"belly"}, {_x:-1, _y:-11, _name:"belly"}, {_x:35, _y:-109, _name:"breast"}, {_x:-22, _y:-120, _name:"breast"}, {_x:21, _y:-155, _name:"chest"}, {_x:-18, _y:-168, _name:"shoulder"}, {_x:74, _y:-149, _name:"shoulder"}, {_x:69, _y:-192, _name:"cheek"}, {_x:41, _y:-276, _name:"head"}, {_x:-70, _y:65, _name:"knee"}, {_x:13, _y:99, _name:"knee"}, {_x:-91, _y:129, _name:"leg"}, {_x:-103, _y:200, _name:"leg"}, {_x:-10, _y:243, _name:"leg"}, {_x:-7, _y:139, _name:"leg"}, {_x:-120, _y:242, _name:"foot"}, {_x:87, _y:-252, _name:"head"}, {_x:0, _y:-219, _name:"cheek"}];
var rubLeft = [["Left.\n", "talk"], ["Further left.\n", "talk"], ["Move left.\n", "talk"]];
var rubRight = [["Right.\n", "talk"], ["Further right.\n", "talk"], ["Move right.\n", "talk"]];
var rubDown = [["Down\n", "talk"], ["Further down.\n", "talk"], ["A bit lower.\n", "talk"]];
var rubUp = [["Up!\n", "talk"], ["Further up.\n", "talk"], ["Higher.\n", "talk"], ["Move up!", "talk"]];
var rubClose = [["Just a bit further!", "talk"], ["So close.", "talk"], ["So close now.", "happy"], ["Almost there.", "enjoy"], ["I'm feeling something!", "talk"], ["Keep moving!", "smile"]];
var rubHit = [["Ooh!", "oh"], ["Mmmm...", "mmm"], ["Hmm...", "mmm"], ["Aaah...", "ah"], ["Ah!", "ah"], ["Oh, so good!", "oh"], ["So good...", "ah"], ["Yes... Yes!", "nnn"], ["Nnng...", "nnn"], ["Oh...", "oh"], ["That's it!", "ah"], ["Wow! Is this real?", "nnn"]];
var rubNice = [["Mmmm...", "mmm"], ["That feels nice.", "ah"], ["Ooh, yeah. I like that.", "oh"], ["That's the spot!", "nnn"], ["Hee hee! You know how to make a girl happy.", "smile"], ["Just go on like that...", "ah"], ["I could be here all day.", "enjoy"], ["I don't think I'll get bigger anymore...", "wonder"], ["This is so good.", "enjoy"]];
var rubBelly = [["Wow! Your rubbing is making them kick!", "surprised"], ["Ooh! They're reacting to your rubbing.", "oh"], ["Ha ha! I think you're making them move!", "ah"], ["Oh yes, my belly's so beautiful!", "happy"]];
var rubBreast = [["Mmm! Just perfect!", "mmm"], ["You really like my breasts, don't you?.", "oh"], ["Ah ha ha! Good... good!", "ah"]];
var rubExpand = [["Oooh! Bigger, BIGGER!", "oh"], ["Hee hee! That tickles!", "smile"], ["Yes, bigger! I love this!", "happy"], ["I don't have that weird feeling now, why is my belly growing?", "wonder"], ["How is this even possible?", "question"]];
var notRubTimer = 0;
var sensitive = null;
var energy = 0;
var maxRubEnergy = 50;
var rubConversion = 0.5;
var farRubDist = 150;
var nearRubDist = 60;
var minRubDist = 30;
var rubDist = farRubDist;
var rubbing = false;
var rubCircle = furret.createEmptyMovieClip("rubCircle", 999);
var rubMatrix = (new flash.geom.Matrix());
var rubMoved = 0;
rubMatrix.createGradientBox(minRubDist * 2, minRubDist * 2, 0, -minRubDist, -minRubDist);
rubCircle.beginGradientFill("radial", [16711680, 16711680], [60, 0], [0, 255], rubMatrix);
drawCircle(rubCircle, 0, 0, minRubDist, 5);
rubCircle._alpha = 0;
furret.onMouseDown = function () {
var toSay;
if ((!machineEnabled) || (!changeEnabled)) {
return(undefined);
}
if (noHand()) {
return(undefined);
}
rubbing = true;
if ((!rubEnabled) || (size >= curMaxSize)) {
rubbing = false;
}
hand_mc._visible = true;
updateHand();
furret.onMouseMove = function () {
updateHand();
if ((Math.random() > 0.99) && (furret.leg1._currentframe > 5)) {
movePart(furret.leg2, 5);
}
if ((Math.random() > 0.99) && (furret.leg2._currentframe > 5)) {
movePart(furret.leg1, 5);
}
if ((Math.random() > 0.99) && (furret.leg1.hitTest(_root._xmouse, _root._ymouse, true))) {
movePart(furret.leg1, 5);
}
if ((Math.random() > 0.99) && (furret.leg2.hitTest(_root._xmouse, _root._ymouse, true))) {
movePart(furret.leg2, 5);
}
if (furret.belly.hitTest(_root._xmouse, _root._ymouse, true)) {
if ((Math.random() > 0.98) && (size >= 300)) {
if ((Math.random() > 0.95) && ((!furret.speech_mc._visible) || (furret.speech_mc.timer <= 20))) {
toSay = rubBelly[Math.floor(Math.random() * rubBelly.length)];
say(furret.speech_mc, toSay[0], toSay[1]);
}
kick();
}
}
if ((!rubbing) || (!emitting)) {
if (furret.breast1.hitTest(_root._xmouse, _root._ymouse, true) || (furret.breast2.hitTest(_root._xmouse, _root._ymouse, true))) {
if (Math.random() > 0.98) {
if ((!furret.speech_mc._visible) || (furret.speech_mc.timer <= 20)) {
toSay = rubBreast[Math.floor(Math.random() * rubBreast.length)];
say(furret.speech_mc, toSay[0], toSay[1]);
}
}
}
if ((hittingFurret(_root._xmouse, _root._ymouse) && (Math.random() < 0.05)) && (!speaking)) {
if ((!furret.speech_mc._visible) || ((furret.speech_mc.letter >= furret.speech_mc.phrase.length) && (furret.speech_mc.timer < 20))) {
toSay = rubNice[Math.floor(Math.random() * rubNice.length)];
say(furret.speech_mc, toSay[0], toSay[1]);
}
}
if (furret.belly.hitTest(_root._xmouse, _root._ymouse, true)) {
bellyRubs();
}
return(undefined);
}
rubMoved = 2;
var _local3 = sensitive._x - furret._xmouse;
var _local2 = sensitive._y - furret._ymouse;
rubDist = Math.sqrt((_local3 * _local3) + (_local2 * _local2));
if ((!furret.speech_mc._visible) || ((furret.speech_mc.letter >= furret.speech_mc.phrase.length) && (furret.speech_mc.timer < 20))) {
toSay = sayRubPoint();
say(furret.speech_mc, toSay[0], toSay[1]);
}
};
};
furret.onMouseUp = function () {
delete this.onMouseMove;
notRubTimer = 0;
rubbing = false;
hand_mc._visible = false;
rubCircle._alpha = 0;
rubDist = Infinity;
};
var kicks_mc = furret.belly.createEmptyMovieClip("kick", 0);
var kickList = [];
var kickPhrase = [["Oooh!! They're kicking!", "surprised"], ["Aah! I feel moving!", "ah"], ["Oh! My belly!", "oh"], ["Hee hee! Ouch!", "kick"]];
var MAX_KICK_OPEN = Math.PI;
var MIN_KICK_SIZE = 0.25;
var INV_MIN_KICK_SIZE = (1 - MIN_KICK_SIZE);
var MIN_LIGHT_RADIUS = 0.6;
var MAX_LIGHT_RADIUS = 1.1;
var FURRET_LIGHT_COLOR = 15652260;
var FURRET_LIGHT_SHADOW = 15387020;
var handPoints = [{x0:-119, y0:212, x1:-135, y1:208}, {x0:-111, y0:158, x1:-128, y1:153}, {x0:-106, y0:108, x1:-123, y1:103}, {x0:-95, y0:69, x1:-117, y1:60}, {x0:-68, y0:38, x1:-72, y1:23}, {x0:-54, y0:51, x1:-39, y1:37}, {x0:-39, y0:81, x1:-28, y1:75}, {x0:-20, y0:87, x1:-12, y1:71}, {x0:6, y0:81, x1:18, y1:71}, {x0:25, y0:101, x1:35, y1:91}, {x0:35, y0:122, x1:44, y1:112}, {x0:17, y0:142, x1:29, y1:141}, {x0:16, y0:181, x1:30, y1:182}, {x0:13, y0:217, x1:28, y1:217}, {x0:7, y0:247, x1:22, y1:248}, {x0:-20, y0:246, x1:-32, y1:246}, {x0:-24, y0:213, x1:-37, y1:215}, {x0:-24, y0:187, x1:-40, y1:187}, {x0:-30, y0:155, x1:-44, y1:155}, {x0:-29, y0:123, x1:-41, y1:123}, {x0:-35, y0:4, x1:-51, y1:-8}, {x0:-28, y0:-23, x1:-41, y1:-26}, {x0:-24, y0:-50, x1:-40, y1:-49}, {x0:43, y0:16, x1:59, y1:11}, {x0:43, y0:-17, x1:57, y1:-14}, {x0:45, y0:-46, x1:60, y1:-42}, {x0:42, y0:-74, x1:57, y1:-72}, {x0:-27, y0:-81, x1:-45, y1:-89}, {x0:-32, y0:-109, x1:-44, y1:-98}, {x0:-22, y0:-100, x1:-19, y1:-88}, {x0:-6, y0:-103, x1:0, y1:-92}, {x0:17, y0:-98, x1:7, y1:-87}, {x0:26, y0:-90, x1:29, y1:-78}, {x0:46, y0:-93, x1:58, y1:-81}, {x0:55, y0:-106, x1:65, y1:-105}, {x0:12, y0:-117, x1:2, y1:-120}, {x0:25, y0:-128, x1:16, y1:-143}, {x0:42, y0:-129, x1:46, y1:-143}, {x0:54, y0:-124, x1:61, y1:-134}, {x0:-11, y0:-139, x1:2, y1:-150}, {x0:-23, y0:-143, x1:-15, y1:-150}, {x0:-17, y0:-166, x1:-9, y1:-183}, {x0:2, y0:-168, x1:7, y1:-174}, {x0:57, y0:-152, x1:69, y1:-160}, {x0:75, y0:-145, x1:87, y1:-152}, {x0:87, y0:-124, x1:104, y1:-122}, {x0:89, y0:-88, x1:104, y1:-88}, {x0:87, y0:-56, x1:99, y1:-55}, {x0:87, y0:-16, x1:101, y1:-13}, {x0:78, y0:25, x1:91, y1:26}, {x0:63, y0:25, x1:53, y1:27}, {x0:61, y0:-12, x1:47, y1:-10}, {x0:62, y0:-50, x1:54, y1:-50}];
hand_mc._visible = false;
var origWristY = furret.hand_mc.wrist_mc._y;
var endWristY = (origWristY - 15);
var origThumbX = furret.hand_mc.thumb_mc._x;
var endThumbX = furret.hand_mc.glove_mc._x;
var origWristY = furret.hand_mc.wrist_mc._y;
var wristBack = 60;
var wristFront = 100;
var thumbBack = 70;
var thumbFront = 90;
var gloveMinXScale = 70;
var gloveMaxXScale = 100;
var gloveMinYScale = 50;
var gloveMaxYScale = 100;
var wristMinXScale = 80;
var wristMaxXScale = 100;
var wristMinYScale = 100;
var wristMaxYScale = 150;
var maxSpin = 90;
var xSpin = 0;
var ySpin = 0;
var zSpin = 0;
hand_mc.wrist_mc.swapDepths(100);
hand_mc.thumb_mc.swapDepths(90);
hand_mc.glove_mc.swapDepths(80);
hand_mc.gotoAndStop(1);
var leg1Poly = [{x0:-7, y0:247}, {x0:-5, y0:100}, {x0:48, y0:65}];
var leg2Poly = [{x0:-140, y0:256}, {x0:-103, y0:222}, {x0:-68, y0:66}, {x0:-20, y0:52}];
var speech_list = [];
var speaking = false;
speech_mc._visible = false;
furret.speech_mc._visible = false;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
var mc = _root.createEmptyMovieClip("img", 1);
var bar = _root.createEmptyMovieClip("bar", 5);
mc.line = mc.createEmptyMovieClip("line", 1);
mc._x = (mc._y = 10);
bar._x = 10;
bar._y = 380;
var area = {x:0, y:0, width:200, height:200};
var minProp = 0.25;
var totalPoints = 100;
var origAnswer = [-area.x, 1, 0];
var problem;
var pList;
var solution;
var answer;
mc.beginFill(0);
mc.lineStyle(1, 1118481);
drawRect(mc, area);
mc.endFill();
var screenBounds = furret.getBounds(furret);
var SCROLL_DIST = (circle_mc._width * 0.5);
var origX = furret._x;
var origY = furret._y;
scroll_mc._x = circle_mc._x;
scroll_mc._y = circle_mc._y;
scroll_mc.scrolling = false;
scroll_mc.onEnterFrame = function () {
if (!this.scrolling) {
this._x = this._x + ((circle_mc._x - this._x) * 0.5);
this._y = this._y + ((circle_mc._y - this._y) * 0.5);
} else if ((Math.abs(this._x - circle_mc._x) > 0.5) || (Math.abs(this._y - circle_mc._y) > 0.5)) {
furret._x = furret._x - (this._x - circle_mc._x);
furret._y = furret._y - (this._y - circle_mc._y);
}
updateScreenPos();
};
scroll_mc.onPress = function () {
if (speaking) {
return(undefined);
}
this.scrolling = true;
this._x = _root._xmouse;
this._y = _root._ymouse;
this.onMouseMove = function () {
this._x = _root._xmouse;
this._y = _root._ymouse;
var _local4 = this._x - circle_mc._x;
var _local3 = this._y - circle_mc._y;
var _local6 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
if (_local6 > SCROLL_DIST) {
var _local5 = Math.atan2(_local3, _local4);
this._x = circle_mc._x + (Math.cos(_local5) * SCROLL_DIST);
this._y = circle_mc._y + (Math.sin(_local5) * SCROLL_DIST);
}
};
};
scroll_mc.onMouseUp = function () {
delete this.onMouseMove;
this.scrolling = false;
};
reset_view.onPress = function () {
if (speaking) {
return(undefined);
}
furret._xscale = (furret._yscale = 100);
furret._x = origX;
furret._y = origY;
};
zoom_mc.scrolling = false;
zoom_mc._x = rect_mc._x;
zoom_mc._y = rect_mc._y + (rect_mc._height * 0.5);
zoom_mc.onEnterFrame = function () {
if (!this.scrolling) {
this._y = this._y + (((rect_mc._y + (rect_mc._height * 0.5)) - this._y) * 0.5);
} else if (Math.abs(this._y - (rect_mc._y + (rect_mc._height * 0.5))) > 0.5) {
var _local6 = ((-(this._y - (rect_mc._y + (rect_mc._height * 0.5)))) * 2) / rect_mc._height;
furret._xscale = (furret._yscale = furret._yscale + (_local6 * 2));
if (furret._xscale > 300) {
furret._xscale = 300;
furret._yscale = furret._xscale;
}
var _local4 = ((screenBounds.xMin * furret._xscale) * 0.01) + furret._x;
var _local2 = ((screenBounds.xMax * furret._xscale) * 0.01) + furret._x;
var _local5 = ((screenBounds.yMin * furret._yscale) * 0.01) + furret._y;
var _local3 = ((screenBounds.yMax * furret._yscale) * 0.01) + furret._y;
if ((_local2 - _local4) < 800) {
furret._xscale = (furret._xscale * 800) / (_local2 - _local4);
furret._yscale = furret._xscale;
}
if ((_local3 - _local5) < 600) {
furret._yscale = (furret._yscale * 600) / (_local3 - _local5);
furret._xscale = furret._yscale;
}
updateScreenPos();
}
};
zoom_mc.onPress = function () {
if (speaking) {
return(undefined);
}
this.scrolling = true;
this.onMouseMove = function () {
this._y = _root._ymouse;
this._y = Math.max(this._y, rect_mc._y);
this._y = Math.min(this._y, rect_mc._y + rect_mc._height);
};
};
zoom_mc.onMouseUp = function () {
this.scrolling = false;
delete this.onMouseMove;
};
var oldRubEnabled;
revert_mc.gotoAndStop(1);
revert_mc.onPress = function () {
if (machine_on._currentframe == 1) {
return(undefined);
}
oldRubEnabled = rubEnabled;
rubEnabled = false;
this.gotoAndStop(2);
if ((size > 50) && ((!furret.speech_mc._visible) || (furret.speech_mc.timer <= 20))) {
say(furret.speech_mc, "Uh... this feels different. Is something wrong?", "look");
}
};
revert_mc.onRelease = function () {
rubEnabled = oldRubEnabled;
this.gotoAndStop(1);
};
hold_mc.onPress = function () {
if (this._currentframe < 3) {
this.gotoAndStop(3 - this._currentframe);
emitting = Boolean(this._currentframe - 1);
if (emitting) {
if ((!furret.speech_mc._visible) || ((furret.speech_mc.letter >= furret.speech_mc.phrase.length) && (furret.speech_mc.timer < 20))) {
toSay = sayRubPoint();
if (toSay) {
say(furret.speech_mc, toSay[0], toSay[1]);
} else {
trace("Nothing to say!");
}
}
}
}
};
expand_mc.useHandCursor = false;
expand_mc.gotoAndStop(3);
expand_mc.onPress = function () {
if (((finished && (size < maxSize)) && (machine_on._currentframe == 2)) && ((!furret.speech_mc._visible) || (furret.speech_mc.timer <= 20))) {
var _local2 = rubExpand[Math.floor(rubExpand.length * Math.random())];
say(furret.speech_mc, _local2[0], _local2[1]);
expanding = true;
this.gotoAndStop(2);
}
};
expand_mc.onMouseUp = function () {
if (finished && (machine_on._currentframe == 2)) {
expanding = false;
this.gotoAndStop(1);
}
};
var storedProblem = problem;
var storedAnswer = answer;
var storedPoints = points;
furret.box_cables.gotoAndStop(1);
furret.upper_box.diode.gotoAndStop(1);
furret.upper_box.on_switch.gotoAndStop(1);
furret.box_cables.useHandCursor = false;
furret.upper_box.useHandCursor = false;
furret.upper_box.on_switch.useHandCursor = false;
furret.parallel_box.useHandCursor = false;
furret.box_cables.tabEnabled = false;
furret.upper_box.tabEnabled = false;
furret.upper_box.on_switch.tabEnabled = false;
furret.parallel_box.tabEnabled = false;
furret.box_cables.onPress = function () {
if (!rubEnabled) {
return(undefined);
}
if (this._currentframe < 3) {
this.gotoAndStop(3 - this._currentframe);
}
};
furret.parallel_box.onPress = function () {
if (!rubEnabled) {
return(undefined);
}
if (furret.box_cables._currentframe == 2) {
furret.box_cables.gotoAndStop(3);
}
};
furret.upper_box.on_switch.onPress = function () {
if (!rubEnabled) {
return(undefined);
}
bigMode();
};
furret.machine_mc.top_icon.useHandCursor = false;
furret.machine_mc.top_icon.tabEnabled = false;
furret.machine_mc.skirt_icon.useHandCursor = false;
furret.machine_mc.skirt_icon.tabEnabled = false;
furret.machine_mc.skirt_icon._alpha = 0;
furret.machine_mc.skirt_icon.onPress = function () {
if (finished) {
toggleSkirt(this._alpha == 100);
this._alpha = 100 - this._alpha;
}
};
furret.machine_mc.top_icon.onPress = function () {
if (finished) {
toggleTop(this._alpha == 100);
this._alpha = 100 - this._alpha;
}
};
_root.onMouseDown = function () {
startConversation1();
delete this.onMouseDown;
};
updateLine();
info_txt.text = "Interactive pregnant anthro Furret.\nDrawn, programmed and animated by Doom the wolf.\nhttp://doom-the-wolf.deviantart.com";
hold_mc.gotoAndStop(3);
var SHARED_TEXT = "For whatever it's worth. Browsers delete these cookies anyways...";
var so = SharedObject.getLocal("furret");
var dataLoaded = so.data;
quick_mode_mc.gotoAndStop(1);
if (metal || (!dataLoaded.finished)) {
quick_mode_mc.swapDepths(1606);
quick_mode_mc.removeMovieClip();
quick_mode_txt.swapDepths(1606);
quick_mode_txt.removeMovieClip();
} else {
speak(speech_mc, "Thanks for coming back.", null);
quick_mode_mc.onPress = function () {
quick_mode_mc.swapDepths(1606);
quick_mode_mc.removeMovieClip();
quick_mode_txt.swapDepths(1606);
quick_mode_txt.removeMovieClip();
loadQuickMode();
};
}
so = null;
Symbol 67 MovieClip Frame 1
_currentlabel = "open";
Symbol 67 MovieClip Frame 2
stop();
Symbol 67 MovieClip Frame 3
_currentlabel = "closed";
Symbol 67 MovieClip Frame 4
stop();
Symbol 67 MovieClip Frame 5
_currentlabel = "small";
Symbol 67 MovieClip Frame 6
stop();
Symbol 67 MovieClip Frame 7
_currentlabel = "medium";
Symbol 67 MovieClip Frame 8
stop();
Symbol 67 MovieClip Frame 9
_currentlabel = "big";
Symbol 67 MovieClip Frame 10
stop();
Symbol 67 MovieClip Frame 11
_currentlabel = "blink";
Symbol 67 MovieClip Frame 15
_currentlabel = "endblink";
Symbol 67 MovieClip Frame 16
stop();
Symbol 67 MovieClip Frame 20
_currentlabel = "sad";
Symbol 67 MovieClip Frame 21
stop();
Symbol 67 MovieClip Frame 22
_currentlabel = "shut";
Symbol 67 MovieClip Frame 23
stop();
Symbol 79 MovieClip Frame 1
_currentlabel = "happy";
Symbol 79 MovieClip Frame 2
stop();
Symbol 79 MovieClip Frame 3
_currentlabel = "small";
Symbol 79 MovieClip Frame 4
stop();
Symbol 79 MovieClip Frame 5
_currentlabel = "ah";
Symbol 79 MovieClip Frame 6
stop();
Symbol 79 MovieClip Frame 7
_currentlabel = "oh";
Symbol 79 MovieClip Frame 8
stop();
Symbol 79 MovieClip Frame 9
_currentlabel = "smile";
Symbol 79 MovieClip Frame 10
stop();
Symbol 79 MovieClip Frame 11
_currentlabel = "teeth1";
Symbol 79 MovieClip Frame 12
stop();
Symbol 79 MovieClip Frame 13
_currentlabel = "teeth2";
Symbol 79 MovieClip Frame 14
stop();
Symbol 79 MovieClip Frame 15
_currentlabel = "happy2";
Symbol 79 MovieClip Frame 16
stop();
Symbol 79 MovieClip Frame 17
_currentlabel = "open";
Symbol 79 MovieClip Frame 18
stop();
Symbol 89 MovieClip Frame 1
_currentlabel = "open";
Symbol 89 MovieClip Frame 2
stop();
Symbol 89 MovieClip Frame 3
_currentlabel = "closed";
Symbol 89 MovieClip Frame 4
stop();
Symbol 89 MovieClip Frame 5
_currentlabel = "small";
Symbol 89 MovieClip Frame 6
stop();
Symbol 89 MovieClip Frame 7
_currentlabel = "medium";
Symbol 89 MovieClip Frame 8
stop();
Symbol 89 MovieClip Frame 9
_currentlabel = "big";
Symbol 89 MovieClip Frame 10
stop();
Symbol 89 MovieClip Frame 11
_currentlabel = "blink";
Symbol 89 MovieClip Frame 15
_currentlabel = "endblink";
Symbol 89 MovieClip Frame 16
stop();
Symbol 89 MovieClip Frame 20
_currentlabel = "sad";
Symbol 89 MovieClip Frame 21
stop();
Symbol 89 MovieClip Frame 22
_currentlabel = "shut";
Symbol 89 MovieClip Frame 23
stop();
Symbol 103 MovieClip Frame 1
stop();
Symbol 116 MovieClip Frame 1
stop();