Frame 1
attachMovie("CEngine", "CEngine" + getNextHighestDepth(), getNextHighestDepth());
Frame 3
gotoAndStop (2);
Symbol 174 MovieClip [CPill] Frame 1
#initclip 86
Object.registerClass("CPill", CPill);
#endinitclip
Symbol 175 MovieClip [CGame] Frame 1
#initclip 40
Object.registerClass("CGame", CGame);
#endinitclip
Symbol 176 MovieClip [CEngine] Frame 1
#initclip 41
Object.registerClass("CEngine", CEngine);
#endinitclip
Symbol 185 MovieClip [CPSelection] Frame 1
#initclip 42
Object.registerClass("CPSelection", CSelection);
#endinitclip
Symbol 193 MovieClip [COSelection] Frame 1
#initclip 43
Object.registerClass("COSelection", CSelection);
#endinitclip
Symbol 201 MovieClip [CGSelection] Frame 1
#initclip 44
Object.registerClass("CGSelection", CSelection);
#endinitclip
Symbol 202 MovieClip [CUnion] Frame 1
#initclip 45
Object.registerClass("CUnion", CUnion);
#endinitclip
Symbol 225 MovieClip [CBackgrounds] Frame 1
#initclip 46
Object.registerClass("CBackgrounds", CBackgrounds);
#endinitclip
Symbol 226 MovieClip [CLine] Frame 1
#initclip 47
Object.registerClass("CLine", CLine);
#endinitclip
Symbol 227 MovieClip [CMixture] Frame 1
#initclip 48
Object.registerClass("CMixture", CMixture);
#endinitclip
Symbol 230 MovieClip [CMixtureWeight] Frame 1
#initclip 49
Object.registerClass("CMixtureWeight", CMixtureWeight);
#endinitclip
Symbol 231 MovieClip [CCircle] Frame 1
#initclip 50
Object.registerClass("CCircle", CCircle);
#endinitclip
Symbol 232 MovieClip [CVirus] Frame 1
#initclip 51
Object.registerClass("CVirus", CVirus);
#endinitclip
Symbol 239 MovieClip Frame 35
_visible = false;
done = true;
_parent.endAnim();
stop();
Symbol 243 MovieClip Frame 26
_visible = false;
done = true;
_parent.endAnim();
stop();
Symbol 247 MovieClip Frame 20
_visible = false;
done = true;
_parent.endAnim();
stop();
Symbol 248 MovieClip [CMixtureIndicators] Frame 1
#initclip 52
Object.registerClass("CMixtureIndicators", CMixtureIndicators);
#endinitclip
Symbol 286 MovieClip [CTime] Frame 1
#initclip 53
Object.registerClass("CTime", CTime);
#endinitclip
Symbol 300 MovieClip [CGameWindow] Frame 1
#initclip 54
Object.registerClass("CGameWindow", CGameWindow);
#endinitclip
Symbol 309 MovieClip [CProgressP] Frame 1
#initclip 55
Object.registerClass("CProgressP", CProgressMixtures);
#endinitclip
Symbol 315 MovieClip [CProgressO] Frame 1
#initclip 56
Object.registerClass("CProgressO", CProgressMixtures);
#endinitclip
Symbol 321 MovieClip [CProgressG] Frame 1
#initclip 57
Object.registerClass("CProgressG", CProgressMixtures);
#endinitclip
Symbol 328 MovieClip [CParticle] Frame 1
#initclip 58
Object.registerClass("CParticle", CParticle);
#endinitclip
Symbol 335 MovieClip [CLevelComplete1] Frame 1
#initclip 59
Object.registerClass("CLevelComplete1", CLevelComplete1);
#endinitclip
Symbol 353 MovieClip [CLevelComplete] Frame 1
#initclip 60
Object.registerClass("CLevelComplete", CLevelComplete);
#endinitclip
Symbol 381 MovieClip [CExplode] Frame 1
#initclip 61
Object.registerClass("CExplode", CExplode);
#endinitclip
Symbol 385 MovieClip [bubble2] Frame 9
stop();
Symbol 389 MovieClip [bubble1] Frame 9
stop();
Symbol 393 MovieClip [bubble3] Frame 9
stop();
Symbol 406 MovieClip [explode] Frame 6
stop();
Symbol 423 MovieClip [CFlowerParticle] Frame 1
#initclip 62
Object.registerClass("CFlowerParticle", CFlowerParticle);
#endinitclip
Symbol 427 MovieClip [CMainMenu] Frame 1
#initclip 63
Object.registerClass("CMainMenu", CMainMenu);
#endinitclip
Symbol 460 MovieClip [CMainMenuConsole] Frame 1
#initclip 64
Object.registerClass("CMainMenuConsole", CMainMenuConsole);
#endinitclip
Symbol 477 MovieClip [CNextLevel2] Frame 1
#initclip 65
Object.registerClass("CNextLevel2", CNextLevel);
#endinitclip
Symbol 483 MovieClip [CNextLevel] Frame 1
#initclip 66
Object.registerClass("CNextLevel", CNextLevel);
#endinitclip
Symbol 489 MovieClip [CNextLevel1] Frame 1
#initclip 67
Object.registerClass("CNextLevel1", CNextLevel);
#endinitclip
Symbol 503 MovieClip [CTutorial] Frame 1
#initclip 68
Object.registerClass("CTutorial", CTutorial);
#endinitclip
Symbol 504 MovieClip [anim1] Frame 15
stop();
Symbol 504 MovieClip [anim1] Frame 40
stop();
Symbol 504 MovieClip [anim1] Frame 60
stop();
Symbol 534 MovieClip [CHelp] Frame 1
#initclip 69
Object.registerClass("CHelp", CHelp);
#endinitclip
Symbol 535 MovieClip [hAnim2] Frame 86
stop();
Symbol 536 MovieClip [hAnim1] Frame 45
stop();
Symbol 587 MovieClip [CSoundSlider] Frame 1
#initclip 70
Object.registerClass("CSoundSlider", CSliderControl);
#endinitclip
Symbol 588 MovieClip [COptions] Frame 1
#initclip 71
Object.registerClass("COptions", COptions);
#endinitclip
Symbol 606 MovieClip [CIntroProgress] Frame 1
#initclip 72
Object.registerClass("CIntroProgress", CProgressBar);
#endinitclip
Symbol 607 MovieClip [CIntro] Frame 1
#initclip 73
Object.registerClass("CIntro", CIntro);
#endinitclip
Symbol 630 MovieClip [CContinue] Frame 1
#initclip 74
Object.registerClass("CContinue", CContinue);
#endinitclip
Symbol 650 MovieClip [CGameOver] Frame 1
#initclip 75
Object.registerClass("CGameOver", CGameOver);
#endinitclip
Symbol 676 MovieClip [CPrestart] Frame 1
#initclip 76
Object.registerClass("CPrestart", CPrestart);
#endinitclip
Symbol 680 MovieClip [CGetFullVersion] Frame 1
#initclip 77
Object.registerClass("CGetFullVersion", CGetFullVersion);
#endinitclip
Symbol 695 MovieClip [CHint9] Frame 1
#initclip 78
Object.registerClass("CHint9", CTip);
#endinitclip
Symbol 700 MovieClip [CHint6] Frame 1
#initclip 79
Object.registerClass("CHint6", CTip);
#endinitclip
Symbol 706 MovieClip [CHint4] Frame 1
#initclip 80
Object.registerClass("CHint4", CTip);
#endinitclip
Symbol 711 MovieClip [CHint8] Frame 1
#initclip 81
Object.registerClass("CHint8", CTip);
#endinitclip
Symbol 716 MovieClip [CHint7] Frame 1
#initclip 82
Object.registerClass("CHint7", CTip);
#endinitclip
Symbol 721 MovieClip [CHint5] Frame 1
#initclip 83
Object.registerClass("CHint5", CTip);
#endinitclip
Symbol 726 MovieClip [CHint3] Frame 1
#initclip 84
Object.registerClass("CHint3", CTip);
#endinitclip
Symbol 731 MovieClip [CHint2] Frame 1
#initclip 85
Object.registerClass("CHint2", CTip);
#endinitclip
Symbol 735 MovieClip [__Packages.CGame] Frame 0
class CGame extends MovieClip
{
var score, nGreen, nOrange, nPurple, nChains, maxChain, cbackground, createEmptyMovieClip, getNextHighestDepth, cback1, pills, lines, viruses, backLayer, mc, engine, needProcessPills, needFly, ticker, gameType, moveHintTimer, tip, attachMovie, pointer, hint, hintProgress, _parent, gameState, selectedPill, selections, unions, colorsQuantity, initialPillsQuantity, virusCount, rect, nTicksDelete, curSelectionIndex;
function CGame () {
super();
score = 0;
nGreen = 0;
nOrange = 0;
nPurple = 0;
nChains = 0;
maxChain = 0;
cbackground = createEmptyMovieClip("back" + getNextHighestDepth(), getNextHighestDepth());
cback1 = createEmptyMovieClip("back1" + getNextHighestDepth(), getNextHighestDepth());
pills = new Array();
lines = new Array();
viruses = new Array();
backLayer = createEmptyMovieClip("backLayer" + getNextHighestDepth(), getNextHighestDepth());
mc = new CMixtureContainer(cbackground, this, engine, this);
newGame();
needProcessPills = true;
needFly = true;
ticker = 0;
setState(gameStatePlaying);
if ((gameType == gameTypeAction) || (gameType == gameTypeIntroduce)) {
moveHintTimer = CGlobal.hintWait;
engine.prestart = engine.attachMovie("CPrestart", "CPrestart" + engine.getNextHighestDepth(), engine.getNextHighestDepth(), {g:CGlobal.targetGreen, o:CGlobal.targetOrange, p:CGlobal.targetPurple, game:this});
engine.action.timeTicker.setTimeTicks(engine.action.levelTime);
pause();
} else if (gameType == gameTypePuzzle) {
showHint();
}
}
function showHint() {
resume();
if (engine.state == CEngine.stateAction) {
switch (engine.action.currentLevel) {
case 2 :
tip = attachMovie("CHint2", "CHint" + getNextHighestDepth(), getNextHighestDepth());
break;
case 3 :
tip = attachMovie("CHint3", "CHint" + getNextHighestDepth(), getNextHighestDepth());
break;
case 4 :
tip = attachMovie("CHint4", "CHint" + getNextHighestDepth(), getNextHighestDepth());
break;
case 5 :
tip = attachMovie("CHint5", "CHint" + getNextHighestDepth(), getNextHighestDepth());
}
} else if (engine.state == CEngine.statePuzzle) {
switch (engine.puzzle.currentLevel) {
case 6 :
tip = attachMovie("CHint6", "CHint" + getNextHighestDepth(), getNextHighestDepth());
break;
case 7 :
tip = attachMovie("CHint7", "CHint" + getNextHighestDepth(), getNextHighestDepth());
break;
case 8 :
tip = attachMovie("CHint8", "CHint" + getNextHighestDepth(), getNextHighestDepth());
break;
case 9 :
tip = attachMovie("CHint9", "CHint" + getNextHighestDepth(), getNextHighestDepth());
}
}
}
function pause() {
paused = true;
pointer.stop();
pointer._visible = false;
hint._visible = false;
mc.paused = true;
}
function resume() {
paused = false;
pointer.play();
pointer._visible = true;
hint._visible = true;
mc.paused = false;
}
function checkLevelEnd() {
if (engine.state == CEngine.statePuzzle) {
engine.puzzle.checkLevelEnd();
} else {
engine.action.checkLevelEnd();
}
}
function loadLevel(data) {
var _local2 = 0;
while (_local2 < data.length) {
pills.push(backLayer.attachMovie("CPill", "CPill" + backLayer.getNextHighestDepth(), backLayer.getNextHighestDepth(), {engine:engine, game:this, pType:data[_local2 + 2], maxStartSleepFrames:0, minStartSleepFrames:0, _x:data[_local2], _y:data[_local2 + 1], generateCoord:false}));
if (gameType == gameTypeTutorial) {
pills[pills.length - 1].enabled = false;
}
if (data == CGlobal.level1_1) {
hintProgress = 0;
if (_local2 == 0) {
processGameHint(0);
pills[pills.length - 1].sayGameOnRelease = 1;
} else if (_local2 == 3) {
pills[pills.length - 1].sayGameOnRollOver = 2;
}
} else if (data == CGlobal.level1_2) {
processGameHint(3);
if (_local2 == 9) {
pills[pills.length - 1].sayGameOnRelease = 4;
} else if ((_local2 == 3) || (_local2 == 6)) {
pills[pills.length - 1].sayGameOnRelease = -1;
}
}
_local2 = _local2 + 3;
}
if (paused) {
pause();
}
}
function processGameHint(val) {
if (val == -1) {
pointer.removeMovieClip();
}
if (hintProgress == 10) {
return(undefined);
}
if (val > 0) {
if ((val == (hintProgress + 1)) || (val == 10)) {
hintProgress = val;
} else {
return(undefined);
}
}
if (val == 0) {
hint = attachMovie("hint1", "hint1" + getNextHighestDepth(), getNextHighestDepth());
hint._x = CGlobal.gameWidth / 2;
hint._y = CGlobal.gameHeight * 0.85;
pointer = attachMovie("cursorAnim0", "cursorAnim0" + getNextHighestDepth(), getNextHighestDepth());
pointer._x = 148;
pointer._y = 280;
} else if (val == 1) {
hint.removeMovieClip();
hint = attachMovie("hint2", "hint2" + getNextHighestDepth(), getNextHighestDepth());
hint._x = 75;
hint._y = CGlobal.gameHeight * 0.48;
pointer.removeMovieClip();
pointer = attachMovie("cursorAnim1", "cursorAnim1" + getNextHighestDepth(), getNextHighestDepth());
pointer._x = 176;
pointer._y = 250;
} else if (val == 2) {
pointer.removeMovieClip();
hint.removeMovieClip();
hint = attachMovie("hint3", "hint3" + getNextHighestDepth(), getNextHighestDepth());
hint._x = 95;
hint._y = CGlobal.gameHeight * 0.84;
} else if (val == 3) {
pointer.removeMovieClip();
hint.removeMovieClip();
hint = attachMovie("hint4", "hint4" + getNextHighestDepth(), getNextHighestDepth());
hint._x = 95;
hint._y = CGlobal.gameHeight * 0.2;
pointer = attachMovie("cursorAnim4", "cursorAnim4" + getNextHighestDepth(), getNextHighestDepth());
pointer._x = 235;
pointer._y = 170;
} else if (val == 4) {
pointer.removeMovieClip();
hint.removeMovieClip();
hint = attachMovie("hint5", "hint5" + getNextHighestDepth(), getNextHighestDepth());
pointer = attachMovie("cursorAnim5", "cursorAnim5" + getNextHighestDepth(), getNextHighestDepth());
pointer._x = 235;
pointer._y = 170;
hint._x = 340;
hint._y = CGlobal.gameHeight * 0.2;
} else if (val == 5) {
pointer.removeMovieClip();
hint.removeMovieClip();
hint = attachMovie("hint6", "hint6" + getNextHighestDepth(), getNextHighestDepth());
hint.onRelease = function () {
if (this._parent.engine.state == CEngine.statePuzzle) {
this._parent.engine.puzzle.resumeParticles();
} else {
this._parent.engine.action.resumeParticles();
}
this.removeMovieClip();
};
} else if (val == 6) {
hint.removeMovieClip();
hint = attachMovie("hint7", "hint7" + getNextHighestDepth(), getNextHighestDepth());
hint.onRelease = function () {
if (this._parent.engine.state == CEngine.statePuzzle) {
this._parent.engine.puzzle.resumeParticles();
} else {
this._parent.engine.action.resumeParticles();
}
this.removeMovieClip();
};
} else if (val == 10) {
pointer.removeMovieClip();
hint.removeMovieClip();
hint = attachMovie("hint8", "hint8" + getNextHighestDepth(), getNextHighestDepth());
hint.onRelease = function () {
if (this._parent.engine.state == CEngine.statePuzzle) {
this._parent.engine.puzzle.restart();
} else {
this._parent.engine.action.restart();
}
this.removeMovieClip();
};
}
}
function restartLevel() {
if (_parent.engine.state == CEngine.statePuzzle) {
engine.puzzle.restart();
} else {
engine.action.restart();
}
}
function setState(newState) {
if (newState == gameStateFinishing) {
var _local2 = 0;
while (_local2 < pills.length) {
pills[_local2].setState(CPill.stateRemoving);
_local2++;
}
mc.setState(CMixtureContainer.stateRemoving);
_local2 = 0;
while (_local2 < viruses.length) {
viruses[_local2].removeMovieClip();
_local2++;
}
}
gameState = newState;
}
function removePill(pill) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < pills.length) {
if (pills[_local2] != pill) {
_local3.push(pills[_local2]);
}
_local2++;
}
pills = _local3;
pill.removeMovieClip();
}
function addParticles(count, mix) {
engine.addParticles(count, mix);
}
function deselectPill() {
selectedPill = undefined;
hideSelection();
hideUnions();
hideAllConnections();
needProcessPills = true;
needFly = true;
}
function createSelections() {
selections = new Array();
selections.push(attachMovie("COSelection", "COSelection" + getNextHighestDepth(), getNextHighestDepth()));
selections.push(attachMovie("CPSelection", "CPSelection" + getNextHighestDepth(), getNextHighestDepth()));
selections.push(attachMovie("CGSelection", "CGSelection" + getNextHighestDepth(), getNextHighestDepth()));
var _local2 = 0;
while (_local2 < 3) {
selections[_local2]._visible = false;
selections[_local2].stop();
_local2++;
}
}
function removeSelections() {
var _local2 = 0;
while (_local2 < 3) {
selections[_local2].removeMovieClip();
_local2++;
}
}
function createUnions() {
unions = new Array();
var _local2 = 0;
while (_local2 < 3) {
unions.push(attachMovie("CUnion", "CUnion" + getNextHighestDepth(), getNextHighestDepth(), {uType:_local2, bitmaps:engine.bitmaps}));
unions[_local2]._visible = false;
_local2++;
}
}
function newGame() {
var _local4;
if (colorsQuantity == 2) {
if (CGlobal.targetGreen != 0) {
_local4 = CGlobal.rType;
}
if (CGlobal.targetPurple != 0) {
_local4 = CGlobal.yType;
}
if (CGlobal.targetOrange != 0) {
_local4 = CGlobal.bType;
}
}
var _local3 = 0;
while (_local3 < initialPillsQuantity) {
var _local2 = random(3);
do {
if (colorsQuantity != 2) {
break;
}
_local2 = random(3);
} while (_local2 == _local4);
pills.push(backLayer.attachMovie("CPill", "CPill" + backLayer.getNextHighestDepth(), backLayer.getNextHighestDepth(), {engine:engine, game:this, pType:_local2, maxStartSleepFrames:15, minStartSleepFrames:0}));
_local3++;
}
createSelections();
createUnions();
}
function createViruses() {
if (viruses.length < virusCount) {
viruses.push(cback1.attachMovie("CVirus", "CVirus" + cback1.getNextHighestDepth(), cback1.getNextHighestDepth(), {mc:mc, game:this, engine:engine, _x:((CGlobal.gameWidth / 2) + random(200)) - 100, _y:((CGlobal.gameHeight / 2) + random(200)) - 100}));
}
}
function addVirus() {
var _local2 = 0;
while (_local2 < viruses.length) {
if (viruses[_local2]._name == undefined) {
viruses[_local2] = cback1.attachMovie("CVirus", "CVirus" + cback1.getNextHighestDepth(), cback1.getNextHighestDepth(), {mc:mc, game:this, engine:engine, _x:((CGlobal.gameWidth / 2) + random(200)) - 100, _y:((CGlobal.gameHeight / 2) + random(200)) - 100});
return(undefined);
}
_local2++;
}
}
function showGameHint() {
deselectPill();
while (true) {
var _local3;
_local3 = pills[random(pills.length)];
if (((_local3.state != CPill.stateAnimating) && (_local3.state != CPill.stateRotating)) || (_local3.appearing)) {
continue;
}
var _local2 = 0;
while (_local2 < pills.length) {
if ((pills[_local2] != _local3) && (pills[_local2].pType != _local3.pType)) {
if (((pills[_local2].state != CPill.stateAnimating) && (pills[_local2].state != CPill.stateRotating)) || (pills[_local2].appearing)) {
} else {
var _local4 = getDistance(pills[_local2], _local3);
if (_local4 < CGlobal.MAX_DISTANCE) {
if (rect._name != undefined) {
rect.removeMovieClip();
}
rect = attachMovie("CRectangle", "CRectangle" + getNextHighestDepth(), getNextHighestDepth(), {_x:_local3._x, _y:_local3._y});
_local3.onRelease();
pills[_local2].onRollOver();
gameState = gameStateHint;
if (rect._name != undefined) {
rect.removeMovieClip();
}
rect = attachMovie("CRectangle", "CRectangle" + getNextHighestDepth(), getNextHighestDepth(), {_x:_local3._x, _y:_local3._y});
return(undefined);
}
}
}
_local2++;
}
}
}
function onEnterFrame() {
if (paused) {
return(undefined);
}
if (gameType == gameTypeIntroduce) {
var _local3;
if (engine.state == CEngine.statePuzzle) {
_local3 = engine.puzzle.mixtureIndicaror.particlesList;
} else {
_local3 = engine.action.mixtureIndicaror.particlesList;
}
if (((mc.mixtures[0].length == 1) && (mc.mixtures[0][0].weight == 1)) || ((mc.mixtures[1].length == 1) && (mc.mixtures[1][0].weight == 1))) {
processGameHint(10);
} else {
if ((hintProgress == 5) && (_local3.length <= 3)) {
if (engine.state == CEngine.statePuzzle) {
engine.puzzle.stopParticles();
} else {
engine.action.stopParticles();
}
processGameHint(6);
}
var _local2 = 0;
while (_local2 < _local3.length) {
if ((hintProgress < 5) && (_local3[_local2]._y > -100)) {
if (engine.state == CEngine.stateAction) {
engine.action.stopParticles();
} else {
engine.puzzle.stopParticles();
}
}
_local2++;
}
}
} else if (((tip._name == undefined) && (gameType == gameTypeAction)) && ((gameState == gameStatePlaying) || (gameState == gameStateHint))) {
moveHintTimer--;
if (moveHintTimer < 0) {
moveHintTimer = CGlobal.hintWait;
}
if ((moveHintTimer == 0) && ((selectedPill == undefined) || (rect._x != undefined))) {
trace("showHint");
moveHintTimer = CGlobal.hintWait;
showGameHint();
trace(rect._x);
}
}
if (gameState == gameStateFinishing) {
if ((mc.state == CMixtureContainer.stateDone) && (pills.length == 0)) {
setState(gameStateDone);
}
} else if (gameType == gameTypeAction) {
createViruses();
if (((ticker++) >= 10) && (needFly)) {
ticker = 0;
processPills();
}
if (needFly) {
var _local2 = 0;
while (_local2 < pills.length) {
pills[_local2].processRecession();
_local2++;
}
if (selectedPill != undefined) {
}
} else {
pushPillsFromMixtures();
}
}
mc.onTimer();
}
function redirrectViruses() {
var _local3;
var _local2 = 0;
while (_local2 < viruses.length) {
if (viruses[_local2]._name != undefined) {
_local3 = findTargetForVirus(viruses[_local2]);
if (_local3 != undefined) {
viruses[_local2].setTarget(_local3);
}
}
_local2++;
}
}
function targetVirus(mix) {
if (checkVirusesForMixture(mix)) {
return(undefined);
}
var _local6;
var _local4;
var _local5;
var _local2 = 0;
while (_local2 < viruses.length) {
if (!viruses[_local2].hasTarget) {
_local5 = Math.pow(mix._x - viruses[_local2]._x, 2) + Math.pow(mix._y - viruses[_local2]._y, 2);
if ((_local5 < _local4) || (_local4 == undefined)) {
_local6 = viruses[_local2];
}
}
_local2++;
}
if (_local6 != undefined) {
_local6.setTarget(mix);
}
}
function checkVirusesForMixture(mix) {
var _local2 = 0;
while (_local2 < viruses.length) {
if (viruses[_local2].hasTarget && (viruses[_local2].targetMixture == mix)) {
return(true);
}
_local2++;
}
return(false);
}
function findTargetForVirus(virus) {
var _local3;
var _local4;
var _local6;
var _local2 = 0;
while (_local2 < mc.mixtures.length) {
if (((mc.mixtures[_local2].length == 1) && (mc.mixtures[_local2][0].state == CMixture.stateReady)) && (!mc.mixtures[_local2][0].infected)) {
_local4 = Math.pow(mc.mixtures[_local2][0]._x - virus._x, 2) + Math.pow(mc.mixtures[_local2][0]._y - virus._y, 2);
if ((_local3 == undefined) || (_local4 < _local3)) {
_local3 = _local4;
_local6 = mc.mixtures[_local2][0];
}
}
_local2++;
}
return(_local6);
}
function processPills() {
needProcessPills = false;
var _local2 = new flash.geom.Point(0, 0);
var _local8;
var _local3;
var _local6 = 0;
while (_local6 < (pills.length - 1)) {
if (pills[_local6].state == CPill.stateDeleting) {
} else {
var _local4 = _local6 + 1;
while (_local4 < pills.length) {
if (pills[_local4].state == CPill.stateDeleting) {
} else {
_local2.x = pills[_local6].pos.x - pills[_local4].pos.x;
_local2.y = pills[_local6].pos.y - pills[_local4].pos.y;
if ((Math.abs(_local2.x) > 20) || (Math.abs(_local2.y) > 20)) {
} else {
_local8 = (_local2.x * _local2.x) + (_local2.y * _local2.y);
if (_local8 < CGlobal.MIN_PILLS_DISTANCE) {
needProcessPills = true;
_local3 = 4 / _local8;
if (_local3 > 0.3) {
_local3 = 0.3;
}
_local2.x = _local2.x * _local3;
_local2.y = _local2.y * _local3;
pills[_local6].dVel.x = pills[_local6].dVel.x + _local2.x;
pills[_local6].dVel.y = pills[_local6].dVel.y + _local2.y;
pills[_local4].dVel.x = pills[_local4].dVel.x - _local2.x;
pills[_local4].dVel.y = pills[_local4].dVel.y - _local2.y;
if (pills[_local6].dVel.length > 0.1) {
pills[_local6].dVel.normalize(0.1);
}
if (pills[_local4].dVel.length > 0.1) {
pills[_local4].dVel.normalize(0.1);
}
}
}
}
_local4++;
}
}
_local6++;
}
_local6 = 0;
while (_local6 < pills.length) {
if (pills[_local6].state == CPill.stateDeleting) {
} else {
var _local7 = 0;
while (_local7 < mc.mixtures.length) {
var _local5 = 0;
while (_local5 < mc.mixtures[_local7].length) {
_local2.x = pills[_local6].pos.x - mc.mixtures[_local7][_local5]._x;
_local2.y = pills[_local6].pos.y - mc.mixtures[_local7][_local5]._y;
if ((Math.abs(_local2.x) > 20) || (Math.abs(_local2.y) > 20)) {
} else {
_local8 = (_local2.x * _local2.x) + (_local2.y * _local2.y);
if (_local8 < CGlobal.MIN_PILLS_DISTANCE) {
needProcessPills = true;
_local3 = 4 / _local8;
if (_local3 > 0.3) {
_local3 = 0.3;
}
_local2.x = _local2.x * _local3;
_local2.y = _local2.y * _local3;
pills[_local6].dVel.x = pills[_local6].dVel.x + _local2.x;
pills[_local6].dVel.y = pills[_local6].dVel.y + _local2.y;
}
}
_local5++;
}
_local7++;
}
}
_local6++;
}
pushPillsFromMixtures();
}
function pushPillsFromMixtures() {
var _local2 = new flash.geom.Point(0, 0);
var _local6;
var _local5;
var _local3 = 0;
while (_local3 < pills.length) {
if (pills[_local3].state == CPill.stateDeleting) {
} else {
var _local4 = 0;
while (_local4 < viruses.length) {
_local2.x = pills[_local3].pos.x - viruses[_local4]._x;
_local2.y = pills[_local3].pos.y - viruses[_local4]._y;
if ((Math.abs(_local2.x) > 20) || (Math.abs(_local2.y) > 20)) {
} else {
_local6 = (_local2.x * _local2.x) + (_local2.y * _local2.y);
if (_local6 < CGlobal.MIN_PILLS_DISTANCE) {
needProcessPills = true;
_local5 = 4 / _local6;
if (_local5 > 0.3) {
_local5 = 0.3;
}
_local2.x = _local2.x * _local5;
_local2.y = _local2.y * _local5;
pills[_local3].dVel.x = pills[_local3].dVel.x + _local2.x;
pills[_local3].dVel.y = pills[_local3].dVel.y + _local2.y;
}
}
_local4++;
}
}
_local3++;
}
}
function findConnections() {
var _local4;
var _local5;
var _local7;
var _local6;
var _local3 = 0;
while (_local3 < (pills.length - 1)) {
if (pills[_local3].startSleepFrames > 0) {
} else {
var _local2 = _local3 + 1;
while (_local2 < pills.length) {
if (pills[_local3].pType != pills[_local2].pType) {
} else if (pills[_local2].startSleepFrames > 0) {
} else {
_local4 = pills[_local3].pos.subtract(pills[_local2].pos);
_local5 = _local4.length;
if (_local5 < CGlobal.MAX_CONNECTION_RADIUS) {
pills[_local3].connections.push(pills[_local2]);
pills[_local2].connections.push(pills[_local3]);
}
}
_local2++;
}
}
_local3++;
}
}
function removeConnections() {
var _local2 = 0;
while (_local2 < pills.length) {
pills[_local2].connections = new Array();
_local2++;
}
}
function showConnections(pill) {
var _local4 = getUnionType(pill, selectedPill);
pill.setState(CPill.stateAnimating);
if (engine.chainAssist) {
var _local2 = 0;
while (_local2 < mc.mixtures.length) {
if ((((mc.mixtures[_local2].length == 1) && (mc.mixtures[_local2][0].circle._visible == false)) && (mc.mixtures[_local2][0].mType == _local4)) && (mc.mixtures[_local2][0].state == CMixture.stateReady)) {
if ((Math.pow(pill._x - mc.mixtures[_local2][0]._x, 2) + Math.pow(pill._y - mc.mixtures[_local2][0]._y, 2)) < CGlobal.MAX_CONNECTION_RADIUS2) {
mc.mixtures[_local2][0].showCircle(_local4);
}
}
_local2++;
}
}
if (engine.chainAssist) {
pill.showCircle(_local4);
}
var _local2 = 0;
while (_local2 < pill.connections.length) {
if (pill.connections[_local2].state != CPill.stateAnimating) {
showConnections(pill.connections[_local2]);
}
_local2++;
}
}
function showMixures(pill) {
var _local4 = getUnionType(pill, selectedPill);
pill.setState(CPill.stateRotating);
mc.addMixture(pill, _local4);
if (engine.state == CEngine.statePuzzle) {
} else {
engine.action.curScore = engine.action.curScore + 10;
engine.action.score.scoreVal.text = engine.action.curScore;
}
removePillFromList(pill);
var _local2 = 0;
while (_local2 < pill.connections.length) {
if (pill.connections[_local2].state == CPill.stateAnimating) {
mc.addMixture(pill.connections[_local2], _local4);
removePillFromList(pill.connections[_local2]);
mc.addConnection(pill, pill.connections[_local2]);
pill.connections[_local2].setState(CPill.stateRotating);
showMixures(pill.connections[_local2]);
}
_local2++;
}
}
function removePillFromList(pill) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < pills.length) {
if (pills[_local2] != pill) {
_local3.push(pills[_local2]);
}
_local2++;
}
pills = _local3;
}
function mixPill(pill) {
if (pill == selectedPill) {
return(undefined);
}
if ((pill.pType == selectedPill.pType) || (getDistance(pill, selectedPill) > CGlobal.MAX_DISTANCE)) {
selectPill(pill);
return(undefined);
}
needFly = true;
mc.addChain();
showMixures(pill);
nTicksDelete = 0;
removeUnion(pill);
mc.checkChains();
removePill(selectedPill);
selectedPill = undefined;
hideUnions();
reAddPills();
}
function reAddPills() {
var _local9 = new Array();
i = 0;
while (i < pills.length) {
if (pills[i]._name != undefined) {
_local9.push(pills[i]);
}
i++;
}
pills = _local9;
var _local3;
if (colorsQuantity == 2) {
if (CGlobal.targetGreen != 0) {
_local3 = CGlobal.rType;
}
if (CGlobal.targetPurple != 0) {
_local3 = CGlobal.yType;
}
if (CGlobal.targetOrange != 0) {
_local3 = CGlobal.bType;
}
}
var i = pills.length;
while (i < initialPillsQuantity) {
var _local2 = random(3);
do {
if (colorsQuantity != 2) {
break;
}
_local2 = random(3);
} while (_local2 == _local3);
pills.push(backLayer.attachMovie("CPill", "CPill" + backLayer.getNextHighestDepth(), backLayer.getNextHighestDepth(), {engine:engine, game:this, pType:_local2, maxStartSleepFrames:5, minStartSleepFrames:30}));
i++;
}
}
function removeUnion(pill) {
nTicksDelete = nTicksDelete + 1;
pill.ticksToDelete = nTicksDelete;
pill.setState(CPill.stateDeleting);
var _local2 = 0;
while (_local2 < pill.connections.length) {
if (pill.connections[_local2].state != CPill.stateDeleting) {
removeUnion(pill.connections[_local2]);
}
_local2++;
}
}
function hideAllConnections() {
var _local3 = 0;
while (_local3 < pills.length) {
if (pills[_local3] != selectedPill) {
pills[_local3].setState(CPill.stateRotating);
}
_local3++;
}
_local3 = 0;
while (_local3 < mc.mixtures.length) {
var _local2 = 0;
while (_local2 < mc.mixtures[_local3].length) {
mc.mixtures[_local3][_local2].hideCircle();
_local2++;
}
_local3++;
}
}
function showUnion(pill) {
var _local4 = getDistance(pill, selectedPill);
if ((selectedPill.pType != pill.pType) && (_local4 < CGlobal.MAX_DISTANCE)) {
removeConnections();
findConnections();
hideUnions();
hideSelection();
hideAllConnections();
showConnections(pill);
var _local3 = getUnionType(pill, selectedPill);
pill.hideCircle();
unions[_local3]._visible = true;
var _local5 = Math.atan2(pill._y - selectedPill._y, pill._x - selectedPill._x);
unions[_local3]._x = (Math.abs(pill._x - selectedPill._x) / 2) + Math.min(pill._x, selectedPill._x);
unions[_local3]._y = (Math.abs(pill._y - selectedPill._y) / 2) + Math.min(pill._y, selectedPill._y);
unions[_local3]._rotation = ((_local5 * 180) / Math.PI) + 90;
}
}
function hideSelection() {
selections[curSelectionIndex]._visible = false;
selections[curSelectionIndex].stop();
}
function showSelection() {
selections[curSelectionIndex]._visible = true;
selections[curSelectionIndex].start();
}
function hideUnions() {
unions[0]._visible = false;
unions[1]._visible = false;
unions[2]._visible = false;
}
function existsSelectedPill() {
return(((selectedPill == undefined) ? false : true));
}
function selectPill(pill) {
moveHintTimer = CGlobal.hintWait;
needFly = false;
hideUnions();
removeConnections();
findConnections();
selectedPill = pill;
hideAllConnections();
pill.setState(CPill.stateAnimating);
var _local5 = getNearestPill(pill);
var _local3 = getUnionType(_local5, pill);
needProcessPills = false;
var _local2 = 0;
while (_local2 < 3) {
if (_local2 != _local3) {
selections[_local2]._visible = false;
selections[_local2].stop();
} else {
curSelectionIndex = _local2;
selections[_local3].setToPill(pill);
selections[_local3]._visible = true;
selections[_local3].play();
}
_local2++;
}
}
function getUnionType(pill1, pill2) {
switch (pill1.pType + pill2.pType) {
case CGlobal.yType + CGlobal.rType :
return(0);
case CGlobal.bType + CGlobal.yType :
return(2);
}
return(1);
}
function getDistance(pill1, pill2) {
return(flash.geom.Point.distance(pill1.pos, pill2.pos));
}
function getNearestPill(pill) {
var _local6;
var _local3;
var _local4;
var _local2 = 0;
while (_local2 < pills.length) {
if (pills[_local2].pType == pill.pType) {
} else {
_local4 = getDistance(pill, pills[_local2]);
if ((_local4 < _local3) || (_local3 == undefined)) {
_local3 = _local4;
_local6 = pills[_local2];
}
}
_local2++;
}
return(_local6);
}
static var gameStatePlaying = 1;
static var gameStateFinishing = 2;
static var gameStateDone = 3;
static var gameStateHint = 4;
static var gameTypeAction = 0;
static var gameTypePuzzle = 1;
static var gameTypeIntroduce = 2;
static var gameTypeTutorial = 3;
var paused = false;
}
Symbol 736 MovieClip [__Packages.CEngine] Frame 0
class CEngine extends MovieClip
{
var nextLevelKind, sounds, chainAssist, bitmaps, state, attachMovie, getNextHighestDepth, intro, action, puzzle, mcontinue, mainMenu, tutorial, help, options, nextLevelWnd;
function CEngine () {
super();
nextLevelKind = 0;
sounds = new CSounds();
chainAssist = true;
bitmaps = new CBitmaps();
state = stateIntro;
var _local3 = attachMovie("CIntro", "CIntro" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
intro = _local3;
}
function addParticles(count, mix) {
if (state == stateAction) {
action.addParticles(count, mix);
} else {
puzzle.addParticles(count, mix);
}
}
function setState(newState) {
switch (newState) {
case stateContinuePuzzle :
mcontinue = attachMovie("CContinue", "CContinue" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, puzzle:true});
mainMenu.setEnabled(false);
break;
case stateContinueAction :
mcontinue = attachMovie("CContinue", "CContinue" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, puzzle:false});
mainMenu.setEnabled(false);
break;
case stateAction :
if (state == stateOptions) {
action.resume();
break;
}
if (state == stateMainMenu) {
if (action != undefined) {
state = stateAction;
setState(stateContinueAction);
return(undefined);
}
setState(stateTutorial);
return(undefined);
}
tutorial.removeMovieClip();
mainMenu.removeMovieClip();
action = attachMovie("CGameWindow", "CGameWindow" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, currentLevel:1});
break;
case statePuzzle :
if (state == stateOptions) {
state = statePuzzle;
puzzle.resume();
} else {
if (puzzle != undefined) {
setState(stateContinuePuzzle);
return(undefined);
}
state = statePuzzle;
mainMenu.removeMovieClip();
puzzle = attachMovie("CGameWindow", "CGameWindow" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, currentLevel:6});
puzzle.game.showHint();
puzzle.startScore = 0;
break;
help = attachMovie("CHelp", "CHelp" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, prevGameState:state});
mainMenu.setEnabled(false);
break;
switch (state) {
case stateIntro :
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
intro.removeMovieClip();
break;
case stateHelp :
mainMenu.setEnabled(true);
help.disappear();
break;
case stateOptions :
if (options.prevGameState == stateMainMenu) {
mainMenu.setEnabled(true);
} else if ((options.prevGameState == stateAction) || (options.prevGameState == statePuzzle)) {
action.pause();
action._visible = false;
puzzle.pause();
puzzle._visible = false;
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
}
break;
case stateAction :
action._visible = false;
action.trys--;
action.restartLevel();
action.pause();
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
break;
case statePuzzle :
puzzle._visible = false;
puzzle.trys--;
puzzle.restartLevel();
puzzle.pause();
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
}
break;
if (state == stateMainMenu) {
options = attachMovie("COptions", "COptions" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, _x:CGlobal.gameWidth, _y:150, prevGameState:state, optionsType:COptions.optionsTypeMainMenu});
mainMenu.setEnabled(false);
} else if (state == stateHelp) {
help.disappear();
} else {
options = attachMovie("COptions", "COptions" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, _x:CGlobal.gameWidth, _y:150, prevGameState:state, optionsType:COptions.optionsTypeGame});
}
break;
tutorial = attachMovie("CTutorial", "CTutorial" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
mainMenu.setEnabled(false);
}
case stateHelp :
help = attachMovie("CHelp", "CHelp" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, prevGameState:state});
mainMenu.setEnabled(false);
break;
case stateMainMenu :
switch (state) {
case stateIntro :
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
intro.removeMovieClip();
break;
case stateHelp :
mainMenu.setEnabled(true);
help.disappear();
break;
case stateOptions :
if (options.prevGameState == stateMainMenu) {
mainMenu.setEnabled(true);
} else if ((options.prevGameState == stateAction) || (options.prevGameState == statePuzzle)) {
action.pause();
action._visible = false;
puzzle.pause();
puzzle._visible = false;
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
}
break;
case stateAction :
action._visible = false;
action.trys--;
action.restartLevel();
action.pause();
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
break;
case statePuzzle :
puzzle._visible = false;
puzzle.trys--;
puzzle.restartLevel();
puzzle.pause();
mainMenu = attachMovie("CMainMenu", "CMainMenu" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
}
break;
case stateOptions :
if (state == stateMainMenu) {
options = attachMovie("COptions", "COptions" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, _x:CGlobal.gameWidth, _y:150, prevGameState:state, optionsType:COptions.optionsTypeMainMenu});
mainMenu.setEnabled(false);
} else if (state == stateHelp) {
help.disappear();
} else {
options = attachMovie("COptions", "COptions" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, _x:CGlobal.gameWidth, _y:150, prevGameState:state, optionsType:COptions.optionsTypeGame});
}
break;
case stateTutorial :
tutorial = attachMovie("CTutorial", "CTutorial" + getNextHighestDepth(), getNextHighestDepth(), {engine:this});
mainMenu.setEnabled(false);
}
state = newState;
}
function showGameOver() {
var _local2;
var _local3;
if (state == statePuzzle) {
_local2 = puzzle.curScore;
_local3 = puzzle.trys;
} else {
_local2 = action.curScore;
_local3 = action.trys;
}
attachMovie("CGameOver", "CGameOver" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, sScore:_local2, sTries:_local3, sRank:"STUDENT"});
}
function continuePlaying(flag) {
if (flag) {
mcontinue.removeMovieClip();
state = statePuzzle;
puzzle._visible = true;
puzzle.resume();
action._visible = false;
} else {
mcontinue.removeMovieClip();
state = stateAction;
puzzle._visible = false;
action._visible = true;
action.resume();
}
mainMenu.removeMovieClip();
}
function startNewGame(flag) {
if (flag) {
mcontinue.removeMovieClip();
state = statePuzzle;
puzzle.removeMovieClip();
puzzle = undefined;
puzzle = attachMovie("CGameWindow", "CGameWindow" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, currentLevel:6});
puzzle.game.showHint();
puzzle.startScore = 0;
} else {
mcontinue.removeMovieClip();
state = stateAction;
action.removeMovieClip();
action = undefined;
action = attachMovie("CGameWindow", "CGameWindow" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, currentLevel:1});
}
mainMenu.removeMovieClip();
}
function showNextLevelWindow(_type) {
if (_type == 1) {
nextLevelWnd = attachMovie("CNextLevel2", "CNextLevel" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, command:_type});
return(undefined);
}
if (nextLevelKind == 0) {
nextLevelWnd = attachMovie("CNextLevel", "CNextLevel" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, command:_type});
nextLevelKind = 1;
} else {
nextLevelWnd = attachMovie("CNextLevel1", "CNextLevel" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, command:_type});
nextLevelKind = 0;
}
}
function gotoNextLevel() {
if (state == statePuzzle) {
var _local2 = puzzle.currentLevel + 1;
if (_local2 == 10) {
puzzle.removeMovieClip();
puzzle = undefined;
setState(stateMainMenu);
return(undefined);
}
var _local3 = puzzle.curScore;
puzzle.removeMovieClip();
puzzle = attachMovie("CGameWindow", "CGameWindow" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, currentLevel:_local2});
puzzle.addScore(_local3);
puzzle.startScore = _local3;
puzzle.game.showHint();
} else {
var _local2 = action.currentLevel + 1;
if (_local2 == 6) {
_local2 = 10;
}
if (_local2 == 15) {
action.removeMovieClip();
action = undefined;
setState(stateMainMenu);
return(undefined);
}
var _local3 = action.curScore;
action.removeMovieClip();
action = attachMovie("CGameWindow", "CGameWindow" + getNextHighestDepth(), getNextHighestDepth(), {engine:this, currentLevel:_local2});
action.addScore(_local3);
}
nextLevelWnd.removeMovieClip();
}
static function downloadFreeTrial() {
getURL (CLinks.freeTrialLink, "blank");
}
static function tellAFriend() {
getURL (CLinks.tellAFriendLink, "blank");
}
static var stateAction = 1;
static var statePuzzle = 2;
static var stateHelp = 3;
static var stateMainMenu = 4;
static var stateOptions = 5;
static var stateTutorial = 6;
static var stateIntro = 7;
static var stateContinuePuzzle = 8;
static var stateContinueAction = 9;
}
Symbol 737 MovieClip [__Packages.CBitmaps] Frame 0
class CBitmaps
{
var unions, bBitmaps, rBitmaps, yBitmaps, mg, mo, mp, circles, virus;
function CBitmaps () {
createPillBitmaps();
createUnionBitmaps();
createMixtureBitmaps();
createCirclesBitmaps();
createVirusBitmap();
}
function createUnionBitmaps() {
unions = new Array();
unions.push(flash.display.BitmapData.loadBitmap("OUnion"));
unions.push(flash.display.BitmapData.loadBitmap("PUnion"));
unions.push(flash.display.BitmapData.loadBitmap("GUnion"));
}
function createPillBitmaps() {
bBitmaps = new Array();
rBitmaps = new Array();
yBitmaps = new Array();
var _local2 = 0;
while (_local2 < CGlobal.nBitmapsAnim) {
bBitmaps.push(flash.display.BitmapData.loadBitmap(((_local2 < 10) ? ("blue000" + _local2) : ("blue00" + _local2))));
rBitmaps.push(flash.display.BitmapData.loadBitmap(((_local2 < 10) ? ("red000" + _local2) : ("red00" + _local2))));
yBitmaps.push(flash.display.BitmapData.loadBitmap(((_local2 < 10) ? ("yellow000" + _local2) : ("yellow00" + _local2))));
_local2++;
}
}
function createMixtureBitmaps() {
mg = new Array();
mo = new Array();
mp = new Array();
var _local2 = 0;
while (_local2 < (CGlobal.nBitmapsMixture + 2)) {
mg.push(flash.display.BitmapData.loadBitmap(((_local2 < 10) ? ("mg000" + _local2) : ("mg00" + _local2))));
mo.push(flash.display.BitmapData.loadBitmap(((_local2 < 10) ? ("mo000" + _local2) : ("mo00" + _local2))));
mp.push(flash.display.BitmapData.loadBitmap(((_local2 < 10) ? ("mp000" + _local2) : ("mp00" + _local2))));
_local2++;
}
}
function createCirclesBitmaps() {
circles = new Array();
circles.push(flash.display.BitmapData.loadBitmap("oc"));
circles.push(flash.display.BitmapData.loadBitmap("pc"));
circles.push(flash.display.BitmapData.loadBitmap("gc"));
}
function createVirusBitmap() {
virus = flash.display.BitmapData.loadBitmap("virus0000");
}
function getVirusBitmap() {
return(virus);
}
function getCircleBitmap(bType) {
return(circles[bType]);
}
function getMixtureBitmap(mType, frame) {
switch (mType) {
case CGlobal.gType :
return(mg[frame]);
case CGlobal.oType :
return(mo[frame]);
case CGlobal.pType :
return(mp[frame]);
}
}
function getUnionBitmap(uType) {
return(unions[uType]);
}
function getbBitmap(frame) {
return(getPillBitmap(CGlobal.bType, frame));
}
function getrBitmap(frame) {
return(getPillBitmap(CGlobal.rType, frame));
}
function getyBitmap(frame) {
return(getPillBitmap(CGlobal.yType, frame));
}
function getPillBitmap(bType, frame) {
switch (bType) {
case CGlobal.bType :
return(bBitmaps[frame]);
case CGlobal.rType :
return(rBitmaps[frame]);
case CGlobal.yType :
return(yBitmaps[frame]);
}
}
}
Symbol 738 MovieClip [__Packages.CGlobal] Frame 0
class CGlobal
{
function CGlobal () {
}
static var gameWidth = 464;
static var gameHeight = 420;
static var gameTop = 15;
static var gameLeft = 173;
static var gameBorderTop = 15;
static var gameBorderLeft = 35;
static var gameBorderWidth = 435;
static var gameBorderHeight = 395;
static var nBitmapsAnim = 20;
static var bType = 0;
static var rType = 1;
static var yType = 2;
static var gType = 2;
static var oType = 0;
static var pType = 1;
static var MAX_DISTANCE = 54;
static var MIN_PILLS_DISTANCE = 1600;
static var MAX_CONNECTION_RADIUS = 54;
static var MAX_CONNECTION_RADIUS2 = 2916;
static var nBitmapsMixture = 29;
static var MINUS_WEIGHT_TICKS = 200;
static var MIN_SLEEP_VIRUS = 5;
static var MAX_SLEEP_VIRUS = 8;
static var fps = 25;
static var hintWait = 300;
static var level1_1 = new Array(140, 270, 1, 174, 244, 0, 134, 149, 0, 165, 172, 0, 186, 204, 0, 222, 233, 0, 255, 250, 0, 291, 267, 0);
static var level1_2 = new Array(178, 206, 0, 224, 207, 0, 264, 204, 0, 229, 165, 1);
static var level6 = new Array(143, 137, 0, 169, 137, 1, 193, 137, 1, 219, 137, 1, 246, 137, 1, 269, 137, 1, 295, 137, 1, 322, 137, 1, 322, 162, 1, 322, 186, 1, 322, 210, 1, 322, 235, 1, 322, 262, 1, 322, 288, 1, 322, 311, 1, 297, 311, 1, 271, 311, 1, 246, 311, 1, 220, 311, 1, 194, 311, 1, 169, 311, 1, 143, 311, 1, 143, 286, 1, 143, 262, 1, 143, 237, 1, 143, 213, 1);
static var level7 = new Array(195, 285, 0, 195, 261, 1, 195, 235, 1, 195, 209, 1, 195, 185, 1, 195, 162, 1, 195, 138, 1, 221, 138, 0, 247, 138, 0, 271, 138, 0, 296, 138, 0, 321, 138, 1);
static var level8 = new Array(195, 336, 0, 195, 312, 0, 195, 286, 0, 195, 260, 0, 195, 236, 0, 195, 211, 0, 195, 187, 0, 195, 161, 0, 195, 137, 0, 221, 161, 2, 247, 161, 2, 271, 161, 2, 297, 161, 2, 297, 186, 2, 297, 211, 2, 297, 235, 2, 297, 260, 2, 297, 285, 2, 297, 310, 2, 271, 310, 1, 245, 310, 0, 221, 310, 0);
static var level9 = new Array(39, 138, 2, 39, 164, 2, 39, 188, 2, 39, 213, 2, 65, 213, 2, 92, 213, 2, 115, 213, 2, 143, 213, 2, 167, 213, 2, 192, 213, 2, 38, 262, 1, 219, 213, 1, 268, 213, 0, 296, 213, 0, 322, 213, 0, 346, 213, 0, 371, 213, 0, 399, 213, 0, 423, 213, 0, 423, 239, 0, 423, 263, 0, 423, 286, 0);
static var tutorialLevel = new Array(137, 88, 1, 144, 55, 1, 161, 42, 1, 185, 30, 1, 211, 28, 1, 236, 42, 1, 261, 57, 1, 277, 80, 1, 235, 103, 1, 221, 73, 1, 184, 76, 0);
static var help1Level = new Array(113, 55, 2, 159, 55, 1);
static var help2Level = new Array(48, 55, 1, 63, 68, 0, 80, 75, 0, 98, 81, 0, 121, 81, 0, 138, 68, 0, 156, 51, 0, 174, 32, 0, 190, 20, 0, 213, 20, 0, 230, 32, 0);
}
Symbol 739 MovieClip [__Packages.CSounds] Frame 0
class CSounds
{
var combos, explode, win, select, music;
function CSounds () {
combos = new Array();
var _local3;
var _local2 = 1;
while (_local2 < 10) {
_local3 = new Sound();
_local3.attachSound("combo" + _local2);
combos.push(_local3);
_local2++;
}
explode = new Sound();
explode.attachSound("snd_explode");
win = new Sound();
win.attachSound("win");
select = new Sound();
select.attachSound("select");
music = new Sound();
music.attachSound("music");
music.onSoundComplete = function () {
this.start();
};
music.start();
}
function playSelect() {
select.start();
}
function playCombo() {
combos[random(9) + 1].start();
}
function playExplode() {
explode.start();
}
function playWin() {
win.start();
}
function setVolume(val) {
explode.setVolume(val);
}
function getVolume() {
return(explode.getVolume());
}
}
Symbol 740 MovieClip [__Packages.CMixture] Frame 0
class CMixture extends MovieClip
{
var infected, captiondx, captiondy, dr, state, curFrame, dummys, createEmptyMovieClip, getNextHighestDepth, engine, mType, connections, caption, _parent, circle, _visible, mc, weight, _x, infectedx, _y, infectedy, _rotation, pill, dx, dy, _xscale, _yscale, destX, destY, n;
function CMixture () {
super();
infected = false;
captiondx = 20;
captiondy = -10;
dr = (random(20) - 10) / 30;
setWeight(1);
state = stateAppearing;
curFrame = 0;
dummys = new Array();
var _local3 = 0;
while (_local3 < (CGlobal.nBitmapsMixture + 2)) {
dummys.push(createEmptyMovieClip("dummy" + getNextHighestDepth(), getNextHighestDepth()));
dummys[_local3].attachBitmap(engine.bitmaps.getMixtureBitmap(mType, _local3), dummys[_local3].getNextHighestDepth(), "never", true);
if (_local3 == CGlobal.nBitmapsMixture) {
dummys[_local3]._xscale = 50;
dummys[_local3]._yscale = 50;
}
dummys[_local3]._x = dummys[_local3]._x - (dummys[_local3]._width / 2);
dummys[_local3]._y = dummys[_local3]._y - (dummys[_local3]._height / 2);
if (_local3 != 0) {
dummys[_local3]._visible = false;
}
_local3++;
}
connections = new Array();
caption = _parent.attachMovie("CMixtureWeight", "CMixtureWeight" + _parent.getNextHighestDepth(), _parent.getNextHighestDepth(), {_visible:false});
circle = _parent.attachMovie("CCircle", "CCircle" + _parent.getNextHighestDepth(), _parent.getNextHighestDepth(), {pill:this, engine:engine, cType:0, _visible:false});
_visible = false;
}
function showCircle(cType) {
circle.setType(cType);
circle._visible = true;
}
function hideCircle() {
circle._visible = false;
}
function onUnload() {
caption.removeMovieClip();
circle.removeMovieClip();
}
function onEnterFrame() {
if (mc.paused) {
return(undefined);
}
if (infected) {
if ((minusWeightTimer--) < 0) {
minusWeightTimer = CGlobal.MINUS_WEIGHT_TICKS;
setWeight(weight - 1);
if (weight == 0) {
setState(stateDeleting);
mc.game.addVirus();
}
}
_x = (infectedx + (random(10) / 10)) - 0.5;
_y = (infectedy + (random(10) / 10)) - 0.5;
}
_rotation = _rotation + dr;
if (pill._name != undefined) {
return(undefined);
}
_visible = true;
caption._x = _x + captiondx;
caption._y = _y + captiondy;
switch (state) {
case stateAppearing :
if (curFrame < CGlobal.nBitmapsMixture) {
nextAnimFrame();
}
if (curFrame < CGlobal.nBitmapsMixture) {
nextAnimFrame();
}
_x = _x + dx;
_y = _y + dy;
break;
case stateReady :
_x = _x + dx;
_y = _y + dy;
break;
case stateCompressing :
processCompressing();
break;
case stateExploding :
processExploding();
break;
case stateDeleting :
if (_xscale > 5) {
_xscale = _xscale - 5;
_yscale = _yscale - 5;
} else {
mc.removeMixture(this);
}
break;
case stateRemoving :
_xscale = _xscale - 10;
_yscale = _yscale - 10;
if (_xscale != 0) {
break;
}
mc.removeMixture(this);
}
}
function processExploding() {
if (dummys[CGlobal.nBitmapsMixture]._xscale < 100) {
dummys[CGlobal.nBitmapsMixture]._xscale = dummys[CGlobal.nBitmapsMixture]._xscale + 2;
dummys[CGlobal.nBitmapsMixture]._yscale = dummys[CGlobal.nBitmapsMixture]._yscale + 2;
dummys[CGlobal.nBitmapsMixture]._x = (-dummys[CGlobal.nBitmapsMixture]._width) / 2;
dummys[CGlobal.nBitmapsMixture]._y = (-dummys[CGlobal.nBitmapsMixture]._height) / 2;
captiondx = captiondx + 1;
captiondy = captiondy - 1;
mc.pushPillsFromMixture(this);
} else {
engine.sounds.playExplode();
if (engine.state == CEngine.statePuzzle) {
} else {
engine.action.curScore = engine.action.curScore + Math.pow(weight, 2);
engine.action.score.scoreVal.text = engine.action.curScore;
}
mc.addExplodes(weight, mType, _x, _y);
mc.addParticles(weight, this);
mc.removeMixture(this);
mc.cleanMixtures();
}
}
function setState(newState) {
if (state == stateRemoving) {
return(undefined);
}
switch (newState) {
case stateExploding :
dummys[CGlobal.nBitmapsMixture - 1]._visible = false;
dummys[CGlobal.nBitmapsMixture]._visible = true;
break;
case stateReady :
state = newState;
mc.game.redirrectViruses();
break;
case stateRemoving :
_xscale = 100;
_yscale = 100;
}
state = newState;
}
function infect() {
minusWeightTimer = CGlobal.MINUS_WEIGHT_TICKS;
infected = true;
infectedx = _x;
infectedy = _y;
dummys[CGlobal.nBitmapsMixture - 1]._visible = false;
dummys[CGlobal.nBitmapsMixture + 1]._visible = true;
}
function movePills() {
mc.pushPillsFromMixture(this);
}
function nextAnimFrame() {
if (curFrame == (CGlobal.nBitmapsMixture - 1)) {
setState(stateReady);
mc.checkChains();
return(undefined);
}
dummys[curFrame]._visible = false;
curFrame++;
dummys[curFrame]._visible = true;
}
function addConnection(mix) {
connections.push(mix);
}
function removeConnection(mix) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < connections.length) {
if (connections[_local2] != mix) {
_local3.push(connections[_local2]);
}
_local2++;
}
connections = _local3;
}
function checkCompress() {
if (connections.length > 1) {
if ((engine.puzzle.currentLevel != 7) || (engine.state != CEngine.statePuzzle)) {
dx = (destX - _x) / 50;
dy = (destY - _y) / 50;
} else {
dx = (destX - _x) / 170;
dy = (destY - _y) / 170;
}
return(undefined);
}
if (connections.length == 0) {
dx = 0;
dy = 0;
return(undefined);
}
if ((state != stateReady) || (connections[0].state != stateReady)) {
return(undefined);
}
n = 7;
var _local3 = ((connections[0].connections.length > 1) ? (connections[0]._x + (((destX - connections[0]._x) * n) / 50)) : (connections[0]._x));
var _local2 = ((connections[0].connections.length > 1) ? (connections[0]._y + (((destY - connections[0]._y) * n) / 50)) : (connections[0]._y));
dx = (_local3 - _x) / n;
dy = (_local2 - _y) / n;
state = stateCompressing;
}
function healMixture() {
if (infected) {
mc.game.addVirus();
}
infected = false;
dummys[CGlobal.nBitmapsMixture - 1]._visible = true;
dummys[CGlobal.nBitmapsMixture + 1]._visible = false;
}
function setWeight(val) {
weight = val;
caption.setMixtureWeight(weight);
}
function processCompressing() {
if (n == 0) {
mc.removeConnection(this, connections[0]);
connections[0].setWeight(weight + connections[0].weight);
engine.sounds.playCombo();
mc.removeMixture(this);
}
_x = _x + dx;
_y = _y + dy;
n--;
}
static var stateAppearing = 0;
static var stateReady = 1;
static var stateCompressing = 2;
static var stateExploding = 3;
static var stateDeleting = 4;
static var stateRemoving = 5;
var minusWeightTimer = 0;
}
Symbol 741 MovieClip [__Packages.CMixtureContainer] Frame 0
class CMixtureContainer
{
var state, lines, mixtures, pills, explodes, back, fore, engine, game;
function CMixtureContainer (back, fore, engine, game) {
state = statePlaying;
lines = new Array();
mixtures = new Array();
pills = new Array();
explodes = new Array();
this.back = back;
this.fore = fore;
this.engine = engine;
this.game = game;
}
function pause() {
paused = true;
}
function resume() {
paused = false;
}
function removeExplode(exp) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < explodes.length) {
if (explodes[_local2] != exp) {
_local3.push(explodes[_local2]);
}
_local2++;
}
explodes = _local3;
exp.removeMovieClip();
if (explodes.length == 0) {
if (engine.state == CEngine.stateAction) {
engine.action.checkLevelEnd();
} else {
engine.puzzle.checkLevelEnd();
}
}
}
function setState(newState) {
if (newState == stateRemoving) {
removeLines();
var _local3 = 0;
while (_local3 < mixtures.length) {
var _local2 = 0;
while (_local2 < mixtures[_local3].length) {
mixtures[_local3][_local2].setState(CMixture.stateRemoving);
_local2++;
}
_local3++;
}
}
state = newState;
}
function removeLines() {
var _local2 = 0;
while (_local2 < lines.length) {
lines[_local2].removeMovieClip();
_local2++;
}
lines = new Array();
}
function addChain() {
game.nChains++;
delete pills;
pills = new Array();
mixtures.push(new Array());
}
function onTimer() {
if (state == stateRemoving) {
var _local2 = 0;
while (_local2 < mixtures.length) {
if (mixtures[_local2].length != 0) {
return(undefined);
}
_local2++;
}
setState(stateDone);
} else {
processChains();
}
}
function processChains() {
var _local3 = 0;
while (_local3 < mixtures.length) {
var _local2 = 0;
while (_local2 < mixtures[_local3].length) {
mixtures[_local3][_local2].checkCompress();
_local2++;
}
_local3++;
}
}
function checkPossibilityAnim() {
if (mixtures.length == 0) {
return(undefined);
}
var _local2 = 0;
while (_local2 < mixtures.length) {
if (mixtures[_local2].length > 1) {
return(undefined);
}
_local2++;
}
game.needProcessPills = true;
}
function addMixture(pill, mixType) {
var _local2 = 0;
while (_local2 < pills.length) {
if (pills[_local2] == pill) {
return(undefined);
}
_local2++;
}
var _local3 = mixtures[mixtures.length - 1];
_local3.push(fore.attachMovie("CMixture", "CMixture" + fore.getNextHighestDepth(), fore.getNextHighestDepth(), {mc:this, engine:engine, mType:mixType, destX:game.selectedPill._x, destY:game.selectedPill._y, pill:pill}));
_local3[_local3.length - 1]._x = pill._x;
_local3[_local3.length - 1]._y = pill._y;
pills.push(pill);
}
function addConnection(pill1, pill2) {
var _local4;
var _local3;
var _local2 = 0;
while (_local2 < pills.length) {
if (pill1 == pills[_local2]) {
_local4 = _local2;
}
if (pill2 == pills[_local2]) {
_local3 = _local2;
}
_local2++;
}
mixtures[mixtures.length - 1][_local4].addConnection(mixtures[mixtures.length - 1][_local3]);
mixtures[mixtures.length - 1][_local3].addConnection(mixtures[mixtures.length - 1][_local4]);
lines.push(back.attachMovie("CLine", "CLine" + back.getNextHighestDepth(), back.getNextHighestDepth(), {mix1:mixtures[mixtures.length - 1][_local4], mix2:mixtures[mixtures.length - 1][_local3]}));
}
function addConnectionM(mixture1, mixture2) {
mixture1.addConnection(mixture2);
mixture2.addConnection(mixture1);
lines.push(back.attachMovie("CLine", "CLine" + back.getNextHighestDepth(), back.getNextHighestDepth(), {mix1:mixture1, mix2:mixture2}));
}
function addParticles(count, mix) {
game.addParticles(count, mix);
}
function checkChains() {
var _local4;
while (true) {
_local4 = false;
if (mixtures.length >= 2) {
var _local3 = 0;
while (_local3 < (mixtures.length - 1)) {
var _local2 = _local3 + 1;
while (_local2 < mixtures.length) {
if (checkChains2(mixtures[_local3], mixtures[_local2])) {
_local4 = true;
break;
}
_local2++;
}
if (_local4) {
break;
}
_local3++;
}
} else {
return(undefined);
}
if (!_local4) {
return(undefined);
}
}
}
function checkChains2(a, b) {
if (a[0].mType != b[0].mType) {
return(false);
}
var _local4 = 0;
while (_local4 < a.length) {
var _local2 = 0;
while (_local2 < b.length) {
if ((((Math.abs(a[_local4]._x - b[_local2]._x) < CGlobal.MAX_CONNECTION_RADIUS) && (Math.abs(a[_local4]._y - b[_local2]._y) < CGlobal.MAX_CONNECTION_RADIUS)) && ((a[_local4].state == CMixture.stateReady) || (a[_local4].state == CMixture.stateAppearing))) && ((b[_local2].state == CMixture.stateReady) || (b[_local2].state == CMixture.stateAppearing))) {
addConnectionM(a[_local4], b[_local2]);
unify(a, b);
return(true);
}
_local2++;
}
_local4++;
}
return(false);
}
function addExplodes(quantity, etype, x, y) {
explodes.push(fore.attachMovie("CExplode", "CExplode" + fore.getNextHighestDepth(), fore.getNextHighestDepth(), {eType:etype, _x:x, _y:y, game:game}));
explodes[explodes.length - 1].waitFrames = 0;
explodes[explodes.length - 1].bubble.removeMovieClip();
explodes[explodes.length - 1].bubble = undefined;
explodes[explodes.length - 1].explode = explodes[explodes.length - 1].attachMovie("explode", "explode" + explodes[explodes.length - 1].getNextHighestDepth(), explodes[explodes.length - 1].getNextHighestDepth());
explodes[explodes.length - 1]._xscale = 150;
explodes[explodes.length - 1]._yscale = 150;
explodes[explodes.length - 1]._x = x;
explodes[explodes.length - 1]._y = y;
var _local2 = 0;
while (_local2 < quantity) {
explodes.push(fore.attachMovie("CExplode", "CExplode" + fore.getNextHighestDepth(), fore.getNextHighestDepth(), {eType:etype, _x:x, _y:y, game:game}));
_local2++;
}
}
function pushPillsFromMixture(mix) {
if (game.gameType != CGame.gameTypeAction) {
return(undefined);
}
var _local3;
var _local5;
var _local8 = new flash.geom.Point(mix._x, mix._y);
var _local7;
var _local6;
if (mix.state == CMixture.stateExploding) {
_local7 = 50;
_local6 = 50;
} else {
_local7 = 30;
_local6 = 30;
}
var _local2 = 0;
while (_local2 < game.pills.length) {
if ((Math.abs(game.pills[_local2]._x - mix._x) > _local7) || (Math.abs(game.pills[_local2]._y - mix._y) > _local6)) {
} else {
_local3 = game.pills[_local2].pos.subtract(_local8);
_local5 = _local3.length;
if (mix.state == CMixture.stateExploding) {
if (_local5 < (((mix.dummys[CGlobal.nBitmapsMixture]._width / 2) + (game.pills[_local2]._width / 2)) - 8)) {
_local3.normalize((((mix.dummys[CGlobal.nBitmapsMixture]._width / 2) + (game.pills[_local2]._width / 2)) - _local5) - 8);
game.pills[_local2]._x = game.pills[_local2]._x + _local3.x;
game.pills[_local2]._y = game.pills[_local2]._y + _local3.y;
game.pills[_local2].refreshPos();
}
} else if (_local5 < (((mix._width / 2) + (game.pills[_local2]._width / 2)) - 15)) {
_local3.normalize((((mix._width / 2) + (game.pills[_local2]._width / 2)) - 15) - _local5);
game.pills[_local2]._x = game.pills[_local2]._x + _local3.x;
game.pills[_local2]._y = game.pills[_local2]._y + _local3.y;
game.pills[_local2].refreshPos();
}
}
_local2++;
}
}
function unify(a, b) {
if (a.length == 1) {
a[0].healMixture();
}
if (b.length == 1) {
b[0].healMixture();
}
a[0].hideCircle();
b[0].hideCircle();
var _local2 = 0;
while (_local2 < b.length) {
a.push(b[_local2]);
_local2++;
}
var _local5 = new Array();
_local2 = 0;
while (_local2 < mixtures.length) {
if (mixtures[_local2] != b) {
_local5.push(mixtures[_local2]);
}
_local2++;
}
mixtures = _local5;
}
function removeConnection(mix1, mix2) {
var _local5 = new Array();
var _local2 = 0;
while (_local2 < lines.length) {
if (!(((lines[_local2].mix1 == mix1) && (lines[_local2].mix2 == mix2)) || ((lines[_local2].mix1 == mix2) && (lines[_local2].mix2 == mix1)))) {
_local5.push(lines[_local2]);
} else {
mix2.removeConnection(mix1);
lines[_local2].removeMovieClip();
}
_local2++;
}
lines = _local5;
}
function simpleRemoveMixture(mix) {
var _local4 = new Array();
var _local3 = 0;
while (_local3 < mixtures.length) {
_local4.push(new Array());
var _local2 = 0;
while (_local2 < mixtures[_local3].length) {
if (mix != mixtures[_local3][_local2]) {
_local4[_local3].push(mixtures[_local3][_local2]);
}
_local2++;
}
_local3++;
}
mix.removeMovieClip();
mixtures = _local4;
}
function removeMixture(mix) {
simpleRemoveMixture(mix);
checkDeleteMixtures();
game.redirrectViruses();
}
function cleanMixtures() {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < mixtures.length) {
if (mixtures[_local2].length != 0) {
_local3.push(mixtures[_local2]);
}
_local2++;
}
mixtures = _local3;
}
function checkDeleteMixtures() {
var _local4 = new Array();
var _local2 = 0;
while (_local2 < mixtures.length) {
if (((mixtures[_local2].length == 1) && (mixtures[_local2][0].weight >= 10)) && (mixtures[_local2][0].state == CMixture.stateReady)) {
if (mixtures[_local2][0].mType == CGlobal.gType) {
game.nGreen = game.nGreen + mixtures[_local2][0].weight;
} else if (mixtures[_local2][0].mType == CGlobal.oType) {
game.nOrange = game.nOrange + mixtures[_local2][0].weight;
} else if (mixtures[_local2][0].mType == CGlobal.pType) {
game.nPurple = game.nPurple + mixtures[_local2][0].weight;
}
if (game.maxChain < mixtures[_local2][0].weight) {
game.maxChain = mixtures[_local2][0].weight;
}
mixtures[_local2][0].setState(CMixture.stateExploding);
} else {
_local4.push(new Array());
var _local3 = 0;
while (_local3 < mixtures[_local2].length) {
_local4[_local4.length - 1].push(mixtures[_local2][_local3]);
_local3++;
}
}
_local2++;
}
}
static var statePlaying = 1;
static var stateRemoving = 2;
static var stateDone = 3;
var paused = false;
}
Symbol 742 MovieClip [__Packages.CPill] Frame 0
class CPill extends MovieClip
{
var useHandCursor, appearing, curFrame, startSleepFrames, minStartSleepFrames, maxStartSleepFrames, dummys, createEmptyMovieClip, getNextHighestDepth, engine, pType, circle, _parent, _rotation, pillWidth, _width, pillHeight, _height, dw, dh, _xscale, _yscale, _x, _y, pos, vel, dVel, dr, connections, state, appearingFrame, _visible, game, ticksToDelete;
function CPill () {
super();
useHandCursor = false;
appearing = true;
curFrame = random(CGlobal.nBitmapsAnim);
startSleepFrames = random(maxStartSleepFrames) + minStartSleepFrames;
dummys = new Array();
var _local3 = 0;
while (_local3 < CGlobal.nBitmapsAnim) {
dummys.push(createEmptyMovieClip("dummy", getNextHighestDepth()));
dummys[_local3].attachBitmap(engine.bitmaps.getPillBitmap(pType, _local3), dummys[_local3].getNextHighestDepth(), "never", true);
dummys[_local3]._x = dummys[_local3]._x - (dummys[_local3]._width / 2);
dummys[_local3]._y = dummys[_local3]._y - (dummys[_local3]._height / 2);
if (_local3 != curFrame) {
dummys[_local3]._visible = false;
}
_local3++;
}
circle = _parent.attachMovie("CCircle", "CCircle" + _parent.getNextHighestDepth(), _parent.getNextHighestDepth(), {pill:this, engine:engine, cType:0});
circle._visible = false;
_rotation = random(360);
pillWidth = _width / 2;
pillHeight = _height / 2;
dw = 100 / (nFramesAppear - 1);
dh = 100 / (nFramesAppear - 1);
_xscale = 5;
_yscale = 5;
if (generateCoord) {
_x = ((CGlobal.gameWidth / 2) + random(200)) - 100;
_y = ((CGlobal.gameHeight / 2) + random(200)) - 100;
}
pos = new flash.geom.Point(_x, _y);
vel = new flash.geom.Point(0, 0);
dVel = new flash.geom.Point(0, 0);
dr = (random(20) / 10) - 1;
connections = new Array();
state = stateRotating;
appearingFrame = 0;
_visible = false;
}
function onUnload() {
circle.removeMovieClip();
}
function onEnterFrame() {
if (game.paused) {
return(undefined);
}
if (state != stateDeleting) {
refreshPos();
if (appearing) {
if ((startSleepFrames--) < 0) {
_visible = true;
_xscale = _xscale + dw;
_yscale = _yscale + dh;
if ((appearingFrame++) == nFramesAppear) {
appearing = false;
_xscale = 100;
_yscale = 100;
}
}
}
}
switch (state) {
case stateRotating :
if (!appearing) {
_rotation = _rotation + dr;
}
break;
case stateAnimating :
nextAnimFrame();
break;
case stateDeleting :
_rotation = _rotation + dr;
_xscale = 100;
_yscale = 100;
if ((ticksToDelete--) < 0) {
game.removePill(this);
}
break;
case stateRemoving :
_xscale = _xscale - 10;
_yscale = _yscale - 10;
if (_xscale != 0) {
break;
}
game.removePill(this);
}
}
function showCircle(cType) {
circle.setType(cType);
circle._visible = true;
}
function hideCircle() {
circle._visible = false;
}
function setState(newState) {
if (state == stateRemoving) {
return(undefined);
}
if (state == stateAnimating) {
circle._visible = false;
}
if (newState == stateRemoving) {
_xscale = 100;
_yscale = 100;
}
state = newState;
}
function processRecession() {
if (state != stateRotating) {
return(undefined);
}
vel = vel.add(dVel);
if ((Math.abs(vel.x) < 0.0001) && (Math.abs(vel.y) < 0.0001)) {
return(undefined);
}
if (vel.length > 0.2) {
vel.normalize(0.2);
}
pos = pos.add(vel);
if ((_x < CGlobal.gameBorderLeft) || (_x > CGlobal.gameBorderWidth)) {
if (((_x < CGlobal.gameBorderLeft) && (vel.x < 0)) || ((_x > CGlobal.gameBorderWidth) && (vel.x > 0))) {
vel.x = -vel.x;
pos.x = pos.x + vel.x;
}
}
if ((_y < CGlobal.gameBorderTop) || (_y > CGlobal.gameBorderHeight)) {
if (((_y < CGlobal.gameBorderTop) && (vel.y < 0)) || ((_y > CGlobal.gameBorderHeight) && (vel.y > 0))) {
vel.y = -vel.y;
pos.y = pos.y + vel.y;
}
}
dVel.x = 0;
dVel.y = 0;
vel.x = vel.x * 0.98;
vel.y = vel.y * 0.98;
_x = pos.x;
_y = pos.y;
}
function refreshPos() {
pos = new flash.geom.Point(_x, _y);
}
function onRelease() {
if (game.gameState == CGame.gameStateHint) {
game.gameState = CGame.gameStatePlaying;
game.rect.removeMovieClip();
game.deselectPill();
}
if (sayGameOnRelease != 0) {
game.processGameHint(sayGameOnRelease);
}
if ((state == stateDeleting) || (state == stateRemoving)) {
return(undefined);
}
if (game.selectedPill == undefined) {
game.selectPill(this);
engine.sounds.playSelect();
} else {
game.mixPill(this);
}
}
function onRollOver() {
if (game.gameState == CGame.gameStateHint) {
return(undefined);
}
if (sayGameOnRollOver != 0) {
game.processGameHint(sayGameOnRollOver);
}
if ((state == stateDeleting) || (state == stateRemoving)) {
return(undefined);
}
if (game.existsSelectedPill()) {
game.showUnion(this);
}
}
function onRollOut() {
if (game.gameState == CGame.gameStateHint) {
return(undefined);
}
if (game.selectedPill != undefined) {
game.selectPill(game.selectedPill);
}
}
function nextAnimFrame() {
if ((toWaitAnim--) <= 0) {
toWaitAnim = 1;
dummys[curFrame]._visible = false;
curFrame++;
if (curFrame == CGlobal.nBitmapsAnim) {
curFrame = 0;
}
dummys[curFrame]._visible = true;
}
}
function animate() {
state = stateAnimating;
}
function rotate() {
state = stateRotating;
}
static var stateRotating = 0;
static var stateAnimating = 1;
static var stateDeleting = 2;
static var stateRemoving = 3;
static var dt = 1;
static var nFramesAppear = 10;
var toWaitAnim = 0;
var generateCoord = true;
var sayGameOnRelease = 0;
var sayGameOnRollOver = 0;
}
Symbol 743 MovieClip [__Packages.COptions] Frame 0
class COptions extends MovieClip
{
var optionsType, bMainMenu, bBackToGame, bHelp, ca, engine, bDownload, state, _currentframe, gotoAndStop, _parent, _x, _width, command, prevGameState, removeMovieClip;
function COptions () {
super();
if (optionsType == optionsTypeMainMenu) {
bMainMenu._x = 133;
bMainMenu._y = 173;
bBackToGame._visible = false;
bHelp._visible = false;
ca._y = 110;
} else {
bMainMenu._x = 27;
bMainMenu._y = 168;
bBackToGame._x = 235;
bBackToGame._y = 168;
bBackToGame._visible = true;
ca._y = 88;
bHelp._visible = true;
}
if (engine.chainAssist) {
ca.mChainAssist.gotoAndStop(2);
} else {
ca.mChainAssist.gotoAndStop(1);
}
bDownload.onRelease = function () {
CEngine.downloadFreeTrial();
};
state = 0;
createHandlers();
}
function createHandlers() {
bMainMenu.onRelease = onMainMenuClick;
bBackToGame.onRelease = onBackToGameClick;
bHelp.onRelease = onHelpClick;
ca.mChainAssist.onRelease = onAssistClick;
}
function onAssistClick() {
if (_currentframe == 1) {
(gotoAndStop(2));// not popped
} else {
(gotoAndStop(1));// not popped
}
_parent._parent.engine.chainAssist = !_parent._parent.engine.chainAssist;
}
function onHelpClick() {
_parent.engine.setState(CEngine.stateHelp);
}
function onMainMenuClick() {
_parent.hide();
_parent.command = 0;
}
function onBackToGameClick() {
_parent.hide();
_parent.command = 1;
}
function hide() {
state = 2;
}
function onEnterFrame() {
switch (state) {
case 0 :
if (optionsType == optionsTypeMainMenu) {
_x = _x - 30;
if (_x < 130) {
_x = 130;
state = 1;
}
} else {
_x = _x - 30;
if (_x < 240) {
_x = 220;
state = 1;
}
}
break;
case 2 :
_x = _x + 30;
if (_x <= (CGlobal.gameWidth + (_width / 2))) {
break;
}
trace(command);
if (command == 0) {
engine.setState(CEngine.stateMainMenu);
if (prevGameState != CEngine.stateMainMenu) {
engine.showNextLevelWindow(0);
}
} else if (command == 1) {
engine.setState(prevGameState);
}
removeMovieClip();
}
}
static var optionsTypeMainMenu = 0;
static var optionsTypeGame = 1;
}
Symbol 744 MovieClip [__Packages.CLinks] Frame 0
class CLinks
{
function CLinks () {
}
static var freeTrialLink = "http://www.microsoft.com";
static var tellAFriendLink = "http://www.borland.com";
}
Symbol 745 MovieClip [__Packages.CVirus] Frame 0
class CVirus extends MovieClip
{
var sleepTicks, dummy, createEmptyMovieClip, getNextHighestDepth, engine, dx, dy, dr, _rotation, state, parentWidth, game, parentHeight, hasTarget, _visible, targetMixture, _x, _y, mc, removeMovieClip;
function CVirus () {
super();
sleepTicks = random(CGlobal.MAX_SLEEP_VIRUS - CGlobal.MIN_SLEEP_VIRUS) + CGlobal.MIN_SLEEP_VIRUS;
dummy = createEmptyMovieClip("dummy" + getNextHighestDepth(), getNextHighestDepth());
dummy.attachBitmap(engine.bitmaps.getVirusBitmap(), dummy.getNextHighestDepth(), "auto", true);
dummy._x = (-dummy._width) / 2;
dummy._y = (-dummy._height) / 2;
dummy._xscale = 50;
dummy._yscale = 50;
dx = (random(20) - 10) / 50;
dy = (random(20) - 10) / 50;
dr = (random(20) / 10) - 1;
_rotation = random(360);
state = stateAppearing;
parentWidth = game._width - 100;
parentHeight = game._height - 150;
hasTarget = false;
game.findTargetForVirus(this);
_visible = false;
}
function setTarget(mix) {
hasTarget = true;
targetMixture = mix;
var _local2 = new flash.geom.Point(mix._x - _x, mix._y - _y);
_local2.normalize(0.15);
dx = _local2.x;
dy = _local2.y;
}
function checkForTarget() {
var _local3;
var _local2 = 0;
while (_local2 < mc.mixtures.length) {
if (((mc.mixtures[_local2].length == 1) && (mc.mixtures[_local2][0].infected == false)) && (mc.mixtures[_local2][0].state == CMixture.stateReady)) {
_local3 = Math.pow(mc.mixtures[_local2][0]._x - _x, 2) + Math.pow(mc.mixtures[_local2][0]._y - _y, 2);
if (_local3 < 1200) {
mc.mixtures[_local2][0].infect();
removeMovieClip();
return(undefined);
}
}
_local2++;
}
}
function onEnterFrame() {
if (sleepTicks > 0) {
sleepTicks--;
if (sleepTicks == 0) {
_visible = true;
}
return(undefined);
}
switch (state) {
case stateAppearing :
if (dummy._xscale < 90) {
dummy._xscale = dummy._xscale + 5;
dummy._yscale = dummy._yscale + 5;
dummy._x = (-dummy._width) / 2;
dummy._y = (-dummy._height) / 2;
} else {
state = stateReady;
}
break;
case stateReady :
_rotation = _rotation + dr;
_x = _x + dx;
if ((_x > parentWidth) || (_x < 38)) {
dx = -dx;
_x = _x + dx;
}
_y = _y + dy;
if ((_y > parentHeight) || (_y < 26)) {
dy = -dy;
_y = _y + dy;
}
checkForTarget();
break;
case stateDeleting :
}
}
static var stateAppearing = 0;
static var stateReady = 1;
static var stateDeleting = 2;
}
Symbol 746 MovieClip [__Packages.CSelection] Frame 0
class CSelection extends MovieClip
{
var pill, _x, _y, _visible;
function CSelection () {
super();
}
function setToPill(pill) {
this.pill = pill;
_x = pill._x;
_y = pill._y;
}
function onEnterFrame() {
if (_visible) {
_x = pill._x;
_y = pill._y;
}
}
}
Symbol 747 MovieClip [__Packages.CUnion] Frame 0
class CUnion extends MovieClip
{
var dummy, createEmptyMovieClip, getNextHighestDepth, bitmaps, uType;
function CUnion () {
super();
dummy = createEmptyMovieClip("dummy", getNextHighestDepth());
dummy.attachBitmap(bitmaps.getUnionBitmap(uType), dummy.getNextHighestDepth(), "never", true);
dummy._x = dummy._x - (dummy._width / 2);
dummy._y = dummy._y - (dummy._height / 2);
}
}
Symbol 748 MovieClip [__Packages.CBackgrounds] Frame 0
class CBackgrounds extends MovieClip
{
var useHandCursor, game;
function CBackgrounds () {
super();
useHandCursor = false;
}
function onRelease() {
if (game.gameState == CGame.gameStateHint) {
game.gameState = CGame.gameStatePlaying;
game.rect.removeMovieClip();
}
if (game.selectedPill != undefined) {
game.deselectPill();
}
}
}
Symbol 749 MovieClip [__Packages.CLine] Frame 0
class CLine extends MovieClip
{
var dummy, createEmptyMovieClip, getNextHighestDepth, mix1, mix2;
function CLine () {
super();
dummy = createEmptyMovieClip("dummy" + getNextHighestDepth(), getNextHighestDepth());
}
function onEnterFrame() {
dummy.clear();
dummy.lineStyle(1, 16777215, 100);
dummy.moveTo(mix1._x, mix1._y);
dummy.lineTo(mix2._x, mix2._y);
}
}
Symbol 750 MovieClip [__Packages.CMixtureWeight] Frame 0
class CMixtureWeight extends MovieClip
{
var counter, caption, weight, _visible;
function CMixtureWeight () {
super();
setMixtureWeight(1);
counter = 0;
caption.textColor = 16777215 /* 0xFFFFFF */;
}
function setMixtureWeight(val) {
weight = val;
if (val < 2) {
caption.text = "";
} else {
caption.text = val;
_visible = true;
}
}
function onEnterFrame() {
if (weight < 9) {
return(undefined);
}
if ((++counter) > 15) {
caption.textColor = 0;
counter = -15;
} else if (counter > 0) {
caption.textColor = caption.textColor - 1118481;
} else {
caption.textColor = caption.textColor + 1118481;
}
}
}
Symbol 751 MovieClip [__Packages.CCircle] Frame 0
class CCircle extends MovieClip
{
var dummy, createEmptyMovieClip, getNextHighestDepth, engine, cType, _x, pill, _y;
function CCircle () {
super();
dummy = createEmptyMovieClip("dummy" + getNextHighestDepth(), getNextHighestDepth());
dummy.attachBitmap(engine.bitmaps.getCircleBitmap(cType), dummy.getNextHighestDepth(), "never", true);
dummy._x = dummy._x - (dummy._width / 2);
dummy._y = dummy._y - (dummy._height / 2);
_x = pill._x + 1;
_y = pill._y + 1;
}
function setType(newType) {
cType = newType;
dummy.removeMovieClip();
dummy = createEmptyMovieClip("dummy" + getNextHighestDepth(), getNextHighestDepth());
dummy.attachBitmap(engine.bitmaps.getCircleBitmap(cType), dummy.getNextHighestDepth(), "never", true);
dummy._x = dummy._x - (dummy._width / 2);
dummy._y = dummy._y - (dummy._height / 2);
_x = pill._x + 1;
_y = pill._y + 1;
}
function onEnterFrame() {
_x = pill._x + 1;
_y = pill._y + 1;
}
}
Symbol 752 MovieClip [__Packages.CMixtureIndicators] Frame 0
class CMixtureIndicators extends MovieClip
{
var animating, oAnim, pAnim, gAnim, gMix, attachMovie, getNextHighestDepth, pMix, oMix, particlesList, gameWnd, _x, _y;
function CMixtureIndicators () {
super();
animating = false;
oAnim.stop();
pAnim.stop();
gAnim.stop();
oAnim._visible = false;
pAnim._visible = false;
gAnim._visible = false;
oAnim.done = false;
pAnim.done = false;
gAnim.done = false;
gMix = attachMovie("CProgressG", "CProgressG" + getNextHighestDepth(), getNextHighestDepth(), {_x:111, _y:19, targetQuantity:CGlobal.targetGreen, mi:this});
pMix = attachMovie("CProgressP", "CProgressP" + getNextHighestDepth(), getNextHighestDepth(), {_x:257, _y:19, targetQuantity:CGlobal.targetPurple, mi:this});
oMix = attachMovie("CProgressO", "CProgressO" + getNextHighestDepth(), getNextHighestDepth(), {_x:401, _y:19, targetQuantity:CGlobal.targetOrange, mi:this});
gMix.setValue(0);
pMix.setValue(0);
oMix.setValue(0);
particlesList = new Array();
}
function removeParticle(p) {
var _local3 = new Array();
var _local2 = 0;
while (_local2 < particlesList.length) {
if (particlesList[_local2] != p) {
_local3.push(particlesList[_local2]);
}
_local2++;
}
p.removeMovieClip();
particlesList = _local3;
}
function addScore(quantity) {
gameWnd.addScore(quantity);
}
function endAnim() {
animating = false;
gameWnd.flower.nextFrame();
gameWnd.addFlowerParticles(20);
if ((gAnim.done && (oAnim.done)) && (pAnim.done)) {
gameWnd.flower.gotoAndStop(gameWnd.flower._totalFrames);
gameWnd.setState(CGameWindow.stateEndingLevel);
}
}
function animateWater(mix) {
if (animating) {
return(false);
}
switch (mix) {
case gMix :
if (CGlobal.targetGreen != 0) {
gAnim._visible = true;
gAnim.play();
break;
}
gAnim.done = true;
return(true);
case pMix :
if (CGlobal.targetPurple != 0) {
pAnim._visible = true;
pAnim.play();
} else {
pAnim.done = true;
return(true);
if (CGlobal.targetOrange != 0) {
oAnim._visible = true;
oAnim.play();
} else {
oAnim.done = true;
return(true);
}
}
case oMix :
if (CGlobal.targetOrange != 0) {
oAnim._visible = true;
oAnim.play();
} else {
oAnim.done = true;
return(true);
}
}
animating = true;
return(true);
}
function addParticles(count, mixture) {
var _local2;
switch (mixture.mType) {
case CGlobal.gType :
_local2 = gMix;
break;
case CGlobal.oType :
_local2 = oMix;
break;
case CGlobal.pType :
_local2 = pMix;
}
if (_local2.currentQuantity >= _local2.targetQuantity) {
_local2.currentQuantity = _local2.currentQuantity + count;
return(undefined);
}
var _local4;
var _local6;
var _local5 = 0;
while (_local5 < count) {
_local2 = attachMovie("CParticle", "CParticle" + getNextHighestDepth(), getNextHighestDepth(), {particleType:mixture.mType});
_local2._x = (((mixture._x - _x) + CGlobal.gameLeft) + random(20)) - 10;
_local2._y = (((mixture._y - _y) + CGlobal.gameTop) + random(20)) - 10;
switch (mixture.mType) {
case CGlobal.gType :
_local4 = gMix._x;
_local2.container = gMix;
break;
case CGlobal.oType :
_local4 = oMix._x;
_local2.container = oMix;
break;
case CGlobal.pType :
_local4 = pMix._x;
_local2.container = pMix;
}
_local6 = 30 - random(15);
_local2.dx = ((_local4 - _local2._x) + 5) / _local6;
_local2.dy = (-_local2._y) / _local6;
particlesList.push(_local2);
_local5++;
}
}
}
Symbol 753 MovieClip [__Packages.CGameWindow] Frame 0
class CGameWindow extends MovieClip
{
var trys, levelTime, timeTicker, attachMovie, getNextHighestDepth, currentLevel, bReset, level, score, gameProgress, curScore, cbackground, game, flower, tries, _try, state, engine, bMenu, play, mixtureIndicaror, levelComplete;
function CGameWindow () {
super();
trys = 4;
levelTime = 20;
timeTicker = attachMovie("CTime", "CTime" + getNextHighestDepth(), getNextHighestDepth(), {_x:0, _y:69});
if ((currentLevel < 6) || (currentLevel > 9)) {
bReset._visible = false;
var _local3 = currentLevel;
if (_local3 > 9) {
_local3 = _local3 - 4;
}
level.levelVal.text = _local3;
} else {
timeTicker.removeMovieClip();
score._y = 69;
level._y = 123;
var _local3 = currentLevel - 5;
level.levelVal.text = _local3;
score.scoreVal.text = "N/A";
}
createHandlers();
gameProgress = 0;
curScore = 0;
timeTicker.gameWindow = this;
cbackground = attachMovie("CBackgrounds", "CBackgrounds" + getNextHighestDepth(), getNextHighestDepth(), {game:game});
cbackground.stop();
cbackground._x = 173;
createGame();
flower.stop();
if ((currentLevel > 5) && (currentLevel < 10)) {
tries.text = "";
_try._visible = false;
} else {
tries.text = "4";
}
if ((currentLevel < 6) || (currentLevel > 9)) {
createMixtureIndicator();
}
state = statePlaying;
}
function createGame() {
if (currentLevel == 1) {
CGlobal.targetGreen = 0;
CGlobal.targetOrange = 0;
CGlobal.targetPurple = 10;
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypeIntroduce});
game.loadLevel(CGlobal.level1_1);
levelTime = 240;
timeTicker.setTimeTicks(levelTime);
} else if (currentLevel == 2) {
CGlobal.targetGreen = 50;
CGlobal.targetOrange = 0;
CGlobal.targetPurple = 0;
levelTime = 237;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:2, virusCount:0});
} else if (currentLevel == 3) {
CGlobal.targetGreen = 40;
CGlobal.targetOrange = 30;
CGlobal.targetPurple = 40;
levelTime = 236;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:40, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:0});
} else if (currentLevel == 4) {
CGlobal.targetGreen = 40;
CGlobal.targetOrange = 40;
CGlobal.targetPurple = 50;
levelTime = 225;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:0});
} else if (currentLevel == 5) {
CGlobal.targetGreen = 50;
CGlobal.targetOrange = 60;
CGlobal.targetPurple = 40;
levelTime = 221;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:2});
} else if (currentLevel == 6) {
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypePuzzle});
game.loadLevel(CGlobal.level6);
levelTime = 360;
timeTicker.setTimeTicks(360);
} else if (currentLevel == 7) {
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypePuzzle});
game.loadLevel(CGlobal.level7);
levelTime = 360;
timeTicker.setTimeTicks(360);
} else if (currentLevel == 8) {
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypePuzzle});
game.loadLevel(CGlobal.level8);
levelTime = 360;
timeTicker.setTimeTicks(360);
} else if (currentLevel == 9) {
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypePuzzle});
game.loadLevel(CGlobal.level9);
levelTime = 360;
timeTicker.setTimeTicks(360);
} else if (currentLevel == 10) {
CGlobal.targetGreen = 30;
CGlobal.targetOrange = 40;
CGlobal.targetPurple = 50;
levelTime = 211;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:2});
} else if (currentLevel == 11) {
CGlobal.targetGreen = 40;
CGlobal.targetOrange = 70;
CGlobal.targetPurple = 50;
levelTime = 201;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:2});
} else if (currentLevel == 12) {
CGlobal.targetGreen = 50;
CGlobal.targetOrange = 20;
CGlobal.targetPurple = 50;
levelTime = 191;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:2});
} else if (currentLevel == 13) {
CGlobal.targetGreen = 50;
CGlobal.targetOrange = 30;
CGlobal.targetPurple = 60;
levelTime = 176;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:2});
} else if (currentLevel == 14) {
CGlobal.targetGreen = 70;
CGlobal.targetOrange = 20;
CGlobal.targetPurple = 40;
levelTime = 161;
timeTicker.setTimeTicks(levelTime);
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:30, engine:engine, gameType:CGame.gameTypeAction, colorsQuantity:3, virusCount:2});
}
cbackground.gotoAndStop((currentLevel % 5) + 1);
if (currentLevel > 9) {
cbackground.gotoAndStop(((currentLevel - 5) % 10) + 1);
}
game._x = 173;
game._y = 15;
cbackground.game = game;
}
function createHandlers() {
bMenu.onRelease = function () {
this._parent.engine.setState(CEngine.stateOptions);
this._parent.pause();
};
bReset.onRelease = function () {
trace(this._parent.startScore);
this._parent.curScore = this._parent.startScore;
this._parent.score.scoreVal.text = this._parent.curScore;
if ((this._parent.currentLevel > 5) && (this._parent.currentLevel < 10)) {
this._parent.score.scoreVal.text = "N/A";
}
this._parent.restartLevel();
};
}
function pause() {
game.enabled = false;
var _local2 = 0;
while (_local2 < game.pills.length) {
game.pills[_local2].enabled = false;
_local2++;
}
game.pause();
bMenu.enabled = false;
bReset.enabled = false;
}
function resume() {
game.enabled = true;
var _local2 = 0;
while (_local2 < game.pills.length) {
game.pills[_local2].enabled = true;
_local2++;
}
bMenu.enabled = true;
bReset.enabled = true;
game.resume();
play();
}
function setTimeProgress(val) {
timeTicker.end();
}
function restartLevel() {
game.removeMovieClip();
gameProgress = 0;
createGame();
flower.stop();
if ((currentLevel < 6) || (currentLevel > 9)) {
tries.text = trys;
}
mixtureIndicaror.removeMovieClip();
if ((currentLevel < 6) || (currentLevel > 9)) {
createMixtureIndicator();
}
state = statePlaying;
}
function restart() {
gameProgress = 0;
game.removeMovieClip();
createGame();
flower.stop();
if ((currentLevel < 6) || (currentLevel > 9)) {
tries.text = trys;
} else {
tries.text = "";
}
mixtureIndicaror.removeMovieClip();
if ((currentLevel < 6) || (currentLevel > 9)) {
createMixtureIndicator();
}
state = statePlaying;
}
function addFlowerParticles(num) {
var _local3;
var _local2 = 0;
while (_local2 < num) {
_local3 = attachMovie("CFlowerParticle", "CFlowerParticle" + getNextHighestDepth(), getNextHighestDepth());
_local3._x = flower._x + random(flower._width);
_local3._y = flower._y + random(flower._height);
_local2++;
}
}
function createMixtureIndicator() {
mixtureIndicaror = attachMovie("CMixtureIndicators", "CMixtureIndicators" + getNextHighestDepth(), getNextHighestDepth(), {gameWnd:this});
mixtureIndicaror._x = 100;
mixtureIndicaror._y = 417;
}
function timeUp() {
pause();
game.unions[0].removeMovieClip();
game.unions[1].removeMovieClip();
game.unions[2].removeMovieClip();
engine.showGameOver();
}
function addScore(quantity) {
curScore = curScore + quantity;
score.scoreVal.text = curScore;
if ((currentLevel > 5) && (currentLevel < 10)) {
score.scoreVal.text = "N/A";
}
}
function addParticles(count, mix) {
mixtureIndicaror.addParticles(count, mix);
}
function checkLevelEnd() {
if (currentLevel > 5) {
if ((game.pills.length == 0) && (game.mc.explodes.length == 0)) {
var _local2 = 0;
while (_local2 < game.mc.mixtures.length) {
if (game.mc.mixtures[_local2].length != 0) {
return(undefined);
}
_local2++;
}
// unexpected jump
}
return(undefined);
} else {
return(undefined);
}
setState(stateDone);
}
function stopParticles() {
var _local2 = 0;
while (_local2 < mixtureIndicaror.particlesList.length) {
mixtureIndicaror.particlesList[_local2].stopFly();
_local2++;
}
_local2 = 0;
while (_local2 < game.mc.explodes.length) {
game.mc.explodes[_local2].stopExplode();
_local2++;
}
game.processGameHint(5);
}
function resumeParticles() {
var _local2 = 0;
while (_local2 < mixtureIndicaror.particlesList.length) {
mixtureIndicaror.particlesList[_local2].resumeFly();
_local2++;
}
_local2 = 0;
while (_local2 < game.mc.explodes.length) {
game.mc.explodes[_local2].resumeExplode();
_local2++;
}
}
function onEnterFrame() {
if (state == stateEndingLevel) {
if (game.gameState == CGame.gameStateDone) {
setState(stateDone);
}
} else {
processLevel();
}
}
function processLevel() {
if (currentLevel == 1) {
if ((game.pills.length == 0) && (gameProgress == 0)) {
game.loadLevel(CGlobal.level1_2);
gameProgress++;
}
}
}
function setState(newState) {
if (newState == stateEndingLevel) {
game.setState(CGame.gameStateFinishing);
} else if (newState == stateDone) {
game.removeSelections();
if (game.gameType == CGame.gameTypePuzzle) {
levelComplete = attachMovie("CLevelComplete1", "CLevelComplete1" + getNextHighestDepth(), getNextHighestDepth(), {gameWnd:this});
} else {
levelComplete = attachMovie("CLevelComplete", "CLevelComplete" + getNextHighestDepth(), getNextHighestDepth(), {ntcompl:Math.floor(levelTime - timeTicker.getCurTime()), ntleft:Math.floor(timeTicker.getCurTime()), ngcr:game.nGreen, nocr:game.nOrange, npcr:game.nPurple, nccr:game.nChains, nlchain:game.maxChain, nscore:curScore, gameWnd:this});
}
}
state = newState;
}
function nextLevel() {
levelComplete.removeMovieClip();
game.removeMovieClip();
if ((currentLevel == 14) || (currentLevel == 9)) {
engine.showNextLevelWindow(1);
} else if ((((currentLevel == 2) || (currentLevel == 4)) || (currentLevel == 10)) || (currentLevel == 12)) {
engine.gotoNextLevel();
} else {
engine.showNextLevelWindow();
}
}
static var statePlaying = 0;
static var stateEndingLevel = 1;
static var stateDone = 2;
}
Symbol 754 MovieClip [__Packages.CProgressBar] Frame 0
class CProgressBar extends MovieClip
{
var back, maskClip;
function CProgressBar () {
super();
}
function setValue(val) {
maskClip._width = (back._width * val) / 100;
}
}
Symbol 755 MovieClip [__Packages.CTime] Frame 0
class CTime extends CProgressBar
{
var fMode, time, startTime, setValue, gameWindow, inc, back1;
function CTime () {
super();
fMode = false;
}
function setTimeTicks(val) {
time = CGlobal.fps * val;
startTime = time;
}
function fastMode() {
fMode = true;
}
function end() {
time = 0;
setValue(0);
}
function getCurTime() {
return(time / CGlobal.fps);
}
function onEnterFrame() {
if ((gameWindow.game.paused || (gameWindow.game.tip._visible)) || (gameWindow.engine.prestart._visible)) {
return(undefined);
}
if (fMode) {
time = time - CGlobal.fps;
} else {
time--;
}
setValue((time / startTime) * 100);
if (((!fMode) && ((time / startTime) < 0.15)) && ((time / startTime) > 0)) {
if (inc) {
if (back1._alpha >= 100) {
inc = false;
}
back1._alpha = back1._alpha + 3;
} else {
if (back1._alpha <= 75) {
inc = true;
}
back1._alpha = back1._alpha - 3;
}
}
if ((time < 0) && (gameWindow.state == CGameWindow.statePlaying)) {
time = 0;
var _local3 = 0;
while (_local3 < gameWindow.game.pills.length) {
gameWindow.game.pills[_local3].enabled = false;
_local3++;
}
if (gameWindow.mixtureIndicaror.animating) {
return(undefined);
}
var _local5 = true;
_local3 = 0;
while (_local3 < gameWindow.game.mc.mixtures.length) {
var _local4 = 0;
var _local2 = 0;
while (_local2 < gameWindow.game.mc.mixtures[_local3].length) {
_local4 = _local4 + gameWindow.game.mc.mixtures[_local3][_local2].weight;
_local2++;
}
if ((gameWindow.game.mc.mixtures[_local3].length > 1) || (_local4 > 9)) {
_local5 = false;
}
_local3++;
}
if (_local5 && (gameWindow.game.mc.explodes.length == 0)) {
if (((gameWindow.mixtureIndicaror.gAnim.done && (gameWindow.mixtureIndicaror.oAnim.done)) && (gameWindow.mixtureIndicaror.pAnim.done)) || (((gameWindow.game.nGreen >= CGlobal.targetGreen) && (gameWindow.game.nOrange >= CGlobal.targetOrange)) && (gameWindow.game.nPurple >= CGlobal.targetPurple))) {
gameWindow.flower.gotoAndStop(gameWindow.flower._totalFrames);
gameWindow.setState(CGameWindow.stateEndingLevel);
} else {
gameWindow.timeUp();
}
}
}
}
}
Symbol 756 MovieClip [__Packages.CProgressMixtures] Frame 0
class CProgressMixtures extends CProgressBar
{
var currentQuantity, bright, cover, targetQuantity, mi, maskClip, _alpha, setValue;
function CProgressMixtures () {
super();
currentQuantity = 0;
done = false;
bright = 0;
cover._alpha = 0;
}
function onEnterFrame() {
if ((currentQuantity >= targetQuantity) && (!done)) {
done = mi.animateWater(this);
}
if (done) {
if (maskClip._y < 35) {
_alpha = 100;
maskClip._y = maskClip._y + 1;
}
}
if (bright == 0) {
_alpha = 100;
} else {
bright--;
}
if (((currentQuantity >= targetQuantity) && (cover._alpha < 100)) && (targetQuantity != 0)) {
cover._alpha = cover._alpha + 5;
}
}
function add() {
currentQuantity++;
setValue((currentQuantity * 100) / targetQuantity);
if (_alpha == 100) {
_alpha = _alpha - 15;
} else {
_alpha = 100;
}
bright = bright + 2;
}
var done = false;
}
Symbol 757 MovieClip [__Packages.CParticle] Frame 0
class CParticle extends MovieClip
{
var gotoAndStop, particleType, _xscale, _yscale, enlarge, _x, dx, _y, dy, container, _parent;
function CParticle () {
super();
(gotoAndStop(particleType + 1));// not popped
var _local3 = 50 - random(20);
_xscale = _local3;
_yscale = _local3;
enlarge = true;
}
function onEnterFrame() {
if (!fly) {
return(undefined);
}
_x = _x + dx;
_y = _y + dy;
var _local2 = random(5);
if (enlarge) {
_xscale = _xscale + _local2;
_yscale = _yscale + _local2;
if (_xscale > 60) {
enlarge = false;
}
} else {
_xscale = _xscale - _local2;
_yscale = _yscale - _local2;
if (_xscale < 30) {
enlarge = true;
}
}
if (_y > 0) {
container.add();
_parent.removeParticle(this);
}
}
function stopFly() {
fly = false;
}
function resumeFly() {
fly = true;
}
var fly = true;
}
Symbol 758 MovieClip [__Packages.CLevelComplete1] Frame 0
class CLevelComplete1 extends MovieClip
{
var gameWnd;
function CLevelComplete1 () {
super();
gameWnd.engine.sounds.playWin();
}
function onRelease() {
gameWnd.nextLevel();
}
}
Symbol 759 MovieClip [__Packages.CLevelComplete] Frame 0
class CLevelComplete extends MovieClip
{
var gameWnd, c1, c2, c3, c4, c5, c6, c7, c8, click, counter, state, ngcr, nscore, score, gcr, npcr, pcr, nocr, ocr, ntleft, tleft, ntcompl, tcompl, nccr, ccr, nlchain, lchain;
function CLevelComplete () {
super();
gameWnd.engine.sounds.playWin();
c1._visible = false;
c2._visible = false;
c3._visible = false;
c4._visible = false;
c5._visible = false;
c6._visible = false;
c7._visible = false;
c8._visible = false;
click._visible = false;
counter = 0;
state = 0;
}
function onEnterFrame() {
switch (state) {
case 0 :
processStart();
case 1 :
processSimpleWait();
break;
case 2 :
processLeftTime();
break;
case 3 :
processGreen();
break;
case 4 :
processPurple();
break;
case 5 :
processOrange();
break;
case 6 :
processSimpleWait();
break;
case 7 :
processSimpleWait();
}
}
function processStart() {
counter++;
if (counter > 20) {
setState(1);
}
}
function processSimpleWait() {
counter++;
if (counter > 35) {
setState(state + 1);
}
}
function processGreen() {
counter++;
if ((counter > 35) && (ngcr == CGlobal.targetGreen)) {
setState(state + 1);
return(undefined);
}
if (ngcr > CGlobal.targetGreen) {
ngcr--;
nscore = nscore + 10;
score.text = nscore;
gameWnd.curScore = nscore;
gameWnd.score.scoreVal.text = nscore;
}
gcr.text = ngcr;
}
function processPurple() {
counter++;
if ((counter > 35) && (npcr == CGlobal.targetPurple)) {
setState(state + 1);
return(undefined);
}
if (npcr > CGlobal.targetPurple) {
npcr--;
nscore = nscore + 10;
score.text = nscore;
gameWnd.curScore = nscore;
gameWnd.score.scoreVal.text = nscore;
}
pcr.text = npcr;
}
function processOrange() {
counter++;
if ((counter > 35) && (nocr == CGlobal.targetOrange)) {
setState(state + 1);
return(undefined);
}
if (nocr > CGlobal.targetOrange) {
nocr--;
nscore = nscore + 10;
score.text = nscore;
gameWnd.curScore = nscore;
gameWnd.score.scoreVal.text = nscore;
}
ocr.text = nocr;
}
function processLeftTime() {
ntleft--;
if (ntleft < 0) {
tleft.text = secondsToTime(0);
setState(state + 1);
return(undefined);
}
tleft.text = secondsToTime(ntleft);
nscore = nscore + (9 + random(3));
score.text = nscore;
gameWnd.curScore = nscore;
gameWnd.score.scoreVal.text = nscore;
}
function onRelease() {
if (state == 2) {
nscore = nscore + (ntleft * 10);
score.text = nscore;
gameWnd.curScore = nscore;
gameWnd.score.scoreVal.text = nscore;
ntleft = 0;
tleft.text = secondsToTime(ntleft);
gameWnd.setTimeProgress(0);
} else if (state >= 7) {
gameWnd.nextLevel();
} else if ((state >= 3) && (state <= 5)) {
counter = counter + 100;
}
}
function secondsToTime(deltha) {
var _local2 = deltha % 60;
var _local3 = Math.floor(deltha / 60) % 60;
var _local5 = Math.floor(deltha / 3600);
var _local1 = new String();
_local1 = _local1 + ("" + _local3);
if (_local2 < 10) {
_local1 = _local1 + (":0" + _local2);
} else {
_local1 = _local1 + (":" + _local2);
}
return(_local1);
}
function setState(newState) {
counter = 0;
switch (newState) {
case 1 :
tcompl.text = secondsToTime(ntcompl);
c1._visible = true;
score.text = nscore;
c8._visible = true;
break;
case 2 :
gameWnd.timeTicker.fastMode();
tleft.text = secondsToTime(ntleft);
c2._visible = true;
break;
case 3 :
gcr.text = ngcr;
c3._visible = true;
break;
case 4 :
pcr.text = npcr;
c4._visible = true;
break;
case 5 :
ocr.text = nocr;
c5._visible = true;
break;
case 6 :
ccr.text = nccr;
c6._visible = true;
break;
case 7 :
gameWnd.curScore = nscore;
gameWnd.score.scoreVal.text = gameWnd.curScore;
lchain.text = nlchain;
c7._visible = true;
click._visible = true;
click.play();
}
state = newState;
}
}
Symbol 760 MovieClip [__Packages.CExplode] Frame 0
class CExplode extends MovieClip
{
var _xscale, _yscale, waitFrames, eType, bubble, attachMovie, getNextHighestDepth, _x, _y, explode, game;
function CExplode () {
super();
var _local3 = random(30);
_xscale = 100 - _local3;
_yscale = 100 - _local3;
waitFrames = random(15) + 5;
switch (eType) {
case CGlobal.oType :
bubble = attachMovie("bubble1", "bubble1" + getNextHighestDepth(), getNextHighestDepth());
break;
case CGlobal.pType :
bubble = attachMovie("bubble2", "bubble2" + getNextHighestDepth(), getNextHighestDepth());
break;
case CGlobal.gType :
bubble = attachMovie("bubble3", "bubble3" + getNextHighestDepth(), getNextHighestDepth());
}
bubble._x = (-bubble._width) / 2;
bubble._y = (-bubble._height) / 2;
_x = _x + (random(100) - 50);
_y = _y + (random(100) - 50);
bubble.stop();
}
function stopExplode() {
anim = false;
}
function resumeExplode() {
anim = true;
}
function onEnterFrame() {
if (!anim) {
return(undefined);
}
if (waitFrames == 0) {
bubble.play();
waitFrames--;
} else {
waitFrames = ((waitFrames > 0) ? (waitFrames - 1) : (waitFrames));
}
if ((bubble != undefined) && (bubble._totalframes == bubble._currentFrame)) {
bubble.removeMovieClip();
bubble = undefined;
explode = attachMovie("explode", "explode" + getNextHighestDepth(), getNextHighestDepth());
}
if ((explode != undefined) && (explode._totalframes == explode._currentFrame)) {
game.checkLevelEnd();
game.mc.removeExplode(this);
}
}
var anim = true;
}
Symbol 761 MovieClip [__Packages.CFlowerParticle] Frame 0
class CFlowerParticle extends MovieClip
{
var dr, enlarge, sleepTime, ds, _xscale, _yscale, _visible, _rotation, removeMovieClip;
function CFlowerParticle () {
super();
dr = (random(200) / 10) - 10;
enlarge = true;
sleepTime = random(20);
ds = random(9) + 6;
var _local3 = random(10) + 20;
_xscale = _local3;
_yscale = _local3;
_visible = false;
}
function onEnterFrame() {
if (sleepTime > 0) {
sleepTime--;
return(undefined);
}
_visible = true;
_rotation = _rotation + dr;
if (enlarge) {
_xscale = _xscale + ds;
_yscale = _yscale + ds;
if (_xscale > 100) {
enlarge = false;
}
} else {
_xscale = _xscale - ds;
_yscale = _yscale - ds;
if (_xscale < 0) {
removeMovieClip();
}
}
}
}
Symbol 762 MovieClip [__Packages.CMainMenu] Frame 0
class CMainMenu extends MovieClip
{
var console, attachMovie, getNextHighestDepth, engine, _width;
function CMainMenu () {
super();
console = attachMovie("CMainMenuConsole", "CMainMenuConsole" + getNextHighestDepth(), getNextHighestDepth(), {engine:engine});
console._x = (_width / 2) - (console._width / 2);
console._y = -console._height;
}
function setEnabled(flag) {
console.setEnabled(flag);
}
}
Symbol 763 MovieClip [__Packages.CMainMenuConsole] Frame 0
class CMainMenuConsole extends MovieClip
{
var bAction, bPuzzle, bHelp, bOptions, bEternal, bExit, _parent, _y, bHiScore, bCredits;
function CMainMenuConsole () {
super();
createHandlers();
}
function createHandlers() {
bAction.onRelease = action;
bPuzzle.onRelease = puzzle;
bHelp.onRelease = help;
bOptions.onRelease = options;
bEternal.onRelease = eternal;
bExit.onRelease = function () {
fscommand ("quit");
};
}
function action() {
_parent.engine.setState(CEngine.stateAction);
}
function puzzle() {
_parent.engine.setState(CEngine.statePuzzle);
}
function help() {
_parent.engine.setState(CEngine.stateHelp);
}
function options() {
_parent.engine.setState(CEngine.stateOptions);
}
function eternal() {
_parent.engine.attachMovie("CGetFullVersion", "CGetFullVersion" + _parent.engine.getNextHighestDepth(), _parent.engine.getNextHighestDepth());
}
function onEnterFrame() {
if (_y < 50) {
_y = _y + 50;
if (_y > 50) {
_y = 60;
}
} else {
_y = 60;
}
}
function setEnabled(flag) {
bAction.enabled = flag;
bPuzzle.enabled = flag;
bHelp.enabled = flag;
bEternal.enabled = flag;
bOptions.enabled = flag;
bHiScore.enabled = flag;
bCredits.enabled = flag;
bExit.enabled = flag;
}
}
Symbol 764 MovieClip [__Packages.CNextLevel] Frame 0
class CNextLevel extends MovieClip
{
var back, bContinue, bDownload, bTellAFriend, _parent;
function CNextLevel () {
super();
back.useHandCursor = false;
back.onRelease = function () {
};
createHandlers();
}
function createHandlers() {
bContinue.onRelease = onContinueClick;
bDownload.onRelease = onDownloadClick;
bTellAFriend.onRelease = onTellAFriendClick;
}
function onContinueClick() {
if (_parent.command == 0) {
_parent.removeMovieClip();
return(undefined);
}
_parent.engine.gotoNextLevel();
}
function onDownloadClick() {
CEngine.downloadFreeTrial();
}
function onTellAFriendClick() {
CEngine.tellAFriend();
}
}
Symbol 765 MovieClip [__Packages.CTutorial] Frame 0
class CTutorial extends MovieClip
{
var _y, _x, state, bContinue, game, attachMovie, getNextHighestDepth, engine, cursor, counter;
function CTutorial () {
super();
_y = CGlobal.gameHeight;
_x = 80;
state = -1;
bContinue.onRelease = function () {
this._parent.engine.setState(CEngine.stateAction);
};
}
function onEnterFrame() {
switch (state) {
case -1 :
_y = _y - 30;
if (_y < 80) {
_y = 80;
state = 0;
}
break;
case 0 :
game = attachMovie("CGame", "CGame" + getNextHighestDepth(), getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypeTutorial, _x:16, _y:39});
game.loadLevel(CGlobal.tutorialLevel);
cursor = attachMovie("anim1", "anim1" + getNextHighestDepth(), getNextHighestDepth(), {_x:game.pills[game.pills.length - 1]._x + 10, _y:game.pills[game.pills.length - 1]._y + 35});
state = 1;
counter = 0;
break;
case 1 :
counter++;
if (counter > 50) {
state = 2;
}
break;
case 2 :
game.selectPill(game.pills[game.pills.length - 1]);
counter = 0;
state = 3;
break;
case 3 :
counter++;
if (counter == 30) {
cursor.gotoAndPlay("state2");
}
if (counter > 50) {
state = 4;
}
break;
case 4 :
game.pills[game.pills.length - 2].onRollOver();
state = 5;
counter = 0;
break;
case 5 :
counter++;
if (counter > 50) {
state = 6;
}
break;
case 6 :
game.pills[game.pills.length - 2].onRelease();
cursor.gotoAndPlay("state3");
state = 7;
break;
case 7 :
counter++;
if (counter <= 180) {
break;
}
state = 0;
game.removeMovieClip();
cursor.removeMovieClip();
}
}
}
Symbol 766 MovieClip [__Packages.CHelp] Frame 0
class CHelp extends MovieClip
{
var bBack, counter, _y, dark1, dark2, dark3, dark4, state, game1, dummy1, engine, game2, dummy2, game3, dummy3, game4, dummy4, globalState, removeMovieClip, cursor;
function CHelp () {
super();
bBack.onRelease = function () {
this._parent.engine.setState(this._parent.prevGameState);
};
counter = -1;
setGlobalState(-1);
_y = CGlobal.gameHeight;
}
function setGlobalState(val) {
dark1._alpha = 30;
dark2._alpha = 30;
dark3._alpha = 30;
dark4._alpha = 30;
state = 0;
switch (val) {
case 0 :
dark1._alpha = 0;
game1.removeMovieClip();
game1 = dummy1.attachMovie("CGame", "CGame" + dummy1.getNextHighestDepth(), dummy1.getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypeTutorial});
break;
case 1 :
dark2._alpha = 0;
game2.removeMovieClip();
game2 = dummy2.attachMovie("CGame", "CGame" + dummy2.getNextHighestDepth(), dummy2.getNextHighestDepth(), {initialPillsQuantity:0, engine:engine, gameType:CGame.gameTypeTutorial});
break;
case 2 :
dark3._alpha = 0;
CGlobal.targetGreen = 100;
CGlobal.targetOrange = 100;
CGlobal.targetPurple = 100;
game3.removeMovieClip();
game3 = dummy3.attachMovie("CMixtureIndicators", "CMixtureIndicators" + dummy3.getNextHighestDepth(), dummy3.getNextHighestDepth(), {_x:-50, _y:30});
game3.gAnim = undefined;
break;
case 3 :
dark4._alpha = 0;
game4.removeMovieClip();
game4 = dummy4.attachMovie("CFlower", "CFlower" + dummy4.getNextHighestDepth(), dummy4.getNextHighestDepth());
game4.stop();
}
globalState = val;
}
function onEnterFrame() {
switch (globalState) {
case -1 :
processAppear();
break;
case 0 :
processGame1();
break;
case 1 :
processGame2();
break;
case 2 :
processGame3();
break;
case 3 :
processGame4();
break;
case 4 :
processDissapear();
}
}
function disappear() {
setGlobalState(4);
}
function processAppear() {
_y = _y - 40;
if (_y < 0) {
setGlobalState(0);
_y = 0;
}
}
function processDissapear() {
_y = _y + 40;
if (_y > CGlobal.gameHeight) {
removeMovieClip();
}
}
function processGame1() {
switch (state) {
case 0 :
counter++;
if (counter > 10) {
counter = 0;
state = 1;
}
break;
case 1 :
game1.loadLevel(CGlobal.help1Level);
cursor = dummy1.attachMovie("hAnim1", "hAnim1" + dummy1.getNextHighestDepth(), dummy1.getNextHighestDepth(), {_x:113, _y:55});
state = 2;
break;
case 2 :
counter++;
if (counter > 20) {
counter = 0;
state = 3;
}
break;
case 3 :
game1.selectPill(game1.pills[0]);
state = 4;
break;
case 4 :
counter++;
if (counter > 20) {
counter = 0;
state = 5;
}
break;
case 5 :
game1.pills[1].onRollOver();
state = 6;
break;
case 6 :
counter++;
if (counter > 20) {
counter = 0;
state = 7;
}
break;
case 7 :
game1.pills[1].onRelease();
state = 8;
break;
case 8 :
counter++;
if (counter <= 20) {
break;
}
counter = 0;
state = 0;
cursor.removeMovieClip();
game1.removeMovieClip();
setGlobalState(1);
}
}
function processGame2() {
switch (state) {
case 0 :
counter++;
if (counter > 10) {
counter = 0;
state = 1;
}
break;
case 1 :
game2.loadLevel(CGlobal.help2Level);
cursor = dummy2.attachMovie("hAnim2", "hAnim2" + dummy2.getNextHighestDepth(), dummy2.getNextHighestDepth(), {_x:48, _y:55});
state = 2;
break;
case 2 :
counter++;
if (counter > 20) {
counter = 0;
state = 3;
}
break;
case 3 :
game2.selectPill(game2.pills[0]);
state = 4;
break;
case 4 :
counter++;
if (counter > 20) {
counter = 0;
state = 5;
}
break;
case 5 :
game2.pills[1].onRollOver();
state = 6;
break;
case 6 :
counter++;
if (counter > 20) {
counter = 0;
state = 7;
}
break;
case 7 :
game2.pills[1].onRelease();
state = 8;
break;
case 8 :
counter++;
if (counter <= 120) {
break;
}
counter = 0;
state = 0;
cursor.removeMovieClip();
game2.removeMovieClip();
setGlobalState(2);
}
}
function processGame3() {
switch (state) {
case 0 :
counter++;
if (counter > 10) {
counter = 0;
state = 1;
cursor = dummy3.attachMovie("arrow", "arrow" + dummy3.getNextHighestDepth(), dummy3.getNextHighestDepth(), {_x:135, _y:-5});
}
break;
case 1 :
if (game3.gMix.currentQuantity < CGlobal.targetGreen) {
game3.gMix.setValue(game3.gMix.currentQuantity++);
} else {
state = 2;
cursor.removeMovieClip();
}
break;
case 2 :
counter++;
if (counter <= 25) {
break;
}
counter = 0;
game3.removeMovieClip();
setGlobalState(3);
}
}
function processGame4() {
switch (state) {
case 0 :
counter++;
if (counter > 40) {
counter = 0;
var _local3;
var _local2 = 0;
while (_local2 < 10) {
_local3 = dummy4.attachMovie("CFlowerParticle", "CFlowerParticle" + dummy4.getNextHighestDepth(), dummy4.getNextHighestDepth());
_local3._x = 30 + random(100);
_local3._y = 30 + random(100);
_local2++;
}
game4.gotoAndStop(2);
state = 1;
}
break;
case 1 :
counter++;
if (counter > 40) {
counter = 0;
var _local2 = 0;
while (_local2 < 10) {
var _local3 = dummy4.attachMovie("CFlowerParticle", "CFlowerParticle" + dummy4.getNextHighestDepth(), dummy4.getNextHighestDepth());
_local3._x = 30 + random(100);
_local3._y = 30 + random(100);
_local2++;
}
game4.gotoAndStop(3);
state = 2;
}
break;
case 2 :
counter++;
if (counter > 40) {
counter = 0;
var _local2 = 0;
while (_local2 < 10) {
var _local3 = dummy4.attachMovie("CFlowerParticle", "CFlowerParticle" + dummy4.getNextHighestDepth(), dummy4.getNextHighestDepth());
_local3._x = 30 + random(100);
_local3._y = 30 + random(100);
_local2++;
}
game4.gotoAndStop(4);
state = 3;
}
break;
case 3 :
counter++;
if (counter <= 40) {
break;
}
counter = 0;
game4.removeMovieClip();
setGlobalState(0);
}
}
}
Symbol 767 MovieClip [__Packages.CSliderControl] Frame 0
class CSliderControl extends MovieClip
{
var state, _parent, _enabled, bounds_obj, getBounds, slider, _alpha;
function CSliderControl () {
super();
state = _parent.engine.sounds.getVolume();
_enabled = true;
bounds_obj = getBounds(this);
setState(state);
slider.onPress = function () {
if (this._parent._enabled) {
(this.startDrag(false, this._parent.bounds_obj.xMin, 0, this._parent.bounds_obj.xMax + 1, 0));// not popped
}
};
slider.onRelease = function () {
(this.stopDrag());// not popped
this._parent.state = Math.floor((Math.abs(this._parent.slider._x - this._parent.bounds_obj.xMin) / Math.abs(this._parent.bounds_obj.xMax - this._parent.bounds_obj.xMin)) * 100);
};
slider.onReleaseOutside = slider.onRelease;
slider.onMouseMove = function () {
this._parent.state = Math.floor((Math.abs(this._parent.slider._x - this._parent.bounds_obj.xMin) / Math.abs(this._parent.bounds_obj.xMax - this._parent.bounds_obj.xMin)) * 100);
this._parent._parent.engine.sounds.setVolume(this._parent.state);
};
}
function getState() {
if (_enabled) {
return(state);
}
return(0);
}
function setEnabled(b) {
_enabled = b;
if (b) {
_alpha = 100;
} else {
_alpha = 40;
}
}
function setState(i) {
if ((i >= 0) && (i <= 100)) {
state = i;
slider._x = Math.floor(((i * (bounds_obj.xMax - bounds_obj.xMin)) / 100) + bounds_obj.xMin) + 1;
}
}
}
Symbol 768 MovieClip [__Packages.CIntro] Frame 0
class CIntro extends MovieClip
{
var counter, state, clickToContinue, loading, progressBar, stop, nextFrame;
function CIntro () {
super();
counter = 0;
state = 0;
clickToContinue._visible = false;
loading._visible = false;
progressBar._visible = false;
progressBar.setValue(0);
(stop());// not popped
}
function onEnterFrame() {
switch (state) {
case 0 :
counter++;
if (counter > 50) {
(nextFrame());// not popped
counter = 0;
state = 1;
}
break;
case 1 :
counter++;
if (counter > 50) {
(nextFrame());// not popped
loading._visible = true;
counter = 0;
state = 2;
}
break;
case 2 :
counter = counter + 3;
progressBar.setValue(counter);
if (counter >= 100) {
loading._visible = false;
clickToContinue._visible = true;
state = 3;
}
break;
case 3 :
clickToContinue.onRelease = function () {
this._parent.engine.setState(CEngine.stateMainMenu);
};
}
}
}
Symbol 769 MovieClip [__Packages.CContinue] Frame 0
class CContinue extends MovieClip
{
var _x, _y, bContinue, bNewGame;
function CContinue () {
super();
_x = 190;
_y = 162;
bContinue.onRelease = function () {
this._parent.engine.continuePlaying(this._parent.puzzle);
};
bNewGame.onRelease = function () {
this._parent.engine.startNewGame(this._parent.puzzle);
};
}
}
Symbol 770 MovieClip [__Packages.CGameOver] Frame 0
class CGameOver extends MovieClip
{
var _x, _width, _y, _height, sScore, score, score1, sRank, rank, sTries, tries, tries1, bTryAgain, bMainMenu;
function CGameOver () {
super();
_x = 400 - (_width / 2);
_y = 240 - (_height / 2);
score.text = sScore;
score1.text = sScore;
rank.text = sRank;
tries.text = sTries;
tries1.text = sTries;
if (tries1.text == "0") {
bTryAgain._visible = false;
bMainMenu._x = 78;
}
bMainMenu.onRelease = function () {
if (this._parent.engine.state == CEngine.stateAction) {
if (this._parent.engine.action.trys <= 0) {
this._parent.engine.action.removeMovieClip();
this._parent.engine.action = undefined;
}
}
this._parent.engine.setState(CEngine.stateMainMenu);
this._parent.removeMovieClip();
};
bTryAgain.onRelease = function () {
if (this._parent.engine.state == CEngine.stateAction) {
this._parent.engine.action.trys--;
}
this._parent.engine.action.restartLevel();
this._parent.engine.action.resume();
this._parent.removeMovieClip();
};
}
}
Symbol 771 MovieClip [__Packages.CPrestart] Frame 0
class CPrestart extends MovieClip
{
var g, green, green1, p, purple, purple1, o, orange, orange1, onRelease;
function CPrestart () {
super();
green.text = g;
green1.text = g;
purple.text = p;
purple1.text = p;
orange.text = o;
orange1.text = o;
onRelease = function () {
this.game.showHint();
this.removeMovieClip();
};
}
}
Symbol 772 MovieClip [__Packages.CGetFullVersion] Frame 0
class CGetFullVersion extends MovieClip
{
var onRelease;
function CGetFullVersion () {
super();
onRelease = function () {
this.removeMovieClip();
};
}
}
Symbol 773 MovieClip [__Packages.CTip] Frame 0
class CTip extends MovieClip
{
var back, tipN, idnum, idnum1, bOK;
function CTip () {
super();
back.useHandCursor = false;
back.onRelease = function () {
};
idnum.text = tipN;
idnum1.text = tipN;
bOK.onRelease = function () {
this._parent.removeMovieClip();
};
}
}