Frame 1
function startNewGame() {
_global.startMode = "newgame";
gotoAndPlay ("titleFadeOut");
}
function loadGame() {
_global.startMode = "loadgame";
gotoAndPlay ("titleFadeOut2");
}
function hasSavedGame() {
if (user.data.currentRoomNumber == undefined) {
return(false);
}
if (user.data.currentRoomNumber == -111) {
return(false);
}
return(true);
}
_global.cookieName = "userdataDarkComplexG";
_global.HallOfFameName = "DarkComplex2005";
_global.user = SharedObject.getLocal(_global.cookieName);
var flagButtonPressed = false;
if (_root.hasSavedGame() == false) {
_root.iBegin._visible = true;
_root.iContinue._visible = false;
_root.iStartOver._visible = false;
} else {
_root.iBegin._visible = false;
_root.iContinue._visible = true;
_root.iStartOver._visible = true;
}
Frame 21
stop();
Frame 45
gotoAndPlay (77);
Frame 75
gotoAndPlay (181);
Frame 83
function startGame() {
gotoAndPlay ("fadeOut");
}
Frame 112
stop();
Frame 181
function SoundObj() {
this.count = 0;
this.addSound = addSound;
this.playSound = playSound;
this.stopSound = stopSound;
}
function addSound(name, sound_id, repeatFlag) {
_root.empty.duplicateMovieClip(name, this.count + 1000);
obj = _root[name];
trace("Adding sound obj" + obj);
obj.sound = new Sound(obj);
obj.sound.attachSound(sound_id);
obj.sound.setVolume(0);
obj.sound.repeatFlag = repeatFlag;
obj.sound.onSoundComplete = function () {
if (this.repeatFlag == true) {
this.start();
}
};
this.count = this.count + 1;
}
function playSound(soundName, soundVolume, howFarIn, repeatFlag) {
soundVolume = soundVolume * VOL_GLOBAL_ADJUST;
if (!howFarIn) {
howFarIn = 0;
}
if (!repeatFlag) {
repeatFlag = false;
}
if (soundVolume > -1) {
_root[soundName].sound.setVolume(soundVolume);
}
_root[soundName].sound.repeatFlag = repeatFlag;
_root[soundName].sound.start(howFarIn);
}
function stopSound(soundName, method) {
if (method == "IMMEDIATE") {
_root[soundName].sound.stop();
return(undefined);
}
if (method == "NOREPEAT") {
_root[soundName].sound.repeatFlag = false;
return(undefined);
}
}
_root.attachMovie("empty", "empty", 999);
var XSound = new SoundObj();
XSound.addSound("sndAirlock", "AirlockShort1.wav");
XSound.addSound("sndAmbience", "ambience1.wav");
XSound.addSound("sndChime1", "chime1.wav");
XSound.addSound("sndChime2", "chime2.wav");
XSound.addSound("sndChime3", "chime3.wav");
XSound.addSound("sndChime4", "chime4.wav");
XSound.addSound("sndChime5", "chime5.wav");
XSound.addSound("sndChime6", "chime6.wav");
XSound.addSound("sndDoor", "door1.wav");
XSound.addSound("sndSourceOn", "sourceOn.wav");
XSound.addSound("sndSourceOff", "sourceOff.wav");
XSound.addSound("sndStab1", "eerieStab1.wav");
XSound.addSound("sndStab2", "eerieStab2.wav");
XSound.addSound("sndStab3", "eerieStab3.wav");
XSound.addSound("sndStab4", "eerieStab4.wav");
XSound.addSound("sndStab5", "eerieStab5.wav");
XSound.addSound("sndStab7", "eerieStab7.wav");
XSound.addSound("sndStab8", "eerieStab8.wav");
XSound.addSound("sndStab9", "eerieStab9.wav");
XSound.addSound("sndOrbits", "orbits.wav");
XSound.addSound("sndPuzzleAmbience", "puzzleAmbience.wav");
XSound.addSound("sndPuzzleOpen", "puzzleOpen2.wav");
XSound.addSound("sndPuzzleSolved", "puzzleSolved.wav");
XSound.addSound("sndRotor", "rotor.wav");
XSound.addSound("sndRotorClunk", "rotorClunk.wav");
VOL_GLOBAL_ADJUST = 1.3;
VOL_AMBIENCE = 3.5;
VOL_ORBITS = 20;
VOL_PUZZLEOPEN = 80;
VOL_PUZZLEAMBIENCE = 25;
VOL_PUZZLESOLVED = 85;
VOL_STABS = 80;
VOL_CHIMES = 20;
VOL_DOOR = 20;
VOL_AIRLOCK = 37;
VOL_ROTOR = 50;
VOL_ROTORCLUNK = 15;
VOL_SOURCEON = 7;
VOL_SOURCEOFF = 7;
_root.iIntermediary2._visible = false;
_root.iIntermediary._visible = false;
function handleTriangleButtonPress(aBtn) {
aRoom = rooms[currentRoomNumber];
if (aRoom.solved == false) {
if (gameMode == "NORMAL") {
setupPuzzle(aRoom.puzzleName);
_root.i3dStage.obj7.mc.texture.iButton.gotoAndPlay("frisbeePress");
startMode_LAUNCH_PUZZLE(false);
}
if (gameMode == "PLAY_PUZZLE") {
_root.i3dStage.obj7.mc.texture.iButton.gotoAndPlay("frisbeePress");
startMode_CLOSE_PUZZLE();
}
}
if (aRoom.solved == true) {
if (gameMode == "NORMAL") {
_root.i3dStage.obj7.mc.texture.iButton.gotoAndPlay("moirePress");
setupPuzzle("PuzzleHINT");
startMode_LAUNCH_PUZZLE(true);
}
if (gameMode == "PLAY_PUZZLE") {
_root.i3dStage.obj7.mc.texture.iButton.gotoAndPlay("moirePress");
startMode_CLOSE_PUZZLE();
}
}
}
function handleDoorButtonPress(aBtn) {
if (gameMode == "NORMAL") {
startMode_TURN_TO_DOOR(aBtn);
}
if ((gameMode == "FADE_IN") && (gameModeCurrentStep > 10)) {
startMode_TURN_TO_DOOR(aBtn);
}
}
function handleZDoorButtonPress(aBtn) {
if (gameMode == "PLAY_PUZZLE") {
startMode_TURN_TO_DOOR(aBtn);
}
}
function handleSourcePress(aBtn) {
aRoom = rooms[currentRoomNumber];
saveGame();
aSource = sources[aBtn.sourceNumber];
if (aSource.active == true) {
_root.XSound.playSound("sndSourceOff", VOL_SOURCEOFF, 0, false);
aSource.active = false;
aBtn.gotoAndPlay("doFadeOut");
resolvePaths(aSource.destinationPath, "NONE");
} else {
_root.XSound.playSound("sndSourceOn", VOL_SOURCEON, 0, false);
aSource.active = true;
aBtn.gotoAndPlay("doFadeIn");
resolvePaths(aSource.destinationPath, aSource.sourceColor);
}
invokeSwitchFadeOutAnims(aBtn);
}
function handleSwitchPress(aBtn) {
if (flagSwitchTurning == true) {
return(undefined);
}
if ((currentRoomNumber == 26) && (gameMode == "PLAY_PUZZLE")) {
return(undefined);
}
aRoom = rooms[currentRoomNumber];
if ((currentRoomNumber != 26) && (aRoom.solved == false)) {
return(undefined);
}
saveGame();
aSwitch = pathSwitches[aBtn.pathSwitchNumber];
trace((("Pressed Switch # " + aBtn.pathSwitchNumber) + " : ") + aSwitch);
aWall = aBtn._parent;
cf = aWall.iSwitchPack.iSwitchRing._currentframe;
if ((cf != 37) && (cf != 81)) {
return(undefined);
}
flagSwitchTurning = true;
var _local2 = 1;
while (_local2 <= 108) {
if (paths[_local2].pathSwitchNumber == aBtn.pathSwitchNumber) {
resolvePaths(paths[_local2].destinationPaths[1], "NONE");
resolvePaths(paths[_local2].destinationPaths[2], "NONE");
break;
}
_local2++;
}
_root.XSound.playSound("sndRotor", VOL_ROTOR, 0, false);
trace("Currently " + aSwitch.currentDirection);
if (aSwitch.currentDirection == 1) {
aSwitch.currentDirection = 2;
aBtn.gotoAndPlay("turnOn");
} else {
aSwitch.currentDirection = 1;
aBtn.gotoAndPlay("turnOff");
}
invokeSwitchFadeOutAnims(aBtn);
if (aSwitch.currentDirection == 1) {
aWall.iSwitchPack.iSwitchRing.gotoAndPlay("doTurnRight");
} else {
aWall.iSwitchPack.iSwitchRing.gotoAndPlay("doTurnLeft");
}
_local2 = 1;
while (_local2 <= 108) {
if (paths[_local2].pathSwitchNumber == aBtn.pathSwitchNumber) {
resolvePaths(paths[_local2].destinationPaths[aSwitch.currentDirection], paths[_local2].currentColor);
}
_local2++;
}
}
function invokeSwitchFadeOutAnims(aBtn) {
var _local7 = _root.currentRoom.x;
var _local6 = _root.currentRoom.y;
var _local5 = _root.currentRoom.z;
aRoomNumber = ((_local7 - 1) + ((_local6 - 1) * 3)) + ((_local5 - 1) * 9);
aRoom = _root.rooms[aRoomNumber];
trace((("CURRENT ROOM # " + aRoomNumber) + " : ") + aRoom);
var _local2 = 1;
while (_local2 <= 6) {
trace(rooms[aRoomNumber].walls[_local2]);
tmpWall = aRoom.walls[_local2];
trace(tmpWall.textureName);
if (tmpWall.textureName.indexOf("Switch") > -1) {
var _local3 = _root.i3dStage["obj" + tmpWall.wallNumber];
trace((((("FOUND WALL: " + tmpWall.wallNumber) + " : ") + _local2) + " : ") + _local3);
aPack = _local3.mc.texture.iSwitchPack;
if (aBtn.pathSwitchNumber == tmpWall.pathSwitchNumber) {
aPack.iSwitchSymbol3.gotoAndPlay("doFadeOut");
aPack.iSwitchSymbol4.gotoAndPlay("doFadeOut");
aPack.iSwitchLights1.gotoAndPlay("doFadeOut");
aPack.iSwitchLights2.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iSwitchRingPath1.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iSwitchRingPath2.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath1a.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath1b.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath2a.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath2b.gotoAndPlay("doFadeOut");
}
tmpPath = _root.paths[tmpWall.pathNumber1];
if (tmpPath.currentColor == "NONE") {
aPack.iSwitchSymbol1.gotoAndPlay("doFadeOut");
aPack.iSwitchSymbol4.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iSwitchRingPath1.gotoAndPlay("doFadeOut");
if (_root.pathSwitches[tmpPath.pathSwitchNumber].currentDirection == 1) {
aPack.iSwitchLights1.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath1a.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath2b.gotoAndPlay("doFadeOut");
} else {
aPack.iSwitchLights2.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath1b.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath2a.gotoAndPlay("doFadeOut");
}
}
tmpPath = _root.paths[tmpWall.pathNumber2];
if (tmpPath.currentColor == "NONE") {
aPack.iSwitchSymbol2.gotoAndPlay("doFadeOut");
aPack.iSwitchSymbol3.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iSwitchRingPath2.gotoAndPlay("doFadeOut");
if (_root.pathSwitches[tmpPath.pathSwitchNumber].currentDirection == 1) {
aPack.iSwitchLights2.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath1b.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath2a.gotoAndPlay("doFadeOut");
} else {
aPack.iSwitchLights1.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath1a.gotoAndPlay("doFadeOut");
aPack.iSwitchRing.iSwitchRing.iPath2b.gotoAndPlay("doFadeOut");
}
}
}
if (tmpWall.textureName.indexOf("Source") > -1) {
var _local3 = _root.i3dStage["obj" + tmpWall.wallNumber];
trace((((("FOUND WALL: " + tmpWall.wallNumber) + " : ") + _local2) + " : ") + _local3);
aPack = _local3.mc.texture.iSourcePack;
tmpPath = _root.paths[tmpWall.pathNumber1];
if (tmpPath.currentColor == "NONE") {
aPack.iLoop1.gotoAndPlay("doFadeOut");
}
tmpPath = _root.paths[tmpWall.pathNumber2];
if (tmpPath.currentColor == "NONE") {
aPack.iLoop2.gotoAndPlay("doFadeOut");
}
}
_local2++;
}
}
function handleSwitchRingTurnFinish(aObj) {
flagSwitchTurning = false;
_root.XSound.stopSound("sndRotor", "IMMEDIATE");
var _local5 = _root.currentRoom.x;
var _local4 = _root.currentRoom.y;
var _local3 = _root.currentRoom.z;
aRoomNumber = ((_local5 - 1) + ((_local4 - 1) * 3)) + ((_local3 - 1) * 9);
aRoom = _root.rooms[aRoomNumber];
trace((("############### " + aRoomNumber) + " : ") + aRoom);
var _local2 = 1;
while (_local2 <= 6) {
tmpWall = aRoom.walls[_local2];
if (tmpWall.textureName.indexOf("Switch") > -1) {
trace("?!!" + tmpWall);
_root.setupWallSwitches(tmpWall, "doFadeIn");
}
if (tmpWall.textureName.indexOf("Source") > -1) {
trace(("?!!" + tmpWall) + "<<<");
_root.setupWallSource(tmpWall, "doFadeIn");
}
_local2++;
}
}
function handleSpyholePress(aObj) {
startMode_ZOOM_TO_SPYHOLE(aObj);
}
function handleSpyholeMaskPress(aObj) {
startMode_CLOSE_SPYHOLE(aObj);
}
function handlePuzzleSolved() {
aNumber = getRoomNumber(currentRoom);
rooms[aNumber].solved = true;
trace((("ROOM SOLVED: " + aNumber) + " / ") + rooms[aNumber]);
_root.i3dStage.obj7.mc.texture.iButton.gotoAndPlay("moireFadeIn");
_root.XSound.playSound("sndPuzzleSolved", VOL_PUZZLESOLVED, 0, false);
i = 1;
while (i <= 6) {
clip = _root.i3dStage["obj" + i];
texture = clip.mc.texture;
if (texture.iLock) {
trace("UNLOCK " + texture.iLock.unlocked);
if (texture.iLock._currentframe == 1) {
texture.iLock.unlocked = true;
texture.iLock.gotoAndPlay("doOpen");
}
}
if (texture.iOrbitPack1) {
texture.iOrbitPack1._visible = true;
}
i++;
}
_root.i3dStage.obj7.mc.texture.iButton1.gotoAndPlay("stayOn");
saveGame();
startMode_CLOSE_PUZZLE();
}
function handleSprite_stopMoving(aObj) {
if (rooms[currentRoomNumber].solved == true) {
return(undefined);
}
switch (rooms[currentRoomNumber].puzzleName) {
case "PuzzleA" :
puzzleA_sprite_stopMoving(aObj);
break;
case "PuzzleB" :
puzzleB_sprite_stopMoving(aObj);
break;
case "PuzzleC" :
puzzleC_sprite_stopMoving(aObj);
break;
case "PuzzleS" :
puzzleS_sprite_stopMoving(aObj);
break;
case "PuzzleT" :
puzzleT_sprite_stopMoving(aObj);
break;
case "PuzzleU" :
puzzleU_sprite_stopMoving(aObj);
break;
case "PuzzleV" :
puzzleV_sprite_stopMoving(aObj);
break;
}
}
function handleSprite_onRollOver(aObj) {
if (rooms[currentRoomNumber].solved == true) {
return(undefined);
}
switch (rooms[currentRoomNumber].puzzleName) {
case "PuzzleD" :
puzzleD_sprite_onRollOver(aObj);
break;
default :
}
}
function handleSprite_onRollOut(aObj) {
if (rooms[currentRoomNumber].solved == true) {
return(undefined);
}
switch (rooms[currentRoomNumber].puzzleName) {
case "PuzzleD" :
puzzleD_sprite_onRollOut(aObj);
break;
default :
}
}
function handleSprite_onPress(aObj) {
if (rooms[currentRoomNumber].solved == true) {
return(undefined);
}
a = randomRange(1, 6);
if (a == lastA) {
a++;
if (a > 6) {
a = 1;
}
}
lastA = a;
snd = "sndChime" + a;
b = randomRange(1, 15);
_root.XSound.playSound(snd, VOL_CHIMES - b, 0, false);
switch (rooms[currentRoomNumber].puzzleName) {
case "PuzzleA" :
puzzleA_sprite_onPress(aObj);
break;
case "PuzzleB" :
puzzleB_sprite_onPress(aObj);
break;
case "PuzzleC" :
puzzleC_sprite_onPress(aObj);
break;
case "PuzzleD" :
puzzleD_sprite_onPress(aObj);
break;
case "PuzzleE" :
puzzleE_sprite_onPress(aObj);
break;
case "PuzzleF" :
puzzleF_sprite_onPress(aObj);
break;
case "PuzzleG" :
puzzleG_sprite_onPress(aObj);
break;
case "PuzzleH" :
puzzleH_sprite_onPress(aObj);
break;
case "PuzzleI" :
puzzleI_sprite_onPress(aObj);
break;
case "PuzzleJ" :
puzzleJ_sprite_onPress(aObj);
break;
case "PuzzleK" :
puzzleK_sprite_onPress(aObj);
break;
case "PuzzleL" :
puzzleL_sprite_onPress(aObj);
break;
case "PuzzleM" :
puzzleM_sprite_onPress(aObj);
break;
case "PuzzleN" :
puzzleN_sprite_onPress(aObj);
break;
case "PuzzleO" :
puzzleO_sprite_onPress(aObj);
break;
case "PuzzleP" :
puzzleP_sprite_onPress(aObj);
break;
case "PuzzleQ" :
puzzleQ_sprite_onPress(aObj);
break;
case "PuzzleR" :
puzzleR_sprite_onPress(aObj);
break;
case "PuzzleS" :
puzzleS_sprite_onPress(aObj);
break;
case "PuzzleT" :
puzzleT_sprite_onPress(aObj);
break;
case "PuzzleU" :
puzzleU_sprite_onPress(aObj);
break;
case "PuzzleV" :
puzzleV_sprite_onPress(aObj);
break;
case "PuzzleW" :
puzzleW_sprite_onPress(aObj);
break;
case "PuzzleX" :
puzzleX_sprite_onPress(aObj);
break;
case "PuzzleY" :
puzzleY_sprite_onPress(aObj);
break;
case "PuzzleZ" :
puzzleZ_sprite_onPress(aObj);
break;
}
}
var flagSwitchTurning = false;
lastA = 0;
function doMovement() {
if (gameMode == "ZOOM_TO_OBJECT") {
return(undefined);
}
cx = 63;
cy = 23;
dx = _root._xmouse - _root.x0;
if (dx > 0) {
dx = dx - cx;
if (dx < 0) {
dx = 0;
} else {
lastX = 1;
}
} else {
lastX = -1;
dx = dx + cx;
if (dx > 0) {
dx = 0;
} else {
lastX = -1;
}
}
dx = dx * Math.abs(dx);
if (dx != 0) {
turnX = dx / 2220;
} else {
turnX = turnX * 0.8;
}
if (_root.mouseOutside == "yes") {
turnX = turnX * 0.8;
}
if (turnX > 5.5) {
turnX = 5.5;
}
if (turnX < -5.5) {
turnX = -5.5;
}
heading = heading - turnX;
dy = _root._ymouse - _root.y0;
if (dy > 0) {
dy = dy - cy;
if (dy < 0) {
dy = 0;
} else {
lastY = 1;
}
} else {
dy = dy + cy;
if (dy > 0) {
dy = 0;
} else {
lastY = -1;
}
}
dy = dy * Math.abs(dy);
turnY = dy / 2220;
if (dy != 0) {
turnY = dy / 2220;
} else {
turnY = turnY * 0.8;
}
if (_root.mouseOutside == "yes") {
turnY = turnY * 0.8;
}
if (turnY > 4.5) {
turnY = 4.5;
}
if (turnY < -4.5) {
turnY = -4.5;
}
maxPitch = 66;
if (pitch > maxPitch) {
pitch = pitch - 1;
if (pitch < maxPitch) {
pitch = maxPitch;
}
} else if (pitch < (-maxPitch)) {
pitch = pitch + 1;
if (pitch > (-maxPitch)) {
pitch = -maxPitch;
}
} else {
pitch = pitch - turnY;
if (pitch > maxPitch) {
pitch = maxPitch;
} else if (pitch < (-maxPitch)) {
pitch = -maxPitch;
}
}
if (Math.abs(dx) < 1) {
bankTarget = 0;
bankSpeed = Math.abs(bank) / 26;
if (bankSpeed < 0.2) {
bankSpeed = 0.2;
}
} else {
bankTarget = (turnX * -5) * ((maxPitch - Math.abs(pitch)) / maxPitch);
bankSpeed = Math.abs(turnX / 4);
if (bankSpeed < 0.2) {
bankSpeed = 0.2;
}
}
if (bank < bankTarget) {
bank = bank + bankSpeed;
if (bank > bankTarget) {
bank = bankTarget;
}
} else if (bank > bankTarget) {
bank = bank - bankSpeed;
if (bank < bankTarget) {
bank = bankTarget;
}
}
if (dx == 0) {
}
if (dy == 0) {
}
i = 0;
while (i < tmpArray.length) {
_root.pointArray[i].x = (_root.tmpArray[i].x - centreX) * scaleX;
_root.pointArray[i].y = (_root.tmpArray[i].y - centreY) * scaleY;
_root.pointArray[i].z = (_root.tmpArray[i].z - centreZ) * scaleZ;
i++;
}
_root.groupRotateY(_root.pointArray, heading);
_root.groupRotateX(_root.pointArray, pitch);
_root.groupRotateZ(_root.pointArray, bank);
}
var bufferX = 300;
var bufferY = 10;
var turnX = 0;
var turnY = 0;
var lastX = 1;
var lastY = 1;
var dx = 0;
var dy = 0;
var driftSpeed = 0;
var mouseOutside = "no";
_root.mouseOutside = "no";
function render3d() {
clipGroup = roomArray;
var _local5 = 0;
while (_local5 < clipGroup.length) {
k = clipGroup[_local5];
var _local2 = _root.clipArray[k];
var _local3 = _local2.reg;
var _local4 = getCenterZ(_local2);
if (_local2.mc.texture.shadow) {
_local2.mc.texture.shadow._alpha = 160 - (_local4 / 1.5);
_local2.mc.texture.shadow._visible = true;
}
if (k <= 7) {
if (_local4 >= 0) {
_local2._visible = true;
skewClip(_local2, 100, 100, _local3.pt0, _local3.pH, _local3.pW);
} else {
_local2._visible = false;
}
} else if (_local4 >= 0) {
_local2._visible = true;
tmp0 = scalePoint(_local3.pt0, screenScale.currentValue);
tmpH = scalePoint(_local3.pH, screenScale.currentValue);
tmpW = scalePoint(_local3.pW, screenScale.currentValue);
skewClip(_local2, 100, 100, tmp0, tmpH, tmpW);
} else {
_local2._visible = false;
}
_local5++;
}
}
function skewClip(obj, mcW, mcH, pt0, ptH, ptW) {
obj._visible = true;
obj._x = pt0.x;
obj._y = pt0.y;
var _local8 = Math.atan2(ptW.y - pt0.y, ptW.x - pt0.x);
var _local4 = Math.atan2(ptH.y - pt0.y, ptH.x - pt0.x);
var _local3 = (_local4 - _local8) / 2;
var _local5 = 1 / (Math.SQRT2 * Math.cos(_local3));
obj._rotation = 57.2957795130823 * (_local4 - _local3);
obj.mc._rotation = -45;
obj._yscale = 100 * Math.tan(_local3);
obj.mc._xscale = distance(ptW, pt0) / _local5;
obj.mc._yscale = distance(ptH, pt0) / _local5;
}
function getOpposite(aNumber) {
var _local1 = [0, 3, 4, 1, 2, 6, 5];
return(_local1[aNumber]);
}
function unSkew(aObj) {
}
function render2d() {
render2d_Position();
render2d_Scale();
render2d_Alpha();
render2d_Brightness();
}
function render2d_Position() {
_root.i3dStage._x = _root.x0 - (render2dOffsetX.currentValue * (render2dScaleX.currentValue / 100));
_root.i3dStage._y = _root.y0 - (render2dOffsetY.currentValue * (render2dScaleY.currentValue / 100));
return(undefined);
}
function render2d_Scale() {
_root.i3dStage._xscale = render2dScaleX.currentValue;
_root.i3dStage._yscale = render2dScaleY.currentValue;
}
function render2d_Alpha() {
_root.i3dStage._alpha = render2dAlpha.currentValue;
}
function render2d_Brightness() {
aBrightnessPercent = render2dBrightness.currentValue / 100;
aRa = render2dTintRed.currentValue * aBrightnessPercent;
aGa = render2dTintGreen.currentValue * aBrightnessPercent;
aBa = render2dTintBlue.currentValue * aBrightnessPercent;
var _local1 = {ra:aRa, ga:aGa, ba:aBa};
render2dBrightness.targetColor.setTransform(_local1);
}
function renderObjectAlpha(aObject, aAlpha) {
aObject._alpha = aAlpha;
if (aAlpha > 0) {
aObject._visible = true;
} else {
aObject._visible = false;
}
}
function renderDecalTint() {
if (decalTintRed.active == false) {
return(undefined);
}
aRa = decalTintRed.currentValue;
aGa = decalTintGreen.currentValue;
aBa = decalTintBlue.currentValue;
var _local2 = {ra:aRa, ga:aGa, ba:aBa};
var _local1 = 0;
while (_local1 < decalTintRed.targetObject.length) {
decalTintRed.targetObject[_local1].setTransform(_local2);
_local1++;
}
}
function initDecalTintTarget() {
decalTintRed.targetObject = new Array();
var _local2 = 0;
while (_local2 < roomArray.length) {
k = clipGroup[_local2];
var _local3 = _root.clipArray[k];
_root.registerDecalTintTarget(_local3.mc.texture.iBackground);
_local2++;
}
}
function registerDecalTintTarget(aObj) {
var _local1 = new Color(aObj);
decalTintRed.targetObject[decalTintRed.targetObject.length] = _local1;
}
function setTint(aObj, aColorName) {
if (aColorName == "NONE") {
aObj._visible = false;
} else {
aObj._visible = true;
}
var _local3 = new Color(aObj);
aRa = 0;
aGa = 0;
aBa = 0;
switch (aColorName) {
case "RED" :
aRa = 100;
break;
case "GREEN" :
aGa = 100;
break;
case "BLUE" :
aBa = 100;
break;
case "CYAN" :
aGa = 100;
aBa = 100;
break;
case "YELLOW" :
aGa = 100;
aRa = 100;
break;
case "MAGENTA" :
aRa = 100;
aBa = 100;
break;
default :
aRa = 100;
aGa = 100;
aBa = 100;
}
var _local2 = {ra:aRa, ga:aGa, ba:aBa};
_local3.setTransform(_local2);
}
function getBlend(aColorName1, aColorName2) {
var _local1 = "NONE";
switch (aColorName1) {
case "NONE" :
default :
switch (aColorName2) {
case "NONE" :
default :
_local1 = "NONE";
break;
case "RED" :
_local1 = "RED";
break;
case "GREEN" :
_local1 = "GREEN";
break;
case "BLUE" :
_local1 = "BLUE";
}
break;
case "RED" :
switch (aColorName2) {
case "NONE" :
default :
case "RED" :
_local1 = "RED";
break;
case "GREEN" :
_local1 = "YELLOW";
break;
case "BLUE" :
_local1 = "MAGENTA";
}
break;
case "GREEN" :
switch (aColorName2) {
case "RED" :
default :
_local1 = "YELLOW";
break;
case "NONE" :
case "GREEN" :
_local1 = "GREEN";
break;
case "BLUE" :
_local1 = "CYAN";
}
break;
case "BLUE" :
switch (aColorName2) {
case "RED" :
default :
_local1 = "MAGENTA";
break;
case "GREEN" :
_local1 = "CYAN";
break;
case "NONE" :
case "BLUE" :
_local1 = "BLUE";
}
}
return(_local1);
}
function setTintRGB(aObj, aRed, aGreen, aBlue) {
tmpColor = new Color(aObj);
var _local1 = {ra:aRed, ga:aGreen, ba:aBlue};
tmpColor.setTransform(_local1);
}
function setTintCoords(aObj, aCoords, ultraFlag) {
if (!ultraFlag) {
ultraFlag = 1;
}
var _local1 = new Array();
_local1[1] = 0;
_local1[2] = 80;
_local1[3] = 100;
aTotal = ((aCoords.x * aCoords.x) + (aCoords.y * aCoords.y)) + (aCoords.z * aCoords.z);
if (aTotal == 3) {
_local1[1] = 5;
} else if (aTotal < 4) {
_local1[1] = 0;
} else if (aTotal < 13) {
_local1[2] = 100;
} else {
_local1[1] = 0;
_local1[2] = 5;
_local1[3] = 150;
}
aRed = _local1[aCoords.x] * ultraFlag;
aGreen = _local1[aCoords.y] * ultraFlag;
aBlue = _local1[aCoords.z] * ultraFlag;
setTintRGB(aObj, aRed, aGreen, aBlue);
tmpObj = {red:aRed, green:aGreen, blue:aBlue};
return(tmpObj);
}
function get2dOffsetX(aObj) {
var _local2 = aObj.getBounds(_root);
var _local3 = ((_local2.xMax + _local2.xMin) / 2) - _root.x0;
return(_local3);
}
function get2dOffsetY(aObj) {
var _local2 = aObj.getBounds(_root);
var _local3 = ((_local2.yMax + _local2.yMin) / 2) - _root.y0;
return(_local3);
}
function distance(pt1, pt2) {
var _local1 = pt2.y - pt1.y;
var _local2 = pt2.x - pt1.x;
var _local3 = Math.sqrt((_local1 * _local1) + (_local2 * _local2));
return(_local3);
}
function shiftPoint(point) {
var _local1 = new Object();
_local1.x = point.x + x0;
_local1.y = point.y + y0;
return(_local1);
}
function getCenterZ(clip) {
var _local1 = (clip.reg.pH.z + clip.reg.pW.z) / 2;
return(_local1);
}
function scalePoints(aDelta) {
i = 0;
while (i < pointArray.length) {
_root.pointArray[i].x = (_root.pointArray[i].x - centreX) * aDelta;
_root.pointArray[i].y = (_root.pointArray[i].y - centreY) * aDelta;
_root.pointArray[i].z = (_root.pointArray[i].z - centreZ) * aDelta;
i++;
}
}
function scalePoint(aPoint, aFraction) {
aX = aPoint.x * aFraction;
aY = aPoint.y * aFraction;
aZ = aPoint.z * aFraction;
var _local3 = {x:aX, y:aY, z:aZ};
return(_local3);
}
function getAngleFromPoint(aX, aY) {
if (aX == 0) {
if (aY <= 0) {
aDegrees = 0;
} else {
aDegrees = 180;
}
return(aDegrees);
}
if (aY == 0) {
if (aX <= 0) {
aDegrees = 270;
} else {
aDegrees = 90;
}
return(aDegrees);
}
aDegrees = Math.atan(Math.abs(aY) / Math.abs(aX));
aDegrees = aDegrees / 0.017;
if ((aX > 0) && (aY < 0)) {
aDegrees = 90 - aDegrees;
}
if ((aX < 0) && (aY < 0)) {
aDegrees = 270 + aDegrees;
}
if ((aX > 0) && (aY > 0)) {
aDegrees = 90 + aDegrees;
}
if ((aX < 0) && (aY > 0)) {
aDegrees = 270 + aDegrees;
}
return(aDegrees);
}
function OLDrotateZ(x1, y1, center, dAngle) {
var _local1 = y1 - center.y;
var _local2 = x1 - center.x;
var _local7 = Math.atan2(_local1, _local2);
var _local4 = Math.sqrt((_local1 * _local1) + (_local2 * _local2));
var _local5 = _local7 + (dAngle * (Math.PI/180));
var _local9 = (_local4 * Math.cos(_local5)) + center.x;
var _local8 = (_local4 * Math.sin(_local5)) + center.y;
var _local6 = {x:_local9, y:_local8};
return(_local6);
}
function rotateZ(x1, y1, center, dAngle) {
var _local10 = y1 - center.y;
var _local11 = x1 - center.x;
var _local7 = Math.atan2(y1, x1);
var _local4 = Math.sqrt((y1 * y1) + (x1 * x1));
var _local5 = _local7 + (dAngle * (Math.PI/180));
var _local9 = (_local4 * Math.cos(_local5)) + center.x;
var _local8 = (_local4 * Math.sin(_local5)) + center.y;
var _local6 = {x:_local9, y:_local8};
return(_local6);
}
function groupRotateZ(srcPointArray, dAngle) {
k = 1;
while (k < srcPointArray.length) {
var _local3 = rotateZ(srcPointArray[k].x, srcPointArray[k].y, _root.center, dAngle);
srcPointArray[k].x = _local3.x;
srcPointArray[k].y = _local3.y;
k++;
}
}
function groupRotateY(srcPointArray, dAngle) {
k = 0;
while (k < srcPointArray.length) {
var _local3 = rotateZ(srcPointArray[k].z, srcPointArray[k].x, _root.center, dAngle);
srcPointArray[k].z = _local3.x;
srcPointArray[k].x = _local3.y;
k++;
}
}
function groupRotateX(srcPointArray, dAngle) {
k = 0;
while (k < srcPointArray.length) {
var _local3 = rotateZ(srcPointArray[k].z, srcPointArray[k].y, _root.center, dAngle);
srcPointArray[k].z = _local3.x;
srcPointArray[k].y = _local3.y;
k++;
}
}
function randomRange(min, max) {
var _local1 = Math.floor(Math.random() * ((max - min) + 1)) + min;
return(_local1);
}
Math.rgbToHex = function (r, g, b) {
return(((r << 16) | (g << 8)) | b);
};
Math.hex2rgb = function (hex) {
var _local1 = hex >> 16;
var _local2 = hex - (_local1 << 16);
var _local3 = _local2 >> 8;
var _local4 = _local2 - (_local3 << 8);
return({r:_local1, g:_local3, b:_local4});
};
center = {x:0, y:0, z:0};
function initialiseObjects(roomNumber) {
return(undefined);
}
function setRoomArray(aList) {
tmpList = aList.join("|");
tmpList = tmpList + "|";
var _local2 = 1;
while (_local2 < (numPolygons + 1)) {
if (tmpList.indexOf(_local2 + "|") == -1) {
_root.i3dStage["obj" + _local2]._visible = false;
}
_local2++;
}
roomArray = aList;
}
function renderAll() {
doModeUpdate();
throbCounter++;
if (throbCounter == 30) {
decalAlpha.startLoop(40, 100, 30);
}
if (throbCounter == 60) {
decalAlpha.startLoop(100, 40, 30);
throbCounter = 0;
}
decalAlpha.update();
var _local2 = 0;
while (_local2 <= 7) {
var _local3 = _root.clipArray[_local2];
_local3.mc.texture.iDecal._alpha = decalAlpha.currentValue;
_local2++;
}
if (gameModeSteps > 0) {
gameModeCurrentStep++;
if (gameModeCurrentStep > gameModeSteps) {
gameModeSteps = -1;
doModeEnd();
}
}
}
function doModeUpdate() {
switch (gameMode) {
case "STARTUP" :
renderMode_NORMAL();
gameMode = "STARTUP_POST_RENDER";
break;
case "STARTUP_POST_RENDER" :
_root.i3dStage._visible = true;
_root.XSound.playSound("sndAmbience", VOL_AMBIENCE, 0, true);
startMode_FADE_IN();
break;
case "NORMAL" :
renderMode_NORMAL();
break;
case "ZOOM_TO_SPYHOLE" :
renderMode_ZOOM_TO_SPYHOLE();
break;
case "ZOOM_FROM_SPYHOLE" :
renderMode_ZOOM_FROM_SPYHOLE();
break;
case "SPYHOLE" :
renderMode_SPYHOLE();
break;
case "CLOSE_SPYHOLE" :
renderMode_CLOSE_SPYHOLE();
break;
case "TURN_TO_DOOR" :
renderMode_TURN_TO_DOOR();
break;
case "ZOOM_TO_OBJECT" :
renderMode_ZOOM_TO_OBJECT();
break;
case "FADE_IN" :
renderMode_FADE_IN();
break;
case "LAUNCH_PUZZLE" :
renderMode_LAUNCH_PUZZLE();
break;
case "PLAY_PUZZLE" :
renderMode_PLAY_PUZZLE();
break;
case "CLOSE_PUZZLE" :
renderMode_CLOSE_PUZZLE();
break;
}
}
function doModeEnd() {
switch (gameMode) {
case "STARTUP" :
endMode_NORMAL();
gameMode = "STARTUP_POST_RENDER";
break;
case "STARTUP_POST_RENDER" :
_root.i3dStage._visible = true;
endMode_FADE_IN();
break;
case "NORMAL" :
endMode_NORMAL();
break;
case "ZOOM_TO_SPYHOLE" :
endMode_ZOOM_TO_SPYHOLE();
break;
case "ZOOM_FROM_SPYHOLE" :
endMode_ZOOM_FROM_SPYHOLE();
break;
case "SPYHOLE" :
endMode_SPYHOLE();
break;
case "CLOSE_SPYHOLE" :
endMode_CLOSE_SPYHOLE();
break;
case "TURN_TO_DOOR" :
endMode_TURN_TO_DOOR();
break;
case "ZOOM_TO_OBJECT" :
endMode_ZOOM_TO_OBJECT();
break;
case "FADE_IN" :
endMode_FADE_IN();
break;
case "LAUNCH_PUZZLE" :
endMode_LAUNCH_PUZZLE();
break;
case "PLAY_PUZZLE" :
endMode_PLAY_PUZZLE();
break;
case "CLOSE_PUZZLE" :
endMode_CLOSE_PUZZLE();
break;
}
}
function startMode_FADE_IN() {
trace((((("ALAH3 " + _root.currentRoom.x) + " ") + _root.currentRoom.y) + " ") + _root.currentRoom.z);
setupRoom(_root.currentRoom);
gameModeSteps = 38;
gameModeCurrentStep = 1;
render2dScaleX.startLoop(40, 100, gameModeSteps);
render2dScaleY.startLoop(40, 100, gameModeSteps);
render2dBrightness.startLoop(1, 100, gameModeSteps);
render2dOffsetX.startLoop(0, 0, gameModeSteps);
render2dOffsetY.startLoop(0, 0, gameModeSteps);
_root.iIntermediary2.iDoor.gotoAndStop(51);
_root.iIntermediary2._visible = true;
gameMode = "FADE_IN";
}
function endMode_FADE_IN() {
saveGame();
startMode_NORMAL();
}
function renderMode_FADE_IN() {
intermediaryScale.update();
_root.iIntermediary2._xscale = _root.intermediaryScale.currentValue;
_root.iIntermediary2._yscale = _root.intermediaryScale.currentValue;
_root.iIntermediary._visible = false;
render2dScaleX.update();
render2dScaleY.update();
render2dBrightness.update();
render2dOffestX.update();
render2dOffestY.update();
if (gameModeCurrentStep == 1) {
_root.iIntermediary2.iDoor.gotoAndStop(1);
}
if (gameModeCurrentStep == 2) {
_root.iIntermediary2.iDoor.gotoAndPlay(10);
}
if (gameModeCurrentStep > 15) {
_root.doMovement();
}
render3d();
render2d();
}
function startMode_NORMAL() {
gameModeSteps = -1;
render2dOffsetX.currentValue = 0;
render2dOffsetY.currentValue = 0;
render2dScaleX.currentValue = 100;
render2dScaleY.currentValue = 100;
render2dAlpha.currentValue = 100;
_root.iIntermediary2._visible = false;
render2d();
gameMode = "NORMAL";
}
function endMode_NORMAL() {
}
function renderMode_NORMAL() {
stabCounter++;
if (stabCounter > 340) {
stabCounter = 0;
a = randomRange(1, 9);
if (a == lastStab) {
a = a + 1;
if (a > 9) {
a = 1;
}
}
lastStab = a;
snd = "sndStab" + a;
_root.XSound.playSound(snd, VOL_STABS, 0, false);
}
_root.doMovement();
decalTintRed.update();
decalTintGreen.update();
decalTintBlue.update();
render3d();
renderDecalTint();
}
function startMode_ZOOM_TO_SPYHOLE(aObj) {
gameModeSteps = 20;
gameModeCurrentStep = 1;
render2dOffsetX.startLoop(0, get2dOffsetX(aObj), gameModeSteps);
render2dOffsetY.startLoop(0, get2dOffsetY(aObj), gameModeSteps);
render2dScaleX.startLoop(100, 160, gameModeSteps);
render2dScaleY.startLoop(100, 160, gameModeSteps);
render2dBrightness.startLoop(100, 20, gameModeSteps - 5);
render2dScaleX.targetObject = aObj;
gameMode = "ZOOM_TO_SPYHOLE";
}
function endMode_ZOOM_TO_SPYHOLE() {
startMode_SPYHOLE(render2dScaleX.targetObject);
}
function renderMode_ZOOM_TO_SPYHOLE() {
render3d();
render2dScaleX.update();
render2dScaleY.update();
render2dBrightness.update();
render2dOffsetX.update();
render2dOffsetY.update();
render2d();
}
function startMode_ZOOM_FROM_SPYHOLE(aObj) {
_root.XSound.stopSound("sndOrbits", "IMMEDIATE");
_root.XSound.playSound("sndOrbits", VOL_ORBITS * 0.75, 16.5, false);
_root.XSound.playSound("sndAmbience", VOL_AMBIENCE, -8, true);
setupRoom(_root.currentRoom);
gameModeSteps = 20;
gameModeCurrentStep = 1;
render2dScaleX.startLoop(160, 100, gameModeSteps);
render2dScaleY.startLoop(160, 100, gameModeSteps);
render2dBrightness.startLoop(0, 100, gameModeSteps - 5);
var _local2 = 1;
while (_local2 <= 6) {
allPlanets[_local2].targetObject._visible = false;
_local2++;
}
_root.i3dStage.iSun._visible = false;
_root.i3dStage.iSpyholeMask._visible = false;
render2d();
gameMode = "ZOOM_FROM_SPYHOLE";
}
function endMode_ZOOM_FROM_SPYHOLE() {
startMode_NORMAL(render2dScaleX.targetObject);
}
function renderMode_ZOOM_FROM_SPYHOLE() {
render3d();
render2dScaleX.update();
render2dScaleY.update();
render2dBrightness.update();
render2d();
}
function startMode_SPYHOLE(aObj) {
gameModeSteps = -1;
gameModeCurrentStep = 1;
_root.XSound.stopSound("sndAmbience", "IMMEDIATE");
_root.XSound.playSound("sndAmbience", VOL_AMBIENCE / 2, 26.464, false);
_root.XSound.playSound("sndOrbits", VOL_ORBITS, 0, true);
aSteps = 40;
render2dScaleX.startLoop(60, 75, aSteps);
render2dScaleY.startLoop(60, 75, aSteps);
render2dBrightness.startLoop(0, 80, aSteps);
render2dOffsetX.currentValue = 0;
render2dOffsetY.currentValue = 0;
var _local6 = aObj.wallNumber;
setupRoom({x:2, y:2, z:2});
_root.targetObject = _root.i3dStage["obj" + _local6];
var _local4 = 0;
var _local5 = ["NULL", "GREEN", "RED", "YELLOW", "BLUE", "CYAN", "MAGENTA"];
var _local2 = 1;
while (_local2 <= 6) {
aPlanet = allPlanets[_local2];
aPlanet.targetObject._visible = true;
aPlanet.targetObject.iPlanetCentre._visible = false;
aPlanet.targetObject.iPlanetCentre.iPlanetAtmosphere.gotoAndPlay(randomRange(10, 180));
var _local3 = projectors[_local2].doUpdate();
aRoom = rooms[projectors[_local2].roomNumber];
if ((aRoom.solved == true) && (_local3 == _local5[_local2])) {
aPlanet.targetObject.iPlanetCentre._visible = true;
_local4++;
}
_local2++;
}
_root.i3dStage.iSun._visible = true;
_root.i3dStage.iSun.iSunCentre._alpha = 100 - (_local4 * 15);
if (_local4 == 6) {
_root.i3dStage.iSun.iSunCentre._alpha = 0;
}
_root.i3dStage.iSpyholeMask._visible = true;
_root.i3dStage.iSpyholeMask._xscale = 180;
_root.i3dStage.iSpyholeMask._yscale = 180;
render2d();
gameMode = "SPYHOLE";
}
function endMode_SPYHOLE() {
}
function renderMode_SPYHOLE() {
i = 0;
while (i < tmpArray.length) {
_root.pointArray[i].x = (_root.tmpArray[i].x - centreX) * scaleX;
_root.pointArray[i].y = (_root.tmpArray[i].y - centreY) * scaleY;
_root.pointArray[i].z = (_root.tmpArray[i].z - centreZ) * scaleZ;
i++;
}
offsetX = -_root.get2dOffsetX(_root.targetObject);
offsetY = -_root.get2dOffsetY(_root.targetObject);
var _local4;
var _local3 = false;
trace((("OX OY " + offsetX) + " ") + offsetY);
var _local2 = 200;
if ((offsetX > 1) || (offsetX < -1)) {
heading = heading + (offsetX / _local2);
} else {
_local4 = true;
}
if ((offsetY > 1) || (offsetY < -1)) {
pitch = pitch + (offsetY / _local2);
} else {
_local3 = true;
}
_root.groupRotateY(_root.pointArray, heading);
_root.groupRotateX(_root.pointArray, pitch);
_root.groupRotateZ(_root.pointArray, bank);
var i = 1;
while (i <= 6) {
allPlanets[i].updatePosition();
i++;
}
render2dScaleX.update();
render2dScaleY.update();
render2dBrightness.update();
render3d();
render2d();
}
function startMode_CLOSE_SPYHOLE(aObj) {
gameModeSteps = 25;
gameModeCurrentStep = 1;
render2dScaleX.startLoop(render2dScaleX.currentValue, 40, gameModeSteps);
render2dScaleY.startLoop(render2dScaleY.currentValue, 40, gameModeSteps);
render2dBrightness.startLoop(render2dBrightness.currentValue, 0, gameModeSteps);
render2d();
gameMode = "CLOSE_SPYHOLE";
}
function endMode_CLOSE_SPYHOLE() {
startMode_ZOOM_FROM_SPYHOLE();
}
function renderMode_CLOSE_SPYHOLE() {
var _local1 = 1;
while (_local1 <= 6) {
allPlanets[_local1].updatePosition();
_local1++;
}
render2dScaleX.update();
render2dScaleY.update();
render2dBrightness.update();
render3d();
render2d();
}
function startMode_LAUNCH_PUZZLE(flagHintMode) {
gameModeSteps = 30;
gameModeCurrentStep = 1;
_root.XSound.playSound("sndPuzzleOpen", VOL_PUZZLEOPEN, 0, false);
_root.XSound.stopSound("sndAmbience", "IMMEDIATE");
_root.XSound.playSound("sndAmbience", VOL_AMBIENCE / 2, 25, false);
_root.XSound.playSound("sndPuzzleAmbience", VOL_PUZZLEAMBIENCE, 0, true);
setRoomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]);
screenScale.startLoop(0, 0.75, gameModeSteps);
gameMode = "LAUNCH_PUZZLE";
_root.flagHintMode = flagHintMode;
_root.i3dStage.obj7.mc.texture.iPuzzlePulse.gotoAndPlay("turnOn");
}
function endMode_LAUNCH_PUZZLE() {
startMode_PLAY_PUZZLE();
}
function renderMode_LAUNCH_PUZZLE() {
_root.doMovement();
screenScale.update();
render3d();
if (gameModeCurrentStep == 1) {
if (_root.flagHintMode == false) {
var _local2 = 7;
while (_local2 <= 13) {
var _local3 = _root.i3dStage["obj" + _local2];
clip2 = _root.i3dStage["obj" + (_local2 - 7)];
clip2.mc.texture.iPuzzleHolderBackground._visible = true;
clip2.mc.texture.iPuzzleHolderBackground.setMask(_local3.mc.texture.iScreen);
_local2++;
}
} else {
var _local2 = 7;
while (_local2 <= 13) {
var _local3 = _root.i3dStage["obj" + _local2];
clip2 = _root.i3dStage["obj" + (_local2 - 7)];
clip2.mc.texture.iPuzzleHolderBackground._visible = false;
clip2.mc.texture.iPuzzleHolderBackground.setMask(_local3.mc.texture.iScreen);
_local2++;
}
}
}
}
function startMode_PLAY_PUZZLE() {
gameModeSteps = -1;
gameModeCurrentStep = 1;
gameMode = "PLAY_PUZZLE";
puzzleAlpha.startLoop(0, 210, 10);
}
function endMode_PLAY_PUZZLE() {
startMode_CLOSE_PUZZLE();
}
function renderMode_PLAY_PUZZLE() {
_root.doMovement();
puzzleAlpha.update();
if (puzzleAlpha.active == true) {
var _local2 = 1;
while (_local2 <= 6) {
var _local3 = _root.i3dStage["obj" + (_local2 + 7)];
renderObjectAlpha(_local3.mc.texture.iPuzzleHolder, puzzleAlpha.currentValue);
_local3 = _root.i3dStage["obj" + _local2];
renderObjectAlpha(_local3.mc.texture.iPuzzleHolderBackground.iDummy, puzzleAlpha.currentValue);
_local2++;
}
}
render3d();
sprites.renderAll();
}
function startMode_CLOSE_PUZZLE() {
gameModeSteps = 20;
gameModeCurrentStep = 1;
gameMode = "CLOSE_PUZZLE";
_root.XSound.playSound("sndPuzzleOpen", VOL_PUZZLEOPEN, 3.2, false);
_root.XSound.stopSound("sndPuzzleAmbience", "IMMEDIATE");
_root.XSound.playSound("sndAmbience", VOL_AMBIENCE, -2, true);
puzzleAlpha.startLoop(60, 0, 5);
screenScale.startLoop(0.75, 0.001, gameModeSteps);
_root.i3dStage.obj7.mc.texture.iPuzzlePulse.gotoAndPlay("turnOff");
}
function endMode_CLOSE_PUZZLE() {
setRoomArray([1, 2, 3, 4, 5, 6, 7]);
startMode_NORMAL();
var _local2 = 1;
while (_local2 <= 6) {
var _local3 = _root.i3dStage["obj" + _local2];
_local3.mc.texture.iPuzzleHolderBackground._visible = false;
_local3.mc.texture.iPuzzleHolderBackground.setMask(null);
_local2++;
}
}
function renderMode_CLOSE_PUZZLE() {
_root.doMovement();
puzzleAlpha.update();
if (puzzleAlpha.active == true) {
var _local2 = 1;
while (_local2 <= 6) {
var _local3 = _root.i3dStage["obj" + (_local2 + 7)];
renderObjectAlpha(_local3.mc.texture.iPuzzleHolder, puzzleAlpha.currentValue);
_local3 = _root.i3dStage["obj" + _local2];
renderObjectAlpha(_local3.mc.texture.iPuzzleHolderBackground.iDummy, puzzleAlpha.currentValue);
_local2++;
}
}
screenScale.update();
render3d();
}
function startMode_TURN_TO_DOOR(aObj) {
gameModeSteps = 20;
gameModeCurrentStep = 1;
render2dScaleX.startLoop(render2dScaleX.currentValue, 85, gameModeSteps);
render2dScaleY.startLoop(render2dScaleY.currentValue, 85, gameModeSteps);
_root.targetObject = aObj;
var _local2 = getCoordsFromDirection(_root.currentRoom, aObj.wallNumber);
setTintCoords(_root.iIntermediary.iDoor, _local2);
setTintCoords(_root.iIntermediary2.iDoor, _local2);
_root.iIntermediary.iDoor.gotoAndStop(1);
_root.iIntermediary2.iDoor.gotoAndStop(1);
_root.iIntermediary._visible = false;
_root.iIntermediary2._visible = false;
gameMode = "TURN_TO_DOOR";
}
function endMode_TURN_TO_DOOR() {
startMode_ZOOM_TO_OBJECT(_root.targetObject);
}
function renderMode_TURN_TO_DOOR() {
i = 0;
while (i < tmpArray.length) {
_root.pointArray[i].x = (_root.tmpArray[i].x - centreX) * scaleX;
_root.pointArray[i].y = (_root.tmpArray[i].y - centreY) * scaleY;
_root.pointArray[i].z = (_root.tmpArray[i].z - centreZ) * scaleZ;
i++;
}
if (_root.targetObject._name == "iZDoor") {
sprites.renderAll();
}
offsetX = -_root.get2dOffsetX(_root.targetObject);
offsetY = -_root.get2dOffsetY(_root.targetObject);
var _local4;
var _local2 = false;
trace((("OX OY " + offsetX) + " ") + offsetY);
var _local3 = 20;
if ((offsetX > 1) || (offsetX < -1)) {
heading = heading + (offsetX / _local3);
} else {
_local4 = true;
}
if ((offsetY > 1) || (offsetY < -1)) {
pitch = pitch + (offsetY / _local3);
} else {
_local2 = true;
}
_root.groupRotateY(_root.pointArray, heading);
_root.groupRotateX(_root.pointArray, pitch);
_root.groupRotateZ(_root.pointArray, bank);
if ((_local4 == true) && (_local2 == true)) {
if (render2dScaleX.currentValue == render2dScaleX.to) {
startMode_ZOOM_TO_OBJECT(_root.targetObject);
}
}
render2dScaleX.update();
render2dScaleY.update();
if (gameModeCurrentStep == (gameModeSteps - 6)) {
_root.targetObject.gotoAndPlay("doOpen");
}
render3d();
render2d();
}
function startMode_ZOOM_TO_OBJECT(aObj) {
if (aObj._name == "iZDoor") {
gameModeSteps = 65;
scaleDest = 1250;
_root.iIntermediary._visible = true;
render2dBrightness.startLoop(100, 0, gameModeSteps);
} else {
gameModeSteps = 25;
scaleDest = 320;
_root.iIntermediary._visible = true;
intermediaryScale.startLoop(100, 420, gameModeSteps + 35);
}
gameModeCurrentStep = 1;
render2dOffsetX.startLoop(0, get2dOffsetX(aObj), gameModeSteps);
render2dOffsetY.startLoop(0, get2dOffsetY(aObj), gameModeSteps);
render2dScaleX.startLoop(render2dScaleX.currentValue, scaleDest, gameModeSteps);
render2dScaleY.startLoop(render2dScaleY.currentValue, scaleDest, gameModeSteps);
render2dScaleX.targetObject = aObj;
_root.iIntermediary2._visible = false;
gameMode = "ZOOM_TO_OBJECT";
}
function endMode_ZOOM_TO_OBJECT() {
trace((((("ALAH1 " + _root.currentRoom.x) + " ") + _root.currentRoom.y) + " ") + _root.currentRoom.z);
if (render2dScaleX.targetObject._name != "iZDoor") {
aDirection = render2dScaleX.targetObject.wallNumber;
var _local2 = getCoordsFromDirection(_root.currentRoom, aDirection);
_root.currentRoom.x = _local2.x;
_root.currentRoom.y = _local2.y;
_root.currentRoom.z = _local2.z;
currentRoomNumber = getRoomNumber(_root.currentRoom);
trace((((("ALAH2 " + _root.currentRoom.x) + " ") + _root.currentRoom.y) + " ") + _root.currentRoom.z);
startMode_FADE_IN();
} else {
_root.flagGameOver = true;
}
}
function renderMode_ZOOM_TO_OBJECT() {
intermediaryScale.update();
_root.iIntermediary._xscale = _root.intermediaryScale.currentValue;
_root.iIntermediary._yscale = _root.intermediaryScale.currentValue;
_root.targetObject._parent.shadow._alpha = _root.targetObject._parent.shadow._alpha - 7;
render3d();
render2dScaleX.update();
render2dScaleY.update();
render2d_Scale();
render2dOffsetX.update();
render2dOffsetY.update();
render2d_Position();
render2dAlpha.update();
render2d_Alpha();
if (_root.targetObject._name == "iZDoor") {
sprites.renderAll();
render2dBrightness.update();
render2d_Brightness();
}
}
function getCoordsFromDirection(aCoords, aDirection) {
var _local1 = {x:0, y:0, z:0};
_local1.x = aCoords.x;
_local1.y = aCoords.y;
_local1.z = aCoords.z;
switch (aDirection) {
case 1 :
_local1.x = _local1.x - 1;
break;
case 2 :
_local1.z = _local1.z + 1;
break;
case 3 :
_local1.x = _local1.x + 1;
break;
case 4 :
_local1.z = _local1.z - 1;
break;
case 5 :
_local1.y = _local1.y + 1;
break;
case 6 :
_local1.y = _local1.y - 1;
break;
}
return(_local1);
}
function demon() {
this.active = false;
this.from = 0;
this.to = 0;
this.steps = 0;
this.currentStep = 0;
this.currentValue = 0;
this.targetObject = null;
this.startLoop = function (from, to, steps, beginAtStep) {
this.from = from;
this.to = to;
this.steps = steps;
if (!beginAtStep) {
beginAtStep = 0;
}
this.currentStep = beginAtStep;
this.currentValue = from;
this.active = true;
};
this.update = function () {
if (this.active == false) {
return(undefined);
}
if (this.currentStep > this.steps) {
this.active = false;
return(undefined);
}
var _local2 = this.currentStep / this.steps;
this.currentValue = this.from + ((this.to - this.from) * _local2);
this.currentStep++;
if (this.currentStep > this.steps) {
this.currentValue = this.to;
}
};
}
function getRangedValue(aValue, aMaxLimit) {
retValue = aValue - (int(aValue / aMaxLimit) * aMaxLimit);
if (retValue < 0) {
retValue = retValue + aMaxLimit;
}
return(retValue);
}
function render2d_Color() {
_root.i3dStage._alpha = render2dAlpha.currentValue;
}
function planet() {
this.ww = null;
this.uu = null;
this.vv = null;
this.uRadius = null;
this.vRadius = null;
this.speed = null;
this.theta = 0;
this.colorName = null;
this.targetObject = null;
this.init = function (aColorName, aSpeed, aW, aU, aV, aURadius, aVRadius, aTheta) {
this.ww = _root.pointArray[aW];
this.uu = _root.pointArray[aU];
this.vv = _root.pointArray[aV];
this.uRadius = aURadius;
this.vRadius = aVRadius;
this.theta = aTheta;
this.speed = aSpeed;
this.colorName = aColorName;
this.active = true;
_root.setTint(this.targetObject, this.colorName);
this.targetObject._visible = false;
};
this.updatePosition = function () {
var _local8 = this.ww;
var _local4 = this.uu;
var _local3 = this.vv;
radiusU = this.uRadius;
radiusV = this.vRadius;
this.theta = this.theta + 0.04;
if (this.theta > (Math.PI*2)) {
this.theta = this.theta - (Math.PI*2);
}
var _local7 = ((0 + (Math.cos(this.theta) * (_local4.x * radiusU))) + (Math.sin(this.theta) * (_local3.x * radiusV))) + _root.centreX;
var _local6 = ((0 + (Math.cos(this.theta) * (_local4.y * radiusU))) + (Math.sin(this.theta) * (_local3.y * radiusV))) + _root.centreY;
var _local5 = ((0 + (Math.cos(this.theta) * (_local4.z * radiusU))) + (Math.sin(this.theta) * (_local3.z * radiusV))) + _root.centreZ;
this.targetObject._x = _local7;
this.targetObject._y = _local6;
this.targetObject.swapDepths(50500 - _local5);
aMaxScale = 70;
aMinScale = 5;
aScale = aMaxScale - (_local5 / 4);
if (aScale < aMinScale) {
aScale = aMinScale;
}
this.targetObject._xscale = aScale;
this.targetObject._yscale = aScale;
};
}
var throbCounter = 0;
var stabCounter = 0;
var lastStab = 1;
puzzleAlpha.update();
if (puzzleAlpha.active == true) {
var i = 1;
while (i <= 6) {
var clip = _root.i3dStage["obj" + (i + 7)];
renderObjectAlpha(clip.mc.texture.iPuzzleHolder, puzzleAlpha.currentValue);
var clip = _root.i3dStage["obj" + i];
renderObjectAlpha(clip.mc.texture.iPuzzleHolderBackground.iDummy, puzzleAlpha.currentValue);
i++;
}
}
var fadeTime = 1000;
var defaultHex = 26316;
Color.prototype.fadeToHex = function (goalHex, milSecs) {
clearInterval(this.v.intrvl);
this.v = {};
this.v.milSecs = milSecs;
this.v.startTime = getTimer();
this.v.startHex = this.getRGB();
this.v.startRGB = Math.hex2rgb(this.v.startHex);
this.v.goalHex = goalHex;
var _local2 = Math.hex2rgb(goalHex);
this.v.change = {};
this.v.change.r = _local2.r - this.v.startRGB.r;
this.v.change.g = _local2.g - this.v.startRGB.g;
this.v.change.b = _local2.b - this.v.startRGB.b;
this.v.intrvl = setInterval(this, "colorShift", 1);
};
Color.prototype.colorShift = function () {
var _local2 = (getTimer() - this.v.startTime) / this.v.milSecs;
if (_local2 < 1) {
var _local4 = this.v.startRGB.r + (_local2 * this.v.change.r);
var _local5 = this.v.startRGB.g + (_local2 * this.v.change.g);
var _local3 = this.v.startRGB.b + (_local2 * this.v.change.b);
this.setRGB(Math.rgbToHex(_local4, _local5, _local3));
} else {
this.setRGB(this.v.goalHex);
clearInterval(this.v.intrvl);
delete this.v;
}
};
function setupPuzzle(aPuzzleName) {
flagSpriteDest_X = -1;
flagSpriteDest_Y = -1;
flagSpriteDest_Screen = 999;
sprites.reset();
switch (aPuzzleName) {
case "PuzzleHINT" :
setupPuzzle_HINT();
break;
case "PuzzleA" :
setupPuzzle_A();
break;
case "PuzzleB" :
setupPuzzle_B();
break;
case "PuzzleC" :
setupPuzzle_C();
break;
case "PuzzleD" :
setupPuzzle_D();
break;
case "PuzzleE" :
setupPuzzle_E();
break;
case "PuzzleF" :
setupPuzzle_F();
break;
case "PuzzleG" :
setupPuzzle_G();
break;
case "PuzzleH" :
setupPuzzle_H();
break;
case "PuzzleI" :
setupPuzzle_I();
break;
case "PuzzleJ" :
setupPuzzle_J();
break;
case "PuzzleK" :
setupPuzzle_K();
break;
case "PuzzleL" :
setupPuzzle_L();
break;
case "PuzzleM" :
setupPuzzle_M();
break;
case "PuzzleN" :
setupPuzzle_N();
break;
case "PuzzleO" :
setupPuzzle_O();
break;
case "PuzzleP" :
setupPuzzle_P();
break;
case "PuzzleQ" :
setupPuzzle_Q();
break;
case "PuzzleR" :
setupPuzzle_R();
break;
case "PuzzleS" :
setupPuzzle_S();
break;
case "PuzzleT" :
setupPuzzle_T();
break;
case "PuzzleU" :
setupPuzzle_U();
break;
case "PuzzleV" :
setupPuzzle_V();
break;
case "PuzzleW" :
setupPuzzle_W();
break;
case "PuzzleX" :
setupPuzzle_X();
break;
case "PuzzleY" :
setupPuzzle_Y();
break;
case "PuzzleZ" :
setupPuzzle_Z();
break;
default :
setupPuzzle_B();
}
}
function setupPuzzle_A() {
i = 1;
sprites.addSprite(new sprite("guffin11", i, "shapeA2", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin12", i, "shapeAX", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin13", i, "shapeA1", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin14", i, "shapeA5", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
i = 2;
sprites.addSprite(new sprite("guffin21", i, "shapeA2", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin22", i, "shapeA1", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin23", i, "shapeA4", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin24", i, "shapeAX", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
i = 3;
sprites.addSprite(new sprite("guffin31", i, "shapeA1", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin32", i, "shapeA4", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin33", i, "shapeAX", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin34", i, "shapeA3", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
i = 4;
sprites.addSprite(new sprite("guffin41", i, "shapeA2", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin42", i, "shapeA4", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin43", i, "shapeA3", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin44", i, "shapeAX", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
i = 5;
sprites.addSprite(new sprite("guffin51", i, "shapeA5", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin52", i, "shapeAX", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin53", i, "shapeA2", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin54", i, "shapeA1", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
i = 6;
sprites.addSprite(new sprite("guffin61", i, "shapeA4", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin72", i, "shapeA3", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin73", i, "shapeA2", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin74", i, "shapeAX", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
flagQuadCounter = -1;
var i = 0;
while (i <= sprites.items.length) {
flagQuadCounter++;
if (flagQuadCounter == 5) {
flagQuadCounter = 1;
}
aSprite = sprites.items[i];
applyState_Inactive(aSprite);
applyState_Alpha(aSprite, 5, "IMMEDIATE");
applyState_RGB(aSprite, 0, 0, 100);
aSprite.y.rotation.currentValue = randomRange(1, 360);
aSprite.rotation.currentValue = i * 30;
applyState_Rotation(aSprite, 2);
aSprite.baseScaleX = 150;
aSprite.baseScaleY = 150;
aSprite.flagQuad = (Math.PI/2) * flagQuadCounter;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 2, 0.1, aSprite.flagQuad);
i++;
}
puzzleConfig.currentSprite = [0, 0, 0, 0, 0, 0, 0];
}
function puzzleA_sprite_onPress(aObj) {
screenNumber = aObj.targetSprite.screenNumber;
aSprite = puzzleConfig.currentSprite[screenNumber];
applyState_Inactive(aSprite);
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 2, 0.1, aSprite.flagQuad);
applyState_RGB(aSprite, 0, 0, 100);
applyState_Rotation(aSprite, 2);
applyState_Alpha(aSprite, 5);
aSprite = aObj.targetSprite;
puzzleConfig.currentSprite[screenNumber] = aSprite;
applyState_Active(aSprite, 0);
applyState_Alpha(aSprite, 26);
applyState_Orbit(aSprite, 0, 0, 0);
applyState_RGB(aSprite, 100, 0, 0);
applyState_Rotation(aSprite, 6);
}
function puzzleA_sprite_stopMoving(aObj) {
aTest = ((((puzzleConfig.currentSprite[1].shapeId + puzzleConfig.currentSprite[2].shapeId) + puzzleConfig.currentSprite[3].shapeId) + puzzleConfig.currentSprite[4].shapeId) + puzzleConfig.currentSprite[5].shapeId) + puzzleConfig.currentSprite[6].shapeId;
trace("test " + aTest);
if (aTest == "shapeAXshapeAXshapeAXshapeAXshapeAXshapeAX") {
handlePuzzleSolved();
}
}
function setupPuzzle_B() {
i = 1;
sprites.addSprite(new sprite("guffin11", i, "shapeB1", "blixA", -20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin12", i, "shapeB2", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin13", i, "shapeB5", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin14", i, "shapeB1", "blixA", 20, -20, 100, {r:0, g:0, b:100}, 180));
i = 2;
sprites.addSprite(new sprite("guffin21", i, "shapeB3", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin22", i, "shapeB4", "blixA", 20, -20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin23", i, "shapeB3", "blixA", -20, 20, 100, {r:0, g:0, b:100}, 180));
sprites.addSprite(new sprite("guffin24", i, "shapeB4", "blixA", -20, -20, 100, {r:0, g:0, b:100}, 180));
i = 3;
sprites.addSprite(new sprite("guffin31", i, "shapeB6", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin32", i, "shapeB7", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin33", i, "shapeB2", "blixA", -20, -20, 100, {r:0, g:0, b:100}, 180));
sprites.addSprite(new sprite("guffin34", i, "shapeB1", "blixA", 20, -20, 100, {r:0, g:0, b:100}, 180));
i = 4;
sprites.addSprite(new sprite("guffin41", i, "shapeB4", "blixA", -20, -20, 100, {r:0, g:0, b:100}, 90));
sprites.addSprite(new sprite("guffin42", i, "shapeB8", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin43", i, "shapeB4", "blixA", -20, 20, 100, {r:0, g:0, b:100}, 180));
sprites.addSprite(new sprite("guffin44", i, "shapeB7", "blixA", 20, -20, 100, {r:0, g:0, b:100}, 180));
i = 5;
sprites.addSprite(new sprite("guffin51", i, "shapeB3", "blixA", -20, -20, 100, {r:0, g:0, b:100}, -90));
sprites.addSprite(new sprite("guffin52", i, "shapeB9", "blixA", 20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin53", i, "shapeB1", "blixA", -20, 20, 100, {r:0, g:0, b:100}, 180));
sprites.addSprite(new sprite("guffin54", i, "shapeB6", "blixA", 20, -20, 100, {r:0, g:0, b:100}, -90));
i = 6;
sprites.addSprite(new sprite("guffin51", i, "shapeB10", "blixA", -20, 20, 100, {r:0, g:0, b:100}));
sprites.addSprite(new sprite("guffin52", i, "shapeB5", "blixA", 20, -20, 100, {r:0, g:0, b:100}, 90));
sprites.addSprite(new sprite("guffin53", i, "shapeB7", "blixA", -20, -20, 100, {r:0, g:0, b:100}, -90));
sprites.addSprite(new sprite("guffin54", i, "shapeB5", "blixA", 20, 20, 100, {r:0, g:0, b:100}, -90));
flagQuadCounter = 0;
var i = 0;
while (i <= sprites.items.length) {
flagQuadCounter++;
if (flagQuadCounter == 5) {
flagQuadCounter = 1;
}
aSprite = sprites.items[i];
applyState_Inactive(aSprite);
applyState_Alpha(aSprite, 0, "IMMEDIATE");
aSprite.alpha.maxSpeed = 1;
aSprite.x.currentValue = 0;
aSprite.y.currentValue = 0;
applyState_Alpha(aSprite, 20);
applyValueState_Sin(aSprite.rotation, aSprite.rotation.currentValue, 0.1, 10, 0);
aSprite.baseScaleX = 190;
aSprite.baseScaleY = 190;
aSprite.rotation.maxSpeed = 10;
aSprite.x.changeTo = aSprite.x.changeTo + ((randomRange(0, 2) - 2) * 10);
aSprite.y.changeTo = aSprite.y.changeTo + ((randomRange(0, 2) - 2) * 10);
aSprite.flagQuad = (Math.PI/2) * flagQuadCounter;
applyState_Orbit(aSprite, 0, 0, 32, -0.01, aSprite.flagQuad);
i++;
}
puzzleConfig.currentFrontSprite = [null, null, null, null, null, null, null];
puzzleConfig.currentBackSprite = [null, null, null, null, null, null, null];
}
function puzzleB_sprite_onPress(aObj) {
screenNumber = aObj.targetSprite.screenNumber;
aSprite = puzzleConfig.currentFrontSprite[screenNumber];
applyState_Inactive(aSprite);
applyState_Alpha(aSprite, 20);
applyState_RGB(aSprite, 100, 100, 100);
aSprite.rotation.currentValue = aSprite.rotation.currentValue - 360;
applyState_Orbit(aSprite, 0, 0, 32, -0.01, aSprite.flagQuad);
aSprite = puzzleConfig.currentBackSprite[screenNumber];
puzzleConfig.currentFrontSprite[screenNumber] = aSprite;
applyState_Active(aSprite, -40);
applyState_Alpha(aSprite, 30);
applyState_Orbit(aSprite, 0, 0, 0);
applyState_FlashColor(aSprite, "blue");
aSprite = aObj.targetSprite;
puzzleConfig.currentBackSprite[screenNumber] = aSprite;
applyState_Active(aSprite, -25);
applyState_Alpha(aSprite, 30);
applyState_Orbit(aSprite, 0, 0, 0);
aSprite.rotation.currentValue = aSprite.rotation.currentValue + 360;
applyState_FlashColor(aSprite, "blue");
}
function puzzleB_sprite_stopMoving(aObj) {
var _local1 = 1;
while (_local1 <= 6) {
tmpFront = puzzleConfig.currentFrontSprite[_local1];
if (tmpFront == null) {
return(undefined);
}
tmpBack = puzzleConfig.currentBackSprite[_local1];
if (tmpBack == null) {
return(undefined);
}
var _local2 = tmpFront.shapeId + tmpBack.shapeId;
correct1 = sprites.items[(_local1 - 1) * 4];
correct2 = sprites.items[((_local1 - 1) * 4) + 1];
if (((tmpFront == correct1) && (tmpBack == correct2)) || ((tmpBack == correct1) && (tmpFront == correct2))) {
} else {
return(undefined);
}
_local1++;
}
handlePuzzleSolved();
}
function setupPuzzle_C() {
puzzleConfig.offsets = [1, 130, 200, 30, 330, 0];
puzzleConfig.currentRedRotation = 0;
puzzleConfig.colors = [{r:0, g:0, b:0}, {r:100, g:0, b:0}, {r:0, g:100, b:0}, {r:0, g:0, b:100}, {r:100, g:100, b:0}, {r:100, g:0, b:100}, {r:0, g:100, b:100}];
var _local4 = 1;
while (_local4 <= 5) {
var _local1 = 1;
while (_local1 <= 5) {
spriteName = (("guffin" + _local4) + "screen") + _local1;
spriteDepth = 0 + ((_local1 - _local4) * 20);
if (spriteDepth < 0) {
spriteDepth = 100 + spriteDepth;
}
if ((_local1 == 5) && (_local4 != 5)) {
} else {
aSprite = sprites.addSprite(new sprite(spriteName, _local1, "shapeC1", "blixC", 0, 0, spriteDepth, {r:0, g:100, b:0}));
aSprite.maxSpeed = 2;
aSprite.acceleration = 0.5;
aSprite.baseScaleX = 400;
aSprite.baseScaleY = 400;
aColor = puzzleConfig.colors[_local4];
trace((((aColor.r + " << ") + aColor.g) + " ") + aColor.b);
if (_local4 == _local1) {
aSprite.guffinKey = _local4;
aSprite.alpha.currentValue = 100;
} else {
aSprite.alpha.currentValue = 20;
}
if (_local4 == 5) {
applyState_RGB(aSprite, 100, 0, 0, "IMMEDIATE");
aOffset = puzzleConfig.offsets[_local1] + puzzleConfig.currentRedRotation;
aOffset = getRangedValue(aOffset, 360);
applyState_Rotation(aSprite, aOffset, "GRADUAL");
} else {
aOffset = (_local4 - 1) * 90;
applyState_RGB(aSprite, 0, 100, 0, "IMMEDIATE");
applyState_Rotation(aSprite, aOffset, "GRADUAL");
}
}
_local1++;
}
_local4++;
}
_local4 = 0;
while (_local4 <= sprites.items.length) {
_local4++;
}
}
function puzzleC_sprite_onPress(aObj) {
screenNumber = aObj.targetSprite.screenNumber;
aSprite = aObj.targetSprite;
if (!aSprite.guffinKey) {
return(undefined);
}
aKey = aSprite.guffinKey;
var _local5 = 30;
if (aKey == 5) {
aOffset = sprites.offsetRotation[screenNumber];
aOffset = aOffset + 180;
aStep = 10;
aHowMany = int(aOffset / aStep);
aRemainder = aOffset - int(aOffset / aStep);
if (aRemainder <= (aStep / 2)) {
aOffset = aStep * aHowMany;
} else {
aOffset = (aStep * aHowMany) + aStep;
}
puzzleConfig.currentRedRotation = aOffset;
} else {
aDelta = puzzleConfig.offsets[aKey];
aOffset = puzzleConfig.currentRedRotation + aDelta;
aOffset = getRangedValue(aOffset, 360);
}
var _local3 = aOffset;
var _local1 = 1;
while (_local1 <= 5) {
spriteName = (("guffin" + aKey) + "screen") + _local1;
tmpSprite = sprites.getSprite(spriteName);
if (tmpSprite) {
if (aKey == 5) {
aDelta = puzzleConfig.offsets[_local1];
aOffset = _local3 + aDelta;
} else {
aOffset = _local3;
}
aOffset = getRangedValue(aOffset, 360);
applyState_Rotation(tmpSprite, aOffset, "GRADUAL");
}
_local1++;
}
var _local2 = null;
aKey = 1;
while (aKey <= 4) {
_local1 = 1;
while (_local1 <= 4) {
spriteName = (("guffin" + aKey) + "screen") + _local1;
tmpSprite = sprites.getSprite(spriteName);
aOffset = tmpSprite.rotation.changeTo;
if (_local2 == null) {
_local2 = aOffset;
} else if (aOffset != _local2) {
return(undefined);
}
_local1++;
}
aKey++;
}
handlePuzzleSolved();
}
function setupPuzzle_E() {
aShapeCounter = 0;
aSpeedCounter = 0;
puzzleConfig.selectedSprites = [null, null, null, null];
var _local2 = 1;
while (_local2 <= 4) {
var _local1 = 1;
while (_local1 <= 3) {
aShapeCounter++;
if (aShapeCounter == 5) {
aShapeCounter = 1;
}
aSpeedCounter = aSpeedCounter + 2;
if (aSpeedCounter > 9) {
aSpeedCounter = 1;
}
tx = -30 + (_local1 * 10);
ty = (-35 + ((_local1 - 1) * 19)) + ((_local2 - 1) * 4);
depth = randomRange(0, 5) * 5;
aShape = "shapeE" + _local1;
aSprite.flagShapeNumber = _local1;
aSprite = sprites.addSprite(new sprite((("guffinx" + _local1) + "screen") + _local2, _local2, aShape, "blixA", tx, ty, depth, {r:80, g:80, b:80}));
aSprite.baseScaleX = 370;
aSprite.baseScaleY = 170;
aSprite.flagActive = false;
aSpeedX = 0.2 + (aSpeedCounter * 0.1);
if (_local2 <= 4) {
applyValueState_Transfer(aSprite.x, -77, 77, aSpeedX);
}
if (_local2 == _local1) {
aSprite.flagWrongShadow = true;
} else {
aSprite.flagWrongShadow = false;
}
aSprite.originalSpeed = aSpeedX;
aSprite.originalY = ty;
aSprite.flagSelected = false;
_local1++;
}
_local2++;
}
_local2 = 0;
while (_local2 <= sprites.items.length) {
aSprite = sprites.items[_local2];
applyState_Alpha(aSprite, 25, "IMMEDIATE");
_local2++;
}
}
function puzzleE_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.flagSelected == true) {
return(undefined);
}
aSprite.flagSelected = true;
aSprite.y.changeMode = "SIN";
aSprite.y.base = 35;
aSprite.y.offset = 0.314159265358979 * randomRange(0, 10);
aSprite.y.frequency = randomRange(2, 4) / 50;
aSprite.y.amplitude = randomRange(1, 4);
aSprite.y.maxSpeed = 1.6;
applyState_RGB(aSprite, 20, 20, 35);
if (puzzleConfig.selectedSprites[0] != null) {
tmpSprite = puzzleConfig.selectedSprites[0];
tmpSprite.flagSelected = false;
tmpSprite.y.changeMode = "GRADUAL";
tmpSprite.y.changeTo = tmpSprite.originalY;
tmpSprite.y.maxSpeed = 1.3;
applyState_RGB(tmpSprite, 100, 100, 100);
}
puzzleConfig.selectedSprites[0] = puzzleConfig.selectedSprites[1];
puzzleConfig.selectedSprites[1] = puzzleConfig.selectedSprites[2];
puzzleConfig.selectedSprites[2] = aSprite;
var _local1 = 0;
while (_local1 < 3) {
tmpSprite = puzzleConfig.selectedSprites[_local1];
if (tmpSprite == null) {
return(undefined);
}
if (tmpSprite.flagWrongShadow == false) {
return(undefined);
}
_local1++;
}
handlePuzzleSolved();
}
function setupPuzzle_F() {
aCounter = 0;
puzzleConfig.clicks = 0;
var _local6 = 1;
while (_local6 <= 6) {
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
aCounter++;
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
depth = 20;
aShape = "shapeF1";
aSprite = sprites.addSprite(new sprite((((("guffinx" + _local6) + "x") + _local2) + "y") + _local1, _local6, aShape, "blixA", tx, ty, depth, {r:0, g:0, b:100}));
aSprite.baseScaleX = 300;
aSprite.baseScaleY = 300;
applyStateFlipFlop(aSprite, 3);
aSprite.flagActive = false;
aSprite.rotation.currentValue = aCounter * 90;
_local1++;
}
_local2++;
}
_local6++;
}
_local6 = 0;
while (_local6 <= sprites.items.length) {
aSprite = sprites.items[_local6];
aSprite.x.maxSpeed = 6;
aSprite.y.maxSpeed = 6;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
aSprite.flagActive = false;
_local6++;
}
}
function puzzleF_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
aScreenWidth = 100;
aDistance = 50;
tmpSprite = aSprite;
tmpSprite = aSprite.cloneForTransfer("abstract1");
applyValueState_Transfer(tmpSprite.x, -(aScreenWidth / 2), aScreenWidth / 2, tmpSprite.x.currentValue + aDistance, "GRADUALTRANSFER");
doTransfer(tmpSprite, 1);
targetSprite = sprites.getSpriteAtXY(tmpSprite.screenNumber, tmpSprite.x.changeTo, tmpSprite.y.changeTo);
tmpSprite = null;
applyStateFlipFlop(targetSprite, 2);
tmpSprite = aSprite.cloneForTransfer("abstract1");
applyValueState_Transfer(tmpSprite.x, -(aScreenWidth / 2), aScreenWidth / 2, tmpSprite.x.currentValue - aDistance, "GRADUALTRANSFER");
doTransfer(tmpSprite, 2);
targetSprite = sprites.getSpriteAtXY(tmpSprite.screenNumber, tmpSprite.x.changeTo, tmpSprite.y.changeTo);
tmpSprite = null;
applyStateFlipFlop(targetSprite, 2);
tmpSprite = aSprite.cloneForTransfer("abstract1");
applyValueState_Transfer(tmpSprite.y, -(aScreenWidth / 2), aScreenWidth / 2, tmpSprite.y.currentValue - aDistance, "GRADUALTRANSFER");
doTransfer(tmpSprite, 3);
targetSprite = sprites.getSpriteAtXY(tmpSprite.screenNumber, tmpSprite.x.changeTo, tmpSprite.y.changeTo);
tmpSprite = null;
applyStateFlipFlop(targetSprite, 2);
tmpSprite = aSprite.cloneForTransfer("abstract1");
applyValueState_Transfer(tmpSprite.y, -(aScreenWidth / 2), aScreenWidth / 2, tmpSprite.y.currentValue + aDistance, "GRADUALTRANSFER");
doTransfer(tmpSprite, 4);
targetSprite = sprites.getSpriteAtXY(tmpSprite.screenNumber, tmpSprite.x.changeTo, tmpSprite.y.changeTo);
tmpSprite = null;
applyStateFlipFlop(targetSprite, 2);
applyStateFlipFlop(aSprite, 3);
flagSolved = true;
i = 0;
while (i < 24) {
aSprite = sprites.items[i];
if (aSprite.currentLevel != 2) {
flagSolved = false;
}
i++;
}
puzzleConfig.clicks = puzzleConfig.clicks + 1;
if (flagSolved == true) {
handlePuzzleSolved();
} else if (puzzleConfig.clicks == 10) {
_root.i3dStage.obj7.mc.texture.iButton.gotoAndPlay("frisbeePress");
startMode_CLOSE_PUZZLE();
}
}
function setupPuzzle_I() {
aShapeCounter = 0;
aSpeedCounter = 0;
puzzleConfig.selectedSprites = [null, null, null, null];
var _local3 = [0, 1, 3, 5, 2, 4, 6];
puzzleConfig.reds = [0, 100, 0, 0, 100, 100, 0];
puzzleConfig.blus = [0, 0, 100, 0, 100, 0, 100];
puzzleConfig.grns = [0, 0, 0, 100, 0, 100, 100];
i = 1;
while (i <= 6) {
var _local2 = _root.i3dStage["obj" + i].mc.texture.iPuzzleHolderBackground;
_local2.puzzle.gotoAndStop(_local3[i]);
i++;
}
i = 1;
aSprite = sprites.addSprite(new sprite("guffinA1", 1, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
aSprite = sprites.addSprite(new sprite("guffinE1", 3, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
i = 2;
aSprite = sprites.addSprite(new sprite("guffinA2", 1, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
aSprite = sprites.addSprite(new sprite("guffinB1", 4, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
i = 3;
aSprite = sprites.addSprite(new sprite("guffinB2", 4, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
aSprite = sprites.addSprite(new sprite("guffinC1", 2, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
i = 4;
aSprite = sprites.addSprite(new sprite("guffinC2", 2, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
aSprite = sprites.addSprite(new sprite("guffinF1", 6, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
i = 5;
aSprite = sprites.addSprite(new sprite("guffinD1", 5, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
aSprite = sprites.addSprite(new sprite("guffinE2", 3, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
i = 6;
aSprite = sprites.addSprite(new sprite("guffinD2", 5, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
aSprite = sprites.addSprite(new sprite("guffinF2", 6, "shapeI", "blixI", 0, 0, 85, {r:100, g:70, b:0}));
var i = 0;
while (i <= sprites.items.length) {
aSprite = sprites.items[i];
applyState_Alpha(aSprite, 25, "IMMEDIATE");
aSprite.baseScaleX = 445;
aSprite.baseScaleY = 445;
if (aSprite.id.indexOf("1") > -1) {
aSprite.rotation.changeTo = 45;
} else {
aSprite.rotation.changeTo = 225;
}
applyValueState_Bounce(aSprite.scaleY, 95, 100, 0.2);
aSprite.rotation.changeMode = "GRADUAL";
aSprite.rotation.maxSpeed = 3;
t = int(i / 2) + 1;
applyState_RGB(aSprite, puzzleConfig.reds[t], puzzleConfig.blus[t], puzzleConfig.grns[t]);
i++;
}
}
function puzzleI_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.rotation.currentValue != aSprite.rotation.changeTo) {
return(undefined);
}
aTarget = aSprite.rotation.currentValue + 45;
if (aTarget >= 360) {
aTarget = aTarget - 360;
aSprite.rotation.currentValue = aSprite.rotation.currentValue - 360;
}
aSprite.rotation.changeTo = aTarget;
aSprite.rotation.changeMode = "GRADUAL";
aSprite.rotation.maxSpeed = 4;
applyState_Alpha(aSprite, 120, "IMMEDIATE");
applyState_Alpha(aSprite, 24, "GRADUAL");
rot1 = sprites.items[0].rotation.changeTo;
rot2 = sprites.items[1].rotation.changeTo;
trace((("ROT ROT " + rot1) + " / ") + rot2);
tmp = sprites.items[2];
trace("ROT TOT " + tmp);
trace("ROT LOT " + tmp.rotation.changeTo);
flag = false;
if ((rot1 == 90) && (rot2 == 90)) {
flag = true;
}
if ((rot1 == 270) && (rot2 == 270)) {
flag = true;
}
if (flag == false) {
return(undefined);
}
rot1 = sprites.items[2].rotation.changeTo;
rot2 = sprites.items[3].rotation.changeTo;
flag = false;
if ((rot1 == 0) && (rot2 == 0)) {
flag = true;
}
if ((rot1 == 180) && (rot2 == 180)) {
flag = true;
}
if (flag == false) {
return(undefined);
}
rot1 = sprites.items[4].rotation.changeTo;
rot2 = sprites.items[5].rotation.changeTo;
flag = false;
if ((rot1 == 0) && (rot2 == 0)) {
flag = true;
}
if ((rot1 == 180) && (rot2 == 180)) {
flag = true;
}
if (flag == false) {
return(undefined);
}
rot1 = sprites.items[6].rotation.changeTo;
rot2 = sprites.items[7].rotation.changeTo;
flag = false;
if ((rot1 == 90) && (rot2 == 270)) {
flag = true;
}
if ((rot1 == 270) && (rot2 == 90)) {
flag = true;
}
if (flag == false) {
return(undefined);
}
rot1 = sprites.items[8].rotation.changeTo;
rot2 = sprites.items[9].rotation.changeTo;
flag = false;
if ((rot1 == 90) && (rot2 == 180)) {
flag = true;
}
if ((rot1 == 270) && (rot2 == 0)) {
flag = true;
}
if (flag == false) {
return(undefined);
}
rot1 = sprites.items[10].rotation.changeTo;
rot2 = sprites.items[11].rotation.changeTo;
flag = false;
if ((rot1 == 90) && (rot2 == 0)) {
flag = true;
}
if ((rot1 == 270) && (rot2 == 180)) {
flag = true;
}
if (flag == false) {
return(undefined);
}
handlePuzzleSolved();
}
function setupPuzzle_J() {
puzzleConfig.currentSprite = null;
aShapeArray = [x, 1, 3, 2, 3, 2, 1];
aCounter = 0;
var _local1 = 1;
while (_local1 <= 6) {
aCounter++;
tx = 0;
ty = 0;
aShape = "shapeJ" + aShapeArray[aCounter];
aSprite = sprites.addSprite(new sprite("guffinx" + _local1, _local1, aShape, "blixA", tx, ty, depth, {r:100, g:0, b:0}));
aSprite.flagActive = false;
if (((_local1 == 1) || (_local1 == 2)) || (_local1 == 3)) {
aSprite.flagLevel = 1;
} else {
aSprite.flagLevel = 2;
}
aSprite.targetObject.shape.gotoAndStop("stayOff1");
aSprite.targetShadow.gotoAndStop("stayOff1");
_local1++;
}
_local1 = 0;
while (_local1 < sprites.items.length) {
aSprite = sprites.items[_local1];
aSprite.x.maxSpeed = 10;
aSprite.y.maxSpeed = 10;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
aSprite.baseScaleX = 600;
aSprite.baseScaleY = 600;
applyState_RGB(aSprite, 660, 0, 0);
applyState_Alpha(aSprite, 15, "IMMEDIATE");
_local1++;
}
}
function puzzleJ_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.flagActive == true) {
applyState_RGB(aSprite, 20, 80, 20, "IMMEDIATE");
applyState_RGB(aSprite, 660, 0, 0, "GRADUAL");
if (aSprite.flagLevel == 1) {
aSprite.flagLevel = 2;
aSprite.targetObject.shape.gotoAndPlay("1to2");
aSprite.targetShadow.gotoAndPlay("1to2");
} else {
aSprite.flagLevel = 1;
aSprite.targetObject.shape.gotoAndPlay("2to1");
aSprite.targetShadow.gotoAndPlay("2to1");
}
var _local2 = 0;
while (_local2 < sprites.items.length) {
var _local1 = sprites.items[_local2];
if (_local1.screenNumber != aSprite.screenNumber) {
if (_local1.flagActive == true) {
_local1.flagActive = false;
_local1.targetObject.shape.gotoAndPlay("doOff" + _local1.flagLevel);
_local1.targetShadow.gotoAndPlay("doOff" + _local1.flagLevel);
applyState_RGB(_local1, 20, 80, 20, "IMMEDIATE");
applyState_RGB(_local1, 660, 0, 0, "GRADUAL");
applytate_Rotation(_local1, -1, "RELATIVE");
if (((_local2 == 1) || (_local2 == 2)) || (_local2 == 3)) {
aSprite.flagLevel = 1;
} else {
aSprite.flagLevel = 2;
}
}
}
_local2++;
}
return(undefined);
}
if (puzzleConfig.currentSprite == null) {
aSprite.flagActive = true;
aSprite.targetObject.shape.gotoAndPlay("doOn" + aSprite.flagLevel);
aSprite.targetShadow.gotoAndPlay("doOn" + aSprite.flagLevel);
puzzleConfig.currentSprite = aSprite;
applyState_RGB(aSprite, 20, 80, 20, "IMMEDIATE");
applyState_RGB(aSprite, 660, 0, 0, "GRADUAL");
return(undefined);
}
trace((((("XXXX " + (aSprite == puzzleConfig.currentSprite)) + " 111 ") + aSprite.flagLevel) + " 222 ") + puzzleConfig.currentSprite.flagLevel);
if ((aSprite.shapeId == puzzleConfig.currentSprite.shapeId) && (aSprite.flagLevel == puzzleConfig.currentSprite.flagLevel)) {
aSprite.flagActive = true;
aSprite.targetObject.shape.gotoAndPlay("doOn" + aSprite.flagLevel);
aSprite.targetShadow.gotoAndPlay("doOn" + aSprite.flagLevel);
puzzleConfig.currentSprite = null;
} else {
puzzleConfig.currentSprite = aSprite;
aSprite.flagActive = true;
aSprite.targetObject.shape.gotoAndPlay("doOn" + aSprite.flagLevel);
aSprite.targetShadow.gotoAndPlay("doOn" + aSprite.flagLevel);
var _local2 = 0;
while (_local2 < sprites.items.length) {
var _local1 = sprites.items[_local2];
if (_local1 != aSprite) {
if (_local1.flagActive == true) {
_local1.flagActive = false;
_local1.targetObject.shape.gotoAndPlay("doOff" + _local1.flagLevel);
_local1.targetShadow.gotoAndPlay("doOff" + _local1.flagLevel);
applyState_RGB(_local1, 20, 80, 20, "IMMEDIATE");
applyState_RGB(_local1, 600, 0, 0, "GRADUAL");
applytate_Rotation(_local1, -1, "RELATIVE");
}
}
_local2++;
}
}
applyState_RGB(aSprite, 20, 80, 20, "IMMEDIATE");
applyState_RGB(aSprite, 600, 0, 0, "GRADUAL");
var _local2 = 0;
while (_local2 < sprites.items.length) {
var _local1 = sprites.items[_local2];
trace((((("TESTING SPRITE " + _local2) + " ") + _local1) + " = ") + _local1.flagActive);
if (_local1.flagActive == false) {
return(undefined);
}
_local2++;
}
handlePuzzleSolved();
}
function setupPuzzle_K() {
puzzleConfig.currentSprite = null;
aShapeArray = [x, 1, 2, 3, 2, 1, 3];
aCounter = 0;
var _local1 = 1;
while (_local1 <= 6) {
aCounter++;
tx = 0;
ty = 0;
aShape = "shapeK" + aShapeArray[aCounter];
aSprite = sprites.addSprite(new sprite("guffinx" + _local1, _local1, aShape, "blixA", tx, ty, depth, {r:0, g:100, b:0}));
aSprite.flagActive = false;
aSprite.flagMatched = false;
aSprite.targetObject.shape.gotoAndStop("stayOff");
aSprite.targetShadow.gotoAndStop("stayOff");
_local1++;
}
_local1 = 0;
while (_local1 < sprites.items.length) {
aSprite = sprites.items[_local1];
aSprite.x.maxSpeed = 10;
aSprite.y.maxSpeed = 10;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
aSprite.baseScaleX = 400;
aSprite.baseScaleY = 400;
applyState_RGB(aSprite, 0, 40, 0);
applyState_Alpha(aSprite, 60, "IMMEDIATE");
applyState_Rotation(aSprite, -1, "RELATIVE");
aSprite.flagActive = false;
_local1++;
}
}
function puzzleK_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.flagActive == true) {
var _local2 = 0;
while (_local2 < sprites.items.length) {
var _local1 = sprites.items[_local2];
if (_local1.flagActive == true) {
_local1.flagActive = false;
_local1.targetObject.shape.gotoAndPlay("doOff");
_local1.targetShadow.gotoAndPlay("doOff");
applyState_Rotation(_local1, -1, "RELATIVE");
}
_local2++;
}
return(undefined);
}
if (puzzleConfig.currentSprite == null) {
aSprite.flagActive = true;
aSprite.targetObject.shape.gotoAndPlay("doOn");
aSprite.targetShadow.gotoAndPlay("doOn");
applyState_Rotation(aSprite, -1, "RELATIVE");
puzzleConfig.currentSprite = aSprite;
} else if (aSprite.shapeId == puzzleConfig.currentSprite.shapeId) {
aSprite.flagActive = true;
aSprite.targetObject.shape.gotoAndPlay("doOn");
aSprite.targetShadow.gotoAndPlay("doOn");
applyState_Rotation(aSprite, 0, "RELATIVE");
applyState_Rotation(puzzleConfig.currentSprite, 0, "RELATIVE");
puzzleConfig.currentSprite = null;
} else {
puzzleConfig.currentSprite = aSprite;
aSprite.flagActive = true;
aSprite.targetObject.shape.gotoAndPlay("doOn");
aSprite.targetShadow.gotoAndPlay("doOn");
applyState_Rotation(aSprite, -1, "RELATIVE");
var _local2 = 0;
while (_local2 < sprites.items.length) {
var _local1 = sprites.items[_local2];
if (_local1 != aSprite) {
if (_local1.flagActive == true) {
_local1.flagActive = false;
_local1.targetObject.shape.gotoAndPlay("doOff");
_local1.targetShadow.gotoAndPlay("doOff");
applyState_Rotation(_local1, -1, "RELATIVE");
}
}
_local2++;
}
}
aSprite.z.currentValue = 25;
aSprite.z.changeTo = 20;
aSprite.z.changeMode = "GRADUAL";
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite, 0, 40, 0, "GRADUAL");
var _local2 = 0;
while (_local2 < sprites.items.length) {
var _local1 = sprites.items[_local2];
trace((((("TESTING SPRITE " + _local2) + " ") + _local1) + " = ") + _local1.flagActive);
if (_local1.flagActive == false) {
return(undefined);
}
_local2++;
}
handlePuzzleSolved();
}
function setupPuzzle_L() {
puzzleConfig.aReds = [100, 0, 100];
puzzleConfig.aGreens = [100, 100, 0];
puzzleConfig.aBlues = [0, 100, 100];
puzzleConfig.connections = [2, 3, 4, 5, 5, 1, 6, 7, 7, 8, 7, 9, 1, 10, 10, 11, 15, 12, 13, 14, 1, 5, 1, 8, 4, 14, 1, 3, 0, 0];
puzzleConfig.screenQuadrants = [1, 1, 1, 4, 1, 2, 4, 3, 2, 1, 2, 2, 3, 3, 3, 1, 1, 3, 2, 3, 3, 2, 4, 2, 3, 4, 2, 4, 5, 0];
puzzleConfig.currentSprite1 = null;
puzzleConfig.currentSprite2 = null;
ax = [0, -20, 20, -20, 20];
ay = [0, -20, -20, 20, 20];
aCounter = -1;
aColorCounter = 1;
i = 1;
while (i <= 4) {
var _local5 = _root.i3dStage["obj" + i].mc.texture.iPuzzleHolderBackground.puzzle;
_local5.iEye5._visible = false;
i++;
}
var _local5 = _root.i3dStage.obj6.mc.texture.iPuzzleHolderBackground.puzzle;
_local5.iEye1._visible = false;
_local5.iEye2._visible = false;
_local5.iEye3._visible = false;
_local5.iEye4._visible = false;
_local5.iEye5._visible = false;
_local5 = _root.i3dStage.obj5.mc.texture.iPuzzleHolderBackground.puzzle;
_local5.iEye1._visible = false;
_local5.iEye2._visible = false;
_local5.iEye3._visible = false;
_local5.iEye4._visible = false;
var i = 1;
while (i <= (puzzleConfig.connections.length / 2)) {
aCounter++;
aScreen = puzzleConfig.screenQuadrants[aCounter * 2];
aQuadrant = puzzleConfig.screenQuadrants[(aCounter * 2) + 1];
tx = ax[aQuadrant];
ty = ay[aQuadrant];
depth = 0;
aShape = "shapeM1";
aSprite = sprites.addSprite(new sprite("guffinx" + i, aScreen, aShape, "blixA", tx, ty, depth, {r:0, g:50, b:0}));
aSprite.baseScaleX = 310;
aSprite.baseScaleY = 310;
aFrame = randomRange(1, 200);
aSprite.targetObject.shape.gotoAndPlay(aFrame);
aSprite.targetShadow.gotoAndPlay(aFrame);
aSprite.targetObject.shape.gotoAndStop("stayOpen");
aSprite.targetShadow.gotoAndStop("stayOpen");
applyState_Orbit(aSprite, tx, ty, 3, 0.02, (1.0471975511966 * t) * 2);
applyValueState_Sin(aSprite.rotation, 0, 0.02, 10, randomRange(1, 100));
aSprite.flagCounter = aCounter;
aSprite.scaleX.maxSpeed = 6;
aSprite.scaleY.maxSpeed = 6;
aSprite.alpha.maxSpeed = 2;
aSprite.z.maxSpeed = 6;
aColorCounter++;
if (aColorCounter > 3) {
aColorCounter = 1;
}
applyState_RGB(aSprite, puzzleConfig.aReds[aColorCounter], puzzleConfig.aGreens[aColorCounter], puzzleConfig.aBlues[aColorCounter]);
puzzleL_eyeOn(aSprite);
aSprite.scaleX.changeMode = "GRADUAL";
aSprite.scaleY.changeMode = "GRADUAL";
aSprite.z.changeMode = "GRADUAL";
if (aCounter == 0) {
puzzleL_eyeOn(aSprite);
puzzleConfig.currentSprite1 = aSprite;
} else {
applyState_Alpha(aSprite, 0, "IMMEDIATE");
puzzleL_eyeOff(aSprite);
}
if (i == 15) {
applyState_RGB(aSprite, 100, 100, 100);
aSprite.baseScaleX = 360;
aSprite.baseScaleY = 360;
}
i++;
}
}
function puzzleL_eyeOff(aSprite) {
aSprite.scaleX.changeMode = "GRADUAL";
aSprite.scaleY.changeMode = "GRADUAL";
aSprite.z.changeMode = "GRADUAL";
applyState_Alpha(aSprite, 0);
aSprite.z.changeTo = 100;
aSprite.scaleX.changeTo = 1;
aSprite.scaleY.changeTo = 1;
}
function puzzleL_eyeOn(aSprite) {
aSprite.scaleX.changeMode = "GRADUAL";
aSprite.scaleY.changeMode = "GRADUAL";
aSprite.z.changeMode = "GRADUAL";
applyState_Alpha(aSprite, 20);
aSprite.z.changeTo = 20;
aSprite.scaleX.changeTo = 100;
aSprite.scaleY.changeTo = 100;
}
function puzzleL_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if ((puzzleConfig.currentSprite1 != aSprite) && (puzzleConfig.currentSprite2 != aSprite)) {
return(undefined);
}
if (aSprite.flagCounter == 14) {
handlePuzzleSolved();
}
if (puzzleConfig.currentSprite1 != null) {
puzzleL_eyeOff(puzzleConfig.currentSprite1);
}
if (puzzleConfig.currentSprite2 != null) {
puzzleL_eyeOff(puzzleConfig.currentSprite2);
}
aFlag = aSprite.flagCounter;
var _local2 = puzzleConfig.connections[aFlag * 2];
var _local1 = puzzleConfig.connections[(aFlag * 2) + 1];
tmpSprite1 = sprites.items[_local2 - 1];
tmpSprite2 = sprites.items[_local1 - 1];
puzzleConfig.currentSprite1 = tmpSprite1;
puzzleConfig.currentSprite2 = tmpSprite2;
puzzleL_eyeOn(tmpSprite1);
puzzleL_eyeOn(tmpSprite2);
trace(aFlag);
trace("YAYAYAYAYAYAYAYAYA");
trace((((_local2 + " / ") + _local1) + " == ") + tmpSprite1);
}
function setupPuzzle_M() {
puzzleConfig.aReds = [50, 0, 0];
puzzleConfig.aGreens = [0, 50, 0];
puzzleConfig.aBlues = [0, 0, 50];
puzzleConfig.connections = [2, 3, 5, 1, 5, 6, 1, 8, 8, 1, 9, 10, 4, 1, 7, 9, 4, 1, 11, 12, 8, 1, 1, 13, 0, 0];
puzzleConfig.screens = [2, 2, 1, 3, 1, 4, 4, 1, 3, 4, 3, 2, 5];
puzzleConfig.currentSprite1 = null;
puzzleConfig.currentSprite2 = null;
aColorList = [1, 0, 0, 1, 1, 2, 1, 2, 0, 0, 2, 2, 4];
aCounter = -1;
aColorCounter = 1;
aDepthCounter = 0;
var _local6 = _root.i3dStage.obj6.mc.texture.iPuzzleHolderBackground.puzzle.iEye;
_local6._visible = false;
var _local2 = 1;
while (_local2 <= (puzzleConfig.connections.length / 2)) {
aCounter++;
aScreen = puzzleConfig.screens[aCounter];
tx = 0;
ty = 0;
depth = 0;
aShape = "shapeM1";
aSprite = sprites.addSprite(new sprite("guffinx" + _local2, aScreen, aShape, "blixA", tx, ty, depth, {r:0, g:50, b:0}));
aSprite.baseScaleX = 400;
aSprite.baseScaleY = 400;
applyState_Orbit(aSprite, tx, ty, 3, 0.02, (1.0471975511966 * t) * 2);
applyValueState_Sin(aSprite.rotation, 0, 0.02, 10, randomRange(1, 100));
aFrame = randomRange(1, 200);
aSprite.targetObject.shape.gotoAndPlay(aFrame);
aSprite.targetShadow.gotoAndPlay(aFrame);
aSprite.flagCounter = aCounter;
aSprite.scaleX.maxSpeed = 6;
aSprite.scaleY.maxSpeed = 6;
aSprite.alpha.maxSpeed = 2;
aSprite.z.maxSpeed = 6;
aColorCounter = aColorList[aCounter];
applyState_RGB(aSprite, puzzleConfig.aReds[aColorCounter], puzzleConfig.aGreens[aColorCounter], puzzleConfig.aBlues[aColorCounter]);
puzzleM_eyeOn(aSprite);
aSprite.flagDepth = 0 + (aColorCounter * 20);
aSprite.scaleX.changeMode = "GRADUAL";
aSprite.scaleY.changeMode = "GRADUAL";
aSprite.z.changeMode = "GRADUAL";
if (aCounter == 0) {
puzzleM_eyeOn(aSprite);
puzzleConfig.currentSprite1 = aSprite;
} else {
applyState_Alpha(aSprite, 0, "IMMEDIATE");
puzzleM_eyeOff(aSprite);
}
if (_local2 == 13) {
applyState_RGB(aSprite, 100, 100, 100);
aSprite.baseScaleX = 350;
aSprite.baseScaleY = 350;
aSprite.flagDepth = 90;
}
_local2++;
}
}
function puzzleM_eyeOff(aSprite) {
aSprite.scaleX.changeMode = "GRADUAL";
aSprite.scaleY.changeMode = "GRADUAL";
aSprite.z.changeMode = "GRADUAL";
applyState_Alpha(aSprite, 0);
aSprite.z.changeTo = 100;
aSprite.scaleX.changeTo = 1;
aSprite.scaleY.changeTo = 1;
}
function puzzleM_eyeOn(aSprite) {
aSprite.scaleX.changeMode = "GRADUAL";
aSprite.scaleY.changeMode = "GRADUAL";
aSprite.z.changeMode = "GRADUAL";
applyState_Alpha(aSprite, 20);
aSprite.z.changeTo = aSprite.flagDepth;
aSprite.scaleX.changeTo = 100;
aSprite.scaleY.changeTo = 100;
}
function puzzleM_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if ((puzzleConfig.currentSprite1 != aSprite) && (puzzleConfig.currentSprite2 != aSprite)) {
return(undefined);
}
if (aSprite.flagCounter == 12) {
handlePuzzleSolved();
}
if (puzzleConfig.currentSprite1 != null) {
puzzleL_eyeOff(puzzleConfig.currentSprite1);
}
if (puzzleConfig.currentSprite2 != null) {
puzzleL_eyeOff(puzzleConfig.currentSprite2);
}
aFlag = aSprite.flagCounter;
var _local2 = puzzleConfig.connections[aFlag * 2];
var _local1 = puzzleConfig.connections[(aFlag * 2) + 1];
tmpSprite1 = sprites.items[_local2 - 1];
tmpSprite2 = sprites.items[_local1 - 1];
puzzleConfig.currentSprite1 = tmpSprite1;
puzzleConfig.currentSprite2 = tmpSprite2;
puzzleL_eyeOn(tmpSprite1);
puzzleL_eyeOn(tmpSprite2);
trace(aFlag);
trace("YAYAYAYAYAYAYAYAYA");
trace((((_local2 + " / ") + _local1) + " == ") + tmpSprite1);
}
function setupPuzzle_S() {
aCounter = -1;
aShapeArray = [1, 3, 2, 4, 5, 6, 1, 4, 3, 2, 5, 6, 1, 5, 4, 3, 2, 6, 1, 2, 3, 4, 5];
var _local6 = 1;
while (_local6 <= 6) {
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
if (((_local1 == 0) && (_local2 == 0)) && (_local6 == 1)) {
} else {
aCounter++;
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
depth = 60;
aShapeName = "shapeS" + aShapeArray[aCounter];
aSprite = sprites.addSprite(new sprite((((("guffinx" + _local6) + "x") + _local2) + "y") + _local1, _local6, aShapeName, "blixA", tx, ty, depth, {r:20, g:110, b:0}));
aSprite.baseScaleX = 190;
aSprite.baseScaleY = 190;
aSprite.flagActive = false;
}
_local1++;
}
_local2++;
}
_local6++;
}
_local6 = 0;
while (_local6 <= sprites.items.length) {
aSprite = sprites.items[_local6];
aSprite.x.maxSpeed = 6;
aSprite.y.maxSpeed = 6;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
applyState_Alpha(aSprite, 30);
aSprite.flagActive = false;
_local6++;
}
}
function puzzleS_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.getMoving() == true) {
return(undefined);
}
moveSpriteToFreeSpace(aSprite, 100, 50);
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite, 20, 110, 0, "GRADUAL");
}
function puzzleS_sprite_stopMoving(aObj) {
aFlagSolved = true;
var _local3 = 1;
while (_local3 <= 6) {
tmpSprite = sprites.getSpriteAtXY(_local3, -25, -25);
if (tmpSprite == null) {
tmpSprite = sprites.getSpriteAtXY(_local3, 25, -25);
}
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
aSprite = sprites.getSpriteAtXY(_local3, tx, ty);
trace((("COMPARING " + tmpSprite.shapeId) + " to ") + aSprite.shapeId);
if (aSprite != null) {
if (aSprite.shapeId != tmpSprite.shapeId) {
aFlagSolved = false;
break;
}
}
_local1++;
}
_local2++;
}
_local3++;
}
if (aFlagSolved == true) {
handlePuzzleSolved();
}
}
function setupPuzzle_N() {
puzzleConfig.aReds = [100, 0, 0];
puzzleConfig.aGreens = [0, 100, 0];
puzzleConfig.aBlues = [0, 0, 100];
puzzleConfig.screenColorRanges = [];
puzzleConfig.screenColorRanges[1] = [0, 1, 2];
puzzleConfig.screenColorRanges[2] = [0, 1, 2];
puzzleConfig.screenColorRanges[3] = [0, 1, 2];
puzzleConfig.screenColorRanges[4] = [0, 1, 2];
puzzleConfig.screenColorRanges[5] = [0, 1, 2];
puzzleConfig.screenColorRanges[6] = [0, 1, 2];
ax = [x, 0, -20, 20];
ay = [y, -15, 20, 20];
aCounter = 0;
var _local2 = 1;
while (_local2 <= 6) {
var _local1 = 1;
while (_local1 <= 3) {
aCounter++;
tx = ax[_local1];
ty = ay[_local1];
depth = 10 + (_local1 * 15);
aShape = "shapeN" + _local1;
aSprite = sprites.addSprite(new sprite((("guffinx" + _local2) + "t") + _local1, _local2, aShape, "blixA", tx, ty, depth, {r:0, g:50, b:0}));
aSprite.baseScaleX = 130;
aSprite.baseScaleY = 130;
aSprite.flagMoving = true;
aSprite.flagNumber = aCounter;
aNum = randomRange(1, 10) / 15;
aNum2 = randomRange(1, 10) / 15;
applyValueState_Bounce(aSprite.x, -40, 40, aNum);
applyValueState_Bounce(aSprite.y, -40, 40, aNum2);
aRot = randomRange(0, 360);
aSprite.rotation.currentValue = aRot;
aRot = 2;
applyState_Rotation(aSprite, aRot, "RELATIVE");
aColorRange = puzzleConfig.screenColorRanges[aSprite.screenNumber];
aSprite.flagColor = randomRange(0, 1);
aIndex = aColorRange[aSprite.flagColor];
applyState_RGB(aSprite, puzzleConfig.aReds[aIndex], puzzleConfig.aGreens[aIndex], puzzleConfig.aBlues[aIndex]);
_local1++;
}
_local2++;
}
_local2 = 0;
while (_local2 <= sprites.items.length) {
aSprite = sprites.items[_local2];
applyState_Alpha(aSprite, 20);
_local2++;
}
}
function puzzleN_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
aColorRange = puzzleConfig.screenColorRanges[aSprite.screenNumber];
aSprite.flagColor = aSprite.flagColor + 1;
if (aSprite.flagColor == aColorRange.length) {
aSprite.flagColor = 0;
}
aIndex = aColorRange[aSprite.flagColor];
applyState_RGB(aSprite, puzzleConfig.aReds[aIndex], puzzleConfig.aGreens[aIndex], puzzleConfig.aBlues[aIndex]);
var _local2 = 0;
while (_local2 < sprites.items.length) {
tmpSprite = sprites.items[_local2];
if (tmpSprite.screenNumber == aSprite.screenNumber) {
tmpSprite.flagColor = tmpSprite.flagColor + 1;
if (tmpSprite.flagColor == aColorRange.length) {
tmpSprite.flagColor = 0;
}
aIndex = aColorRange[tmpSprite.flagColor];
applyState_RGB(tmpSprite, puzzleConfig.aReds[aIndex], puzzleConfig.aGreens[aIndex], puzzleConfig.aBlues[aIndex]);
}
_local2++;
}
applyState_Alpha(aSprite, 100, "IMMEDIATE");
applyState_Alpha(aSprite, 20, "GRADUAL");
_local2 = 0;
while (_local2 < sprites.items.length) {
tmpSprite = sprites.items[_local2];
var _local1 = 0;
while (_local1 < sprites.items.length) {
tmpSprite2 = sprites.items[_local1];
if (tmpSprite.shapeId == tmpSprite2.shapeId) {
if (tmpSprite.flagColor != tmpSprite2.flagColor) {
return(undefined);
}
}
_local1++;
}
_local2++;
}
tmpSprite1 = sprites.items[0];
tmpSprite2 = sprites.items[1];
tmpSprite3 = sprites.items[2];
if (tmpSprite1.flagColor == tmpSprite2.flagColor) {
return(undefined);
}
if (tmpSprite2.flagColor == tmpSprite3.flagColor) {
return(undefined);
}
if (tmpSprite3.flagColor == tmpSprite1.flagColor) {
return(undefined);
}
handlePuzzleSolved();
}
function setupPuzzle_R() {
puzzleConfig.aReds = [100, 0, 0, 50, 50, 0];
puzzleConfig.aGreens = [0, 100, 0, 0, 50, 50];
puzzleConfig.aBlues = [0, 0, 100, 50, 0, 50];
puzzleConfig.screenColorRanges = [];
puzzleConfig.screenColorRanges[1] = [0, 1, 2];
puzzleConfig.screenColorRanges[2] = [1, 3, 4];
puzzleConfig.screenColorRanges[3] = [1, 3, 5];
puzzleConfig.screenColorRanges[4] = [0, 2, 4];
puzzleConfig.screenColorRanges[5] = [0, 3, 5];
puzzleConfig.screenColorRanges[6] = [2, 4, 5];
ax = [x, 0, -20, 20];
ay = [y, -15, 20, 20];
aCounter = 0;
var _local2 = 1;
while (_local2 <= 6) {
var _local1 = 1;
while (_local1 <= 3) {
aColorRange = puzzleConfig.screenColorRanges[_local2];
aCounter++;
tx = ax[_local1];
ty = ay[_local1];
depth = 20;
aShapeNumber = aColorRange[_local1 - 1] + 1;
aShape = "shapeN" + aShapeNumber;
aSprite = sprites.addSprite(new sprite((("guffinx" + _local2) + "t") + _local1, _local2, aShape, "blixA", tx, ty, depth, {r:100, g:100, b:100}));
aSprite.baseScaleX = 125;
aSprite.baseScaleY = 125;
aSprite.flagMoving = true;
aSprite.flagNumber = aCounter;
aNum = randomRange(1, 10) / 15;
aNum2 = randomRange(1, 10) / 15;
aNum3 = randomRange(1, 10) / 5;
applyValueState_Bounce(aSprite.x, -40, 40, aNum);
applyValueState_Bounce(aSprite.y, -40, 40, aNum2);
aRot = randomRange(0, 360);
aSprite.rotation.currentValue = aRot;
aRot = 2;
applyState_Rotation(aSprite, aRot, "RELATIVE");
aSprite.flagColor = randomRange(0, 1);
aIndex = aColorRange[aSprite.flagColor];
aSprite.flagActualColor = aIndex;
applyState_RGB(aSprite, puzzleConfig.aReds[aIndex], puzzleConfig.aGreens[aIndex], puzzleConfig.aBlues[aIndex]);
_local1++;
}
_local2++;
}
_local2 = 0;
while (_local2 <= sprites.items.length) {
aSprite = sprites.items[_local2];
applyState_Alpha(aSprite, 20);
_local2++;
}
}
function puzzleR_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
aColorRange = puzzleConfig.screenColorRanges[aSprite.screenNumber];
aSprite.flagColor = aSprite.flagColor + 1;
if (aSprite.flagColor == aColorRange.length) {
aSprite.flagColor = 0;
}
aIndex = aColorRange[aSprite.flagColor];
aSprite.flagActualColor = aIndex;
applyState_RGB(aSprite, puzzleConfig.aReds[aIndex], puzzleConfig.aGreens[aIndex], puzzleConfig.aBlues[aIndex]);
var _local2 = 0;
while (_local2 < sprites.items.length) {
tmpSprite = sprites.items[_local2];
if (tmpSprite.screenNumber == aSprite.screenNumber) {
tmpSprite.flagColor = tmpSprite.flagColor + 1;
if (tmpSprite.flagColor == aColorRange.length) {
tmpSprite.flagColor = 0;
}
aIndex = aColorRange[tmpSprite.flagColor];
tmpSprite.flagActualColor = aIndex;
applyState_RGB(tmpSprite, puzzleConfig.aReds[aIndex], puzzleConfig.aGreens[aIndex], puzzleConfig.aBlues[aIndex]);
}
_local2++;
}
applyState_Alpha(aSprite, 100, "IMMEDIATE");
applyState_Alpha(aSprite, 20, "GRADUAL");
_local2 = 0;
while (_local2 < sprites.items.length) {
tmpSprite = sprites.items[_local2];
var _local1 = 0;
while (_local1 < sprites.items.length) {
tmpSprite2 = sprites.items[_local1];
trace((("COMPARING " + tmpSprite.shapeId) + " = ") + tmpSprite2.shapeId);
if (tmpSprite.shapeId == tmpSprite2.shapeId) {
trace((("> COLORS " + tmpSprite.flagActualColor) + " = ") + tmpSprite2.flagActualColor);
if (tmpSprite.flagActualColor != tmpSprite2.flagActualColor) {
trace("OH NO1");
return(undefined);
}
}
_local1++;
}
_local2++;
}
_local2 = 0;
while (_local2 <= 5) {
aMark = _local2 * 3;
tmpSprite1 = sprites.items[aMark + 0];
tmpSprite2 = sprites.items[aMark + 1];
tmpSprite3 = sprites.items[aMark + 2];
trace((((("COMPARING " + tmpSprite1.flagColor) + " = ") + tmpSprite2.flagColor) + " = ") + tmpSprite3.flagColor);
if (tmpSprite1.flagActualColor == tmpSprite2.flagActualColor) {
trace("OH NO2");
return(undefined);
}
if (tmpSprite2.flagActualColor == tmpSprite3.flagActualColor) {
trace("OH NO3");
return(undefined);
}
if (tmpSprite3.flagActualColor == tmpSprite1.flagActualColor) {
trace("OH NO4");
return(undefined);
}
_local2++;
}
handlePuzzleSolved();
}
function setupPuzzle_O() {
puzzleConfig.aDxs = [x, 2, 0, -2, 0, 2, 0];
puzzleConfig.aDys = [x, 0, -2, 0, 2, 0, -2];
var _local1 = 1;
while (_local1 <= 6) {
tx = 0;
ty = 0;
depth = (_local1 * 10) + 10;
aShape = "shapeO1";
aSprite = sprites.addSprite(new sprite((((("guffinx" + _local1) + "x") + ax) + "y") + ay, _local1, aShape, "blixA", tx, ty, depth, {r:100, g:100, b:100}));
aSprite.baseScaleX = 150;
aSprite.baseScaleY = 150;
aSprite.flagMoving = true;
aSprite.flagNumber = _local1;
aNum = randomRange(1, 9) / 7;
aNum2 = -(randomRange(1, 9) / 7);
puzzleConfig.aDxs[aSprite.flagNumber] = aNum;
puzzleConfig.aDys[aSprite.flagNumber] = aNum2;
puzzleO_setSpriteMoving(aSprite);
applyValueState_Sin(aSprite.z, 40, 0.05, 30, _local1);
_local1++;
}
_local1 = 0;
while (_local1 <= sprites.items.length) {
aSprite = sprites.items[_local1];
applyState_Alpha(aSprite, 20);
_local1++;
}
}
function puzzleO_setSpriteMoving(aSprite) {
aDx = puzzleConfig.aDxs[aSprite.flagNumber];
aDy = puzzleConfig.aDys[aSprite.flagNumber];
aRotation = puzzleConfig.aRotations[aSprite.flagNumber];
applyValueState_Transfer(aSprite.x, -60, 60, aDx, "TRANSFER");
applyValueState_Transfer(aSprite.y, -60, 60, aDy, "TRANSFER");
aAngle = getAngleFromPoint(aSprite.x.changeTo, aSprite.y.changeTo);
puzzleConfig.aDx[aSprite.flagNumber] = aSprite.x.changeTo;
puzzleConfig.aDy[aSprite.flagNumber] = aSprite.y.changTo;
applyState_Rotation(aSprite, aAngle, "GRADUAL");
}
function puzzleO_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
applyState_Alpha(aSprite, 100, "IMMEDIATE");
applyState_Alpha(aSprite, aSprite.alpha.lastValue, "GRADUAL");
if (aSprite.flagMoving == true) {
aSprite.flagMoving = false;
puzzleConfig.aDxs[aSprite.flagNumber] = aSprite.x.changeTo;
puzzleConfig.aDys[aSprite.flagNumber] = aSprite.y.changeTo;
applyState_Orbit(aSprite, aSprite.x.currentValue, aSprite.y.currentValue, randomRange(5, 5));
applyState_Rotation(aSprite, randomRange(1, 2), "RELATIVE");
} else {
aSprite.flagMoving = true;
puzzleO_setSpriteMoving(aSprite);
return(undefined);
}
var _local1 = ["x", "", "", "", "", "", ""];
i = 0;
while (i <= 5) {
tmpSprite = sprites.items[i];
_local1[tmpSprite.screenNumber] = _local1[tmpSprite.screenNumber] + tmpSprite.shapeId;
trace((((("TESTINGG " + i) + " ") + tmpSprite.screenNumber) + " / ") + _local1[tmpSprite.screenNumber]);
if (tmpSprite.flagMoving == true) {
break;
}
i++;
}
if ((((((_local1[1] == "shapeO1") && (_local1[2] == "shapeO1")) && (_local1[3] == "shapeO1")) && (_local1[4] == "shapeO1")) && (_local1[5] == "shapeO1")) && (_local1[6] == "shapeO1")) {
handlePuzzleSolved();
}
}
function setupPuzzle_P() {
puzzleConfig.aDxs = [];
puzzleConfig.aDys = [];
puzzleConfig.aRotations = [x, 90, 0, 270, 180, 90, 0];
ax = [x, 0, -20, 20];
ay = [y, -15, 20, 20];
aCounter = 0;
var _local2 = 1;
while (_local2 <= 6) {
var _local1 = 1;
while (_local1 <= 3) {
aCounter++;
tx = ax[_local1];
ty = ay[_local1];
depth = (aCounter * 5) + 5;
aShape = "shapeQ3";
aSprite = sprites.addSprite(new sprite((("guffinx" + _local2) + "t") + _local1, _local2, aShape, "blixA", tx, ty, depth, {r:100, g:100, b:100}));
aSprite.baseScaleX = 160;
aSprite.baseScaleY = 160;
aSprite.flagMoving = true;
aSprite.flagNumber = aCounter;
aNum = randomRange(2, 9) / 7;
aNum2 = -(randomRange(2, 9) / 7);
puzzleConfig.aDxs[aSprite.flagNumber] = aNum;
puzzleConfig.aDys[aSprite.flagNumber] = aNum2;
puzzleP_setSpriteMoving(aSprite);
applyValueState_Sin(aSprite.z, 40, 0.05, 30, _local2);
_local1++;
}
_local2++;
}
_local2 = 0;
while (_local2 <= sprites.items.length) {
aSprite = sprites.items[_local2];
applyState_Alpha(aSprite, 20);
_local2++;
}
}
function puzzleP_setSpriteMoving(aSprite) {
flagNumber = aSprite.flagNumber;
aDx = puzzleConfig.aDxs[aSprite.flagNumber];
aDy = puzzleConfig.aDys[aSprite.flagNumber];
aRotation = puzzleConfig.aRotations[aSprite.flagNumber];
applyValueState_Transfer(aSprite.x, -60, 60, aDx, "TRANSFER");
applyValueState_Transfer(aSprite.y, -60, 60, aDy, "TRANSFER");
aAngle = getAngleFromPoint(aSprite.x.changeTo, aSprite.y.changeTo);
puzzleConfig.aDx[aSprite.flagNumber] = aSprite.x.changeTo;
puzzleConfig.aDy[aSprite.flagNumber] = aSprite.y.changTo;
applyState_Rotation(aSprite, aAngle, "GRADUAL");
}
function puzzleP_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
applyState_Alpha(aSprite, 100, "IMMEDIATE");
applyState_Alpha(aSprite, aSprite.alpha.lastValue, "GRADUAL");
if (aSprite.flagMoving == true) {
aSprite.flagMoving = false;
puzzleConfig.aDxs[aSprite.flagNumber] = aSprite.x.changeTo;
puzzleConfig.aDys[aSprite.flagNumber] = aSprite.y.changeTo;
applyState_Orbit(aSprite, aSprite.x.currentValue, aSprite.y.currentValue, randomRange(5, 5));
applyState_Rotation(aSprite, randomRange(1, 2), "RELATIVE");
} else {
aSprite.flagMoving = true;
puzzleO_setSpriteMoving(aSprite);
return(undefined);
}
var _local1 = [x, 0, 0, 0, 0, 0, 0];
var _local2 = false;
i = 0;
while (i < sprites.items.length) {
tmpSprite = sprites.items[i];
_local1[tmpSprite.screenNumber]++;
if (tmpSprite.flagMoving == true) {
_local2 = true;
break;
}
i++;
}
if ((((((_local1[1] == 3) && (_local1[2] == 3)) && (_local1[3] == 3)) && (_local1[4] == 3)) && (_local1[5] == 3)) && (_local1[6] == 3)) {
if (_local2 == false) {
handlePuzzleSolved();
}
}
}
function setupPuzzle_Q() {
puzzleConfig.aDxs = [];
puzzleConfig.aDys = [];
ax = [x, 0, -5, 5];
ay = [y, -5, 5, 5];
aCounter = 0;
var _local2 = 1;
while (_local2 <= 6) {
var _local1 = 1;
while (_local1 <= 3) {
aCounter++;
tx = ax[_local1];
ty = ay[_local1];
depth = (aCounter * 5) + 5;
aShape = "shapeQ" + _local1;
aSprite = sprites.addSprite(new sprite((("guffinx" + _local2) + "t") + _local1, _local2, aShape, "blixA", tx, ty, depth, {r:100, g:100, b:100}));
aSprite.baseScaleX = 140;
aSprite.baseScaleY = 140;
aSprite.flagMoving = true;
aSprite.flagNumber = aCounter;
aNum = randomRange(1, 9) / 7;
aNum2 = -(randomRange(1, 9) / 7);
puzzleConfig.aDxs[aSprite.flagNumber] = aNum;
puzzleConfig.aDys[aSprite.flagNumber] = aNum2;
puzzleQ_setSpriteMoving(aSprite);
_local1++;
}
_local2++;
}
_local2 = 0;
while (_local2 <= sprites.items.length) {
aSprite = sprites.items[_local2];
applyState_Alpha(aSprite, 20);
_local2++;
}
}
function puzzleQ_setSpriteMoving(aSprite) {
aDx = puzzleConfig.aDxs[aSprite.flagNumber];
aDy = puzzleConfig.aDys[aSprite.flagNumber];
aRotation = puzzleConfig.aRotations[aSprite.flagNumber];
applyValueState_Transfer(aSprite.x, -60, 60, aDx, "TRANSFER");
applyValueState_Transfer(aSprite.y, -60, 60, aDy, "TRANSFER");
aAngle = getAngleFromPoint(aSprite.x.changeTo, aSprite.y.changeTo);
puzzleConfig.aDx[aSprite.flagNumber] = aSprite.x.changeTo;
puzzleConfig.aDy[aSprite.flagNumber] = aSprite.y.changTo;
applyState_Rotation(aSprite, aAngle, "GRADUAL");
}
function puzzleQ_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
applyState_Alpha(aSprite, 100, "IMMEDIATE");
applyState_Alpha(aSprite, aSprite.alpha.lastValue, "GRADUAL");
if (aSprite.flagMoving == true) {
aSprite.flagMoving = false;
applyValueState_Sin(aSprite.scaleX, 100, 0.25, 5, 0);
applyValueState_Sin(aSprite.scaleY, 100, 0.25, 5, 1.6);
puzzleConfig.aDxs[aSprite.flagNumber] = aSprite.x.changeTo;
puzzleConfig.aDys[aSprite.flagNumber] = aSprite.y.changeTo;
applyState_Orbit(aSprite, aSprite.x.currentValue, aSprite.y.currentValue, randomRange(5, 5));
applyState_Rotation(aSprite, randomRange(1, 2), "RELATIVE");
} else {
aSprite.flagMoving = true;
puzzleQ_setSpriteMoving(aSprite);
return(undefined);
}
var _local1 = ["x", "", "", "", "", "", ""];
i = 0;
while (i < sprites.items.length) {
tmpSprite = sprites.items[i];
if (tmpSprite.flagMoving == true) {
return(undefined);
}
_local1[tmpSprite.screenNumber] = _local1[tmpSprite.screenNumber] + tmpSprite.shapeId;
i++;
}
var i = 1;
while (i <= 6) {
aText = _local1[i];
trace("test 3 2 " + aText);
if (((aText.indexOf("shapeQ1") > -1) && (aText.indexOf("shapeQ2") > -1)) && (aText.indexOf("shapeQ3") > -1)) {
} else {
return(undefined);
}
i++;
}
if ((((((_local1[1].length == 21) && (_local1[2].length == 21)) && (_local1[3].length == 21)) && (_local1[4].length == 21)) && (_local1[5].length == 21)) && (_local1[6].length == 21)) {
handlePuzzleSolved();
}
}
function setupPuzzle_T() {
aCounter = -1;
aRotArray = [90, 180, 90, 270, 270];
var _local1 = 1;
while (_local1 <= 5) {
aCounter++;
tx = 0;
ty = 0;
aRotation = aRotArray[aCounter];
aSprite = sprites.addSprite(new sprite("guffinx" + _local1, _local1, "shapeT1", "blixA", tx, ty, depth, {r:100, g:100, b:100}));
aSprite.rotation.currentValue = aRotArray[aCounter];
_local1++;
}
_local1 = 0;
while (_local1 <= sprites.items.length) {
aSprite = sprites.items[_local1];
aSprite.x.maxSpeed = 10;
aSprite.y.maxSpeed = 10;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
aSprite.baseScaleX = 600;
aSprite.baseScaleY = 600;
applyState_RGB(aSprite, 50, 10, 100, "IMMEDIATE");
applyState_Alpha(aSprite, 15, "IMMEDIATE");
applyValueState_Sin(aSprite.z, 10, 0.1, 10, 1.0471975511966 * _local1);
aSprite.flagActive = false;
_local1++;
}
}
function puzzleT_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
moveSpriteToFreeSpace(aSprite, 110, 110);
applyState_RGB(aSprite, 0, 0, 100, "IMMEDIATE");
applyState_RGB(aSprite, 50, 10, 100);
}
function puzzleT_sprite_stopMoving(aObj) {
aFlagSolved = true;
var _local1 = 1;
while (_local1 <= 6) {
tmpSprite = sprites.getSpriteAtXY(_local1, 0, 0);
trace("LAL" + tmpSprite);
if (tmpSprite != null) {
aRot = getRangedValue(tmpSprite.rotation.currentValue, 360);
tmpSprite.rotation.currentValue = aRot;
if (tmpSprite.rotation.currentValue != 0) {
aFlagSolved = false;
}
}
_local1++;
}
if (aFlagSolved == true) {
handlePuzzleSolved();
}
}
function setupPuzzle_U() {
aCounter = -1;
aRotArray = [0, 180, 270, 90, 0, 180, 270, 90, 90, 270, 180, 180, 90, 270, 270, 180, 90, 270, 0, 180, 270, 90, 0];
var _local6 = 1;
while (_local6 <= 6) {
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
if (((_local1 == 0) && (_local2 == 0)) && (_local6 == 1)) {
} else {
aCounter++;
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
depth = 20;
rot = aRotArray[aCounter];
aShapeName = "shapeS" + aShapeArray[aCounter];
aSprite = sprites.addSprite(new sprite((((("guffinx" + _local6) + "x") + _local2) + "y") + _local1, _local6, "shapeU1", "blixA", tx, ty, depth, {r:0, g:0, b:100}));
aSprite.baseScaleX = 240;
aSprite.baseScaleY = 240;
aSprite.flagActive = false;
aSprite.rotation.currentValue = aRotArray[aCounter];
}
_local1++;
}
_local2++;
}
_local6++;
}
_local6 = 0;
while (_local6 <= sprites.items.length) {
aSprite = sprites.items[_local6];
aSprite.x.maxSpeed = 6;
aSprite.y.maxSpeed = 6;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
applyState_RGB(aSprite, 100, 0, 0);
applyState_Alpha(aSprite, 20);
aSprite.flagActive = false;
_local6++;
}
}
function puzzleU_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.getMoving() == true) {
return(undefined);
}
moveSpriteToFreeSpace(aSprite, 100, 50);
aSprite.z.currentValue = 60;
aSprite.z.changeTo = 20;
aSprite.z.changeMode = "GRADUAL";
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite, 100, 0, 0, "GRADUAL");
}
function puzzleU_sprite_stopMoving(aObj) {
aWallSolution = [0, 270, 90, 180];
aFlagSolved = true;
var _local3 = 1;
while (_local3 <= 6) {
aCounter = 0;
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
aRot = aWallSolution[aCounter];
aCounter++;
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
aSprite = sprites.getSpriteAtXY(_local3, tx, ty);
if (aSprite != null) {
aSprite.rotation.currentValue = getRangedValue(aSprite.rotation.currentValue, 360);
if (aSprite.rotation.currentValue != aRot) {
aFlagSolved = false;
break;
}
}
_local1++;
}
_local2++;
}
_local3++;
}
if (aFlagSolved == true) {
handlePuzzleSolved();
}
}
function setupPuzzle_V() {
aCounter = -1;
aRotArray = [90, 0, 270, 0, 270, 270, 90, 90, 0, 270, 180, 90, 180, 0, 180, 0, 0, 0, 0, 90, 0, 0, 270];
aShapeArray = [4, 5, 2, 6, 4, 5, 2, 1, 6, 3, 6, 4, 3, 6, 1, 3, 3, 2, 5, 4, 2, 1, 5];
aWallSolution = [0, 270, 90, 180];
var _local6 = 1;
while (_local6 <= 6) {
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
if (((_local1 == 0) && (_local2 == 0)) && (_local6 == 1)) {
} else {
aCounter++;
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
depth = 20;
rot = aRotArray[aCounter];
aShapeName = "shapeV" + aShapeArray[aCounter];
aSprite = sprites.addSprite(new sprite((((("guffinx" + _local6) + "x") + _local2) + "y") + _local1, _local6, aShapeName, "blixA", tx, ty, depth, {r:100, g:100, b:100}));
aSprite.baseScaleX = 240;
aSprite.baseScaleY = 240;
aSprite.flagActive = false;
aSprite.rotation.currentValue = rot;
}
_local1++;
}
_local2++;
}
_local6++;
}
_local6 = 0;
while (_local6 <= sprites.items.length) {
aSprite = sprites.items[_local6];
aSprite.x.maxSpeed = 6;
aSprite.y.maxSpeed = 6;
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
applyState_RGB(aSprite, 100, 0, 0);
applyState_Alpha(aSprite, 20);
aSprite.flagActive = false;
_local6++;
}
}
function puzzleV_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
if (aSprite.getMoving() == true) {
return(undefined);
}
moveSpriteToFreeSpace(aSprite, 100, 50);
aSprite.z.currentValue = 25;
aSprite.z.changeTo = 20;
aSprite.z.changeMode = "GRADUAL";
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite, 100, 0, 0, "GRADUAL");
}
function puzzleV_sprite_stopMoving(aObj) {
aFlagSolved = true;
aWallSolution = [0, 270, 90, 180];
var _local3 = 1;
while (_local3 <= 6) {
aCounter = 0;
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
aRot = aWallSolution[aCounter];
aCounter++;
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
aSprite = sprites.getSpriteAtXY(_local3, tx, ty);
if (aSprite != null) {
aSprite.rotation.currentValue = getRangedValue(aSprite.rotation.currentValue, 360);
if (aSprite.rotation.currentValue != aRot) {
return(undefined);
}
}
_local1++;
}
_local2++;
}
_local3++;
}
aFlagSolved = true;
_local3 = 1;
while (_local3 <= 6) {
tmpSprite = sprites.getSpriteAtXY(_local3, -25, -25);
if (tmpSprite == null) {
tmpSprite = sprites.getSpriteAtXY(_local3, 25, -25);
}
var _local2 = 0;
while (_local2 <= 1) {
var _local1 = 0;
while (_local1 <= 1) {
tx = -25 + (50 * _local2);
ty = -25 + (50 * _local1);
aSprite = sprites.getSpriteAtXY(_local3, tx, ty);
trace((("COMPARING " + tmpSprite.shapeId) + " to ") + aSprite.shapeId);
if (aSprite != null) {
if (aSprite.shapeId != tmpSprite.shapeId) {
return(undefined);
}
}
_local1++;
}
_local2++;
}
_local3++;
}
handlePuzzleSolved();
}
function setupPuzzle_Z() {
var _local4 = [-1, 0, 0, 0, 0, 0, 0];
var _local3 = [-1, 0, 0, 0, 0, 0, 0];
var _local6 = 0;
var _local11 = ["NULL", "GREEN", "RED", "YELLOW", "BLUE", "CYAN", "MAGENTA"];
var _local2 = 1;
while (_local2 <= 6) {
aPlanet = allPlanets[_local2];
var _local5 = projectors[_local2].doUpdate();
aRoom = rooms[projectors[_local2].roomNumber];
if ((aRoom.solved == true) && (_local5 == _local11[_local2])) {
_local4[_local2] = "shapeZ3";
_local3[_local2] = "shapeZ4";
_local6++;
} else {
_local4[_local2] = "shapeZ2";
_local3[_local2] = "shapeZ1";
}
_local2++;
}
var _local12 = [-1, 0, 100, 100, 0, 0, 100];
var _local13 = [-1, 100, 0, 100, 0, 100, 0];
var _local10 = [-1, 0, 0, 0, 100, 100, 100];
var _local15 = [33, 2, 2, -1.2, 0, -1.3, -2];
var _local14 = [33, 0, -2, 0, 1, 0, 0];
_local2 = 1;
while (_local2 <= 6) {
x = 0;
y = 0;
depth = randomRange(50, 100);
shape = _local4[_local2];
aSprite = sprites.addSprite(new sprite("planet" + _local2, _local2, shape, "blixA", x, y, depth, {r:100, g:100, b:100}));
aNum = _local15[_local2] * 2;
aNum2 = _local14[_local2] * 2;
applyValueState_Transfer(aSprite.x, -60, 60, aNum, "TRANSFER");
applyValueState_Transfer(aSprite.y, -60, 60, aNum2, "TRANSFER");
red = _local12[_local2];
grn = _local13[_local2];
blu = _local10[_local2];
applyState_RGB(aSprite, red, grn, blu);
applyState_Alpha(aSprite, 15);
aSprite.baseScaleX = 140;
aSprite.baseScaleY = 140;
_local2++;
}
_local2 = 1;
while (_local2 <= 6) {
shape = _local3[_local2];
aSprite = sprites.addSprite(new sprite("sun" + _local2, 1, shape, "blixA", 0, 0, -(_local2 * 2), {r:100, g:100, b:100}));
if (shape == "shapeZ4") {
aSprite.z.changeTo = 300 - (Math.pow(_local2, 1.7) * 27);
aSprite.z.changeMode = "GRADUAL";
alpha = 10 + ((_local2 / 6) * 20);
applyState_Alpha(aSprite, alpha);
} else {
applyState_Alpha(aSprite, 100);
}
maxRadius = 3;
radius = maxRadius - ((_local2 / 6) * maxRadius);
applyState_Orbit(aSprite, 0, 0, radius, 0.1, 1.0471975511966 * _local2);
applyState_RGB(aSprite, 100, 100, 100);
applyValueState_Sin(aSprite.rotation, _local2 * 60, 0.05, 100, _local2 * 0.5);
applyValueState_Sin(aSprite.scaleX, 100, 0.08, 14, _local2 * 0.5);
applyValueState_Sin(aSprite.scaleY, 100, 0.06, 14, _local2 * 0.5);
aSprite.baseScaleX = 220;
aSprite.baseScaleY = 220;
_local2++;
}
if (_local6 == 6) {
_local2 = 1;
while (_local2 <= 6) {
aSprite = sprites.getSprite("sun" + _local2);
_local2++;
}
}
_local2 = 1;
while (_local2 <= 6) {
clip = _root.i3dStage["obj" + _local2].mc.texture.iPuzzleHolderBackground.puzzle;
clip.iZDoor._visible = false;
if ((_local2 == 1) && (_local6 == 6)) {
clip.iZDoor._visible = true;
}
_local2++;
}
}
function puzzleZ_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
screenNumber = aSprite.screenNumber;
}
function setupPuzzle_HINT() {
aRoom = rooms[currentRoomNumber];
var _local1 = 1;
while (_local1 <= 6) {
if ((aRoom.walls[_local1].textureName.indexOf("Door") > -1) || (aRoom.walls[_local1].textureName.indexOf("Spyhole") > -1)) {
aCoordsBeyond = getCoordsFromDirection(currentRoom, _local1);
aRoomNumberBeyond = getRoomNumber(aCoordsBeyond);
aRoomBeyond = rooms[aRoomNumberBeyond];
aSprite1 = sprites.addSprite(new sprite("guffinx1" + _local1, _local1, "shapeHINT1", "blixA", 0, 0, 0, {r:100, g:0, b:0}));
aSprite2 = sprites.addSprite(new sprite("guffinx2" + _local1, _local1, "shapeHINT1", "blixA", 0, 0, 0, {r:0, g:100, b:0}));
aSprite3 = sprites.addSprite(new sprite("guffinx3" + _local1, _local1, "shapeHINT1", "blixA", 0, 0, 0, {r:0, g:0, b:100}));
aSprite1.targetObject.shape.gotoAndStop(aCoordsBeyond.x);
aSprite2.targetObject.shape.gotoAndStop(aCoordsBeyond.y);
aSprite3.targetObject.shape.gotoAndStop(aCoordsBeyond.z);
aSprite1.rotation.currentValue = 0;
aSprite2.rotation.currentValue = 120;
aSprite3.rotation.currentValue = 240;
applyState_Rotation(aSprite1, -2);
applyState_Rotation(aSprite2, -2);
applyState_Rotation(aSprite3, -2);
applyState_Alpha(aSprite1, 30);
applyState_Alpha(aSprite2, 30);
applyState_Alpha(aSprite3, 30);
aSprite1.baseScaleX = 140;
aSprite1.baseScaleY = 140;
aSprite2.baseScaleX = 140;
aSprite2.baseScaleY = 140;
aSprite3.baseScaleX = 140;
aSprite3.baseScaleY = 140;
var _local3 = true;
if (currentRoomNumber == 13) {
var _local4 = ["NULL", "GREEN", "RED", "YELLOW", "BLUE", "CYAN", "MAGENTA"];
_local1 = 1;
while (_local1 <= 6) {
aPlanet = allPlanets[_local1];
var _local2 = projectors[_local1].doUpdate();
aRoom = rooms[projectors[_local1].roomNumber];
if ((aRoom.solved == true) && (_local2 == _local4[_local1])) {
} else {
_local3 = false;
}
_local1++;
}
}
if ((aRoomBeyond.solved == false) || (_local3 == false)) {
aSprite4 = sprites.addSprite(new sprite("guffinx4" + _local1, _local1, "shapeHINTUNSOLVED", "blixA", 0, 0, 40, {r:100, g:0, b:100}));
} else {
aSprite4 = sprites.addSprite(new sprite("guffinx4" + _local1, _local1, "shapeHINTSOLVED", "blixA", 0, 0, 40, {r:100, g:0, b:100}));
}
aSprite4.baseScaleX = 140;
aSprite4.baseScaleY = 140;
setTintCoords(aSprite4.targetObject, aCoordsBeyond);
applyState_Rotation(aSprite4, 1);
applyState_Alpha(aSprite4, 20);
} else {
aSprite1 = sprites.addSprite(new sprite("guffinx1" + _local1, _local1, "shapeHINTARROWS", "blixA", 0, 0, 0, {r:100, g:0, b:100}));
aSprite1.baseScaleX = 140;
aSprite1.baseScaleY = 140;
applyState_Alpha(aSprite1, 30);
if (((_local1 == 2) || (_local1 == 3)) || (_local1 == 5)) {
aSprite1.baseScaleY = -140;
}
}
_local1++;
}
}
function setupPuzzle_W() {
var _local4 = [0, 1, 4, 5, 6, 2, 3];
puzzleConfig.reds = [100, 204, 204, 0, 204, 0];
puzzleConfig.grns = [100, 0, 204, 153, 0, 31];
puzzleConfig.blus = [100, 0, 0, 31, 153, 204];
i = 1;
while (i <= 6) {
var _local3 = _root.i3dStage["obj" + i].mc.texture.iPuzzleHolderBackground;
_local3.puzzle.gotoAndStop(_local4[i]);
i++;
}
cz = -35;
d1 = 15;
d2 = 6;
z1 = 90;
z2 = 15;
grow = 1.22;
growz = 1.2;
d1 = d1 * grow;
d2 = d2 * grow;
z1 = z1 * growz;
z2 = z2 * growz;
i = 1;
aSprite = sprites.addSprite(new sprite("guffinS1x1", i, "shapeW1", "blixW2", -d1, d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS1x2", i, "shapeW1", "blixW2", d1, -d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS1x3", i, "shapeW1", "blixW2", -d2, d2, cz - z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS1x4", i, "shapeW1", "blixW2", d2, -d2, cz + z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS1x5", i, "shapeW1", "blixW2", -d1, d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS1x6", i, "shapeW1", "blixW2", d1, d1, cz + z1, {r:50, g:0, b:0}));
i = 2;
aSprite = sprites.addSprite(new sprite("guffinS2x1", i, "shapeW1", "blixW2", -d1, d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS2x2", i, "shapeW1", "blixW2", -d1, -d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS2x3", i, "shapeW1", "blixW2", -d2, d2, cz + z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS2x4", i, "shapeW1", "blixW2", d2, -d2, cz - z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS2x5", i, "shapeW1", "blixW2", d1, d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS2x6", i, "shapeW1", "blixW2", d1, d1, cz - z1, {r:50, g:0, b:0}));
i = 3;
aSprite = sprites.addSprite(new sprite("guffinS3x1", i, "shapeW1", "blixW2", d1, d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS3x2", i, "shapeW1", "blixW2", -d1, -d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS3x3", i, "shapeW1", "blixW2", d2, d2, cz + z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS3x4", i, "shapeW1", "blixW2", -d2, -d2, cz - z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS3x5", i, "shapeW1", "blixW2", d1, d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS3x6", i, "shapeW1", "blixW2", -d1, d1, cz - z1, {r:50, g:0, b:0}));
i = 4;
aSprite = sprites.addSprite(new sprite("guffinS4x1", i, "shapeW1", "blixW2", d1, d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS4x2", i, "shapeW1", "blixW2", d1, -d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS4x3", i, "shapeW1", "blixW2", d2, d2, cz - z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS4x4", i, "shapeW1", "blixW2", -d2, -d2, cz + z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS4x5", i, "shapeW1", "blixW2", -d1, d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS4x6", i, "shapeW1", "blixW2", -d1, d1, cz + z1, {r:50, g:0, b:0}));
i = 5;
aSprite = sprites.addSprite(new sprite("guffinS5x1", i, "shapeW1", "blixW2", d1, -d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS5x2", i, "shapeW1", "blixW2", -d1, -d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS5x3", i, "shapeW1", "blixW2", d2, -d2, cz + z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS5x4", i, "shapeW1", "blixW2", -d2, d2, cz - z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS5x5", i, "shapeW1", "blixW2", d1, d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS5x6", i, "shapeW1", "blixW2", -d1, d1, cz + z1, {r:50, g:0, b:0}));
i = 6;
aSprite = sprites.addSprite(new sprite("guffinS6x1", i, "shapeW1", "blixW2", -d1, -d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS6x2", i, "shapeW1", "blixW2", d1, -d1, cz + z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS6x3", i, "shapeW1", "blixW2", -d2, -d2, cz - z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS6x4", i, "shapeW1", "blixW2", d2, d2, cz + z2, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS6x5", i, "shapeW1", "blixW2", -d1, d1, cz - z1, {r:50, g:0, b:0}));
aSprite = sprites.addSprite(new sprite("guffinS6x6", i, "shapeW1", "blixW2", d1, d1, cz - z1, {r:50, g:0, b:0}));
var _local2 = -1;
i = 0;
while (i <= sprites.items.length) {
aSprite = sprites.items[i];
applyState_Alpha(aSprite, 45, "IMMEDIATE");
_local2 = _local2 + 1;
if (_local2 > 4) {
_local2 = 0;
}
_local2 = 5;
aRed = puzzleConfig.reds[_local2];
aGrn = puzzleConfig.grns[_local2];
aBlu = puzzleConfig.blus[_local2];
applyState_RGB(aSprite, aRed, aGrn, aBlu);
aSprite.baseScaleX = 160;
aSprite.baseScaleY = 160;
aSprite.flagColor = _local2;
i++;
}
}
function puzzleW_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
screenNumber = aSprite.screenNumber;
colorCounter = aSprite.flagColor;
colorCounter++;
if (colorCounter > 5) {
colorCounter = 0;
}
aRed = puzzleConfig.reds[colorCounter];
aGrn = puzzleConfig.grns[colorCounter];
aBlu = puzzleConfig.blus[colorCounter];
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite, aRed, aGrn, aBlu);
aSprite.flagColor = colorCounter;
aSprite.scaleX.currentValue = 200;
aSprite.scaleX.changeTo = 100;
aSprite.scaleX.maxSpeed = 10;
aSprite.scaleX.changeMode = "GRADUAL";
var _local2 = [];
i = 0;
while (i <= sprites.items.length) {
_local2[i] = sprites.items[i].flagColor;
i++;
}
var i = 1;
while (i <= 6) {
aName = "guffinS1x" + i;
aSprite = sprites.getSprite(aName);
var _local1 = 2;
while (_local1 <= 6) {
aName = (("guffinS" + _local1) + "x") + i;
tmpSprite = sprites.getSprite(aName);
trace((((i + " does ") + aSprite.flagColor) + " == ") + tmpSprite.flagColor);
if (tmpSprite.flagColor != aSprite.flagColor) {
return(undefined);
}
_local1++;
}
i++;
}
var _local3 = [false, false, false, false, false, false];
i = 0;
while (i <= _local2.length) {
_local3[_local2[i]] = true;
i++;
}
i = 0;
while (i <= 5) {
trace(((_local3[i] + " ") + i) + " is used");
if (_local3[i] == false) {
return(undefined);
}
i++;
}
handlePuzzleSolved();
}
function setupPuzzle_X() {
puzzleConfig.currentSprite = [];
puzzleConfig.correctSprite = [-1, 2, 3, 1, 5, 4, 6];
puzzleConfig.reds = [0, 100, 0, 0, 100];
puzzleConfig.grns = [0, 0, 100, 0, 50];
puzzleConfig.blus = [0, 0, 0, 100, 0];
puzzleConfig.winningCombination = [2, 1, 3, 4];
puzzleConfig.wallCombinations = [];
i = 1;
while (i <= 6) {
puzzleConfig.wallCombinations[i] = [1, 2, 3, 4];
i++;
}
var i = 1;
while (i <= 6) {
var _local1 = 1;
while (_local1 <= 4) {
aSprite = sprites.addSprite(new sprite((("guffinScreen" + i) + "Quad") + _local1, i, "shapeX1", "blixA", 0, 0, 40, {r:100, g:100, b:100}, 20, 100, 100));
aSprite.flagQuadrant = _local1;
aRot = (_local1 - 1) * 90;
applyState_Rotation(aSprite, aRot, "IMMEDIATE");
aSprite.baseScaleX = 650;
aSprite.baseScaleY = 650;
applyState_Alpha(aSprite, 25, "IMMEDIATE");
aCombo = puzzleConfig.wallCombinations[i];
aColor1 = aCombo[aSprite.flagQuadrant - 1];
applyState_RGB(aSprite, puzzleConfig.reds[aColor1], puzzleConfig.grns[aColor1], puzzleConfig.blus[aColor1]);
_local1++;
}
i++;
}
}
function puzzleX_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
screenNumber = aSprite.screenNumber;
aQuad = aSprite.flagQuadrant;
aTargetQuad = aQuad + 1;
if (aTargetQuad > 4) {
aTargetQuad = 1;
}
aTargetSprite = sprites.items[((screenNumber - 1) * 4) + (aTargetQuad - 1)];
aCombo = puzzleConfig.wallCombinations[screenNumber];
aColor1 = aCombo[aSprite.flagQuadrant - 1];
aColor2 = aCombo[aTargetQuad - 1];
aCombo[aSprite.flagQuadrant - 1] = aColor2;
aCombo[aTargetQuad - 1] = aColor1;
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aTargetSprite, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite, puzzleConfig.reds[aColor2], puzzleConfig.grns[aColor2], puzzleConfig.blus[aColor2]);
applyState_RGB(aTargetSprite, puzzleConfig.reds[aColor1], puzzleConfig.grns[aColor1], puzzleConfig.blus[aColor1]);
if (puzzleConfig.wallCombinations[1][0] != puzzleConfig.wallCombinations[5][0]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[1][1] != puzzleConfig.wallCombinations[2][3]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[1][2] != puzzleConfig.wallCombinations[6][0]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[1][3] != puzzleConfig.wallCombinations[4][1]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[2][0] != puzzleConfig.wallCombinations[5][3]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[2][1] != puzzleConfig.wallCombinations[3][3]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[2][2] != puzzleConfig.wallCombinations[6][1]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[3][0] != puzzleConfig.wallCombinations[5][2]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[3][1] != puzzleConfig.wallCombinations[4][3]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[3][2] != puzzleConfig.wallCombinations[6][2]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[4][0] != puzzleConfig.wallCombinations[5][1]) {
return(undefined);
}
if (puzzleConfig.wallCombinations[4][2] != puzzleConfig.wallCombinations[6][3]) {
return(undefined);
}
handlePuzzleSolved();
}
function setupPuzzle_Y() {
puzzleConfig.rotations = [-1, 180, 90, 270, 0, 90, 0];
var _local1 = 1;
while (_local1 <= 6) {
aSprite1 = sprites.addSprite(new sprite(("guffinScreen" + _local1) + "shape1", _local1, "shapeY1", "blixA", 0, 0, 40, {r:100, g:100, b:100}));
aSprite1.baseScaleX = 720;
aSprite1.baseScaleY = 720;
aSprite2 = sprites.addSprite(new sprite(("guffinScreen" + _local1) + "shape2", _local1, "shapeY2", "blixA", 0, 0, 40, {r:100, g:100, b:100}));
aSprite2.baseScaleX = 720;
aSprite2.baseScaleY = 720;
applyState_Alpha(aSprite1, 20, "IMMEDIATE");
applyState_Alpha(aSprite2, 20, "IMMEDIATE");
aSprite1.rotation.currentValue = puzzleConfig.rotations[_local1];
aSprite2.rotation.currentValue = puzzleConfig.rotations[_local1];
if (((_local1 == 1) || (_local1 == 4)) || (_local1 == 6)) {
applyState_RGB(aSprite1, 100, 50, 0);
applyState_RGB(aSprite2, 50, 0, 100);
aSprite.z.currentValue = 50;
} else {
applyState_RGB(aSprite2, 100, 50, 0);
applyState_RGB(aSprite1, 50, 0, 100);
aSprite.z.currentValue = 50;
}
_local1++;
}
}
function puzzleY_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
screenNumber = aSprite.screenNumber;
if ((aSprite.rotation.currentValue / 90) != int(aSprite.rotation.currentValue / 90)) {
return(undefined);
}
aSprite1 = sprites.getSprite(("guffinScreen" + screenNumber) + "shape1");
aSprite2 = sprites.getSprite(("guffinScreen" + screenNumber) + "shape2");
applyState_RGB(aSprite1, 100, 100, 100, "IMMEDIATE");
applyState_RGB(aSprite2, 100, 100, 100, "IMMEDIATE");
aRot = puzzleConfig.rotations[screenNumber];
aRot = aRot - 90;
if (aRot < 0) {
aRot = 270;
aSprite1.rotation.currentValue = 360;
aSprite2.rotation.currentValue = 360;
}
puzzleConfig.rotations[screenNumber] = aRot;
aSprite1.rotation.changeTo = aRot;
aSprite1.rotation.changeMode = "GRADUAL";
aSprite1.rotation.maxSpeed = 9;
aSprite2.rotation.changeTo = aRot;
aSprite2.rotation.changeMode = "GRADUAL";
aSprite2.rotation.maxSpeed = 9;
i = screenNumber;
if (((i == 1) || (i == 4)) || (i == 6)) {
applyState_RGB(aSprite1, 100, 50, 0);
applyState_RGB(aSprite2, 50, 0, 100);
} else {
applyState_RGB(aSprite2, 100, 50, 0);
applyState_RGB(aSprite1, 50, 0, 100);
}
if (puzzleConfig.rotations[1] != 0) {
return(undefined);
}
if (puzzleConfig.rotations[2] != 180) {
return(undefined);
}
if (puzzleConfig.rotations[3] != 90) {
return(undefined);
}
if (puzzleConfig.rotations[4] != 270) {
return(undefined);
}
if (puzzleConfig.rotations[5] != 0) {
return(undefined);
}
if (puzzleConfig.rotations[6] != 90) {
return(undefined);
}
handlePuzzleSolved();
}
function setupPuzzle_G() {
var _local3 = [0, 1, 4, 5, 6, 2, 3];
puzzleConfig.reds = [204, 204, 0, 204, 0];
puzzleConfig.grns = [0, 204, 153, 0, 31];
puzzleConfig.blus = [0, 0, 31, 153, 204];
i = 1;
while (i <= 6) {
var _local2 = _root.i3dStage["obj" + i].mc.texture.iPuzzleHolderBackground;
_local2.puzzle.gotoAndStop(_local3[i]);
i++;
}
dx = 17;
dy = 17;
i = 1;
aSprite = sprites.addSprite(new sprite("guffin0", i, "shapeG1", "blixA", -dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin1", i, "shapeG4", "blixA", dx, -dy, 35, {r:100, g:100, b:100}));
i = 2;
aSprite = sprites.addSprite(new sprite("guffin2", i, "shapeG1", "blixA", -dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin3", i, "shapeG1", "blixA", dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin4", i, "shapeG3", "blixA", -dx, dy, 35, {r:100, g:100, b:100}));
aSprite.rotation.currentValue = 270;
i = 3;
aSprite = sprites.addSprite(new sprite("guffin5", i, "shapeG1", "blixA", -dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin6", i, "shapeG1", "blixA", dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin7", i, "shapeG1", "blixA", dx, dy, 35, {r:100, g:100, b:100}));
i = 4;
aSprite = sprites.addSprite(new sprite("guffin8", i, "shapeG2", "blixA", 0, -dy, 35, {r:100, g:100, b:100}));
aSprite.rotation.currentValue = 270;
aSprite = sprites.addSprite(new sprite("guffin9", i, "shapeG2", "blixA", 0, dy, 35, {r:100, g:100, b:100}));
aSprite.rotation.currentValue = 270;
i = 5;
aSprite = sprites.addSprite(new sprite("guffin10", i, "shapeG3", "blixA", -dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin11", i, "shapeG2", "blixA", dx, 0, 35, {r:100, g:100, b:100}));
i = 6;
aSprite = sprites.addSprite(new sprite("guffin12", i, "shapeG1", "blixA", dx, -dy, 35, {r:100, g:100, b:100}));
aSprite = sprites.addSprite(new sprite("guffin13", i, "shapeG5", "blixA", -dx, 0, 35, {r:100, g:100, b:100}));
colorCounter = -1;
var i = 0;
while (i <= sprites.items.length) {
aSprite = sprites.items[i];
colorCounter++;
if (colorCounter > 4) {
colorCounter = 0;
}
aSprite.flagColor = colorCounter;
aSprite.baseScaleX = 450;
aSprite.baseScaleY = 450;
applyState_Orbit(aSprite, aSprite.x.currentValue, aSprite.y.currentValue, 0.4, 0.07, (Math.PI/2) * i);
applyState_Alpha(aSprite, 25);
applyState_RGB(aSprite, puzzleConfig.reds[colorCounter], puzzleConfig.grns[colorCounter], puzzleConfig.blus[colorCounter]);
aSprite.r.maxSpeed = 22;
aSprite.g.maxSpeed = 22;
aSprite.b.maxSpeed = 22;
i++;
}
}
function puzzleG_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
aSprite.flagColor++;
if (aSprite.flagColor > 4) {
aSprite.flagColor = 0;
}
aRed = puzzleConfig.reds[aSprite.flagColor];
aGreen = puzzleConfig.grns[aSprite.flagColor];
aBlue = puzzleConfig.blus[aSprite.flagColor];
applyState_RGB(aSprite, aRed, aGreen, aBlue);
var _local1 = [];
i = 0;
while (i <= 13) {
_local1[i] = sprites.items[i].flagColor;
i++;
}
if (_local1[1] != _local1[5]) {
return(undefined);
}
if (_local1[5] != _local1[8]) {
return(undefined);
}
if (_local1[8] != _local1[10]) {
return(undefined);
}
if (_local1[0] != _local1[6]) {
return(undefined);
}
if (_local1[6] != _local1[3]) {
return(undefined);
}
if (_local1[7] != _local1[12]) {
return(undefined);
}
if (_local1[12] != _local1[2]) {
return(undefined);
}
if (_local1[11] != _local1[13]) {
return(undefined);
}
if (_local1[13] != _local1[9]) {
return(undefined);
}
var _local2 = [false, false, false, false, false];
i = 0;
while (i <= 13) {
_local2[_local1[i]] = true;
i++;
}
i = 0;
while (i <= 5) {
if (_local2[i] == false) {
return(undefined);
}
i++;
}
handlePuzzleSolved();
}
function setupPuzzle_D() {
var _local5 = [0, -7, 7, -14, 0, 14];
var _local4 = [-14, 0, 0, 14, 14, 14];
var _local6 = [85, 70, 100, 55, 40, 25];
puzzleConfig.currentSprite = [-1, null, null, null, null, null, null];
puzzleConfig.correctSprite = [-1, 1, 3, 5, 2, 4, 6];
i = 1;
while (i <= 6) {
ii = 1;
while (ii <= 6) {
scale = 1.2;
x = _local5[ii - 1] * scale;
y = _local4[ii - 1] * scale;
depth = -10 + (ii * 10);
aSprite = sprites.addSprite(new sprite((("guffinS" + i) + "x") + ii, i, "shapeD1", "blixA", x, y, depth, {r:100, g:100, b:100}));
aSprite.flagZ = depth;
aSprite.flagNumber = ii;
aSprite.z.maxSpeed = 7;
applyState_Alpha(aSprite, 20);
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 2, 0.1, 1.0471975511966 * ii);
aSprite.baseScaleX = 85;
aSprite.baseScaleY = 85;
if (((ii == 1) || (ii == 3)) || (ii == 5)) {
applyState_Rotation(aSprite, 2, "RELATIVE");
} else {
applyState_Rotation(aSprite, -2, "RELATIVE");
}
if (puzzleConfig.correctSprite[i] == ii) {
aSprite.rotation.changeTo = -aSprite.rotation.changeTo;
}
ii++;
}
i++;
}
}
function puzzleD_sprite_onPress(aObj) {
screenNumber = aObj.targetSprite.screenNumber;
aSprite = aObj.targetSprite;
aSprite = puzzleConfig.currentSprite[screenNumber];
aSprite.z.changeTo = aSprite.flagZ;
applyState_RGB(aSprite, 100, 100, 100);
aSprite.rotation.changeTo = aSprite.rotation.changeTo / 2;
applyState_Alpha(aSprite, 20, "GRADUAL");
aSprite = aObj.targetSprite;
puzzleConfig.currentSprite[screenNumber] = aSprite;
applyState_Active(aSprite, -30);
applyState_RGB(aSprite, 20, 80, 0);
aSprite.rotation.changeTo = aSprite.rotation.changeTo * 2;
applyState_Alpha(aSprite, 100, "GRADUAL");
i = 1;
while (i <= 6) {
tmpSprite = puzzleConfig.currentSprite[i];
if (tmpSprite.flagNumber != puzzleConfig.correctSprite[i]) {
return(undefined);
}
i++;
}
handlePuzzleSolved();
}
function setupPuzzle_H() {
puzzleConfig.reds = [-1, 0, 0, 100, 100, 0, 100];
puzzleConfig.grns = [-1, 100, 0, 0, 100, 100, 0];
puzzleConfig.blus = [-1, 100, 100, 0, 0, 0, 100];
aCounter = 0;
var _local2 = 1;
while (_local2 <= 6) {
var _local1 = 1;
while (_local1 <= 4) {
aCounter++;
x = 0;
y = 0;
depth = 0;
if (_local1 == 1) {
shape = "shapeH2";
} else {
shape = "shapeH1";
}
id = (("guffinS" + _local2) + "X") + _local1;
trace("HERE " + sprites.items.length);
aSprite = sprites.addSprite(new sprite(id, _local2, shape, "blixA", x, y, depth, {r:100, g:100, b:100}));
aSprite.flagActive = false;
applyState_Alpha(aSprite, 15);
aSprite.z.maxSpeed = 12;
aSprite.baseScaleX = 20 + (_local1 * 40);
aSprite.baseScaleY = 20 + (_local1 * 40);
_local1++;
}
_local2++;
}
}
function puzzleH_sprite_onPress(aObj) {
aSprite = aObj.targetSprite;
screenNumber = aSprite.screenNumber;
if (aSprite.flagActive == true) {
return(undefined);
}
i = 1;
while (i <= 4) {
id = (("guffinS" + screenNumber) + "X") + i;
tmpSprite = sprites.getSprite(id);
tmpSprite.flagActive = true;
tmpSprite.z.changeTo = 0 + (Math.pow(6 - i, 1.5) * 23);
tmpSprite.z.changeMode = "GRADUAL";
red = puzzleConfig.reds[screenNumber];
grn = puzzleConfig.grns[screenNumber];
blu = puzzleConfig.blus[screenNumber];
applyState_RGB(tmpSprite, red, grn, blu);
applyValueState_Sin(tmpSprite.rotation, 0, 0.06, (5 - i) * 19);
alpha = 7 + ((i / 5) * 20);
applyState_Alpha(tmpSprite, alpha);
aObj = _root.i3dStage["obj" + screenNumber].mc.texture;
clip = aObj.iPuzzleHolderBackground;
maxRadius = 3;
radius = maxRadius - ((i / 6) * maxRadius);
_root.setTintRGB(clip, red, grn, blu, "GRADUAL");
i++;
}
var i = 0;
while (i < sprites.items.length) {
tmpSprite = sprites.items[i];
if (tmpSprite.flagActive == false) {
return(undefined);
}
i++;
}
handlePuzzleSolved();
}
function sprite(aId, aScreenNumber, shapeId, blixId, ax, ay, az, aColorObj, aRotation, aScaleX, aScaleY) {
if (!aRotation) {
aRotation = 0;
}
if (!aScaleX) {
aScaleX = 100;
}
if (!aScaleY) {
aScaleY = 100;
}
this.id = aId;
this.shapeId = shapeId;
this.blixId = blixId;
this.init = false;
this.spriteNumber = 0;
this.screenNumber = aScreenNumber;
this.visible = true;
this.active = true;
this.counter1 = 1;
this.colorObject = aColorObj;
this.r = new spriteDemon(aColorObj.r, "NONE");
this.g = new spriteDemon(aColorObj.g, "NONE");
this.b = new spriteDemon(aColorObj.b, "NONE");
this.x = new spriteDemon(ax, "NONE");
this.x.demonName = "x";
this.y = new spriteDemon(ay, "NONE");
this.y.demonName = "y";
this.z = new spriteDemon(az, "NONE");
this.x.maxSpeed = 2;
this.y.maxSpeed = 2;
this.alpha = new spriteDemon(60, "NONE");
this.rotation = new spriteDemon(aRotation, "NONE");
this.scaleX = new spriteDemon(100, "NONE");
this.scaleY = new spriteDemon(100, "NONE");
this.baseScaleX = aScaleX;
this.baseScaleY = aScaleY;
this.init = function () {
if (this.initialized == true) {
trace((("REMOVING from " + this.targetObject._parent) + " ... ") + this.id);
this.targetObject.removeMovieClip();
this.targetShadow.removeMovieClip();
}
this.parentObject = _root.i3dStage["obj" + (this.screenNumber + 7)].mc.texture.iPuzzleHolder;
this.targetObject = this.parentObject.attachMovie("objSprite", this.id, this.parentObject.getNextHighestDepth());
this.targetObject.targetSprite = this;
this.targetObject.attachMovie(this.shapeId, "shape", 1);
this.targetObject.attachMovie(this.blixId, "blix", 2);
this.targetObject.blix._xscale = this.targetObject.shape._xscale;
this.targetObject.blix._yscale = this.targetObject.shape._yscale;
this.targetObject.blix.setMask(this.targetObject.shape);
shadowParent = _root.i3dStage["obj" + this.screenNumber].mc.texture.iPuzzleHolderBackground.iDummy;
this.targetShadow = shadowParent.attachMovie(this.shapeId, this.id, shadowParent.getNextHighestDepth());
this.targetShadow._alpha = this.targetObject / 15;
this.targetShadow.targetSprite = this;
setTintRGB(this.targetShadow, this.colorObject.r / 20, this.colorObject.g / 20, this.colorObject.b / 20);
this.initialized = true;
};
this.deactivate = function () {
this.active = false;
this.targetObject._visible = false;
this.targetShadow._visible = false;
};
this.activate = function () {
this.active = true;
};
this.getMoving = function () {
if ((this.x.changeMode == "SIN") && (this.y.changeMode == "SIN")) {
return(false);
}
if ((this.x.currentValue == this.x.lastValue) && (this.y.currentValue == this.y.lastValue)) {
return(false);
}
return(true);
};
this.cloneForTransfer = function (cloneId) {
var _local2 = new sprite(cloneId, -this.screenNumber, "na", "na", this.x.currentValue, this.y.currentValue, this.depth.currentValue, this.colorObject, this.rotation.currentValue, this.scaleX.currentValue, this.scaleY.currentValue);
_local2.x.changeMode = this.x.changeMode;
_local2.x.minValue = this.x.minValue;
_local2.x.maxValue = this.x.maxValue;
_local2.x.speed = this.x.speed;
_local2.x.changeTo = this.x.changeTo;
_local2.y.changeMode = this.y.changeMode;
_local2.y.minValue = this.y.minValue;
_local2.y.maxValue = this.y.maxValue;
_local2.y.speed = this.y.speed;
_local2.y.changeTo = this.y.changeTo;
return(_local2);
};
this.render = function () {
if (this.active == false) {
return(undefined);
}
_root.currentSprite = this;
this.x.update();
this.y.update();
this.z.update();
if (this.moving == true) {
if (this.getMoving() == false) {
this.moving = false;
handleSprite_stopMoving(this);
}
}
this.r.update();
this.g.update();
this.b.update();
this.alpha.update();
this.rotation.update(this.screenNumber);
this.scaleX.update();
this.scaleY.update();
if (sprites.screenVisible[this.screenNumber] == false) {
return(undefined);
}
f = 0.2;
this.targetObject._x = this.x.currentValue;
this.targetObject._y = this.y.currentValue;
this.targetObject._rotation = this.rotation.currentValue;
this.targetObject.currentScaleX = (this.scaleX.currentValue / 100) * this.baseScaleX;
this.targetObject.currentScaleY = (this.scaleY.currentValue / 100) * this.baseScaleY;
this.targetObject._xscale = this.targetObject.currentScaleX;
this.targetObject._yscale = this.targetObject.currentScaleY;
this.targetObject._visible = this.visible;
if (this.counter1 == 1) {
this.counter1 = 0.98;
} else {
this.counter1 = 1;
}
this.targetObject._alpha = this.alpha.currentValue * this.counter1;
setTintRGB(this.targetObject, this.r.currentValue, this.g.currentValue, this.b.currentValue);
targetRatio = 0.75;
targetScale = 0.75;
shadowX = this.targetObject._x * targetRatio;
shadowY = this.targetObject._y * targetRatio;
this.targetShadow._x = shadowX;
this.targetShadow._y = shadowY;
this.targetShadow._xscale = this.targetObject.currentScaleX * targetScale;
this.targetShadow._yscale = this.targetObject.currentScaleY * targetScale;
this.targetShadow._rotation = this.rotation.currentValue;
this.targetShadow._alpha = this.alpha.currentValue / 3;
this.targetShadow._visible = this.visible;
if (this.z.currentValue != 0) {
var _local4 = {x:shadowX, y:shadowY};
var _local3 = {x:this.x.currentValue, y:this.y.currentValue};
this.targetShadow._parent.localToGlobal(_local4);
this.targetObject._parent.globalToLocal(_local4);
offsetX = _local3.x - _local4.x;
offsetY = _local3.y - _local4.y;
_local3.x = this.x.currentValue - ((offsetX * this.z.currentValue) / 100);
_local3.y = this.y.currentValue - ((offsetY * this.z.currentValue) / 100);
this.targetObject._x = _local3.x;
this.targetObject._y = _local3.y;
range = 0.3;
this.depthScale = 1 - (range * (this.z.currentValue / 100));
this.targetObject._xscale = this.targetObject.currentScaleX * this.depthScale;
this.targetObject._yscale = this.targetObject.currentScaleY * this.depthScale;
this.targetShadow._xscale = (this.targetObject.currentScaleX * this.depthScale) * targetScale;
this.targetShadow._yscale = (this.targetObject.currentScaleY * this.depthScale) * targetScale;
}
this.targetObject.swapDepths(((300 - this.z.currentValue) * 100) + this.spriteNumber);
};
if (this.screenNumber > 0) {
this.init();
}
}
function doTransfer(aSprite, aDirection) {
aSprite.rotation.currentValue = getRangedValue(aSprite.rotation.currentValue, 360);
currentScreen = Math.abs(aSprite.screenNumber);
dx = aSprite.x.changeTo;
dy = aSprite.y.changeTo;
if (aSprite.x.changeMode == "GRADUALTRANSFER") {
switch (aDirection) {
case 1 :
dx = dx - (aSprite.x.maxValue * 2);
if (dx < aSprite.x.minValue) {
return(aSprite);
}
break;
case 2 :
dx = dx + (aSprite.x.maxValue * 2);
if (dx <= aSprite.x.maxValue) {
break;
}
return(aSprite);
}
}
if (aSprite.y.changeMode == "GRADUALTRANSFER") {
switch (aDirection) {
case 3 :
dy = dy + (aSprite.y.maxValue * 2);
if (dy > aSprite.y.maxValue) {
return(aSprite);
}
break;
case 4 :
dy = dy - (aSprite.y.maxValue * 2);
if (dy >= aSprite.y.minValue) {
break;
}
return(aSprite);
}
}
x = aSprite.x.currentValue;
y = aSprite.y.currentValue;
var _local1;
switch (currentScreen) {
case 1 :
switch (aDirection) {
case 1 :
_local1 = [2, 0, dx, dy, -x, y];
break;
case 2 :
_local1 = [4, 0, dx, dy, -x, y];
break;
case 3 :
_local1 = [5, 180, -dx, -dy, -x, y];
break;
case 4 :
_local1 = [6, 0, dx, dy, x, -y];
}
break;
case 2 :
switch (aDirection) {
case 1 :
_local1 = [3, 0, dx, dy, -x, y];
break;
case 2 :
_local1 = [1, 0, dx, dy, -x, y];
break;
case 3 :
_local1 = [5, 90, -dy, dx, y, x];
break;
case 4 :
_local1 = [6, 90, -dy, dx, y, x];
}
break;
case 3 :
switch (aDirection) {
case 1 :
_local1 = [4, 0, dx, dy, -x, y];
break;
case 2 :
_local1 = [2, 0, dx, dy, -x, y];
break;
case 3 :
_local1 = [5, 0, dx, dy, x, -y];
break;
case 4 :
_local1 = [6, 180, -dx, -dy, -x, y];
}
break;
case 4 :
switch (aDirection) {
case 1 :
_local1 = [1, 0, dx, dy, -x, y];
break;
case 2 :
_local1 = [3, 0, dx, dy, -x, y];
break;
case 3 :
_local1 = [5, -90, dy, -dx, -y, -x];
break;
case 4 :
_local1 = [6, -90, dy, -dx, -y, -x];
}
break;
case 5 :
switch (aDirection) {
case 1 :
_local1 = [4, 90, -dy, dx, -y, -x];
break;
case 2 :
_local1 = [2, -90, dy, -dx, y, x];
break;
case 3 :
_local1 = [1, 180, -dx, -dy, -x, y];
break;
case 4 :
_local1 = [3, 0, dx, dy, x, -y];
}
break;
case 6 :
switch (aDirection) {
case 1 :
_local1 = [2, -90, dy, -dx, y, x];
break;
case 2 :
_local1 = [4, 90, -dy, dx, -y, -x];
break;
case 3 :
_local1 = [1, 0, dx, dy, x, -y];
break;
case 4 :
_local1 = [3, 180, -dx, -dy, -x, y];
}
}
tmpY = _local1[5];
aSprite.rotation.currentValue = aSprite.rotation.currentValue + _local1[1];
aSprite.rotation.changeTo = aSprite.rotation.changeTo + _local1[1];
tmpDX = _local1[2];
tmpDY = _local1[3];
tmpX = _local1[4];
aSprite.x.changeTo = tmpDX;
aSprite.y.changeTo = tmpDY;
aSprite.x.currentValue = tmpX;
aSprite.y.currentValue = tmpY;
if (aSprite.screenNumber > 0) {
aSprite.screenNumber = _local1[0];
aSprite.init();
} else {
aSprite.screenNumber = -_local1[0];
}
}
function moveSpriteToFreeSpace(aSprite, aScreenWidth, aDistance, aDirection) {
if (!aDirection) {
aDirection = 0;
}
applyValueState_Transfer(aSprite.x, -(aScreenWidth / 2), aScreenWidth / 2, aSprite.x.currentValue, "GRADUALTRANSFER");
applyValueState_Transfer(aSprite.y, -(aScreenWidth / 2), aScreenWidth / 2, aSprite.y.currentValue, "GRADUALTRANSFER");
trace((((("1. DEST DEST " + flagSpriteDest_X) + " - ") + flagSpriteDest_Y) + " - ") + flagSpriteDest_Screen);
if ((aDirection == 1) || (aDirection == 0)) {
var _local2 = aSprite.cloneForTransfer("abstract1");
applyValueState_Transfer(_local2.x, -(aScreenWidth / 2), aScreenWidth / 2, _local2.x.currentValue + aDistance, "GRADUALTRANSFER");
doTransfer(_local2, 1);
targetSprite = sprites.getSpriteAtXY(_local2.screenNumber, _local2.x.changeTo, _local2.y.changeTo);
trace((((("TTTT DEST " + _local2.x.changeTo) + " - ") + _local2.y.changeTo) + " - ") + _local2.screenNumber);
if (!targetSprite) {
if (((flagSpriteDest_X == _local2.x.changeTo) && (flagSpriteDest_Y == _local2.y.changeTo)) && (flagSpriteDest_Screen == _local2.screenNumber)) {
return(undefined);
}
flagSpriteDest_X = _local2.x.changeTo;
flagSpriteDest_Y = _local2.y.changeTo;
flagSpriteDest_Screen = _local2.screenNumber;
applyValueState_Transfer(aSprite.x, -(aScreenWidth / 2), aScreenWidth / 2, aSprite.x.currentValue + aDistance, "GRADUALTRANSFER");
return(undefined);
}
_local2 = null;
}
trace((((("2. DEST DEST " + flagSpriteDest_X) + " - ") + flagSpriteDest_Y) + " - ") + flagSpriteDest_Screen);
if ((aDirection == 2) || (aDirection == 0)) {
var _local2 = aSprite.cloneForTransfer("abstract2");
applyValueState_Transfer(_local2.x, -(aScreenWidth / 2), aScreenWidth / 2, _local2.x.currentValue - aDistance, "GRADUALTRANSFER");
doTransfer(_local2, 2);
targetSprite = sprites.getSpriteAtXY(_local2.screenNumber, _local2.x.changeTo, _local2.y.changeTo);
trace((((("TTTT DEST " + _local2.x.changeTo) + " - ") + _local2.y.changeTo) + " - ") + _local2.screenNumber);
if (!targetSprite) {
if (((flagSpriteDest_X == _local2.x.changeTo) && (flagSpriteDest_Y == _local2.y.changeTo)) && (flagSpriteDest_Screen == _local2.screenNumber)) {
return(undefined);
}
flagSpriteDest_X = _local2.x.changeTo;
flagSpriteDest_Y = _local2.y.changeTo;
flagSpriteDest_Screen = _local2.screenNumber;
applyValueState_Transfer(aSprite.x, -(aScreenWidth / 2), aScreenWidth / 2, aSprite.x.currentValue - aDistance, "GRADUALTRANSFER");
return(undefined);
}
_local2 = null;
}
if ((aDirection == 3) || (aDirection == 0)) {
var _local2 = aSprite.cloneForTransfer("abstract3");
applyValueState_Transfer(_local2.y, -(aScreenWidth / 2), aScreenWidth / 2, _local2.y.currentValue - aDistance, "GRADUALTRANSFER");
doTransfer(_local2, 3);
targetSprite = sprites.getSpriteAtXY(_local2.screenNumber, _local2.x.changeTo, _local2.y.changeTo);
trace((((("TTTT DEST " + _local2.x.changeTo) + " - ") + _local2.y.changeTo) + " - ") + _local2.screenNumber);
if (!targetSprite) {
if (((flagSpriteDest_X == _local2.x.changeTo) && (flagSpriteDest_Y == _local2.y.changeTo)) && (flagSpriteDest_Screen == _local2.screenNumber)) {
return(undefined);
}
flagSpriteDest_X = _local2.x.changeTo;
flagSpriteDest_Y = _local2.y.changeTo;
flagSpriteDest_Screen = _local2.screenNumber;
applyValueState_Transfer(aSprite.y, -(aScreenWidth / 2), aScreenWidth / 2, aSprite.y.currentValue - aDistance, "GRADUALTRANSFER");
return(undefined);
}
_local2 = null;
}
if ((aDirection == 4) || (aDirection == 0)) {
var _local2 = aSprite.cloneForTransfer("abstract4");
applyValueState_Transfer(_local2.y, -(aScreenWidth / 2), aScreenWidth / 2, _local2.y.currentValue + aDistance, "GRADUALTRANSFER");
doTransfer(_local2, 4);
targetSprite = sprites.getSpriteAtXY(_local2.screenNumber, _local2.x.changeTo, _local2.y.changeTo);
trace((((("TTTT DEST " + _local2.x.changeTo) + " - ") + _local2.y.changeTo) + " - ") + _local2.screenNumber);
if (!targetSprite) {
if (((flagSpriteDest_X == _local2.x.changeTo) && (flagSpriteDest_Y == _local2.y.changeTo)) && (flagSpriteDest_Screen == _local2.screenNumber)) {
return(undefined);
}
flagSpriteDest_X = _local2.x.changeTo;
flagSpriteDest_Y = _local2.y.changeTo;
flagSpriteDest_Screen = _local2.screenNumber;
applyValueState_Transfer(aSprite.y, -(aScreenWidth / 2), aScreenWidth / 2, aSprite.y.currentValue + aDistance, "GRADUALTRANSFER");
return(undefined);
}
_local2 = null;
}
}
function spriteCollection() {
this.items = new Array();
this.offsetX = [0, 0, 0, 0, 0, 0, 0];
this.offsetY = [0, 0, 0, 0, 0, 0, 0];
this.offsetRotation = [0, 0, 0, 0, 0, 0, 0];
this.screenVisible = [false, false, false, false, false, false, false];
this.reset = function () {
trace("RESETTING SPRITES::: ");
var _local2 = 0;
while (_local2 < this.items.length) {
trace((_local2 + ". ABOUT TO REMOVE ") + this.items[_local2].targetObject);
removeMovieClip(this.items[_local2].targetObject);
removeMovieClip(this.items[_local2].targetShadow);
trace("REMOVED " + this.items[_local2].targetObject);
this.items[_local2] = null;
_local2++;
}
this.items = null;
this.items = [];
};
this.addSprite = function (aSprite) {
aSprite.spriteNumber = this.items.length;
this.items[this.items.length] = aSprite;
return(aSprite);
};
this.renderAll = function () {
var _local3 = 1;
while (_local3 <= 6) {
clip = _root.i3dStage["obj" + _local3];
if (clip.mc._yscale > 0) {
this.offsetRotation[_local3] = (-clip._rotation) + 45;
} else {
this.offsetRotation[_local3] = ((-clip._rotation) + 45) + 180;
}
this.screenVisible[_local3] = clip._visible;
_local3++;
}
_local3 = 0;
while (_local3 < this.items.length) {
aSprite = this.items[_local3];
aSprite.render();
_local3++;
}
};
this.getSprite = function (aId) {
var _local2 = 0;
while (_local2 < this.items.length) {
if (this.items[_local2].id == aId) {
return(this.items[_local2]);
}
_local2++;
}
return(null);
};
this.getSpriteTarget = function (aId) {
var _local2 = 0;
while (_local2 < this.items.length) {
if (this.items[_local2].id == aId) {
return(this.items[_local2].targetObject);
}
_local2++;
}
return(null);
};
this.getSpriteAtXY = function (aScreenNumber, aX, aY) {
var _local2 = 0;
while (_local2 < this.items.length) {
if ((this.items[_local2].x.changeTo == aX) && ((this.items[_local2].y.changeTo == aY) && (this.items[_local2].screenNumber == Math.abs(aScreenNumber)))) {
trace("RETURNING MATCH " + this.items[_local2]);
return(this.items[_local2]);
}
_local2++;
}
return(null);
};
this.getMovingSprite = function () {
var _local2 = 0;
while (_local2 < this.items.length) {
aSprite = this.items[_local2];
if (aSprite.screenNumber > 0) {
if (aSprite.getMoving() == true) {
return(aSprite);
}
}
_local2++;
}
return(null);
};
}
function applyState_RGB(aSprite, aRed, aGreen, aBlue, aChangeMode) {
if (!aChangeMode) {
aChangeMode = "GRADUAL";
}
aSprite.r.changeTo = aRed;
aSprite.g.changeTo = aGreen;
aSprite.b.changeTo = aBlue;
aSprite.r.changeMode = aChangeMode;
aSprite.g.changeMode = aChangeMode;
aSprite.b.changeMode = aChangeMode;
if (aChangeMode == "IMMEDIATE") {
aSprite.r.currentValue = aRed;
aSprite.g.currentValue = aGreen;
aSprite.b.currentValue = aBlue;
}
}
function applyState_Alpha(aSprite, aValue, aChangeMode) {
if (!aChangeMode) {
aChangeMode = "GRADUAL";
}
aSprite.alpha.changeMode = aChangeMode;
aSprite.alpha.changeTo = aValue;
if (aChangeMode == "IMMEDIATE") {
aSprite.alpha.currentValue = aValue;
}
}
function applyState_Scale(aSprite, aX, aY, aChangeMode) {
if (!aChangeMode) {
aChangeMode = "RELATIVE";
}
if (aChangeMode == "IMMEDIATE") {
aSprite.rotation.currentValue = aAmount;
}
aSprite.rotation.changeMode = aChangeMode;
aSprite.rotation.changeTo = aAmount;
aSprite.rotation.currentValue = getRangedValue(aSprite.rotation.currentValue, 360);
}
function applyState_Rotation(aSprite, aAmount, aChangeMode) {
if (!aChangeMode) {
aChangeMode = "RELATIVE";
}
if (aChangeMode == "IMMEDIATE") {
aSprite.rotation.currentValue = aAmount;
}
aSprite.rotation.changeMode = aChangeMode;
aSprite.rotation.changeTo = aAmount;
aSprite.rotation.currentValue = getRangedValue(aSprite.rotation.currentValue, 360);
}
function applyState_Active(aSprite, aZ) {
if (!aZ) {
aZ = 0;
}
aSprite.z.changeTo = aZ;
aSprite.z.changeMode = "GRADUAL";
aSprite.x.changeTo = 0;
aSprite.y.changeTo = 0;
aSprite.scaleX.base = 100;
aSprite.scaleX.offset = 60;
aSprite.scaleX.frequency = 0.3;
aSprite.scaleX.amplitude = 10;
}
function applyState_FlashColor(aSprite, aMethod) {
aSprite.r.changeMode = "SIN";
aSprite.g.changeMode = "SIN";
aSprite.b.changeMode = "SIN";
switch (aMethod) {
case "rainbow" :
default :
aSprite.r.base = 50;
aSprite.r.offset = 0;
aSprite.r.frequency = 0.1;
aSprite.r.amplitude = 40;
aSprite.g.base = 50;
aSprite.g.offset = 2.0943951023932;
aSprite.g.frequency = 0.3;
aSprite.g.amplitude = 40;
aSprite.b.offset = 2.0943951023932;
aSprite.b.base = 50;
aSprite.b.frequency = 0.03;
aSprite.b.amplitude = 40;
break;
case "blue" :
applyState_RGB(aSprite, 60, 60, 110);
aSprite.b.offset = 0;
aSprite.b.base = 110;
aSprite.b.frequency = 0.6;
aSprite.b.amplitude = 50;
}
}
function applyState_Inactive(aSprite) {
aSprite.scaleX.changeMode = "NONE";
aSprite.z.changeTo = 100;
aSprite.z.changeMode = "GRADUAL";
applyState_Orbit(aSprite, aSprite.x.originalValue, aSprite.y.originalValue, 0);
}
function applyValueState_Sin(aSpriteDemon, aBase, aFrequency, aAmplitude, aOffset) {
if (!aOffset) {
aOffset = 0;
}
aSpriteDemon.base = aBase;
aSpriteDemon.offset = aOffset;
aSpriteDemon.frequency = aFrequency;
aSpriteDemon.amplitude = aAmplitude;
aSpriteDemon.changeMode = "SIN";
}
function applyValueState_Transfer(aSpriteDemon, aMin, aMax, aChangeTo, aChangeMode) {
if (!aChangeMode) {
aChangeMode = "TRANSFER";
}
aSpriteDemon.minValue = aMin;
aSpriteDemon.maxValue = aMax;
aSpriteDemon.changeTo = aChangeTo;
aSpriteDemon.changeMode = aChangeMode;
}
function applyValueState_Bounce(aSpriteDemon, aMin, aMax, aChangeTo) {
aSpriteDemon.minValue = aMin;
aSpriteDemon.maxValue = aMax;
aSpriteDemon.changeTo = aChangeTo;
aSpriteDemon.changeMode = "BOUNCE";
}
function applyState_Bounce(aSprite, x1, y1, x2, y2, z1, z2, speedX, speedY, speedZ) {
applyValueState_Bounce(aSprite.x, x1, x2, speedX);
applyValueState_Bounce(aSprite.y, y1, y2, speedZ);
applyValueState_Bounce(aSprite.z, z1, z2, speedZ);
}
function applyState_Orbit(aSprite, centreX, centreY, radius, speed, offset) {
if (!speed) {
speed = 0.08;
}
if (!offset) {
offset = 0;
}
aSprite.x.changeMode = "SIN";
aSprite.x.base = centreX;
aSprite.x.offset = offset;
aSprite.x.frequency = speed;
aSprite.x.amplitude = radius;
aSprite.y.changeMode = "SIN";
aSprite.y.base = centreY;
aSprite.y.offset = (Math.PI/2) + offset;
aSprite.y.frequency = speed;
aSprite.y.amplitude = radius;
}
function applyStateFlipFlop(aSprite, levels) {
if (!aSprite.currentLevel) {
aSprite.currentLevel = 0;
}
aSprite.currentLevel++;
if (aSprite.currentLevel > levels) {
aSprite.currentLevel = 1;
}
aSprite.z.changeMode = "GRADUAL";
aSprite.z.changeTo = 100 - ((100 / levels) * aSprite.currentLevel);
applyState_RGB(aSprite, 100, 100, 100, "IMMEDIATE");
switch (aSprite.currentLevel) {
case 1 :
applyState_RGB(aSprite, 100, 100, 100);
applyState_Alpha(aSprite, 20);
break;
case 2 :
applyState_RGB(aSprite, 100, 0, 100);
applyState_Alpha(aSprite, 25);
break;
case 3 :
applyState_RGB(aSprite, 10, 0, 10);
applyState_Alpha(aSprite, 20);
}
if (aSprite.currentLevel == 2) {
aSprite.targetObject.shape.gotoAndPlay("doOn");
aSprite.targetShadow.gotoAndPlay("doOn");
}
if (aSprite.currentLevel == 3) {
aSprite.targetObject.shape.gotoAndPlay("doOff");
aSprite.targetShadow.gotoAndPlay("doOff");
}
if ((aSprite.currentLevel == 1) && (levels == 2)) {
aSprite.targetObject.shape.gotoAndPlay("doOff");
aSprite.targetShadow.gotoAndPlay("doOff");
}
}
var flagSpriteDest_X = -1;
var flagSpriteDest_Y = -1;
var flagSpriteDest_Screen = -1;
var spriteDemon = function (aCurrentValue, aChangeTo, aChangeMode) {
if (!aChangeTo) {
aChangeTo = 0;
}
if (!aChangeMode) {
aChangeMode = "NONE";
}
this.demonName = "unset";
this.currentValue = aCurrentValue;
this.lastValue = aCurrentValue;
this.originalValue = aCurrentValue;
this.maxValue = null;
this.minValue = null;
this.targetObject = aCurrentValue;
this.changeTo = aChangeTo;
this.changeMode = aChangeMode;
this.maxSpeed = 7;
this.currentSpeed = 0;
this.acceleration = 1;
this.counter = 0;
this.base = 100;
this.amplitude = 20;
this.frequency = 0.1;
this.offset = 0;
this.update = function (aData1) {
this.lastValue = this.currentValue;
aStopFlag = false;
this.counter++;
if (this.changeMode == "NONE") {
return(undefined);
}
var _local3;
if (this.changeMode == "RELATIVE") {
this.currentValue = this.currentValue + this.changeTo;
}
if (this.changeMode == "BOUNCE") {
this.currentValue = this.currentValue + this.changeTo;
if ((this.currentValue > this.maxValue) || (this.currentValue < this.minValue)) {
this.changeTo = -this.changeTo;
this.currentValue = this.currentValue + (this.changeTo * 2);
}
}
if (this.changeMode == "TRANSFER") {
this.currentValue = this.currentValue + this.changeTo;
if (this.currentValue > this.maxValue) {
this.currentValue = this.maxValue;
if (this == _root.currentSprite.x) {
doTransfer(_root.currentSprite, 1);
} else if (this == _root.currentSprite.y) {
doTransfer(_root.currentSprite, 4);
}
} else if (this.currentValue < this.minValue) {
this.currentValue = this.minValue;
if (this == _root.currentSprite.x) {
doTransfer(_root.currentSprite, 2);
} else if (this == _root.currentSprite.y) {
doTransfer(_root.currentSprite, 3);
}
}
}
if (this.changeMode == "IMMEDIATE") {
this.currentValue = this.changeTo;
}
if (this.changeMode == "SIN") {
this.changeTo = this.base + (Math.sin((this.counter * this.frequency) + this.offset) * this.amplitude);
}
if (this.changeMode == "ABSOLUTE_ROTATION") {
aZeroDegrees = sprites.offsetRotation[aData1];
this.changeTo = aZeroDegrees;
}
if ((((this.changeMode == "ABSOLUTE_ROTATION") || (this.changeMode == "SIN")) || (this.changeMode == "GRADUAL")) || (this.changeMode == "GRADUALTRANSFER")) {
if (this.currentValue < this.changeTo) {
_local3 = 1;
} else if (this.currentValue > this.changeTo) {
_local3 = -1;
} else {
_local3 = 0;
return(undefined);
}
this.currentSpeed = this.maxSpeed * _local3;
if (this.currentSpeed > this.maxSpeed) {
this.currentSpeed = this.maxSpeed;
}
if (this.currentSpeed < (-this.maxSpeed)) {
this.currentSpeed = -this.maxSpeed;
}
this.currentValue = this.currentValue + this.currentSpeed;
if (_local3 > 0) {
if (this.currentValue > this.changeTo) {
this.currentValue = this.changeTo;
this.lastValue = this.currentValue;
aStopFlag = true;
}
} else if (_local3 < 0) {
if (this.currentValue < this.changeTo) {
this.currentValue = this.changeTo;
this.lastValue = this.currentValue;
aStopFlag = true;
}
}
if (this.changeMode == "SIN") {
aStopFlag = false;
}
if (this.changeMode == "GRADUALTRANSFER") {
if (this.currentValue > this.maxValue) {
this.currentValue = this.maxValue;
if (this == _root.currentSprite.x) {
doTransfer(_root.currentSprite, 1);
} else if (this == _root.currentSprite.y) {
doTransfer(_root.currentSprite, 4);
}
} else if (this.currentValue < this.minValue) {
this.currentValue = this.minValue;
if (this == _root.currentSprite.x) {
doTransfer(_root.currentSprite, 2);
} else if (this == _root.currentSprite.y) {
doTransfer(_root.currentSprite, 3);
}
}
}
}
this.targetObject = this.currentValue;
if (aStopFlag == true) {
if (_root.currentSprite.getMoving() == false) {
_root.handleSprite_stopMoving(_root.currentSprite);
}
this.changeMode = "NONE";
}
};
};
var sprites = new spriteCollection();
var currentSprite;
function room(aPuzzleName) {
this.puzzleName = aPuzzleName;
this.solved = false;
this.walls = new Array();
}
function wall(aNumber, aTextureName, aRotation, aFlip, aData1, aData2, aData3) {
this.wallNumber = aNumber;
this.textureName = aTextureName;
this.rotation = aRotation;
this.flip = aFlip;
var _local8 = "txWall_SwitchCorner | txWall_SwitchEdge | txWall_Projector";
if (_local8.indexOf(aTextureName) > -1) {
this.pathNumber1 = aData1;
this.pathNumber2 = aData2;
this.pathSwitchNumber = -1;
var _local3 = 1;
while (_local3 < _root.pathSwitches.length) {
if (paths[aData1].pathSwitchNumber == _local3) {
this.pathSwitchNumber = _local3;
break;
}
_local3++;
}
if (aTextureName == "txWall_Projector") {
projectors[aData3].pathNumber1 = aData1;
projectors[aData3].pathNumber2 = aData2;
this.projectorNumber = aData3;
}
}
_local8 = "txWall_DoorCorner | txWall_DoorEdge | txWall_DoorMiddle | txWall_DoorMiddle";
if (_local8.indexOf(aTextureName) > -1) {
this.doorNumber = aData1;
}
_local8 = "txWall_Spyhole | txWall_SpyholeFlip";
if (_local8.indexOf(aTextureName) > -1) {
this.projectorNumber = aData1;
}
_local8 = "txWall_Source";
if (_local8.indexOf(aTextureName) > -1) {
this.sourceNumber = aData1;
this.pathNumber1 = aData2;
this.pathNumber2 = aData3;
}
_local8 = "txWall_Screen";
if (_local8.indexOf(aWall.textureName) > -1) {
this.puzzleName = aData1;
}
}
function door() {
this.unlocked = false;
}
function pathSwitch() {
this.currentDirection = 1;
}
function path(aPathSwitchNumber, aDestinationPath1, aDestinationPath2) {
this.currentColor = "NONE";
this.pathSwitchNumber = aPathSwitchNumber;
this.destinationPaths = new Array();
this.destinationPaths[1] = aDestinationPath1;
this.destinationPaths[2] = aDestinationPath2;
}
function source(sourceColor, aDestinationPath) {
this.sourceColor = sourceColor;
this.destinationPath = aDestinationPath;
this.active = false;
}
function projector(aProjectorNumber) {
this.projectorNumber = aProjectorNumber;
this.pathNumber1;
this.pathNumber2;
this.roomNumber;
this.doUpdate = function () {
trace((((((("UPDATE PROJ: " + aColorName1) + " / ") + aColorName2) + " // ") + this.pathNumber1) + " // ") + paths[this.pathNumber1]);
var _local3 = paths[this.pathNumber1];
var _local2 = paths[this.pathNumber2];
aColorName1 = _local3.currentColor;
aColorName2 = _local2.currentColor;
aBlend = getBlend(aColorName1, aColorName2);
return(aBlend);
};
}
function resolvePaths(aStartingPathNumber, aColor) {
trace("** Resolve paths starting from #" + aStartingPathNumber);
trace("Switch # = " + aPath.pathSwitchNumber);
var aPath = paths[aStartingPathNumber];
aPath.currentColor = aColor;
while (aPath.pathSwitchNumber > 0) {
aPathSwitch = pathSwitches[aPath.pathSwitchNumber];
aDirection = aPathSwitch.currentDirection;
aNextPathNumber = aPath.destinationPaths[aDirection];
if (aNextPathNumber == aStartingPathNumber) {
trace("Exiting - Start encountered.");
return(undefined);
}
aPath = paths[aNextPathNumber];
if (aPath.currentColor == aColor) {
trace("Exiting - Same Color encountered.");
return(undefined);
}
aPath.currentColor = aColor;
trace((("-> path #" + aPath.destinationPaths[aDirection]) + " currentColor=") + aPath.currentColor);
trace(((("? switch #" + aPath.pathSwitchNumber) + " = ") + aPathSwitch.currentDirection) + " ->");
}
aPath.currentColor = aColor;
trace("Exiting - no further paths to follow");
}
function getRoomNumber(aCoord) {
if ((((((aCoord.x < 1) || (aCoord.x > 3)) || (aCoord.y < 1)) || (aCoord.y > 3)) || (aCoord.z < 1)) || (aCoord.z > 3)) {
return(-1);
}
aNumber = ((aCoord.x - 1) + ((aCoord.y - 1) * 3)) + ((aCoord.z - 1) * 9);
return(aNumber);
}
function setupRoom(aCoord) {
setRoomArray([1, 2, 3, 4, 5, 6, 7]);
x = aCoord.x;
y = aCoord.y;
z = aCoord.z;
aRoomNumber = getRoomNumber(aCoord);
trace((((((((("CREATING ROOM NUMBER " + z) + " - ") + aRoomNumber) + " from co-ords ") + x) + " ") + y) + " ") + z);
var _local3 = rooms[aRoomNumber];
var _local2 = 1;
while (_local2 <= 6) {
setupWall(_local3.walls[_local2]);
_local2++;
}
_local2 = 1;
while (_local2 <= 6) {
screens[_local2].puzzleName = _local3.puzzleName;
setupWall(screens[_local2]);
_local2++;
}
_local2 = 1;
while (_local2 <= 6) {
aTexture = _root.i3dStage["obj" + _local2].mc.texture;
if (aTexture.iLock) {
var _local5 = getCoordsFromDirection(currentRoom, _local2);
var _local4 = getRoomNumber(_local5);
if (_local4 == -1) {
tmpRoomSolved = false;
} else {
tmpRoom = rooms[_local4];
tmpRoomSolved = tmpRoom.solved;
}
if (((flagAllUnlocked == true) || (_local3.solved == true)) || (tmpRoomSolved == true)) {
aTexture.iLock.unlocked = true;
aTexture.iLock.gotoAndStop("stayOpen");
} else {
aTexture.iLock.unlocked = false;
aTexture.iLock.gotoAndStop("stayClosed");
}
if (currentRoomNumber == 26) {
aWall = _local3.walls[_local2];
if (aWall.textureName.indexOf("Switch") > -1) {
aTexture.iLock.unlocked = true;
aTexture.iLock.gotoAndStop("stayOpen");
}
}
}
_local2++;
}
initDecalTintTarget();
objDummy = setTintCoords(objDummy, aCoord, 1);
decalTintRed.targetTint = objDummy.red;
decalTintGreen.targetTint = objDummy.green;
decalTintBlue.targetTint = objDummy.blue;
decalTintRed.currentValue = 100;
decalTintGreen.currentValue = 100;
decalTintBlue.currentValue = 100;
setupWall(_root.triangle);
}
function setupWall(aWall) {
var _local3 = _root.i3dStage["obj" + aWall.wallNumber];
_local3._visible = false;
_local3.swapDepths(_local3.reg.dp);
_local3.mc.removeMovieClip("texture");
aTmp = _local3.mc.attachMovie(aWall.textureName, "texture", 1);
_local3.mc.texture._rotation = aWall.rotation;
_local3.mc.texture._x = 50;
_local3.mc.texture._y = 50;
setTintCoords(_local3.mc.texture.iDecal, _root.currentRoom, 1);
setTintRGB(_local3.mc.texture.iBackground, 50, 50, 60);
_local3.mc.texture.iDecal._alpha = 60;
var _local4 = "txWall_SwitchCorner | txWall_SwitchEdge | txWall_Projector";
if (_local4.indexOf(aWall.textureName) > -1) {
setupWall_Switch(aWall);
}
_local4 = "txWall_DoorCorner | txWall_DoorEdge | txWall_DoorMiddle";
if (_local4.indexOf(aWall.textureName) > -1) {
setupWall_Door(aWall);
}
_local4 = "txWall_Spyhole | txWall_SpyholeFlip";
if (_local4.indexOf(aWall.textureName) > -1) {
setupWall_Spyhole(aWall);
}
_local4 = "txWall_Source";
if (_local4.indexOf(aWall.textureName) > -1) {
trace("SeTup Source " + aWall.textureName);
setupWall_Source(aWall, "doFadeIn");
}
_local4 = "txWall_Triangle";
if (_local4.indexOf(aWall.textureName) > -1) {
setupWall_Triangle(aWall);
}
_local4 = "txWall_Screen";
if (_local4.indexOf(aWall.textureName) > -1) {
setupWall_Screen(aWall);
}
}
function setupWall_Switch(aWall) {
var _local3 = _root.i3dStage["obj" + aWall.wallNumber];
_local3.swapDepths(300 + aWall.wallNumber);
texture = _local3.mc.texture;
pack = _local3.mc.texture.iSwitchPack;
aButton = texture.iButton1;
aNegRotation = -aWall.rotation;
pack._rotation = aNegRotation;
texture.iButton1._rotation = aNegRotation;
if (((aWall.wallNumber == 2) || (aWall.wallNumber == 3)) || (aWall.wallNumber == 5)) {
pack._yscale = -100;
aButton._yscale = -aButton._yscale;
}
aButton.pathSwitchNumber = aWall.pathSwitchNumber;
if (pathSwitches[aWall.pathSwitchNumber].currentDirection == 1) {
pack.iSwitchRing.gotoAndStop("stayRight");
texture.iButton1.gotoAndStop("stayOff");
} else {
pack.iSwitchRing.gotoAndStop("stayLeft");
texture.iButton1.gotoAndStop("stayOn");
}
setupWallSwitches(aWall, "stayOn");
setTintCoords(aButton, _root.currentRoom);
if (aWall.textureName.indexOf("Projector") > -1) {
aProjector = projectors[aWall.projectorNumber];
aBlend = aProjector.doUpdate();
trace("BLEND IS " + aBlend);
if (aBlend == "NONE") {
setTintRGB(texture.iProjector, 10, 10, 10);
texture.iProjector.iOrbitPack1.gotoAndStop("orbitOff");
texture.iProjector.iOrbitPack2.gotoAndStop("orbitOff");
} else {
setTint(texture.iProjector, aBlend);
texture.iProjector.iOrbitPack1.gotoAndStop("orbit" + aProjector.projectorNumber);
texture.iProjector.iOrbitPack2.gotoAndStop("orbit" + aProjector.projectorNumber);
}
}
}
function setupWall_Source(aWall) {
var _local3 = _root.i3dStage["obj" + aWall.wallNumber];
_local3.swapDepths(300 + aWall.wallNumber);
texture = _local3.mc.texture;
aNegRotation = -aWall.rotation;
texture.iSourcePack._rotation = aNegRotation;
aSource = sources[aWall.sourceNumber];
aButton = texture.iSourcePack.iButton;
setTint(aButton, aSource.sourceColor);
aButton.sourceNumber = aWall.sourceNumber;
if (aSource.active == false) {
aButton.gotoAndStop("stayOff");
} else {
aButton.gotoAndStop("stayOn");
}
setupWallSource(aWall, "xxx");
}
function setupWallSwitches(aWall, aFadePoint) {
var _local2 = _root.i3dStage["obj" + aWall.wallNumber];
_local2.swapDepths(300 + aWall.wallNumber);
texture = _local2.mc.texture;
pack = _local2.mc.texture.iSwitchPack;
aPath = paths[aWall.pathNumber1];
aSwitch = pathSwitches[aPath.pathSwitchNumber];
setTint(pack.iSwitchSymbol1, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iSwitchRingPath1, aPath.currentColor);
if (aSwitch.currentDirection == 1) {
setTint(pack.iSwitchLights1, aPath.currentColor);
setTint(pack.iSwitchSymbol4, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath1a, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath2b, aPath.currentColor);
trace(((">>>>" + pack.iSwitchSymbol1._alpha) + " ") + frFadedOut);
doSpecialFadeIn(pack.iSwitchSymbol1);
doSpecialFadeIn(pack.iSwitchSymbol4);
doSpecialFadeIn(pack.iSwitchLights1);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iSwitchRingPath1);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath1a);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath2b);
} else {
setTint(pack.iSwitchLights2, aPath.currentColor);
setTint(pack.iSwitchSymbol3, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath1a, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath2b, aPath.currentColor);
doSpecialFadeIn(pack.iSwitchSymbol1);
doSpecialFadeIn(pack.iSwitchSymbol4);
doSpecialFadeIn(pack.iSwitchLights2);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iSwitchRingPath1);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath1a);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath2b);
}
aPath = paths[aWall.pathNumber2];
setTint(pack.iSwitchSymbol2, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iSwitchRingPath2, aPath.currentColor);
if (aSwitch.currentDirection == 1) {
setTint(pack.iSwitchLights2, aPath.currentColor);
setTint(pack.iSwitchSymbol3, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath1b, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath2a, aPath.currentColor);
doSpecialFadeIn(pack.iSwitchSymbol2);
doSpecialFadeIn(pack.iSwitchSymbol3);
doSpecialFadeIn(pack.iSwitchLights2);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iSwitchRingPath2);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath2a);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath1b);
} else {
setTint(pack.iSwitchLights1, aPath.currentColor);
setTint(pack.iSwitchSymbol4, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath1b, aPath.currentColor);
setTint(pack.iSwitchRing.iSwitchRing.iPath2a, aPath.currentColor);
doSpecialFadeIn(pack.iSwitchSymbol2);
doSpecialFadeIn(pack.iSwitchSymbol3);
doSpecialFadeIn(pack.iSwitchLights1);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iSwitchRingPath2);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath2a);
doSpecialFadeIn(pack.iSwitchRing.iSwitchRing.iPath1b);
}
}
function setupWallSource(aWall, aFadePoint) {
var _local4 = _root.i3dStage["obj" + aWall.wallNumber];
texture = _local4.mc.texture;
pack = _local4.mc.texture.iSourcePack;
aPath = paths[aWall.pathNumber1];
trace((((("PATH " + aPath) + "/ ") + aWall.pathNumber1) + " = ") + aPath.currentColor);
setTint(pack.iLoop1, aPath.currentColor);
aPath = paths[aWall.pathNumber2];
trace(((((("PATH " + aPath) + "/ ") + aWall.pathNumber2) + " = ") + " = ") + aPath.currentColor);
setTint(pack.iLoop2, aPath.currentColor);
trace("FADE " + aFadePoint);
if (aFadePoint == "doFadeOut") {
pack.iLoop1.gotoAndPlay(aFadePoint);
pack.iLoop2.gotoAndPlay(aFadePoint);
} else {
if ((pack.iLoop1._currentframe != 1) && (pack.iLoop1._currentframe != 25)) {
pack.iLoop1.gotoAndPlay(aFadePoint);
}
if ((pack.iLoop2._currentframe != 1) && (pack.iLoop2._currentframe != 25)) {
pack.iLoop2.gotoAndPlay(aFadePoint);
}
}
}
function doSpecialFadeIn(aObj) {
trace(aObj._currentframe + " CF");
if ((aObj._currentframe == 25) || (aObj._currentframe == 1)) {
aObj.gotoAndStop("stayOn");
} else {
aObj.gotoAndPlay("doFadeIn");
}
}
function setupWall_Door(aWall) {
var _local2 = _root.i3dStage["obj" + aWall.wallNumber];
if (aWall.textureName == "txWall_DoorEdge") {
_local2.swapDepths(400 + aWall.wallNumber);
} else {
_local2.swapDepths(450 + aWall.wallNumber);
}
texture = _local2.mc.texture;
if (((currentRoom.x == 1) && (currentRoom.y == 1)) && (currentRoom.z == 1)) {
texture.iPortal1._visible = false;
}
texture.iDoor1.wallNumber = aWall.wallNumber;
setTintCoords(texture.iPortal1, _root.currentRoom);
setTintCoords(texture.iDoor1, _root.currentRoom);
}
function setupWall_Spyhole(aWall) {
var _local3 = _root.i3dStage["obj" + aWall.wallNumber];
_local3.swapDepths(500 + aWall.wallNumber);
texture = _local3.mc.texture;
aProjector = projectors[aWall.projectorNumber];
aBlend = aProjector.doUpdate();
trace((("WAll / PROJECTOR = " + aWall.textureName) + " / ") + aWall.projector);
trace("BLEND IS " + aBlend);
if (aBlend == "NONE") {
setTintRGB(texture.iOrbitPack1, 10, 10, 10);
texture.iOrbitPack1.gotoAndStop("orbitOff");
} else {
setTint(texture.iOrbitPack1, aBlend);
texture.iOrbitPack1.gotoAndStop("orbit" + aProjector.projectorNumber);
}
if (aWall.textureName == "txWall_Spyhole") {
texture.iButton.wallNumber = aWall.wallNumber;
aRoom = rooms[currentRoomNumber];
if (aRoom.solved == false) {
texture.iOrbitPack1._visible = false;
}
}
if (aWall.textureName == "txWall_SpyholeFlip") {
aDirection = aWall.wallNumber;
var _local4 = getCoordsFromDirection({x:2, y:2, z:2}, aDirection);
setTintCoords(texture.iDecal, _local4);
aNumber = getRoomNumber(_local4);
aRoom = rooms[aNumber];
if (aRoom.solved == false) {
texture.iOrbitPack1._visible = false;
}
}
}
function setupWall_Triangle(aWall) {
var _local2 = _root.i3dStage["obj" + aWall.wallNumber];
_local2.swapDepths(500 + aWall.wallNumber);
texture = _local2.mc.texture;
setTintCoords(texture.iButton, _root.currentRoom);
aRoom = rooms[currentRoomNumber];
if (aRoom.solved == true) {
texture.iButton.gotoAndStop(35);
} else {
texture.iButton.gotoAndStop(16);
}
}
function setupWall_Screen(aWall) {
var _local3 = _root.i3dStage["obj" + aWall.wallNumber];
_local3.swapDepths(1500 + aWall.wallNumber);
texture = _local3.mc.texture;
texture.iPuzzleHolder._x = 0;
texture.iPuzzleHolder._y = 0;
texture.iPuzzleHolder._alpha = 0;
texture.iPuzzleHolder._visible = false;
setTintCoords(texture.iScreenOutline, _root.currentRoom);
relatedWallNumber = aWall.wallNumber - 7;
relatedRotation = walls;
_local3 = _root.i3dStage["obj" + relatedWallNumber];
texture.iPuzzleHolderBackground.puzzle.removeMovieClip();
texture = _local3.mc.texture;
texture.iPuzzleHolderBackground.attachMovie(aWall.puzzleName + "_Background", "puzzle", 2000);
texture.iPuzzleHolderBackground._rotation = -texture._rotation;
texture.iPuzzleHolderBackground._x = 0;
texture.iPuzzleHolderBackground._y = 0;
texture.iPuzzleHolderBackground._visible = false;
texture.iPuzzleHolderBackground.attachMovie("objPuzzleHolder2", "iDummy", 3000);
texture.iPuzzleHolderBackground.iDummy._visible = false;
}
var flagAllUnlocked = false;
var pathSwitches = new Array();
var sources = new Array();
var paths = new Array();
var projectors = new Array();
var i = 1;
while (i <= 6) {
projectors[i] = new projector(i);
trace((((("NEW PROJECTOR " + i) + " .") + projectors[i].projectorNumber) + " .") + projectors[i].pathNumber2);
i++;
}
projectors[1].targetColor = "RED";
projectors[2].targetColor = "GREEN";
projectors[3].targetColor = "BLUE";
projectors[4].targetColor = "YELLOW";
projectors[5].targetColor = "CYAN";
projectors[6].targetColor = "MAGENTA";
projectors[1].roomNumber = 12;
projectors[2].roomNumber = 22;
projectors[3].roomNumber = 14;
projectors[4].roomNumber = 4;
projectors[5].roomNumber = 16;
projectors[6].roomNumber = 10;
sources[1] = new source("RED", 83);
sources[2] = new source("GREEN", 1);
sources[3] = new source("BLUE", 61);
var i = 1;
while (i <= 108) {
paths[i] = new path(1, 2, 3);
i++;
}
paths[1] = new path(1, 7, 4);
paths[3] = new path(2, 9, 6);
paths[5] = new path(3, 11, 56);
paths[7] = new path(4, 13, 10);
paths[9] = new path(5, 15, 12);
paths[11] = new path(6, 17, 62);
paths[13] = new path(7, 37, 16);
paths[15] = new path(8, 39, 18);
paths[17] = new path(9, 41, 68);
paths[19] = new path(10, 25, 22);
paths[21] = new path(11, 27, 24);
paths[23] = new path(12, 29, 2);
paths[25] = new path(13, 31, 28);
paths[27] = new path(14, 33, 30);
paths[29] = new path(15, 35, 8);
paths[31] = new path(16, 50, 34);
paths[33] = new path(17, 44, 36);
paths[35] = new path(18, 38, 14);
paths[37] = new path(19, 43, 40);
paths[39] = new path(20, 45, 42);
paths[41] = new path(21, 47, 67);
paths[43] = new path(22, 49, 46);
paths[45] = new path(23, 51, 48);
paths[47] = new path(24, 53, 69);
paths[49] = new path(25, 89, 52);
paths[51] = new path(26, 87, 54);
paths[53] = new path(27, 85, 71);
paths[55] = new path(28, 92, 58);
paths[57] = new path(29, 98, 60);
paths[59] = new path(30, 104, 74);
paths[61] = new path(31, 55, 64);
paths[63] = new path(32, 57, 66);
paths[65] = new path(33, 59, 80);
paths[67] = new path(-1, 61, 70);
paths[69] = new path(35, 63, 72);
paths[71] = new path(36, 65, 86);
paths[73] = new path(37, 103, 76);
paths[75] = new path(38, 105, 78);
paths[77] = new path(39, 107, 20);
paths[79] = new path(40, 73, 82);
paths[81] = new path(41, 75, 84);
paths[83] = new path(42, 77, 26);
paths[85] = new path(43, 79, 88);
paths[87] = new path(44, 81, 90);
paths[89] = new path(-1, 83, 32);
paths[91] = new path(46, 5, 94);
paths[93] = new path(47, 3, 96);
paths[95] = new path(-1, 1, 23);
paths[97] = new path(49, 91, 100);
paths[99] = new path(50, 93, 102);
paths[101] = new path(51, 95, 21);
paths[103] = new path(52, 97, 106);
paths[105] = new path(53, 99, 108);
paths[107] = new path(54, 101, 19);
var i = 1;
while (i <= 107) {
d1 = paths[i].destinationPaths[1];
d2 = paths[i].destinationPaths[2];
paths[i + 1].destinationPaths[1] = d2;
paths[i + 1].destinationPaths[2] = d1;
paths[i + 1].pathSwitchNumber = paths[i].pathSwitchNumber;
i = i + 2;
}
var i = 1;
while (i <= 54) {
pathSwitches[i] = new pathSwitch();
i++;
}
var triangle = new wall(7, "txWall_Triangle", 0, false);
var screens = new Array();
var i = 1;
while (i <= 6) {
screens[i] = new wall(i + 7, "txWall_Screen", 0, false);
trace((("SCREEN " + i) + " = ") + screens[i].wallNumber);
setupWall(screens[i]);
i++;
}
var rooms = new Array();
rooms[0] = new room("PuzzleH");
rooms[0].walls[1] = new wall(1, "txWall_SwitchCorner", -90, false, 13, 14);
rooms[0].walls[2] = new wall(2, "txWall_DoorCorner", -90, false, 1);
rooms[0].walls[3] = new wall(3, "txWall_DoorCorner", 180, false, 1);
rooms[0].walls[4] = new wall(4, "txWall_SwitchCorner", 180, false, 35, 36);
rooms[0].walls[5] = new wall(5, "txWall_DoorCorner", 90, false, 1);
rooms[0].walls[6] = new wall(6, "txWall_SwitchCorner", 0, false, 37, 38);
rooms[1] = new room("PuzzleA");
rooms[1].walls[1] = new wall(1, "txWall_DoorCorner", -90, false, 1);
rooms[1].walls[2] = new wall(2, "txWall_DoorEdge", 180, false, 1);
rooms[1].walls[3] = new wall(3, "txWall_DoorCorner", 180, false, 1);
rooms[1].walls[4] = new wall(4, "txWall_SwitchEdge", 180, false, 33, 34);
rooms[1].walls[5] = new wall(5, "txWall_DoorEdge", 90, false, 1);
rooms[1].walls[6] = new wall(6, "txWall_SwitchEdge", -90, false, 43, 44);
rooms[2] = new room("PuzzleO");
rooms[2].walls[1] = new wall(1, "txWall_DoorCorner", -90, false, 1);
rooms[2].walls[2] = new wall(2, "txWall_DoorCorner", 180, false, 1);
rooms[2].walls[3] = new wall(3, "txWall_Source", 180, false, 1, 89, 90);
rooms[2].walls[4] = new wall(4, "txWall_SwitchCorner", -90, false, 31, 32);
rooms[2].walls[5] = new wall(5, "txWall_DoorCorner", 180, false, 1);
rooms[2].walls[6] = new wall(6, "txWall_SwitchCorner", -90, false, 49, 50);
rooms[3] = new room("PuzzleS");
rooms[3].walls[1] = new wall(1, "txWall_SwitchEdge", -90, false, 7, 8);
rooms[3].walls[2] = new wall(2, "txWall_DoorEdge", -90, false, 1);
rooms[3].walls[3] = new wall(3, "txWall_DoorEdge", 90, false, 1);
rooms[3].walls[4] = new wall(4, "txWall_SwitchEdge", 90, false, 29, 30);
rooms[3].walls[5] = new wall(5, "txWall_DoorCorner", 90, false, 1);
rooms[3].walls[6] = new wall(6, "txWall_DoorCorner", 0, false, 1);
rooms[4] = new room("PuzzleI");
rooms[4].walls[1] = new wall(1, "txWall_DoorMiddle", -90, false, 1);
rooms[4].walls[2] = new wall(2, "txWall_Spyhole", 0, false, 4);
rooms[4].walls[3] = new wall(3, "txWall_DoorMiddle", 90, false, 1);
rooms[4].walls[4] = new wall(4, "txWall_Projector", 0, false, 27, 28, 4);
rooms[4].walls[5] = new wall(5, "txWall_DoorMiddle", 90, false, 1);
rooms[4].walls[6] = new wall(6, "txWall_DoorMiddle", -90, false, 1);
rooms[5] = new room("PuzzleU");
rooms[5].walls[1] = new wall(1, "txWall_DoorEdge", -90, false, 1);
rooms[5].walls[2] = new wall(2, "txWall_DoorEdge", 90, false, 1);
rooms[5].walls[3] = new wall(3, "txWall_SwitchEdge", 90, false, 83, 84);
rooms[5].walls[4] = new wall(4, "txWall_SwitchEdge", -90, false, 25, 26);
rooms[5].walls[5] = new wall(5, "txWall_DoorCorner", 180, false, 1);
rooms[5].walls[6] = new wall(6, "txWall_DoorCorner", -90, false, 1);
rooms[6] = new room("PuzzleD");
rooms[6].walls[1] = new wall(1, "txWall_SwitchCorner", 0, false, 1, 2);
rooms[6].walls[2] = new wall(2, "txWall_DoorCorner", 0, false, 1);
rooms[6].walls[3] = new wall(3, "txWall_DoorCorner", 90, false, 1);
rooms[6].walls[4] = new wall(4, "txWall_SwitchCorner", 90, false, 23, 24);
rooms[6].walls[5] = new wall(5, "txWall_Source", 90, false, 2, 95, 96);
rooms[6].walls[6] = new wall(6, "txWall_DoorCorner", 0, false, 1);
rooms[7] = new room("PuzzleW");
rooms[7].walls[1] = new wall(1, "txWall_DoorCorner", 0, false, 1);
rooms[7].walls[2] = new wall(2, "txWall_DoorEdge", 0, false, 1);
rooms[7].walls[3] = new wall(3, "txWall_DoorCorner", 90, false, 1);
rooms[7].walls[4] = new wall(4, "txWall_SwitchEdge", 0, false, 21, 22);
rooms[7].walls[5] = new wall(5, "txWall_SwitchEdge", 90, false, 101, 102);
rooms[7].walls[6] = new wall(6, "txWall_DoorEdge", -90, false, 1);
rooms[8] = new room("PuzzleY");
rooms[8].walls[1] = new wall(1, "txWall_DoorCorner", 0, false, 1);
rooms[8].walls[2] = new wall(2, "txWall_DoorCorner", 90, false, 1);
rooms[8].walls[3] = new wall(3, "txWall_SwitchCorner", 90, false, 77, 78);
rooms[8].walls[4] = new wall(4, "txWall_SwitchCorner", 0, false, 19, 20);
rooms[8].walls[5] = new wall(5, "txWall_SwitchCorner", 180, false, 107, 108);
rooms[8].walls[6] = new wall(6, "txWall_DoorCorner", -90, false, 1);
rooms[9] = new room("PuzzleT");
rooms[9].walls[1] = new wall(1, "txWall_SwitchEdge", 180, false, 15, 16);
rooms[9].walls[2] = new wall(2, "txWall_DoorCorner", -90, false, 1);
rooms[9].walls[3] = new wall(3, "txWall_DoorEdge", 180, false, 1);
rooms[9].walls[4] = new wall(4, "txWall_DoorCorner", 180, false, 1);
rooms[9].walls[5] = new wall(5, "txWall_DoorEdge", 0, false, 1);
rooms[9].walls[6] = new wall(6, "txWall_SwitchEdge", 0, false, 39, 40);
rooms[10] = new room("PuzzleL");
rooms[10].walls[1] = new wall(1, "txWall_DoorMiddle", 180, false, 1);
rooms[10].walls[2] = new wall(2, "txWall_DoorMiddle", 180, false, 1);
rooms[10].walls[3] = new wall(3, "txWall_DoorMiddle", 180, false, 1);
rooms[10].walls[4] = new wall(4, "txWall_DoorMiddle", 180, false, 1);
rooms[10].walls[5] = new wall(5, "txWall_Spyhole", 0, false, 6);
rooms[10].walls[6] = new wall(6, "txWall_Projector", 0, false, 45, 46, 6);
rooms[11] = new room("PuzzleC");
rooms[11].walls[1] = new wall(1, "txWall_DoorEdge", 180, false, 1);
rooms[11].walls[2] = new wall(2, "txWall_DoorCorner", 180, false, 1);
rooms[11].walls[3] = new wall(3, "txWall_SwitchEdge", 180, false, 87, 88);
rooms[11].walls[4] = new wall(4, "txWall_DoorCorner", -90, false, 1);
rooms[11].walls[5] = new wall(5, "txWall_DoorEdge", 180, false, 1);
rooms[11].walls[6] = new wall(6, "txWall_SwitchEdge", 180, false, 51, 52);
rooms[12] = new room("PuzzleK");
rooms[12].walls[1] = new wall(1, "txWall_Projector", 0, false, 9, 10, 1);
rooms[12].walls[2] = new wall(2, "txWall_DoorMiddle", -90, false, 1);
rooms[12].walls[3] = new wall(3, "txWall_Spyhole", 0, false, 1);
rooms[12].walls[4] = new wall(4, "txWall_DoorMiddle", 90, false, 1);
rooms[12].walls[5] = new wall(5, "txWall_DoorMiddle", 0, false, 1);
rooms[12].walls[6] = new wall(6, "txWall_DoorMiddle", 0, false, 1);
rooms[13] = new room("Puzzle?");
rooms[13].walls[1] = new wall(1, "txWall_SpyholeFlip", 0, false, 1);
rooms[13].walls[2] = new wall(2, "txWall_SpyholeFlip", 0, false, 2);
rooms[13].walls[3] = new wall(3, "txWall_SpyholeFlip", 0, false, 3);
rooms[13].walls[4] = new wall(4, "txWall_SpyholeFlip", 0, false, 4);
rooms[13].walls[5] = new wall(5, "txWall_SpyholeFlip", 0, false, 5);
rooms[13].walls[6] = new wall(6, "txWall_SpyholeFlip", 0, false, 6);
rooms[14] = new room("PuzzleP");
rooms[14].walls[1] = new wall(1, "txWall_Spyhole", 0, false, 3);
rooms[14].walls[2] = new wall(2, "txWall_DoorMiddle", 90, false, 1);
rooms[14].walls[3] = new wall(3, "txWall_Projector", 0, false, 81, 82, 3);
rooms[14].walls[4] = new wall(4, "txWall_DoorMiddle", -90, false, 1);
rooms[14].walls[5] = new wall(5, "txWall_DoorMiddle", 180, false, 1);
rooms[14].walls[6] = new wall(6, "txWall_DoorMiddle", 180, false, 1);
rooms[15] = new room("PuzzleV");
rooms[15].walls[1] = new wall(1, "txWall_SwitchEdge", 0, false, 3, 4);
rooms[15].walls[2] = new wall(2, "txWall_DoorCorner", 0, false, 1);
rooms[15].walls[3] = new wall(3, "txWall_DoorEdge", 0, false, 1);
rooms[15].walls[4] = new wall(4, "txWall_DoorCorner", 90, false, 1);
rooms[15].walls[5] = new wall(5, "txWall_SwitchEdge", 0, false, 93, 94);
rooms[15].walls[6] = new wall(6, "txWall_DoorEdge", 0, false, 1);
rooms[16] = new room("PuzzleM");
rooms[16].walls[1] = new wall(1, "txWall_DoorMiddle", 0, false, 1);
rooms[16].walls[2] = new wall(2, "txWall_DoorMiddle", 0, false, 1);
rooms[16].walls[3] = new wall(3, "txWall_DoorMiddle", 0, false, 1);
rooms[16].walls[4] = new wall(4, "txWall_DoorMiddle", 0, false, 1);
rooms[16].walls[5] = new wall(5, "txWall_Projector", 0, false, 99, 100, 5);
rooms[16].walls[6] = new wall(6, "txWall_Spyhole", 0, false, 5);
rooms[17] = new room("PuzzleR");
rooms[17].walls[1] = new wall(1, "txWall_DoorEdge", 0, false, 1);
rooms[17].walls[2] = new wall(2, "txWall_DoorCorner", 90, false, 1);
rooms[17].walls[3] = new wall(3, "txWall_SwitchEdge", 0, false, 75, 76);
rooms[17].walls[4] = new wall(4, "txWall_DoorCorner", 0, false, 1);
rooms[17].walls[5] = new wall(5, "txWall_SwitchEdge", 180, false, 105, 106);
rooms[17].walls[6] = new wall(6, "txWall_DoorEdge", 180, false, 1);
rooms[18] = new room("PuzzleB");
rooms[18].walls[1] = new wall(1, "txWall_SwitchCorner", 180, false, 17, 18);
rooms[18].walls[2] = new wall(2, "txWall_Source", -90, false, 3, 67, 68);
rooms[18].walls[3] = new wall(3, "txWall_DoorCorner", -90, false, 1);
rooms[18].walls[4] = new wall(4, "txWall_DoorCorner", 180, false, 1);
rooms[18].walls[5] = new wall(5, "txWall_DoorCorner", 0, false, 1);
rooms[18].walls[6] = new wall(6, "txWall_SwitchCorner", 90, false, 41, 42);
rooms[19] = new room("PuzzleX");
rooms[19].walls[1] = new wall(1, "txWall_DoorCorner", 180, false, 1);
rooms[19].walls[2] = new wall(2, "txWall_SwitchEdge", 180, false, 69, 70);
rooms[19].walls[3] = new wall(3, "txWall_DoorCorner", -90, false, 1);
rooms[19].walls[4] = new wall(4, "txWall_DoorEdge", 180, false, 1);
rooms[19].walls[5] = new wall(5, "txWall_DoorEdge", -90, false, 1);
rooms[19].walls[6] = new wall(6, "txWall_SwitchEdge", 90, false, 47, 48);
rooms[20] = new room("PuzzleF");
rooms[20].walls[1] = new wall(1, "txWall_DoorCorner", 180, false, 1);
rooms[20].walls[2] = new wall(2, "txWall_SwitchCorner", 180, false, 71, 72);
rooms[20].walls[3] = new wall(3, "txWall_SwitchCorner", -90, false, 85, 86);
rooms[20].walls[4] = new wall(4, "txWall_DoorCorner", -90, false, 1);
rooms[20].walls[5] = new wall(5, "txWall_DoorCorner", -90, false, 1);
rooms[20].walls[6] = new wall(6, "txWall_SwitchCorner", 180, false, 53, 54);
rooms[21] = new room("PuzzleN");
rooms[21].walls[1] = new wall(1, "txWall_SwitchEdge", 90, false, 11, 12);
rooms[21].walls[2] = new wall(2, "txWall_SwitchEdge", -90, false, 61, 62);
rooms[21].walls[3] = new wall(3, "txWall_DoorEdge", -90, false, 1);
rooms[21].walls[4] = new wall(4, "txWall_DoorEdge", 90, false, 1);
rooms[21].walls[5] = new wall(5, "txWall_DoorCorner", 0, false, 1);
rooms[21].walls[6] = new wall(6, "txWall_DoorCorner", 90, false, 1);
rooms[22] = new room("PuzzleE");
rooms[22].walls[1] = new wall(1, "txWall_DoorMiddle", 90, false, 1);
rooms[22].walls[2] = new wall(2, "txWall_Projector", 0, false, 63, 64, 2);
rooms[22].walls[3] = new wall(3, "txWall_DoorMiddle", -90, false, 1);
rooms[22].walls[4] = new wall(4, "txWall_Spyhole", 0, false, 2);
rooms[22].walls[5] = new wall(5, "txWall_DoorMiddle", -90, false, 1);
rooms[22].walls[6] = new wall(6, "txWall_DoorMiddle", 90, false, 1);
rooms[23] = new room("PuzzleG");
rooms[23].walls[1] = new wall(1, "txWall_DoorEdge", 90, false, 1);
rooms[23].walls[2] = new wall(2, "txWall_SwitchEdge", 90, false, 65, 66);
rooms[23].walls[3] = new wall(3, "txWall_SwitchEdge", -90, false, 79, 80);
rooms[23].walls[4] = new wall(4, "txWall_DoorEdge", -90, false, 1);
rooms[23].walls[5] = new wall(5, "txWall_DoorCorner", -90, false, 1);
rooms[23].walls[6] = new wall(6, "txWall_DoorCorner", 180, false, 1);
rooms[24] = new room("PuzzleQ");
rooms[24].walls[1] = new wall(1, "txWall_SwitchCorner", 90, false, 5, 6);
rooms[24].walls[2] = new wall(2, "txWall_SwitchCorner", 0, false, 55, 56);
rooms[24].walls[3] = new wall(3, "txWall_DoorCorner", 0, false, 1);
rooms[24].walls[4] = new wall(4, "txWall_DoorCorner", 90, false, 1);
rooms[24].walls[5] = new wall(5, "txWall_SwitchCorner", 0, false, 91, 92);
rooms[24].walls[6] = new wall(6, "txWall_DoorCorner", 90, false, 1);
rooms[25] = new room("PuzzleJ");
rooms[25].walls[1] = new wall(1, "txWall_DoorCorner", 90, false, 1);
rooms[25].walls[2] = new wall(2, "txWall_SwitchEdge", 0, false, 57, 58);
rooms[25].walls[3] = new wall(3, "txWall_DoorCorner", 0, false, 1);
rooms[25].walls[4] = new wall(4, "txWall_DoorEdge", 0, false, 1);
rooms[25].walls[5] = new wall(5, "txWall_SwitchEdge", -90, false, 97, 98);
rooms[25].walls[6] = new wall(6, "txWall_DoorEdge", 90, false, 1);
rooms[26] = new room("PuzzleZ");
rooms[26].walls[1] = new wall(1, "txWall_DoorCorner", 90, false, 1);
rooms[26].walls[2] = new wall(2, "txWall_SwitchCorner", 90, false, 59, 60);
rooms[26].walls[3] = new wall(3, "txWall_SwitchCorner", 0, false, 73, 74);
rooms[26].walls[4] = new wall(4, "txWall_DoorCorner", 0, false, 1);
rooms[26].walls[5] = new wall(5, "txWall_SwitchCorner", -90, false, 103, 104);
rooms[26].walls[6] = new wall(6, "txWall_DoorCorner", 180, false, 1);
function saveGame() {
trace("Saving...");
user.data.heading = heading;
user.data.pitch = pitch;
user.data.bank = bank;
user.data.currentRoom = currentRoom;
user.data.currentRoomNumber = currentRoomNumber;
var _local2 = [];
var _local1 = 0;
while (_local1 <= 26) {
aRoom = rooms[_local1];
_local2[_local1] = aRoom.solved;
_local1++;
}
user.data.solvedPuzzles = _local2;
user.data.pathSwitches = pathSwitches;
user.data.sources = sources;
trace("=====================");
trace(" SAVED ");
for (name in user.data) {
trace((("." + name) + " = ") + user.data[name]);
}
_local1 = 0;
while (_local1 < 8) {
_local1++;
}
trace("=====================");
user.flush();
}
function loadGame() {
trace("Loading...");
heading = user.data.heading;
pitch = user.data.pitch;
bank = user.data.bank;
currentRoom = user.data.currentRoom;
currentRoomNumber = user.data.currentRoomNumber;
solvedPuzzles = user.data.solvedPuzzles;
var _local1 = 0;
while (_local1 <= 26) {
aRoom = rooms[_local1];
aRoom.solved = solvedPuzzles[_local1];
_local1++;
}
pathSwitches = user.data.pathSwitches;
sources = user.data.sources;
trace("=====================");
trace(" LOADED ");
for (name in user.data) {
trace((("." + name) + " = ") + user.data[name]);
}
trace("=====================");
_local1 = 1;
while (_local1 <= 3) {
trace("YOY");
aSource = sources[_local1];
if (aSource.active == false) {
resolvePaths(aSource.destinationPath, "NONE");
} else {
resolvePaths(aSource.destinationPath, aSource.sourceColor);
}
_local1++;
}
_local1 = 1;
while (_local1 <= 6) {
aProjector = projectors[_local1];
aProjector.doUpdate();
trace("UPDATE");
_local1++;
}
user.flush();
}
var heading = 0;
var pitch = 0;
var bank = 0;
var centreX = 0;
var centreY = 0;
var centreZ = 0;
var scaleX = 2;
var scaleY = 2;
var scaleZ = 2;
_root.aTheta = 0;
_root.onPress = function () {
};
var x0 = 175;
var y0 = 125;
_root.flagGameOver = false;
var currentRoom = 1;
var nextRoom = 1;
var puzzleConfig = new Object();
var gameMode = "STARTUP";
var gameModeSteps = 40;
var gameModeCurrentStep = 1;
var roomArray;
var t = new Array();
var p = new Array();
var tmpArray = new Array();
var pointArray = new Array();
t[1] = {x:-125, y:-125, z:125};
t[2] = {x:125, y:-125, z:125};
t[3] = {x:-125, y:125, z:125};
t[4] = {x:125, y:125, z:125};
t[5] = {x:-125, y:-125, z:-125};
t[6] = {x:125, y:-125, z:-125};
t[7] = {x:-125, y:125, z:-125};
t[8] = {x:125, y:125, z:-125};
t[9] = {x:129, y:-129, z:-89};
t[10] = {x:89, y:-129, z:-129};
t[11] = {x:149, y:-89, z:-109};
i = 1;
while (i <= 11) {
p[i] = {x:0, y:0, z:0};
tmpArray[i] = t[i];
pointArray[i] = p[i];
i++;
}
i = 0;
while (i < tmpArray.length) {
_root.pointArray[i].x = (_root.tmpArray[i].x - centreX) * scaleX;
_root.pointArray[i].y = (_root.tmpArray[i].y - centreY) * scaleY;
_root.pointArray[i].z = (_root.tmpArray[i].z - centreZ) * scaleZ;
i++;
}
_root.i3dStage._visible = false;
_root.i3dStage._alpha = 0;
var numPolygons = 13;
_root.clipArray = new Array();
k = 1;
while (k < (numPolygons + 1)) {
duplicateMovieClip (i3dStage.obj, "obj" + k, 100 + k);
var clip = _root.i3dStage["obj" + k];
clipArray[k] = clip;
k++;
}
var allPlanets = new Array();
var i = 1;
while (i <= 6) {
var tmpObj = _root.i3dStage.attachMovie("aniPlanet", "iPlanet" + i, 50050 + i);
allPlanets[i] = new planet();
allPlanets[i].targetObject = tmpObj;
tmpObj._visible = false;
i++;
}
_root.i3dStage.attachMovie("aniSun", "iSun", 50501);
_root.i3dStage.iSun._visible = false;
allPlanets[2].init("RED", 2, 1, 5, 2, 0.4, 0.4, 0.2);
allPlanets[1].init("GREEN", 0.1, 2, 1, 6, 0.3, 0.3, 0.4);
allPlanets[4].init("BLUE", 0.3, 7, 6, 8, 0.25, 0.45, 1);
allPlanets[5].init("CYAN", 0.2, 8, 4, 3, 0.2, 0.2, 0.7);
allPlanets[3].init("YELLOW", 0.4, 4, 2, 8, 0.35, 0.15, 1.2);
allPlanets[6].init("MAGENTA", 0.6, 6, 1, 5, 0.15, 0.35, 1.6);
_root.i3dStage.attachMovie("btnSpyholeMask", "iSpyholeMask", 100000);
_root.i3dStage.iSpyholeMask._visible = false;
_root.iIntermediary._visible = false;
_root.iIntermediary2._visible = false;
var targetObject = null;
clipArray[1].reg = {pt0:p[1], pW:p[2], pH:p[3]};
clipArray[2].reg = {pt0:p[2], pW:p[6], pH:p[4]};
clipArray[3].reg = {pt0:p[6], pW:p[5], pH:p[8]};
clipArray[4].reg = {pt0:p[5], pW:p[1], pH:p[7]};
clipArray[5].reg = {pt0:p[2], pW:p[1], pH:p[6]};
clipArray[6].reg = {pt0:p[3], pW:p[4], pH:p[7]};
clipArray[7].reg = {pt0:p[9], pW:p[10], pH:p[11], dp:510, tx:"txWallTriangle"};
clipArray[8].reg = {pt0:p[1], pW:p[2], pH:p[3]};
clipArray[9].reg = {pt0:p[2], pW:p[6], pH:p[4]};
clipArray[10].reg = {pt0:p[6], pW:p[5], pH:p[8]};
clipArray[11].reg = {pt0:p[5], pW:p[1], pH:p[7]};
clipArray[12].reg = {pt0:p[2], pW:p[1], pH:p[6]};
clipArray[13].reg = {pt0:p[3], pW:p[4], pH:p[7]};
render2dScaleX = new demon();
render2dScaleY = new demon();
render2dOffsetX = new demon();
render2dOffsetY = new demon();
render2dAlpha = new demon();
render2dBrightness = new demon();
render2dBrightness.targetColor = new Color(_root.i3dStage);
render2dTintRed = new demon();
render2dTintGreen = new demon();
render2dTintBlue = new demon();
render2dTintRed.currentValue = 150;
render2dTintGreen.currentValue = 150;
render2dTintBlue.currentValue = 150;
render2dBrightness.currentValue = 100;
render2dScaleX.currentValue = 100;
render2dScaleY.currentValue = 100;
render2dAlpha.currentValue = 100;
decalTintRed = new demon();
decalTintGreen = new demon();
decalTintBlue = new demon();
decalTintRed.currentValue = 100;
decalTintGreen.currentValue = 100;
decalTintBlue.currentValue = 100;
decalAlpha = new demon();
decalAlpha.currentValue = 10;
intermediaryScale = new demon();
screenScale = new demon();
screenScale.currentValue = 0;
puzzleAlpha = new demon();
puzzleAlpha.currentValue = 0;
puzzleBackgroundAlpha = new demon();
puzzleBackgroundAlpha.currentValue = 100;
setRoomArray([1, 2, 3, 4, 5, 6, 7]);
var currentRoom;
currentRoom = {x:1, y:1, z:1};
var currentRoomNumber = getRoomNumber(currentRoom);
trace("CURR " + currentRoomNumber);
var puzzleConfig = {};
if (_global.startMode == "loadgame") {
loadGame();
}
Frame 184
_root.renderAll();
if (_root.flagGameOver == false) {
gotoAndPlay (183);
} else {
gotoAndPlay ("EndGame");
}
Frame 195
gotoAndPlay (196);
Frame 231
stop();
Symbol 36 MovieClip Frame 22
gotoAndPlay (1);
Symbol 37 MovieClip Frame 1
stop();
Symbol 37 MovieClip Frame 20
stop();
Symbol 37 MovieClip Frame 40
stop();
Symbol 46 MovieClip Frame 60
gotoAndPlay (1);
Symbol 47 MovieClip Frame 1
this.onPress = function () {
_root.handleTriangleButtonPress();
};
stop();
Symbol 47 MovieClip Frame 16
stop();
Symbol 47 MovieClip Frame 35
stop();
Symbol 47 MovieClip Frame 50
gotoAndStop ("moireOn");
Symbol 50 MovieClip [txWall_Triangle] Frame 1
this.registerDecals = function () {
_root.registerDecalTintTarget(this.iDecal1);
};
Symbol 68 MovieClip Frame 1
stop();
var myColor;
this.onPress = function () {
_root.handleSourcePress(this);
};
Symbol 68 MovieClip Frame 5
_root.handleSwitchRingTurnFinish(this);
Symbol 68 MovieClip Frame 25
stop();
Symbol 68 MovieClip Frame 45
_root.handleSwitchRingTurnFinish(this);
stop();
Symbol 72 MovieClip Frame 1
stop();
Symbol 72 MovieClip Frame 25
stop();
Symbol 72 MovieClip Frame 26
stop();
Symbol 72 MovieClip Frame 45
stop();
Symbol 75 MovieClip [txWall_Source] Frame 1
this.registerDecals = function () {
_root.registerDecalTintTarget(this.iDecal1);
};
Symbol 85 MovieClip Frame 60
gotoAndPlay (1);
Symbol 86 MovieClip Frame 1
this.onPress = function () {
_root.handleSwitchPress(this);
};
stop();
Symbol 86 MovieClip Frame 25
stop();
Symbol 86 MovieClip Frame 45
stop();
Symbol 92 MovieClip Frame 1
stop();
Symbol 92 MovieClip Frame 25
stop();
Symbol 92 MovieClip Frame 26
stop();
Symbol 92 MovieClip Frame 55
stop();
Symbol 96 MovieClip Frame 1
stop();
Symbol 96 MovieClip Frame 25
stop();
Symbol 96 MovieClip Frame 26
stop();
Symbol 96 MovieClip Frame 45
stop();
Symbol 101 MovieClip Frame 1
stop();
Symbol 101 MovieClip Frame 25
stop();
Symbol 101 MovieClip Frame 26
stop();
Symbol 101 MovieClip Frame 59
stop();
Symbol 105 MovieClip Frame 1
stop();
Symbol 105 MovieClip Frame 25
stop();
Symbol 105 MovieClip Frame 26
stop();
Symbol 105 MovieClip Frame 59
stop();
Symbol 107 MovieClip Frame 1
stop();
Symbol 107 MovieClip Frame 36
_root.handleSwitchRingTurnFinish(this);
_root.XSound.playSound("sndRotorClunk", _root.VOL_ROTORCLUNK, 0, false);
Symbol 107 MovieClip Frame 37
stop();
Symbol 107 MovieClip Frame 80
_root.handleSwitchRingTurnFinish(this);
_root.XSound.playSound("sndRotorClunk", _root.VOL_ROTORCLUNK, 0, false);
Symbol 107 MovieClip Frame 81
stop();
Symbol 110 MovieClip Frame 1
stop();
Symbol 110 MovieClip Frame 25
stop();
Symbol 110 MovieClip Frame 59
stop();
Symbol 117 MovieClip Frame 1
var unlocked = false;
this.onPress = function () {
return(false);
};
stop();
Symbol 117 MovieClip Frame 53
_root.XSound.stopSound("sndDoor", "IMMEDIATE");
_root.XSound.playSound("sndDoor", 25, 0, false);
Symbol 117 MovieClip Frame 101
stop();
Symbol 118 MovieClip [txWall_SwitchCorner] Frame 1
this.registerDecals = function () {
_root.registerDecalTintTarget(this.iDecal1);
};
Symbol 126 MovieClip Frame 506
gotoAndPlay (1);
Symbol 127 MovieClip Frame 1
stop();
Symbol 129 MovieClip [txWall_Projector] Frame 1
this.iButton1._visible = false;
Symbol 137 MovieClip [txWall_SwitchEdge] Frame 1
this.registerDecals = function () {
_root.registerDecalTintTarget(this.iDecal1);
};
Symbol 144 MovieClip [txWall_SpyholeFlip] Frame 1
this.registerDecals = function () {
_root.registerDecalTintTarget(this.iDecal1);
};
Symbol 148 MovieClip Frame 1
this.onPress = function () {
_root.handleSpyholePress(this);
};
Symbol 151 MovieClip [txWall_Spyhole] Frame 1
this.registerDecals = function () {
_root.registerDecalTintTarget(this.iDecal1);
};
Symbol 156 MovieClip Frame 1
stop();
var myWall;
var myNextColor;
this._parent.iLines._visible = false;
if (this._parent._name.indexOf("iIntermediary") == -1) {
this.onPress = function () {
_root.handleDoorButtonPress(this);
};
}
Symbol 156 MovieClip Frame 12
if (this._parent._name.indexOf("iIntermediary") == -1) {
_root.XSound.playSound("sndAirlock", _root.VOL_AIRLOCK, 0, false);
}
Symbol 156 MovieClip Frame 54
stop();
Symbol 162 MovieClip Frame 1
this.onPress = function () {
_root.handlePortalButtonPress(this);
};
Symbol 162 MovieClip Frame 140
gotoAndPlay (1);
Symbol 189 MovieClip [txWall_Screen] Frame 1
stop();
Symbol 197 MovieClip Frame 1
this.onPress = function () {
_root.handleZDoorButtonPress(this);
};
Symbol 230 MovieClip [puzzleI_Background] Frame 1
gotoAndStop (1);
Symbol 238 MovieClip [puzzleG_Background] Frame 1
gotoAndStop (1);
Symbol 261 MovieClip [puzzleB] Frame 1
this.onPress = function () {
_root.handlePuzzleSolved();
};
Symbol 262 MovieClip [objSprite] Frame 1
this.onPress = function () {
_root.handleSprite_onPress(this);
};
Symbol 270 MovieClip [btnSpyholeMask] Frame 1
this.onPress = function () {
_root.handleSpyholeMaskPress(this);
};
Symbol 276 MovieClip Frame 1
gotoAndPlay(_root.randomRange(2, 240));
Symbol 276 MovieClip Frame 269
gotoAndPlay (1);
Symbol 278 MovieClip [blixW2] Frame 1
gotoAndPlay(_root.randomRange(1, 100));
Symbol 278 MovieClip [blixW2] Frame 297
gotoAndPlay (1);
Symbol 279 MovieClip [blixW] Frame 1
gotoAndPlay(_root.randomRange(1, 100));
Symbol 279 MovieClip [blixW] Frame 297
gotoAndPlay (1);
Symbol 280 MovieClip [blixA] Frame 297
gotoAndPlay (1);
Symbol 326 MovieClip [shapeH2] Frame 1
stop();
Symbol 328 MovieClip [shapeH1] Frame 1
stop();
Symbol 329 MovieClip [shapeG1] Frame 1
stop();
Symbol 331 MovieClip [shapeG5] Frame 1
stop();
Symbol 333 MovieClip [shapeG4] Frame 1
stop();
Symbol 334 MovieClip [shapeG3] Frame 1
stop();
Symbol 335 MovieClip [shapeG2] Frame 1
stop();
Symbol 338 MovieClip [shapeF1] Frame 1
stop();
Symbol 338 MovieClip [shapeF1] Frame 15
stop();
Symbol 338 MovieClip [shapeF1] Frame 30
stop();
Symbol 341 MovieClip [shapeZ2] Frame 1
stop();
Symbol 348 MovieClip [shapeE2] Frame 1
if ((this.targetSprite.flagWrongShadow == true) && (this._name != "shape")) {
this.targetSprite.changeMode = "IMMEDIATE";
gotoAndStop (2);
} else {
stop();
}
Symbol 353 MovieClip [shapeE4] Frame 1
if ((this.targetSprite.flagWrongShadow == true) && (this._name != "shape")) {
this.targetSprite.changeMode = "IMMEDIATE";
gotoAndStop (2);
} else {
stop();
}
Symbol 358 MovieClip [shapeE3] Frame 1
if ((this.targetSprite.flagWrongShadow == true) && (this._name != "shape")) {
this.targetSprite.changeMode = "IMMEDIATE";
gotoAndStop (2);
} else {
stop();
}
Symbol 363 MovieClip [shapeE1] Frame 1
if ((this.targetSprite.flagWrongShadow == true) && (this._name != "shape")) {
this.targetSprite.changeMode = "IMMEDIATE";
gotoAndStop (2);
} else {
stop();
}
Symbol 373 MovieClip [shapeHINT1] Frame 1
stop();
Symbol 373 MovieClip [shapeHINT1] Frame 2
stop();
Symbol 373 MovieClip [shapeHINT1] Frame 3
stop();
Symbol 435 MovieClip Frame 50
gotoAndPlay (1);
Symbol 438 MovieClip [shapeJ3] Frame 20
stop();
Symbol 438 MovieClip [shapeJ3] Frame 40
stop();
Symbol 438 MovieClip [shapeJ3] Frame 65
stop();
Symbol 438 MovieClip [shapeJ3] Frame 85
stop();
Symbol 438 MovieClip [shapeJ3] Frame 110
stop();
Symbol 438 MovieClip [shapeJ3] Frame 130
stop();
Symbol 439 MovieClip [shapeJ2] Frame 20
stop();
Symbol 439 MovieClip [shapeJ2] Frame 40
stop();
Symbol 439 MovieClip [shapeJ2] Frame 65
stop();
Symbol 439 MovieClip [shapeJ2] Frame 85
stop();
Symbol 439 MovieClip [shapeJ2] Frame 110
stop();
Symbol 439 MovieClip [shapeJ2] Frame 130
stop();
Symbol 440 MovieClip [shapeJ1] Frame 20
stop();
Symbol 440 MovieClip [shapeJ1] Frame 40
stop();
Symbol 440 MovieClip [shapeJ1] Frame 65
stop();
Symbol 440 MovieClip [shapeJ1] Frame 85
stop();
Symbol 440 MovieClip [shapeJ1] Frame 110
stop();
Symbol 440 MovieClip [shapeJ1] Frame 130
stop();
Symbol 443 MovieClip [shapeK3] Frame 20
stop();
Symbol 443 MovieClip [shapeK3] Frame 40
stop();
Symbol 444 MovieClip [shapeK2] Frame 20
stop();
Symbol 444 MovieClip [shapeK2] Frame 40
stop();
Symbol 445 MovieClip [shapeK1] Frame 20
stop();
Symbol 445 MovieClip [shapeK1] Frame 40
stop();
Symbol 504 MovieClip [shapeL1] Frame 169
gotoAndPlay (5);
Symbol 516 MovieClip [btnIntermediary] Frame 10
stop();
Symbol 520 MovieClip Frame 1
this.onPress = function () {
if (_root.hasSavedGame() == false) {
return(undefined);
}
if (_root.flagButtonPressed == false) {
_root.flagButtonPressed = true;
gotoAndPlay ("press");
}
};
this.onRollOver = function () {
if (_root.flagButtonPressed == false) {
gotoAndPlay ("hover");
}
};
stop();
Symbol 520 MovieClip Frame 14
gotoAndStop ("off");
Symbol 520 MovieClip Frame 26
_root.loadGame();
Symbol 520 MovieClip Frame 28
stop();
Symbol 520 MovieClip Frame 30
stop();
Symbol 522 MovieClip Frame 1
this.onPress = function () {
if (_root.flagButtonPressed == false) {
_root.flagButtonPressed = true;
gotoAndPlay ("press");
}
};
this.onRollOver = function () {
if (_root.flagButtonPressed == false) {
gotoAndPlay ("hover");
}
};
stop();
Symbol 522 MovieClip Frame 14
gotoAndStop ("off");
Symbol 522 MovieClip Frame 26
_root.startNewGame();
Symbol 522 MovieClip Frame 27
Symbol 525 MovieClip Frame 1
this.onPress = function () {
if (_root.flagButtonPressed == false) {
_root.flagButtonPressed = true;
gotoAndPlay ("press");
}
};
this.onRollOver = function () {
if (_root.flagButtonPressed == false) {
gotoAndPlay ("hover");
}
};
stop();
Symbol 525 MovieClip Frame 14
gotoAndStop ("off");
Symbol 525 MovieClip Frame 26
_root.startNewGame();
Symbol 525 MovieClip Frame 27
Symbol 533 MovieClip Frame 1
this.onPress = function () {
gotoAndPlay (5);
_root.startGame();
};
stop();
Symbol 535 MovieClip Frame 82
gotoAndPlay (1);
Symbol 538 MovieClip Frame 1
this.onPress = function () {
};
Symbol 543 MovieClip Frame 1
function updateStars() {
sinCounter = sinCounter + 0.012;
var _local2 = 1;
while (_local2 <= maxStars) {
tmpObj = stars[_local2];
counter[_local2] = counter[_local2] * zoomBy;
if (counter[_local2] < 0.1) {
tmpObj._rotation = _root.randomRange(0, 360);
counter[_local2] = 100;
xs[_local2] = 0 + (Math.sin(sinCounter) * 116);
ys[_local2] = 0 + (Math.sin(sinCounter) * 116);
}
if (counter[_local2] > 100) {
tmpObj._rotation = _root.randomRange(0, 360);
counter[_local2] = 0.1;
xs[_local2] = 0 + (Math.sin(sinCounter) * 106);
ys[_local2] = 0 + (Math.sin(sinCounter * 0.9) * 70);
}
aPortion = counter[_local2] / 100;
tmpObj._xscale = 2600 * aPortion;
tmpObj._yscale = 2600 * aPortion;
tmpObj._x = xs[_local2];
tmpObj._y = ys[_local2];
aTurnby = 0 + (Math.sin(sinCounter) * 16);
tmpObj._rotation = tmpObj._rotation + (aTurnby * aPortion);
_local2++;
}
}
var maxStars = 15;
var maxCounter = 100;
var stars = [];
var counter = [];
var xs = [];
var ys = [];
var zoomBy = 0.97;
zoomBy = 1.02;
var turnBy = 1;
var sinCounter = 0;
var i = 1;
while (i <= maxStars) {
tmpObj = this.attachMovie("grENDGAME_stars", "stars" + i, i);
tmpObj._rotation = i * 30;
stars[i] = tmpObj;
counter[i] = (i * maxCounter) / maxStars;
var ii = 1;
while (ii <= (i * 1234)) {
counter[i] = counter[i] * zoomBy;
if (counter[i] < 0.1) {
counter[i] = 100;
}
if (counter[i] > 100) {
counter[i] = 0.1;
}
ii++;
}
i++;
}
Symbol 543 MovieClip Frame 3
updateStars();
gotoAndPlay (2);
Symbol 547 MovieClip Frame 1
this.onPress = function () {
if (this._currentframe != 1) {
return(undefined);
}
trace("NAME" + _parent.UserInformation.UserName);
aName = _parent.UserInformation.UserName;
if (aName.length > 1) {
_parent.UserInformation.SaveUserInformation();
_root.currentDegree = -999;
gotoAndPlay ("press");
}
};
this.onRollOver = function () {
};
this.onRollOut = function () {
};
stop();
Symbol 547 MovieClip Frame 2
stop();
Symbol 547 MovieClip Frame 23
getURL (("http://www.woolythinking.com/scoresComplex.php?filename=scores/" + _global.HallOfFameName) + ".sco&scoresize=10&action=VIEW&viewtype=HTML", "_parent");
stop();
Symbol 555 MovieClip Frame 1
function SaveUserInformation() {
userName = String.toLowerCase(userName);
userComment = String.toLowerCase(userComment);
sCommand = ((((("http://www.woolythinking.com/scores.php?filename=scores/" + _global.HallOfFameName) + ".sco&scoresize=10&action=RUBYINSERT&winname=") + UserName) + "&winscore=") + UserComment) + "&viewtype=FLASH";
this.loadVariables(sCommand, "POST");
user.data.currentRoomNumber = -111;
user.flush();
}