Frame 2
function loadGame() {
var _local2 = Math.floor((_root.getBytesLoaded() / _root.getBytesTotal()) * 100);
trace(_local2);
if (_local2 > 1) {
preload_mc.gotoAndStop(20 + _local2);
preload_mc.counter_txt.text = _local2 + "%";
}
if (_local2 >= 100) {
clearInterval(loadInt);
gotoAndPlay ("start");
}
}
loadInt = setInterval(loadGame, 50);
stop();
Frame 11
stop();
Symbol 56 MovieClip Frame 20
stop();
Symbol 56 MovieClip Frame 120
stop();
Symbol 75 MovieClip Frame 1
stop();
Symbol 82 MovieClip Frame 1
stop();
Symbol 241 Button
on (release) {
play();
}
Symbol 252 Button
on (release) {
Key.removeListener(this);
play();
}
Symbol 263 Button
on (release) {
Key.removeListener(this);
play();
}
Symbol 264 Button
on (release) {
play();
}
Symbol 266 MovieClip Frame 1
_quality = "low";
Symbol 266 MovieClip Frame 13
stop();
Key.addListener(this);
onKeyUp = function () {
trace(">>>start key");
Key.removeListener(this);
play();
};
Symbol 266 MovieClip Frame 25
stop();
Key.addListener(this);
onKeyUp = function () {
trace(">>>instr key");
Key.removeListener(this);
play();
};
Symbol 266 MovieClip Frame 36
_parent.gotoAndStop("startGame");
Symbol 287 Button
on (release) {
_parent._parent.gb.killKeyListener();
_parent.play();
}
Symbol 297 MovieClip Frame 11
stop();
Symbol 316 Button
on (release) {
_parent._parent.gb.clearPaint();
_parent.play();
}
Symbol 321 Button
on (release) {
stopAllSounds();
_parent._parent.gb.startFromZero();
}
Symbol 338 Button
on (release) {
stopAllSounds();
Key.removeListener(_parent);
_parent._parent.gb.startFromZero();
}
Symbol 345 MovieClip Frame 2
stop();
Symbol 345 MovieClip Frame 53
stop();
Symbol 345 MovieClip Frame 67
stop();
_parent.gb.setBackground();
Symbol 345 MovieClip Frame 100
stop();
Symbol 345 MovieClip Frame 111
stop();
_parent.gb.init();
Symbol 345 MovieClip Frame 160
stop();
_parent.gb.startGameEngine();
Symbol 345 MovieClip Frame 178
Symbol 345 MovieClip Frame 188
stop();
_parent.gb.stopGameEngine();
Key.addListener(this);
onKeyUp = function () {
Key.removeListener(this);
_parent.gb.startFromZero();
};
Instance of Symbol 349 MovieClip "hitBox" in Symbol 350 MovieClip [bush1] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 353 MovieClip [bush2] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 356 MovieClip [bushwall] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 359 MovieClip [cage] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 362 MovieClip [canoe] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 365 MovieClip [chair] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 368 MovieClip [chest] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 371 MovieClip [cooler] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 374 MovieClip [cow] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 377 MovieClip [downtree] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 380 MovieClip [grass] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 383 MovieClip [sacks] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 386 MovieClip [speaker] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 389 MovieClip [stump] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 392 MovieClip [tools] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 395 MovieClip [totempole] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Instance of Symbol 349 MovieClip "hitBox" in Symbol 398 MovieClip [tree] Frame 1
onClipEvent (load) {
this._alpha = 0;
}
Symbol 1097 MovieClip [Lazlo] Frame 1
stop();
Symbol 1140 MovieClip Frame 20
stop();
Symbol 1149 MovieClip Frame 20
stop();
Symbol 1154 MovieClip Frame 20
stop();
Symbol 1163 MovieClip Frame 20
stop();
Symbol 1164 MovieClip Frame 1
stop();
Symbol 1164 MovieClip Frame 2
stop();
Symbol 1164 MovieClip Frame 3
stop();
Symbol 1164 MovieClip Frame 4
stop();
Symbol 1164 MovieClip Frame 5
stop();
Symbol 1164 MovieClip Frame 6
stop();
Symbol 1164 MovieClip Frame 7
stop();
Symbol 1164 MovieClip Frame 8
stop();
Symbol 1165 MovieClip [paintBrush_0] Frame 5
stop();
Symbol 1168 MovieClip Frame 20
stop();
Symbol 1171 MovieClip Frame 20
stop();
Symbol 1174 MovieClip Frame 20
stop();
Symbol 1177 MovieClip Frame 20
stop();
Symbol 1178 MovieClip Frame 1
stop();
Symbol 1178 MovieClip Frame 2
stop();
Symbol 1178 MovieClip Frame 3
stop();
Symbol 1178 MovieClip Frame 4
stop();
Symbol 1178 MovieClip Frame 5
stop();
Symbol 1178 MovieClip Frame 6
stop();
Symbol 1178 MovieClip Frame 7
stop();
Symbol 1178 MovieClip Frame 8
stop();
Symbol 1179 MovieClip [paintBrush_1] Frame 5
stop();
Symbol 1182 MovieClip Frame 20
stop();
Symbol 1185 MovieClip Frame 20
stop();
Symbol 1188 MovieClip Frame 20
stop();
Symbol 1191 MovieClip Frame 20
stop();
Symbol 1192 MovieClip Frame 1
stop();
Symbol 1192 MovieClip Frame 2
stop();
Symbol 1192 MovieClip Frame 3
stop();
Symbol 1192 MovieClip Frame 4
stop();
Symbol 1192 MovieClip Frame 5
stop();
Symbol 1192 MovieClip Frame 6
stop();
Symbol 1192 MovieClip Frame 7
stop();
Symbol 1192 MovieClip Frame 8
stop();
Symbol 1193 MovieClip [paintBrush_2] Frame 5
stop();
Symbol 1196 MovieClip Frame 20
stop();
Symbol 1199 MovieClip Frame 20
stop();
Symbol 1202 MovieClip Frame 20
stop();
Symbol 1205 MovieClip Frame 20
stop();
Symbol 1206 MovieClip Frame 1
stop();
Symbol 1206 MovieClip Frame 2
stop();
Symbol 1206 MovieClip Frame 3
stop();
Symbol 1206 MovieClip Frame 4
stop();
Symbol 1206 MovieClip Frame 5
stop();
Symbol 1206 MovieClip Frame 6
stop();
Symbol 1206 MovieClip Frame 7
stop();
Symbol 1206 MovieClip Frame 8
stop();
Symbol 1207 MovieClip [paintBrush_3] Frame 5
stop();
Symbol 1224 MovieClip Frame 1
stop();
Symbol 1233 MovieClip [__Packages.GameBoard] Frame 0
class GameBoard extends MovieClip
{
var _quality, _paused, _cheatKeys, _keyListener, _scrollInterval, _tallyInterval, _screensMC, _parent, _time, _msgRoute, _hero, _enemyList, _levelIndex, _obstacleData, _enemyData, _newObstacles, _totalScore, _lifeBonus, _obsCount, _quotaList, soundMC, createEmptyMovieClip, _soundModule, _playField, onMouseUp, _enemy_edward, _enemy_chip, _enemy_skip, _tintArray, _quota, _paintMC, _obstacles, _allMCs, _paintBucketMax, _paintBucket, _paintDp, _paintTick, _paintCount, _hitCounter, _levelScore, _pntArray, onEnterFrame, _coverageBonus, _paintBonus, _tallyValue, _perfectBonus, startDrag;
function GameBoard () {
super();
trace("calling gameboard constructor");
loadTracker();
_quality = "low";
_paused = false;
_cheatKeys = false;
if (_cheatKeys == true) {
Key.addListener(this);
}
_keyListener = {};
_scrollInterval = {};
_tallyInterval = {};
_global.MSG_Run = 0;
_global.MSG_Jump = 1;
_global.MSG_EnemyHit = 2;
_global.MSG_Stop = 3;
_global.MSG_Skid = 4;
_screensMC = _parent.screens_mc;
_time = new Standard.Time();
_msgRoute = new Standard.Message.MsgRoute(_time);
var _local11 = _parent.attachMovie("Lazlo", "lazlo_mc", _parent.getNextHighestDepth());
_hero = new Hero(this, _local11);
_enemyList = [];
_levelIndex = 0;
_obstacleData = [];
_enemyData = [];
_newObstacles = [];
_totalScore = 0;
_lifeBonus = 500;
_obsCount = 0;
_obstacleData[0] = [];
_obstacleData[1] = [310, 235, "canoe"];
_obstacleData[2] = [450, 220, "bush1", 125, 220, "bush1"];
_obstacleData[3] = [145, 340, "cage", 490, 340, "cage", 310, 190, "bushwall"];
_obstacleData[4] = [145, 190, "bushwall", 425, 190, "bushwall", 295, 330, "bush1"];
_obstacleData[5] = [160, 185, "downtree", 440, 330, "downtree", 105, 330, "stump", 465, 185, "tools"];
_obstacleData[6] = [485, 185, "chair", 485, 345, "chair", 490, 270, "cooler", 125, 240, "speaker"];
_obstacleData[7] = [600, 245, "downtree", 35, 245, "downtree", 310, 250, "tree"];
_obstacleData[8] = [90, 335, "stump", 510, 150, "stump", 385, 335, "tree", 250, 200, "tree"];
_obstacleData[9] = [310, 250, "canoe", 85, 345, "cage", 505, 345, "cage"];
_obstacleData[10] = [120, 215, "grass", 520, 245, "totempole", 115, 290, "grass", 310, 165, "grass", 310, 345, "grass"];
_obstacleData[11] = [310, 225, "cow", 110, 235, "sacks", 505, 225, "sacks"];
_obstacleData[12] = [310, 245, "chest", 310, 345, "chest", 310, 145, "chest"];
_obstacleData[13] = [210, 175, "cage", 90, 285, "cage", 375, 360, "tree", 510, 270, "tree"];
_obstacleData[14] = [115, 245, "speaker", 515, 245, "totempole", 310, 170, "bush2", 320, 335, "bushwall"];
_obstacleData[15] = [130, 175, "canoe", 130, 335, "canoe", 340, 245, "canoe", 485, 160, "sacks", 485, 335, "sacks"];
_obstacleData[16] = [100, 350, "tree", 300, 335, "totempole", 485, 350, "tree", 215, 175, "chest", 400, 175, "chest"];
_obstacleData[17] = [520, 245, "totempole", 115, 245, "speaker", 400, 345, "chest", 240, 165, "chest"];
_obstacleData[18] = [235, 235, "sacks", 365, 295, "sacks", 100, 170, "grass", 490, 345, "grass"];
_obstacleData[19] = [310, 250, "cow", 85, 190, "tools", 510, 180, "tools", 80, 345, "tools", 500, 345, "tools"];
_quotaList = [];
_quotaList[0] = 50;
_quotaList[1] = 50;
_quotaList[2] = 55;
_quotaList[3] = 55;
_quotaList[4] = 60;
_quotaList[5] = 60;
_quotaList[6] = 65;
_quotaList[7] = 65;
_quotaList[8] = 70;
_quotaList[9] = 70;
_quotaList[10] = 70;
_quotaList[11] = 75;
_quotaList[12] = 75;
_quotaList[13] = 75;
_quotaList[14] = 80;
_quotaList[15] = 80;
_quotaList[16] = 85;
_quotaList[17] = 85;
_quotaList[18] = 90;
_quotaList[19] = 90;
_enemyData[0] = [150, 300];
_enemyData[1] = [150, 300];
_enemyData[2] = [150, 300, 400, 300];
_enemyData[3] = [150, 300, 400, 300];
_enemyData[4] = [150, 300, 400, 300];
_enemyData[5] = [150, 300, 400, 300];
_enemyData[6] = [150, 300, 400, 300, 450, 300];
_enemyData[7] = [150, 300, 400, 300, 450, 300];
_enemyData[8] = [150, 300, 400, 300, 450, 300];
_enemyData[9] = [150, 300, 400, 300, 450, 300];
_enemyData[10] = [150, 365, 400, 300, 450, 300];
_enemyData[11] = [150, 300, 400, 300, 450, 300];
_enemyData[12] = [150, 300, 400, 350, 450, 300];
_enemyData[13] = [150, 300, 400, 300, 450, 300];
_enemyData[14] = [150, 300, 400, 300, 450, 300];
_enemyData[15] = [150, 300, 400, 300, 450, 300];
_enemyData[16] = [150, 300, 400, 300, 450, 300];
_enemyData[17] = [150, 300, 400, 300, 450, 300];
_enemyData[18] = [150, 300, 400, 275, 450, 300];
_enemyData[19] = [150, 300, 400, 300, 450, 300];
soundMC = createEmptyMovieClip("sound_mc", 12000);
_soundModule = new Standard.SoundModule(soundMC);
_global.MUSIC_MUTE = false;
_global.MUSIC_VOL = 20;
var _local5 = ["splash", "collision", "footstep1", "footstep2", "footstep3", "footstep4", "footstep5", "footstep6", "jump", "skid", "music_0", "music_1", "music_2", "music_title", "music_pass", "music_fail", "tally"];
var _local4 = 0;
while (_local4 < _local5.length) {
var _local6 = _soundModule.LoadSound(_local5[_local4]);
_local6.attachSound(_local5[_local4]);
_local4++;
}
_playField = new Standard.Geometry.Rect(10, 110, 590, 390);
Key.addListener(_hero);
onMouseUp = null;
var _local10 = _parent.attachMovie("Edward", "edward_mc", _parent.getNextHighestDepth());
_enemy_edward = new Edward(this, _local10, _hero._mc, 10);
var _local8 = _parent.attachMovie("Chip", "chip_mc", _parent.getNextHighestDepth());
_local8._visible = false;
_enemy_chip = new Chip(this, _local8, _hero._mc, 20);
var _local9 = _parent.attachMovie("Skip", "skip_mc", _parent.getNextHighestDepth());
_local9._visible = false;
_enemy_skip = new Chip(this, _local9, _hero._mc, 30);
_tintArray = [];
_tintArray.push({r:130, g:80, b:135});
_tintArray.push({r:55, g:105, b:55});
_tintArray.push({r:25, g:25, b:145});
_tintArray.push({r:255, g:153, b:0});
var _local7 = _tintArray[0];
tintPaintBar(_local7.r, _local7.g, _local7.b);
stopAllSounds();
init();
}
function init() {
trace("calling gameboard init");
_soundModule.PlayMusic(String(_levelIndex % 3));
_quota = _quotaList[_levelIndex];
_screensMC.swapDepths(750000);
_screensMC.gotoAndPlay("levelPrompt");
_screensMC.levelPrompt_mc.levelText.text = "LEVEL " + (_levelIndex + 1);
_screensMC.levelPrompt_mc.quotaText.text = ("Paint " + _quota) + "% of the ground to continue.";
var _local4 = _parent.createEmptyMovieClip("paint", 4);
_paintMC = _parent.paint;
_obstacles = [];
_allMCs = [];
_allMCs.push(_hero._mc);
_hero.init();
_hero._mc.swapDepths(100);
initEnemies();
_paintBucketMax = 5000;
_paintBucket = _paintBucketMax;
_paintDp = 0;
_paintTick = 0;
_paintCount = 0;
_hitCounter = 0;
_levelScore = 0;
_pntArray = new Array(20);
var _local3 = 0;
while (_local3 < 20) {
_pntArray[_local3] = new Array(16);
var _local2 = 0;
while (_local2 < 16) {
_pntArray[_local3][_local2] = 0;
_local2++;
}
_local3++;
}
}
function loadTracker() {
trace("\n----- loading tracker swf -----\n");
var _local1 = new Date().getTime();
}
function restart() {
loadTracker();
init();
}
function startFromZero() {
loadTracker();
_levelIndex = 0;
_totalScore = 0;
_parent.score_txt.text = _totalScore;
var _local3 = _tintArray[0];
tintPaintBar(_local3.r, _local3.g, _local3.b);
_parent._BackGround._x = 0;
_hero._mc._x = (_hero._mc._y = -200);
_enemy_edward._mc._x = (_enemy_edward._mc._y = -200);
_enemy_chip._mc._x = (_enemy_chip._mc._y = -200);
_enemy_skip._mc._x = (_enemy_skip._mc._x = -200);
var _local2 = 0;
while (_local2 < _newObstacles.length) {
trace("removing " + _newObstacles[_local2].mc);
_newObstacles[_local2].mc.removeMovieClip();
_local2++;
}
init();
}
function clearPaint() {
_parent.paint._x = 0;
for (var _local2 in _parent.paint) {
trace("removing " + _parent.paint[_local2]);
_parent.paint[_local2].removeMovieClip();
}
_parent.paint.removeMovieClip();
_parent.paintCoverage_mc.gotoAndStop(1);
_parent.paintSupply_mc.gotoAndStop(100);
}
function startGameEngine() {
onEnterFrame = update;
}
function stopGameEngine() {
onEnterFrame = null;
}
function initEnemies() {
trace("### initEnemies() ");
_enemyList = [];
if (_enemyData[_levelIndex][0] != null) {
var _local3 = _enemyData[_levelIndex][0];
var _local2 = _enemyData[_levelIndex][1];
_enemy_edward.init(_local3, _local2);
_allMCs.push(_enemy_edward._mc);
_enemyList.push(_enemy_edward);
}
if (_enemyData[_levelIndex][2] != null) {
var _local3 = _enemyData[_levelIndex][2];
var _local2 = _enemyData[_levelIndex][3];
_enemy_chip.init(_local3, _local2);
_enemy_chip.setSpeedMax(0.15);
_allMCs.push(_enemy_chip._mc);
_enemyList.push(_enemy_chip);
}
if (_enemyData[_levelIndex][4] != null) {
var _local3 = _enemyData[_levelIndex][4];
var _local2 = _enemyData[_levelIndex][5];
_enemy_skip.init(_local3, _local2);
_enemy_skip.setSpeedMax(0.15);
_allMCs.push(_enemy_skip._mc);
_enemyList.push(_enemy_skip);
}
}
function update() {
if (_paused == true) {
return(undefined);
}
_time.MarkTimeThisTick();
_msgRoute.Update();
_paintTick++;
var _local2 = _enemyList.length;
while (_local2--) {
_enemyList[_local2].update();
}
_hero.update();
updatePaint();
checkLevel();
}
function paint(x, y) {
if (checkPaintGrid(_hero._mc._x, _hero._mc._y) == false) {
var _local2 = _parent.paint.attachMovie("paintBrush_" + (_levelIndex % 4), "pb" + _paintDp, _paintDp++);
trace(">>> painting : " + _paintCount);
var _local4 = 30 * Math.floor(x / 30);
var _local3 = 25 * Math.floor(y / 25);
_local2._x = 15 + _local4;
_local2._y = 10 + _local3;
_local2.paint.gotoAndStop(random(8) + 1);
_paintBucket = _paintBucket - 15;
var _local6 = Math.floor(_local4 / 30);
var _local5 = Math.floor(_local3 / 25);
_pntArray[_local6][_local5] = 1;
_paintCount++;
var _local7 = getCoverage();
_parent.paintCoverage_mc.gotoAndStop(2 + Math.floor((100 * _local7) / _quota));
} else {
trace("not painting...");
}
}
function onKeyUp() {
if (Key.getCode() == 80) {
_paused = !_paused;
}
if (Key.getCode() == 87) {
endLevel("pass");
}
if (Key.getCode() == 76) {
endLevel("fail");
}
if (Key.getCode() == 77) {
_global.MUSIC_MUTE = !_global.MUSIC_MUTE;
_soundModule.SetMusicMute(_global.MUSIC_MUTE);
}
}
function checkPaintGrid(x, y) {
var _local3 = Math.floor(x / 30);
var _local2 = Math.floor(y / 25);
trace((((("checkPaintGrid(" + _local3) + ",") + _local2) + ") = ") + _pntArray[_local3][_local2]);
if (_pntArray[_local3][_local2] == 1) {
return(true);
}
return(false);
}
function getCoverage() {
var _local2 = _paintCount / 2.4;
return(_local2);
}
function checkLevel() {
if (_paintBucket < 0) {
_paintBucket = 0;
endLevel("fail");
} else if (getCoverage() >= _quota) {
endLevel("pass");
}
}
function losePaint() {
_paintBucket = _paintBucket - 1000;
updatePaint();
_soundModule.PlaySound("collision", 150, 0, 0, 1);
_hitCounter++;
}
function tintPaintBar(r, g, b) {
var _local3 = new Color(_parent.paintSupply_mc);
var _local2 = _local3.getTransform();
_local2.rb = r;
_local2.gb = g;
_local2.bb = b;
_local3.setTransform(_local2);
}
function updatePaint() {
_parent.paintSupply_mc.gotoAndStop(1 + Math.floor((100 * _paintBucket) / _paintBucketMax));
}
function endLevel(stat) {
updatePaint();
_screensMC.gotoAndPlay(stat);
if (stat == "fail") {
if (_lifeBonus > 0) {
_lifeBonus = _lifeBonus - 100;
}
_soundModule.PlayMusic("fail");
_screensMC.loseScreen.levelText.text = _levelIndex;
_screensMC.loseScreen.score.text = "Score : " + _totalScore;
} else {
levelTally();
this["music_" + (_levelIndex % 3)].stop();
_soundModule.PlayMusic("none");
_soundModule.PlaySound("music_pass", 50, 0, 0, 1);
_levelIndex++;
}
stopGameEngine();
}
function levelTally() {
_screensMC.Tally_mc.continue_btn._visible = false;
_coverageBonus = getCoverage() * 100;
_paintBonus = (10000 * _paintBucket) / _paintBucketMax;
_screensMC.Tally_mc.gotoAndStop("coverage");
_soundModule.PlaySound("tally", 100, 0, 0, 9999);
_tallyValue = 0;
_tallyInterval = setInterval(this, "tallyCoverageBonus", 30);
}
function tallyCoverageBonus() {
if (_tallyValue < _coverageBonus) {
_tallyValue = _tallyValue + 100;
_totalScore = _totalScore + 100;
_levelScore = _levelScore + 100;
_screensMC.Tally_mc.coverageBonus.text = _tallyValue;
_screensMC.Tally_mc.levelscore.text = _levelScore;
_screensMC.Tally_mc._totalScore.text = _totalScore;
_parent.paintCoverage_mc.gotoAndStop(1 + Math.floor(100 - ((100 * _tallyValue) / _coverageBonus)));
} else {
clearInterval(_tallyInterval);
_tallyValue = 0;
_screensMC.Tally_mc.gotoAndStop("paint");
_tallyInterval = setInterval(this, "tallyPaintBonus", 50);
}
}
function tallyPaintBonus() {
if (_tallyValue < _paintBonus) {
_tallyValue = _tallyValue + 100;
_totalScore = _totalScore + 100;
_levelScore = _levelScore + 100;
_screensMC.Tally_mc.paintBonus.text = _tallyValue;
_screensMC.Tally_mc.levelscore.text = _levelScore;
_screensMC.Tally_mc._totalScore.text = _totalScore;
_parent.score_txt.text = _totalScore;
_parent.paintSupply_mc.gotoAndStop(1 + Math.floor((100 * (_paintBonus - _tallyValue)) / 10000));
} else {
clearInterval(_tallyInterval);
_tallyValue = 0;
_screensMC.Tally_mc.gotoAndStop("life");
_tallyInterval = setInterval(this, "tallyLifeBonus", 50);
}
}
function tallyLifeBonus() {
if (_tallyValue < _lifeBonus) {
_tallyValue = _tallyValue + 100;
_totalScore = _totalScore + 100;
_levelScore = _levelScore + 100;
_screensMC.Tally_mc._lifeBonus.text = _tallyValue;
_screensMC.Tally_mc.levelscore.text = _levelScore;
_screensMC.Tally_mc._totalScore.text = _totalScore;
_parent.score_txt.text = _totalScore;
} else {
clearInterval(_tallyInterval);
_tallyValue = 0;
if ((_hitCounter == 0) && (_lifeBonus == 500)) {
_perfectBonus = 1000;
_screensMC.Tally_mc.gotoAndStop("perfect");
} else {
_perfectBonus = 0;
_screensMC.Tally_mc.gotoAndStop("noperfect");
}
_tallyInterval = setInterval(this, "tallyPerfectBonus", 50);
}
}
function tallyPerfectBonus() {
if (_perfectBonus == 0) {
_screensMC.Tally_mc.perfectBonus.text = 0;
}
if (_tallyValue < _perfectBonus) {
_tallyValue = _tallyValue + 100;
_totalScore = _totalScore + 100;
_levelScore = _levelScore + 100;
_screensMC.Tally_mc.perfectBonus.text = _tallyValue;
_screensMC.Tally_mc.levelscore.text = _levelScore;
_screensMC.Tally_mc._totalScore.text = _totalScore;
_parent.score_txt.text = _totalScore;
} else {
_tallyValue = 0;
clearInterval(_tallyInterval);
endTally();
}
}
function endTally() {
_soundModule.StopSound("tally");
_lifeBonus = 500;
_screensMC.Tally_mc.continue_btn._visible = true;
_keyListener.owner = this;
_keyListener.onKeyUp = function () {
trace("### key #");
Key.removeListener(this);
this.owner._screensMC.play();
};
Key.addListener(_keyListener);
}
function killKeyListener() {
Key.removeListener(_keyListener);
}
function initObstacles() {
trace("### initObstacles() ### lvl: " + _levelIndex);
_obstacles = [];
trace("*** copying new obstacles to _obstacles");
var _local3 = 0;
while (_local3 < _newObstacles.length) {
var _local4 = {};
_local4.x = _newObstacles[_local3].x;
_local4.y = _newObstacles[_local3].y;
_local4.mc = _newObstacles[_local3].mc;
_obstacles.push(_local4);
_local3++;
}
_newObstacles = [];
var _local5 = _obstacleData[_levelIndex];
var _local9 = _local5.length;
_local3 = 0;
while (_local3 < _local9) {
var _local8 = _local5[_local3];
var _local7 = _local5[_local3 + 1];
var _local2 = _parent.attachMovie(_local5[_local3 + 2], "obstacle_" + _obsCount, 30 + _obsCount);
_obsCount++;
_local2._x = _local8 + 600;
_local2._y = _local7;
_local2.swapDepths((_local7 * 1000) + (_local3 * 10));
if (_cheatKeys == true) {
_local2.onPress = startDrag;
_local2.onRelease = function () {
this.stopDrag();
trace(((("\n>>> new obstacle position:" + this._x) + ",") + this._y) + " <<<<<<<\n");
};
}
_newObstacles.push({x:_local8, y:_local7, mc:_local2});
_local3 = _local3 + 3;
}
}
function setBackground() {
killKeyListener();
if (_levelIndex == 20) {
trace(" !!!!!!!!!!!!!!! YOU WIN !!!!!!!!!!!!!!");
_screensMC.gotoAndPlay("win");
_screensMC.winScreen.score.text = "Score : " + _totalScore;
_soundModule.PlayMusic("title");
if (_root.login) {
var _local4 = new LoadVars();
_local4.gameID = _root.gameID;
_local4.scoreID = _root.sc;
_local4.score = _totalScore;
_local4.sm = udt.tools.SecurityTool.fnMD5(((_root.gameID + _root.sc) + _root.sn) + _local4.score);
_local4.onLoad = function () {
this.getURL("top10.php?gameID=" + _root.gameID, "top10");
};
_local4.sendAndLoad("submitGameScoreProc.php", _local4, "POST");
_screensMC.winScreen.scoreSubmitted.text = "Thank you for playing. Your score has been submitted.";
} else {
_screensMC.winScreen.scoreSubmitted.text = "Thank you for playing. Please log in to submit the score.";
}
_hero._mc._x = (_hero._mc._y = -200);
_enemy_edward._mc._x = (_enemy_edward._mc._y = -200);
_enemy_chip._mc._x = (_enemy_chip._mc._y = -200);
_enemy_skip._mc._x = (_enemy_skip._mc._x = -200);
return(undefined);
}
_screensMC.gotoAndStop("hide");
if (_levelIndex > 0) {
initObstacles();
_hero.setEndLevelCoords();
var _local3 = 0;
while (_local3 < _enemyList.length) {
_enemyList[_local3].setEndLevelCoords();
_local3++;
}
_scrollInterval = setInterval(this, "moveBackGround", 32);
_hero._mc.lazloColor.gotoAndStop("levelRun");
_local3 = 0;
while (_local3 < _enemyList.length) {
_enemyList[_local3]._mc.gotoAndStop("levelRun");
_local3++;
}
}
_parent.paintCoverage_mc.gotoAndStop(1);
_parent.paintSupply_mc.gotoAndStop(100);
var _local5 = _tintArray[_levelIndex % 4];
tintPaintBar(_local5.r, _local5.g, _local5.b);
}
function moveBackGround() {
_root._BackGround._x = _root._BackGround._x - 15;
_parent.paint._x = _parent.paint._x - 15;
_parent.paintMask._x = _parent.paintMask._x - 15;
if (_root._BackGround._x <= -2400) {
_root._BackGround._x = _root._BackGround._x + 2400;
}
var _local3 = 0;
while (_local3 < _obstacles.length) {
_obstacles[_local3].mc._x = _obstacles[_local3].mc._x - 15;
_local3++;
}
_local3 = 0;
while (_local3 < _newObstacles.length) {
_newObstacles[_local3].mc._x = _newObstacles[_local3].mc._x - 15;
_local3++;
}
_hero.moveTowardSpawnPoint();
_local3 = 0;
while (_local3 < _enemyList.length) {
_enemyList[_local3].moveTowardSpawnPoint();
_local3++;
}
if ((_root._BackGround._x % 600) == 0) {
clearInterval(_scrollInterval);
cleanUp();
}
}
function cleanUp() {
trace("### cleanUp() ###");
_hero._mc.lazloColor.gotoAndStop("idle");
for (var _local2 in _enemyList) {
_enemyList[_local2]._mc.gotoAndStop(32);
}
var _local2 = 0;
while (_local2 < _obstacles.length) {
trace("removing " + _obstacles[_local2].mc);
_obstacles[_local2].mc.removeMovieClip();
_local2++;
}
clearPaint();
init();
}
}
Symbol 1234 MovieClip [__Packages.Hero] Frame 0
class Hero
{
var _gb, _mc, _frameCounter, _spriteController, _states, _fsm, _colorList, _currentColor, _speed, _vx, _vy, _dir, _jumping, _collisionEnabled, _endLevelX, _endLevelY;
function Hero (gb, mc) {
_gb = gb;
_mc = mc;
_frameCounter = 0;
_spriteController = new Standard.SpriteController();
_spriteController.SetKey(_animKey);
_states = ["STATE_Global", "STATE_Init", "STATE_Idle", "STATE_Running", "STATE_Jumping", "STATE_LevelFail", "STATE_LevelPass", "STATE_Hit", "STATE_Skidding"];
_fsm = new Standard.Simple_FSM(this, _states, _gb._time, _gb._msgRoute);
_colorList = ["purple", "green", "blue", "orange"];
init();
}
function init(Void) {
_currentColor = _colorList[_gb._levelIndex % 4];
_speed = 0;
_mc._x = _spawnX;
_mc._y = _spawnY;
_vx = 0;
_vy = 0;
_dir = "s";
_jumping = false;
_collisionEnabled = true;
var _local2 = _spriteController.PlayAnimation(_dir + "_idle");
_fsm.SetState(STATE_INIT);
_mc.gotoAndStop(_currentColor);
_mc.lazloColor.gotoAndStop(_local2);
}
function update(Void) {
_fsm.Update();
}
function onKeyUp() {
if ((((Key.isDown(90) || (Key.isDown(37))) || (Key.isDown(38))) || (Key.isDown(39))) || (Key.isDown(40))) {
return(undefined);
}
_fsm.SendDelayedMsgToMe(0, _global.MSG_Skid, 1, null);
}
function setEndLevelCoords() {
_endLevelX = _mc._x;
_endLevelY = _mc._y;
}
function moveTowardSpawnPoint() {
var _local3 = (_spawnX - _endLevelX) / 40;
var _local2 = (_spawnY - _endLevelY) / 40;
_mc._x = _mc._x + _local3;
_mc._y = _mc._y + _local2;
var _local4 = 200 + (_mc._y * 1000);
_mc.swapDepths(_local4);
}
function getKeys() {
if ((((Key.isDown(90) || (Key.isDown(37))) || (Key.isDown(38))) || (Key.isDown(39))) || (Key.isDown(40))) {
if (Key.isDown(90)) {
if (!_jumping) {
_fsm.SendDelayedMsgToMe(0, _global.MSG_Jump, 1, null);
}
return(undefined);
}
var _local8 = Number(Key.isDown(37));
var _local6 = 2 * Number(Key.isDown(38));
var _local5 = 4 * Number(Key.isDown(39));
var _local4 = 8 * Number(Key.isDown(40));
var _local7 = ((_local8 + _local6) + _local5) + _local4;
var _local3;
switch (_local7) {
case 0 :
return(undefined);
case 1 :
_local3 = "w";
break;
case 2 :
_local3 = "n";
break;
case 4 :
_local3 = "e";
break;
case 5 :
_local3 = _dir;
return(undefined);
case 8 :
_local3 = "s";
break;
case 10 :
_local3 = _dir;
break;
case 3 :
_local3 = "nw";
break;
case 6 :
_local3 = "ne";
break;
case 12 :
_local3 = "se";
break;
case 9 :
_local3 = "sw";
}
moveDir(_local3);
_fsm.SendDelayedMsgToMe(0, _global.MSG_Run, 1, null);
}
}
function checkObstacles(x, y) {
var _local3 = _gb._newObstacles;
var _local2 = _local3.length;
while (_local2--) {
if (_local3[_local2].mc.hitBox.hitTest(x, y, true) == true) {
return(true);
}
}
return(false);
}
function checkLanding() {
var _local3 = (_mc._x + (12 * _vx)) + 3;
var _local2 = (_mc._y + (12 * _vy)) + 3;
if (checkObstacles(_local3, _local2) == true) {
return(true);
}
return(false);
}
function moveDir(d) {
if (_speed < _speedMax) {
_speed++;
}
if (d != _dir) {
var _local9 = _spriteController.PlayAnimation(d + "_run");
_mc.lazloColor.gotoAndStop(_local9);
_dir = d;
}
var _local4;
var _local3;
switch (_dir) {
case "w" :
_local4 = -_speed;
_local3 = 0;
break;
case "n" :
_local4 = 0;
_local3 = -_speed;
break;
case "e" :
_local4 = _speed;
_local3 = 0;
break;
case "s" :
_local4 = 0;
_local3 = _speed;
break;
case "nw" :
_local4 = (-_speed) / 1.4;
_local3 = (-_speed) / 1.4;
break;
case "ne" :
_local4 = _speed / 1.4;
_local3 = (-_speed) / 1.4;
break;
case "se" :
_local4 = _speed / 1.4;
_local3 = _speed / 1.4;
break;
case "sw" :
_local4 = (-_speed) / 1.4;
_local3 = _speed / 1.4;
break;
default :
_local4 = 0;
_local3 = 0;
}
if ((((_vx != 0) && (_vy != 0)) && (_local4 == (-_vx))) && (_local3 == (-_vy))) {
_fsm.SendDelayedMsgToMe(0, _global.MSG_Skid, 1, null);
}
_vx = _local4;
_vy = _local3;
var _local6 = _mc._x + _vx;
var _local5 = _mc._y + _vy;
if (!Standard.Geometry.Rect.pointWithin(_local6, _local5, _gb._playField)) {
return(undefined);
}
if ((checkObstacles(_local6, _local5) == true) && (_collisionEnabled)) {
return(undefined);
}
_mc._x = _local6;
_mc._y = _local5;
var _local8 = 200 + (_mc._y * 1000);
_mc.swapDepths(_local8);
}
function GetStateMachine(Void) {
return(_fsm);
}
function STATE_Global_Message(oMsg) {
}
function STATE_Init_Update(Void) {
_fsm.SetState(STATE_IDLE);
}
function STATE_Init_Exit(Void) {
}
function STATE_Idle_Enter(Void) {
var _local2 = _spriteController.PlayAnimation(_dir + "_idle");
_mc.lazloColor.gotoAndStop(_local2);
}
function STATE_Idle_Update(Void) {
_mc.lazloColor.gotoAndStop(_spriteController.Update());
getKeys();
}
function STATE_Idle_Message(oMsg) {
switch (oMsg.GetMsgName()) {
case _global.MSG_EnemyHit :
_fsm.SetState(STATE_HIT);
break;
case _global.MSG_Run :
_fsm.SetState(STATE_RUNNING);
}
}
function STATE_Idle_Exit(Void) {
}
function STATE_Running_Enter(Void) {
var _local2 = _spriteController.PlayAnimation(_dir + "_run");
_mc.lazloColor.gotoAndStop(_local2);
}
function STATE_Running_Update(Void) {
getKeys();
_mc.lazloColor.gotoAndStop(_spriteController.Update());
_gb.paint(_mc._x, _mc._y);
_frameCounter++;
if ((_frameCounter % 8) == 0) {
var _local2 = random(6);
switch (_local2) {
case 0 :
_gb._soundModule.PlaySound("footstep1", 350, 0, 0, 0);
case 1 :
_gb._soundModule.PlaySound("footstep2", 350, 0, 0, 0);
case 2 :
_gb._soundModule.PlaySound("footstep3", 350, 0, 0, 0);
case 3 :
_gb._soundModule.PlaySound("footstep4", 350, 0, 0, 0);
case 4 :
_gb._soundModule.PlaySound("footstep5", 350, 0, 0, 0);
case 5 :
_gb._soundModule.PlaySound("footstep6", 350, 0, 0, 0);
}
}
}
function STATE_Running_Message(oMsg) {
switch (oMsg.GetMsgName()) {
case _global.MSG_Jump :
_fsm.SetState(STATE_JUMPING);
break;
case _global.MSG_EnemyHit :
_fsm.SetState(STATE_HIT);
break;
case _global.MSG_Stop :
_fsm.SetState(STATE_IDLE);
break;
case _global.MSG_Skid :
_fsm.SetState(STATE_SKIDDING);
}
}
function STATE_Running_Exit(Void) {
}
function STATE_Skidding_Enter(Void) {
var _local2 = _spriteController.PlayAnimation(_dir + "_skid");
_mc.lazloColor.gotoAndStop(_local2);
_gb._soundModule.PlaySound("skid", 100, 0, 0, 1);
}
function STATE_Skidding_Update(Void) {
moveDir(_dir);
if (_spriteController.AnimationComplete()) {
_fsm.SetState(STATE_IDLE);
} else {
_speed--;
_mc.lazloColor.gotoAndStop(_spriteController.Update());
}
}
function STATE_Skidding_Message(oMsg) {
}
function STATE_Skidding_Exit(Void) {
}
function STATE_Jumping_Enter(Void) {
_jumping = true;
_collisionEnabled = checkLanding();
var _local2 = _spriteController.PlayAnimation(_dir + "_jump");
_gb._soundModule.PlaySound("jump", 100, 0, 0, 1);
_mc.lazloColor.gotoAndStop(_local2);
}
function STATE_Jumping_Update(Void) {
moveDir(_dir);
if (_spriteController.AnimationComplete()) {
_fsm.SetState(STATE_IDLE);
} else {
_mc.lazloColor.gotoAndStop(_spriteController.Update());
}
}
function STATE_Jumping_Message(oMsg) {
}
function STATE_Jumping_Exit(Void) {
_jumping = false;
_collisionEnabled = true;
}
function STATE_Hit_Enter(Void) {
_collisionEnabled = false;
_gb.losePaint();
var _local4 = _spriteController.PlayAnimation(_dir + "_hit");
_mc.lazloColor.gotoAndStop(_local4);
var _local3 = 0;
while (_local3 < _gb._enemyList.length) {
_fsm.SendMsg(_global.MSG_EnemyHit, _gb._enemyList[_local3], null);
_fsm.SendDelayedMsg(2, _global.MSG_Run, _gb._enemyList[_local3]);
_local3++;
}
}
function STATE_Hit_Update(Void) {
if (_spriteController.AnimationComplete()) {
_fsm.SetState(STATE_IDLE);
} else {
_mc.lazloColor.gotoAndStop(_spriteController.Update());
}
}
function STATE_Hit_Message(oMsg) {
}
function STATE_Hit_Exit(Void) {
_collisionEnabled = true;
}
var _speedMax = 7;
var _spawnX = 200;
var _spawnY = 150;
var STATE_GLOBAL = 0;
var STATE_INIT = 1;
var STATE_IDLE = 2;
var STATE_RUNNING = 3;
var STATE_JUMPING = 4;
var STATE_LEVELFAIL = 5;
var STATE_LEVELPASS = 6;
var STATE_HIT = 7;
var STATE_SKIDDING = 8;
static var _animKey = {w_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, e_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, n_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, s_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, ne_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, se_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, nw_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, sw_idle:{frames:[260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261], loop:true}, w_run:{frames:[1, 2, 3, 4, 5], loop:true}, e_run:{frames:[10, 11, 12, 13, 14], loop:true}, n_run:{frames:[20, 21, 22, 23, 24, 25, 26, 27, 28, 29], loop:true}, s_run:{frames:[30, 31, 32, 33, 34, 35, 36, 37, 38, 39], loop:true}, ne_run:{frames:[40, 41, 42, 43, 44], loop:true}, se_run:{frames:[50, 51, 52, 53, 54], loop:true}, nw_run:{frames:[60, 61, 62, 63, 64], loop:true}, sw_run:{frames:[70, 71, 72, 73, 74], loop:true}, w_jump:{frames:[80, 81, 82, 83, 84, 85, 83, 84, 85, 86, 88], loop:false}, e_jump:{frames:[90, 91, 92, 93, 94, 95, 93, 94, 95, 96, 98], loop:false}, n_jump:{frames:[100, 101, 102, 103, 104, 105, 103, 104, 105, 106, 108], loop:false}, s_jump:{frames:[110, 111, 112, 113, 114, 115, 113, 114, 115, 116, 118], loop:false}, ne_jump:{frames:[120, 121, 122, 123, 124, 125, 123, 124, 125, 126, 128], loop:false}, se_jump:{frames:[130, 131, 132, 133, 134, 135, 133, 134, 135, 136, 138], loop:false}, nw_jump:{frames:[140, 141, 142, 143, 144, 145, 143, 144, 145, 146, 148], loop:false}, sw_jump:{frames:[150, 151, 152, 153, 154, 155, 153, 154, 155, 156, 158], loop:false}, w_hit:{frames:[240, 240, 240, 240, 241, 240, 240, 240, 240, 241, 240, 240, 240, 240, 241], loop:false}, nw_hit:{frames:[240, 240, 240, 240, 241, 240, 240, 240, 240, 241, 240, 240, 240, 240, 241], loop:false}, sw_hit:{frames:[240, 240, 240, 240, 241, 240, 240, 240, 240, 241, 240, 240, 240, 240, 241], loop:false}, s_hit:{frames:[240, 240, 240, 240, 241, 240, 240, 240, 240, 241, 240, 240, 240, 240, 241], loop:false}, n_hit:{frames:[250, 250, 250, 250, 251, 250, 250, 250, 250, 251, 250, 250, 250, 250, 251], loop:false}, ne_hit:{frames:[250, 250, 250, 250, 251, 250, 250, 250, 250, 251, 250, 250, 250, 250, 251], loop:false}, e_hit:{frames:[250, 250, 250, 250, 251, 250, 250, 250, 250, 251, 250, 250, 250, 250, 251], loop:false}, se_hit:{frames:[250, 250, 250, 250, 251, 250, 250, 250, 250, 251, 250, 250, 250, 250, 251], loop:false}, w_skid:{frames:[160, 161, 162, 163, 164, 165], loop:false}, e_skid:{frames:[170, 171, 172, 173, 174, 175], loop:false}, n_skid:{frames:[180, 181, 182, 183, 184, 185], loop:false}, s_skid:{frames:[190, 191, 192, 193, 194, 195], loop:false}, ne_skid:{frames:[200, 201, 202, 203, 204, 205], loop:false}, se_skid:{frames:[210, 211, 212, 213, 214, 215], loop:false}, nw_skid:{frames:[220, 221, 222, 223, 224, 225], loop:false}, sw_skid:{frames:[230, 231, 232, 233, 234, 235], loop:false}};
}
Symbol 1235 MovieClip [__Packages.Standard.StateMachine] Frame 0
class Standard.StateMachine
{
var _Owner, _time, _msgRoute, _currentState, _stateChange, _nextState, _timeOnEnter, _ccMessagesToGameObject;
function StateMachine (obj, time, msgRoute) {
_Owner = obj;
_time = time;
_msgRoute = msgRoute;
_currentState = 1;
_stateChange = false;
_nextState = false;
_timeOnEnter = 0;
_ccMessagesToGameObject = 0;
}
function Initialize(Void) {
_currentState = STATE_Initialize;
_stateChange = false;
_nextState = false;
_timeOnEnter = 0;
_ccMessagesToGameObject = 0;
Process(EVENT_Enter, null);
}
function Process(event, msg) {
if (((event == EVENT_Message) && (msg != null)) && (GetCCReceiver() > 0)) {
}
if (States(event, msg, _currentState) == false) {
States(event, msg, STATE_Global);
}
var _local2 = 50;
while (_stateChange && ((_local2--) >= 0)) {
_stateChange = false;
States(EVENT_Exit, 0, _currentState);
_currentState = _nextState;
_timeOnEnter = _time.GetCurTime();
States(EVENT_Enter, 0, _currentState);
}
}
function States() {
}
function Update(Void) {
Process(EVENT_Update, null);
}
function SetState(newState) {
_stateChange = true;
_nextState = newState;
}
function GetState(Void) {
return(_currentState);
}
function GetStateChange(Void) {
return(_stateChange);
}
function GetTimeInState(Void) {
return(_time.GetCurTime() - _timeOnEnter);
}
function GetCurTime(Void) {
return(_time.GetCurTime());
}
function SendMsg(name, receiver, data) {
_msgRoute.SendMsg(0, name, _Owner, receiver, STATE_Global, data);
}
function SendDelayedMsg(delay, name, receiver, data) {
trace("-- StateMachine: SendDelayedMsg() ---");
_msgRoute.SendMsg(delay, name, _Owner, receiver, STATE_Global, data);
}
function SendDelayedMsgToMe(delay, name, scope, data) {
if (scope == SCOPE_TO_THIS_STATE) {
_msgRoute.SendMsg(delay, name, _Owner, _Owner, _currentState, data);
} else {
_msgRoute.SendMsg(delay, name, _Owner, _Owner, STATE_Global, data);
}
}
function SetCCReceiver(obj) {
_ccMessagesToGameObject = obj;
}
function ClearCCReceiver(Void) {
_ccMessagesToGameObject = 0;
}
function GetCCReceiver(Void) {
return(_ccMessagesToGameObject);
}
function toString(Void) {
return("StateMachine(), _Owner: " + _Owner._mc);
}
static var EVENT_INVALID = 0;
static var EVENT_Enter = 1;
static var EVENT_Message = 2;
static var EVENT_Update = 3;
static var EVENT_Exit = 4;
static var STATE_Global = 0;
static var STATE_Initialize = 1;
static var NO_MSG_SCOPING = 0;
static var SCOPE_TO_THIS_STATE = 1;
}
Symbol 1236 MovieClip [__Packages.Standard.Time] Frame 0
class Standard.Time
{
var _currentTime, _fakeGetTimer, _timeLastTick, _gameSpeed, _startTime;
function Time (Void) {
_currentTime = 0;
_fakeGetTimer = 0;
_timeLastTick = 0.001;
_gameSpeed = INITIAL_GAME_SPEED;
_startTime = (getTimer() * INITIAL_GAME_SPEED) / 1000;
}
function GetElapsedTime(Void) {
return(_timeLastTick);
}
function GetCurTime(Void) {
return(_currentTime);
}
function GetGameSpeed(Void) {
return(_gameSpeed);
}
function MarkTimeThisTick(Void) {
_fakeGetTimer = _fakeGetTimer + 0.032258064516129;
var _local2 = _fakeGetTimer - _startTime;
_timeLastTick = _local2 - _currentTime;
_currentTime = _local2;
if (_timeLastTick <= 0) {
_timeLastTick = 0.001;
}
}
function SetGameSpeed(value) {
_gameSpeed = value;
if (_gameSpeed < MIN_GAME_SPEED) {
_gameSpeed = MIN_GAME_SPEED;
} else if (_gameSpeed > MAX_GAME_SPEED) {
_gameSpeed = MAX_GAME_SPEED;
}
}
function toString(Void) {
return("Time()");
}
static var INITIAL_GAME_SPEED = 2;
static var MIN_GAME_SPEED = 0.001;
static var MAX_GAME_SPEED = 100;
}
Symbol 1237 MovieClip [__Packages.Standard.Message.MsgRoute] Frame 0
class Standard.Message.MsgRoute
{
var _time, _delayedMessages;
function MsgRoute (time) {
_time = time;
_delayedMessages = [];
}
function Update() {
DeliverDelayedMessages();
}
function SendMsg(delay, name, sender, receiver, state, data) {
if (delay <= 0) {
if (data != null) {
var _local9 = new Standard.Message.Extended_MsgObject(_time.GetCurTime(), name, sender, receiver, state, data);
} else {
var _local9 = new Standard.Message.MsgObject(_time.GetCurTime(), name, sender, receiver, state);
}
RouteMsg(_local9);
} else {
var _local2;
i = 0;
while (i <= _delayedMessages.length) {
_local2 = _delayedMessages[i];
if (((((_local2.IsDelivered() == false) && (_local2.GetMsgName() == name)) && (_local2.GetReceiver() == receiver)) && (_local2.GetSender() == sender)) && (_local2.GetMsgState() == state)) {
return(undefined);
}
i++;
}
var _local7 = delay + _time.GetCurTime();
if (data != null) {
var _local9 = new Standard.Message.Extended_MsgObject(_local7, name, sender, receiver, state, data);
} else {
var _local9 = new Standard.Message.MsgObject(_local7, name, sender, receiver, state);
}
var i = 0;
while ((i < _delayedMessages.length) && (_local7 >= _delayedMessages[i].GetDeliveryTime())) {
i++;
}
_delayedMessages.splice(i, 0, _local9);
}
}
function DeliverDelayedMessages(Void) {
var _local2;
while ((_delayedMessages.length > 0) && (_delayedMessages[0].GetDeliveryTime() <= _time.GetCurTime())) {
_local2 = _delayedMessages.shift();
RouteMsg(_local2);
}
}
function RouteMsg(msg) {
var _local2 = msg.GetReceiver();
if (_local2) {
if ((msg.GetMsgState() == Standard.StateMachine.STATE_Global) || (msg.GetMsgState() == _local2.GetStateMachine().GetState())) {
msg.SetDelivered(true);
_local2.GetStateMachine().Process(Standard.StateMachine.EVENT_Message, msg);
}
}
}
function Flush(Void) {
while (_delayedMessages.length > 0) {
_delayedMessages.shift();
}
}
}
Symbol 1238 MovieClip [__Packages.Standard.Message.MsgObject] Frame 0
class Standard.Message.MsgObject
{
var _name, _sender, _receiver, _state, _deliveryTime, _delivered;
function MsgObject (deliveryTime, name, sender, receiver, state) {
if (state == null) {
state = -1;
}
SetDeliveryTime(deliveryTime);
SetMsgName(name);
SetSender(sender);
SetReceiver(receiver);
SetMsgState(state);
SetDelivered(false);
}
function GetMsgName(Void) {
return(_name);
}
function SetMsgName(name) {
_name = name;
}
function GetSender(Void) {
return(_sender);
}
function SetSender(sender) {
_sender = sender;
}
function GetReceiver(Void) {
return(_receiver);
}
function SetReceiver(receiver) {
_receiver = receiver;
}
function GetMsgState(Void) {
return(_state);
}
function SetMsgState(state) {
_state = state;
}
function GetDeliveryTime(Void) {
return(_deliveryTime);
}
function SetDeliveryTime(time) {
_deliveryTime = time;
}
function IsDelivered(Void) {
return(_delivered);
}
function SetDelivered(value) {
_delivered = value;
}
function toString(Void) {
return(((((((("Message(" + _name) + ",") + _sender) + ",") + _receiver) + ",") + _deliveryTime) + ")");
}
}
Symbol 1239 MovieClip [__Packages.Standard.Message.Extended_MsgObject] Frame 0
class Standard.Message.Extended_MsgObject extends Standard.Message.MsgObject
{
var SetDeliveryTime, SetMsgName, SetSender, SetReceiver, SetMsgState, SetDelivered, _data, _deliveryTime, _receiver, _sender, _name;
function Extended_MsgObject (deliveryTime, name, sender, receiver, state, data) {
super();
SetDeliveryTime(deliveryTime);
SetMsgName(name);
SetSender(sender);
SetReceiver(receiver);
SetMsgState(state);
SetDelivered(false);
SetData(data);
}
function SetData(data) {
_data = data;
}
function GetData() {
return(_data);
}
function toString() {
return(((((((("E_Message(" + _name) + ",") + _sender) + ",") + _receiver) + ",") + _deliveryTime) + ")");
}
}
Symbol 1240 MovieClip [__Packages.Standard.Simple_FSM] Frame 0
class Standard.Simple_FSM extends Standard.StateMachine
{
var _states, _event_key, _Owner;
function Simple_FSM (obj, states, time, msgRoute) {
super(obj, time, msgRoute);
_states = states;
_event_key = ["_INVALID", "_Enter", "_Message", "_Update", "_Exit"];
}
function States(event, msg, state) {
if (state < _states.length) {
var _local2 = _states[state] + _event_key[event];
if (_Owner[_local2] != null) {
_Owner[_local2](msg);
return(true);
}
return(false);
}
return(false);
}
function toString(Void) {
return("Simple_FSM()");
}
}
Symbol 1241 MovieClip [__Packages.Standard.SpriteController] Frame 0
class Standard.SpriteController
{
var _animation_key, _isAnimationFinished, _curFrame, _curAnimation, _isAnimationLooping, _curFrameIndex;
function SpriteController () {
_animation_key = {};
_isAnimationFinished = false;
}
function SetKey(oKey) {
_animation_key = oKey;
}
function AnimationComplete(Void) {
return(_isAnimationFinished);
}
function GetCurrentFrame(Void) {
return(_curFrame);
}
function PlayAnimation(sName) {
_isAnimationFinished = false;
_curAnimation = _animation_key[sName].frames;
_isAnimationLooping = _animation_key[sName].loop;
_curFrameIndex = 0;
_curFrame = _curAnimation[0];
return(_curFrame);
}
function PlayAnimation_sync(sName) {
_curAnimation = _animation_key[sName].frames;
_isAnimationLooping = _animation_key[sName].loop;
_curFrame = _curAnimation[_curFrameIndex];
return(_curFrame);
}
function Update(Void) {
if (_curFrameIndex < (_curAnimation.length - 1)) {
_curFrameIndex++;
_curFrame = _curAnimation[_curFrameIndex];
} else {
_isAnimationFinished = true;
if (_isAnimationLooping) {
_curFrameIndex = 0;
_curFrame = _curAnimation[_curFrameIndex];
}
}
return(_curFrame);
}
function toString(Void) {
return("SpriteController()");
}
}
Symbol 1242 MovieClip [__Packages.Standard.Geometry.Rect] Frame 0
class Standard.Geometry.Rect
{
var xMin, yMin, xMax, yMax, xCenter, yCenter, width, height;
function Rect (ixMin, iyMin, ixMax, iyMax) {
xMin = ixMin;
yMin = iyMin;
xMax = ixMax;
yMax = iyMax;
xCenter = xMin + ((xMax - xMin) / 2);
yCenter = yMin + ((yMax - yMin) / 2);
width = xMax - xMin;
height = yMax - yMin;
}
function moveTo(x, y) {
var _local3 = x - xCenter;
var _local2 = y - yCenter;
xMin = xMin + _local3;
yMin = yMin + _local2;
xMax = xMax + _local3;
yMax = yMax + _local2;
xCenter = xCenter + _local3;
yCenter = yCenter + _local2;
}
function toString() {
return(((((((("Rect(" + xMin) + ", ") + yMin) + ", ") + xMax) + ", ") + yMax) + ")");
}
static function pointWithin(x, y, r1) {
if (x < r1.xMin) {
return(false);
}
if (x > r1.xMax) {
return(false);
}
if (y < r1.yMin) {
return(false);
}
if (y > r1.yMax) {
return(false);
}
return(true);
}
static function boundsIntersect(r1, r2) {
if (r1.xMax < r2.xMin) {
return(false);
}
if (r2.xMax < r1.xMin) {
return(false);
}
if (r1.yMax < r2.yMin) {
return(false);
}
if (r2.yMax < r1.yMin) {
return(false);
}
return(true);
}
static function getClosestNormal(x, y, rect) {
var _local5 = y - rect.yMin;
var _local3 = x - rect.xMin;
var _local4 = rect.yMax - y;
var _local6 = rect.xMax - x;
var _local2 = [_local5, _local3, _local4, _local6];
_local2.sort(compare);
return(_local2[0]);
}
static function compare(a, b) {
if (a < b) {
return(-1);
}
if (a > b) {
return(1);
}
return(0);
}
static function GetOutcode(point, rect) {
var _local1 = 0;
if (point.y <= rect.yMin) {
_local1 = _local1 | 1;
}
if (point.x >= rect.xMax) {
_local1 = _local1 | 2;
}
if (point.y >= rect.yMax) {
_local1 = _local1 | 4;
}
if (point.x <= rect.xMin) {
_local1 = _local1 | 8;
}
return(_local1);
}
static function Get_Ray_Exit(start_pos, end_pos, rect) {
var _local6 = GetOutcode(start_pos, rect);
var _local5 = GetOutcode(end_pos, rect);
if (_local5 == 0) {
return(false);
}
if ((_local6 & _local5) == 0) {
var _local3 = 0;
var _local1 = 1;
var _local8 = end_pos.x - start_pos.x;
var _local7 = end_pos.y - start_pos.y;
var _local10 = 8;
if ((_local6 & _local10) != 0) {
var _local9 = ((-start_pos.x) - rect.xMin) / _local8;
if (_local9 > _local3) {
_local3 = _local9;
}
} else if ((_local5 & _local10) != 0) {
var _local9 = (rect.xMin - start_pos.x) / _local8;
if (_local9 < _local1) {
_local1 = _local9;
}
}
_local10 = 2;
if ((_local6 & _local10) != 0) {
var _local9 = ((-start_pos.x) + rect.xMax) / _local8;
if (_local9 > _local3) {
_local3 = _local9;
}
} else if ((_local5 & _local10) != 0) {
var _local9 = ((-start_pos.x) + rect.xMax) / _local8;
if (_local9 < _local1) {
_local1 = _local9;
}
}
_local10 = 1;
if ((_local6 & _local10) != 0) {
var _local9 = ((-start_pos.y) - rect.yMin) / _local7;
if (_local9 > _local3) {
_local3 = _local9;
}
} else if ((_local5 & _local10) != 0) {
var _local9 = (rect.yMin - start_pos.y) / _local7;
if (_local9 < _local1) {
_local1 = _local9;
}
}
_local10 = 4;
if ((_local6 & _local10) != 0) {
var _local9 = ((-start_pos.y) + rect.yMax) / _local7;
if (_local9 > _local3) {
_local3 = _local9;
}
} else if ((_local5 & _local10) != 0) {
var _local9 = ((-start_pos.y) + rect.yMax) / _local7;
if (_local9 < _local1) {
_local1 = _local9;
}
}
if (_local3 <= _local1) {
return({x:start_pos.x + (_local1 * _local8), y:start_pos.y + (_local1 * _local7)});
}
}
return(false);
}
}
Symbol 1243 MovieClip [__Packages.Standard.SoundModule] Frame 0
class Standard.SoundModule
{
var _mc, _hash, _num, _active_sounds, _fade_interval, _music_mute, _defaultVol, _curr_music, _fade_interval2;
function SoundModule (mc) {
trace(("new SoundModule(" + mc) + ")");
_mc = mc;
_hash = {};
_num = 0;
_active_sounds = [];
_fade_interval = null;
_music_mute = _global.MUSIC_MUTE;
_defaultVol = 70;
}
function SoundAvailable() {
return(_active_sounds.length < 8);
}
function LoadSound(sound_name) {
trace(((">>LoadSound(" + sound_name) + ") into ") + _mc);
_num++;
var _local3 = "mySound" + _num;
_mc.createEmptyMovieClip(_local3, _num);
trace(">> SoundModule creating mc:" + _mc[_local3]);
var _local2 = new Sound(_mc[_local3]);
_local2.parent = this;
_local2.lastStart = 0;
_local2.onSoundComplete = function () {
this.parent.DeactivateSound(sound_name);
};
_hash[sound_name] = _local2;
return(_local2);
}
function SetMusicMute(oBool) {
_music_mute = oBool;
if (_music_mute == true) {
StopMusic();
} else {
PlayMusic(_curr_music);
}
}
function GetMusicMute() {
return(_music_mute);
}
function StopMusic() {
var _local2 = _active_sounds.length;
while (_local2--) {
if (_active_sounds[_local2].indexOf("music") != -1) {
StopSound(_active_sounds[_local2]);
break;
}
}
}
function GetCurMusic(Void) {
return(_curr_music);
}
function PlayMusic(str) {
if (str == "none") {
FadeSound("music_" + _curr_music, _global.MUSIC_VOL, 0, 0.5);
} else {
CrossFade("music_" + _curr_music, "music_" + str, 0.5);
_curr_music = str;
}
}
function DeactivateSound(snd) {
var _local2 = _active_sounds.length;
while (_local2--) {
if (snd == _active_sounds[_local2]) {
_active_sounds.splice(_local2, 1);
break;
}
}
}
function DeactivateAllSounds() {
_active_sounds = [];
}
function StopSound(snd) {
var _local2 = _hash[snd];
_local2.stop();
DeactivateSound(snd);
}
function soundIsPlaying(snd) {
for (var _local2 in _active_sounds) {
if (_active_sounds[_local2] == snd) {
return(true);
}
}
return(false);
}
function PlaySound(snd, vol, pan, offset, loop) {
if ((snd.indexOf("music") != -1) && (_music_mute == true)) {
trace("\n### music muted ###\n");
return(undefined);
}
if ((snd.indexOf("collect") == -1) && (snd.indexOf("bonus") == -1)) {
for (var _local3 in _active_sounds) {
if (_active_sounds[_local3] == snd) {
return(undefined);
}
}
} else {
StopSound(snd);
}
if (_active_sounds.length < MAX_SOUNDS) {
var _local4 = _hash[snd];
if (vol == null) {
_local4.setVolume(_defaultVol);
} else {
_local4.setVolume(vol);
}
if (pan != null) {
_local4.setPan(pan);
}
if (offset == null) {
offset = 0;
}
if (loop == null) {
loop = 0;
}
_local4.start(offset, loop);
_active_sounds.push(snd);
} else {
trace(("\n\n### ERROR: No available audio slots for this sound. (" + snd) + ") #####\n\n");
trace(_active_sounds);
}
}
function CrossFade(snd1, snd2, dur) {
FadeSound(snd1, _global.MUSIC_VOL, 0, dur);
PlaySound(snd2, 0, 0, 0, 9999);
FadeSound2(snd2, 0, _global.MUSIC_VOL, dur);
}
function FadeSound(snd, startVol, endVol, duration) {
if (_fade_interval != null) {
clearInterval(_fade_interval);
}
_hash[snd].setVolume(startVol);
if (endVol < startVol) {
var _local5 = -1;
} else {
var _local5 = 1;
}
var _local4 = (duration / Math.abs(endVol - startVol)) * 1000;
_fade_interval = setInterval(this, "Fade_Sound_Update", _local4, [snd, endVol, _local5]);
}
function FadeSound2(snd, startVol, endVol, duration) {
if (_fade_interval2 != null) {
clearInterval(_fade_interval2);
}
_hash[snd].setVolume(startVol);
if (endVol < startVol) {
var _local5 = -1;
} else {
var _local5 = 1;
}
var _local4 = (duration / Math.abs(endVol - startVol)) * 1000;
_fade_interval2 = setInterval(this, "Fade_Sound_Update2", _local4, [snd, endVol, _local5]);
}
function Fade_Sound_Update(sndAr) {
var _local3 = sndAr[0];
var _local5 = sndAr[1];
var _local4 = sndAr[2];
var _local2 = _hash[_local3].getVolume() + _local4;
if (((_local4 > 0) && (_local2 <= _local5)) || ((_local4 < 0) && (_local2 >= _local5))) {
_hash[_local3].setVolume(_local2);
if (_local2 <= 0) {
StopSound(_local3);
}
} else {
clearInterval(_fade_interval);
}
}
function Fade_Sound_Update2(sndAr) {
var _local3 = sndAr[0];
var _local5 = sndAr[1];
var _local4 = sndAr[2];
var _local2 = _hash[_local3].getVolume() + _local4;
if (((_local4 > 0) && (_local2 <= _local5)) || ((_local4 < 0) && (_local2 >= _local5))) {
_hash[_local3].setVolume(_local2);
if (_local2 <= 0) {
StopSound(_local3);
}
} else {
clearInterval(_fade_interval2);
}
}
function getSound(snd) {
return(_hash[snd]);
}
function toString() {
return("SoundModule()");
}
function unload() {
for (var _local3 in _hash) {
delete _hash[_local3];
}
var _local2 = 0;
while (_local2 < _num) {
_mc["mySound" + _num].removeMovieClip();
_local2++;
}
delete _hash;
}
static var MAX_SOUNDS = 8;
}
Symbol 1244 MovieClip [__Packages.Enemy] Frame 0
class Enemy
{
var _gb, _targ, _mc, _idx, _spriteController, _states, _fsm, _line, _endLevelX, _spawnX, _endLevelY, _spawnY, _speedMax, _agil, _speed, _angle, _vx, _vy, _vr, _dir;
function Enemy (gb, mc, seekTarget, idx) {
_gb = gb;
_targ = seekTarget;
_mc = mc;
_idx = idx;
_spriteController = new Standard.SpriteController();
_states = ["STATE_Global", "STATE_Init", "STATE_Idle", "STATE_Running", "STATE_EnemyHit"];
_fsm = new Standard.Simple_FSM(this, _states, _gb._time, _gb._msgRoute);
_line = _root.createEmptyMovieClip("line", _root.getNextHighestDepth());
}
function init() {
}
function update() {
_fsm.Update();
}
function moveTowardSpawnPoint() {
var _local3 = (_spawnX - _endLevelX) / 40;
var _local2 = (_spawnY - _endLevelY) / 40;
_mc._x = _mc._x + _local3;
_mc._y = _mc._y + _local2;
var _local4 = 200 + ((_mc._y * 1000) + _idx);
_mc.swapDepths(_local4);
}
function setSpeedMax(n) {
_speedMax = n;
}
function setAgility(n) {
_agil = n;
}
function moveTo(x, y) {
_mc._x = x;
_mc._y = y;
}
function setEndLevelCoords() {
_endLevelX = _mc._x;
_endLevelY = _mc._y;
}
function drawPath(x, y, a, b, col) {
_line._alpha = 0;
_line.clear();
if (col == "red") {
_line.lineStyle(3, 16711680, 100);
} else if (col == "yellow") {
_line.lineStyle(3, 16776960, 100);
} else {
_line.lineStyle(3, 255, 100);
}
_line.moveTo(x, y);
_line.lineTo(a, b);
}
function intersectsOb(mc) {
if (_line.hitTest(mc.hitBox)) {
return(true);
}
}
function chase() {
var _local7 = {};
_local7.x = _targ._x;
_local7.y = _targ._y;
_targ._parent.localToGlobal(_local7);
var _local15 = _local7.x - _mc._x;
var _local14 = _local7.y - _mc._y;
var _local18 = (_local15 * _local15) + (_local14 * _local14);
_speed = _speed + 0.2;
if (_speed > _speedMax) {
_speed = _speedMax;
}
if (_local18 < 225) {
_fsm.SendMsg(_global.MSG_EnemyHit, _gb._hero, null);
}
var _local17 = Math.atan2(_local14, _local15);
var _local13 = ((_local17 * 180) / Math.PI) - _angle;
var _local4 = {};
_local4.x = _mc._x;
_local4.y = _mc._y;
_mc._parent.localToGlobal(_local4);
var _local6 = _gb._newObstacles;
var _local9 = _local6.length;
var _local10 = false;
while (_local9--) {
var _local3 = {};
_local3.x = _local6[_local9].mc.hitBox._x;
_local3.y = _local6[_local9].mc.hitBox._y;
_local6[_local9].mc.localToGlobal(_local3);
var _local8 = ((_local3.x - _local4.x) * (_local3.x - _local4.x)) + ((_local3.y - _local4.y) * (_local3.y - _local4.y));
if (intersectsOb(_local6[_local9].mc) && (_local8 < 7500)) {
drawPath(_local7.x, _local7.y, _local4.x, _local4.y, "red");
var _local5 = 80 / _local8;
if (_local5 > _speed) {
_local5 = _speed;
}
_vx = _vx + Math.min((8 * _local5) * Math.cos((Math.PI * (_angle + 90)) / 180), 1.4 * _speedMax);
_vy = _vy + Math.min(_local5 * Math.sin((Math.PI * (_angle + 90)) / 180), 1.4 * _speedMax);
_local10 = true;
break;
}
drawPath(_local7.x, _local7.y, _local4.x, _local4.y, "blue");
}
if (_local10 == false) {
if (_local13 <= -180) {
_local13 = _local13 + 360;
} else if (_local13 >= 180) {
_local13 = _local13 - 360;
}
_vr = _vr + (_local13 * _agil);
_vr = _vr * 0.8;
_angle = _angle + _vr;
_local17 = (_angle * Math.PI) / 180;
_vx = _vx + (Math.cos(_local17) * _speed);
_vy = _vy + (Math.sin(_local17) * _speed);
_vx = _vx * 0.97;
_vy = _vy * 0.97;
}
var _local12 = _mc._x + _vx;
var _local11 = _mc._y + _vy;
_local9 = _local6.length;
while (_local9--) {
if (_local6[_local9].mc.hitBox.hitTest(_local12, _local11, true) == true) {
trace(">>>hit obstacle");
if (_vx < 0) {
_vx = 1.5 + random(2);
} else {
_vx = -1.5 - random(2);
}
if (_vy < 0) {
_vy = 1.5 + random(2);
} else {
_vy = -1.5 - random(2);
}
}
}
if (outOfBounds(_local12, _local11) == true) {
fixBounds();
}
setDirection(_local15, _local14);
_mc._x = _mc._x + _vx;
_mc._y = _mc._y + _vy;
var _local19 = 200 + ((_mc._y * 1000) + _idx);
_mc.swapDepths(_local19);
for (var _local16 in _gb._enemyList) {
if (_gb._enemyList[_local16]._mc != _mc) {
if (_mc.hitTest(_gb._enemyList[_local16]._mc) == true) {
avoidObj(_gb._enemyList[_local16]._mc, 30);
}
}
}
}
function fixBounds() {
var _local2 = {};
_local2.x = _mc._x;
_local2.y = _mc._y;
switch (Standard.Geometry.Rect.GetOutcode(_local2, _gb._playField)) {
case 1 :
_vy = 2;
break;
case 2 :
_vx = -2;
break;
case 4 :
_vy = -2;
break;
case 8 :
_vx = 2;
}
}
function outOfBounds(x, y) {
var _local2 = Standard.Geometry.Rect.pointWithin(x, y, _gb._playField);
if (_local2 == false) {
return(true);
}
return(false);
}
function setDirection(dx, dy) {
var _local3;
var _local2 = 90 + (57.3248407643312 * Math.atan2(dy, dx));
if (_local2 < 0) {
_local2 = _local2 + 360;
}
_local2 = _local2 % 360;
if (_local2 < 25) {
_local3 = "n";
} else if (_local2 < 65) {
_local3 = "ne";
} else if (_local2 < 115) {
_local3 = "e";
} else if (_local2 < 160) {
_local3 = "se";
} else if (_local2 < 205) {
_local3 = "s";
} else if (_local2 < 250) {
_local3 = "sw";
} else if (_local2 < 295) {
_local3 = "w";
} else if (_local2 < 335) {
_local3 = "nw";
} else {
_local3 = "n";
}
if (_local3 != _dir) {
_dir = _local3;
var _local4 = _spriteController.PlayAnimation(_dir + "_run");
_mc.gotoAndStop(_local4);
}
}
function avoidObj(src, spacing) {
trace("avoiding other enemy");
var _local7 = {};
_local7.x = src._x;
_local7.y = src._y;
src._parent.localToGlobal(_local7);
var _local9 = _mc._x - _local7.x;
var _local8 = _mc._y - _local7.y;
var _local10 = Math.sqrt((_local9 * _local9) + (_local8 * _local8));
var _local11 = Math.atan2(_local8, _local9);
var _local4 = _mc._x + ((spacing / _local10) * Math.cos(_local11));
var _local3 = _mc._y + ((spacing / _local10) * Math.sin(_local11));
if (outOfBounds(_local4, _local3) == true) {
return(undefined);
}
var _local5 = false;
var _local6 = _gb._newObstacles;
var _local2 = _local6.length;
while (_local2--) {
if (_local6[_local2].mc.hitBox.hitTest(_local4, _local3, true) == true) {
trace(">>>hit obstacle");
_local5 = true;
}
}
if (_local5 == false) {
_mc._x = _local4;
_mc._y = _local3;
}
}
function GetStateMachine(Void) {
return(_fsm);
}
function STATE_Global_Message(oMsg) {
}
function STATE_Init_Update(Void) {
trace("--- Enemy: STATE Init_Update --");
_fsm.SetState(STATE_RUNNING);
}
function STATE_Init_Exit(Void) {
}
function STATE_Running_Enter(Void) {
_mc.gotoAndStop(_spriteController.Update());
}
function STATE_Running_Update(Void) {
chase();
_mc.gotoAndStop(_spriteController.Update());
}
function STATE_Running_Message(oMsg) {
if (!(oMsg.GetMsgName() === _global.MSG_EnemyHit)) {
} else {
_fsm.SetState(STATE_ENEMYHIT);
}
}
function STATE_Running_Exit(Void) {
}
function STATE_EnemyHit_Enter(Void) {
_mc.gotoAndStop(_spriteController.Update());
}
function STATE_EnemyHit_Update(Void) {
avoidObj(_gb._hero._mc, 80);
_mc.gotoAndStop(_spriteController.Update());
}
function STATE_EnemyHit_Message(oMsg) {
if (!(oMsg.GetMsgName() === _global.MSG_Run)) {
} else {
_targ = _gb._hero._mc;
_fsm.SetState(STATE_RUNNING);
}
}
function STATE_EnemyHit_Exit(Void) {
}
var STATE_GLOBAL = 0;
var STATE_INIT = 1;
var STATE_IDLE = 2;
var STATE_RUNNING = 3;
var STATE_ENEMYHIT = 4;
}
Symbol 1245 MovieClip [__Packages.Edward] Frame 0
class Edward extends Enemy
{
var _animKey, _spriteController, _fsm, STATE_INIT, _vx, _vy, _vr, _angle, _speed, _speedMax, _agil, _dir, _spawnX, _spawnY, _mc, _idx;
function Edward (gb, mc, seekTarget, idx) {
super(gb, mc, seekTarget, idx);
_animKey = {w_run:{frames:[1, 2, 3, 4, 5], loop:true}, e_run:{frames:[10, 11, 12, 13, 14], loop:true}, n_run:{frames:[20, 21, 22, 23, 24, 25, 26, 27, 28, 29], loop:true}, s_run:{frames:[30, 31, 32, 33, 34, 35, 36, 37, 38, 39], loop:true}, ne_run:{frames:[40, 41, 42, 43, 44], loop:true}, se_run:{frames:[50, 51, 52, 53, 54], loop:true}, nw_run:{frames:[60, 61, 62, 63, 64], loop:true}, sw_run:{frames:[70, 71, 72, 73, 74], loop:true}};
_spriteController.SetKey(_animKey);
}
function init(x, y) {
_fsm.SetState(STATE_INIT);
_vx = 0;
_vy = 0;
_vr = 0;
_angle = 90;
_speed = 0;
_speedMax = 0.4;
_agil = 1;
_dir = "s";
_spawnX = x;
_spawnY = y;
_mc._x = x;
_mc._y = y;
var _local2 = 200 + ((_mc._y * 1000) + _idx);
_mc.swapDepths(_local2);
var _local3 = _spriteController.PlayAnimation(_dir + "_run");
_mc.gotoAndStop(_local3);
}
function toString() {
return("Edward()");
}
}
Symbol 1246 MovieClip [__Packages.Chip] Frame 0
class Chip extends Enemy
{
var _animKey, _spriteController, _mc, _vx, _vy, _vr, _angle, _speed, _agil, _dir, _spawnX, _spawnY, _idx;
function Chip (gb, mc, seekTarget, idx) {
super(gb, mc, seekTarget, idx);
_animKey = {w_run:{frames:[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6], loop:true}, e_run:{frames:[10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15], loop:true}, n_run:{frames:[20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25], loop:true}, s_run:{frames:[30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35], loop:true}, ne_run:{frames:[40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45], loop:true}, se_run:{frames:[50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55], loop:true}, nw_run:{frames:[60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65], loop:true}, sw_run:{frames:[70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75], loop:true}};
_spriteController.SetKey(_animKey);
}
function init(x, y) {
_mc._visible = true;
_vx = 0;
_vy = 0;
_vr = 0;
_angle = 90;
_speed = 0;
_agil = 1;
_dir = "s";
_spawnX = x;
_spawnY = y;
_mc._x = x;
_mc._y = y;
var _local2 = 200 + ((_mc._y * 1000) + _idx);
_mc.swapDepths(_local2);
var _local3 = _spriteController.PlayAnimation(_dir + "_run");
_mc.gotoAndStop(_local3);
}
}
Symbol 1247 MovieClip [__Packages.udt.tools.SecurityTool] Frame 0
class udt.tools.SecurityTool
{
function SecurityTool () {
}
static function fnMD5(pString) {
return(fnBinaryToHex(fnMd5Proc(fnStringToBinary(pString), pString.length * 8)));
}
static function fnMd5Proc(x, len) {
x[len >> 5] = x[len >> 5] | (128 << (len % 32));
x[(((len + 64) >>> 9) << 4) + 14] = len;
var _local4 = 1732584193 /* 0x67452301 */;
var _local3 = -271733879;
var _local2 = -1732584194;
var _local1 = 271733878 /* 0x10325476 */;
var _local5 = 0;
while (_local5 < x.length) {
var _local10 = _local4;
var _local9 = _local3;
var _local8 = _local2;
var _local7 = _local1;
_local4 = fnFF(_local4, _local3, _local2, _local1, x[_local5 + 0], 7, -680876936);
_local1 = fnFF(_local1, _local4, _local3, _local2, x[_local5 + 1], 12, -389564586);
_local2 = fnFF(_local2, _local1, _local4, _local3, x[_local5 + 2], 17, 606105819);
_local3 = fnFF(_local3, _local2, _local1, _local4, x[_local5 + 3], 22, -1044525330);
_local4 = fnFF(_local4, _local3, _local2, _local1, x[_local5 + 4], 7, -176418897);
_local1 = fnFF(_local1, _local4, _local3, _local2, x[_local5 + 5], 12, 1200080426);
_local2 = fnFF(_local2, _local1, _local4, _local3, x[_local5 + 6], 17, -1473231341);
_local3 = fnFF(_local3, _local2, _local1, _local4, x[_local5 + 7], 22, -45705983);
_local4 = fnFF(_local4, _local3, _local2, _local1, x[_local5 + 8], 7, 1770035416);
_local1 = fnFF(_local1, _local4, _local3, _local2, x[_local5 + 9], 12, -1958414417);
_local2 = fnFF(_local2, _local1, _local4, _local3, x[_local5 + 10], 17, -42063);
_local3 = fnFF(_local3, _local2, _local1, _local4, x[_local5 + 11], 22, -1990404162);
_local4 = fnFF(_local4, _local3, _local2, _local1, x[_local5 + 12], 7, 1804603682);
_local1 = fnFF(_local1, _local4, _local3, _local2, x[_local5 + 13], 12, -40341101);
_local2 = fnFF(_local2, _local1, _local4, _local3, x[_local5 + 14], 17, -1502002290);
_local3 = fnFF(_local3, _local2, _local1, _local4, x[_local5 + 15], 22, 1236535329);
_local4 = fnGG(_local4, _local3, _local2, _local1, x[_local5 + 1], 5, -165796510);
_local1 = fnGG(_local1, _local4, _local3, _local2, x[_local5 + 6], 9, -1069501632);
_local2 = fnGG(_local2, _local1, _local4, _local3, x[_local5 + 11], 14, 643717713);
_local3 = fnGG(_local3, _local2, _local1, _local4, x[_local5 + 0], 20, -373897302);
_local4 = fnGG(_local4, _local3, _local2, _local1, x[_local5 + 5], 5, -701558691);
_local1 = fnGG(_local1, _local4, _local3, _local2, x[_local5 + 10], 9, 38016083);
_local2 = fnGG(_local2, _local1, _local4, _local3, x[_local5 + 15], 14, -660478335);
_local3 = fnGG(_local3, _local2, _local1, _local4, x[_local5 + 4], 20, -405537848);
_local4 = fnGG(_local4, _local3, _local2, _local1, x[_local5 + 9], 5, 568446438);
_local1 = fnGG(_local1, _local4, _local3, _local2, x[_local5 + 14], 9, -1019803690);
_local2 = fnGG(_local2, _local1, _local4, _local3, x[_local5 + 3], 14, -187363961);
_local3 = fnGG(_local3, _local2, _local1, _local4, x[_local5 + 8], 20, 1163531501);
_local4 = fnGG(_local4, _local3, _local2, _local1, x[_local5 + 13], 5, -1444681467);
_local1 = fnGG(_local1, _local4, _local3, _local2, x[_local5 + 2], 9, -51403784);
_local2 = fnGG(_local2, _local1, _local4, _local3, x[_local5 + 7], 14, 1735328473);
_local3 = fnGG(_local3, _local2, _local1, _local4, x[_local5 + 12], 20, -1926607734);
_local4 = fnHH(_local4, _local3, _local2, _local1, x[_local5 + 5], 4, -378558);
_local1 = fnHH(_local1, _local4, _local3, _local2, x[_local5 + 8], 11, -2022574463);
_local2 = fnHH(_local2, _local1, _local4, _local3, x[_local5 + 11], 16, 1839030562);
_local3 = fnHH(_local3, _local2, _local1, _local4, x[_local5 + 14], 23, -35309556);
_local4 = fnHH(_local4, _local3, _local2, _local1, x[_local5 + 1], 4, -1530992060);
_local1 = fnHH(_local1, _local4, _local3, _local2, x[_local5 + 4], 11, 1272893353);
_local2 = fnHH(_local2, _local1, _local4, _local3, x[_local5 + 7], 16, -155497632);
_local3 = fnHH(_local3, _local2, _local1, _local4, x[_local5 + 10], 23, -1094730640);
_local4 = fnHH(_local4, _local3, _local2, _local1, x[_local5 + 13], 4, 681279174);
_local1 = fnHH(_local1, _local4, _local3, _local2, x[_local5 + 0], 11, -358537222);
_local2 = fnHH(_local2, _local1, _local4, _local3, x[_local5 + 3], 16, -722521979);
_local3 = fnHH(_local3, _local2, _local1, _local4, x[_local5 + 6], 23, 76029189);
_local4 = fnHH(_local4, _local3, _local2, _local1, x[_local5 + 9], 4, -640364487);
_local1 = fnHH(_local1, _local4, _local3, _local2, x[_local5 + 12], 11, -421815835);
_local2 = fnHH(_local2, _local1, _local4, _local3, x[_local5 + 15], 16, 530742520);
_local3 = fnHH(_local3, _local2, _local1, _local4, x[_local5 + 2], 23, -995338651);
_local4 = fnII(_local4, _local3, _local2, _local1, x[_local5 + 0], 6, -198630844);
_local1 = fnII(_local1, _local4, _local3, _local2, x[_local5 + 7], 10, 1126891415);
_local2 = fnII(_local2, _local1, _local4, _local3, x[_local5 + 14], 15, -1416354905);
_local3 = fnII(_local3, _local2, _local1, _local4, x[_local5 + 5], 21, -57434055);
_local4 = fnII(_local4, _local3, _local2, _local1, x[_local5 + 12], 6, 1700485571);
_local1 = fnII(_local1, _local4, _local3, _local2, x[_local5 + 3], 10, -1894986606);
_local2 = fnII(_local2, _local1, _local4, _local3, x[_local5 + 10], 15, -1051523);
_local3 = fnII(_local3, _local2, _local1, _local4, x[_local5 + 1], 21, -2054922799);
_local4 = fnII(_local4, _local3, _local2, _local1, x[_local5 + 8], 6, 1873313359);
_local1 = fnII(_local1, _local4, _local3, _local2, x[_local5 + 15], 10, -30611744);
_local2 = fnII(_local2, _local1, _local4, _local3, x[_local5 + 6], 15, -1560198380);
_local3 = fnII(_local3, _local2, _local1, _local4, x[_local5 + 13], 21, 1309151649);
_local4 = fnII(_local4, _local3, _local2, _local1, x[_local5 + 4], 6, -145523070);
_local1 = fnII(_local1, _local4, _local3, _local2, x[_local5 + 11], 10, -1120210379);
_local2 = fnII(_local2, _local1, _local4, _local3, x[_local5 + 2], 15, 718787259);
_local3 = fnII(_local3, _local2, _local1, _local4, x[_local5 + 9], 21, -343485551);
_local4 = fnMD5Add(_local4, _local10);
_local3 = fnMD5Add(_local3, _local9);
_local2 = fnMD5Add(_local2, _local8);
_local1 = fnMD5Add(_local1, _local7);
_local5 = _local5 + 16;
}
return(Array(_local4, _local3, _local2, _local1));
}
static function fnCMN(q, a, b, x, s, t) {
return(fnMD5Add(fnShiftBitLeft(fnMD5Add(fnMD5Add(a, q), fnMD5Add(x, t)), s), b));
}
static function fnFF(a, b, c, d, x, s, t) {
return(fnCMN((b & c) | ((~b) & d), a, b, x, s, t));
}
static function fnGG(a, b, c, d, x, s, t) {
return(fnCMN((b & d) | (c & (~d)), a, b, x, s, t));
}
static function fnHH(a, b, c, d, x, s, t) {
return(fnCMN((b ^ c) ^ d, a, b, x, s, t));
}
static function fnII(a, b, c, d, x, s, t) {
return(fnCMN(c ^ (b | (~d)), a, b, x, s, t));
}
static function fnMD5Add(x, y) {
var _local1 = (x & 65535) + (y & 65535);
var _local2 = ((x >> 16) + (y >> 16)) + (_local1 >> 16);
return((_local2 << 16) | (_local1 & 65535));
}
static function fnShiftBitLeft(num, cnt) {
return((num << cnt) | (num >>> (32 - cnt)));
}
static function fnStringToBinary(str) {
var _local3 = Array();
var _local4 = 255;
var _local1 = 0;
while (_local1 < (str.length * 8)) {
_local3[_local1 >> 5] = _local3[_local1 >> 5] | ((str.charCodeAt(_local1 / 8) & _local4) << (_local1 % 32));
_local1 = _local1 + 8;
}
return(_local3);
}
static function fnBinaryToHex(binarray) {
var _local3 = "0123456789abcdef";
var _local4 = "";
var _local1 = 0;
while (_local1 < (binarray.length * 4)) {
_local4 = _local4 + (_local3.charAt((binarray[_local1 >> 2] >> (((_local1 % 4) * 8) + 4)) & 15) + _local3.charAt((binarray[_local1 >> 2] >> ((_local1 % 4) * 8)) & 15));
_local1++;
}
return(_local4);
}
static function fnFlashEncrypt(pKey, pString) {
var _local6 = "";
var _local7;
var _local1;
if ((pKey.charAt(0).charCodeAt(0) % 2) != 0) {
_local7 = true;
_local1 = 0;
} else {
_local7 = false;
_local1 = pKey.length - 1;
}
var _local2 = 0;
while (_local2 < pString.length) {
var _local4 = pKey.charAt(_local1).charCodeAt(0);
_local6 = _local6 + String.fromCharCode(pString.charAt(_local2).charCodeAt(0) + _local4);
if (_local7) {
_local1++;
if (_local1 == pKey.length) {
_local1 = 0;
}
} else {
_local1--;
if (_local1 == -1) {
_local1 = pKey.length - 1;
}
}
_local2++;
}
return(escape(_local6));
}
static function fnFlashDecrypt(pKey, pString) {
pString = unescape(pString);
var _local6 = "";
var _local7;
var _local1;
if ((pKey.charAt(0).charCodeAt(0) % 2) != 0) {
_local7 = true;
_local1 = 0;
} else {
_local7 = false;
_local1 = pKey.length - 1;
}
var _local2 = 0;
while (_local2 < pString.length) {
var _local4 = pKey.charAt(_local1).charCodeAt(0);
_local6 = _local6 + String.fromCharCode(pString.charAt(_local2).charCodeAt(0) - _local4);
if (_local7) {
_local1++;
if (_local1 == pKey.length) {
_local1 = 0;
}
} else {
_local1--;
if (_local1 == -1) {
_local1 = pKey.length - 1;
}
}
_local2++;
}
return(_local6);
}
}
Symbol 1225 MovieClip [GameEngine] Frame 1
#initclip 16
Object.registerClass("GameEngine", GameBoard);
#endinitclip