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 :
if (key_mc._visible) {
unlockKeyPart2("Here you");
} else {
unlockPart1("Yes, please! Do it!");
}
return;
case 1 :
if (!metal) {
unlockPart2("Energy points");
} else {
unlockKey("I'm afraid");
}
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);
speech_mc.onFinishSpeech = unlockKey;
}
function unlockKey(ph) {
if (ph.indexOf("I'm afraid") > -1) {
key_mc._visible = true;
key_mc.onPress = keyUsed;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
speech_off();
} else {
nextSpeech();
}
}
function keyUsed() {
metal = false;
furret.top1._visible = false;
furret.top2._visible = false;
createNewProblem();
mc.clear();
updateLine();
part = 0;
reset_view.onPress();
speak(speech_mc, "Is this your key?", null);
speak(furret.speech_mc, "HUH!? YES YES! Please, give it to me!", "surprised");
speak(speech_mc, "Here you go. It seems you dropped it on the way in.", null);
speech_mc.onFinishSpeech = unlockKeyPart2;
}
function unlockKeyPart2(ph) {
if (ph.indexOf("Here you") > -1) {
key_mc._visible = false;
speech_mc.onFinishSpeech = nextSpeech;
furret.speech_mc.onFinishSpeech = speech_mc.onFinishSpeech;
unlockPart1("Yes, please");
startConversation2();
} else {
nextSpeech();
}
}
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;
key_mc._visible = false;
if ((lc.domain().indexOf("deviantart") == -1) && (!DEBUG)) {
metal = true;
}
var MESSAGE_TO_YOU_GUYS = "Fine. You win. I'm giving up. Have fun.";
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.995) && (furret.leg1._currentframe > 5)) {
movePart(furret.leg2, 5);
}
if ((Math.random() > 0.995) && (furret.leg2._currentframe > 5)) {
movePart(furret.leg1, 5);
}
if ((Math.random() > 0.995) && (furret.leg1.hitTest(_root._xmouse, _root._ymouse, true))) {
movePart(furret.leg1, 5);
}
if ((Math.random() > 0.995) && (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();