Frame 1
stop();
_root.loaderConfig = "en-US";
_root.loaderConfigTest = false;
_root.GetRoot = function () {
return(_root.controller_mc);
};
_root.LoadGame = function () {
if (_root.loaderConfigTest) {
Key.addListener(_root);
_root.onKeyDown = function () {
_root.loaderConfigTest = false;
_root.LoadGame();
};
} else {
_root.loadBroadcastTime = getTimer();
_root.createEmptyMovieClip("controller_mc", 1);
_root.createEmptyMovieClip("brand_mc", 2);
_root.createEmptyMovieClip("assets_mc", 3);
_root.brand_mc.loadMovie("brand.swf");
this.onEnterFrame = function () {
_root.brand_mc._visible = false;
_root.brand_mc.stop();
_root.assets_mc._visible = false;
_root.assets_mc.stop();
switch (_root.loaderConfig) {
case "en-US" :
LoadText.text = "loading ...";
break;
case "fr-FR" :
LoadText.text = "chargement ...";
break;
default :
trace(" !!! UNKNOWN LOADER LANGUAGE!");
LoadText.text = "loading ...";
}
Progress.currentLoad = "brand_mc";
Progress.byteTotal = 0;
Progress.onEnterFrame = mx.utils.Delegate.create(Progress, function () {
var _local6 = this.byteTotal + _root[this.currentLoad].getBytesLoaded();
var _local4 = 888000 /* 0x0D8CC0 */;
var _local3 = Math.min(100, int((_local6 * 100) / _local4));
if (((getTimer() - _root.loadBroadcastTime) > 1000) || (_local3 == 100)) {
_root.loadBroadcastTime = getTimer();
CPachinko.UpdateLoading(_local3);
}
if (isNaN(_local4) || (_local4 < 4)) {
return(undefined);
}
var _local5 = (_root[this.currentLoad].getBytesTotal() < 0) && (this.currentLoad == "brand_mc");
if ((_root[this.currentLoad].getBytesLoaded() >= _root[this.currentLoad].getBytesTotal()) && ((_root[this.currentLoad].getBytesTotal() > 0) || (_local5))) {
if (!_local5) {
this.byteTotal = this.byteTotal + _root[this.currentLoad].getBytesTotal();
}
if (this.currentLoad == "brand_mc") {
_root[this.currentLoad].removeMovieClip();
this.currentLoad = "assets_mc";
_root.assets_mc.loadMovie("assets.swf");
} else if (this.currentLoad == "assets_mc") {
_root[this.currentLoad].removeMovieClip();
this.currentLoad = "controller_mc";
_root.controller_mc.loadMovie("scrubblesweb.swf");
} else if (this.currentLoad == "controller_mc") {
_root.controller_mc.gotoAndStop(2);
_root[this.currentLoad]._visible = true;
this.currentLoad = "";
this.onEnterFrame = null;
_root.gotoAndStop(2);
}
}
Progress.Progress.gotoAndStop(_local3);
});
this.onEnterFrame = null;
};
}
};
_root.LoadGame();
Frame 3
_root.SessionStart();
Frame 12
_root.MuteOn();
Frame 19
_root.MuteOff();
Frame 26
_root.PauseOn();
Frame 33
_root.PauseOff();
Frame 40
_root.GameMenu();
Frame 48
_root.GameContinue();
Frame 58
_root.GameStart();
Frame 66
_root.CustomReturn();
Frame 76
_root.LoadAchievement();
Symbol 4 MovieClip Frame 1
stop();
Symbol 9 MovieClip [__Packages.CPachinko] Frame 0
class CPachinko
{
function CPachinko () {
}
static function IsWaiting() {
return(CWebConfig.IsPachinkoActive() && (m_state == State_Wait));
}
static function MuteOn() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CGame.Sounds != null) {
CGame.Sounds.SetMute(true);
GameState.boardMutBut.gotoAndStop(2);
GameState.crossClip._visible = true;
}
}
static function MuteOff() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CGame.Sounds != null) {
CGame.Sounds.SetMute(false);
GameState.boardMutBut.gotoAndStop(1);
GameState.crossClip._visible = false;
}
}
static function IsMuted() {
if (CGame.Sounds != null) {
return(CGame.Sounds.GetMute());
}
return(false);
}
static function MuteToggle() {
(IsMuted() ? (MuteOff()) : (MuteOn()));
}
static function PauseOn() {
GameMenu();
}
static function PauseOff() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CGame.Board != null) {
CGame.Board.HideMenu();
}
}
static function MainMenu() {
GameState.m_MainMenu = true;
GameState.LoseDone(Constants.__get__WinLoseResult_MainMenu());
GameEnd(true);
}
static function GameMenu(i_forceMainMenu) {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if ((CGame.Board != null) && (!i_forceMainMenu)) {
if (CGame.Board.m_Lost) {
Core.DialogUtil.SwitchTo(Constants.Dialog_MainMenu);
} else {
CGame.Board.ShowMenu();
}
} else {
Core.DialogUtil.SwitchTo(Constants.Dialog_MainMenu);
}
}
static function GameReady() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CWebConfig.IsPachinkoActive()) {
if (m_state != State_GameReady) {
m_state = State_GameReady;
var _local1;
if (GameState.IsCurrentArcadeModeBall()) {
_local1 = "Ball";
} else {
_local1 = "Direct";
}
fscommand ("GameReady", ((("<data><mode>" + _local1) + "</mode><difficulty>") + GameState.GetCurrentArcadeSetDifficulty()) + "</difficulty><startlevel>1</startlevel></data>");
}
} else {
GameStart();
}
}
static function GameStart() {
if (!GameState.m_MainMenu) {
m_state = State_GameStart;
trace("RESTART" + CWebConfig.__get__LoseRestart());
GameState.Play(!CWebConfig.__get__LoseRestart());
}
GameState.m_MainMenu = false;
CGame.m_startTime = getTimer();
}
static function AchievementScored(i_name) {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CWebConfig.IsAchievementActive()) {
fscommand ("Game_SignalAchievement", ("<data>" + i_name) + "</data>");
}
}
static function DownloadDeluxe() {
if (CWebConfig.IsPachinkoActive()) {
fscommand ("CustomEvent", "<gamedata>DeluxeDownload</gamedata>");
} else {
getURL (CWebConfig.__get__DownloadDemoUrl(), CWebConfig.__get__DownloadDemoPageSource());
}
}
static function BuyNow() {
if (CWebConfig.IsPachinkoActive()) {
fscommand ("CustomEvent", "<gamedata>DeluxeDownload</gamedata>");
} else {
getURL (CWebConfig.__get__BuyNowUrl(), CWebConfig.__get__BuyNowPageSource());
}
}
static function ScoreSubmit() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CWebConfig.IsPachinkoActive()) {
var _local1 = 0;
if (!CGame.s_CheatedThisGame) {
_local1 = CGame.CurrentPlayer.m_Score;
}
var _local2 = CGame.GetUpTime();
fscommand ("ScoreSubmit", ((("<game><score>" + _local1) + "</score><time>") + _local2) + "</time></game>");
clearUpdate();
}
}
static function GameEnd(i_noRestart) {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CWebConfig.IsPachinkoActive()) {
if (i_noRestart && (CWebConfig.__get__BrandName() == "Diamond")) {
fscommand ("GameEnd", "<gamedata></gamedata>");
} else if (!i_noRestart) {
fscommand ("GameEnd", "<gamedata></gamedata>");
}
} else {
GameReady();
}
m_state = State_GameEnd;
}
static function CustomReturn() {
}
static function GameBreak() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CWebConfig.IsPachinkoActive()) {
var _local1 = GameState.GetBaseLevel() - 1;
fscommand ("GameBreak", ("<data><breakpoint>" + _local1) + "</breakpoint></data>");
m_state = State_GameBreak;
} else {
GameContinue();
}
}
static function GameContinue(i_force) {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (((!i_force) && (CWebConfig.__get__ShowUpsell())) && ((GameState.__get__CurrentLevel() % CWebConfig.__get__ShowUpsellFreq()) == 0)) {
var _local1 = CDialog(Core.DialogUtil.Push(Constants.Dialog_Upsell));
_local1.CloseEvent.PushBehaviorRunOnce(function () {
CPachinko.GameContinue(true);
});
} else {
GameState.WinDone(Constants.__get__WinLoseResult_PlayNext());
m_state = State_GameStart;
}
}
static function SessionStart() {
m_state = State_SessionStart;
CGame.LoadMonitor.OnPachinkoLoaded();
}
static function SessionReady() {
if (m_state != State_SessionReady) {
m_state = State_SessionReady;
fscommand ("SessionReady", "<data></data>");
}
}
static function LoadAchievement() {
var _local3 = _root.LoadAchievement_Data.split(",");
var _local2 = 0;
while (_local2 < _local3.length) {
if (_local3[_local2] == "1") {
_local3[_local2] = true;
} else {
_local3[_local2] = false;
}
_local2++;
}
CGame.CurrentPlayer.SyncAchievements(_local3);
}
static function clearUpdate() {
clearInterval(m_timerID);
m_timerID = null;
}
static function UpdateScore() {
if (CWebConfig.IsPachinkoActive() && (IsWaiting())) {
return(undefined);
}
if (CBoard.G.IsPlaying()) {
if (m_timerID == null) {
var _local2 = CWebConfig.__get__ScoreSubmitMinWait() * 1000;
if ((_local2 == undefined) || (_local2 <= 0)) {
_local2 = 3000;
}
m_timerID = setInterval(UpdateScore, _local2);
} else {
var _local1 = 0;
if (!CGame.s_CheatedThisGame) {
_local1 = CGame.CurrentPlayer.m_Score;
}
var _local2 = CGame.GetUpTime();
fscommand ("ScoreBroadcast", ((("<game><score>" + _local1) + "</score><time>") + _local2) + "</time></game>");
}
} else {
clearUpdate();
}
}
static function UpdateLoading(perc) {
fscommand ("LoadBroadcast", ("<data><percentcomplete>" + perc) + "</percentcomplete></data>");
}
static function LoadError() {
fscommand ("GameError", "load");
}
static var State_Wait = 0;
static var State_SessionReady = 1;
static var State_SessionStart = 2;
static var State_GameReady = 3;
static var State_GameStart = 4;
static var State_GameBreak = 5;
static var State_GameEnd = 6;
static var m_state = State_Wait;
static var m_lastScoreSubmit = null;
static var m_timerID = null;
}
Symbol 10 MovieClip [__Packages.CWebConfig] Frame 0
class CWebConfig
{
static var _xml;
function CWebConfig () {
}
static function Initialize(i_xml) {
_xml = i_xml;
IsInitialized = true;
}
static function get BuyNowUrl() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/BuyNow").attributes.url);
}
static function get DownloadDemoUrl() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/DownloadDemo").attributes.url);
}
static function get BrandName() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/Brand").attributes.name);
}
static function get ShowUpsell() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/Upsell").attributes.show == "1");
}
static function get ShowUpsellFreq() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/Upsell").attributes.freq);
}
static function get BuyNowPageSource() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/BuyNow").attributes.pageSource);
}
static function get DownloadDemoPageSource() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/DownloadDemo").attributes.pageSource);
}
static function get BroadcastPeriod() {
var _local1 = Oberon.XmlX.findChild(_xml, "Config/Web/Score").attributes.broadcast_period;
if (_local1 == undefined) {
_local1 = 0;
}
return(_local1);
}
static function get LoseRestart() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/LoseRestart").attributes.enabled == "1");
}
static function get CheatsEnabled() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/Cheats").attributes.enabled == "1");
}
static function get ScoreSubmitMinWait() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/ScoreSubmit").attributes.minWait);
}
static function IsPachinkoActive() {
return((BrandName == "MSN") || (BrandName == "Diamond"));
}
static function IsAchievementActive() {
return(Oberon.XmlX.findChild(_xml, "Config/Web/Achievements").attributes.enabled == "1");
}
static var IsInitialized = false;
}
Symbol 11 MovieClip [__Packages.Oberon.XmlX] Frame 0
class Oberon.XmlX
{
function XmlX () {
}
static function findChild(inNode, inPath) {
var _local5 = inPath.split("/");
var _local3 = 0;
while (_local3 < _local5.length) {
var _local4 = false;
var _local1 = 0;
while (_local1 < inNode.childNodes.length) {
if (inNode.childNodes[_local1].nodeName == _local5[_local3]) {
_local4 = true;
inNode = inNode.childNodes[_local1];
break;
}
_local1++;
}
if (!_local4) {
return(null);
}
_local3++;
}
return(inNode);
}
static function get XmlStatus_Success() {
return(0);
}
static function get XmlStatus_BadCdata() {
return(-2);
}
static function get XmlStatus_BadDeclaration() {
return(-3);
}
static function get XmlStatus_BadDoctype() {
return(-4);
}
static function get XmlStatus_BadComment() {
return(-5);
}
static function get XmlStatus_MalformedElement() {
return(-6);
}
static function get XmlStatus_NotEnoughMemory() {
return(-7);
}
static function get XmlStatus_BadAttribute() {
return(-8);
}
static function get XmlStatus_NoEndTag() {
return(-9);
}
static function get XmlStatus_NoStartTag() {
return(-10);
}
static function getXmlStatusDesc(inXmlStatus) {
switch (inXmlStatus) {
case XmlStatus_Success :
return("The document parsed without errors.");
case XmlStatus_BadCdata :
return("A CDATA section was not properly terminated.");
case XmlStatus_BadDeclaration :
return("The XML declaration was not properly terminated.");
case XmlStatus_BadDoctype :
return("The DOCTYPE delcaration was not properly terminated.");
case XmlStatus_BadComment :
return("A comment was not properly terminated.");
case XmlStatus_MalformedElement :
return("An XML element was malformed.");
case XmlStatus_NotEnoughMemory :
return("Not enough memory to parse the XML source.");
case XmlStatus_BadAttribute :
return("An attribute value was not properly terminated.");
case XmlStatus_NoEndTag :
return("A start tag had no corresponding end tag.");
case XmlStatus_NoStartTag :
return("An end tag had no corresponding start tag.");
case undefined :
return("<Undefined>");
}
return("<Unknown>");
}
static function XmlToFormattedString(i_xml) {
var _local3 = "";
var _local4 = "";
for (var _local5 in i_xml.attributes) {
_local4 = _local4 + (((_local5 + "=\"") + i_xml.attributes[_local5]) + "\" ");
}
_local3 = ((("<?xml version=\"1.0\"?>\n<" + i_xml.nodeName) + ((_local4 == "") ? "" : " ")) + _local4) + ">\n";
var _local1 = 0;
while (_local1 < i_xml.childNodes.length) {
_local3 = _local3 + XmlToFormattedStringHelper(i_xml.childNodes[_local1], " ");
_local1++;
}
_local3 = _local3 + (("</" + i_xml.nodeName) + ">");
return(_local3);
}
static function XmlToFormattedStringHelper(i_xml, i_spacing) {
var _local3 = "";
for (var _local6 in i_xml.attributes) {
_local3 = (((_local6 + "=\"") + i_xml.attributes[_local6]) + "\" ") + _local3;
}
var _local4 = (((i_spacing + "<") + i_xml.nodeName) + (((_local3 != "") || (i_xml.hasChildNodes())) ? " " : "")) + _local3;
if (!i_xml.hasChildNodes()) {
_local4 = _local4 + "/>\n";
} else {
_local4 = _local4 + ">\n";
var _local1 = 0;
while (_local1 < i_xml.childNodes.length) {
_local4 = _local4 + XmlToFormattedStringHelper(i_xml.childNodes[_local1], " " + i_spacing);
_local1++;
}
_local4 = _local4 + (((i_spacing + "</") + i_xml.nodeName) + ">\n");
}
return(_local4);
}
}
Symbol 12 MovieClip [__Packages.CGame] Frame 0
class CGame
{
static var PhysMgr, EffectMgr, CurrentPlayer, TileSet, Board, Sounds, Localizer, ComputerSpeed, DbgSTShowArgs, DbgSTShowResult, DbgSTAttemptToString, DbgSTCrashOnHit, DbgSTStopTraceOnHit, DbgSTStartTraceOnHit, DbgSTFilterTrace, DbgSTTicksToDisable, DbgSTResolveUnknown;
function CGame () {
}
static function Init() {
Root = _root.GetRoot();
m_AppUpdates = 0;
PhysMgr = new PhysicsMgr();
EffectMgr = new CEffectManager();
CurrentPlayer = new CPlayerInfo("Unknown");
Root._quality = "HIGH";
m_MouseDown = false;
m_startTime = getTimer();
m_lastTick = m_startTime;
KeyListener = new Object();
KeyListener.onKeyDown = function () {
CGame.OnKeyDown();
};
KeyListener.onKeyUp = function () {
CGame.OnKeyUp();
};
Key.addListener(KeyListener);
MouseListener = new Object();
MouseListener.onMouseDown = function () {
CGame.OnMouseDown();
};
MouseListener.onMouseUp = function () {
CGame.OnMouseUp();
};
Mouse.addListener(MouseListener);
LoadConfigVars();
PhysMgr.Reset();
Core.CTween.Reset();
CLevelManifest.G = new CLevelManifest();
CLevelManifest.G.LoadLevelManifests("resources/levels/levelmanifest.xml");
var _local2 = Root.createEmptyMovieClip("CGameUpdater", Root.getNextHighestDepth());
_local2.onEnterFrame = function () {
CGame.MainLoop();
};
}
static function MainLoop() {
m_AppUpdates++;
var _local6 = m_lastTick;
m_lastTick = getTimer();
var _local4 = (s_Speed * (m_lastTick - _local6)) / 1000;
if (DbgPause) {
if (!DbgPauseStep) {
return(undefined);
}
_local4 = 1 / Constants.Fps;
DbgPauseStep = false;
if (DbgTraceTween) {
CDebug.WriteLine("CGame.MainLoop()", Core.CTween.ToStringAll());
}
}
if (DbgCheckBitmapCaching) {
var _local3 = TileSet.GetActiveBorbsFixedArray();
var _local1 = 0;
while (_local1 < TileSet.GetActiveBorbsCount()) {
var _local2 = "";
if (SnoodHead(_local3[_local1]).GetEmoteClip().cacheAsBitmap) {
_local2 = _local2 + "E ";
} else {
_local2 = _local2 + "X ";
}
if (SnoodHead(_local3[_local1]).GetItemClip().cacheAsBitmap) {
_local2 = _local2 + "I";
} else {
_local2 = _local2 + "X";
}
SnoodHead(_local3[_local1]).DbgSetText(_local2);
_local1++;
}
}
var _local5 = GameState.IsFrozen();
if (!_local5) {
if ((PhysMgr != null) && (!GameState.IsFrozen())) {
PhysMgr.Update(_local4, false);
}
}
Core.CTween.UpdateAll(_local4);
if (!_local5) {
Board.Update(_local4);
EffectMgr.UpdateEffects(_local4);
}
Core.DialogUtil.UpdateMouseMode();
}
static function GetUpTime() {
return(Math.floor((getTimer() - m_startTime) / 1000));
}
static function OnKeyDown() {
var _local8 = false;
var _local9 = Key.getCode();
var _local17 = Key.isDown(16);
if ((_local17 && (CDialog(Core.DialogUtil.Top()).Name != Constants.Dialog_GameBoardMenu)) && (CanCheat())) {
_local8 = true;
switch (_local9) {
case 186 :
if (KeyListener.snd == null) {
KeyListener.snd = 0;
} else {
KeyListener.snd--;
}
Sounds.PlaySound(KeyListener.snd);
break;
case 222 :
if (KeyListener.snd == null) {
KeyListener.snd = 0;
} else {
KeyListener.snd++;
}
Sounds.PlaySound(KeyListener.snd);
break;
case 188 :
Board.m_Launcher.m_LaunchSnood.SetColor((Board.m_Launcher.m_LaunchSnood.__get__Color() % Constants.Snood_Count) + 1);
Board.m_Launcher.RefreshCannonSnood();
break;
case 190 :
Board.m_Launcher.m_LaunchSnood.SetPowerUp((Board.m_Launcher.m_LaunchSnood.__get__PowerUp() % Constants.PowerUp_Count) + 1);
Board.m_Launcher.RefreshCannonSnood();
break;
case 191 :
break;
case 90 :
Board.m_TileSet.DbgShowAllSlotTypes(!Board.DbgIsShowingAllSlotTypes());
break;
case 66 :
CDebug.WriteLine("CGame.OnKeyDown()", "Set bounding box to full screen");
TileSet.m_bbox.SetCenter(400, 300);
TileSet.m_bbox.SetExtents(400, 300);
TileSet.m_bbox.SetAxes(1, 0, 0, 1);
break;
case 86 :
Board.m_Won = true;
trace("1::" + String(Effects.CEffect_BorbDropAnim.AreEffectsActive()));
trace("2::" + String(EffectMgr.IsEffectPlaying(CEffect.Type_Vaporize)));
break;
case 82 :
CDebug.WriteLine("CGame.OnKeyDown()", "Reload config vars");
LoadConfigVars();
break;
case 74 :
var _local11 = ("ActiveAnim: " + EffectMgr.m_ActiveEffectCount) + "\n\n";
var _local13 = "Blockers:\n\n";
var _local4 = {};
var _local3 = 0;
while (_local3 < EffectMgr.m_ActiveEffectCount) {
var _local5 = CEffect(EffectMgr.m_ActiveEffects[_local3]).getType();
if (_local4[_local5] == undefined) {
_local4[_local5] = 1;
} else {
_local4[_local5] = _local4[_local5] + 1;
}
if (CEffect(EffectMgr.m_ActiveEffects[_local3]).m_bBlocking) {
_local13 = _local13 + (CEffect(EffectMgr.m_ActiveEffects[_local3]).getType() + newline);
}
_local3++;
}
for (_local3 in _local4) {
_local11 = _local11 + (((_local4[_local3] + ":") + _local3) + newline);
}
break;
case 75 :
break;
case 76 :
Board.m_Launcher._visible = !Board.m_Launcher._visible;
Board.ScoreDisplay._visible = !Board.ScoreDisplay._visible;
Board.m_Queue._visible = !Board.m_Queue._visible;
Board.m_Launcher.m_CannonSnood._visible = !Board.m_Launcher.m_CannonSnood._visible;
Board.m_Launcher.m_LaunchSnood._visible = !Board.m_Launcher.m_LaunchSnood._visible;
Board.ScoreLabelText._visible = !Board.ScoreLabelText._visible;
Board.LauncherBase._visible = !Board.LauncherBase._visible;
Board.ShotsInTubeLabel._visible = !Board.ShotsInTubeLabel._visible;
break;
case 80 :
var _local14 = TileSet.GetActiveBorbsCount();
var _local12 = TileSet.GetActiveBorbsFixedArray();
_local3 = 0;
while (_local3 < _local14) {
var _local2 = SnoodHead(_local12[_local3]);
if (_local2.__get__PowerUp() == Constants.PowerUp_Lock) {
_local2.KillEmoteAnim();
_local2.PlayEmoteAnim("sleep", true);
} else if (_local2.__get__PowerUp() == Constants.PowerUp_Hypnosis) {
_local2.KillEmoteAnim();
_local2.PlayEmoteAnim("hypnotized", true);
}
_local3++;
}
break;
case 57 :
AttachStackTracer();
break;
case 48 :
ToggleStackTracer();
break;
case 188 :
AddStackTracerFrames(2);
break;
case 84 :
_local3 = 0;
trace("--------------------------------------");
trace("Unknown Strings");
trace("--------------------------------------");
trace("");
trace("");
for (var _local15 in Localizer.m_UnknownStr) {
trace(((("<String Id=\"" + _local3) + "\" Text=\"") + _local15) + "\" />");
_local3++;
}
trace("");
trace("");
trace("");
trace("");
break;
case 189 :
s_Speed = s_Speed - 0.1;
CDebug.WriteLine("CGame.OnKeyDown()", "s_Speed set to " + s_Speed);
break;
case 187 :
s_Speed = s_Speed + 0.1;
CDebug.WriteLine("CGame.OnKeyDown()", "s_Speed set to " + s_Speed);
break;
case 65 :
Board.HighlightScore(true, 5);
Board.InsertBorbAtCannon(Board.GetRandBorb());
break;
case 83 :
var _local16 = new CBorbInfo(Constants.Snood_Mary, Constants.PowerUp_Fireball, null, true);
var _local18 = SnoodHead.GetAndRemoveFromPool(_local16, TileSet.m_SnoodSize, 100, 100);
_local18.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, 0.5);
break;
case 88 :
Core.DialogUtil.Push(Constants.Dialog_Upsell);
break;
case 67 :
_local16 = new CBorbInfo(Constants.Snood_Wild);
_local18 = SnoodHead.GetAndRemoveFromPool(_local16, TileSet.m_SnoodSize, 100, 100);
_local18.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, 0.5);
case 89 :
Board.HurryQueueAdvEffects();
DbgShowDropCheck = !DbgShowDropCheck;
break;
case 85 :
DbgCheckBitmapCaching = !DbgCheckBitmapCaching;
CDebug.WriteLine("DialogDump", Core.DialogUtil.ToString());
break;
case 78 :
GameState.Freeze();
_local8 = true;
break;
case 77 :
GameState.Unfreeze();
_local8 = true;
break;
case 73 :
_local16 = new CBorbInfo(Constants.Snood_Mary, Constants.PowerUp_BubbleBubble, null, true);
_local18 = SnoodHead.GetAndRemoveFromPool(_local16, TileSet.m_SnoodSize, 100, 100);
_local18.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, 0.5);
break;
case 79 :
_local16 = new CBorbInfo(Constants.Snood_Mary, Constants.PowerUp_Aimer, null, true);
_local18 = SnoodHead.GetAndRemoveFromPool(_local16, TileSet.m_SnoodSize, 100, 100);
_local18.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, 0.5);
break;
case 68 :
CurrentPlayer.ResetAchievements();
break;
case 70 :
_local3 = 0;
while (_local3 < TileSet.Cols) {
var _local1 = 0;
while (_local1 < TileSet.Rows) {
if (TileSet.GetTile(_local3, _local1) == null) {
var _local2 = SnoodHead.GetAndRemoveFromPool(Board.GetRandBorb());
TileSet.SetTile(_local3, _local1, _local2);
_local2._x = TileSet.GetGridCoords(_local3, _local1).X;
_local2._y = TileSet.GetGridCoords(_local3, _local1).Y;
}
_local1++;
}
_local3++;
}
break;
case 40 :
Board.m_TileSet._y++;
_local8 = true;
break;
case 38 :
Board.m_TileSet._y--;
_local8 = true;
break;
case 37 :
Board.m_TileSet._x--;
_local8 = true;
break;
case 39 :
Board.m_TileSet._x++;
_local8 = true;
break;
case 87 :
_local16 = new CBorbInfo(Constants.Snood_Mary, Constants.PowerUp_Hook, null, true);
_local18 = SnoodHead.GetAndRemoveFromPool(_local16, TileSet.m_SnoodSize, 100, 100);
_local18.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, 0.5);
break;
case 219 :
DbgPause = !DbgPause;
CDebug.WriteLine("CGame.OnKeyDown()", "DbgPause set to " + DbgPause);
break;
case 221 :
DbgPauseStep = true;
break;
case 69 :
Core.DialogUtil.Push(Constants.Dialog_Help);
break;
case 192 :
break;
case 81 :
TileSet.DropAllHeads();
break;
default :
_local8 = false;
}
}
if (!_local8) {
if (((_local9 + 32) >= 97) && ((_local9 + 32) <= 122)) {
var _local10 = [];
if (s_curCheatSeq.length > 0) {
s_curCheatSeq = s_curCheatSeq + fromCharCode(_local9);
} else {
s_curCheatSeq = fromCharCode(_local9);
}
var _local7 = (s_cheatsEnabled ? (s_cheats.length) : 1);
var _local3 = 0;
while (_local3 < _local7) {
if (s_cheats[_local3] == s_curCheatSeq) {
CDebug.WriteLine("CGame.OnKeyDown()", "Cheat triggered: " + s_curCheatSeq);
var _local6 = Function(s_cheatFuncs[_local3]);
_local6();
s_curCheatSeq = "";
_local3 = _local7;
} else if (s_cheats[_local3].indexOf(s_curCheatSeq) == 0) {
_local10.push(s_cheats[_local3]);
}
_local3++;
}
if (_local10.length == 0) {
s_curCheatSeq = "";
}
}
switch (_local9) {
case 8 :
Core.DialogUtil.OnBackSpaceDown();
break;
case 32 :
Core.DialogUtil.OnSpaceDown();
break;
case 13 :
break;
case 17 :
break;
default :
Core.DialogUtil.OnKeyDown(_local9);
}
}
updateAfterEvent();
}
static function OnKeyUp() {
updateAfterEvent();
}
static function OnMouseDown() {
m_MouseDown = true;
Core.DialogUtil.OnMouseDown();
updateAfterEvent();
}
static function OnMouseUp() {
m_MouseDown = false;
}
static function OnRMouseDown() {
m_RMouseDown = true;
if (Board != null) {
Board.OnRMouseDown();
}
}
static function OnRMouseUp() {
m_RMouseDown = false;
}
static function OnMMouseDown() {
if (Board != null) {
Board.ToggleMenu();
}
m_MMouseDown = true;
}
static function OnMMouseUp() {
m_MMouseDown = false;
}
static function OnEscDown() {
Core.DialogUtil.OnEscDown();
}
static function OnRequestClose() {
if (UI.CConfirmationDlg.CanDisplayDialogue()) {
var _local1 = UI.CConfirmationDlg(Core.DialogUtil.Push(Constants.Dialog_Confirmation));
_local1.CurrentDialogueType = UI.CConfirmationDlg.Confirm_ExitGame;
_local1.OkClickedEvent.PushBehavior(GameState.Quit, true);
}
}
static function OnSysMenu() {
if (Board != null) {
Board.ShowMenu();
}
}
static function OnConfigLoaded(i_success) {
CDebug.Assert(i_success, "CGame.OnConfigLoaded()", "Couldn't load config file");
XmlLoaded = true;
applyMainConfigVars();
RefreshCompSpeedVars();
Locale = Oberon.XmlX.findChild(XmlConfig, "Config/Game/Locale").attributes.Language;
if (Locale == null) {
trace("!!! CGame.OnConfigLoaded() couldn't find Game/Locale/Language config xml attribute");
}
CWebConfig.Initialize(XmlConfig);
Localizer = new CLocalizer(("resources/strings/str_" + Locale.toLowerCase()) + ".xml", Locale);
}
static function RefreshCompSpeedVars() {
if (ComputerSpeed == null) {
return(undefined);
}
CDebug.WriteLine("CGame.RefreshCompSpeedVars()", "Refresh for speed " + ComputerSpeed);
switch (ComputerSpeed) {
case FHost.CApp.__get__ComputerSpeed_Slow() :
applySlowConfigVars();
return;
case FHost.CApp.__get__ComputerSpeed_Normal() :
applyMedConfigVars();
return;
case FHost.CApp.__get__ComputerSpeed_Fast() :
applyFastConfigVars();
}
}
static function AttachStackTracer() {
Core.CStackTracer.m_ShowArgs = DbgSTShowArgs;
Core.CStackTracer.m_ShowResult = DbgSTShowResult;
Core.CStackTracer.m_AttemptToString = DbgSTAttemptToString;
Core.CStackTracer.m_CrashOnHit = DbgSTCrashOnHit;
Core.CStackTracer.m_StopTraceOnHit = DbgSTStopTraceOnHit;
Core.CStackTracer.m_StartTraceOnHit = DbgSTStartTraceOnHit;
Core.CStackTracer.m_FilterTrace = DbgSTFilterTrace;
Core.CStackTracer.m_TicksToDisable = DbgSTTicksToDisable;
CDebug.WriteLine("CGame.AttachStackTracer()", (("AttachTracer, start " + (Core.CStackTracer.m_Enabled ? "enabled" : "disabled")) + ", trace substr : \n ") + DbgSTSearchObj.join(", "));
Core.CStackTracer.Attach(false, DbgSTSearchObj, true, DbgSTResolveUnknown, false, false, false);
}
static function ToggleStackTracer() {
if (!Core.CStackTracer.IsAttached()) {
AttachStackTracer();
}
CDebug.WriteLine("CGame.ToggleStackTracer()", "Set stack tracer enabled to " + String(!Core.CStackTracer.m_Enabled));
Core.CStackTracer.m_Enabled = !Core.CStackTracer.m_Enabled;
Core.CStackTracer.m_ResolveEnabled = Core.CStackTracer.m_Enabled;
}
static function AddStackTracerFrames(i_count) {
if (!Core.CStackTracer.IsAttached()) {
AttachStackTracer();
}
CDebug.WriteLine("CGame.AddStackTracerFrames()", ("Add " + i_count) + " frames to stack tracer");
Core.CStackTracer.EnableForMultipleTicks(Core.CStackTracer.m_TicksToDisable + i_count);
}
static function LoadConfigVars() {
XmlLoaded = false;
XmlConfig = new XML();
XmlConfig.ignoreWhite = true;
XmlConfig.onLoad = OnConfigLoaded;
XmlConfig.load("config.xml");
}
static function applyMainConfigVars() {
applyConfigVars("Config/VarOverrides");
}
static function applySlowConfigVars() {
applyConfigVars("Config/SlowSpeedVarOverrides");
}
static function applyMedConfigVars() {
applyConfigVars("Config/MedSpeedVarOverrides");
}
static function applyFastConfigVars() {
applyConfigVars("Config/FastSpeedVarOverrides");
}
static function applyConfigVars(i_key) {
if (!XmlLoaded) {
return(undefined);
}
var nodes = Oberon.XmlX.findChild(XmlConfig, i_key).childNodes;
var i = 0;
while (i < nodes.length) {
var variableLoc = String(nodes[i].attributes.Name);
var result = String(nodes[i].attributes.Val);
var type;
if (nodes[i].attributes.Type != undefined) {
type = String(nodes[i].attributes.Type);
} else {
type = typeof(eval (variableLoc));
}
if (type == "undefined") {
if ((result == "true") || (result == "false")) {
type = "boolean";
} else if (String(result).indexOf(",") != -1) {
type = "array";
} else if (String(result) == "[null]") {
type = "null";
} else if ((String(result) == "[infinity]") || (String(result) == "[neg_infinity]")) {
type = "number";
}
}
switch (type) {
case "null" :
Set(variableLoc, null);
break;
case "string" :
Set(variableLoc, String(result));
break;
case "number" :
Set(variableLoc, parseNum(result));
break;
case "boolean" :
Set(variableLoc, ((String(result) == "true") ? true : false));
break;
case "array" :
default :
case "array:number" :
case "array:string" :
case "object" :
var newArr = String(result).split(",");
if (type == "array:number") {
var j = 0;
while (j < newArr.length) {
newArr[j] = parseNum(newArr[j]);
j++;
}
}
Set(variableLoc, newArr);
}
i++;
}
}
static function parseNum(i_val) {
if (String(i_val) == "[infinity]") {
return(Number.POSITIVE_INFINITY);
}
if (String(i_val) == "[neg_infinity]") {
return(Number.NEGATIVE_INFINITY);
}
if (String(i_val).indexOf(".") == -1) {
return(parseInt(i_val));
}
return(parseFloat(i_val));
}
static function CanCheat() {
return(CWebConfig.IsInitialized && (CWebConfig.__get__CheatsEnabled()));
}
static function DoCheatToggleCheats() {
if (CanCheat()) {
s_cheatsEnabled = !s_cheatsEnabled;
if (s_cheatsEnabled) {
Sounds.PlaySound(Constants.__get__Sound_BubbleFuzzball());
} else {
Sounds.PlaySound(Constants.__get__Sound_WakingEffy());
CQueueBorb.s_UnconcealedBorbCount = 1;
s_Speed = 1;
DbgActionMode = false;
Board.m_Queue.Resync();
}
}
}
static function DoCheatAllFireballs() {
if (Board != null) {
s_CheatedThisGame = true;
Board.m_Queue.Fill(Board.m_Queue.GetAbsMax(), true);
var _local1 = Board.GetRandBorb();
_local1.PowerUp = Constants.PowerUp_Fireball;
Board.m_Queue.SetAllBorbsToInfo(_local1);
}
}
static function DoCheatAllHooks() {
if (Board != null) {
s_CheatedThisGame = true;
Board.m_Queue.Fill(Board.m_Queue.GetAbsMax(), true);
var _local1 = Board.GetRandBorb();
_local1.PowerUp = Constants.PowerUp_Hook;
Board.m_Queue.SetAllBorbsToInfo(_local1);
}
}
static function DoCheatLotsOfAimers() {
if (Board != null) {
s_CheatedThisGame = true;
Board.IncrementTraceShotRemaining(100);
}
}
static function DoCheatMinorQueue() {
if (Board != null) {
s_CheatedThisGame = true;
CQueueBorb.s_UnconcealedBorbCount = 3;
Board.m_Queue.Resync();
}
}
static function DoCheatMegaQueue() {
if (Board != null) {
s_CheatedThisGame = true;
CQueueBorb.s_UnconcealedBorbCount = 15;
Board.m_Queue.Resync();
}
}
static function DoCheatSlowMotion() {
s_Speed = ((s_Speed == 0.5) ? 1 : 0.5);
}
static function DoCheatFastMotion() {
s_Speed = ((s_Speed == 2) ? 1 : 2);
}
static function DoCheatAllBombs() {
if (Board != null) {
s_CheatedThisGame = true;
Board.m_Queue.Fill(Board.m_Queue.GetAbsMax(), true);
var _local1 = Board.GetRandBorb();
_local1.PowerUp = Constants.PowerUp_Mine;
Board.m_Queue.SetAllBorbsToInfo(_local1);
}
}
static function DoCheatSleepAll() {
if (Board != null) {
s_CheatedThisGame = true;
var _local4 = TileSet.GetActiveBorbsFixedArray();
var _local3 = TileSet.GetActiveBorbsCount();
var _local2 = 0;
while (_local2 < _local3) {
var _local1 = SnoodHead(_local4[_local2]);
if (Constants.IsHead(_local1.__get__Color()) && (_local1.__get__PowerUp() == Constants.PowerUp_None)) {
_local1.SetPowerUp(Constants.PowerUp_Lock);
}
_local2++;
}
}
}
static function DoCheatInvasion() {
if (Board != null) {
s_CheatedThisGame = true;
var _local4 = TileSet.GetActiveBorbsFixedArray();
var _local3 = TileSet.GetActiveBorbsCount();
var _local2 = 0;
while (_local2 < _local3) {
var _local1 = SnoodHead(_local4[_local2]);
if ((Constants.IsHead(_local1.__get__Color()) && (Oberon.MathX.randRange(0, 1) == 0)) && (_local1.__get__PowerUp() == Constants.PowerUp_None)) {
_local1.SetPowerUp(Constants.PowerUp_Jelly + Oberon.MathX.randRange(0, 2));
}
_local2++;
}
}
}
static function DoCheatAllBubbles() {
if (Board != null) {
s_CheatedThisGame = true;
Board.m_Queue.Fill(Board.m_Queue.GetAbsMax(), true);
var _local1 = Board.GetRandBorb();
_local1.PowerUp = Constants.PowerUp_BubbleBubble;
Board.m_Queue.SetAllBorbsToInfo(_local1);
}
}
static function DoCheatAllWild() {
if (Board != null) {
s_CheatedThisGame = true;
Board.m_Queue.Fill(Board.m_Queue.GetAbsMax(), true);
var _local1 = Board.GetRandBorb();
_local1.Color = Constants.Snood_Wild;
Board.m_Queue.SetAllBorbsToInfo(_local1);
}
}
static function DoCheatWinBoard() {
if (Board != null) {
s_CheatedThisGame = true;
TileSet.DropAllHeads();
}
}
static function DoCheatDebugActionMode() {
s_CheatedThisGame = true;
DbgActionMode = !DbgActionMode;
}
static function AreCheatsEnabled() {
return(s_cheatsEnabled);
}
static function fromCharCode(i_char) {
switch (i_char) {
case 65 :
return("a");
case 66 :
return("b");
case 67 :
return("c");
case 68 :
return("d");
case 69 :
return("e");
case 70 :
return("f");
case 71 :
return("g");
case 72 :
return("h");
case 73 :
return("i");
case 74 :
return("j");
case 75 :
return("k");
case 76 :
return("l");
case 77 :
return("m");
case 78 :
return("n");
case 79 :
return("o");
case 80 :
return("p");
case 81 :
return("q");
case 82 :
return("r");
case 83 :
return("s");
case 84 :
return("t");
case 85 :
return("u");
case 86 :
return("v");
case 87 :
return("w");
case 88 :
return("x");
case 89 :
return("y");
case 90 :
return("z");
}
return(" ");
}
static var Root = null;
static var Locale = "en-US";
static var BoardUpdateFreq = 0;
static var TweenUpdateFreq = 0;
static var s_Speed = 1;
static var s_BaseSpeed = 1;
static var DbgTraceColors = false;
static var DbgTracePhysics = false;
static var DbgTraceGameState = false;
static var DbgTraceTween = false;
static var DbgRapidFireMode = false;
static var DbgShowCannonAimLine = false;
static var DbgPauseStep = false;
static var DbgPause = false;
static var DbgActionMode = false;
static var DbgMobileLauncher = false;
static var DbgMobileLauncherAlt = false;
static var DbgShowComboCounter = false;
static var DbgShowBorbIdleAnim = false;
static var DbgShowActiveEffects = false;
static var DbgCheckBitmapCaching = false;
static var DbgShowDropCheck = false;
static var DbgSTSearchObj = [];
static var XmlConfig = null;
static var XmlLoaded = false;
static var KeyListener = null;
static var MouseListener = null;
static var m_MouseDown = false;
static var m_RMouseDown = false;
static var m_MMouseDown = false;
static var m_AppActive = true;
static var m_AppUpdates = 0;
static var m_lastTick = 0;
static var m_startTime = 0;
static var m_startPauseTime = 0;
static var s_cheatsEnabled = false;
static var s_CheatedThisGame = false;
static var s_curCheatSeq = "";
static var s_cheats = ["iliketocheat", "chucknorris", "queueitup", "bigtimequeueitup", "slomo", "fastmo", "hookmeup", "badaim", "imustwin", "pyromaniac", "bedtime", "invasion", "toomanybubbles", "jokerswild", "sandysrevenge"];
static var s_cheatFuncs = [DoCheatToggleCheats, DoCheatAllFireballs, DoCheatMinorQueue, DoCheatMegaQueue, DoCheatSlowMotion, DoCheatFastMotion, DoCheatAllHooks, DoCheatLotsOfAimers, DoCheatWinBoard, DoCheatAllBombs, DoCheatSleepAll, DoCheatInvasion, DoCheatAllBubbles, DoCheatAllWild, DoCheatDebugActionMode];
}
Symbol 13 MovieClip [__Packages.CBoard] Frame 0
class CBoard extends MovieClip
{
var m_state, m_TileSet, m_LauncherTrack, m_InPlungerGrab, m_toggledKeysBitMask, s_XmlLoadTime, m_LumpsDropped, m_JellyFishyDropped, m_RubberLubberDropped, m_pointsEffectsCount, m_StartScore, m_WinDiveBarDist, m_TotalCombos, m_lastScore, m_DropCheckNeeded, m_LockScoreUpdates, m_ShotTargets, m_ComboChainCount, m_AllShotsHaveBankBonus, m_RubberLubberHitThisShot, TraceLaserHolderMc, TraceShotHolder, TileSet, m_Background, _parent, m_Queue, Queue, m_LoseShadowBoundingClip, DangerZone, LauncherTrack, m_Launcher, m_tracerIndicatorMc, m_tracerIndicator, SnoodsLeftDisplay, ScoreDisplay, m_LevelTextAnim, m_LevelText, m_LevelText2, OwnerDlg, m_CurLevelInfo, getNextHighestDepth, attachMovie, m_EffectsLayer, _visible, DEBUGTXT;
function CBoard () {
super();
Reset();
}
function IsInitialized() {
return((m_state != State_Loading) && (m_state != State_LoadingXml));
}
function IsPlaying() {
return(m_state == State_Playing);
}
function IsLoadingXml() {
return(m_state == State_LoadingXml);
}
function get Locked() {
return((((m_TileSet.IsBusy() || (m_LauncherTrack.IsBusy())) || (CGame.PhysMgr.IsBusy())) || (m_Disabled)) || (CGame.EffectMgr.AreBlockingEffectsPlaying()));
}
function Reset() {
if (CGame.AreCheatsEnabled()) {
CGame.s_CheatedThisGame = true;
}
m_state = State_Loading;
m_InPlungerGrab = false;
Effects.CEffect_EmoteAnim.ResetHeadFrameLabels();
m_toggledKeysBitMask = 0;
s_XmlLoadTime = 0;
m_LumpsDropped = 0;
m_JellyFishyDropped = 0;
m_RubberLubberDropped = 0;
m_pointsEffectsCount = 0;
m_StartScore = 0;
m_WinDiveBarDist = 0;
m_TotalCombos = 0;
m_lastScore = 0;
m_DropCheckNeeded = false;
s_XmlLoadTimeOutCount = 0;
m_LockScoreUpdates = false;
m_ShotTargets = [];
G = this;
CGame.Board = this;
_global.GameBoard = this;
Level.m_InvalidatedSpots = [];
CGame.PhysMgr.Reset();
CGame.EffectMgr.Reset();
m_ComboChainCount = 0;
}
function get State() {
return(m_state);
}
function SetState(i_val) {
if (m_state != i_val) {
var _local2 = m_state;
m_state = i_val;
}
}
function onLoad() {
CDebug.Assert(!CGame.PhysMgr.IsBusy(), this, "Physics manager active on board start" + CGame.PhysMgr.PendingToString(), true);
m_AllShotsHaveBankBonus = true;
m_RubberLubberHitThisShot = false;
TraceLaserHolderMc = MovieClip(TraceShotHolder);
CDebug.Assert(TraceLaserHolderMc != null, this, "Couldn't find TraceLaserHolderMc");
m_TileSet = CTileSet(TileSet);
CDebug.Assert(m_TileSet != null, this, "Couldn't find TileSet");
m_Background = _parent.Background;
CDebug.Assert(m_Background != null, this, "Couldn't find Background");
m_Background._visible = false;
m_Background.stop();
m_Queue = CQueue(Queue);
CDebug.Assert(m_Queue != null, this, "Couldn't find Queue");
m_LoseShadowBoundingClip = MovieClip(DangerZone);
CDebug.Assert(m_LoseShadowBoundingClip != null, this, "Couldn't get bounds of board (make sure that the board has a '_loseShadowBounds' clip defined");
m_LoseShadowBoundingClip.cacheAsBitmap = true;
m_LoseShadowBoundingClip.gotoAndStop(1);
m_LauncherTrack = CLauncherTrack(LauncherTrack);
m_Launcher = m_LauncherTrack.GetLauncher();
m_Launcher.SetAccess(CLauncher.Access_Enabled);
CDebug.Assert(m_LauncherTrack != null, this, "Launcher track is null");
m_tracerIndicatorMc = MovieClip(m_Launcher.TracerIndicator);
m_tracerIndicatorMc._visible = false;
CDebug.Assert(m_tracerIndicatorMc != null, this, "m_tracerIndicatorMc is null");
m_tracerIndicator = StaticText(m_tracerIndicatorMc.TraceText);
m_tracerIndicator.InnerColorHide = true;
m_tracerIndicator.InnerColorTint = 16777215 /* 0xFFFFFF */;
CDebug.Assert(m_tracerIndicator != null, this, "m_tracerIndicator is null");
SnoodsLeftDisplay = StaticText(_parent.Left);
SnoodsLeftDisplay.InnerColorHide = true;
SnoodsLeftDisplay.IgnoreColorTrans = true;
SnoodsLeftDisplay.InnerColorTint = 16777215 /* 0xFFFFFF */;
ScoreDisplay = StaticText(_parent.Score);
ScoreDisplay.__set__Align("right");
ScoreDisplay.CharSpacing = -5;
ScoreDisplay.IgnoreColorTrans = true;
ScoreDisplay.InnerColorTint = s_ScoreTextColor;
m_LevelTextAnim = MovieClip(_parent.LevelNameAnim);
CDebug.Assert(m_LevelTextAnim != null, "CBoard.onLoad()", "couldn't find m_LevelTextAnim");
m_LevelTextAnim.stop();
m_LevelText = TextField(_parent.LevelNameAnim.InnerLevelText.LevelName);
m_LevelText2 = TextField(_parent.LevelNameAnim.InnerLevelText2.LevelName);
CDebug.Assert(m_LevelText != null, this, "Couldn't find level text field");
CDebug.Assert(m_LevelText2 != null, this, "Couldn't find level text 2 field");
m_Queue.FinishedAllAnimEvent.PushBehavior(mx.utils.Delegate.create(this, onFinishedAllQueueAnim));
m_Queue.FallInAnimCompleteEvent.PushBehavior(mx.utils.Delegate.create(this, onFinishedFallInQueueAnim));
m_Queue.ElevatorLoadCompleteEvent.PushBehavior(mx.utils.Delegate.create(this, onElevatorLoaded));
m_Launcher.SpecialBorbLoadedEvent.PushBehavior(mx.utils.Delegate.create(this, onSpecialBorbLoaded));
}
function HighlightScore(i_doBounce, i_bubbleCount) {
var _local14 = ScoreDisplay._width;
var _local15 = ScoreDisplay._height;
var _local16 = Effects.CEffect_Vaporize.s_VaporizeStartFrame;
var _local13 = CCoord.ToLocal(ScoreDisplay, OwnerDlg);
if (i_doBounce) {
ScoreDisplay.Bounce(s_ScoreBounceDur, s_ScoreBounceMag);
ScoreDisplay.DoInnerColorTween(s_ScoreColorTint, s_ScoreColorTintDur, s_ScoreColorTintDelay);
}
var _local4 = new Array(i_bubbleCount);
var _local3 = 0;
while (_local3 < i_bubbleCount) {
_local4[_local3] = _local3;
_local3++;
}
_local3 = 0;
while (_local3 < i_bubbleCount) {
var _local6 = OwnerDlg.getNextHighestDepth();
var _local11 = Oberon.MathX.randRange(1, 6);
var _local2 = OwnerDlg.attachMovie("Vaporize" + _local11, "ScoreVaporize" + _local6, _local6);
var _local8 = Oberon.MathX.randRange(0, _local4.length - 1);
var _local10 = _local4[_local8];
_local4.splice(_local8, 1);
var _local9 = Math.round(_local14 / i_bubbleCount);
_local2._x = ((_local13.X - (_local14 / 2)) + (_local9 * _local10)) + Oberon.MathX.randRange(0, _local9);
var _local7 = Math.round(_local15 / i_bubbleCount);
_local2._y = ((_local13.Y - (_local15 / 2)) + (_local7 * _local3)) + Oberon.MathX.randRange(0, _local7);
var _local12 = new Core.CTween(_local2, "_currentframe", null, 1, _local2._totalframes, (_local2._totalframes - _local16) / Constants.Fps, true, Oberon.MathX.randRange(_local3, _local3 * 2) / 10);
_local12.onMotionFinished = function (i_tween) {
MovieClip(i_tween.m_Obj).removeMovieClip();
};
_local3++;
}
}
function Update(i_deltaT) {
if (OwnerDlg == null) {
return(undefined);
}
var _local2 = Core.DialogUtil.Top() == OwnerDlg;
if ((m_state == State_Playing) || (m_state == State_Dropping)) {
if (!m_LockScoreUpdates) {
var _local3 = CGame.CurrentPlayer;
if (m_lastScore != _local3.m_Score) {
var _local4 = _local3.m_Score - m_lastScore;
if (CGame.ComputerSpeed == FHost.CApp.__get__ComputerSpeed_Slow()) {
} else if (_local4 > 1000) {
CGame.Board.HighlightScore(false, 10);
} else if (_local4 > 500) {
CGame.Board.HighlightScore(false, 6);
} else if (_local4 > 100) {
CGame.Board.HighlightScore(false, 3);
}
ScoreDisplay.__set__Text(String(_local3.m_Score));
m_lastScore = _local3.m_Score;
}
}
if ((CGame.EffectMgr.m_CurFrameCategoryAnims & CEffect.Cat_GameTransition) != 0) {
return(undefined);
}
if ((m_Disabled && (_local2)) || ((!m_Disabled) && (!_local2))) {
SetEnabled(_local2);
}
if (!m_Disabled) {
Effects.CEffect_BorbDropAnim.OnPlayUpdate(i_deltaT);
OnPlayUpdate(i_deltaT);
}
} else if (m_state == State_LoadingXml) {
s_XmlLoadTime = s_XmlLoadTime + i_deltaT;
CDebug.WriteLine("CBoard.Update()", "Action.onEnterFrame() - currently loading xml");
if (m_CurLevelInfo.LoadCriticalFail) {
CDebug.WriteLine("CBoard.Update()", "Critical xml load failure");
Core.DialogUtil.SwitchTo(Constants.Dialog_MainMenu);
} else if (!m_CurLevelInfo.LoadingXml) {
SetEnabled(_local2);
onXmlLoaded();
} else if (s_XmlLoadTime > s_XmlLoadTimeOut) {
CDebug.WriteLine("CBoard.Update()", "Xml load timeout " + s_XmlLoadTimeOutCount);
s_XmlLoadTimeOutCount++;
if (s_XmlLoadTimeOutCount > s_XmlLoadTimeOutMax) {
Core.DialogUtil.SwitchTo(Constants.Dialog_MainMenu);
} else {
loadBoardHelper(GameState.GetCurrentLevelSet(), GameState.__get__CurrentLevel());
s_XmlLoadTime = 0;
s_XmlLoadTimeOut = s_XmlLoadTimeOut + 10;
}
}
} else if (m_state == State_Loading) {
LoadBoard();
}
}
function OnPlayUpdate(i_deltaT) {
m_pointsEffectsCount = 0;
if ((!m_Won) && (m_TileSet.m_OnlyBlockersRemain)) {
m_Won = true;
}
if (m_Lost) {
if ((!CGame.EffectMgr.IsEffectPlaying(CEffect.Type_LoseAnim)) && (!CGame.EffectMgr.IsEffectPlaying(CEffect.Type_WinAnim))) {
var _local7 = Effects.CEffect_LoseAnim(CEffect.CreateEffect(CEffect.Type_LoseAnim));
if (_local7.OnInit()) {
CGame.EffectMgr.AddEffectToActiveList(_local7);
}
}
return(undefined);
}
if (m_Won) {
m_WinDiveBarDist = m_TileSet.GetDiveBarDist();
if ((!CGame.EffectMgr.IsEffectPlaying(CEffect.Type_WinAnim)) && (!CGame.EffectMgr.IsEffectPlaying(CEffect.Type_LoseAnim))) {
var _local7 = Effects.CEffect_WinAnim(CEffect.CreateEffect(CEffect.Type_WinAnim));
if (_local7.OnInit()) {
CGame.EffectMgr.AddEffectToActiveList(_local7);
}
}
return(undefined);
}
var _local6 = CGame.PhysMgr.GetAndClearAttachedPieces();
var _local5 = 0;
while (_local5 < _local6.length) {
var _local2 = SnoodHead(_local6[_local5]);
if (_local2 != null) {
if ((PhysicsMgr.G.GetActiveAnimCount(PhysicsMgr.Physics_Shoot) == 0) && (PhysicsMgr.G.GetActiveAnimCount(PhysicsMgr.Physics_Wait) == 0)) {
m_ShotTargets = [];
} else {
var _local3 = 0;
while (_local3 < m_ShotTargets.length) {
var _local4 = CCoord(m_ShotTargets[_local3]);
if ((_local4.X == _local2.m_xNextSlot) && (_local4.Y == _local2.m_yNextSlot)) {
m_ShotTargets.splice(_local3, 1);
_local3 = m_ShotTargets.length;
}
_local3++;
}
}
if (m_TileSet.GetTile(_local2.m_xNextSlot, _local2.m_yNextSlot) != null) {
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, 0);
} else if (!m_TileSet.HasNeighbor(_local2.m_xNextSlot, _local2.m_yNextSlot)) {
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, 0);
} else {
m_TileSet.AttachShotHead(_local2.m_xNextSlot, _local2.m_yNextSlot, _local2);
}
OnShotComplete();
} else {
CDebug.WriteLine("Actions.Update()", "Invalid projectile found! " + _local6[_local5]);
}
_local5++;
}
if (m_DropCheckNeeded) {
Level.DoDropSnoods();
m_DropCheckNeeded = false;
}
if ((((!IsBoardInAnimation()) && (!CGame.PhysMgr.IsBusy())) && (!CGame.EffectMgr.AreBlockingEffectsPlaying())) && (CheckRefillBoard())) {
AdvanceDanger();
CGame.Board.m_Launcher.m_ShouldRedraw = true;
m_Queue.Refill();
}
m_TileSet.OnPlayUpdate(i_deltaT);
m_TileSet.DoUpdateBoundingBox();
m_Launcher.OnPlayUpdate(i_deltaT);
}
function IsDisposing() {
return(m_state == State_Disposing);
}
function Dispose() {
CDebug.WriteLine("CBoard.Dispose()", "Disposing");
var _local2 = CGame.CurrentPlayer.m_Score;
SetState(State_Disposing);
m_CurLevelInfo.Dispose();
CGame.PhysMgr.Reset();
Core.CTween.Reset();
m_TileSet.Dispose();
CGame.EffectMgr.KillAllEffects();
CGame.EffectMgr.Reset();
if (G == this) {
G = null;
}
if (!m_Won) {
CGame.CurrentPlayer.m_Score = _local2;
}
}
function onUnload() {
}
function OnMiss() {
CGame.Board.m_ComboChainCount = 0;
m_AllShotsHaveBankBonus = false;
}
function CreatePointsEffect(inX, inY, inText, inTint, inWhiteShowBorder) {
var _local5 = ((Math.random() < 0.333) ? "1" : (((Math.random() < 0.5) ? "2" : "3")));
var _local4 = getNextHighestDepth();
var _local2 = CGame.Board.attachMovie("NewPoints" + _local5, "NewPoints" + _local4, _local4);
var _local3 = CGame.TileSet.GetGridCoords(inX, inY, true);
_local2._x = _local3.X + ((Math.random() * 6) - 12);
_local2._y = _local3.Y + ((Math.random() * 6) - 12);
if (_local2._x < 80) {
_local2._x = 80;
} else if (_local2._x > (Constants.GameResX - 80)) {
_local2._x = Constants.GameResX - 80;
}
_local2._y = _local2._y + (m_pointsEffectsCount * s_PointsYDisplacement);
if (_local2._y < 80) {
_local2._y = 80;
} else if (_local2._y > (Constants.GameResY - 80)) {
_local2._y = Constants.GameResY - 80;
}
_local2.Display.PointsText.text = inText;
_local2.Display.PointsText.textColor = inTint;
if (inWhiteShowBorder) {
var _local6 = new flash.filters.GlowFilter(16777215, 100, 5, 5, 20);
_local2.Display.PointsText.filters = [_local6];
}
m_pointsEffectsCount++;
return(_local2);
}
function CreateSmallPointsEffect(inX, inY, inText) {
var _local3 = getNextHighestDepth();
var _local2 = attachMovie("SmallNewPoints1", "SmallNewPoints" + _local3, _local3);
_local2._x = inX + ((Math.random() * 6) - 12);
_local2._y = inY + ((Math.random() * 6) - 12);
_local2.Display.PointsText.text = inText;
_local2.Display.PointsText.textColor = Level.s_BonusTint;
return(_local2);
}
function GetBoundingClip() {
return(m_TileSet.BoundingClip);
}
function ResyncColors() {
if (m_Won || (m_Lost)) {
return(undefined);
}
var _local2 = m_Queue.GetNextBorb();
m_Queue.CheckColors();
if (!_local2.Equals(m_Queue.GetNextBorb())) {
m_Launcher.SyncLoadedBorb(m_Queue.GetNextBorb());
}
}
function CreateImpactBounceAround(inPosX, inPosY, inCoordX, inCoordY, inVec) {
var _local7 = (((inPosY % 2) == 0) ? 1 : 0);
var _local12 = CreateImpactBounceAt(inPosX - _local7, inPosY - 1, inCoordX, inCoordY, inVec, false);
var _local10 = CreateImpactBounceAt((inPosX + 1) - _local7, inPosY - 1, inCoordX, inCoordY, inVec, false);
var _local11 = CreateImpactBounceAt(inPosX - 1, inPosY, inCoordX, inCoordY, inVec, false);
var _local9 = CreateImpactBounceAt(inPosX + 1, inPosY, inCoordX, inCoordY, inVec, false);
var _local8 = CreateImpactBounceAt(inPosX - _local7, inPosY + 1, inCoordX, inCoordY, inVec, false);
var _local13 = CreateImpactBounceAt((inPosX + 1) - _local7, inPosY + 1, inCoordX, inCoordY, inVec, false);
if (_local12) {
CreateImpactBounceAt(inPosX - 1, inPosY - 2, inCoordX, inCoordY, inVec, true);
}
if (_local12 || (_local10)) {
CreateImpactBounceAt(inPosX, inPosY - 2, inCoordX, inCoordY, inVec, true);
}
if (_local10) {
CreateImpactBounceAt(inPosX + 1, inPosY - 2, inCoordX, inCoordY, inVec, true);
}
if (_local12 || (_local11)) {
CreateImpactBounceAt((inPosX - 1) - _local7, inPosY - 1, inCoordX, inCoordY, inVec, true);
}
if (_local10 || (_local9)) {
CreateImpactBounceAt((inPosX + 2) - _local7, inPosY - 1, inCoordX, inCoordY, inVec, true);
}
if (_local11) {
CreateImpactBounceAt(inPosX - 2, inPosY, inCoordX, inCoordY, inVec, true);
}
if (_local9) {
CreateImpactBounceAt(inPosX + 2, inPosY, inCoordX, inCoordY, inVec, true);
}
if (_local11 || (_local8)) {
CreateImpactBounceAt((inPosX - 1) - _local7, inPosY + 1, inCoordX, inCoordY, inVec, true);
}
if (_local9 || (_local13)) {
CreateImpactBounceAt((inPosX + 2) - _local7, inPosY + 1, inCoordX, inCoordY, inVec, true);
}
if (_local8) {
CreateImpactBounceAt(inPosX - 1, inPosY + 2, inCoordX, inCoordY, inVec, true);
}
if (_local8 || (_local13)) {
CreateImpactBounceAt(inPosX, inPosY + 2, inCoordX, inCoordY, inVec, true);
}
if (_local13) {
CreateImpactBounceAt(inPosX + 1, inPosY + 2, inCoordX, inCoordY, inVec, true);
}
}
function CreateImpactBounceAt(inToPosX, inToPosY, inCoordX, inCoordY, inVec, inTierTwo) {
var _local2 = m_TileSet.GetTile(inToPosX, inToPosY);
if (_local2 != null) {
_local2.CreateImpactBounce(inCoordX, inCoordY, inVec, inTierTwo);
return(true);
}
return(false);
}
function RequestCannonKeyToggle(i_key, i_on) {
if (((i_key & m_toggledKeysBitMask) > 0) && (!i_on)) {
m_toggledKeysBitMask = m_toggledKeysBitMask - i_key;
} else if (((i_key & m_toggledKeysBitMask) == 0) && (i_on)) {
m_toggledKeysBitMask = m_toggledKeysBitMask + i_key;
}
}
function IsBoardInAnimation() {
return(((CGame.PhysMgr.GetActiveAnimCount(PhysicsMgr.Physics_Shoot) > 0) || (CGame.PhysMgr.HasAttachedPieces())) || ((CGame.EffectMgr.m_CurFrameCategoryAnims & CEffect.Cat_GameTransition) != 0));
}
function CheckRefillBoard() {
if ((m_Launcher.IsEmpty() && (m_Queue.IsEmpty())) && (!PhysicsMgr.G.HasAttachedPieces())) {
if (!CGame.EffectMgr.IsCategoryPlaying(CEffect.Cat_QueueAdvWait)) {
return(true);
}
HurryQueueAdvEffects();
}
return(false);
}
function HurryQueueAdvEffects() {
var _local4 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_BorbDropAnim);
var _local2 = 0;
while (_local2 < _local4.length) {
var _local3 = Effects.CEffect_BorbDropAnim(_local4[_local2]);
_local3.Hurry(CQueue.s_HurryMod);
_local2++;
}
m_Queue.Hurry();
}
function SwapActiveLauncher(inPlayer) {
if ((((m_Disabled || (!IsInitialized())) || (m_Won)) || (m_Lost)) || (Core.DialogUtil.Top() != OwnerDlg)) {
return(false);
}
return(true);
}
function GetActiveLauncher() {
return(m_Launcher);
}
function GetLauncher(i_orient) {
CDebug.Assert(false, this, "Can't get launcher in dir " + i_orient);
return(null);
}
function CanShoot(i_ignoreLock) {
return(((((((!Locked) || (i_ignoreLock)) && (!m_Won)) && (!m_Lost)) && (!m_Launcher.IsEmpty())) && (!m_Launcher.IsBusy())) && ((!CGame.DbgMobileLauncher) || (!m_Launcher.IsAtMaxBounds())));
}
function RequestShootSnood(i_ignoreLock) {
if (!CanShoot(i_ignoreLock)) {
return(undefined);
}
CGame.EffectMgr.KillAllEffectsOfType(CEffect.Type_CannonScareAnim);
var _local5;
var _local10 = [];
var _local12 = [];
var _local11 = [];
var _local7 = m_Launcher.m_LaunchSnood.__get__PowerUp() == Constants.PowerUp_Fireball;
var _local13 = m_Launcher.m_Mode == CLauncher.Mode_Hook;
var _local6 = m_Launcher.TraceShot(false, false, _local10, _local12, _local11, _local7, false, _local13);
if (_local10.length == 0) {
var _local9 = CCoord.ToLocal(m_Launcher, m_TileSet);
var _local14 = m_TileSet.PixelPosToGridCell(_local9.X, _local9.Y);
if (m_TileSet.GetTileFromCoord(_local14) != null) {
CDebug.WriteLine("CBoard.RequestShootSnood()", (("Lost by covered launcher : " + _local9.ToString()) + ", ") + _local14.ToString());
m_Lost = true;
} else {
CDebug.Assert(false, "CBoard.ShootSnood()", "traceShot returned null path");
}
return(undefined);
}
var _local4 = null;
if (((!_local7) && (!_local13)) && (_local6 != null)) {
_local4 = _local6.Clone();
if (m_ShotTargets.length > 0) {
var _local2 = 0;
while (_local2 < m_ShotTargets.length) {
var _local3 = CCoord(m_ShotTargets[_local2]);
if (_local4.Equals(_local3)) {
CDebug.WriteLine("CBoard.RequestShootSnood()", "Shot collision detected at " + _local4.ToString());
return(undefined);
}
_local2++;
}
}
}
_local5 = m_Launcher.Shoot();
if (_local5 == undefined) {
CDebug.Assert(false, "CBoard.ShootSnood()", "found an Invalid projectile!!");
AdvanceLauncher();
return(undefined);
}
var _local8;
if (SnoodHead(_local5) != null) {
SnoodHead(_local5).__set__Size(m_TileSet.m_SnoodSize);
_local5.m_xNextSlot = _local6.X;
_local5.m_yNextSlot = _local6.Y;
if (_local7) {
CGame.Sounds.PlaySound(Constants.__get__Sound_HotfootBurn());
_local8 = CPhysicsObject.ShotState_Fireball;
} else {
CGame.Sounds.PlaySound(Constants.__get__Sound_Shoot());
_local8 = CPhysicsObject.ShotState_Connect;
}
} else {
_local5.m_xNextSlot = null;
_local5.m_yNextSlot = null;
_local8 = CPhysicsObject.ShotState_Grab;
CGame.Sounds.PlaySound(Constants.__get__Sound_Plunger());
}
CGame.PhysMgr.shootObject(_local5, _local10, _local8, _local12, _local11);
if (_local4 != null) {
m_ShotTargets.push(_local4);
}
onShotFired();
}
function AdvanceLauncher() {
CDebug.Assert(GetActiveLauncher().IsEmpty(), "CBoard.AdvanceLauncher()", "Trying to advance into full launcher");
if (!m_Queue.IsEmpty()) {
m_Queue.Advance(GetActiveLauncher().m_Orient);
}
}
function onSpecialBorbLoaded() {
}
function onElevatorLoaded() {
if (m_Queue.GetNextBorb() != null) {
m_Launcher.Load(m_Queue.GetNextBorb());
} else {
CDebug.WriteErr("CBoard.onElevatorLoaded()", "Elevator empty");
}
}
function onShotFired() {
if (((!m_Queue.IsEmpty()) && (m_Launcher.IsEmpty())) && (m_Launcher.m_Mode != CLauncher.Mode_Hook)) {
m_Queue.Advance(m_LauncherTrack.GetNextOrient());
}
if (m_traceShotRemaining > 0) {
m_traceShotRemaining--;
updateShowTracer();
}
}
function onFinishedAllQueueAnim() {
}
function onFinishedFallInQueueAnim() {
}
function onTileSetDropComplete() {
}
function onXmlLoaded() {
trace("xml loaded");
if (OwnerDlg == null) {
return(undefined);
}
m_StartScore = CGame.CurrentPlayer.m_Score;
m_lastScore = m_StartScore;
ScoreDisplay.__set__Text(String(m_StartScore));
Core.DialogUtil.CloseAllNotVisibleBeneathMc(OwnerDlg);
m_Background.gotoAndStop(m_CurLevelInfo.Background);
m_Background._visible = true;
m_LoseShadowBoundingClip.gotoAndStop("Normal");
CGame.CurrentPlayer.ResetBoardVariables();
Level.m_GameBoard = CGame.Board;
Level.m_BoardLevel = 0;
Effects.CEffect_BorbDropAnim.Reset();
GameState.m_CurrentGameMode = m_CurLevelInfo.Mode;
m_TileSet.Init();
m_EffectsLayer._x = m_TileSet._x;
m_EffectsLayer._y = m_TileSet._y;
CDebug.WriteLine("CBoard.onXmlLoaded()", "Generate board, mode: " + m_CurLevelInfo.Mode);
CLauncher.m_SnoodSize = SnoodHead.LauncherSnoodSize;
Level.m_FillLevel = Constants.GetBoardModeFillLevel(GameState.__get__CurrentGameMode());
Level.m_LoseLevel = m_CurLevelInfo.LoseLevel;
Level.m_ShiftedPieces = new Array();
Level.m_BoardLoser = undefined;
Level.m_LosePieces = new Array();
CGame.Board.m_TileSet.InitTiles(new Array(m_TileSet.Rows * m_TileSet.Cols));
Level.BuildNeighborList();
Level.fillBoard();
var _local4 = 0;
while (_local4 < m_CurLevelInfo.RandomHeadCounts.length) {
if (m_CurLevelInfo.RandomHeadCounts[_local4] > 0) {
AddBlockers(new CBorbInfo(_local4), m_CurLevelInfo.RandomHeadCounts[_local4]);
}
_local4++;
}
_local4 = 0;
while (_local4 < m_CurLevelInfo.RandPowerupCounts.length) {
if (m_CurLevelInfo.RandPowerupCounts[_local4] > 0) {
var _local5 = m_CurLevelInfo.RandPowerupCounts[_local4];
var _local3 = 0;
while (_local3 < _local5) {
var _local2 = GetRandBorb();
_local2.Orb = true;
_local2.PowerUp = _local4;
AddBlockers(_local2, 1);
_local3++;
}
}
_local4++;
}
RefreshLevelName();
m_Queue.Init(Math.max(2, m_CurLevelInfo.DangerIncrements - (GameState.m_CurrentArcadeSetIteration * GameState.s_ArcadeSetIterDangerDecr)));
DrawLoseBoundary(true);
_visible = true;
updateShowTracer();
m_TileSet.OnXmlLoaded();
Level.m_EvenBoard = (Math.floor(m_TileSet.Cols / 2) % 2) == 0;
SetState(State_Playing);
CPachinko.UpdateScore();
var _local6 = Effects.CEffect_StartAnim(CEffect.CreateEffect(CEffect.Type_StartAnim));
if (_local6.OnInit()) {
CGame.EffectMgr.AddEffectToActiveList(_local6);
}
OwnerDlg.RefreshLocalization();
}
function DbgShowAllSlotTypes(i_enabled) {
m_TileSet.DbgShowAllSlotTypes(i_enabled);
}
function OnAddedBorb(x, y, newBorb, addDanger) {
if (DbgIsShowingAllSlotTypes()) {
m_TileSet.DbgShowAllSlotTypes(true);
}
if (CGame.DbgTraceColors) {
CDebug.WriteLine(this, m_TileSet.DbgBoardColorCountToString());
}
CGame.EffectMgr.SpawnEffectsForNewBorb(x, y, newBorb, addDanger);
m_TileSet.UpdateBoundingBox();
return(CGame.EffectMgr.GetNumEffects() > 0);
}
function DrawLoseBoundary() {
}
function SetEnabled(i_val) {
if (i_val == m_Disabled) {
m_Disabled = !i_val;
}
}
function PlayStartEffect() {
}
function StopStartEffect() {
}
function IsStartEffectPlaying() {
return(false);
}
function ToggleMenu(inDisplayAnim) {
if (inDisplayAnim == undefined) {
inDisplayAnim = true;
}
if (inDisplayAnim && (((!IsInitialized()) || (m_Won)) || (m_Lost))) {
return(undefined);
}
if (IsOnTop()) {
if (m_Menu != null) {
m_Menu.Close();
m_Menu = null;
}
if (inDisplayAnim) {
m_Menu = UI.CBoardMenuDlg(Core.DialogUtil.Push(Constants.Dialog_GameBoardMenu));
CGame.m_startPauseTime = getTimer();
CPachinko.clearUpdate();
} else {
m_Menu.gotoAndStop("Shown");
}
} else if (m_Menu != null) {
m_Menu.Close();
m_Menu = null;
}
}
function ShowMenu() {
if ((!IsMenuOpen()) && (IsOnTop())) {
ToggleMenu();
}
}
function HideMenu() {
if (IsMenuOpen()) {
ToggleMenu();
}
}
function OnMenuClosed() {
m_Menu = null;
}
function IsMenuOpen() {
return(m_Menu != null);
}
function IsOnTop() {
return(Core.DialogUtil.Top() == OwnerDlg);
}
function GetRandBorb(i_levelInfoDist) {
var _local4 = null;
var _local5 = Oberon.MathX.randRange(0, 100, 1);
var _local3 = m_CurLevelInfo.HeadColorFreq;
if (i_levelInfoDist) {
var _local2 = 0;
while ((_local4 == null) && (_local2 < _local3.length)) {
if ((_local5 < _local3[_local2]) || (_local2 == (_local3.length - 1))) {
_local4 = m_CurLevelInfo.HeadColors[_local2];
}
_local5 = _local5 - _local3[_local2];
_local2++;
}
} else {
_local4 = m_TileSet.GetRandColor();
}
if (_local4 != null) {
return(new CBorbInfo(_local4, Constants.PowerUp_None, null));
}
return(null);
}
function IsBorbActive(i_color) {
return(m_TileSet.GetColorCount(i_color, true) > 0);
}
function IsRound() {
return(false);
}
function RefreshLevelName() {
m_LevelText.text = (GetCurrentLevelName() + " ") + String(GameState.GetBaseLevel());
m_LevelText2.text = m_LevelText.text;
m_LevelText.__localizeStr = m_LevelText.text;
m_LevelText2.__localizeStr = m_LevelText.text;
}
function GetCurrentSeriesName() {
return("Series " + String(GameState.m_CurrentArcadeSetIteration + 1));
}
function GetCurrentLevelName() {
return(CGame.Localizer.LocStr(CGame.LevelManifest.GetSet("Arcade").GetDisplayName(GameState.__get__CurrentLevel()) + "\rLevel"));
}
function DbgIsShowingAllSlotTypes() {
return(DEBUGTXT != null);
}
function AddBlockers(blocker, blockerCount) {
CDebug.WriteLine("CBoard.AddBlockers()", (("Add blocker " + blocker.ToString()) + ", ") + blockerCount);
var _local17 = [];
var _local16 = 0;
while (_local16 < blockerCount) {
var _local3 = true;
var _local14 = 0;
var _local2 = new CCoord();
while (_local3 && (_local14 < 10000)) {
_local3 = false;
if (CBoardCircular(this)) {
_local2.Y = Math.floor(Core.Utility.rnd() * ((Level.m_FillLevel * 2) + 1)) - Level.m_FillLevel;
var _local8 = (Level.m_FillLevel * 2) - Math.abs(_local2.Y);
var _local10 = Math.ceil(-1 * (_local8 / 2));
var _local13 = Math.ceil(_local8 / 2);
if (Level.m_EvenBoard) {
_local10 = Math.floor(-1 * (_local8 / 2));
_local13 = Math.floor(_local8 / 2);
}
_local2.X = Math.floor((Core.Utility.rnd() * ((_local13 - _local10) + 1)) + _local10);
if ((Math.abs(_local2.X) + Math.abs(_local2.Y)) <= 2) {
_local3 = true;
}
_local2.X = Math.floor(Level.m_BoardColumns / 2) + _local2.X;
_local2.Y = Math.floor(Level.m_BoardColumns / 2) + _local2.Y;
} else {
_local2.X = Math.floor(Core.Utility.rnd() * m_TileSet.Cols);
_local2.Y = Math.floor(1 + (Core.Utility.rnd() * (Level.m_FillLevel - 1)));
}
var _local7 = Level.m_NeighborGrid[(_local2.X * Level.m_BoardRows) + _local2.Y];
var _local4 = _local7[0].length - 1;
while (_local4 >= 0) {
var _local12 = _local7[0][_local4];
var _local11 = _local7[1][_local4];
var _local5 = m_TileSet.GetTile(_local12, _local11);
if ((((_local5 != undefined) && (_local5.__get__Color() == blocker.Color)) && (_local5.__get__PowerUp() == blocker.PowerUp)) && (_local5.Orb == blocker.Orb)) {
_local3 = true;
break;
}
_local4--;
}
_local3 = _local3 || (!Level.IsOccupied(_local2.X, _local2.Y));
if (!_local3) {
var _local6 = 0;
while (_local6 < blockerCount) {
if (CCoord(_local17[_local6]).Equals(_local2)) {
_local3 = true;
}
_local6++;
}
}
_local14++;
}
CDebug.Assert(_local14 < 10000, this, ("Couldn't fill board with " + blockerCount) + " blockers in under 10000 attempts (not enough places open?)");
AddBlockerToSpace(_local2, blocker);
_local16++;
}
}
function AddBlockerToSpace(i_coord, i_blockerBorb) {
var _local3 = SnoodHead.GetAndRemoveFromPool(i_blockerBorb, m_TileSet.m_SnoodSize, i_coord.X, i_coord.Y);
Level.RemoveBorbFromCoord(i_coord);
Level.AddBorbToCoord(i_coord, _local3, false);
}
function OnRevealFinished() {
CGame.Board.SetEnabled(true);
if (m_CurLevelInfo.TracerOn) {
IncrementTraceShotRemaining(Number.POSITIVE_INFINITY);
}
m_TileSet.UpdateBoundingBox();
m_Queue.Refill();
CGame.EffectMgr.m_IdleAnimationsOn = true;
}
function StopSounds() {
_global.Sounds.ForceStopSound(Constants.__get__Sound_Wild());
_global.Sounds.ForceStopSound(Constants.__get__Sound_BallSpin());
}
function LoadBoard() {
loadBoardHelper(GameState.GetCurrentLevelSet(), GameState.__get__CurrentLevel());
}
function loadBoardHelper(i_type, i_levelIdx) {
m_Lost = false;
m_Won = false;
CDebug.Assert(CGame.LevelManifest.GetSet(i_type).__get__Count() > 0, Level, ("No boards of type " + i_type) + " are loaded yet");
var _local3 = CGame.LevelManifest.GetSet(i_type).GetLevel(i_levelIdx).FileName;
m_CurLevelInfo = new CLevelInfo(_local3);
SetState(State_LoadingXml);
}
function GetTraceShot() {
return(m_Launcher.GetShowTracer());
}
function ToggleTraceShot() {
SetTraceShot(!GetTraceShot(), false);
}
function SetTraceShot(i_val, i_noSetVar) {
if (!i_noSetVar) {
m_traceShot = i_val;
}
updateShowTracer();
}
function updateShowTracer() {
if (m_traceShotRemaining > 0) {
m_tracerIndicatorMc._visible = true;
m_tracerIndicator.__set__Text(String(m_traceShotRemaining));
} else {
m_tracerIndicatorMc._visible = false;
}
GetActiveLauncher().SetShowTracer(m_traceShot && (m_traceShotRemaining > 0));
}
function IncrementTraceShotRemaining(i_count) {
m_traceShotRemaining = m_traceShotRemaining + i_count;
updateShowTracer();
}
function GetNewLaserMc(i_forBox, i_lastLaser, i_firstLaser) {
var _local2 = TraceLaserHolderMc.getNextHighestDepth();
if (i_forBox) {
var _local3 = TraceLaserHolderMc.attachMovie("TraceShotTarget", "Laser" + _local2, _local2);
var _local4 = SnoodHead.SizeToScale(CGame.TileSet.m_SnoodSize);
_local3._xscale = _local4;
_local3._yscale = _local4;
} else if (i_firstLaser) {
var _local3 = TraceLaserHolderMc.attachMovie("TraceShotLaserStart", "Laser" + _local2, _local2);
} else if (i_lastLaser) {
var _local3 = TraceLaserHolderMc.attachMovie("TraceShotFade", "Laser" + _local2, _local2);
} else {
var _local3 = TraceLaserHolderMc.attachMovie("TraceShotLaser", "Laser" + _local2, _local2);
}
_local3.Loop = true;
_local3.stop();
return(_local3);
}
function GetNewReboundLaserMc() {
var _local3 = TraceLaserHolderMc.getNextHighestDepth();
var _local2 = TraceLaserHolderMc.attachMovie("ReboundLaser", "ReboundLaser" + _local3, _local3);
_local2.stop();
return(_local2);
}
function AdvanceDanger() {
SnoodHead.StopAllBoardMoveToTweens();
}
function PopAllHeadAsBonus(i_maxWinHeadPopDelay) {
var _local3 = m_TileSet.GetActiveBorbsFixedArray();
var _local5 = m_TileSet.GetActiveBorbsCount();
var _local2 = 0;
while (_local2 < _local5) {
var _local4 = SnoodHead(_local3[_local2]);
if (_local4.__get__Color() <= (Constants.Snood_HeadCount * 2)) {
SnoodHead(_local3[_local2]).Vaporize(false, true, null, i_maxWinHeadPopDelay, 3);
Level.InvalidateSpot(SnoodHead(_local3[_local2]));
}
_local2++;
}
m_Queue.PopAllHeadAsBonus();
if (m_Launcher.m_LaunchSnood._visible) {
m_Launcher.m_LaunchSnood.Vaporize(true, true, null, null, 5);
}
if (m_Launcher.m_CannonSnood._visible) {
m_Launcher.m_CannonSnood.Vaporize(true, true, null, null, 5);
}
}
function InsertBorbAtCannon(i_borbInfo, i_replace) {
if (i_borbInfo.PowerUp == Constants.PowerUp_Aimer) {
m_Launcher.ApplyPowerup(i_borbInfo.PowerUp, i_borbInfo.Color);
IncrementTraceShotRemaining(s_TraceShotIncr);
} else {
m_Launcher.Load(i_borbInfo);
m_Queue.InsertBorbAtElevator(i_borbInfo, i_replace);
}
}
function OnShotComplete() {
m_InPlungerGrab = false;
m_RubberLubberHitThisShot = false;
}
function OnMouseDown() {
if (IsInitialized()) {
if (FHost.CApp.__get__IsRunning() || ((((_root._xmouse >= 0) && (_root._xmouse <= Constants.GameResX)) && (_root._ymouse >= 0)) && (_root._ymouse <= Constants.GameResY))) {
if (CGame.EffectMgr.IsCategoryPlaying(CEffect.Cat_GameTransition)) {
if (CGame.EffectMgr.IsEffectPlaying(CEffect.Type_WinAnim)) {
var _local4 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_WinAnim);
var _local3 = 0;
while (_local3 < _local4.length) {
_local3++;
}
} else if (CGame.EffectMgr.IsEffectPlaying(CEffect.Type_LoseAnim)) {
var _local4 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_LoseAnim);
var _local3 = 0;
while (_local3 < _local4.length) {
Effects.CEffect_LoseAnim(_local4[_local3]).StartLumpDrop();
_local3++;
}
} else if (CGame.EffectMgr.IsEffectPlaying(CEffect.Type_StartAnim)) {
if (Core.DialogUtil.Top() == OwnerDlg) {
CGame.EffectMgr.KillAllEffectsOfType(CEffect.Type_StartAnim);
}
} else {
CDebug.Assert(false, "CBoard.OnMouseDown", "Can't skip unknown transition");
}
} else {
RequestShootSnood();
}
}
}
}
function OnRMouseDown() {
}
static var G = null;
static var s_LevelTextColor = 16737792;
static var s_ScoreTextColor = 16737792;
static var s_TraceShotIncr = 3;
static var s_HookIncr = 2;
static var s_XmlLoadTimeOut = 30;
static var s_XmlLoadTimeOutMax = 3;
static var s_XmlLoadTimeOutCount = 0;
static var s_ScoreBounceDur = 1;
static var s_ScoreBounceMag = 50;
static var s_ScoreColorTint = 16711680;
static var s_ScoreColorTintDur = 0.5;
static var s_ScoreColorTintDelay = 0.5;
static var s_PointsYDisplacement = 70;
var FadeInDur = 1;
var m_Menu = null;
var m_Won = false;
var m_Lost = false;
var m_Disabled = false;
var m_traceShot = true;
var m_traceShotRemaining = 0;
static var State_Loading = 1;
static var State_LoadingXml = 2;
static var State_Playing = 3;
static var State_Dropping = 4;
static var State_Disposing = 5;
}
Symbol 14 MovieClip [__Packages.StaticText] Frame 0
class StaticText extends MovieClip
{
var _name, _parent, TextMc, createEmptyMovieClip, getNextHighestDepth, _width, _height, Marker, _xscale, _yscale, IgnoreColorTrans, ColorTransform;
function StaticText () {
super();
MovieClip(this).cacheAsBitmap = true;
}
function set Text(inVal) {
if (_text != inVal) {
_text = inVal;
if (_loaded) {
ResetText();
}
}
//return(Text);
}
function get Text() {
return(_text);
}
function set Align(inVal) {
_align = inVal;
//return(Align);
}
function get Align() {
return(_align);
}
function set AutoFit(inVal) {
if (_autoFit != inVal) {
_autoFit = inVal;
ResetText();
}
//return(AutoFit);
}
function get AutoFit() {
return(_autoFit);
}
function refreshTextSrc() {
var _local2 = _parent[_name + "Text"];
if (_local2 == null) {
_local2 = _parent[_name + " Text"];
}
if (_local2 != null) {
_local2._visible = false;
_text = _local2.text;
Align = (_local2.getTextFormat().align);
XScale = _local2._xscale;
YScale = _local2._yscale;
}
}
function onLoad() {
TextMc = createEmptyMovieClip("TextHolderMc", getNextHighestDepth());
_loaded = true;
if (_autoFit) {
_autoFitOrigWidth = _width;
_autoFitOrigHeight = _height;
}
ResetText();
}
function ResetText() {
if (!_loaded) {
return(undefined);
}
TextRenderer.RemoveText(TextMc);
TextMc._x = 0;
TextMc._y = 0;
refreshTextSrc();
if (_text != null) {
attachText();
if (Marker._visible) {
Marker._visible = false;
Marker._width = 0;
Marker._height = 0;
}
if ((_autoFit && (_width > 0)) && (_height > 0)) {
if (_bounceScale != null) {
_xscale = _bounceScale;
_yscale = _bounceScale;
} else {
_xscale = Math.min((_autoFitOrigWidth / _width) * 100, (_autoFitOrigHeight / _height) * 100);
_yscale = _xscale;
}
}
TextMc._x = TextMc._x - (TextMc._width / 2);
TextMc._y = TextMc._y - (TextMc._height / 2);
}
}
function drawDebugLines() {
var _local3 = TextMc._width;
var _local2 = TextMc._height;
TextMc.lineStyle(2, 16711680, 100);
TextMc.moveTo(0, 0);
TextMc.lineTo(0, _local2);
TextMc.lineTo(_local3, _local2);
TextMc.lineTo(_local3, 0);
TextMc.lineTo(0, 0);
}
function attachText() {
if (_text != null) {
_xscale = 100;
_yscale = 100;
var _local5 = (_autoFit ? "left" : (Align));
var _local7;
if ((!IgnoreColorTrans) && (ColorTransform != null)) {
var _local3 = (ColorTransform >> 16) & 255;
var _local6 = (ColorTransform >> 8) & 255;
var _local4 = ColorTransform & 255;
_local7 = {ra:(_local3 / 255) * 100, rb:_local3, ga:(_local6 / 255) * 100, gb:_local6, ba:(_local4 / 255) * 100, bb:_local4, aa:ColorAlphaLevel, ab:0};
}
var _local2 = {xoffset:XBuffer, yoffset:YBuffer, charspacing:CharSpacing, spacewidth:10, lineheight:30, align:_local5, totalalign:_local5, xscale:XScale / 100, yscale:YScale / 100, colortransform:_local7, innerhide:InnerColorHide, innertint:InnerColorTint, extralinesp:ExtraNewLineSpacing};
if (_autoFit) {
_local2.forcewidth = _autoFitOrigWidth;
_local2.forceheight = _autoFitOrigHeight;
}
if (_bounceScale == null) {
_chars = TextRenderer.MakeText(TextMc, _text, _local2);
} else {
_lastParams = _local2;
}
}
}
function DoInnerColorTween(i_toColor, i_dur, i_holdDur, i_immediateDelay) {
if (_colorTintBeforeTween != null) {
return(undefined);
}
_colorTintBeforeTween = InnerColorTint;
_colorTintHold = i_holdDur;
_colorTintDur = i_dur;
var _local6 = (i_toColor >> 16) & 255;
var _local4 = (i_toColor >> 8) & 255;
var _local10 = i_toColor & 255;
var _local11 = (InnerColorTint >> 16) & 255;
var _local9 = (InnerColorTint >> 8) & 255;
var _local5 = InnerColorTint & 255;
var _local2 = mx.utils.Delegate.create(this, onColorTweenChange);
_colorTweens.push(new Core.CTween(this, "_tweenR", Core.CTween.DefaultMcTween, _local11, _local6, i_dur, null, i_immediateDelay));
Core.CTween(_colorTweens[_colorTweens.length - 1]).onMotionChanged = mx.utils.Delegate.create(this, _local2);
Core.CTween(_colorTweens[_colorTweens.length - 1]).onMotionFinished = mx.utils.Delegate.create(this, _local2);
_colorTweens.push(new Core.CTween(this, "_tweenG", Core.CTween.DefaultMcTween, _local9, _local4, i_dur, null, i_immediateDelay));
Core.CTween(_colorTweens[_colorTweens.length - 1]).onMotionChanged = mx.utils.Delegate.create(this, _local2);
Core.CTween(_colorTweens[_colorTweens.length - 1]).onMotionFinished = mx.utils.Delegate.create(this, _local2);
_colorTweens.push(new Core.CTween(this, "_tweenB", Core.CTween.DefaultMcTween, _local5, _local10, i_dur, null, i_immediateDelay));
Core.CTween(_colorTweens[_colorTweens.length - 1]).onMotionChanged = mx.utils.Delegate.create(this, _local2);
Core.CTween(_colorTweens[_colorTweens.length - 1]).onMotionFinished = mx.utils.Delegate.create(this, _local2);
}
function onColorTweenChange(i_tween) {
if (!i_tween.m_IsPlaying) {
var _local3 = _colorTweens.length;
var _local2 = 0;
while (_local2 < _local3) {
if (_colorTweens[_local2] == i_tween) {
_colorTweens.splice(_local2, 1);
_local2 = _local3;
}
_local2++;
}
}
if (((_tweenR != null) && (_tweenG != null)) && (_tweenB != null)) {
InnerColorTint = ((_tweenR << 16) + (_tweenG << 8)) + _tweenB;
ResetText();
_tweenR = null;
_tweenG = null;
_tweenB = null;
}
if (_colorTweens.length == 0) {
if (_colorTintHold != null) {
var _local5 = _colorTintBeforeTween;
_colorTintBeforeTween = null;
DoInnerColorTween(_local5, _colorTintDur, null, _colorTintHold);
} else {
_colorTintBeforeTween = null;
}
}
}
function Bounce(i_dur, i_pctMag) {
if (_bounceScale != null) {
return(undefined);
}
_bounceScale = _xscale;
var _local2 = 0;
while (_local2 < _chars.length) {
var _local4 = MovieClip(_chars[_local2]);
var _local3 = new Core.CTween(_local4, "_y", CustomTweens.Bounce.SingleBounce, 0, -((i_pctMag * _local4._height) / 100), i_dur / 2, true, ((_local2 / _chars.length) * i_dur) / 2);
_local3.onMotionFinished = mx.utils.Delegate.create(this, onTweenFinish);
_tweens.push(_local3);
_local2++;
}
}
function onTweenFinish(i_tween) {
var _local3 = _tweens.length;
var _local2 = 0;
while (_local2 < _local3) {
if (_tweens[_local2] == i_tween) {
_tweens.splice(_local2, 1);
_local2 = _local3;
}
_local2++;
}
i_tween.m_Obj._y = 0;
if (_tweens.length == 0) {
_bounceScale = null;
if (_lastParams != null) {
_chars = TextRenderer.MakeText(TextMc, _text, _lastParams);
_lastParams = null;
}
}
}
var XScale = 100;
var YScale = 100;
var XBuffer = 0;
var YBuffer = 0;
var ColorAlphaLevel = 100;
var InnerColorTint = null;
var InnerColorHide = false;
var ExtraNewLineSpacing = 0;
var CharSpacing = -2;
var _align = "center";
var _autoFit = false;
var _text = null;
var _autoFitOrigWidth = null;
var _autoFitOrigHeight = null;
var _chars = [];
var _loaded = false;
var _tweens = [];
var _colorTweens = [];
var _bounceScale = null;
var _colorTintBeforeTween = null;
var _colorTintDur = null;
var _colorTintHold = null;
var _tweenR = null;
var _tweenG = null;
var _tweenB = null;
var _lastParams = null;
}
Symbol 15 MovieClip [__Packages.TextRenderer] Frame 0
class TextRenderer
{
function TextRenderer () {
}
static function RemoveText(inBaseMovie, inKey) {
if (inKey == undefined) {
inKey = "text";
}
var _local2 = 0;
for(;;){
var _local1 = inBaseMovie[inKey + _local2];
if (!(_local1 === undefined)) {
if (_local1 != null) {
_local1.removeMovieClip();
} else {
delete inBaseMovie[inKey + _local2];
}
} else {
break;
}
_local2++;
};
}
static function MakeText(inBaseMovie, inText, inOptions) {
var _local50 = [];
var _local47 = inOptions.xoffset;
if (_local47 == undefined) {
_local47 = 0;
}
var _local49 = inOptions.yoffset;
if (_local49 == undefined) {
_local49 = 0;
}
var _local36 = inOptions.charspacing;
if (_local36 == undefined) {
_local36 = 0;
}
var _local27 = inOptions.colortransform;
if (_local27 == undefined) {
_local27 = null;
}
var _local37 = inOptions.shouldskew;
if (_local37 == undefined) {
_local37 = false;
}
var _local38 = inOptions.spacewidth;
if (_local38 == undefined) {
_local38 = 10;
}
var _local45 = inOptions.lineheight;
if (_local45 == undefined) {
_local45 = 10;
}
var _local20 = inOptions.key;
if (_local20 == undefined) {
_local20 = "text";
}
var _local39 = inOptions.align;
if (_local39 == undefined) {
_local39 = "center";
}
var _local10 = inOptions.totalalign;
if (_local10 == undefined) {
_local10 = "center";
}
var _local25 = inOptions.xscale;
if (_local25 == undefined) {
_local25 = 1;
}
var _local26 = inOptions.yscale;
if (_local26 == undefined) {
_local26 = 1;
}
var _local52 = inOptions.forcewidth;
if (_local52 == undefined) {
_local52 = inBaseMovie._width;
}
var _local54 = inOptions.forceheight;
if (_local54 == undefined) {
_local54 = inBaseMovie._height;
}
var _local30 = inOptions.curvexscale;
if (_local30 == undefined) {
_local30 = 1;
}
var _local29 = inOptions.curveyscale;
if (_local29 == undefined) {
_local29 = 1;
}
var _local28 = inOptions.innertint;
if (_local28 == undefined) {
_local28 = null;
}
var _local48 = inOptions.innerhide;
if (_local48 == undefined) {
_local48 = false;
}
var _local46 = inOptions.extralinesp;
if (_local46 == undefined) {
_local46 = 0;
}
_local36 = _local36 * _local25;
_local38 = _local38 * _local25;
_local45 = _local45 * _local26;
var _local11 = _local52;
var _local12 = _local54;
if (inText.charAt(0) == "~") {
inText = inText.substr(1);
_local37 = true;
}
if (inText.charAt(inText.length - 1) == "}") {
var _local53 = inText.lastIndexOf("{");
var _local55 = inText.substr(_local53 + 1, (inText.length - _local53) - 2);
inText = inText.substr(0, _local53);
var _local40 = _local55.split(";");
var _local14 = 0;
while (_local14 < _local40.length) {
var _local2 = String(_local40[_local14]).split("=");
_local2[0] = _local2[0].toLowerCase();
if (_local2[0] == "intint") {
_local28 = Number(_local2[1]);
} else if (_local2[0] == "cx") {
_local30 = Number(_local2[1]);
} else if (_local2[0] == "cy") {
_local29 = Number(_local2[1]);
} else if (_local2[0] == "rgb") {
var _local17 = String(_local2[1]).split(",");
_local27 = MakeNormalColor({r:Number(_local17[0]), g:Number(_local17[1]), b:Number(_local17[2])});
} else if (_local2[0] == "align") {
_local10 = String(_local2[1]);
} else if (_local2[0] == "load") {
inText = inText + FHost.CApp.GetGameConfigString(_local2[1]);
}
_local14++;
}
}
inText = inText.toUpperCase();
var _local3 = [0];
var _local7 = 0;
var _local51 = {};
var _local13 = 0;
var _local41 = 0;
var _local31 = false;
var _local4 = 0;
var _local15 = (Math.PI/180);
var _local14 = 0;
while (_local14 < inText.length) {
if (inText.charAt(_local14) == " ") {
_local13 = _local13 + _local38;
_local3[_local4] = _local3[_local4] + _local38;
inBaseMovie[_local20 + _local14] = null;
} else if ((inText.charCodeAt(_local14) == 13) || (inText.charCodeAt(_local14) == 10)) {
_local13 = 0;
_local41 = _local41 + (_local45 + _local46);
_local3.push(0);
_local4++;
inBaseMovie[_local20 + _local14] = null;
} else {
var _local1 = inBaseMovie.createEmptyMovieClip(_local20 + _local14, inBaseMovie.getNextHighestDepth());
var _local9 = inText.charAt(_local14);
if (_local9 == "/") {
_local9 = "slash";
}
if (_local9 == "\"") {
if (_local31) {
_local31 = false;
_local9 = "\"\"";
} else {
_local31 = true;
}
}
_local1.attachMovie(_local9, "inner", 0);
_local50.push(_local1);
_local1.inner._width = _local1.inner._width * _local25;
_local1.inner._height = _local1.inner._height * _local26;
if (_local48) {
_local1.inner.FontBack._visible = false;
}
if (_local28 != null) {
var _local35 = new Color(_local1.inner.FontTint);
_local35.setRGB(_local28);
}
if (_local27 != null) {
var _local34 = new Color(_local1);
_local34.setTransform(_local27);
}
var _local19 = _local13;
var _local18 = _local13 + _local1._width;
_local19 = (((_local19 * (1 / _local25)) * 0.05) * _local30) + 2.35619449019234;
_local18 = (((_local18 * (1 / _local25)) * 0.05) * _local30) + 2.35619449019234;
var _local22 = ((Math.sin(_local19) * 6) * _local26) * _local29;
var _local33 = ((Math.sin(_local18) * 6) * _local26) * _local29;
if (_local37) {
var _local21 = Math.asin((_local33 - _local22) / _local1._width) / _local15;
_local1.inner._rotation = -45;
_local1._rotation = (_local21 / 2) + 45;
var _local23 = _local21 * _local15;
var _local24 = Math.sin(_local1._rotation * _local15);
_local1._xscale = ((100 * (1 + Math.sin(_local23))) / _local24) * Math.sin(45 * _local15);
_local1._yscale = ((100 * Math.cos(_local23)) / _local24) * Math.sin(45 * _local15);
}
var _local8 = _local51[_local9];
if (_local8 == undefined) {
_local8 = {};
_local8.x = 0;
_local8.y = 0;
}
_local1._x = _local13 + _local8.x;
_local1._y = _local41 + _local8.y;
_local13 = _local13 + (_local1._width + _local36);
if (_local37) {
_local1._y = _local1._y + _local22;
}
_local3[_local4] = _local3[_local4] + (_local1._width + _local36);
_local7 = Math.max(_local7, _local1._y + _local1._height);
}
_local14++;
}
var _local6 = 0;
_local14 = 0;
while (_local14 < _local3.length) {
_local6 = Math.max(_local6, _local3[_local14]);
_local14++;
}
_local4 = 0;
_local14 = 0;
while (_local14 < inText.length) {
if (inText.charCodeAt(_local14) == 13) {
_local4++;
} else {
var _local1 = inBaseMovie[_local20 + _local14];
if (_local1 != undefined) {
if (_local39 == "left") {
if (_local10 == "left") {
} else if (_local10 == "right") {
_local1._x = _local1._x + (_local11 - _local6);
_local1._y = _local1._y + ((_local12 / 2) - (_local7 / 2));
} else {
_local1._x = _local1._x + ((_local11 / 2) - (_local6 / 2));
_local1._y = _local1._y + ((_local12 / 2) - (_local7 / 2));
}
} else if (_local39 == "right") {
if (_local10 == "left") {
_local1._x = _local1._x + (_local6 - _local3[_local4]);
} else if (_local10 == "right") {
_local1._x = _local1._x + (_local11 - _local3[_local4]);
_local1._y = _local1._y + ((_local12 / 2) - (_local7 / 2));
} else {
_local1._x = _local1._x + (((_local11 / 2) + (_local6 / 2)) - _local3[_local4]);
_local1._y = _local1._y + ((_local12 / 2) - (_local7 / 2));
}
} else if (_local10 == "left") {
_local1._x = _local1._x + ((_local6 / 2) - (_local3[_local4] / 2));
} else if (_local10 == "right") {
_local1._x = _local1._x + ((_local11 - (_local6 / 2)) - (_local3[_local4] / 2));
_local1._y = _local1._y + ((_local12 / 2) - (_local7 / 2));
} else {
_local1._x = _local1._x + ((_local11 / 2) - (_local3[_local4] / 2));
_local1._y = _local1._y + ((_local12 / 2) - (_local7 / 2));
}
_local1._x = _local1._x + _local47;
_local1._y = _local1._y + _local49;
}
}
_local14++;
}
return(_local50);
}
static function GetNextColor() {
var _local1 = colors[colorIndex];
if ((++colorIndex) == colors.length) {
colorIndex = 0;
}
return(_local1);
}
static function MakeNormalColor(inColor) {
var _local2 = {ra:50, rb:inColor.r, ga:50, gb:inColor.g, ba:50, bb:inColor.b, aa:100, ab:0};
return(_local2);
}
static function MakeHoverColor(inColor) {
var _local2 = {ra:25, rb:inColor.r * 0.75, ga:25, gb:inColor.g * 0.75, ba:25, bb:inColor.b * 0.75, aa:100, ab:0};
return(_local2);
}
static function MakePushedColor(inColor) {
var _local2 = {ra:0, rb:inColor.r, ga:0, gb:inColor.g, ba:0, bb:inColor.b, aa:100, ab:0};
return(_local2);
}
static var colorIndex = 0;
static var colors = [{r:100, g:0, b:0}, {r:125, g:40, b:0}, {r:90, g:90, b:0}, {r:0, g:75, b:0}, {r:0, g:100, b:100}, {r:0, g:0, b:125}, {r:75, g:0, b:115}];
}
Symbol 16 MovieClip [__Packages.FHost.CApp] Frame 0
class FHost.CApp
{
static var _callbacks, __get__MouseAbsBounds;
function CApp () {
}
static function get Channel_Sound() {
return("channel_sound");
}
static function get Channel_Music() {
return("channel_music");
}
static function get Channel_Voice() {
return("channel_voice");
}
static function get Channel_All() {
return("channel_*");
}
static function get Stream_All() {
return("*");
}
static function get ComputerSpeed_Slow() {
return(0);
}
static function get ComputerSpeed_Normal() {
return(1);
}
static function get ComputerSpeed_Fast() {
return(2);
}
static function Install(inCallbacks) {
_root.watch("HOST_RButtonUpPos", handler);
_root.watch("HOST_RButtonDownPos", handler);
_root.watch("HOST_MButtonUpPos", handler);
_root.watch("HOST_MButtonDownPos", handler);
_root.watch("HOST_EscDown", handler);
_root.watch("HOST_ContextKeyDown", handler);
_root.watch("HOST_RequestClose", handler);
_root.watch("HOST_AppActivate", handler);
_root.watch("HOST_SysMenu", handler);
_root.watch("HOST_SoundEnded", handler);
_root.watch("HOST_DoneInitializing", handler);
_callbacks = inCallbacks;
var _local4 = _root.createEmptyMovieClip("FHostCAppMonitor", _root.getNextHighestDepth());
var first = true;
_local4.onEnterFrame = function () {
fscommand ("HOST_Ping");
var _local3 = FHost.CApp.parsePos(_root.HOST_MouseDelta);
if (_local3 != null) {
FHost.CApp.m_MouseDeltaX = FHost.CApp.m_MouseDeltaX + _local3.x;
FHost.CApp.m_MouseDeltaY = FHost.CApp.m_MouseDeltaY + _local3.y;
if (FHost.CApp.m_MouseAbsBounds == null) {
FHost.CApp.m_MouseAbsBounds = {l:0, t:0, r:_root._width, b:_root._height};
}
FHost.CApp.m_MouseAbsX = FHost.CApp.m_MouseAbsX + _local3.x;
if (FHost.CApp.m_MouseAbsX < FHost.CApp.m_MouseAbsBounds.l) {
FHost.CApp.m_MouseAbsX = FHost.CApp.m_MouseAbsBounds.l;
}
if (FHost.CApp.m_MouseAbsX >= FHost.CApp.m_MouseAbsBounds.r) {
FHost.CApp.m_MouseAbsX = FHost.CApp.m_MouseAbsBounds.r - 1;
}
FHost.CApp.m_MouseAbsY = FHost.CApp.m_MouseAbsY + _local3.y;
if (FHost.CApp.m_MouseAbsY < FHost.CApp.m_MouseAbsBounds.t) {
FHost.CApp.m_MouseAbsY = FHost.CApp.m_MouseAbsBounds.t;
}
if (FHost.CApp.m_MouseAbsY >= FHost.CApp.m_MouseAbsBounds.b) {
FHost.CApp.m_MouseAbsY = FHost.CApp.m_MouseAbsBounds.b - 1;
}
} else {
FHost.CApp.m_MouseAbsX = _root._xmouse;
FHost.CApp.m_MouseAbsY = _root._ymouse;
}
if (first) {
first = false;
} else if (!FHost.CApp.__get__IsRunning()) {
this.removeMovieClip();
return(undefined);
}
};
}
static function NotifyDoneLoading() {
if (IsRunning) {
fscommand ("HOST_NotifyLoadComplete");
} else {
_root.HOST_DoneInitializing = "1";
}
}
static function SetCursorModeDelta() {
fscommand ("HOST_SetCursorMode", "Delta");
}
static function SetCursorModeAbsolute() {
fscommand ("HOST_SetCursorMode", "Absolute");
}
static function get MouseDelta() {
var _local1 = {x:m_MouseDeltaX, y:m_MouseDeltaY};
return(_local1);
}
static function ClearMouseDelta() {
m_MouseDeltaX = 0;
m_MouseDeltaY = 0;
}
static function TakeMouseDelta() {
var _local1 = MouseDelta;
ClearMouseDelta();
return(_local1);
}
static function set MouseAbsBounds(inMouseAbsBounds) {
m_MouseAbsBounds = inMouseAbsBounds;
//return(__get__MouseAbsBounds());
}
static function get MouseAbs() {
var _local1 = {x:m_MouseAbsX, y:m_MouseAbsY};
return(_local1);
}
static function set Fullscreen(inFullScreen) {
_root.HOST_Fullscreen = (inFullScreen ? "1" : "0");
if (IsRunning) {
fscommand ("HOST_SetWindowMode", (inFullScreen ? "fullscreen" : "windowed"));
} else {
fscommand ("fullscreen", inFullScreen);
}
//return(Fullscreen);
}
static function get Fullscreen() {
return(_root.HOST_Fullscreen == "1");
}
static function get ForceFullscreen() {
return(_root.HOST_ForceFullscreen == "1");
}
static function get IsDebugMode() {
if (IsRunning) {
return(_root.HOST_BuildMode.toLowerCase() == "debug");
}
return(System.capabilities.isDebugger);
}
static function get PrivateBuild() {
return(_root.HOST_PrivateBuild);
}
static function get SpecialBuild() {
return(_root.HOST_SpecialBuild);
}
static function get IsPreRelease() {
return(_root.HOST_PreRelease == "1");
}
static function get GameVersion() {
return(_root.HOST_GameVersion);
}
static function get DefaultPlayerName() {
return(_root.HOST_DefaultPlayerName);
}
static function get ShouldShowReportBugButton() {
return(_root.HOST_ShouldShowReportBugButton == "1");
}
static function get ShouldShowOpenSurveyButton() {
return(_root.HOST_ShouldShowOpenSurveyButton == "1");
}
static function get IsRunning() {
return(_root.HOST_Ping.toLowerCase() == "pong");
}
static function GetGameConfigString(inKeyName, inDefault) {
var _local2 = _root["HOST_Game_" + inKeyName];
if (_local2 == undefined) {
return(inDefault);
}
_local2 = Oberon.StringX.replace(_local2, "\\n", "\r");
return(_local2);
}
static function GetGameConfigBool(inKeyName, inDefault) {
var _local2 = _root["HOST_Game_" + inKeyName].toLowerCase();
if (_local2 == undefined) {
return(inDefault);
}
return(((_local2 == "1") || (_local2 == "t")) || (_local2 == "true"));
}
static function get ComputerSpeed() {
if (IsRunning) {
if (_root.HOST_ComputerSpeed == "fast") {
return(ComputerSpeed_Fast);
}
if (_root.HOST_ComputerSpeed == "slow") {
return(ComputerSpeed_Slow);
}
return(ComputerSpeed_Normal);
}
return(ComputerSpeed_Fast);
}
static function get IsSlowComputerSpeed() {
return(ComputerSpeed == ComputerSpeed_Slow);
}
static function get IsNormalComputerSpeed() {
return(ComputerSpeed == ComputerSpeed_Normal);
}
static function get IsFastComputerSpeed() {
return(ComputerSpeed == ComputerSpeed_Fast);
}
static function set GlobalVolume(inVolume) {
_root.HOST_GlobalVolume = inVolume;
fscommand ("HOST_SetGlobalVolume", inVolume);
//return(GlobalVolume);
}
static function get GlobalVolume() {
var _local2 = "HOST_GlobalVolume";
var _local3 = 100;
if (_root[_local2] != undefined) {
_local3 = _root[_local2];
}
return(_local3);
}
static function SetAudioVolume(inAudioName, inVolume) {
inAudioName = inAudioName.toLowerCase();
if (Oberon.StringX.startsWith(inAudioName, "channel_")) {
_root["HOST_AudioVolume_" + inAudioName] = inVolume;
}
fscommand ("HOST_SetAudioVolume", (("name=" + inAudioName) + "&volume=") + String(inVolume));
}
static function GetAudioVolume(inChannelName) {
var _local2 = "HOST_AudioVolume_" + inChannelName;
var _local3 = 100;
if (_root[_local2] != undefined) {
_local3 = _root[_local2];
}
return(_local3);
}
static function PlayAudio(inStreamName, inParams) {
var _local2 = (inParams.loop ? "1" : "0");
var _local6 = ((inParams.volume != undefined) ? (String(inParams.volume)) : "100");
var _local3 = (inParams.paused ? "1" : "0");
var _local7 = ((inParams.channel != undefined) ? (inParams.channel) : (Channel_Sound));
var _local5 = (inParams.unique ? "1" : "0");
var _local4 = (inParams.notifyEnd ? "1" : "0");
fscommand ("HOST_PlayAudio", (((((((((((("name=" + inStreamName) + "&loop=") + _local2) + "&volume=") + _local6) + "&paused=") + _local3) + "&channel=") + _local7) + "&unique=") + _local5) + "¬ifyEnd=") + _local4);
}
static function PauseAudio(inAudioName, inParams) {
var _local3 = ((inParams.pause != undefined) ? ((inParams.pause ? "1" : "0")) : "1");
var _local2 = (inParams.fadeout ? "1" : "0");
var _local4 = ((inParams.fadetime != undefined) ? (String(inParams.fadetime)) : "2.0");
fscommand ("HOST_PauseAudio", (((((("name=" + inAudioName) + "&pause=") + _local3) + "&fadeout=") + _local2) + "&fadetime=") + _local4);
}
static function ResumeAudio(inAudioName, inParams) {
if (inParams == null) {
inParams = {};
}
inParams.pause = false;
PauseAudio(inAudioName, inParams);
}
static function StopAudio(inAudioName, inParams) {
var _local1 = (inParams.fadeout ? "1" : "0");
var _local2 = ((inParams.fadetime != undefined) ? (String(inParams.fadetime)) : "2.0");
fscommand ("HOST_StopAudio", (((("name=" + inAudioName) + "&fadeout=") + _local1) + "&fadetime=") + _local2);
}
static function StopAllAudio(inParams) {
StopAudio(Stream_All, inParams);
}
static function StripReportBugInBrowser() {
fscommand ("HOST_StripReportBugInBrowser");
}
static function StripOpenSurveyInBrowser() {
fscommand ("HOST_StripOpenSurveyInBrowser");
}
static function StripDbgSetTimeOffset(inOffsetSeconds) {
fscommand ("HOST_StripDbgSetTimeOffset", "offset=" + String(inOffsetSeconds));
}
static function StripSetCustomParamsForNextEvent(inParamNames, inParamValues) {
var _local3 = inParamNames.length;
var _local2 = "";
var _local1 = 0;
while (_local1 < _local3) {
if (_local1 != 0) {
_local2 = _local2 + "&";
}
_local2 = _local2 + escape(inParamNames[_local1]);
_local2 = _local2 + "=";
_local2 = _local2 + escape(inParamValues[_local1]);
_local1++;
}
fscommand ("HOST_StripSetCustomParamsForNextEvent", _local2);
}
static function StripStartGame(inGameTimeSeconds, inMode) {
fscommand ("HOST_StripStartGame", (("gametime=" + String(inGameTimeSeconds)) + "&mode=") + escape(inMode));
}
static function StripEndGame(inGameTimeSeconds, inMode, inScore, inReason) {
fscommand ("HOST_StripEndGame", (((((("gametime=" + String(inGameTimeSeconds)) + "&mode=") + escape(inMode)) + "&score=") + String(inScore)) + "&reason=") + escape(inReason));
}
static function StripEnterLevel(inGameTimeSeconds, inNum, inType) {
fscommand ("HOST_StripEnterLevel", (((("gametime=" + String(inGameTimeSeconds)) + "&num=") + escape(inNum)) + "&type=") + escape(inType));
}
static function StripExitLevel(inGameTimeSeconds, inNum, inType, inScore, inReason) {
fscommand ("HOST_StripExitLevel", (((((((("gametime=" + String(inGameTimeSeconds)) + "&num=") + escape(inNum)) + "&type=") + escape(inType)) + "&score=") + String(inScore)) + "&reason=") + escape(inReason));
}
static function StripUIScreenChange(inGameTimeSeconds, inName) {
fscommand ("HOST_StripUIScreenChange", (("gametime=" + String(inGameTimeSeconds)) + "&name=") + escape(inName));
}
static function StripUIControlChange(inGameTimeSeconds, inName, inValue) {
fscommand ("HOST_StripUIControlChange", (((("gametime=" + String(inGameTimeSeconds)) + "&name=") + escape(inName)) + "&value=") + escape(inValue));
}
static function StripMouseButtonChange(inGameTimeSeconds, inPlayerId, inButton, inIsDown, inX, inY) {
var _local1 = (inIsDown ? "1" : "0");
}
static function StripKeyChange(inGameTimeSeconds, inPlayerId, inKeyCode, inIsDown) {
}
static function StripGoodAction(inGameTimeSeconds, inPlayerId, inType, inValue) {
fscommand ("HOST_StripGoodAction", (((((("gametime=" + String(inGameTimeSeconds)) + "&playerid=") + escape(inPlayerId)) + "&type=") + escape(inType)) + "&value=") + escape(inValue));
}
static function StripNotGoodAction(inGameTimeSeconds, inPlayerId, inType, inValue) {
fscommand ("HOST_StripNotGoodAction", (((((("gametime=" + String(inGameTimeSeconds)) + "&playerid=") + escape(inPlayerId)) + "&type=") + escape(inType)) + "&value=") + escape(inValue));
}
static function StripPowerUpCollected(inGameTimeSeconds, inPlayerId, inType, inHow) {
fscommand ("HOST_StripPowerUpCollected", (((((("gametime=" + String(inGameTimeSeconds)) + "&playerid=") + escape(inPlayerId)) + "&type=") + escape(inType)) + "&how=") + escape(inHow));
}
static function StripPowerUpUsed(inGameTimeSeconds, inPlayerId, inType, inHow) {
fscommand ("HOST_StripPowerUpUsed", (((((("gametime=" + String(inGameTimeSeconds)) + "&playerid=") + escape(inPlayerId)) + "&type=") + escape(inType)) + "&how=") + escape(inHow));
}
static function StripStatChanged(inGameTimeSeconds, inPlayerId, inType, inValue) {
fscommand ("HOST_StripStatChanged", (((((("gametime=" + String(inGameTimeSeconds)) + "&playerid=") + escape(inPlayerId)) + "&type=") + escape(inType)) + "&value=") + String(inValue));
}
static function StripStatChangedBuffered(inGameTimeSeconds, inMinIntervalSeconds, inPlayerId, inType, inValue) {
fscommand ("HOST_StripStatChanged", (((((((("gametime=" + String(inGameTimeSeconds)) + "&mininterval=") + String(inMinIntervalSeconds)) + "&playerid=") + escape(inPlayerId)) + "&type=") + escape(inType)) + "&value=") + String(inValue));
}
static function StripRecordCustomEvent(inType, inGameTimeSeconds, inParamNames, inParamValues) {
var _local3 = inParamNames.length;
var _local2 = (("type=" + escape(inType)) + "&gametime=") + String(inGameTimeSeconds);
var _local1 = 0;
while (_local1 < _local3) {
_local2 = _local2 + "&";
_local2 = _local2 + escape(inParamNames[_local1]);
_local2 = _local2 + "=";
_local2 = _local2 + escape(inParamValues[_local1]);
_local1++;
}
fscommand ("HOST_StripRecordCustomEvent", _local2);
}
static function Quit() {
fscommand ("quit");
}
static function OpenWebBrowser(inUrl) {
if (IsRunning) {
fscommand ("HOST_OpenWebBrowser", inUrl);
} else {
getURL (inUrl, "_blank");
}
}
static function Log(inLogData) {
if (IsRunning) {
fscommand ("HOST_Log", inLogData);
}
trace(inLogData);
}
static function Trace(inLogData) {
if (IsRunning) {
fscommand ("HOST_Trace", inLogData);
}
trace(inLogData);
}
static function parsePos(inStr) {
if (inStr == null) {
return(null);
}
var _local1 = inStr.split(",");
var _local2 = {x:parseInt(_local1[0]), y:parseInt(_local1[1])};
return(_local2);
}
static function handler(inProp, inOldVal, inNewVal) {
if (inProp == "HOST_RButtonUpPos") {
_callbacks.RButtonUp(parsePos(inNewVal));
} else if (inProp == "HOST_RButtonDownPos") {
_callbacks.RButtonDown(parsePos(inNewVal));
}
if (inProp == "HOST_MButtonUpPos") {
_callbacks.MButtonUp(parsePos(inNewVal));
} else if (inProp == "HOST_MButtonDownPos") {
_callbacks.MButtonDown(parsePos(inNewVal));
} else if (inProp == "HOST_AppActivate") {
_callbacks.AppActivate(inNewVal == "1");
} else if (inProp == "HOST_SoundEnded") {
_callbacks.SoundEnded(inNewVal);
} else {
var _local3 = inProp.split("HOST_")[1];
_callbacks[_local3]();
}
}
static var m_MouseDeltaX = 0;
static var m_MouseDeltaY = 0;
static var m_MouseAbsX = 0;
static var m_MouseAbsY = 0;
static var m_MouseAbsBounds = null;
}
Symbol 17 MovieClip [__Packages.Oberon.StringX] Frame 0
class Oberon.StringX
{
function StringX () {
}
static function cescape(inString) {
inString = replace(inString, newline, "\\n", true);
inString = replace(inString, "\r", "\\r", true);
inString = replace(inString, "\t", "\\t", true);
return(inString);
}
static function containsText(inString) {
return((inString != null) && (inString.length > 0));
}
static function lookupEnumName(inWhere, inEnumName, inEnumValue, inDefault) {
for (var _local4 in inWhere) {
if (startsWith(_local4, inEnumName + "_")) {
if (inWhere[_local4] == inEnumValue) {
return(_local4.substr(inEnumName.length + 1));
}
}
}
if (inDefault == undefined) {
return("undefined");
}
return(inDefault);
}
static function startsWith(inString, inWithWhat, inMatchCase) {
if (inMatchCase == undefined) {
inMatchCase = true;
}
inString = inString.substr(0, inWithWhat.length);
if (!inMatchCase) {
inString = inString.toLowerCase();
inWithWhat = inWithWhat.toLowerCase();
}
return(inString == inWithWhat);
}
static function replaceIfStartsWith(inString, inStartsWithWhat, inReplaceWithWhat, inMatchCase) {
if (startsWith(inString, inStartsWithWhat, inMatchCase)) {
return(inReplaceWithWhat + inString.substr(inStartsWithWhat.length));
}
return(inString);
}
static function removeIfStartsWith(inString, inStartsWithWhat, inMatchCase) {
return(replaceIfStartsWith(inString, inStartsWithWhat, "", inMatchCase));
}
static function endsWith(inString, inWithWhat, inMatchCase) {
if (inMatchCase == undefined) {
inMatchCase = true;
}
inString = inString.substr(inString.length - inWithWhat.length);
if (!inMatchCase) {
inString = inString.toLowerCase();
inWithWhat = inWithWhat.toLowerCase();
}
return(inString == inWithWhat);
}
static function replaceIfEndsWith(inString, inEndsWithWhat, inReplaceWithWhat, inMatchCase) {
if (endsWith(inString, inEndsWithWhat, inMatchCase)) {
return(inString.substr(0, inString.length - inEndsWithWhat.length) + inReplaceWithWhat);
}
return(inString);
}
static function removeIfEndsWith(inString, inEndsWithWhat, inMatchCase) {
return(replaceIfEndsWith(inString, inEndsWithWhat, "", inMatchCase));
}
static function repeat(inString, inCount) {
if (inString == null) {
return(null);
}
var _local2 = "";
var _local1 = 0;
while (_local1 < inCount) {
_local2 = _local2 + inString;
_local1++;
}
return(_local2);
}
static function setCharAt(inString, inIndex, inNewString) {
if (inString == null) {
return(null);
}
if (inString.charAt(inIndex) == inNewString) {
return(inString);
}
return((inString.substr(0, inIndex) + inNewString) + inString.substr(inIndex + 1));
}
static function replace(inString, inSearchString, inReplaceString, inMatchCase) {
var _local3 = "";
var _local5 = inString;
if (inMatchCase == undefined) {
inMatchCase = true;
}
if (!inMatchCase) {
_local5 = _local5.toLowerCase();
inSearchString = inSearchString.toLowerCase();
}
var _local2 = -1;
var _local1 = 0;
while (_local2 = _local5.indexOf(inSearchString, _local1) , _local2 != -1) {
_local3 = _local3 + inString.substring(_local1, _local2);
_local3 = _local3 + inReplaceString;
_local1 = _local2 + inSearchString.length;
}
return(_local3 + inString.substring(_local1));
}
static function format(inFormat) {
return(formatFromArgs(inFormat, arguments, 1));
}
static function formatFromArray(inFormat, inParams) {
if (inFormat == null) {
return(null);
}
if (inFormat.indexOf("{") == -1) {
return(inFormat);
}
var _local5 = inFormat;
var _local15 = "";
var _local1 = 0;
var _local4 = inFormat.length;
var _local2 = "";
while (true) {
var _local9 = _local1;
var _local6 = _local1;
while (_local1 < _local4) {
_local2 = inFormat.charAt(_local1);
_local1++;
if (_local2 == "}") {
if ((_local1 < _local4) && (inFormat.charAt(_local1) == "}")) {
_local1++;
} else {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
}
if (_local2 == "{") {
if ((_local1 < _local4) && (inFormat.charAt(_local1) == "{")) {
_local1++;
} else {
_local1--;
break;
}
}
inFormat = setCharAt(inFormat, _local6, _local2);
_local6++;
}
if (_local6 > _local9) {
_local15 = _local15 + inFormat.substr(_local9, _local6 - _local9);
}
if (_local1 == _local4) {
break;
}
_local1++;
if (((_local1 == _local4) || ((_local2 = inFormat.charAt(_local1)) < "0")) || (_local2 > "9")) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
var _local7 = 0;
do {
_local7 = ((_local7 * 10) + _local2) - "0";
_local1++;
if (_local1 == _local4) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
_local2 = inFormat.charAt(_local1);
} while (((_local2 >= "0") && (_local2 <= "9")) && (_local7 < 1000000));
if (_local7 >= inParams.length) {
return(((("!INDEX " + _local7) + " OUT OF RANGE: '") + _local5) + "'");
}
while ((_local1 < _local4) && ((_local2 = inFormat.charAt(_local1)) == " ")) {
_local1++;
}
var _local13 = false;
var _local10 = 0;
if (_local2 == ",") {
_local1++;
while ((_local1 < _local4) && (inFormat.charAt(_local1) == " ")) {
_local1++;
}
if (_local1 == _local4) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
_local2 = inFormat.charAt(_local1);
if (_local2 == "-") {
_local13 = true;
_local1++;
if (_local1 == _local4) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
_local2 = inFormat.charAt(_local1);
}
if ((_local2 < "0") || (_local2 > "9")) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
do {
_local10 = ((_local10 * 10) + _local2) - "0";
_local1++;
if (_local1 == _local4) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
_local2 = inFormat.charAt(_local1);
} while (((_local2 >= "0") && (_local2 <= "9")) && (_local10 < 1000000));
}
while ((_local1 < _local4) && ((_local2 = inFormat.charAt(_local1)) == " ")) {
_local1++;
}
var _local14 = inParams[_local7];
var _local12 = null;
if (_local2 == ":") {
_local1++;
_local9 = _local1;
_local6 = _local1;
for ( ; true ; inFormat = setCharAt(inFormat, _local6, _local2) , _local6++) {
if (_local1 == _local4) {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
_local2 = inFormat.charAt(_local1);
_local1++;
if (_local2 == "{") {
if ((_local1 < _local4) && (inFormat.charAt(_local1) == "{")) {
_local1++;
continue;
}
return(("!FORMAT ERROR: '" + _local5) + "'");
}
if (_local2 == "}") {
if ((_local1 < _local4) && (inFormat.charAt(_local1) == "}")) {
_local1++;
} else {
_local1--;
break;
}
}
}
if (_local6 > _local9) {
_local12 = inFormat.substr(_local9, _local6 - _local9);
}
}
if (_local2 != "}") {
return(("!FORMAT ERROR: '" + _local5) + "'");
}
_local1++;
var _local8 = null;
if (_local12 != null) {
if (_local12 == "x") {
_local8 = Number(_local14).toString(16).toLowerCase();
} else if (_local12 == "X") {
_local8 = Number(_local14).toString(16).toUpperCase();
}
}
if (_local8 == null) {
_local8 = _local14.toString();
}
if (_local8 == null) {
_local8 = "";
}
var _local11 = _local10 - _local8.length;
if ((!_local13) && (_local11 > 0)) {
_local15 = _local15 + repeat(" ", _local11);
}
_local15 = _local15 + _local8;
if (_local13 && (_local11 > 0)) {
_local15 = _local15 + repeat(" ", _local11);
}
}
return(_local15);
}
static function formatFromArgs(inFormat, inArguments, inSkip) {
if (inArguments.length == 0) {
return(format(inFormat));
}
if (inSkip == undefined) {
inSkip = 0;
}
var _local3 = [];
var _local1 = inSkip;
while (_local1 < inArguments.length) {
_local3.push(inArguments[_local1]);
_local1++;
}
return(formatFromArray(inFormat, _local3));
}
static function PadStart(inString, inChar, inLength) {
return(makePadded(inString, inChar, inLength) + inString);
}
static function PadEnd(inString, inChar, inLength) {
return(inString + makePadded(inString, inChar, inLength));
}
static function SecondsToFormattedTime(inSeconds) {
var _local1 = inSeconds;
var _local3 = Number(Math.floor(_local1 / 60)).toString();
_local1 = _local1 % 60;
var _local2 = _local1.toString();
if (_local2.length == 1) {
_local2 = "0" + _local2;
}
return((_local3 + ":") + _local2);
}
static function GetDate() {
var _local1 = new Date();
return(((_local1.getMonth() + 1).toString() + "/") + _local1.getDate().toString());
}
static function makePadded(inString, inChar, inLength) {
var _local2 = "";
var _local1 = inString.length;
while (_local1 < inLength) {
_local2 = _local2 + inChar;
_local1++;
}
return(_local2);
}
static function Trim(inString) {
var _local1 = 0;
var _local3;
while ((_local1 < inString.length) && ((((inString.charAt(_local1) == " ") || (inString.charAt(_local1) == newline)) || (inString.charAt(_local1) == "\r")) || (inString.charAt(_local1) == "\t"))) {
_local1++;
}
_local3 = inString.substr(_local1);
if (_local3.length) {
_local1 = _local3.length - 1;
while ((_local1 > -1) && ((((_local3.charAt(_local1) == " ") || (_local3.charAt(_local1) == newline)) || (_local3.charAt(_local1) == "\r")) || (_local3.charAt(_local1) == "\t"))) {
_local1--;
}
_local3 = _local3.substr(0, _local1 + 1);
}
return(_local3);
}
static function getSubstrCount(inSubstring, inContainerString) {
if ((inSubstring == undefined) || (inContainerString == undefined)) {
return(0);
}
var _local3 = 0;
var _local1 = inContainerString.indexOf(inSubstring);
while (_local1 != -1) {
_local3++;
_local1 = inContainerString.indexOf(inSubstring, _local1 + inSubstring.length);
}
return(_local3);
}
static function Tokenize(inText, inSep, inIgnore) {
var _local14 = new Array();
var _local10 = "";
var _local9 = 0;
var _local12 = inText.length;
while (_local9 < _local12) {
var _local4 = inText.charAt(_local9);
var _local3 = false;
var _local2 = 0;
var _local7 = inSep.length;
while ((!_local3) && (_local2 < _local7)) {
if (_local4 == inSep[_local2]) {
_local3 = true;
}
_local2++;
}
var _local5 = false;
if ((inIgnore != undefined) && (!_local3)) {
var _local1 = 0;
var _local6 = inIgnore.length;
while ((!_local5) && (_local1 < _local6)) {
if (_local4 == inIgnore[_local1]) {
_local5 = true;
}
_local1++;
}
}
if (_local3) {
if (_local10 != "") {
_local14.push(_local10);
_local10 = "";
}
} else if (_local5) {
} else {
_local10 = _local10 + _local4;
}
_local9++;
}
if (_local10 != "") {
_local14.push(_local10);
}
return(_local14);
}
}
Symbol 18 MovieClip [__Packages.mx.utils.Delegate] Frame 0
class mx.utils.Delegate extends Object
{
var func;
function Delegate (f) {
super();
func = f;
}
static function create(obj, func) {
var _local2 = function () {
var _local2 = arguments.callee.target;
var _local3 = arguments.callee.func;
return(_local3.apply(_local2, arguments));
};
_local2.target = obj;
_local2.func = func;
return(_local2);
}
function createDelegate(obj) {
return(create(obj, func));
}
}
Symbol 19 MovieClip [__Packages.Core.CTween] Frame 0
class Core.CTween
{
var m_RegIndex, m_Obj, m_Prop, m_CurrentFrame, m_Func, m_Begin, m_delay, m_origDelay, m_Looping, m_LoopNoDelay, m_updateInterval, m_CompleteEvent, m_IsPlaying, m_time, m_startTime, m_duration, onMotionFinished, m_position, onMotionChanged, m_Change;
function CTween (i_obj, i_prop, i_func, i_begin, i_finish, i_duration, i_useSeconds, i_delay, i_updateInterval) {
if (i_obj == null) {
trace((((((("!!! CTween(): i_obj null in constructor " + i_prop) + ",") + i_begin) + "/") + i_finish) + "/") + i_duration);
return;
}
m_RegIndex = null;
m_Obj = i_obj;
m_Prop = i_prop;
m_CurrentFrame = (m_Prop == "_currentframe") && (MovieClip(i_obj) != null);
if (i_func == null) {
if (m_CurrentFrame) {
m_Func = DefaultMcTween;
} else if (((((i_prop == "_x") || (i_prop == "_y")) || (i_prop == "_xscale")) || (i_prop == "_yscale")) || (i_prop == "_alpha")) {
m_Func = DefaultRoundTween;
} else {
m_Func = DefaultTween;
}
} else {
m_Func = i_func;
}
m_Begin = i_begin;
SetPosition(i_begin);
if ((i_duration == null) || (i_duration <= 0)) {
i_duration = 0.01;
}
SetDuration(i_duration);
m_delay = ((i_delay != undefined) ? (i_delay) : 0);
m_origDelay = m_delay;
m_Looping = false;
m_LoopNoDelay = false;
m_updateInterval = ((i_updateInterval != null) ? (i_updateInterval) : (s_Interval));
m_CompleteEvent = new Oberon.CEvent(this);
SetFinish(i_finish);
Start();
}
static function QuickInstall() {
Reset();
var newMc = _root.createEmptyMovieClip("CTweenFrameManager", _root.getNextHighestDepth());
newMc.oldTime = getTimer();
newMc.onEnterFrame = function () {
var _local1 = getTimer();
var _local2 = (_local1 - newMc.oldTime) / 1000;
newMc.oldTime = _local1;
Core.CTween.UpdateAll(_local2);
};
}
static function ToStringAll() {
if (m_regTweenCount > 0) {
var _local2 = ("Active Tweens (" + m_regTweenCount) + "):\n";
var _local1 = 0;
while (_local1 < m_regTweenCount) {
_local2 = _local2 + Core.CTween(m_regTweens[_local1]).ToString();
_local1++;
}
return(_local2 + newline);
}
return("");
}
static function DefaultTween(t, b, c, d) {
return(((c * t) / d) + b);
}
static function DefaultMcTween(t, b, c, d) {
return(int(((c * t) / d) + b));
}
static function DefaultRoundTween(t, b, c, d) {
return(s_roundFunc(((c * t) / d) + b));
}
static function UpdateAll(i_deltaT) {
var _local1 = 0;
while (_local1 < m_regTweenCount) {
var _local2 = Core.CTween(m_regTweens[_local1]);
_local2.Update(i_deltaT);
_local1++;
}
}
static function register(i_tween) {
i_tween.m_RegIndex = m_regTweenCount;
if (m_regTweens.length > m_regTweenCount) {
m_regTweens[m_regTweenCount] = i_tween;
m_regTweenCount++;
} else {
m_regTweens.push(i_tween);
m_regTweenCount++;
}
}
static function unregister(i_tween) {
var _local1 = i_tween.m_RegIndex;
if (_local1 != null) {
m_regTweenCount--;
if (m_regTweenCount > 0) {
m_regTweens[_local1] = m_regTweens[m_regTweenCount];
Core.CTween(m_regTweens[_local1]).m_RegIndex = _local1;
m_regTweens[m_regTweenCount] = null;
} else {
m_regTweens[_local1] = null;
}
i_tween.m_RegIndex = null;
return(true);
}
return(false);
}
static function GetCount() {
return(m_regTweenCount);
}
static function Reset() {
if (m_regTweens == null) {
m_regTweens = new Array(m_initTweenPoolSize);
} else {
KillRegTweens();
}
if (m_frozenTweens == null) {
m_frozenTweens = new Array(m_initTweenPoolSize);
} else {
KillFrozenTweens();
}
m_regTweenCount = 0;
m_lastTweenId = 0;
}
static function KillFrozenTweens() {
var _local1 = 0;
while (_local1 < m_frozenTweenCount) {
var _local2 = Core.CTween(m_frozenTweens[_local1]);
_local2.m_IsPlaying = false;
_local2.m_RegIndex = null;
_local1++;
}
m_frozenTweenCount = 0;
}
static function Freeze() {
if (m_regTweenCount > 0) {
if (m_frozenTweenCount == 0) {
m_frozenTweenCount = m_regTweenCount;
var _local3 = m_frozenTweens;
m_frozenTweens = m_regTweens;
m_regTweenCount = 0;
m_regTweens = _local3;
} else {
var _local2 = 0;
while (_local2 < m_regTweenCount) {
var _local1 = Core.CTween(m_regTweens[_local2]);
_local1.m_RegIndex = m_frozenTweenCount;
if (m_frozenTweenCount >= m_frozenTweens.length) {
m_frozenTweens.push(_local1);
} else {
m_frozenTweens[m_frozenTweenCount] = _local1;
}
m_frozenTweenCount++;
_local2++;
}
m_regTweenCount = 0;
}
}
}
static function Unfreeze(i_noMerge) {
if (m_frozenTweenCount > 0) {
if (i_noMerge && (m_regTweenCount > 0)) {
KillRegTweens();
}
if (m_regTweenCount == 0) {
m_regTweenCount = m_frozenTweenCount;
var _local3 = m_regTweens;
m_regTweens = m_frozenTweens;
m_frozenTweens = _local3;
} else {
var _local2 = 0;
while (_local2 < m_frozenTweenCount) {
var _local1 = Core.CTween(m_frozenTweens[_local2]);
_local1.m_RegIndex = m_regTweenCount;
if (m_regTweenCount >= m_regTweens.length) {
m_regTweens.push(_local1);
} else {
m_regTweens[m_regTweenCount] = _local1;
}
m_regTweenCount++;
_local2++;
}
}
m_frozenTweenCount = 0;
}
}
static function KillRegTweens() {
var _local1 = 0;
while (_local1 < m_regTweenCount) {
var _local2 = Core.CTween(m_regTweens[_local1]);
_local2.m_IsPlaying = false;
_local2.m_RegIndex = null;
_local1++;
}
m_regTweenCount = 0;
}
function Update(i_deltaT) {
if (!m_IsPlaying) {
return(undefined);
}
SetTime(m_time + i_deltaT);
}
function SetTime(in_t) {
if (m_delay > 0) {
if (m_delay >= in_t) {
m_startTime = m_startTime + (in_t * 1000);
m_delay = m_delay - in_t;
return(undefined);
}
in_t = in_t - m_delay;
m_delay = 0;
}
if (in_t >= m_duration) {
if (m_Looping) {
if (m_LoopNoDelay) {
Rewind((in_t - m_duration) + m_delay);
} else {
Rewind(in_t - m_duration);
}
updatePos();
} else {
m_time = m_duration;
updatePos();
StopUpdates();
if (onMotionFinished != null) {
onMotionFinished(this);
}
m_CompleteEvent.Fire();
}
} else if (in_t < 0) {
Rewind();
updatePos();
} else {
m_time = in_t;
updatePos();
}
}
function GetTime() {
return(m_time);
}
function Scale(i_factor) {
var _local2 = GetPercentComplete();
m_duration = m_duration * i_factor;
m_time = (m_duration * _local2) / 100;
}
function SetDuration(d) {
m_duration = (((d == null) || (d <= 0)) ? (_global.Infinity) : (d));
}
function GetDuration() {
return(m_duration);
}
function GetPercentComplete() {
return(((m_time + m_delay) / (m_duration + m_origDelay)) * 100);
}
function SetPosition(i_pos) {
m_position = i_pos;
if (m_CurrentFrame) {
MovieClip(m_Obj).gotoAndStop(m_position);
} else {
m_Obj[m_Prop] = m_position;
}
if (onMotionChanged != null) {
onMotionChanged(this, m_position);
}
}
function GetPosition(i_time) {
if (i_time == undefined) {
i_time = m_time;
}
if (i_time > m_duration) {
return(m_Begin + m_Change);
}
return(m_Func(i_time, m_Begin, m_Change, m_duration));
}
function SetFinish(i_val) {
m_Change = i_val - m_Begin;
}
function GetFinish() {
return(m_Begin + m_Change);
}
function Finish() {
SetTime(m_duration + m_delay);
}
function continueTo(i_finish, i_duration) {
m_Begin = m_position;
SetFinish(i_finish);
if (i_duration != undefined) {
SetDuration(i_duration);
}
Start();
}
function SetDelay(i_delay, i_setOrig) {
m_delay = i_delay;
if (i_setOrig) {
m_origDelay = i_delay;
}
}
function yoyo() {
continueTo(m_Begin, m_time);
}
function Start() {
Rewind();
m_IsPlaying = true;
if (m_RegIndex == null) {
register(this);
}
}
function StopUpdates() {
m_IsPlaying = false;
if (m_RegIndex != null) {
unregister(this);
}
}
function Resume() {
fixTime();
m_IsPlaying = true;
if (m_RegIndex == null) {
register(this);
}
}
function Rewind(in_time) {
m_time = ((in_time == undefined) ? 0 : (in_time));
fixTime();
updatePos();
if (m_RegIndex == null) {
register(this);
}
}
function FForward() {
SetTime(m_duration + m_delay);
fixTime();
if (m_RegIndex == null) {
register(this);
}
}
function MoveToPrevFrame() {
if (m_RegIndex == null) {
register(this);
}
}
function ToString() {
return((((((((((((((("Core.CTween: " + String(m_Obj)) + newline) + " Prop:Pos/Tot,Time/Dur,Pct: ") + m_Prop) + ":") + m_position) + "/") + GetFinish()) + ",") + m_time) + "/") + m_duration) + ",") + GetPercentComplete()) + newline);
}
function fixTime() {
m_startTime = getTimer() - (m_time * 1000);
}
function updatePos() {
SetPosition(GetPosition(m_time));
}
static var s_Interval = 2;
static var m_regTweenCount = 0;
static var m_regTweens = null;
static var m_frozenTweens = null;
static var m_frozenTweenCount = null;
static var m_initTweenPoolSize = 250;
static var m_lastTweenId = 0;
static var s_roundFunc = Math.round;
}
Symbol 20 MovieClip [__Packages.Oberon.CEvent] Frame 0
class Oberon.CEvent
{
var _lastId, _behaviors, _behaviorsTerm, _behaviorsArg, _context, _remove, _consume, _firing, _behaviorsId;
function CEvent (inContext) {
_lastId = 0;
_behaviors = new Array();
_behaviorsTerm = new Array();
_behaviorsArg = new Array();
_context = inContext;
_remove = false;
_consume = false;
_firing = false;
}
function PushBehavior(inFunc, inRunOnce) {
return(PushBehaviorWithArg(inFunc, null, inRunOnce));
}
function PushBehaviorRunOnce(inFunc) {
return(PushBehaviorWithArg(inFunc, null, true));
}
function PushBehaviorWithArg(inFunc, inArg, inRunOnce) {
_behaviors.push(inFunc);
_behaviorsTerm.push(((inRunOnce != undefined) ? (inRunOnce) : false));
_behaviorsArg.push(inArg);
_behaviorsId.push(_lastId++);
return(_lastId - 1);
}
function PushBehaviorWithArgRunOnce(inFunc, inArg) {
return(PushBehaviorWithArg(inFunc, inArg, true));
}
function InsertBehavior(inFunc, inRunOnce) {
return(InsertBehaviorWithArg(inFunc, null, inRunOnce));
}
function InsertBehaviorWithArg(inFunc, inArg, inRunOnce) {
var _local4 = new Array(_behaviors.length + 1);
_local4[0] = inFunc;
var _local7 = new Array(_behaviorsTerm.length + 1);
_local7[0] = inRunOnce;
var _local6 = new Array(_behaviorsArg.length + 1);
_local6[0] = inArg;
var _local5 = new Array(_behaviorsId.length + 1);
_local5[0] = _lastId++;
var _local2 = 1;
var _local3 = _local4.length;
while (_local2 < _local3) {
_local4[_local2] = _behaviors[_local2];
_local7[_local2] = _behaviorsTerm[_local2];
_local6[_local2] = _behaviorsArg[_local2];
_local5[_local2] = _behaviorsId[_local2];
_local2++;
}
_behaviors = _local4;
_behaviorsTerm = _local7;
_behaviorsArg = _local6;
_behaviorsId = _local5;
return(_lastId - 1);
}
function RemoveBehaviorByFunc(inFunc) {
var _local4 = false;
var _local2 = 0;
var _local3 = _behaviors.length;
while ((!_local4) && (_local2 < _local3)) {
if (_behaviors[_local2] == inFunc) {
_behaviors.splice(_local2, 1);
_behaviorsTerm.splice(_local2, 1);
_behaviorsArg.splice(_local2, 1);
_behaviorsId.splice(_local2, 1);
_local4 = true;
}
_local2++;
}
return(_local4);
}
function RemoveBehaviorById(inId) {
var _local4 = false;
var _local2 = 0;
var _local3 = _behaviors.length;
while ((!_local4) && (_local2 < _local3)) {
if (_behaviorsId[_local2] == inId) {
_behaviors.splice(_local2, 1);
_behaviorsTerm.splice(_local2, 1);
_behaviorsArg.splice(_local2, 1);
_behaviorsId.splice(_local2, 1);
_local4 = true;
}
_local2++;
}
return(_local4);
}
function ConsumeCurrentFire() {
if (!_firing) {
trace("!!! Trying to consume current when not running");
} else {
_consume = true;
}
}
function RemoveCurrentBehavior() {
if (!_firing) {
trace("!!! Trying to remove current when not running");
} else {
_remove = true;
}
}
function Fire() {
var _local4 = _behaviors.length;
var _local3 = false;
_firing = true;
_remove = false;
_consume = false;
var _local2 = 0;
while ((!_local3) && (_local2 < _local4)) {
var _local5 = false;
var _local6 = false;
if (_behaviorsArg[_local2] != null) {
Function(_behaviors[_local2])(_context, _behaviorsArg[_local2], this, _behaviorsId[_local2]);
} else {
Function(_behaviors[_local2])(_context, this, _behaviorsId[_local2]);
}
_local3 = _consume;
if (_remove || (_behaviorsTerm[_local2])) {
_behaviors.splice(_local2, 1);
_behaviorsTerm.splice(_local2, 1);
_behaviorsArg.splice(_local2, 1);
_behaviorsId.splice(_local2, 1);
_local4--;
} else {
_local2++;
}
}
_firing = false;
_remove = false;
_consume = false;
}
}
Symbol 21 MovieClip [__Packages.CustomTweens.Bounce] Frame 0
class CustomTweens.Bounce
{
function Bounce () {
}
static function SingleBounce(t, b, c, d) {
return(round((c * sin((t / d) * 3.14)) + b));
}
static function DelayedSingleBounce(t, b, c, d) {
if (t > l) {
return(round((c * sin(((t - l) / (d - l)) * 3.14)) + b));
}
}
static function DoubleBounce(t, b, c, d) {
if ((t / d) < e) {
return(round((c * Math.sin((t / (d * e)) * 3.14)) + b));
}
return(round(((s * c) * sin(((t - (d * e)) / (d * (1 - e))) * 3.14)) + b));
}
static function BounceToQueueEaseInLong(t, b, c, d) {
t = d - t;
t = t / d;
if (t < 0.36) {
return(round((c - (((c * 7.56) * t) * t)) + b));
}
if (t < 0.73) {
t = t - 0.54;
return(round((c - (c * (((7.56 * t) * t) + 0.75))) + b));
}
if (t < 0.91) {
t = t - 0.82;
return(round((c - (c * (((7.56 * t) * t) + 0.94))) + b));
}
t = t - 0.95;
return(round((c - (c * (((7.56 * t) * t) + 0.98))) + b));
}
static var e = 0.6;
static var s = 0.4;
static var l = 0.05;
static var sin = Math.sin;
static var round = Math.round;
}
Symbol 22 MovieClip [__Packages.CDialog] Frame 0
class CDialog extends MovieClip
{
var Name, BackVisible, BackEnabled, BackAlpha, Transition, m_components, m_unloadedComponentCount, m_hasFocus, CloseEvent, enabled, m_enabled, onMouseMove;
function CDialog () {
super();
Name = "<unknown>";
BackVisible = true;
BackEnabled = true;
BackAlpha = 100;
Transition = Transition_None;
m_components = new Object();
m_unloadedComponentCount = 0;
m_hasFocus = false;
CloseEvent = new Oberon.CEvent(this);
}
function OnLoadingComponent(i_comp) {
m_unloadedComponentCount++;
return(true);
}
function GetComponent(i_name) {
CDebug.Assert(m_components[i_name] != undefined, "CDialog", "Couldn't find UI component " + i_name);
return(m_components[i_name]);
}
function onRegister(i_obj) {
m_components[i_obj.Name] = i_obj;
m_unloadedComponentCount--;
if (m_unloadedComponentCount == 0) {
OnAllComponentsLoaded();
}
return(true);
}
function onClick(i_obj) {
return(true);
}
function Close(i_immediate) {
Core.DialogUtil.Close(this);
CloseEvent.Fire();
}
function SetEnabled(i_val) {
enabled = i_val;
m_enabled = i_val;
}
function OnTransitionToComplete() {
}
function OnTransitionFromComplete() {
}
function OnFocus() {
m_hasFocus = true;
}
function OnLoseFocus() {
m_hasFocus = false;
}
function OnFirstFocus() {
}
function OnSpaceDown() {
DoDefaultOkAction();
}
function OnEnterDown() {
DoDefaultOkAction();
}
function OnControlDown() {
}
function OnBackSpaceDown() {
DoDefaultCancelAction();
}
function OnEscDown() {
DoDefaultCancelAction();
}
function DoDefaultOkAction() {
Close();
}
function DoDefaultCancelAction() {
Close();
}
function OnFreeze() {
}
function OnUnfreeze() {
}
function OnKeyDown(i_key) {
}
function OnMouseDown() {
}
function OnAllComponentsLoaded() {
var _local5 = false;
for (var _local6 in m_components) {
var _local3 = Core.CUIComponent(m_components[_local6]);
if ((_local3 != null) && (Core.CTip(_local3) != null)) {
var _local2 = Core.CTip(_local3);
CDebug.Assert(_local2.AttachToName != null, "CDialog.OnAllComponentsLoaded()", "AttachToName is null in tip " + _local6);
var _local4 = Core.CTipTarget(GetComponent(_local2.AttachToName));
CDebug.Assert(_local4 != null, "CDialog.OnAllComponentsLoaded()", "AttachToName comp is null in tip " + _local2);
_local2.AttachTo(_local4);
} else if (Core.CTipTarget(_local3) != null) {
_local5 = true;
}
}
if (_local5) {
onMouseMove = onMouseMoveFunc;
}
RefreshLocalization();
}
function RefreshLocalization(i_force) {
var _local2 = CGame.Localizer.LocMc(this, i_force);
CDebug.WriteLine("CDialog.RefreshLocalization()", ("Localized " + _local2) + " strings");
}
function HideAllTips() {
for (var _local3 in m_components) {
var _local2 = Core.CUIComponent(m_components[_local3]);
if ((_local2 != null) && (Core.CTip(_local2) != null)) {
Core.CTip(_local2).Hide();
}
}
}
function onMouseMoveFunc() {
if (!m_hasFocus) {
return(undefined);
}
var _local4 = new CCoord(_root._xmouse, _root._ymouse);
for (var _local5 in m_components) {
var _local3 = Core.CTipTarget(m_components[_local5]);
if (_local3 != null) {
_local3.TryHit(_local4);
}
}
}
static var s_TransFadeInTime = 0.5;
static var Transition_None = 0;
static var Transition_Alpha = 1;
}
Symbol 23 MovieClip [__Packages.Core.CUIComponent] Frame 0
class Core.CUIComponent extends MovieClip
{
var _parent;
function CUIComponent () {
super();
var _local3 = ((OnLoadingComponent(this) || (Object(_parent).OnLoadingComponent(this))) || (Object(_parent)._parent.OnLoadingComponent(this))) || (Object(_parent)._parent._parent.OnLoadingComponent(this));
}
function get Name() {
return(m_name);
}
function set Name(inVal) {
m_name = inVal;
//return(Name);
}
function onLoad() {
var _local2 = ((onRegister(this) || (Object(_parent).onRegister(this))) || (Object(_parent)._parent.onRegister(this))) || (Object(_parent)._parent._parent.onRegister(this));
}
function onRegister() {
}
function OnLoadingComponent() {
}
var m_name = "";
}
Symbol 24 MovieClip [__Packages.CDebug] Frame 0
class CDebug
{
function CDebug () {
}
static function Assert(inBool, inSource, inMessage, inForceCrash) {
if (!inBool) {
var _local1 = (("!!! ASSERT " + String(inSource)) + ": ") + inMessage;
writeLog(_local1, true);
if (inForceCrash) {
MsgBox("Crash Assertion!\n\n" + inMessage);
Crash();
}
}
}
static function AssertWarn(inBool, inSource, inMessage) {
if (!inBool) {
var _local1 = (("*** WARN " + inSource) + ": ") + inMessage;
writeLog(_local1);
}
}
static function WriteErr(inSource, inMessage) {
var _local1 = (("!!! ERROR " + inSource) + ": ") + inMessage;
writeLog(_local1);
}
static function WriteLine(inSource, inMessage) {
writeLog((("*** " + inSource) + ": ") + inMessage);
}
static function getDbgPanelPrefix() {
var _local1 = CGame.GetUpTime();
return((((Math.floor(_local1 / 60) + ":") + (_local1 % 60)) + " ") + Level.GetCurrentLevelName());
}
static function writeLog(i_msg, i_alwaysWrite) {
if (((DbgLogFilter == null) || (i_alwaysWrite)) || (i_msg.indexOf(DbgLogFilter) != -1)) {
trace(i_msg);
}
}
static function WriteBreak() {
writeLog("-----------------------------------------------------------------------------------");
}
static function RunFuncCall(funcCall) {
WriteBreak();
WriteLine("CDebug", "RunFuncCall call : " + funcCall);
if (funcCall.indexOf("=") != -1) {
var args = funcCall.split("=");
Set(arg[0], arg[1]);
return(undefined);
}
var argStartIndex = (funcCall.indexOf("(") + 1);
var func = funcCall.slice(0, argStartIndex - 1);
var scope = eval (func.slice(0, func.lastIndexOf(".")));
if (scope == undefined) {
scope = "";
}
var args = new Array();
var argString = Oberon.StringX.Trim(funcCall.slice(argStartIndex, funcCall.lastIndexOf(")")));
if (argString.length > 0) {
args = argString.split(",");
}
var i = 0;
while (i < args.length) {
var evalArg;
var arg = args[i];
if (arg.indexOf("(") > -1) {
evalArg = RunFuncCall(arg);
} else {
evalArg = eval (args[i]);
}
if (evalArg != undefined) {
args[i] = evalArg;
} else if (args[i].indexOf("\"") > -1) {
args[i] = Oberon.StringX.replace("\"", args[i], "");
} else {
args[i] = parseInt(args[i]);
}
i++;
}
var evalFunc = eval (func);
Assert(evalFunc != null, _root, "RunFuncCall received an unknown function: " + func);
WriteBreak();
return(evalFunc.apply(scope, args));
}
static function AttrToArray(inObj) {
var _local1 = new Array();
for (var _local3 in inObj) {
_local1.push(_local3);
}
return(_local1);
}
static function MsgBox(inMessage) {
var _local6 = 400;
var _local8 = 150;
var _local9 = Oberon.MovieClipX.getNextHighestDepth(_root);
var _local12 = {_x:-(_local6 / 2), _y:-(_local8 / 2), _width:_local6, _height:_local8};
var _local5 = _root.createEmptyMovieClip("MsgBox" + _local9, _local9);
var _local13 = Oberon.MovieClipX.getNextHighestDepth(_local5);
var _local3 = _local5.createEmptyMovieClip("MsgBoxBack" + _local9, _local9, _local12);
_local3.useHandCursor = true;
_local3.lineStyle(1, 0, 100);
_local3.beginFill(12303359, 100);
_local3.moveTo(0, 0);
_local3.lineTo(_local6, 0);
_local3.lineTo(_local6, _local8);
_local3.lineTo(0, _local8);
_local3.lineTo(0, 0);
_local3.endFill();
var _local10 = Oberon.MovieClipX.getNextHighestDepth(_local3);
_local3.createTextField("MsgBoxText" + _local10, _local10, 10, 20, _local6 - 20, _local8 - 30);
var _local7 = TextField(_local3["MsgBoxText" + _local10]);
_local7.text = inMessage;
_local7.border = true;
_local7.background = true;
_local7.backgroundColor = 16777215 /* 0xFFFFFF */;
_local7.selectable = true;
var _local11 = Oberon.MovieClipX.getNextHighestDepth(_local5);
var _local4 = _local5.createEmptyMovieClip("MsgBox" + _local11, _local11);
_local4._x = _local6 - 15;
_local4._y = 5;
_local4.lineStyle(1, 0, 100);
_local4.beginFill(16777215, 100);
_local4.moveTo(0, 0);
_local4.lineTo(10, 0);
_local4.lineTo(10, 10);
_local4.lineTo(0, 10);
_local4.lineTo(0, 0);
Object(_local4).Container = _local5;
Object(_local3).Container = _local5;
_local4.onRelease = function () {
Object(this).Container.removeMovieClip();
};
_local3.onPress = function () {
Object(this).Container.startDrag(false);
};
_local3.onRelease = function () {
Object(this).Container.stopDrag();
};
}
static function PrintAttr(inObj, inIncludeFuncs) {
WriteLine(_root, "Outputing object contents " + inObj);
WriteBreak();
for (var _local4 in inObj) {
if (inIncludeFuncs || (typeof(inObj[_local4]) != "function")) {
WriteLine(_root, (_local4 + ":") + inObj[_local4]);
}
}
WriteBreak();
}
static function Crash() {
Crash();
}
static function DrawTextOnMovie(inMovieClip, inText, inFadeAfterSec, inFontSize) {
var _local1 = Oberon.MovieClipX.getNextHighestDepth(inMovieClip);
var textMovieClip = inMovieClip.createEmptyMovieClip("DebugMovieClip" + _local1, _local1);
var _local3 = CreateDbgTextField(textMovieClip, "DebugMovieClipText", inText);
if (inFadeAfterSec != undefined) {
textMovieClip.startTime = new Date().getTime();
textMovieClip.onEnterFrame = function () {
if ((new Date().getTime() - textMovieClip.startTime) > (inFadeAfterSec * 1000)) {
textMovieClip._alpha = textMovieClip._alpha - 5;
}
if (textMovieClip._alpha <= 0) {
textMovieClip.removeMovieClip();
textMovieClip.onEnterFrame = null;
}
};
}
return(textMovieClip);
}
static function CreateDbgTextField(inParentMc, inName, inInitialText, inFontSize) {
var _local3 = inParentMc.getNextHighestDepth();
inParentMc.createTextField(((inName == null) ? ("DBGTXT" + _local3) : (inName)), _local3, 0, 0, 0, 0);
var _local1 = TextField(inParentMc[inName]);
var _local2 = new TextFormat();
if (inFontSize == undefined) {
_local2.size = DbgTextFontSize;
} else {
_local2.size = inFontSize;
}
_local2.bold = true;
_local2.font = DbgTextFont;
_local2.align = "center";
_local1.setTextFormat(_local2);
_local1.border = false;
if (DbgTextBackColor == null) {
_local1.background = false;
} else {
_local1.background = true;
_local1.backgroundColor = DbgTextBackColor;
}
_local1.embedFonts = false;
_local1.textColor = DbgTextColor;
_local1.text = inInitialText;
_local1.autoSize = true;
return(_local1);
}
static function SetPropertyRecursive(inClip, inProp, inVal, inTraceElem) {
RunFuncRecursive(inClip, function (inClip) {
if (inClip[inProp] != undefined) {
inClip[inProp] = inVal;
}
}, inTraceElem);
}
static function RunFuncRecursive(inClip, inFunc, inTraceElem) {
for (var _local4 in inClip) {
if (MovieClip(inClip[_local4]) != null) {
if (String(inClip[_local4]).length > String(inClip).length) {
if (inTraceElem) {
trace((String(inClip) + ":") + String(inClip[_local4]));
}
RunFuncRecursive(MovieClip(inClip[_local4]), inFunc, inTraceElem);
}
}
}
inFunc(inClip);
}
static function FindScaling(i_clip) {
RunFuncRecursive(i_clip, function (i_innerClip) {
if (!i_innerClip._visible) {
return(undefined);
}
var _local4 = "";
if ((i_innerClip._xscale != 100) || (i_innerClip._yscale != 100)) {
_local4 = _local4 + (((((" !!! " + String(i_innerClip)) + " scaled to ") + i_innerClip._xscale) + "/") + i_innerClip._yscale);
var _local2 = false;
var _local1 = i_innerClip;
while ((_local1 != null) && (!_local2)) {
if (_local1.cacheAsBitmap) {
_local2 = true;
}
_local1 = MovieClip(_local1._parent);
}
if (!_local2) {
_local4 = _local4 + " ** NOT CACHED **";
}
trace(_local4);
}
}, false);
}
static function RoundScaling(i_clip) {
RunFuncRecursive(i_clip, function (i_innerClip) {
i_innerClip._xscale = Oberon.MathX.roundTo(i_innerClip._xscale, 1);
i_innerClip._yscale = Oberon.MathX.roundTo(i_innerClip._yscale, 1);
}, false);
}
static function TraceTimeIntervalLastCall(i_traceStatement, i_minSec) {
var _local1 = new Date();
if (m_lastTime == null) {
trace("START: " + i_traceStatement);
} else {
var _local2 = (_local1.getTime() - m_lastTime.getTime()) / 1000;
if ((i_minSec == undefined) || (_local2 > i_minSec)) {
trace((_local2 + " : ") + i_traceStatement);
}
}
m_lastTime = _local1;
}
static function StartProfile(i_objs) {
WriteLine("CDebug.StartProfile()", "START PROFILE");
var _local2 = 0;
while (_local2 < i_objs.length) {
var _local3 = String(i_objs[_local2]);
_global.ASProf.profile(_local3);
_global.ASProf.profileObject(_local3 + ".prototype");
_local2++;
}
_global.ASProf.begin("__DebugProfile__");
}
static function EndProfile() {
_global.ASProf.end();
var _local2 = _global.ASProf.getFlatGraph();
WriteLine("CDebug.StartProfile()", "END PROFILE:\n\n" + _local2);
return(_local2);
}
static var DbgTextFont = "Verdana";
static var DbgTextColor = 16777215;
static var DbgTextBackColor = 0;
static var DbgTextFontSize = 14;
static var DbgLogFilter = null;
static var m_lastTime = null;
}
Symbol 25 MovieClip [__Packages.Level] Frame 0
class Level
{
static var m_NeighborGrid, m_BoardRows, m_BoardColumns, m_BoardLevel, m_EvenBoard, m_BoardSpaces, m_SnoodWidth, m_SnoodHeight, m_comboPieces, m_comboCoords, m_VisitedGrid, m_majorTraceCount, m_minorTraceCount, m_BoardLoser, m_LosePieces, m_LoseLevel;
function Level () {
}
static function BuildNeighborList() {
var _local17 = CGame.Board.IsRound();
m_NeighborGrid = new Array(m_BoardRows, m_BoardColumns);
CGame.TileSet.NeighborTiles = m_NeighborGrid;
var _local7 = 0;
while (_local7 < m_BoardRows) {
var _local8 = 0;
while (_local8 < m_BoardColumns) {
var _local14 = new Array();
var _local1 = [_local8 + (1 - (((_local7 - 1) % 2) * 2)), _local8, _local8 - 1, _local8 + 1, _local8 + (1 - (((_local7 + 1) % 2) * 2)), _local8];
var _local3 = [_local7 - 1, _local7 - 1, _local7, _local7, _local7 + 1, _local7 + 1];
var _local6 = 0;
while (_local6 < _local1.length) {
var _local13 = _local1[_local6];
var _local12 = _local3[_local6];
if ((((_local13 < 0) || (_local13 >= m_BoardColumns)) || (_local12 < 0)) || (_local12 >= m_BoardRows)) {
_local1.splice(_local6, 1);
_local3.splice(_local6, 1);
continue;
}
_local6++;
}
if (_local17) {
var _local9 = Math.floor(m_BoardColumns / 2);
var _local4 = 0;
while (_local4 < _local1.length) {
var _local5 = -1;
var _local11 = 99999 /* 0x01869F */;
var _local2 = _local4;
while (_local2 < _local1.length) {
var _local10 = ((_local9 - _local1[_local2]) * (_local9 - _local1[_local2])) + ((_local9 - _local3[_local2]) * (_local9 - _local3[_local2]));
if (_local10 < _local11) {
_local5 = _local2;
_local11 = _local10;
}
_local2++;
}
if (_local5 == -1) {
trace("!!!BAD NEIGHBOR DATA!!!");
}
if (_local4 != _local5) {
var _local16 = _local1[_local4];
_local1[_local4] = _local1[_local5];
_local1[_local5] = _local16;
var _local15 = _local3[_local4];
_local3[_local4] = _local3[_local5];
_local3[_local5] = _local15;
}
_local4++;
}
}
_local14.push(_local1);
_local14.push(_local3);
m_NeighborGrid[(_local8 * m_BoardRows) + _local7] = _local14;
_local8++;
}
_local7++;
}
}
static function GetBoardModeForLevel(inLevelIdx) {
return(CLevelManifest.G.GetSet("Arcade").GetLevel(inLevelIdx).Mode);
}
static function GetCurrentLevelName() {
return(GetLevelName(GameState.__get__CurrentLevel()));
}
static function GetLevelName(i_levelId, i_levelSet) {
var _local2 = ((i_levelSet == undefined) ? (GameState.GetCurrentLevelSet()) : (i_levelSet));
return(CLevelManifest.G.GetSet(GameState.GetCurrentLevelSet()).GetLevelFullName(i_levelId));
}
static function SetJourneyModeBoardLocked(i_levelId, i_flag) {
CLevelManifest.G.GetSet(GameState.GetCurrentLevelSet()).GetLevel(i_levelId).Locked = i_flag;
}
static function isValidCicleLocation(x, y) {
var _local2 = Math.floor(m_BoardRows / 2);
var _local5 = ((m_BoardColumns == 19) ? 1 : 0);
var _local3 = y - _local2;
_local3 = ((_local3 < 0) ? (-_local3) : (_local3));
if (_local3 > ((_local2 - _local5) - (m_BoardLevel / 2))) {
return(false);
}
var _local6 = ((m_BoardColumns - 1) - Math.abs(_local2 - y)) - m_BoardLevel;
var _local4 = (-1 * (_local6 / 2)) + _local5;
var _local1 = (_local6 / 2) - _local5;
if (m_EvenBoard) {
_local4 = Math.floor(_local4);
_local1 = Math.floor(_local1);
} else {
_local4 = Math.ceil(_local4);
_local1 = Math.ceil(_local1);
}
if ((x < (_local4 + _local2)) || (x > (_local1 + _local2))) {
return(false);
}
return(true);
}
static function IsOccupied(inX, inY) {
if (m_BoardSpaces[(inX * m_BoardRows) + inY] != undefined) {
return(true);
}
return(false);
}
static function createSnood(inInitialSetup, inPlayer) {
var _local2 = CBoard.G.GetRandBorb(true);
var _local1 = _local2.Color;
return(cloneSnood(inInitialSetup, _local1, inPlayer));
}
static function cloneSnood(inInitialSetup, inColor, inPlayer) {
var _local1;
if ((!inInitialSetup) && (inPlayer != undefined)) {
_local1 = SnoodHead.GetAndRemoveFromPool(new CBorbInfo(inColor, Constants.PowerUp_None), CGame.TileSet.m_SnoodSize);
_local1._x = _local1._x + Math.floor(m_SnoodWidth / 2);
_local1._y = _local1._y + Math.floor(m_SnoodHeight / 2);
} else {
_local1 = SnoodHead.GetAndRemoveFromPool(new CBorbInfo(inColor, Constants.PowerUp_None), CGame.TileSet.m_SnoodSize, 0, 0);
}
_local1.SetSize(CGame.TileSet.m_SnoodSize);
_local1.SetColor(inColor);
if (_local1 == undefined) {
trace("BAD SNOOD CREATED!!!!");
}
return(_local1);
}
static function RemoveBorbFromCoord(i_coord) {
var _local2 = m_BoardSpaces[(i_coord.X * m_BoardRows) + i_coord.Y] != undefined;
if (_local2) {
var _local3 = SnoodHead(m_BoardSpaces[(i_coord.X * m_BoardRows) + i_coord.Y]);
CDebug.Assert(_local3 != null, "Level.DestroyAllSnoods()", (((("Unknown object found on board grid : " + i_coord.X) + ",") + i_coord.Y) + " : ") + CGame.TileSet.GetTile(i_coord.X, i_coord.Y));
SnoodHead.ReturnToPool(m_BoardSpaces[(i_coord.X * m_BoardRows) + i_coord.Y]);
}
return(_local2);
}
static function AddBorbToCoord(i_coord, i_borb, i_tween) {
addSnoodToSpot(i_coord.X, i_coord.Y, i_borb, i_tween);
}
static function addSnoodToSpot(x, y, inHead, inTween) {
var _local3 = inHead;
if (inHead == null) {
_local3 = createSnood(true);
}
_local3.MoveToCoord(CGame.TileSet.GetGridCoords(x, y), inTween);
if (m_BoardSpaces[(x * m_BoardRows) + y] != undefined) {
CDebug.WriteErr("Level.addSnoodToSpot()", (((("Location " + x) + ",") + y) + " already contains borb: ") + SnoodHead(m_BoardSpaces[(x * m_BoardRows) + y]).ToInfo().ToString());
SnoodHead(m_BoardSpaces[(x * m_BoardRows) + y]).RemoveFromBoard();
}
CGame.TileSet.SetTile(x, y, _local3);
}
static function GetRandomBorb(inHeadPool, inInclusive, inNoPowerups, inExcludeHeads) {
var _local1 = null;
var _local2 = 0;
var _local5 = inNoPowerups;
if (_local5 == null) {
_local5 = false;
}
var _local6 = false;
if (inExcludeHeads != null) {
_local6 = true;
}
var _local3;
var _local4;
while (_local2 < 5000) {
_local2++;
_local3 = Oberon.MathX.randRange(0, m_BoardRows);
_local4 = Oberon.MathX.randRange(0, m_BoardColumns);
_local1 = m_BoardSpaces[(_local4 * m_BoardRows) + _local3];
if (_local1 != null) {
if (inInclusive == Oberon.ArrayX.Contains(inHeadPool, _local1.__get__Color())) {
if (_local5) {
if (_local1.__get__PowerUp() != Constants.PowerUp_None) {
trace("borb has a powerup on it.");
continue;
}
}
if (_local6) {
if (Oberon.ArrayX.Contains(inExcludeHeads, _local1)) {
trace("borb is in exclude array.");
continue;
}
}
break;
}
}
}
CDebug.Assert(_local2 != 5000, "Level", "Couldn't find a random head in pool: " + inHeadPool.toString());
return(_local1);
}
static function fillBoard() {
var _local7 = null;
var _local6 = null;
if (Constants.IsBoardModeCircular(CBoard.G.m_CurLevelInfo.Mode)) {
_local7 = Math.floor(m_BoardColumns / 2);
_local6 = Math.floor(m_BoardRows / 2);
}
var _local4 = 0;
while (_local4 < CBoard.G.m_CurLevelInfo.TileInfos.length) {
var _local5 = CBoard.G.m_CurLevelInfo.TileInfos[_local4];
var _local2 = 0;
while (_local2 < _local5.length) {
var _local1 = CLevelTileInfo(_local5[_local2]);
if (!_local1.Empty) {
if (_local1.RandomColor) {
var _local3 = createSnood(true);
_local3.SetPowerUp(_local1.PowerUp);
_local3.m_NoHook = _local1.NoHook;
addSnoodToSpot(_local4, _local2, _local3, false);
} else {
var _local3 = createSnood(true);
_local3.SetColor(_local1.Color);
_local3.SetPowerUp(_local1.PowerUp);
_local3.m_NoHook = _local1.NoHook;
addSnoodToSpot(_local4, _local2, _local3, false);
}
}
_local2++;
}
_local4++;
}
}
static function countAllCombos(x, y, color) {
var _local18 = color;
var _local19 = color;
var _local9 = 0;
var _local22 = CGame.CurrentPlayer;
if (color == Constants.Snood_Wild) {
_local18 = 1;
_local19 = Constants.Snood_HeadCount;
}
var _local16 = false;
var _local17 = 0;
var _local4 = _local18;
while (_local4 <= _local19) {
if (((_local4 > Constants.Snood_HeadCount) && (_local4 < Constants.Snood_LumpStart)) && (_local4 > Constants.Snood_LumpEnd)) {
} else {
var _local12 = m_comboPieces.concat();
var _local11 = m_comboCoords.concat();
m_VisitedGrid = new Array(m_BoardRows * m_BoardColumns);
var _local5 = findMatches(x, y, _local4);
if (_local5 > 2) {
if (_local5 > _local9) {
_local9 = _local5;
}
_local16 = true;
_local17++;
if ((_local4 == Constants.Snood_Holly) && (CGame.Board.m_RubberLubberHitThisShot)) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_RubberEffyBankMatch);
}
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + (_local5 * 10);
} else {
m_comboPieces = _local12;
m_comboCoords = _local11;
}
}
_local4++;
}
_local4 = 0;
while (_local4 < m_comboCoords.length) {
var _local6 = CCoord(m_comboCoords[_local4]);
CGame.EffectMgr.BroadcastBorbEffectMesgToSingle(_local6.X, _local6.Y, SnoodHead(m_comboPieces[_local4]), 3);
_local4++;
}
if (_local9 > 2) {
CGame.Board.m_TotalCombos++;
m_comboPieces.push(m_BoardSpaces[(x * m_BoardRows) + y]);
m_comboCoords.push(new CCoord(x, y));
_local4 = 0;
while (_local4 < m_comboPieces.length) {
var _local2 = SnoodHead(m_comboPieces[_local4]);
var _local3 = CCoord(m_comboCoords[_local4]);
var _local1 = CGame.TileSet.GetTile(_local3.X, _local3.Y);
var _local10 = false;
if (_local1.__get__PowerUp() == Constants.PowerUp_Lock) {
_local1.SetPowerUp(Constants.PowerUp_None);
var _local8 = CCharacterSounds.GetCharacterSound(_local1.__get__Color(), Constants.__get__CharSound_Waking());
if (_local8 != null) {
CGame.Sounds.PlaySound(_local8);
}
} else if (_local1.__get__PowerUp() == Constants.PowerUp_Hypnosis) {
_local1.SetPowerUp(Constants.PowerUp_None);
} else if (Constants.IsJellyFish(_local1.__get__PowerUp())) {
_local1.SetPowerUp(Constants.PowerUp_None);
} else {
if (_local1.__get__PowerUp() == Constants.PowerUp_Shroud) {
var _local13 = CGame.TileSet.GetTile(x, y);
var _local7 = Effects.CEffect_ShroudDissolve(CEffect.CreateEffect(CEffect.Type_ShroudDissolve));
if (_local7.OnInit(_local1, _local13, null, true)) {
CGame.EffectMgr.AddEffectToActiveList(_local7);
}
}
_local16 = true;
if (_local2.__get__PowerUp() == Constants.PowerUp_Mine) {
var _local7 = Effects.CEffect_Mine(CEffect.CreateEffect(CEffect.Type_Mine));
if (_local7.OnInit(_local2)) {
CGame.EffectMgr.AddEffectToActiveList(_local7);
}
} else if ((!_local10) && (_local2.__get__PowerUp() != Constants.PowerUp_None)) {
CGame.TileSet.SetTile(_local3.X, _local3.Y, null);
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, m_BasePowerupDropSec, m_PowerupIncrDropSec * Effects.CEffect_BorbDropAnim.GetCount(Effects.CEffect_BorbDropAnim.Dest_ToCannon));
} else {
InvalidateSpot(_local2);
_local2.Vaporize();
}
}
_local4++;
}
}
if (_local16) {
if (_local17 > 1) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_WildCombo);
}
if (_local17 > 2) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MajorWildCombo);
}
CGame.Board.m_ComboChainCount++;
if ((color >= Constants.Snood_LumpStart) && (color <= Constants.Snood_LumpEnd)) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_LumpBonus);
var _local21 = Constants.Score_LumpBonus * _local9;
var _local23 = CGame.Board.CreatePointsEffect(x, y, (CGame.Localizer.LocStr("Lump Bonus!") + "\n+") + String(_local21), 0, true);
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + _local21;
CGame.Sounds.PlaySound(Constants.__get__Sound_Applause());
} else if (color == Constants.Snood_Slippery) {
var _local21 = Constants.Score_RubberLubberBonus * _local9;
var _local23 = CGame.Board.CreatePointsEffect(x, y, (CGame.Localizer.LocStr("RubberLubber\rBonus!") + " +") + String(_local21), 0, true);
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + _local21;
CGame.Sounds.PlaySound(Constants.__get__Sound_Applause());
}
if (CGame.Board.m_ComboChainCount >= Constants.Score_ComboBonusStart) {
var _local21 = Constants.Score_ComboBonusBase + (Constants.Score_ComboBonus * (CGame.Board.m_ComboChainCount - Constants.Score_ComboBonusStart));
var _local23 = CGame.Board.CreatePointsEffect(x, y, (((CGame.Localizer.LocStr("Combo") + " ") + String(CGame.Board.m_ComboChainCount)) + "X\n+") + String(_local21), s_BonusTint);
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + _local21;
if (CGame.Board.m_ComboChainCount >= 10) {
CGame.Sounds.PlaySound(Constants.__get__Sound_Applause());
}
if (CGame.Board.m_ComboChainCount >= CPlayerInfo.s_AchievementMinorComboSize) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MinorCombo);
}
}
} else {
CGame.Board.m_ComboChainCount = 0;
}
return(_local9);
}
static function InvalidateSpot(borb) {
CGame.TileSet.SetTile(borb.m_xSlot, borb.m_ySlot, null);
}
static function findMatches(x, y, color) {
if (CGame.DbgShowComboCounter) {
SnoodHead.DbgClearTextOnAllSnoods();
SnoodHead(m_BoardSpaces[(x * m_BoardRows) + y]).DbgSetText("START");
}
var _local18;
var _local19;
var _local14;
var _local20;
var _local8 = m_NeighborGrid[(_local18 * m_BoardRows) + _local19];
var _local2;
var _local1;
var _local5;
var _local3;
m_VisitedGrid[(x * m_BoardRows) + y] = 1;
var _local21 = CGame.TileSet.GetColorCount(color) + CGame.TileSet.GetColorCount(Constants.Snood_Wild);
var _local10 = new Array(_local21);
var _local11 = new Array(_local21);
var _local12 = new Array(_local21);
var _local13 = new Array(_local21);
_local10[0] = x;
_local11[0] = y;
_local12[0] = null;
_local13[0] = 0;
var _local17 = 1;
var _local4 = 1;
var _local16 = (color >= Constants.Snood_LumpStart) && (color <= Constants.Snood_LumpEnd);
var _local9 = 0;
while (_local9 < _local4) {
_local18 = _local10[_local9];
_local19 = _local11[_local9];
_local14 = _local13[_local9] + 1;
_local20 = SnoodHead(_local12[_local9]);
_local8 = m_NeighborGrid[(_local18 * m_BoardRows) + _local19];
var _local7 = 0;
while (_local7 < _local8[0].length) {
_local2 = _local8[0][_local7];
_local1 = _local8[1][_local7];
_local3 = SnoodHead(m_BoardSpaces[(_local2 * m_BoardRows) + _local1]);
_local5 = _local3.PowerUp;
if (CGame.DbgShowComboCounter) {
if (_local3 == undefined) {
trace((("UNDEFINED @ " + _local2) + ",") + _local1);
} else if (m_VisitedGrid[(_local2 * m_BoardRows) + _local1] > 0) {
trace((("VISITED @ " + _local2) + ",") + _local1);
} else if (_local3.__get__Color() == Constants.Snood_Wild) {
SnoodHead(m_BoardSpaces[(_local2 * m_BoardRows) + _local1]).DbgSetText("WILD");
} else if (_local3.__get__Color() != color) {
SnoodHead(m_BoardSpaces[(_local2 * m_BoardRows) + _local1]).DbgSetText("NOMATCH");
}
}
if (((((((_local3 != undefined) && (m_VisitedGrid[(_local2 * m_BoardRows) + _local1] != 1)) && (_local5 != Constants.PowerUp_Lock)) && (_local5 != Constants.PowerUp_Hypnosis)) && (_local5 != Constants.PowerUp_Jelly)) && (_local5 != Constants.PowerUp_JellyStrTwo)) && (_local5 != Constants.PowerUp_JellyStrThree)) {
var _local6 = _local3.__get__Color();
if (((_local6 == color) || ((!_local16) && (_local6 == Constants.Snood_Wild))) || ((_local16 && (_local6 >= Constants.Snood_LumpStart)) && (_local6 <= Constants.Snood_LumpEnd))) {
m_VisitedGrid[(_local2 * m_BoardRows) + _local1] = 1;
m_comboPieces.push(_local3);
m_comboCoords.push(new CCoord(_local2, _local1));
_local17++;
_local4++;
if (_local4 > _local10.length) {
CDebug.WriteErr("Level.findMatches()", "Pre-allocated array overflow on openList!");
_local10.push(_local2);
_local11.push(_local1);
_local12.push(_local3);
_local13.push(_local14);
} else {
_local10[_local4 - 1] = _local2;
_local11[_local4 - 1] = _local1;
_local12[_local4 - 1] = _local3;
_local13[_local4 - 1] = _local14;
}
}
}
_local7++;
}
_local9++;
}
return(_local17);
}
static function tryToDropPieces() {
var _local31 = CGame.TileSet;
var _local32 = CGame.Board.IsRound();
var _local28 = Math.floor(m_BoardColumns / 2);
var _local30 = 0;
var _local25 = new Array();
var _local29 = new Array();
var _local18;
var _local13;
var _local12 = new Array(m_BoardColumns * m_BoardRows);
var _local34 = m_InvalidatedSpots.length;
var _local24 = 0;
while (_local24 < _local34) {
_local18 = int(m_InvalidatedSpots[_local24] / m_BoardRows);
_local13 = m_InvalidatedSpots[_local24] % m_BoardRows;
var _local27 = m_NeighborGrid[(_local18 * m_BoardRows) + _local13];
var _local21 = _local27[0];
var _local26 = _local27[1];
var _local3 = 0;
while (_local3 < _local21.length) {
var _local7 = _local21[_local3];
var _local6 = _local26[_local3];
if (_local12[(_local7 * m_BoardRows) + _local6] == undefined) {
_local12[(_local7 * m_BoardRows) + _local6] = 1;
if (m_BoardSpaces[(_local7 * m_BoardRows) + _local6] != undefined) {
_local25.push(_local7);
_local29.push(_local6);
}
}
_local3++;
}
_local24++;
}
m_majorTraceCount = 0;
if (CGame.DbgShowDropCheck) {
SnoodHead.DbgClearTextOnAllSnoods();
}
while (_local25.length > 0) {
m_minorTraceCount = 0;
_local18 = Number(_local25.pop());
_local13 = Number(_local29.pop());
var _local11 = (_local18 * m_BoardRows) + _local13;
if (m_VisitedGrid[_local11] != undefined) {
continue;
}
if (_local32) {
if ((_local13 == _local28) && (_local18 == _local28)) {
continue;
}
} else {
if (_local13 == 0) {
m_VisitedGrid[_local11] = 1;
continue;
}
if (m_VisitedGrid[_local11] == 1) {
continue;
}
if (_local12[_local11] == 2) {
continue;
}
}
var _local14 = [_local11];
var _local22 = false;
_local12[_local11] = 2;
m_VisitedGrid[_local11] = 2;
if (_local32) {
_local22 = checkConnectedInner(_local18, _local13, _local12, _local14, _local28);
} else {
_local22 = checkConnectedInner(_local18, _local13, _local12, _local14, null);
}
var _local20 = 0;
var _local1 = [];
var _local19 = [];
while (_local14.length > 0) {
var _local17 = Number(_local14.pop());
var _local10 = int(_local17 / m_BoardRows);
var _local9 = _local17 % m_BoardRows;
if (_local22) {
m_VisitedGrid[(_local10 * m_BoardRows) + _local9] = 1;
} else {
var _local2 = SnoodHead(m_BoardSpaces[(_local10 * m_BoardRows) + _local9]);
var _local4 = _local2.__get__PowerUp();
var _local8 = _local2.__get__Color();
_local31.SetTile(_local10, _local9, null);
if (!Constants.IsBlockerHead(_local8)) {
_local20++;
}
if (((_local4 == Constants.PowerUp_Shroud) || (_local4 == Constants.PowerUp_Lock)) || (_local4 == Constants.PowerUp_Hypnosis)) {
_local2.SetPowerUp(Constants.PowerUp_None);
if (_local4 == Constants.PowerUp_Lock) {
var _local16 = CCharacterSounds.GetCharacterSound(_local8, Constants.__get__CharSound_Waking());
if (_local16 != null) {
CGame.Sounds.PlaySound(_local16);
}
}
}
if (Constants.IsJellyFish(_local2.__get__PowerUp())) {
_local2.SetPowerUp(Constants.PowerUp_None);
CGame.Board.m_JellyFishyDropped++;
}
if (((!Constants.IsBlockerHead(_local8)) && (_local4 != Constants.PowerUp_Mine)) && ((_local20 < Constants.MaxFlyQueueCount) || (_local4 != Constants.PowerUp_None))) {
_local1.push(_local2);
} else {
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, s_LumpDropDur + Oberon.MathX.randRange(-((s_LumpDropDur * s_LumpDropDurVariancePct) / 200), (s_LumpDropDur * s_LumpDropDurVariancePct) / 200));
if ((_local2.__get__Color() >= Constants.Snood_LumpStart) && (_local2.__get__Color() <= Constants.Snood_LumpEnd)) {
CGame.Board.m_LumpsDropped++;
_local19.push(_local2);
} else if (_local2.__get__Color() == Constants.Snood_Slippery) {
CGame.Board.m_RubberLubberDropped++;
_local19.push(_local2);
}
}
_local30 = _local30 + 1;
}
}
_local24 = 0;
while (_local24 < _local1.length) {
var _local5 = _local24;
var _local3 = _local24;
while (_local3 < _local1.length) {
if (_local1[_local3] < SnoodHead(_local1[_local5])._y) {
_local5 = _local3;
}
_local3++;
}
if (_local24 != _local5) {
var _local23 = _local1[_local24];
_local1[_local24] = _local1[_local5];
_local1[_local5] = _local23;
}
_local24++;
}
CCharacterSounds.PlayWhees(_local1);
CCharacterSounds.PlayLumpDrops(_local19);
_local24 = 0;
while (_local24 < _local1.length) {
var _local15 = SnoodHead(_local1[_local24]);
if (_local15.__get__PowerUp() != Constants.PowerUp_None) {
_local15.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, m_BasePowerupDropSec);
}
_local24++;
}
_local24 = 0;
while (_local24 < _local1.length) {
var _local15 = SnoodHead(_local1[_local24]);
if (_local15.__get__PowerUp() == Constants.PowerUp_None) {
_local15.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToQueue, m_BaseDropSec);
}
_local24++;
}
}
m_InvalidatedSpots = new Array();
if (_local30 >= 7) {
var _local33 = 0;
_local24 = 0;
while (_local24 < _local1.length) {
if (SnoodHead(_local1[_local24]).__get__Color() == Constants.Snood_Fuzzball) {
_local33++;
}
_local24++;
}
if (_local33 >= 7) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_SevenFuzz);
}
}
return(_local30);
}
static function checkConnectedInner(i_x, i_y, i_invalidHash, i_chain, i_roundCenter) {
m_majorTraceCount++;
var _local8 = m_NeighborGrid[(i_x * m_BoardRows) + i_y];
var _local10 = _local8[0];
var _local9 = _local8[1];
var _local3 = false;
var _local4 = 0;
for ( ; _local4 < _local8[0].length ; _local4++) {
var _local2 = _local10[_local4];
var _local1 = _local9[_local4];
if (_local3) {
m_VisitedGrid[(_local2 * m_BoardRows) + _local1] = 1;
} else if (m_BoardSpaces[(_local2 * m_BoardRows) + _local1] == null) {
} else if (m_VisitedGrid[(_local2 * m_BoardRows) + _local1] == 1) {
_local3 = true;
} else {
if (i_roundCenter != null) {
if ((_local1 == i_roundCenter) && (_local2 == i_roundCenter)) {
_local3 = true;
continue;
}
} else if (_local1 == 0) {
_local3 = true;
} else if (i_invalidHash[(_local2 * m_BoardRows) + _local1] != 2) {
m_minorTraceCount++;
if (CGame.DbgShowDropCheck) {
m_BoardSpaces[(_local2 * m_BoardRows) + _local1].DbgSetText((m_majorTraceCount + ":") + m_minorTraceCount);
}
i_invalidHash[(_local2 * m_BoardRows) + _local1] = 2;
i_chain.push((_local2 * m_BoardRows) + _local1);
_local3 = _local3 || checkConnectedInner(_local2, _local1, i_invalidHash, i_chain, i_roundCenter);
}
if (i_invalidHash[(_local2 * m_BoardRows) + _local1] != 2) {
m_minorTraceCount++;
if (CGame.DbgShowDropCheck) {
m_BoardSpaces[(_local2 * m_BoardRows) + _local1].DbgSetText((m_majorTraceCount + ":") + m_minorTraceCount);
}
i_invalidHash[(_local2 * m_BoardRows) + _local1] = 2;
i_chain.push((_local2 * m_BoardRows) + _local1);
_local3 = _local3 || (checkConnectedInner(_local2, _local1, i_invalidHash, i_chain, i_roundCenter));
}
}
}
return(_local3);
}
static function TryDropSnoods() {
CGame.Board.m_DropCheckNeeded = true;
}
static function DoDropSnoods(i_fullFlush) {
if (i_fullFlush) {
m_InvalidatedSpots = new Array(m_BoardRows * m_BoardColumns);
var _local1 = 0;
while (_local1 < (m_BoardRows * m_BoardColumns)) {
m_InvalidatedSpots[_local1] = _local1;
_local1++;
}
}
if (m_InvalidatedSpots.length == 0) {
return(undefined);
}
m_VisitedGrid = new Array(m_BoardRows * m_BoardColumns);
var _local2 = tryToDropPieces();
if (_local2 == 1) {
CGame.Sounds.PlaySound(Constants.__get__Sound_Drop());
} else if (_local2 > 1) {
CGame.Sounds.SetNextSound(Constants.__get__Sound_Drop(), Constants.__get__Sound_BigDrop());
CGame.Sounds.PlaySound(Constants.__get__Sound_Drop());
}
CGame.Board.m_TileSet.UpdateBoundingBox();
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + (_local2 * Constants.Score_Drop);
if (_local2 >= Constants.Score_BigDropBonusStart) {
var _local3 = Constants.Score_BigDropBonusBase + (Constants.Score_BigDropBonus * (_local2 - Constants.Score_BigDropBonusStart));
var _local4 = CGame.Board.CreatePointsEffect(CGame.TileSet.m_LastAttached.X, CGame.TileSet.m_LastAttached.Y, (CGame.Localizer.LocStr("Big Drop!") + "\n+") + String(_local3), s_BonusTint);
CGame.Sounds.PlaySound(Constants.__get__Sound_Applause());
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + _local3;
}
if ((CGame.Board.m_Queue.GetCount() == 0) && (_local2 >= CGame.Board.m_Queue.GetCurMax())) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_FullRefill);
}
if (_local2 >= CPlayerInfo.s_AchievementMinorDropSize) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MinorHeadDrop);
}
if (_local2 >= CPlayerInfo.s_AchievementMajorDropSize) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MajorHeadDrop);
}
}
static function onAddBorbEffectsComplete(x, y, whichObject, addDanger) {
var _local11 = CGame.CurrentPlayer;
var _local9 = CGame.Board.IsRound();
var _local10 = true;
if (m_BoardSpaces[(x * m_BoardRows) + y] != undefined) {
m_comboPieces = [];
m_comboCoords = [];
var _local8 = countAllCombos(x, y, whichObject.__get__Color());
if (_local8 < 3) {
_local10 = false;
CGame.Sounds.PlaySound(Constants.__get__Sound_Stick());
whichObject.StopBankShotEffects();
} else {
if (CGame.Board.m_InPlungerGrab) {
}
var _local6 = whichObject.PlayBankEffectRewards();
if (_local6 > 0) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MinorBankMatch);
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_BankBonusOne;
if (_local6 > 1) {
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_BankBonusTwo;
}
if (_local6 > 2) {
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_BankBonusThree;
}
}
}
var _local1 = 0;
while (_local1 < m_comboPieces.length) {
var _local7 = SnoodHead(m_comboPieces[_local1]);
var _local2 = CCoord(m_comboCoords[_local1]);
CGame.EffectMgr.BroadcastBorbEffectMesgToNeighbors(_local2.Y, _local2.X, _local7, 4, {inWhichObject:_local7});
_local1++;
}
CGame.EffectMgr.BroadcastBorbEffectMesgToNeighbors(y, x, whichObject, 2, {inX:x, inY:y, inWhichObject:whichObject});
}
TryDropSnoods();
if (_local8 <= 2) {
if (_local9) {
var _local7 = SnoodHead(m_BoardSpaces[(x * m_BoardRows) + y]);
if ((_local7 != undefined) && (!isValidCicleLocation(x, y))) {
if (_local7.__get__Color() <= Constants.Snood_HeadCount) {
CGame.Board.m_Lost = true;
m_BoardLoser = _local11;
m_LosePieces.push(whichObject);
} else {
CGame.Board.m_TileSet.SetTile(x, y, null);
_local7.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard);
TryDropSnoods();
}
}
} else if ((y + m_BoardLevel) >= m_LoseLevel) {
if (whichObject.__get__Color() <= Constants.Snood_HeadCount) {
CGame.Board.m_Lost = true;
m_LosePieces.push(whichObject);
} else {
whichObject.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard);
TryDropSnoods();
}
}
}
}
static var DbgShowSnoodCoords = false;
static var m_ShiftedPieces = [];
static var m_InvalidatedSpots = [];
static var m_BasePowerupDropSec = 1;
static var m_PowerupIncrDropSec = 0.5;
static var m_BaseDropSec = 0.6;
static var m_BaseIncrDropSec = 0.13;
static var s_BonusTint = 16776960;
static var s_LumpDropDur = 0.5;
static var s_LumpDropDurVariancePct = 20;
}
Symbol 26 MovieClip [__Packages.CPlayerInfo] Frame 0
class CPlayerInfo
{
var m_Score, m_achievementsDone;
function CPlayerInfo (inPlayerName) {
Reset();
ResetAchievements();
}
function Reset() {
m_Score = 0;
ResetBoardVariables();
}
function ResetAchievements() {
m_achievementsDone = new Array(Achievement_COUNT);
var _local2 = 0;
while (_local2 < Achievement_COUNT) {
m_achievementsDone[_local2] = false;
_local2++;
}
}
function ResetBoardVariables() {
}
function SyncAchievements(i_arr) {
var _local2 = 0;
while (_local2 < i_arr.length) {
m_achievementsDone[_local2] = !i_arr[_local2];
_local2++;
}
}
static function AchievementToString(i_achievement) {
switch (i_achievement) {
case Achievement_MinorBankMatch :
return("MinorBankMatch");
case Achievement_MinorHeadDrop :
return("MinorHeadDrop");
case Achievement_MinorCombo :
return("MinorCombo");
case Achievement_WildCombo :
return("WildCombo");
case Achievement_MinorLevelCompletion :
return("MinorLevelCompletion");
case Achievement_MajorBallLevelCompletion :
return("MajorBallLevelCompletion");
case Achievement_MajorVertLevelCompletion :
return("MajorVertLevelCompletion");
case Achievement_MajorBankMatch :
return("MajorBankMatch");
case Achievement_FullRefill :
return("FullRefill");
case Achievement_LumpBonus :
return("LumpBonus");
case Achievement_ReboundWin :
return("ReboundWin");
case Achievement_MajorHeadDrop :
return("MajorHeadDrop");
case Achievement_MajorWildCombo :
return("MajorWildCombo");
case Achievement_RubberEffyBankMatch :
return("RubberEffyBankMatch");
case Achievement_SevenFuzz :
return("SevenFuzz");
case Achievement_BreakCrateWithLump :
return("BreakCrateWithLump");
}
CDebug.WriteErr("CPlayerInfo.AchievementToString()", "Unknown Achievement : " + i_achievement);
return(null);
}
function GetIsAccomplished(i_achievement) {
return(m_achievementsDone[i_achievement]);
}
function Accomplish(i_achievement) {
if (((!m_achievementsDone[i_achievement]) && (!CGame.s_CheatedThisGame)) && (CWebConfig.IsAchievementActive())) {
m_achievementsDone[i_achievement] = true;
var _local3 = UI.CAchievementDlg(Core.DialogUtil.Push(Constants.Dialog_Achievement));
_local3.SetAchievementType(i_achievement + 1);
CPachinko.AchievementScored(AchievementToString(i_achievement));
}
}
static var Achievement_MinorBankMatch = 0;
static var Achievement_MinorHeadDrop = 1;
static var Achievement_MinorCombo = 2;
static var Achievement_WildCombo = 3;
static var Achievement_MinorLevelCompletion = 4;
static var Achievement_MajorBallLevelCompletion = 5;
static var Achievement_MajorVertLevelCompletion = 6;
static var Achievement_MajorBankMatch = 7;
static var Achievement_FullRefill = 8;
static var Achievement_LumpBonus = 9;
static var Achievement_ReboundWin = 10;
static var Achievement_BreakCrateWithLump = 11;
static var Achievement_MajorHeadDrop = 12;
static var Achievement_MajorWildCombo = 13;
static var Achievement_RubberEffyBankMatch = 14;
static var Achievement_SevenFuzz = 15;
static var Achievement_COUNT = 16;
static var s_AchievementMinorDropSize = 5;
static var s_AchievementMajorDropSize = 15;
static var s_AchievementMinorComboSize = 10;
}
Symbol 27 MovieClip [__Packages.UI.CAchievementDlg] Frame 0
class UI.CAchievementDlg extends CDialog
{
var Name, BackVisible, m_type, m_state, inner, Close;
function CAchievementDlg () {
super();
Name = Constants.Dialog_Achievement;
if (Core.DialogUtil.Top().Name == Constants.Dialog_Achievement) {
BackVisible = false;
}
m_type = null;
m_state = State_Skip;
CGame.s_Speed = 0;
}
function SetAchievementType(i_type) {
m_type = i_type;
inner.gotoAndStop(i_type);
}
function onLoad() {
super.onLoad();
CGame.Sounds.PlaySound(Constants.__get__Sound_Applause());
}
function onClick(i_context) {
if (Core.Button(i_context) != null) {
var _local2 = Core.Button(i_context);
if (!(_local2.__get__Name() === "Continue")) {
} else {
Close();
if (Core.DialogUtil.Top().Name != Constants.Dialog_Achievement) {
CGame.s_Speed = CGame.s_BaseSpeed;
}
}
}
return(true);
}
static var State_Skip = 3;
}
Symbol 28 MovieClip [__Packages.Constants] Frame 0
class Constants
{
function Constants () {
}
static function get StudioName() {
return("Oberon Games Studio");
}
static function get StudioNameConcat() {
return("OberonGames");
}
static function get GameName() {
return("Scrubbles");
}
static function get GameNameConcat() {
return("Scrubbles");
}
static function get GameNameAbbr() {
return("Bum");
}
static function get BackgoundTileCount() {
return(10);
}
static function get Message_Close() {
return(0);
}
static function BoardModeToString(inVal) {
switch (inVal) {
case BoardMode_Easy :
return("SuperEasy");
case BoardMode_Easy :
return("Easy");
case BoardMode_Medium :
return("Medium");
case BoardMode_Hard :
return("Hard");
case BoardMode_Impossible :
return("Impossible");
case BoardMode_BallSuperEasy :
return("BallSuperEasy");
case BoardMode_BallEasy :
return("BallEasy");
case BoardMode_BallMedium :
return("BallMedium");
case BoardMode_BallHard :
return("BallHard");
case BoardMode_BallImpossible :
return("BallImpossible");
}
CDebug.WriteErr("Constants.BoardModeToString()", "Unknown val: " + inVal);
return("<Unknown>:" + inVal);
}
static function StringToBoardMode(inVal) {
switch (inVal) {
case "SuperEasy" :
return(BoardMode_SuperEasy);
case "Easy" :
return(BoardMode_Easy);
case "Medium" :
return(BoardMode_Medium);
case "Hard" :
return(BoardMode_Hard);
case "Impossible" :
return(BoardMode_Impossible);
case "BallSuperEasy" :
return(BoardMode_BallSuperEasy);
case "BallEasy" :
return(BoardMode_BallEasy);
case "BallMedium" :
return(BoardMode_BallMedium);
case "BallHard" :
return(BoardMode_BallHard);
case "BallImpossible" :
return(BoardMode_BallImpossible);
}
CDebug.WriteErr("Constants.BoardModeToString()", "Unknown mode: " + inVal);
return(null);
}
static function IsBoardModeCircular(i_mode) {
switch (i_mode) {
case BoardMode_SuperEasy :
case BoardMode_Easy :
case BoardMode_Medium :
case BoardMode_Hard :
case BoardMode_Impossible :
return(false);
case BoardMode_BallSuperEasy :
case BoardMode_BallEasy :
case BoardMode_BallMedium :
case BoardMode_BallHard :
case BoardMode_BallImpossible :
return(true);
}
CDebug.WriteErr("Constants.IsBoardModeCircular()", "Unknown mode: " + i_mode);
return(false);
}
static function BoardModeToMaxWidth(inMode) {
switch (inMode) {
case BoardMode_SuperEasy :
return(13);
case BoardMode_Easy :
return(13);
case BoardMode_Medium :
return(17);
case BoardMode_Hard :
return(17);
case BoardMode_Impossible :
return(17);
case BoardMode_BallSuperEasy :
return(17);
case BoardMode_BallEasy :
return(17);
case BoardMode_BallMedium :
return(17);
case BoardMode_BallHard :
return(19);
case BoardMode_BallImpossible :
return(19);
}
CDebug.WriteErr("Constants.BoardModeToMaxWidth()", "Unknown mode: " + inMode);
return(null);
}
static function BoardModeToMaxHeight(inMode) {
switch (inMode) {
case BoardMode_SuperEasy :
return(14);
case BoardMode_Easy :
return(14);
case BoardMode_Medium :
return(16);
case BoardMode_Hard :
return(17);
case BoardMode_Impossible :
return(17);
case BoardMode_BallSuperEasy :
return(17);
case BoardMode_BallEasy :
return(17);
case BoardMode_BallMedium :
return(17);
case BoardMode_BallHard :
return(19);
case BoardMode_BallImpossible :
return(19);
}
CDebug.WriteErr("Constants.BoardModeToMaxWidth()", "Unknown mode: " + inMode);
return(null);
}
static function GetBoardModeFillLevel(inMode) {
switch (inMode) {
case BoardMode_SuperEasy :
return(4);
case BoardMode_Easy :
return(4);
case BoardMode_Medium :
return(5);
case BoardMode_Hard :
return(6);
case BoardMode_Impossible :
return(6);
case BoardMode_BallSuperEasy :
return(5);
case BoardMode_BallEasy :
return(5);
case BoardMode_BallMedium :
return(8);
case BoardMode_BallHard :
return(9);
case BoardMode_BallImpossible :
return(9);
}
CDebug.WriteErr("Constants.GetBoardModeFillLevel()", "Unknown mode: " + inMode);
return(null);
}
static function get Key_1pShoot() {
return(87);
}
static function get Key_1pLeft() {
return(65);
}
static function get Key_1pRight() {
return(68);
}
static function get Key_1pSwitch() {
return(83);
}
static function get Key_2pShoot() {
return(38);
}
static function get Key_2pLeft() {
return(37);
}
static function get Key_2pRight() {
return(39);
}
static function get Key_2pSwitch() {
return(40);
}
static function get Sound_Shoot() {
return(0);
}
static function get Sound_Bounce() {
return(1);
}
static function get Sound_Bounce2x() {
return(2);
}
static function get Sound_Bounce3x() {
return(3);
}
static function get Sound_Drop() {
return(4);
}
static function get Sound_BigDrop() {
return(5);
}
static function get Sound_Points() {
return(6);
}
static function get Sound_Wild() {
return(7);
}
static function get Sound_Stick() {
return(8);
}
static function get Sound_Bomb() {
return(9);
}
static function get Sound_ButtonClick() {
return(10);
}
static function get Sound_ButtonHover() {
return(11);
}
static function get Sound_Whoosh() {
return(12);
}
static function get Sound_BallSpin() {
return(13);
}
static function get Sound_Shroud() {
return(14);
}
static function get Sound_Hook() {
return(15);
}
static function get Sound_Pop() {
return(16);
}
static function get Sound_Hit() {
return(17);
}
static function get Sound_BoardStart() {
return(18);
}
static function get Sound_Lose() {
return(19);
}
static function get Sound_BreakCrate() {
return(20);
}
static function get Sound_ShroudRemove() {
return(21);
}
static function get Sound_WakingCrabby1() {
return(22);
}
static function get Sound_WakingDeeJay() {
return(23);
}
static function get Sound_WakingEffy() {
return(24);
}
static function get Sound_WakingFrank2() {
return(25);
}
static function get Sound_WakingFuzzball3() {
return(26);
}
static function get Sound_WakingMaryAnn2() {
return(27);
}
static function get Sound_WakingPearl2() {
return(28);
}
static function get Sound_WakingSandy1() {
return(29);
}
static function get Sound_WheeCrabby1() {
return(30);
}
static function get Sound_WheeDeeJay1() {
return(31);
}
static function get Sound_WheeEffy2() {
return(32);
}
static function get Sound_WheeFrank2() {
return(33);
}
static function get Sound_WheeFuzzball() {
return(34);
}
static function get Sound_WheeMaryAnn() {
return(35);
}
static function get Sound_WheePearl2() {
return(36);
}
static function get Sound_WheeSandy1() {
return(37);
}
static function get Sound_BubbleCrabby() {
return(38);
}
static function get Sound_BubbleDeeJay() {
return(39);
}
static function get Sound_BubbleEffy() {
return(40);
}
static function get Sound_BubbleFrank() {
return(41);
}
static function get Sound_BubbleFuzzball() {
return(42);
}
static function get Sound_BubbleMaryAnn() {
return(43);
}
static function get Sound_BubblePearl() {
return(44);
}
static function get Sound_BubbleSandy() {
return(45);
}
static function get Sound_SureShotCrabby() {
return(46);
}
static function get Sound_SureShotDeeJay() {
return(47);
}
static function get Sound_SureShotEffy() {
return(48);
}
static function get Sound_SureShotFrank() {
return(49);
}
static function get Sound_SureShotFuzzball() {
return(50);
}
static function get Sound_SureShotMaryAnn() {
return(51);
}
static function get Sound_SureShotPearl() {
return(52);
}
static function get Sound_SureShotSandy() {
return(53);
}
static function get Sound_HotfootCrabby() {
return(54);
}
static function get Sound_HotfootDeeJay() {
return(55);
}
static function get Sound_HotfootEffy() {
return(56);
}
static function get Sound_HotfootFrank() {
return(57);
}
static function get Sound_HotfootFuzzball() {
return(58);
}
static function get Sound_HotfootMaryAnn() {
return(59);
}
static function get Sound_HotfootPearl() {
return(60);
}
static function get Sound_HotfootSandy() {
return(61);
}
static function get Sound_PlungerCrabby() {
return(62);
}
static function get Sound_PlungerDeeJay() {
return(63);
}
static function get Sound_PlungerEffy() {
return(64);
}
static function get Sound_PlungerFrank() {
return(65);
}
static function get Sound_PlungerFuzzball() {
return(66);
}
static function get Sound_PlungerMaryAnn() {
return(67);
}
static function get Sound_PlungerPearl() {
return(68);
}
static function get Sound_PlungerSandy() {
return(69);
}
static function get Sound_WildCrabby() {
return(70);
}
static function get Sound_WildDeeJay() {
return(71);
}
static function get Sound_WildEffy() {
return(72);
}
static function get Sound_WildFrank() {
return(73);
}
static function get Sound_WildFuzzball() {
return(74);
}
static function get Sound_WildMaryAnn() {
return(75);
}
static function get Sound_WildPearl() {
return(76);
}
static function get Sound_WildSandy() {
return(77);
}
static function get Sound_BubbleFirst() {
return(78);
}
static function get Sound_Bubble2() {
return(79);
}
static function get Sound_Bubble3() {
return(80);
}
static function get Sound_Bubble4() {
return(81);
}
static function get Sound_Bubble5() {
return(82);
}
static function get Sound_Bubble6() {
return(83);
}
static function get Sound_Bubble7() {
return(84);
}
static function get Sound_Bubble8() {
return(85);
}
static function get Sound_BubbleLast() {
return(86);
}
static function get Sound_Applause() {
return(87);
}
static function get Sound_PlungerGrab() {
return(88);
}
static function get Sound_Plunger() {
return(89);
}
static function get Sound_LumpDrop() {
return(90);
}
static function get Sound_Hotfoot() {
return(91);
}
static function get Sound_HotfootBurn() {
return(92);
}
static function get Sound_Rubber() {
return(93);
}
static function get Sound_SureShot() {
return(94);
}
static function get Sound_BubbleBubble() {
return(95);
}
static function get Sound_BubbleBubbleHit() {
return(96);
}
static function get Sound_FishyFly() {
return(97);
}
static function get Sound_FishyLand() {
return(98);
}
static function get Sound_Count() {
return(99);
}
static function get CharSound_Waking() {
return(0);
}
static function get CharSound_Whee() {
return(1);
}
static function get SoundChannel_Music() {
return(1);
}
static function get SoundChannel_Effects() {
return(2);
}
static function get SoundChannel_Voice() {
return(3);
}
static function get FHostSoundsPath() {
return("Resources\\Sounds\\");
}
static function GetFHostChannel(inSoundChannel) {
switch (inSoundChannel) {
case SoundChannel_Music :
return(FHost.CApp.__get__Channel_Music());
case SoundChannel_Voice :
return(FHost.CApp.__get__Channel_Voice());
}
return(FHost.CApp.__get__Channel_Sound());
}
static function get VolumeDefault_Music() {
return(50);
}
static function get VolumeDefault_Effects() {
return(100);
}
static function get VolumeDefault_Voice() {
return(100);
}
static function GetSoundVolume(inSoundId) {
return(100);
}
static function get WinLoseResult_PlayNext() {
return(0);
}
static function get WinLoseResult_PlayAgain() {
return(1);
}
static function get WinLoseResult_PlayExactAgain() {
return(2);
}
static function get WinLoseResult_MainMenu() {
return(3);
}
static function GetSnoodByNumber(inIndex) {
switch (inIndex) {
case Snood_Mary :
return("Mary");
case Snood_Crabby :
return("Crabby");
case Snood_Frank :
return("Frank");
case Snood_Fuzzball :
return("Fuzzball");
case Snood_Pearl :
return("Pearl");
case Snood_Lump1 :
return("Lump1");
case Snood_Lump2 :
return("Lump2");
case Snood_Lump3 :
return("Lump3");
case Snood_Slippery :
return("Slippery");
case Snood_MiniRobot :
return("MiniRobot");
case Snood_OrbBlue :
return("OrbBlue");
case Snood_OrbCyan :
return("OrbCyan");
case Snood_OrbGray :
return("OrbGray");
case Snood_OrbGreen :
return("OrbGreen");
case Snood_OrbOrange :
return("OrbOrange");
case Snood_OrbPurple :
return("OrbPurple");
case Snood_OrbRed :
return("OrbRed");
case Snood_Wild :
return("Wild");
case Snood_Star :
return("Star");
case Snood_Holly :
return("Holly");
case Snood_Sandy :
return("Sandy");
case Snood_Crate :
return("Crate");
case Snood_CrateStrTwo :
return("CrateStrTwo");
case Snood_CrateStrThree :
return("CrateStrThree");
}
CDebug.Assert(false, "Constants.GetSnoodByNumber()", "Referencing unknown snood " + inIndex);
return("<Unknown>:" + inIndex);
}
static function GetSnoodByString(inStr) {
switch (inStr) {
case "Mary" :
return(Snood_Mary);
case "Crabby" :
return(Snood_Crabby);
case "Frank" :
return(Snood_Frank);
case "Fuzzball" :
return(Snood_Fuzzball);
case "Pearl" :
return(Snood_Pearl);
case "Lump" :
return(Oberon.MathX.randRange(Snood_LumpStart, Snood_LumpEnd));
case "Slippery" :
return(Snood_Slippery);
case "MiniRobot" :
return(Snood_MiniRobot);
case "OrbBlue" :
return(Snood_OrbBlue);
case "OrbCyan" :
return(Snood_OrbCyan);
case "OrbGray" :
return(Snood_OrbGray);
case "OrbGreen" :
return(Snood_OrbGreen);
case "OrbOrange" :
return(Snood_OrbOrange);
case "OrbPurple" :
return(Snood_OrbPurple);
case "OrbRed" :
return(Snood_OrbRed);
case "Wild" :
return(Snood_Wild);
case "Star" :
return(Snood_Star);
case "Holly" :
return(Snood_Holly);
case "Sandy" :
return(Snood_Sandy);
case "Driftwood" :
return(Snood_Crate);
case "Crate" :
return(Snood_Crate);
case "CrateStrOne" :
return(Snood_Crate);
case "CrateStrTwo" :
return(Snood_CrateStrTwo);
case "CrateStrThree" :
return(Snood_CrateStrThree);
}
CDebug.Assert(false, "Constants.GetSnoodByString()", "Referencing unknown snood " + inStr);
return(null);
}
static function IsBorbRandEmote(i_color) {
switch (i_color) {
case Snood_Crate :
case Snood_CrateStrTwo :
case Snood_CrateStrThree :
return(true);
}
return(false);
}
static function GetPowerUpByNumber(inIndex) {
switch (inIndex) {
case PowerUp_None :
return("None");
case PowerUp_BubbleBubble :
return("BubbleBubble");
case PowerUp_Ghost :
return("Ghost");
case PowerUp_Aimer :
return("Aimer");
case PowerUp_Fireball :
return("Fireball");
case PowerUp_Shroud :
return("Shroud");
case PowerUp_Jelly :
return("Jelly");
case PowerUp_JellyStrTwo :
return("JellyStrTwo");
case PowerUp_JellyStrThree :
return("JellyStrThree");
case PowerUp_Lock :
return("Lock");
case PowerUp_Mine :
return("Mine");
case PowerUp_Hook :
return("Hook");
case PowerUp_Hypnosis :
return("Hypnosis");
}
CDebug.Assert(false, Constants, "Referencing unknown powerup " + inIndex);
return("<Unknown>");
}
static function GetPowerUpByString(inStr) {
switch (inStr) {
case "None" :
return(PowerUp_None);
case "Star" :
case "BubbleBubble" :
return(PowerUp_BubbleBubble);
case "Ghost" :
return(PowerUp_Ghost);
case "Hook" :
return(PowerUp_Hook);
case "Fireball" :
return(PowerUp_Fireball);
case "Shroud" :
return(PowerUp_Shroud);
case "Slump" :
case "Jelly" :
return(PowerUp_Jelly);
case "JellyStrTwo" :
return(PowerUp_JellyStrTwo);
case "JellyStrThree" :
return(PowerUp_JellyStrThree);
case "Aimer" :
return(PowerUp_Aimer);
case "Lock" :
return(PowerUp_Lock);
case "Mine" :
return(PowerUp_Mine);
case "Hypnosis" :
return(PowerUp_Hypnosis);
}
CDebug.Assert(false, Constants, "Referencing unknown powerup " + inStr);
return(null);
}
static function IsJellyFish(i_powerUp) {
switch (i_powerUp) {
case PowerUp_Jelly :
case PowerUp_JellyStrTwo :
case PowerUp_JellyStrThree :
return(true);
}
return(false);
}
static function IsOrb(inVal) {
return((inVal > Snood_HeadCount) && (inVal <= (Snood_HeadCount * 2)));
}
static function IsHead(i_color, inIncludeOrbs) {
return(i_color <= (Snood_HeadCount * (inIncludeOrbs ? 2 : 1)));
}
static function IsSpecialBorb(i_color) {
return((i_color >= Snood_SpecialStart) && (i_color <= Snood_SpecialEnd));
}
static function IsBlockerHead(i_color) {
return((i_color >= Snood_BlockerStart) && (i_color <= Snood_BlockerEnd));
}
static function GetAllHeads() {
var _local2 = new Array(Snood_HeadCount);
var _local1 = 1;
while (_local1 <= Snood_HeadCount) {
_local2[_local1 - 1] = _local1;
_local1++;
}
return(_local2);
}
static var Scaling = 66.6;
static var BallBonusMod = 2;
static var Fps = 60;
static var ScoreWinNotCleared = 500;
static var ScoreWinCleared = 1000;
static var BorbPoolBufferSize = 10;
static var ShotsPerLauncherAdvance = Number.POSITIVE_INFINITY;
static var ComboChainBorbRate = 5;
static var MaxFlyQueueCount = 15;
static var GameResX = 535;
static var GameResY = 400;
static var FireballPower = 5;
static var ArcadeSetCount = 15;
static var ArcadeDiffCount = 1;
static var ArcadeModeCount = 2;
static var Score_Match = 10;
static var Score_MiniRobot = 50;
static var Score_Drop = 100;
static var Score_BankBonusOne = 75;
static var Score_BankBonusTwo = 150;
static var Score_BankBonusThree = 300;
static var Score_ComboBonusStart = 3;
static var Score_ComboBonusBase = 100;
static var Score_ComboBonus = 50;
static var Score_BigDropBonusStart = 10;
static var Score_BigDropBonusBase = 100;
static var Score_BigDropBonus = 50;
static var Score_RubberLubberDropBonus = 200;
static var Score_JellyFishyDropBonus = 400;
static var Score_QueueOverflowBonus = 50;
static var Score_LumpBonus = 100;
static var Score_RubberLubberBonus = 300;
static var Score_DiveBarBonus = 500;
static var Score_LumpDropBonus = 50;
static var SuppressSerializer = false;
static var LowQualityAnimInterval = 3;
static var MedQualityAnimInterval = 2;
static var HighQualityAnimInterval = null;
static var Level_Count = 0;
static var MuzzleVelocity = 24;
static var FireballInitVelocity = 3;
static var FireballAccel = 40;
static var Gravity = 1500;
static var LateralVelocity = 90;
static var VaporizeAcceleration = -2400;
static var SuckVelocity = 1200;
static var Dialog_MainMenu = "MainMenuDialog";
static var Dialog_MainMenuDbg = "MainMenuDialog";
static var Dialog_Options = "OptionsDialog";
static var Dialog_StartPuzzle = "StartPuzzleGameDlg";
static var Dialog_StartArcade = "StartArcadeDlg";
static var Dialog_Help = "HelpDialog";
static var Dialog_BoardLoading = "LoadingDialog";
static var Dialog_GameBoardMenu = "MainMenuButtons";
static var Dialog_GameBoardMenuDbg = "MainMenuButtons";
static var Dialog_Cutscene = "CutsceneDlg";
static var Dialog_ArcadeSetWin = "ArcadeSetWinDlg";
static var Dialog_ArcadeWin = "ArcadeWinDlg";
static var Dialog_Statistics = "StatisticsDlg";
static var Dialog_About = "AboutDlg";
static var Dialog_ChoosePlayerDlg = "ChoosePlayerDlg";
static var Dialog_ChoosePlayerFirstPlayDlg = "ChoosePlayerFirstPlayDlg";
static var Dialog_BoardVertical = "VerticalBoardDialog";
static var Dialog_BoardVerticalDbg = "VerticalBoardDialog";
static var Dialog_BoardCircular = "CircleBoardDialog";
static var Dialog_BoardCircularDbg = "CircleBoardDialog";
static var Dialog_Confirmation = "ConfirmationDlg";
static var Dialog_ArcadeChooseMode = "ArcadeChooseModeDlg";
static var Dialog_TipArcade = "TipArcadeDlg";
static var Dialog_TipMap = "TipMapDlg";
static var Dialog_JourneyWin = "Journey Win";
static var Dialog_Lose = "Generic Lose";
static var Dialog_Achievement = "AchievementDialog";
static var Dialog_Upsell = "UpsellDialog";
static var MaxProjectileBounces = 10;
static var BaseProjectileXScale = 0.1;
static var BaseProjectileYScale = 0.8;
static var ProjectileOvershotScale = 0.3;
static var BoardDiff_Easy = 0;
static var BoardDiff_Medium = 1;
static var BoardDiff_Hard = 2;
static var BoardDiff_Impossible = 3;
static var BoardMode_SuperEasy = 1;
static var BoardMode_Easy = 2;
static var BoardMode_Medium = 3;
static var BoardMode_Hard = 4;
static var BoardMode_Impossible = 5;
static var BoardMode_BallSuperEasy = 6;
static var BoardMode_BallEasy = 7;
static var BoardMode_BallMedium = 8;
static var BoardMode_BallHard = 9;
static var BoardMode_BallImpossible = 10;
static var CutScenesToSkip = [22];
static var Snood_Mary = 1;
static var Snood_Crabby = 2;
static var Snood_Frank = 3;
static var Snood_Fuzzball = 4;
static var Snood_Pearl = 5;
static var Snood_Star = 6;
static var Snood_Holly = 7;
static var Snood_Sandy = 8;
static var Snood_HeadCount = 8;
static var Snood_OrbRed = 9;
static var Snood_OrbOrange = 10;
static var Snood_OrbBlue = 11;
static var Snood_OrbGreen = 12;
static var Snood_OrbGray = 13;
static var Snood_OrbYellow = 14;
static var Snood_OrbPurple = 15;
static var Snood_OrbCyan = 16;
static var Snood_BlockerStart = 17;
static var Snood_Crate = 17;
static var Snood_CrateStrTwo = 18;
static var Snood_CrateStrThree = 19;
static var Snood_LumpStart = 20;
static var Snood_Lump1 = 20;
static var Snood_Lump2 = 21;
static var Snood_Lump3 = 22;
static var Snood_LumpEnd = 22;
static var Snood_MiniRobot = 23;
static var Snood_Slippery = 24;
static var Snood_BlockerEnd = 24;
static var Snood_SpecialStart = 25;
static var Snood_Wild = 26;
static var Snood_SpecialEnd = 26;
static var Snood_BossStart = 27;
static var Snood_BigBoss = 27;
static var Snood_BigBossRobot = 28;
static var Snood_BigBossSandy = 29;
static var Snood_BigBossSquid = 30;
static var Snood_BossEnd = 30;
static var Snood_Count = 30;
static var s_BorbColorDarkTints = [16729156, 16755234, 1606142, 4521796, 16777215, 2271778, 14492415, 16776960, 16729156, 16755234, 1606142, 4521796, 16777215, 2271778, 14492415, 16776960];
static var s_BorbColorTints = [16711680, 16750848, 1606142, 65280, 16777215, 39168, 13369599, 16776960, 16711680, 16750848, 1606142, 65280, 16777215, 39168, 13369599, 16776960];
static var AllBlockerHeads = [Snood_Crate, Snood_CrateStrTwo, Snood_CrateStrThree, Snood_Lump1, Snood_Lump2, Snood_Lump3, Snood_MiniRobot, Snood_Slippery];
static var PowerUp_None = 1;
static var PowerUp_Ghost = 2;
static var PowerUp_BubbleBubble = 3;
static var PowerUp_Aimer = 4;
static var PowerUp_Hook = 5;
static var PowerUp_Fireball = 6;
static var PowerUp_Shroud = 7;
static var PowerUp_Slump = 8;
static var PowerUp_Jelly = 8;
static var PowerUp_JellyStrTwo = 9;
static var PowerUp_JellyStrThree = 10;
static var PowerUp_Lock = 11;
static var PowerUp_Mine = 12;
static var PowerUp_Hypnosis = 14;
static var PowerUp_Count = 15;
static var AllCannonPowerUps = [PowerUp_BubbleBubble, PowerUp_Aimer, PowerUp_Fireball, PowerUp_Hook, PowerUp_Mine];
static var AllCratePowerUps = [PowerUp_BubbleBubble, PowerUp_Aimer, PowerUp_Hook, PowerUp_Mine];
}
Symbol 29 MovieClip [__Packages.Oberon.MathX] Frame 0
class Oberon.MathX
{
function MathX () {
}
static function degToRad(deg) {
return((Math.PI * deg) / 180);
}
static function radToDeg(rad) {
return((rad * 180) / Math.PI);
}
static function roundDecPl(num, decPl) {
var _local2 = Math.pow(10, decPl);
num = num * _local2;
num = Math.round(num);
num = num / _local2;
return(num);
}
static function roundTo(num, roundToInterval) {
if (roundToInterval == undefined) {
roundToInterval = 1;
}
return(Math.round(num / roundToInterval) * roundToInterval);
}
static function zeroFill(num, places, trailing, includeSign) {
var _local7 = num < 0;
if (_local7) {
num = -num;
}
var _local1 = String(num);
var _local3 = _local1.length;
var _local2 = 0;
while (_local2 < (places - _local3)) {
if (trailing) {
_local1 = _local1 + "0";
} else {
_local1 = "0" + _local1;
}
_local2++;
}
if (_local7) {
_local1 = "-" + _local1;
} else if (includeSign) {
_local1 = "+" + _local1;
}
return(_local1);
}
static function zeroAddPlaces(num, places) {
var _local2 = String(num);
var _local4 = _local2.indexOf(".");
var _local3 = places - ((_local2.length - _local4) - 1);
if (_local4 == -1) {
_local3 = places;
_local2 = _local2 + ".";
}
var _local1 = 0;
while (_local1 < _local3) {
_local2 = _local2 + "0";
_local1++;
}
return(_local2);
}
static function randRange(min, max, decPl) {
if (decPl == undefined) {
return(Math.round((Math.random() * (max - min)) + min));
}
var _local3 = ((max - min) * Math.pow(10, decPl)) + 1;
var _local1 = Math.random() * _local3;
_local1 = Math.floor(_local1);
_local1 = _local1 / Math.pow(10, decPl);
_local1 = _local1 + min;
return(_local1);
}
static function averageArray(a) {
if (a.length == 0) {
return(0);
}
var _local3 = 0;
var _local1 = 0;
while (_local1 < a.length) {
_local3 = _local3 + a[_local1];
_local1++;
}
return(_local3 / a.length);
}
static function dec2hex(dec) {
var _local2 = "0123456789ABCDEF";
var _local1;
var _local4;
if (dec > 15) {
_local1 = _local2.charAt(Math.floor(dec / 16));
_local4 = _local2.charAt(dec - (_local1 * 16));
} else {
_local1 = 0;
_local4 = _local2.charAt(dec);
}
return(_local1 + _local4);
}
static function randIntRange(lower, upper) {
return(Math.floor(Math.random() * (upper - lower)) + lower);
}
static function randInt(upper) {
return(Math.floor(Math.random() * upper));
}
static function shuffleArray(ar) {
var _local1;
var _local3;
var _local4;
_local1 = ar.length - 1;
while (_local1 > 0) {
_local3 = Math.floor(Math.random() * (_local1 + 1));
if (_local1 == _local3) {
} else {
_local4 = ar[_local1];
ar[_local1] = ar[_local3];
ar[_local3] = _local4;
}
_local1--;
}
}
}
Symbol 30 MovieClip [__Packages.Core.DialogUtil] Frame 0
class Core.DialogUtil
{
function DialogUtil () {
}
static function pushMc(inDialog, inSymbolName, inInitObject) {
var _local3 = Object(CGame.Root).getNextHighestDepth();
var _local2 = Object(CGame.Root).attachMovie(inSymbolName, "Dialog" + _local3, _local3, inInitObject);
CDebug.Assert(_local2 != null, "Core.DialogUtil.pushMc()", "Couldn't create symbol " + inSymbolName);
if (inDialog) {
_dialogStack.push(_local2);
if (!doTransitionIn(_local2)) {
_local2._alpha = 100;
}
} else {
_local2.cacheAsBitmap = true;
_backStack.push(_local2);
}
_local2._x = _global.MovieWidth / 2;
_local2._y = _global.MovieHeight / 2;
if (_local2.Name == undefined) {
_local2.Name = inSymbolName;
}
return(_local2);
}
static function OnTransitionInComplete() {
MovieClip(m_InTransition.m_Obj).cacheAsBitmap = false;
m_InTransition = null;
}
static function OnTransitionOutComplete() {
MovieClip(m_OutTransition.m_Obj).removeMovieClip();
m_OutTransition = null;
}
static function ToString() {
var _local4 = "Dialog manifest:\n";
var _local1 = 0;
while (_local1 < _dialogStack.length) {
var _local2 = MovieClip(_dialogStack[_local1]);
var _local3 = MovieClip(_backStack[_local1]);
_local4 = _local4 + (((((((((((((((((((((" (" + (_local1 * 2)) + ") ") + _local3.Name) + String(_local3)) + "( ") + "mc,") + "back,") + (_local3._visible ? "visible" : "hidden")) + ")\n") + " (") + ((_local1 * 2) + 1)) + ") ") + _local2.Name) + String(_local2)) + "( ") + ((CDialog(_local2) != null) ? "dialog" : "mc")) + ",") + (((_local1 % 2) == 0) ? "back" : "front")) + ",") + (_local2._visible ? "visible" : "hidden")) + ")\n");
_local1++;
}
return(_local4);
}
static function CanPush() {
return(((_dialogStack.length == 0) || (CDialog(Top()) == null)) || (!CDialog(Top()).TopMostOnly));
}
static function Push(inSymbolName, inInitObject, inShowBackground) {
if (!CanPush()) {
CDebug.WriteLine("DialogUtil.Push()", "Can't push on top of TopMostOnly dialog " + CDialog(Top()).Name);
}
CDialog(Top()).OnLoseFocus();
CDebug.WriteLine("DialogUtil.Push()", inSymbolName);
if (inShowBackground == undefined) {
inShowBackground = true;
}
ClearForTransition();
var _local4 = _dialogStack.length == 0;
var _local1 = pushMc(false, "Modal Background");
_local1.useHandCursor = false;
_local1.onRollOver = function () {
};
_local1.onRollOut = function () {
};
_local1.onPress = function () {
};
_local1.onDragOut = function () {
};
_local1.onDragOver = function () {
};
_local1.onRelease = function () {
};
_local1.onReleaseOutside = function () {
};
_local1.onKeyDown = function () {
};
_local1.onKeyUp = function () {
};
_local1.onMouseDown = function () {
};
_local1.onMouseMove = function () {
};
_local1.onMouseUp = function () {
};
_local1.onPress = function () {
};
if (!inShowBackground) {
_local1._alpha = 0;
}
var _local3 = MovieClip(pushMc(true, inSymbolName, inInitObject));
var _local2 = CDialog(_local3);
if (_local2 != null) {
if (!_local2.BackEnabled) {
_local1.removeMovieClip();
_backStack[_backStack.length - 1] = null;
} else if (!_local2.BackVisible) {
_local1._alpha = 0;
} else {
_local1._alpha = _local2.BackAlpha;
}
if (_local4) {
_local2.OnFirstFocus();
}
}
updateDialogs();
return(_local3);
}
static function UpdateMouseMode() {
if (((((((CDialog(Top()) != null) && (CDialog(Top()).Name == "CBoardDlg")) && (CGame.Root._xmouse <= Constants.GameResX)) && (CGame.Root._xmouse >= 0)) && (CGame.Root._ymouse <= Constants.GameResY)) && (CGame.Root._ymouse >= 0)) && (!m_ForceShow)) {
Mouse.hide();
} else {
Mouse.show();
}
}
static function OnMouseDown() {
Top().OnMouseDown();
}
static function doTransitionIn(i_mc) {
if ((CDialog(i_mc) != null) && (m_InTransition == null)) {
if (!(CDialog(i_mc).Transition === CDialog.Transition_Alpha)) {
} else {
trace("TRANSITION IN");
i_mc.cacheAsBitmap = true;
m_InTransition = new Core.CTween(i_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, CDialog.s_TransFadeInTime);
m_InTransition.m_CompleteEvent.PushBehaviorRunOnce(OnTransitionInComplete);
return(true);
}
}
return(false);
}
static function updateDialogs() {
var _local3 = false;
var _local2 = _dialogStack.length - 1;
while (_local2 >= 0) {
var _local4 = MovieClip(_backStack[_local2]);
var _local5 = MovieClip(_dialogStack[_local2]);
var _local1 = CDialog(_local5);
_local4._visible = !_local3;
_local5._visible = !_local3;
if (_local1 != null) {
_local1.SetEnabled(!_local3);
_local4._visible = _local4._visible && (_local1.BackEnabled);
}
if (!_local3) {
if (((_local1 == null) || (!_local1.BackEnabled)) || (_local1.BackVisible && (_local1.BackAlpha == 100))) {
_local3 = false;
}
}
_local2--;
}
UpdateMouseMode();
var _local6 = CDialog(Top());
if (_local6 != null) {
_local6.OnFocus();
}
if (_local6.Name == "CBoardDlg") {
CGame.Root._quality = "MEDIUM";
} else {
CGame.Root._quality = "HIGH";
}
}
static function SwitchTo(i_dialogName, i_noRecycle) {
var _local4 = null;
CDebug.WriteLine("DialogUtil.SwitchTo()", (i_dialogName + ",") + _dialogStack.length);
var _local2 = _dialogStack.length - 1;
while ((_local4 == null) && (_local2 >= 0)) {
var _local6 = MovieClip(_backStack[_local2]);
var _local1 = MovieClip(_dialogStack[_local2]);
var _local3 = CDialog(_local1);
if ((!i_noRecycle) && (((_local3 != null) && (_local3.Name == i_dialogName)) || (_local1.Name == i_dialogName))) {
CloseAllNotVisibleBeneathMc(_local1);
if (!doTransitionIn(_local1)) {
_local1._alpha = 100;
}
_local4 = _local1;
} else {
Pop(null, true, true);
}
_local2--;
}
if (_local4 == null) {
Push(i_dialogName);
}
return(_local4);
}
static function OnSpaceDown() {
if (_dialogStack.length > 0) {
Top().OnSpaceDown();
}
}
static function OnEscDown() {
if (_dialogStack.length > 0) {
Top().OnEscDown();
}
}
static function OnEnterDown() {
if (_dialogStack.length > 0) {
Top().OnEnterDown();
}
}
static function OnControlDown() {
if (_dialogStack.length > 0) {
Top().OnControlDown();
}
}
static function OnBackSpaceDown() {
if (_dialogStack.length > 0) {
Top().OnBackSpaceDown();
}
}
static function StackSize() {
return(_dialogStack.length);
}
static function CloseAllNotVisibleBeneathMc(i_dialog) {
CDebug.WriteLine("DialogUtil.CloseAllNotVisibleBeneath()", String(i_dialog));
var _local5 = false;
var _local4 = false;
var _local1 = _dialogStack.length - 1;
while (_local1 >= 0) {
var _local2 = MovieClip(_dialogStack[_local1]);
var _local6 = MovieClip(_backStack[_local1]);
var _local3 = CDialog(_dialogStack[_local1]);
if (_local5) {
removeAt(_local1);
} else if (_local4) {
if (!_local3._visible) {
_local5 = true;
}
} else if (_local2 == i_dialog) {
_local4 = true;
}
_local1--;
}
CDebug.Assert(_local4, "DialogUtil.CloseAllNotVisibleBeneath()", "Couldn't find dialog in stack");
}
static function Top() {
return(MovieClip(_dialogStack[_dialogStack.length - 1]));
}
static function Pop(i_validateName, i_immediate, i_fromSwitchTo) {
CDebug.AssertWarn(_dialogStack.length > 0, "DialogUtil.Pop()", "Empty stack");
if (_dialogStack.length > 0) {
if (CDialog(_dialogStack[_dialogStack.length - 1]) != null) {
CDialog(_dialogStack[_dialogStack.length - 1]).Close(i_immediate);
} else {
removeAt(_dialogStack.length - 1);
}
}
}
static function Close(i_mc) {
var _local1 = _dialogStack.length;
while (_local1 >= 0) {
if (_dialogStack[_local1] == i_mc) {
removeAt(_local1);
return(undefined);
}
_local1--;
}
}
static function removeAt(i_index, i_validateName) {
CDebug.Assert(_dialogStack.length > i_index, "DialogUtil.removeAt()", "Stack too small for remove");
var _local6 = MovieClip(_backStack[i_index]);
var _local2 = MovieClip(_dialogStack[i_index]);
if (i_validateName != undefined) {
CDebug.Assert(_local2.Name == i_validateName, "Core.DialogUtil.removeAt", (((("Pop dialog " + Top.Name) + " does not match expected name ") + i_validateName) + " at index ") + i_index);
}
var _local4 = i_index == (_dialogStack.length - 1);
if (_local4) {
ClearForTransition();
}
var _local5 = false;
if (_local4) {
if ((CDialog(_local2) != null) && (m_OutTransition == null)) {
if (!(CDialog(_local2).Transition === CDialog.Transition_Alpha)) {
} else {
trace("TRANSITION OUT");
_local2.cacheAsBitmap = true;
m_OutTransition = new Core.CTween(_local2, "_alpha", mx.transitions.easing.Regular.easeOut, _local2._alpha, 0, CDialog.s_TransFadeInTime);
m_OutTransition.m_CompleteEvent.PushBehaviorRunOnce(OnTransitionOutComplete);
_local5 = true;
}
}
}
if (!_local5) {
}
_local2._visible = false;
Oberon.CEnterFrameEvent.AddEvent(_local2, mx.utils.Delegate.create(_local2, function () {
this.removeMovieClip();
}), true);
if ((CDialog(_local2) && (m_InTransition != null)) && (m_InTransition.m_Obj == _local2)) {
m_InTransition.StopUpdates();
m_InTransition = null;
}
_local6.removeMovieClip();
_dialogStack.splice(i_index, 1);
_backStack.splice(i_index, 1);
updateDialogs();
}
static function PopAll() {
CDebug.WriteLine("DialogUtil.PopAll()", "");
while (_dialogStack.length > 0) {
Pop(null, true, true);
}
}
static function ClearForTransition() {
if (Top() != null) {
Top().HideAllTips();
}
}
static function OnKeyDown(i_key) {
if (_dialogStack.length != 0) {
Top().OnKeyDown(i_key);
}
}
static var _dialogStack = [];
static var _backStack = [];
static var m_InTransition = null;
static var m_OutTransition = null;
static var m_ForceShow = false;
}
Symbol 31 MovieClip [__Packages.mx.transitions.easing.Regular] Frame 0
class mx.transitions.easing.Regular
{
function Regular () {
}
static function easeIn(t, b, c, d) {
t = t / d;
return(((c * t) * t) + b);
}
static function easeOut(t, b, c, d) {
t = t / d;
return((((-c) * t) * (t - 2)) + b);
}
static function easeInOut(t, b, c, d) {
t = t / (d / 2);
if (t < 1) {
return((((c / 2) * t) * t) + b);
}
t--;
return((((-c) / 2) * ((t * (t - 2)) - 1)) + b);
}
static var version = "1.1.0.52";
}
Symbol 32 MovieClip [__Packages.Oberon.CEnterFrameEvent] Frame 0
class Oberon.CEnterFrameEvent extends Oberon.CEvent
{
var PushBehavior, _behaviors, _context;
function CEnterFrameEvent (inContext, inOnEnterFrameFunc) {
super(inContext);
if (inOnEnterFrameFunc != undefined) {
_onEnterFrameFunc = inOnEnterFrameFunc;
PushBehavior(_onEnterFrameFunc, false);
}
}
static function AddEvent(inMovieClip, inFunction, inRunOnce) {
return(GetEvent(inMovieClip).PushBehavior(inFunction, inRunOnce));
}
static function AddEventWithArg(inMovieClip, inFunction, inArg, inRunOnce) {
return(GetEvent(inMovieClip).PushBehaviorWithArg(inFunction, inArg, inRunOnce));
}
static function GetEvent(inMovieClip) {
var _local3 = null;
if (inMovieClip.EnterFrameEvent == null) {
inMovieClip.EnterFrameEvent = new Oberon.CEnterFrameEvent(inMovieClip, inMovieClip.onEnterFrame);
inMovieClip.onEnterFrame = function () {
this.EnterFrameEvent.Fire();
};
}
return(Oberon.CEnterFrameEvent(inMovieClip.EnterFrameEvent));
}
static function HasEvent(inMovieClip) {
return(inMovieClip.EnterFrameEvent != null);
}
function Fire() {
super.Fire();
cleanupIfEmpty();
}
function RemoveBehaviorByFunc(inFunc) {
super.RemoveBehaviorByFunc(inFunc);
cleanupIfEmpty();
}
function RemoveBehaviorById(inId) {
super.RemoveBehaviorById(inId);
cleanupIfEmpty();
}
function cleanupIfEmpty() {
if ((_behaviors.length == 0) && (_onEnterFrameFunc == null)) {
_context.onEnterFrame = null;
_context.EnterFrameEvent = null;
} else if ((_behaviors.length == 1) && (_onEnterFrameFunc != null)) {
MovieClip(_context).onEnterFrame = _onEnterFrameFunc;
_context.EnterFrameEvent = null;
}
}
var _onEnterFrameFunc = null;
}
Symbol 33 MovieClip [__Packages.Core.Button] Frame 0
class Core.Button extends Core.CUIComponent
{
var useHandCursor, stop, gotoAndStop, gotoAndPlay, _parent;
function Button () {
super();
useHandCursor = false;
}
function get Name() {
return(m_name);
}
function set Name(inVal) {
m_name = inVal;
//return(Name);
}
function onLoad() {
super.onLoad();
stop();
}
function onRollOver() {
if (_enabled) {
gotoAndStop("over");
gotoAndPlay("NormalToHover");
}
}
function onRollOut() {
if (_enabled) {
gotoAndStop("default");
gotoAndPlay("HoverToNormal");
}
}
function onPress() {
if (_enabled) {
gotoAndStop("down");
gotoAndPlay("HoverToPushed");
}
}
function onDragOut() {
if (_enabled) {
gotoAndStop("over");
gotoAndPlay("PushedToHover");
}
}
function onDragOver() {
if (_enabled) {
gotoAndStop("down");
gotoAndPlay("HoverToPushed");
}
}
function onRelease() {
if (_enabled) {
gotoAndStop("over");
gotoAndPlay("PushedToHover");
((onClick(this) || (Object(_parent).onClick(this))) || (Object(_parent)._parent.onClick(this))) || (Object(_parent)._parent._parent.onClick(this));
}
}
function onReleaseOutside() {
if (_enabled) {
gotoAndStop("default");
gotoAndPlay("HoverToNormal");
}
}
function get Enabled() {
return(_enabled);
}
function set Enabled(inEnabled) {
if (_enabled != inEnabled) {
_enabled = inEnabled;
if (_enabled) {
gotoAndPlay(1);
} else {
gotoAndPlay("Disabled");
}
}
//return(Enabled);
}
function onClick(i_context) {
}
function onRegister(i_context) {
}
var _enabled = true;
var m_name = "";
}
Symbol 34 MovieClip [__Packages.CLevelManifest] Frame 0
class CLevelManifest
{
var m_sets, m_LoadingXml, m_Loaded;
function CLevelManifest () {
if (G != null) {
CDebug.Assert(false, "CLevelManifest", "Loading a second level manifest");
}
G = this;
CGame.LevelManifest = this;
m_sets = [];
m_LoadingXml = false;
m_Loaded = false;
}
function LoadLevelManifests(inManifestFile) {
CDebug.WriteLine("LoadLevelManifests", "Loading " + inManifestFile);
m_LoadingXml = true;
var _local2 = new XML();
_local2.ignoreWhite = true;
_local2.onLoad = function () {
CLevelManifest.G.parseLevelManifestXML(this);
};
_local2.load(inManifestFile);
}
function GetSet(i_setName) {
CDebug.Assert(m_Loaded, this, "manifest not loaded yet");
return(m_sets[i_setName]);
}
function SetExists(i_setName) {
CDebug.Assert(m_Loaded, this, "manifest not loaded yet");
return(m_sets[i_setName] != undefined);
}
function parseLevelManifestXML_NC(inManifestXML) {
G.parseLevelManifestXML(inManifestXML);
}
function parseLevelManifestXML(inManifestXML) {
CDebug.WriteLine("Level", "Parsing XML Manifest");
if (inManifestXML.status != Oberon.XmlX.__get__XmlStatus_Success()) {
CDebug.Assert(false, Level, "XML load/parse failed: " + Oberon.XmlX.getXmlStatusDesc(inManifestXML.status), true);
return(undefined);
}
var _local5 = inManifestXML;
var _local4 = _local5.firstChild;
CDebug.Assert(_local5.hasChildNodes(), Level, "XML Doc is empty (or doesn't exist).", true);
CDebug.Assert(_local4.nodeName == "LevelManifest", Level, ("First node name is invalid ('" + _local4.nodeName) + "'). Expected 'LevelManifest'.");
var _local2 = _local4.firstChild;
while (_local2 != null) {
if (_local2.nodeName == "LevelSet") {
var _local3 = new CLevelManifestSet(_local2);
addSet(_local3);
} else {
CDebug.Assert(false, this, "Unexpected non-set node : " + _local2.nodeName);
}
_local2 = _local2.nextSibling;
}
m_LoadingXml = false;
m_Loaded = true;
CDebug.WriteLine("Level", "Completed level manifest parse");
}
function addSet(i_set) {
CDebug.Assert(m_sets[i_set.Name] == undefined, this, "Set defined more than once in manifest : " + i_set.Name);
m_sets[i_set.Name] = i_set;
}
static var G = null;
}
Symbol 35 MovieClip [__Packages.CLevelManifestSet] Frame 0
class CLevelManifestSet
{
var Name, Levels, DisplayName;
function CLevelManifestSet (i_srcNode) {
Name = "<undefined>";
Levels = [];
if (i_srcNode != undefined) {
parseXml(i_srcNode);
}
}
function get Count() {
return(Levels.length);
}
function parseXml(i_srcNode) {
Name = i_srcNode.attributes.Name;
DisplayName = i_srcNode.attributes.DisplayName;
var _local2 = i_srcNode.firstChild;
while (_local2 != null) {
if (_local2.nodeName == "LevelFile") {
var _local3 = new CLevelManifestFile(_local2.attributes.Name, Constants.StringToBoardMode(String(_local2.attributes.Mode)), String(_local2.firstChild.nodeValue), (Name == "Journey") && (Levels.length != 0));
addLevel(_local3);
} else {
CDebug.Assert(false, this, "Unexpected non-set node : " + _local2.nodeName);
}
_local2 = _local2.nextSibling;
}
}
function GetLevel(i_levelId) {
CDebug.Assert((i_levelId >= 0) && (i_levelId < Levels.length), this, "GetLevel() : Invalid level given: " + i_levelId, true);
return(Levels[i_levelId]);
}
function GetLevelFullName(i_levelId) {
var _local2 = GetLevel(i_levelId).Name.split("\\n");
return(_local2[0]);
}
function GetDisplayName(i_levelId) {
return(GetLevel(i_levelId).Name.split("\\n").join(newline));
}
function addLevel(i_level) {
Levels.push(i_level);
}
function Clone(i_name) {
var _local3 = new CLevelManifestSet();
if (i_name != undefined) {
_local3.Name = i_name;
} else {
_local3.Name = Name;
}
var _local2 = 0;
while (_local2 < Levels.length) {
_local3.Levels.push(Levels[_local2]);
_local2++;
}
return(_local3);
}
function Append(i_set) {
var _local2 = 0;
while (_local2 < i_set.Levels.length) {
Levels.push(i_set.Levels[_local2]);
_local2++;
}
}
function Randomize(i_firstValue) {
Core.Utility.ShuffleArray(Levels);
}
}
Symbol 36 MovieClip [__Packages.CLevelManifestFile] Frame 0
class CLevelManifestFile
{
var Name, Mode, FileName, Locked;
function CLevelManifestFile (i_name, i_mode, i_fileName, i_locked) {
Name = i_name;
Mode = i_mode;
FileName = i_fileName;
Locked = i_locked;
}
function ToString() {
return((((((((((("Name: " + Name) + newline) + "Mode: ") + Mode) + newline) + "FileName: ") + FileName) + newline) + "Locked: ") + Locked) + newline);
}
}
Symbol 37 MovieClip [__Packages.Core.Utility] Frame 0
class Core.Utility
{
static var seed;
function Utility () {
}
static function ShuffleArray(ar) {
var _local1;
var _local3;
var _local4;
_local1 = ar.length - 1;
while (_local1 > 0) {
_local3 = Math.floor(Math.random() * (_local1 + 1));
if (_local1 == _local3) {
} else {
_local4 = ar[_local1];
ar[_local1] = ar[_local3];
ar[_local3] = _local4;
}
_local1--;
}
}
static function rnd() {
seed = ((seed * 9301) + 49297) % 233280;
return(seed / 233280);
}
static function newSeed() {
seed = Math.random() * 233280;
return(seed);
}
static function setSeed(inSeed) {
seed = inSeed;
}
static function rand(number) {
return(Math.ceil(rnd() * number));
}
static function MultiDimensionalArray(inRows, inCols) {
var _local2 = new Array(inRows);
var _local1 = 0;
while (_local1 < inRows) {
_local2[_local1] = new Array(inCols);
_local1++;
}
return(_local2);
}
}
Symbol 38 MovieClip [__Packages.GameState] Frame 0
class GameState
{
function GameState () {
}
static function IsFrozen() {
return(m_gameFrozen);
}
static function GetBaseLevel() {
var _local1 = CurrentLevel;
if (_local1 >= Constants.ArcadeSetCount) {
_local1 = _local1 - Constants.ArcadeSetCount;
}
_local1 = _local1 + (CurrentRepeatCount + 1);
return(_local1);
}
static function get CutScenesEnabled() {
return(false);
}
static function set LastCutSceneLevel(inCutSceneLevel) {
m_LastCutSceneLevel = inCutSceneLevel;
//return(LastCutSceneLevel);
}
static function get LastCutSceneLevel() {
return(m_LastCutSceneLevel);
}
static function set CurrentLevel(inLevel) {
CDebug.WriteLine("GameState", "Setting the current level to: " + inLevel);
m_CurrentLevelArcade = inLevel;
//return(CurrentLevel);
}
static function get CurrentLevel() {
return(m_CurrentLevelArcade);
}
static function get CurrentGameMode() {
return(m_CurrentGameMode);
}
static function set CurrentGameMode(i_val) {
m_CurrentGameMode = i_val;
//return(CurrentGameMode);
}
static function GetCurrentArcadeSetLevel() {
var _local1 = CurrentLevel;
if (IsCurrentArcadeModeBall()) {
_local1 = _local1 - (Constants.ArcadeSetCount * Constants.ArcadeDiffCount);
}
_local1 = _local1 - (int(_local1 / Constants.ArcadeSetCount) * Constants.ArcadeSetCount);
return(_local1);
}
static function IsCurrentArcadeModeBall() {
return(IsArcadeModeBall(CurrentLevel));
}
static function IsArcadeModeBall(i_level) {
return(i_level >= (Constants.ArcadeSetCount * Constants.ArcadeDiffCount));
}
static function GetCurrentArcadeSetDifficulty() {
return(GetArcadeSetDifficulty(CurrentLevel));
}
static function GetArcadeSetDifficulty(i_level) {
var _local1 = i_level;
if (IsCurrentArcadeModeBall()) {
_local1 = _local1 - (Constants.ArcadeSetCount * Constants.ArcadeDiffCount);
}
return(int(_local1 / Constants.ArcadeSetCount));
}
static function GetArcadeLevel(i_diff, i_setLevel, i_modeBall) {
return(((i_diff * Constants.ArcadeSetCount) + i_setLevel) + (i_modeBall ? (Constants.ArcadeDiffCount * Constants.ArcadeSetCount) : 0));
}
static function GetCurrentLevelSet() {
return(GetLevelSet());
}
static function GetLevelSet() {
return("Arcade");
}
static function Unfreeze(i_killOld) {
if (i_killOld) {
Core.CTween.KillFrozenTweens();
}
if (m_gameFrozen) {
CDebug.WriteLine("GameState.Unfreeze", "Unfreeze");
m_gameFrozen = false;
if (CDialog(Core.DialogUtil.Top()) != null) {
CDialog(Core.DialogUtil.Top()).OnUnfreeze();
}
Core.CTween.Unfreeze();
}
}
static function Freeze(i_killOld) {
if (!m_gameFrozen) {
CDebug.WriteLine("GameState.Freeze", "Freeze");
m_gameFrozen = true;
if (CDialog(Core.DialogUtil.Top()) != null) {
CDialog(Core.DialogUtil.Top()).OnFreeze();
}
if (i_killOld) {
Core.CTween.KillFrozenTweens();
}
Core.CTween.Freeze();
}
}
static function GotoGameBoard() {
if (GenerateNewSeed) {
CurrentSeed = Core.Utility.newSeed();
} else {
Core.Utility.setSeed(CurrentSeed);
GenerateNewSeed = true;
}
Core.CTween.KillFrozenTweens();
Core.CTween.KillRegTweens();
var _local2 = Level.GetBoardModeForLevel(CurrentLevel);
var _local1 = false;
switch (_local2) {
case Constants.BoardMode_SuperEasy :
case Constants.BoardMode_Easy :
case Constants.BoardMode_Medium :
case Constants.BoardMode_Hard :
case Constants.BoardMode_Impossible :
_local1 = false;
Core.DialogUtil.SwitchTo(Constants.Dialog_BoardVertical, true);
break;
case Constants.BoardMode_BallSuperEasy :
case Constants.BoardMode_BallEasy :
case Constants.BoardMode_BallMedium :
case Constants.BoardMode_BallHard :
case Constants.BoardMode_BallImpossible :
_local1 = true;
Core.DialogUtil.SwitchTo(Constants.Dialog_BoardCircular, true);
break;
default :
CDebug.Assert(false, GameState, "UNKNOWN LEVEL TYPE for level: " + CurrentLevel, true);
}
Core.DialogUtil.Push(Constants.Dialog_BoardLoading);
Unfreeze();
}
static function GotoMetaMap() {
m_LastCutSceneLevel = -1;
m_metamapScenePlaying = true;
Core.DialogUtil.Push("MetaMap");
}
static function GotoCredits() {
Core.DialogUtil.PopAll();
Core.DialogUtil.Push(Constants.Dialog_MainMenu);
Core.DialogUtil.Push(Constants.Dialog_About);
}
static function get Event_Play() {
return(0);
}
static function get Event_Win() {
return(1);
}
static function get Event_WinDone() {
return(2);
}
static function get Event_Lose() {
return(3);
}
static function get Event_LoseDone() {
return(4);
}
static function get Event_MetaMapSceneDone() {
return(6);
}
static function get Event_EndGame() {
return(7);
}
static function EventToString(inVal) {
switch (inVal) {
case Event_Play :
return("Event_Play");
case Event_Win :
return("Event_Win");
case Event_WinDone :
return("Event_WinDone");
case Event_Lose :
return("Event_Lose");
case Event_LoseDone :
return("Event_LoseDone");
case Event_MetaMapSceneDone :
return("Event_MetaMapSceneDone");
}
return(("<UNKNOWN>\"" + inVal) + "\"");
}
static function handleEvent(inEvent, inParam) {
if (CGame.DbgTraceGameState) {
CDebug.WriteLine("GameState.handleEvent()", EventToString(inEvent) + " )");
}
switch (inEvent) {
case Event_Play :
m_StartArcadeLevel = CurrentLevel;
CurrentRepeatCount = 0;
CGame.CurrentPlayer.m_Score = 0;
GotoGameBoard();
break;
case Event_Win :
Core.DialogUtil.Push(Constants.Dialog_ArcadeWin);
break;
case Event_WinDone :
Core.DialogUtil.Pop();
GotoGameBoard();
break;
case Event_Lose :
var _local2 = UI.CLoseDlg(Core.DialogUtil.Push(Constants.Dialog_Lose));
break;
case Event_LoseDone :
Core.DialogUtil.Pop();
CGame.CurrentPlayer.ResetBoardVariables();
if (inParam == Constants.__get__WinLoseResult_MainMenu()) {
CPachinko.GameMenu(true);
}
break;
case Event_MetaMapSceneDone :
GotoGameBoard();
break;
case Event_EndGame :
CGame.CurrentPlayer.m_Score = 0;
}
}
static function Play(i_bNoResetToStart) {
if (!i_bNoResetToStart) {
m_CurrentArcadeSetIteration = 0;
if (CurrentLevel < (Constants.ArcadeSetCount * Constants.ArcadeDiffCount)) {
CurrentLevel = (0);
CurrentGameMode = (Constants.BoardMode_SuperEasy);
} else {
CurrentLevel = (Constants.ArcadeSetCount * Constants.ArcadeDiffCount);
CurrentGameMode = (Constants.BoardMode_BallSuperEasy);
}
}
handleEvent(Event_Play);
}
static function Win() {
CGame.Board.SetEnabled(false);
handleEvent(Event_Win);
}
static function WinDone(inWinResult) {
handleEvent(Event_WinDone, inWinResult);
}
static function Lose() {
CGame.Board.SetEnabled(false);
handleEvent(Event_Lose);
}
static function LoseDone(inLoseResult) {
handleEvent(Event_LoseDone, inLoseResult);
}
static function MetaMapSceneDone() {
if (m_metamapScenePlaying) {
FHost.CApp.StopAllAudio();
}
m_metamapScenePlaying = false;
handleEvent(Event_MetaMapSceneDone);
}
static function EndGame() {
handleEvent(Event_EndGame);
}
static function Quit() {
}
static function ExitBoard(i_noRestart) {
CGame.Sounds.StopAllChannel(Constants.__get__SoundChannel_Effects());
CGame.Sounds.StopAllChannel(Constants.__get__SoundChannel_Voice());
CPachinko.ScoreSubmit();
CPachinko.GameEnd(i_noRestart);
Core.DialogUtil.SwitchTo(Constants.Dialog_MainMenu);
}
static function ExitBoardNoRestart() {
ExitBoard(true);
}
static var s_PerfEffectCost = 3;
static var s_PerfHypnoCost = 1;
static var s_PerfFrameAdvCost = 2;
static var s_PerfTweenCost = 0.5;
static var s_PerfMinSwitchDelta = 10000;
static var s_PerfLowQualityMaxes = [null, 200];
static var s_PerfMedQualityMaxes = [100, 200];
static var s_PerfHighQualityMaxes = [150, 300];
static var s_ArcadeSetIterDangerDecr = 3;
static var m_gameFrozen = false;
static var m_lastPerfChangeCost = null;
static var m_PerfCurQuality = null;
static var m_MainMenu = false;
static var CurrentRepeatCount = 0;
static var m_CurrentGameMode = Constants.BoardMode_SuperEasy;
static var m_metamapScenePlaying = false;
static var m_cutscenePlaying = false;
static var StartingLevel = 0;
static var m_showingComputerScores = true;
static var m_CurrentLevel = 0;
static var m_CurrentLevelArcade = 0;
static var m_CurrentLevelJourney = 0;
static var m_LastCutSceneLevel = -1;
static var m_CurrentArcadeSetIteration = 0;
static var m_StartArcadeLevel = 0;
static var BoardsPlayed = 0;
static var CurrentSeed = -1;
static var GenerateNewSeed = true;
}
Symbol 39 MovieClip [__Packages.UI.CLoseDlg] Frame 0
class UI.CLoseDlg extends CDialog
{
var Name, m_score, GetComponent, _mainMenuText, m_loseText, LoseText, GameScoreText, HighScoreAnim;
function CLoseDlg () {
super();
Name = Constants.Dialog_Lose;
m_score = CGame.CurrentPlayer.m_Score;
}
function OnAllComponentsLoaded() {
super.OnAllComponentsLoaded();
if (CWebConfig.__get__BrandName() == "MSN") {
GetComponent("MainMenu")._visible = false;
_mainMenuText._visible = false;
}
}
function onLoad() {
super.onLoad();
CPachinko.ScoreSubmit();
m_loseText = MovieClip(LoseText);
m_loseText.gotoAndStop(Oberon.MathX.randRange(1, m_loseText._totalframes));
TextField(GameScoreText).text = String(m_score);
if (m_shouldPlayHighScoreAnim) {
Core.FrameAdvancer(HighScoreAnim).play();
}
}
function onClick(i_context) {
if (Core.Button(i_context) != null) {
var _local2 = Core.Button(i_context);
switch (_local2.__get__Name()) {
case "TryAgain" :
DoDefaultOkAction();
CPachinko.GameEnd(false);
break;
case "MainMenu" :
Close();
CPachinko.MainMenu(true);
break;
case "MainMenu" :
CGame.Sounds.StopAllChannel(Constants.__get__SoundChannel_Effects());
CGame.Sounds.StopAllChannel(Constants.__get__SoundChannel_Voice());
GameState.EndGame();
Close();
Core.DialogUtil.SwitchTo(Constants.Dialog_MainMenu);
break;
case "GetDeluxe" :
Core.DialogUtil.Push(Constants.Dialog_Upsell);
break;
default :
CDebug.Assert(false, "UI.COptionsDlg", "Unknown button! " + _local2.__get__Name());
}
}
return(true);
}
function DoDefaultCancelAction() {
DoDefaultOkAction();
}
function DoDefaultOkAction() {
DoTryAgain();
}
function DoTryAgain() {
Close();
GameState.LoseDone(Constants.__get__WinLoseResult_PlayAgain());
}
function Close() {
super.Close();
var _local3 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_LoseAnim);
var _local2 = 0;
while (_local2 < _local3.length) {
Effects.CEffect_LoseAnim(_local3[_local2]).Finish();
_local2++;
}
}
function PlayHighScoreAnim() {
m_shouldPlayHighScoreAnim = true;
}
var m_shouldPlayHighScoreAnim = false;
}
Symbol 40 MovieClip [__Packages.Core.FrameAdvancer] Frame 0
class Core.FrameAdvancer extends MovieClip
{
var _totalframes, m_tween;
function FrameAdvancer () {
super.stop();
}
function onLoad() {
s_count++;
if (EndFrame == null) {
EndFrame = _totalframes;
}
m_tween = new Core.CTween(this, "_currentframe", null, BaseFrame, EndFrame, ((Fps / s_Fps) * (EndFrame - BaseFrame)) / s_Fps, true, 0, ((Interval != null) ? (Interval) : (((DefaultInterval != null) ? (DefaultInterval) : null))));
m_tween.m_Looping = Loop;
if (!PlayOnInit) {
stop();
}
}
function onUnload() {
s_count--;
m_tween.StopUpdates();
}
static function GetCount() {
return(s_count);
}
function stop() {
m_tween.StopUpdates();
}
function play() {
m_tween.Resume();
}
function gotoAndPlay(inWhere) {
m_tween.Resume();
}
var s_Fps = 60;
var Fps = 60;
var MinFps = 20;
var Loop = true;
var NoSkip = [];
static var IntervalFPS = 60;
static var DefaultInterval = null;
var BaseFrame = 1;
var EndFrame = null;
var PlayOnInit = true;
var Interval = null;
static var s_count = 0;
}
Symbol 41 MovieClip [__Packages.CEffect] Frame 0
class CEffect
{
var m_CompleteEvent, m_bReadyForDelete, m_bBlocking, m_NeedsUpdate;
function CEffect (i_type) {
m_Type = i_type;
m_Category = getCategory();
m_CompleteEvent = new Oberon.CEvent(this);
m_CompleteEvent.PushBehavior(mx.utils.Delegate.create(this, function () {
this.m_bDone = true;
}));
m_bReadyForDelete = false;
m_bBlocking = false;
m_NeedsUpdate = true;
}
function getCategory() {
switch (m_Type) {
case Type_SleepAnim :
return(Cat_Borb | Cat_OnIdle);
case Type_IdleLookAnim :
return((Cat_Borb | Cat_OnIdle) | Cat_Eye);
case Type_IdleEmoteAnim :
return(((Cat_Borb | Cat_OnIdle) | Cat_Emote) | Cat_Eye);
case Type_IdleBlinkAnim :
return((Cat_Borb | Cat_OnIdle) | Cat_Emote);
case Type_IdleSpecialAnim :
return((Cat_Borb | Cat_OnIdle) | Cat_Emote);
case Type_BankAnim :
return(Cat_Borb);
case Type_ShroudDissolve :
return(Cat_Borb);
case Type_BubbleBubble :
return(Cat_Borb | Cat_TilesetPos);
case Type_Mine :
return(Cat_Borb | Cat_TilesetPos);
case Type_CannonScareAnim :
return(Cat_OnIdle);
case Type_ScareAnim :
return(Cat_OnIdle | Cat_TilesetPos);
case Type_DropAnim :
return(Cat_None);
case Type_WinAnim :
return(Cat_GameTransition);
case Type_LoseAnim :
return(Cat_GameTransition);
case Type_JellyAnim :
return(Cat_Borb | Cat_TilesetPos);
case Type_BorbDropAnim :
return(Cat_Borb | Cat_QueueAdvWait);
case Type_FlyTo :
return(Cat_TilesetPos | Cat_QueueAdvWait);
case Type_BorbFadeOut :
return(Cat_Borb);
case Type_EmoteAnim :
return((Cat_Borb | Cat_Emote) | Cat_Eye);
case Type_StartAnim :
return(Cat_GameTransition);
case Type_ShakeAnim :
return(Cat_Borb | Cat_TilesetPos);
case Type_DelayedSound :
return(Cat_Sound);
case Type_Vaporize :
return(Cat_TilesetPos);
case Type_HypnoBorb :
return(Cat_Borb | Cat_TilesetPos);
case Type_Firework :
return(Cat_None);
}
CDebug.WriteErr("CEffect.getCategory()", "Unknown type " + m_Type);
return(null);
}
function getType() {
switch (m_Type) {
case Type_SleepAnim :
return("Type_SleepAnim");
case Type_IdleLookAnim :
return("Type_IdleLookAnim");
case Type_IdleEmoteAnim :
return("Type_IdleEmoteAnim");
case Type_IdleBlinkAnim :
return("Type_IdleBlinkAnim");
case Type_IdleSpecialAnim :
return("Type_IdleSpecialAnim");
case Type_Mine :
return("Type_Mine");
case Type_ShroudDissolve :
return("Type_ShroudDissolve");
case Type_BubbleBubble :
return("Type_BubbleBubble");
case Type_BankAnim :
return("Type_BankAnim");
case Type_CannonScareAnim :
return("Type_CannonScareAnim");
case Type_ScareAnim :
return("Type_ScareAnim");
case Type_DropAnim :
return("Type_DropAnim");
case Type_LoseAnim :
return("Type_LoseAnim");
case Type_WinAnim :
return("Type_WinAnim");
case Type_JellyAnim :
return("Type_JellyAnim");
case Type_BorbDropAnim :
return("Type_BorbDropAnim");
case Type_FlyTo :
return("Type_FlyTo");
case Type_BorbFadeOut :
return("Type_BorbFadeOut");
case Type_EmoteAnim :
return("Type_EmoteAnim");
case Type_Unknown :
return("Type_Unknown");
case Type_StartAnim :
return("Type_StartAnim");
case Type_ShakeAnim :
return("Type_ShakeAnim");
case Type_DelayedSound :
return("Type_DelayedSound");
case Type_Vaporize :
return("Type_Vaporize");
case Type_HypnoBorb :
return("Type_HypnoBorb");
case Type_Firework :
return("Type_Firework");
}
CDebug.WriteErr("CEffect.getType()", "Unknown type " + m_Type);
return("<UNKNOWN>" + m_Type);
}
static function CreateEffect(i_type) {
switch (i_type) {
case Type_SleepAnim :
return(new Effects.CEffect_SleepAnim());
case Type_IdleLookAnim :
return(new Effects.CEffect_IdleLookAnim());
case Type_IdleEmoteAnim :
return(new Effects.CEffect_IdleEmoteAnim());
case Type_IdleBlinkAnim :
return(new Effects.CEffect_IdleBlinkAnim());
case Type_IdleSpecialAnim :
return(new Effects.CEffect_IdleSpecialAnim());
case Type_BankAnim :
return(new Effects.CEffect_BankAnim());
case Type_ShroudDissolve :
return(new Effects.CEffect_ShroudDissolve());
case Type_BubbleBubble :
return(new Effects.CEffect_BubbleBubble());
case Type_Mine :
return(new Effects.CEffect_Mine());
case Type_CannonScareAnim :
return(new Effects.CEffect_CannonScareAnim());
case Type_ScareAnim :
return(new Effects.CEffect_ScareAnim());
case Type_DropAnim :
return(new Effects.CEffect_DropAnim());
case Type_WinAnim :
return(new Effects.CEffect_WinAnim());
case Type_LoseAnim :
return(new Effects.CEffect_LoseAnim());
case Type_JellyAnim :
return(new Effects.CEffect_JellyAnim());
case Type_BorbDropAnim :
return(new Effects.CEffect_BorbDropAnim());
case Type_FlyTo :
return(new Effects.CEffect_FlyTo());
case Type_BorbFadeOut :
return(new Effects.CEffect_BorbFadeOut());
case Type_EmoteAnim :
return(new Effects.CEffect_EmoteAnim());
case Type_StartAnim :
return(new Effects.CEffect_StartAnim());
case Type_ShakeAnim :
return(new Effects.CEffect_ShakeAnim());
case Type_DelayedSound :
return(new Effects.CEffect_DelayedSound());
case Type_Vaporize :
return(new Effects.CEffect_Vaporize());
case Type_HypnoBorb :
return(new Effects.CEffect_HypnoBorb());
case Type_Firework :
return(new Effects.CEffect_Firework());
}
CDebug.WriteErr("CEffect.getType()", "Unknown type " + i_type);
return(null);
}
function OnComplete() {
m_CompleteEvent.Fire();
m_bReadyForDelete = true;
m_bBlocking = false;
}
function OnIdleEffectInit() {
return(true);
}
function Finish() {
if (!m_bReadyForDelete) {
OnUpdate(true);
}
}
function SetCategory(i_cat) {
m_Category = i_cat;
}
function OnUpdate(i_forceFinish, i_deltaT) {
if (i_forceFinish) {
OnComplete();
return(UpdateCode_FreeEffect);
}
return((m_bReadyForDelete ? (UpdateCode_FreeEffect) : (UpdateCode_DoNothing)));
}
static var UpdateCode_DoNothing = 0;
static var UpdateCode_FreeEffect = 1;
static var Type_SleepAnim = 0;
static var Type_IdleLookAnim = 1;
static var Type_IdleEmoteAnim = 2;
static var Type_IdleBlinkAnim = 3;
static var Type_IdleSpecialAnim = 4;
static var Type_IdleCount = 5;
static var Type_Unknown = 100;
static var Type_Mine = 101;
static var Type_ShroudDissolve = 102;
static var Type_BubbleBubble = 103;
static var Type_BankAnim = 104;
static var Type_CannonScareAnim = 105;
static var Type_ScareAnim = 106;
static var Type_DropAnim = 107;
static var Type_LoseAnim = 109;
static var Type_WinAnim = 110;
static var Type_JellyAnim = 111;
static var Type_BorbDropAnim = 112;
static var Type_FlyTo = 113;
static var Type_BorbFadeOut = 114;
static var Type_EmoteAnim = 115;
static var Type_StartAnim = 116;
static var Type_ShakeAnim = 117;
static var Type_DelayedSound = 118;
static var Type_Vaporize = 119;
static var Type_HypnoBorb = 121;
static var Type_Firework = 122;
static var Cat_None = 0;
static var Cat_OnIdle = 1;
static var Cat_Borb = 2;
static var Cat_MatchAnim = 4;
static var Cat_RotationAnim = 8;
static var Cat_QueueAnim = 16;
static var Cat_GameTransition = 32;
static var Cat_TilesetPos = 128;
static var Cat_QueueAdvWait = 256;
static var Cat_Emote = 512;
static var Cat_Eye = 1024;
static var Cat_CannonDisabled = 2048;
static var Cat_Sound = 4096;
var m_Category = 0;
var m_Type = 0;
}
Symbol 42 MovieClip [__Packages.Effects.CEffect_SleepAnim] Frame 0
class Effects.CEffect_SleepAnim extends CEffect
{
var m_borb, m_NeedsUpdate, m_animMc, m_Type;
function CEffect_SleepAnim (i_borb, i_depth) {
super(CEffect.Type_SleepAnim);
m_borb = null;
m_NeedsUpdate = false;
}
function OnIdleEffectInit() {
var _local12 = true;
var _local9 = CGame.TileSet.GetActiveBorbsCount();
if (_local9 == 0) {
_local12 = false;
} else {
var _local11 = CGame.TileSet.GetActiveBorbsFixedArray();
var _local10 = Oberon.MathX.randRange(0, _local9 - 1);
var _local6 = _local10;
var _local8 = false;
while (!_local8) {
_local6++;
if (_local6 == _local9) {
_local6 = 0;
}
if (_local6 == _local10) {
_local8 = true;
}
var _local5 = SnoodHead(_local11[_local6]);
if (_local5.__get__PowerUp() == Constants.PowerUp_Lock) {
var _local4 = CGame.EffectMgr.m_ActiveEffects;
var _local7 = CGame.EffectMgr.m_ActiveEffectCount;
var _local3 = false;
var _local2 = 0;
while ((!_local3) && (_local2 < _local7)) {
if ((Effects.CEffect_SleepAnim(_local4[_local2]) != null) && (Effects.CEffect_SleepAnim(_local4[_local2]).m_borb == _local5)) {
_local3 = true;
}
_local2++;
}
if (!_local3) {
m_borb = _local5;
_local8 = true;
}
}
}
if (m_borb == null) {
_local12 = false;
} else {
var _local13 = m_borb.getNextHighestDepth();
m_animMc = m_borb.attachMovie("ZzzSleepAnim", "ZzzSleepAnim" + _local13, _local13);
CDebug.Assert(m_animMc != null, "CEffect_SleepAnim.onLoad()", "AnimMc is null");
m_animMc.stop();
m_frameTween = new Core.CTween(m_animMc, "_currentframe", null, 1, m_animMc._totalframes, s_Duration, true);
if (CGame.DbgShowBorbIdleAnim) {
SnoodHead.DbgClearTextOnAllSnoods();
m_borb.DbgSetText("ANIM" + m_Type);
}
m_frameTween.onMotionFinished = mx.utils.Delegate.create(this, OnComplete);
}
}
return(_local12);
}
function OnComplete() {
super.OnComplete();
m_animMc.removeMovieClip();
}
static var s_Duration = 2;
var m_frameTween = null;
}
Symbol 43 MovieClip [__Packages.CPhysicsObject] Frame 0
class CPhysicsObject extends MovieClip
{
var m_Velocity, m_TotalDist, m_IgnoreDist;
function CPhysicsObject () {
super();
m_Velocity = new Core.Vector2(0, 0);
m_TotalDist = 0;
m_IgnoreDist = 0;
}
var m_CollisionCoords = null;
var m_CollisionDists = null;
static var ShotState_Connect = 0;
static var ShotState_Fireball = 1;
static var ShotState_Grab = 2;
static var ShotState_Pull = 3;
static var ShotState_Insert = 4;
}
Symbol 44 MovieClip [__Packages.Core.Vector2] Frame 0
class Core.Vector2
{
var X, Y;
function Vector2 (inX, inY) {
if (inX == undefined) {
inX = 0;
}
if (inY == undefined) {
inY = 0;
}
X = inX;
Y = inY;
}
function Clone() {
return(new Core.Vector2(X, Y));
}
function ToString(i_showMag) {
return(((Oberon.MathX.roundTo(X, 0.1) + ",") + Oberon.MathX.roundTo(Y, 0.1)) + (i_showMag ? ("@" + Oberon.MathX.roundTo(Magnitude(), 0.1)) : ""));
}
function Normalize() {
NormalizeTo(1);
}
function NormalizeProjX(i_val) {
X = i_val * ((X < 0) ? -1 : 1);
Y = Y * (i_val / ((X < 0) ? (-X) : (X)));
}
function NormalizeProjY(i_val) {
X = X * (i_val / ((Y < 0) ? (-Y) : (Y)));
Y = i_val * ((Y < 0) ? -1 : 1);
}
function ConvertFromAngle(inAngle) {
X = s_sin((3.14 * inAngle) / 180);
Y = s_cos((3.14 * inAngle) / 180);
}
static function CreateFromAngle(inAngle, inMag) {
var _local1 = new Core.Vector2(s_sin((3.14 * inAngle) / 180), s_cos((3.14 * inAngle) / 180));
if (inMag != null) {
_local1.NormalizeTo(inMag);
}
return(_local1);
}
function ConvertFromFlashRotation(inAngle) {
ConvertFromAngle(180 - ((inAngle + 360) % 360));
}
function GetAngle() {
return(Math.floor((180 * s_atan(Y / X)) / 3.14) + ((X < 0) ? 180 : 0));
}
function RotateClockwisePerpendicular() {
var _local2 = X;
X = -1 * Y;
Y = _local2;
}
function RotateCounterClockwisePerpendicular() {
var _local2 = Y;
Y = -1 * X;
X = _local2;
}
function RotateAroundOrigin(inTheta) {
var _local6 = Magnitude();
var _local3 = X;
var _local2 = Y;
var _local4 = s_sin(inTheta);
var _local5 = s_cos(inTheta);
X = (_local5 * _local3) - (_local4 * _local2);
Y = (_local4 * _local3) + (_local5 * _local2);
NormalizeTo(_local6);
}
function NormalizeTo(inMagnitude) {
if ((X == 0) && (Y == 0)) {
trace(" !!! Core.Vector2.NormalizedTo() : Trying to normalize zero magnitude vector");
return(undefined);
}
var _local2 = inMagnitude / s_sqrt((X * X) + (Y * Y));
X = X * _local2;
Y = Y * _local2;
}
function Clamp(inMagnitude) {
if (Magnitude() > inMagnitude) {
NormalizeTo(inMagnitude);
}
}
function Set(inX, inY) {
X = inX;
Y = inY;
}
function Copy(inVector) {
X = inVector.X;
Y = inVector.Y;
}
function ProjectionAmount(inVector) {
var _local3 = 0;
var _local2 = 0;
if ((X != 0) || (Y != 0)) {
var _local4 = s_sqrt((X * X) + (Y * Y));
_local3 = X / _local4;
_local2 = Y / _local4;
} else {
trace(" !!! Core.Vector2.ProjectionAmount() : Trying to get projection dot of zero magnitude vector");
}
return((_local3 * inVector.X) + (_local2 * inVector.Y));
}
function NormalizedDot(inVector) {
var _local6 = 0;
var _local5 = 0;
var _local4 = 0;
var _local3 = 0;
if ((X != 0) || (Y != 0)) {
var _local7 = s_sqrt((X * X) + (Y * Y));
_local6 = X / _local7;
_local5 = Y / _local7;
} else {
trace("!!! Core.Vector2.NormalizedDot() : Trying to get normalized dot of zero magnitude vector");
}
if ((inVector.X != 0) || (inVector.Y != 0)) {
var _local7 = s_sqrt((inVector.X * inVector.X) + (inVector.Y * inVector.Y));
_local4 = inVector.X / _local7;
_local3 = inVector.Y / _local7;
} else {
trace(" !!! Core.Vector2.NormalizedDot() : Trying to get normalized dot of zero magnitude vector (rhs)");
}
return((_local6 * _local4) + (_local5 * _local3));
}
function Dot(inVector) {
return((X * inVector.X) + (Y * inVector.Y));
}
function Cross(inVector) {
return((X * inVector.Y) - (inVector.X * Y));
}
function Magnitude() {
return(s_sqrt((X * X) + (Y * Y)));
}
function Multiply(inMult) {
var _local2 = new Core.Vector2();
_local2.X = X * inMult;
_local2.Y = Y * inMult;
return(_local2);
}
function Scale(inScalar) {
X = X * inScalar;
Y = Y * inScalar;
}
function Add(inVector) {
X = X + inVector.X;
Y = Y + inVector.Y;
}
function Subtract(inVector) {
X = X - inVector.X;
Y = Y - inVector.Y;
}
function InverseScale(inInverseScalar) {
if (inInverseScalar != 0) {
X = X / inInverseScalar;
Y = Y / inInverseScalar;
} else {
trace("!!! Core.Vector2.InverseScale() : Trying to apply inverse scale of zero");
}
}
function InvertY() {
Y = Y * -1;
}
function MirrorY() {
Y = 1 - Y;
}
function Reflect(inN) {
var _local2 = new Core.Vector2(inN.X, inN.Y);
var _local4 = Dot(inN);
_local2.Scale(-2 * _local4);
var _local3 = new Core.Vector2(X, Y);
_local3.Subtract(_local2);
}
function GetDifference(inVector) {
var _local2 = new Core.Vector2();
_local2.X = X - inVector.X;
_local2.Y = Y - inVector.Y;
return(_local2);
}
function IsInRange(inVector, inDist) {
return((inDist * inDist) > ComputeDistanceSquare(inVector));
}
function ComputeDistanceSquare(inVector) {
var _local2 = 0;
_local2 = _local2 + ((X - inVector.X) * (X - inVector.X));
_local2 = _local2 + ((Y - inVector.Y) * (Y - inVector.Y));
return(_local2);
}
static var s_sin = Math.sin;
static var s_cos = Math.cos;
static var s_atan = Math.atan;
static var s_sqrt = Math.sqrt;
}
Symbol 45 MovieClip [__Packages.SnoodHead] Frame 0
class SnoodHead extends CPhysicsObject
{
var m_emoteAnim, m_activeTweens, m_bankEffects, AnimCompleteEvent, EmoteCompleteEvent, m_watchMouse, m_Effects, m_animRunning, enabled, m_LastVelocity, m_BorbUnderItem, BorbUnderItem, m_debugOutline, m_headMc, Head, m_itemMc, m_lastBlurAngle, m_lastBlurMag, m_ActiveHeadPos, _alpha, m_orb, _xscale, _yscale, m_emoteMc, m_eyes, _currentframe, DEBUGTXT, _width, _height, _x, _y, m_blurImgMc, m_blurMc, m_blurBmp, getNextHighestDepth, createEmptyMovieClip, LookCompleteCallback;
function SnoodHead () {
super();
m_state = State_Idle;
m_emoteAnim = null;
m_activeTweens = [];
m_bankEffects = [];
AnimCompleteEvent = new Oberon.CEvent(this);
EmoteCompleteEvent = new Oberon.CEvent(this);
AnimCompleteEvent.PushBehavior(mx.utils.Delegate.create(this, OnAnimComplete));
m_watchMouse = false;
m_Effects = new Array();
m_animRunning = 0;
}
static function SizeToGridWidth(inSize) {
switch (inSize) {
case Size_Big :
return(Width_Big);
case Size_Med :
return(Width_Med);
case Size_Small :
return(Width_Small);
case Size_RndMed :
return(Width_RndMed);
case Size_RndSmall :
return(Width_RndSmall);
case Size_RndVerySmall :
return(Width_RndVerySmall);
}
CDebug.WriteErr("SnoodHead.SizeToGridWidth()", "Unknown size:" + inSize);
return(null);
}
static function SizeToGridHeight(inSize) {
switch (inSize) {
case Size_Big :
return(Height_Big);
case Size_Med :
return(Height_Med);
case Size_Small :
return(Height_Small);
case Size_RndMed :
return(Height_RndMed);
case Size_RndSmall :
return(Height_RndSmall);
case Size_RndVerySmall :
return(Height_RndVerySmall);
}
CDebug.WriteErr("SnoodHead.SizeToGridHeight()", "Unknown size:" + inSize);
return(null);
}
static function BoardModeToSnoodSize(inMode) {
switch (inMode) {
case Constants.BoardMode_Easy :
return(Size_Med);
case Constants.BoardMode_Medium :
return(Size_Small);
case Constants.BoardMode_Hard :
return(Size_Small);
case Constants.BoardMode_Impossible :
return(Size_Small);
case Constants.BoardMode_BallEasy :
return(Size_RndMed);
case Constants.BoardMode_BallMedium :
return(Size_RndMed);
case Constants.BoardMode_BallHard :
return(Size_RndSmall);
case Constants.BoardMode_BallImpossible :
return(Size_RndVerySmall);
}
CDebug.WriteErr("SnoodHead.BoardModeToSnoodSize()", "Unknown mode: " + inMode);
return(null);
}
static function SizeToScale(inSize, i_fromMed) {
if (i_fromMed) {
switch (inSize) {
case Size_Big :
return(256);
case Size_Med :
return(85);
case Size_Small :
return(67);
case Size_RndMed :
return(67);
case Size_RndSmall :
return(57);
case Size_RndVerySmall :
return(53);
}
CDebug.WriteErr("SnoodHead.SizeToScale()", "Unknown size:" + inSize);
return(null);
}
switch (inSize) {
case Size_Big :
return(200);
case Size_Med :
return(67);
case Size_Small :
return(52);
case Size_RndMed :
return(52);
case Size_RndSmall :
return(45);
case Size_RndVerySmall :
return(41);
}
CDebug.WriteErr("SnoodHead.SizeToScale()", "Unknown size:" + inSize);
return(null);
}
static function BorbsInState() {
return(m_borbsInState);
}
function onLoad() {
enabled = false;
m_LastVelocity = new Core.Vector2();
m_BorbUnderItem = BorbUnderItem;
CDebug.Assert(m_BorbUnderItem != null, "SnoodHead.onLoad()", "couldn't find m_BorbUnderItem on borb " + this);
m_debugOutline._visible = m_bShowDebugOutline;
}
function OnHeadLoaded() {
if (!m_loaded) {
m_headMc = MovieClip(Head);
CDebug.Assert(m_headMc != null, "SnoodHead.onLoad()", "couldn't find m_headMc on borb " + this);
m_headMc.stop();
m_loaded = true;
m_headMc.onEnterFrame = null;
SetSize(m_size, true);
m_debugOutline._visible = m_bShowDebugOutline;
m_itemMc = MovieClip(m_headMc._item);
m_itemMc.stop();
m_itemMc.cacheAsBitmap = true;
if (m_color == null) {
SetColor(1, true);
} else {
SetColor(m_color, true);
}
if (m_powerUp == null) {
SetPowerUp(1, true);
} else {
SetPowerUp(m_powerUp, true);
}
}
}
function Reset() {
StopBankShotEffects();
FinishTweens();
RemoveBlur();
var _local2 = 0;
while (_local2 < m_Effects.length) {
CEffect(m_Effects[_local2]).Finish();
_local2++;
}
KillEmoteAnim();
m_Effects = [];
m_animRunning = 0;
m_wakeup = false;
m_lastBlurAngle = null;
m_lastBlurMag = null;
ToggleEyeVisibility(true);
CDebug.Assert(m_ActiveHeadPos == null, "SnoodHead.Reset()", "non null m_ActiveHeadPos " + this);
m_ActiveHeadPos = null;
PowerUp = (Constants.PowerUp_None);
m_LastVelocity.X = 0;
m_LastVelocity.Y = 0;
m_NoHook = false;
CDebug.Assert(m_xSlot == null, "SnoodHead.Reset()", (("x/y slot not null on reset " + m_xSlot) + ",") + m_ySlot);
m_xSlot = null;
m_ySlot = null;
ResetScale();
_alpha = 100;
m_bankEffects = [];
m_orb = null;
}
function ResetScale() {
if (m_fromPool) {
_xscale = SizeToScale(m_size, true);
_yscale = _xscale;
}
}
function RemoveFromBoard() {
CDebug.Assert((m_xSlot != null) && (m_ySlot != null), "SnoodHead.RemoveFromBoard()", "x/y slot not defined");
Level.InvalidateSpot(this);
ReturnToPool(this);
}
function get CurAnim() {
return(m_anim);
}
function get LastAnim() {
return(m_lastAnim);
}
function get State() {
return(m_state);
}
function set State(i_state) {
SetState(i_state, false);
//return(State);
}
function SetState(i_state, i_force) {
if ((i_state != m_state) || (i_force)) {
var _local2 = m_state;
m_state = i_state;
if (_local2 == State_OnBoard) {
if (m_xSlot != null) {
CDebug.WriteErr("SnoodHead.SetState()", "head transitioning off board while slot non-null");
DbgSetText("NON_NULL");
}
}
}
}
function IsInPool() {
return(m_state == State_InPool);
}
function get Size() {
return(m_size);
}
function set Size(inVal) {
SetSize(inVal, false);
//return(Size);
}
function SetSize(inVal, i_force) {
if ((inVal != m_size) || (i_force)) {
m_size = inVal;
ResetScale();
}
}
function SetOrb(i_val) {
}
function get Color() {
return(m_color);
}
function set Color(inVal) {
SetColor(inVal, false);
//return(Color);
}
function SetColor(inVal, inForce) {
if ((inVal != m_color) || (inForce)) {
if ((inVal != m_color) && (m_color != null)) {
if ((m_xSlot != null) && (m_color != inVal)) {
CGame.TileSet.UpdateColorCount(m_color, -1);
CGame.TileSet.UpdateColorCount(inVal, 1);
}
}
m_color = inVal;
if (m_loaded) {
m_orb = isPowerUpOrb(m_powerUp);
if (m_headMc._currentframe == (m_color + (m_orb ? (Constants.Snood_HeadCount) : 0))) {
onEmoteLoaded();
} else {
m_headMc.gotoAndStop(m_color + (m_orb ? (Constants.Snood_HeadCount) : 0));
}
}
}
}
function ToggleEyeVisibility(i_val) {
m_eyeVisibility = i_val;
}
function isPowerUpOrb(i_powerUp) {
return(((i_powerUp != Constants.PowerUp_None) && (i_powerUp != Constants.PowerUp_Hypnosis)) && (i_powerUp != Constants.PowerUp_Lock));
}
function isPowerUpConcealing(i_powerUp) {
return((((i_powerUp != Constants.PowerUp_Ghost) && (i_powerUp != Constants.PowerUp_Shroud)) && (i_powerUp != Constants.PowerUp_Lock)) && (!Constants.IsJellyFish(i_powerUp)));
}
function onEmoteLoaded() {
if (!m_loaded) {
return(undefined);
}
KillEmoteAnim();
m_emoteMc = MovieClip(m_headMc._emote);
CDebug.Assert(m_emoteMc != null, "SnoodHead.OnColorChanged()", (("couldn't find _emote clip on color " + m_color) + ":") + this);
m_emoteMc.cacheAsBitmap = true;
m_emoteMc.gotoAndStop(1);
m_emoteMc._visible = isPowerUpConcealing(m_powerUp);
if (Constants.IsBorbRandEmote(m_color)) {
m_randEmoteColor = Oberon.MathX.randRange(1, m_emoteMc._totalframes);
m_emoteMc.gotoAndStop(m_randEmoteColor);
}
SetPowerUp(m_powerUp, true);
updateEmotePowerupAnims();
}
function OnEyesLoaded(i_eyes) {
m_eyes = i_eyes;
m_eyes.LookCompleteCallback = mx.utils.Delegate.create(this, OnLookComplete);
var _local2 = CProcEyes(i_eyes);
if (_local2 != null) {
switch (m_color) {
case Constants.Snood_Crabby :
_local2.MaxX = 1.3;
_local2.MinX = -1.3;
_local2.MaxY = 0.3;
_local2.MinY = -0.3;
break;
case Constants.Snood_Pearl :
_local2.MaxX = 1.4;
_local2.MinX = -1.4;
_local2.MaxY = 0.6;
_local2.MinY = -0.6;
break;
default :
CDebug.WriteErr("SnoodHead.OnEyesLoaded()", "Unexpected procedural eyes loaded for color: " + GetColorText());
}
}
ToggleEyeVisibility(m_eyeVisibility);
if (IsInPool()) {
} else if (m_watchMouse) {
ToggleFollowMouseWithEyes(m_watchMouse, true);
} else {
LookOffCenter();
}
}
function GetColorText() {
return(Constants.GetSnoodByNumber(m_color));
}
function get PowerUp() {
return(m_powerUp);
}
function set PowerUp(inVal) {
SetPowerUp(inVal, false);
//return(PowerUp);
}
function onPowerUpLoaded() {
SetPowerUp(m_powerUp, true);
}
function SetPowerUp(inVal, inForce) {
if ((m_powerUp != inVal) || (inForce)) {
if (m_powerUp == Constants.PowerUp_Hypnosis) {
s_HypnoBorbs--;
}
if (inVal == Constants.PowerUp_Hypnosis) {
s_HypnoBorbs++;
}
m_itemMc.cacheAsBitmap = (((m_powerUp != Constants.PowerUp_Hypnosis) && (m_powerUp != Constants.PowerUp_Jelly)) && (m_powerUp != Constants.PowerUp_JellyStrTwo)) && (m_powerUp != Constants.PowerUp_JellyStrThree);
if (m_powerUp != inVal) {
if (m_powerUp == Constants.PowerUp_Lock) {
m_wakeup = true;
} else if (m_powerUp == Constants.PowerUp_Hypnosis) {
LookOffCenter();
}
}
if (!m_loaded) {
m_powerUp = inVal;
} else {
m_powerUp = inVal;
var _local4 = isPowerUpOrb(m_powerUp);
if (_local4 != m_orb) {
SetColor(m_color, true);
return(undefined);
}
if (m_wakeup) {
KillEmoteAnim();
PlayEmoteAnim("wake");
m_wakeup = false;
}
var _local3;
if (m_color <= Constants.Snood_HeadCount) {
_local3 = ((m_powerUp - 1) * Constants.Snood_HeadCount) + m_color;
} else {
_local3 = ((m_powerUp - 1) * Constants.Snood_HeadCount) + 1;
}
m_itemMc.gotoAndStop(_local3);
updateEmotePowerupAnims();
}
}
}
function updateEmotePowerupAnims() {
if ((m_powerUp == Constants.PowerUp_Hypnosis) && (m_emoteAnim != null)) {
KillEmoteAnim();
}
if ((m_powerUp == Constants.PowerUp_Lock) && (m_emoteAnim != null)) {
KillEmoteAnim();
}
m_emoteMc._visible = isPowerUpConcealing(m_powerUp);
}
function IsOrb() {
return((_currentframe > Constants.Snood_HeadCount) && (_currentframe <= (Constants.Snood_HeadCount * 2)));
}
function GetMainHeadClip() {
return(m_headMc);
}
function GetAnim() {
return(m_anim);
}
function GetEmoteClip() {
return(m_emoteMc);
}
function GetItemClip() {
return(m_itemMc);
}
function DbgSetText(inVal) {
if (DEBUGTXT != null) {
DEBUGTXT.removeMovieClip();
DEBUGTXT = null;
}
var _local2 = CDebug.DrawTextOnMovie(this, inVal);
DEBUGTXT = _local2;
DEBUGTXT._xscale = 100;
DEBUGTXT._yscale = 100;
_local2._x = -(_width / 2);
_local2._y = -(_height / 2);
}
static function DbgShowCoordOnAllSnoods() {
var _local2 = 0;
while (_local2 < m_activeHeads.length) {
var _local1 = SnoodHead(m_activeHeads[_local2]);
if (_local1.m_xSlot != null) {
trace((_local1.GetGridCoord().ToString() + ":") + _local1);
_local1.DbgSetText((_local1.m_xSlot + ",") + _local1.m_ySlot);
}
_local2++;
}
}
static function DbgClearTextOnAllSnoods() {
var _local2 = 0;
while (_local2 < m_activeHeads.length) {
var _local1 = SnoodHead(m_activeHeads[_local2]);
if (_local1.DEBUGTXT != null) {
_local1.DEBUGTXT.removeMovieClip();
_local1.DEBUGTXT = null;
}
_local2++;
}
}
static function DbgGetShowOutline() {
return(m_bShowDebugOutline);
}
static function DbgSetShowOutline(inVal) {
if (m_bShowDebugOutline != inVal) {
m_bShowDebugOutline = inVal;
var _local1 = 0;
while (_local1 < m_activeHeads.length) {
var _local2 = SnoodHead(m_activeHeads[_local1]);
_local2.m_debugOutline._visible = m_bShowDebugOutline;
_local1++;
}
}
}
function DamageCrate() {
CDebug.Assert(((m_color == Constants.Snood_CrateStrThree) || (m_color == Constants.Snood_CrateStrTwo)) || (m_color == Constants.Snood_Crate), "SnoodHead.DamageCrate()", this + " is not a crate!");
CGame.Sounds.PlaySound(Constants.__get__Sound_BreakCrate());
if (Color == Constants.Snood_CrateStrThree) {
SetColor(Constants.Snood_CrateStrTwo);
} else if (Color == Constants.Snood_CrateStrTwo) {
SetColor(Constants.Snood_Crate);
} else {
var _local4 = null;
var _local6 = CGame.Board.m_CurLevelInfo;
var _local3 = _local6.CratePowerupTypeFreq;
var _local5 = Oberon.MathX.randRange(0, 100, 1);
var _local2 = 0;
while ((_local4 == null) && (_local2 < _local3.length)) {
if (_local5 < _local3[_local2]) {
_local4 = _local6.CratePowerupTypes[_local2];
}
_local5 = _local5 - _local3[_local2];
_local2++;
}
if (_local4 == null) {
SetColor(Constants.Snood_Wild);
SetPowerUp(Constants.PowerUp_None);
} else {
var _local7 = CGame.Board.GetRandBorb();
SetColor(_local7.Color);
SetPowerUp(_local4);
}
if (m_powerUp != Constants.PowerUp_Mine) {
DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, Level.m_BasePowerupDropSec);
}
Level.DoDropSnoods();
}
}
function Pause() {
m_paused = true;
}
function Resume() {
m_paused = false;
}
function StopEmote() {
if (m_emoteMc != null) {
CDebug.Assert(m_emoteMc != null, this, "StopEmote(): Couldn't find child movieclip to play emote");
m_emoteMc.gotoAndStop(1);
}
}
function AddTween(i_tween) {
m_activeTweens.push(i_tween);
i_tween.onMotionFinished = mx.utils.Delegate.create(this, OnTweenFinished);
}
function AddEffect(i_effect) {
m_Effects.push(i_effect);
i_effect.m_CompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnEffectComplete));
}
function OnEffectComplete(i_context) {
var _local3 = false;
var _local2 = 0;
while ((!_local3) && (_local2 < m_Effects.length)) {
if (m_Effects[_local2] == i_context) {
_local3 = true;
m_Effects.splice(_local2, 1);
}
_local2++;
}
}
function OnTweenFinished(i_context) {
var _local3 = false;
var _local2 = 0;
while ((!_local3) && (_local2 < m_activeTweens.length)) {
if (m_activeTweens[_local2] == i_context) {
_local3 = true;
m_activeTweens.splice(_local2, 1);
}
_local2++;
}
if ((m_activeTweens.length == 0) && (m_anim != Anim_None)) {
AnimCompleteEvent.Fire();
}
}
function OnAnimComplete() {
m_lastAnim = m_anim;
m_anim = Anim_None;
}
function FinishTweens() {
var _local2 = m_activeTweens.length - 1;
while (_local2 >= 0) {
Core.CTween(m_activeTweens[_local2]).Finish();
_local2--;
}
m_activeTweens = [];
}
function KillTweens() {
var _local2 = m_activeTweens.length - 1;
while (_local2 >= 0) {
Core.CTween(m_activeTweens[_local2]).StopUpdates();
_local2--;
}
m_activeTweens = [];
}
static function StopAllMoveToTweens(i_state) {
var _local1 = 0;
while (_local1 < m_activeHeads.length) {
var _local2 = Object(m_activeHeads[_local1]);
if ((i_state == null) || (_local2.State == i_state)) {
_local2.FinishTweens();
}
_local1++;
}
}
static function StopAllBoardMoveToTweens() {
StopAllMoveToTweens(State_OnBoard);
}
function FlyTo(i_coord, i_duration, i_xFunc, i_yFunc) {
m_anim = Anim_Flying;
KillTweens();
var _local2 = false;
if (_x != i_coord.X) {
AddTween(new Core.CTween(this, "_x", ((i_xFunc == undefined) ? (mx.transitions.easing.Regular.easeOut) : (i_xFunc)), _x, i_coord.X, ((i_duration == undefined) ? 1 : (i_duration)), true));
_local2 = true;
}
if (_y != i_coord.Y) {
AddTween(new Core.CTween(this, "_y", ((i_yFunc == undefined) ? (mx.transitions.easing.Regular.easeOut) : (i_yFunc)), _y, i_coord.Y, ((i_duration == undefined) ? 1 : (i_duration)), true));
_local2 = true;
}
if (!_local2) {
AnimCompleteEvent.Fire();
}
}
function GetGridCoord() {
return(new CCoord(m_xSlot, m_ySlot));
}
function GetPosCoord() {
return(new CCoord(_x, _y));
}
function MoveToCoord(i_coord, i_tween) {
MoveTo(i_coord.X, i_coord.Y, i_tween);
}
function MoveTo(inX, inY, inTween) {
var _local3;
var _local2;
_local3 = inX;
_local2 = inY;
if (inTween) {
if (inTween) {
m_anim = Anim_MovingTo;
}
if (((((m_LastVelocity.X != 0) || (m_LastVelocity.Y != 0)) && (_local3 != _x)) && (_local2 != _y)) && (s_DoImpactTween)) {
var _local4 = m_LastVelocity.Clone();
_local4.NormalizeTo(ImpactTweenVelStr);
CBoard.G.CreateImpactBounceAround(m_xSlot, m_ySlot, _x, _y, _local4);
}
KillTweens();
AddTween(new Core.CTween(this, "_x", mx.transitions.easing.Regular.easeOut, _x, _local3, TweenDuration, true));
AddTween(new Core.CTween(this, "_y", mx.transitions.easing.Regular.easeOut, _y, _local2, TweenDuration, true));
} else {
FinishTweens();
_x = inX;
_y = inY;
}
}
function GetCollisionDist(i_srcCoord, i_srcVel) {
var _local9 = null;
var _local5 = new Core.Vector2(i_srcCoord.X - _x, i_srcCoord.Y - _y);
var _local10 = CCoord.ToGlobal(this);
var _local2 = _local5.Clone();
_local2.Set(_local2.Y, -_local2.X);
_local2.NormalizeTo(_width / 2);
var _local7 = new Core.Vector2(-_local5.X, -_local5.Y);
var _local8 = _local7.Clone();
_local7.Subtract(_local2);
_local8.Add(_local2);
var _local6 = (_local7.GetAngle() + 360) % 360;
var _local4 = (_local8.GetAngle() + 360) % 360;
var _local3 = (i_srcVel.GetAngle() + 360) % 360;
if (_local6 > _local4) {
_local4 = _local4 + 360;
}
if ((_local3 < _local6) && (_local3 < _local4)) {
_local3 = _local3 + 360;
}
if ((_local6 <= (_local3 * s_CollisionSensitivity)) && (_local4 >= (_local3 * s_CollisionSensitivity))) {
return(_local5.Magnitude());
}
return(null);
}
function IsSameTypeAs(i_borb) {
return((i_borb.__get__Color() == m_color) && (i_borb.__get__PowerUp() == m_powerUp));
}
function IsOnGrid() {
return((m_xSlot != null) && (m_ySlot != null));
}
function IsAnimating(i_animType) {
if (i_animType == undefined) {
return((m_activeTweens.length > 0) || (m_anim != Anim_None));
}
return(m_anim == i_animType);
}
function Vaporize(i_immediate, i_applyBonus, i_forceDelay, i_maxDelay, i_vaporizeEffectNumber, i_scaleVaporize) {
var _local2 = Effects.CEffect_Vaporize(CEffect.CreateEffect(CEffect.Type_Vaporize));
if (_local2.OnInit(this, i_immediate, i_applyBonus, i_forceDelay, i_maxDelay, i_vaporizeEffectNumber, i_scaleVaporize)) {
CGame.EffectMgr.AddEffectToActiveList(_local2);
}
}
function RemoveBlur() {
if (m_blurImgMc != null) {
m_blurImgMc.removeMovieClip();
m_blurImgMc = null;
}
if (m_blurMc != null) {
m_blurMc.removeMovieClip();
m_blurMc = null;
}
if (m_blurBmp != null) {
m_blurBmp.dispose();
m_blurBmp = null;
}
m_headMc._visible = true;
}
function AddBlur(i_angle, i_magnitude, i_quality) {
if ((((m_blurImgMc != null) && (m_blurMc != null)) && (m_lastBlurAngle == i_angle)) && (m_lastBlurMag == i_magnitude)) {
return(undefined);
}
RemoveBlur();
if (i_quality == null) {
i_quality = 1;
}
var _local3 = i_magnitude + Math.sqrt((_width * _width) + (_height * _height));
var _local2 = _local3 / 2;
m_blurBmp = new flash.display.BitmapData(_local3, _local3, true, 0);
var _local4 = getNextHighestDepth();
m_blurMc = createEmptyMovieClip("BlurHolder" + _local4, _local4);
m_blurImgMc = m_blurMc.createEmptyMovieClip("Blur", 1);
m_blurImgMc.attachBitmap(m_blurBmp, m_blurImgMc.getNextHighestDepth(), "always", true);
m_blurImgMc._x = -_local2;
m_blurImgMc._y = -_local2;
var _local5 = new flash.geom.Matrix();
_local5.translate(_local2, _local2);
m_blurBmp.draw(this, _local5);
m_blurMc._rotation = i_angle % 360;
m_headMc._visible = false;
var _local6 = new flash.filters.BlurFilter(0, i_magnitude);
_local6.quality = i_quality;
m_blurBmp.applyFilter(m_blurBmp, m_blurBmp.rectangle, new flash.geom.Point(0, 0), _local6);
m_blurImgMc.attachBitmap(m_blurBmp, m_blurImgMc.getNextHighestDepth(), "always", true);
}
function ToggleFollowMouseWithEyes(i_val, i_force) {
if ((m_watchMouse != i_val) || (i_force)) {
m_watchMouse = i_val;
if (m_watchMouse) {
m_eyes.LookTowardsMouse();
} else {
LookOffCenter();
}
}
}
function DropTo(i_dest, i_fallTimeMod, i_delay) {
KillTweens();
var _local2 = Effects.CEffect_BorbDropAnim(CEffect.CreateEffect(CEffect.Type_BorbDropAnim));
if (_local2.OnInit(this, i_dest, ((i_fallTimeMod != null) ? (i_fallTimeMod) : 0), ((i_delay != null) ? (i_delay) : 0))) {
AddEffect(_local2);
CGame.EffectMgr.AddEffectToActiveList(_local2);
}
}
function GetEmoteAnim() {
return(m_emoteAnim);
}
function IsEmoteAnimPlaying() {
return(m_emoteAnim != null);
}
function PlayEmoteAnim(i_name, i_holdLastFrame, i_lookDir, i_lookCoord, i_lookDelay) {
if (m_emoteAnim != null) {
return(null);
}
m_emoteAnim = Effects.CEffect_EmoteAnim(CEffect.CreateEffect(CEffect.Type_EmoteAnim));
if (m_emoteAnim.OnInit(this, i_name, i_holdLastFrame, i_lookDir, i_lookCoord, i_lookDelay)) {
CGame.EffectMgr.AddEffectToActiveList(m_emoteAnim);
m_emoteAnim.m_CompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnEmoteAnimComplete));
m_emoteMc.cacheAsBitmap = false;
if (i_holdLastFrame) {
m_emoteAnim.m_HoldingCallback = mx.utils.Delegate.create(this, OnEmoteAnimComplete);
}
} else {
ToggleEyeVisibility(true);
m_emoteAnim = null;
}
return(m_emoteAnim);
}
function KillEmoteAnim() {
if (m_emoteAnim != null) {
var _local2 = m_emoteAnim;
m_emoteAnim = null;
_local2.Finish();
ToggleEyeVisibility(true);
return(true);
}
ToggleEyeVisibility(true);
return(false);
}
function CompleteEmoteAnim() {
if (m_emoteAnim != null) {
m_emoteMc.cacheAsBitmap = false;
return(m_emoteAnim.Reverse());
}
return(false);
}
function OnEmoteAnimComplete(i_context) {
var _local2 = Effects.CEffect_EmoteAnim(i_context);
CDebug.Assert((m_emoteAnim == null) || (m_emoteAnim == _local2), "SnoodHead.OnEmoteAnimComplete()", "Unexpected emote anim completing!");
if (!_local2.m_HoldAnim) {
m_emoteAnim = null;
LookOffCenter();
}
EmoteCompleteEvent.Fire();
if ((m_emoteAnim == null) && ((m_eyes == null) || (!m_eyes.IsInAnim()))) {
m_emoteMc.cacheAsBitmap = true;
}
}
function HasEyes() {
return(m_eyes != null);
}
function GetEyes() {
return(m_eyes);
}
function LookTowardsDir(i_dir) {
if (m_eyes.LookTowardsDir(i_dir)) {
m_emoteMc.cacheAsBitmap = false;
}
}
function LookTowardsCoord(i_coord) {
if (m_eyes.LookTowardsCoord(i_coord)) {
m_emoteMc.cacheAsBitmap = false;
}
}
function LookOffCenter() {
var _local3 = Oberon.MathX.randRange(0, 360);
var _local2 = Oberon.MathX.randRange(0, 50);
if (m_eyes.LookOffCenter(_local3, _local2)) {
m_emoteMc.cacheAsBitmap = false;
}
}
function LookAtCenter() {
var _local3 = Oberon.MathX.randRange(0, 360);
var _local2 = Oberon.MathX.randRange(0, 50);
if (m_eyes.LookOffCenter(0, 0)) {
m_emoteMc.cacheAsBitmap = false;
}
}
function OnLookComplete() {
if (LookCompleteCallback != null) {
LookCompleteCallback(this);
}
if ((m_emoteAnim == null) || (m_emoteAnim.m_HoldAnim)) {
m_emoteMc.cacheAsBitmap = true;
}
}
function CreateImpactBounce(inFromX, inFromY, inVec, inSecondTier) {
KillTweens();
var _local2 = new Core.Vector2(_x - inFromX, _y - inFromY);
_local2.NormalizeTo(((!inSecondTier) ? (ImpactTweenPosStr) : (ImpactTweenPosStrTierTwo)));
_local2.Add(inVec);
AddTween(new Core.CTween(this, "_x", CustomTweens.Bounce.SingleBounce, _x, _x + _local2.X, ImpactTweenDuration, true, (inSecondTier ? 0.05 : 0)), true);
AddTween(new Core.CTween(this, "_y", CustomTweens.Bounce.SingleBounce, _y, _y + _local2.Y, ImpactTweenDuration, true, (inSecondTier ? 0.05 : 0)), true);
}
function AddBankShot(i_color, i_orient, i_coord) {
var _local6 = true;
var _local5 = 0;
var _local4 = [false, false, false, false];
var _local2 = 0;
while (_local2 < m_bankEffects.length) {
var _local3 = Effects.CEffect_BankAnim(m_bankEffects[_local2]).m_NumberOrient;
if (_local3 != i_orient) {
if (!_local4[_local3]) {
_local5++;
_local4[_local3] = true;
}
} else {
_local6 = false;
}
_local2++;
}
if (_local5 == 0) {
CGame.Sounds.PlaySound(Constants.__get__Sound_Bounce());
} else if (_local5 == 1) {
CGame.Sounds.PlaySound(Constants.__get__Sound_Bounce2x());
} else {
CGame.Sounds.PlaySound(Constants.__get__Sound_Bounce3x());
}
m_bankEffects.push(new Effects.CEffect_BankAnim(CGame.TileSet, CGame.TileSet.GetNextHighestBankDepth(), i_orient, i_coord, i_color, _local6));
}
function StopBankShotEffects() {
var _local2 = 0;
while (_local2 < m_bankEffects.length) {
Effects.CEffect_BankAnim(m_bankEffects[_local2]).FadeOut();
_local2++;
}
}
function PlayBankEffectRewards() {
var _local4 = 0;
var _local3 = 0;
while (_local3 < m_bankEffects.length) {
var _local2 = Effects.CEffect_BankAnim(m_bankEffects[_local3]);
if (_local2.m_CanBonus) {
_local4++;
_local2.PlayRewardAnim(_local4);
} else {
_local2.FadeOut();
}
_local3++;
}
if (_local4 > 2) {
CGame.Sounds.PlaySound(Constants.__get__Sound_Applause());
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MajorBankMatch);
}
if (_local4 == 0) {
CGame.Board.m_AllShotsHaveBankBonus = false;
}
m_bankEffects = [];
return(_local4);
}
function SyncWithInfo(i_info) {
SetColor(i_info.Color);
SetPowerUp(i_info.PowerUp);
}
function ToInfo() {
return(new CBorbInfo(m_color, m_powerUp));
}
function IsFromPool() {
return(m_fromPool);
}
static function CreateSnoodHeadPool(inParent, inStartDepth, inPoolSize, inSnoodSize) {
CleanupAllSnoods();
s_newHeadDepth = inStartDepth;
m_currentPoolParent = inParent;
CDebug.WriteLine("SnoodHead", ((("Create Head Pool (attach to " + m_currentPoolParent) + ", size ") + inPoolSize) + " )");
if (inPoolSize != undefined) {
s_headPoolSize = inPoolSize;
}
var _local1 = 0;
while (_local1 < s_headPoolSize) {
createHeadAndAddToPool(inSnoodSize);
_local1++;
}
}
static function PushSnoodHeads() {
}
static function PopSnoodHeads() {
}
static function CleanupAllSnoods() {
m_currentPoolParent = null;
EmptySnoodHeadPool();
EmptyActiveHeadPool();
}
static function EmptySnoodHeadPool() {
s_HypnoBorbs = 0;
while (m_pooledHeads.length > 0) {
var _local1 = SnoodHead(m_pooledHeads.pop());
if (s_manageDeletion) {
_local1.removeMovieClip();
}
}
}
static function EmptyActiveHeadPool() {
while (m_activeHeads.length > 0) {
var _local1 = SnoodHead(m_activeHeads.pop());
if (s_manageDeletion) {
_local1.removeMovieClip();
}
}
}
static function GetAndRemoveFromPool(inBorbInfo, inSize, inX, inY, inPowerUp) {
if (inSize == null) {
inSize = CGame.TileSet.m_SnoodSize;
}
if (m_pooledHeads.length == 0) {
trace(((("Create new snood on get (pool empty, " + m_activeHeads.length) + "/") + (m_pooledHeads.length + m_activeHeads.length)) + " heads active)");
createHeadAndAddToPool(inSize);
}
CDebug.Assert(m_pooledHeads != null, SnoodHead, "missing head pool", true);
CDebug.Assert(m_pooledHeads.length > 0, SnoodHead, "No heads in the pool", true);
var _local1 = SnoodHead(m_pooledHeads[0]);
m_pooledHeads.splice(0, 1);
var _local2 = SnoodHead(_local1);
if (_local2 == null) {
trace("NullHead: " + _local1);
for (var _local3 in _local1) {
trace((_local3 + "=") + _local1[_local3]);
}
if (_local1 == null) {
CDebug.Assert(false, "SnoodHead", (("temp head is null at pool size " + m_pooledHeads.length) + ",") + m_activeHeads.length, true);
}
CDebug.Assert(false, "SnoodHead", (("Null Head info at pool size " + m_pooledHeads.length) + ",") + m_activeHeads.length, true);
}
addToActive(_local2);
_local2.__set__Size(inSize);
_local2.SetColor(inBorbInfo.Color);
_local2.SetPowerUp(inBorbInfo.PowerUp);
CDebug.Assert(_local2 != null, SnoodHead, (("Null/non-head head created! Color:" + Constants.GetSnoodByNumber(inBorbInfo.Color)) + ",Size:") + inSize, true);
var _local6 = ((inX != null) ? (inX) : (_local2._x));
var _local5 = ((inY != null) ? (inY) : (_local2._y));
_local2.MoveTo(_local6, _local5);
_local2._visible = true;
return(_local2);
}
static function ReturnToPool(inHead) {
CDebug.Assert(inHead != null, SnoodHead, "ReturnToPool(): Trying to return a null head to the pool");
var _local2 = m_activeHeads.length;
var _local1 = 0;
while (_local1 < _local2) {
if (m_activeHeads[_local1] == inHead) {
m_activeHeads.splice(_local1, 1);
_local1 = _local2;
}
_local1++;
}
if (inHead.m_xSlot != null) {
CGame.TileSet.SetTile(inHead.m_xSlot, inHead.m_ySlot, null);
}
if (inHead.m_fromPool) {
addToPool(inHead);
}
}
static function addToPool(inHead) {
if (inHead.__get__State() != State_InPool) {
inHead.m_fromPool = true;
inHead.SetState(State_InPool);
inHead.Reset();
inHead._x = (-inHead._width) - 100;
inHead._y = -100;
inHead.StopEmote();
inHead._visible = false;
m_pooledHeads.push(inHead);
}
}
static function addToActive(inHead) {
m_activeHeads.push(inHead);
inHead.SetState(State_Idle);
inHead._visible = true;
}
static function createHeadAndAddToPool(inSize) {
var _local3 = ((m_currentPoolParent != null) ? (m_currentPoolParent) : _root);
CDebug.AssertWarn(_local3 != _root, SnoodHead, "createHeadAndAddToPool(): no parent specified");
var _local2 = SnoodHead(_local3.attachMovie("Snood Head", "Borb" + s_newHeadDepth, s_newHeadDepth));
s_newHeadDepth++;
CDebug.Assert(_local2 != null, SnoodHead, "createHeadAndAddToPool(): unable to create a head", true);
_local2.__set__Size(inSize);
s_manageDeletion = true;
addToPool(_local2);
}
static function GetActiveHeadCount() {
return(m_activeHeads.length);
}
static function GetActiveHeads() {
return(m_activeHeads);
}
static var Size_Small = 1;
static var Size_Med = 2;
static var Size_Big = 3;
static var Size_RndVerySmall = 4;
static var Size_RndSmall = 5;
static var Size_RndMed = 6;
static var Width_Small = 22;
static var Width_Med = 28;
static var Width_Big = 59;
static var Width_RndVerySmall = 18;
static var Width_RndSmall = 19;
static var Width_RndMed = 22;
static var Height_Small = 22;
static var Height_Med = 25;
static var Height_Big = 60;
static var Height_RndVerySmall = 18;
static var Height_RndSmall = 19;
static var Height_RndMed = 22;
static var State_OnBoard = 0;
static var State_InCannon = 1;
static var State_InQueue = 2;
static var State_InPool = 3;
static var State_Idle = 4;
static var State_Count = 5;
static var Anim_None = 0;
static var Anim_Flying = 1;
static var Anim_Bouncing = 2;
static var Anim_MovingTo = 3;
static var LauncherSnoodSize = Size_Small;
static var s_manageDeletion = false;
static var s_headPoolSize = 150;
static var TweenDuration = 0.4;
static var ImpactTweenDuration = 0.15;
static var ImpactTweenVelStr = 3;
static var ImpactTweenPosStr = 3;
static var ImpactTweenPosStrTierTwo = 1;
static var s_CollisionSensitivity = 1;
static var s_DoImpactTween = true;
static var s_BlurBrighten = 1.4;
static var s_newHeadDepth = 1;
static var s_HypnoBorbs = 0;
var m_fromPool = false;
var m_xSlot = null;
var m_ySlot = null;
var m_NoHook = false;
static var m_pooledHeads = [];
static var m_activeHeads = [];
static var m_currentPoolParent = null;
static var m_borbsInState = {};
static var m_bShowDebugOutline = false;
var m_loaded = false;
var m_color = Constants.Snood_Mary;
var m_size = Size_Small;
var m_powerUp = Constants.PowerUp_None;
var m_state = State_Idle;
var m_anim = Anim_None;
var m_lastAnim = Anim_None;
var m_wakeup = false;
var m_eyeVisibility = true;
var m_randEmoteColor = null;
var m_paused = false;
var Orb = false;
}
Symbol 46 MovieClip [__Packages.CEyes] Frame 0
class CEyes extends MovieClip
{
var m_enabled, _state, _leftEyeMc, LeftEye, _rightEyeMc, RightEye, _tgtDirection, _tgtMag, _y, _x, _parent;
function CEyes () {
super();
m_enabled = true;
_state = State_Idle;
}
function onLoad() {
_loaded = true;
setState(_state, true);
_leftEyeMc = MovieClip(LeftEye);
_rightEyeMc = MovieClip(RightEye);
_leftEyeMc.stop();
_rightEyeMc.stop();
if ((_tgtDirection == null) && (_tgtMag == null)) {
_tgtDirection = 0;
_tgtMag = 0;
}
}
static function Reset() {
m_regMouseEyes = [];
}
static function registerForMouse(i_eye) {
m_regMouseEyes.push(i_eye);
if (_mouseWatcher == null) {
_mouseWatcher = new Object();
_mouseWatcher.onMouseMove = onGlobalMouseMove;
Mouse.addListener(_mouseWatcher);
}
}
static function unregisterForMouse(i_eye) {
m_regMouseEyes = Oberon.ArrayX.RemoveFrom(m_regMouseEyes, i_eye);
if ((m_regMouseEyes.length == 0) && (_mouseWatcher != null)) {
Mouse.removeListener(_mouseWatcher);
_mouseWatcher = null;
}
}
static function onGlobalMouseMove() {
var _local2 = m_regMouseEyes.length;
var _local1 = 0;
while (_local1 < _local2) {
CEyes(m_regMouseEyes[_local1]).UpdateOnMouseMove();
_local1++;
}
}
function ToString() {
var _local2 = "";
for (var _local3 in this) {
if ((_local3.indexOf("_") == 0) || (_local3.indexOf("m") == 0)) {
_local2 = _local2 + (((_local3 + " : ") + this[_local3]) + newline);
}
}
return((("CEyes " + this) + " info:\n") + _local2);
}
function GetAngleFromMouse() {
var _local3 = {x:_x, y:_y};
_parent.localToGlobal(_local3);
var _local4 = new Core.Vector2(_root._xmouse - _local3.x, _local3.y - _root._ymouse);
return(_local4.GetAngle());
}
function GetEnabled() {
return(m_enabled);
}
function IsInAnim() {
return(false);
}
function SetEnabled(i_val) {
if (i_val != m_enabled) {
m_enabled = i_val;
}
}
function UpdateOnMouseMove() {
if (!m_enabled) {
return(undefined);
}
LookTowardsDir(GetAngleFromMouse());
}
function LookTowardsDir(i_val) {
if (!m_enabled) {
return(false);
}
i_val = ((90 + ((i_val < 90) ? 0 : 360)) - i_val) % 360;
if (_tgtDirection != i_val) {
_tgtDirection = int(i_val);
_tgtMag = 100;
return(updateLookTowards());
}
return(false);
}
function LookTowardsCoord(i_coord) {
if (!m_enabled) {
return(false);
}
var _local2 = i_coord.Clone();
_local2.ConvertToMcLocal(this);
var _local3 = new Core.Vector2(_local2.X - _x, _y - _local2.Y);
setState(State_LookAt);
return(LookTowardsDir(_local3.GetAngle()));
}
function LookTowardsMouse() {
if (!m_enabled) {
return(undefined);
}
setState(State_FollowMouse);
}
function LookOffCenter(i_rotation, i_distPct) {
if (!m_enabled) {
return(false);
}
setState(State_Idle);
_tgtDirection = i_rotation;
_tgtMag = i_distPct;
return(updateLookTowards());
}
function setState(inVal, inForce) {
if ((inVal != _state) || (inForce)) {
if (!(_state === State_FollowMouse)) {
} else {
unregisterForMouse(this);
}
if (!(inVal === State_FollowMouse)) {
} else {
registerForMouse(this);
}
_state = inVal;
}
}
function updateLookTowards() {
return(false);
}
static var LookSpeed = 0.5;
static var m_regMouseEyes = [];
static var _mouseWatcher = null;
static var State_Disabled = 0;
static var State_Idle = 1;
static var State_FollowMouse = 2;
static var State_LookAt = 3;
static var Dir_UpLeft = 120;
static var Dir_Up = 90;
static var Dir_UpRight = 60;
static var Dir_Right = 0;
static var Dir_DownRight = 300;
static var Dir_Down = 270;
static var Dir_DownLeft = 240;
static var Dir_Left = 180;
var _loaded = false;
}
Symbol 47 MovieClip [__Packages.Oberon.ArrayX] Frame 0
class Oberon.ArrayX
{
function ArrayX () {
}
static function removeAt(inArray, inIndex) {
inArray.splice(inIndex, 1);
return(inArray);
}
static function IndexOf(inArray, inObject) {
var _local3 = -1;
var _local1 = 0;
while (_local1 < inArray.length) {
if ((inArray[_local1] == inObject) && (inArray[_local1] != null)) {
_local3 = _local1;
break;
}
_local1++;
}
return(_local3);
}
static function Subtract(i_arrL, i_arrR) {
var _local6 = [];
var _local3 = 0;
while (_local3 < i_arrL.length) {
var _local2 = false;
var _local1 = 0;
while ((!_local2) && (_local1 < i_arrR.length)) {
if (i_arrL[_local3] == i_arrR[_local1]) {
_local2 = true;
}
_local1++;
}
if (!_local2) {
_local6.push(i_arrL[_local3]);
}
_local3++;
}
return(_local6);
}
static function Contains(inArray, inObject) {
return(IndexOf(inArray, inObject) != -1);
}
static function RemoveFrom(inArray, inObject) {
var _local3 = new Array();
var _local1 = inArray.length - 1;
while (_local1 >= 0) {
if (inArray[_local1] != inObject) {
_local3.push(inArray[_local1]);
}
_local1--;
}
return(_local3);
}
static function NewArrayFromObject(inObject, inUseIndexIfAvailable) {
var _local3 = false;
if (inObject == null) {
return(null);
}
if (inUseIndexIfAvailable) {
_local3 = true;
for (var _local4 in inObject) {
if (isNaN(parseInt(_local4))) {
_local3 = false;
break;
}
}
}
var _local2 = new Array();
for (var _local4 in inObject) {
if (_local3) {
_local2[parseInt(_local4)] = inObject[_local4];
} else {
_local2.push(inObject[_local4]);
}
}
return(_local2);
}
static function MakeTwoDimensionalArray(inRows, inCols) {
var _local2 = new Array(inRows);
var _local1 = 0;
while (_local1 < inRows) {
_local2[_local1] = new Array(inCols);
_local1++;
}
return(_local2);
}
}
Symbol 48 MovieClip [__Packages.CCoord] Frame 0
class CCoord
{
var X, Y;
function CCoord (i_x, i_y) {
X = i_x;
Y = i_y;
}
function Clone() {
return(new CCoord(X, Y));
}
function Equals(i_coord) {
return((i_coord.X == X) && (i_coord.Y == Y));
}
function ToString() {
return((X + ",") + Y);
}
function ConvertToMcGlobal(i_clip) {
var _local2 = ToGlobal(i_clip, this);
X = _local2.X;
Y = _local2.Y;
}
function ConvertToFromMcLocal(i_srcClip, i_destClip) {
var _local2 = ToLocal(i_srcClip, i_destClip, this);
X = _local2.X;
Y = _local2.Y;
}
function ConvertToMcLocal(i_clip) {
var _local2 = GlobalToLocal(i_clip, this);
X = _local2.X;
Y = _local2.Y;
}
static function ToGlobal(i_clip, i_coord) {
var _local1;
if (i_coord == undefined) {
_local1 = {x:i_clip._x, y:i_clip._y};
i_clip._parent.localToGlobal(_local1);
} else {
_local1 = {x:i_coord.X, y:i_coord.Y};
i_clip.localToGlobal(_local1);
}
return(new CCoord(_local1.x, _local1.y));
}
static function ToLocal(i_srcClip, i_destClip, i_coord) {
var _local1;
if (i_coord == undefined) {
_local1 = {x:i_srcClip._x, y:i_srcClip._y};
i_srcClip._parent.localToGlobal(_local1);
} else {
_local1 = {x:i_coord.X, y:i_coord.Y};
i_srcClip.localToGlobal(_local1);
}
i_destClip.globalToLocal(_local1);
return(new CCoord(_local1.x, _local1.y));
}
static function GlobalToLocal(i_clip, i_coord) {
var _local1 = {x:i_coord.X, y:i_coord.Y};
i_clip.globalToLocal(_local1);
return(new CCoord(_local1.x, _local1.y));
}
}
Symbol 49 MovieClip [__Packages.Effects.CEffect_EmoteAnim] Frame 0
class Effects.CEffect_EmoteAnim extends CEffect
{
static var s_headFrameLabelAttr;
var m_Fps, m_FrameTween, m_LookDelay, m_LookDir, m_Borb, m_Name, m_LookCoord, m_HoldAnim, m_LoopAnimation, m_ReverseOnComplete, m_DirectionalAnim, m_CenterEyesOnRun, m_HideEyes, m_State, m_EmoteMc, m_NeedsUpdate, m_HoldingCallback;
function CEffect_EmoteAnim () {
super(CEffect.Type_EmoteAnim);
m_Fps = s_BaseFps;
m_FrameTween = null;
m_LookDelay = null;
m_LookDir = null;
}
function OnInit(i_borb, i_name, i_holdAnim, i_lookDir, i_lookCoord, i_lookDelay, i_fps) {
if (m_Borb.IsOrb()) {
return(false);
}
m_Borb = i_borb;
m_Name = i_name;
m_LookDelay = i_lookDelay;
m_LookDir = i_lookDir;
m_LookCoord = i_lookCoord;
m_HoldAnim = i_holdAnim;
m_LoopAnimation = false;
m_ReverseOnComplete = false;
m_DirectionalAnim = false;
m_CenterEyesOnRun = false;
m_HideEyes = false;
m_State = State_AnimForward;
if (i_fps != null) {
m_Fps = i_fps;
}
m_EmoteMc = i_borb.GetEmoteClip();
if (m_EmoteMc == null) {
return(false);
}
var _local12 = m_Borb.__get__Color() - 1;
if (s_headFrameLabels == null) {
s_headFrameLabels = new Array(s_headFrameLabelNames.length);
var _local2 = 0;
while (_local2 < s_headFrameLabels.length) {
s_headFrameLabels[_local2] = null;
_local2++;
}
}
if (s_headFrameLabels[_local12] == null) {
if (s_headFrameLabelAttr == null) {
s_headFrameLabelAttr = new Array(s_headFrameLabelNames.length);
var _local2 = 0;
while (_local2 < s_headFrameLabelNames.length) {
s_headFrameLabelAttr[_local2] = new Object();
_local2++;
}
}
var _local3 = s_headFrameLabelNames[_local12];
var _local11 = s_headFrameLabelAttr[_local12];
var _local10 = [];
CDebug.Assert(_local3 != null, "CEffect_EmoteAnim.OnInit()", (("Invalid label " + m_Name) + " on color ") + Constants.GetSnoodByNumber(_local12 + 1));
var _local14 = _local3.length;
var _local2 = 0;
while (_local2 < _local14) {
var _local7 = _local3[_local2];
var _local9 = _local7.indexOf("[");
if (_local9 != -1) {
_local3[_local2] = _local7.substring(0, _local9);
var _local6 = _local7.substring(_local9, _local7.length);
var _local8 = [_local6.indexOf("[R]") != -1, _local6.indexOf("[D]") != -1, _local6.indexOf("[C]") != -1, _local6.indexOf("[H]") != -1];
if (_local6.indexOf("[D]") != -1) {
var _local5 = 0;
while (_local5 < s_directionalSuffixes.length) {
var _local4 = (_local3[_local2] + " ") + s_directionalSuffixes[_local5];
_local3.push(_local4);
_local11[_local4] = _local8;
_local10.push(_local4);
_local5++;
}
} else {
_local10.push(_local3[_local2]);
}
_local11[_local3[_local2]] = _local8;
} else {
_local11[_local3[_local2]] = [false, false, false, false];
_local10.push(_local3[_local2]);
}
_local2++;
}
s_headFrameLabels[_local12] = Oberon.MovieClipX.GetAnimFrameLabels(m_EmoteMc, _local10);
var _local20 = s_headFrameLabels[_local12];
}
var _local13 = s_headFrameLabelAttr[_local12][m_Name];
CDebug.Assert(_local13 != null, "CEffect_EmoteAnim.OnInit()", (("No attributes for head " + Constants.GetSnoodByNumber(m_Borb.__get__Color())) + ",Emote:") + m_Name);
if (_local13 != null) {
m_ReverseOnComplete = _local13[0];
m_DirectionalAnim = _local13[1];
m_CenterEyesOnRun = _local13[2];
m_HideEyes = _local13[3];
}
CDebug.Assert((!m_DirectionalAnim) || (i_lookDir != null), "CEffect_EmoteAnim.OnInit()", (("Must specify look dir on directional anim " + i_name) + ":") + _local12);
if (m_DirectionalAnim) {
m_Name = m_Name + " ";
switch (m_LookDir) {
case CEyes.Dir_UpLeft :
m_Name = m_Name + s_directionalSuffixes[0];
break;
case CEyes.Dir_UpRight :
m_Name = m_Name + s_directionalSuffixes[3];
break;
case CEyes.Dir_Right :
m_Name = m_Name + s_directionalSuffixes[4];
break;
case CEyes.Dir_DownRight :
m_Name = m_Name + s_directionalSuffixes[5];
break;
case CEyes.Dir_DownLeft :
m_Name = m_Name + s_directionalSuffixes[2];
break;
case CEyes.Dir_Left :
m_Name = m_Name + s_directionalSuffixes[1];
}
}
var _local15 = s_headFrameLabels[_local12][m_Name];
var _local16 = s_headFrameLabels[_local12][m_Name + "End"];
CDebug.Assert(_local15 != null, "CEffect_EmoteAnim.OnInit()", (("null start frame on label " + m_Name) + " on color ") + Constants.GetSnoodByNumber(_local12 + 1));
CDebug.Assert(_local16 != null, "CEffect_EmoteAnim.OnInit()", (("null end frame on label " + m_Name) + "End on color ") + Constants.GetSnoodByNumber(_local12 + 1));
if ((_local15 != null) && (_local16 != null)) {
var _local17 = false;
if ((_local16 - _local15) == 0) {
_local17 = true;
} else {
m_FrameTween = new Core.CTween(m_EmoteMc, "_currentframe", null, _local15, _local16, (_local16 - _local15) / m_Fps);
m_FrameTween.onMotionFinished = mx.utils.Delegate.create(this, OnTweenComplete);
}
if ((m_LookDelay == null) || (m_LookDelay == 0)) {
if (m_DirectionalAnim) {
} else if (m_CenterEyesOnRun) {
m_Borb.LookAtCenter();
} else if (m_LookDir != null) {
m_Borb.LookTowardsDir(m_LookDir);
m_LookDelay = null;
} else if (m_LookCoord != null) {
m_Borb.LookTowardsCoord(m_LookCoord);
m_LookDelay = null;
}
m_NeedsUpdate = false;
}
m_Borb.ToggleEyeVisibility(!m_HideEyes);
if (_local17) {
m_EmoteMc.gotoAndStop(_local15);
OnTweenComplete();
}
return(true);
}
return(false);
}
static function ResetHeadFrameLabels() {
}
static function HasAnimation(i_color, i_animName) {
var _local2 = s_headFrameLabelNames[i_color];
var _local5 = _local2.length;
var _local1 = 0;
while (_local1 < _local5) {
var _local3 = _local2[_local1].indexOf(i_animName);
if ((_local3 == 0) && ((i_animName.length == _local2[_local1].length) || (i_animName.length == _local2[_local1].indexOf("[")))) {
return(true);
}
_local1++;
}
return(false);
}
function Reverse() {
m_LookDelay = null;
m_HoldAnim = false;
m_FrameTween.StopUpdates();
OnTweenComplete();
}
function OnUpdate(i_forceComplete, i_deltaT) {
if ((m_LookDelay != null) && (m_LookDelay > 0)) {
m_LookDelay = m_LookDelay - i_deltaT;
if (m_LookDelay <= 0) {
if (m_CenterEyesOnRun) {
m_Borb.LookAtCenter();
} else {
m_Borb.LookTowardsDir(m_LookDir);
}
m_LookDelay = null;
m_NeedsUpdate = false;
}
}
return(super.OnUpdate(i_forceComplete));
}
function OnTweenComplete() {
m_FrameTween = null;
if (m_HoldAnim) {
if (m_HoldingCallback) {
m_HoldingCallback(this);
}
} else if (m_ReverseOnComplete && (m_State == State_AnimForward)) {
m_State = State_AnimReverse;
var _local2 = s_headFrameLabels[m_Borb.__get__Color() - 1];
var _local4 = _local2[m_Name];
if ((_local4 - m_EmoteMc._currentframe) > 0) {
m_FrameTween = new Core.CTween(m_EmoteMc, "_currentframe", null, m_EmoteMc._currentframe, _local4, (m_EmoteMc._currentframe - _local4) / m_Fps);
m_FrameTween.onMotionFinished = mx.utils.Delegate.create(this, OnTweenComplete);
} else {
m_EmoteMc.gotoAndStop(_local4);
}
if (m_FrameTween == null) {
OnComplete();
}
} else if (m_LoopAnimation) {
m_State = State_AnimForward;
var _local2 = s_headFrameLabels[m_Borb.__get__Color() - 1];
var _local3 = _local2[m_Name];
var _local4 = _local2[m_Name + "End"];
m_FrameTween = new Core.CTween(m_EmoteMc, "_currentframe", null, _local3, _local4, (_local4 - _local3) / m_Fps);
m_FrameTween.onMotionFinished = mx.utils.Delegate.create(this, OnTweenComplete);
if (m_FrameTween == null) {
OnComplete();
}
} else {
OnComplete();
}
}
function OnComplete() {
super.OnComplete();
if ((m_FrameTween != null) && (m_FrameTween.m_IsPlaying)) {
m_FrameTween.StopUpdates();
}
if (m_HideEyes) {
m_Borb.ToggleEyeVisibility(true);
}
m_EmoteMc.gotoAndStop(1);
}
static var s_BaseFps = 30;
static var s_headFrameLabels = null;
static var s_headFrameLabelNames = [["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad[R]"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad[R]", "madNoDir[R]", "mad[D][R]"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad[R]"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad", "special"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad[R]", "mad[R]"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sadNoDir[R]", "sad[D]"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad[R]", "flirt[R]"], ["default", "sleep[H][C]", "wake[C]", "blink", "hypnotized[H]", "drop", "happy[R]", "sad[R]", "mad[R]", "creepy[R]"], ["default"], ["default"], ["default"], ["default"], ["default"], ["default"], ["default"], ["default"], [], [], [], ["default", "smirk[R]", "angry[R]", "angry shifty[R]"], ["default", "smirk[R]", "angry[R]"], ["default", "smirk[R]", "angry[R]"], [], ["default", "drop"], [], [], ["default", "taunt", "attack[R]", "hurt", "die"], ["default", "blink", "idle", "attack", "taunt", "hurt", "die"], ["default", "taunt", "attack", "hurt", "die"], ["default", "attack[R]", "taunt", "hurt", "die"]];
static var s_directionalSuffixes = ["top left", "left", "bottom left", "top right", "right", "bottom right"];
static var State_AnimForward = 0;
static var State_AnimReverse = 1;
}
Symbol 50 MovieClip [__Packages.Oberon.MovieClipX] Frame 0
class Oberon.MovieClipX
{
function MovieClipX () {
}
static function get MovieStatus_NotCreatedYet() {
return(0);
}
static function get MovieStatus_Loading() {
return(1);
}
static function get MovieStatus_Loaded() {
return(2);
}
static function get MovieStatus_NotExist() {
return(3);
}
static function getMovieStatus(inMovieClip) {
if (inMovieClip == undefined) {
return(MovieStatus_NotCreatedYet);
}
if (inMovieClip._totalframes == 0) {
return(MovieStatus_NotExist);
}
if (inMovieClip.getBytesLoaded() == inMovieClip.getBytesTotal()) {
return(MovieStatus_Loaded);
}
return(MovieStatus_Loading);
}
static function GetChildClip(inClip) {
return(GetChildClipWithName(inClip, null));
}
static function GetChildClipWithName(inClip, symName) {
var _local3 = null;
for (var _local4 in inClip) {
if ((symName == null) || (_local4 == symName)) {
if (typeof(inClip[_local4]) == "movieclip") {
_local3 = inClip[_local4];
}
}
}
return(_local3);
}
static function Highlight(inClip) {
if (Object(inClip).HighlightRed != undefined) {
AddTransform(inClip, Object(inClip).HighlightRed, Object(inClip).HighlightGreen, Object(inClip).HighlightBlue);
} else {
AddTransform(inClip, 255, 50, 50);
}
}
static function DeHighlight(inClip) {
RemoveTransform(inClip);
}
static function SetHighlightColor(inClip, inRed, inGreen, inBlue) {
Object(inClip).HighlightRed = inRed;
Object(inClip).HighlightGreen = inGreen;
Object(inClip).HighlightBlue = inBlue;
}
static function AddTransform(inClip, inRed, inGreen, inBlue) {
var _local2 = new Color(inClip);
var _local1 = _local2.getTransform();
_local1.rb = inRed;
_local1.gb = inGreen;
_local1.bb = inBlue;
_local2.setTransform(_local1);
}
static function RemoveTransform(inClip) {
var _local2 = new Color(inClip);
var _local1 = _local2.getTransform();
_local1.rb = 0;
_local1.gb = 0;
_local1.bb = 0;
_local2.setTransform(_local1);
}
static function getNextHighestDepth(inMovieClip) {
var _local3 = -1;
for (var _local4 in inMovieClip) {
if (inMovieClip[_local4] instanceof MovieClip) {
var _local1 = inMovieClip[_local4].getDepth();
if (((_local1 != undefined) && (_local1 >= 0)) && (_local1 > _local3)) {
_local3 = _local1;
}
}
}
return(_local3 + 1);
}
static function GetAnimFrameLabels(i_mc, i_labels) {
var _local7 = {};
var _local11 = i_mc._currentframe;
var _local1 = new Array(i_labels.length);
var _local4 = new Array(i_labels.length);
var _local3 = 0;
while (_local3 < i_labels.length) {
i_mc.gotoAndStop(i_labels[_local3]);
_local1[_local3] = i_mc._currentframe;
_local4[_local3] = i_labels[_local3];
_local3++;
}
_local3 = 0;
while (_local3 < _local1.length) {
var _local6 = _local1[_local3];
var _local5 = _local3;
var _local2 = _local3;
while (_local2 < _local1.length) {
if (_local1[_local2] < _local6) {
_local5 = _local2;
_local6 = _local1[_local2];
}
_local2++;
}
if (_local5 != _local3) {
var _local10 = String(_local4[_local5]);
_local4[_local5] = _local4[_local3];
_local1[_local5] = _local1[_local3];
_local4[_local3] = _local10;
_local1[_local3] = _local6;
}
_local3++;
}
_local3 = 0;
while (_local3 < _local1.length) {
_local7[String(_local4[_local3])] = _local1[_local3];
if ((_local3 + 1) < _local1.length) {
_local7[String(_local4[_local3]) + "End"] = _local1[_local3 + 1] - 1;
} else {
_local7[String(_local4[_local3]) + "End"] = i_mc._totalframes;
}
_local3++;
}
i_mc.gotoAndStop(_local11);
return(_local7);
}
}
Symbol 51 MovieClip [__Packages.CProcEyes] Frame 0
class CProcEyes extends CEyes
{
var _origLeftMcX, _origLeftMcY, _origRightMcX, _origRightMcY, MinX, MaxX, MinY, MaxY, _eyeWidth, _eyeHeight, _parent, _curXTweenPos, _curYTweenPos, _leftEyeMc, _rightEyeMc, _lookXTween, _lookYTween, _tgtDirection, LookCompleteCallback;
function CProcEyes () {
super();
_origLeftMcX = 0;
_origLeftMcY = 0;
_origRightMcX = 0;
_origRightMcY = 0;
MinX = 1;
MaxX = 1;
MinY = 1;
MaxY = 1;
_eyeWidth = null;
_eyeHeight = null;
}
function onLoad() {
super.onLoad();
_parent._parent._parent.OnEyesLoaded(this);
_curXTweenPos = 0;
_curYTweenPos = 0;
_origLeftMcX = _leftEyeMc._x;
_origLeftMcY = _leftEyeMc._y;
_origRightMcX = _rightEyeMc._x;
_origRightMcY = _rightEyeMc._y;
if (_leftEyeMc != null) {
_eyeWidth = _leftEyeMc._width;
_eyeHeight = _leftEyeMc._height;
} else if (_rightEyeMc != null) {
_eyeWidth = _rightEyeMc._width;
_eyeHeight = _rightEyeMc._height;
}
updateLookTowards();
}
function IsInAnim() {
return((_lookXTween != null) || (_lookYTween != null));
}
function updateLookTowards() {
var _local2 = Core.Vector2.CreateFromAngle((540 - _tgtDirection) % 360, 100);
var _local7 = MinX * _eyeWidth;
var _local5 = MaxX * _eyeWidth;
if (_local2.X > _local5) {
_local2.Y = _local2.Y * Math.abs(_local5 / _local2.X);
_local2.X = _local5;
} else if (_local2.X < _local7) {
_local2.Y = _local2.Y * Math.abs(_local7 / _local2.X);
_local2.X = _local7;
}
var _local6 = MinY * _eyeHeight;
var _local4 = MaxY * _eyeHeight;
if (_local2.Y > _local4) {
_local2.X = _local2.X * Math.abs(_local4 / _local2.Y);
_local2.Y = _local4;
} else if (_local2.Y < _local6) {
_local2.X = _local2.X * Math.abs(_local6 / _local2.Y);
_local2.Y = _local6;
}
var _local3 = Math.max(Math.abs(_local2.X - _curXTweenPos), Math.abs(_local2.Y - _curYTweenPos));
if (_local2.X != _curXTweenPos) {
if (_lookXTween == null) {
_lookXTween = new Core.CTween(this, "_curXTweenPos", Core.CTween.DefaultMcTween, _curXTweenPos, _local2.X, (_local3 * CEyes.LookSpeed) / 20);
_lookXTween.onMotionChanged = mx.utils.Delegate.create(this, onLookUpdateX);
_lookXTween.onMotionFinished = mx.utils.Delegate.create(this, onLookComplete);
} else {
_lookXTween.continueTo(_local2.X, (_local3 * CEyes.LookSpeed) / 20);
}
} else if (_lookXTween != null) {
_lookXTween.StopUpdates();
_lookXTween = null;
}
if (_local2.Y != _curYTweenPos) {
if (_lookYTween == null) {
_lookYTween = new Core.CTween(this, "_curYTweenPos", Core.CTween.DefaultMcTween, _curYTweenPos, _local2.Y, (_local3 * CEyes.LookSpeed) / 20);
_lookYTween.onMotionChanged = mx.utils.Delegate.create(this, onLookUpdateY);
_lookYTween.onMotionFinished = mx.utils.Delegate.create(this, onLookComplete);
} else {
_lookYTween.continueTo(_local2.Y, (_local3 * CEyes.LookSpeed) / 20);
}
} else if (_lookYTween != null) {
_lookYTween.StopUpdates();
_lookYTween = null;
}
return((_lookXTween != null) || (_lookYTween != null));
}
function onLookUpdateX() {
_leftEyeMc._x = _curXTweenPos + _origLeftMcX;
_rightEyeMc._x = _curXTweenPos + _origRightMcX;
}
function onLookUpdateY() {
_leftEyeMc._y = _curYTweenPos + _origLeftMcY;
_rightEyeMc._y = _curYTweenPos + _origRightMcY;
}
function onLookComplete() {
if ((_lookXTween != null) && (!_lookXTween.m_IsPlaying)) {
_lookXTween = null;
}
if ((_lookYTween != null) && (!_lookYTween.m_IsPlaying)) {
_lookYTween = null;
}
if (((_lookXTween == null) && (_lookYTween == null)) && (LookCompleteCallback != null)) {
LookCompleteCallback(this);
}
}
}
Symbol 52 MovieClip [__Packages.CLevelInfo] Frame 0
class CLevelInfo
{
var TracerOn, HeadColors, HeadColorFreq, RandomHeadCounts, PowerupTypes, PowerupTypeFreq, CratePowerupTypes, CratePowerupTypeFreq, RandPowerupCounts, TileInfos, Mode, _xml, MusicTrack, DangerIncrements, LoseLevel;
function CLevelInfo (inFileName) {
TracerOn = false;
HeadColors = [];
HeadColorFreq = [];
RandomHeadCounts = new Array(Constants.Snood_Count);
PowerupTypes = [];
PowerupTypeFreq = [];
CratePowerupTypes = [];
CratePowerupTypeFreq = [];
RandPowerupCounts = new Array(Constants.PowerUp_Count);
var _local2 = 0;
while (_local2 < Constants.Snood_Count) {
RandomHeadCounts[_local2] = 0;
_local2++;
}
_local2 = 0;
while (_local2 < Constants.PowerUp_Count) {
RandPowerupCounts[_local2] = 0;
_local2++;
}
if (inFileName != null) {
LoadXml(inFileName);
}
}
function get HeadCount() {
return(HeadColors.length);
}
function get PowerUpCount() {
return(PowerupTypes.length);
}
function Dispose() {
}
function cleanupTiles() {
if (TileInfos != null) {
var _local3 = 0;
while (_local3 < TileInfos.length) {
var _local2 = 0;
while (_local2 < TileInfos[_local3].length) {
delete TileInfos[_local3][_local2];
_local2++;
}
TileInfos[_local3] = null;
delete TileInfos[_local3];
_local3++;
}
}
TileInfos = null;
}
function resetAttr() {
cleanupTiles();
LoadingXml = false;
LoadCriticalFail = false;
}
function initTileArray() {
var _local5 = Constants.BoardModeToMaxWidth(Mode);
var _local4 = Constants.BoardModeToMaxHeight(Mode);
TileInfos = Oberon.ArrayX.MakeTwoDimensionalArray(_local5, _local4);
var _local3 = 0;
while (_local3 < _local5) {
var _local2 = 0;
while (_local2 < _local4) {
TileInfos[_local3][_local2] = new CLevelTileInfo();
_local2++;
}
_local3++;
}
}
function LoadXml(inXmlFileName) {
CDebug.WriteLine("CLevelInfo", "Loading " + inXmlFileName);
resetAttr();
LoadingXml = true;
_xml = new XML();
_xml.ignoreWhite = true;
_xml.onLoad = mx.utils.Delegate.create(this, parseXml);
_xml.load(inXmlFileName);
}
function parseXml(i_success) {
if (!i_success) {
CDebug.Assert(false, "CLevelInfo.parseXml()", "xml failed to load! " + Oberon.XmlX.getXmlStatusDesc(_xml.status), true);
LoadCriticalFail = true;
return(undefined);
}
CDebug.WriteLine("CLevelInfo", "Parsing XML level");
if (_xml.status != Oberon.XmlX.__get__XmlStatus_Success()) {
CDebug.Assert(false, this, "XML load/parse failed: " + Oberon.XmlX.getXmlStatusDesc(_xml.status), true);
}
var _local18 = _xml;
var _local16 = _local18.firstChild;
var _local7 = _xml.firstChild.firstChild;
if (_local16.attributes.TracerOn != undefined) {
TracerOn = String(_local16.attributes.TracerOn) == "true";
}
if (_local16.attributes.MinBoundsX != undefined) {
MinBoundsX = parseInt(_local16.attributes.MinBoundsX);
}
if (_local16.attributes.MinBoundsY != undefined) {
MinBoundsY = parseInt(_local16.attributes.MinBoundsY);
}
if (_local16.attributes.MaxBoundsX != undefined) {
MaxBoundsX = parseInt(_local16.attributes.MaxBoundsX);
}
if (_local16.attributes.MaxBoundsY != undefined) {
MaxBoundsY = parseInt(_local16.attributes.MaxBoundsY);
}
if (_local16.attributes.Background != undefined) {
Background = String(_local16.attributes.Background);
}
if ((MinBoundsX == 0) && (MaxBoundsX == 0)) {
CDebug.WriteErr("CLevelInfo.parseXml()", "Min and Max X bounds set to 0!");
MinBoundsX = null;
MaxBoundsX = null;
}
if ((MinBoundsY == 0) && (MaxBoundsY == 0)) {
CDebug.WriteErr("CLevelInfo.parseXml()", "Min and Max Y bounds set to 0!");
MinBoundsY = null;
MaxBoundsY = null;
}
CDebug.Assert(_local18.hasChildNodes(), this, "XML Doc is empty (or doesn't exist).", true);
CDebug.Assert(_local18.firstChild.nodeName == "LevelInfo", this, ("First node name is invalid ('" + _local18.firstChild.nodeName) + "'). Expected 'LevelInfo'.");
CDebug.Assert(_local16.attributes.Mode != undefined, this, "Mode attribute of LevelInfo not defined");
Mode = Constants.StringToBoardMode(String(_local16.attributes.Mode));
Name = String(_local16.attributes.Name);
trace((("Name:" + Name) + ",") + Mode);
MusicTrack = _local16.attributes.MusicTrack;
CDebug.Assert(_local16.attributes.DangerIncrements != undefined, "CLevelInfo", "DangerIncrements undefined in level " + Name);
CDebug.Assert(_local16.attributes.LoseLevel != undefined, "CLevelInfo", "LoseLevel undefined in level " + Name);
DangerIncrements = parseInt(_local16.attributes.DangerIncrements);
LoseLevel = parseInt(_local16.attributes.LoseLevel);
if (_local16.attributes.NumLumps != undefined) {
var _local17 = parseInt(_local16.attributes.NumLumps);
while (_local17 > 0) {
RandomHeadCounts[Oberon.MathX.randRange(Constants.Snood_LumpStart, Constants.Snood_LumpEnd)]++;
_local17--;
}
CDebug.AssertWarn(_local16.attributes.NumLumps == undefined, "CLevelInfo.parseXml", "NumLumps is deprecated, use head manifest");
}
if (_local16.attributes.NumDriftwood != undefined) {
RandomHeadCounts[Constants.Snood_Crate] = parseInt(_local16.attributes.NumDriftwood);
CDebug.AssertWarn(_local16.attributes.NumDriftwood == undefined, "CLevelInfo.parseXml", "NumLumps is deprecated, use head manifest");
}
initTileArray();
while (_local7 != null) {
if (_local7.nodeName == "TileSet") {
var _local2 = _local7.firstChild;
while (_local2 != null) {
if (_local2.nodeName != "Tile") {
CDebug.Assert(false, "CLevelInfo", "Unknown xml node encountered: " + _local2.nodeName);
}
var _local12 = parseInt(_local2.attributes.Col);
var _local8 = parseInt(_local2.attributes.Row);
var _local4 = CLevelTileInfo(TileInfos[_local12][_local8]);
_local4.Empty = false;
if ((_local2.attributes.Color == undefined) || (String(_local2.attributes.Color) == "None")) {
_local4.RandomColor = true;
} else {
_local4.RandomColor = false;
_local4.Color = Constants.GetSnoodByString(String(_local2.attributes.Color));
CDebug.Assert(_local4.Color != null, "CLevelInfo", (((("Invalid Color in XML : " + _local2.attributes.Color) + ", tile ") + _local12) + ",") + _local8);
}
if ((_local2.attributes.NoHook != undefined) && (_local2.attributes.NoHook == "true")) {
_local4.NoHook = true;
}
if (_local2.attributes.PowerUp != undefined) {
_local4.PowerUp = Constants.GetPowerUpByString(String(_local2.attributes.PowerUp));
CDebug.Assert(_local4.PowerUp != null, "CLevelInfo", (((((("Invalid PowerUp in XML : " + _local2.attributes.Color) + ",") + _local2.attributes.PowerUp) + ", tile ") + _local12) + ",") + _local8);
}
OrigBorbCount++;
_local2 = _local2.nextSibling;
}
} else if (_local7.nodeName == "HeadSet") {
var _local3 = _local7.firstChild;
while (_local3 != null) {
if (_local3.nodeName == "Head") {
var _local9 = String(_local3.attributes.Type);
var _local6 = Constants.GetSnoodByString(_local9);
var _local11 = parseInt(_local3.attributes.Freq);
if (_local3.attributes.RandCount != undefined) {
RandomHeadCounts[_local6] = parseInt(_local3.attributes.RandCount);
}
if (_local3.attributes.Freq == undefined) {
_local11 = 0;
}
CDebug.Assert((_local9 != null) && (_local6 != null), "CLevelInfo", "Invalid head type in XML : " + _local9);
if (!Oberon.ArrayX.Contains(HeadColors, _local6)) {
HeadColors.push(_local6);
HeadColorFreq.push((isNaN(_local11) ? null : (_local11)));
}
} else {
CDebug.WriteErr("Unexpected head xml node encountered: " + _local3.nodeName);
}
_local3 = _local3.nextSibling;
}
var _local10 = [];
var _local15 = 0;
while (_local15 < Constants.Snood_HeadCount) {
_local10.push(_local15 + 1);
_local15++;
}
_local15 = 0;
while (_local15 < HeadColors.length) {
if (HeadColors[_local15] <= Constants.Snood_HeadCount) {
var _local13 = Oberon.MathX.randRange(0, _local10.length - 1);
HeadColors[_local15] = _local10[_local13];
_local10.splice(_local13, 1);
}
_local15++;
}
} else if (_local7.nodeName == "OrbPowerupSet") {
var _local3 = _local7.firstChild;
while (_local3 != null) {
if (_local3.nodeName == "OrbPowerup") {
var _local9 = String(_local3.attributes.Type);
var _local5 = Constants.GetPowerUpByString(_local9);
var _local11 = parseInt(_local3.attributes.Freq);
if (_local3.attributes.Freq == undefined) {
_local11 = 0;
}
if (_local3.attributes.CrateFreq != undefined) {
var _local14 = parseInt(_local3.attributes.CrateFreq);
CDebug.Assert(!Oberon.ArrayX.Contains(CratePowerupTypes, _local5), "CLevelInfo.parseXml()", "Duplicate crate frequency in powerup " + _local5);
CratePowerupTypes.push(_local5);
CratePowerupTypeFreq.push(_local14);
}
if (_local3.attributes.RandCount != undefined) {
RandPowerupCounts[_local5] = parseInt(_local3.attributes.RandCount);
}
CDebug.Assert((_local9 != null) && (_local5 != null), "CLevelInfo", "Invalid powerup type in XML : " + _local9);
if (!Oberon.ArrayX.Contains(PowerupTypes, _local5)) {
PowerupTypes.push(_local5);
PowerupTypeFreq.push((isNaN(_local11) ? null : _local11));
}
} else {
CDebug.WriteErr("Unexpected powerup xml node encountered: " + _local3.nodeName);
}
_local3 = _local3.nextSibling;
}
} else {
CDebug.Assert(false, "CLevelInfo", "Unknown node encountered: " + _local7.nodeName);
}
_local7 = _local7.nextSibling;
}
distributeFreq(HeadColorFreq, HeadColors, true);
distributeFreq(PowerupTypeFreq, PowerupTypes, true);
distributeFreq(CratePowerupTypeFreq, CratePowerupTypes, false);
if (CratePowerupTypes.length == 0) {
var _local15 = 0;
while (_local15 < Constants.AllCratePowerUps.length) {
CratePowerupTypes.push(Constants.AllCratePowerUps[_local15]);
CratePowerupTypeFreq.push(10);
_local15++;
}
}
CDebug.WriteLine("CLevelInfo", "Completed level parse");
LoadingXml = false;
}
function RemoveColor(i_color) {
trace(("CLevelInfo.RemoveColor( " + Constants.GetSnoodByNumber(i_color)) + " )");
var _local2 = Oberon.ArrayX.IndexOf(HeadColors, i_color);
if (_local2 != -1) {
HeadColors.splice(_local2, 1);
HeadColorFreq.splice(_local2, 1);
}
distributeFreq(HeadColorFreq, HeadColors, true);
}
function IsBorbActive(i_color) {
var _local2 = 0;
while (_local2 < HeadColors.length) {
if (HeadColors[_local2] == i_color) {
return(true);
}
_local2++;
}
}
function distributeFreq(inFreqArray, inFreqTypeArray, inDoRedistribute) {
var _local3 = 0;
var _local5 = 0;
var _local2 = 0;
while (_local2 < inFreqArray.length) {
if (inFreqArray[_local2] != null) {
_local3 = _local3 + inFreqArray[_local2];
} else {
_local5++;
}
_local2++;
}
if (inDoRedistribute) {
CDebug.Assert((_local3 != 100) || (_local5 == 0), "CLevelInfo", "Frequencies are at 100%, no room to distribute frequencies");
if (_local5 > 0) {
var _local7 = Math.round(((100 - _local3) / _local5) * 10) / 10;
_local2 = 0;
while (_local2 < inFreqArray.length) {
if (inFreqArray[_local2] == null) {
inFreqArray[_local2] = _local7;
}
_local2++;
}
} else if ((_local3 != 100) && (_local3 != 0)) {
var _local6 = 100 / _local3;
_local2 = 0;
while (_local2 < inFreqArray.length) {
var _local4 = inFreqArray[_local2];
inFreqArray[_local2] = inFreqArray[_local2] * _local6;
inFreqArray[_local2] = Math.round(inFreqArray[_local2] * 10) / 10;
_local2++;
}
}
}
}
var Name = "<NotNamed>";
var LoadingXml = false;
var LoadCriticalFail = false;
var HeadFreq = 100;
var MinBoundsX = null;
var MinBoundsY = null;
var MaxBoundsX = null;
var MaxBoundsY = null;
var Background = "shore";
var OrigBorbCount = 0;
}
Symbol 53 MovieClip [__Packages.CLevelTileInfo] Frame 0
class CLevelTileInfo
{
function CLevelTileInfo (inEmpty, inColor, inPowerUp) {
if (inEmpty != undefined) {
Empty = inEmpty;
}
if (inColor != undefined) {
Color = inColor;
}
if (inPowerUp != undefined) {
PowerUp = inPowerUp;
}
}
var Empty = true;
var RandomColor = true;
var Color = Constants.Snood_Mary;
var PowerUp = Constants.PowerUp_None;
var NoHook = false;
}
Symbol 54 MovieClip [__Packages.CBorbInfo] Frame 0
class CBorbInfo
{
var Color, PowerUp, Orb;
function CBorbInfo (i_color, i_powerUp, i_ignore, i_orb) {
Color = ((i_color != undefined) ? (i_color) : (Constants.Snood_Frank));
PowerUp = ((i_powerUp != undefined) ? (i_powerUp) : (Constants.PowerUp_None));
Orb = ((i_orb != undefined) ? (i_orb) : false);
}
function Clone() {
return(new CBorbInfo(Color, PowerUp, null, Orb));
}
function ToString() {
return(String((((Constants.GetSnoodByNumber(Color) + ",") + Constants.GetPowerUpByNumber(PowerUp)) + ",") + (Orb ? "orb" : "head")));
}
function Equals(i_info) {
return(((Color == i_info.Color) && (PowerUp == i_info.PowerUp)) && (Orb == i_info.Orb));
}
}
Symbol 55 MovieClip [__Packages.Effects.CEffect_BorbDropAnim] Frame 0
class Effects.CEffect_BorbDropAnim extends CEffect
{
var m_NeedsUpdate, m_HurryMod, m_Borb, m_State, m_Dest, m_xTween, m_yTween, m_bReadyForDelete;
function CEffect_BorbDropAnim () {
super(CEffect.Type_BorbDropAnim);
m_NeedsUpdate = false;
m_HurryMod = null;
}
static function Reset() {
m_QueueDropDelay = 0;
m_CannonDropDelay = 0;
}
static function AreEffectsActive(i_type) {
if (i_type != null) {
return(s_Active[i_type]);
}
var _local2 = 0;
var _local1 = 0;
while (_local1 < Dest_Count) {
_local2 = _local2 + s_Active[_local1];
_local1++;
}
return(_local2);
}
static function OnPlayUpdate(i_deltaT) {
if (m_QueueDropDelay > 0) {
m_QueueDropDelay = ((m_QueueDropDelay > i_deltaT) ? (m_QueueDropDelay - i_deltaT) : 0);
}
if (m_CannonDropDelay > 0) {
m_CannonDropDelay = ((m_CannonDropDelay > i_deltaT) ? (m_CannonDropDelay - i_deltaT) : 0);
}
}
static function StopAllEffects() {
var _local1 = 0;
while (_local1 < Dest_Count) {
Effects.CEffect_BorbDropAnim(s_Active[_local1]).Kill();
_local1++;
}
}
function OnInit(i_borb, i_destType, i_durMod, i_delayMod) {
m_Borb = i_borb;
m_State = State_Dropping;
m_Dest = i_destType;
var _local3 = ((i_delayMod != null) ? (i_delayMod) : 0);
var _local6 = m_Borb != null;
if (_local6) {
m_Borb.FinishTweens();
var _local2 = CGame.TileSet;
CGame.TileSet.MoveToTop(i_borb);
if (Effects.CEffect_EmoteAnim.HasAnimation(m_Borb.__get__Color(), "drop")) {
m_Borb.PlayEmoteAnim("drop", true, CEyes.Dir_Down);
}
switch (m_Dest) {
case Dest_OffBoard :
var _local4 = Constants.LateralVelocity * (1 - (Math.random() * 2));
if (((_local4 + m_Borb._x) > (_local2._x + _local2._width)) || ((_local4 + m_Borb._x) < _local2._x)) {
_local4 = _local4 * -1;
}
_local4 = _local4 + i_borb._x;
m_xTween = new Core.CTween(m_Borb, "_x", null, m_Borb._x, _local4, s_DropOffBoardBaseDur + i_durMod, true, _local3);
m_yTween = new Core.CTween(m_Borb, "_y", DropIn, m_Borb._y, (Constants.GameResY + _local2.m_SnoodHeight) - _local2._y, s_DropOffBoardBaseDur + i_durMod, true, _local3);
break;
case Dest_ToQueue :
_local3 = _local3 + m_QueueDropDelay;
_local4 = Constants.LateralVelocity * (1 - (Math.random() * 2));
if (((_local4 + m_Borb._x) > (_local2._x + _local2._width)) || ((_local4 + m_Borb._x) < _local2._x)) {
_local4 = _local4 * -1;
}
_local4 = _local4 + m_Borb._x;
m_xTween = new Core.CTween(m_Borb, "_x", null, m_Borb._x, _local4, s_FallBaseDur + i_durMod, true, _local3);
m_yTween = new Core.CTween(m_Borb, "_y", DropIn, m_Borb._y, ((Constants.GameResY - _local2.m_SnoodHeight) - _local2._y) - s_FallToQueueBufferDist, s_FallBaseDur + i_durMod, true, _local3);
if (m_HurryMod != null) {
m_xTween.Scale(1 / m_HurryMod);
m_yTween.Scale(1 / m_HurryMod);
}
m_QueueDropDelay = m_QueueDropDelay + Level.m_BaseIncrDropSec;
break;
case Dest_ToCannon :
var _local7 = CCoord.ToLocal(CGame.Board.m_Launcher.m_CannonBorbMarker, CGame.TileSet);
_local3 = _local3 + m_CannonDropDelay;
m_xTween = new Core.CTween(m_Borb, "_x", null, m_Borb._x, _local7.X, s_CannonFallBaseDur + i_durMod, true, _local3);
m_yTween = new Core.CTween(m_Borb, "_y", DropIn, m_Borb._y, _local7.Y, s_CannonFallBaseDur + i_durMod, true, _local3);
m_CannonDropDelay = m_CannonDropDelay + Level.m_PowerupIncrDropSec;
}
var _local8 = mx.utils.Delegate.create(this, OnTweenComplete);
m_xTween.onMotionFinished = _local8;
m_yTween.onMotionFinished = _local8;
s_Active[m_Dest]++;
}
if (_local6) {
if (m_Borb.m_xSlot != null) {
CGame.TileSet.SetTile(m_Borb.m_xSlot, m_Borb.m_ySlot, null);
m_Borb.__set__State(SnoodHead.State_Idle);
}
}
return(_local6);
}
static function GetCount(i_dest) {
return(s_Active[i_dest]);
}
function OnTweenComplete() {
if ((!m_xTween.m_IsPlaying) && (!m_yTween.m_IsPlaying)) {
if (m_Dest == Dest_ToQueue) {
if (m_State == State_Dropping) {
var _local5 = CGame.Board.GetBoundingClip();
m_Borb.LookTowardsDir(CEyes.Dir_Right);
m_Borb.__set__Size(SnoodHead.LauncherSnoodSize);
var _local3 = CGame.Board.m_Queue;
var _local2 = CCoord.ToLocal(_local3, CGame.TileSet, _local3.GetFallInMarkerCoord());
m_xTween = new Core.CTween(m_Borb, "_x", mx.transitions.easing.None.easeNone, m_Borb._x, _local2.X, s_FlyToQueueDuration, true);
m_yTween = new Core.CTween(m_Borb, "_y", BounceToQueueEaseInLong, m_Borb._y, _local2.Y, s_FlyToQueueDuration, true);
if (m_HurryMod) {
m_xTween.Scale(1 / m_HurryMod);
m_yTween.Scale(1 / m_HurryMod);
}
var _local4 = mx.utils.Delegate.create(this, OnTweenComplete);
m_xTween.onMotionFinished = _local4;
m_yTween.onMotionFinished = _local4;
m_State = State_FlyingToQueue;
} else {
OnComplete();
}
} else {
OnComplete();
}
}
}
function Kill() {
if (m_xTween.m_IsPlaying) {
m_xTween.StopUpdates();
m_xTween = null;
}
if (m_yTween.m_IsPlaying) {
m_yTween.StopUpdates();
m_yTween = null;
}
s_Active[m_Dest]--;
m_Dest = null;
m_bReadyForDelete = true;
}
function OnComplete() {
super.OnComplete();
m_Borb.KillEmoteAnim();
if (m_xTween.m_IsPlaying) {
m_xTween.Finish();
}
if (m_yTween.m_IsPlaying) {
m_yTween.Finish();
}
if (m_Dest != null) {
switch (m_Dest) {
case Dest_OffBoard :
SnoodHead.ReturnToPool(m_Borb);
break;
case Dest_ToQueue :
CGame.Board.m_Queue.InsertBorbIntoQueue(m_Borb);
break;
case Dest_ToCannon :
CGame.Board.InsertBorbAtCannon(SnoodHead(m_Borb).ToInfo());
SnoodHead.ReturnToPool(m_Borb);
}
s_Active[m_Dest]--;
}
}
function Hurry(i_mod) {
if (m_HurryMod == null) {
m_HurryMod = i_mod;
if (m_Dest == Dest_ToQueue) {
if (m_State == State_FlyingToQueue) {
m_xTween.Scale(1 / m_HurryMod);
m_yTween.Scale(1 / m_HurryMod);
} else if (m_State == State_Dropping) {
m_xTween.Scale(1 / m_HurryMod);
m_yTween.Scale(1 / m_HurryMod);
}
}
}
}
static function DropIn(t, b, c, d) {
var _local1 = t / d;
return((((c * _local1) * _local1) * _local1) + b);
}
static function BounceToQueueEaseInLong(t, b, c, d) {
t = d - t;
t = t / d;
if (t < 0.3636) {
return((c - (((c * 7.5625) * t) * t)) + b);
}
if (t < 0.7273) {
t = t - 0.5454;
return((c - (c * (((7.5625 * t) * t) + 0.75))) + b);
}
if (t < 0.9091) {
t = t - 0.8182;
return((c - (c * (((7.5625 * t) * t) + 0.9375))) + b);
}
t = t - 0.9545;
return((c - (c * (((7.5625 * t) * t) + 0.9844))) + b);
}
static var s_DropOffBoardBaseDur = 0.6;
static var s_FallBaseDur = 0;
static var s_CannonFallBaseDur = 0;
static var s_FallToQueueBufferDist = 24;
static var s_FlyToQueueDuration = 1.5;
static var Dest_OffBoard = 0;
static var Dest_ToQueue = 1;
static var Dest_ToCannon = 2;
static var Dest_Count = 3;
static var State_Dropping = 0;
static var State_FlyingToQueue = 1;
static var m_QueueDropDelay = 0;
static var m_CannonDropDelay = 0;
static var s_roundFunc = Math.round;
static var s_Active = [0, 0, 0];
}
Symbol 56 MovieClip [__Packages.CTileSet] Frame 0
class CTileSet extends MovieClip
{
var m_activeTweens, m_OrigCoord, _x, _y, m_bbox, m_activeBorbCount, m_dirty, m_randDistDirty, m_OnlyBlockersRemain, m_borbRandDist, BoundingClip, _bounds, m_scareAnim, m_LastAttached, Tiles, m_activeBorbs, m_SnoodSize, m_SnoodScale, m_SnoodWidth, m_SnoodHeight, Rows, Cols, Bar, BarShaft, CachedGridCoords, DEBUGTXT, getNextHighestDepth, createEmptyMovieClip, NeighborTiles, attachMovie, m_borbColorCounts;
function CTileSet () {
super();
m_activeTweens = [];
m_OrigCoord = new CCoord(_x, _y);
m_bbox = new Core.COrientedBox();
m_activeBorbCount = 0;
m_boundingBoxNeedsUpdate = true;
CGame.TileSet = this;
m_dirty = true;
m_randDistDirty = true;
m_nextCannonScareAnim = s_CannonScareAnimIdle;
m_OnlyBlockersRemain = false;
m_nextReboundTrace = s_ReboundTraceIdle;
resetColorCounts();
m_borbRandDist = new Array(Constants.Snood_HeadCount);
}
function BoardModeToOffset(i_mode) {
return(new CCoord(s_OffsetsX[i_mode - 1], s_OffsetsY[i_mode - 1]));
}
function onLoad() {
BoundingClip = _bounds;
CDebug.Assert(BoundingClip != null, this, "Couldn't find bounds");
BoundingClip._visible = false;
}
function Dispose() {
if (m_scareAnim != null) {
m_scareAnim.Finish();
}
SnoodHead.CleanupAllSnoods();
}
function OnXmlLoaded() {
m_LastAttached = GetCenterCoord();
}
function InitTiles(i_tiles, i_noResetActive) {
Tiles = i_tiles;
Level.m_BoardSpaces = i_tiles;
if ((i_noResetActive == undefined) || (!i_noResetActive)) {
m_activeBorbs = new Array(Tiles.length);
m_activeBorbCount = 0;
resetColorCounts();
}
}
function StopAnimations() {
SnoodHead.StopAllBoardMoveToTweens();
CGame.EffectMgr.KillAllEffectsOfType(CEffect.Type_CannonScareAnim);
}
function UpdateBoundingClipWithLevel(i_levelInfo) {
var _local3 = false;
if (i_levelInfo.MinBoundsX != null) {
BoundingClip._x = i_levelInfo.MinBoundsX;
if (i_levelInfo.MaxBoundsX != null) {
BoundingClip._width = i_levelInfo.MaxBoundsX - i_levelInfo.MinBoundsX;
} else {
BoundingClip._width = BoundingClip._width - i_levelInfo.MinBoundsX;
}
_local3 = true;
} else if (i_levelInfo.MaxBoundsX != null) {
BoundingClip._width = i_levelInfo.MaxBoundsX - BoundingClip._x;
_local3 = true;
}
if (i_levelInfo.MinBoundsY != null) {
BoundingClip._y = i_levelInfo.MinBoundsY;
if (i_levelInfo.MaxBoundsY != null) {
BoundingClip._height = i_levelInfo.MaxBoundsY - i_levelInfo.MinBoundsY;
} else {
BoundingClip._height = BoundingClip._height - i_levelInfo.MinBoundsY;
}
_local3 = true;
} else if (i_levelInfo.MaxBoundsY != null) {
BoundingClip._height = i_levelInfo.MaxBoundsY - BoundingClip._y;
_local3 = true;
}
if (_local3) {
ToggleBounds();
}
}
function IsPlaying() {
return(State == State_Playing);
}
function IsBusy() {
return(!IsPlaying());
}
function Init() {
m_SnoodSize = SnoodHead.BoardModeToSnoodSize(GameState.__get__CurrentGameMode());
m_SnoodScale = SnoodHead.SizeToScale(m_SnoodSize);
m_SnoodWidth = SnoodHead.SizeToGridWidth(m_SnoodSize);
m_SnoodHeight = SnoodHead.SizeToGridHeight(m_SnoodSize);
Level.m_SnoodWidth = m_SnoodWidth;
Level.m_SnoodHeight = m_SnoodHeight;
SnoodHead.CreateSnoodHeadPool(this, m_headStartDepth, (CBoard.G.m_CurLevelInfo.OrigBorbCount + CBoard.G.m_CurLevelInfo.DangerIncrements) + Constants.BorbPoolBufferSize, m_SnoodSize);
Rows = Constants.BoardModeToMaxHeight(GameState.__get__CurrentGameMode());
Cols = Constants.BoardModeToMaxWidth(GameState.__get__CurrentGameMode());
Level.m_BoardColumns = Cols;
Level.m_BoardRows = Rows;
UpdateBoundingClipWithLevel(CGame.Board.m_CurLevelInfo);
var _local4 = BoardModeToOffset(GameState.__get__CurrentGameMode());
_x = _x + _local4.X;
_y = _y + _local4.Y;
BoundingClip._x = BoundingClip._x - _local4.X;
BoundingClip._y = BoundingClip._y - _local4.Y;
Bar._x = Bar._x - _local4.X;
Bar._y = Bar._y - _local4.Y;
BarShaft._x = BarShaft._x - _local4.X;
BarShaft._y = BarShaft._y - _local4.Y;
CachedGridCoords = new Array(Rows * Cols);
var _local3 = 0;
while (_local3 < Cols) {
var _local2 = 0;
while (_local2 < Rows) {
CachedGridCoords[(_local3 * Rows) + _local2] = new CCoord(Math.round(m_SnoodWidth * ((0.5 + (0.5 * (_local2 % 2))) + _local3)), Math.round(m_SnoodHeight * (0.5 + _local2)));
_local2++;
}
_local3++;
}
m_OrigCoord = new CCoord(_x, _y);
}
function UpdateBoundingBox(i_forceImmediate) {
m_boundingBoxNeedsUpdate = true;
if (i_forceImmediate) {
DoUpdateBoundingBox();
}
}
function DoUpdateBoundingBox() {
if (m_boundingBoxNeedsUpdate) {
var _local8 = 10000000 /* 0x989680 */;
var _local9 = 10000000 /* 0x989680 */;
var _local7 = -10000000;
var _local6 = -10000000;
var _local5 = 0;
while (_local5 < Rows) {
var _local4 = 0;
while (_local4 < Cols) {
if (Tiles[(_local4 * Rows) + _local5] != undefined) {
var _local3 = m_SnoodWidth * ((0.5 + (0.5 * (_local5 % 2))) + _local4);
var _local2 = m_SnoodHeight * (0.5 + _local5);
if (_local3 < _local8) {
_local8 = _local3;
}
if (_local2 < _local9) {
_local9 = _local2;
}
if (_local3 > _local7) {
_local7 = _local3;
}
if (_local2 > _local6) {
_local6 = _local2;
}
}
_local4++;
}
_local5++;
}
if (_local8 != 10000000) {
_local8 = _local8 + _x;
_local7 = _local7 + _x;
_local9 = _local9 + _y;
_local6 = _local6 + _y;
_local8 = _local8 - (m_SnoodWidth * s_BBClearanceX);
_local7 = _local7 + (m_SnoodWidth * s_BBClearanceX);
_local9 = _local9 - (m_SnoodHeight * s_BBClearanceY);
_local6 = _local6 + (m_SnoodHeight * s_BBClearanceY);
var _local11 = (_local7 + _local8) / 2;
var _local10 = (_local6 + _local9) / 2;
m_bbox.SetCenter(_local11, _local10);
m_bbox.SetExtents(_local7 - _local11, _local6 - _local10);
m_bbox.SetAxes(1, 0, 0, 1);
} else {
m_bbox.SetCenter(0, 0);
m_bbox.SetExtents(0, 0);
m_bbox.SetAxes(0, 0, 0, 0);
}
m_boundingBoxNeedsUpdate = false;
}
}
function OnPlayUpdate(i_deltaT) {
updateIfDirty();
if (State == State_Playing) {
m_nextCannonScareAnim = m_nextCannonScareAnim - i_deltaT;
if (m_nextCannonScareAnim <= 0) {
if (m_scareAnim != null) {
m_scareAnim.Finish();
}
m_scareAnim = Effects.CEffect_CannonScareAnim(CEffect.CreateEffect(CEffect.Type_CannonScareAnim));
if (m_scareAnim.OnInit()) {
CGame.EffectMgr.AddEffectToActiveList(m_scareAnim);
}
m_nextCannonScareAnim = s_CannonScareAnimIdle;
}
m_nextReboundTrace = m_nextReboundTrace - i_deltaT;
if (m_nextReboundTrace <= 0) {
CBoard.G.m_Launcher.TraceShot(CGame.Board.m_Launcher.GetShowTracer(), true, new Array());
m_nextReboundTrace = 10000;
}
}
}
function ResetNextCannonScareAnim() {
m_nextCannonScareAnim = s_CannonScareAnimIdle;
}
function ResetReboundTraceIdle() {
m_nextReboundTrace = s_ReboundTraceIdle;
}
function ResetCannonScareAnim() {
if (m_scareAnim != null) {
m_scareAnim.Finish();
}
m_nextCannonScareAnim = s_CannonScareAnimIdle;
}
function ToggleBounds() {
BoundingClip._visible = !BoundingClip._visible;
}
function IsTweenActive() {
var _local2 = 0;
while (_local2 < m_activeTweens.length) {
if (Core.CTween(m_activeTweens[_local2]).m_IsPlaying) {
return(true);
}
_local2++;
}
return(false);
}
function CheckAndUpdateForLoss() {
var _local5 = false;
var _local4 = 0;
while (_local4 < Rows) {
var _local3 = 0;
while (_local3 < Cols) {
var _local2 = SnoodHead(Tiles[(_local3 * Rows) + _local4]);
if (_local2 != null) {
if ((_local4 + Level.m_BoardLevel) >= Level.m_LoseLevel) {
if (_local2.__get__Color() <= Constants.Snood_HeadCount) {
_local5 = true;
Level.m_LosePieces.push(_local2);
} else {
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard);
Level.TryDropSnoods();
}
}
}
_local3++;
}
_local4++;
}
return(_local5);
}
function DbgShowAllSlotTypes(i_enabled) {
if (DEBUGTXT != null) {
DEBUGTXT.removeMovieClip();
DEBUGTXT = null;
}
if (!i_enabled) {
return(undefined);
}
var _local10 = getNextHighestDepth();
createEmptyMovieClip("DEBUGTXT" + _local10, _local10);
var _local6 = this["DEBUGTXT" + _local10];
DEBUGTXT = _local6;
_local6.lineStyle(3, 16777215);
var _local5 = 0;
while (_local5 < Cols) {
var _local9 = (((_local5 % 2) == 0) ? "" : " ");
var _local3 = 0;
while (_local3 < Rows) {
var _local2 = new CCoord(GetGridCoords(_local5, _local3).X - (m_SnoodWidth / 2), GetGridCoords(_local5, _local3).Y - (m_SnoodHeight / 2));
_local6.moveTo(_local2.X, _local2.Y);
_local6.lineTo(_local2.X + Level.m_SnoodWidth, _local2.Y);
_local6.lineTo(_local2.X + Level.m_SnoodWidth, _local2.Y + Level.m_SnoodHeight);
_local6.lineTo(_local2.X, _local2.Y + Level.m_SnoodHeight);
_local6.lineTo(_local2.X, _local2.Y);
var _local4 = "";
if (CGame.Board.IsRound()) {
_local4 = (Level.isValidCicleLocation(_local5, _local3) ? "+" : "-");
}
var _local8;
var _local7 = GetTile(_local5, _local3);
if (_local7 == undefined) {
_local8 = CDebug.DrawTextOnMovie(_local6, "E\n" + _local4);
_local9 = _local9 + ((" " + _local4) + "E ");
} else if (_local7 == -1) {
_local9 = _local9 + (_local4 + "EM ");
_local8 = CDebug.DrawTextOnMovie(_local6, "EM\n" + _local4);
} else {
_local9 = _local9 + (((((SnoodHead(_local7).__get__Color() < 10) ? " " : "") + _local4) + SnoodHead(_local7).__get__Color()) + " ");
_local8 = CDebug.DrawTextOnMovie(_local6, String((Constants.GetSnoodByNumber(SnoodHead(_local7).__get__Color()) + newline) + _local4));
}
_local8._x = GetGridCoords(_local5, _local3).X - 10;
_local8._y = GetGridCoords(_local5, _local3).Y - 10;
_local3++;
}
trace(_local9);
_local5++;
}
}
function SetTile(i_x, i_y, i_head) {
CDebug.Assert((i_x != null) && (i_y != null), "CTileSet.SetTile()", "x or y is null");
if (i_x == null) {
return(undefined);
}
if (i_head != null) {
if (Tiles[(i_x * Rows) + i_y] != null) {
i_head.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, 0);
} else {
m_dirty = true;
m_randDistDirty = true;
var _local7 = i_head.__get__Color();
Tiles[(i_x * Rows) + i_y] = i_head;
i_head.__set__State(SnoodHead.State_OnBoard);
i_head.m_ActiveHeadPos = m_activeBorbCount;
m_activeBorbs[m_activeBorbCount] = i_head;
m_activeBorbCount++;
UpdateColorCount(_local7, 1);
i_head.m_xSlot = i_x;
i_head.m_ySlot = i_y;
}
} else {
var _local2 = SnoodHead(Tiles[(i_x * Rows) + i_y]);
if (_local2 == null) {
CDebug.WriteErr("CTileSet.SetTile()", (("Attempting to nullify unoccupied tile : " + i_x) + ",") + i_y);
} else {
m_dirty = true;
m_randDistDirty = true;
Tiles[(i_x * Rows) + i_y] = undefined;
var _local7 = _local2.__get__Color();
var _local6 = _local2.m_ActiveHeadPos;
_local2.m_ActiveHeadPos = null;
CDebug.Assert((_local2.m_xSlot == i_x) && (_local2.m_ySlot == i_y), "CTileSet.SetTile()", (((((("Borb x,y does not match slot " + i_x) + ",") + i_y) + " : ") + _local2.m_xSlot) + ",") + _local2.m_ySlot);
_local2.m_xSlot = null;
_local2.m_ySlot = null;
if (_local6 == null) {
CDebug.WriteErr("CTileSet.SetTile()", "Remove head was not set by SetTile");
} else {
m_activeBorbCount--;
if ((m_activeBorbCount > 0) && (_local6 < m_activeBorbCount)) {
m_activeBorbs[_local6] = m_activeBorbs[m_activeBorbCount];
m_activeBorbs[_local6].m_ActiveHeadPos = _local6;
} else {
m_activeBorbs[_local6] = null;
}
}
UpdateColorCount(_local7, -1);
Level.m_InvalidatedSpots.push((i_x * Rows) + i_y);
}
}
}
function GetActiveBorbsFixedArray() {
return(m_activeBorbs);
}
function GetActiveBorbsCount() {
return(m_activeBorbCount);
}
function GetGridCoords(i_xSlot, i_ySlot, i_useBoardCoord) {
if (i_useBoardCoord) {
var _local2 = CachedGridCoords[(i_xSlot * Rows) + i_ySlot];
return(new CCoord(_local2.X + _x, _local2.Y + _y));
}
return(CachedGridCoords[(i_xSlot * Rows) + i_ySlot]);
}
function PixelPosToGridCell(x, y) {
var _local2 = Math.floor((y - _y) / m_SnoodHeight);
var _local3 = Math.floor(((x - _x) / m_SnoodWidth) - (0.5 * (_local2 % 2)));
return(new CCoord(Math.min(((_local3 > 0) ? (_local3) : 0), Cols - 1), Math.min(((_local2 > 0) ? (_local2) : 0), Rows - 1)));
}
function GetGridXCoord(i_xSlot, i_ySlot) {
return(GetGridCoords(i_xSlot, i_ySlot).X);
}
function GetGridYCoord(i_xSlot, i_ySlot) {
return(GetGridCoords(i_xSlot, i_ySlot).Y);
}
function SetTileCoord(i_coord, i_head) {
SetTile(i_coord.X, i_coord.Y, i_head);
}
function GetTile(i_x, i_y) {
return(SnoodHead(Tiles[(i_x * Rows) + i_y]));
}
function GetTileFromCoord(i_coord) {
return(SnoodHead(Tiles[(i_coord.X * Rows) + i_coord.Y]));
}
function HasNeighbor(i_x, i_y) {
var _local3 = NeighborTiles[(i_x * Rows) + i_y];
var _local2 = 0;
while (_local2 < _local3[0].length) {
var _local5 = _local3[0][_local2];
var _local4 = _local3[1][_local2];
if (SnoodHead(Tiles[(_local5 * Rows) + _local4]) != undefined) {
return(true);
}
_local2++;
}
return(false);
}
function AttachShotHead(i_x, i_y, i_borb) {
Level.m_LastAttached = i_borb;
if ((i_borb == null) || (i_borb == undefined)) {
CDebug.WriteErr("CTileSet.AttachHead", "Trying to attach an invalid object");
return(undefined);
}
SetTile(i_x, i_y, i_borb);
i_borb.MoveTo(m_SnoodWidth * ((0.5 + ((i_y % 2) / 2)) + i_x), m_SnoodHeight * (0.5 + i_y), true);
var _local5 = true;
m_LastAttached = new CCoord(i_x, i_y);
i_borb.LookOffCenter();
CGame.Board.OnAddedBorb(i_x, i_y, i_borb, _local5);
if (!CGame.EffectMgr.AreBlockingEffectsPlaying()) {
Level.onAddBorbEffectsComplete(i_x, i_y, i_borb, _local5);
}
CGame.Board.m_Launcher.m_ShouldRedraw = true;
if (Level.DbgShowSnoodCoords) {
SnoodHead.DbgShowCoordOnAllSnoods();
}
}
function GetNeighborCoords(i_borb) {
var _local4 = [];
var _local6 = NeighborTiles[(i_borb.m_xSlot * Rows) + i_borb.m_ySlot];
var _local5 = _local6[0];
var _local3 = _local6[1];
var _local2 = 0;
while (_local2 < _local3.length) {
_local4.push(new CCoord(_local5[_local2], _local3[_local2]));
_local2++;
}
return(_local4);
}
function GetNeighborCoordsOfCoord(i_coord) {
var _local4 = [];
var _local6 = NeighborTiles[(i_coord.X * Rows) + i_coord.Y];
var _local5 = _local6[0];
var _local3 = _local6[1];
var _local2 = 0;
while (_local2 < _local3.length) {
_local4.push(new CCoord(_local5[_local2], _local3[_local2]));
_local2++;
}
return(_local4);
}
function DbgShowAllBorbIds() {
var _local2 = 0;
while (_local2 < m_activeBorbCount) {
var _local3 = String(m_activeBorbs[_local2]).split(".");
SnoodHead(m_activeBorbs[_local2]).DbgSetText(_local3[_local3.length - 1]);
_local2++;
}
}
function GetNewHook() {
var _local2 = CPhysicsObject(attachMovie("ShootableAnchor", "ShootableAnchor" + m_nextEffectDepth, m_nextEffectDepth));
m_nextEffectDepth++;
return(_local2);
}
function GetNewPlunger() {
var _local2 = CPhysicsObject(attachMovie("ShootablePlunger", "ShootablePlunger" + m_nextEffectDepth, m_nextEffectDepth));
m_nextEffectDepth++;
return(_local2);
}
function ToggleMouseFollowOnAllBorbEyes(i_val) {
var _local2 = 0;
while (_local2 < m_activeBorbCount) {
var _local3 = SnoodHead(m_activeBorbs[_local2]);
_local3.ToggleFollowMouseWithEyes(i_val);
_local2++;
}
}
function GetDiveBarDist() {
}
function resetColorCounts() {
m_borbColorCounts = new Array(Constants.Snood_Count);
var _local2 = 0;
while (_local2 < Constants.Snood_Count) {
m_borbColorCounts[_local2] = 0;
_local2++;
}
}
function UpdateColorCount(i_color, i_diff) {
m_borbColorCounts[i_color - 1] = m_borbColorCounts[i_color - 1] + i_diff;
if ((m_borbColorCounts[i_color - 1] == 0) && (((i_color <= Constants.Snood_HeadCount) && (m_borbColorCounts[(i_color + Constants.Snood_HeadCount) - 1] == 0)) || (((i_color > Constants.Snood_HeadCount) && (i_color <= (Constants.Snood_HeadCount * 2))) && (m_borbColorCounts[(i_color - Constants.Snood_HeadCount) - 1] == 0)))) {
CGame.Board.ResyncColors();
}
}
function GetCenterCoord() {
return(new CCoord(Math.floor(Cols / 2), Math.floor(Rows / 2)));
}
function GetCenterTile() {
return(GetTileFromCoord(GetCenterCoord()));
}
function GetColorCount(i_color, i_allOfColor) {
if (i_allOfColor) {
if (i_color <= Constants.Snood_HeadCount) {
return(m_borbColorCounts[i_color - 1] + m_borbColorCounts[(i_color + Constants.Snood_HeadCount) - 1]);
}
if (i_color <= (Constants.Snood_HeadCount * 2)) {
return(m_borbColorCounts[i_color - 1] + m_borbColorCounts[(i_color - Constants.Snood_HeadCount) - 1]);
}
return(m_borbColorCounts[i_color - 1]);
}
return(m_borbColorCounts[i_color - 1]);
}
function DbgBoardColorCountToString() {
var _local3 = "";
var _local2 = 0;
while (_local2 < m_borbColorCounts.length) {
if (m_borbColorCounts[_local2] > 0) {
_local3 = _local3 + ((((" Color: " + Constants.GetSnoodByNumber(_local2 + 1)) + ", Count: ") + m_borbColorCounts[_local2]) + newline);
}
_local2++;
}
_local3 = _local3 + ((" **Total: " + m_activeBorbCount) + newline);
return(_local3);
}
function GetNextHighestBankDepth() {
return(m_nextBankDepth++);
}
function DropAllHeads(i_excludeBoss, i_excludeHeads) {
var _local4 = new Array(m_activeBorbCount);
var _local3 = 0;
while (_local3 < m_activeBorbCount) {
_local4[_local3] = m_activeBorbs[_local3];
_local3++;
}
var _local5 = [];
var _local2;
_local3 = 0;
while (_local3 < _local4.length) {
_local2 = SnoodHead(_local4[_local3]);
if ((!i_excludeHeads) || (_local2.__get__Color() > (Constants.Snood_HeadCount * 2))) {
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard);
if ((_local2.__get__Color() >= Constants.Snood_LumpStart) && (_local2.__get__Color() <= Constants.Snood_LumpEnd)) {
_local5.push(_local2);
} else if (_local2.__get__Color() == Constants.Snood_Slippery) {
_local5.push(_local2);
}
}
_local3++;
}
CCharacterSounds.PlayLumpDrops(_local5);
}
function GetHeadCount() {
var _local3 = 0;
var _local2 = 1;
while (_local2 <= Constants.Snood_Count) {
if (_local2 <= (Constants.Snood_HeadCount * 2)) {
_local3 = _local3 + m_borbColorCounts[_local2 - 1];
}
_local2++;
}
return(_local3);
}
function GetBorbColorCounts() {
return(m_borbColorCounts);
}
function GetRandColor() {
updateIfRandDistDirty();
var _local3 = Oberon.MathX.randRange(0, 1000) / 10;
var _local2 = 0;
while (_local2 < Constants.Snood_HeadCount) {
if (((_local3 <= m_borbRandDist[_local2]) || (_local2 == (Constants.Snood_HeadCount - 1))) && (m_borbRandDist[_local2] != 0)) {
return(_local2 + 1);
}
_local3 = _local3 - m_borbRandDist[_local2];
_local2++;
}
_local2 = 0;
while (_local2 < Constants.Snood_HeadCount) {
if (m_borbRandDist[_local2] != 0) {
return(_local2 + 1);
}
_local2++;
}
CDebug.WriteErr("CTileSet.GetRandColor()", "No colors to choose from");
return(1);
}
function updateIfDirty() {
if (m_dirty) {
UpdateBoundingBox();
m_OnlyBlockersRemain = GetHeadCount() == 0;
m_dirty = false;
}
}
function updateIfRandDistDirty() {
if (m_randDistDirty) {
var _local3 = 0;
var _local2 = 0;
while (_local2 < Constants.Snood_HeadCount) {
_local3 = _local3 + m_borbColorCounts[_local2];
m_borbRandDist[_local2] = m_borbColorCounts[_local2];
_local2++;
}
_local2 = 0;
while (_local2 < Constants.Snood_HeadCount) {
m_borbRandDist[_local2] = (m_borbColorCounts[_local2] / _local3) * 100;
_local2++;
}
m_randDistDirty = false;
}
}
function MoveToTop(i_borb) {
i_borb.swapDepths(m_nextTopDepth);
m_nextTopDepth++;
}
var State = 1;
static var s_CannonScareAnimIdle = 4;
static var s_ReboundTraceIdle = 0.8;
static var s_BBClearanceX = 0.6;
static var s_BBClearanceY = 0.6;
var m_headStartDepth = 1;
var m_nextTopDepth = 200000;
var m_nextBankDepth = 600000;
var m_nextEffectDepth = 800000;
var m_boundingBoxNeedsUpdate = true;
static var State_Playing = 1;
static var State_RotatePending = 2;
static var State_Rotating = 3;
static var State_RotatingComplete = 4;
static var State_Dumping = 5;
static var State_DroppingInitialShake = 6;
static var State_DroppingMovingToTarget = 7;
static var State_DroppingEndShake = 8;
static var s_OffsetsX = [0, 6, 0, 0, 0, 0, 8, 8, 12, 22];
static var s_OffsetsY = [0, 0, 0, 0, 0, 0, 7, 7, 12, 11];
var m_shakeDuration = 0;
var m_shakeStartX = 0;
var m_shakeStartY = 0;
var m_nextCannonScareAnim = 0;
var m_nextReboundTrace = 0;
}
Symbol 57 MovieClip [__Packages.Effects.CEffect_CannonScareAnim] Frame 0
class Effects.CEffect_CannonScareAnim extends CEffect
{
var m_shakeEffects, m_NeedsUpdate, m_Type;
function CEffect_CannonScareAnim () {
super(CEffect.Type_CannonScareAnim);
m_shakeEffects = new Array();
m_NeedsUpdate = true;
}
function OnInit() {
var _local14 = true;
if ((!CGame.EffectMgr.m_IdleAnimationsOn) || (CGame.EffectMgr.IsEffectPlaying(m_Type))) {
return(false);
}
var _local13 = [];
var _local16 = [];
var _local12 = CGame.Board.m_Launcher;
_local12.TraceShot(false, false, [], _local13, _local16, false, true);
if (_local13.length == 0) {
_local14 = false;
} else {
var _local15 = CGame.TileSet.GetTileFromCoord(_local13[0]);
var _local11 = CGame.TileSet.GetNeighborCoords(_local15);
var _local4 = [_local15];
var _local9 = 0;
while (_local9 < _local11.length) {
var _local8 = CGame.TileSet.GetTileFromCoord(_local11[_local9]);
if ((_local8 != null) && (Oberon.MathX.randRange(0, 1) == 0)) {
_local4.push(_local8);
}
if (_local9 < 6) {
var _local6 = CGame.TileSet.GetNeighborCoords(_local8);
var _local2 = 0;
while (_local2 < _local6.length) {
if (Oberon.MathX.randRange(0, 1) == 0) {
var _local3 = CGame.TileSet.GetTileFromCoord(_local6[_local2]);
if ((_local3 != null) && (!Oberon.ArrayX.Contains(_local4, _local3))) {
_local4.push(_local3);
}
}
_local2++;
}
}
_local9++;
}
_local9 = 0;
while (_local9 < _local4.length) {
var _local7 = SnoodHead(_local4[_local9]);
if ((_local7.__get__PowerUp() == Constants.PowerUp_None) && (Constants.IsHead(_local7.__get__Color()))) {
var _local5 = Effects.CEffect_ScareAnim(CEffect.CreateEffect(CEffect.Type_ScareAnim));
var _local10 = CCoord.ToLocal(_local12, _local7._parent);
if (_local5.OnInit(_local7, _local10)) {
_local5.m_CompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnShakeComplete));
CGame.EffectMgr.AddEffectToActiveList(_local5);
m_shakeEffects.push(_local5);
}
}
_local9++;
}
}
return(_local14);
}
function OnUpdate(bForceComplete, i_deltaT) {
CGame.TileSet.ResetNextCannonScareAnim();
return(super.OnUpdate(bForceComplete, i_deltaT));
}
function isActive() {
var _local4 = false;
var _local2 = 0;
while ((!_local4) && (_local2 < m_shakeEffects.length)) {
var _local3 = CEffect(m_shakeEffects[_local2]);
_local4 = (_local3 != null) && (!_local3.m_bReadyForDelete);
_local2++;
}
return(_local4);
}
function OnShakeComplete() {
if (!isActive()) {
OnComplete();
}
}
function OnComplete() {
super.OnComplete();
var _local4 = 0;
while (_local4 < m_shakeEffects.length) {
var _local3 = CEffect(m_shakeEffects[_local4]);
if ((_local3 != null) && (!_local3.m_bReadyForDelete)) {
_local3.Finish();
}
_local4++;
}
CGame.TileSet.ResetCannonScareAnim();
}
}
Symbol 58 MovieClip [__Packages.CLauncher] Frame 0
class CLauncher extends MovieClip
{
var m_miniLaserColor, m_Access, m_Lasers, m_ReboundLasers, m_ReboundLasersDrawn, m_ShouldRedraw, m_powerupFrameTween, SpecialBorbLoadedEvent, m_FullCannonMc, _parent, m_LauncherTrack, Plunger, m_MoveLeftIndicator, m_MoveRightIndicator, MiniLazer, LauncherAnims, m_tentacle, Tentacle, AimerBase, m_CannonBorbMarker, m_powerupAnimMc, m_State, m_lastLaser, m_lastReboundLaser, LauncherBottomCog, _rotation, m_loadAnim, m_projScaleX, m_projScaleY, m_LastLaserTargetCoord;
function CLauncher () {
super();
m_miniLaserColor = null;
m_Access = Access_Disabled;
m_Lasers = [];
m_ReboundLasers = [];
m_ReboundLasersDrawn = false;
m_ShouldRedraw = false;
m_Angle = 0;
m_powerupFrameTween = null;
SpecialBorbLoadedEvent = new Oberon.CEvent(this);
}
static function OrientToString(inVal) {
switch (inVal) {
case Orient_Top :
return("Top");
case Orient_Bottom :
return("Bottom");
case Orient_Left :
return("Left");
case Orient_Right :
return("Right");
}
return("<Unknown>");
}
function onLoad() {
m_FullCannonMc = MovieClip(_parent);
m_LauncherTrack = CGame.Board.m_LauncherTrack;
var _local2 = "LauncherHead";
m_CannonSnood = SnoodHead(m_FullCannonMc[_local2]);
m_CannonSnood._visible = false;
m_CannonPlunger = CPhysicsObject(Plunger);
CDebug.Assert(m_CannonPlunger != null, this, "Couldn't find plunger");
CDebug.Assert(m_CannonSnood != null, this, "Couldn't find bottom head " + _local2);
m_MoveLeftIndicator = MovieClip(m_FullCannonMc.MoveLeftIndicator);
m_MoveLeftIndicator._visible = false;
m_MoveLeftIndicator.stop();
m_MoveRightIndicator = MovieClip(m_FullCannonMc.MoveRightIndicator);
m_MoveRightIndicator._visible = false;
m_MoveRightIndicator.stop();
m_MiniLazerMc = MovieClip(MiniLazer);
CDebug.Assert(m_MiniLazerMc != null, this, "Couldn't find MiniLazer");
m_MiniLazerMc.gotoAndStop(m_MiniLazerMc._totalframes);
m_LauncherAnimsMc = MovieClip(LauncherAnims);
CDebug.Assert(m_LauncherAnimsMc != null, this, "Couldn't find LauncherAnims");
m_LauncherAnimsMc.gotoAndStop(s_CannonAnimDefault);
m_tentacle = MovieClip(Tentacle);
CDebug.Assert(m_tentacle != null, this, "Couldn't find m_tentacle");
m_tentacle._visible = false;
m_AimerBaseMc = MovieClip(AimerBase);
CDebug.Assert(m_AimerBaseMc != null, this, "Couldn't find AimerBaseMc");
m_CannonBorbMarker = MovieClip(m_FullCannonMc.Marker);
m_CannonBorbMarker._visible = false;
m_powerupAnimMc = MovieClip(m_FullCannonMc.PowerupAnim);
m_powerupAnimMc.stop();
SetOrientation(Orient_Bottom);
setState(State_Empty, true);
SetMode(Mode_Normal, true);
SetAngle(0);
}
function OnPlayUpdate(i_deltaT) {
var _local3 = Key.isDown(37);
var _local2 = Key.isDown(39);
UpdateAngleByMouse(Key.isDown(16));
if (m_ShouldRedraw && (m_showTracer)) {
if (CGame.TileSet.State == CTileSet.State_Playing) {
TraceShot(true, false, null, null, null, isNextShotFireball());
} else {
hideLaser();
}
}
}
function GetShowTracer() {
return(m_showTracer);
}
function SetShowTracer(i_val) {
if (m_showTracer != i_val) {
m_showTracer = i_val;
UpdateTracer();
}
}
function UpdateTracer() {
setShowMiniTracer(!m_showTracer);
if ((((!CGame.Board.m_Won) && (!CGame.Board.m_Lost)) && (m_showTracer)) && (!m_LauncherTrack.IsBusy())) {
TraceShot(true, false, null, null, null, isNextShotFireball());
} else {
RemoveLasers();
}
}
function setShowMiniTracer(i_show) {
m_MiniLazerMc._visible = i_show;
}
function IsBusy() {
return((m_State == State_Waiting) || (((m_powerupFrameTween != null) && (m_powerupFrameTween.m_IsPlaying)) && (m_powerupFrameTween.GetPercentComplete() < 50)));
}
function SetMode(i_mode, i_force) {
if (i_force || (i_mode != m_Mode)) {
switch (i_mode) {
case Mode_Normal :
m_LauncherAnimsMc.gotoAndStop(s_CannonAnimDefault);
setShowMiniTracer(!m_showTracer);
m_CannonPlunger._visible = false;
break;
case Mode_Hook :
m_CannonPlunger._visible = m_State == State_Loaded;
}
m_Mode = i_mode;
}
}
function ToggleShowTentacle(i_val) {
m_tentacle._visible = i_val;
}
function SetAccess(i_access) {
if (m_Access != i_access) {
FHost.CApp.ClearMouseDelta();
switch (m_Access) {
case Access_Disabled :
hideLaser();
break;
case Access_MouseDisabled :
}
m_Access = i_access;
}
}
function setState(i_state, i_force) {
if (i_force || (i_state != m_State)) {
switch (i_state) {
case State_Loaded :
m_CannonPlunger._visible = m_Mode == Mode_Hook;
break;
case State_Waiting :
m_CannonPlunger._visible = false;
break;
case State_Empty :
if (m_LaunchSnood != null) {
SnoodHead.ReturnToPool(m_LaunchSnood);
}
m_LaunchSnood = null;
}
m_State = i_state;
}
}
function onUnload() {
RemoveLasers();
}
function createLaserClipPool(i_removeOld) {
if (i_removeOld) {
RemoveLasers();
}
m_lastLaser = null;
m_Lasers = new Array(s_LaserClipPoolSize);
var _local4 = 0;
while (_local4 < s_LaserClipPoolSize) {
var _local3 = CBoard.G.GetNewLaserMc(_local4 == 0, _local4 == (s_LaserClipPoolSize - 1), _local4 == 1);
CDebug.Assert(_local3 != null, this, "Laser failed to create");
_local3._visible = false;
_local3.gotoAndStop(1);
m_Lasers[_local4] = _local3;
_local4++;
}
m_lastReboundLaser = null;
m_ReboundLasers = new Array(s_ReboundLaserClipPoolSize);
_local4 = 0;
while (_local4 < s_ReboundLaserClipPoolSize) {
var _local2 = CBoard.G.GetNewReboundLaserMc();
CDebug.Assert(_local2 != null, this, "Rebound laser failed to create");
_local2._visible = false;
_local2.stop();
m_ReboundLasers[_local4] = _local2;
_local4++;
}
}
function RemoveLasers() {
var _local2 = 0;
while (_local2 < m_Lasers.length) {
MovieClip(m_Lasers[_local2]).removeMovieClip();
_local2++;
}
m_Lasers = [];
m_lastLaser = null;
_local2 = 0;
while (_local2 < m_ReboundLasers.length) {
MovieClip(m_ReboundLasers[_local2]).removeMovieClip();
_local2++;
}
m_ReboundLasers = [];
m_lastReboundLaser = null;
}
function RefreshBottomCog(i_playAnim) {
if (m_Orient != null) {
m_LauncherBottomMc = MovieClip(LauncherBottomCog);
m_CannonSnood._rotation = -m_AngularOffset;
RefreshLaunchSnoodPos();
}
}
function RefreshLaunchSnoodPos() {
if (m_LaunchSnood != null) {
var _local2 = getLaunchSnoodPos();
m_LaunchSnood._x = _local2.X;
m_LaunchSnood._y = _local2.Y;
}
}
function RefreshCannonSnood() {
m_CannonSnood.SyncWithInfo(m_LaunchSnood.ToInfo());
}
function Shoot() {
m_CannonSnood._visible = false;
RefreshLaunchSnoodPos();
var _local2;
if (m_Mode == Mode_Hook) {
_local2 = CGame.TileSet.GetNewPlunger();
CDebug.Assert(_local2 != null, "CLauncher.Shoot()", "Unable to get new plunger");
var _local5 = CCoord.ToLocal(m_CannonPlunger, _local2);
var _local4 = CCoord.ToLocal(this, CGame.Board);
var _local3 = CCoord.ToLocal(m_CannonPlunger, CGame.Board);
var _local6 = new Core.Vector2(_local3.X - _local4.X, _local3.Y - _local4.Y);
_local2.m_IgnoreDist = _local6.Magnitude();
_local2._x = _local5.X;
_local2._y = _local5.Y;
_local2._rotation = _rotation;
setState(State_Waiting);
} else {
m_LaunchSnood._visible = true;
m_LaunchSnood.ResetScale();
_local2 = m_LaunchSnood;
m_LaunchSnood = null;
setState(State_Empty);
}
hideLaser();
updateMiniLaserColor();
return(_local2);
}
function updateMiniLaserColor() {
if (m_CannonSnood._visible) {
m_miniLaserColor = m_CannonSnood.Color;
} else {
var _local2 = CGame.Board.m_Queue.GetNextPosBorb();
if (_local2 != null) {
m_miniLaserColor = _local2.Color;
} else {
m_miniLaserColor = null;
}
}
m_MiniLazerMc.gotoAndStop(((m_miniLaserColor == null) ? (m_MiniLazerMc._totalframes) : (m_miniLaserColor)));
}
function IsEmpty() {
return(m_State != State_Loaded);
}
function GetActive() {
return(m_Access != Access_Disabled);
}
function getLaunchSnoodPos() {
return(CCoord.ToLocal(this, CBoard.G.m_TileSet));
}
function ApplyPowerup(i_powerup, i_color) {
var _local2 = false;
switch (i_powerup) {
case Constants.PowerUp_Aimer :
m_ShouldRedraw = true;
CGame.Sounds.PlaySound(Constants.__get__Sound_SureShot());
onLoadAimerPowerUpBorb();
_local2 = true;
break;
case Constants.PowerUp_Hook :
m_loadAnim = CGame.EffectMgr.PlaySingleAnimMc("HookLoadAnim", this, 0.5);
m_loadAnim.m_CompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, onLoadHookPowerUpBorb));
setState(State_Waiting);
_local2 = true;
setShowMiniTracer(false);
break;
case Constants.PowerUp_Fireball :
m_ShouldRedraw = true;
m_projScaleX = m_projScaleX * Constants.FireballPower;
m_LauncherAnimsMc.gotoAndStop(s_CannonAnimFireball);
setShowMiniTracer(false);
_local2 = true;
CGame.Sounds.PlaySound(Constants.__get__Sound_Hotfoot());
break;
case Constants.PowerUp_BubbleBubble :
CGame.Sounds.PlaySound(Constants.__get__Sound_BubbleBubble());
_local2 = true;
m_LauncherAnimsMc.gotoAndStop(s_CannonAnimBubble);
setShowMiniTracer(!m_showTracer);
}
if (_local2 || (i_color == Constants.Snood_Wild)) {
if (i_color == Constants.Snood_Wild) {
m_powerupAnimMc.gotoAndStop(Constants.PowerUp_Count + 1);
} else {
m_powerupAnimMc.gotoAndStop(i_powerup);
}
Oberon.CEnterFrameEvent.AddEvent(m_powerupAnimMc, mx.utils.Delegate.create(this, playPowerUpAnim), true);
CCharacterSounds.PlayCharPowerupSound(i_color, i_powerup);
}
}
function playPowerUpAnim() {
if (m_powerupFrameTween != null) {
m_powerupFrameTween.StopUpdates();
}
var _local2 = Oberon.MovieClipX.GetChildClip(m_powerupAnimMc);
_local2.stop();
m_powerupFrameTween = new Core.CTween(_local2, "_currentframe", null, 1, _local2._totalframes, s_PowerupAnimDur, true);
m_powerupFrameTween.m_CompleteEvent.PushBehavior(mx.utils.Delegate.create(this, OnPowerupAnimComplete));
}
function OnPowerupAnimComplete() {
if (m_powerupFrameTween == null) {
m_powerupAnimMc.gotoAndStop(1);
}
}
function SyncLoadedBorb(i_borb) {
m_LaunchSnood.SyncWithInfo(i_borb);
m_CannonSnood.SyncWithInfo(i_borb);
updateMiniLaserColor();
}
function Load(i_borb) {
if (m_loadAnim != null) {
m_loadAnim.Finish();
}
SetMode(Mode_Normal);
m_CannonSnood.__set__State(SnoodHead.State_InCannon);
m_CannonSnood.__set__Size(m_SnoodSize);
m_CannonSnood.SyncWithInfo(i_borb);
m_CannonSnood._visible = true;
m_CannonSnood._xscale = 79.2;
m_CannonSnood._yscale = 79.2;
updateMiniLaserColor();
var _local2 = getLaunchSnoodPos();
var _local3 = SnoodHead.GetAndRemoveFromPool(i_borb, m_SnoodSize, _local2.X, _local2.Y);
m_LaunchSnood = _local3;
m_LaunchSnood._visible = false;
m_LaunchSnood._x = _local2.X;
m_LaunchSnood._y = _local2.Y;
m_LaunchSnood.__set__State(SnoodHead.State_InCannon);
m_projScaleX = Constants.BaseProjectileXScale;
m_projScaleY = Constants.BaseProjectileYScale;
setState(State_Loaded);
ApplyPowerup(m_CannonSnood.__get__PowerUp(), m_CannonSnood.__get__Color());
if (m_CannonSnood.__get__Color() == Constants.Snood_Wild) {
CCharacterSounds.PlayWildSounds();
}
if ((((m_Mode == Mode_Normal) && (m_CannonSnood.__get__PowerUp() == Constants.PowerUp_None)) && (m_LauncherAnimsMc._currentframe != s_CannonAnimVacum)) && (m_LauncherAnimsMc._currentframe != s_CannonAnimDefault)) {
m_LauncherAnimsMc.gotoAndStop(s_CannonAnimDefault);
setShowMiniTracer(!m_showTracer);
}
m_ShouldRedraw = true;
}
function onLoadHookPowerUpBorb() {
m_CannonSnood._visible = false;
SetMode(Mode_Hook);
SpecialBorbLoadedEvent.Fire();
SnoodHead.ReturnToPool(m_LaunchSnood);
m_LaunchSnood = null;
setState(State_Loaded);
}
function onLoadAimerPowerUpBorb() {
SpecialBorbLoadedEvent.Fire();
if (((m_LaunchSnood == null) && (m_Mode == Mode_Normal)) && (!CGame.Board.m_Queue.IsAnimating())) {
CGame.Board.AdvanceLauncher();
}
}
function UpdateOrient() {
m_AngularOffset = m_FullCannonMc._rotation % 360;
RefreshBottomCog(false);
}
function SetOrientation(i_orient) {
m_Orient = i_orient;
UpdateOrient();
}
function UpdateAngleByMouse(i_keyShift) {
if ((m_Access == Access_Disabled) || (m_Access == Access_MouseDisabled)) {
FHost.CApp.ClearMouseDelta();
return(undefined);
}
var _local6 = CGame.Board.GetBoundingClip();
var _local3 = m_Angle;
if (FHost.CApp.__get__IsRunning()) {
var _local5 = s_MouseSensitivity;
if (i_keyShift || (CGame.m_RMouseDown)) {
_local5 = _local5 / 3;
}
var _local4 = 1;
if (CGame.Board.IsRound() && (m_Orient == Orient_Top)) {
_local4 = -1;
}
_local3 = _local3 + ((_local4 * _local5) * FHost.CApp.TakeMouseDelta().x);
} else {
_local3 = (Object(_root)._xmouse - (_local6._width / 2)) / 2;
if (CGame.Board.IsRound() && (m_Orient == Orient_Top)) {
_local3 = _local3 * -1;
}
}
SetAngle(_local3);
}
function IsAtMaxBounds() {
return(Math.abs(m_Angle) == s_MaxAngle);
}
function SetAngle(i_angle, i_force) {
var _local2 = Math.abs(m_Angle - i_angle);
m_Angle = i_angle;
if (m_Angle < (-s_MaxAngle)) {
m_Angle = -s_MaxAngle;
} else if (m_Angle > s_MaxAngle) {
m_Angle = s_MaxAngle;
}
if (i_force || (m_OldAngle != m_Angle)) {
CGame.TileSet.ResetCannonScareAnim();
CGame.TileSet.ResetReboundTraceIdle();
m_MoveLeftIndicator._visible = false;
m_MoveLeftIndicator.stop();
m_MoveRightIndicator._visible = false;
m_MoveRightIndicator.stop();
_rotation = m_Angle;
m_ShouldRedraw = true;
m_OldAngle = m_Angle;
if (m_DebugLaser != null) {
m_DebugLaser.removeMovieClip();
m_DebugLaser = null;
}
if ((CGame.DbgMobileLauncher && ((CBoardCircular(CGame.Board) != null) || (!CGame.DbgMobileLauncherAlt))) && (IsAtMaxBounds())) {
if (m_Angle < 0) {
m_MoveLeftIndicator._visible = true;
m_MoveLeftIndicator.play();
} else if (m_Angle > 0) {
m_MoveRightIndicator._visible = true;
m_MoveRightIndicator.play();
}
} else if (CGame.DbgShowCannonAimLine || (m_showTracer)) {
TraceShot(true, false, null, null, null, isNextShotFireball());
} else if (m_ReboundLasersDrawn) {
if ((_local2 > s_ReboundTraceThreshold) && (!isNextShotFireball())) {
hideLaser();
} else {
TraceShot(false, true);
}
}
}
}
function traceLaser(i_vector, i_passThrough) {
var _local2 = null;
var _local5 = null;
if ((m_lastLaser != null) && (i_passThrough || ((m_lastLaser + 1) >= m_Lasers.length))) {
return(false);
}
if (m_lastLaser != null) {
_local5 = m_Lasers[m_lastLaser];
m_lastLaser++;
_local2 = MovieClip(m_Lasers[m_lastLaser]);
} else {
m_lastLaser = 1;
_local2 = MovieClip(m_Lasers[m_lastLaser]);
}
_local2._visible = true;
var _local3 = m_LastLaserTargetCoord.Clone();
_local2._x = _local3.X;
_local2._y = _local3.Y;
_local2._rotation = 0;
if (i_passThrough) {
i_vector.NormalizeTo(300);
_local2.gotoAndStop(2);
} else {
_local2.gotoAndStop(1);
}
_local2._width = i_vector.Magnitude();
if ((m_lastLaser + 1) == m_Lasers.length) {
_local2._width = _local2._width / 2;
}
_local2._rotation = i_vector.GetAngle();
_local3.X = _local3.X + i_vector.X;
_local3.Y = _local3.Y + i_vector.Y;
m_LastLaserTargetCoord = _local3;
if ((((m_CannonSnood != null) && (m_CannonSnood._visible)) && (m_CannonSnood.__get__Color() <= (Constants.Snood_HeadCount * 2))) && (!isNextShotFireball())) {
var _local6 = new Color(_local2);
_local6.setRGB(Constants.s_BorbColorTints[m_CannonSnood.__get__Color() - 1]);
} else {
var _local6 = new Color(_local2);
_local6.setRGB(16777215);
}
return(true);
}
function traceReboundLaser(i_startPos, i_endPos, i_showStart, i_showEnd) {
var _local3 = null;
var _local2 = null;
var _local4 = i_showStart;
var _local5 = i_showEnd;
if (_local4 == null) {
_local4 = true;
}
if (_local5 == null) {
_local5 = true;
}
if ((m_lastReboundLaser != null) && ((m_lastReboundLaser + 1) >= m_ReboundLasers.length)) {
return(undefined);
}
if (m_lastReboundLaser != null) {
m_lastReboundLaser++;
_local3 = MovieClip(m_ReboundLasers[m_lastReboundLaser]);
if ((m_lastReboundLaser + 1) < m_ReboundLasers.length) {
m_lastReboundLaser++;
_local2 = MovieClip(m_ReboundLasers[m_lastReboundLaser]);
} else {
CDebug.AssertWarn(true, "CLauncher", "Ran out of rebound laser clips!");
}
} else {
m_lastReboundLaser = 1;
_local2 = MovieClip(m_ReboundLasers[m_lastReboundLaser]);
}
_local3._visible = _local4;
_local2._visible = _local5;
var _local6 = new Core.Vector2(i_endPos.X - i_startPos.X, i_endPos.Y - i_startPos.Y);
_local3._x = i_startPos.X;
_local3._y = i_startPos.Y;
_local3._rotation = _local6.GetAngle();
_local6.Scale(-1);
_local2._x = i_endPos.X;
_local2._y = i_endPos.Y;
_local2._rotation = _local6.GetAngle();
if (((m_CannonSnood != null) && (m_CannonSnood._visible)) && (m_CannonSnood.__get__Color() <= (Constants.Snood_HeadCount * 2))) {
var _local9 = new Color(_local3);
_local9.setRGB(Constants.s_BorbColorTints[m_CannonSnood.__get__Color() - 1]);
var _local10 = new Color(_local2);
_local10.setRGB(Constants.s_BorbColorTints[m_CannonSnood.__get__Color() - 1]);
} else {
var _local9 = new Color(_local3);
_local9.setRGB(16777215);
var _local10 = new Color(_local2);
_local10.setRGB(16777215);
}
}
function isNextShotFireball() {
return((m_CannonSnood != null) && (m_CannonSnood.__get__PowerUp() == Constants.PowerUp_Fireball));
}
function hideLaser() {
if (m_lastLaser != null) {
MovieClip(m_Lasers[0]).stop();
MovieClip(m_Lasers[0])._visible = false;
if (m_lastLaser != null) {
var _local4 = 1;
while (_local4 <= m_lastLaser) {
var _local3 = MovieClip(m_Lasers[_local4]);
_local3._visible = false;
_local3.stop();
_local3._x = -_local3._width;
_local3._y = -_local3._height;
_local3._xscale = 100;
_local3._yscale = 100;
_local4++;
}
m_lastLaser = null;
}
}
if (m_lastReboundLaser != null) {
MovieClip(m_ReboundLasers[0]).stop();
MovieClip(m_ReboundLasers[0])._visible = false;
if (m_lastReboundLaser != null) {
var _local4 = 1;
while (_local4 <= m_lastReboundLaser) {
var _local2 = MovieClip(m_ReboundLasers[_local4]);
_local2._visible = false;
_local2.stop();
_local2._x = -_local2._width;
_local2._y = -_local2._height;
_local2._xscale = 100;
_local2._yscale = 100;
_local4++;
}
m_lastReboundLaser = null;
}
m_ReboundLasersDrawn = false;
}
if (m_DebugLaser != null) {
m_DebugLaser.removeMovieClip();
m_DebugLaser = null;
}
}
function TraceShot(i_drawLaser, i_drawReboundLaser, o_vecArr, o_collisionCoord, o_collisionDist, i_passThrough, i_noBounce, i_useHookPos) {
var _local79 = CGame.Board;
var _local66 = null;
var _local81 = ((!i_drawLaser) && (i_drawReboundLaser)) && (!isNextShotFireball());
if (PhysicsMgr.G.IsBusy() || ((i_drawLaser || (_local81)) && (!m_ShouldRedraw))) {
return(_local66);
}
if ((i_drawLaser || (_local81)) && (m_Lasers.length == 0)) {
createLaserClipPool(false);
}
var _local87 = _local79.GetBoundingClip();
var _local17 = _local79.m_TileSet;
var _local59 = Level.m_BoardSpaces;
var _local82 = CGame.Board.IsRound();
var _local58 = _local17.Rows;
var _local88 = CCoord.ToLocal(this, _local79);
m_LastLaserTargetCoord = CCoord.ToLocal(m_AimerBaseMc, _local79);
var _local83 = null;
if (i_drawLaser) {
_local83 = new Core.Vector2(m_LastLaserTargetCoord.X - _local88.X, m_LastLaserTargetCoord.Y - _local88.Y);
}
var _local73 = false;
var _local94 = _local17._x;
var _local97 = _local17._y;
var _local4 = Level.m_SnoodWidth;
var _local5 = Level.m_SnoodHeight;
var _local23 = (_local94 + (0.5 * _local4)) + _local87._x;
var _local25 = ((_local94 + _local87._width) + _local87._x) - (0.5 * _local4);
var _local21 = (_local97 + _local87._y) + (0.5 * _local5);
var _local24 = ((_local97 + _local87._height) + _local87._y) - (0.5 * _local4);
var _local52 = _local88.Clone();
var _local7 = _local88.X;
var _local6 = _local88.Y;
var _local64 = _local4 * m_projScaleX;
var _local85 = _local5 * m_projScaleY;
var _local20 = 0.25 * Math.min(_local4, _local5);
var _local102 = (Math.PI * (m_Angle + m_AngularOffset)) / 180;
var _local2 = new Core.Vector2(Math.sin(_local102), -Math.cos(_local102));
var _local36 = 0;
var _local111 = _local7;
var _local116 = _local6;
var _local54 = 0;
var _local56 = _local17.PixelPosToGridCell(_local7, _local6);
var _local91 = new Core.Vector2(_local23, _local21);
var _local101 = new Core.Vector2(_local25, _local21);
var _local100 = new Core.Vector2(_local23, _local24);
var _local95 = new Core.Vector2(_local25, _local24);
var _local109 = new Core.Vector2(0, -1);
var _local108 = new Core.Vector2(1, 0);
var _local105 = new Core.Vector2(-1, 0);
var _local110 = new Core.Vector2(0, 1);
var _local45 = Orient_Bottom;
var _local57 = Orient_Left;
var _local55 = Orient_Right;
var _local53 = Orient_Top;
var _local8 = new Array(4);
_local8[_local45] = {numHits:0, w0:_local100, w1:_local95, N:_local109};
_local8[_local57] = {numHits:0, w0:_local91, w1:_local100, N:_local108};
_local8[_local55] = {numHits:0, w0:_local101, w1:_local95, N:_local105};
_local8[_local53] = {numHits:0, w0:_local91, w1:_local101, N:_local110};
if (i_drawLaser) {
hideLaser();
} else if (_local81) {
hideLaser();
}
if (CGame.DbgShowCannonAimLine) {
if (m_DebugLaser != null) {
m_DebugLaser.removeMovieClip();
m_DebugLaser = null;
}
m_DebugLaser = CBoard.G.createEmptyMovieClip("debuglaser", _local79.getNextHighestDepth());
m_DebugLaser.lineStyle(5, 65280, 100);
m_DebugLaser.moveTo(_local23, _local21);
m_DebugLaser.lineTo(_local25, _local21);
m_DebugLaser.lineTo(_local25, _local24);
m_DebugLaser.lineTo(_local23, _local24);
m_DebugLaser.lineTo(_local23, _local21);
m_DebugLaser.lineStyle(2.5, 65280, 100);
m_DebugLaser.moveTo(_local7, _local6);
m_DebugLaser.lineTo(_local7 + (_local2.X * 800), _local6 + (_local2.Y * 800));
_local17.m_bbox.drawBox(m_DebugLaser, 255, 2);
}
var _local42 = new Core.Vector2(0, 0);
var _local74 = 1;
if ((!i_passThrough) && (!i_noBounce)) {
_local74 = Constants.MaxProjectileBounces;
}
var _local3;
var _local51 = false;
var _local75 = false;
var _local78;
var _local60 = true;
while (((!_local51) && (_local54 < _local74)) && ((((_local8[_local45].numHits <= 0) || (_local8[_local57].numHits <= 0)) || (_local8[_local55].numHits <= 0)) || (_local8[_local53].numHits <= 0))) {
var _local18 = _local17.PixelPosToGridCell(_local7, _local6);
var _local12 = new Core.COrientedBox();
var _local38 = new Core.Vector2(_local7, _local6);
_local12.SetCenterV(_local38);
_local12.SetExtents(_local64 / 2, _local85 / 2);
_local12.SetAxes(-_local2.Y, _local2.X, _local2.X, _local2.Y);
var _local11 = 0;
var _local9 = 0;
var _local80 = _local2.Clone();
var _local19 = false;
var _local48 = false;
var _local71 = _local60;
_local60 = _local12.checkCollision(_local17.m_bbox);
if ((_local71 == true) && (_local60 == false)) {
var _local50 = findCollisionWall(_local12.m_center, _local2, _local8, true);
if (_local50.wallIdx != -1) {
var _local28 = new Core.Vector2(0, 0);
_local28.Copy(_local38);
_local28.Add(_local50.intPt);
_local28.Scale(0.5);
var _local41 = new Core.Vector2(0, 0);
_local41.Copy(_local50.intPt);
_local41.Subtract(_local38);
var _local43 = _local41.Magnitude();
var _local26 = new Core.COrientedBox();
_local26.SetCenterV(_local28);
_local26.SetExtents(_local64 / 2, _local43 / 2);
_local26.SetAxes(-_local2.Y, _local2.X, _local2.X, _local2.Y);
if (_local26.checkCollision(_local17.m_bbox) == false) {
_local36 = _local36 + (_local43 - _local20);
var _local27 = new Core.Vector2(_local20 * _local2.X, _local20 * _local2.Y);
_local12.m_center.Copy(_local50.intPt);
_local12.m_center.Subtract(_local27);
_local7 = _local12.m_center.X;
_local6 = _local12.m_center.Y;
if (CGame.DbgShowCannonAimLine) {
_local26.drawBox(m_DebugLaser, 16776960, 1);
}
} else {
var _local69 = createWallsForBox(_local17.m_bbox);
var _local46 = findCollisionWall(_local38, _local2, _local69, false);
if (_local46.wallIdx != -1) {
_local28.Copy(_local38);
_local28.Add(_local46.intPt);
_local28.Scale(0.5);
_local41.Copy(_local46.intPt);
_local41.Subtract(_local38);
_local43 = _local41.Magnitude();
_local26.SetCenterV(_local28);
_local26.SetExtents(_local64 / 2, _local43 / 2);
_local36 = _local36 + (_local43 - (_local20 * 3));
var _local27 = new Core.Vector2((3 * _local20) * _local2.X, (3 * _local20) * _local2.Y);
_local12.m_center.Copy(_local46.intPt);
_local12.m_center.Subtract(_local27);
_local7 = _local12.m_center.X;
_local6 = _local12.m_center.Y;
}
if (CGame.DbgShowCannonAimLine) {
_local26.drawBox(m_DebugLaser, 16711680, 1);
}
}
} else {
CDebug.AssertWarn(false, this, "CLauncher.TraceShot() - Ray test missed all of the walls.");
}
}
if (i_passThrough) {
} else {
if (_local59[(_local18.X * _local58) + _local18.Y] != undefined) {
o_collisionCoord.push(_local18.Clone());
o_collisionDist.push(_local36);
break;
}
_local56.X = _local18.X;
_local56.Y = _local18.Y;
}
_local3 = _local17.GetGridCoords(_local18.X, _local18.Y, true);
var _local16 = _local18.X;
var _local14 = _local18.Y;
var _local13 = new Array(3);
var _local34 = -(1 - (_local14 % 2));
if (_local7 >= _local3.X) {
if (_local6 <= _local3.Y) {
_local13[0] = new CCoord(_local16 + _local34, _local14 - 1);
_local13[1] = new CCoord((_local16 + 1) + _local34, _local14 - 1);
_local13[2] = new CCoord(_local16 + 1, _local14);
} else {
_local13[0] = new CCoord(_local16 + _local34, _local14 + 1);
_local13[1] = new CCoord((_local16 + 1) + _local34, _local14 + 1);
_local13[2] = new CCoord(_local16 + 1, _local14);
}
} else if (_local6 <= _local3.Y) {
_local13[0] = new CCoord((_local16 + 1) + _local34, _local14 - 1);
_local13[1] = new CCoord(_local16 + _local34, _local14 - 1);
_local13[2] = new CCoord(_local16 - 1, _local14);
} else {
_local13[0] = new CCoord(_local16 - 1, _local14);
_local13[1] = new CCoord(_local16 + _local34, _local14 + 1);
_local13[2] = new CCoord((_local16 + 1) + _local34, _local14 + 1);
}
var _local37 = null;
var _local33 = 0;
while ((_local37 == null) && (_local33 < 3)) {
var _local15 = CCoord(_local13[_local33]);
var _local30 = _local17.GetTileFromCoord(_local15);
if (_local30 != undefined) {
var _local40 = _local17.GetGridCoords(_local15.X, _local15.Y, true);
var _local47 = _local30.__get__Color();
var _local10 = new Core.COrientedBox();
_local10.SetCenter(_local40.X, _local40.Y);
_local10.SetExtents(_local4 / 2, _local5 / 2);
_local10.SetAxes(1, 0, 0, 1);
if (_local10.checkCollision(_local12) == true) {
if (CGame.DbgShowCannonAimLine) {
m_DebugLaser.lineStyle(2, 65535, 100);
m_DebugLaser.moveTo(_local3.X - (_local4 / 2), _local3.Y - (_local5 / 2));
m_DebugLaser.lineTo(_local3.X + (_local4 / 2), _local3.Y - (_local5 / 2));
m_DebugLaser.lineTo(_local3.X + (_local4 / 2), _local3.Y + (_local5 / 2));
m_DebugLaser.lineTo(_local3.X - (_local4 / 2), _local3.Y + (_local5 / 2));
m_DebugLaser.lineTo(_local3.X - (_local4 / 2), _local3.Y - (_local5 / 2));
_local10.drawBox(m_DebugLaser, 0, 2);
_local12.drawBox(m_DebugLaser, 16711680, 3);
}
if (i_passThrough) {
o_collisionCoord.push(_local15.Clone());
o_collisionDist.push(_local36);
}
if ((((_local47 == Constants.Snood_Slippery) && (m_Mode != Mode_Hook)) && (!i_passThrough)) || ((m_Mode == Mode_Hook) && (_local30.m_NoHook))) {
_local48 = true;
CGame.Board.m_RubberLubberHitThisShot = true;
var _local27 = _local2.Clone();
_local27.NormalizeTo(_local20 / 2);
_local7 = _local7 - _local27.X;
_local6 = _local6 - _local27.Y;
var _local39 = new Core.Vector2(_local7, _local6);
if ((_local3.Y > _local10.m_center.Y) || (_local3.Y < _local10.m_center.Y)) {
_local2.Y = _local2.Y * -1;
} else if (_local3.Y == _local10.m_center.Y) {
_local2.X = _local2.X * -1;
}
_local11 = _local39.X;
_local9 = _local39.Y;
_local75 = true;
break;
}
_local37 = _local15;
break;
}
}
_local33++;
}
if (_local37 != null) {
if (!i_passThrough) {
o_collisionCoord.push(_local37.Clone());
o_collisionDist.push(_local36);
_local36 = _local36 - _local20;
break;
}
}
_local56.X = _local18.X;
_local56.Y = _local18.Y;
var _local32 = _local7;
var _local31 = _local6;
_local7 = _local7 + (_local2.X * _local20);
_local6 = _local6 + (_local2.Y * _local20);
_local36 = _local36 + _local20;
var _local72 = _local2.Dot(_local8[_local57].N);
var _local67 = _local2.Dot(_local8[_local55].N);
var _local70 = _local2.Dot(_local8[_local53].N);
var _local68 = _local2.Dot(_local8[_local45].N);
if ((_local7 < _local23) && (_local72 < 0)) {
_local11 = _local23;
_local9 = _local31 - ((_local32 - _local23) * (_local2.Y / _local2.X));
_local32 = (_local23 - _local32) + _local23;
_local7 = (_local23 - _local7) + _local23;
_local2.X = -_local2.X;
_local8[_local57].numHits++;
_local19 = true;
} else if ((_local7 > _local25) && (_local67 < 0)) {
_local11 = _local25;
_local9 = _local31 + ((_local25 - _local32) * (_local2.Y / _local2.X));
_local32 = _local25 - (_local32 - _local25);
_local7 = _local25 - (_local7 - _local25);
_local2.X = -_local2.X;
_local8[_local55].numHits++;
_local19 = true;
}
if ((_local6 < _local21) && (_local70 < 0)) {
_local11 = _local32 - ((_local31 - _local21) * (_local2.X / _local2.Y));
_local9 = _local21;
_local31 = (_local21 - _local31) + _local21;
_local6 = (_local21 - _local6) + _local21;
_local2.Y = -_local2.Y;
_local8[_local53].numHits++;
_local19 = true;
} else if ((_local6 > _local24) && (_local68 < 0)) {
_local11 = _local32 + ((_local24 - _local31) * (_local2.X / _local2.Y));
_local9 = _local24;
_local31 = _local24 - (_local31 - _local24);
_local6 = _local24 - (_local6 - _local24);
_local2.Y = -_local2.Y;
_local8[_local45].numHits++;
_local19 = true;
}
if (_local19) {
if (i_passThrough) {
_local54++;
} else {
if ((_local9 == _local21) && (CBoardVertical(_local79) != null)) {
var _local22 = _local17.PixelPosToGridCell(_local11, _local9);
if (_local59[(_local22.X * _local58) + _local22.Y] == null) {
var _local44 = CGame.TileSet.GetNeighborCoordsOfCoord(_local22);
_local33 = 0;
while (_local19 && (_local33 < _local44.length)) {
var _local29 = CCoord(_local44[_local33]);
if (_local59[(_local29.X * _local58) + _local29.Y] != null) {
_local51 = true;
_local78 = _local29.Clone();
_local3 = _local17.GetGridCoords(_local22.X, _local22.Y, true);
_local7 = _local3.X;
_local6 = _local3.Y;
_local19 = false;
_local66 = _local22.Clone();
}
_local33++;
}
}
}
if (!_local51) {
_local60 = true;
_local54++;
}
}
}
if (((!_local51) && (_local8[_local45].numHits > 0)) && (!_local82)) {
break;
}
if (((_local19 || (_local48)) && (_local54 < _local74)) && ((((_local8[_local45].numHits == 0) || (_local8[_local57].numHits == 0)) || (_local8[_local55].numHits == 0)) || (_local8[_local53].numHits == 0))) {
var _local49 = new Core.Vector2(_local11 - _local52.X, _local9 - _local52.Y);
o_vecArr.push(_local49);
_local52.X = _local11;
_local52.Y = _local9;
if (CGame.DbgShowCannonAimLine) {
m_DebugLaser.lineStyle(10, 16711935, 100);
m_DebugLaser.moveTo(_local11 - 40, _local9);
m_DebugLaser.lineTo(_local11 + 40, _local9);
m_DebugLaser.moveTo(_local11, _local9 - 40);
m_DebugLaser.lineTo(_local11, _local9 + 40);
}
if (i_drawLaser) {
var _local90 = _local49.Clone();
_local90.Add(_local42);
_local42.X = 0;
_local42.Y = 0;
if (_local11 == _local23) {
_local90.X = _local90.X - (_local4 / 2);
_local42.X = _local42.X + (_local4 / 2);
} else if (_local11 == _local25) {
_local90.X = _local90.X + (_local4 / 2);
_local42.X = _local42.X - (_local4 / 2);
}
if (_local9 == _local21) {
_local90.Y = _local90.Y - (_local5 / 2);
_local42.Y = _local42.Y + (_local5 / 2);
} else if (_local9 == _local24) {
_local90.Y = _local90.Y + (_local5 / 2);
_local42.Y = _local42.Y - (_local5 / 2);
}
if (!_local73) {
_local90.Subtract(_local83);
_local73 = true;
}
if (!traceLaser(_local90, i_passThrough)) {
return(null);
}
} else if (_local81 && (_local19 || (_local48))) {
var _local65 = new Core.Vector2(_local11 - _local49.X, _local9 - _local49.Y);
var _local86 = new Core.Vector2(_local11, _local9);
_local65.X = Math.round(_local65.X);
_local65.Y = Math.round(_local65.Y);
_local86.X = Math.round(_local86.X);
_local86.Y = Math.round(_local86.Y);
var _local96 = Math.round(_local23);
var _local93 = Math.round(_local21);
var _local98 = Math.round(_local25);
var _local99 = Math.round(_local24);
var _local92 = true;
var _local63 = true;
if ((((_local65.X != _local96) && (_local65.X != _local98)) && (_local65.Y != _local93)) && (_local65.Y != _local99)) {
_local92 = false;
}
if ((((_local86.X != _local96) && (_local86.X != _local98)) && (_local86.Y != _local93)) && (_local86.Y != _local99)) {
_local63 = false;
}
if (_local65.X == _local96) {
_local65.X = _local65.X - ((_local4 / 2) - 5);
} else if (_local65.X == _local98) {
_local65.X = _local65.X + ((_local4 / 2) - 5);
}
if (_local65.Y == _local93) {
_local65.Y = _local65.Y - ((_local5 / 2) - 5);
} else if (_local65.Y == _local99) {
_local65.Y = _local65.Y + ((_local5 / 2) - 5);
}
if (_local86.X == _local96) {
_local86.X = _local86.X - ((_local4 / 2) - 5);
} else if (_local86.X == _local98) {
_local86.X = _local86.X + ((_local4 / 2) - 5);
}
if (_local86.Y == _local93) {
_local86.Y = _local86.Y - ((_local5 / 2) - 5);
} else if (_local86.Y == _local99) {
_local86.Y = _local86.Y + ((_local5 / 2) - 5);
}
traceReboundLaser(_local65, _local86, _local92, _local63);
m_ReboundLasersDrawn = true;
}
}
}
var _local77 = new Core.Vector2(_local7 - _local52.X, _local6 - _local52.Y);
_local77.X = Oberon.MathX.roundDecPl(_local77.X, 3);
_local77.Y = Oberon.MathX.roundDecPl(_local77.Y, 3);
if ((_local77.X != 0) || (_local77.Y != 0)) {
o_vecArr.push(_local77);
} else {
CDebug.WriteLine("CLauncher", "Attempted to add a zero-length TraceShot last vector.");
CDebug.AssertWarn(false, "CLauncher", "Attempted to add a zero-length TraceShot last vector.");
}
if ((!i_drawLaser) && (!_local51)) {
_local66 = new CCoord(Math.min(Math.max(0, _local56.X), Level.m_BoardColumns - 1), Math.min(Math.max(0, _local56.Y), Level.m_BoardRows - 1));
}
if (i_drawLaser) {
var _local90 = _local77.Clone();
_local90.Add(_local42);
if (!_local73) {
_local90.Subtract(_local83);
_local73 = true;
}
if (!traceLaser(_local90, i_passThrough)) {
return(null);
}
if (m_Mode == Mode_Hook) {
var _local106 = _local17.GetTileFromCoord(_local37);
var _local104 = CCoord.ToLocal(_local106, CBoard.G.TraceLaserHolderMc);
m_LastLaserTargetCoord = new CCoord(_local104.X - (_local4 / 2), _local104.Y - (_local5 / 2));
} else {
m_LastLaserTargetCoord = new CCoord(_local3.X - (_local4 / 2), _local3.Y - (_local5 / 2));
}
} else if (_local81 && (_local54 != 0)) {
var _local65 = new Core.Vector2(_local52.X, _local52.Y);
var _local86 = new Core.Vector2(_local7, _local6);
if (_local51) {
var _local106 = _local17.GetTileFromCoord(_local78);
var _local104 = CCoord.ToLocal(_local106, CBoard.G.TraceLaserHolderMc);
_local86 = new Core.Vector2(_local104.X, _local104.Y);
}
var _local92 = true;
_local65.X = Math.round(_local65.X);
_local65.Y = Math.round(_local65.Y);
_local86.X = Math.round(_local86.X);
_local86.Y = Math.round(_local86.Y);
var _local96 = Math.round(_local23);
var _local93 = Math.round(_local21);
var _local98 = Math.round(_local25);
var _local99 = Math.round(_local24);
if ((((_local65.X != _local96) && (_local65.X != _local98)) && (_local65.Y != _local93)) && (_local65.Y != _local99)) {
_local92 = false;
}
if (_local65.X == _local96) {
_local65.X = _local65.X - ((_local4 / 2) - 5);
} else if (_local65.X == _local98) {
_local65.X = _local65.X + ((_local4 / 2) - 5);
}
if (_local65.Y == _local93) {
_local65.Y = _local65.Y - ((_local5 / 2) - 5);
} else if (_local65.Y == _local99) {
_local65.Y = _local65.Y + ((_local5 / 2) - 5);
}
traceReboundLaser(_local65, _local86, _local92, false);
}
m_ShouldRedraw = false;
if ((((_local54 >= _local74) || ((((_local8[_local45].numHits > 0) && (_local8[_local57].numHits > 0)) && (_local8[_local55].numHits > 0)) && (_local8[_local53].numHits > 0))) || (((_local8[_local45].numHits > 0) && (_local8[_local53].numHits > 0)) && (!_local82))) || (((_local8[_local45].numHits > 0) && (_local75)) && (!_local82))) {
_local77 = Core.Vector2(o_vecArr[o_vecArr.length - 1]);
if (_local77 != null) {
_local77.NormalizeTo(_local77.Magnitude() + (_local5 * 15));
}
_local66 = null;
} else if ((i_drawLaser && (m_lastLaser != null)) && ((m_lastLaser + 1) < m_Lasers.length)) {
var _local107 = MovieClip(m_Lasers[m_lastLaser]);
var _local89 = MovieClip(m_Lasers[0]);
_local89._visible = true;
_local89._x = m_LastLaserTargetCoord.X + (_local4 / 2);
_local89._y = m_LastLaserTargetCoord.Y + (_local5 / 2);
_local89._rotation = _local107._rotation;
var _local103 = new Color(_local89);
if (((m_CannonSnood != null) && (m_CannonSnood._visible)) && (m_CannonSnood.__get__Color() <= (Constants.Snood_HeadCount * 2))) {
_local103.setRGB(Constants.s_BorbColorDarkTints[m_CannonSnood.__get__Color() - 1]);
} else {
_local103.setRGB(16777215);
}
}
return(_local66);
}
function testRaySegmentInt(r0, v, w0, w1) {
var _local3 = new Core.Vector2(w0.X, w0.Y);
_local3.Subtract(w1);
var _local5 = new Core.Vector2(w0.X, w0.Y);
_local5.Subtract(r0);
var _local4 = v.Cross(_local3);
if (_local4 == 0) {
return({x:0, y:0, u:Number.POSITIVE_INFINITY});
}
var _local1 = v.Cross(_local5) / _local4;
var _local7 = ((1 - _local1) * w0.X) + (_local1 * w1.X);
var _local6 = ((1 - _local1) * w0.Y) + (_local1 * w1.Y);
return({x:_local7, y:_local6, u:_local1});
}
function createWallsForBox(box) {
var _local2 = new Core.Vector2(box.m_axesR.X * box.m_extentsR, box.m_axesR.Y * box.m_extentsR);
var _local3 = new Core.Vector2(box.m_axesU.X * box.m_extentsU, box.m_axesU.Y * box.m_extentsU);
var _local5 = new Core.Vector2((box.m_center.X - _local2.X) + _local3.X, (box.m_center.Y - _local2.Y) + _local3.Y);
var _local8 = new Core.Vector2((box.m_center.X + _local2.X) + _local3.X, (box.m_center.Y + _local2.Y) + _local3.Y);
var _local7 = new Core.Vector2((box.m_center.X - _local2.X) - _local3.X, (box.m_center.Y - _local2.Y) - _local3.Y);
var _local6 = new Core.Vector2((box.m_center.X + _local2.X) - _local3.X, (box.m_center.Y + _local2.Y) - _local3.Y);
var _local9 = new Core.Vector2(box.m_axesR.X, box.m_axesR.Y);
var _local10 = new Core.Vector2(-box.m_axesR.X, box.m_axesR.Y);
var _local12 = new Core.Vector2(box.m_axesU.X, box.m_axesU.Y);
var _local11 = new Core.Vector2(box.m_axesU.X, -box.m_axesU.Y);
var _local4 = new Array();
_local4.push({w0:_local7, w1:_local6, N:_local11});
_local4.push({w0:_local5, w1:_local7, N:_local10});
_local4.push({w0:_local8, w1:_local6, N:_local9});
_local4.push({w0:_local5, w1:_local8, N:_local12});
return(_local4);
}
function findCollisionWall(projPos, velocity, aWalls, bInside) {
var _local10 = Number.MAX_VALUE;
var _local8 = new Object();
_local8.intPt = new Core.Vector2(0, 0);
_local8.wallIdx = -1;
var _local3 = 0;
while (_local3 < aWalls.length) {
var _local4 = aWalls[_local3];
if (velocity.Dot(_local4.N) > 0) {
} else {
var _local2 = testRaySegmentInt(projPos, velocity, _local4.w0, _local4.w1);
if (((_local2.u != Number.POSITIVE_INFINITY) && (_local2.u >= 0)) && (_local2.u <= 1)) {
var _local6 = projPos.X - _local2.x;
var _local5 = projPos.Y - _local2.x;
var _local7 = (_local6 * _local6) + (_local5 * _local5);
if ((_local7 > _local10) && (bInside == false)) {
} else {
_local10 = _local7;
_local8.wallIdx = _local3;
_local8.intPt.X = _local2.x;
_local8.intPt.Y = _local2.y;
if (bInside == true) {
break;
}
}
}
}
_local3++;
}
return(_local8);
}
function rotateColor(i_color) {
switch (i_color) {
case 255 :
return(65280);
case 65280 :
return(16711680);
case 16711680 :
return(65535);
case 65535 :
return(16711935);
case 16711935 :
return(255);
}
return(16777215);
}
static var s_MaxAngle = 75;
static var s_BaseMouseSensitivity = 0.2;
static var s_LaserClipPoolSize = 6;
static var s_ReboundLaserClipPoolSize = 7;
static var s_ReboundTraceThreshold = 1.5;
static var s_PowerupAnimDur = 1.2;
static var s_MouseSensitivity = s_BaseMouseSensitivity;
static var s_CannonAnimNone = 1;
static var s_CannonAnimDefault = 2;
static var s_CannonAnimVacum = 3;
static var s_CannonAnimBubble = 4;
static var s_CannonAnimFireball = 5;
var m_Orient = Orient_Bottom;
var m_AngularOffset = 0;
var m_Angle = 0;
var m_Mode = 0;
var m_DebugLaser = null;
var m_OldAngle = 0;
var m_LauncherBottomMc = null;
var m_MiniLazerMc = null;
var m_LauncherAnimsMc = null;
var m_AimerBaseMc = null;
var m_CannonSnood = null;
var m_CannonPlunger = null;
var m_LaunchSnood = null;
static var m_SnoodSize = Constants.BoardMode_Easy;
var m_showTracer = false;
static var Orient_Top = 0;
static var Orient_Bottom = 1;
static var Orient_Left = 2;
static var Orient_Right = 3;
static var Mode_Normal = 0;
static var Mode_Hook = 1;
static var Access_Disabled = 0;
static var Access_MouseDisabled = 1;
static var Access_Enabled = 2;
static var State_Empty = 0;
static var State_Loaded = 1;
static var State_Waiting = 2;
}
Symbol 59 MovieClip [__Packages.CLauncherTrack] Frame 0
class CLauncherTrack extends MovieClip
{
static var m_labels;
var m_Launcher, LauncherFull, stop;
function CLauncherTrack () {
super();
}
function GetNextOrient() {
if (m_targetOrient != null) {
return(m_targetOrient);
}
return(m_Launcher.m_Orient);
}
function AdvancePos() {
CDebug.WriteErr("CLauncherTrack.AdvancePos()", "Shouldn't be here");
}
function onLoad() {
if (m_labelLoc == null) {
m_labelLoc = Oberon.MovieClipX.GetAnimFrameLabels(this, m_labels);
}
m_Launcher = CLauncher(LauncherFull.Launcher);
CDebug.Assert(m_Launcher != null, this, "Launcher is null");
stop();
}
function onUnload() {
}
function SetOrientation(i_orient, i_immediate) {
CDebug.WriteErr("CLauncherTrack.SetOrientation()", "Shouldn't be here");
}
function OnPlayUpdate(i_deltaT) {
UpdateAngleByMouse();
}
function IsBusy() {
return(m_targetOrient != null);
}
function onAdvanceCompleteCw() {
SetOrientation(m_targetOrient, true, true);
}
function onAdvanceCompleteCcw() {
SetOrientation(m_targetOrient, true, false);
}
function UpdateAngleByMouse() {
var _local2 = Key.isDown(16);
m_Launcher.UpdateAngleByMouse(_local2);
}
function GetLauncher() {
if (m_Launcher == null) {
m_Launcher = CLauncher(LauncherFull.Launcher);
}
return(m_Launcher);
}
function getOrientNextInOrder(i_orient) {
CDebug.WriteErr("CLauncherTrack.getOrientNextInOrder()", "Shouldn't be here");
return(null);
}
function getOrientNextInOrderAsStr(i_orient) {
CDebug.WriteErr("CLauncherTrack.getOrientNextInOrderAsStr()", "Shouldn't be here");
return("<unknown>");
}
static var AdvanceTime = 1;
var m_targetOrient = null;
var m_tweenToOrient = null;
static var m_labelLoc = null;
}
Symbol 60 MovieClip [__Packages.CCharacterSounds] Frame 0
class CCharacterSounds
{
static var m_lastPowerupSound;
function CCharacterSounds () {
}
static function SetCharacterVolumes(i_soundDb) {
var _local3 = AllCharacterSounds.concat();
_local3 = _local3.concat(AllBubbleSounds, AllWildSounds, AllSureShotSounds, AllPlungerSounds, AllHotfootSounds);
var _local1 = 0;
while (_local1 < _local3.length) {
var _local2;
switch (_local3[_local1]) {
case Constants.__get__Sound_WheeCrabby1() :
case Constants.__get__Sound_WheeDeeJay1() :
case Constants.__get__Sound_WheeEffy2() :
case Constants.__get__Sound_WheeFrank2() :
case Constants.__get__Sound_WheeFuzzball() :
case Constants.__get__Sound_WheeMaryAnn() :
case Constants.__get__Sound_WheePearl2() :
case Constants.__get__Sound_WheeSandy1() :
_local2 = 70;
break;
default :
_local2 = 150;
}
i_soundDb.SetVolume(_local3[_local1], _local2);
_local1++;
}
}
static function GetCharacterSound(i_snoodColor, i_charSoundCat) {
switch (i_charSoundCat) {
case Constants.__get__CharSound_Waking() :
switch (i_snoodColor) {
case Constants.Snood_Crabby :
return(Constants.__get__Sound_WakingCrabby1());
case Constants.Snood_Star :
return(Constants.__get__Sound_WakingDeeJay());
case Constants.Snood_Holly :
return(Constants.__get__Sound_WakingEffy());
case Constants.Snood_Frank :
return(Constants.__get__Sound_WakingFrank2());
case Constants.Snood_Fuzzball :
return(Constants.__get__Sound_WakingFuzzball3());
case Constants.Snood_Mary :
return(Constants.__get__Sound_WakingMaryAnn2());
case Constants.Snood_Pearl :
return(Constants.__get__Sound_WakingPearl2());
case Constants.Snood_Sandy :
return(Constants.__get__Sound_WakingSandy1());
switch (i_snoodColor) {
case Constants.Snood_Crabby :
return(Constants.__get__Sound_WheeCrabby1());
case Constants.Snood_Star :
return(Constants.__get__Sound_WheeDeeJay1());
case Constants.Snood_Holly :
return(Constants.__get__Sound_WheeEffy2());
case Constants.Snood_Frank :
return(Constants.__get__Sound_WheeFrank2());
case Constants.Snood_Fuzzball :
return(Constants.__get__Sound_WheeFuzzball());
case Constants.Snood_Mary :
return(Constants.__get__Sound_WheeMaryAnn());
case Constants.Snood_Pearl :
return(Constants.__get__Sound_WheePearl2());
case Constants.Snood_Sandy :
return(Constants.__get__Sound_WheeSandy1());
}
}
case Constants.__get__CharSound_Whee() :
switch (i_snoodColor) {
case Constants.Snood_Crabby :
return(Constants.__get__Sound_WheeCrabby1());
case Constants.Snood_Star :
return(Constants.__get__Sound_WheeDeeJay1());
case Constants.Snood_Holly :
return(Constants.__get__Sound_WheeEffy2());
case Constants.Snood_Frank :
return(Constants.__get__Sound_WheeFrank2());
case Constants.Snood_Fuzzball :
return(Constants.__get__Sound_WheeFuzzball());
case Constants.Snood_Mary :
return(Constants.__get__Sound_WheeMaryAnn());
case Constants.Snood_Pearl :
return(Constants.__get__Sound_WheePearl2());
case Constants.Snood_Sandy :
return(Constants.__get__Sound_WheeSandy1());
}
}
return(null);
}
static function GetCharPowerupSound(i_snoodColor, i_powerUp) {
switch (i_powerUp) {
case Constants.PowerUp_BubbleBubble :
return(Constants.__get__Sound_BubbleFuzzball());
case Constants.PowerUp_Aimer :
return(Constants.__get__Sound_SureShotSandy());
case Constants.PowerUp_Fireball :
return(Constants.__get__Sound_HotfootFrank());
case Constants.PowerUp_Hook :
return(Constants.__get__Sound_PlungerDeeJay());
}
return(null);
}
static function PlayCharPowerupSound(i_snoodColor, i_powerUp) {
var _local1 = GetCharPowerupSound(i_snoodColor, i_powerUp);
if (_local1 != null) {
if ((m_lastPowerupSound == null) || (!CGame.Sounds.IsSoundPlaying(m_lastPowerupSound))) {
CGame.Sounds.PlaySound(_local1);
}
m_lastPowerupSound = _local1;
}
}
static function PlayWildSounds() {
CGame.Sounds.PlaySound(AllWildSounds[0]);
}
static function PlayWhees(i_droppedBorbs) {
if (i_droppedBorbs.length > 3) {
var _local1 = i_droppedBorbs[0].Color;
var _local3 = new Array();
playDelayedSound(GetCharacterSound(_local1, Constants.__get__CharSound_Whee()), 0.1);
_local3.push(_local1);
if (i_droppedBorbs.length > 5) {
_local1 = i_droppedBorbs[Math.floor(i_droppedBorbs.length / 2)].Color;
if (Oberon.ArrayX.IndexOf(_local3, _local1) == -1) {
playDelayedSound(GetCharacterSound(_local1, Constants.__get__CharSound_Whee()), 0.3);
_local3.push(_local1);
}
if (i_droppedBorbs.length > 7) {
_local1 = i_droppedBorbs[i_droppedBorbs.length - 1].Color;
if (Oberon.ArrayX.IndexOf(_local3, _local1) == -1) {
playDelayedSound(GetCharacterSound(_local1, Constants.__get__CharSound_Whee()), 0.5);
}
}
}
}
}
static function PlayLumpDrops(i_droppedBorbs) {
if (i_droppedBorbs.length > 0) {
playDelayedSound(Constants.__get__Sound_LumpDrop(), 0.05);
if (i_droppedBorbs.length > 2) {
playDelayedSound(Constants.__get__Sound_LumpDrop(), 0.15);
if (i_droppedBorbs.length > 4) {
playDelayedSound(Constants.__get__Sound_LumpDrop(), 0.3);
}
}
}
}
static function playDelayedSound(i_soundNum, i_delay) {
var _local1 = Effects.CEffect_DelayedSound(CEffect.CreateEffect(CEffect.Type_DelayedSound));
if (_local1.OnInit(i_soundNum, i_delay)) {
CGame.EffectMgr.AddEffectToActiveList(_local1);
}
}
static var AllCharacterSounds = [Constants.__get__Sound_WakingCrabby1(), Constants.__get__Sound_WakingDeeJay(), Constants.__get__Sound_WakingEffy(), Constants.__get__Sound_WakingMaryAnn2(), Constants.__get__Sound_WakingFrank2(), Constants.__get__Sound_WakingFuzzball3(), Constants.__get__Sound_WakingPearl2(), Constants.__get__Sound_WakingSandy1(), Constants.__get__Sound_WheeCrabby1(), Constants.__get__Sound_WheeDeeJay1(), Constants.__get__Sound_WheeEffy2(), Constants.__get__Sound_WheeFrank2(), Constants.__get__Sound_WheeFuzzball(), Constants.__get__Sound_WheeMaryAnn(), Constants.__get__Sound_WheeSandy1(), Constants.__get__Sound_WheePearl2()];
static var AllBubbleSounds = [Constants.__get__Sound_BubbleFuzzball()];
static var AllWildSounds = [Constants.__get__Sound_WildMaryAnn()];
static var AllPlungerSounds = [Constants.__get__Sound_PlungerDeeJay()];
static var AllSureShotSounds = [Constants.__get__Sound_SureShotSandy()];
static var AllHotfootSounds = [Constants.__get__Sound_HotfootFrank()];
}
Symbol 61 MovieClip [__Packages.SoundDb] Frame 0
class SoundDb extends MovieClip
{
var m_MusicPauseCount, m_musicClip, m_effectsClip, m_voiceClip, m_music, m_voice, m_effects, m_SoundDb, m_master, m_HostAppMultiInstanceSounds;
function SoundDb () {
super();
CDebug.WriteLine("SoundDb", ("Initialize (" + Constants.__get__Sound_Count()) + " sounds)");
m_MusicPauseCount = 0;
m_musicClip = CGame.SoundImport.createEmptyMovieClip("MusicRoot", CGame.SoundImport.getNextHighestDepth());
m_effectsClip = CGame.SoundImport.createEmptyMovieClip("EffectRoot", CGame.SoundImport.getNextHighestDepth());
m_voiceClip = CGame.SoundImport.createEmptyMovieClip("VoiceRoot", CGame.SoundImport.getNextHighestDepth());
m_music = new Sound(m_musicClip);
m_voice = new Sound(m_voiceClip);
m_effects = new Sound(m_effectsClip);
m_SoundDb = new Array(Constants.__get__Sound_Count());
var _local8 = getTimer();
var _local5 = 0;
while (_local5 < Constants.__get__Sound_Count()) {
var _local4;
var _local3 = CSoundConstants.GetSoundInfoByNumber(_local5);
if (_local3.channel == Constants.__get__SoundChannel_Music()) {
_local4 = m_musicClip.createEmptyMovieClip("Sound" + _local3.name, _local5);
} else if (_local3.channel == Constants.__get__SoundChannel_Voice()) {
_local4 = m_voiceClip.createEmptyMovieClip("Sound" + _local3.name, _local5);
} else {
_local4 = m_effectsClip.createEmptyMovieClip("Sound" + _local3.name, _local5);
}
var _local7 = new Sound(_local4);
_local7.attachSound(_local3.name);
var _local6 = new SoundEntry();
_local6.SetSound(_local7);
_local6.m_PlayedTime = _local8;
m_SoundDb[_local5] = _local6;
_local5++;
}
m_master = new Sound(CGame.SoundImport);
SetMusicVolume(Constants.__get__VolumeDefault_Music());
SetEffectsVolume(Constants.__get__VolumeDefault_Effects());
SetVoiceVolume(Constants.__get__VolumeDefault_Voice());
m_SoundDb[Constants.__get__Sound_Bounce()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bounce2x()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bounce3x()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bomb()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_BubbleFirst()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bubble2()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bubble3()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bubble4()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bubble5()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bubble6()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Bubble7()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_BubbleLast()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_BubbleFuzzball()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_Points()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_LumpDrop()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_ButtonClick()].m_MultipleInstancesAllowed = true;
m_SoundDb[Constants.__get__Sound_ButtonHover()].m_MultipleInstancesAllowed = true;
SetVolume(Constants.__get__Sound_LumpDrop(), 50);
_local5 = 0;
while (_local5 < CCharacterSounds.AllCharacterSounds.length) {
m_SoundDb[CCharacterSounds.AllCharacterSounds[_local5]].m_MultipleInstancesAllowed = true;
_local5++;
}
CCharacterSounds.SetCharacterVolumes(this);
}
function IsSoundPlaying(inSound) {
var _local4 = CSoundConstants.GetSoundInfoByNumber(inSound);
var _local2 = m_SoundDb[inSound];
if ((((_local2 != null) && (_local2.m_Sound != null)) && (_local2.m_Sound.position != null)) && (_local2.m_Sound.duration)) {
return((_local2.m_Sound.position < _local2.m_Sound.duration) && (_local2.m_Sound.position > 0));
}
return(false);
}
function PlaySoundMulti(inSound) {
var _local3 = CSoundConstants.GetSoundInfoByNumber(inSound);
if (!m_SoundDb[inSound].m_MultipleInstancesAllowed) {
m_SoundDb[inSound].m_MultipleInstancesAllowed = true;
}
PlaySound(inSound);
}
function PlaySound(inSound, inOnComplete) {
var _local5 = CSoundConstants.GetSoundInfoByNumber(inSound);
var _local3 = getTimer();
if ((m_SoundDb[inSound].m_MultipleInstancesAllowed || (m_SoundDb[inSound].m_Looping)) || (!IsSoundPlaying(inSound))) {
if (m_SoundDb[inSound].m_Looping) {
if (m_SoundDb[inSound].m_LoopPlayCount == 0) {
m_SoundDb[inSound].m_Sound.start(0, 999);
}
m_SoundDb[inSound].m_LoopPlayCount = m_SoundDb[inSound].m_LoopPlayCount + 1;
} else {
m_SoundDb[inSound].m_Sound.start(0, m_SoundDb[inSound].m_PlayTimes);
}
m_SoundDb[inSound].m_PlayedTime = _local3;
}
if (inOnComplete != null) {
m_SoundDb[inSound].m_OnCompleteCallbacks = new Array();
m_SoundDb[inSound].m_OnCompleteCallbacks.push(inOnComplete);
}
}
function PlayLoopingSound(inSound) {
var _local3 = CSoundConstants.GetSoundInfoByNumber(inSound);
m_SoundDb[inSound].m_Looping = true;
PlaySound(inSound);
}
function SetNextSound(inSound, inNextSound) {
m_SoundDb[inSound].m_OnCompleteCallbacks.push(function () {
_global.Sounds.PlaySound(inNextSound);
});
}
function ClearNextSound(inSound) {
m_SoundDb[inSound].m_Sound.onSoundComplete = null;
}
function StopSound(inSound, inFadeOut, inFadeTime) {
var _local4 = CSoundConstants.GetSoundInfoByNumber(inSound);
var _local2 = SoundEntry(m_SoundDb[inSound]);
if (_local2.m_Looping) {
_local2.m_LoopPlayCount = _local2.m_LoopPlayCount - 1;
if (_local2.m_LoopPlayCount < 0) {
_local2.m_LoopPlayCount = 0;
}
}
_local2.m_Sound.stop("Sound" + CSoundConstants.GetSoundInfoByNumber(inSound).name);
_local2.m_Looping = false;
}
function StopAll(inFadeOut, inFadeTime) {
StopAllChannel(Constants.__get__SoundChannel_Effects(), inFadeOut, inFadeTime);
StopAllChannel(Constants.__get__SoundChannel_Music(), inFadeOut, inFadeTime);
StopAllChannel(Constants.__get__SoundChannel_Voice(), inFadeOut, inFadeTime);
}
function StopAllChannel(inChannelId, inFadeOut, inFadeTime) {
var _local3;
var _local2 = 0;
while (_local2 < Constants.__get__Sound_Count()) {
_local3 = CSoundConstants.GetSoundInfoByNumber(_local2);
if (_local3.channel == inChannelId) {
ForceStopSound(_local2, inFadeOut, inFadeTime);
}
_local2++;
}
}
function PauseAllSounds(inFade, inFadeTime) {
var _local1 = new Object();
if (inFade) {
_local1.fadeout = true;
if (inFadeTime != undefined) {
_local1.fadetime = inFadeTime;
}
}
}
function ResumeAllSounds(inFade, inFadeTime) {
var _local1 = new Object();
if (inFade) {
_local1.fadeout = true;
if (inFadeTime != undefined) {
_local1.fadetime = inFadeTime;
}
}
}
function ForceStopSound(inSound, inFadeOut, inFadeTime) {
var _local3 = CSoundConstants.GetSoundInfoByNumber(inSound);
m_SoundDb[inSound].m_LoopPlayCount = 0;
m_SoundDb[inSound].m_Sound.stop(_local3.name);
}
function GetMute() {
return(m_muted);
}
function SetMute(i_val) {
if (m_muted != i_val) {
if (i_val) {
m_master.setVolume(0);
} else {
m_master.setVolume(m_masterVol);
}
}
m_muted = i_val;
}
function SetMasterVolume(inVolume) {
m_masterVol = inVolume;
if (!m_muted) {
m_master.setVolume(inVolume);
}
}
function SetMusicVolume(inVolume) {
m_music.setVolume(inVolume);
}
function GetMusicVolume() {
var _local2 = 0;
_local2 = m_music.getVolume();
return(_local2);
}
function SetVoiceVolume(inVolume) {
m_voice.setVolume(inVolume);
}
function GetVoiceVolume() {
var _local2 = 0;
_local2 = m_voice.getVolume();
return(_local2);
}
function SetEffectsVolume(inVolume) {
m_effects.setVolume(inVolume);
}
function GetEffectsVolume() {
var _local2 = 0;
_local2 = m_effects.getVolume();
return(_local2);
}
function SetVolume(inSound, inVolume) {
var _local3 = CSoundConstants.GetSoundInfoByNumber(inSound);
m_SoundDb[inSound].m_Sound.setVolume(inVolume);
}
function IsStreamLooping(inSound) {
var _local3 = CSoundConstants.GetSoundInfoByNumber(inSound);
return(m_SoundDb[inSound].m_Looping);
}
function IsMultipleInstanceAllowed(inSound) {
var _local3 = CSoundConstants.GetSoundInfoByNumber(inSound);
return(m_SoundDb[inSound].m_MultipleInstancesAllowed);
}
function AddMultiInstanceSound(inSound) {
if (!IsMultipleInstanceAllowed(inSound)) {
m_HostAppMultiInstanceSounds.push(inSound);
}
}
function RemoveMultiInstanceSound(inSound) {
Oberon.ArrayX.RemoveFrom(m_HostAppMultiInstanceSounds, inSound);
}
var m_muted = false;
var m_masterVol = 100;
}
Symbol 62 MovieClip [__Packages.CSoundConstants] Frame 0
class CSoundConstants
{
function CSoundConstants () {
}
static function GetSoundInfoByNumber(inSoundId) {
switch (inSoundId) {
case Constants.__get__Sound_Shoot() :
return({name:"Fire", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bounce() :
return({name:"BounceWalls", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bounce2x() :
return({name:"BounceWalls2x", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bounce3x() :
return({name:"BounceWalls3x", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Drop() :
return({name:"DropSnoods", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BigDrop() :
return({name:"DropLotsSnoods", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Wild() :
return({name:"WildZoomLoop", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Stick() :
return({name:"LockInPlace", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bomb() :
return({name:"BombExplode", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_ButtonClick() :
return({name:"MenuButtonClick", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_ButtonHover() :
return({name:"MenuButtonPassOver", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Whoosh() :
return({name:"Whoosh", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BallSpin() :
return({name:"SnoodballSpin", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Hook() :
return({name:"SnoodRevHook", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Pop() :
return({name:"SnoodRevPop", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BoardStart() :
return({name:"BoardStart", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Lose() :
return({name:"Lose", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BreakCrate() :
return({name:"BreakCrate", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Shroud() :
return({name:"ShroudRemove", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_WakingCrabby1() :
return({name:"WakingCrabby1", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingDeeJay() :
return({name:"WakingDeeJay", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingEffy() :
return({name:"WakingEffy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingFrank2() :
return({name:"WakingFrank2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingFuzzball3() :
return({name:"WakingFuzzball3", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingMaryAnn2() :
return({name:"WakingMaryAnn2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingPearl2() :
return({name:"WakingPearl2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WakingSandy1() :
return({name:"WakingSandy1", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeCrabby1() :
return({name:"WheeCrabby1", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeDeeJay1() :
return({name:"WheeDeeJay1", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeEffy2() :
return({name:"WheeEffy2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeFrank2() :
return({name:"WheeFrank2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeFuzzball() :
return({name:"WheeFuzzball", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeMaryAnn() :
return({name:"WheeMaryAnn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheePearl2() :
return({name:"WheePearl2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WheeSandy1() :
return({name:"WheeSandy1", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleCrabby() :
return({name:"BubbleCrabby", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleDeeJay() :
return({name:"BubbleDeeJay", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleEffy() :
return({name:"BubbleEffy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleFrank() :
return({name:"BubbleFrank", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleFuzzball() :
return({name:"BubbleFuzzball", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleMaryAnn() :
return({name:"BubbleMaryAnn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubblePearl() :
return({name:"BubblePearl", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleSandy() :
return({name:"BubbleSandy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotCrabby() :
return({name:"SureShotCrabby", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotDeeJay() :
return({name:"SureShotDeeJay", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotEffy() :
return({name:"SureShotEffy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotFrank() :
return({name:"SureShotFrank", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotFuzzball() :
return({name:"SureShotFuzzball", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotMaryAnn() :
return({name:"SureShotMaryAnn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotPearl() :
return({name:"SureShotPearl", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_SureShotSandy() :
return({name:"SureShotSandy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootCrabby() :
return({name:"HotfootCrabby", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootDeeJay() :
return({name:"HotfootDeeJay", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootEffy() :
return({name:"HotfootEffy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootFrank() :
return({name:"HotfootFrank", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootFuzzball() :
return({name:"HotfootFuzzball", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootMaryAnn() :
return({name:"HotfootMaryAnn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootPearl() :
return({name:"HotfootPearl", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_HotfootSandy() :
return({name:"HotfootSandy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerCrabby() :
return({name:"PlungerCrabby", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerDeeJay() :
return({name:"PlungerDeeJay", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerEffy() :
return({name:"PlungerEffy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerFrank() :
return({name:"PlungerFrank", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerFuzzball() :
return({name:"PlungerFuzzball", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerMaryAnn() :
return({name:"PlungerMaryAnn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerPearl() :
return({name:"PlungerPearl", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_PlungerSandy() :
return({name:"PlungerSandy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildCrabby() :
return({name:"WildCrabby", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildDeeJay() :
return({name:"WildDeeJay", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildEffy() :
return({name:"WildEffy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildFrank() :
return({name:"WildFrank", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildFuzzball() :
return({name:"WildFuzzball", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildMaryAnn() :
return({name:"WildMaryAnn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildPearl() :
return({name:"WildPearl", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_WildSandy() :
return({name:"WildSandy", bPlayInHost:false, channel:Constants.__get__SoundChannel_Voice()});
case Constants.__get__Sound_BubbleFirst() :
return({name:"Pop1", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bubble2() :
return({name:"Pop2", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bubble3() :
return({name:"Pop3", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bubble4() :
return({name:"Pop4", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bubble5() :
return({name:"Pop5", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bubble6() :
return({name:"Pop6", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Bubble7() :
return({name:"Pop7", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BubbleLast() :
return({name:"Pop8", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Applause() :
return({name:"Applause", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_PlungerGrab() :
return({name:"PlungerGrab", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Plunger() :
return({name:"Plunger", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_LumpDrop() :
return({name:"LumpDrop", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Hotfoot() :
return({name:"Hotfoot", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_HotfootBurn() :
return({name:"HotfootBurn", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Rubber() :
return({name:"Rubber", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_SureShot() :
return({name:"SureShot", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BubbleBubble() :
return({name:"Bubble", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_BubbleBubbleHit() :
return({name:"BubbleHit", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_Points() :
return({name:"Points", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_FishyFly() :
return({name:"FishyFly", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
case Constants.__get__Sound_FishyLand() :
return({name:"FishyLand", bPlayInHost:false, channel:Constants.__get__SoundChannel_Effects()});
}
return("<Unknown>");
}
static function GetSoundNumFromName(inSoundName) {
switch (inSoundName) {
case "Fire" :
return(Constants.__get__Sound_Shoot());
case "BounceWalls" :
return(Constants.__get__Sound_Bounce());
case "BounceWalls2x" :
return(Constants.__get__Sound_Bounce2x());
case "BounceWalls3x" :
return(Constants.__get__Sound_Bounce3x());
case "DropSnoods" :
return(Constants.__get__Sound_Drop());
case "DropLotsSnoods" :
return(Constants.__get__Sound_BigDrop());
case "WildZoomLoop" :
return(Constants.__get__Sound_Wild());
case "LockInPlace" :
return(Constants.__get__Sound_Stick());
case "BombExplode" :
return(Constants.__get__Sound_Bomb());
case "MenuButtonClick" :
return(Constants.__get__Sound_ButtonClick());
case "MenuButtonPassOver" :
return(Constants.__get__Sound_ButtonHover());
case "Whoosh" :
return(Constants.__get__Sound_Whoosh());
case "SnoodballSpin" :
return(Constants.__get__Sound_BallSpin());
case "SnoodRevHook" :
return(Constants.__get__Sound_Hook());
case "SnoodRevPop" :
return(Constants.__get__Sound_Pop());
case "BoardStart" :
return(Constants.__get__Sound_BoardStart());
case "Lose" :
return(Constants.__get__Sound_Lose());
case "BreakCrate" :
return(Constants.__get__Sound_BreakCrate());
case "ShroudRemove" :
return(Constants.__get__Sound_Shroud());
case "WakingCrabby1" :
return(Constants.__get__Sound_WakingCrabby1());
case "WakingDeeJay" :
return(Constants.__get__Sound_WakingDeeJay());
case "WakingEffy" :
return(Constants.__get__Sound_WakingEffy());
case "WakingFrank2" :
return(Constants.__get__Sound_WakingFrank2());
case "WakingFuzzball3" :
return(Constants.__get__Sound_WakingFuzzball3());
case "WakingMaryAnn2" :
return(Constants.__get__Sound_WakingMaryAnn2());
case "WakingPearl2" :
return(Constants.__get__Sound_WakingPearl2());
case "WakingSandy1" :
return(Constants.__get__Sound_WakingSandy1());
case "WheeCrabby1" :
return(Constants.__get__Sound_WheeCrabby1());
case "WheeDeeJay1" :
return(Constants.__get__Sound_WheeDeeJay1());
case "WheeEffy2" :
return(Constants.__get__Sound_WheeEffy2());
case "WheeFrank2" :
return(Constants.__get__Sound_WheeFrank2());
case "WheeFuzzball" :
return(Constants.__get__Sound_WheeFuzzball());
case "WheeMaryAnn" :
return(Constants.__get__Sound_WheeMaryAnn());
case "WheePearl2" :
return(Constants.__get__Sound_WheePearl2());
case "WheeSandy1" :
return(Constants.__get__Sound_WheeSandy1());
case "BubbleCrabby" :
return(Constants.__get__Sound_BubbleCrabby());
case "BubbleDeeJay" :
return(Constants.__get__Sound_BubbleDeeJay());
case "BubbleEffy" :
return(Constants.__get__Sound_BubbleEffy());
case "BubbleFrank" :
return(Constants.__get__Sound_BubbleFrank());
case "BubbleFuzzball" :
return(Constants.__get__Sound_BubbleFuzzball());
case "BubbleMaryAnn" :
return(Constants.__get__Sound_BubbleMaryAnn());
case "BubblePearl" :
return(Constants.__get__Sound_BubblePearl());
case "BubbleSandy" :
return(Constants.__get__Sound_BubbleSandy());
case "SureShotCrabby" :
return(Constants.__get__Sound_SureShotCrabby());
case "SureShotDeeJay" :
return(Constants.__get__Sound_SureShotDeeJay());
case "SureShotEffy" :
return(Constants.__get__Sound_SureShotEffy());
case "SureShotFrank" :
return(Constants.__get__Sound_SureShotFrank());
case "SureShotFuzzball" :
return(Constants.__get__Sound_SureShotFuzzball());
case "SureShotMaryAnn" :
return(Constants.__get__Sound_SureShotMaryAnn());
case "SureShotPearl" :
return(Constants.__get__Sound_SureShotPearl());
case "SureShotSandy" :
return(Constants.__get__Sound_SureShotSandy());
case "HotfootCrabby" :
return(Constants.__get__Sound_HotfootCrabby());
case "HotfootDeeJay" :
return(Constants.__get__Sound_HotfootDeeJay());
case "HotfootEffy" :
return(Constants.__get__Sound_HotfootEffy());
case "HotfootFrank" :
return(Constants.__get__Sound_HotfootFrank());
case "HotfootFuzzball" :
return(Constants.__get__Sound_HotfootFuzzball());
case "HotfootMaryAnn" :
return(Constants.__get__Sound_HotfootMaryAnn());
case "HotfootPearl" :
return(Constants.__get__Sound_HotfootPearl());
case "HotfootSandy" :
return(Constants.__get__Sound_HotfootSandy());
case "PlungerCrabby" :
return(Constants.__get__Sound_PlungerCrabby());
case "PlungerDeeJay" :
return(Constants.__get__Sound_PlungerDeeJay());
case "PlungerEffy" :
return(Constants.__get__Sound_PlungerEffy());
case "PlungerFrank" :
return(Constants.__get__Sound_PlungerFrank());
case "PlungerFuzzball" :
return(Constants.__get__Sound_PlungerFuzzball());
case "PlungerMaryAnn" :
return(Constants.__get__Sound_PlungerMaryAnn());
case "PlungerPearl" :
return(Constants.__get__Sound_PlungerPearl());
case "PlungerSandy" :
return(Constants.__get__Sound_PlungerSandy());
case "WildCrabby" :
return(Constants.__get__Sound_WildCrabby());
case "WildDeeJay" :
return(Constants.__get__Sound_WildDeeJay());
case "WildEffy" :
return(Constants.__get__Sound_WildEffy());
case "WildFrank" :
return(Constants.__get__Sound_WildFrank());
case "WildFuzzball" :
return(Constants.__get__Sound_WildFuzzball());
case "WildMaryAnn" :
return(Constants.__get__Sound_WildMaryAnn());
case "WildPearl" :
return(Constants.__get__Sound_WildPearl());
case "WildSandy" :
return(Constants.__get__Sound_WildSandy());
case "Bubble1" :
return(Constants.__get__Sound_BubbleFirst());
case "Bubble2" :
return(Constants.__get__Sound_Bubble2());
case "Bubble3" :
return(Constants.__get__Sound_Bubble3());
case "Bubble4" :
return(Constants.__get__Sound_Bubble4());
case "Bubble5" :
return(Constants.__get__Sound_Bubble5());
case "Bubble6" :
return(Constants.__get__Sound_Bubble6());
case "Bubble7" :
return(Constants.__get__Sound_Bubble7());
case "Bubble8" :
return(Constants.__get__Sound_BubbleLast());
case "Applause" :
return(Constants.__get__Sound_Applause());
case "PlungerGrab" :
return(Constants.__get__Sound_PlungerGrab());
case "Plunger" :
return(Constants.__get__Sound_Plunger());
case "LumpDrop" :
return(Constants.__get__Sound_LumpDrop());
case "Hotfoot" :
return(Constants.__get__Sound_Hotfoot());
case "HotfootBurn" :
return(Constants.__get__Sound_HotfootBurn());
case "Rubber" :
return(Constants.__get__Sound_Rubber());
case "SureShot" :
return(Constants.__get__Sound_SureShot());
case "Bubble" :
return(Constants.__get__Sound_BubbleBubble());
case "BubbleHit" :
return(Constants.__get__Sound_BubbleBubbleHit());
case "Points" :
return(Constants.__get__Sound_Points());
case "FishyFly" :
return(Constants.__get__Sound_FishyFly());
case "FishyLand" :
return(Constants.__get__Sound_FishyLand());
}
return(-1);
}
}
Symbol 63 MovieClip [__Packages.SoundEntry] Frame 0
class SoundEntry
{
var m_PlayedTime, m_Looping, m_MultipleInstancesAllowed, m_LoopPlayCount, m_PlayTimes, m_OnCompleteCallbacks, m_Sound;
function SoundEntry () {
m_PlayedTime = 0;
m_Looping = false;
m_MultipleInstancesAllowed = false;
m_LoopPlayCount = 0;
m_PlayTimes = 1;
m_OnCompleteCallbacks = new Array();
}
function SetSound(i_sound) {
m_Sound = i_sound;
m_Sound.onSoundComplete = mx.utils.Delegate.create(this, onSoundComplete);
}
function onSoundComplete() {
var _local2 = 0;
while (_local2 < m_OnCompleteCallbacks.length) {
m_OnCompleteCallbacks[_local2].call(this);
_local2++;
}
m_OnCompleteCallbacks = new Array();
}
}
Symbol 64 MovieClip [__Packages.Effects.CEffect_DelayedSound] Frame 0
class Effects.CEffect_DelayedSound extends CEffect
{
var m_soundNum, m_time, m_fireAt, OnComplete;
function CEffect_DelayedSound () {
super(CEffect.Type_DelayedSound);
}
function OnInit(i_soundNum, i_delaySecs) {
if ((i_soundNum != null) && (i_delaySecs != null)) {
m_soundNum = i_soundNum;
m_time = getTimer();
m_fireAt = m_time + i_delaySecs;
return(true);
}
CDebug.Assert(i_soundNum != null, "CEffect_DelayedSound.OnInit()", "SoundNum was undefined.");
CDebug.Assert(i_delaySecs != null, "CEffect_DelayedSound.OnInit()", "Delay was undefined.");
return(false);
}
function OnUpdate(i_forceFinish, i_deltaT) {
if (!i_forceFinish) {
m_time = m_time + i_deltaT;
if (m_time > m_fireAt) {
CGame.Sounds.PlaySound(m_soundNum);
OnComplete();
}
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
}
Symbol 65 MovieClip [__Packages.CBoardCircular] Frame 0
class CBoardCircular extends CBoard
{
var m_TileSet, m_Lost, m_Won, m_LoseShadowBoundingClip;
function CBoardCircular () {
super();
}
function onLoad() {
super.onLoad();
CTileSetCircular(m_TileSet).DumpCompleteEvent.PushBehavior(mx.utils.Delegate.create(this, OnDumpComplete));
}
function OnPlayUpdate(i_deltaT) {
super.OnPlayUpdate(i_deltaT);
if ((!m_Lost) && (!m_Won)) {
if (m_TileSet.State == CTileSet.State_RotatingComplete) {
m_TileSet.State = CTileSet.State_Playing;
}
}
}
function OnShotComplete() {
super.OnShotComplete();
Rotate();
}
function OnMiss() {
super.OnMiss();
Rotate();
}
function DrawLoseBoundary(i_firstCall) {
super.DrawLoseBoundary();
m_LoseShadowBoundingClip.gotoAndStop(int(Level.m_BoardLevel / 2) + 1);
if (i_firstCall) {
m_LoseShadowBoundingClip._xscale = (100 * SnoodHead.SizeToGridHeight(m_TileSet.m_SnoodSize)) / SnoodHead.SizeToGridHeight(SnoodHead.Size_RndMed);
m_LoseShadowBoundingClip._yscale = m_LoseShadowBoundingClip._xscale;
m_LoseShadowBoundingClip._x = m_LoseShadowBoundingClip._x + s_DangerOffsetsX[m_TileSet.m_SnoodSize - 1];
m_LoseShadowBoundingClip._y = m_LoseShadowBoundingClip._y + s_DangerOffsetsY[m_TileSet.m_SnoodSize - 1];
}
}
function OnDumpComplete() {
CheckLose();
}
function AdvanceDanger() {
super.AdvanceDanger();
_global.GameBoard.LoseShadow.gotoAndPlay("Flash");
CGame.Sounds.PlaySound(Constants.__get__Sound_Shroud());
Level.m_BoardLevel = Level.m_BoardLevel + 2;
CheckLose();
DrawLoseBoundary(false);
}
function CheckLose() {
var _local6 = m_TileSet.GetActiveBorbsFixedArray();
var _local5 = m_TileSet.GetActiveBorbsCount();
var _local3 = 0;
while (_local3 < _local5) {
var _local2 = SnoodHead(_local6[_local3]);
var _local4 = _local2.__get__Color();
if (!Level.isValidCicleLocation(_local2.m_xSlot, _local2.m_ySlot)) {
if (_local4 <= Constants.Snood_HeadCount) {
m_Lost = true;
Level.m_LosePieces.push(_local2);
} else {
_local2.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard);
Level.TryDropSnoods();
}
}
_local3++;
}
Level.m_BoardLoser = CGame.CurrentPlayer;
}
function Rotate() {
CTileSetCircular(m_TileSet).Rotate();
}
function IsRound() {
return(true);
}
static var s_AttackHypnosisCount = 10;
static var s_DangerOffsetsX = [0, 0, 0, 11, 10, 0];
static var s_DangerOffsetsY = [0, 0, 0, -11, 0, 0];
}
Symbol 66 MovieClip [__Packages.CTileSetCircular] Frame 0
class CTileSetCircular extends CTileSet
{
var m_pushAnimCount, DumpCompleteEvent, GetCenterTile, State, Cols, m_rotationCenter, m_SnoodWidth, m_SnoodHeight, GetCenterCoord, m_rotationTime, Rows, GetTile, StopAnimations, m_dirty, UpdateBoundingBox, PixelPosToGridCell, _x, _y, InitTiles;
function CTileSetCircular () {
super();
m_pushAnimCount = 0;
DumpCompleteEvent = new Oberon.CEvent(this);
}
function OnXmlLoaded() {
super.OnXmlLoaded();
GetCenterTile().m_NoHook = true;
}
function OnBorbFinishedAnim(i_context) {
var _local2 = SnoodHead(i_context);
if (!(_local2.__get__LastAnim() === SnoodHead.Anim_Flying)) {
} else {
CDebug.Assert(State == CTileSet.State_Dumping, "CTileSetCircular.OnBorbFinishedAnim()", "unexpected borb fly event when state is " + State);
CDebug.Assert(m_pushAnimCount > 0, "CTileSetCircular.OnBorbFinishedAnim()", "m_pushAnimCount not positive : " + m_pushAnimCount);
m_pushAnimCount--;
if (m_pushAnimCount == 0) {
DumpCompleteEvent.Fire();
State = CTileSet.State_Playing;
}
}
}
function Rotate() {
if ((State == CTileSet.State_Playing) && (!CGame.Board.m_Lost)) {
State = CTileSet.State_RotatePending;
return(undefined);
}
}
function beginRotation() {
if (State != CTileSet.State_RotatePending) {
return(undefined);
}
m_curRotationTicks = 1;
var _local5 = Math.floor(Cols / 2);
m_rotationCenter = new CCoord(m_SnoodWidth * ((0.5 + ((_local5 % 2) / 2)) + _local5), m_SnoodHeight * (0.5 + _local5));
var _local6 = GetCenterTile();
var _local7 = GetCenterCoord();
State = CTileSet.State_Rotating;
m_rotationTime = 0;
var _local4 = 0;
while (_local4 < Cols) {
var _local3 = 0;
while (_local3 < Rows) {
var _local2 = GetTile(_local4, _local3);
if (_local2 != null) {
_local2.m_xDiff = _local2._x - m_rotationCenter.X;
_local2.m_yDiff = s_rotationYComp * (_local2._y - m_rotationCenter.Y);
}
_local3++;
}
_local4++;
}
}
function OnPlayUpdate(inDeltaT) {
super.OnPlayUpdate(inDeltaT);
if (State == CTileSet.State_RotatePending) {
CGame.EffectMgr.KillAllEffectsOfType(CEffect.Type_CannonScareAnim);
if (((!CGame.PhysMgr.IsBusy(true)) && (!CGame.EffectMgr.IsCategoryPlaying(CEffect.Cat_TilesetPos))) && (!CGame.PhysMgr.HasAttachedPieces())) {
StopAnimations();
beginRotation();
}
} else if (State == CTileSet.State_Rotating) {
m_rotationTime = m_rotationTime + inDeltaT;
var _local10 = m_rotationTime;
if (_local10 < s_rotationDelay) {
return(undefined);
}
_local10 = _local10 - s_rotationDelay;
if (_local10 > s_rotationDuration) {
_local10 = s_rotationDuration;
}
var _local8 = GetCenterCoord();
var _local11 = (m_curRotationTicks * s_rotationAngle) * ((1 - Math.cos(Math.PI * (_local10 / s_rotationDuration))) / 2);
var _local7 = Math.cos(_local11);
var _local6 = Math.sin(_local11);
var _local5 = 0;
while (_local5 < Cols) {
var _local4 = 0;
while (_local4 < Rows) {
if ((_local5 != _local8.X) || (_local4 != _local8.Y)) {
var _local3 = GetTile(_local5, _local4);
if (_local3 != null) {
var _local9 = _local3.__get__Color();
_local3._y = Math.round(m_rotationCenter.Y + (((_local3.m_yDiff * _local7) + (_local3.m_xDiff * _local6)) / s_rotationYComp));
_local3._x = Math.round(m_rotationCenter.X + ((_local3.m_xDiff * _local7) - (_local3.m_yDiff * _local6)));
}
}
_local4++;
}
_local5++;
}
if (_local10 == s_rotationDuration) {
resyncTileSlots();
State = CTileSet.State_RotatingComplete;
m_dirty = true;
CGame.Board.m_Launcher.m_ShouldRedraw = true;
UpdateBoundingBox();
}
}
}
function resyncTileSlots() {
var _local6 = new Array(Rows * Cols);
var _local7 = [];
var _local5 = 0;
while (_local5 < Cols) {
var _local4 = 0;
while (_local4 < Rows) {
var _local2 = GetTile(_local5, _local4);
if (_local2 != null) {
var _local3 = PixelPosToGridCell(_local2._x + _x, _local2._y + _y);
_local2.m_xSlot = _local3.X;
_local2.m_ySlot = _local3.Y;
_local6[(_local3.X * Rows) + _local3.Y] = _local2;
}
_local4++;
}
_local5++;
}
InitTiles(_local6, true);
}
function GetDiveBarDist() {
return(9 - int(Level.m_BoardLevel / 2));
}
static var s_RotationTicksMin = -3;
static var s_RotationTicksMax = 3;
static var s_RotationTicksZeroable = false;
static var s_rotationDelay = 0.1;
static var s_rotationDuration = 0.4;
static var s_DumpDuration = 1;
static var s_rotationAngle = -1.0471975511966;
static var s_rotationYComp = 0.866;
var m_curRotationTicks = null;
}
Symbol 67 MovieClip [__Packages.CQueueBorb] Frame 0
class CQueueBorb extends SnoodHead
{
static var s_CurrentQueueFallTime;
var m_LastPos, m_Pos, m_frameTween, _visible, _currentframe, gotoAndStop, __get__PowerUp, SetPowerUp, SetColor, m_anim, AddTween;
function CQueueBorb () {
super();
m_LastPos = null;
m_Pos = null;
m_frameTween = null;
_visible = false;
if (CGame.DbgRapidFireMode) {
s_BaseQueueFallTime = 0;
}
}
function onLoad() {
super.onLoad();
if (m_labelLoc == null) {
s_CurrentQueueFallTime = s_BaseQueueFallTime;
var _local4 = new Array(m_posCount);
var _local3 = 0;
while (_local3 < m_posCount) {
_local4[_local3] = m_posPrefix + String(_local3);
_local3++;
}
m_labelLoc = Oberon.MovieClipX.GetAnimFrameLabels(this, _local4);
}
Oberon.CEnterFrameEvent.AddEvent(this, mx.utils.Delegate.create(this, OnHeadLoaded), true);
}
function OnHeadLoaded() {
super.OnHeadLoaded();
}
function GetPosFrame(i) {
return(m_labelLoc[m_posPrefix + String(i)]);
}
function GetPosEndFrame(i) {
return(m_labelLoc[(m_posPrefix + String(i)) + "End"]);
}
function GetCurPosInAnim() {
var _local3 = 0;
var _local2 = 0;
while (_local2 < m_posCount) {
if (_currentframe >= GetPosFrame(_local2)) {
_local3 = _local2;
}
_local2++;
}
return(_local3);
}
function SetPosition(i_pos, i_noPlayAnim, i_hurry, i_hurryFactor) {
m_LastPos = m_Pos;
m_Pos = i_pos;
if (!i_noPlayAnim) {
PlayAnim(Anim_QueueMove);
if (i_hurry) {
Hurry(i_hurryFactor);
}
if (i_pos != null) {
_visible = true;
}
} else if (i_pos != null) {
gotoAndStop(GetPosFrame(i_pos));
_visible = m_Pos != 0;
} else {
gotoAndStop(1);
_visible = false;
}
if ((m_Pos > s_UnconcealedBorbCount) && (__get__PowerUp() == Constants.PowerUp_None)) {
SetPowerUp(Constants.PowerUp_Ghost);
} else if ((m_Pos <= s_UnconcealedBorbCount) && (__get__PowerUp() == Constants.PowerUp_Ghost)) {
if (!m_FromRefill) {
var _local3 = CBoard.G.GetRandBorb();
SetColor(_local3.Color);
} else {
m_FromRefill = false;
}
SetPowerUp(Constants.PowerUp_None);
}
}
function OnAnimComplete() {
if (m_Pos == 0) {
_visible = false;
}
m_frameTween = null;
super.OnAnimComplete();
}
function Hurry(i_factor) {
if (m_frameTween != null) {
m_frameTween.Scale(1 / i_factor);
}
}
function PlayAnim(i_anim) {
if (i_anim == Anim_QueueMove) {
m_anim = i_anim;
var _local3 = GetPosEndFrame(m_Pos);
var _local2 = (_local3 - _currentframe) * s_CurrentQueueFallTime;
if (_local2 < 0) {
_local2 = -1 * _local2;
}
m_frameTween = new Core.CTween(this, "_currentframe", null, _currentframe, _local3, _local2, true);
AddTween(m_frameTween);
}
}
static var s_BaseQueueFallTime = 0.0166;
static var s_BaseRefillQueueFallTime = 0.0083;
static var s_UnconcealedBorbCount = 1;
static var Anim_QueueMove = 100;
static var m_posCount = 32;
static var m_labelLoc = null;
var m_FromRefill = false;
static var m_posPrefix = "QueuePos";
}
Symbol 68 MovieClip [__Packages.PhysicsMgr] Frame 0
class PhysicsMgr
{
static var G;
var m_ActiveObjects, m_AttachedPieces;
function PhysicsMgr () {
G = this;
CGame.PhysMgr = this;
Reset();
}
static function PhysicsToString(i_physics) {
switch (i_physics) {
case Physics_Shoot :
return("Shoot");
case Physics_Delete :
return("Delete");
case Physics_Wait :
return("Wait");
case Physics_Shake :
return("Shake");
case Physics_EndShake :
return("EndShake");
}
return("<Unknown>");
}
function Reset() {
m_ActiveObjects = [];
m_AttachedPieces = [];
}
function GetActiveAnimCount(i_animType) {
var _local3 = 0;
var _local2 = 0;
while (_local2 < m_ActiveObjects.length) {
if (CPhysicsObject(m_ActiveObjects[_local2]).m_Mode == i_animType) {
_local3++;
}
_local2++;
}
return(_local3);
}
function addObject(inObject) {
var _local3 = false;
var _local2 = 0;
while (_local2 < m_ActiveObjects.length) {
if (m_ActiveObjects[_local2] == inObject) {
_local3 = true;
}
_local2++;
}
if (!_local3) {
m_ActiveObjects.push(inObject);
return(true);
}
return(false);
}
function IsBusy(i_includeNonBlockers) {
var _local2 = 0;
while (_local2 < m_ActiveObjects.length) {
var _local3 = CPhysicsObject(m_ActiveObjects).m_Mode;
if (i_includeNonBlockers || (_local3 == Physics_Shoot)) {
return(true);
}
_local2++;
}
return(false);
}
function shootObject(inObject, inVecPath, inShotState, inCollisionCoords, inCollisionDists, inNoShotBlur) {
CDebug.Assert(inVecPath.length > 0, "PhysicsMgr.shootObject()", "vector path is null", true);
inObject.m_ShotPath = inVecPath;
inObject.m_CollisionCoords = ((inCollisionCoords != undefined) ? (inCollisionCoords) : null);
inObject.m_CollisionDists = ((inCollisionDists != undefined) ? (inCollisionDists) : null);
inObject.m_LegDist = 0;
inObject.m_DoShotBlur = s_DoShotBlur && ((inNoShotBlur == null) || (!inNoShotBlur));
if (inShotState != undefined) {
inObject.m_ShotState = inShotState;
} else {
inObject.m_Acceleration = s_ShotAccel;
inObject.m_ShotState = CPhysicsObject.ShotState_Connect;
}
inObject.m_Velocity = Core.Vector2(inVecPath[0]).Clone();
if (inShotState == CPhysicsObject.ShotState_Fireball) {
inObject.m_Velocity.NormalizeTo(Constants.FireballInitVelocity);
inObject.m_Acceleration = Constants.FireballAccel;
} else {
inObject.m_Velocity.NormalizeTo(Constants.MuzzleVelocity);
inObject.m_Acceleration = s_ShotAccel;
}
inObject.m_TotalDist = 0;
inObject.m_ShotPathIndex = 0;
inObject.m_Mode = Physics_Shoot;
addObject(inObject);
}
function shakeObject(inObject, inTime, inEnd) {
if (inEnd == undefined) {
inEnd = false;
}
inObject.m_Duration = inTime;
inObject.m_Mode = (inEnd ? (Physics_EndShake) : (Physics_Shake));
inObject.m_Life = 0;
inObject.m_StartX = inObject._x;
inObject.m_StartY = inObject._y;
addObject(inObject);
}
function ShakeLosePieces() {
var _local2 = 0;
while (_local2 < Level.m_LosePieces.length) {
shakeObject(Level.m_LosePieces[_local2], 4, true);
_local2++;
}
}
function GetAndClearAttachedPieces() {
var _local2 = m_AttachedPieces;
m_AttachedPieces = [];
return(_local2);
}
function HasAttachedPieces() {
return(m_AttachedPieces.length > 0);
}
function Update(i_deltaT) {
var _local3 = [];
var _local2 = 0;
while (_local2 < m_ActiveObjects.length) {
if (updateObject(m_ActiveObjects[_local2], i_deltaT)) {
_local3.push(m_ActiveObjects[_local2]);
}
_local2++;
}
m_ActiveObjects = _local3;
}
function removeObject(inObject) {
var _local1 = SnoodHead(inObject);
if (_local1 != null) {
if (!_local1.IsInPool()) {
if (_local1.m_xSlot != null) {
CDebug.WriteErr("PhysicsMgr.removeObject", "Removing slotted head (tile may not be in sync)");
CGame.TileSet.SetTile(_local1.m_xSlot, _local1.m_ySlot, null);
}
_local1.ResetScale();
SnoodHead.ReturnToPool(SnoodHead(inObject));
}
} else {
inObject.removeMovieClip();
}
}
function updateObject(inObject, inDeltaT) {
var _local3 = true;
if (CGame.DbgTracePhysics) {
CDebug.WriteLine(this, (("Physics operation " + PhysicsToString(inObject.m_Mode)) + " on ") + String(inObject));
}
switch (inObject.m_Mode) {
case Physics_Delete :
removeObject(inObject);
_local3 = false;
break;
case Physics_Wait :
if (m_AttachedPieces.length == 0) {
m_AttachedPieces.push(inObject);
_local3 = false;
} else {
_local3 = true;
}
break;
case Physics_Shoot :
_local3 = doShootTick(inObject, inDeltaT);
break;
case Physics_Shake :
case Physics_EndShake :
inObject.m_Life = inObject.m_Life + inDeltaT;
if ((inObject.m_Life >= inObject.m_Duration) && (m_AttachedPieces.length == 0)) {
inObject._x = inObject.m_StartX;
inObject._y = inObject.m_StartY;
if (!CGame.Board.m_Lost) {
m_AttachedPieces.push(inObject);
}
return(false);
}
inObject._x = inObject.m_StartX + ((Math.random() * 6) - 3);
inObject._y = inObject.m_StartY + ((Math.random() * 6) - 3);
break;
default :
removeObject(inObject);
return(false);
}
return(_local3);
}
function GetDidCollide(inStartX, inStartY, inEndX, inEndY, xSlot, ySlot) {
var _local6;
var _local5;
var _local4;
var _local7;
var _local11 = 0;
if (!CGame.Board.IsRound()) {
_local11 = Level.m_BoardLevel;
}
_local7 = Level.m_SnoodHeight * ((0.5 + ySlot) + _local11);
_local4 = Level.m_SnoodWidth * ((0.5 + ((ySlot % 2) / 2)) + xSlot);
var _local8 = ((inStartX - inEndX) * (inStartX - inEndX)) + ((inStartY - inEndY) * (inStartY - inEndY));
if (_local8 == 0) {
_local6 = inStartX;
_local5 = inStartY;
} else {
var _local3 = (((_local4 - inStartX) * (inEndX - inStartX)) + ((_local7 - inStartY) * (inEndY - inStartY))) / _local8;
if ((_local3 >= -0.25) && (_local3 <= 1.25)) {
_local6 = inStartX + (_local3 * (inEndX - inStartX));
_local5 = inStartY + (_local3 * (inEndY - inStartY));
var _local12 = ((_local6 - _local4) * (_local6 - _local4)) + ((_local5 - _local7) * (_local5 - _local7));
var _local13 = (1.5 * Level.m_SnoodWidth) * Level.m_SnoodWidth;
if (_local12 <= _local13) {
return(true);
}
}
}
return(false);
}
function PendingToString() {
var _local3 = "==================================================\nActive physics objects :\n";
var _local2 = 0;
while (_local2 < m_ActiveObjects.length) {
_local3 = _local3 + ((((((" " + PhysicsToString(CPhysicsObject(m_ActiveObjects[_local2]).m_Mode)) + " : ") + String(m_ActiveObjects[_local2])) + " : ") + Constants.GetSnoodByNumber(SnoodHead(m_ActiveObjects[_local2]).__get__Color())) + newline);
_local2++;
}
_local3 = _local3 + "==================================================\n";
return(_local3);
}
static function CalcDistance(oldX, oldY, newX, newY) {
var _local2 = oldX - newX;
var _local1 = oldY - newY;
return(Math.sqrt((_local2 * _local2) + (_local1 * _local1)));
}
function doShootTick(inObject, inDeltaT) {
var _local13 = true;
if (inDeltaT == 0) {
return(_local13);
}
var _local54 = CGame.Board;
var _local14 = CGame.TileSet;
var _local56 = _local54.GetBoundingClip();
var _local10 = Core.Vector2(inObject.m_Velocity);
var _local4 = SnoodHead(inObject);
var _local5 = inObject.m_ShotPath;
var _local58 = inObject._x;
var _local57 = inObject._y;
CDebug.Assert(_local5.length != null, "PhysicsMgr.updateObject()", "null shot path in shoot mode");
var _local43 = false;
var _local53 = _local10.Magnitude();
var _local51 = _local53;
if (inObject.m_Acceleration != 0) {
_local51 = _local53 + (inObject.m_Acceleration * inDeltaT);
if (_local51 <= 0) {
SnoodHead(inObject).DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, 0);
return(false);
}
}
var _local49 = inObject.m_LegDist;
var _local41 = (_local51 * Constants.Fps) / (1 / inDeltaT);
inObject.m_LegDist = inObject.m_LegDist + _local41;
inObject.m_TotalDist = inObject.m_TotalDist + _local41;
var _local52 = inObject.m_TotalDist;
_local10.NormalizeTo(_local51);
while (!_local43) {
var _local46 = Core.Vector2(_local5[inObject.m_ShotPathIndex]);
var _local15 = _local46.Magnitude();
if (inObject.m_LegDist < _local15) {
_local43 = true;
var _local12 = _local10.Clone();
_local12.NormalizeTo(_local41);
if (inObject.m_IgnoreDist > 0) {
inObject.m_IgnoreDist = inObject.m_IgnoreDist - _local41;
if (inObject.m_IgnoreDist < 0) {
var _local26 = _local12.Clone();
_local26.NormalizeTo(Math.abs(inObject.m_IgnoreDist));
inObject._x = inObject._x + _local26.X;
inObject._y = inObject._y + _local26.Y;
inObject.m_IgnoreDist = 0;
}
} else {
inObject._x = inObject._x + _local12.X;
inObject._y = inObject._y + _local12.Y;
}
var _local29 = (_local10.GetAngle() + 90) % 360;
var _local40 = _local15 - inObject.m_LegDist;
if (inObject.m_DoShotBlur) {
var _local39 = s_ShotBlurMagnitude;
var _local33 = Level.m_SnoodWidth * s_ShotBlurDist;
if (_local40 < _local33) {
_local39 = _local39 * (_local40 / _local33);
}
if (_local4 != null) {
if (_local4.m_ShotState == CPhysicsObject.ShotState_Fireball) {
var _local7 = MovieClip(_local4.m_BorbUnderItem.FireballTrail);
if (_local7 == null) {
_local7 = _local4.m_BorbUnderItem.attachMovie("FireballTrail", "FireballTrail", _local4.m_BorbUnderItem.getNextHighestDepth());
_local7._xscale = CGame.TileSet.m_SnoodScale;
_local7._yscale = _local7._xscale;
_local7._rotation = _local29;
}
if (inObject.m_LegDist < 100) {
_local7._yscale = (_local7._xscale * inObject.m_LegDist) / 300;
} else {
_local7._yscale = _local7._xscale;
}
} else {
_local4.AddBlur(_local29, _local39, s_ShotBlurQuality);
}
} else {
inObject._rotation = _local29;
}
}
} else {
inObject.m_LegDist = inObject.m_LegDist - _local15;
_local41 = inObject.m_LegDist;
inObject.m_ShotPathIndex++;
var _local12 = _local10.Clone();
_local12.NormalizeTo(_local15 - _local49);
inObject._x = inObject._x + _local12.X;
inObject._y = inObject._y + _local12.Y;
_local49 = 0;
if (inObject.m_ShotPathIndex < _local5.length) {
var _local17 = Core.Vector2(_local5[inObject.m_ShotPathIndex]);
var _local9 = null;
var _local28 = inObject._x;
var _local27 = inObject._y;
if ((_local12.X > 0) && (_local17.X < 0)) {
_local9 = CLauncher.Orient_Right;
_local28 = CGame.TileSet.BoundingClip._x + CGame.TileSet.BoundingClip._width;
} else if ((_local12.X < 0) && (_local17.X > 0)) {
_local9 = CLauncher.Orient_Left;
_local28 = CGame.TileSet.BoundingClip._x;
} else if ((_local12.Y < 0) && (_local17.Y > 0)) {
_local9 = CLauncher.Orient_Top;
_local27 = CGame.TileSet.BoundingClip._y;
} else {
_local9 = CLauncher.Orient_Bottom;
_local27 = CGame.TileSet.BoundingClip._y + CGame.TileSet.BoundingClip._height;
}
var _local11 = CBoard.G.GetBoundingClip();
_local14 = CBoard.G.m_TileSet;
var _local31 = _local14._x;
var _local50 = _local14._y;
var _local32 = Level.m_SnoodWidth;
var _local35 = Level.m_SnoodHeight;
var _local18 = (_local31 + _local32) + _local11._x;
var _local23 = ((_local31 + _local11._width) + _local11._x) - _local32;
var _local45 = _local11._y + _local35;
var _local44 = (_local11._height + _local11._y) - _local35;
var _local20 = GameState.__get__CurrentGameMode();
if ((_local20 == Constants.BoardMode_BallMedium) || (_local20 == Constants.BoardMode_BallEasy)) {
_local18 = _local18 - 14;
_local23 = _local23 - 14;
}
if (_local20 == Constants.BoardMode_BallHard) {
_local18 = _local18 - 20;
_local23 = _local23 - 20;
} else if (_local20 == Constants.BoardMode_BallImpossible) {
_local18 = _local18 - 30;
_local23 = _local23 - 30;
}
var _local19 = false;
if (((((_local9 == CLauncher.Orient_Left) && (inObject._x > _local18)) || ((_local9 == CLauncher.Orient_Right) && (inObject._x < _local23))) || ((_local9 == CLauncher.Orient_Top) && (inObject._y > _local45))) || ((_local9 == CLauncher.Orient_Bottom) && (inObject._y < _local44))) {
CDebug.WriteLine("PhysicsMgr", "Skipping rebound - object was inside bounds.");
_local19 = true;
}
_local19 = _local19 || ((Core.Vector2(_local5[inObject.m_ShotPathIndex]).Magnitude() < (Level.m_SnoodWidth * s_BankShotTolerance)) && ((inObject.m_ShotPathIndex + 1) >= _local5.length));
if ((_local4 != null) && (!_local19)) {
_local4.AddBankShot(_local4.__get__Color(), _local9, new CCoord(_local28, _local27));
}
_local10 = _local17.Clone();
_local10.NormalizeTo(_local51);
inObject.m_Velocity = _local10;
} else {
_local43 = true;
inObject.m_LegDist = 0;
inObject.m_TotalDist = 0;
if (_local4 != null) {
_local4.RemoveBlur();
_local4.m_LastVelocity.Copy(_local10);
}
_local10.Y = 0;
_local10.X = 0;
if (inObject.m_ShotState == CPhysicsObject.ShotState_Grab) {
if (inObject.m_CollisionDists.length == 0) {
removeObject(inObject);
CGame.Board.AdvanceLauncher();
CGame.Board.OnMiss();
} else {
var _local25 = new Array(_local5.length);
var _local8 = 0;
while (_local8 < _local5.length) {
var _local6 = Core.Vector2(_local5[(_local5.length - 1) - _local8]);
_local6.X = -_local6.X;
_local6.Y = -_local6.Y;
_local25[_local8] = _local6;
_local8++;
}
_local5 = _local25;
inObject.m_ShotPath = _local5;
inObject.m_ShotPathIndex = 0;
inObject.m_ShotState = CPhysicsObject.ShotState_Pull;
inObject.m_Velocity = Core.Vector2(_local25[0]).Clone();
inObject.m_Velocity.NormalizeTo(Constants.MuzzleVelocity);
_local13 = true;
}
} else if (inObject.m_ShotState == CPhysicsObject.ShotState_Insert) {
CDebug.Assert(_local4 != null, "PhysicsMgr.doShootTick()", "non-borb on insert " + inObject);
if (_local4.__get__PowerUp() != Constants.PowerUp_Aimer) {
trace("POWERUP!");
CGame.Board.InsertBorbAtCannon(_local4.ToInfo(), true);
CGame.Board.m_Launcher.SetMode(CLauncher.Mode_Normal);
} else {
CGame.Board.InsertBorbAtCannon(_local4.ToInfo());
CGame.Board.m_Launcher.SetMode(CLauncher.Mode_Normal);
CGame.Board.AdvanceLauncher();
}
removeObject(_local4);
_local13 = false;
} else if (inObject.m_ShotState == CPhysicsObject.ShotState_Connect) {
var _local36 = inObject.m_xNextSlot;
var _local37 = inObject.m_yNextSlot;
if ((_local36 == null) || (_local37 == null)) {
if (_local4 != null) {
SnoodHead.ReturnToPool(_local4);
CGame.Board.OnMiss();
}
_local13 = false;
} else {
var _local21 = _local14.GetGridCoords(_local36, _local37);
var _local22 = new Core.Vector2(inObject._x - _local21.X, inObject._y - _local21.Y);
var _local38 = Level.m_SnoodWidth * Constants.ProjectileOvershotScale;
if (_local22.Magnitude() > _local38) {
_local22.NormalizeTo(_local38);
inObject._x = _local21.X + _local22.X;
inObject._y = _local21.Y + _local22.Y;
}
if (m_AttachedPieces.length == 0) {
m_AttachedPieces.push(_local4);
_local13 = false;
} else {
inObject.m_Mode = Physics_Wait;
_local13 = true;
}
}
} else if (inObject.m_ShotState == CPhysicsObject.ShotState_Fireball) {
if (_local4 != null) {
MovieClip(_local4.m_BorbUnderItem.FireballTrail).removeMovieClip();
SnoodHead.ReturnToPool(_local4);
CGame.Board.OnShotComplete();
CGame.Board.ResyncColors();
}
_local13 = false;
} else if (inObject.m_ShotState == CPhysicsObject.ShotState_Pull) {
removeObject(inObject);
_local13 = false;
} else {
CDebug.WriteErr("PhysicsMgr.doShootTick()", "Unexpected shot state : " + inObject.m_ShotState);
}
}
}
}
var _local47 = inObject.m_CollisionDists;
if ((_local47 != null) && (_local47.length > 0)) {
var _local48 = inObject.m_CollisionCoords;
var _local24 = 0;
var _local42 = false;
while ((_local24 < _local47.length) && ((_local47[_local24] < _local52) || (inObject.m_ShotState == CPhysicsObject.ShotState_Pull))) {
var _local16 = CCoord(_local48[_local24]);
var _local3 = SnoodHead(_local14.GetTile(_local16.X, _local16.Y));
if (_local3 != null) {
if (inObject.m_ShotState == CPhysicsObject.ShotState_Fireball) {
if (_local3.m_NoHook || (CGame.Board.IsRound() && (CTileSetCircular(CGame.TileSet).GetCenterTile() == _local3))) {
} else if ((_local3.Orb && (_local3.__get__PowerUp() != Constants.PowerUp_None)) && (Oberon.ArrayX.IndexOf(Constants.AllCannonPowerUps, _local3.__get__PowerUp()) != -1)) {
_local3.DropTo(Effects.CEffect_BorbDropAnim.Dest_ToCannon, Level.m_BasePowerupDropSec, Level.m_PowerupIncrDropSec * Effects.CEffect_BorbDropAnim.GetCount(Effects.CEffect_BorbDropAnim.Dest_ToCannon));
_local42 = true;
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_Match;
} else {
_local3.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, 0);
_local42 = true;
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_Match;
}
} else if ((inObject.m_ShotState == CPhysicsObject.ShotState_Pull) && (_local24 == (_local48.length - 1))) {
_local14.SetTile(_local16.X, _local16.Y, null);
var _local25 = new Array(_local5.length);
var _local8 = 0;
while (_local8 < _local5.length) {
_local25[_local8] = Core.Vector2(_local5[_local8]).Clone();
_local8++;
}
if ((_local3.__get__PowerUp() == Constants.PowerUp_Lock) || (_local3.__get__PowerUp() == Constants.PowerUp_Hypnosis)) {
_local3.SetPowerUp(Constants.PowerUp_None);
_local3.SetOrb(false);
} else if (_local3.__get__PowerUp() == Constants.PowerUp_Shroud) {
var _local30 = Effects.CEffect_ShroudDissolve(CEffect.CreateEffect(CEffect.Type_ShroudDissolve));
if (_local30.OnInit(_local3, null, null, true)) {
CGame.EffectMgr.AddEffectToActiveList(_local30);
}
} else if (((_local3.__get__PowerUp() == Constants.PowerUp_JellyStrThree) || (_local3.__get__PowerUp() == Constants.PowerUp_JellyStrTwo)) || (_local3.__get__PowerUp() == Constants.PowerUp_Jelly)) {
CJellyFishy.HandleFishyHit(_local3);
}
var _local34 = CCoord.ToLocal(inObject, _local3._parent);
_local3._x = _local34.X;
_local3._y = _local34.Y;
shootObject(_local3, _local25, CPhysicsObject.ShotState_Insert, null, null, true);
CGame.Board.m_InPlungerGrab = true;
CGame.Sounds.PlaySound(Constants.__get__Sound_PlungerGrab());
_local42 = true;
} else if (inObject.m_ShotState == CPhysicsObject.ShotState_Grab) {
CDebug.WriteLine("PhysicsMgr.doShootTick()", "In grab mode while connecting with object");
}
}
_local24++;
}
if (_local42) {
_local47.splice(0, _local24);
_local48.splice(0, _local24);
Level.TryDropSnoods(CGame.CurrentPlayer, true, false, true);
}
}
return(_local13);
}
static var s_ShotBlurMagnitude = 60;
static var s_ShotBlurQuality = 2;
static var s_ShotBlurDist = 3;
static var s_ShotAccel = 0;
static var s_BankShotTolerance = 0.5;
static var s_DoShotBlur = true;
static var Physics_Shoot = 0;
static var Physics_Delete = 4;
static var Physics_Wait = 6;
static var Physics_Shake = 7;
static var Physics_EndShake = 8;
static var VaporizeRate = 200;
}
Symbol 69 MovieClip [__Packages.Effects.CEffect_ShroudDissolve] Frame 0
class Effects.CEffect_ShroudDissolve extends CEffect
{
var m_borb, m_shroudMc, m_frameTween, m_xTween, m_yTween;
function CEffect_ShroudDissolve () {
super(CEffect.Type_ShroudDissolve);
}
function OnInit(i_tgtBorb, i_srcBorb, i_srcImpactVector, i_playFast) {
var _local7 = CGame.Board.m_EffectsLayer;
m_borb = i_tgtBorb;
var _local6 = _local7.getNextHighestDepth();
var _local4 = (i_playFast ? (s_FastAnimDurationSec) : (s_AnimDurationSec));
m_shroudMc = _local7.attachMovie("ShroudDissolveAnim", "ShroudDissolveAnim" + _local6, _local6);
CDebug.Assert(m_shroudMc != null, "CEffect_ShroudDissolve.OnBoardEvent()", "couldn't attach shroud Mc to " + m_borb);
m_shroudMc._x = m_borb._x;
m_shroudMc._y = m_borb._y;
CGame.Sounds.PlaySound(Constants.__get__Sound_ShroudRemove());
m_frameTween = new Core.CTween(m_shroudMc, "_currentframe", null, 1, m_shroudMc._totalframes, _local4, true);
var _local2 = null;
var _local3 = null;
if (i_srcBorb != null) {
_local2 = new Core.Vector2(i_tgtBorb._x - i_srcBorb._x, i_tgtBorb._y - i_srcBorb._y);
_local2.NormalizeTo(Level.m_SnoodWidth * s_ShroudKickback);
_local3 = i_srcBorb.m_LastVelocity;
_local3.NormalizeTo(Level.m_SnoodWidth * s_ShroudVelKickback);
} else if (i_srcImpactVector != null) {
_local2 = i_srcImpactVector;
_local2.NormalizeTo(Level.m_SnoodWidth * s_ShroudVelKickback);
}
m_xTween = new Core.CTween(m_shroudMc, "_x", null, m_shroudMc._x, (m_shroudMc._x + ((_local2 != null) ? (_local2.X) : 0)) + ((_local3 != null) ? (_local3.X) : 0), _local4, true);
m_yTween = new Core.CTween(m_shroudMc, "_y", null, m_shroudMc._y, (m_shroudMc._y + ((_local2 != null) ? (_local2.Y) : 0)) + ((_local3 != null) ? (_local3.Y) : 0), _local4, true);
m_borb.SetOrb(false);
m_borb.SetPowerUp(Constants.PowerUp_None);
CGame.TileSet.MoveToTop(m_borb);
return(true);
}
function OnUpdate(bForceComplete) {
if (!m_frameTween.m_IsPlaying) {
m_xTween.Finish();
m_yTween.Finish();
bForceComplete = true;
}
return(super.OnUpdate(bForceComplete));
}
static var s_AnimDurationSec = 0.5;
static var s_FastAnimDurationSec = 0.2;
static var s_ShroudKickback = 1;
static var s_ShroudVelKickback = 2;
}
Symbol 70 MovieClip [__Packages.CJellyFishy] Frame 0
class CJellyFishy
{
function CJellyFishy () {
}
static function HandleFishyHit(inTarget) {
if (inTarget.__get__PowerUp() == Constants.PowerUp_Jelly) {
var _local3 = Effects.CEffect_JellyAnim(CEffect.CreateEffect(CEffect.Type_JellyAnim));
if (_local3.OnInit(inTarget)) {
CGame.EffectMgr.AddEffectToActiveList(_local3);
}
} else if (inTarget.__get__PowerUp() == Constants.PowerUp_JellyStrTwo) {
var _local3 = Effects.CEffect_JellyAnim(CEffect.CreateEffect(CEffect.Type_JellyAnim));
if (_local3.OnInit(inTarget)) {
CGame.EffectMgr.AddEffectToActiveList(_local3);
}
} else {
var _local7 = CCoord.ToLocal(inTarget, CBoard.G.m_EffectsLayer);
var _local5 = CBoard.G.m_EffectsLayer.getNextHighestDepth();
var _local2 = CBoard.G.m_EffectsLayer.attachMovie("NewJellyAnim", "DropJellyAnim" + _local5, _local5);
_local2._x = _local7.X;
_local2._y = _local7.Y;
var _local4 = Effects.CEffect_DropAnim(CEffect.CreateEffect(CEffect.Type_DropAnim));
var _local6 = 300;
var _local8 = -900;
if (Oberon.MathX.randRange(0, 1) == 1) {
_local6 = _local6 * -1;
}
if (_local4.OnInit(_local2, 60, 0, _local6, _local8)) {
CGame.EffectMgr.AddEffectToActiveList(_local4);
}
}
inTarget.SetPowerUp(Constants.PowerUp_None);
}
}
Symbol 71 MovieClip [__Packages.Effects.CEffect_JellyAnim] Frame 0
class Effects.CEffect_JellyAnim extends CEffect
{
var m_make2ndJelly, m_make3rdJelly, m_state, m_originHead, m_targetHead, m_outerMc, m_jellyMc, m_blurMc, m_xTween, m_yTween, m_blurBitmap;
function CEffect_JellyAnim () {
super(CEffect.Type_JellyAnim);
m_make2ndJelly = false;
m_make3rdJelly = false;
m_state = State_Idle;
}
function OnInit(i_tgtBorb) {
CGame.Sounds.PlaySound(Constants.__get__Sound_FishyFly());
m_state = State_FlyOut;
m_originHead = i_tgtBorb;
m_targetHead = Level.GetRandomBorb(Constants.GetAllHeads(), true, true);
if (m_originHead.__get__PowerUp() == Constants.PowerUp_Jelly) {
m_make2ndJelly = true;
} else if (m_originHead.__get__PowerUp() == Constants.PowerUp_JellyStrTwo) {
m_make3rdJelly = true;
}
var _local3 = CCoord.ToLocal(m_originHead, CBoard.G.m_EffectsLayer);
var _local2 = CCoord.ToLocal(m_targetHead, CBoard.G.m_EffectsLayer);
var _local5 = CBoard.G.m_EffectsLayer.getNextHighestDepth();
m_outerMc = CBoard.G.m_EffectsLayer.createEmptyMovieClip("JellyAnimEffect" + _local5, _local5);
m_outerMc._x = _local3.X;
m_outerMc._y = _local3.Y;
m_jellyMc = m_outerMc.attachMovie("NewJellyAnim", "NewJellyAnim", 1);
m_jellyMc._xscale = CGame.TileSet.m_SnoodScale;
m_jellyMc._yscale = m_jellyMc._xscale;
var _local7 = new Core.Vector2(_local2.X - _local3.X, _local2.Y - _local3.Y);
var _local4 = _local7.Magnitude() / FishyVel;
m_blurMc = AddBlur(m_jellyMc, m_outerMc, 20);
m_blurMc._rotation = _local7.GetAngle() + 90;
m_jellyMc.removeMovieClip();
_local2 = CCoord.ToLocal(m_targetHead, m_outerMc);
m_xTween = new Core.CTween(m_blurMc, "_x", null, m_blurMc._x, _local2.X, _local4, true);
m_yTween = new Core.CTween(m_blurMc, "_y", null, m_blurMc._y, _local2.Y, _local4, true);
var _local6 = Effects.CEffect_DelayedSound(CEffect.CreateEffect(CEffect.Type_DelayedSound));
if (_local6.OnInit(Constants.__get__Sound_FishyLand(), _local4)) {
CGame.EffectMgr.AddEffectToActiveList(_local6);
}
return(true);
}
function OnUpdate(i_forceFinish, i_deltaT) {
if ((!m_xTween.m_IsPlaying) && (!m_yTween.m_IsPlaying)) {
m_blurMc.removeMovieClip();
var _local3 = m_targetHead.GetGridCoord();
if (CGame.TileSet.GetTileFromCoord(_local3) != null) {
m_targetHead.SetOrb(true);
if (m_make2ndJelly) {
m_targetHead.SetPowerUp(Constants.PowerUp_JellyStrTwo);
} else if (m_make3rdJelly) {
m_targetHead.SetPowerUp(Constants.PowerUp_JellyStrThree);
}
}
OnComplete();
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function AddBlur(inSource, inDest, inMag) {
var _local4 = inMag + Math.sqrt((inSource._width * inSource._width) + (inSource._height * inSource._height));
var _local2 = _local4 / 2;
m_blurBitmap = new flash.display.BitmapData(_local4, _local4, true, 0);
var _local6 = inDest.getNextHighestDepth();
var _local7 = inDest.createEmptyMovieClip("BlurHolder" + _local6, _local6);
var _local5 = _local7.createEmptyMovieClip("Blur", 1);
_local5.attachBitmap(m_blurBitmap, inDest.getNextHighestDepth(), "always", true);
_local5._x = -_local2;
_local5._y = -_local2;
var _local8 = new flash.geom.Matrix();
_local8.translate(_local2, _local2);
m_blurBitmap.draw(inSource, _local8);
var _local9 = new flash.filters.BlurFilter(0, inMag);
_local9.quality = 1;
m_blurBitmap.applyFilter(m_blurBitmap, m_blurBitmap.rectangle, new flash.geom.Point(0, 0), _local9);
return(_local7);
}
function OnComplete() {
super.OnComplete();
if (m_blurBitmap != null) {
m_blurBitmap.dispose();
}
}
static var State_Idle = 1;
static var State_FlyOut = 2;
static var State_FlyIn = 3;
static var BoardCenterX = 290;
static var BoardCenterY = 266;
static var FishyVel = 500;
}
Symbol 72 MovieClip [__Packages.Effects.CEffect_DropAnim] Frame 0
class Effects.CEffect_DropAnim extends CEffect
{
var m_Velocity, m_Mc, m_ScaleRate, m_SpinRate;
function CEffect_DropAnim () {
super(CEffect.Type_DropAnim);
}
function OnInit(i_mc, i_spinRate, i_scaleRate, i_initialVelocityX, i_initialVelocityY) {
m_Velocity = new Core.Vector2(((i_initialVelocityX == null) ? (Constants.LateralVelocity * (1 - (Math.random() * 2))) : (i_initialVelocityX)), ((i_initialVelocityY == null) ? 0 : (i_initialVelocityY)));
m_Mc = i_mc;
m_ScaleRate = ((i_scaleRate != null) ? (i_scaleRate) : 0);
m_SpinRate = ((i_spinRate != null) ? (i_spinRate) : 0);
return(m_Mc != null);
}
function OnUpdate(i_forceFinish, i_deltaT) {
m_Velocity.Y = m_Velocity.Y + (s_Gravity * i_deltaT);
m_Mc._x = m_Mc._x + (m_Velocity.X * i_deltaT);
m_Mc._y = m_Mc._y + (m_Velocity.Y * i_deltaT);
m_Mc._xscale = m_Mc._xscale + (m_ScaleRate * i_deltaT);
m_Mc._yscale = m_Mc._yscale + (m_ScaleRate * i_deltaT);
m_Mc._rotation = m_Mc._rotation + (m_SpinRate * i_deltaT);
var _local4 = CCoord.ToGlobal(m_Mc);
if (((_local4.X - m_Mc._width) > Constants.GameResX) || ((_local4.Y - m_Mc._height) > Constants.GameResY)) {
i_forceFinish = true;
}
super.OnUpdate(i_forceFinish, i_deltaT);
}
static var s_Gravity = 5000;
}
Symbol 73 MovieClip [__Packages.Core.COrientedBox] Frame 0
class Core.COrientedBox
{
var m_center, m_extentsR, m_extentsU, m_axesR, m_axesU;
function COrientedBox () {
m_center = new Core.Vector2(0, 0);
m_extentsR = 0;
m_extentsU = 0;
m_axesR = new Core.Vector2(0, 0);
m_axesU = new Core.Vector2(0, 0);
}
function SetCenter(x, y) {
m_center.X = x;
m_center.Y = y;
}
function SetCenterV(c) {
m_center.Copy(c);
}
function SetExtents(right, up) {
m_extentsR = right;
m_extentsU = up;
}
function SetAxes(rightX, rightY, upX, upY) {
m_axesR.X = rightX;
m_axesR.Y = rightY;
m_axesU.X = upX;
m_axesU.Y = upY;
}
function SetAxesV(right, up) {
m_axesR.Copy(right);
m_axesU.Copy(up);
}
function checkCollision(boxB) {
var _local6 = boxB.m_axesR;
var _local9 = boxB.m_axesU;
var _local10 = boxB.m_extentsR;
var _local7 = boxB.m_extentsU;
var _local5 = new Core.Vector2(0, 0);
_local5.Copy(boxB.m_center);
_local5.Subtract(m_center);
var _local2 = [0, 0, 0, 0];
var _local3 = 0;
var _local4 = 0;
_local2[0] = Math.abs(m_axesR.Dot(_local6));
_local2[1] = Math.abs(m_axesR.Dot(_local9));
_local3 = Math.abs(m_axesR.Dot(_local5));
_local4 = (m_extentsR + (_local10 * _local2[0])) + (_local7 * _local2[1]);
if (_local3 > _local4) {
return(false);
}
_local2[2] = Math.abs(m_axesU.Dot(_local6));
_local2[3] = Math.abs(m_axesU.Dot(_local9));
_local3 = Math.abs(m_axesU.Dot(_local5));
_local4 = (m_extentsU + (_local10 * _local2[2])) + (_local7 * _local2[3]);
if (_local3 > _local4) {
return(false);
}
_local3 = Math.abs(_local6.Dot(_local5));
_local4 = (_local10 + (m_extentsR * _local2[0])) + (m_extentsU * _local2[2]);
if (_local3 > _local4) {
return(false);
}
_local3 = Math.abs(_local9.Dot(_local5));
_local4 = (_local7 + (m_extentsR * _local2[1])) + (m_extentsU * _local2[3]);
if (_local3 > _local4) {
return(false);
}
return(true);
}
function drawBox(parentMC, color, thickness) {
var _local2 = new Core.Vector2(m_axesR.X * m_extentsR, m_axesR.Y * m_extentsR);
var _local3 = new Core.Vector2(m_axesU.X * m_extentsU, m_axesU.Y * m_extentsU);
parentMC.lineStyle(thickness, color, 100);
parentMC.moveTo((m_center.X + _local2.X) + _local3.X, (m_center.Y + _local2.Y) + _local3.Y);
parentMC.lineTo((m_center.X - _local2.X) + _local3.X, (m_center.Y - _local2.Y) + _local3.Y);
parentMC.lineTo((m_center.X - _local2.X) - _local3.X, (m_center.Y - _local2.Y) - _local3.Y);
parentMC.lineTo((m_center.X + _local2.X) - _local3.X, (m_center.Y + _local2.Y) - _local3.Y);
parentMC.lineTo((m_center.X + _local2.X) + _local3.X, (m_center.Y + _local2.Y) + _local3.Y);
}
}
Symbol 74 MovieClip [__Packages.CBoardVertical] Frame 0
class CBoardVertical extends CBoard
{
var m_actionDelta, m_VertTileSet, m_TileSet, m_Queue, SetState, m_LoseShadowBoundingClip, m_EffectsLayer, m_Lost;
function CBoardVertical () {
super();
}
function Reset() {
super.Reset();
m_actionDelta = 0;
}
function onLoad() {
super.onLoad();
m_VertTileSet = CTileSetVertical(m_TileSet);
}
function onXmlLoaded() {
super.onXmlLoaded();
m_Queue.SetStickersVisible(false, true);
}
function AdvanceDanger() {
super.AdvanceDanger();
_global.Sounds.PlaySound(Constants.__get__Sound_Whoosh());
SetState(CBoard.State_Dropping);
m_VertTileSet.PushDown();
}
function DrawLoseBoundary() {
super.DrawLoseBoundary();
var _local3 = (Level.m_BoardLevel * Level.m_SnoodHeight) + 1;
m_LoseShadowBoundingClip._y = m_TileSet._y + (Level.m_LoseLevel * Level.m_SnoodHeight);
trace((((((("LOSE_SHADOW:" + m_LoseShadowBoundingClip._y) + ":") + Level.m_LoseLevel) + ":") + Level.m_SnoodHeight) + ":") + m_TileSet._y);
}
function onTileSetDropComplete() {
SetState(CBoard.State_Playing);
m_TileSet.UpdateBoundingBox();
Level.m_BoardLevel = Level.m_BoardLevel + 1;
m_EffectsLayer._y = m_EffectsLayer._y + Level.m_SnoodHeight;
m_Lost = m_TileSet.CheckAndUpdateForLoss();
}
function OnPlayUpdate(i_deltaT) {
super.OnPlayUpdate(i_deltaT);
if (CGame.DbgActionMode) {
m_actionDelta = m_actionDelta + i_deltaT;
m_TileSet._y = m_TileSet.m_OrigCoord.Y + Math.ceil(m_actionDelta * s_ActionModeDropRate);
m_EffectsLayer._y = m_TileSet._y;
Level.m_BoardLevel = Math.floor((m_TileSet._y - m_TileSet.m_OrigCoord.Y) / Level.m_SnoodHeight);
m_Lost = m_TileSet.CheckAndUpdateForLoss();
}
}
function SwapActiveLauncher(inPlayer) {
return(false);
}
function SetTraceShot(i_val, i_noSetVar) {
super.SetTraceShot(i_val, i_noSetVar);
}
static var s_ActionModeDropRate = 3;
}
Symbol 75 MovieClip [__Packages.CTileSetVertical] Frame 0
class CTileSetVertical extends CTileSet
{
var BarShaft, _barShaft, Bar, _bar, cacheAsBitmap, State, m_shakeDuration, m_shakeStartX, _x, m_shakeStartY, _y, m_activeTweens, IsTweenActive, onEnterFrame, BoundingClip;
function CTileSetVertical () {
super();
}
function onLoad() {
super.onLoad();
BarShaft = _barShaft;
CDebug.Assert(BarShaft != null, this, "Couldn't find bar shaft");
Bar = _bar;
CDebug.Assert(Bar != null, this, "Couldn't find bar");
}
function PushDown() {
cacheAsBitmap = true;
State = CTileSet.State_DroppingInitialShake;
m_shakeDuration = s_InitialShakeDuration;
m_shakeStartX = _x;
m_shakeStartY = _y;
}
function OnPlayUpdate(i_deltaT) {
super.OnPlayUpdate(i_deltaT);
if (State == CTileSet.State_DroppingInitialShake) {
_x = m_shakeStartX + ((Math.random() * 6) - 3);
_y = m_shakeStartY + ((Math.random() * 6) - 3);
m_shakeDuration = m_shakeDuration - (1 / Constants.Fps);
if (m_shakeDuration <= 0) {
_x = m_shakeStartX;
_y = m_shakeStartY;
State = CTileSet.State_DroppingMovingToTarget;
var _local3 = new Core.CTween(this, "_y", mx.transitions.easing.Regular.easeOut, _y, _y + Level.m_SnoodHeight, s_DropDuration, true);
m_activeTweens.push(_local3);
_local3 = new Core.CTween(BarShaft, "_y", mx.transitions.easing.Regular.easeOut, BarShaft._y, BarShaft._y - Level.m_SnoodHeight, s_DropDuration, true);
m_activeTweens.push(_local3);
_local3 = new Core.CTween(BarShaft, "_height", mx.transitions.easing.Regular.easeOut, BarShaft._height, BarShaft._height + Level.m_SnoodHeight, s_DropDuration, true);
m_activeTweens.push(_local3);
}
} else if (State == CTileSet.State_DroppingMovingToTarget) {
if (!IsTweenActive()) {
m_activeTweens = [];
m_shakeStartX = _x;
m_shakeStartY = _y;
State = CTileSet.State_DroppingEndShake;
m_shakeDuration = s_EndShakeDuration;
}
} else if (State == CTileSet.State_DroppingEndShake) {
_x = m_shakeStartX + ((Math.random() * 6) - 3);
_y = m_shakeStartY + ((Math.random() * 6) - 3);
m_shakeDuration = m_shakeDuration - (1 / Constants.Fps);
if (m_shakeDuration <= 0) {
_x = m_shakeStartX;
_y = m_shakeStartY;
State = CTileSet.State_Playing;
onEnterFrame = null;
BoundingClip._height = BoundingClip._height - Level.m_SnoodHeight;
cacheAsBitmap = false;
CBoard.G.onTileSetDropComplete();
}
}
}
function GetDiveBarDist() {
return(Level.m_LoseLevel - Level.m_BoardLevel);
}
static var s_InitialShakeDuration = 0.1;
static var s_DropDuration = 0.3;
static var s_EndShakeDuration = 0;
}
Symbol 76 MovieClip [__Packages.Effects.CEffect_ScareAnim] Frame 0
class Effects.CEffect_ScareAnim extends CEffect
{
var m_Elapsed, m_Delay, m_Duration, m_Borb, m_origCoord;
function CEffect_ScareAnim () {
super(CEffect.Type_ScareAnim);
}
function OnInit(i_borb, i_srcCoord, i_duration, i_delay) {
var _local4 = true;
m_Elapsed = 0;
if (i_delay == null) {
m_Delay = s_Delay + (Oberon.MathX.randRange(s_RandRangeMin, s_RandRangeMax) * s_RandMag);
} else {
m_Delay = i_delay;
}
if (i_duration == null) {
m_Duration = (m_Delay + s_Duration) + (Oberon.MathX.randRange(s_RandRangeMin, s_RandRangeMax) * s_RandMag);
} else {
m_Duration = i_duration;
}
m_Borb = i_borb;
m_origCoord = new CCoord(i_borb._x, i_borb._y);
var _local2 = "happy";
var _local3 = m_Borb.__get__Color();
if (_local3 == Constants.Snood_Pearl) {
_local2 = "mad";
} else if (_local3 == Constants.Snood_Crabby) {
_local2 = "madNoDir";
} else if (_local3 == Constants.Snood_Sandy) {
_local2 = "creepy";
} else if (_local3 == Constants.Snood_Holly) {
_local2 = "flirt";
}
_local4 = _local4 && (m_Borb.PlayEmoteAnim(_local2, true, null, i_srcCoord) != null);
return(_local4);
}
function OnUpdate(i_forceFinish, i_deltaT) {
m_Elapsed = m_Elapsed + i_deltaT;
if (m_Elapsed > m_Duration) {
i_forceFinish = true;
} else if (m_Elapsed > m_Delay) {
m_Borb._x = m_origCoord.X + Oberon.MathX.randRange(-s_Magnitude, s_Magnitude);
m_Borb._y = m_origCoord.Y + Oberon.MathX.randRange(-s_Magnitude, s_Magnitude);
}
super.OnUpdate(i_forceFinish, i_deltaT);
}
function OnComplete() {
super.OnComplete();
m_Borb.KillEmoteAnim();
m_Borb.LookOffCenter();
m_Borb._x = m_origCoord.X;
m_Borb._y = m_origCoord.Y;
}
static var s_Delay = 1.5;
static var s_Duration = 3;
static var s_Magnitude = 1;
var s_RandRangeMin = 0;
var s_RandRangeMax = 4;
var s_RandMag = 0.1;
}
Symbol 77 MovieClip [__Packages.CQueue] Frame 0
class CQueue extends MovieClip
{
var m_headMcs, m_posHeadMcs, FallInAnimCompleteEvent, AdvanceAnimCompleteEvent, RetreatAnimCompleteEvent, FinishedAllAnimEvent, ElevatorLoadCompleteEvent, m_activeHeadMcs, m_fallInMarker, FallInMarker, m_LeftTextLabel, _x, _y;
function CQueue () {
super();
m_headMcs = [];
m_posHeadMcs = [];
m_loaded = false;
FallInAnimCompleteEvent = new Oberon.CEvent(this);
AdvanceAnimCompleteEvent = new Oberon.CEvent(this);
RetreatAnimCompleteEvent = new Oberon.CEvent(this);
FinishedAllAnimEvent = new Oberon.CEvent(this);
ElevatorLoadCompleteEvent = new Oberon.CEvent(this);
FinishedAllAnimEvent.PushBehavior(mx.utils.Delegate.create(this, onFinishedAllAnim), false);
AdvanceAnimCompleteEvent.PushBehavior(mx.utils.Delegate.create(this, onQueueAdvanceComplete), false);
}
function GetHeadMcs() {
return(m_headMcs);
}
function GetAbsMax() {
return(m_headMcs.length);
}
function GetCurMax() {
return(m_curMax);
}
function SetCurMax(i_val) {
if (m_loaded) {
CDebug.Assert(i_val <= GetAbsMax(), this, (("CurMax greater than AbsMax " + i_val) + " vs ") + GetAbsMax());
m_curMax = Math.min(i_val, m_curMax);
} else {
m_curMax = i_val;
}
}
function GetCount() {
return(m_activeHeadMcs.length);
}
function SetCount(i_val) {
CDebug.Assert(m_loaded, this, "Can't change count if not yet loaded");
Fill(Math.min(i_val, GetAbsMax()));
}
function IsEmpty() {
return(GetCount() == 0);
}
function Reset() {
var _local2 = 0;
while (_local2 < m_posHeadMcs.length) {
var _local3 = CQueueBorb(m_posHeadMcs[_local2]);
if (_local3 != null) {
returnToPool(_local3);
m_posHeadMcs[_local2] = null;
}
_local2++;
}
}
function Hurry() {
if (!m_hurry) {
m_hurry = true;
var _local2 = 0;
while (_local2 < m_activeHeadMcs.length) {
var _local3 = CQueueBorb(m_activeHeadMcs[_local2]);
if (_local3.GetAnim() == CQueueBorb.Anim_QueueMove) {
_local3.Hurry(s_HurryMod);
}
_local2++;
}
}
}
function onLoad() {
m_fallInMarker = MovieClip(FallInMarker);
m_LeftTextLabel = MovieClip(CGame.Board.OwnerDlg.UsedButton);
m_fallInMarker._visible = false;
}
function onUnload() {
super.onUnload();
}
function resetHeadPool() {
m_activeHeadMcs = [];
m_headMcs = [];
m_posHeadMcs = [];
var _local4 = 0;
while (CQueueBorb(this["_head" + _local4]) != null) {
var _local2 = CQueueBorb(this["_head" + _local4]);
_local2.__get__State()(SnoodHead.State_InQueue);
_local2.SetPowerUp(Constants.PowerUp_Ghost);
_local2.SetPosition(null, true, m_hurry, s_HurryMod);
_local2.gotoAndStop(1);
_local2.AnimCompleteEvent.PushBehavior(mx.utils.Delegate.create(this, OnBorbFinishedAnim));
m_headMcs.push(_local2);
_local4++;
}
m_dropPos = GetAbsMax() + 2;
AnimDropPos = GetAbsMax();
var _local3 = 0;
while (_local3 < (m_dropPos + GetAbsMax())) {
m_posHeadMcs.push(null);
_local3++;
}
CDebug.Assert(m_headMcs.length > 0, "CQueue.PopulatePool()", "head pool empty (no heads prefixed with _head?)");
}
function Init(i_maxHeads) {
resetHeadPool();
SetCurMax(i_maxHeads);
if (m_curMax == null) {
m_curMax = GetAbsMax();
} else if (m_curMax > GetAbsMax()) {
CDebug.Assert(false, this, "Max borbs exceeded in queue (curMax too high)");
m_curMax = Math.min(m_curMax, GetAbsMax());
}
m_loaded = true;
}
function SetDebugColors(i_on) {
var _local2 = 0;
while (_local2 < m_headMcs.length) {
var _local3 = new Color(m_headMcs[_local2]);
if (i_on) {
_local3.setTransform({ba:100, bb:255});
} else {
_local3.setTransform({ba:100, bb:100});
}
_local2++;
}
}
function InsertBorbIntoQueue(i_borb) {
if (CGame.Board.m_Won) {
i_borb.Vaporize(true, true);
} else if (AddAnimBorb(i_borb.ToInfo())) {
Resync(null);
SnoodHead.ReturnToPool(i_borb);
} else {
i_borb.DropTo(Effects.CEffect_BorbDropAnim.Dest_OffBoard, 0);
var _local2 = CGame.Board.CreateSmallPointsEffect((_x + m_fallInMarker._x) + 55, _y + m_fallInMarker._y);
_local2.Display.PointsText.text = "+" + Constants.Score_QueueOverflowBonus;
_local2.Display.Points.ResetText();
CGame.Sounds.PlaySound(Constants.__get__Sound_Points());
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_QueueOverflowBonus;
}
}
function PopAllHeadAsBonus() {
var _local3 = 1;
var _local2 = 0;
while (_local2 < m_posHeadMcs.length) {
if (m_posHeadMcs[_local2] != null) {
if ((_local2 != 0) || (SnoodHead(m_posHeadMcs[_local2]).IsAnimating())) {
SnoodHead(m_posHeadMcs[_local2]).Vaporize(false, true, _local3 * s_WinDelayPerHead, null, 3);
_local3++;
}
}
_local2++;
}
}
function OnBorbFinishedAnim(i_context) {
var _local2 = SnoodHead(i_context);
if (!(_local2.__get__LastAnim() === CQueueBorb.Anim_QueueMove)) {
} else {
var _local3 = CQueueBorb(_local2);
if (_local3.m_Pos == 0) {
ElevatorLoadCompleteEvent.Fire();
m_hurry = false;
}
if (!IsAnimating()) {
AdvanceAnimCompleteEvent.Fire();
}
}
}
function onQueueAdvanceComplete() {
FinishedAllAnimEvent.Fire();
}
function onFinishedAllAnim() {
CQueueBorb.s_CurrentQueueFallTime = CQueueBorb.s_BaseQueueFallTime;
}
function AddAnimBorb(i_borbInfo) {
if (CQueueBorb(m_posHeadMcs[AnimDropPos]) == null) {
var _local2 = popNextAvailPooledBorb();
if (_local2 != null) {
_local2.SyncWithInfo(i_borbInfo);
m_posHeadMcs[AnimDropPos] = _local2;
_local2.SetPosition(AnimDropPos, true, m_hurry, s_HurryMod);
onHeadsChanged();
return(true);
}
}
return(false);
}
function returnToPool(i_borb) {
m_activeHeadMcs = Oberon.ArrayX.RemoveFrom(m_activeHeadMcs, i_borb);
i_borb.SetPosition(null, true, m_hurry, s_HurryMod);
i_borb = null;
}
function GetFallInMarkerCoord() {
return(new CCoord(m_fallInMarker._x, m_fallInMarker._y));
}
function ToString() {
var _local3 = "CQueue contents:\n\n HeadColors:\n ";
var _local2 = 0;
while (_local2 < m_headMcs.length) {
_local3 = _local3 + (_local2 + " ");
if (m_headMcs[_local2] == null) {
_local3 = _local3 + "N";
} else {
_local3 = _local3 + ((CBorbInfo(CQueueBorb(m_headMcs[_local2]).ToInfo()).ToString() + " ") + CQueueBorb(m_headMcs[_local2])._y);
}
_local3 = _local3 + newline;
_local2++;
}
_local3 = _local3 + "\n PosHeads:\n ";
_local2 = 0;
while (_local2 < m_posHeadMcs.length) {
_local3 = _local3 + ((_local2 + ((m_posHeadMcs[_local2] == null) ? "-" : "+")) + ((_local2 < 10) ? " " : " "));
_local2++;
}
return(_local3 + "\n\n");
}
function CheckColors() {
var _local3 = 0;
while (_local3 < m_posHeadMcs.length) {
var _local2 = CQueueBorb(m_posHeadMcs[_local3]);
if (((_local2 != null) && (Constants.IsHead(_local2.__get__Color(), true))) && (!CGame.Board.IsBorbActive(_local2.__get__Color()))) {
var _local4 = CGame.Board.GetRandBorb();
_local2.SetColor(_local4.Color);
}
_local3++;
}
}
function onHeadsChanged() {
var _local5 = Math.max(0, GetCount() - 1);
CGame.Board.SnoodsLeftDisplay.__set__Text(String(_local5));
var _local4 = new Color(CGame.Board.SnoodsLeftDisplay);
if (_local5 == 0) {
_local4.setRGB(16711680);
} else if (_local5 < 3) {
_local4.setRGB(16776960);
} else {
_local4.setRGB(16777215);
}
var _local3 = 1;
var _local2 = 3;
while (_local2 < GetCurMax()) {
if (m_posHeadMcs[_local2] != null) {
_local3 = _local2;
}
_local2++;
}
var _local6 = CQueueBorb(m_posHeadMcs[_local3]);
if (_local6 != null) {
var _local7 = _local6.GetMainHeadClip();
}
}
function InsertBorbAtElevator(i_borb, i_replace) {
var _local7 = false;
if ((!i_replace) && (GetCount() == GetAbsMax())) {
var _local5 = false;
var _local2 = m_posHeadMcs.length - 1;
while ((!_local5) && (_local2 >= 0)) {
var _local3 = CQueueBorb(m_posHeadMcs[_local2]);
if (_local3 != null) {
dropBorb(_local3, s_queueOverflowVelY);
m_posHeadMcs[_local2] = null;
_local5 = true;
var _local4 = CGame.Board.CreateSmallPointsEffect((_x + m_fallInMarker._x) + 55, _y + m_fallInMarker._y);
_local4.Display.PointsText.text = "+" + Constants.Score_QueueOverflowBonus;
_local4.Display.Points.ResetText();
CGame.Sounds.PlaySound(Constants.__get__Sound_Points());
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_QueueOverflowBonus;
}
_local2--;
}
}
if (i_replace) {
var _local8 = CQueueBorb(m_posHeadMcs[0]);
_local8.SyncWithInfo(i_borb);
} else {
var _local6 = popNextAvailPooledBorb();
if (_local6 != null) {
_local6.SyncWithInfo(i_borb);
_local7 = Resync(_local6);
}
}
return(_local7);
}
function dropBorb(i_borb, i_velY) {
var _local2 = CCoord.ToLocal(i_borb.GetMainHeadClip(), CGame.TileSet);
var _local5 = SnoodHead.GetAndRemoveFromPool(i_borb.ToInfo(), i_borb.__get__Size(), _local2.X, _local2.Y);
returnToPool(i_borb);
var _local4 = Effects.CEffect_DropAnim(CEffect.CreateEffect(CEffect.Type_DropAnim));
if (_local4.OnInit(_local5, 0, 0, null, i_velY)) {
CGame.EffectMgr.AddEffectToActiveList(_local4);
}
}
function onDropBorbComplete(i_effect) {
SnoodHead.ReturnToPool(SnoodHead(i_effect.m_Mc));
}
function Resync(i_rewindBorb) {
var _local7 = false;
var _local5 = [];
var _local3 = i_rewindBorb;
var _local2 = 0;
while (_local2 < m_posHeadMcs.length) {
var _local4 = CQueueBorb(m_posHeadMcs[_local2]);
var _local6 = null;
if (_local4 == null) {
if (_local3 != null) {
m_posHeadMcs[_local2] = _local3;
_local3.SetPosition(_local2, _local2 == 0, m_hurry, s_HurryMod);
_local3 = null;
_local7 = true;
} else {
_local5.push(_local2);
}
} else if (_local3 != null) {
var _local8 = m_posHeadMcs[_local2];
m_posHeadMcs[_local2] = _local3;
_local3.SetPosition(_local2, _local2 == 0, m_hurry, s_HurryMod);
_local3 = _local8;
_local7 = true;
} else if (_local5.length > 0) {
if (_local4.GetAnim() != SnoodHead.Anim_None) {
_local4.KillTweens();
}
_local7 = true;
_local6 = Number(_local5.shift());
_local5.push(_local2);
m_posHeadMcs[_local2] = null;
m_posHeadMcs[_local6] = _local4;
_local4.SetPosition(_local6, false, m_hurry, s_HurryMod);
}
_local2++;
}
if (_local7) {
onHeadsChanged();
}
return(_local7);
}
function popNextAvailPooledBorb() {
var _local3 = 0;
while (_local3 < m_headMcs.length) {
var _local2 = CQueueBorb(m_headMcs[_local3]);
if (_local2.m_Pos == null) {
m_activeHeadMcs.push(_local2);
return(_local2);
}
_local3++;
}
return(null);
}
function Refill() {
CQueueBorb.s_CurrentQueueFallTime = CQueueBorb.s_BaseRefillQueueFallTime;
Fill(m_curMax, true);
}
function Fill(i_count, i_forceRefill) {
if (i_forceRefill) {
Reset();
}
CDebug.Assert(i_count >= GetCount(), "CQueue.Fill()", "Can only add borbs with Fill (remove unsupported)");
var _local2 = new Array();
var _local5 = new Array();
var _local4 = m_dropPos;
while ((GetCount() < i_count) && (_local4 < m_posHeadMcs.length)) {
if (m_posHeadMcs[_local4] == null) {
var _local3 = popNextAvailPooledBorb();
if (_local3 != null) {
_local5.push(_local3);
_local3.__set__Color(Constants.Snood_Mary);
m_posHeadMcs[_local4] = _local3;
_local3.SetPosition(_local4, true, m_hurry, s_HurryMod);
}
}
_local4++;
}
var _local10 = CGame.TileSet;
var _local6 = _local10.GetBorbColorCounts();
var _local8 = _local10.GetHeadCount();
_local4 = 0;
while (_local4 < Constants.Snood_HeadCount) {
trace((((Number(_local6[_local4] + _local6[_local4 + Constants.Snood_HeadCount]) + ":") + _local8) + ":") + Number(s_MinQueueBorbPct / 100));
if (((_local6[_local4] + _local6[_local4 + Constants.Snood_HeadCount]) / _local8) > (s_MinQueueBorbPct / 100)) {
_local2.push(new CBorbInfo(_local4 + 1));
}
_local4++;
}
while (_local2.length > _local5.length) {
_local2.splice(Oberon.MathX.randRange(0, _local2.length - 1), 1);
}
while (_local2.length < _local5.length) {
_local2.push(CGame.Board.GetRandBorb());
}
Core.Utility.ShuffleArray(_local2);
_local4 = 0;
while (_local4 < _local5.length) {
var _local7 = CQueueBorb(_local5[_local4]);
_local7.SyncWithInfo(CBorbInfo(_local2[_local4]));
_local7.m_FromRefill = true;
_local4++;
}
Resync(null);
CDebug.Assert(GetCount() == i_count, "CQueue.Fill()", ((("Couldn't fit all borbs into queue (" + GetCount()) + " of ") + i_count) + ")");
}
function Advance(inDir) {
var _local2 = CQueueBorb(m_posHeadMcs[0]);
if (_local2 != null) {
returnToPool(_local2);
m_posHeadMcs[0] = null;
}
Resync(null);
}
function SetStickersVisible(i_bRight, i_bBottom) {
}
function IsAnimating() {
var _local2 = 0;
while (_local2 < m_activeHeadMcs.length) {
if (CQueueBorb(m_activeHeadMcs[_local2]).__get__CurAnim() != SnoodHead.Anim_None) {
return(true);
}
_local2++;
}
return(false);
}
function IsBusy() {
return(IsAnimating());
}
function GetNextBorb() {
CDebug.Assert(m_posHeadMcs[0] != null, "CQueue.GetNextBorb()", "Elevator empty!");
return(CQueueBorb(m_posHeadMcs[0]).ToInfo());
}
function GetNextPosBorb() {
var _local2 = 1;
while (_local2 < m_posHeadMcs.length) {
if (m_posHeadMcs[_local2] != null) {
return(CQueueBorb(m_posHeadMcs[_local2]).ToInfo());
}
_local2++;
}
return(null);
}
function ClearNextBorb() {
if (CQueueBorb(m_posHeadMcs[0]) != null) {
returnToPool(CQueueBorb(m_posHeadMcs[0]));
m_posHeadMcs[0] = null;
}
}
function SetAllBorbsToInfo(i_info, i_notPowerupOnly) {
var _local2 = 0;
while (_local2 < m_posHeadMcs.length) {
if (!i_notPowerupOnly) {
var _local3 = CGame.Board.GetRandBorb();
_local3.PowerUp = i_info.PowerUp;
CQueueBorb(m_posHeadMcs[_local2]).SyncWithInfo(_local3);
} else {
CQueueBorb(m_posHeadMcs[_local2]).SyncWithInfo(i_info);
}
_local2++;
}
}
static var s_queueOverflowVelY = -900;
static var s_HurryMod = 1.8;
static var s_WinDelayPerHead = 10;
static var s_MinQueueBorbPct = 10;
var m_dropPos = 0;
var AnimDropPos = 0;
var m_loaded = false;
var m_hurry = false;
var m_curMax = null;
}
Symbol 78 MovieClip [__Packages.mx.transitions.easing.None] Frame 0
class mx.transitions.easing.None
{
function None () {
}
static function easeNone(t, b, c, d) {
return(((c * t) / d) + b);
}
static function easeIn(t, b, c, d) {
return(((c * t) / d) + b);
}
static function easeOut(t, b, c, d) {
return(((c * t) / d) + b);
}
static function easeInOut(t, b, c, d) {
return(((c * t) / d) + b);
}
static var version = "1.1.0.52";
}
Symbol 79 MovieClip [__Packages.Effects.CEffect_Vaporize] Frame 0
class Effects.CEffect_Vaporize extends CEffect
{
var m_NeedsUpdate, m_Immediate, m_ApplyBonus, m_State, m_MaxVaporizeDelay, m_ForceDelay, m_Borb, m_VaporizeMc, m_FrameTween, m_BonusEffect, m_bReadyForDelete;
function CEffect_Vaporize () {
super(CEffect.Type_Vaporize);
m_NeedsUpdate = false;
m_Immediate = false;
m_ApplyBonus = false;
m_State = State_Vaporize;
m_MaxVaporizeDelay = s_MaxVaporizeDelay;
m_ForceDelay = null;
}
function OnInit(i_borb, i_immediate, i_applyBonus, i_forceDelay, i_maxDelay, i_vaporizeEffectNumber, i_scaleVaporize) {
m_MaxVaporizeDelay = ((i_maxDelay != null) ? (i_maxDelay) : (s_MaxVaporizeDelay));
m_ForceDelay = i_forceDelay;
m_Borb = i_borb;
m_Immediate = i_immediate;
var _local5 = CGame.Board.m_EffectsLayer;
var _local7 = _local5.getNextHighestDepth();
var _local4 = String(i_vaporizeEffectNumber);
if (i_vaporizeEffectNumber == null) {
_local4 = s_DefaultEffectId;
}
m_VaporizeMc = _local5.attachMovie("Vaporize" + _local4, "Vaporize" + _local7, _local7);
m_VaporizeMc.stop();
m_VaporizeMc._xscale = CGame.TileSet.m_SnoodScale;
m_VaporizeMc._yscale = CGame.TileSet.m_SnoodScale;
if (m_Borb.IsFromPool()) {
m_VaporizeMc._x = m_Borb._x;
m_VaporizeMc._y = m_Borb._y;
} else {
var _local2 = CCoord.ToLocal(m_Borb, m_VaporizeMc._parent);
m_VaporizeMc._x = _local2.X + m_Borb.GetMainHeadClip()._x;
m_VaporizeMc._y = _local2.Y + m_Borb.GetMainHeadClip()._y;
if (CQueueBorb(m_Borb) != null) {
m_VaporizeMc._x = _local2.X + ((m_Borb.GetMainHeadClip()._x * Constants.Scaling) / 100);
m_VaporizeMc._y = _local2.Y + ((m_Borb.GetMainHeadClip()._y * Constants.Scaling) / 100);
}
}
if (((((m_Borb.__get__Color() >= Constants.Snood_LumpStart) && (m_Borb.__get__Color() <= Constants.Snood_LumpEnd)) || (m_Borb.__get__Color() == Constants.Snood_Slippery)) || (m_Borb.__get__Color() == Constants.Snood_MiniRobot)) || (CGame.Board.m_Lost)) {
var _local8 = new Color(m_VaporizeMc);
_local8.setRGB(0);
}
var _local3 = 0;
if (!m_Immediate) {
if (m_ForceDelay != null) {
_local3 = m_ForceDelay / Constants.Fps;
} else {
_local3 = Oberon.MathX.randRange(0, m_MaxVaporizeDelay) / Constants.Fps;
}
}
var _local6 = (m_Immediate ? (s_VaporizeStartFrame) : 1);
CDebug.Assert(m_VaporizeMc != null, "CEffect_Vaporize", "null vaporize mc");
m_FrameTween = new Core.CTween(m_VaporizeMc, "_currentframe", null, _local6, m_VaporizeMc._totalframes, ((m_VaporizeMc._totalframes - _local6) / Constants.Fps) * s_VaporizeSpeed, true, _local3);
m_FrameTween.onMotionChanged = mx.utils.Delegate.create(this, onTweenChanged);
m_FrameTween.onMotionFinished = mx.utils.Delegate.create(this, onTweenComplete);
m_ApplyBonus = ((i_applyBonus != null) ? (i_applyBonus) : false);
if (i_scaleVaporize) {
m_VaporizeMc._x = m_VaporizeMc._x * Constants.Scaling;
m_VaporizeMc._y = m_VaporizeMc._y * Constants.Scaling;
}
return(m_FrameTween != null);
}
function onTweenChanged() {
if (m_Immediate || (m_VaporizeMc._currentframe >= s_VaporizeStartFrame)) {
CGame.Sounds.PlaySound(Oberon.MathX.randRange(Constants.__get__Sound_BubbleFirst(), Constants.__get__Sound_BubbleLast()));
m_FrameTween.onMotionChanged = null;
if (m_Borb.IsFromPool()) {
SnoodHead.ReturnToPool(m_Borb);
} else {
m_Borb._visible = false;
}
}
}
function onTweenComplete() {
if (m_State == State_Vaporize) {
if (m_ApplyBonus) {
if (m_Borb.IsFromPool()) {
m_BonusEffect = CGame.Board.CreateSmallPointsEffect(m_VaporizeMc._x, m_VaporizeMc._y);
} else {
m_BonusEffect = CGame.Board.CreateSmallPointsEffect(m_VaporizeMc._x, CGame.Board.m_EffectsLayer._y + m_VaporizeMc._y);
}
m_BonusEffect.Display.PointsText.text = "+" + Constants.Score_QueueOverflowBonus;
m_BonusEffect.Display.Points.ResetText();
m_BonusEffect._y = m_BonusEffect._y + s_PointsEffectYOffset;
m_BonusEffect._x = m_BonusEffect._x + s_PointsEffectXOffset;
CGame.Sounds.PlaySound(Constants.__get__Sound_Points());
applyBonus();
m_NeedsUpdate = true;
m_State = State_Bonus;
} else {
m_bReadyForDelete = true;
}
m_VaporizeMc.removeMovieClip();
m_VaporizeMc = null;
} else {
m_bReadyForDelete = true;
}
}
function applyBonus() {
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + Constants.Score_QueueOverflowBonus;
}
function OnUpdate(i_forceFinish, i_deltaT) {
if (m_State == State_Bonus) {
if ((m_BonusEffect._currentframe == m_BonusEffect._totalframes) || (m_BonusEffect == null)) {
i_forceFinish = true;
}
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function OnComplete() {
super.OnComplete();
if (m_FrameTween.m_IsPlaying) {
m_FrameTween.Finish();
}
if (m_ApplyBonus && (m_State != State_Bonus)) {
applyBonus();
}
if (m_BonusEffect != null) {
m_BonusEffect.removeMovieClip();
}
}
static var s_VaporizeSpeed = 1;
static var s_MaxVaporizeDelay = 12;
static var s_PointsEffectYOffset = -35;
static var s_PointsEffectXOffset = 45;
static var s_DefaultEffectId = "1";
static var s_VaporizeStartFrame = 3;
static var State_Vaporize = 0;
static var State_Bonus = 1;
}
Symbol 80 MovieClip [__Packages.Effects.CEffect_BankAnim] Frame 0
class Effects.CEffect_BankAnim extends CEffect
{
var m_NumberOrient, m_CanBonus, m_NeedsUpdate;
function CEffect_BankAnim (i_parentMc, i_depth, i_orient, i_pos, i_color, i_canBonus) {
super(CEffect.Type_BankAnim);
m_NumberOrient = i_orient;
m_CanBonus = i_canBonus;
m_orient = CLauncher.OrientToString(m_NumberOrient);
switch (i_orient) {
case CLauncher.Orient_Bottom :
m_animMc = i_parentMc.attachMovie("BankShotAnimBottom", "BankShotAnim" + i_depth, i_depth);
break;
case CLauncher.Orient_Top :
m_animMc = i_parentMc.attachMovie("BankShotAnimTop", "BankShotAnim" + i_depth, i_depth);
break;
case CLauncher.Orient_Left :
m_animMc = i_parentMc.attachMovie("BankShotAnimLeft", "BankShotAnim" + i_depth, i_depth);
break;
case CLauncher.Orient_Right :
m_animMc = i_parentMc.attachMovie("BankShotAnimRight", "BankShotAnim" + i_depth, i_depth);
break;
default :
CDebug.WriteErr("CEffect_BankAnim()", "Unknown orient " + i_orient);
}
m_color = i_color;
m_animMc.stop();
m_animMc._x = i_pos.X;
m_animMc._y = i_pos.Y;
CDebug.Assert(m_animMc != null, "CEffect_BankAnim.onLoad()", "AnimMc is null");
m_animMc.onEnterFrame = mx.utils.Delegate.create(this, onEnterFrameMc);
m_state = State_Playing;
m_NeedsUpdate = false;
}
function onEnterFrameMc() {
m_animMc.onEnterFrame = mx.utils.Delegate.create(this, onEnterFrameTwoMc);
m_wallMc = MovieClip(m_animMc.BankShotWallAnim);
m_textMc = MovieClip(m_animMc.BankShotText);
CDebug.Assert(m_textMc != null, "CEffect_BankAnim.onLoad()", "BankShotText is null");
CDebug.Assert(m_wallMc != null, "CEffect_BankAnim.onLoad()", "BankShotWallAnim is null");
var _local2 = new Color(m_wallMc);
if ((m_color != null) && (m_color <= (Constants.Snood_HeadCount * 2))) {
Object(_local2).setTintRGB(Constants.s_BorbColorDarkTints[m_color - 1], s_BankTintPct);
}
m_wallMc.gotoAndStop(1);
m_textMc.gotoAndStop(1);
m_textMc._visible = false;
addWallAnimLoop();
}
function onEnterFrameTwoMc() {
CGame.Localizer.LocMc(m_animMc);
}
function addWallAnimLoop() {
m_wallFrameTween = new Core.CTween(m_wallMc, "_currentframe", null, 1, m_wallMc._totalframes, s_BankDuration);
m_wallFrameTween.onMotionFinished = mx.utils.Delegate.create(this, OnWallLoopComplete);
}
function OnWallLoopComplete() {
if (m_state == State_Playing) {
addWallAnimLoop();
}
}
function PlayRewardAnim(i_count) {
m_textMc.gotoAndStop(i_count + 1);
m_textMc._visible = true;
FadeOut();
}
function FadeOut() {
m_state = State_Fading;
m_frameTween = new Core.CTween(m_animMc, "_currentframe", null, 1, m_animMc._totalframes, s_TextDuration, true);
m_frameTween.onMotionFinished = mx.utils.Delegate.create(this, OnComplete);
}
function OnComplete() {
super.OnComplete();
m_state = State_Complete;
m_animMc.removeMovieClip();
}
static var s_TextDuration = 1;
static var s_BankDuration = 0.5;
static var s_BankTintPct = 90;
static var State_Playing = 0;
static var State_Fading = 1;
static var State_Complete = 2;
var m_state = 0;
var m_orient = "Top";
var m_animMc = null;
var m_wallMc = null;
var m_textMc = null;
var m_color = null;
var m_frameTween = null;
var m_wallFrameTween = null;
}
Symbol 81 MovieClip [__Packages.Effects.CEffect_IdleLookAnim] Frame 0
class Effects.CEffect_IdleLookAnim extends CEffect
{
var m_NeedsUpdate, m_borb, m_Type;
function CEffect_IdleLookAnim () {
super(CEffect.Type_IdleLookAnim);
m_NeedsUpdate = false;
}
function OnIdleEffectInit() {
var _local7 = true;
var _local5 = CGame.TileSet.GetActiveBorbsCount();
if (_local5 == 0) {
_local7 = false;
} else {
var _local4 = false;
var _local6 = CGame.TileSet.GetActiveBorbsFixedArray();
var _local2 = 0;
while ((!_local4) && (_local2 < s_MaxTries)) {
var _local3 = Oberon.MathX.randRange(0, _local5 - 1);
m_borb = SnoodHead(_local6[_local3]);
CDebug.Assert(m_borb != null, "CEffect_IdleLookAnim.OnInit()", "null borb found");
if (((!m_borb.IsEmoteAnimPlaying()) && (m_borb.HasEyes())) && (m_borb.__get__PowerUp() == Constants.PowerUp_None)) {
if (CGame.DbgShowBorbIdleAnim) {
SnoodHead.DbgClearTextOnAllSnoods();
m_borb.DbgSetText("ANIM" + m_Type);
}
m_borb.LookOffCenter();
m_borb.LookCompleteCallback = mx.utils.Delegate.create(this, OnComplete);
_local4 = true;
}
_local2++;
}
if (!_local4) {
_local7 = false;
}
}
return(_local7);
}
function OnComplete() {
m_borb.LookCompleteCallback = null;
return(super.OnComplete());
}
static var s_MaxTries = 15;
}
Symbol 82 MovieClip [__Packages.Effects.CEffect_IdleEmoteAnim] Frame 0
class Effects.CEffect_IdleEmoteAnim extends CEffect
{
var m_Elapsed, m_State, m_BorbSrc, m_BorbTgt, m_BorbSrcAnim, m_BorbTgtAnim, m_Type, m_LookDirTgt, m_LookDirSrc;
function CEffect_IdleEmoteAnim () {
super(CEffect.Type_IdleEmoteAnim);
m_Elapsed = 0;
m_State = State_AnimSrcInvoke;
}
function OnIdleEffectInit() {
var _local16 = true;
var _local11 = CGame.TileSet;
var _local14 = _local11.GetActiveBorbsCount();
if (_local14 == 0) {
_local16 = false;
} else {
var _local13 = false;
var _local15 = _local11.GetActiveBorbsFixedArray();
var _local9 = 0;
while ((!_local13) && (_local9 < s_MaxTries)) {
var _local12 = Oberon.MathX.randRange(0, _local14 - 1);
m_BorbSrc = SnoodHead(_local15[_local12]);
CDebug.Assert(m_BorbSrc != null, "CEffect_IdleEmoteAnim.OnInit()", "null borb found");
var _local8 = m_BorbSrc.__get__Color();
if ((Constants.IsHead(_local8) && (!m_BorbSrc.IsEmoteAnimPlaying())) && (m_BorbSrc.__get__PowerUp() == Constants.PowerUp_None)) {
var _local7 = s_headInteractions[_local8 - 1];
var _local6 = _local11.GetNeighborCoords(m_BorbSrc);
var _local2 = 0;
while ((m_BorbTgt == null) && (_local2 < _local6.length)) {
var _local5 = CCoord(_local6[_local2]);
m_BorbTgt = _local11.GetTileFromCoord(_local5);
if (((((m_BorbTgt == null) || (m_BorbTgt.__get__Color() > _local7.length)) || (!Constants.IsHead(m_BorbTgt.__get__Color()))) || (m_BorbSrc.__get__PowerUp() != Constants.PowerUp_None)) || (m_BorbTgt.IsEmoteAnimPlaying())) {
m_BorbTgt = null;
}
_local2++;
}
if (m_BorbTgt != null) {
var _local10 = m_BorbTgt.__get__Color();
m_BorbSrcAnim = _local7[_local10 - 1];
m_BorbTgtAnim = s_headInteractions[_local10 - 1][_local8 - 1];
if (CGame.DbgShowBorbIdleAnim) {
SnoodHead.DbgClearTextOnAllSnoods();
m_BorbSrc.DbgSetText(String(m_Type));
m_BorbTgt.DbgSetText(String(m_Type));
}
var _local3 = m_BorbSrc.GetPosCoord();
var _local4 = m_BorbTgt.GetPosCoord();
if (((_local3.Y + 5) >= _local4.Y) && ((_local3.Y - 5) <= _local4.Y)) {
if (_local3.X < _local4.X) {
m_LookDirTgt = CEyes.Dir_Left;
m_LookDirSrc = CEyes.Dir_Right;
} else {
m_LookDirTgt = CEyes.Dir_Right;
m_LookDirSrc = CEyes.Dir_Left;
}
} else if (_local3.X < _local4.X) {
if (_local3.Y < _local4.Y) {
m_LookDirSrc = CEyes.Dir_DownRight;
m_LookDirTgt = CEyes.Dir_UpLeft;
} else {
m_LookDirSrc = CEyes.Dir_UpRight;
m_LookDirTgt = CEyes.Dir_DownLeft;
}
} else if (_local3.Y < _local4.Y) {
m_LookDirSrc = CEyes.Dir_DownLeft;
m_LookDirTgt = CEyes.Dir_UpRight;
} else {
m_LookDirSrc = CEyes.Dir_UpLeft;
m_LookDirTgt = CEyes.Dir_DownRight;
}
if (m_BorbSrc.PlayEmoteAnim(m_BorbSrcAnim, true, m_LookDirSrc) != null) {
m_BorbSrc.EmoteCompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnEmoteComplete));
if (s_ReactionDur == 0) {
m_BorbTgt.PlayEmoteAnim(m_BorbTgtAnim, true, m_LookDirTgt);
m_BorbTgt.EmoteCompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnEmoteComplete));
m_State = State_AnimDestReaction;
}
_local13 = true;
}
}
}
_local9++;
}
if (!_local13) {
_local16 = false;
}
}
return(_local16);
}
function OnEmoteComplete() {
if ((!m_BorbTgt.IsEmoteAnimPlaying()) && (!m_BorbSrc.IsEmoteAnimPlaying())) {
OnComplete();
}
}
function OnUpdate(i_forceFinish, i_deltaT) {
m_Elapsed = m_Elapsed + i_deltaT;
if ((m_State == State_AnimSrcInvoke) && (m_Elapsed >= s_ReactionDur)) {
if (m_BorbTgt.PlayEmoteAnim(m_BorbTgtAnim, true, m_LookDirTgt) != null) {
m_BorbTgt.EmoteCompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnEmoteComplete));
m_State = State_AnimDestReaction;
} else {
i_forceFinish = true;
}
} else if ((m_State == State_AnimDestReaction) && (m_Elapsed >= (s_Duration + s_ReactionDur))) {
m_BorbTgt.CompleteEmoteAnim();
m_State = State_AnimDestStop;
} else if ((m_State == State_AnimDestStop) && (m_Elapsed >= (s_Duration + (s_ReactionDur * 2)))) {
m_BorbSrc.CompleteEmoteAnim();
m_State = State_AnimCompleting;
} else if (m_State == State_AnimCompleting) {
if ((!m_BorbTgt.IsEmoteAnimPlaying()) && (!m_BorbSrc.IsEmoteAnimPlaying())) {
OnComplete();
}
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function OnComplete() {
super.OnComplete();
m_BorbSrc.KillEmoteAnim();
m_BorbTgt.KillEmoteAnim();
}
static var s_MaxTries = 15;
static var s_Duration = 5;
static var s_ReactionDur = 0.4;
static var State_AnimSrcInvoke = 0;
static var State_AnimDestReaction = 1;
static var State_AnimDestStop = 2;
static var State_AnimCompleting = 3;
static var s_headInteractions = [["happy", "default", "happy", "happy", "sad", "happy", "happy", "sad"], ["mad", "mad", "happy", "happy", "sad", "mad", "mad", "mad"], ["happy", "happy", "happy", "default", "happy", "default", "happy", "sad"], ["default", "default", "default", "default", "default", "default", "default", "special"], ["mad", "sad", "sad", "mad", "happy", "happy", "sad", "mad"], ["happy", "default", "happy", "happy", "default", "happy", "happy", "sad"], ["happy", "happy", "happy", "happy", "sad", "happy", "happy", "sad"], ["creepy", "mad", "mad", "mad", "mad", "mad", "mad", "sad"]];
}
Symbol 83 MovieClip [__Packages.Effects.CEffect_IdleBlinkAnim] Frame 0
class Effects.CEffect_IdleBlinkAnim extends CEffect
{
var m_NeedsUpdate, m_Borb;
function CEffect_IdleBlinkAnim () {
super(CEffect.Type_IdleBlinkAnim);
m_NeedsUpdate = false;
}
function OnIdleEffectInit() {
var _local7 = true;
var _local8 = CGame.TileSet;
var _local5 = _local8.GetActiveBorbsCount();
if (_local5 == 0) {
_local7 = false;
} else {
var _local4 = false;
var _local6 = _local8.GetActiveBorbsFixedArray();
var _local2 = 0;
while ((!_local4) && (_local2 < s_MaxTries)) {
var _local3 = Oberon.MathX.randRange(0, _local5 - 1);
m_Borb = SnoodHead(_local6[_local3]);
CDebug.Assert(m_Borb != null, "CEffect_IdleBlinkAnim.OnInit()", "null borb found");
if ((((m_Borb.__get__PowerUp() == Constants.PowerUp_None) && (!m_Borb.IsEmoteAnimPlaying())) && (Effects.CEffect_EmoteAnim.HasAnimation(m_Borb.__get__Color(), "blink"))) && (m_Borb.PlayEmoteAnim("blink") != null)) {
m_Borb.EmoteCompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnComplete));
_local4 = true;
}
_local2++;
}
if (!_local4) {
_local7 = false;
}
}
return(_local7);
}
function OnComplete() {
super.OnComplete();
if (m_Borb.IsEmoteAnimPlaying()) {
m_Borb.KillEmoteAnim();
}
}
static var s_MaxTries = 15;
}
Symbol 84 MovieClip [__Packages.Effects.CEffect_IdleSpecialAnim] Frame 0
class Effects.CEffect_IdleSpecialAnim extends CEffect
{
var m_NeedsUpdate, m_runtime, m_duration, m_Borb, m_animIndex;
function CEffect_IdleSpecialAnim () {
super(CEffect.Type_IdleSpecialAnim);
m_NeedsUpdate = false;
m_runtime = 0;
m_duration = 0;
}
function OnIdleEffectInit() {
var _local8 = true;
var _local9 = CGame.TileSet;
var _local6 = _local9.GetActiveBorbsCount();
if (_local6 == 0) {
_local8 = false;
} else {
var _local5 = false;
var _local7 = _local9.GetActiveBorbsFixedArray();
var _local3 = 0;
while ((!_local5) && (_local3 < s_MaxTries)) {
var _local4 = Oberon.MathX.randRange(0, _local6 - 1);
m_Borb = SnoodHead(_local7[_local4]);
CDebug.Assert(m_Borb != null, "CEffect_IdleBlinkAnim.OnInit()", "null borb found");
var _local2 = s_idleEffects[m_Borb.__get__Color() - 1];
if (_local2.length > 0) {
m_animIndex = Oberon.MathX.randRange(0, _local2.length - 1);
if ((!m_Borb.IsEmoteAnimPlaying()) && (m_Borb.__get__PowerUp() == Constants.PowerUp_None)) {
m_duration = Number(s_idleEffectsDur[m_Borb.__get__Color() - 1][m_animIndex]);
if (m_Borb.PlayEmoteAnim(_local2[m_animIndex], true) != null) {
_local5 = true;
if (m_duration != null) {
m_NeedsUpdate = true;
} else {
m_Borb.EmoteCompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnAnimComplete));
}
}
}
}
_local3++;
}
if (!_local5) {
_local8 = false;
}
}
return(_local8);
}
function OnUpdate(i_forceFinish, i_deltaT) {
m_runtime = m_runtime + i_deltaT;
if (m_runtime > m_duration) {
if (m_Borb.GetEmoteAnim().m_ReverseOnComplete) {
m_Borb.CompleteEmoteAnim();
m_Borb.EmoteCompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnAnimComplete));
m_NeedsUpdate = false;
} else {
i_forceFinish = true;
}
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function OnAnimComplete() {
OnComplete();
}
function OnComplete() {
super.OnComplete();
if (m_Borb.IsEmoteAnimPlaying()) {
m_Borb.KillEmoteAnim();
}
}
static var s_MaxTries = 15;
static var s_idleEffects = [["happy", "sad"], ["sad"], ["happy", "sad"], ["happy", "sad", "special"], ["happy", "sad", "mad"], ["happy", "sadNoDir"], ["happy", "sad", "flirt"], ["happy", "sad", "mad", "creepy"], [], [], [], [], [], [], [], [], [], [], [], ["smirk", "angry", "angry shifty"], ["smirk", "angry"], ["smirk", "angry"], [], [], [], [], [], ["idle"], [], []];
static var s_idleEffectsDur = [[3, 3], [3, 3], [3, 3], [3, 3, null], [3, 3, 3], [3, 3], [3, 3], [3, 3, 3], [3], [3], [3], [3], [3], [3], [3], [3], [], [], [], [3, 3, null], [3, 3], [3, 3], [], [], [], [], [], [null], [], []];
}
Symbol 85 MovieClip [__Packages.Effects.CEffect_BubbleBubble] Frame 0
class Effects.CEffect_BubbleBubble extends CEffect
{
var m_state, m_head, m_targetColor, m_bBlocking, m_bubbleMc, m_frameTween, m_headAlphaTween;
function CEffect_BubbleBubble () {
super(CEffect.Type_BubbleBubble);
m_state = State_Idle;
}
function OnInit(i_head, i_targetColor) {
CGame.Sounds.PlaySound(Constants.__get__Sound_BubbleBubbleHit());
m_head = i_head;
m_targetColor = i_targetColor;
m_bBlocking = true;
m_state = State_Starting;
var _local3 = CCoord.ToLocal(i_head, CBoard.G.m_EffectsLayer);
var _local2 = CBoard.G.m_EffectsLayer.getNextHighestDepth();
m_bubbleMc = CBoard.G.m_EffectsLayer.attachMovie("BubbleBubbleAnim", "BubbleBubbleAnim" + _local2, _local2);
m_bubbleMc._x = _local3.X;
m_bubbleMc._y = _local3.Y;
m_bubbleMc._width = CBoard.G.m_TileSet.m_SnoodWidth * 1.2;
m_bubbleMc._yscale = m_bubbleMc._xscale;
m_frameTween = new Core.CTween(m_bubbleMc, "_currentframe", null, 1, m_bubbleMc._totalframes, 0.6, true);
m_headAlphaTween = new Core.CTween(m_head, "_alpha", null, 100, 0, 0.4, true);
return(true);
}
function OnUpdate(i_forceFinish, i_deltaT) {
if (((m_state == State_Starting) && (!m_frameTween.m_IsPlaying)) && (!m_headAlphaTween.m_IsPlaying)) {
m_state = State_Ending;
m_head.__set__Color(m_targetColor);
CGame.Board.ResyncColors();
m_frameTween = new Core.CTween(m_bubbleMc, "_currentframe", null, m_bubbleMc._totalframes, 1, 0.6, true);
m_headAlphaTween = new Core.CTween(m_head, "_alpha", null, 0, 100, 0.4, true);
}
if (((m_state == State_Ending) && (!m_frameTween.m_IsPlaying)) && (!m_headAlphaTween.m_IsPlaying)) {
m_bubbleMc.removeMovieClip();
i_forceFinish = true;
}
super.OnUpdate(i_forceFinish, i_deltaT);
}
function OnComplete() {
super.OnComplete();
m_bBlocking = false;
Level.TryDropSnoods(CGame.CurrentPlayer, false, false, true);
m_bubbleMc.removeMovieClip();
}
static var State_Idle = 1;
static var State_Starting = 2;
static var State_Ending = 3;
}
Symbol 86 MovieClip [__Packages.Effects.CEffect_Mine] Frame 0
class Effects.CEffect_Mine extends CEffect
{
var m_borb, m_explodeMc, m_coord, m_frameTween;
function CEffect_Mine () {
super(CEffect.Type_Mine);
m_iState = StateExploding;
}
function OnInit(borb) {
m_borb = borb;
CGame.Sounds.PlaySound(Constants.__get__Sound_Bomb());
var _local2 = m_borb.getNextHighestDepth();
m_explodeMc = m_borb.attachMovie("MineExplodeAnim", "MineExplodeAnim" + _local2, _local2);
CDebug.Assert(m_explodeMc != null, "CEffect_Mine.OnBoardEvent()", "couldn't attach explode Mc to " + m_borb);
m_coord = m_borb.GetGridCoord();
m_frameTween = new Core.CTween(m_explodeMc, "_currentframe", null, 1, m_explodeMc._totalframes, s_AnimDurationSec, true);
CGame.TileSet.SetTile(m_coord.X, m_coord.Y, null);
return(m_borb != null);
}
function OnUpdate(bForceComplete, i_deltaT) {
switch (m_iState) {
case StateExploding :
if (m_frameTween.GetPercentComplete() > 50) {
Explode();
}
break;
case StateExplodeCompleting :
if (m_frameTween.m_IsPlaying) {
break;
}
bForceComplete = true;
}
return(super.OnUpdate(bForceComplete, i_deltaT));
}
function Explode() {
var _local6 = CGame.TileSet.GetNeighborCoordsOfCoord(m_coord);
var _local7 = false;
var _local3 = 0;
while (_local3 < _local6.length) {
var _local5 = CCoord(_local6[_local3]);
var _local2 = CGame.TileSet.GetTileFromCoord(_local5);
if (_local2 != null) {
if (_local2.__get__PowerUp() == Constants.PowerUp_Mine) {
var _local4 = Effects.CEffect_Mine(CEffect.CreateEffect(CEffect.Type_Mine));
if (_local4.OnInit(_local2)) {
CGame.EffectMgr.AddEffectToActiveList(_local4);
}
} else {
Level.InvalidateSpot(_local2);
_local2.Vaporize();
}
}
_local3++;
}
m_iState = StateExplodeCompleting;
}
function OnComplete() {
super.OnComplete();
if (m_iState == StateExploding) {
Explode();
}
m_frameTween.Finish();
SnoodHead.ReturnToPool(m_borb);
Level.TryDropSnoods(CGame.CurrentPlayer, false, false, true);
m_explodeMc.removeMovieClip();
}
static var s_AnimDurationSec = 0.5;
static var StateExploding = 1;
static var StateExplodeCompleting = 2;
var m_iState = StateExploding;
}
Symbol 87 MovieClip [__Packages.Effects.CEffect_WinAnim] Frame 0
class Effects.CEffect_WinAnim extends CEffect
{
var m_runtime, m_State, m_waitStart, m_curIndex, m_bBlocking;
function CEffect_WinAnim () {
super(CEffect.Type_WinAnim);
m_runtime = 0;
m_State = State_Wait;
m_waitStart = null;
trace((GameState.GetBaseLevel() + ":") + GameState.IsCurrentArcadeModeBall());
if (GameState.GetBaseLevel() >= 10) {
if (GameState.IsCurrentArcadeModeBall()) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MajorBallLevelCompletion);
} else {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MajorVertLevelCompletion);
}
}
if (GameState.GetBaseLevel() >= 5) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_MinorLevelCompletion);
}
if (CGame.Board.m_AllShotsHaveBankBonus) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_ReboundWin);
}
m_curIndex = 0;
}
function OnInit() {
m_bBlocking = true;
CGame.EffectMgr.m_IdleAnimationsOn = true;
CGame.Board.SetEnabled(false);
var _local2 = CGame.TileSet;
Effects.CEffect_BorbDropAnim.StopAllEffects();
CGame.Board.StopSounds();
CGame.TileSet.DropAllHeads(true, true);
CGame.Board.m_Launcher.UpdateTracer();
new Core.CTween(CGame.Board.m_Launcher, "_alpha", null, CGame.Board.m_Launcher._alpha, 0, s_CannonFadeOutDur);
return(true);
}
function FinishVaporize() {
var _local2 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_BorbDropAnim);
var _local1 = 0;
while (_local1 < _local2.length) {
Effects.CEffect_BorbDropAnim(_local2[_local1]).Finish();
_local1++;
}
_local2 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_Vaporize);
_local1 = 0;
while (_local1 < _local2.length) {
Effects.CEffect_Vaporize(_local2[_local1]).Finish();
_local1++;
}
}
function OnUpdate(i_forceFinish, i_deltaT) {
m_runtime = m_runtime + i_deltaT;
if (m_State == State_Wait) {
if (m_runtime > s_PopDelay) {
CGame.Board.PopAllHeadAsBonus(s_MaxVaporizeDelay);
m_State = State_Pop;
}
} else if (m_State == State_Pop) {
if ((m_runtime > s_Timeout) || ((!Effects.CEffect_BorbDropAnim.AreEffectsActive()) && (!CGame.EffectMgr.IsEffectPlaying(CEffect.Type_Vaporize)))) {
GameState.Win();
m_State = State_Rain;
}
} else if (m_State == State_Rain) {
if (Oberon.MathX.randRange(0, s_RandPopFreq) == 0) {
if ((UI.CWinDlg(Core.DialogUtil.Top()) != null) && (UI.CWinDlg(Core.DialogUtil.Top()).FireworkMc != null)) {
var _local5 = Effects.CEffect_Firework(CEffect.CreateEffect(CEffect.Type_Firework));
var _local6 = CGame.TileSet.BoundingClip;
var _local4 = 400;
var _local3 = 300;
switch (Oberon.MathX.randRange(0, 3)) {
case 0 :
_local4 = Oberon.MathX.randRange(Constants.GameResX / 6, (4 * Constants.GameResX) / 6);
_local3 = Oberon.MathX.randRange(Constants.GameResY / 10, (2 * Constants.GameResY) / 10);
break;
case 1 :
_local4 = Oberon.MathX.randRange(Constants.GameResX / 6, (4 * Constants.GameResX) / 6);
_local3 = Constants.GameResY - Oberon.MathX.randRange(Constants.GameResY / 10, (2 * Constants.GameResY) / 10);
break;
case 2 :
_local4 = Oberon.MathX.randRange(Constants.GameResX / 10, (2 * Constants.GameResX) / 10);
_local3 = (Constants.GameResY / 6) + Oberon.MathX.randRange(0, (4 * Constants.GameResY) / 6);
break;
case 3 :
_local4 = Constants.GameResX - Oberon.MathX.randRange(Constants.GameResX / 10, (2 * Constants.GameResX) / 10);
_local3 = Oberon.MathX.randRange(Constants.GameResY / 6, (4 * Constants.GameResY) / 6);
}
if (_local5.OnInit(UI.CWinDlg(Core.DialogUtil.Top()).FireworkMc, _local4, _local3)) {
CGame.EffectMgr.AddEffectToActiveList(_local5);
}
}
}
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function OnComplete() {
super.OnComplete();
}
static var s_Rate = 2;
static var s_FollowMouseWithEyes = false;
static var s_RandPopFreq = 4;
static var s_MaxVaporizeDelay = 60;
static var s_Timeout = 10;
static var s_CannonFadeOutDur = 0.5;
static var s_PopDelay = 1;
static var State_Wait = 0;
static var State_Rain = 1;
static var State_Pop = 2;
static var s_AnimateTime = 5000;
}
Symbol 88 MovieClip [__Packages.UI.CWinDlg] Frame 0
class UI.CWinDlg extends CDialog
{
var FireworkMc, m_tweens, m_playDanceA, ScoreText, GameScoreText, m_nextLevelAnim, NextLevelAnim, BoardScoreLabelText, BoardScoreText, LumpScore, RubberLubberScore, JellyFishyScore, BossScore, DiveBarScore, HighScoreAnim;
function CWinDlg () {
super();
FireworkMc = null;
m_tweens = [];
m_danceTweens = [];
m_playDanceA = false;
m_origScore = CGame.CurrentPlayer.m_Score - CGame.Board.m_StartScore;
if (GameState.IsCurrentArcadeModeBall()) {
m_bonusMultiplier = Constants.BallBonusMod;
m_origScoreWithBonus = m_origScore * Constants.BallBonusMod;
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + (m_origScore * (Constants.BallBonusMod - 1));
} else {
m_bonusMultiplier = 1;
m_origScoreWithBonus = 0;
}
m_diveBarCount = CGame.Board.m_WinDiveBarDist;
m_diveBarPoints = m_diveBarCount * Constants.Score_DiveBarBonus;
m_lumpCount = CGame.Board.m_LumpsDropped;
m_lumpPoints = CGame.Board.m_LumpsDropped * Constants.Score_LumpDropBonus;
m_rubberLubberCount = CGame.Board.m_RubberLubberDropped;
m_rubberLubberPoints = CGame.Board.m_RubberLubberDropped * Constants.Score_RubberLubberDropBonus;
m_jellyFishyCount = CGame.Board.m_JellyFishyDropped;
m_jellyFishyPoints = CGame.Board.m_JellyFishyDropped * Constants.Score_JellyFishyDropBonus;
CGame.CurrentPlayer.m_Score = CGame.CurrentPlayer.m_Score + (((((m_lumpPoints * m_bonusMultiplier) + (m_diveBarPoints * m_bonusMultiplier)) + (m_rubberLubberPoints * m_bonusMultiplier)) + (m_jellyFishyPoints * m_bonusMultiplier)) + (m_bossPoints * m_bonusMultiplier));
}
function onLoad() {
super.onLoad();
FireworkMc = _root.createEmptyMovieClip("FIREWORKS_LAYER", _root.getNextHighestDepth());
CGame.Board.m_LockScoreUpdates = true;
ScoreText.text = CGame.CurrentPlayer.m_Score;
GameScoreText.text = String(CGame.Board.m_StartScore);
m_nextLevelAnim = MovieClip(NextLevelAnim);
m_nextLevelAnim.stop();
CDebug.Assert(m_nextLevelAnim != null, "CWinDlg.onLoad()", "Couldn't find next level anim");
var _local4 = s_InitDur;
var _local5 = new Core.CTween(BoardScoreLabelText, "_alpha", Core.CTween.DefaultMcTween, 0, 100, s_AlphaInDur, true, _local4);
m_tweens.push(_local5);
_local5 = new Core.CTween(BoardScoreText, "_alpha", Core.CTween.DefaultMcTween, 0, 100, s_AlphaInDur, true, _local4);
m_tweens.push(_local5);
_local4 = _local4 + (s_AlphaInDur + s_IncrDelay);
_local5 = new Core.CTween(this, "m_boardScore", Core.CTween.DefaultMcTween, 0, m_origScore, s_AlphaInDur, true, s_BoardScoreShowDur);
m_tweens.push(_local5);
_local5.onMotionChanged = mx.utils.Delegate.create(this, onBoardScoreChanged);
_local4 = _local4 + (s_BoardScoreShowDur + s_IncrDelay);
_local4 = _local4 + (doBonusTween(MovieClip(LumpScore), _local4, m_lumpCount, m_lumpPoints, s_BoardScoreShowDur, ((m_rubberLubberCount > 0) || (m_jellyFishyPoints > 0)) || (m_bossPoints > 0), m_origScore, CGame.Board.m_StartScore + (m_origScore * m_bonusMultiplier)) + s_IncrDelay);
_local4 = _local4 + (doBonusTween(MovieClip(RubberLubberScore), _local4, m_rubberLubberCount, m_rubberLubberPoints, s_BoardScoreShowDur, (m_jellyFishyPoints > 0) || (m_bossPoints > 0), m_origScore + m_lumpPoints, (CGame.Board.m_StartScore + m_origScore) + (m_lumpPoints * m_bonusMultiplier)) + s_IncrDelay);
_local4 = _local4 + (doBonusTween(MovieClip(JellyFishyScore), _local4, m_jellyFishyCount, m_jellyFishyPoints, s_BoardScoreShowDur, m_bossPoints > 0, (m_origScore + m_lumpPoints) + m_rubberLubberPoints, ((CGame.Board.m_StartScore + (m_origScore * m_bonusMultiplier)) + (m_lumpPoints * m_bonusMultiplier)) + (m_rubberLubberPoints * m_bonusMultiplier)) + s_IncrDelay);
_local4 = _local4 + (doBonusTween(MovieClip(BossScore), _local4, null, m_bossPoints, s_BoardScoreShowDur, false, ((m_origScore + m_lumpPoints) + m_rubberLubberPoints) + m_jellyFishyPoints, (((CGame.Board.m_StartScore + (m_origScore * m_bonusMultiplier)) + (m_lumpPoints * m_bonusMultiplier)) + (m_rubberLubberPoints * m_bonusMultiplier)) + (m_jellyFishyPoints * m_bonusMultiplier)) + s_IncrDelay);
_local4 = _local4 + (doBonusTween(MovieClip(DiveBarScore), _local4, m_diveBarCount, m_diveBarPoints, s_BoardScoreShowDur, false, (((m_origScore + m_lumpPoints) + m_rubberLubberPoints) + m_jellyFishyPoints) + m_bossPoints, ((((CGame.Board.m_StartScore + (m_origScore * m_bonusMultiplier)) + (m_lumpPoints * m_bonusMultiplier)) + (m_rubberLubberPoints * m_bonusMultiplier)) + (m_jellyFishyPoints * m_bonusMultiplier)) + (m_bossPoints * m_bonusMultiplier), mx.utils.Delegate.create(this, OnAllAnimComplete)) + s_IncrDelay);
}
function onBoardScoreChanged() {
BoardScoreText.text = String(m_boardScore);
GameScoreText.text = String(CGame.Board.m_StartScore + (m_boardScore * m_bonusMultiplier));
}
function doBonusTween(i_mc, i_tweenDelay, i_count, i_points, i_dur, i_fadeOut, i_boardScoreStart, i_totalScoreStart, i_callback) {
var _local2 = 0;
i_mc._visible = false;
if (((i_count != null) && (i_count == 0)) || (i_points == 0)) {
return(_local2);
}
i_mc._alpha = 0;
var _local6 = new Core.CTween(i_mc, "_alpha", Core.CTween.DefaultMcTween, 0, 100, s_AlphaInDur, true, i_tweenDelay);
_local6.onMotionChanged = mx.utils.Delegate.create(this, updateAlpha);
m_tweens.push(_local6);
_local2 = _local2 + (s_AlphaInDur + s_IncrDelay);
_local6 = new Core.CTween(i_mc, "count", Core.CTween.DefaultMcTween, 0, i_count, s_CountDur, true, i_tweenDelay + _local2);
_local6.onMotionChanged = mx.utils.Delegate.create(this, updateTextCount);
m_tweens.push(_local6);
_local6 = new Core.CTween(i_mc, "points", Core.CTween.DefaultMcTween, 0, i_points, s_CountDur, true, i_tweenDelay + _local2);
_local6.onMotionChanged = mx.utils.Delegate.create(this, updateTextPoints);
m_tweens.push(_local6);
_local6 = new Core.CTween(this, "boardPoints", Core.CTween.DefaultMcTween, i_boardScoreStart, i_boardScoreStart + i_points, s_CountDur, true, i_tweenDelay + _local2);
_local6.onMotionChanged = mx.utils.Delegate.create(this, updateTextBoardScore);
m_tweens.push(_local6);
_local6 = new Core.CTween(this, "totalPoints", Core.CTween.DefaultMcTween, i_totalScoreStart, i_totalScoreStart + (i_points * m_bonusMultiplier), s_CountDur, true, i_tweenDelay + _local2);
_local6.onMotionChanged = mx.utils.Delegate.create(this, updateTextTotalScore);
m_tweens.push(_local6);
_local2 = _local2 + (s_CountDur + s_IncrDelay);
if (i_fadeOut) {
_local6 = new Core.CTween(i_mc, "_alpha", Core.CTween.DefaultMcTween, 100, 0, s_AlphaInDur / 2, true, i_tweenDelay + _local2);
m_tweens.push(_local6);
_local2 = _local2 + (s_AlphaInDur / 2);
}
if (i_callback != null) {
_local6.onMotionFinished = i_callback;
}
return(_local2);
}
function updateAlpha(i_tween) {
i_tween.m_Obj._visible = i_tween.m_Obj._alpha > 0;
}
function updateTextPoints(i_tween) {
TextField(i_tween.m_Obj.PointsText).text = String(i_tween.GetPosition());
}
function updateTextCount(i_tween) {
TextField(i_tween.m_Obj.CountText).text = String(i_tween.GetPosition());
}
function updateTextBoardScore(i_tween) {
BoardScoreText.text = String(i_tween.GetPosition());
}
function updateTextTotalScore(i_tween) {
TextField(i_tween.m_Obj.GameScoreText).text = String(i_tween.GetPosition());
}
function onRegister(i_context) {
super.onRegister(i_context);
if (Core.CUIComponent(i_context) != null) {
var _local5 = Core.CUIComponent(i_context);
var _local3 = null;
var _local4 = false;
switch (_local5.__get__Name()) {
case "Dance1" :
_local4 = true;
case "Dance1B" :
_local3 = 0;
break;
case "Dance2" :
_local4 = true;
case "Dance2B" :
_local3 = 1;
break;
case "Dance3" :
_local4 = true;
case "Dance3B" :
_local3 = 2;
break;
case "Dance4" :
_local4 = true;
case "Dance4B" :
_local3 = 3;
break;
case "Dance5" :
_local4 = true;
case "Dance5B" :
_local3 = 4;
break;
case "Dance6" :
_local4 = true;
case "Dance6B" :
_local3 = 5;
}
if (_local3 != null) {
var _local6 = SnoodHead(_local5.Head);
CDebug.Assert(_local6 != null, "CWinDlg.onRegister()", "Couldn't find head on index " + _local3);
if ((_local4 && (m_playDanceA)) || ((!_local4) && (!m_playDanceA))) {
_local6.SetColor((_local3 % Constants.Snood_HeadCount) + 1);
Oberon.CEnterFrameEvent.AddEvent(_local6, mx.utils.Delegate.create(this, onDanceBorbEnterFrame), true);
_local5.gotoAndStop(1);
var _local7 = new Core.CTween(_local5, "_currentframe", null, 1, _local5._totalframes, (m_playDanceA ? (s_DanceASpeed) : (s_DanceBSpeed)), true, 1 + (s_DanceDelay * _local3));
_local7.m_LoopNoDelay = true;
_local7.m_Looping = true;
m_danceTweens.push(_local7);
} else {
_local5.stop();
_local5._visible = false;
}
}
}
return(true);
}
function onDanceBorbEnterFrame(i_context) {
SnoodHead(i_context).PlayEmoteAnim("happy", true);
}
function PlayHighScoreAnim() {
m_shouldPlayHighScoreAnim = true;
}
function playHighScoreAnimWhenReady() {
Core.FrameAdvancer(HighScoreAnim).play();
}
function IsAnimating() {
var _local3 = false;
var _local2 = 0;
while ((!_local3) && (_local2 < m_tweens.length)) {
_local3 = Core.CTween(m_tweens[_local2]).m_IsPlaying;
_local2++;
}
return(_local3);
}
function OnMouseDown() {
FinishAnims();
}
function FinishAnims() {
var _local2 = 0;
while (_local2 < m_tweens.length) {
if (Core.CTween(m_tweens[_local2]).m_IsPlaying) {
Core.CTween(m_tweens[_local2]).Finish();
}
_local2++;
}
}
function Close() {
super.Close();
var _local3 = 0;
while (_local3 < m_tweens.length) {
Core.CTween(m_tweens[_local3]).StopUpdates();
_local3++;
}
var _local4 = CGame.EffectMgr.GetAllEffectsOfType(CEffect.Type_WinAnim);
_local3 = 0;
while (_local3 < _local4.length) {
Effects.CEffect_WinAnim(_local4[_local3]).Finish();
_local3++;
}
if (FireworkMc != null) {
FireworkMc.removeMovieClip();
}
}
function DoDefaultCancelAction() {
DoDefaultOkAction();
}
function DoDefaultOkAction() {
if (IsAnimating()) {
FinishAnims();
} else {
DoNextLevel();
}
}
function DoNextLevel() {
CPachinko.GameBreak();
}
function OnAllAnimComplete() {
if (m_shouldPlayHighScoreAnim) {
playHighScoreAnimWhenReady();
}
CGame.Board.m_LockScoreUpdates = false;
}
static var s_InitDur = 0.3;
static var s_AlphaInDur = 0.3;
static var s_IncrDelay = 0.1;
static var s_BoardScoreShowDur = 1;
static var s_CountDur = 1;
static var s_DanceASpeed = 3;
static var s_DanceBSpeed = 1;
static var s_DanceDelay = 0.16;
var m_danceTweens = [];
var m_boardScore = 0;
var m_curScore = 0;
var m_lumpPoints = 0;
var m_lumpCount = 0;
var m_jellyFishyPoints = 0;
var m_jellyFishyCount = 0;
var m_rubberLubberPoints = 0;
var m_rubberLubberCount = 0;
var m_bossPoints = 0;
var m_bonusMultiplier = 1;
var m_diveBarPoints = 0;
var m_diveBarCount = 0;
var m_origScore = 0;
var m_origScoreWithBonus = 0;
var m_shouldPlayHighScoreAnim = false;
}
Symbol 89 MovieClip [__Packages.Effects.CEffect_Firework] Frame 0
class Effects.CEffect_Firework extends CEffect
{
var m_particles, m_type, m_mainMc, m_ColorR, m_ColorG, m_ColorB, m_particleFrames;
function CEffect_Firework () {
super(CEffect.Type_Firework);
m_particles = [];
m_type = 0;
}
function typeToParticleMcSymName(i_type) {
switch (i_type) {
case Type_Small1 :
return("FireworkSmall1");
case Type_Small2 :
return("FireworkSmall2");
case Type_Small3 :
return("FireworkSmall3");
case Type_Small4 :
return("FireworkSmall4");
case Type_Small5 :
return("FireworkSmall5");
}
}
function OnInit(i_parentMc, i_x, i_y, i_duration, i_type) {
if (s_EffectsCount >= s_MaxEffects) {
return(false);
}
s_EffectsCount++;
if (i_type == null) {
var _local5 = Oberon.MathX.randRange(0, 100);
var _local7 = s_RandTypeVariancePct.length;
var _local3 = 0;
while ((_local3 < _local7) && (_local5 >= 0)) {
_local5 = _local5 - s_RandTypeVariancePct[_local3];
_local3++;
}
m_type = _local3 - 1;
} else {
m_type = i_type;
}
if (i_duration != null) {
m_duration = i_duration;
} else {
m_duration = s_DurBase + ((s_DurBase * Oberon.MathX.randRange(0, s_MaxDurVariancePct)) / 100);
}
var _local10 = i_parentMc.getNextHighestDepth();
m_mainMc = i_parentMc.createEmptyMovieClip("firework" + _local10, _local10);
m_mainMc._x = i_x;
m_mainMc._y = i_y;
var _local11 = new Color(m_mainMc);
m_ColorR = Oberon.MathX.randRange(200, 255);
m_ColorG = Oberon.MathX.randRange(40, 255);
m_ColorB = Oberon.MathX.randRange(40, 255);
Object(_local11).setTint(m_ColorR, m_ColorG, m_ColorB, s_TintStrength);
var _local8 = typeToParticleMcSymName(m_type);
var _local6 = s_PartBase + int((s_PartBase * s_MaxPartVariancePct) / 100);
m_particles = new Array(_local6);
var _local9 = i_parentMc.attachMovie("FireworkFlash", "flash", _local10 + 1);
_local9._x = i_x;
_local9._y = i_y;
_local9._rotation = random(360);
_local11 = new Color(_local9);
Object(_local11).setTint(m_ColorR, m_ColorG, m_ColorB, 100);
m_mainMc.blendMode = MovieClip.BlendModeType.ADD;
var _local2 = null;
var _local3 = 2;
while (_local3 < (_local6 + 2)) {
if (_local2 == null) {
_local2 = m_mainMc.attachMovie(_local8, "fw" + _local3, _local3);
m_particleFrames = _local2._totalframes;
} else {
_local2 = _local2.duplicateMovieClip("fw" + _local3, _local3);
}
_local2.blendMode = MovieClip.BlendModeType.ADD;
_local2._rotation = int(random(360));
var _local4 = s_ScaleBase + int(random(s_MaxScaleVariancePct * 2));
_local2._xscale = _local4;
_local2._yscale = _local4;
_local2.gotoAndStop(Oberon.MathX.randRange(1, 5));
m_particles[_local3] = _local2;
_local3++;
}
m_frameTween = new Core.CTween(this, "m_curFrame", EaseOut, 1, m_particleFrames, m_duration);
m_frameTween.onMotionChanged = mx.utils.Delegate.create(this, onFrameUpdate);
m_frameTween.onMotionFinished = mx.utils.Delegate.create(this, onFrameFinished);
return(true);
}
function onFrameUpdate() {
if (m_lastFrame != m_curFrame) {
var _local5 = m_curFrame - m_lastFrame;
var _local6 = m_curFrame / m_particleFrames;
var _local4 = m_particles.length;
var _local3 = 0;
while (_local3 < _local4) {
var _local2 = m_particles[_local3];
_local2.gotoAndStop(Math.min(_local2._currentframe + _local5, _local2._totalframes));
_local3++;
}
if (s_DoEndTint && (_local6 > 0.5)) {
var _local7 = new Color(m_mainMc);
Object(_local7).reset();
_local7 = new Color(m_mainMc);
Object(_local7).setTint(m_ColorR, int(m_ColorG * (1 - (_local6 - 0.5))), int(m_ColorB * (1 - (_local6 - 0.5))), s_TintStrength);
}
m_lastFrame = m_curFrame;
}
}
function onFrameFinished() {
m_frameTween.StopUpdates();
m_frameTween = null;
OnComplete();
}
function OnComplete() {
super.OnComplete();
if (m_frameTween != null) {
m_frameTween.StopUpdates();
}
s_EffectsCount--;
m_mainMc.removeMovieClip();
}
static function EaseOut(t, b, c, d) {
t = t / d;
return(int((((-c) * t) * (t - 2)) + b));
}
static var s_TintStrength = 80;
static var s_MaxEffects = 3;
static var s_DoEndTint = false;
static var s_DurBase = 1.5;
static var s_PartBase = 40;
static var s_ScaleBase = 40;
static var s_MaxDurVariancePct = 40;
static var s_MaxScaleVariancePct = 40;
static var s_MaxPartVariancePct = 40;
static var s_RandTypeVariancePct = [25, 30, 15, 15, 15];
static var Type_Small1 = 0;
static var Type_Small2 = 1;
static var Type_Small3 = 2;
static var Type_Small4 = 3;
static var Type_Small5 = 4;
static var Type_Count = 5;
static var s_EffectsCount = 0;
var m_duration = 1;
var m_lastFrame = 1;
var m_curFrame = 1;
var m_frameTween = null;
}
Symbol 90 MovieClip [__Packages.Effects.CEffect_LoseAnim] Frame 0
class Effects.CEffect_LoseAnim extends CEffect
{
var m_yTweens, m_runtime, m_lastRuntime, m_offsetY, m_state, m_emoteHeads, m_heads, m_idleHeads, m_shakeEffects, m_bBlocking;
function CEffect_LoseAnim () {
super(CEffect.Type_LoseAnim);
m_yTweens = [];
m_runtime = 0;
m_lastRuntime = 0;
m_offsetY = 0;
m_state = State_Fade;
m_emoteHeads = [];
m_heads = [];
m_idleHeads = [];
m_shakeEffects = [];
}
function OnInit() {
m_bBlocking = true;
CGame.EffectMgr.m_IdleAnimationsOn = false;
var _local8 = CGame.TileSet.GetActiveBorbsCount();
var _local7 = CGame.TileSet.GetActiveBorbsFixedArray();
m_offsetY = CGame.TileSet._y - CGame.TileSet.m_OrigCoord.Y;
var _local6 = 0;
while (_local6 < _local8) {
var _local4 = SnoodHead(_local7[_local6]);
if (_local4.__get__Color() <= Constants.Snood_HeadCount) {
m_heads.push(_local4);
m_idleHeads.push(_local4);
if (_local4.__get__PowerUp() == Constants.PowerUp_Lock) {
_local4.SetPowerUp(Constants.PowerUp_None);
} else {
_local4.KillEmoteAnim();
}
} else if ((_local4.__get__Color() >= Constants.Snood_LumpStart) && (_local4.__get__Color() <= Constants.Snood_LumpEnd)) {
_local4.KillEmoteAnim();
_local4.PlayEmoteAnim("smirk", true);
}
_local6++;
}
_local6 = 0;
while (_local6 < Level.m_LosePieces.length) {
var _local2 = SnoodHead(Level.m_LosePieces[_local6]);
new Core.CTween(_local2, "_xscale", null, _local2._xscale, _local2._xscale * 1.5, s_LosePieceTransDur);
new Core.CTween(_local2, "_yscale", null, _local2._yscale, _local2._yscale * 1.5, s_LosePieceTransDur);
_local2.KillEmoteAnim();
if (_local2.__get__Color() == Constants.Snood_Sandy) {
_local2.PlayEmoteAnim("creepy", true);
} else if (_local2.__get__Color() == Constants.Snood_Star) {
_local2.PlayEmoteAnim("sadNoDir", true);
} else {
_local2.PlayEmoteAnim("sad", true);
}
new Core.CTween(_local2, "_alpha", null, _local2._alpha, 0, s_LosePieceTransDur);
var _local5 = _local2.ToInfo();
_local5.PowerUp = Constants.PowerUp_None;
_local5.Orb = false;
var _local3 = SnoodHead.GetAndRemoveFromPool(_local5);
_local3.SetColor(Oberon.MathX.randRange(Constants.Snood_LumpStart, Constants.Snood_LumpEnd));
_local3._x = _local2._x;
_local3._y = _local2._y;
new Core.CTween(_local3, "_xscale", null, _local3._xscale, _local3._xscale * 1.5, s_LosePieceTransDur);
new Core.CTween(_local3, "_yscale", null, _local3._yscale, _local3._yscale * 1.5, s_LosePieceTransDur);
new Core.CTween(_local3, "_alpha", null, 0, 100, s_LosePieceTransDur);
_local6++;
}
CGame.Board.SetEnabled(false);
CGame.Sounds.PlaySound(Constants.__get__Sound_Lose());
CGame.Board.SetEnabled(false);
return(true);
}
function OnUpdate(i_forceFinish, i_deltaT) {
SnoodHead.DbgClearTextOnAllSnoods();
var _local13 = int((m_runtime - m_lastRuntime) / (1 / Constants.Fps));
if (_local13 > 0) {
m_lastRuntime = m_runtime;
}
m_runtime = m_runtime + i_deltaT;
var _local5 = int((m_runtime - m_lastRuntime) / (1 / Constants.Fps));
if (m_state == State_Fade) {
if (m_runtime >= s_FadeDuration) {
m_state = State_Pop;
} else {
var _local9 = 1 - (m_runtime / s_FadeDuration);
var _local11 = new Array(4);
_local11 = new Array();
_local11 = _local11.concat(applySaturation([1, 0, 0, 0, 0], _local9), applySaturation([0, 1, 0, 0, 0], _local9), applySaturation([0, 0, 1, 0, 0], _local9), [0, 0, 0, 1, 0]);
var _local6 = new flash.filters.ColorMatrixFilter(_local11);
var _local3 = 0;
while (_local3 < m_heads.length) {
SnoodHead(m_heads[_local3]).filters = [_local6];
_local3++;
}
}
var _local4 = Oberon.MathX.randRange(s_MinEmote * _local5, s_MaxEmote * _local5);
var _local3 = 0;
while ((m_idleHeads.length > 0) && (_local3 < _local4)) {
addSadEmote();
_local3++;
}
} else if (m_state == State_Pop) {
var _local4 = Oberon.MathX.randRange(s_MinEmote * _local5, s_MaxEmote * _local5);
var _local3 = 0;
while ((m_idleHeads.length > 0) && (_local3 < _local4)) {
addSadEmote();
_local3++;
}
_local4 = Oberon.MathX.randRange(s_MinShake * _local5, s_MaxShake * _local5);
_local3 = 0;
while ((m_emoteHeads.length > 0) && (_local3 < _local4)) {
addShake();
_local3++;
}
} else if (m_state == State_LumpDrop) {
if ((false && (CGame.m_AppActive)) && (Oberon.MathX.randRange(0, s_RandPopFreq) == 0)) {
var _local8 = SnoodHead.GetAndRemoveFromPool(new CBorbInfo(Oberon.MathX.randRange(Constants.Snood_LumpStart, Constants.Snood_LumpEnd)), SnoodHead.Size_Med);
CDebug.Assert(_local8 != null, "CEffect_WinAnim.OnUpdate()", "Couldn't create borb");
var _local10 = SnoodHead.SizeToGridWidth(SnoodHead.Size_Med);
var _local7 = CGame.Board.GetBoundingClip();
_local8._x = Oberon.MathX.randRange(int(_local7._x + (_local10 / 2)), int((_local7._x + _local7._width) - (_local10 / 2)));
var _local12 = new Core.CTween(_local8, "_y", mx.transitions.easing.Strong.easeIn, (-_local10) - m_offsetY, (_local7._y + _local7._height) - Oberon.MathX.randRange(s_RainMinY, s_RainMaxY), s_RandPopDur, true);
_local12.onMotionFinished = mx.utils.Delegate.create(this, onYPopTweenFinished);
m_yTweens.push(_local12);
}
}
if ((m_state != State_LumpDrop) && (m_runtime > s_Duration)) {
StartLumpDrop();
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function StartLumpDrop() {
GameState.Lose();
m_state = State_LumpDrop;
}
function OnEmoteComplete(i_borb) {
var _local2 = Effects.CEffect_ShakeAnim(CEffect.CreateEffect(CEffect.Type_ShakeAnim));
if (_local2.OnInit(i_borb, s_ShakeDuration, 0)) {
CGame.EffectMgr.AddEffectToActiveList(_local2);
_local2.m_CompleteEvent.PushBehaviorRunOnce(mx.utils.Delegate.create(this, OnShakeComplete));
m_shakeEffects.push(_local2);
}
}
function OnShakeComplete(i_effect) {
var _local4 = Effects.CEffect_ShakeAnim(i_effect);
var _local3 = _local4.m_Borb;
Level.InvalidateSpot(_local3);
_local3.Vaporize();
var _local2 = Oberon.ArrayX.IndexOf(m_shakeEffects, i_effect);
if (_local2 != -1) {
m_shakeEffects.splice(_local2, 1);
}
CDebug.Assert(_local2 != -1, "LoseAnim.OnShakeCOmplete()", "COuldn't find shake anim");
}
function OnComplete() {
super.OnComplete();
var _local3 = 0;
while (_local3 < m_yTweens.length) {
SnoodHead(Core.CTween(m_yTweens[_local3]).m_Obj).ReturnToPool();
Core.CTween(m_yTweens[_local3]).StopUpdates();
_local3++;
}
}
function addSadEmote() {
var _local5 = Oberon.MathX.randRange(0, m_idleHeads.length - 1);
var _local4 = false;
var _local2 = _local5;
while ((!_local4) && (_local2 < m_idleHeads.length)) {
var _local3 = SnoodHead(m_idleHeads[_local2]);
if (!_local3.IsEmoteAnimPlaying()) {
if (_local3.__get__Color() == Constants.Snood_Sandy) {
_local3.PlayEmoteAnim("creepy", true);
} else if (_local3.__get__Color() == Constants.Snood_Star) {
_local3.PlayEmoteAnim("sadNoDir", true);
} else {
_local3.PlayEmoteAnim("sad", true);
}
m_idleHeads.splice(_local2, 1);
_local2--;
m_emoteHeads.push(_local3);
_local4 = true;
}
if (!_local4) {
_local2++;
if (_local2 == m_idleHeads.length) {
_local2 = 0;
}
if (_local2 == _local5) {
_local4 = true;
}
}
}
}
function addShake() {
var _local6 = Oberon.MathX.randRange(0, m_emoteHeads.length - 1);
var _local3 = false;
var _local2 = _local6;
while ((!_local3) && (_local2 < m_emoteHeads.length)) {
var _local4 = SnoodHead(m_emoteHeads[_local2]);
var _local5 = _local4.GetEmoteAnim();
if (_local5.m_FrameTween == null) {
m_emoteHeads.splice(_local2, 1);
_local2--;
OnEmoteComplete(_local4);
_local3 = true;
}
if (!_local3) {
_local2++;
if (_local2 == m_emoteHeads.length) {
_local2 = 0;
}
if (_local2 == _local6) {
_local3 = true;
}
}
}
}
function onYPopTweenFinished(i_tween) {
m_yTweens = Oberon.ArrayX.RemoveFrom(m_yTweens, i_tween);
SnoodHead(i_tween.m_Obj).Vaporize(true);
}
function applySaturation(i_matrix, i_saturation) {
var _local4 = new Array(5);
var _local1 = 0;
while (_local1 < 5) {
var _local2 = s_GrayMatrix[_local1];
var _local3 = i_matrix[_local1];
_local4[_local1] = _local2 + ((_local3 - _local2) * i_saturation);
_local1++;
}
return(_local4);
}
static var s_Duration = 7;
static var s_RandPopDur = 2;
static var s_FadeDuration = 1;
static var s_ShakeDuration = 1;
static var s_MinEmote = 0;
static var s_MaxEmote = 2;
static var s_MinShake = 0;
static var s_MaxShake = 1;
static var s_LosePieceTransDur = 1;
static var s_RandPopFreq = 4;
static var s_RainMinY = 50;
static var s_RainMaxY = 450;
static var s_GrayMatrix = [0.3, 0.59, 0.11, 0, 0];
static var State_Fade = 0;
static var State_Pop = 1;
static var State_Dump = 2;
static var State_LumpDrop = 3;
}
Symbol 91 MovieClip [__Packages.mx.transitions.easing.Strong] Frame 0
class mx.transitions.easing.Strong
{
function Strong () {
}
static function easeIn(t, b, c, d) {
t = t / d;
return((((((c * t) * t) * t) * t) * t) + b);
}
static function easeOut(t, b, c, d) {
t = (t / d) - 1;
return((c * (((((t * t) * t) * t) * t) + 1)) + b);
}
static function easeInOut(t, b, c, d) {
t = t / (d / 2);
if (t < 1) {
return(((((((c / 2) * t) * t) * t) * t) * t) + b);
}
t = t - 2;
return(((c / 2) * (((((t * t) * t) * t) * t) + 2)) + b);
}
static var version = "1.1.0.52";
}
Symbol 92 MovieClip [__Packages.Effects.CEffect_ShakeAnim] Frame 0
class Effects.CEffect_ShakeAnim extends CEffect
{
var m_Elapsed, m_Delay, m_Duration, m_Borb, m_origCoord;
function CEffect_ShakeAnim () {
super(CEffect.Type_ShakeAnim);
}
function OnInit(i_borb, i_duration, i_delay) {
var _local2 = true;
m_Elapsed = 0;
if (i_delay == null) {
m_Delay = s_Delay;
} else {
m_Delay = i_delay;
}
if (i_duration == null) {
m_Duration = m_Delay + s_Duration;
} else {
m_Duration = i_duration;
}
m_Borb = i_borb;
m_origCoord = new CCoord(i_borb._x, i_borb._y);
return(_local2);
}
function OnUpdate(i_forceFinish, i_deltaT) {
m_Elapsed = m_Elapsed + i_deltaT;
if (m_Elapsed > m_Duration) {
i_forceFinish = true;
} else if (m_Elapsed > m_Delay) {
m_Borb._x = m_origCoord.X + Oberon.MathX.randRange(-s_Magnitude, s_Magnitude);
m_Borb._y = m_origCoord.Y + Oberon.MathX.randRange(-s_Magnitude, s_Magnitude);
}
super.OnUpdate(i_forceFinish, i_deltaT);
}
function OnComplete() {
super.OnComplete();
m_Borb._x = m_origCoord.X;
m_Borb._y = m_origCoord.Y;
}
static var s_Delay = 0;
static var s_Duration = 2;
static var s_Magnitude = 1;
}
Symbol 93 MovieClip [__Packages.Effects.CEffect_FlyTo] Frame 0
class Effects.CEffect_FlyTo extends CEffect
{
var m_NeedsUpdate, m_Mc, m_Dest, m_xTween, m_yTween;
function CEffect_FlyTo () {
super(CEffect.Type_FlyTo);
m_NeedsUpdate = false;
}
function OnInit(i_mc, i_destCoord, i_duration, i_easingFuncX, i_easingFuncY) {
m_Mc = i_mc;
m_Dest = i_destCoord.Clone();
if (m_Mc != null) {
var _local3 = ((i_easingFuncX != null) ? (i_easingFuncX) : (mx.transitions.easing.Regular.easeOut));
var _local4 = ((i_easingFuncY != null) ? (i_easingFuncY) : (mx.transitions.easing.Regular.easeOut));
m_xTween = new Core.CTween(m_Mc, "_x", _local3, m_Mc._x, m_Dest.X, i_duration);
m_yTween = new Core.CTween(m_Mc, "_y", _local4, m_Mc._y, m_Dest.Y, i_duration);
var _local2 = mx.utils.Delegate.create(this, OnTweenComplete);
m_xTween.onMotionFinished = _local2;
m_yTween.onMotionFinished = _local2;
return(true);
}
return(false);
}
function OnTweenComplete() {
if ((!m_xTween.m_IsPlaying) && (!m_yTween.m_IsPlaying)) {
OnComplete();
}
}
function OnComplete() {
super.OnComplete();
if (m_xTween.m_IsPlaying) {
m_xTween.Finish();
}
if (m_yTween.m_IsPlaying) {
m_yTween.Finish();
}
}
}
Symbol 94 MovieClip [__Packages.Effects.CEffect_BorbFadeOut] Frame 0
class Effects.CEffect_BorbFadeOut extends CEffect
{
var m_head, m_bBlocking, m_headAlphaTween;
function CEffect_BorbFadeOut () {
super(CEffect.Type_BorbFadeOut);
}
function OnInit(i_head) {
m_head = i_head;
m_bBlocking = true;
Level.InvalidateSpot(m_head);
m_headAlphaTween = new Core.CTween(m_head, "_alpha", null, 100, 0, 0.6, true);
return(true);
}
function OnUpdate(i_forceFinish, i_deltaT) {
if (!m_headAlphaTween.m_IsPlaying) {
i_forceFinish = true;
}
super.OnUpdate(i_forceFinish, i_deltaT);
}
function OnComplete() {
super.OnComplete();
m_head.RemoveFromBoard();
m_bBlocking = false;
Level.DoDropSnoods();
}
static var State_Idle = 1;
static var State_Starting = 2;
static var State_Ending = 3;
}
Symbol 95 MovieClip [__Packages.Effects.CEffect_StartAnim] Frame 0
class Effects.CEffect_StartAnim extends CEffect
{
var m_runtime, m_state, m_updateCount, m_duration, m_bBlocking, m_launcherFadeInAnim, m_startAnimTween, m_origTileSetPos, m_animStartTileSetPos;
function CEffect_StartAnim () {
super(CEffect.Type_StartAnim);
m_runtime = 0;
m_state = State_Waiting;
m_updateCount = 0;
m_duration = 0;
}
function OnInit() {
m_bBlocking = true;
CGame.EffectMgr.m_IdleAnimationsOn = false;
CGame.TileSet._visible = false;
CGame.Board.m_Launcher._alpha = 0;
m_launcherFadeInAnim = new Core.CTween(CGame.Board.m_Launcher, "_alpha", null, 0, 100, s_CannonFadeInDur);
return(true);
}
function OnUpdate(i_forceFinish, i_deltaT) {
if (i_forceFinish) {
m_startAnimTween.Finish();
}
if (m_state == State_Waiting) {
m_updateCount++;
if (m_updateCount == 1) {
CGame.TileSet.cacheAsBitmap = true;
m_origTileSetPos = int(CGame.TileSet._y);
m_animStartTileSetPos = int((-CGame.TileSet._height) - 30);
CGame.TileSet._y = m_animStartTileSetPos;
CGame.TileSet._visible = true;
} else if (m_updateCount >= s_FrameWaitCount) {
Core.DialogUtil.Pop(Constants.Dialog_BoardLoading);
CGame.TileSet.UpdateBoundingBox(true);
m_animStartTileSetPos = int((-(CGame.TileSet.m_bbox.m_extentsU * 2)) - 20);
CGame.TileSet._y = m_animStartTileSetPos;
m_duration = Math.abs(m_animStartTileSetPos * s_DurationConst);
m_state = State_BeginAnim;
}
} else if (m_state == State_BeginAnim) {
var _local4 = CGame.Board.m_LevelTextAnim;
m_startAnimTween = new Core.CTween(_local4, "_currentframe", null, 1, _local4._totalframes, s_StartAnimDuration);
m_state = State_Playing;
} else if (m_state == State_Playing) {
m_runtime = m_runtime + i_deltaT;
if (m_runtime < s_Delay) {
} else if (m_runtime < (m_duration + s_Delay)) {
CGame.TileSet._y = m_animStartTileSetPos + int(((m_runtime - s_Delay) * (m_origTileSetPos - m_animStartTileSetPos)) / m_duration);
} else {
CGame.TileSet._y = m_origTileSetPos;
i_forceFinish = true;
}
} else if (m_state == State_Cutscene) {
var _local5 = CDialog(Core.DialogUtil.Top());
if (_local5.Name == "CBoardDlg") {
i_forceFinish = true;
}
}
return(super.OnUpdate(i_forceFinish, i_deltaT));
}
function OnComplete() {
super.OnComplete();
if (Core.DialogUtil.Top() != CGame.Board.OwnerDlg) {
Core.DialogUtil.Pop(Constants.Dialog_BoardLoading);
}
m_launcherFadeInAnim.Finish();
CGame.TileSet._y = m_origTileSetPos;
CGame.TileSet.cacheAsBitmap = false;
CGame.Board.OnRevealFinished();
}
static var s_DurationConst = 0.002;
static var s_Delay = 0.1;
static var s_FrameWaitCount = 10;
static var s_StartAnimDuration = 2.5;
static var s_CannonFadeInDur = 0.5;
static var State_Waiting = 0;
static var State_Cutscene = 1;
static var State_Playing = 2;
static var State_BeginAnim = 3;
}
Symbol 96 MovieClip [__Packages.Effects.CEffect_HypnoBorb] Frame 0
class Effects.CEffect_HypnoBorb extends CEffect
{
var m_NeedsUpdate, m_Immediate, m_Borb, m_FrameTween, m_HypnoBorbMc, m_bReadyForDelete;
function CEffect_HypnoBorb () {
super(CEffect.Type_HypnoBorb);
m_NeedsUpdate = false;
m_Immediate = false;
}
function OnInit(i_borb) {
m_Borb = i_borb;
var _local3 = CGame.Board.m_EffectsLayer;
var _local4 = _local3.getNextHighestDepth();
var _local2 = _local3.attachMovie("HypnoBorbTargetAnim", "HypnoBorbTargetAnim" + _local4, _local4);
_local2.stop();
_local2._xscale = CGame.TileSet.m_SnoodScale;
_local2._yscale = CGame.TileSet.m_SnoodScale;
_local2._x = m_Borb._x;
_local2._y = m_Borb._y;
m_FrameTween = new Core.CTween(_local2, "_currentframe", null, 1, _local2._totalframes, _local2._totalframes / Constants.Fps, true, Oberon.MathX.randRange(0, 6) / 10);
m_FrameTween.onMotionFinished = mx.utils.Delegate.create(this, onTweenComplete);
return(m_FrameTween != null);
}
function onTweenComplete() {
MovieClip(m_FrameTween.m_Obj).removeMovieClip();
m_HypnoBorbMc.removeMovieClip();
m_HypnoBorbMc = null;
if (!m_Borb.IsInPool()) {
m_Borb.SetPowerUp(Constants.PowerUp_Hypnosis);
}
m_bReadyForDelete = true;
}
function OnComplete() {
super.OnComplete();
if (m_FrameTween.m_IsPlaying) {
m_FrameTween.Finish();
}
}
static var s_MaxHypnoBorbDelay = 15;
}
Symbol 97 MovieClip [__Packages.Core.CTip] Frame 0
class Core.CTip extends Core.CUIComponent
{
var _alpha, cacheAsBitmap, m_alphaTween, useHandCursor, m_TipShown, m_TipHidden, m_origY, _y, m_hideY, m_targetY, m_origX, _x, m_hideX, m_targetX, m_AttachedMc, m_xTween, m_yTween;
function CTip () {
super();
_alpha = 0;
cacheAsBitmap = true;
m_alphaTween = null;
useHandCursor = false;
m_TipShown = new Oberon.CEvent(this);
m_TipHidden = new Oberon.CEvent(this);
m_origY = _y;
m_hideY = _y;
m_targetY = _y;
m_origX = _x;
m_hideX = _x;
m_targetX = _x;
}
function onLoad() {
super.onLoad();
if (Dir == null) {
Dir = 0;
}
var _local3 = Core.Vector2.CreateFromAngle(Dir);
_local3.NormalizeTo(s_TweenDist);
m_origX = _x - _local3.X;
m_origY = _y - _local3.Y;
m_targetX = _x;
m_targetY = _y;
if (NoPosTween) {
m_origX = m_targetX;
m_origY = m_targetY;
} else if (ReverseDir) {
m_hideX = m_origX;
m_hideY = m_origY;
} else {
m_hideX = m_targetX + _local3.X;
m_hideY = m_targetY + _local3.Y;
}
if (StartShown) {
_alpha = 100;
} else {
_x = m_origX;
_y = m_origY;
}
}
function AttachTo(i_mc) {
m_AttachedMc = i_mc;
m_AttachedMc.OnMouseLeave = mx.utils.Delegate.create(this, Hide);
m_AttachedMc.OnMouseEnter = mx.utils.Delegate.create(this, Show);
}
function Show() {
if (m_alphaTween != null) {
m_alphaTween.StopUpdates();
}
if (m_xTween != null) {
m_xTween.StopUpdates();
}
if (m_yTween != null) {
m_yTween.StopUpdates();
}
cacheAsBitmap = false;
m_alphaTween = new Core.CTween(this, "_alpha", mx.transitions.easing.Regular.easeOut, _alpha, 100, s_TipShowHideDur);
m_xTween = new Core.CTween(this, "_x", mx.transitions.easing.Regular.easeOut, _x, m_targetX, s_TipShowHideDur);
m_yTween = new Core.CTween(this, "_y", mx.transitions.easing.Regular.easeOut, _y, m_targetY, s_TipShowHideDur);
m_TipShown.Fire();
}
function Hide() {
cacheAsBitmap = false;
if (m_alphaTween != null) {
m_alphaTween.StopUpdates();
}
if (m_xTween != null) {
m_xTween.StopUpdates();
}
if (m_yTween != null) {
m_yTween.StopUpdates();
}
m_alphaTween = new Core.CTween(this, "_alpha", mx.transitions.easing.Regular.easeOut, _alpha, 0, s_TipShowHideDur);
m_xTween = new Core.CTween(this, "_x", mx.transitions.easing.Regular.easeOut, _x, m_hideX, s_TipShowHideDur);
m_yTween = new Core.CTween(this, "_y", mx.transitions.easing.Regular.easeOut, _y, m_hideY, s_TipShowHideDur);
m_TipHidden.Fire();
}
function FinishTweens() {
m_alphaTween.Finish();
m_xTween.Finish();
m_yTween.Finish();
}
static var s_TipShowHideDur = 0.5;
static var s_TweenDist = 30;
var Dir = null;
var ReverseDir = true;
var StartShown = false;
var NoPosTween = false;
}
Symbol 98 MovieClip [__Packages.Core.CTipTarget] Frame 0
class Core.CTipTarget extends Core.CUIComponent
{
var enabled, _parent, _x, _width, _y, _height;
function CTipTarget () {
super();
enabled = false;
}
function SetEnabled(i_val) {
if (m_enabled != i_val) {
m_enabled = i_val;
if ((!m_enabled) && (m_entered)) {
OnMouseLeave();
}
}
}
function GetEntered() {
return(m_entered);
}
function TryHit(i_coord) {
if (!m_enabled) {
return(false);
}
var _local2 = CCoord.GlobalToLocal(_parent, i_coord);
if ((((_local2.X >= _x) && (_local2.X <= (_x + _width))) && (_local2.Y >= _y)) && (_local2.Y <= (_y + _height))) {
if (!m_entered) {
m_entered = true;
OnMouseEnter();
}
} else if (m_entered) {
m_entered = false;
OnMouseLeave();
}
return(m_entered);
}
var OnMouseEnter = null;
var OnMouseLeave = null;
var m_entered = false;
var m_enabled = true;
}
Symbol 99 MovieClip [__Packages.UI.CBoardMenuDlg] Frame 0
class UI.CBoardMenuDlg extends CDialog
{
var Name, BackVisible, BackAlpha, gotoAndPlay, muteButton1, _totalframes, _currentframe, onEnterFrame;
function CBoardMenuDlg () {
super();
Name = Constants.Dialog_GameBoardMenu;
BackVisible = true;
BackAlpha = 95;
GameState.Freeze();
}
function onLoad() {
super.onLoad();
gotoAndPlay("FallIn");
CGame.m_startPauseTime = getTimer();
if (CPachinko.IsMuted()) {
muteButton1.gotoAndStop(2);
}
GameState.boardMutBut = muteButton1;
}
function onClick(i_context) {
if (Core.Button(i_context) != null) {
var _local3 = Core.Button(i_context);
switch (_local3.__get__Name()) {
case "Resume" :
DoDefaultOkAction();
break;
case "DownloadDeluxe" :
CPachinko.DownloadDeluxe();
break;
case "BuyNow" :
break;
case "Help" :
Core.DialogUtil.Push(Constants.Dialog_Help);
break;
case "BackToMain" :
var _local2 = UI.CConfirmationDlg(Core.DialogUtil.Push(Constants.Dialog_Confirmation));
_local2.CurrentDialogueType = UI.CConfirmationDlg.Confirm_ExitBoardArcade;
_local2.OkClickedEvent.PushBehavior(GameState.ExitBoardNoRestart, true);
GameState.m_MainMenu = true;
break;
case "Mute" :
CPachinko.MuteToggle();
break;
default :
CDebug.Assert(false, "UI.CBoardMenuDlg", "Unknown button! " + _local3.__get__Name());
}
}
return(true);
}
function onRegister(i_context) {
super.onRegister(i_context);
return(true);
}
function Close(i_immediate) {
CGame.m_startTime = CGame.m_startTime + (getTimer() - CGame.m_startPauseTime);
CGame.m_startPauseTime = getTimer();
CPachinko.UpdateScore();
if (i_immediate || (_currentframe == _totalframes)) {
GameState.Unfreeze();
super.Close();
CGame.Board.OnMenuClosed();
} else {
gotoAndPlay("AnimClose");
onEnterFrame = onEnterFrameClosing;
}
}
function onEnterFrameClosing() {
if (_currentframe == _totalframes) {
onEnterFrame = null;
Close(true);
}
}
function DoDefaultCancelAction() {
Close();
}
function DoDefaultOkAction() {
Close();
}
function OnKeyDown(i_keyCode) {
}
function OnMouseDown() {
if (_root._xmouse < (0.666666666666667 * Constants.GameResX)) {
DoDefaultOkAction();
}
}
}
Symbol 100 MovieClip [__Packages.UI.CConfirmationDlg] Frame 0
class UI.CConfirmationDlg extends CDialog
{
var Name, BackVisible, BackAlpha, CancelClickedEvent, OkClickedEvent, gotoAndStop, TopMostOnly, Close;
function CConfirmationDlg () {
super();
DialogueDisplayed = true;
Name = "CConfirmationDlg";
BackVisible = true;
BackAlpha = 80;
CancelClickedEvent = new Oberon.CEvent(this);
OkClickedEvent = new Oberon.CEvent(this);
}
static function GetConfirmFrameByNumber(inIndex) {
switch (inIndex) {
case Confirm_ExitBoard :
return("ExitBoard");
case Confirm_RestartBoard :
return("RestartBoard");
case Confirm_ExitGame :
return("ExitGame");
case Confirm_DeletePlayer :
return("DeletePlayer");
case Confirm_ClearHighScores :
return("ClearHighScores");
case Confirm_NameExists :
return("NameExists");
case Confirm_NoPlayers :
return("NoPlayers");
case Confirm_DisableTips :
return("DisableTips");
case Confirm_ExitBoardArcade :
return("ExitBoardArcade");
}
return("<Unknown>");
}
static function CanDisplayDialogue() {
return(!DialogueDisplayed);
}
function onClick(i_context) {
if (Core.Button(i_context) != null) {
var _local2 = Core.Button(i_context);
switch (_local2.__get__Name()) {
case "Yes" :
DoDefaultOkAction();
break;
case "No" :
DoDefaultCancelAction();
}
}
}
function onLoad() {
super.onLoad();
gotoAndStop(GetConfirmFrameByNumber(CurrentDialogueType));
if (CurrentDialogueType == Confirm_ExitGame) {
TopMostOnly = true;
}
}
function DoDefaultCancelAction() {
CancelClickedEvent.Fire();
DialogueDisplayed = false;
Close();
}
function DoDefaultOkAction() {
OkClickedEvent.Fire();
DialogueDisplayed = false;
Close();
}
var CurrentDialogueType = 0;
static var Confirm_ExitBoard = 0;
static var Confirm_RestartBoard = 1;
static var Confirm_ExitGame = 2;
static var Confirm_DeletePlayer = 3;
static var Confirm_ClearHighScores = 4;
static var Confirm_NameExists = 5;
static var Confirm_NoPlayers = 6;
static var Confirm_DisableTips = 7;
static var Confirm_ExitBoardArcade = 8;
static var DialogueDisplayed = false;
}
Symbol 101 MovieClip [__Packages.CEffectManager] Frame 0
class CEffectManager
{
var m_BlockingEffectsActive, m_CurFrameCategoryAnims, m_IdleAnimationsOn, m_nextIdleEffectTime, m_currentIdleEffectCounts, m_ActiveEffects, m_ActiveEffectCount;
function CEffectManager () {
m_BlockingEffectsActive = 0;
m_CurFrameCategoryAnims = 0;
}
function Reset() {
KillAllEffects();
m_BlockingEffectsActive = 0;
m_CurFrameCategoryAnims = 0;
m_IdleAnimationsOn = false;
m_nextIdleEffectTime = new Array(CEffect.Type_IdleCount);
m_currentIdleEffectCounts = new Array(CEffect.Type_IdleCount);
m_ActiveEffects = new Array(s_StaticEffectPoolSize);
var _local2 = 0;
while (_local2 < CEffect.Type_IdleCount) {
m_nextIdleEffectTime[_local2] = Oberon.MathX.randRange(m_MinIdleEffectDelayTime[_local2], m_MaxIdleEffectDelayTime[_local2]);
m_currentIdleEffectCounts[_local2] = 0;
_local2++;
}
}
function SpawnEffectsForNewBorb(x, y, newBorb, addDanger) {
BroadcastBorbEffectMesgToNeighbors(y, x, newBorb, eBoardEvent_NewNeighbor, {inX:x, inY:y, inWhichObject:newBorb});
BroadcastBorbEffectMesgToSingle(y, x, newBorb, eBoardEvent_NewAttach);
}
function UpdateEffects(i_deltaT, bForceFinish) {
m_BlockingEffectsActive = 0;
m_CurFrameCategoryAnims = 0;
var _local9 = i_deltaT * 1000;
if (m_IdleAnimationsOn && (!GameState.IsFrozen())) {
var _local13 = CGame.TileSet.GetActiveBorbsCount();
var _local12 = CEffect.Type_IdleCount;
var _local3 = 0;
while (_local3 < _local12) {
var _local7 = m_MaxIdleEffects[_local3];
if ((((_local7 != null) && (_local7 > 0)) && (_local9 > m_nextIdleEffectTime[_local3])) && (m_currentIdleEffectCounts[_local3] < Math.ceil(_local13 / _local7))) {
var _local6 = CEffect.CreateEffect(_local3);
if ((_local6 != null) && (_local6.OnIdleEffectInit())) {
m_currentIdleEffectCounts[_local3]++;
AddEffectToActiveList(_local6);
}
m_nextIdleEffectTime[_local3] = Oberon.MathX.randRange(m_MinIdleEffectDelayTime[_local3], m_MaxIdleEffectDelayTime[_local3]);
} else {
m_nextIdleEffectTime[_local3] = m_nextIdleEffectTime[_local3] - _local9;
}
_local3++;
}
}
if (CGame.DbgShowActiveEffects) {
var _local10 = ("ActiveAnim: " + m_ActiveEffectCount) + "\n\n";
var _local11 = "Blockers:\n\n";
var _local4 = {};
var _local3 = 0;
while (_local3 < m_ActiveEffectCount) {
var _local8 = CEffect(m_ActiveEffects[_local3]).getType();
if (_local4[_local8] == undefined) {
_local4[_local8] = 1;
} else {
_local4[_local8] = _local4[_local8] + 1;
}
if (CEffect(m_ActiveEffects[_local3]).m_bBlocking) {
_local11 = _local11 + (CEffect(m_ActiveEffects[_local3]).getType() + newline);
}
_local3++;
}
for (_local3 in _local4) {
_local10 = _local10 + (((_local4[_local3] + ":") + _local3) + newline);
}
CGame.Board.OwnerDlg.DbgAnimCount.text = _local10;
CGame.Board.OwnerDlg.DbgAnimCountBlockers.text = _local11;
CGame.Board.OwnerDlg.DbgTweenCount.text = "CTween: " + Core.CTween.GetCount();
CGame.Board.OwnerDlg.DbgFrameAdvCount.text = "FrameAdv: " + Core.FrameAdvancer.GetCount();
}
if (m_ActiveEffectCount == 0) {
return(undefined);
}
var _local3 = 0;
while (_local3 < m_ActiveEffectCount) {
var _local2 = CEffect(m_ActiveEffects[_local3]);
var _local5 = CEffect.UpdateCode_FreeEffect;
if (!_local2.m_bReadyForDelete) {
if (_local2.m_NeedsUpdate) {
_local5 = _local2.OnUpdate(bForceFinish, i_deltaT);
} else {
_local5 = CEffect.UpdateCode_DoNothing;
}
}
if (_local2.m_bReadyForDelete || (_local5 == CEffect.UpdateCode_FreeEffect)) {
if (_local2.m_Type < 100) {
m_currentIdleEffectCounts[_local2.m_Type]--;
CDebug.Assert(m_currentIdleEffectCounts[_local2.m_Type] >= 0, "CEffectManager.UpdateEffects()", "idle effect counter is negative! " + _local2.m_Type);
}
if (m_ActiveEffectCount > 1) {
m_ActiveEffects[_local3] = m_ActiveEffects[m_ActiveEffectCount - 1];
}
m_ActiveEffectCount--;
_local3--;
} else {
m_CurFrameCategoryAnims = m_CurFrameCategoryAnims | _local2.m_Category;
if (_local2.m_bBlocking) {
m_BlockingEffectsActive++;
}
}
_local3++;
}
}
function AreBlockingEffectsPlaying() {
return(m_BlockingEffectsActive > 0);
}
function GetNumEffects() {
return(m_ActiveEffectCount);
}
function BroadcastBorbEffectMesgToSingle(inX, inY, inTarget, inEventID, inParams) {
if (inTarget != null) {
switch (inEventID) {
case eBoardEvent_Match :
break;
case eBoardEvent_NewNeighborPostMatch :
var _local9 = SnoodHead(inParams.inWhichObject);
CDebug.Assert(_local9 != null, "CEffectManager.BroadcastBorbEffectMesgToSingle()", "whichObject is null");
switch (inTarget.__get__PowerUp()) {
case Constants.PowerUp_Shroud :
var _local5 = Effects.CEffect_ShroudDissolve(CEffect.CreateEffect(CEffect.Type_ShroudDissolve));
if (_local5.OnInit(inTarget, _local9)) {
AddEffectToActiveList(_local5);
}
break;
case Constants.PowerUp_Lock :
if ((inTarget.__get__Color() == _local9.__get__Color()) || (_local9.__get__Color() == Constants.Snood_Wild)) {
var _local11 = CCharacterSounds.GetCharacterSound(inTarget.__get__Color(), Constants.__get__CharSound_Waking());
if (_local11 != null) {
CGame.Sounds.PlaySound(_local11);
}
inTarget.SetPowerUp(Constants.PowerUp_None);
}
break;
case Constants.PowerUp_Hypnosis :
if ((inTarget.__get__Color() == _local9.__get__Color()) || (_local9.__get__Color() == Constants.Snood_Wild)) {
inTarget.SetPowerUp(Constants.PowerUp_None);
}
break;
default :
if (!(((inTarget.__get__PowerUp() == Constants.PowerUp_JellyStrThree) || (inTarget.__get__PowerUp() == Constants.PowerUp_JellyStrTwo)) || (inTarget.__get__PowerUp() == Constants.PowerUp_Jelly))) {
break;
}
CJellyFishy.HandleFishyHit(inTarget);
}
break;
case eBoardEvent_NewNeighbor :
_local9 = SnoodHead(inParams.inWhichObject);
CDebug.Assert(_local9 != null, "CEffectManager.BroadcastBorbEffectMesgToSingle()", "whichObject is null");
if ((inTarget.__get__Color() == Constants.Snood_CrateStrThree) || (inTarget.__get__Color() == Constants.Snood_CrateStrTwo)) {
inTarget.DamageCrate();
return(false);
}
if (inTarget.__get__Color() == Constants.Snood_Crate) {
inTarget.DamageCrate();
if ((_local9.__get__Color() >= Constants.Snood_Lump1) && (_local9.__get__Color() <= Constants.Snood_Lump3)) {
CGame.CurrentPlayer.Accomplish(CPlayerInfo.Achievement_BreakCrateWithLump);
}
Level.TryDropSnoods(CGame.CurrentPlayer, false, false, true);
return(false);
}
break;
case eBoardEvent_NewAttach :
if ((inTarget.__get__Color() == Constants.Snood_CrateStrThree) || (inTarget.__get__Color() == Constants.Snood_CrateStrTwo)) {
inTarget.DamageCrate();
return(false);
}
if (inTarget.__get__Color() == Constants.Snood_Crate) {
inTarget.DamageCrate();
Level.TryDropSnoods(CGame.CurrentPlayer, false, false, true);
return(false);
}
if (!(inTarget.__get__PowerUp() === Constants.PowerUp_BubbleBubble)) {
} else {
var _local7 = CBoard.G.m_TileSet.GetNeighborCoords(inTarget);
var _local2;
var _local8;
var _local4 = 0;
while (_local4 < _local7.length) {
_local2 = SnoodHead(CBoard.G.m_TileSet.GetTile(_local7[_local4].X, _local7[_local4].Y));
if (Constants.IsHead(_local2.__get__Color())) {
var _local6 = false;
if ((_local2.__get__PowerUp() == Constants.PowerUp_Hypnosis) || (_local2.__get__PowerUp() == Constants.PowerUp_Lock)) {
_local2.SetPowerUp(Constants.PowerUp_None);
} else if (_local2.__get__PowerUp() == Constants.PowerUp_Shroud) {
_local5 = Effects.CEffect_ShroudDissolve(CEffect.CreateEffect(CEffect.Type_ShroudDissolve));
if (_local5.OnInit(_local2, inTarget, null, true)) {
CGame.EffectMgr.AddEffectToActiveList(_local5);
}
} else if (_local2.__get__PowerUp() != Constants.PowerUp_None) {
_local6 = true;
}
if (!_local6) {
_local8 = Effects.CEffect_BubbleBubble(CEffect.CreateEffect(CEffect.Type_BubbleBubble));
if (_local8.OnInit(_local2, inTarget.__get__Color())) {
AddEffectToActiveList(_local8);
}
}
if (((_local2.__get__PowerUp() == Constants.PowerUp_JellyStrThree) || (_local2.__get__PowerUp() == Constants.PowerUp_JellyStrTwo)) || (_local2.__get__PowerUp() == Constants.PowerUp_Jelly)) {
CJellyFishy.HandleFishyHit(_local2);
}
}
_local4++;
}
var _local10 = Effects.CEffect_BorbFadeOut(CEffect.CreateEffect(CEffect.Type_BorbFadeOut));
if (!_local10.OnInit(inTarget)) {
break;
}
AddEffectToActiveList(_local10);
}
}
}
return(false);
}
function BroadcastBorbEffectMesgToNeighbors(i_row, i_col, origin, inEventID, inParams) {
if ((i_col == null) || (i_row == null)) {
CDebug.WriteErr("CEffectManager.BroadcastBorbEffectMesgToNeighbors()", "x/y slot null : " + origin);
return(undefined);
}
var _local6 = CGame.TileSet;
var _local5 = _local6.GetNeighborCoordsOfCoord(new CCoord(i_col, i_row));
var _local7 = false;
var _local3 = _local5.length - 1;
while (_local3 >= 0) {
var _local2 = CCoord(_local5[_local3]);
var _local4 = SnoodHead(_local6.GetTile(_local2.X, _local2.Y));
if (_local4 != null) {
_local7 = BroadcastBorbEffectMesgToSingle(_local2.X, _local2.Y, _local4, inEventID, inParams);
}
_local3--;
}
}
function AddEffectToActiveList(effect) {
if (effect != null) {
m_ActiveEffectCount++;
if (m_ActiveEffectCount > m_ActiveEffects.length) {
CDebug.AssertWarn(m_ActiveEffectCount > 300, "CEffectManager.AddEffectToActiveList()", "Lots of active effects! Count: " + m_ActiveEffectCount);
m_ActiveEffects.push(effect);
} else {
m_ActiveEffects[m_ActiveEffectCount - 1] = effect;
}
if (effect.m_bBlocking) {
m_BlockingEffectsActive++;
}
m_CurFrameCategoryAnims = m_CurFrameCategoryAnims | effect.m_Category;
}
}
function IsEffectPlaying(i_type) {
var _local2 = 0;
while (_local2 < m_ActiveEffectCount) {
var _local3 = CEffect(m_ActiveEffects[_local2]);
if ((_local3.m_Type == i_type) && (!_local3.m_bReadyForDelete)) {
return(true);
}
_local2++;
}
return(false);
}
function IsCategoryPlaying(i_cat) {
var _local2 = 0;
while (_local2 < m_ActiveEffectCount) {
var _local3 = CEffect(m_ActiveEffects[_local2]);
if ((Number(_local3.m_Category & i_cat) > 0) && (!_local3.m_bReadyForDelete)) {
return(true);
}
_local2++;
}
return(false);
}
function KillAllEffectsOfCategory(i_cat) {
var _local2 = 0;
while (_local2 < m_ActiveEffectCount) {
var _local3 = CEffect(m_ActiveEffects[_local2]);
if (_local3.m_Category & (i_cat != 0)) {
_local3.Finish(_local3, true);
if (_local3.m_bBlocking) {
m_BlockingEffectsActive--;
}
m_ActiveEffects[_local2] = m_ActiveEffects[m_ActiveEffectCount - 1];
m_ActiveEffectCount--;
_local2--;
}
_local2++;
}
}
function KillAllEffectsOfType(i_type) {
var _local2 = 0;
while (_local2 < m_ActiveEffectCount) {
var _local3 = CEffect(m_ActiveEffects[_local2]);
if (_local3.m_Type == i_type) {
_local3.Finish(_local3, true);
if (_local3.m_bBlocking) {
m_BlockingEffectsActive--;
}
m_ActiveEffects[_local2] = m_ActiveEffects[m_ActiveEffectCount - 1];
m_ActiveEffectCount--;
_local2--;
}
_local2++;
}
}
function KillAllEffects() {
var _local3 = 0;
while (_local3 < m_ActiveEffectCount) {
var _local2 = CEffect(m_ActiveEffects[_local3]);
_local2.Finish(_local2, true);
if (_local2.m_bBlocking) {
m_BlockingEffectsActive--;
}
_local3++;
}
m_ActiveEffectCount = 0;
}
function RemoveEffectFromActiveList(effect) {
var _local2 = 0;
while (_local2 < m_ActiveEffectCount) {
if (m_ActiveEffects[_local2] == effect) {
m_ActiveEffects[_local2] = m_ActiveEffects[m_ActiveEffects.length - 1];
m_ActiveEffectCount--;
return(undefined);
}
_local2++;
}
}
function GetAllEffectsOfType(i_type) {
var _local4 = [];
var _local2 = 0;
while (_local2 < m_ActiveEffectCount) {
var _local3 = CEffect(m_ActiveEffects[_local2]);
if (_local3.m_Type == i_type) {
_local4.push(_local3);
}
_local2++;
}
return(_local4);
}
function PlaySingleAnimMc(i_name, i_parentMc, i_duration, i_depth) {
if (i_depth == null) {
i_depth = i_parentMc.getNextHighestDepth();
}
var _local1 = i_parentMc.attachMovie(i_name, i_name + i_depth, i_depth);
CDebug.Assert(_local1 != null, "CEffectManager.PlaySingleAnimMc()", "Couldn't create mc : " + i_name);
_local1.stop();
var _local3 = new Core.CTween(_local1, "_currentframe", null, 1, _local1._totalframes, i_duration, true);
_local3.m_CompleteEvent.PushBehaviorRunOnce(function (i_context) {
MovieClip(i_context.m_Obj).removeMovieClip();
});
return(_local3);
}
static var eBoardEvent_NewNeighbor = 1;
static var eBoardEvent_NewNeighborPostMatch = 2;
static var eBoardEvent_Match = 3;
static var eBoardEvent_NeighborMatch = 4;
static var eBoardEvent_NewAttach = 5;
static var NumSecsUntilIdleEffect = 2;
var m_lastEffectUpdate = 0;
var m_nextLookEffectDuration = 0.1;
var s_StaticEffectPoolSize = 200;
static var m_MaxIdleEffects = [20, 30, 30, 20, 30];
static var m_MaxIdleEffectDelayTime = [1500, 2000, 2000, 1500, 2000];
static var m_MinIdleEffectDelayTime = [300, 400, 500, 500, 1000];
}
Symbol 102 MovieClip [__Packages.CLocalizer] Frame 0
class CLocalizer
{
var m_idTable, m_strTable, m_language, m_srcFileName, m_xml, m_state;
function CLocalizer (i_srcFileName, i_locale) {
m_idTable = new Object();
m_strTable = new Object();
m_language = i_locale;
m_srcFileName = i_srcFileName;
m_xml = new XML();
m_xml.ignoreWhite = true;
m_xml.onLoad = mx.utils.Delegate.create(this, onXmlLoaded);
m_xml.load(m_srcFileName);
m_state = State_Loading;
}
function onXmlLoaded(i_success) {
if (i_success) {
var _local7 = m_xml.childNodes[0].childNodes;
var _local8 = false;
var _local6 = 0;
while (_local6 < _local7.length) {
var _local3 = _local7[_local6];
if (_local3.nodeName == "IdTable") {
var _local4 = 0;
while (_local4 < _local3.childNodes.length) {
var _local2 = _local3.childNodes[_local4];
m_idTable[_local2.attributes.Text] = parseInt(_local2.attributes.Id);
_local4++;
}
} else if (_local3.nodeName == "Locale") {
if (_local3.attributes.language == m_language) {
var _local4 = 0;
while (_local4 < _local3.childNodes.length) {
var _local2 = _local3.childNodes[_local4];
var _local5 = parseInt(_local2.attributes.Id);
m_strTable[_local5] = new CLocStrData(_local2.attributes.Text, ((_local2.attributes.FontDelta != undefined) ? (parseInt(_local2.attributes.FontDelta)) : 0), ((_local2.attributes.WidthDelta != undefined) ? (parseFloat(_local2.attributes.WidthDelta)) : 0), ((_local2.attributes.HeightDelta != undefined) ? (parseFloat(_local2.attributes.HeightDelta)) : 0), ((_local2.attributes.XDelta != undefined) ? (parseFloat(_local2.attributes.XDelta)) : 0), ((_local2.attributes.YDelta != undefined) ? (parseFloat(_local2.attributes.YDelta)) : 0), ((_local2.attributes.ExtentWidthDelta != undefined) ? (parseFloat(_local2.attributes.ExtentWidthDelta)) : 0), ((_local2.attributes.ExtentHeightDelta != undefined) ? (parseFloat(_local2.attributes.ExtentHeightDelta)) : 0));
_local4++;
}
_local8 = true;
}
}
_local6++;
}
if (!_local8) {
trace("Couldn't load lang " + m_language);
}
m_state = State_Ready;
} else {
m_xml.load(m_srcFileName);
}
}
function GetIsLoaded() {
return(m_state == State_Ready);
}
function LocTxtField(i_txtField, i_str) {
if (i_txtField.__localizeStr != i_txtField.text) {
var _local2 = i_txtField;
_local2.embedFonts = true;
_local2.selectable = false;
var _local5;
var _local3;
if (i_str == null) {
_local5 = LocStr(_local2.text);
_local3 = GetLocData(_local2.text);
} else {
_local5 = LocStr(i_str);
_local3 = GetLocData(i_str);
}
var _local4 = _local2.getTextFormat();
_local4.font = "Arial Black";
if (_local3 != null) {
if (_local3.WidthDelta != 0) {
_local2._xscale = _local2._xscale + _local3.WidthDelta;
}
if (_local3.HeightDelta != 0) {
_local2._yscale = _local2._yscale + _local3.HeightDelta;
}
if (_local3.XDelta != 0) {
_local2._x = _local2._x + _local3.XDelta;
}
if (_local3.YDelta != 0) {
_local2._y = _local2._y + _local3.YDelta;
}
if (_local3.WidthExtentDelta != 0) {
_local2._width = _local2._width + _local3.WidthExtentDelta;
}
if (_local3.HeightExtentDelta != 0) {
_local2._height = _local2._height + _local3.HeightExtentDelta;
}
if (_local3.FontDelta != 0) {
_local4.size = _local4.size + _local3.FontDelta;
}
}
_local2.autoSize = _local4.align;
_local2.setTextFormat(_local4);
_local2.multiline = true;
if (_local5 != null) {
_local2.text = _local5;
_local2.__localizeStr = _local5;
} else {
_local2.background = true;
_local2.backgroundColor = 16711680 /* 0xFF0000 */;
}
return(true);
}
return(false);
}
function GetLocData(i_str) {
if (m_language == "test") {
return(new CLocStrData(("<<" + i_str) + ">>", 0, 0, 0, 0, 0, 0, 0));
}
var _local2 = i_str.split("\r").join("\\n");
return(m_strTable[m_idTable[_local2]]);
}
function LocStr(i_str) {
if (m_language == "en-US") {
return(i_str);
}
var _local9 = i_str.split("\r").join("\\n");
var _local8 = m_idTable[_local9];
var _local7 = m_strTable[_local8].Str;
if ((_local8 != null) && (m_language == "test")) {
_local7 = ("<<" + i_str) + ">>";
} else {
_local7 = _local7.split("\\n").join("\r");
}
if ((_local8 == null) || (_local7 == null)) {
var _local6 = false;
var _local3 = 0;
while ((!_local6) && (_local3 < i_str.length)) {
var _local4 = i_str.charAt(_local3);
var _local2 = i_str.charCodeAt(_local3);
if ((((((((_local2 < 48) || (_local2 > 57)) && (_local2 != 32)) && (_local2 != 10)) && (_local2 != 13)) && (_local2 != 9)) && (_local4 != "+")) && (_local4 != "X")) {
_local6 = true;
}
_local3++;
}
if (_local6) {
CDebug.Assert(_local8 != null, "CLocalizer.LocStr()", ("String \"" + i_str) + "\" is not in string table!");
CDebug.Assert((_local8 == null) || (_local7 != null), "CLocalizer.LocStr()", (("String \"" + i_str) + "\" is not localized for locale ") + m_language);
m_UnknownStr[_local9] = true;
return(null);
}
return(i_str);
}
return(_local7);
}
function LocMc(i_mc, i_force) {
var _local4 = 0;
for (var _local6 in i_mc) {
if (MovieClip(i_mc[_local6]) != null) {
if (MovieClip(i_mc[_local6])._parent == i_mc) {
_local4 = _local4 + LocMc(MovieClip(i_mc[_local6]));
}
} else if (i_force || (TextField(i_mc[_local6]) != null)) {
var _local3 = LocTxtField(TextField(i_mc[_local6]), null);
if (_local3) {
_local4++;
}
}
}
return(_local4);
}
static var State_Loading = 0;
static var State_Ready = 1;
var m_UnknownStr = {};
}
Symbol 103 MovieClip [__Packages.CLocStrData] Frame 0
class CLocStrData
{
var Str, FontDelta, WidthDelta, HeightDelta, WidthExtentDelta, HeightExtentDelta, XDelta, YDelta;
function CLocStrData (i_str, i_fontDelta, i_widthDelta, i_heightDelta, i_xDelta, i_yDelta, i_widthExtentDelta, i_heightExtentDelta) {
Str = i_str;
FontDelta = i_fontDelta;
WidthDelta = i_widthDelta;
HeightDelta = i_heightDelta;
WidthExtentDelta = i_widthExtentDelta;
HeightExtentDelta = i_heightExtentDelta;
XDelta = i_xDelta;
YDelta = i_yDelta;
}
function ToString() {
return((((((Str + ",") + FontDelta) + ",") + WidthDelta) + ",") + HeightDelta);
}
}
Symbol 104 MovieClip [__Packages.CLoadMonitor] Frame 0
class CLoadMonitor extends MovieClip
{
var _state, _brandingHolderMc, createEmptyMovieClip, getNextHighestDepth, removeMovieClip, _startTime;
function CLoadMonitor () {
super();
CGame.LoadMonitor = this;
}
static function get State_WaitingForConfig() {
return(0);
}
static function get State_ShowingSplash() {
return(1);
}
static function get State_WaitingForPachinko() {
return(2);
}
static function get State_Ready() {
return(3);
}
function onLoad() {
_state = State_WaitingForConfig;
_brandingHolderMc = createEmptyMovieClip("BrandingHolder", getNextHighestDepth());
_brandingHolderMc.loadMovie("brand.swf");
}
function onUnload() {
unloadMovieNum (2);
CGame.LoadMonitor = null;
}
function onEnterFrame() {
if ((_level2 != undefined) && (!_setup)) {
_setup = true;
}
if (_waitCount > 0) {
_waitCount--;
if (_waitCount == 0) {
CGame.Init();
}
} else {
switch (_state) {
case State_WaitingForConfig :
if (CWebConfig.IsInitialized) {
if (CWebConfig.IsPachinkoActive()) {
_state = State_WaitingForPachinko;
} else {
initSplash();
}
}
break;
case State_ShowingSplash :
if (_brandingHolderMc == null) {
_state = State_Ready;
} else if (_brandingHolderMc._currentframe == _brandingHolderMc._totalframes) {
_state = State_Ready;
_brandingHolderMc.stop();
}
break;
case State_WaitingForPachinko :
if ((getTimer() - _lastReady) < 500) {
break;
}
_lastReady = getTimer();
CPachinko.SessionReady();
}
if (IsReady()) {
if (CGame.Sounds == null) {
CGame.SoundImport = CGame.Root.__Assets__;
_global.Sounds = new SoundDb();
CGame.Sounds = _global.Sounds;
}
Core.DialogUtil.Push(Constants.Dialog_MainMenu);
removeMovieClip();
}
}
}
function OnPachinkoLoaded() {
initSplash();
}
function IsReady() {
return((((((_state == State_Ready) && (CGame.Root.__Assets__.isLoaded)) && (CLevelManifest.G.m_Loaded)) && (CGame.XmlLoaded)) && (CGame.Localizer != null)) && (CGame.Localizer.GetIsLoaded()));
}
function initSplash() {
_startTime = getTimer();
if ((_brandingHolderMc != null) && (_brandingHolderMc.getBytesTotal() > 0)) {
_state = State_ShowingSplash;
} else {
_state = State_Ready;
}
}
var _lastReady = 0;
var _waitCount = 2;
var _setup = false;
}
Symbol 105 MovieClip [__Packages.Core.CStackTracer] Frame 0
class Core.CStackTracer
{
function CStackTracer () {
}
static function Attach(i_enabled, i_filterAttach, i_filterAttachAtBeg, i_resolveUnknownVars, i_includeGetters, i_includeSetters, i_includeCtors) {
if (!m_attached) {
_global.ASSetPropFlags(_global, "ASProf", 7);
WriteLine("Core.CStackTracer.Attach()", "Start attach" + ((m_filterAttach.length == 0) ? "" : ((" ( filter on " + m_filterAttach.join(", ")) + " )")));
m_startTime = getTimer();
if (i_enabled != null) {
m_Enabled = i_enabled;
}
if (i_filterAttach != null) {
m_filterAttach = i_filterAttach;
}
if (i_filterAttachAtBeg != null) {
m_filterAttachBeg = i_filterAttachAtBeg;
}
if (i_resolveUnknownVars != null) {
m_resolveUnknownVars = i_resolveUnknownVars;
}
if (i_includeGetters != null) {
m_includeGetters = i_includeGetters;
}
if (i_includeSetters != null) {
m_includeSetters = i_includeSetters;
}
if (i_includeCtors != null) {
m_includeCtors = i_includeCtors;
}
attachSingle(null, null, 0);
m_attached = true;
if (((getTimer() - m_startTime) / 1000) > m_timeout) {
WriteErr("Core.CStackTracer.Attach()", ("Attach failed, timeout after " + m_timeout) + " seconds");
}
WriteLine("Core.CStackTracer.Attach()", ((("Attach completed : " + m_parsed) + " functions attached in ") + ((getTimer() - m_startTime) / 1000)) + " seconds");
}
}
static function IsAttached() {
return(m_attached);
}
static function EnableOneTick() {
EnableForMultipleTicks(1);
}
static function EnableForMultipleTicks(i_tickCount) {
if (!m_enterFrameEventRunning) {
Oberon.CEnterFrameEvent.AddEvent(_root, TickElapsed, false);
m_enterFrameEventRunning = true;
}
m_TicksToDisable = ((i_tickCount == undefined) ? 1 : (i_tickCount));
m_Enabled = true;
}
static function TickElapsed(i_context, i_event) {
if (m_TicksToDisable != null) {
m_TicksToDisable--;
if (m_TicksToDisable <= 0) {
i_event.RemoveCurrentBehavior();
m_Enabled = false;
m_enterFrameEventRunning = false;
}
}
}
static function WriteLine(a, b) {
trace(((" *** " + a) + ": ") + b);
}
static function WriteErr(a, b) {
trace(((" !!! " + a) + ": ") + b);
}
static function attachSingle(i_name, i_obj, i_depth) {
if (((getTimer() - m_startTime) / 1000) > m_timeout) {
return(undefined);
}
if ((i_obj == null) && (i_name != null)) {
return(undefined);
}
if (i_name == null) {
for (var _local6 in _global) {
if (_local6 == "CStackTracer") {
continue;
}
if ((Object(_global[_local6].prototype) != null) && ((m_filterAttach.length == 0) || (isFilterMatch(_local6, true)))) {
attachSingleObj(_local6, Object(_global[_local6].prototype));
}
if ((Object(_global[_local6]).prototype == undefined) && (((!m_filterAttachBeg) || (m_filterAttach.length == 0)) || (isFilterMatch(_local6)))) {
attachSingle(_local6, Object(_global[_local6]), i_depth);
}
}
} else {
for (var _local6 in i_obj) {
if (_local6 == "CStackTracer") {
continue;
}
var _local3 = (i_name + ".") + _local6;
if ((Object(i_obj[_local6].prototype) != null) && ((m_filterAttach.length == 0) || (isFilterMatch(_local3, true)))) {
attachSingleObj((i_name + ".") + _local6, Object(i_obj[_local6].prototype));
}
if ((Object(i_obj[_local6]).prototype == undefined) && (((!m_filterAttachBeg) || (m_filterAttach.length == 0)) || (isFilterMatch(_local3)))) {
attachSingle(_local3, Object(i_obj[_local6]), i_depth);
}
}
}
}
static function isFilterMatch(i_str, i_finalStr) {
var _local1 = 0;
while (_local1 < m_filterAttach.length) {
var _local5 = m_filterAttach[_local1];
if (_local5.indexOf(".") == -1) {
if (i_str.indexOf(m_filterAttach[_local1]) != -1) {
return(true);
}
} else {
var _local4 = _local5.split(".");
var _local2 = i_str.split(".");
var _local3 = false;
_local1 = 0;
while (((!_local3) && (_local1 < _local4.length)) && (_local1 < _local2.length)) {
if (String(_local2[_local1]).indexOf(_local4[_local1]) == -1) {
_local3 = true;
}
_local1++;
}
if ((!_local3) && ((!i_finalStr) || (_local4.length <= _local2.length))) {
return(true);
}
}
_local1++;
}
return(false);
}
static function attachSingleObj(i_name, i_obj) {
_global.ASSetPropFlags(i_obj, null, 0, 5);
for (var curFunc in i_obj) {
if (typeof(i_obj[curFunc]) == "function") {
addFuncTracer(i_name, i_obj, curFunc, false);
}
}
var evalObj = eval (i_name);
for (var curFunc in evalObj) {
if (typeof(evalObj[curFunc]) == "function") {
addFuncTracer(i_name, evalObj, curFunc, true);
}
}
if (m_resolveUnknownVars && (i_obj.__resolve == undefined)) {
i_obj.__resolve = function (i_var) {
Core.CStackTracer.OnResolveFailed(i_name, i_var);
};
}
_global.ASSetPropFlags(i_obj, null, 0, 1);
}
static function addFuncTracer(i_name, i_obj, i_str, i_fromEval) {
var fullName = ((i_name + ".") + i_str);
var fullNameWithProto = ((i_name + ".prototype.") + i_str);
if (((((!i_fromEval) && (eval (fullNameWithProto) == undefined)) || ((!m_includeCtors) && (fullName.indexOf("__constructor__") != -1))) || ((!m_includeGetters) && (fullName.indexOf("__get__") != -1))) || ((!m_includeSetters) && (fullName.indexOf("__set__") != -1))) {
return(undefined);
}
m_parsed++;
var oldFunc = Function(i_obj[i_str]);
Set((i_fromEval ? (fullName) : (fullNameWithProto)), function () {
if (((!Core.CStackTracer.m_Enabled) && (Core.CStackTracer.m_StartTraceOnHit)) && (fullName.indexOf(Core.CStackTracer.m_StartTraceOnHit) != -1)) {
if ((Core.CStackTracer.m_TicksToDisable != null) && (Core.CStackTracer.m_TicksToDisable > 0)) {
Core.CStackTracer.EnableForMultipleTicks(Core.CStackTracer.m_TicksToDisable);
} else {
Core.CStackTracer.m_Enabled = true;
}
}
if ((!Core.CStackTracer.m_Enabled) || ((Core.CStackTracer.m_FilterTrace != null) && (fullName.indexOf(Core.CStackTracer.m_FilterTrace) == -1))) {
return(oldFunc.apply(this, arguments));
}
var _local6 = "";
var _local3 = 0;
while (_local3 < Core.CStackTracer.m_depth) {
_local6 = _local6 + " ";
_local3++;
}
var _local7 = ((_local6 + (Core.CStackTracer.m_depth % 10)) + ">> ") + fullName;
if (Core.CStackTracer.m_ShowArgs) {
if (arguments.length == 0) {
_local7 = _local7 + "( <void> )";
} else if (Core.CStackTracer.m_AttemptToString) {
var _local5 = "( ";
_local3 = 0;
while (_local3 < arguments.length) {
var _local4 = arguments[_local3];
if (_local4.ToString != null) {
_local5 = _local5 + _local4.ToString();
} else {
_local5 = _local5 + String(_local4);
}
if (_local3 != (arguments.length - 1)) {
_local5 = _local5 + ", ";
}
_local3++;
}
_local5 = _local5 + " )";
_local7 = _local7 + _local5;
} else {
_local7 = _local7 + (("( " + arguments.join(", ")) + " )");
}
} else {
_local7 = _local7 + "()";
}
trace(_local7);
if ((Core.CStackTracer.m_CrashOnHit != null) && (fullName.indexOf(Core.CStackTracer.m_CrashOnHit) != -1)) {
trace(" !!! FORCE CRASH !!!");
Core.CStackTracer.crash();
} else if ((Core.CStackTracer.m_StopTraceOnHit != null) && (fullName.indexOf(Core.CStackTracer.m_CrashOnHit) != -1)) {
Core.CStackTracer.m_Enabled = false;
}
Core.CStackTracer.m_depth++;
var _local9 = oldFunc.apply(this, arguments);
if (Core.CStackTracer.m_depth > 0) {
Core.CStackTracer.m_depth--;
}
if (Core.CStackTracer.m_ShowResult) {
var _local8 = String(_local9);
trace(((((_local6 + (Core.CStackTracer.m_depth % 10)) + "<< ") + fullName) + " result: ") + ((_local8 == "") ? "<empty string>" : (_local8)));
if (_local8 != null) {
if ((Core.CStackTracer.m_CrashOnHit != null) && (fullName.indexOf(Core.CStackTracer.m_CrashOnHit) != -1)) {
trace(" !!! FORCE CRASH !!!");
Core.CStackTracer.crash();
} else if ((Core.CStackTracer.m_StopTraceOnHit != null) && (fullName.indexOf(Core.CStackTracer.m_CrashOnHit) != -1)) {
Core.CStackTracer.m_Enabled = false;
}
}
}
return(_local9);
});
}
static function OnResolveFailed(i_name, i_var) {
if (m_ResolveEnabled) {
WriteErr("CStackTracer.OnResolveFailed", (("Undefined var : class " + i_name) + ", var ") + i_var);
}
}
static function crash() {
crash();
}
static var m_ShowArgs = false;
static var m_ShowResult = false;
static var m_AttemptToString = false;
static var m_CrashOnHit = null;
static var m_StopTraceOnHit = null;
static var m_StartTraceOnHit = null;
static var m_FilterTrace = null;
static var m_Enabled = false;
static var m_TicksToDisable = null;
static var m_ResolveEnabled = true;
static var m_filterAttach = [];
static var m_filterAttachBeg = true;
static var m_resolveUnknownVars = false;
static var m_includeGetters = false;
static var m_includeSetters = false;
static var m_includeCtors = false;
static var m_depth = 0;
static var m_attached = false;
static var m_parsed = 0;
static var m_startTime = 0;
static var m_timeout = 60;
static var m_enterFrameEventRunning = false;
}