STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228124
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/62682635?noj=FRM62682635-12DC" width="1" height="1"></div>

Bubble Fighter.swf

This is the info page for
Flash #47485

(Click the ID number above for more basic data on this flash file.)


Text
Congratulations

Level Complete

Score Gained:

Multiplier:

Notes:

Level:

Next Level

Lives:

Bubble

Fighter

Play

Instructions

Highscores

Credits

Instructions

The controls:
Arrow Keys or WASD Keys to move.
Mouse  to aim and shoot.
Additional Info:
The goal of the game is to survive,
and kill the other bubbles.  The levels
will get increasingly harder and longer
as you go, along with the occasional
twist.  When you get hit you lose your
shield, and if you get hit again before
your shield can recover you will lose
a life.

Back

Credits:

Made by:

Christopher Gregorio

It's a long list, I know.

ActionScript [AS1/AS2]

Frame 1
function __com_mochibot__(swfid, mc, lv, trk) { var x; var g; var s; var fv; var sb; var u; var res; var mb; var mbc; var pv; mb = "__mochibot__"; mbc = "mochibot.com"; g = (_global ? (_global) : (_level0._root)); if (g[mb + swfid]) { return(g[mb + swfid]); } s = System.security; x = mc._root.getSWFVersion; fv = (x ? (mc.getSWFVersion()) : ((_global ? 6 : 5))); if (!s) { s = {}; } sb = s.sandboxType; if (sb == "localWithFile") { return(null); } x = s.allowDomain; if (x) { s.allowDomain(mbc); } x = s.allowInsecureDomain; if (x) { s.allowInsecureDomain(mbc); } pv = ((fv == 5) ? (getVersion()) : (System.capabilities.version)); u = (((((((((((("http://" + mbc) + "/my/core.swf?mv=8&fv=") + fv) + "&v=") + escape(pv)) + "&swfid=") + escape(swfid)) + "&l=") + lv) + "&f=") + mc) + (sb ? ("&sb=" + sb) : "")) + (trk ? "&t=1" : ""); lv = ((fv > 6) ? (mc.getNextHighestDepth()) : ((g[mb + "level"] ? (g[mb + "level"] + 1) : (lv)))); g[mb + "level"] = lv; if (fv == 5) { res = "_level" + lv; if (!eval (res)) { loadMovieNum (u, lv); } } else { res = mc.createEmptyMovieClip(mb + swfid, lv); res.loadMovie(u); } return(res); } __com_mochibot__("766828aa", this, 10301, true); mochi.MochiServices.connect("dc01269b3cdf7351"); MochiAd.showPreGameAd({id:"dc01269b3cdf7351", res:"550x400"});
Frame 2
stop(); play_btn.onRelease = function () { gotoAndStop (3); }; highscores_btn.onRelease = function () { gotoAndStop (4); }; instructions_btn.onRelease = function () { gotoAndStop (5); }; credits_btn.onRelease = function () { gotoAndStop (6); };
Frame 3
function update_complete() { attachMovie("level_complete_screen", "level_complete_screen", 43); level_complete_screen._y = Stage.height / 2; level_complete_screen._x = (Stage.width / 2) + 10; ball.removeMovieClip(); removeEnemies = 1; level_complete_screen.notes.selectable = false; level_complete_screen.level_current.selectable = false; level_complete_screen.lives_current.selectable = false; level_complete_screen.score_gained.selectable = false; level_complete_screen.multiplier_gained.selectable = false; level_complete_screen.notes.text = comments_array[level - 1]; level_complete_screen.score_gained.text = score; level_complete_screen.level_current.text = level + 1; level_complete_screen.lives_current.text = lives; level_complete_screen.multiplier_gained.text = multiplier; values._y = -20; level_complete_screen.nextLevel.onRelease = function () { level = level + 1; level_complete_screen.removeMovieClip(); attachMovie("ball", "ball", 1000000); ball._x = Stage.width / 2; ball._y = Stage.height / 2; current_frame = 1; _xball = 0; _yball = 0; removeEnemies = 0; values._y = 5; shooting = 0; down = 0; down2 = 0; time_to_add_enemy = 1; time_to_next_level = next_level_array[level - 1]; trace(time_to_next_level); }; } function updatestats() { values.text = (((((((((((("Score: " + score) + "\t") + "\t") + "Time to next level: ") + time_to_next_level) + "\t") + "\t") + "Level: ") + level) + "\t") + "\t") + "Lives: ") + lives; } function onEnterFrame() { if (current_frame == 1) { if (lives <= 0) { gotoAndStop (4); ball.removeMovieClip(); values.removeTextField(); removeEnemies = 1; kirupaSound3.stop(); } if (Key.isDown(39) || (Key.isDown(68))) { _xball = _xball + speed; } if (Key.isDown(37) || (Key.isDown(65))) { _xball = _xball - speed; } if (Key.isDown(38) || (Key.isDown(87))) { _yball = _yball - speed; } if (Key.isDown(40) || (Key.isDown(83))) { _yball = _yball + speed; } if (ball._x > Stage.width) { ball._x = 0; } if (ball._x < 0) { ball._x = Stage.width; } if (ball._y > Stage.height) { ball._y = 0; } if (ball._y < 0) { ball._y = Stage.height; } _xball = _xball * friction; _yball = _yball * friction; ball._x = ball._x + _xball; ball._y = ball._y + _yball; shoot(); enemy_attack(); down = 0; down2 = 0; power_ups(); hit_test(); levels(); updatestats(); } } function shoot() { if (shooting == 1) { shooting = 0; time_to_shoot = 1; } time_to_shoot = time_to_shoot - 1; if (time_to_shoot == 0) { time_to_shoot = 5; bullet_MC = attachMovie("bullet", "bullet" + depth, depth); var gonna_delete = bullet_array.length; bullet_array.push("bullet" + depth); depth++; bullet_MC._x = ball._x; bullet_MC._y = ball._y; var _local5 = _xmouse - ball._x; var _local3 = _ymouse - ball._y; var _local4 = Math.atan2(_local3, _local5); bullet_MC._rotation = (_local4 * 180) / Math.PI; var dirx = (Math.cos((bullet_MC._rotation * Math.PI) / 180) * 30); var diry = (Math.sin((bullet_MC._rotation * Math.PI) / 180) * 30); bullet_MC.onEnterFrame = function () { if (removeEnemies == 1) { _root[bullet_array[gonna_delete]].removeMovieClip(); bullet_array.splice(gonna_delete, 1); down2 = gonna_delete; } this._x = this._x + dirx; this._y = this._y + diry; if (down2 < gonna_delete) { gonna_delete = gonna_delete - 1; } if ((((this._x > Stage.width) || (this._x < 0)) || (this._y > Stage.height)) || (this._y < 0)) { _root[bullet_array[gonna_delete]].removeMovieClip(); bullet_array.splice(gonna_delete, 1); down2 = gonna_delete; } }; } } function power_ups() { var _local2 = randRange(0, 1000); if (_local2 == 1) { power_MC = attachMovie("powerup", "powerup" + depth, depth); depth++; var side_power = randRange(1, 2); if (side_power == 1) { power_MC._x = -(power_MC._width / 2); var power_speed = 3; } if (side_power == 2) { power_MC._x = Stage.width + (power_MC._width / 2); var power_speed = -3; } power_MC._y = randRange(18.25, 381.75); power_MC.onEnterFrame = function () { this._x = this._x + power_speed; if (removeEnemies == 1) { this.removeMovieClip(); } if (this.hitTest(ball._x, ball._y, true)) { this.removeMovieClip(); lives = lives + 1; } if ((this._x > Stage.width) && (side_power == 1)) { this.removeMovieClip(); } if ((this._x < 0) && (side_power == 2)) { this.removeMovieClip(); } }; } } function enemy_attack() { time_to_add_enemy = time_to_add_enemy - 1; ball_life = ball_life - 1; if (time_to_add_enemy == 0) { time_to_add_enemy = enemy_come_array[level - 1]; var _local3 = randRange(1, enemies_to_add[level - 1]); if (_local3 == 2) { enemy_MC = attachMovie("enemy_2", "enemy" + depth, depth); var enemy_num = 2; } else { enemy_MC = attachMovie("enemy", "enemy" + depth, depth); var enemy_num = 1; } var gonna_delete = enemy_array.length; enemy_array.push("enemy" + depth); enemy_array_lives.push(enemy_lives_array[level - 1]); depth++; var side = randRange(1, 2); var shoot_at_ball = ((shoot_at_ball = randRange(20, 50))); if (side == 1) { enemy_MC._x = -(enemy_MC._width / 2); var enemy_speed = enemy_speed_array[level - 1]; } if (side == 2) { enemy_MC._x = Stage.width + (enemy_MC._width / 2); var enemy_speed = (-enemy_speed_array[level - 1]); } enemy_MC._y = randRange(18.25, 381.75); enemy_MC.onEnterFrame = function () { if (removeEnemies == 1) { _root[enemy_array[gonna_delete]].removeMovieClip(); _root[enemy_array_lives[gonna_delete]].removeMovieClip(); enemy_array.splice(gonna_delete, 1); enemy_array_lives.splice(gonna_delete, 1); down = gonna_delete; } shoot_at_ball = shoot_at_ball - 1; if (shoot_at_ball == 0) { shoot_at_ball = randRange(shot_rate_min[level - 1], shot_rate_max[level - 1]); if (enemy_num == 1) { enemy_bullet_MC = attachMovie("enemy_bullet", "enemy_bullet" + depth, depth); } if (enemy_num == 2) { enemy_bullet_MC = attachMovie("enemy_bullet_2", "enemy_bullet" + depth, depth); } if (enemy_num == 2) { var time_to_detonation = 60; } depth++; enemy_bullet_MC._x = this._x; enemy_bullet_MC._y = this._y; var _local5 = 3; var dx2 = (this._x - ball._x); var dy2 = (this._y - ball._y); var radians2 = Math.atan2(dy2, dx2); enemy_bullet_MC._rotation = (radians2 * 180) / Math.PI; var _local3 = randRange(1, 2); if (_local3 == 1) { var dirx2 = (Math.cos((enemy_bullet_MC._rotation * Math.PI) / 180) * 5); var diry2 = (Math.sin((enemy_bullet_MC._rotation * Math.PI) / 180) * 5); } else { var _local4 = randRange(1, 2); if (_local4 == 1) { var diry2 = -4; } else { var diry2 = 4; } } enemy_bullet_MC.onEnterFrame = function () { if (removeEnemies == 1) { this.removeMovieClip(); } this._rotation = this._rotation + 10; if (enemy_num == 2) { time_to_detonation = time_to_detonation - 1; if (time_to_detonation == 1) { this.removeMovieClip(); } dx2 = this._x - ball._x; dy2 = this._y - ball._y; radians2 = Math.atan2(dy2, dx2); this._rotation = (radians2 * 180) / Math.PI; dirx2 = Math.cos((this._rotation * Math.PI) / 180) * 5; diry2 = Math.sin((this._rotation * Math.PI) / 180) * 5; } this._y = this._y - diry2; this._x = this._x - dirx2; if (this.hitTest(ball._x, ball._y, true)) { if (ball_life >= 0) { ball._x = Stage.width / 2; ball._y = Stage.height / 2; lives = lives - 1; this.removeMovieClip(); } if (ball_life < 0) { ball.gotoAndStop(2); this.removeMovieClip(); ball_life = 30; } } if ((((this._y > Stage.height) || (this._y < 0)) || (this._x > Stage.width)) || (this._x < 0)) { this.removeMovieClip(); } }; } this._x = this._x + enemy_speed; if (down < gonna_delete) { gonna_delete = gonna_delete - 1; } if ((this._x > Stage.width) && (side == 1)) { _root[enemy_array[gonna_delete]].removeMovieClip(); _root[enemy_array_lives[gonna_delete]].removeMovieClip(); enemy_array.splice(gonna_delete, 1); enemy_array_lives.splice(gonna_delete, 1); down = gonna_delete; } if ((this._x < 0) && (side == 2)) { _root[enemy_array[gonna_delete]].removeMovieClip(); _root[enemy_array_lives[gonna_delete]].removeMovieClip(); enemy_array.splice(gonna_delete, 1); enemy_array_lives.splice(gonna_delete, 1); down = gonna_delete; } }; } } function levels() { if (level != 10) { time_to_next_level = time_to_next_level - 1; } if (time_to_next_level == 0) { update_complete(); } } function hit_test() { var i = enemy_array.length; var o = bullet_array.length; while (i > 0) { o = bullet_array.length; while (o > 0) { if (_root[enemy_array[i - 1]].hitTest(_root[bullet_array[o - 1]])) { _root[bullet_array[o - 1]].removeMovieClip(); bullet_array.splice(o - 1, 1); down2 = o - 1; eval ((enemy_array_lives[i - 1] = enemy_array_lives[i - 1] - 1)); if (enemy_array_lives[i - 1] == 0) { score = score + multiplier; multiplier = multiplier + 1; updatestats(); _root[enemy_array[i - 1]].gotoAndStop(2); enemy_array.splice(i - 1, 1); enemy_array_lives.splice(i - 1, 1); down = i - 1; o = -1; i = -1; } } o--; } i--; } } function randRange(smallNum, bigNum) { return(Math.floor(Math.random() * ((bigNum - smallNum) + 1)) + smallNum); } stop(); kirupaSound3 = new Sound(this); kirupaSound3.attachSound("soft"); kirupaSound3.start(0, 99); attachMovie("ball", "ball", 1000000); ball._x = Stage.width / 2; ball._y = Stage.height / 2; comments_array = new Array("If you haven't already figured out how to play, use the arrow keys to move and the mouse to shoot. The next level will be slightly harder.", "Still pretty easy, gonna speed everything up again. Don't worry, it will get much harder when you get to the later levels.", "I think the enemies are a little too easy to kill, you have to hit them three times now :)", "If you haven't already noticed, the levels get longer each time.", "New enemy! yes the 'Blue Bubble' has finally arrived, did I mention he has homing missles?", "Having fun with the blue dude yet? He will come a bit more often in the following levels", "Let's change it up a little. No blues for this level, but that will be the least of your worries", "Alright adding blues back, uping the difficulty, and making the enemies stronger.", "Unfortunately, this is the last level, it only ends when you die (which won't take long) so goodbye :("); enemy_speed_array = new Array(2, 3, 3, 4, 6, 6, 6, 8, 8, 8); enemy_come_array = new Array(50, 40, 30, 30, 30, 20, 15, 10, 15, 10); shot_rate_min = new Array(50, 40, 20, 20, 20, 20, 20, 10, 15, 15); shot_rate_max = new Array(100, 75, 50, 50, 50, 50, 50, 15, 35, 25); enemies_to_add = new Array(1, 1, 1, 1, 1, 5, 4, 1, 3, 2); enemy_lives_array = new Array(1, 1, 1, 2, 2, 1, 1, 1, 2, 3); next_level_array = new Array(300, 500, 800, 1100, 1400, 1700, 2000, 2500, 3000, 1); current_frame = 1; _xball = 0; _yball = 0; removeEnemies = 0; shooting = 0; down = 0; down2 = 0; time_to_add_enemy = 1; lives = 5; speed = 2; friction = 0.9; bullet_array = new Array(); enemy_array = new Array(); enemy_array_lives = new Array(); depth = 2; level = 1; score = 0; multiplier = 1; ball_life = 0; time_to_shoot = -5; time_to_next_level = next_level_array[level - 1]; var my_txt = new TextFormat(); my_txt.bold = true; my_txt.font = "Arial"; my_txt.size = 12; my_txt.color = 16777215 /* 0xFFFFFF */; this.createTextField("values", 1000001, 5, 5, 550, 30); values.setNewTextFormat(my_txt); values.selectable = true; values.tabStops = [100, 300, 300, 400]; updatestats(); onMouseDown = function () { shooting = 1; }; onMouseUp = function () { time_to_shoot = -1; };
Frame 4
function go_back() { gotoAndStop (2); score = 0; } current_frame = 0; mochi.MochiScores.showLeaderboard({boardID:"e0072271f6b69fdd", score:score, onClose:function () { go_back(); }});
Frame 5
back_but.onRelease = function () { gotoAndStop (2); };
Frame 6
back_but.onRelease = function () { gotoAndStop (2); };
Symbol 8 MovieClip Frame 15
_parent.removeMovieClip();
Symbol 9 MovieClip [enemy] Frame 1
stop();
Symbol 9 MovieClip [enemy] Frame 2
stop();
Symbol 35 MovieClip Frame 15
_parent.removeMovieClip();
Symbol 36 MovieClip [enemy_2] Frame 1
stop();
Symbol 36 MovieClip [enemy_2] Frame 2
stop();
Symbol 47 MovieClip Frame 30
_parent.gotoAndStop(1);
Symbol 48 MovieClip [ball] Frame 1
stop();
Symbol 48 MovieClip [ball] Frame 2
stop();
Symbol 69 MovieClip [__Packages.mochi.MochiServices] Frame 0
class mochi.MochiServices { static var _id, _container, _clip, _sendChannelName, _rcvChannelName, __get__comChannelName, onError, _listenChannel, _rcvChannel, _loader, _loaderListener, _sendChannel; function MochiServices () { } static function get id() { return(_id); } static function get clip() { return(_container); } static function get childClip() { return(_clip); } static function getVersion() { return("1.31"); } static function allowDomains(server) { var _local1 = server.split("/")[2].split(":")[0]; if (System.security) { if (System.security.allowDomain) { System.security.allowDomain("*"); System.security.allowDomain(_local1); } if (System.security.allowInsecureDomain) { System.security.allowInsecureDomain("*"); System.security.allowInsecureDomain(_local1); } } return(_local1); } static function get isNetworkAvailable() { if (System.security) { var _local1 = System.security; if (_local1.sandboxType == "localWithFile") { return(false); } } return(true); } static function set comChannelName(val) { if (val != undefined) { if (val.length > 3) { _sendChannelName = val + "_fromgame"; _rcvChannelName = val; initComChannels(); } } //return(__get__comChannelName()); } static function get connected() { return(_connected); } static function connect(id, clip, onError) { if ((!_connected) && (_clip == undefined)) { trace("MochiServices Connecting..."); _connecting = true; init(id, clip); } if (onError != undefined) { mochi.MochiServices.onError = onError; } else if (mochi.MochiServices.onError == undefined) { mochi.MochiServices.onError = function (errorCode) { trace(errorCode); }; } } static function disconnect() { if (_connected || (_connecting)) { _connecting = (_connected = false); flush(true); if (_clip != undefined) { _clip.removeMovieClip(); delete _clip; } _listenChannel.close(); _rcvChannel.close(); } } static function init(id, clip) { _id = id; if (clip != undefined) { _container = clip; } else { _container = _root; } loadCommunicator(id, _container); } static function loadCommunicator(id, clip) { var _local2 = "_mochiservices_com_" + id; if (_clip != null) { return(_clip); } if (!isNetworkAvailable) { return(null); } allowDomains(_gatewayURL); _clip = clip.createEmptyMovieClip(_local2, 10336, false); _loader = new MovieClipLoader(); if (_loaderListener.waitInterval != null) { clearInterval(_loaderListener.waitInterval); } _loaderListener = {}; _loaderListener.onLoadError = function (target_mc, errorCode, httpStatus) { trace("MochiServices could not load."); mochi.MochiServices.disconnect(); mochi.MochiServices.onError.apply(null, [errorCode]); }; _loaderListener.onLoadStart = function (target_mc) { this.isLoading = true; }; _loaderListener.startTime = getTimer(); _loaderListener.wait = function () { if ((getTimer() - this.startTime) > 10000) { if (!this.isLoading) { mochi.MochiServices.disconnect(); mochi.MochiServices.onError.apply(null, ["IOError"]); } clearInterval(this.waitInterval); } }; _loaderListener.waitInterval = setInterval(_loaderListener, "wait", 1000); _loader.addListener(_loaderListener); _loader.loadClip(_gatewayURL, _clip); _sendChannel = new LocalConnection(); _sendChannel._queue = []; _rcvChannel = new LocalConnection(); _rcvChannel.allowDomain = function (d) { return(true); }; _rcvChannel.allowInsecureDomain = _rcvChannel.allowDomain; _rcvChannel._nextcallbackID = 0; _rcvChannel._callbacks = {}; listen(); return(_clip); } static function onStatus(infoObject) { if (!(infoObject.level === "error")) { } else { _connected = false; _listenChannel.connect(_listenChannelName); } } static function listen() { _listenChannel = new LocalConnection(); _listenChannel.handshake = function (args) { mochi.MochiServices.__set__comChannelName(args.newChannel); }; _listenChannel.allowDomain = function (d) { return(true); }; _listenChannel.allowInsecureDomain = _listenChannel.allowDomain; _listenChannel.connect(_listenChannelName); trace("Waiting for MochiAds services to connect..."); } static function initComChannels() { if (!_connected) { _sendChannel.onStatus = function (infoObject) { mochi.MochiServices.onStatus(infoObject); }; _sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_clip, version:getVersion()}); _rcvChannel.onStatus = function (infoObject) { mochi.MochiServices.onStatus(infoObject); }; _rcvChannel.onReceive = function (pkg) { var _local5 = pkg.callbackID; var _local4 = this._callbacks[_local5]; if (!_local4) { return(undefined); } var _local2 = _local4.callbackMethod; var _local3 = _local4.callbackObject; if (_local3 && (typeof(_local2) == "string")) { _local2 = _local3[_local2]; } if (_local2 != undefined) { _local2.apply(_local3, pkg.args); } delete this._callbacks[_local5]; }; _rcvChannel.onError = function () { mochi.MochiServices.onError.apply(null, ["IOError"]); }; _rcvChannel.connect(_rcvChannelName); trace("connected!"); _connecting = false; _connected = true; _listenChannel.close(); while (_sendChannel._queue.length > 0) { _sendChannel.send(_sendChannelName, "onReceive", _sendChannel._queue.shift()); } } } static function flush(error) { var _local1; var _local2; while (_sendChannel._queue.length > 0) { _local1 = _sendChannel._queue.shift(); if (_local1.callbackID != null) { _local2 = _rcvChannel._callbacks[_local1.callbackID]; } delete _rcvChannel._callbacks[_local1.callbackID]; if (error) { handleError(_local1.args, _local2.callbackObject, _local2.callbackMethod); } } } static function handleError(args, callbackObject, callbackMethod) { if (args != null) { if (args.onError != null) { args.onError.apply(null, ["NotConnected"]); } } if (callbackMethod != null) { args = {}; args.error = true; args.errorCode = "NotConnected"; if ((callbackObject != null) && (typeof(callbackMethod) == "string")) { callbackObject[callbackMethod](args); } else if (callbackMethod != null) { callbackMethod.apply(args); } } } static function send(methodName, args, callbackObject, callbackMethod) { if (_connected) { _sendChannel.send(_sendChannelName, "onReceive", {methodName:methodName, args:args, callbackID:_rcvChannel._nextcallbackID}); } else { if ((_clip == undefined) || (!_connecting)) { onError.apply(null, ["NotConnected"]); handleError(args, callbackObject, callbackMethod); flush(true); return(undefined); } _sendChannel._queue.push({methodName:methodName, args:args, callbackID:_rcvChannel._nextcallbackID}); } _rcvChannel._callbacks[_rcvChannel._nextcallbackID] = {callbackObject:callbackObject, callbackMethod:callbackMethod}; _rcvChannel._nextcallbackID++; } static var _gatewayURL = "http://www.mochiads.com/static/lib/services/services.swf"; static var _listenChannelName = "__mochiservices"; static var _connecting = false; static var _connected = false; }
Symbol 70 MovieClip [__Packages.MochiAd] Frame 0
class MochiAd { function MochiAd () { } static function getVersion() { return("2.5"); } static function showPreGameAd(options) { var _local26 = {clip:_root, ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:16747008, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function () { this.clip.stop(); }, ad_finished:function () { this.clip.play(); }, ad_failed:function () { trace("[MochiAd] Couldn't load an ad, make sure that your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_loaded:function (width, height) { }, ad_skipped:function () { }, ad_progress:function (percent) { }}; options = _parseOptions(options, _local26); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def") { options.ad_started(); options.ad_finished(); return(undefined); } var clip = options.clip; var _local22 = 11000; var _local25 = options.ad_timeout; delete options.ad_timeout; var fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!load(options)) { options.ad_failed(); options.ad_finished(); return(undefined); } options.ad_started(); var mc = clip._mochiad; mc.onUnload = function () { options.ad_finished(); }; var _local14 = _getRes(options); var _local4 = _local14[0]; var _local13 = _local14[1]; mc._x = _local4 * 0.5; mc._y = _local13 * 0.5; var chk = mc.createEmptyMovieClip("_mochiad_wait", 3); chk._x = _local4 * -0.5; chk._y = _local13 * -0.5; var _local6 = chk.createEmptyMovieClip("_mochiad_bar", 4); if (options.no_progress_bar) { _local6._visible = false; delete options.no_progress_bar; } else { _local6._x = 10; _local6._y = _local13 - 20; } var _local21 = options.color; delete options.color; var _local19 = options.background; delete options.background; var _local23 = options.outline; delete options.outline; var _local5 = _local6.createEmptyMovieClip("_outline", 1); _local5.beginFill(_local19); _local5.moveTo(0, 0); _local5.lineTo(_local4 - 20, 0); _local5.lineTo(_local4 - 20, 10); _local5.lineTo(0, 10); _local5.lineTo(0, 0); _local5.endFill(); var _local3 = _local6.createEmptyMovieClip("_inside", 2); _local3.beginFill(_local21); _local3.moveTo(0, 0); _local3.lineTo(_local4 - 20, 0); _local3.lineTo(_local4 - 20, 10); _local3.lineTo(0, 10); _local3.lineTo(0, 0); _local3.endFill(); _local3._xscale = 0; var _local7 = _local6.createEmptyMovieClip("_outline", 3); _local7.lineStyle(0, _local23, 100); _local7.moveTo(0, 0); _local7.lineTo(_local4 - 20, 0); _local7.lineTo(_local4 - 20, 10); _local7.lineTo(0, 10); _local7.lineTo(0, 0); chk.ad_msec = _local22; chk.ad_timeout = _local25; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function () { var _local2 = 100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)); if (_local2 > 0) { this._parent._alpha = _local2; } else { var _local3 = this._parent._parent; MochiAd.unload(_local3); delete this.onEnterFrame; } }; mc.lc.regContLC = function (lc_name) { mc._containerLCName = lc_name; }; var sendHostProgress = false; mc.lc.sendHostLoadProgress = function (lc_name) { sendHostProgress = true; }; mc.lc.adLoaded = options.ad_loaded; mc.lc.adSkipped = options.ad_skipped; mc.lc.adjustProgress = function (msec) { var _local2 = this.mc._mochiad_wait; _local2.server_control = true; _local2.started = getTimer(); _local2.ad_msec = msec; }; mc.lc.rpc = function (callbackID, arg) { MochiAd.rpc(clip, callbackID, arg); }; mc.rpcTestFn = function (s) { trace("[MOCHIAD rpcTestFn] " + s); return(s); }; chk.onEnterFrame = function () { var _local6 = this._parent._parent; var _local11 = this._parent._mochiad_ctr; var _local5 = getTimer() - this.started; var _local3 = false; var _local4 = _local6.getBytesTotal(); var _local8 = _local6.getBytesLoaded(); var _local2 = (100 * _local8) / _local4; var _local10 = (100 * _local5) / chk.ad_msec; var _local9 = this._mochiad_bar._inside; var _local13 = Math.min(100, Math.min(_local2 || 0, _local10)); _local13 = Math.max(this.last_pcnt, _local13); this.last_pcnt = _local13; _local9._xscale = _local13; options.ad_progress(_local13); if (sendHostProgress) { clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local2}); if (_local2 == 100) { sendHostProgress = false; } } if (!chk.showing) { var _local7 = _local11.getBytesTotal(); if ((_local7 > 0) || (typeof(_local7) == "undefined")) { chk.showing = true; chk.started = getTimer(); } else if ((_local5 > chk.ad_timeout) && (_local2 == 100)) { options.ad_failed(); _local3 = true; } } if (_local5 > chk.ad_msec) { _local3 = true; } if (((_local4 > 0) && (_local8 >= _local4)) && (_local3)) { if (this.server_control) { delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; } } }; } static function showClickAwayAd(options) { var _local9 = {clip:_root, ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function () { }, ad_finished:function () { }, ad_loaded:function (width, height) { }, ad_failed:function () { trace("[MochiAd] Couldn't load an ad, make sure that your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function () { }}; options = _parseOptions(options, _local9); var clip = options.clip; var _local8 = options.ad_timeout; delete options.ad_timeout; if (!load(options)) { options.ad_failed(); options.ad_finished(); return(undefined); } options.ad_started(); var mc = clip._mochiad; mc.onUnload = function () { options.ad_finished(); }; var _local4 = _getRes(options); var _local10 = _local4[0]; var _local7 = _local4[1]; mc._x = _local10 * 0.5; mc._y = _local7 * 0.5; var chk = mc.createEmptyMovieClip("_mochiad_wait", 3); chk.ad_timeout = _local8; chk.started = getTimer(); chk.showing = false; mc.lc.adLoaded = options.ad_loaded; mc.lc.adSkipped = options.ad_skipped; mc.lc.rpc = function (callbackID, arg) { MochiAd.rpc(clip, callbackID, arg); }; mc.rpcTestFn = function (s) { trace("[MOCHIAD rpcTestFn] " + s); return(s); }; var _local20 = false; mc.lc.regContLC = function (lc_name) { mc._containerLCName = lc_name; }; chk.onEnterFrame = function () { var _local5 = this._parent._mochiad_ctr; var _local4 = getTimer() - this.started; var _local2 = false; if (!chk.showing) { var _local3 = _local5.getBytesTotal(); if ((_local3 > 0) || (typeof(_local3) == "undefined")) { _local2 = true; chk.showing = true; chk.started = getTimer(); } else if (_local4 > chk.ad_timeout) { options.ad_failed(); _local2 = true; } } if (_local2) { delete this.onEnterFrame; } }; } static function showInterLevelAd(options) { var _local13 = {clip:_root, ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function () { this.clip.stop(); }, ad_finished:function () { this.clip.play(); }, ad_failed:function () { trace("[MochiAd] Couldn't load an ad, make sure that your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_loaded:function (width, height) { }, ad_skipped:function () { }}; options = _parseOptions(options, _local13); var clip = options.clip; var _local10 = 11000; var _local12 = options.ad_timeout; delete options.ad_timeout; var fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!load(options)) { options.ad_failed(); options.ad_finished(); return(undefined); } options.ad_started(); var mc = clip._mochiad; mc.onUnload = function () { options.ad_finished(); }; var _local5 = _getRes(options); var _local14 = _local5[0]; var _local11 = _local5[1]; mc._x = _local14 * 0.5; mc._y = _local11 * 0.5; var chk = mc.createEmptyMovieClip("_mochiad_wait", 3); chk.ad_msec = _local10; chk.ad_timeout = _local12; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function () { var _local2 = 100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)); if (_local2 > 0) { this._parent._alpha = _local2; } else { var _local3 = this._parent._parent; MochiAd.unload(_local3); delete this.onEnterFrame; } }; mc.lc.adLoaded = options.ad_loaded; mc.lc.adSkipped = options.ad_skipped; mc.lc.adjustProgress = function (msec) { var _local2 = this.mc._mochiad_wait; _local2.server_control = true; _local2.started = getTimer(); _local2.ad_msec = msec - 250; }; mc.lc.rpc = function (callbackID, arg) { MochiAd.rpc(clip, callbackID, arg); }; mc.rpcTestFn = function (s) { trace("[MOCHIAD rpcTestFn] " + s); return(s); }; chk.onEnterFrame = function () { var _local5 = this._parent._mochiad_ctr; var _local4 = getTimer() - this.started; var _local2 = false; if (!chk.showing) { var _local3 = _local5.getBytesTotal(); if ((_local3 > 0) || (typeof(_local3) == "undefined")) { chk.showing = true; chk.started = getTimer(); } else if (_local4 > chk.ad_timeout) { options.ad_failed(); _local2 = true; } } if (_local4 > chk.ad_msec) { _local2 = true; } if (_local2) { if (this.server_control) { delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; } } }; } static function showPreloaderAd(options) { trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); showPreGameAd(options); } static function showTimedAd(options) { trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); showInterLevelAd(options); } static function _allowDomains(server) { var _local1 = server.split("/")[2].split(":")[0]; if (System.security) { if (System.security.allowDomain) { System.security.allowDomain("*"); System.security.allowDomain(_local1); } if (System.security.allowInsecureDomain) { System.security.allowInsecureDomain("*"); System.security.allowInsecureDomain(_local1); } } return(_local1); } static function load(options) { var _local13 = {clip:_root, server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = _parseOptions(options, _local13); options.swfv = options.clip.getSWFVersion() || 6; options.mav = getVersion(); var _local9 = options.clip; if (!_isNetworkAvailable()) { return(null); } if (_local9._mochiad_loaded) { return(null); } var _local12 = options.depth; delete options.depth; var _local6 = _local9.createEmptyMovieClip("_mochiad", _local12); var _local11 = _getRes(options); options.res = (_local11[0] + "x") + _local11[1]; options.server = options.server + options.id; delete options.id; _local9._mochiad_loaded = true; var _local4 = _local6.createEmptyMovieClip("_mochiad_ctr", 1); for (var _local7 in options) { _local4[_local7] = options[_local7]; } var _local10 = _local4.server; delete _local4.server; var _local14 = _allowDomains(_local10); _local6.onEnterFrame = function () { if (this._mochiad_ctr._url != this._url) { this.onEnterFrame = function () { if (!this._mochiad_ctr) { delete this.onEnterFrame; MochiAd.unload(this._parent); } }; } }; var _local5 = new LocalConnection(); var _local8 = ["", Math.floor(new Date().getTime()), random(999999)].join("_"); _local5.mc = _local6; _local5.name = _local8; _local5.hostname = _local14; _local5.allowDomain = function (d) { return(true); }; _local5.allowInsecureDomain = _local5.allowDomain; _local5.connect(_local8); _local6.lc = _local5; _local4.lc = _local8; _local4.st = getTimer(); _local4.loadMovie(_local10 + ".swf", "POST"); return(_local6); } static function unload(clip) { if (typeof(clip) == "undefined") { clip = _root; } if (clip.clip && (clip.clip._mochiad)) { clip = clip.clip; } if (!clip._mochiad) { return(false); } if (clip._mochiad._containerLCName != undefined) { clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"unload"}); } clip._mochiad.removeMovieClip(); delete clip._mochiad_loaded; delete clip._mochiad; return(true); } static function _isNetworkAvailable() { if (System.security) { var _local1 = System.security; if (_local1.sandboxType == "localWithFile") { return(false); } } return(true); } static function _getRes(options) { var _local3 = options.clip.getBounds(); var _local2 = 0; var _local1 = 0; if (typeof(options.res) != "undefined") { var _local4 = options.res.split("x"); _local2 = parseFloat(_local4[0]); _local1 = parseFloat(_local4[1]); } else { _local2 = _local3.xMax - _local3.xMin; _local1 = _local3.yMax - _local3.yMin; } if ((_local2 == 0) || (_local1 == 0)) { _local2 = Stage.width; _local1 = Stage.height; } return([_local2, _local1]); } static function _parseOptions(options, defaults) { var _local4 = {}; for (var _local8 in defaults) { _local4[_local8] = defaults[_local8]; } if (options) { for (var _local8 in options) { _local4[_local8] = options[_local8]; } } if (_root.mochiad_options) { var _local5 = _root.mochiad_options.split("&"); var _local2 = 0; while (_local2 < _local5.length) { var _local3 = _local5[_local2].split("="); _local4[unescape(_local3[0])] = unescape(_local3[1]); _local2++; } } if (_local4.id == "test") { trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); } return(_local4); } static function rpc(clip, callbackID, arg) { switch (arg.id) { case "setValue" : setValue(clip, arg.objectName, arg.value); break; case "getValue" : var _local4 = getValue(clip, arg.objectName); clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local4); break; case "runMethod" : var _local3 = runMethod(clip, arg.method, arg.args); clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local3); break; default : trace("[mochiads rpc] unknown rpc id: " + arg.id); } } static function setValue(base, objectName, value) { var _local2 = objectName.split("."); var _local1; _local1 = 0; while (_local1 < (_local2.length - 1)) { if ((base[_local2[_local1]] == undefined) || (base[_local2[_local1]] == null)) { return(undefined); } base = base[_local2[_local1]]; _local1++; } base[_local2[_local1]] = value; } static function getValue(base, objectName) { var _local2 = objectName.split("."); var _local1; _local1 = 0; while (_local1 < (_local2.length - 1)) { if ((base[_local2[_local1]] == undefined) || (base[_local2[_local1]] == null)) { return(undefined); } base = base[_local2[_local1]]; _local1++; } return(base[_local2[_local1]]); } static function runMethod(base, methodName, argsArray) { var _local2 = methodName.split("."); var _local1; _local1 = 0; while (_local1 < (_local2.length - 1)) { if ((base[_local2[_local1]] == undefined) || (base[_local2[_local1]] == null)) { return(undefined); } base = base[_local2[_local1]]; _local1++; } if (typeof(base[_local2[_local1]]) == "function") { return(base[_local2[_local1]].apply(base, argsArray)); } return(undefined); } }
Symbol 71 MovieClip [__Packages.mochi.MochiScores] Frame 0
class mochi.MochiScores { static var boardID, onClose, onError; function MochiScores () { } static function setBoardID(boardID) { mochi.MochiScores.boardID = boardID; mochi.MochiServices.send("scores_setBoardID", {boardID:boardID}); } static function showLeaderboard(options) { if (options.clip != null) { if ((options.clip != mochi.MochiServices.__get__clip()) || (mochi.MochiServices.__get__childClip()._target == undefined)) { mochi.MochiServices.disconnect(); mochi.MochiServices.connect(mochi.MochiServices.__get__id(), options.clip); } delete options.clip; } if (options.name != null) { if (typeof(options.name) == "object") { if (options.name.text != undefined) { options.name = options.name.text; } } } if (options.score != null) { if (typeof(options.score) == "object") { if (options.score.text != undefined) { options.score = options.score.text; } } } if (options.onDisplay != null) { options.onDisplay(); } else { mochi.MochiServices.__get__clip().stop(); } if (options.onClose != null) { onClose = options.onClose; } else { onClose = function () { mochi.MochiServices.__get__clip().play(); }; } if (options.onError != null) { onError = options.onError; } else { onError = onClose; } if (options.boardID == null) { if (boardID != null) { options.boardID = boardID; } } mochi.MochiServices.send("scores_showLeaderboard", {options:options}, null, doClose); } static function closeLeaderboard() { mochi.MochiServices.send("scores_closeLeaderboard"); } static function getPlayerInfo(callbackObj, callbackMethod) { mochi.MochiServices.send("scores_getPlayerInfo", null, callbackObj, callbackMethod); } static function submit(score, name, callbackObj, callbackMethod) { mochi.MochiServices.send("scores_submit", {score:score, name:name}, callbackObj, callbackMethod); } static function requestList(callbackObj, callbackMethod) { mochi.MochiServices.send("scores_requestList", null, callbackObj, callbackMethod); } static function scoresArrayToObjects(scores) { var _local5 = {}; var _local1; var _local4; var _local2; var _local6; for (var _local8 in scores) { if (typeof(scores[_local8]) == "object") { if ((scores[_local8].cols != null) && (scores[_local8].rows != null)) { _local5[_local8] = []; _local2 = scores[_local8]; _local4 = 0; while (_local4 < _local2.rows.length) { _local6 = {}; _local1 = 0; while (_local1 < _local2.cols.length) { _local6[_local2.cols[_local1]] = _local2.rows[_local4][_local1]; _local1++; } _local5[_local8].push(_local6); _local4++; } } else { _local5[_local8] = {}; for (var _local7 in scores[_local8]) { _local5[_local8][_local7] = scores[_local8][_local7]; } } } else { _local5[_local8] = scores[_local8]; } } return(_local5); } static function doClose(args) { if (args.error == true) { if (args.errorCode == undefined) { args.errorCode = "IOError"; } onError.apply(null, [args.errorCode]); } else { onClose.apply(); } } }

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClip [bullet]Uses:1
Symbol 3 GraphicUsed by:9
Symbol 4 GraphicUsed by:5 10
Symbol 5 MovieClipUses:4Used by:7 9 34 36 47 48
Symbol 6 GraphicUsed by:7
Symbol 7 MovieClipUses:6 5Used by:8
Symbol 8 MovieClipUses:7Used by:9
Symbol 9 MovieClip [enemy]Uses:3 5 8
Symbol 10 MovieClip [tester]Uses:4Used by:12 38
Symbol 11 GraphicUsed by:12
Symbol 12 MovieClip [enemy_bullet]Uses:10 11
Symbol 13 GraphicUsed by:14
Symbol 14 MovieClip [test_hit]Uses:13
Symbol 15 GraphicUsed by:32
Symbol 16 FontUsed by:17 18 19 20 21 22 28 30
Symbol 17 TextUses:16Used by:32
Symbol 18 TextUses:16Used by:32
Symbol 19 TextUses:16Used by:32
Symbol 20 TextUses:16Used by:32
Symbol 21 TextUses:16Used by:32
Symbol 22 TextUses:16Used by:32
Symbol 23 FontUsed by:24 25 26 27 31 49 50 51 53 55 57 62 63 65 66 67 68
Symbol 24 EditableTextUses:23Used by:32
Symbol 25 EditableTextUses:23Used by:32
Symbol 26 EditableTextUses:23Used by:32
Symbol 27 EditableTextUses:23Used by:32
Symbol 28 TextUses:16Used by:29
Symbol 29 MovieClipUses:28Used by:32
Symbol 30 TextUses:16Used by:32
Symbol 31 EditableTextUses:23Used by:32
Symbol 32 MovieClip [level_complete_screen]Uses:15 17 18 19 20 21 22 24 25 26 27 29 30 31
Symbol 33 GraphicUsed by:34 36
Symbol 34 MovieClipUses:33 5Used by:35
Symbol 35 MovieClipUses:34Used by:36
Symbol 36 MovieClip [enemy_2]Uses:33 5 35
Symbol 37 GraphicUsed by:38
Symbol 38 MovieClip [enemy_bullet_2]Uses:10 37
Symbol 39 GraphicUsed by:40
Symbol 40 MovieClipUses:39Used by:42
Symbol 41 GraphicUsed by:42
Symbol 42 MovieClip [powerup]Uses:40 41
Symbol 43 GraphicUsed by:48
Symbol 44 GraphicUsed by:47
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClipUses:45Used by:47
Symbol 47 MovieClipUses:44 5 46Used by:48
Symbol 48 MovieClip [ball]Uses:43 5 47Used by:Timeline
Symbol 69 MovieClip [__Packages.mochi.MochiServices]
Symbol 70 MovieClip [__Packages.MochiAd]
Symbol 71 MovieClip [__Packages.mochi.MochiScores]
Symbol 49 TextUses:23Used by:Timeline
Symbol 50 TextUses:23Used by:Timeline
Symbol 51 TextUses:23Used by:52
Symbol 52 MovieClipUses:51Used by:Timeline
Symbol 53 TextUses:23Used by:54
Symbol 54 MovieClipUses:53Used by:Timeline
Symbol 55 TextUses:23Used by:56
Symbol 56 MovieClipUses:55Used by:Timeline
Symbol 57 TextUses:23Used by:58
Symbol 58 MovieClipUses:57Used by:Timeline
Symbol 59 Sound [soft]Used by:Timeline
Symbol 60 FontUsed by:61
Symbol 61 TextUses:60Used by:Timeline
Symbol 62 TextUses:23Used by:Timeline
Symbol 63 TextUses:23Used by:64
Symbol 64 MovieClipUses:63Used by:Timeline
Symbol 65 TextUses:23Used by:Timeline
Symbol 66 TextUses:23Used by:Timeline
Symbol 67 TextUses:23Used by:Timeline
Symbol 68 TextUses:23Used by:Timeline

Instance Names

"play_btn"Frame 2Symbol 52 MovieClip
"instructions_btn"Frame 2Symbol 54 MovieClip
"highscores_btn"Frame 2Symbol 56 MovieClip
"credits_btn"Frame 2Symbol 58 MovieClip
"back_but"Frame 5Symbol 64 MovieClip
"notes"Symbol 32 MovieClip [level_complete_screen] Frame 1Symbol 24 EditableText
"score_gained"Symbol 32 MovieClip [level_complete_screen] Frame 1Symbol 25 EditableText
"multiplier_gained"Symbol 32 MovieClip [level_complete_screen] Frame 1Symbol 26 EditableText
"level_current"Symbol 32 MovieClip [level_complete_screen] Frame 1Symbol 27 EditableText
"nextLevel"Symbol 32 MovieClip [level_complete_screen] Frame 1Symbol 29 MovieClip
"lives_current"Symbol 32 MovieClip [level_complete_screen] Frame 1Symbol 31 EditableText

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS1/AS2.
ExportAssets (56)Timeline Frame 1Symbol 2 as "bullet"
ExportAssets (56)Timeline Frame 1Symbol 9 as "enemy"
ExportAssets (56)Timeline Frame 1Symbol 10 as "tester"
ExportAssets (56)Timeline Frame 1Symbol 12 as "enemy_bullet"
ExportAssets (56)Timeline Frame 1Symbol 14 as "test_hit"
ExportAssets (56)Timeline Frame 1Symbol 32 as "level_complete_screen"
ExportAssets (56)Timeline Frame 1Symbol 36 as "enemy_2"
ExportAssets (56)Timeline Frame 1Symbol 38 as "enemy_bullet_2"
ExportAssets (56)Timeline Frame 1Symbol 42 as "powerup"
ExportAssets (56)Timeline Frame 1Symbol 48 as "ball"
ExportAssets (56)Timeline Frame 1Symbol 69 as "__Packages.mochi.MochiServices"
ExportAssets (56)Timeline Frame 1Symbol 70 as "__Packages.MochiAd"
ExportAssets (56)Timeline Frame 1Symbol 71 as "__Packages.mochi.MochiScores"
ExportAssets (56)Timeline Frame 3Symbol 59 as "soft"

Dynamic Text Variables

notesSymbol 24 EditableText""
score_gainedSymbol 25 EditableText""
multiplier_gainedSymbol 26 EditableText""
level_currentSymbol 27 EditableText""
lives_currentSymbol 31 EditableText""




http://swfchan.com/10/47485/info.shtml
Created: 1/5 -2019 18:25:00 Last modified: 1/5 -2019 18:25:00 Server time: 12/05 -2024 20:20:07