Frame 1
_quality = "high";
Frame 3
progress.gotoAndStop(1 + Math.floor((10 * getBytesLoaded()) / getBytesTotal()));
if (getBytesLoaded() < getBytesTotal()) {
gotoAndPlay (2);
}
Frame 4
_quality = "high";
stopAllSounds();
stop();
Frame 5
_quality = "high";
stop();
Frame 6
function startMission() {
bloke.mission = missions[mission][0];
bloke._visible = true;
bloke.gotoAndPlay(1);
objX[objObj.length - 1] = objX[missions[mission][1]];
objY[objObj.length - 1] = objY[missions[mission][1]];
}
_quality = "medium";
var missions = new Array();
missions[0] = new Array("OK, first we need to pick up another kid from their dad's yacht. It's not far away!", 38, 0);
missions[1] = new Array("I just heard that someone's dumped a bag of rubbish in Batson Creek, let's track it down.", 1, 1);
missions[2] = new Array("Well done! Before we drop off the rubbish we'd better get some more fuel onboard.", 9, 0);
missions[3] = new Array("Now it's time to dump that rubbish, so let's head for the refuse pontoon.", 4, 0);
missions[4] = new Array("Dave the fisherman is due at his surprise birthday party. How about we give him a lift?", 58, 0);
missions[5] = new Array("Happy Birthday, Dave! OK, now let's get him over to the party at top speed.", 2, 0);
missions[6] = new Array("A friend's dinghy has broken down near Snapes Point, but I know where we can borrow some tools and parts.", 23, 0);
missions[7] = new Array("Let's get the engine parts out to them. Mind the rocks!", 65, 0);
missions[8] = new Array("They'll have the engine going again soon, but we'll let their friends know to not worry.", 41, 0);
missions[9] = new Array("OK, let's see how fast you can get to the tide gauge to finish the challenge!", 0, 0);
var hitEdgeMessage = "You hit the edge of the play area! Check the map, then reverse and use the steering to get back on course.";
var objTypeFixed = new Array(1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0);
var objTypeSizeSq = new Array(0, 0, 0.5, 0.5, 2.4, 14, 14, 2, 1.8, 1.7, 9.5, 9.5, 9.5, 6, 0, 0, 0.5, 25, 25, 1.2, 12, 25);
var scenery = new Array(16, 83, 152, 0, 9, 97, 330, 0, 18, 401, 63, 0, 19, 408, 58, 1, 20, 97, 107, 0, 15, 102, 107, 1, 15, 97, 102, 0, 15, 92, 107, 0, 15, 97, 112, 1, 21, 516, 177, 0, 17, 503, 173, 1, 18, 502, 189, 0, 4, 186, 173, 1, 19, 188, 176, 0, 18, 191, 183, 1, 19, 194, 185, 1, 12, 200, 186, 0, 19, 213, 187, 0, 19, 217, 197, 1, 17, 222, 200, 0, 19, 234, 203, 0, 19, 256, 105, 1, 11, 255, 176, 1, 4, 257, 180, 0, 19, 257, 219, 0, 19, 274, 232, 1, 10, 280, 233, 1, 19, 284, 234, 0, 19, 169, 87, 0, 10, 178, 89, 1, 11, 178, 103, 0, 19, 197, 97, 1, 19, 205, 115, 0, 17, 220, 121, 1, 19, 239, 116, 0, 19, 248, 135, 1, 18, 267, 129, 0, 19, 272, 152, 1, 12, 292, 159, 0, 11, 676, 175, 0, 19, 689, 169, 1, 18, 698, 157, 0, 19, 688, 148, 1, 12, 672, 142, 0, 19, 663, 148, 0, 17, 656, 161, 1, 18, 665, 170, 1, 4, 667, 163, 0, 19, 657, 133, 1, 19, 697, 193, 0, 19, 624, 325, 1, 15, 624, 331, 0, 5, 625, 338, 0, 19, 625, 348, 1, 5, 632, 352, 0, 15, 634, 344, 0, 5, 637, 337, 1, 15, 644, 338, 1, 6, 646, 348, 1, 7, 395, 327, 0, 8, 407, 343, 0, 7, 407, 338, 1, 8, 412, 337, 1, 7, 423, 342, 0, 8, 432, 337, 0, 4, 416, 344, 1, 13, 154, 292, 0, 14, 177, 244, 1, 14, 197, 327, 0, 13, 209, 284, 0, 13, 255, 274, 1, 14, 262, 301, 0, 13, 276, 342, 0, 14, 312, 311, 1, 13, 337, 337, 0, 13, 567, 62, 0, 14, 596, 74, 1, 13, 627, 71, 1, 14, 650, 88, 0, 12, 312, 75, 0, 11, 387, 146, 1, 10, 453, 211, 0, 12, 489, 90, 1, 11, 503, 289, 0, 10, 608, 260, 1, 3, 173, 168, 0, 3, 109, 225, 0, 3, 98, 307, 0, 2, 69, 88, 0, 2, 36, 218, 0, 2, 47, 307, 0, 1, 0, 0, 0);
var horizonScale = 400;
var landScale = 70;
var horizonWidth = ((horizonScale * Math.PI) * 2);
var mission = 0;
var x = 385;
var y = 200;
var a = ((Math.random() * Math.PI) * 2);
var s = 0;
var steer = 0;
var splash = "stopped";
var count = 0;
var engineSound = "";
var xMax = 713;
var xMin = 58;
var yMax = 366;
var yMin = 33;
var sMax = 1;
var sMin = -0.3;
var sunA = ((1.25 + (0.5 * Math.random())) * Math.PI);
var cloud1A = ((Math.random() * Math.PI) * 2);
var cloud2A = ((Math.random() * Math.PI) * 2);
var cloud3A = ((Math.random() * Math.PI) * 2);
var cloud4A = ((Math.random() * Math.PI) * 2);
var land1A = Math.PI;
var land2A = 1.4707963267949;
var land3A = 5.65486677646163;
var objObj = new Array();
var objX = new Array();
var objY = new Array();
var objMirror = new Array();
var objFixed = new Array();
var objSizeSq = new Array();
var i = 0;
while (i < Math.floor(scenery.length / 4)) {
view.attachMovie("objType" + String(scenery[i * 4]), "obj" + String(i), i);
objObj[i] = eval ("view.obj" + String(i));
objX[i] = scenery[(i * 4) + 1];
objY[i] = scenery[(i * 4) + 2];
objMirror[i] = scenery[(i * 4) + 3];
objFixed[i] = objTypeFixed[scenery[i * 4]];
objSizeSq[i] = objTypeSizeSq[scenery[i * 4]];
objObj[i]._x = -1000;
objObj[i]._y = -1000;
objObj[i]._visible = false;
i++;
}
var waveX = new Array();
var waveY = new Array();
var waveObj = new Array();
var i = 0;
while (i < 10) {
waveX[i] = Math.random() * 770;
waveY[i] = Math.random() * 400;
waveObj[i] = eval ("view.wave" + String(i));
i++;
}
map._visible = false;
startMission();
Frame 7
count++;
if (Key.isDown(32)) {
map._visible = true;
map.boat._x = -385 + x;
map.boat._y = 200 - y;
map.boat._rotation = 360 - (((360 * a) / 2) / Math.PI);
map.destination._x = -385 + objX[missions[mission][1]];
map.destination._y = 200 - objY[missions[mission][1]];
bloke._visible = false;
} else {
map._visible = false;
}
var controlsActive = true;
if (ouch._currentframe != 1) {
controlsActive = false;
}
if (map._visible) {
controlsActive = false;
}
if (Key.isDown(38) && (controlsActive)) {
s = s + 0.07;
if (s > sMax) {
s = sMax;
}
boat.accelerator.gotoAndStop("forward");
if (engineSound != "forward") {
engineIdling.gotoAndStop(3);
engineReverse.gotoAndStop(3);
engineForward.gotoAndStop(2);
engineSound = "forward";
}
} else if (Key.isDown(40) && (controlsActive)) {
if (s > 0) {
s = (s * 0.93) - 0.01;
} else {
s = s - 0.01;
}
if (s < sMin) {
s = sMin;
}
boat.accelerator.gotoAndStop("reverse");
if (engineSound != "reverse") {
engineIdling.gotoAndStop(3);
engineReverse.gotoAndStop(2);
engineForward.gotoAndStop(3);
engineSound = "reverse";
}
} else {
s = s * 0.93;
boat.accelerator.gotoAndStop("neutral");
if (engineSound != "idling") {
engineIdling.gotoAndStop(2);
engineReverse.gotoAndStop(3);
engineForward.gotoAndStop(3);
engineSound = "idling";
}
}
if (Key.isDown(37) && (controlsActive)) {
steer = steer - 0.15;
if (steer < -1) {
steer = -1;
}
} else if (Key.isDown(39) && (controlsActive)) {
steer = steer + 0.15;
if (steer > 1) {
steer = 1;
}
} else {
steer = steer * 0.75;
}
boat.wheel._rotation = steer * 90;
a = a - (((steer * s) / sMax) / 25);
if (a > (Math.PI*2)) {
a = a - (Math.PI*2);
} else if (a < 0) {
a = a + (Math.PI*2);
}
var lastX = x;
var lastY = y;
x = x + (s * Math.cos(a));
y = y + (s * Math.sin(a));
var collided = false;
if (x > xMax) {
x = xMax - 0.5;
collided = true;
}
if (x < xMin) {
x = xMin + 0.5;
collided = true;
}
if (y > yMax) {
y = yMax - 0.5;
collided = true;
}
if (y < yMin) {
y = yMin + 0.5;
collided = true;
}
if (collided) {
bloke.mission = hitEdgeMessage;
bloke._visible = true;
bloke.gotoAndPlay(1);
}
if (!collided) {
var noseX = (x + Math.cos(a));
var noseY = (y + Math.sin(a));
var i = 0;
while (i < objObj.length) {
if (objSizeSq[i] > 0) {
var j = (((noseX - objX[i]) * (noseX - objX[i])) + ((noseY - objY[i]) * (noseY - objY[i])));
if (j < objSizeSq[i]) {
if (((s < (sMax / 2)) && (i == missions[mission][1])) && (map._visible == false)) {
bell.gotoAndPlay(2);
if (missions[mission][2] == 1) {
objX[i] = -1000;
}
mission++;
if (mission == missions.length) {
var k = 0;
while (k < objObj.length) {
objObj[k].removeMovieClip();
k++;
}
engineIdling.gotoAndStop(3);
engineReverse.gotoAndStop(3);
engineForward.gotoAndStop(3);
gotoAndPlay (9);
} else {
startMission();
if (s > 0) {
s = -0.1;
} else {
s = 0.1;
}
}
} else {
collided = true;
}
x = lastX;
y = lastY;
i = 999;
}
}
i++;
}
}
if (collided) {
ouch.gotoAndPlay(Math.floor(2 + ((sMax - s) * 15)));
if (s > (sMax * 0.9)) {
thudBig.gotoAndPlay(2);
} else if (s > (sMax * 0.5)) {
thudMedium.gotoAndPlay(2);
} else {
thudSmall.gotoAndPlay(2);
}
s = (-s) / 2;
}
view._rotation = ((((-steer) * s) / sMax) * 7) + (1.5 * Math.sin(count / 11));
boat._rotation = (-view._rotation) / 3;
var wave1 = Math.sin(count / 13);
var wave2 = Math.cos(count / 5);
view._y = ((200 + (s * 10)) + ((5 + (5 * s)) * wave1)) + ((12 * s) * wave2);
boat._y = ((420 - (s * 10)) - (3 * wave1)) + ((3 * s) * wave2);
var splashNew = "stopped";
if (s > (sMax * 0.67)) {
splashNew = "fast";
} else if (s > (sMax * 0.33)) {
splashNew = "slow";
}
if (splashNew != splash) {
splash = splashNew;
if (splash == "fast") {
boat.splashLeft.gotoAndPlay(11 + Math.floor(6 * Math.random()));
boat.splashRight.gotoAndPlay(11 + Math.floor(6 * Math.random()));
} else if (splash == "slow") {
boat.splashLeft.gotoAndPlay("slow");
boat.splashRight.gotoAndPlay("slow");
} else {
boat.splashLeft.gotoAndStop("stopped");
boat.splashRight.gotoAndStop("stopped");
}
} else if ((splashNew == "fast") && (Math.random() < 0.1)) {
boat.splashLeft.gotoAndPlay(11 + Math.floor(6 * Math.random()));
boat.splashRight.gotoAndPlay(11 + Math.floor(6 * Math.random()));
}
if (s > 0.1) {
if (Math.random() < 0.15) {
splashes.gotoAndStop(Math.floor(2 + (((s / sMax) * 10.99) * Math.random())));
}
} else if (s < -0.1) {
if (Math.random() < 0.2) {
splashes.gotoAndStop(Math.floor(2 + (2.99 * Math.random())));
}
}
view.sun._x = (a - sunA) * horizonScale;
cloud1A = cloud1A + 0.0007;
if (cloud1A > (Math.PI*2)) {
cloud1A = cloud1A - (Math.PI*2);
}
cloud2A = cloud2A - 0.0007;
if (cloud2A < 0) {
cloud2A = cloud2A + (Math.PI*2);
}
cloud3A = cloud3A + 0.001;
if (cloud3A > (Math.PI*2)) {
cloud3A = cloud3A - (Math.PI*2);
}
cloud4A = cloud4A - 0.001;
if (cloud4A < 0) {
cloud4A = cloud4A + (Math.PI*2);
}
view.cloud1._x = (a - cloud1A) * horizonScale;
if (view.cloud1._x > (horizonWidth / 2)) {
view.cloud1._x = view.cloud1._x - horizonWidth;
}
if (view.cloud1._x < ((-horizonWidth) / 2)) {
view.cloud1._x = view.cloud1._x + horizonWidth;
}
view.cloud2._x = (a - cloud2A) * horizonScale;
if (view.cloud2._x > (horizonWidth / 2)) {
view.cloud2._x = view.cloud2._x - horizonWidth;
}
if (view.cloud2._x < ((-horizonWidth) / 2)) {
view.cloud2._x = view.cloud2._x + horizonWidth;
}
view.cloud3._x = (a - cloud3A) * horizonScale;
if (view.cloud3._x > (horizonWidth / 2)) {
view.cloud3._x = view.cloud3._x - horizonWidth;
}
if (view.cloud3._x < ((-horizonWidth) / 2)) {
view.cloud3._x = view.cloud3._x + horizonWidth;
}
view.cloud4._x = (a - cloud4A) * horizonScale;
if (view.cloud4._x > (horizonWidth / 2)) {
view.cloud4._x = view.cloud4._x - horizonWidth;
}
if (view.cloud4._x < ((-horizonWidth) / 2)) {
view.cloud4._x = view.cloud4._x + horizonWidth;
}
var land1AAdjusted = (land1A - ((((200 - y) / 200) * Math.PI) / 8));
var land2AAdjusted = (land2A - ((((385 - x) / 385) * Math.PI) / 8));
var land3AAdjusted = ((land3A + ((((200 - y) / 200) * Math.PI) / 16)) + ((((385 - x) / 385) * Math.PI) / 16));
view.land1._x = (a - land1AAdjusted) * horizonScale;
if (view.land1._x > (horizonWidth / 2)) {
view.land1._x = view.land1._x - horizonWidth;
}
if (view.land1._x < ((-horizonWidth) / 2)) {
view.land1._x = view.land1._x + horizonWidth;
}
view.land2._x = (a - land2AAdjusted) * horizonScale;
if (view.land2._x > (horizonWidth / 2)) {
view.land2._x = view.land2._x - horizonWidth;
}
if (view.land2._x < ((-horizonWidth) / 2)) {
view.land2._x = view.land2._x + horizonWidth;
}
view.land3._x = (a - land3AAdjusted) * horizonScale;
if (view.land3._x > (horizonWidth / 2)) {
view.land3._x = view.land3._x - horizonWidth;
}
if (view.land3._x < ((-horizonWidth) / 2)) {
view.land3._x = view.land3._x + horizonWidth;
}
view.land1._xscale = 100 + (((385 - x) / 300) * landScale);
view.land1._yscale = view.land1._xscale;
view.land2._xscale = 100 - (((200 - y) / 300) * landScale);
view.land2._yscale = view.land2._xscale;
view.land3._xscale = (100 + ((((200 - y) / 300) * landScale) * 0.33)) - ((((385 - x) / 300) * landScale) * 0.67);
view.land3._yscale = view.land3._xscale;
i = 0;
while (i < objObj.length) {
var tX = (objX[i] - x);
var tY = (objY[i] - y);
var mC = Math.cos((Math.PI/2) - a);
var mS = Math.sin((Math.PI/2) - a);
var tX2 = ((mC * tX) - (mS * tY));
var tY2 = ((mS * tX) + (mC * tY));
var tD = Math.sqrt(((tX2 * tX2) / 2) + (tY2 * tY2));
if (((tD < 2) || (tD > 75)) || (tY2 < 2)) {
objObj[i]._visible = false;
} else {
objObj[i]._x = (tX2 / tD) * 430;
objObj[i]._y = 10 + (450 / tD);
if (objFixed[i] == 0) {
objObj[i]._y = objObj[i]._y + ((50 / tD) * Math.sin(((count + objX[i]) + objY[i]) / 12));
}
objObj[i]._xscale = 800 / tD;
if (objMirror[i] == 1) {
objObj[i]._xscale = -objObj[i]._xscale;
}
objObj[i]._yscale = 800 / tD;
objObj[i].swapDepths((100 * Math.floor((76 - tD) * 5)) + i);
objObj[i]._visible = true;
if (tD > 65) {
objObj[i]._alpha = 100 - ((tD - 65) * 10);
} else {
objObj[i]._alpha = 100;
}
}
i++;
}
var i = 0;
while (i < 10) {
var tX = (waveX[i] - x);
var tY = (waveY[i] - y);
var mC = Math.cos((Math.PI/2) - a);
var mS = Math.sin((Math.PI/2) - a);
var tX2 = ((mC * tX) - (mS * tY));
var tY2 = ((mS * tX) + (mC * tY));
var tD = Math.sqrt(((tX2 * tX2) / 2) + (tY2 * tY2));
if ((((tD < 2) || (tD > 40)) || (tY2 < 2)) || (waveObj[i]._currentframe == waveObj[i]._totalframes)) {
waveObj[i]._visible = false;
waveX[i] = (x - 40) + (80 * Math.random());
waveY[i] = (y - 40) + (80 * Math.random());
waveObj[i].gotoAndPlay(1 + Math.floor(4 * Math.random()));
waveObj[i]._alpha = 30 + (Math.random() * 50);
} else {
waveObj[i]._x = (tX2 / tD) * 430;
waveObj[i]._y = 10 + (450 / tD);
waveObj[i]._y = waveObj[i]._y + ((50 / tD) * Math.sin(((count + waveX[i]) + waveY[i]) / 12));
waveObj[i]._xscale = 800 / tD;
if ((i % 2) == 1) {
waveObj[i]._xscale = -waveObj[i]._xscale;
}
waveObj[i]._yscale = 800 / tD;
waveObj[i]._visible = true;
}
i++;
}
var coords = new Object();
coords.x = view.sun._x;
coords.y = view.sun._y;
view.localToGlobal(coords);
var sX = (coords.x - 385);
var sY = (coords.y - 200);
if ((sX < -500) || (sX > 500)) {
flare1._visible = false;
flare2._visible = false;
flare3._visible = false;
flare4._visible = false;
flare5._visible = false;
flare6._visible = false;
} else {
flare1._x = 385 + (sX * 0.6);
flare1._y = 200 + (sY * 0.6);
flare1._visible = true;
flare2._x = 385 + (sX * 0.8);
flare2._y = 200 + (sY * 0.8);
flare2._visible = true;
flare3._x = 385 + (sX * 0.4);
flare3._y = 200 + (sY * 0.4);
flare3._visible = true;
flare4._x = 385 + (sX * 0.25);
flare4._y = 200 + (sY * 0.25);
flare4._visible = true;
flare5._x = 385 - (sX * 0.4);
flare5._y = 200 - (sY * 0.4);
flare5._visible = true;
flare6._x = 385 - (sX * 0.7);
flare6._y = 200 - (sY * 0.7);
flare6._visible = true;
}
var c = Math.floor(((((Math.PI*2) - a) / Math.PI) / 2) * 99.99);
c = ((c + 26) % 100) + 1;
if (map._visible) {
map.compass.gotoAndStop(c);
} else {
boat.compass.gotoAndStop(c);
}
Frame 8
gotoAndPlay (7);
Frame 9
_quality = "high";
timer = count / 20;
stop();
Symbol 8 MovieClip Frame 1
stop();
Symbol 17 Button
on (release) {
getURL ("http://www.salcombepowerboats.co.uk/", "_blank");
}
Symbol 24 Button
on (release) {
getURL ("http://www.bigpictureinteractive.co.uk/", "_blank");
}
Symbol 31 Button
on (release) {
gotoAndPlay (5);
}
Symbol 34 Button
on (release) {
gotoAndPlay (6);
}
Symbol 129 MovieClip Frame 1
stop();
Symbol 131 MovieClip Frame 1
stop();
Symbol 132 MovieClip Frame 1
stop();
Symbol 135 MovieClip Frame 1
stop();
Symbol 137 MovieClip Frame 1
stop();
Symbol 139 MovieClip Frame 1
stop();
Symbol 141 MovieClip Frame 1
stop();
Symbol 153 MovieClip Frame 1
stop();
Symbol 178 MovieClip Frame 1
stop();
Symbol 184 MovieClip Frame 1
stop();
Symbol 184 MovieClip Frame 9
gotoAndPlay (2);
Symbol 184 MovieClip Frame 18
gotoAndPlay (11);
Symbol 200 MovieClip Frame 1
stop();
Symbol 204 MovieClip Frame 1
stop();
Symbol 230 MovieClip Frame 10
stop();
Symbol 236 Button
on (release) {
gotoAndPlay (4);
}
Symbol 247 Button
on (release) {
getURL ("http://www.salcombepowerboats.co.uk/", "_blank");
}