Frame 1
stop();
barbie_mc._x = -36;
_root.onEnterFrame = function () {
var _local2 = _root;
var _local1 = Math.round((_local2.getBytesLoaded() / _local2.getBytesTotal()) * 100);
loadingTxt.text = ("loading... " + _local1.toString()) + "%";
lastStep = step;
step = Math.floor(_local1 / 10);
if (lastStep != step) {
barbie_mc._x = (step * 72) - 36;
barbie_mc.gotoAndPlay(1);
}
if (_local1 == 100) {
delete _local2.onEnterFrame;
gotoAndStop (3);
}
};
Frame 3
play();
function initSounds() {
_root.soundOn = true;
_root.createEmptyMovieClip("soundHolder", 25000);
soundDepth = 0;
createSound("ffg_playmusic.mp3", "playMusic_snd");
createSound("ffg_trk6_Xloop.mp3", "playTrack_snd");
createSound("ffg_goal.wav", "goal_snd");
createSound("ffg_jumpingonhand.mp3", "jumpingonhand_snd");
createSound("ffg_booo.mp3", "booo_snd");
createSound("ffg_year.mp3", "year_snd");
createSound("ffg_collective_yearh.mp3", "collective_yearh_snd");
createSound("ffg_rolling.mp3", "rolling_snd");
createSound("ffg_bonus.mp3", "bonus_snd");
createSound("ffg_footkick1.mp3", "footkick_snd");
createSound("BL_barbie_hit1.wav", "barbie_hit1_snd");
createSound("BL_barbie_hit2.wav", "barbie_hit2_snd");
createSound("BL_barbie_hit3.wav", "barbie_hit3_snd");
playMusic_snd.setVolume(80);
playTrack_snd.setVolume(100);
goal_snd.setVolume(100);
jumpingonhand_snd.setVolume(100);
booo_snd.setVolume(100);
year_snd.setVolume(100);
collective_yearh_snd.setVolume(70);
rolling_snd.setVolume(100);
bonus_snd.setVolume(100);
footkick_snd.setVolume(100);
barbie_hit1_snd.setVolume(60);
barbie_hit2_snd.setVolume(60);
barbie_hit3_snd.setVolume(60);
ooof_snd_arr = [barbie_hit1_snd, barbie_hit2_snd, barbie_hit3_snd];
}
function createSound(id, name) {
soundDepth++;
instName = ("sound" + soundDepth) + "_mc";
soundHolder.createEmptyMovieClip(instName, soundDepth);
var _local1 = soundHolder[instName];
_root[name] = new Sound(_local1);
_root[name].attachSound(id);
}
function playSound(snd) {
if (soundOn) {
snd.start();
}
}
function playSoundOoof() {
if (soundOn) {
ooof_snd_arr[random(3)].start();
}
}
function playSoundDelay(snd, delay) {
if (soundOn) {
snd.start(delay);
}
}
function playSoundLoop(snd) {
if (soundOn) {
snd.start(0, 5000);
}
}
function playSoundVolume(snd, volume) {
if (soundOn) {
snd.setVolume(volume);
snd.start();
}
}
function stopSound(snd) {
snd.stop();
}
function fadeSound(snd) {
var _local2 = _root;
soundFaderCounter++;
var str = ("fader" + soundFaderCounter);
var _local3 = 100000 + soundFaderCounter;
_local2.createEmptyMovieClip(str, _local3);
_local2[str].onEnterFrame = function () {
var _local1 = snd.getVolume();
_local1 = _local1 - 5;
snd.setVolume(_local1);
if (_local1 <= 0) {
delete _root[str].onEnterFrame;
snd.setVolume(100);
stopSound(snd);
}
};
}
function calculateVolume(velocity) {
var _local1 = Math.floor((dist(0, 0, velocity.x, velocity.y) * 100) / maxSpeed);
if (_local1 > 100) {
_local1 = 100;
}
return(_local1);
}
initSounds();
Frame 318
stop();
Frame 446
nextFrame();
Frame 447
_global.tPhysic = function () {
this.reset();
};
_global.tPhysic.prototype.reset = function (newVect) {
var _local1 = this;
_local1.gravity = new Vector2d(0, 0.01);
_local1.bounce = 0.2;
_local1.friction = 0.998;
};
_global.tPhysic.prototype.changeGravity = function (newVect) {
this.gravity = newVect;
};
_global.Position = function (x, y) {
this.x = x;
this.y = y;
};
_global.Position.prototype.toString = function () {
return((("x: " + this.x) + " , y: ") + this.y);
};
_global.Vector2d = function (x, y) {
this.x = x;
this.y = y;
};
_global.Vector2d.prototype.toString = function () {
return((("x: " + this.x) + " , y: ") + this.y);
};
_global.tVector = function (x, y) {
var _local1 = this;
var _local2 = y;
var _local3 = x;
_local1.x = _local3;
_local1.y = _local2;
_local1.norm = dist(0, 0, _local3, _local2);
_local1.phiRad = Math.atan2(_local2, _local3);
_local1.phiDeg = _local1.phiRad * toDeg;
};
_global.tVector.prototype.toString = function () {
var _local2 = this;
var _local1 = (("x: " + _local2.x) + " , y: ") + _local2.y;
_local1 = _local1 + ("\nnorm: " + _local2.norm);
_local1 = _local1 + ("\nphiRad: " + _local2.phiRad);
_local1 = _local1 + ("\nphiDeg: " + _local2.phiDeg);
return(_local1);
};
_global.tBall = function (where, pos, vel, mc) {
var _local1 = this;
_local1.mc = mc || (_local1.createBall(where));
_local1.hitZone = _local1.mc.hitZone;
_local1.pos = pos;
_local1.vel = vel;
_local1.physic = new tPhysic();
_local1.oldPos = new Position();
_local1.mode = undefined;
_local1.oldMode = undefined;
_local1.collision = 0;
_local1.radius = radius;
};
_global.tBall.prototype.nextDepth = function () {
_global.tBall.nextDepthCounter++;
return(_global.tBall.nextDepthCounter);
};
_global.tBall.prototype.createBall = function (where) {
var _local1 = this;
_global.tBall.numBallInPlay++;
var _local2 = _local1.nextDepth();
_local1.type = myGame.barbieType[random(myGame.barbieType.length)];
_local1.numLife = _local1.type;
var _local3 = where.attachMovie(myQuality.barbieClip + _local1.numLife, (str = "barbie" + _local2), _local2);
return(_local3);
};
_global.tBall.prototype.changeHolder = function (where) {
var _local1 = this;
if (_local1.mc._parent != where) {
var _local2 = _local1.mc.getDepth();
var _local3 = where.attachMovie("ball", (str = "ball" + _local2), _local2);
_local1.mc.removeMovieClip();
_local1.mc = _local3;
_local1.hitZone = _local3.hitZone;
}
};
_global.tBall.prototype.decreaseNumLife = function () {
if (this.numLife > 0) {
this.numLife--;
}
};
_global.tBall.prototype.changeMode = function (mode) {
var _local1 = this;
_local1.oldMode = _local1.mode;
_local1.mode = mode;
if (_local1.oldMode != _local1.mode) {
switch (mode) {
case "chase" :
_local1.mc.gotoAndStop("walk");
return;
case "hit" :
_local1.mc.gotoAndStop("hit");
_local1.decreaseNumLife();
myScore.addScore("hit", _local1.mc._x, _local1.mc._y - (140 * pFactor(_local1.mc._y)));
return;
case "knocked" :
_local1.mc.gotoAndStop("knocked");
_local1.startTimeOut();
return;
case "dead" :
_local1.mc.gotoAndStop("dead");
var thisObj = _local1;
_local1.mc.callBack = function () {
thisObj.changeMode("out");
};
return;
case "gameOver" :
_local1.mc.gotoAndStop("walk");
return;
case "stop" :
_local1.mc.gotoAndStop("stop");
}
}
};
_global.tBall.prototype.startTimeOut = function () {
var _local1 = this;
var thisObj = _local1;
clearInterval(_local1.timeOutInt);
_local1.timeOutInt = setInterval(function () {
if (!pauseFlag) {
if (thisObj.numLife == 0) {
switch (thisObj.type) {
case 1 :
myScore.addScore("dead1", thisObj.mc._x, thisObj.mc._y - (140 * pFactor(thisObj.mc._y)));
break;
case 2 :
myScore.addScore("dead2", thisObj.mc._x, thisObj.mc._y - (140 * pFactor(thisObj.mc._y)));
break;
case 3 :
myScore.addScore("dead3", thisObj.mc._x, thisObj.mc._y - (140 * pFactor(thisObj.mc._y)));
}
thisObj.changeMode("dead");
} else {
thisObj.changeMode("chase");
}
clearInterval(thisObj.timeOutInt);
}
}, 2000);
};
_global.tBall.prototype.teleport = function (pos, vel, mode) {
var _local1 = this;
_local1.pos = pos;
_local1.vel = vel;
_local1.changeMode(mode);
refreshBallPos(pos, _local1);
};
_global.tBall.prototype.reset = function () {
_global.tBall.nextDepthCounter = 0;
};
_global.tBall.prototype.toString = function (mode) {
return(this.mc._name);
};
_global.tBall.prototype.stopProjectile = function () {
this.changeMode("follow");
myHand.ballMoving = false;
if (myHand.pressMouse) {
myHand.startPowerUp();
}
};
_global.tHand = function (handMC, powerMC) {
var _local1 = this;
_local1.handMC = handMC;
_local1.powerMC = powerMC;
_local1.pos = new Position();
_local1.xMax = 200;
_local1.xMin = -200;
_local1.incSpeed = 5;
_local1.decSpeed = -10;
_local1.power = undefined;
_local1.resetPowerBar();
_local1.ballMoving = false;
_local1.strength = undefined;
};
_global.tHand.prototype.move = function () {
var _local1 = this;
_local1.pos.x = gameScreen_mc._xmouse;
if (_local1.pos.x > _local1.xMax) {
_local1.pos.x = _local1.xMax;
}
if (_local1.pos.x < _local1.xMin) {
_local1.pos.x = _local1.xMin;
}
_local1.handMC._x = _local1.pos.x;
};
_global.tHand.prototype.resetPowerBar = function () {
this.powerMC.bar._yscale = 0;
this.power = 0;
};
_global.tHand.prototype.startPowerUp = function () {
var _local1 = this;
_local1.handMC.gotoAndStop("brace");
ths = _local1;
_local1.powerMC.onEnterFrame = function () {
ths.power = ths.power + ths.incSpeed;
if (ths.power > 100) {
ths.power = 100;
}
ths.powerMC.bar._yscale = ths.power;
};
};
_global.tHand.prototype.releasePower = function () {
var _local1 = this;
_local1.handMC.gotoAndPlay("fire");
ths = _local1;
_local1.powerMC.onEnterFrame = function () {
ths.power = ths.power + ths.decSpeed;
if (ths.power < 0) {
ths.power = 0;
}
ths.powerMC.bar._yscale = ths.power;
};
};
_global.tScore = function (mc) {
var _local1 = this;
_local1.mc = mc;
_local1.txtField = mc.scoreDisplayTxt;
_local1.mainScore = undefined;
_local1.reset();
};
_global.tScore.prototype.reset = function () {
var _local1 = this;
_local1.mainScore = 0;
_local1.bDepth = 3000;
_local1.updateDisplay();
};
_global.tScore.prototype.updateDisplay = function () {
this.txtField.text = this.mainScore;
};
_global.tScore.prototype.addScore = function (type, x, y) {
var _local1 = this;
var _local2 = y;
var _local3 = x;
switch (type) {
case "hit" :
_local1.mainScore++;
_local1.displayBonus("+1", _local3, _local2, 0);
playSoundOoof();
break;
case "dead1" :
_local1.mainScore = _local1.mainScore + 1;
_local1.displayBonus("+1", _local3, _local2, 13500424);
break;
case "dead2" :
_local1.mainScore = _local1.mainScore + 2;
_local1.displayBonus("+2", _local3, _local2, 13500424);
break;
case "dead3" :
_local1.mainScore = _local1.mainScore + 3;
_local1.displayBonus("+3", _local3, _local2, 13500424);
break;
case "goal" :
_local1.mainScore = _local1.mainScore + 15;
_local1.displayBonus("+15", _local3, _local2, 22990);
playSound(goal_snd);
break;
case "bonus" :
_local1.mainScore = _local1.mainScore + 50;
_local1.displayBonus("+50", _local3, _local2, 22990);
}
_local1.updateDisplay();
};
_global.tScore.prototype.displayBonusHIGH = function (dispStr, x, y, tColor) {
var _local1 = "b" + (this.bDepth++);
var mc = gameScreen_mc.attachMovie("bonus", _local1, this.bDepth);
mc.disp_bonus.text = dispStr;
mc.disp_bonus.textColor = tColor;
mc._x = x;
mc._y = y;
var counter = 0;
mc.onEnterFrame = function () {
mc._x = x + (Math.sin((counter = counter + 0.15)) * 7);
mc._y = mc._y - 2;
mc._alpha = mc._alpha - 2;
if (mc._alpha < 5) {
delete mc.onEnterFrame;
mc.removeMovieClip();
}
};
};
_global.tScore.prototype.displayBonusLOW = function (dispStr, x, y, tColor) {
var _local1 = "b" + (this.bDepth++);
var mc = gameScreen_mc.attachMovie("bonus", _local1, this.bDepth);
mc.disp_bonus.text = dispStr;
mc.disp_bonus.textColor = tColor;
mc._x = x;
mc._y = y;
mc.timeInt = setInterval(function () {
mc.removeMovieClip();
clearInterval(mc.timeInt);
}, 1600);
};
_global.tWagon = function () {
var _local1 = this;
_local1.mc = undefined;
_local1.counter = 0;
_local1.frequency = 900;
_local1.xStart = 280;
_local1.yMin = -410;
_local1.yMax = -270;
_local1.maxSpeed = 8;
_local1.currSpeed = undefined;
_local1.dir = undefined;
_local1.changeMode("disabled");
};
_global.tWagon.prototype.changeMode = function (mode) {
var _local1 = this;
_local1.mode = mode;
switch (mode) {
case "disabled" :
return;
case "roll" :
switch (_local1.dir) {
case -1 :
_local1.mc.gotoAndStop("fromLeft");
break;
case 1 :
_local1.mc.gotoAndStop("fromRight");
}
return;
case "hit" :
_local1.mc.gotoAndStop("hit");
thisObj = _local1;
_local1.mc.callBack = function () {
thisObj.remove();
};
}
};
_global.tWagon.prototype.generate = function () {
var _local1 = this;
_local1.counter++;
if ((_local1.counter % _local1.frequency) == 0) {
_local1.createNewWagon();
playSound(rolling_snd);
}
};
_global.tWagon.prototype.findNewDepth = function (y) {
var _local1 = (Math.floor(y + 500) * 2) + 1;
return(_local1);
};
_global.tWagon.prototype.createNewWagon = function () {
var _local1 = this;
_local1.mc.removeMovieClip();
_local1.enabled = true;
var dirArr = [-1, 1];
_local1.dir = dirArr[random(2)];
var _local2 = random(_local1.yMax - _local1.yMin) + _local1.yMin;
var wDepth = _local1.findNewDepth(_local2);
var str = ("w" + wDepth);
_local1.mc = _root.gameScreen_mc.attachMovie("wagon", str, wDepth);
_local1.hitZone = _local1.mc.hitZone;
_local1.mc._x = _local1.xStart * _local1.dir;
_local1.mc._y = _local2;
_local1.changeMode("roll");
var _local3 = pFactor(_local2) * 1.82;
_local1.currSpeed = _local1.maxSpeed * _local3;
_local1.mc._xscale = (_local1.mc._yscale = _local3 * 100);
};
_global.tWagon.prototype.move = function () {
var _local1 = this;
_local1.mc._x = _local1.mc._x + ((-_local1.currSpeed) * _local1.dir);
if (Math.abs(_local1.mc._x) > _local1.xStart) {
_local1.remove();
}
};
_global.tWagon.prototype.remove = function () {
this.mc.removeMovieClip();
this.changeMode("disabled");
};
_global.tGame = function () {
var _local1 = this;
_local1.gameStarted = false;
_local1.startTime = undefined;
_local1.stopTime = undefined;
_local1.lastCurrTime = 0;
_local1.currTime = 0;
_local1.dificultyLevel = 0;
_local1.maxSpeed = undefined;
_local1.barbieFrequency = undefined;
_local1.incDificulty();
};
_global.tGame.prototype.startGame = function () {
this.gameStarted = true;
this.startTime = getTimer();
};
_global.tGame.prototype.stopGame = function () {
this.gameStarted = false;
this.stopTime = getTimer();
};
_global.tGame.prototype.doTiming = function () {
var _local1 = this;
_local1.lastCurrTime = _local1.currTime;
_local1.currTime = Math.floor((getTimer() - _local1.startTime) / 1000);
if (_local1.lastCurrTime != _local1.currTime) {
if ((_local1.currTime % 20) == 0) {
_local1.incDificulty();
}
}
};
_global.tGame.prototype.incDificulty = function () {
var _local1 = this;
_local1.dificultyLevel++;
switch (_local1.dificultyLevel) {
case 1 :
_local1.maxSpeed = 2;
_local1.barbieFrequency = 60;
_local1.barbieType = [1];
return;
case 2 :
_local1.maxSpeed = 3;
_local1.barbieFrequency = 60;
_local1.barbieType = [1];
return;
case 3 :
_local1.maxSpeed = 3;
_local1.barbieFrequency = 55;
_local1.barbieType = [1, 2];
return;
case 4 :
_local1.maxSpeed = 4;
_local1.barbieFrequency = 55;
_local1.barbieType = [1, 2];
return;
case 5 :
_local1.maxSpeed = 4;
_local1.barbieFrequency = 50;
_local1.barbieType = [1, 2, 3];
return;
case 6 :
_local1.maxSpeed = 5;
_local1.barbieFrequency = 50;
_local1.barbieType = [1, 2, 3];
return;
case 7 :
_local1.dificultyLevel--;
}
};
_global.tGame.prototype.toString = function () {
var _local1 = this;
trace("dificulty: " + _local1.dificultyLevel);
trace("maxSpeed: " + _local1.maxSpeed);
trace("barbieFrequency: " + _local1.barbieFrequency);
};
_global.tGoal = function (mc) {
this.mc = mc;
this.hitZone = _root.gameScreen_mc.goalHitZone;
};
_global.tQuality = function (mc) {
var _local1 = this;
_local1.mc = mc;
_local1.currQuality = undefined;
_local1.barbieClip = undefined;
_local1.reset();
};
_global.tQuality.prototype.reset = function () {
var _local1 = this;
_local1.setHigh();
_local1.freezeQuality = "high";
_local1.testDone = false;
};
_global.tQuality.prototype.setHigh = function () {
var _local1 = this;
trace("setHigh");
_local1.currQuality = "HIGH";
_local1.barbieClip = "barbieHIGH";
_local1.mc.gotoAndStop("high");
_quality = "HIGH";
_global.tScore.prototype.displayBonus = _global.tScore.prototype.displayBonusHIGH;
};
_global.tQuality.prototype.setMedium = function () {
var _local1 = this;
trace("setMedium");
_local1.currQuality = "LOW";
_local1.barbieClip = "barbieHIGH";
_local1.mc.gotoAndStop("medium");
_quality = "LOW";
_global.tScore.prototype.displayBonus = _global.tScore.prototype.displayBonusHIGH;
};
_global.tQuality.prototype.setLow = function () {
var _local1 = this;
trace("setLow");
_local1.currQuality = "LOW";
_local1.barbieClip = "barbieLOW";
_local1.mc.gotoAndStop("low");
_quality = "LOW";
_global.tScore.prototype.displayBonus = _global.tScore.prototype.displayBonusLOW;
};
function dist(x1, y1, x2, y2) {
return(Math.sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1))));
}
function squareDist(x1, y1, x2, y2) {
return(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1)));
}
function normalizeVect(v) {
var _local1 = v;
var _local3 = _local1.x / _local1.norm;
var _local2 = _local1.y / _local1.norm;
return(new tVector(_local3, _local2));
}
function normalizeVector(v) {
var _local2 = v;
var _local1 = dist(0, 0, _local2.x, _local2.y);
if (_local1 != 0) {
_local2.x = _local2.x / _local1;
_local2.y = _local2.y / _local1;
_local2.z = _local2.z / _local1;
}
}
function DotProduct(v1, v2) {
var _local1 = v2;
var _local2 = v1;
return(((_local2.x * _local1.x) + (_local2.y * _local1.y)) + (_local2.z * _local1.z));
}
function ScaleVector(v, scale) {
var _local2 = v;
var _local3 = scale;
var _local1 = new tVector();
_local1.x = _local2.x * _local3;
_local1.y = _local2.y * _local3;
_local1.z = _local2.z * _local3;
return(_local1);
}
function VectorSum(v1, v2) {
var _local2 = v2;
var _local3 = v1;
var _local1 = new tVector();
_local1.x = _local3.x + _local2.x;
_local1.y = _local3.y + _local2.y;
_local1.z = _local3.z + _local2.z;
return(_local1);
}
function VectorDifference(v1, v2) {
var _local2 = v2;
var _local3 = v1;
var _local1 = new tVector();
_local1.x = _local3.x - _local2.x;
_local1.y = _local3.y - _local2.y;
_local1.z = _local3.z - _local2.z;
return(_local1);
}
function sumVect(v1, v2, v3) {
var _local2 = (v1.x + v2.x) + v3.x;
var _local1 = (v1.y + v2.y) + v3.y;
return(new tVector(_local2, _local1));
}
function randomVelocity(norm, angle, range) {
var _local2 = angle + ((Math.random() * range) - (range / 2));
var _local1 = _local2 * toRad;
return(new Position(norm * Math.cos(_local1), norm * Math.sin(_local1)));
}
function pFactor(val) {
return(1 + (val / perspectiveFactor));
}
function offsetArr_noSameValue(arr, offset) {
var _local1 = arr;
var _local2 = offset;
for (var i in _local1) {
for (var _local3 in _local1) {
if (_local3 == i) {
continue;
}
if (_local1[i] == _local1[_local3]) {
for (k in _local1) {
if (_local1[k] >= _local1[_local3]) {
_local1[k] = _local1[k] + _local2;
}
}
}
}
}
}
function doBallCollision(b1, b2) {
var _local1 = b1;
var _local3 = b2;
var _local2 = VectorDifference(_local1.pos, _local3.pos);
var distBall = dist(_local1.pos.x, _local1.pos.y, _local3.pos.x, _local3.pos.y);
if (distBall < (2 * _local1.radius)) {
normalizeVector(_local2);
var relativeVelocity = DotProduct(_local2, _local1.vel);
if (relativeVelocity < 0) {
var VdotN = DotProduct(_local2, _local1.vel);
var Vn = ScaleVector(_local2, VdotN);
var Vn1 = ScaleVector(Vn, _local1.physic.bounce);
var Vt = VectorDifference(_local1.vel, Vn1);
if (_local1.mode != "hit") {
_local1.vel = VectorDifference(Vt, Vn1);
}
if (_local3.mode != "hit") {
_local3.vel = VectorSum(Vn, _local3.vel);
}
}
}
}
function doProjectileCollision(b, p, pStrength) {
var _local1 = b;
var _local3 = p;
var _local2 = VectorDifference(_local1.pos, _local3.pos);
var distBall = dist(_local1.pos.x, _local1.pos.y, _local3.pos.x, _local3.pos.y);
if (distBall < (2 * _local1.radius)) {
normalizeVector(_local2);
var relativeVelocity = DotProduct(_local2, _local1.vel);
if (relativeVelocity < 0) {
_local1.vel.x = _local2.x * maxSpeed;
_local1.vel.y = -maxSpeed;
_local3.stopProjectile();
if (pStrength > 75) {
_local1.changeMode("hit");
}
}
}
}
function doBallCollisionHit(b, p) {
var _local1 = p;
var _local2 = b;
var _local3 = VectorDifference(_local2.pos, _local1.pos);
var distBall = dist(_local2.pos.x, _local2.pos.y, _local1.pos.x, _local1.pos.y);
if (distBall < (2 * _local2.radius)) {
normalizeVector(_local3);
var relativeVelocity = DotProduct(_local3, _local2.vel);
if (relativeVelocity < 0) {
_local1.vel.x = _local3.x * maxSpeed;
_local1.vel.y = -maxSpeed;
_local1.changeMode("hit");
}
}
}
function initAllObjects() {
initMain();
initBall();
initHand();
initProj();
initScore();
initWagon();
initGoal();
initQuality();
}
function initMain() {
_global.toRad = (Math.PI/180);
_global.toDeg = 57.2957795130823;
perspectiveFactor = 550;
myGame = new tGame();
}
function initBall() {
tBall.prototype.reset();
ball = [];
radius = 40;
maxSpeed = 20;
TOP = -435;
BOTTOM = 0;
LEFT = -220;
RIGHT = 220;
barbieCount = 0;
barbieMax = 15;
barbieNum = 0;
ampCounter = 0;
jumpFlag = false;
jumpCounter = 0;
}
function initHand() {
myHand.handMC.removeMovieClip();
var _local1 = handHolder.attachMovie("hand", "hand_mc", 1);
myHand = new tHand(_local1, powerBar_mc);
}
function initWagon() {
myWagon = new tWagon();
}
function initGoal() {
var _local1 = gameScreen_mc.attachMovie("goal", "goal_mc", 191);
myGoal = new tGoal(_local1);
_local1._x = -3.5;
_local1._y = -395;
introGoal_mc._visible = false;
}
function initProj() {
var _local2 = new Position(0, 0);
var _local3 = new Position(0, 0);
var _local1 = gameScreen_mc.attachMovie("proj", "proj_mc", 6000);
myProj = new tBall(_local1, _local2, _local3, _local1);
myProj.mode = "follow";
myProj.shadowMC = gameScreen_mc.attachMovie("shadow", "shadow_mc", 5999);
myProj.xStart = undefined;
myProj.physic.friction = 0.98;
}
function initScore() {
myScore = new tScore(scoreDisplay_mc);
}
function initQuality() {
myQuality = new tQuality(quality_mc);
}
function checkKeypressed() {
if ((!keyPressedFlag) && (Key.isDown(Key.getCode("p")))) {
keyPressedFlag = true;
keyPressed_pause();
}
if (keyPressedFlag && (!Key.isDown(Key.getCode("p")))) {
keyPressedFlag = false;
}
}
function checkBalls(i) {
var _local2 = i;
var _local1 = ball[_local2];
for (j in Ball) {
if (j == _local2) {
continue;
}
if (Ball[j].hitZone.hitTest(_local1.hitZone)) {
doBallCollision(_local1, ball[j]);
}
}
}
function checkBallsHit(i) {
var _local2 = i;
var _local1 = ball[_local2];
for (j in Ball) {
if (j == _local2) {
continue;
}
if (Ball[j].hitZone.hitTest(_local1.hitZone)) {
doBallCollisionHit(_local1, ball[j]);
}
}
}
function checkOut(i) {
var _local1 = ball[i];
var _local2 = -450 + Math.abs(_local1.pos.x / 5);
if (_local1.pos.y > BOTTOM) {
_local1.changeMode("out");
}
if (_local1.pos.y < _local2) {
_local1.pos.y = _local2;
_local1.vel.y = _local1.vel.y * -1;
}
if ((_local1.pos.x < LEFT) || (_local1.pos.x > RIGHT)) {
_local1.vel.x = _local1.vel.x * -1;
}
}
function checkInPitch(i) {
var _local1 = ball[i];
if (Math.abs(_local1.pos.x) < 150) {
_local1.changeMode("chase");
_local1.physic.changeGravity(new Position(0, 0.1));
}
}
function checkPositionProj() {
if (myProj.pos.y < -450) {
myProj.stopProjectile();
}
}
function checkGoal() {
if (myProj.hitZone.hitTest(myGoal.hitZone) && (myProj.pos.y > -410)) {
myScore.addScore("goal", myProj.pos.x, myProj.pos.y - 20);
myProj.stopProjectile();
}
}
function checkSpeedProj() {
if (myProj.vel.y > -0.5) {
myProj.stopProjectile();
}
}
function checkCollisionProj(i) {
if (myHand.ballMoving) {
var _local1 = ball[i];
if (myProj.mc.hitZone.hitTest(_local1.hitZone)) {
doProjectileCollision(_local1, myProj, myProj.strength);
}
}
}
function checkEndHitMode(i) {
var _local1 = ball[i];
if (_local1.mode == "hit") {
if (_local1.vel.y > 0) {
_local1.changeMode("knocked");
}
}
}
function checkGameOver(i) {
var _local1 = ball[i];
if (_local1.pos.y > -100) {
trace("find B out: " + _local1.mc._name);
myGame.stopGame();
myHand.handMC.gotoAndStop("upturned");
myHand.ballMoving = true;
myProj.mc.removeMovieClip();
myProj.shadowMC.removeMovieClip();
var _local3 = handHolder.attachMovie("barbieHIGH" + _local1.type, "jumpingB", 2);
_local3._x = _local1.pos.x;
_local3._y = _local1.pos.y;
_local1.mc.removeMovieClip();
_local1.mc = _local3;
doPerspective(_local1);
for (var _local2 in ball) {
ball[_local2].changeMode("gameOver");
ball[_local2].physic.changeGravity(new Position(0, 0));
}
_local1.changeMode("toHand");
var timeInt = setInterval(function () {
popupGameOver();
clearInterval(timeInt);
}, 8000);
fadeSound(playTrack_snd);
playTrack_sndFlag = false;
myQuality.setHigh();
}
}
function checkCollisionProjWagon() {
if (myProj.hitZone.hitTest(myWagon.hitZone)) {
myScore.addScore("bonus", myWagon.mc._x, myWagon.mc._y);
myProj.stopProjectile();
myWagon.changeMode("hit");
playSound(bonus_snd);
stopSound(rolling_snd);
for (var _local2 in ball) {
var _local1 = ball[_local2];
_local1.vel.x = 0;
_local1.vel.y = -maxSpeed;
_local1.changeMode("hit");
}
}
}
function startMainEngine() {
_root.onEnterFrame = function () {
if (myGame.gameStarted) {
myGame.doTiming();
generateBarbie();
myHand.move();
moveProj();
doPerspective(myProj);
checkPositionProj();
checkGoal();
checkSpeedProj();
myWagon.generate();
}
switch (myWagon.mode) {
case "disabled" :
break;
case "roll" :
myWagon.move();
checkCollisionProjWagon();
break;
case "hit" :
}
for (i in ball) {
ball[i].collision = 0;
checkCollisionProj(i);
remapBarbieDepth(i);
switch (ball[i].mode) {
case "toPitch" :
doPerspective(ball[i]);
moveBall(i, myGame.maxSpeed);
checkInPitch(i);
break;
case "chase" :
doPerspective(ball[i]);
chaseHand(i);
checkBalls(i);
moveBall(i, myGame.maxSpeed);
checkOut(i);
checkGameOver(i);
break;
case "hit" :
doPerspective(ball[i]);
ball[i].updateSquid();
checkBallsHit(i);
moveBall(i, 20);
checkEndHitMode(i);
checkOut(i);
break;
case "knocked" :
doPerspective(ball[i]);
checkBalls(i);
break;
case "dead" :
break;
case "out" :
removeBall(i);
break;
case "toHand" :
doPerspective(ball[i]);
var _local2 = myHand.pos.x - ball[i].pos.x;
var _local1 = -50 - ball[i].pos.y;
ball[i].pos.x = ball[i].pos.x + (_local2 / 5);
ball[i].pos.y = ball[i].pos.y + (_local1 / 5);
ball[i].mc._x = ball[i].pos.x;
ball[i].mc._y = ball[i].pos.y;
if ((Math.abs(_local2) + Math.abs(_local1)) < 2) {
ball[i].vel.x = 0;
ball[i].vel.y = 0;
ball[i].changeMode("jump");
jumpCounter = 0;
jumpYstart = ball[i].pos.y;
}
break;
case "jump" :
if (!jumpFlag) {
jumpFlag = true;
ball[i].mc.gotoAndStop("jump");
ball[i].mc.numLoop = 4;
playSound(jumpingonhand_snd);
playSound(booo_snd);
jumperBarbie = ball[i];
jumperBarbie.mc.callBack = function () {
jumperBarbie.mc.gotoAndStop("armRised");
playSound(year_snd);
for (var _local1 in ball) {
if (ball[_local1] == jumperBarbie) {
continue;
}
ball[_local1].changeMode("stop");
}
jumperBarbie.mc.callBack = function () {
for (var _local1 in ball) {
ball[_local1].mc.gotoAndStop("armRised");
playSound(collective_yearh_snd);
}
};
};
}
jumpCounter++;
moveBall(i, 100);
break;
case "gameOver" :
if (ball[i].pos.y > -130) {
ball[i].vel.x = ball[i].vel.x * 0.9;
ball[i].vel.y = -2;
} else {
ball[i].vel.x = ball[i].vel.x * 0.9;
ball[i].vel.y = ball[i].vel.y * 0.9;
}
if ((Math.abs(ball[i].vel.x) + Math.abs(ball[i].vel.y)) < 0.1) {
ball[i].vel.x = 0;
ball[i].vel.y = 0;
ball[i].changeMode("stop");
}
moveBall(i, 5);
break;
case "stop" :
}
}
};
}
function stopMainEngine() {
delete _root.onEnterFrame;
}
function launchNewBall() {
barbieNum = ball.length;
if (barbieNum < barbieMax) {
oldEntrance = entrance;
do {
entrance = random(4);
} while (oldEntrance == entrance);
var _local2 = [new Position(-204, -407), new Position(-137, -431), new Position(137, -431), new Position(204, -407)];
var _local1 = [randomVelocity(2, 30, 0), randomVelocity(2, 30, 0), randomVelocity(2, 150, 0), randomVelocity(2, 150, 0)];
var ballStartGravity = [new Position(0.03, 0.01), new Position(0.03, 0.01), new Position(-0.03, 0.01), new Position(-0.03, 0.01)];
var _local3 = _local2[entrance];
var vel = _local1[entrance];
ball.push((newBall = new tBall(gameScreen_mc, _local3, vel)));
newBall.changeMode("toPitch");
newBall.physic.changeGravity(ballStartGravity[entrance]);
}
}
function resetAllBall() {
for (var _local1 in ball) {
removeBall(_local1);
}
tBall.prototype.reset();
}
function removeBall(i) {
ball[i].mc.removeMovieClip();
ball.splice(i, 1);
}
function moveBall(i, maxSpeed) {
var _local3 = maxSpeed;
var _local1 = ball[i];
_local1.oldPos.x = _local1.pos.x;
_local1.oldPos.y = _local1.pos.y;
_local1.vel.x = _local1.vel.x + _local1.physic.gravity.x;
_local1.vel.y = _local1.vel.y + _local1.physic.gravity.y;
_local1.vel.x = _local1.vel.x * _local1.physic.friction;
_local1.vel.y = _local1.vel.y * _local1.physic.friction;
var _local2 = new tVector(_local1.vel.x, _local1.vel.y);
if (_local2.norm > _local3) {
_local1.vel.x = _local3 * Math.cos(_local2.phiRad);
_local1.vel.y = _local3 * Math.sin(_local2.phiRad);
}
var appVelX = (_local1.vel.x * pFactor(_local1.pos.x));
var appVelY = (_local1.vel.y * pFactor(_local1.pos.y));
_local1.pos.x = _local1.pos.x + appVelX;
_local1.pos.y = _local1.pos.y + appVelY;
_local1.mc._x = _local1.pos.x;
_local1.mc._y = _local1.pos.y;
if (_local1.vel.y < 0) {
_local1.vel.x = _local1.vel.x * 0.8;
_local1.vel.y = _local1.vel.y * 0.8;
}
}
function refreshBallPos(pos, ball) {
var _local1 = ball;
_local1.mc._x = (_local1.pos.x = pos.x);
_local1.mc._y = (_local1.pos.y = pos.y);
}
function stopBall(ball) {
var _local1 = ball;
_local1.vel.x = 0;
_local1.vel.y = 0;
_local1.physic.changeGravity(new Vector2d(0, 0));
}
function doPerspective(b) {
var _local1 = b;
var _local2 = 1 + (_local1.pos.y / perspectiveFactor);
_local1.mc._xscale = (_local1.mc._yscale = _local2 * 100);
_local1.radius = radius * _local2;
}
function chaseHand(i) {
var _local1 = ball[i];
var _local2 = Math.abs(myHand.pos.x - _local1.pos.x) / (myHand.pos.x - _local1.pos.x);
_local1.vel.x = _local1.vel.x + (_local2 / 20);
}
function remapBarbieDepth(i) {
var _local1 = ball[i];
_local1.mc.swapDepths((Math.floor(_local1.pos.y) + 500) * 2);
}
function remapAllBarbiesDepth() {
var _local1 = [];
for (var _local2 in ball) {
_local1[_local2] = ball[_local2].mc.getDepth();
}
offsetArr_noSameValue(_local1, 2);
for (var _local2 in ball) {
ball[_local2].mc.swapDepths(_local1[_local2]);
}
}
function generateBarbie() {
if ((barbieCount % myGame.barbieFrequency) == 0) {
launchNewBall();
}
barbieCount++;
}
function moveProj() {
switch (myProj.mode) {
case "follow" :
myProj.pos.x = myHand.pos.x;
myProj.pos.y = -59;
ampBounceMax = 100;
ampCounter = 0;
ampBounce = 0;
break;
case "launch" :
calculateProjBounce();
myProj.vel.y = myProj.vel.y * myProj.physic.friction;
myProj.strength = myProj.strength * myProj.physic.friction;
var _local1 = myProj.vel.y * pFactor(myProj.pos.y);
myProj.vel.x = ((myProj.xStart * myProj.vel.y) / perspectiveFactor) * 0.6;
myProj.pos.x = myProj.pos.x + myProj.vel.x;
myProj.pos.y = myProj.pos.y + _local1;
}
updatePositionProj();
}
function updatePositionProj() {
myProj.mc._x = myProj.pos.x;
myProj.mc._y = myProj.pos.y + ampBounce;
myProj.shadowMC._x = myProj.pos.x;
myProj.shadowMC._y = myProj.pos.y + (myProj.mc._height / 6);
myProj.shadowMC._xscale = (gameScreen_mc.shadow_mc._yscale = myProj.mc._xscale);
}
function calculateProjBounce() {
ampBounceMax = ampBounceMax * 0.95;
ampBounce = -Math.abs(Math.sin(ampCounter) * ampBounceMax);
ampCounter = ampCounter + 0.3;
}
function popupGameOver() {
myQuality.reset();
var _local1 = _root.gameScreen_mc.attachMovie("popupGameOver", "popupGameOver_mc", 10000);
_local1._x = 2;
_local1._y = -281;
}
function doHeartBeat() {
setInterval(function () {
sc = 1;
loadVariables ("heartbeat.aspx", this, "POST");
}, 300000);
}
function popupReady() {
myQuality.reset();
var _local1 = _root.attachMovie("popupReady", "popupReady_mc", 5);
_local1._x = 324;
_local1._y = 261;
if (!playMusic_sndFlag) {
playSound(playMusic_snd);
}
}
function keyPressed_reset() {
resetAllBall();
stopMainEngine();
initAllObjects();
}
function keyPressed_start() {
startMainEngine();
myGame.startGame();
fadeSound(playMusic_snd);
playMusic_sndFlag = false;
playSoundLoop(playTrack_snd);
playTrack_sndFlag = true;
}
function keyPressed_restart() {
resetAllBall();
stopMainEngine();
initAllObjects();
startMainEngine();
myGame.startGame();
}
function keyPressed_pause() {
trace("keypressed pause");
if (!pauseFlag) {
setPause();
} else {
setUnpause();
}
}
function setPause() {
pauseFlag = true;
stopMainEngine();
_root.onEnterFrame = function () {
checkKeyPressed();
};
ballMode = [];
for (var _local1 in ball) {
ballMode[_local1] = ball[_local1].mode;
ball[_local1].changeMode("stop");
}
}
function setUnpause() {
pauseFlag = false;
startMainEngine();
for (var _local1 in ball) {
ball[_local1].changeMode(ballMode[_local1]);
}
}
this.onMouseDown = function () {
if (_ymouse > 30) {
myHand.pressMouse = true;
if ((!myHand.ballMoving) && (myGame.gameStarted)) {
myHand.startPowerUp();
}
}
};
this.onMouseUp = function () {
if (_ymouse > 30) {
myHand.pressMouse = false;
if (!myHand.ballMoving) {
playSound(footkick_snd);
myHand.ballMoving = true;
myHand.releasePower();
myProj.strength = myHand.power;
var _local1 = (-myHand.power) / 3;
myProj.vel = new Position(0, _local1);
myProj.changeMode("launch");
myProj.xStart = myHand.pos.x;
}
}
};
popupReady();
doHeartBeat();
Symbol 14 MovieClip Frame 11
stop();
Symbol 17 MovieClip Frame 1
this._visible = false;
Symbol 30 MovieClip Frame 1
gotoAndPlay(random(300) + 1);
Symbol 35 MovieClip Frame 17
loop++;
trace("EEEEEE " + _parent.numLoop);
if (loop < _parent.numLoop) {
gotoAndPlay (1);
} else {
trace("CALL callback");
_parent.callBack();
}
Symbol 44 MovieClip Frame 60
stop();
_parent.callBack();
Symbol 49 MovieClip Frame 9
stop();
Symbol 60 MovieClip Frame 13
_parent.callBack();
Symbol 61 MovieClip [barbieHIGH1] Frame 1
stop();
Symbol 71 MovieClip Frame 1
gotoAndPlay(random(300) + 1);
Symbol 77 MovieClip Frame 17
loop++;
trace("EEEEEE " + _parent.numLoop);
if (loop < _parent.numLoop) {
gotoAndPlay (1);
} else {
_parent.callBack();
}
Symbol 84 MovieClip Frame 60
stop();
_parent.callBack();
Symbol 89 MovieClip Frame 9
stop();
Symbol 90 MovieClip [barbieHIGH2] Frame 1
stop();
Symbol 103 MovieClip Frame 1
gotoAndPlay(random(300) + 1);
Symbol 106 MovieClip Frame 17
loop++;
trace("EEEEEE " + _parent.numLoop);
if (loop < _parent.numLoop) {
gotoAndPlay (1);
} else {
_parent.callBack();
}
Symbol 115 MovieClip Frame 60
stop();
_parent.callBack();
Symbol 120 MovieClip Frame 9
stop();
Symbol 121 MovieClip [barbieHIGH3] Frame 1
stop();
Symbol 124 MovieClip Frame 17
loop++;
trace("EEEEEE " + _parent.numLoop);
if (loop < _parent.numLoop) {
gotoAndPlay (1);
} else {
_parent.callBack();
}
Symbol 125 MovieClip Frame 60
stop();
_parent.callBack();
Symbol 126 MovieClip Frame 9
stop();
Symbol 127 MovieClip [barbieLOW1] Frame 1
stop();
Symbol 130 MovieClip Frame 17
loop++;
trace("EEEEEE " + _parent.numLoop);
if (loop < _parent.numLoop) {
gotoAndPlay (1);
} else {
_parent.callBack();
}
Symbol 131 MovieClip Frame 60
stop();
_parent.callBack();
Symbol 132 MovieClip Frame 9
stop();
Symbol 133 MovieClip [barbieLOW2] Frame 1
stop();
Symbol 136 MovieClip Frame 17
loop++;
trace("EEEEEE " + _parent.numLoop);
if (loop < _parent.numLoop) {
gotoAndPlay (1);
} else {
_parent.callBack();
}
Symbol 137 MovieClip Frame 60
stop();
_parent.callBack();
Symbol 138 MovieClip Frame 9
stop();
Symbol 139 MovieClip [barbieLOW3] Frame 1
stop();
Symbol 148 MovieClip [hand] Frame 1
stop();
Symbol 160 Button
on (release) {
play();
}
Symbol 162 Button
on (release) {
play();
}
Symbol 176 Button
on (release) {
play();
}
Symbol 177 MovieClip [popup_instructions] Frame 1
stop();
Symbol 177 MovieClip [popup_instructions] Frame 11
stop();
_root._quality = "BEST";
Symbol 183 Button
on (release) {
_root.popupReady();
this.removeMovieClip();
}
Symbol 188 Button
on (release) {
sc = Number(disp_score) / 115;
getURL ("SubmitScore.aspx", "_self", "POST");
}
Symbol 195 Button
on (release) {
getURL ("http://www.graphico.co.uk/", "_blank");
}
Symbol 196 MovieClip [popupGameOver] Frame 1
disp_score = _root.myScore.mainScore.toString();
Symbol 210 MovieClip [popupReady] Frame 1
_root.keyPressed_reset();
Symbol 210 MovieClip [popupReady] Frame 108
_root.keyPressed_start();
this.removeMovieClip();
Symbol 211 MovieClip Frame 1
this._visible = false;
Symbol 221 MovieClip Frame 1
if (!firstTime) {
firstTime = true;
gotoAndPlay(random(30) + 1);
}
Symbol 222 MovieClip Frame 1
if (!firstTime) {
firstTime = true;
gotoAndPlay(random(30) + 1);
}
Symbol 223 MovieClip [wagon] Frame 1
stop();
Symbol 243 Button
on (release) {
gotoAndStop ("title");
}
Symbol 288 Button
on (release) {
getURL ("http://www.pepsi.co.uk/football/", "_blank");
}
Symbol 295 Button
on (release) {
play();
}
Symbol 296 Button
on (release) {
if (!playBtnFlag) {
gotoAndPlay ("title");
playSound(playMusic_snd);
playMusic_sndFlag = true;
playBtnFlag = true;
}
}
Symbol 327 Button
on (release) {
getURL ("http://www.pepsi.co.uk/football/");
}
Symbol 333 Button
on (release) {
switch (_root.myQuality.freezeQuality) {
case "high" :
gotoAndStop ("medium");
_root.myQuality.setMedium();
break;
case "medium" :
break;
case "low" :
}
}
Symbol 335 Button
on (release) {
switch (_root.myQuality.freezeQuality) {
case "high" :
gotoAndStop ("low");
_root.myQuality.setLow();
break;
case "medium" :
gotoAndStop ("low");
_root.myQuality.setLow();
break;
case "low" :
}
}
Symbol 336 Button
on (release) {
switch (_root.myQuality.freezeQuality) {
case "high" :
gotoAndStop ("high");
_root.myQuality.setHigh();
break;
case "medium" :
gotoAndStop ("medium");
_root.myQuality.setMedium();
break;
case "low" :
}
}
Symbol 337 MovieClip Frame 1
stop();
Symbol 340 Button
on (release) {
nextFrame();
}
Symbol 343 Button
on (release) {
prevFrame();
}
Symbol 344 MovieClip Frame 1
stop();
_root.soundOn = true;
if (_root.playTrack_sndFlag) {
_root.playSound(_root.playTrack_snd);
}
Symbol 344 MovieClip Frame 2
_root.soundOn = false;
_root.stopSound(_root.playTrack_snd);
_root.stopSound(_root.playMusic_snd);
Symbol 349 Button
on (release) {
if (_root.myGame.gameStarted) {
play();
_root.setPause();
}
}
Symbol 350 MovieClip Frame 1
stop();
Symbol 350 MovieClip Frame 11
stop();
_root._quality = "BEST";
Symbol 350 MovieClip Frame 17
_root.setUnpause();
Symbol 354 MovieClip Frame 1
st = getTimer();
Symbol 354 MovieClip Frame 31
fps = 30;
disp_frameRate = Math.round((fps / (getTimer() - st)) * 10000) / 10;
if (!_root.myQuality.testDone) {
if (disp_frameRate < 27) {
_root.myQuality.setMedium();
_root.myQuality.freezeQuality = "medium";
}
if (disp_frameRate < 24) {
_root.myQuality.setLow();
_root.myQuality.freezeQuality = "low";
_root.myQuality.testDone = true;
}
}