Section 1
//MD5 (com.meychi.ascrypt3.MD5)
package com.meychi.ascrypt3 {
public class MD5 {
public function calculate(_arg1:String):String{
return (hex_md5(_arg1));
}
private static function md5_hh(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function md5_ff(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function md5_cmn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
return (safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3));
}
private static function binl2hex(_arg1:Array):String{
var _local2:String;
var _local3:String;
var _local4:Number;
_local2 = new String("");
_local3 = new String("0123456789abcdef");
_local4 = 0;
while (_local4 < (_arg1.length * 4)) {
_local2 = (_local2 + (_local3.charAt(((_arg1[(_local4 >> 2)] >> (((_local4 % 4) * 8) + 4)) & 15)) + _local3.charAt(((_arg1[(_local4 >> 2)] >> ((_local4 % 4) * 8)) & 15))));
_local4++;
};
return (_local2);
}
private static function str2binl(_arg1:String):Array{
var _local2:Array;
var _local3:Number;
var _local4:Number;
_local2 = new Array();
_local3 = ((1 << 8) - 1);
_local4 = 0;
while (_local4 < (_arg1.length * 8)) {
_local2[(_local4 >> 5)] = (_local2[(_local4 >> 5)] | ((_arg1.charCodeAt((_local4 / 8)) & _local3) << (_local4 % 32)));
_local4 = (_local4 + 8);
};
return (_local2);
}
private static function md5_gg(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function md5_ii(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function hex_md5(_arg1:String):String{
return (binl2hex(core_md5(str2binl(_arg1), (_arg1.length * 8))));
}
private static function bit_rol(_arg1:Number, _arg2:Number):Number{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
private static function core_md5(_arg1:Array, _arg2:Number):Array{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
_local3 = 1732584193;
_local4 = -271733879;
_local5 = -1732584194;
_local6 = 271733878;
_local7 = 0;
while (_local7 < _arg1.length) {
_local8 = _local3;
_local9 = _local4;
_local10 = _local5;
_local11 = _local6;
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, -680876936);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, -389564586);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, -1044525330);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, -176418897);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, -1473231341);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, -45705983);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, -1958414417);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, -42063);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, -1990404162);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, -40341101);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, -1502002290);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, -165796510);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, -1069501632);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, -373897302);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, -701558691);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, -660478335);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, -405537848);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, -1019803690);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, -187363961);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, -1444681467);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, -51403784);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, -1926607734);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, -378558);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, -2022574463);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, -35309556);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, -1530992060);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, -155497632);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, -1094730640);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, -358537222);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, -722521979);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, -640364487);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, -421815835);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, -995338651);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, -198630844);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, -1416354905);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, -57434055);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, -1894986606);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, -1051523);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, -2054922799);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, -30611744);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, -1560198380);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, -145523070);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, -1120210379);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, -343485551);
_local3 = safe_add(_local3, _local8);
_local4 = safe_add(_local4, _local9);
_local5 = safe_add(_local5, _local10);
_local6 = safe_add(_local6, _local11);
_local7 = (_local7 + 16);
};
return (new Array(_local3, _local4, _local5, _local6));
}
private static function safe_add(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
_local3 = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
_local4 = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
}
}//package com.meychi.ascrypt3
Section 2
//RC4 (com.meychi.ascrypt3.RC4)
package com.meychi.ascrypt3 {
public class RC4 {
private static var mykey:Array = new Array(0xFF);
private static var sbox:Array = new Array(0xFF);
public function encrypt(_arg1:String, _arg2:String):String{
var _local3:Array;
var _local4:Array;
var _local5:Array;
_local3 = strToChars(_arg1);
_local4 = strToChars(_arg2);
_local5 = calculate(_local3, _local4);
return (charsToHex(_local5));
}
public function decrypt(_arg1:String, _arg2:String):String{
var _local3:Array;
var _local4:Array;
var _local5:Array;
_local3 = hexToChars(_arg1);
_local4 = strToChars(_arg2);
_local5 = calculate(_local3, _local4);
return (charsToStr(_local5));
}
private static function initialize(_arg1:Array):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = 0;
_local4 = _arg1.length;
_local5 = 0;
_local5 = 0;
while (_local5 <= 0xFF) {
mykey[_local5] = _arg1[(_local5 % _local4)];
sbox[_local5] = _local5;
_local5++;
};
_local5 = 0;
while (_local5 <= 0xFF) {
_local2 = (((_local2 + sbox[_local5]) + mykey[_local5]) % 0x0100);
_local3 = sbox[_local5];
sbox[_local5] = sbox[_local2];
sbox[_local2] = _local3;
_local5++;
};
}
private static function strToChars(_arg1:String):Array{
var _local2:Array;
var _local3:Number;
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local2.push(_arg1.charCodeAt(_local3));
_local3++;
};
return (_local2);
}
private static function charsToStr(_arg1:Array):String{
var _local2:String;
var _local3:Number;
_local2 = new String("");
_local3 = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(_arg1[_local3]));
_local3++;
};
return (_local2);
}
private static function charsToHex(_arg1:Array):String{
var _local2:String;
var _local3:Array;
var _local4:Number;
_local2 = new String("");
_local3 = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
_local4 = 0;
while (_local4 < _arg1.length) {
_local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)]));
_local4++;
};
return (_local2);
}
private static function calculate(_arg1:Array, _arg2:Array):Array{
var _local3:Number;
var _local4:Number;
var _local5:Array;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
initialize(_arg2);
_local3 = 0;
_local4 = 0;
_local5 = new Array();
_local9 = 0;
while (_local9 < _arg1.length) {
_local3 = ((_local3 + 1) % 0x0100);
_local4 = ((_local4 + sbox[_local3]) % 0x0100);
_local7 = sbox[_local3];
sbox[_local3] = sbox[_local4];
sbox[_local4] = _local7;
_local10 = ((sbox[_local3] + sbox[_local4]) % 0x0100);
_local6 = sbox[_local10];
_local8 = (_arg1[_local9] ^ _local6);
_local5.push(_local8);
_local9++;
};
return (_local5);
}
private static function hexToChars(_arg1:String):Array{
var _local2:Array;
var _local3:Number;
_local2 = new Array();
_local3 = ((_arg1.substr(0, 2))=="0x") ? 2 : 0;
while (_local3 < _arg1.length) {
_local2.push(parseInt(_arg1.substr(_local3, 2), 16));
_local3 = (_local3 + 2);
};
return (_local2);
}
}
}//package com.meychi.ascrypt3
Section 3
//banana_22 (KarateMonkey_fla.banana_22)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class banana_22 extends MovieClip {
public function banana_22(){
addFrameScript(13, frame14);
}
function frame14(){
stop();
}
}
}//package KarateMonkey_fla
Section 4
//die_196 (KarateMonkey_fla.die_196)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class die_196 extends MovieClip {
public function die_196(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 5
//FinalStats_262 (KarateMonkey_fla.FinalStats_262)
package KarateMonkey_fla {
import flash.display.*;
import flash.text.*;
public dynamic class FinalStats_262 extends MovieClip {
public var m_txtCombo:TextField;
public var m_txtScore:TextField;
public var m_txtAccuracy:TextField;
}
}//package KarateMonkey_fla
Section 6
//flowerAnim1_12 (KarateMonkey_fla.flowerAnim1_12)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class flowerAnim1_12 extends MovieClip {
public function flowerAnim1_12(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 7
//flowerAnim2_6 (KarateMonkey_fla.flowerAnim2_6)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class flowerAnim2_6 extends MovieClip {
public function flowerAnim2_6(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 8
//flowerAnim3_4 (KarateMonkey_fla.flowerAnim3_4)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class flowerAnim3_4 extends MovieClip {
public function flowerAnim3_4(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 9
//flowerAnim4_14 (KarateMonkey_fla.flowerAnim4_14)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class flowerAnim4_14 extends MovieClip {
public function flowerAnim4_14(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 10
//flowerAnim5_18 (KarateMonkey_fla.flowerAnim5_18)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class flowerAnim5_18 extends MovieClip {
public function flowerAnim5_18(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 11
//GameLogo_55 (KarateMonkey_fla.GameLogo_55)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class GameLogo_55 extends MovieClip {
public var mcTitle:MovieClip;
}
}//package KarateMonkey_fla
Section 12
//hurtJump1_180 (KarateMonkey_fla.hurtJump1_180)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class hurtJump1_180 extends MovieClip {
public function hurtJump1_180(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 13
//hurtLow1_186 (KarateMonkey_fla.hurtLow1_186)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class hurtLow1_186 extends MovieClip {
public function hurtLow1_186(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 14
//hurtSpinKick_185 (KarateMonkey_fla.hurtSpinKick_185)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class hurtSpinKick_185 extends MovieClip {
public function hurtSpinKick_185(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 15
//logo_overplay_27 (KarateMonkey_fla.logo_overplay_27)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class logo_overplay_27 extends MovieClip {
public var mcFadeOut:MovieClip;
public function logo_overplay_27(){
addFrameScript(109, frame110);
}
function frame110(){
stop();
}
}
}//package KarateMonkey_fla
Section 16
//mcCombo2x_108 (KarateMonkey_fla.mcCombo2x_108)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcCombo2x_108 extends MovieClip {
public function mcCombo2x_108(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 17
//mcCombo3x_124 (KarateMonkey_fla.mcCombo3x_124)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcCombo3x_124 extends MovieClip {
public function mcCombo3x_124(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 18
//mcCombo4x_131 (KarateMonkey_fla.mcCombo4x_131)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcCombo4x_131 extends MovieClip {
public function mcCombo4x_131(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 19
//mcComboCounter_106 (KarateMonkey_fla.mcComboCounter_106)
package KarateMonkey_fla {
import flash.display.*;
import flash.text.*;
public dynamic class mcComboCounter_106 extends MovieClip {
public var dtCombo:TextField;
}
}//package KarateMonkey_fla
Section 20
//mcComboMult_107 (KarateMonkey_fla.mcComboMult_107)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcComboMult_107 extends MovieClip {
public var mcCombo2x:MovieClip;
public var mcCombo3x:MovieClip;
public var mcCombo4x:MovieClip;
}
}//package KarateMonkey_fla
Section 21
//mcFade_28 (KarateMonkey_fla.mcFade_28)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFade_28 extends MovieClip {
public function mcFade_28(){
addFrameScript(39, frame40);
}
function frame40(){
stop();
}
}
}//package KarateMonkey_fla
Section 22
//mcFaixa_207 (KarateMonkey_fla.mcFaixa_207)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixa_207 extends MovieClip {
public var mcJump:MovieClip;
public var mcKick:MovieClip;
public var mcPunch:MovieClip;
public var mcBlink:MovieClip;
public var mcSpinKick:MovieClip;
public var mcWin:MovieClip;
public var mcIdle:MovieClip;
public var mcLose:MovieClip;
public var mcChange:MovieClip;
public function mcFaixa_207(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 23
//mcFaixaBlink_225 (KarateMonkey_fla.mcFaixaBlink_225)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaBlink_225 extends MovieClip {
public function mcFaixaBlink_225(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 24
//mcFaixaChange_226 (KarateMonkey_fla.mcFaixaChange_226)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaChange_226 extends MovieClip {
public var mcContour:MovieClip;
public var mcBeltIns:MovieClip;
}
}//package KarateMonkey_fla
Section 25
//mcFaixaChangeBelt_228 (KarateMonkey_fla.mcFaixaChangeBelt_228)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaChangeBelt_228 extends MovieClip {
public function mcFaixaChangeBelt_228(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 26
//mcFaixaChangeContour_227 (KarateMonkey_fla.mcFaixaChangeContour_227)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaChangeContour_227 extends MovieClip {
public function mcFaixaChangeContour_227(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 27
//mcFaixaHighKick_208 (KarateMonkey_fla.mcFaixaHighKick_208)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaHighKick_208 extends MovieClip {
public function mcFaixaHighKick_208(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 28
//mcFaixaIdle_223 (KarateMonkey_fla.mcFaixaIdle_223)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaIdle_223 extends MovieClip {
public function mcFaixaIdle_223(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 29
//mcFaixaKick_219 (KarateMonkey_fla.mcFaixaKick_219)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaKick_219 extends MovieClip {
public function mcFaixaKick_219(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 30
//mcFaixaPunch_217 (KarateMonkey_fla.mcFaixaPunch_217)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaPunch_217 extends MovieClip {
public function mcFaixaPunch_217(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 31
//mcFaixaSniff_224 (KarateMonkey_fla.mcFaixaSniff_224)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaSniff_224 extends MovieClip {
public function mcFaixaSniff_224(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 32
//mcFaixaSpinKick_213 (KarateMonkey_fla.mcFaixaSpinKick_213)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcFaixaSpinKick_213 extends MovieClip {
public function mcFaixaSpinKick_213(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 33
//mcHit_175 (KarateMonkey_fla.mcHit_175)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcHit_175 extends MovieClip {
public function mcHit_175(){
addFrameScript(3, frame4);
}
function frame4(){
stop();
}
}
}//package KarateMonkey_fla
Section 34
//mcInterface_229 (KarateMonkey_fla.mcInterface_229)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcInterface_229 extends MovieClip {
public var m_mcClickBlocker:MovieClip;
public var m_mcTryAgainDlg:MovieClip;
public var mcFan:MovieClip;
public var mcStats:MovieClip;
public var mcMovesToGo:MovieClip;
public var mcScore:MovieClip;
}
}//package KarateMonkey_fla
Section 35
//mcLeque_230 (KarateMonkey_fla.mcLeque_230)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcLeque_230 extends MovieClip {
public function mcLeque_230(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 36
//mcLoadingAnim_3 (KarateMonkey_fla.mcLoadingAnim_3)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcLoadingAnim_3 extends MovieClip {
public var mcLastFlower:MovieClip;
public function mcLoadingAnim_3(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 37
//mcMaster_163 (KarateMonkey_fla.mcMaster_163)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMaster_163 extends MovieClip {
public var mcHitKick:MovieClip;
public var mcKick:MovieClip;
public var mcHitPunch:MovieClip;
public var mcHitJump:MovieClip;
public var mcPunch:MovieClip;
public var mcJump:MovieClip;
public var mcBow:MovieClip;
public var mcStars:MovieClip;
public var mcSpinKick:MovieClip;
public var mcHurtLow:MovieClip;
public var mcFromHighToHigh:MovieClip;
public var mcFromLowToLow:MovieClip;
public var mcWalk:MovieClip;
public var mcHurtJump:MovieClip;
public var mcHurtSpinKick:MovieClip;
public var mcDeath:MovieClip;
public var mcFromHighToLow:MovieClip;
public var mcHitSpinKick:MovieClip;
public function mcMaster_163(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 38
//mcMonkey_141 (KarateMonkey_fla.mcMonkey_141)
package KarateMonkey_fla {
import flash.display.*;
import flash.text.*;
public dynamic class mcMonkey_141 extends MovieClip {
public var mcJump:MovieClip;
public var mcKick:MovieClip;
public var debugTxt:TextField;
public var mcPunch:MovieClip;
public var mcBlink:MovieClip;
public var mcSpinKick:MovieClip;
public var mcWin:MovieClip;
public var mcIdle:MovieClip;
public var mcLose:MovieClip;
public function mcMonkey_141(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 39
//mcMonkeyJump_142 (KarateMonkey_fla.mcMonkeyJump_142)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMonkeyJump_142 extends MovieClip {
public function mcMonkeyJump_142(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 40
//mcMonkeyKick_154 (KarateMonkey_fla.mcMonkeyKick_154)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMonkeyKick_154 extends MovieClip {
public function mcMonkeyKick_154(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 41
//mcMonkeyPunch_151 (KarateMonkey_fla.mcMonkeyPunch_151)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMonkeyPunch_151 extends MovieClip {
public function mcMonkeyPunch_151(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 42
//mcMonkeySniff_160 (KarateMonkey_fla.mcMonkeySniff_160)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMonkeySniff_160 extends MovieClip {
public function mcMonkeySniff_160(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 43
//mcMonkeySpinKick_147 (KarateMonkey_fla.mcMonkeySpinKick_147)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMonkeySpinKick_147 extends MovieClip {
public function mcMonkeySpinKick_147(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 44
//mcMonkeyWin_161 (KarateMonkey_fla.mcMonkeyWin_161)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMonkeyWin_161 extends MovieClip {
public function mcMonkeyWin_161(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 45
//mcMovesToGo_252 (KarateMonkey_fla.mcMovesToGo_252)
package KarateMonkey_fla {
import flash.display.*;
import flash.text.*;
public dynamic class mcMovesToGo_252 extends MovieClip {
public var dtMovesToGo:TextField;
public var mcInfinite:MovieClip;
public var mcPaperAnim:MovieClip;
}
}//package KarateMonkey_fla
Section 46
//mcMoveTip_136 (KarateMonkey_fla.mcMoveTip_136)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMoveTip_136 extends MovieClip {
public function mcMoveTip_136(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 47
//mcMyaguiBow_203 (KarateMonkey_fla.mcMyaguiBow_203)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcMyaguiBow_203 extends MovieClip {
public function mcMyaguiBow_203(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 48
//mcPlayBasic_Bg_42 (KarateMonkey_fla.mcPlayBasic_Bg_42)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcPlayBasic_Bg_42 extends MovieClip {
public var aqui:MovieClip;
}
}//package KarateMonkey_fla
Section 49
//mcPopUpFaixa_241 (KarateMonkey_fla.mcPopUpFaixa_241)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcPopUpFaixa_241 extends MovieClip {
public var mcContent:MovieClip;
public function mcPopUpFaixa_241(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 50
//mcScore_248 (KarateMonkey_fla.mcScore_248)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcScore_248 extends MovieClip {
public var mcScore3:MovieClip;
public var mcScore6:MovieClip;
public var mcScore1:MovieClip;
public var mcScore2:MovieClip;
public var mcScore4:MovieClip;
public var mcScore5:MovieClip;
}
}//package KarateMonkey_fla
Section 51
//mcScorePart_249 (KarateMonkey_fla.mcScorePart_249)
package KarateMonkey_fla {
import flash.display.*;
import flash.text.*;
public dynamic class mcScorePart_249 extends MovieClip {
public var dtScoreUnit:TextField;
public function mcScorePart_249(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 52
//mcStar_166 (KarateMonkey_fla.mcStar_166)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcStar_166 extends MovieClip {
public var mcStarRotation:MovieClip;
public function mcStar_166(){
addFrameScript(4, frame5);
}
function frame5(){
stop();
}
}
}//package KarateMonkey_fla
Section 53
//mcStars_165 (KarateMonkey_fla.mcStars_165)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcStars_165 extends MovieClip {
public var mcStar1:MovieClip;
public var mcStar2:MovieClip;
public var mcStar0:MovieClip;
}
}//package KarateMonkey_fla
Section 54
//mcStats_247 (KarateMonkey_fla.mcStats_247)
package KarateMonkey_fla {
import flash.display.*;
import flash.text.*;
public dynamic class mcStats_247 extends MovieClip {
public var dtHitPerc:TextField;
public var dtLargestCombo:TextField;
public function mcStats_247(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 55
//mcToggleSound_48 (KarateMonkey_fla.mcToggleSound_48)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class mcToggleSound_48 extends MovieClip {
public function mcToggleSound_48(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package KarateMonkey_fla
Section 56
//SoundLib_25 (KarateMonkey_fla.SoundLib_25)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class SoundLib_25 extends MovieClip {
public function SoundLib_25(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 57
//Symbol33_8 (KarateMonkey_fla.Symbol33_8)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class Symbol33_8 extends MovieClip {
public function Symbol33_8(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 58
//Symbol42_10 (KarateMonkey_fla.Symbol42_10)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class Symbol42_10 extends MovieClip {
public function Symbol42_10(){
addFrameScript(19, frame20);
}
function frame20(){
stop();
}
}
}//package KarateMonkey_fla
Section 59
//Symbol43_16 (KarateMonkey_fla.Symbol43_16)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class Symbol43_16 extends MovieClip {
public function Symbol43_16(){
addFrameScript(19, frame20);
}
function frame20(){
stop();
}
}
}//package KarateMonkey_fla
Section 60
//Symbol45_20 (KarateMonkey_fla.Symbol45_20)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class Symbol45_20 extends MovieClip {
public function Symbol45_20(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package KarateMonkey_fla
Section 61
//ToGo_255 (KarateMonkey_fla.ToGo_255)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class ToGo_255 extends MovieClip {
public function ToGo_255(){
addFrameScript(3, frame4);
}
function frame4(){
stop();
}
}
}//package KarateMonkey_fla
Section 62
//TryAgainDialog_261 (KarateMonkey_fla.TryAgainDialog_261)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class TryAgainDialog_261 extends MovieClip {
public var m_btnHighscores:SimpleButton;
public var m_mcFinalStats:MovieClip;
public var m_btnRetryNo:SimpleButton;
public var m_btnRetryYes:SimpleButton;
}
}//package KarateMonkey_fla
Section 63
//walk_202 (KarateMonkey_fla.walk_202)
package KarateMonkey_fla {
import flash.display.*;
public dynamic class walk_202 extends MovieClip {
public function walk_202(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package KarateMonkey_fla
Section 64
//MochiAd (mochi.as3.MochiAd)
package mochi.as3 {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class MochiAd {
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showClickAwayAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_timeout:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var sendHostProgress:Boolean;
var options = _arg1;
DEFAULTS = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{
}, ad_finished:function ():void{
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software");
}, ad_skipped:function ():void{
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
if (!MochiAd.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
options.ad_finished();
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.rpc = function (_arg1:Number, _arg2:Object):void{
MochiAd.rpc(clip, _arg1, _arg2);
};
sendHostProgress = false;
mc.regContLC = function (_arg1:String):void{
mc._containerLCName = _arg1;
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Number;
var _local3:Boolean;
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
return;
};
_local1 = this.parent._mochiad_ctr;
_local2 = (getTimer() - this.started);
_local3 = false;
if (!chk.showing){
_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local4 > 0){
chk.showing = true;
_local3 = true;
chk.started = getTimer();
} else {
if (_local2 > chk.ad_timeout){
options.ad_failed();
_local3 = true;
};
};
};
if (this.root == null){
_local3 = true;
};
if (_local3){
delete this.onEnterFrame;
};
};
doOnEnterFrame(chk);
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function _allowDomains(_arg1:String):String{
var _local2:String;
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType == "application"){
return (_local2);
};
Security.allowDomain("*");
Security.allowDomain(_local2);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(_local2);
return (_local2);
}
public static function unload(_arg1:Object):Boolean{
if (((_arg1.clip) && (_arg1.clip._mochiad))){
_arg1 = _arg1.clip;
};
if (_arg1.origFrameRate != undefined){
_arg1.stage.frameRate = _arg1.origFrameRate;
};
if (!_arg1._mochiad){
return (false);
};
if (_arg1._mochiad._containerLCName != undefined){
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"});
};
if (_arg1._mochiad.onUnload){
_arg1._mochiad.onUnload();
};
delete _arg1._mochiad_loaded;
delete _arg1._mochiad;
return (true);
}
public static function showInterLevelAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var options = _arg1;
DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software");
}, ad_skipped:function ():void{
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
options.ad_finished();
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
_local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object;
_local2 = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = (_arg1 - 250);
};
mc.rpc = function (_arg1:Number, _arg2:Object):void{
MochiAd.rpc(clip, _arg1, _arg2);
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Number;
var _local3:Boolean;
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
_local1 = this.parent._mochiad_ctr;
_local2 = (getTimer() - this.started);
_local3 = false;
if (!chk.showing){
_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local4 > 0){
chk.showing = true;
chk.started = getTimer();
MochiAd.adShowing(clip);
} else {
if (_local2 > chk.ad_timeout){
options.ad_failed();
_local3 = true;
};
};
};
if (_local2 > chk.ad_msec){
_local3 = true;
};
if (_local3){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _parseOptions(_arg1:Object, _arg2:Object):Object{
var _local3:Object;
var _local4:String;
var _local5:Array;
var _local6:Number;
var _local7:Array;
_local3 = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
if (_arg1){
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
};
if (_local3.clip == undefined){
throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite."));
};
_arg1 = _local3.clip.loaderInfo.parameters.mochiad_options;
if (_arg1){
_local5 = _arg1.split("&");
_local6 = 0;
while (_local6 < _local5.length) {
_local7 = _local5[_local6].split("=");
_local3[unescape(_local7[0])] = unescape(_local7[1]);
_local6++;
};
};
if (_local3.id == "test"){
trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!");
};
return (_local3);
}
public static function _cleanup(_arg1:Object):void{
var idx:Number;
var k:String;
var lc:LocalConnection;
var f:Function;
var mc = _arg1;
if (("lc" in mc)){
lc = mc.lc;
f = function ():void{
try {
lc.client = null;
lc.close();
} catch(e:Error) {
};
};
setTimeout(f, 0);
};
idx = DisplayObjectContainer(mc).numChildren;
while (idx > 0) {
idx = (idx - 1);
DisplayObjectContainer(mc).removeChildAt(idx);
};
for (k in mc) {
delete mc[k];
};
}
public static function load(_arg1:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var depth:Number;
var mc:MovieClip;
var wh:Array;
var lv:URLVariables;
var k:String;
var server:String;
var hostname:String;
var lc:LocalConnection;
var name:String;
var loader:Loader;
var g:Function;
var req:URLRequest;
var v:Object;
var options = _arg1;
DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
if (!MochiAd._isNetworkAvailable()){
return (null);
};
try {
if (clip._mochiad_loaded){
return (null);
};
} catch(e:Error) {
throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, "_mochiad", depth);
wh = MochiAd._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
} else {
trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal");
};
lv = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
mc.lcName = name;
lv.lc = name;
lv.st = getTimer();
loader = new Loader();
g = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
MochiAd.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime()));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{
trace("[MochiAds] Blocked URL");
});
loader.load(req);
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{
var _local4:Array;
var _local5:Number;
_local4 = _arg2.split(".");
_local5 = 0;
while (_local5 < (_local4.length - 1)) {
if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
return (undefined);
};
_arg1 = _arg1[_local4[_local5]];
_local5++;
};
if (typeof(_arg1[_local4[_local5]]) == "function"){
return (_arg1[_local4[_local5]].apply(_arg1, _arg3));
};
return (undefined);
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{
var _local4:MovieClip;
_local4 = new MovieClip();
if (((false) && (_arg3))){
_arg1.addChildAt(_local4, _arg3);
} else {
_arg1.addChild(_local4);
};
_arg1[_arg2] = _local4;
_local4["_name"] = _arg2;
return (_local4);
}
public static function _getRes(_arg1:Object, _arg2:Object):Array{
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Array;
_local3 = _arg2.getBounds(_arg2.root);
_local4 = 0;
_local5 = 0;
if (typeof(_arg1.res) != "undefined"){
_local6 = _arg1.res.split("x");
_local4 = parseFloat(_local6[0]);
_local5 = parseFloat(_local6[1]);
} else {
_local4 = (_local3.xMax - _local3.xMin);
_local5 = (_local3.yMax - _local3.yMin);
};
if ((((_local4 == 0)) || ((_local5 == 0)))){
_local4 = _arg2.stage.stageWidth;
_local5 = _arg2.stage.stageHeight;
};
return ([_local4, _local5]);
}
public static function adShowing(_arg1:Object):void{
_arg1.origFrameRate = _arg1.stage.frameRate;
_arg1.stage.frameRate = 30;
}
public static function getValue(_arg1:Object, _arg2:String):Object{
var _local3:Array;
var _local4:Number;
_local3 = _arg2.split(".");
_local4 = 0;
while (_local4 < (_local3.length - 1)) {
if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){
return (undefined);
};
_arg1 = _arg1[_local3[_local4]];
_local4++;
};
return (_arg1[_local3[_local4]]);
}
public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{
var _local4:Object;
var _local5:Object;
switch (_arg3.id){
case "setValue":
MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value);
break;
case "getValue":
_local4 = MochiAd.getValue(_arg1, _arg3.objectName);
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4);
break;
case "runMethod":
_local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args);
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5);
break;
default:
trace(("[mochiads rpc] unknown rpc id: " + _arg3.id));
};
}
public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Array;
var _local5:Number;
_local4 = _arg2.split(".");
_local5 = 0;
while (_local5 < (_local4.length - 1)) {
if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
return;
};
_arg1 = _arg1[_local4[_local5]];
_local5++;
};
_arg1[_local4[_local5]] = _arg3;
}
public static function showPreGameAd(_arg1:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var bar:MovieClip;
var bar_w:Number;
var bar_color:Number;
var bar_background:Number;
var bar_outline:Number;
var backing_mc:MovieClip;
var backing:Object;
var inside_mc:MovieClip;
var inside:Object;
var outline_mc:MovieClip;
var outline:Object;
var complete:Boolean;
var unloaded:Boolean;
var progress:Number;
var f:Function;
var sendHostProgress:Boolean;
var fn:Function;
var r:MovieClip;
var options = _arg1;
DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software");
}, ad_skipped:function ():void{
}, ad_progress:function (_arg1:Number):void{
}, progress_override:function (_arg1:Object):Number{
return (NaN);
}, bar_offset:0};
options = MochiAd._parseOptions(options, DEFAULTS);
if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){
options.ad_started();
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
return;
};
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
var fn:Function;
MochiAd._cleanup(mc);
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.x = (w * -0.5);
chk.y = (h * -0.5);
bar = createEmptyMovieClip(chk, "_mochiad_bar", 4);
if (options.no_progress_bar){
bar.visible = false;
delete options.no_progress_bar;
} else {
bar.x = (10 + options.bar_offset);
bar.y = (h - 20);
};
bar_w = ((w - bar.x) - 10);
bar_color = options.color;
delete options.color;
bar_background = options.background;
delete options.background;
bar_outline = options.outline;
delete options.outline;
backing_mc = createEmptyMovieClip(bar, "_outline", 1);
backing = backing_mc.graphics;
backing.beginFill(bar_background);
backing.moveTo(0, 0);
backing.lineTo(bar_w, 0);
backing.lineTo(bar_w, 10);
backing.lineTo(0, 10);
backing.lineTo(0, 0);
backing.endFill();
inside_mc = createEmptyMovieClip(bar, "_inside", 2);
inside = inside_mc.graphics;
inside.beginFill(bar_color);
inside.moveTo(0, 0);
inside.lineTo(bar_w, 0);
inside.lineTo(bar_w, 10);
inside.lineTo(0, 10);
inside.lineTo(0, 0);
inside.endFill();
inside_mc.scaleX = 0;
outline_mc = createEmptyMovieClip(bar, "_outline", 3);
outline = outline_mc.graphics;
outline.lineStyle(0, bar_outline, 100);
outline.moveTo(0, 0);
outline.lineTo(bar_w, 0);
outline.lineTo(bar_w, 10);
outline.lineTo(0, 10);
outline.lineTo(0, 0);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number;
_local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
complete = false;
unloaded = false;
progress = Math.min(1, options.progress_override(clip));
f = function (_arg1:Event):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
complete = true;
if (unloaded){
MochiAd.unload(clip);
};
};
if (!isNaN(progress)){
complete = (progress == 1);
} else {
if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){
complete = true;
} else {
if ((clip.root is MovieClip)){
r = (clip.root as MovieClip);
if (r.framesLoaded >= r.totalFrames){
complete = true;
} else {
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
};
} else {
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
};
};
};
mc.unloadAd = function ():void{
unloaded = true;
if (complete){
MochiAd.unload(clip);
};
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object;
_local2 = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = _arg1;
};
mc.rpc = function (_arg1:Number, _arg2:Object):void{
MochiAd.rpc(clip, _arg1, _arg2);
};
mc.rpcTestFn = function (_arg1:String):Object{
trace(("[MOCHIAD rpcTestFn] " + _arg1));
return (_arg1);
};
mc.regContLC = function (_arg1:String):void{
mc._containerLCName = _arg1;
};
sendHostProgress = false;
mc.sendHostLoadProgress = function (_arg1:String):void{
sendHostProgress = true;
};
chk["onEnterFrame"] = function ():void{
var _local1:Object;
var _local2:Object;
var _local3:Number;
var _local4:Boolean;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Object;
var _local11:Number;
var _local12:Number;
if (((!(this.parent)) || (!(this.parent.parent)))){
delete this["onEnterFrame"];
return;
};
_local1 = this.parent.parent.root;
_local2 = this.parent._mochiad_ctr;
_local3 = (getTimer() - this.started);
_local4 = false;
_local5 = _local1.loaderInfo.bytesTotal;
_local6 = _local1.loaderInfo.bytesLoaded;
_local7 = Math.min(1, options.progress_override(_local1));
if (_local7 == 1){
complete = true;
};
if (complete){
_local6 = Math.max(1, _local6);
_local5 = _local6;
};
_local8 = ((100 * _local6) / _local5);
if (!isNaN(_local7)){
_local8 = (100 * _local7);
};
_local9 = ((100 * _local3) / chk.ad_msec);
_local10 = this._mochiad_bar._inside;
_local11 = Math.min(100, Math.min(((_local8) || (0)), _local9));
_local11 = Math.max(this.last_pcnt, _local11);
this.last_pcnt = _local11;
_local10.scaleX = (_local11 * 0.01);
options.ad_progress(_local11);
if (sendHostProgress){
clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8});
if (_local8 >= 100){
sendHostProgress = false;
};
};
if (!chk.showing){
_local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local12 > 0){
chk.showing = true;
chk.started = getTimer();
MochiAd.adShowing(clip);
} else {
if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){
options.ad_failed();
_local4 = true;
};
};
};
if (_local3 > chk.ad_msec){
_local4 = true;
};
if (((complete) && (_local4))){
if (unloaded){
MochiAd.unload(_local1);
} else {
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(_arg1:Object):void{
trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0");
MochiAd.showPreGameAd(_arg1);
}
public static function showTimedAd(_arg1:Object):void{
trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0");
MochiAd.showInterLevelAd(_arg1);
}
public static function doOnEnterFrame(_arg1:MovieClip):void{
var f:Function;
var mc = _arg1;
f = function (_arg1:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
}
}//package mochi.as3
Section 65
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const LOGGED_IN:String = "LoggedIn";
public static const STORE_ITEMS:String = "StoreItems";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const ITEM_NEW:String = "ItemNew";
public static const USER_INFO:String = "UserInfo";
public static const IO_ERROR:String = "IOError";
public static const ITEM_OWNED:String = "ItemOwned";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ERROR:String = "Error";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const LOGIN_SHOW:String = "LoginShow";
public static const STORE_SHOW:String = "StoreShow";
public static const PROFILE_HIDE:String = "ProfileHide";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("coins_saveUserProperties", _arg1);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:_arg1});
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showStore(_arg1:Object=null):void{
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
}
}//package mochi.as3
Section 66
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function reencode():void{
var _local1:uint;
_local1 = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function toString():String{
var _local1:String;
_local1 = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function get value():Number{
return (Number(this.toString()));
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String;
_local3 = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 67
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
return;
};
for (_local3 in eventTable[_arg1]) {
var _local6 = eventTable[_arg1];
_local6[_local3](_arg2);
};
}
public function removeEventListener(_arg1:String, _arg2:Function):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
eventTable[_arg1] = [];
return;
};
for (_local3 in eventTable[_arg1]) {
if (eventTable[_arg1][_local3] != _arg2){
} else {
eventTable[_arg1].splice(Number(_local3), 1);
};
};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
}
}//package mochi.as3
Section 68
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local3:Object;
var _local4:Object;
_local3 = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function endGame():void{
var _local1:Number;
_local1 = (new Date().time - gameStart);
trigger("end_game", {time:_local1});
}
public static function startGame():void{
gameStart = new Date().time;
trigger("start_game");
}
public static function trigger(_arg1:String, _arg2:Object=null):void{
if (_arg2 == null){
_arg2 = {};
} else {
if (_arg2["kind"] != undefined){
trace("WARNING: optional arguements package contains key 'id', it will be overwritten");
_arg2["kind"] = _arg1;
};
};
MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startLevel():void{
levelStart = new Date().time;
trigger("start_level");
}
public static function endLevel():void{
var _local1:Number;
_local1 = (new Date().time - levelStart);
trigger("end_level", {time:_local1});
}
}
}//package mochi.as3
Section 69
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var n:Number;
var options = _arg1;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(n) != n){
trace((("WARNING: Submitted score '" + options.score) + "' will be truncated"));
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal");
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
_local2 = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(_arg1) != _arg1){
trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated"));
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiServices.warnID(_arg1, true);
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi.as3
Section 70
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
public static var servicesSync:MochiSync = new MochiSync();
private static var _clip:MovieClip;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _loader:Loader;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(_arg1:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var methodName:String;
var obj:Object;
var pkg = _arg1;
cb = pkg.callbackID;
cblst = _clip._callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
methodName = "";
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString()));
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
trace(("Error invoking method on object: " + error.toString()));
};
};
};
delete _clip._callbacks[cb];
}
public static function get childClip():Object{
return (_clip);
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1));
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local3:Array;
var _local4:int;
var _local5:Array;
var _local6:Array;
var _local7:MovieClip;
var _local8:LocalConnection;
var _local9:String;
var _local10:ByteArray;
var _local11:ByteArray;
var _local12:uint;
var _local13:uint;
var _local14:Loader;
_local3 = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
_local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
_local6 = [0, 64, 0, 0, 0];
_local7 = new MovieClip();
_local8 = new LocalConnection();
_local9 = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
_local8 = new LocalConnection();
_local7.lc = _local8;
_local7.click = _arg2;
_local8.client = _local7;
_local8.connect(_local9);
_local10 = new ByteArray();
_local11 = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
_local12 = ((_local3.length + _local11.length) + 4);
_local13 = (_local12 + 35);
_local10.endian = Endian.LITTLE_ENDIAN;
_local10.writeUTFBytes("FWS");
_local10.writeByte(8);
_local10.writeUnsignedInt(_local13);
for each (_local4 in _local5) {
_local10.writeByte(_local4);
};
_local10.writeUnsignedInt(_local12);
_local10.writeByte(136);
_local10.writeShort(_local11.length);
_local10.writeBytes(_local11);
for each (_local4 in _local3) {
_local10.writeByte(_local4);
};
for each (_local4 in _local6) {
_local10.writeByte(_local4);
};
_local14 = new Loader();
_local14.loadBytes(_local10);
_local7.addChild(_local14);
return (_local7);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var vars:Object;
var avm1Click:DisplayObject;
var s:String;
var i:Number;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = _arg1;
var burl = _arg2;
var btn = _arg3;
var onClick = _arg4;
vars = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
s = "?";
i = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://x.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
var _local2:Rectangle;
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
_local2 = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = _local2.x;
avm1Click.y = _local2.y;
avm1Click.scaleX = (0.01 * _local2.width);
avm1Click.scaleY = (0.01 * _local2.height);
};
err = function (_arg1:Object):void{
netup = false;
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
setURL(burl);
};
complete = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
var _local3:Number;
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
_local3 = 0;
while (_local3 < _arg1.length) {
switch (_arg1.charAt(_local3)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
trace(("WARNING: Board ID contains illegal characters: " + _arg1));
return;
};
_local3++;
};
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_mochiLocalConnection.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
};
return (_local2);
}
public static function getVersion():String{
return ("3.3 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_clip._queue))){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(_arg1:Object):void{
var _local2:String;
var _local3:String;
_local2 = _arg1.target;
_local3 = _arg1.event;
switch (_local2){
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "sync":
servicesSync.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function urlOptions(_arg1:Object):Object{
var _local2:Object;
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
_local2 = {};
if (_arg1.stage){
_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
} else {
_local3 = _arg1.loaderInfo.parameters.mochiad_options;
};
if (_local3){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5].split("=");
_local2[unescape(_local6[0])] = unescape(_local6[1]);
_local5++;
};
};
return (_local2);
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
private static function initComChannels():void{
if (!_connected){
trace("[SERVICES_API] connected!");
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_clip._queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function loadLCBridge(_arg1:Object):void{
var loader:Loader;
var mochiLCURL:String;
var req:URLRequest;
var complete:Function;
var clip = _arg1;
loader = new Loader();
mochiLCURL = (_servURL + _mochiLC);
req = new URLRequest(mochiLCURL);
complete = function (_arg1:Object):void{
_mochiLocalConnection = MovieClip(loader.content);
listen();
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var _local3:String;
var _local4:String;
var _local5:URLRequest;
var _local6:URLVariables;
_local3 = ("_mochiservices_com_" + _arg1);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
_local4 = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local4 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local4);
_clip = createEmptyMovieClip(_arg2, _local3, 10336, false);
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
_local5 = new URLRequest(_local4);
_local6 = new URLVariables();
_local6.listenLC = _listenChannelName;
_local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local6.api_version = getVersion();
if (widget){
_local6.widget = true;
};
_local5.data = _local6;
_loader.load(_local5);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_clip._nextcallbackID = 0;
_clip._callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
warnID(id, false);
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
trace(_arg1);
};
};
};
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var mc:MovieClip;
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
mc = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function bringToTop(_arg1:Event=null):void{
var e = _arg1;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
}
}
}//package mochi.as3
Section 71
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_PROPERTY:String = "UpdateProperty";
public static var SYNC_REQUEST:String = "SyncRequest";
public function MochiSync():void{
_syncContainer = {};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
switch (_arg1){
case SYNC_REQUEST:
MochiServices.send("sync_syncronize", _syncContainer);
break;
case SYNC_PROPERTY:
_syncContainer[_arg2.name] = _arg2.value;
break;
};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
return (_syncContainer[_arg1]);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
var _local3:String;
if (_syncContainer[_arg1] == _arg2){
return;
};
_local3 = _arg1.toString();
_syncContainer[_local3] = _arg2;
MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
}
}
}//package mochi.as3
Section 72
//CCombo (src.ingame.CCombo)
package src.ingame {
import flash.display.*;
public class CCombo {
private const multMax:int = 4;
private var currMult:int;
private var mcCounter;
private var largest:int;
private var minMovesMult:Array;
private var mcMult:MovieClip;
public function CCombo(_arg1:MovieClip, _arg2:MovieClip){
this.mcCounter = _arg1;
this.mcMult = _arg2;
currMult = 1;
largest = 0;
minMovesMult = [0, 10, 20, 30];
}
public function getCounter():int{
return (int(mcCounter.dtCombo.text));
}
private function showMsg(_arg1:int){
if ((((_arg1 > 1)) && ((_arg1 <= multMax)))){
mcMult[(("mcCombo" + _arg1) + "x")].gotoAndPlay(2);
};
}
public function reset(_arg1:Boolean){
resetCounter(_arg1);
resetMult();
}
private function updateMult(_arg1:int){
var _local2:int;
_local2 = 0;
while (_local2 < multMax) {
if (currMult <= _local2){
break;
};
_local2++;
};
if ((((currMult < multMax)) && ((_arg1 >= minMovesMult[_local2])))){
currMult++;
showMsg(currMult);
};
}
private function increaseCounter(){
mcCounter.dtCombo.text = (int(mcCounter.dtCombo.text) + 1);
if (mcCounter.dtCombo.text > largest){
largest = int(mcCounter.dtCombo.text);
};
}
private function resetMult(){
currMult = 1;
}
public function increaseCombo(){
increaseCounter();
updateMult(getCounter());
}
private function resetCounter(_arg1:Boolean){
if (_arg1){
largest = 0;
};
mcCounter.dtCombo.text = 0;
}
public function getLargest():int{
return (largest);
}
public function getMult():int{
return (currMult);
}
}
}//package src.ingame
Section 73
//CEgo (src.ingame.CEgo)
package src.ingame {
import flash.display.*;
import src.*;
import flash.geom.*;
public class CEgo {
public var currAction:int;
public var animControl:CAnimControl;
private var mcEgo;
private var currActionMC:MovieClip;
var deltaX;
var deltaY:Number;
var beltTint:ColorTransform;
private var mcBelt:MovieClip;
var currMoveCorrect:Boolean;
public var m_lvLevel:CLevel;
private var currActionMCName:String;
private var mcShadow;
var animsLabelFrames:Array;
var beltColors:Array;
public static const EgoAction_kick:int = 3;
public static const EgoAction_win:int = 6;
public static const EgoAction_jump:int = 0;
public static const EgoAction_spinkick:int = 1;
public static const EgoAction_idle:int = 4;
public static const EgoAction_lose:int = 5;
public static const EgoAction_punch:int = 2;
public function CEgo(_arg1:MovieClip, _arg2:MovieClip, _arg3:MovieClip){
this.mcEgo = _arg1;
this.mcShadow = _arg2;
this.mcBelt = _arg3;
goIdle();
animControl = new CAnimControl();
animControl.onNextRender(mcEgo, loopInit);
}
private function startMoveAnim(){
if (!currMoveCorrect){
translateToHit(true);
} else {
resetTranslate();
};
animControl.onLabelEx(currActionMC, "hit", onActionUpdate, onMoveHit, true);
}
public function initBeltColors(){
var _local1:int;
beltColors = new Array(8);
_local1 = 0;
while (_local1 < 8) {
beltColors[_local1] = new ColorTransform();
_local1++;
};
beltColors[0].color = 0xFFFFFF;
beltColors[1].color = 15852074;
beltColors[2].color = 0xFF0000;
beltColors[3].color = 0xFF9900;
beltColors[4].color = 5610066;
beltColors[5].color = 7884669;
beltColors[6].color = 9398620;
beltColors[7].color = 0;
}
private function onLoadedAction(){
var _local1:String;
_local1 = "";
switch (currAction){
case EgoAction_idle:
_local1 = "idle";
break;
case EgoAction_punch:
_local1 = "punch";
break;
case EgoAction_spinkick:
_local1 = "spinKick";
break;
case EgoAction_kick:
_local1 = "kick";
break;
case EgoAction_jump:
_local1 = "jump";
break;
case EgoAction_lose:
_local1 = "lose";
break;
case EgoAction_win:
_local1 = "win";
break;
};
currActionMCName = actionToMC(_local1);
currActionMC = mcEgo[currActionMCName];
if (currAction < m_lvLevel.m_iMoveTypesTotal){
startMoveAnim();
} else {
animControl.onLabelEx(currActionMC, "end", onActionUpdate, onActionEnd, true);
};
}
private function onMoveHit(){
if (!currMoveCorrect){
translateToHit(false);
};
animControl.onLabelEx(currActionMC, "end", onActionUpdate, onActionEnd, true);
m_lvLevel.startMoveResult();
}
public function isIdle():Boolean{
return ((currAction == EgoAction_idle));
}
private function actionToMC(_arg1:String):String{
return ((("mc" + _arg1.substr(0, 1).toUpperCase()) + _arg1.substr(1)));
}
private function onActionUpdate(){
mcEgo.x = (mcEgo.x + deltaX);
mcShadow.x = (mcShadow.x + deltaX);
mcBelt.x = (mcBelt.x + deltaX);
mcEgo.y = (mcEgo.y + deltaY);
mcShadow.y = (mcShadow.y + deltaY);
mcBelt.y = (mcBelt.y + deltaY);
mcShadow[currActionMCName].nextFrame();
mcBelt[currActionMCName].nextFrame();
}
private function getMoveAnimLabels(_arg1:MovieClip){
var _local2:Array;
var _local3:String;
var _local4:int;
_local2 = _arg1.currentLabels;
_local3 = "";
animsLabelFrames = new Array();
_local4 = 0;
while (_local4 < _local2.length) {
if (_local2[_local4].name != _local3){
animsLabelFrames[_local2[_local4].name] = _local2[_local4].frame;
_local3 = _local2[_local4].name;
};
_local4++;
};
}
private function onActionEnd(){
goIdle();
m_lvLevel.startNewMoveWait();
}
public function startAction(_arg1:int){
trace(("Ego startAction " + _arg1));
currAction = _arg1;
currMoveCorrect = m_lvLevel.isCurrMoveCorrect();
mcEgo.gotoAndStop((_arg1 + 1));
mcShadow.gotoAndStop((_arg1 + 1));
mcBelt.gotoAndStop((_arg1 + 1));
animControl.onNextRender(mcEgo, onLoadedAction);
}
private function onChangeBeltUpd(){
currActionMC.mcBeltIns.nextFrame();
}
private function resetTranslate(){
deltaX = 0;
deltaY = 0;
}
private function mcToAction(_arg1:String){
}
private function changeBeltColor(){
var _local1:int;
_local1 = m_lvLevel.getCurrent();
if (_local1 == -1){
_local1 = (m_lvLevel.m_iLevelsTotal - 1);
};
mcBelt.transform.colorTransform = new ColorTransform();
mcBelt.mcChange.mcBeltIns.transform.colorTransform = beltColors[_local1];
}
public function startLevel(){
goIdle();
}
public function loopInit(){
m_lvLevel = CLevel(mcEgo.parent);
initBeltColors();
}
public function goIdle(){
currAction = EgoAction_idle;
mcEgo.gotoAndStop((EgoAction_idle + 1));
mcShadow.gotoAndStop((EgoAction_idle + 1));
mcBelt.gotoAndStop((EgoAction_idle + 1));
}
private function onChangeBeltEnd(){
var _local1:int;
goIdle();
mcEgo.visible = true;
m_lvLevel.startWarmUp();
_local1 = m_lvLevel.getCurrent();
if (_local1 == -1){
_local1 = (m_lvLevel.m_iLevelsTotal - 1);
};
mcBelt.transform.colorTransform = beltColors[_local1];
}
public function changeBelt(){
mcBelt.gotoAndStop("change");
animControl.onNextRenderWait(mcBelt, onChangeBeltStart);
}
private function onChangeBeltStart(){
changeBeltColor();
currActionMC = mcBelt.mcChange;
animControl.onLabelEx(currActionMC.mcContour, "tornado", onChangeBeltUpd, onChangeBeltTornado, true);
}
private function translateToHit(_arg1:Boolean){
var _local2:int;
var _local3:int;
_local2 = 0;
_local3 = 1;
switch (currAction){
case EgoAction_jump:
_local2 = 150;
break;
case EgoAction_spinkick:
_local2 = 200;
break;
};
if (_local2 > 0){
getMoveAnimLabels(currActionMC);
if (_arg1){
_local3 = (animsLabelFrames["hit"] - 1);
} else {
_local2 = -(_local2);
_local3 = (animsLabelFrames["end"] - animsLabelFrames["hit"]);
};
};
deltaX = (_local2 / _local3);
deltaY = 0;
}
private function onChangeBeltTornado(){
mcEgo.visible = false;
animControl.onLabelEx(currActionMC.mcContour, "end", onChangeBeltUpd, onChangeBeltEnd, true);
}
public function updateBelt(){
mcBelt.transform.colorTransform = beltColors[m_lvLevel.getCurrent()];
}
}
}//package src.ingame
Section 74
//CGame (src.ingame.CGame)
package src.ingame {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
import src.*;
import flash.text.*;
import flash.ui.*;
public class CGame extends MovieClip {
public const m_iLevelsTotal:int = 8;
public var m_iCurrLevel:int;
var m_nGameTime:Number;
var m_bDebug:Boolean;
public var m_mcWinGame:CWinAnim;
var animControl:CAnimControl;
public var m_bInputOn:Boolean;
var m_iFpsTicks:int;
var timer:Timer;
public var m_lvLevel:CLevel;
public var m_dtRealFps:TextField;
public function CGame(){
addFrameScript(0, frame1);
trace("CGame");
animControl = new CAnimControl();
animControl.onNextRender(this, loopInit);
}
function activateBonusLevel(){
trace("[CGame] Bonus level unlocked.");
CGlobals.g_bBonusLvlActivated = true;
CGlobals.leGameDataMgr.saveBonusLevelActivated();
}
function initGame(){
m_nGameTime = 0;
initInput();
if (CGlobals.g_iGameMode == CGlobals.GameMode_bonus){
m_iCurrLevel = -1;
} else {
m_iCurrLevel = 0;
};
m_lvLevel.init(m_iCurrLevel);
}
function frame1(){
stop();
}
function startWinAnim(){
removeEventListener(KeyboardEvent.KEY_DOWN, onGameKeyDown);
removeEventListener(MouseEvent.CLICK, onGameMouseDown);
timer.removeEventListener(TimerEvent.TIMER, updateFps);
removeEventListener(Event.ENTER_FRAME, gameLoop);
CRoot(root).smSoundMgr.playBgm(CSoundMgr.Bgm_Win, true);
gotoAndStop(2);
animControl.onNextRender(this, onWinAnimStart);
}
function onGameMouseDown(_arg1:MouseEvent){
stage.focus = this;
stage.stageFocusRect = false;
_arg1.stopPropagation();
}
function updateFps(_arg1:TimerEvent){
m_dtRealFps.text = m_iFpsTicks.toString();
m_iFpsTicks = 0;
}
function initInput(){
m_bInputOn = false;
addEventListener(KeyboardEvent.KEY_DOWN, onGameKeyDown);
addEventListener(MouseEvent.CLICK, onGameMouseDown);
}
function initFps(){
if (!m_bDebug){
m_dtRealFps.visible = false;
};
m_iFpsTicks = 0;
timer = new Timer(1000, 0);
timer.addEventListener(TimerEvent.TIMER, updateFps);
timer.start();
}
function gameLoop(_arg1:Event){
m_nGameTime++;
m_iFpsTicks++;
}
function loopInit(){
CGlobals.g_iScore = 0;
initGame();
initFps();
m_bDebug = false;
CRoot(root).smSoundMgr.stopSound(CSoundMgr.Bgm_Menu);
addEventListener(TimerEvent.TIMER, updateFps);
addEventListener(Event.ENTER_FRAME, gameLoop);
}
function nextLevel(){
m_iCurrLevel++;
if (m_iCurrLevel < m_iLevelsTotal){
m_lvLevel.init(m_iCurrLevel);
} else {
m_lvLevel.winGame();
};
}
function onWinAnimStart(){
m_mcWinGame.start();
}
function onGameKeyDown(_arg1:KeyboardEvent){
var _local2:Boolean;
var _local3:Number;
var _local4:CEgo;
trace("onGameKeyDown");
_local2 = false;
if (!m_bInputOn){
return;
};
_local4 = m_lvLevel.m_egEgo;
_local3 = _arg1.keyCode;
switch (_local3){
case Keyboard.RIGHT:
_local4.startAction(CEgo.EgoAction_punch);
_local2 = true;
break;
case Keyboard.LEFT:
_local4.startAction(CEgo.EgoAction_spinkick);
_local2 = true;
break;
case Keyboard.UP:
_local4.startAction(CEgo.EgoAction_jump);
_local2 = true;
break;
case Keyboard.DOWN:
_local4.startAction(CEgo.EgoAction_kick);
_local2 = true;
break;
};
if (_local2){
m_bInputOn = false;
};
}
}
}//package src.ingame
Section 75
//CInterface (src.ingame.CInterface)
package src.ingame {
import flash.events.*;
import flash.display.*;
import src.*;
import mochi.as3.*;
import flash.ui.*;
public class CInterface {
private const StatsText_stats = 0;
private const StatsText_result = 1;
public var animControl:CAnimControl;
public var m_mcClickBlocker:MovieClip;
private var mcFan;
private var mcScore;
private var mcStats;
private var mcMovesToGo;
private var m_iScore:int;
private var mcArrows:MovieClip;
public var m_lvLevel:CLevel;
private var cbCombo:CCombo;
private var m_mcTryAgainDlg:MovieClip;
private var statsText:int;
public function CInterface(_arg1:MovieClip, _arg2:CCombo){
m_lvLevel = CLevel(_arg1.parent);
mcScore = _arg1.mcScore;
mcMovesToGo = _arg1.mcMovesToGo;
mcFan = _arg1.mcFan;
mcStats = _arg1.mcStats;
mcArrows = m_lvLevel.mcMoveTip;
cbCombo = _arg2;
m_mcTryAgainDlg = _arg1.m_mcTryAgainDlg;
m_mcClickBlocker = _arg1.m_mcClickBlocker;
mcFan.visible = false;
mcStats.visible = false;
m_mcTryAgainDlg.visible = false;
m_mcClickBlocker.mouseEnabled = false;
hideArrow();
animControl = new CAnimControl();
m_iScore = 0;
updateScore(CGlobals.g_iScore);
}
public function showArrow(_arg1:int){
mcArrows.visible = true;
switch (_arg1){
case Keyboard.RIGHT:
mcArrows.gotoAndStop("right");
break;
case Keyboard.UP:
mcArrows.gotoAndStop("up");
break;
case Keyboard.DOWN:
mcArrows.gotoAndStop("down");
break;
case Keyboard.LEFT:
mcArrows.gotoAndStop("left");
break;
};
}
private function addInputListeners(){
m_lvLevel.stage.addEventListener(MouseEvent.CLICK, onMousePress);
m_lvLevel.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress);
}
private function onScoreAnimEnd(_arg1:Event){
var _local2:int;
var _local3:int;
_arg1.target.removeEventListener(Event.RENDER, onScoreAnimEnd);
_local2 = (_arg1.target.name.substr(7, 1) - 1);
_local3 = ((m_iScore / (1 * pow10(_local2))) % 10);
_arg1.target.dtScoreUnit.text = _local3;
}
private function onOpenStart(){
trace(((("onOpenStart " + mcStats.currentLabel) + " ") + mcStats.currentFrame));
statsText = StatsText_result;
mcStats.mcContent.visible = false;
animControl.onLabel(mcStats, "opened", startStatsContent);
}
private function onWarmUpEnd(){
mcFan.visible = false;
m_lvLevel.startGameplay();
}
public function warmUp(){
mcFan.visible = true;
mcFan.gotoAndStop(1);
animControl.onLabel(mcFan, "end", onWarmUpEnd);
}
private function onHideStatsEnd(){
mcStats.visible = false;
if (m_lvLevel.result == CLevel.LevelResult_win){
CGlobals.g_iScore = m_iScore;
m_lvLevel.end();
} else {
if (m_lvLevel.result == CLevel.LevelResult_lose){
m_lvLevel.exit();
};
};
}
public function onRankingClosed(){
m_mcClickBlocker.mouseEnabled = false;
}
public function showStats(){
mcArrows.visible = false;
statsText = StatsText_stats;
mcStats.gotoAndStop(1);
mcStats.visible = true;
animControl.onLabel(mcStats, "opened", onStatsAnimEnd);
m_lvLevel.m_gmGame.m_bInputOn = false;
}
private function onKeyPress(_arg1:KeyboardEvent){
onStatsInput();
}
private function removeInputListeners(){
m_lvLevel.stage.removeEventListener(MouseEvent.CLICK, onMousePress);
m_lvLevel.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyPress);
}
private function onTryAgainAnswer(_arg1:MouseEvent):void{
var o:Object;
var boardID:String;
var leaderBoardOptions:Object;
var evt = _arg1;
trace("[CInterface] onTryAgainAnswer");
trace(("[CInterface] event target: " + evt.target.name));
switch (evt.target.name){
case "m_btnRetryYes":
updateScore(CGlobals.g_iScore);
m_mcTryAgainDlg.removeEventListener(MouseEvent.CLICK, onTryAgainAnswer);
m_mcTryAgainDlg.visible = false;
m_lvLevel.init(m_lvLevel.getCurrent());
break;
case "m_btnRetryNo":
CGlobals.g_iScore = m_iScore;
m_mcTryAgainDlg.removeEventListener(MouseEvent.CLICK, onTryAgainAnswer);
m_lvLevel.exit();
break;
case "m_btnHighscores":
m_mcClickBlocker.mouseEnabled = true;
o = {n:[9, 1, 11, 11, 4, 12, 8, 10, 12, 2, 8, 5, 10, 4, 1, 0], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
leaderBoardOptions = {boardID:boardID, score:m_iScore, showTableRank:true, previewScores:true, onClose:onRankingClosed};
MochiScores.showLeaderboard(leaderBoardOptions);
break;
};
}
private function checkScoreAnimEnd(_arg1:Event){
if (_arg1.target.currentFrame == 1){
_arg1.target.removeEventListener(Event.ENTER_FRAME, checkScoreAnimEnd);
_arg1.target.addEventListener(Event.RENDER, onScoreAnimEnd);
_arg1.target.stage.invalidate();
};
}
public function updateScore(_arg1:int){
var _local2:*;
var _local3:int;
var _local4:int;
var _local5:int;
_local4 = m_iScore;
if (_arg1 < 0){
_arg1 = 0;
};
m_iScore = _arg1;
_local5 = 0;
while (_local5 < 6) {
_local2 = Math.floor(((_arg1 / (1 * pow10(_local5))) % 10));
_local3 = Math.floor(((_local4 / (1 * pow10(_local5))) % 10));
if (_local2 != _local3){
mcScore[("mcScore" + (_local5 + 1))].gotoAndPlay(2);
mcScore[("mcScore" + (_local5 + 1))].addEventListener(Event.ENTER_FRAME, checkScoreAnimEnd);
};
_local5++;
};
}
private function onStatsInput(){
removeInputListeners();
if (statsText == StatsText_stats){
trace("StatsText_stats");
animControl.onLabel(mcStats, "end", onHideStatsEnd);
} else {
trace("StatsText_result");
animControl.onLabel(mcStats, "end", onHideStatsEnd);
};
}
private function writeStatsText(){
mcStats.mcContent.dtHitPerc.text = m_lvLevel.hitPercentage;
mcStats.mcContent.dtLargestCombo.text = cbCombo.getLargest();
}
private function startStatsContent(){
if (statsText == StatsText_stats){
mcStats.mcContent.gotoAndStop("stats");
animControl.onNextRenderWait(mcStats.mcContent, activateStatsContent);
} else {
mcStats.mcContent.gotoAndStop("result");
animControl.onNextRenderWait(mcStats.mcContent, activateStatsContent);
};
}
private function onMousePress(_arg1:MouseEvent){
onStatsInput();
}
public function reduceMovesToGo(){
if (mcMovesToGo.dtMovesToGo.text > 0){
mcMovesToGo.dtMovesToGo.text = --m_lvLevel.m_iMovesToGo;
};
mcMovesToGo.mcPaperAnim.gotoAndPlay(1);
}
public function setMovesToGo(_arg1:int){
if (_arg1 != -1){
mcMovesToGo.mcInfinite.visible = false;
mcMovesToGo.dtMovesToGo.visible = true;
mcMovesToGo.dtMovesToGo.text = _arg1;
} else {
mcMovesToGo.mcInfinite.visible = true;
mcMovesToGo.dtMovesToGo.visible = false;
};
}
private function onStatsAnimEnd(){
mcStats.mcContent.visible = false;
animControl.onNextRender(mcStats, startStatsContent);
}
public function getScore():int{
return (m_iScore);
}
private function activateStatsContent(){
addInputListeners();
mcStats.mcContent.visible = true;
if (statsText == StatsText_stats){
writeStatsText();
};
}
public function hideArrow(){
mcArrows.visible = false;
}
private function pow10(_arg1:int){
switch (_arg1){
case 0:
return (1);
case 1:
return (10);
case 2:
return (100);
case 3:
return (1000);
case 4:
return (10000);
case 5:
return (100000);
case 6:
return (1000000);
};
}
public function onCorrectMove(_arg1){
var _local2:*;
cbCombo.increaseCombo();
_local2 = m_iScore;
trace("[CInterface] Adding score: ");
trace(("[CInterface] Old score: " + m_iScore));
if (m_lvLevel.getCurrent() == -1){
trace(("[CInterface] Base score: " + m_lvLevel.pointsPerCorrectMoveBlackBelt));
_local2 = (_local2 + Math.round(((cbCombo.getMult() * m_lvLevel.pointsPerCorrectMoveBlackBelt) * _arg1)));
} else {
_local2 = (_local2 + Math.round(((cbCombo.getMult() * m_lvLevel.pointsPerCorrectMove) * _arg1)));
};
trace(("[CInterface] Time ratio: " + _arg1));
trace(("[CInterface] Combo Multiplier: " + cbCombo.getMult()));
trace(("[CInterface] New score: " + _local2));
updateScore(_local2);
}
public function showTryAgainDlg(){
m_mcTryAgainDlg.m_mcFinalStats.m_txtScore.text = m_iScore.toString();
trace(("[CInterface] Score text: " + m_mcTryAgainDlg.m_mcFinalStats.m_txtScore.text));
m_mcTryAgainDlg.m_mcFinalStats.m_txtAccuracy.text = m_lvLevel.hitPercentage;
m_mcTryAgainDlg.m_mcFinalStats.m_txtCombo.text = cbCombo.getLargest();
m_mcTryAgainDlg.visible = true;
m_mcTryAgainDlg.addEventListener(MouseEvent.CLICK, onTryAgainAnswer);
}
public function getMovesToGo():int{
return (mcMovesToGo.dtMovesToGo.text);
}
public function onWrongMove(){
cbCombo.reset(false);
}
}
}//package src.ingame
Section 76
//CLevel (src.ingame.CLevel)
package src.ingame {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
import src.*;
public class CLevel extends MovieClip {
public const pointsPerCorrectMoveBlackBelt:int = 80;
public const m_iLevelsMoves:Array;
public const m_iLevelsMoveTimes:Array;
public const pointsPerCorrectMove:int = 10;
public const m_iMoveTypesTotal:int = 4;
public var m_gmGame:CGame;
public var animControl:CAnimControl;
public var result:int;
public var mcInterface:MovieClip;
public var m_iCurrentLevel:int;
public var m_iCurrMoves:int;
private var m_iMovesMaxSpeed:int;
public var correctMoves:int;
public var timerStartTime:Number;
public var mcMoveTip:MovieClip;
public var m_cbCombo:CCombo;
public var hitPercentage;
public var arrowTimer:Timer;
public var mcMasterShadow:MovieClip;
public var mcComboMult:MovieClip;
public var mcMonkey;
public var currMove:int;
public var m_msMaster:CMaster;
public var mcComboCounter;
public var m_iMovesToGo:int;
public var m_iLevelsTotal:int;
public var mcMonkeyShadow;
public var mcMaster;
public var mcMonkeyBelt:MovieClip;
public var m_egEgo:CEgo;
public var m_ifInterface:CInterface;
public var moveTimer:Timer;
public var m_iCurrentWarmUpMove:int;
public static const LevelResult_lose:int = 2;
public static const LevelResult_none:int = 0;
public static const LevelResult_win:int = 1;
public function CLevel(){
m_iLevelsMoveTimes = [3, 2.5, 2, 1.6, 1.3, 1.2, 1.1, 1];
m_iLevelsMoves = [12, 25, 30, 40, 50, 60, 75, 100];
super();
animControl = new CAnimControl();
animControl.onNextRender(this, loopInit);
m_egEgo = new CEgo(mcMonkey, mcMonkeyShadow, mcMonkeyBelt);
m_msMaster = new CMaster(mcMaster, mcMasterShadow);
m_cbCombo = new CCombo(mcComboCounter, mcComboMult);
m_ifInterface = new CInterface(mcInterface, m_cbCombo);
}
private function loadLevel(_arg1:int){
m_iCurrentLevel = _arg1;
m_iMovesMaxSpeed = m_iLevelsMoveTimes[_arg1];
m_iMovesToGo = m_iLevelsMoves[_arg1];
m_ifInterface.setMovesToGo(m_iMovesToGo);
m_cbCombo.reset(true);
result = LevelResult_none;
if (_arg1 != 0){
m_egEgo.changeBelt();
} else {
m_iCurrentWarmUpMove = 0;
m_egEgo.updateBelt();
startWarmUp();
};
startMoveTimer(_arg1);
}
private function loadBonusLvl(){
trace("LoadBonusLvl");
loadLevel((m_iLevelsTotal - 1));
m_iMovesToGo = -1;
m_ifInterface.setMovesToGo(m_iMovesToGo);
}
private function onArrowTimeout(_arg1:TimerEvent){
m_msMaster.showMoveArrow();
}
public function isTutorialOn():Boolean{
if (getCurrent() == 0){
return (true);
};
return (false);
}
public function startGameplay(){
CRoot(root).smSoundMgr.playBgm(CSoundMgr.Bgm_Game, true);
m_msMaster.startLevel();
m_egEgo.startLevel();
}
public function loseGame(){
m_msMaster.stopStars();
CRoot(root).smSoundMgr.stopSound(CSoundMgr.Bgm_Game);
CRoot(root).smSoundMgr.playBgm(CSoundMgr.Bgm_EndLevel, false);
hitPercentage = Math.round(((correctMoves * 100) / getMovesTotal()));
result = LevelResult_lose;
m_ifInterface.showTryAgainDlg();
}
public function startNewMove(){
moveTimer.reset();
moveTimer.start();
if ((((m_gmGame.m_iCurrLevel == 2)) || ((m_gmGame.m_iCurrLevel == 1)))){
arrowTimer.reset();
arrowTimer.start();
};
timerStartTime = new Date().time;
if (m_iMovesToGo == 0){
win();
} else {
m_iCurrMoves++;
m_msMaster.chooseNewMove();
};
}
public function end(){
m_gmGame.nextLevel();
}
public function startNewMoveWait(){
animControl.onNextFrame(this, tryNewMove, startNewMove);
}
private function onMoveTimeout(_arg1:TimerEvent){
m_gmGame.m_bInputOn = false;
if ((((m_egEgo.currAction == CEgo.EgoAction_idle)) && ((m_msMaster.state == CMaster.MasterState_wait)))){
onNoMove();
m_msMaster.state = CMaster.MasterState_ready;
startNewMove();
};
}
public function startWarmUp(){
m_ifInterface.warmUp();
}
public function init(_arg1:int){
trace(("initLevel: " + _arg1));
stage.focus = this;
m_msMaster.goIdle();
correctMoves = 0;
m_iCurrMoves = 0;
m_msMaster.resumeStars();
if (_arg1 == -1){
loadBonusLvl();
} else {
loadLevel(_arg1);
};
}
public function exit(){
CRoot(root).gotoMenu();
}
public function getRandomMove():int{
var _local1:int;
if (m_iCurrentLevel == 0){
_local1 = m_iCurrentWarmUpMove;
if (m_iCurrentWarmUpMove < 3){
m_iCurrentWarmUpMove++;
} else {
m_iCurrentWarmUpMove = 0;
};
return (_local1);
//unresolved jump
};
return (Math.floor((Math.random() * m_iMoveTypesTotal)));
}
public function isCurrMoveCorrect():Boolean{
return ((m_egEgo.currAction == m_msMaster.currAction));
}
public function getCurrent():int{
return (m_gmGame.m_iCurrLevel);
}
public function startMoveResult(){
var _local1:int;
var _local2:int;
_local1 = m_egEgo.currAction;
_local2 = m_msMaster.currAction;
if (_local1 >= m_iMoveTypesTotal){
return;
};
if (_local1 == _local2){
onCorrectMove();
} else {
onWrongMove(_local1);
};
}
private function tryNewMove():Boolean{
if (((m_msMaster.isReady()) && (m_egEgo.isIdle()))){
return (false);
};
return (true);
}
public function getMovesTotal():int{
return (m_iCurrMoves);
}
private function startMoveTimer(_arg1:int){
if (moveTimer != null){
if (moveTimer.hasEventListener(TimerEvent.TIMER)){
moveTimer.removeEventListener(TimerEvent.TIMER, onMoveTimeout);
};
};
moveTimer = new Timer(((m_iLevelsMoveTimes[_arg1] * 1000) + 150), 0);
moveTimer.addEventListener(TimerEvent.TIMER, onMoveTimeout);
if (arrowTimer != null){
if (arrowTimer.hasEventListener(TimerEvent.TIMER)){
arrowTimer.removeEventListener(TimerEvent.TIMER, onArrowTimeout);
};
};
arrowTimer = new Timer((m_iLevelsMoveTimes[_arg1] * 500), 0);
arrowTimer.addEventListener(TimerEvent.TIMER, onArrowTimeout);
}
public function loopInit(){
m_gmGame = CGame(parent);
m_iLevelsTotal = m_gmGame.m_iLevelsTotal;
}
public function win(){
m_msMaster.stopStars();
m_msMaster.bow();
CRoot(root).smSoundMgr.playBgm(CSoundMgr.Bgm_EndLevel, false);
hitPercentage = Math.round(((correctMoves * 100) / getMovesTotal()));
m_ifInterface.updateScore((m_ifInterface.getScore() + hitPercentage));
result = LevelResult_win;
m_ifInterface.showStats();
}
public function winGame(){
trace("[CLevel] Game won.");
m_gmGame.activateBonusLevel();
m_gmGame.startWinAnim();
}
private function onNoMove(){
m_ifInterface.onWrongMove();
}
private function onCorrectMove(){
var _local1:*;
var _local2:*;
correctMoves++;
_local1 = (new Date().time - timerStartTime);
_local2 = 1;
if (m_gmGame.m_iCurrLevel < 0){
trace("[CLevel] Calculating time ratio:");
trace(("[CLevel] Elapsed time: " + _local1));
trace(("[CLevel] Level time: " + (m_iLevelsMoveTimes[(m_gmGame.m_iLevelsTotal - 1)] * 1000)));
_local2 = (_local2 - (_local1 / (m_iLevelsMoveTimes[(m_gmGame.m_iLevelsTotal - 1)] * 1000)));
trace(("[CLevel] Time ratio: " + _local2));
} else {
_local2 = (_local2 - (_local1 / (m_iLevelsMoveTimes[m_gmGame.m_iCurrLevel] * 1000)));
};
if (_local2 < 0){
_local2 = 0;
trace("menor que zero");
};
m_ifInterface.reduceMovesToGo();
m_ifInterface.onCorrectMove(_local2);
m_msMaster.startCorrectAnswerAnim();
}
private function onWrongMove(_arg1:int){
m_ifInterface.onWrongMove();
m_msMaster.startWrongAnswerAnim(_arg1);
}
}
}//package src.ingame
Section 77
//CMaster (src.ingame.CMaster)
package src.ingame {
import flash.display.*;
import src.*;
import flash.ui.*;
public class CMaster {
private const transAnimsTotal:int = 3;
private const MoveHeight_High:int = 0;
private const hurtAnimsTotal:int = 3;
private const m_iStarsTotal:int = 3;
private const MoveHeight_Low:int = 1;
public var currAction:int;
var animControl:CAnimControl;
public var lastMove:int;
public var state:int;
var m_arrOnActionEnd:Array;
private var mcMaster;
private var currActionMC:MovieClip;
public var m_lvLevel:CLevel;
private var currActionMCName:String;
private var currStars:int;// = 3
private var mcShadow;
public var nextMove;
private var mcStars:MovieClip;
var m_fOnActionEnd:Function;
public static const MasterAction_fromLowToHigh:int = 12;
public static const MasterState_wait:int = 0;
public static const MasterAction_punch:int = 2;
public static const MasterState_busy:int = 2;
public static const MasterAction_max:int = 18;
public static const MasterAction_kick:int = 3;
public static const MasterAction_fromHighToHigh:int = 11;
public static const MasterAction_hitKick:int = 7;
public static const MasterState_ready:int = 1;
public static const MasterAction_hitSpinkick:int = 5;
public static const MasterAction_walk:int = 15;
public static const MasterAction_idle:int = 17;
public static const MasterAction_death:int = 14;
public static const MasterAction_hurtSpinKick:int = 9;
public static const MasterAction_bow:int = 16;
public static const MasterAction_hurtLow:int = 10;
public static const MasterAction_hitPunch:int = 6;
public static const MasterAction_hurtJump:int = 8;
public static const MasterAction_spinKick:int = 1;
public static const MasterAction_jump:int = 0;
public static const MasterAction_fromLowToLow:int = 13;
public static const MasterAction_hitJump:int = 4;
public function CMaster(_arg1:MovieClip, _arg2:MovieClip){
currStars = 3;
super();
trace("CMaster");
this.mcMaster = _arg1;
this.mcShadow = _arg2;
this.mcStars = _arg1.mcStars;
animControl = new CAnimControl();
animControl.onNextRender(_arg1, loopInit);
state = MasterState_ready;
}
private function addStar(){
mcStars[("mcStar" + currStars)].visible = true;
mcStars[("mcStar" + currStars)].gotoAndPlay(1);
currStars++;
}
public function isReady(){
return ((state == MasterState_ready));
}
private function onLoadedAction(){
m_fOnActionEnd = m_arrOnActionEnd[currAction];
if (currAction < m_lvLevel.m_iMoveTypesTotal){
if (m_lvLevel.isTutorialOn()){
showMoveArrow();
} else {
m_lvLevel.m_ifInterface.hideArrow();
};
};
currActionMCName = getActionMCName();
currActionMC = mcMaster[currActionMCName];
if (m_fOnActionEnd != null){
animControl.onLabelEx(currActionMC, "end", onActionUpdate, m_fOnActionEnd, true);
};
}
private function onTransitionActionEnd(){
startAction(nextMove);
}
private function onBowActionEnd(){
}
private function onActionUpdate(){
mcShadow[currActionMCName].nextFrame();
}
private function initStars(){
var _local1:int;
currStars = 0;
_local1 = 0;
while (_local1 < m_iStarsTotal) {
mcStars[("mcStar" + _local1)].visible = false;
_local1++;
};
}
public function startCorrectAnswerAnim(){
startAction((currAction + m_lvLevel.m_iMoveTypesTotal));
}
public function startWrongAnswerAnim(_arg1:int){
if (_arg1 == MasterAction_kick){
_arg1 = MasterAction_punch;
};
startAction((_arg1 + (2 * m_lvLevel.m_iMoveTypesTotal)));
}
public function showMoveArrow(){
switch (currAction){
case MasterAction_spinKick:
m_lvLevel.m_ifInterface.showArrow(Keyboard.LEFT);
break;
case MasterAction_punch:
m_lvLevel.m_ifInterface.showArrow(Keyboard.RIGHT);
break;
case MasterAction_kick:
m_lvLevel.m_ifInterface.showArrow(Keyboard.DOWN);
break;
case MasterAction_jump:
m_lvLevel.m_ifInterface.showArrow(Keyboard.UP);
break;
};
}
private function startAction(_arg1:int){
trace(("Master start action " + _arg1));
state = MasterState_busy;
currAction = _arg1;
mcMaster.gotoAndStop((_arg1 + 1));
mcShadow.gotoAndStop((_arg1 + 1));
animControl.onNextRender(mcMaster, onLoadedAction);
}
public function startLevel(){
startAction(MasterAction_walk);
}
public function resumeStars(){
initStars();
}
public function bow(){
startAction(MasterAction_bow);
}
private function getMoveHeight(_arg1:int){
switch (_arg1){
case MasterAction_walk:
return (MoveHeight_High);
case MasterAction_jump:
return (MoveHeight_High);
case MasterAction_punch:
return (MoveHeight_Low);
case MasterAction_spinKick:
return (MoveHeight_High);
case MasterAction_kick:
return (MoveHeight_Low);
};
}
private function onMoveActionEnd(){
m_lvLevel.m_gmGame.m_bInputOn = true;
state = MasterState_wait;
}
private function loopInit(){
m_lvLevel = CLevel(mcMaster.parent);
initStars();
initOnActionEnd();
}
public function goIdle(){
mcMaster.gotoAndStop("walk");
}
private function onHurtActionEnd(){
if (currStars < m_iStarsTotal){
addStar();
state = MasterState_ready;
} else {
startAction(MasterAction_death);
state = MasterState_busy;
};
}
public function endLevel(){
}
private function onWalkActionEnd(){
lastMove = MasterAction_walk;
state = MasterState_ready;
m_lvLevel.startNewMove();
}
private function onDeathActionEnd(){
m_lvLevel.loseGame();
}
private function onHitActionEnd(){
state = MasterState_ready;
}
private function getActionMCName(){
var _local1:String;
_local1 = "";
switch (currAction){
case MasterAction_jump:
_local1 = "jump";
break;
case MasterAction_punch:
_local1 = "punch";
break;
case MasterAction_spinKick:
_local1 = "spinKick";
break;
case MasterAction_kick:
_local1 = "kick";
break;
case MasterAction_hitJump:
_local1 = "hitJump";
break;
case MasterAction_hitPunch:
_local1 = "hitPunch";
break;
case MasterAction_hitSpinkick:
_local1 = "hitSpinKick";
break;
case MasterAction_hitKick:
_local1 = "hitKick";
break;
case MasterAction_hurtLow:
_local1 = "hurtLow";
break;
case MasterAction_hurtJump:
_local1 = "hurtJump";
break;
case MasterAction_hurtSpinKick:
_local1 = "hurtSpinKick";
break;
case MasterAction_fromHighToHigh:
_local1 = "fromHighToHigh";
break;
case MasterAction_fromLowToLow:
_local1 = "fromLowToLow";
break;
case MasterAction_fromLowToHigh:
_local1 = "fromHighToLow";
break;
case MasterAction_death:
_local1 = "death";
break;
case MasterAction_walk:
_local1 = "walk";
break;
case MasterAction_bow:
_local1 = "bow";
break;
};
return ((("mc" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)));
}
private function initOnActionEnd(){
var _local1:int;
m_arrOnActionEnd = new Array(MasterAction_max);
_local1 = 0;
while (_local1 < m_arrOnActionEnd.length) {
if ((((_local1 >= 0)) && ((_local1 < m_lvLevel.m_iMoveTypesTotal)))){
m_arrOnActionEnd[_local1] = onMoveActionEnd;
} else {
if ((((_local1 >= m_lvLevel.m_iMoveTypesTotal)) && ((_local1 < (2 * m_lvLevel.m_iMoveTypesTotal))))){
m_arrOnActionEnd[_local1] = onHitActionEnd;
} else {
if ((((_local1 >= (2 * m_lvLevel.m_iMoveTypesTotal))) && ((_local1 < ((2 * m_lvLevel.m_iMoveTypesTotal) + hurtAnimsTotal))))){
m_arrOnActionEnd[_local1] = onHurtActionEnd;
} else {
if ((((_local1 >= ((2 * m_lvLevel.m_iMoveTypesTotal) + hurtAnimsTotal))) && ((_local1 < (((2 * m_lvLevel.m_iMoveTypesTotal) + hurtAnimsTotal) + transAnimsTotal))))){
m_arrOnActionEnd[_local1] = onTransitionActionEnd;
} else {
switch (_local1){
case MasterAction_death:
m_arrOnActionEnd[_local1] = onDeathActionEnd;
break;
case MasterAction_walk:
m_arrOnActionEnd[_local1] = onWalkActionEnd;
break;
case MasterAction_bow:
m_arrOnActionEnd[_local1] = onBowActionEnd;
break;
};
};
};
};
};
_local1++;
};
}
public function chooseNewMove(){
var _local1:*;
var _local2:int;
nextMove = m_lvLevel.getRandomMove();
if (lastMove == nextMove){
startAction(nextMove);
} else {
_local2 = getMoveHeight(lastMove);
_local1 = getMoveHeight(nextMove);
lastMove = nextMove;
if (_local2 == _local1){
if (_local2 == MoveHeight_Low){
startAction(MasterAction_fromLowToLow);
} else {
startAction(MasterAction_fromHighToHigh);
};
} else {
startAction(MasterAction_fromLowToHigh);
};
};
}
public function stopStars(){
var _local1:int;
_local1 = 0;
while (_local1 < m_iStarsTotal) {
if (mcStars[("mcStar" + _local1)].visible){
mcStars[("mcStar" + _local1)].mcStarRotation.stop();
};
mcStars[("mcStar" + _local1)].visible = false;
_local1++;
};
}
}
}//package src.ingame
Section 78
//CWinAnim (src.ingame.CWinAnim)
package src.ingame {
import flash.events.*;
import flash.display.*;
import src.*;
import mochi.as3.*;
import flash.text.*;
import flash.ui.*;
public class CWinAnim extends MovieClip {
public var m_mcClickBlocker:MovieClip;
public var m_btnBackToMenu:SimpleButton;
public var m_btnHighscores:SimpleButton;
public var m_txtScore:TextField;
public function CWinAnim(){
addFrameScript(0, frame1, 6, frame7);
stage.focus = this;
}
private function onMouseClick(_arg1:MouseEvent){
nextWinScreen();
}
public function backToMenu(_arg1:MouseEvent):void{
trace("[CWinAnim] Back to menu.");
m_btnHighscores.removeEventListener(MouseEvent.CLICK, submitScore);
m_btnBackToMenu.removeEventListener(MouseEvent.CLICK, backToMenu);
removeEventListener(KeyboardEvent.KEY_DOWN, onFinalFrameKeyboardPress);
CRoot(root).gotoMenu();
}
private function onFinalFrameKeyboardPress(_arg1:KeyboardEvent){
trace("[CWinAnim] Final frame keyboard press.");
if (_arg1.keyCode == Keyboard.LEFT){
leaveFinalFrame();
prevWinScreen();
};
}
public function start(){
trace("[CWinAnim] start");
m_mcClickBlocker.mouseEnabled = false;
m_mcClickBlocker.useHandCursor = false;
addEventListener(MouseEvent.CLICK, onMouseClick);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyboardPress);
}
function frame7(){
enteredFinalFrame();
}
private function prevWinScreen(){
if (currentFrame > 1){
prevFrame();
};
}
public function submitScore(_arg1:MouseEvent):void{
var o:Object;
var boardID:String;
var leaderBoardOptions:Object;
var evt = _arg1;
m_mcClickBlocker.mouseEnabled = true;
trace(("[CWinAnim] Submitting score: " + CGlobals.g_iScore));
o = {n:[9, 1, 11, 11, 4, 12, 8, 10, 12, 2, 8, 5, 10, 4, 1, 0], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
leaderBoardOptions = {boardID:boardID, score:CGlobals.g_iScore, showTableRank:true, previewScores:true, onClose:onRankingClosed};
MochiScores.showLeaderboard(leaderBoardOptions);
}
public function enteredFinalFrame(){
trace("[CWinAnim] Entered final frame.");
removeEventListener(MouseEvent.CLICK, onMouseClick);
removeEventListener(KeyboardEvent.KEY_DOWN, onKeyboardPress);
m_txtScore.text = CGlobals.g_iScore.toString();
m_btnHighscores.addEventListener(MouseEvent.CLICK, submitScore);
m_btnBackToMenu.addEventListener(MouseEvent.CLICK, backToMenu);
addEventListener(KeyboardEvent.KEY_DOWN, onFinalFrameKeyboardPress);
}
function frame1(){
stop();
}
private function nextWinScreen(){
nextFrame();
}
public function onRankingClosed(){
m_mcClickBlocker.mouseEnabled = false;
}
public function leaveFinalFrame(){
trace("[CWinAnim] Leaving final frame.");
m_btnHighscores.removeEventListener(MouseEvent.CLICK, submitScore);
m_btnBackToMenu.removeEventListener(MouseEvent.CLICK, backToMenu);
removeEventListener(KeyboardEvent.KEY_DOWN, onFinalFrameKeyboardPress);
addEventListener(MouseEvent.CLICK, onMouseClick);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyboardPress);
}
private function onKeyboardPress(_arg1:KeyboardEvent){
if (_arg1.keyCode == Keyboard.RIGHT){
nextWinScreen();
};
if (_arg1.keyCode == Keyboard.LEFT){
prevWinScreen();
};
}
}
}//package src.ingame
Section 79
//CAnimControl (src.CAnimControl)
package src {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
public class CAnimControl {
var forward:Boolean;
var currMC:MovieClip;
var nextLabel:String;
var updMethod:Function;
var currTimer:Timer;
var nextMethod;
public function onNextFrameAfter(_arg1:Event){
if (!updMethod()){
currMC.removeEventListener(Event.ENTER_FRAME, onNextFrameAfter);
currMC = null;
nextMethod();
};
}
private function onNextRenderAfterRender(_arg1:Event){
_arg1.currentTarget.removeEventListener(Event.RENDER, onNextRenderAfterRender);
currMC = null;
nextMethod();
}
private function onTimerEndAfter(_arg1:TimerEvent){
currTimer.removeEventListener(TimerEvent.TIMER, onTimerEndAfter);
nextMethod();
}
public function onTimerEnd(_arg1:Timer, _arg2:Function){
currTimer = _arg1;
nextMethod = _arg2;
currTimer.addEventListener(TimerEvent.TIMER, onTimerEndAfter);
currTimer.start();
}
public function onNextFrame(_arg1:MovieClip, _arg2:Function, _arg3:Function){
updMethod = _arg2;
nextMethod = _arg3;
currMC = _arg1;
cancelDisplayEvents();
currMC.addEventListener(Event.ENTER_FRAME, onNextFrameAfter);
}
public function onLabel(_arg1:MovieClip, _arg2:String, _arg3:Function){
nextMethod = _arg3;
currMC = _arg1;
nextLabel = _arg2;
cancelDisplayEvents();
currMC.addEventListener(Event.ENTER_FRAME, onLabelAfter);
}
private function onLabelAfter(_arg1:Event){
if (currMC.currentLabel == nextLabel){
currMC.removeEventListener(Event.ENTER_FRAME, onLabelAfter);
currMC = null;
nextLabel = null;
nextMethod();
} else {
currMC.nextFrame();
};
}
public function cancelDisplayEvents(){
if (currMC == null){
return;
};
if (currMC.hasEventListener(Event.ENTER_FRAME)){
currMC.removeEventListener(Event.ENTER_FRAME, onLabelAfter);
currMC.removeEventListener(Event.ENTER_FRAME, onNextRenderAfterFrame);
};
if (currMC.hasEventListener(Event.RENDER)){
currMC.removeEventListener(Event.RENDER, onNextRenderAfterRender);
};
}
private function onLabelExAfter(_arg1:Event){
if (currMC.currentLabel == nextLabel){
currMC.removeEventListener(Event.ENTER_FRAME, onLabelExAfter);
currMC = null;
nextLabel = null;
nextMethod();
} else {
if (forward){
currMC.nextFrame();
} else {
currMC.prevFrame();
};
if (updMethod != null){
updMethod();
};
};
}
public function cancelTimerEvents(){
if (currMC.hasEventListener(TimerEvent.TIMER)){
currTimer.removeEventListener(TimerEvent.TIMER, onTimerEndAfter);
};
}
public function onNextRender(_arg1:MovieClip, _arg2:Function){
nextMethod = _arg2;
currMC = _arg1;
cancelDisplayEvents();
currMC.addEventListener(Event.RENDER, onNextRenderAfterRender);
currMC.stage.invalidate();
}
public function loopForever(_arg1:MovieClip){
_arg1.gotoAndPlay(1);
}
public function onLabelEx(_arg1:MovieClip, _arg2:String, _arg3:Function, _arg4:Function, _arg5:Boolean){
currMC = _arg1;
nextLabel = _arg2;
updMethod = _arg3;
nextMethod = _arg4;
forward = _arg5;
cancelDisplayEvents();
currMC.addEventListener(Event.ENTER_FRAME, onLabelExAfter);
}
private function onNextRenderAfterFrame(_arg1:Event){
currMC.removeEventListener(Event.ENTER_FRAME, onNextRenderAfterFrame);
cancelDisplayEvents();
currMC.addEventListener(Event.RENDER, onNextRenderAfterRender);
currMC.stage.invalidate();
}
public function onNextRenderWait(_arg1:MovieClip, _arg2:Function){
nextMethod = _arg2;
currMC = _arg1;
cancelDisplayEvents();
currMC.addEventListener(Event.ENTER_FRAME, onNextRenderAfterFrame);
}
}
}//package src
Section 80
//CBlackBeltDisabledWarning (src.CBlackBeltDisabledWarning)
package src {
import flash.events.*;
import flash.display.*;
public class CBlackBeltDisabledWarning extends MovieClip {
public function CBlackBeltDisabledWarning(){
trace("[CBlackBeltDisabledWarning] Constructor");
addEventListener(Event.ENTER_FRAME, loopInit);
}
function onInput(_arg1:Event){
trace("[CBlackBeltDisabledWarning] Input received.");
stage.removeEventListener(MouseEvent.CLICK, onInput);
stage.removeEventListener(KeyboardEvent.KEY_UP, onInput);
CRoot(root).gotoAndStop("menu");
}
public function loopInit(_arg1:Event){
trace("[CBlackBeltDisabledWarning] Initializing");
removeEventListener(Event.ENTER_FRAME, loopInit);
stage.addEventListener(MouseEvent.CLICK, onInput);
stage.addEventListener(KeyboardEvent.KEY_UP, onInput);
}
}
}//package src
Section 81
//CButton (src.CButton)
package src {
import flash.events.*;
import flash.display.*;
public class CButton extends MovieClip {
public var btHitTest:SimpleButton;
public static const CLICK_ANIM_FINISHED:String = "clickAnimFinished";
public static const CLICK_ANIM_STARTED:String = "clickAnimStarted";
public function onMouseOver(_arg1:MouseEvent){
gotoAndPlay("over");
}
public function clickAnimFinished(){
trace("[CButton] Click animation finished.");
addInternalListeners();
dispatchEvent(new Event(CLICK_ANIM_FINISHED));
}
public function addInternalListeners(){
trace("[CButton] Initializing internal listeners.");
btHitTest.addEventListener(MouseEvent.CLICK, onClick);
btHitTest.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
}
public function removeInternalListeners(){
btHitTest.removeEventListener(MouseEvent.CLICK, onClick);
btHitTest.removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
}
public function onClick(_arg1:MouseEvent){
removeInternalListeners();
dispatchEvent(new Event(CLICK_ANIM_STARTED));
gotoAndPlay("click");
}
}
}//package src
Section 82
//CButtonRanking (src.CButtonRanking)
package src {
public dynamic class CButtonRanking extends CButton {
public function CButtonRanking(){
addFrameScript(0, frame1, 75, frame76, 108, frame109);
}
function frame76(){
gotoAndStop(1);
}
function frame1(){
stop();
}
function frame109(){
stop();
clickAnimFinished();
}
}
}//package src
Section 83
//CGlobals (src.CGlobals)
package src {
public class CGlobals {
public static const MochiTrackedAppStoreURL = "http://x.mochiads.com/link/8a6d55adb356133c";
public static const MochiGameID = "b59b92046236d358";
public static const GameMode_normal = 1;
public static const ENGLISH = 1;
public static const GameMode_none = 0;
public static const PORTUGUESE = 0;
public static const GameMode_bonus = 2;
public static var g_bLocal:Boolean = true;
public static var leGameDataMgr:CLocalExplorer;
public static var g_strPlayerName:String;
public static var g_iScore:int;
public static var g_iLanguage:int;
public static var g_bBonusLvlActivated:Boolean;
public static var g_iGameMode:int;
}
}//package src
Section 84
//CInstructions (src.CInstructions)
package src {
import flash.events.*;
import flash.display.*;
public class CInstructions extends MovieClip {
public function CInstructions(){
trace("[CInstructions] Constructor");
addEventListener(Event.ENTER_FRAME, loopInit);
}
function onInput(_arg1:Event){
trace("[CInstructions] Input received.");
stage.removeEventListener(MouseEvent.CLICK, onInput);
stage.removeEventListener(KeyboardEvent.KEY_UP, onInput);
CRoot(root).playGame();
}
public function loopInit(_arg1:Event){
trace("[CInstructions] Initializing");
removeEventListener(Event.ENTER_FRAME, loopInit);
stage.addEventListener(MouseEvent.CLICK, onInput);
stage.addEventListener(KeyboardEvent.KEY_UP, onInput);
}
}
}//package src
Section 85
//CLevelSplash (src.CLevelSplash)
package src {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
public class CLevelSplash extends MovieClip {
const splashTime:int = 1;
var timer:Timer;
public function CLevelSplash(){
timer = new Timer((1 * splashTime), 1);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
}
private function onTimer(_arg1:TimerEvent){
MovieClip(parent).gotoAndStop("inLevel");
}
}
}//package src
Section 86
//CLoading (src.CLoading)
package src {
import flash.display.*;
import mochi.as3.*;
import flash.text.*;
public class CLoading extends MovieClip {
public var dtLoading:TextField;
public var m_mcAdWindow:MovieClip;
public var mcLoadAnim:MovieClip;
public function CLoading(){
var _local1:Object;
super();
trace("[CLoading] Constructor");
_local1 = {clip:m_mcAdWindow, id:CGlobals.MochiGameID, res:"640x480", no_progress_bar:true, no_bg:true, ad_progress:onRootLoaderProgress, ad_finished:onRootLoaderComplete};
MochiAd.showPreGameAd(_local1);
}
private function onRootLoaderComplete():void{
trace("[CLoading] onRootLoaderComplete");
CRoot(root).loadComplete();
}
private function onRootLoaderProgress(_arg1:Number):void{
var _local2:*;
_local2 = int(_arg1);
dtLoading.text = (String(_local2) + " %");
mcLoadAnim.gotoAndStop(_local2);
}
}
}//package src
Section 87
//CLocalExplorer (src.CLocalExplorer)
package src {
import src.*;
import flash.net.*;
class CLocalExplorer {
public var soGameData:SharedObject;
function CLocalExplorer(_arg1:String){
soGameData = SharedObject.getLocal(_arg1);
loadName();
}
public function saveSoundOption(_arg1:Boolean):void{
soGameData.data.soundDisabled = !(_arg1);
soGameData.flush();
}
public function loadSoundOption():Boolean{
return (!(Boolean(soGameData.data.soundDisabled)));
}
public function loadBonusLevelActivated(){
CGlobals.g_bBonusLvlActivated = Boolean(soGameData.data.bonusLevelActivated);
}
public function loadName(){
CGlobals.g_strPlayerName = new String();
if (soGameData.data.previouslyViewed){
CGlobals.g_strPlayerName = soGameData.data.playerName;
} else {
CGlobals.g_strPlayerName = "";
};
}
public function saveName(_arg1:Boolean, _arg2:String){
soGameData.data.previouslyViewed = true;
soGameData.data.playerName = _arg2;
soGameData.flush();
}
public function saveBonusLevelActivated(){
trace("[CLocalExplorer] Saving bonus level flag...");
soGameData.data.bonusLevelActivated = CGlobals.g_bBonusLvlActivated;
soGameData.flush();
trace(("[CLocalExplorer] Bonus level flag saved: " + soGameData.data.bonusLevelActivated));
}
}
}//package src
Section 88
//CMenu (src.CMenu)
package src {
import flash.events.*;
import flash.display.*;
import mochi.as3.*;
import flash.net.*;
import flash.system.*;
public class CMenu extends MovieClip {
public var m_mcClickBlocker:MovieClip;
public var btBlackBeltDisabled:SimpleButton;
public var animControl:CAnimControl;
public var btTraining:SimpleButton;
public var btToggleSound:SimpleButton;
public var btBlackBelt:SimpleButton;
public var btRanking:CButton;
public var mcToggleSound:MovieClip;
public var m_btnAppStore:SimpleButton;
public function CMenu(){
animControl = new CAnimControl();
animControl.onNextRender(this, loopInit);
}
public function onBtBonusDisabledClick(_arg1:MouseEvent){
trace("[CMenu] Black Belt Challenge Disabled.");
removeInputListeners();
CRoot(root).gotoBlackBeltDisabledWarning();
}
public function onBtRankingClicked(_arg1:Event){
var o:Object;
var boardID:String;
var leaderBoardOptions:Object;
var evt = _arg1;
trace("[CMenu] Ranking clicked.");
btRanking.removeEventListener(CButton.CLICK_ANIM_FINISHED, onBtRankingClicked);
o = {n:[9, 1, 11, 11, 4, 12, 8, 10, 12, 2, 8, 5, 10, 4, 1, 0], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
boardID = o.f(0, "");
leaderBoardOptions = {boardID:boardID, showTableRank:true, previewScores:true, onClose:rankingClosed};
MochiScores.showLeaderboard(leaderBoardOptions);
}
public function onBtGameClick(_arg1:MouseEvent):void{
removeInputListeners();
CGlobals.g_iGameMode = CGlobals.GameMode_normal;
CRoot(root).gotoInstructions();
}
public function onBtBonusClick(_arg1:MouseEvent){
removeInputListeners();
CGlobals.g_iGameMode = CGlobals.GameMode_bonus;
CRoot(root).playGame();
}
public function onBtSoundClick(_arg1:MouseEvent){
CRoot(root).smSoundMgr.toggle();
mcToggleSound.play();
CGlobals.leGameDataMgr.saveSoundOption(CRoot(root).smSoundMgr.isOn());
}
private function setBtSoundState(_arg1:String){
mcToggleSound.gotoAndStop(_arg1);
}
public function removeInputListeners(){
btRanking.removeInternalListeners();
btRanking.removeEventListener(CButton.CLICK_ANIM_STARTED, onBtRankingClicking);
btTraining.removeEventListener(MouseEvent.CLICK, onBtGameClick);
btBlackBelt.removeEventListener(MouseEvent.CLICK, onBtBonusClick);
btBlackBeltDisabled.removeEventListener(MouseEvent.CLICK, onBtBonusDisabledClick);
btToggleSound.removeEventListener(MouseEvent.CLICK, onBtSoundClick);
m_btnAppStore.removeEventListener(MouseEvent.CLICK, onAppStoreBtn);
}
public function rankingClosed(){
m_mcClickBlocker.mouseEnabled = false;
}
private function addInputListeners(){
if (CGlobals.g_bBonusLvlActivated){
btBlackBelt.visible = true;
btBlackBeltDisabled.visible = false;
btBlackBelt.addEventListener(MouseEvent.CLICK, onBtBonusClick);
} else {
btBlackBelt.visible = false;
btBlackBeltDisabled.visible = true;
btBlackBeltDisabled.useHandCursor = false;
btBlackBeltDisabled.addEventListener(MouseEvent.CLICK, onBtBonusDisabledClick);
};
btRanking.addInternalListeners();
btRanking.addEventListener(CButton.CLICK_ANIM_STARTED, onBtRankingClicking);
btTraining.addEventListener(MouseEvent.CLICK, onBtGameClick);
btToggleSound.addEventListener(MouseEvent.CLICK, onBtSoundClick);
m_btnAppStore.addEventListener(MouseEvent.CLICK, onAppStoreBtn);
}
public function onAppStoreBtn(_arg1:MouseEvent){
var vars:URLVariables;
var req:URLRequest;
var evt = _arg1;
vars = new URLVariables();
vars["mav"] = MochiServices.getVersion();
vars["swfv"] = "9";
vars["swfurl"] = loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
req = new URLRequest(CGlobals.MochiTrackedAppStoreURL);
req.data = vars;
try {
navigateToURL(req, "_blank");
} catch(e:Error) {
};
}
public function loopInit(){
CGlobals.g_iScore = 0;
CGlobals.g_iGameMode = CGlobals.GameMode_none;
addInputListeners();
if (CRoot(root).smSoundMgr.isOn()){
setBtSoundState("on");
} else {
setBtSoundState("off");
};
m_mcClickBlocker.mouseEnabled = false;
CRoot(root).smSoundMgr.playBgm(CSoundMgr.Bgm_Menu, true);
}
public function onBtRankingClicking(_arg1:Event){
trace("[CMenu] Ranking clicking.");
m_mcClickBlocker.mouseEnabled = true;
btRanking.addEventListener(CButton.CLICK_ANIM_FINISHED, onBtRankingClicked);
}
}
}//package src
Section 89
//CRanking (src.CRanking)
package src {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import com.meychi.ascrypt3.*;
import flash.text.*;
public class CRanking extends MovieClip {
private const playersPerScreen:int = 10;
private const maxPlayers:int = 50;
public var btBonusLvl:SimpleButton;
private var animControl:CAnimControl;
public var m_Dates:Array;
public var m_Ptoss:Array;
public var m_iPage:int;
public var m_iGameState:int;
public var m_Date10:TextField;
public var btNextPage:SimpleButton;
private var playersTotal:int;
public var m_Nick2:TextField;
public var m_Nick3:TextField;
public var m_Nick4:TextField;
public var m_Nick6:TextField;
public var m_Nick7:TextField;
public var m_Nick1:TextField;
public var m_Nick9:TextField;
public var m_txtPages:TextField;
public var m_Nick5:TextField;
public var m_Nick8:TextField;
public var btMenu:SimpleButton;
public var btReplay:SimpleButton;
public var m_Nick10:TextField;
public var m_Nicks:Array;
public var m_Ptos10:TextField;
public var btChangeRanking:MovieClip;
public var bonusLvlBg:MovieClip;
public var m_mcLoading:MovieClip;
private var pageFirstPlayer:int;// = 0
public var m_Date1:TextField;
public var m_Date2:TextField;
public var m_Date3:TextField;
public var m_Date4:TextField;
public var m_Date5:TextField;
public var m_Date6:TextField;
public var m_Ptos1:TextField;
public var m_Ptos2:TextField;
public var m_Ptos3:TextField;
public var m_Ptos4:TextField;
public var btPrevPage:SimpleButton;
public var m_Ptos6:TextField;
public var m_Ptos7:TextField;
public var m_Ptos8:TextField;
public var m_Date8:TextField;
public var m_Date9:TextField;
private var currPage:int;
public var m_Ptos5:TextField;
public var m_Ptos9:TextField;
public var m_mcBananas:MovieClip;
public var m_Date7:TextField;
public static const MD5KEY:String = "NSP87fds&@(DISA&";
public static const secondsPerHour:int = 3600;
public static const SCORE_URL:String = "../score.php";
public static const secondsPer3Weeks:int = 1814400;
private static const RankScreen_normal:int = 0;
public static const secondsPerMonth:Number = 2419200;
public static const secondsPerMinute:int = 60;
private static const RankScreen_bonus:int = 1;
public static const secondsPerWeek:int = 604800;
public static const secondsPer2Weeks:int = 1209600;
public static const RC4PASS:String = "Pds8@HS $A0hu&";
public static const secondsPerDay:int = 86400;
public function CRanking(){
pageFirstPlayer = 0;
super();
animControl = new CAnimControl();
animControl.onNextRender(this, loopInit);
stage.invalidate();
m_Nicks = new Array();
m_Dates = new Array();
m_Ptoss = new Array();
m_Nicks.push(m_Nick1);
m_Nicks.push(m_Nick2);
m_Nicks.push(m_Nick3);
m_Nicks.push(m_Nick4);
m_Nicks.push(m_Nick5);
m_Nicks.push(m_Nick6);
m_Nicks.push(m_Nick7);
m_Nicks.push(m_Nick8);
m_Nicks.push(m_Nick9);
m_Nicks.push(m_Nick10);
m_Ptoss.push(m_Ptos1);
m_Ptoss.push(m_Ptos2);
m_Ptoss.push(m_Ptos3);
m_Ptoss.push(m_Ptos4);
m_Ptoss.push(m_Ptos5);
m_Ptoss.push(m_Ptos6);
m_Ptoss.push(m_Ptos7);
m_Ptoss.push(m_Ptos8);
m_Ptoss.push(m_Ptos9);
m_Ptoss.push(m_Ptos10);
m_Dates.push(m_Date1);
m_Dates.push(m_Date2);
m_Dates.push(m_Date3);
m_Dates.push(m_Date4);
m_Dates.push(m_Date5);
m_Dates.push(m_Date6);
m_Dates.push(m_Date7);
m_Dates.push(m_Date8);
m_Dates.push(m_Date9);
m_Dates.push(m_Date10);
}
function loopInit(){
trace("CRanking loopInit");
m_txtPages.text = "0/0";
m_mcBananas.gotoAndStop(5);
clearRanking();
clearButtons();
if (CGlobals.g_iGameMode != CGlobals.GameMode_none){
saveScore(CGlobals.g_strPlayerName, CGlobals.g_iScore);
} else {
initScreen(RankScreen_normal);
};
}
private function showPlayers(_arg1:int){
}
function removeListeners(){
btMenu.removeEventListener(MouseEvent.CLICK, onBtMenuClick);
btReplay.removeEventListener(MouseEvent.CLICK, onBtReplayClick);
btBonusLvl.removeEventListener(MouseEvent.CLICK, onbtBonusLvlClick);
btNextPage.removeEventListener(MouseEvent.CLICK, onBtNextPageClick);
btPrevPage.removeEventListener(MouseEvent.CLICK, onBtPrevPageClick);
btChangeRanking.removeEventListener(MouseEvent.CLICK, onBtChangeRankingClick);
}
function onBtPrevPageClick(_arg1:MouseEvent){
m_iPage--;
clearRanking();
loadRanking();
}
function initButtons(_arg1:int){
if (_arg1 == RankScreen_normal){
btMenu.visible = true;
bonusLvlBg.visible = false;
btNextPage.visible = true;
btPrevPage.visible = true;
} else {
bonusLvlBg.visible = true;
};
switch (CGlobals.g_iGameMode){
case CGlobals.GameMode_none:
if (CGlobals.g_bBonusLvlActivated){
showChangeRanking(_arg1);
} else {
btChangeRanking.visible = false;
};
btReplay.visible = false;
btBonusLvl.visible = false;
break;
case CGlobals.GameMode_normal:
btReplay.visible = true;
if (CGlobals.g_bBonusLvlActivated){
btBonusLvl.visible = true;
};
break;
case CGlobals.GameMode_bonus:
btReplay.visible = true;
btBonusLvl.visible = false;
break;
};
}
function showChangeRanking(_arg1:int){
btChangeRanking.visible = true;
if (_arg1 == RankScreen_normal){
btChangeRanking.gotoAndStop("blackBelt");
} else {
btChangeRanking.gotoAndStop("normal");
};
}
function loadRanking(){
var header:URLRequestHeader;
var request:URLRequest;
var variables:URLVariables;
var loader:URLLoader;
header = new URLRequestHeader("pragma", "no-cache");
request = new URLRequest(SCORE_URL);
variables = new URLVariables();
request.requestHeaders.push(header);
variables.op = "get_score";
variables.game = "1";
variables.limit = "10";
variables.page = m_iPage;
variables.game_state = m_iGameState;
request.method = URLRequestMethod.GET;
request.data = variables;
m_mcLoading.visible = true;
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeLoadRanking);
try {
loader.load(request);
} catch(error:Error) {
trace(("Unable to load URL: " + error));
};
btNextPage.visible = false;
btPrevPage.visible = false;
btChangeRanking.visible = false;
}
function clearButtons(){
bonusLvlBg.visible = false;
btChangeRanking.visible = false;
btBonusLvl.visible = false;
btNextPage.visible = false;
btPrevPage.visible = false;
}
function onBtReplayClick(_arg1:MouseEvent){
btReplay.removeEventListener(MouseEvent.CLICK, onBtReplayClick);
CRoot(root).playGame();
}
function onbtBonusLvlClick(_arg1:MouseEvent){
btBonusLvl.removeEventListener(MouseEvent.CLICK, onbtBonusLvlClick);
CGlobals.g_iGameMode = CGlobals.GameMode_bonus;
CRoot(root).playGame();
}
private function gotoRankGame(){
initScreen(RankScreen_normal);
}
function saveScore(_arg1:String, _arg2:int){
var request:URLRequest;
var variables:URLVariables;
var encryptedMessage:String;
var md5:MD5;
var rc4:RC4;
var loader:URLLoader;
var name = _arg1;
var score = _arg2;
trace("saveScore init");
request = new URLRequest(SCORE_URL);
variables = new URLVariables();
md5 = new MD5();
rc4 = new RC4();
encryptedMessage = ("game=" + CGlobals.MochiGameID);
encryptedMessage = (encryptedMessage + ("&score=" + CGlobals.g_iScore));
encryptedMessage = (encryptedMessage + ("&nick=" + CGlobals.g_strPlayerName));
encryptedMessage = (encryptedMessage + ("&game_state=" + CGlobals.g_iGameMode));
encryptedMessage = (encryptedMessage + ("&m=" + md5.calculate((encryptedMessage + MD5KEY)).substr(0, 8)));
variables.op = "save_score";
variables.k = rc4.encrypt(encryptedMessage, RC4PASS);
request.method = URLRequestMethod.GET;
request.data = variables;
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeSaveScore);
try {
loader.load(request);
} catch(error:Error) {
trace(("Unable to load URL: " + error));
};
trace("saveScore end");
}
function clearRanking(){
var _local1:int;
_local1 = 0;
m_mcBananas.gotoAndStop(5);
while (_local1 < 10) {
m_Nicks[_local1].text = "";
m_Ptoss[_local1].text = "";
m_Dates[_local1].text = "";
_local1++;
};
}
private function gotoRankBonus(){
initScreen(RankScreen_bonus);
}
function onBtChangeRankingClick(_arg1:MouseEvent){
if (btChangeRanking.currentLabel == "blackBelt"){
gotoRankBonus();
} else {
gotoRankGame();
};
}
function onBtNextPageClick(_arg1:MouseEvent){
m_iPage++;
clearRanking();
loadRanking();
}
function completeLoadRanking(_arg1:Event):void{
var _local2:XML;
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Date;
var _local7:Number;
var _local8:int;
var _local9:int;
var _local10:XML;
trace("completeLoadRanking init");
_local2 = XML(_arg1.target.data);
_local3 = 0;
trace(_local2.toXMLString());
trace("completeLoadRanking end");
_local9 = _local2.score_prop[0].@count;
if ((((m_iPage == 1)) && ((_local9 > 0)))){
_local4 = _local2.score_prop[0].@date;
trace(("serverDate:" + _local4));
_local6 = new Date(_local2.score[0].@date.substr(0, 4), (_local2.score[0].@date.substr(5, 2) - 1), _local2.score[0].@date.substr(8, 2), _local2.score[0].@date.substr(11, 2), _local2.score[0].@date.substr(14, 2), _local2.score[0].@date.substr(17, 2), 0);
_local5 = (_local6.getTime() / 1000);
_local7 = (_local4 - _local5);
trace(("diffDate:" + _local7));
trace(("secondsPerWeek:" + secondsPerWeek));
trace(("scoreSecDate:" + _local5));
trace(("dataXML.score[0].@date.substr(5,2):" + _local2.score[0].@date.substr(5, 2)));
trace(("scoreDate:" + _local6.toDateString()));
if (_local7 > secondsPerMonth){
m_mcBananas.gotoAndStop(4);
} else {
if (_local7 > secondsPer3Weeks){
m_mcBananas.gotoAndStop(3);
} else {
if (_local7 > secondsPer2Weeks){
m_mcBananas.gotoAndStop(2);
} else {
if (_local7 > secondsPerWeek){
m_mcBananas.gotoAndStop(1);
};
};
};
};
};
_local8 = ((_local9 / 10) + 1);
trace(("totalPages:" + _local8));
trace(("scorescount:" + _local9));
m_txtPages.text = ((m_iPage + "/") + _local8);
for each (_local10 in _local2.score) {
m_Nicks[_local3].text = _local10.@name;
m_Ptoss[_local3].text = _local10.@value;
m_Dates[_local3].text = ((((_local10.@date.substr(8, 2) + "/") + _local10.@date.substr(5, 2)) + "/") + _local10.@date.substr(2, 2));
_local3++;
};
m_mcLoading.visible = false;
if (m_iPage > 1){
btPrevPage.visible = true;
};
if (m_iPage < _local8){
btNextPage.visible = true;
};
if (CGlobals.g_bBonusLvlActivated){
btChangeRanking.visible = true;
};
}
function initScreen(_arg1:int){
trace(("initScreen: screen:" + _arg1));
trace(("CGlobals.g_bBonusLvlActivated:" + CGlobals.g_bBonusLvlActivated));
pageFirstPlayer = 0;
currPage = 0;
loadPlayers();
btMenu.addEventListener(MouseEvent.CLICK, onBtMenuClick);
btReplay.addEventListener(MouseEvent.CLICK, onBtReplayClick);
btBonusLvl.addEventListener(MouseEvent.CLICK, onbtBonusLvlClick);
btNextPage.addEventListener(MouseEvent.CLICK, onBtNextPageClick);
btPrevPage.addEventListener(MouseEvent.CLICK, onBtPrevPageClick);
btChangeRanking.addEventListener(MouseEvent.CLICK, onBtChangeRankingClick);
trace("init buttons");
initButtons(_arg1);
m_iPage = 1;
m_txtPages.text = "0/0";
m_mcBananas.gotoAndStop(5);
if (_arg1 == RankScreen_normal){
m_iGameState = CGlobals.GameMode_normal;
} else {
m_iGameState = CGlobals.GameMode_bonus;
};
clearRanking();
loadRanking();
}
function completeSaveScore(_arg1:Event):void{
var _local2:URLLoader;
trace("completeHandler init");
_local2 = URLLoader(_arg1.target);
trace(_local2.data.res);
trace("completeHandler end");
if (CGlobals.g_iGameMode == CGlobals.GameMode_normal){
initScreen(RankScreen_normal);
} else {
initScreen(RankScreen_bonus);
};
}
function loadPlayers(){
playersTotal = 0;
}
function onBtMenuClick(_arg1:MouseEvent){
removeListeners();
CRoot(root).gotoMenu();
}
}
}//package src
Section 90
//CRoot (src.CRoot)
package src {
import flash.display.*;
import src.ingame.*;
import mochi.as3.*;
import flash.net.*;
public class CRoot extends MovieClip {
public var smSoundMgr:CSoundMgr;
protected var mcMenu:CMenu;
protected var mcInstructions:CInstructions;
public var m_mcMochiServices:MovieClip;
protected var mcSplash:CSplash;
protected var mcGame:CGame;
public var mcLoadGame:CLoading;
protected var mcRanking:CRanking;
public static const MochiGameID:String = "";
public function CRoot(){
addFrameScript(0, frame1, 1, frame2, 2, frame3);
stage.scaleMode = StageScaleMode.NO_SCALE;
CGlobals.g_bBonusLvlActivated = false;
CGlobals.leGameDataMgr = new CLocalExplorer("makakoSan");
CGlobals.leGameDataMgr.loadName();
CGlobals.leGameDataMgr.loadBonusLevelActivated();
smSoundMgr = new CSoundMgr(this);
smSoundMgr.enable(CGlobals.leGameDataMgr.loadSoundOption());
}
public function pastAssetsFrame(){
smSoundMgr.initSounds();
MochiServices.connect("b59b92046236d358", m_mcMochiServices);
}
public function loadComplete(){
play();
}
function frame3(){
stop();
}
public function gotoMenu(){
gotoAndStop("menu");
}
public function gotoRanking(){
gotoAndStop("ranking");
}
function frame1(){
MochiBot.track(this, "c1a4aa85");
stop();
}
public function playGame(){
gotoAndStop("game");
}
public function gotoInstructions(){
gotoAndStop("instructions");
}
function frame2(){
pastAssetsFrame();
}
public function gotoWebsite(){
var url:String;
var request:URLRequest;
trace("gotoWebSite");
url = "http://www.overplay.com.br";
request = new URLRequest(url);
try {
navigateToURL(request);
} catch(e:Error) {
};
}
public function gotoBlackBeltDisabledWarning(){
gotoAndStop("blackbeltdisabled");
}
}
}//package src
Section 91
//CSound (src.CSound)
package src {
import src.*;
import flash.media.*;
class CSound {
var loaded:Boolean;
private var snd:Sound;
private var soundMgr:CSoundMgr;
private var sndChannel:SoundChannel;
var id:int;
function CSound(_arg1:CSoundMgr){
soundMgr = _arg1;
loaded = false;
}
function play(_arg1:int){
var _local2:SoundTransform;
if (sndChannel != null){
sndChannel.stop();
};
_local2 = new SoundTransform();
_local2.volume = soundMgr.m_volume;
if (_arg1 == 0){
sndChannel = snd.play(0, int.MAX_VALUE, _local2);
} else {
sndChannel = snd.play(0, _arg1, _local2);
};
}
function stop(){
if (sndChannel != null){
sndChannel.stop();
};
}
function init(_arg1:int, _arg2:Sound){
id = _arg1;
snd = _arg2;
setVolume(soundMgr.m_volume);
loaded = true;
}
function setVolume(_arg1:Number){
var _local2:SoundTransform;
if (sndChannel != null){
_local2 = new SoundTransform();
_local2.volume = _arg1;
sndChannel.soundTransform = _local2;
};
}
}
}//package src
Section 92
//CSoundMgr (src.CSoundMgr)
package src {
import flash.media.*;
public class CSoundMgr {
private const nSounds = 6;
private const nSfx:int = 1;
private const nBgm:int = 5;
private var sounds:Array;
private var m_rtRoot:CRoot;
private var m_bSound:Boolean;
public var m_volume:Number;
public static const Bgm_EndLevel:int = 4;
public static const Bgm_Win:int = 3;
public static const Bgm_Game:int = 2;
public static const Sfx_MenuButton:int = 5;
public static const Bgm_Menu:int = 1;
public static const Bgm_Splash:int = 0;
public function CSoundMgr(_arg1:CRoot){
var _local2:int;
super();
m_bSound = true;
m_volume = 1;
m_rtRoot = _arg1;
sounds = new Array((nBgm + nSfx));
_local2 = 0;
while (_local2 < sounds.length) {
sounds[_local2] = new CSound(this);
_local2++;
};
}
public function enable(_arg1:Boolean){
trace(("[CSoundMgr] Enable " + _arg1));
m_bSound = _arg1;
if (m_bSound){
setVolume(1);
} else {
setVolume(0);
};
}
public function toggle(){
enable(!(isOn()));
}
private function setVolume(_arg1:Number){
var _local2:SoundTransform;
_local2 = SoundMixer.soundTransform;
_local2.volume = _arg1;
SoundMixer.soundTransform = _local2;
}
function initSounds(){
sounds[Bgm_Splash].init(Bgm_Splash, new CBgm_Splash());
sounds[Bgm_Menu].init(Bgm_Menu, new CBgm_Menu());
sounds[Bgm_Game].init(Bgm_Game, new CBgm_Game());
sounds[Bgm_Win].init(Bgm_Win, new CBgm_Final());
sounds[Bgm_EndLevel].init(Bgm_EndLevel, new CBgm_EndLevel());
sounds[Sfx_MenuButton].init(Sfx_MenuButton, new CSnd_Papel02());
}
public function isOn(){
return (m_bSound);
}
public function stopSound(_arg1:int){
sounds[_arg1].stop();
}
public function playSfx(_arg1:int, _arg2:Boolean){
if (_arg2){
sounds[_arg1].play(0);
} else {
sounds[_arg1].play(1);
};
}
public function playBgm(_arg1:int, _arg2:Boolean){
var _local3:int;
trace(("[CSoundMgr] Playing BGM " + _arg1));
_local3 = 0;
while (_local3 < nBgm) {
if (_local3 == _arg1){
if (_arg2){
sounds[_arg1].play(0);
} else {
sounds[_arg1].play(1);
};
} else {
sounds[_local3].stop();
};
_local3++;
};
}
}
}//package src
Section 93
//CSplash (src.CSplash)
package src {
import flash.events.*;
import flash.display.*;
public class CSplash extends MovieClip {
public var animControl:CAnimControl;
public var mcLogo:MovieClip;
public function CSplash(){
animControl = new CAnimControl();
animControl.onNextRender(this, loopInit);
CRoot(root).smSoundMgr.playBgm(CSoundMgr.Bgm_Splash, false);
}
public function checkSplashEnd(_arg1:Event){
if ((((mcLogo.currentLabel == "end")) && (!((mcLogo.mcFadeOut == null))))){
if (mcLogo.mcFadeOut.currentLabel == "end"){
removeEventListener(Event.ENTER_FRAME, checkSplashEnd);
CRoot(root).gotoMenu();
};
};
}
public function loopInit(){
addEventListener(Event.ENTER_FRAME, checkSplashEnd);
}
}
}//package src
Section 94
//CBgm_EndLevel (CBgm_EndLevel)
package {
import flash.media.*;
public dynamic class CBgm_EndLevel extends Sound {
}
}//package
Section 95
//CBgm_Final (CBgm_Final)
package {
import flash.media.*;
public dynamic class CBgm_Final extends Sound {
}
}//package
Section 96
//CBgm_Game (CBgm_Game)
package {
import flash.media.*;
public dynamic class CBgm_Game extends Sound {
}
}//package
Section 97
//CBgm_Menu (CBgm_Menu)
package {
import flash.media.*;
public dynamic class CBgm_Menu extends Sound {
}
}//package
Section 98
//CBgm_Splash (CBgm_Splash)
package {
import flash.media.*;
public dynamic class CBgm_Splash extends Sound {
}
}//package
Section 99
//CSnd_Papel02 (CSnd_Papel02)
package {
import flash.media.*;
public dynamic class CSnd_Papel02 extends Sound {
}
}//package
Section 100
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package