Section 1
//MD5 (com.adobe.crypto.MD5)
package com.adobe.crypto {
import flash.utils.*;
import com.adobe.utils.*;
public class MD5 {
public static var digest:ByteArray;
private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function f(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg2) | (~(_arg1) & _arg3)));
}
private static function g(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg3) | (_arg2 & ~(_arg3))));
}
private static function h(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 ^ _arg2) ^ _arg3));
}
private static function i(_arg1:int, _arg2:int, _arg3:int):int{
return ((_arg2 ^ (_arg1 | ~(_arg3))));
}
private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{
var _local9:int = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8);
return ((IntUtil.rol(_local9, _arg7) + _arg3));
}
private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
public static function hash(_arg1:String):String{
var _local2:ByteArray = new ByteArray();
_local2.writeUTFBytes(_arg1);
return (hashBinary(_local2));
}
private static function createBlocks(_arg1:ByteArray):Array{
var _local2:Array = new Array();
var _local3:int = (_arg1.length * 8);
var _local4 = 0xFF;
var _local5:int;
while (_local5 < _local3) {
_local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32)));
_local5 = (_local5 + 8);
};
_local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32)));
_local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3;
return (_local2);
}
public static function hashBinary(_arg1:ByteArray):String{
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local2 = 1732584193;
var _local3 = -271733879;
var _local4 = -1732584194;
var _local5 = 271733878;
var _local10:Array = createBlocks(_arg1);
var _local11:int = _local10.length;
var _local12:int;
while (_local12 < _local11) {
_local6 = _local2;
_local7 = _local3;
_local8 = _local4;
_local9 = _local5;
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551);
_local2 = (_local2 + _local6);
_local3 = (_local3 + _local7);
_local4 = (_local4 + _local8);
_local5 = (_local5 + _local9);
_local12 = (_local12 + 16);
};
digest = new ByteArray();
digest.writeInt(_local2);
digest.writeInt(_local3);
digest.writeInt(_local4);
digest.writeInt(_local5);
digest.position = 0;
return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5)));
}
private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
public static function hashBytes(_arg1:ByteArray):String{
return (hashBinary(_arg1));
}
}
}//package com.adobe.crypto
Section 2
//PNGEncoder (com.adobe.images.PNGEncoder)
package com.adobe.images {
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
public class PNGEncoder {
private static var crcTableComputed:Boolean = false;
private static var crcTable:Array;
private static function writeChunk(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray):void{
var _local8:uint;
var _local9:uint;
var _local10:uint;
if (!crcTableComputed){
crcTableComputed = true;
crcTable = [];
_local9 = 0;
while (_local9 < 0x0100) {
_local8 = _local9;
_local10 = 0;
while (_local10 < 8) {
if ((_local8 & 1)){
_local8 = uint((uint(3988292384) ^ uint((_local8 >>> 1))));
} else {
_local8 = uint((_local8 >>> 1));
};
_local10++;
};
crcTable[_local9] = _local8;
_local9++;
};
};
var _local4:uint;
if (_arg3 != null){
_local4 = _arg3.length;
};
_arg1.writeUnsignedInt(_local4);
var _local5:uint = _arg1.position;
_arg1.writeUnsignedInt(_arg2);
if (_arg3 != null){
_arg1.writeBytes(_arg3);
};
var _local6:uint = _arg1.position;
_arg1.position = _local5;
_local8 = 4294967295;
var _local7:int;
while (_local7 < (_local6 - _local5)) {
_local8 = uint((crcTable[((_local8 ^ _arg1.readUnsignedByte()) & uint(0xFF))] ^ uint((_local8 >>> 8))));
_local7++;
};
_local8 = uint((_local8 ^ uint(4294967295)));
_arg1.position = _local6;
_arg1.writeUnsignedInt(_local8);
}
public static function encode(_arg1:BitmapData):ByteArray{
var _local6:uint;
var _local7:int;
var _local2:ByteArray = new ByteArray();
_local2.writeUnsignedInt(2303741511);
_local2.writeUnsignedInt(218765834);
var _local3:ByteArray = new ByteArray();
_local3.writeInt(_arg1.width);
_local3.writeInt(_arg1.height);
_local3.writeUnsignedInt(134610944);
_local3.writeByte(0);
writeChunk(_local2, 1229472850, _local3);
var _local4:ByteArray = new ByteArray();
var _local5:int;
while (_local5 < _arg1.height) {
_local4.writeByte(0);
if (!_arg1.transparent){
_local7 = 0;
while (_local7 < _arg1.width) {
_local6 = _arg1.getPixel(_local7, _local5);
_local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | 0xFF)));
_local7++;
};
} else {
_local7 = 0;
while (_local7 < _arg1.width) {
_local6 = _arg1.getPixel32(_local7, _local5);
_local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | (_local6 >>> 24))));
_local7++;
};
};
_local5++;
};
_local4.compress();
writeChunk(_local2, 1229209940, _local4);
writeChunk(_local2, 1229278788, null);
return (_local2);
}
}
}//package com.adobe.images
Section 3
//JSON (com.adobe.serialization.json.JSON)
package com.adobe.serialization.json {
public class JSON {
public static function decode(_arg1:String){
var _local2:JSONDecoder = new JSONDecoder(_arg1);
return (_local2.getValue());
}
public static function encode(_arg1:Object):String{
var _local2:JSONEncoder = new JSONEncoder(_arg1);
return (_local2.getString());
}
}
}//package com.adobe.serialization.json
Section 4
//JSONDecoder (com.adobe.serialization.json.JSONDecoder)
package com.adobe.serialization.json {
public class JSONDecoder {
private var value;
private var tokenizer:JSONTokenizer;
private var token:JSONToken;
public function JSONDecoder(_arg1:String){
tokenizer = new JSONTokenizer(_arg1);
nextToken();
value = parseValue();
}
private function parseObject():Object{
var _local2:String;
var _local1:Object = new Object();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
while (true) {
if (token.type == JSONTokenType.STRING){
_local2 = String(token.value);
nextToken();
if (token.type == JSONTokenType.COLON){
nextToken();
_local1[_local2] = parseValue();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting } or , but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting : but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting string but found " + token.value));
};
};
return (null);
}
private function parseValue():Object{
if (token == null){
tokenizer.parseError("Unexpected end of input");
};
switch (token.type){
case JSONTokenType.LEFT_BRACE:
return (parseObject());
case JSONTokenType.LEFT_BRACKET:
return (parseArray());
case JSONTokenType.STRING:
case JSONTokenType.NUMBER:
case JSONTokenType.TRUE:
case JSONTokenType.FALSE:
case JSONTokenType.NULL:
return (token.value);
default:
tokenizer.parseError(("Unexpected " + token.value));
};
return (null);
}
private function nextToken():JSONToken{
return ((token = tokenizer.getNextToken()));
}
public function getValue(){
return (value);
}
private function parseArray():Array{
var _local1:Array = new Array();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
while (true) {
_local1.push(parseValue());
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting ] or , but found " + token.value));
};
};
return (null);
}
}
}//package com.adobe.serialization.json
Section 5
//JSONEncoder (com.adobe.serialization.json.JSONEncoder)
package com.adobe.serialization.json {
import flash.utils.*;
public class JSONEncoder {
private var jsonString:String;
public function JSONEncoder(_arg1){
jsonString = convertToString(_arg1);
}
private function escapeString(_arg1:String):String{
var _local3:String;
var _local6:String;
var _local7:String;
var _local2 = "";
var _local4:Number = _arg1.length;
var _local5:int;
while (_local5 < _local4) {
_local3 = _arg1.charAt(_local5);
switch (_local3){
case "\"":
_local2 = (_local2 + "\\\"");
break;
case "\\":
_local2 = (_local2 + "\\\\");
break;
case "\b":
_local2 = (_local2 + "\\b");
break;
case "\f":
_local2 = (_local2 + "\\f");
break;
case "\n":
_local2 = (_local2 + "\\n");
break;
case "\r":
_local2 = (_local2 + "\\r");
break;
case "\t":
_local2 = (_local2 + "\\t");
break;
default:
if (_local3 < " "){
_local6 = _local3.charCodeAt(0).toString(16);
_local7 = ((_local6.length == 2)) ? "00" : "000";
_local2 = (_local2 + (("\\u" + _local7) + _local6));
} else {
_local2 = (_local2 + _local3);
};
};
_local5++;
};
return ((("\"" + _local2) + "\""));
}
private function arrayToString(_arg1:Array):String{
var _local2 = "";
var _local3:int;
while (_local3 < _arg1.length) {
if (_local2.length > 0){
_local2 = (_local2 + ",");
};
_local2 = (_local2 + convertToString(_arg1[_local3]));
_local3++;
};
return ((("[" + _local2) + "]"));
}
public function getString():String{
return (jsonString);
}
private function objectToString(_arg1:Object):String{
var value:Object;
var key:String;
var v:XML;
var o = _arg1;
var s = "";
var classInfo:XML = describeType(o);
if (classInfo.@name.toString() == "Object"){
for (key in o) {
value = o[key];
if ((value is Function)){
} else {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((escapeString(key) + ":") + convertToString(value)));
};
};
} else {
for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name])));
};
};
return ((("{" + s) + "}"));
}
private function convertToString(_arg1):String{
if ((_arg1 is String)){
return (escapeString((_arg1 as String)));
};
if ((_arg1 is Number)){
return ((isFinite((_arg1 as Number))) ? _arg1.toString() : "null");
} else {
if ((_arg1 is Boolean)){
return ((_arg1) ? "true" : "false");
} else {
if ((_arg1 is Array)){
return (arrayToString((_arg1 as Array)));
};
if ((((_arg1 is Object)) && (!((_arg1 == null))))){
return (objectToString(_arg1));
};
};
};
return ("null");
}
}
}//package com.adobe.serialization.json
Section 6
//JSONParseError (com.adobe.serialization.json.JSONParseError)
package com.adobe.serialization.json {
public class JSONParseError extends Error {
private var _location:int;
private var _text:String;
public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){
super(_arg1);
name = "JSONParseError";
_location = _arg2;
_text = _arg3;
}
public function get location():int{
return (_location);
}
public function get text():String{
return (_text);
}
}
}//package com.adobe.serialization.json
Section 7
//JSONToken (com.adobe.serialization.json.JSONToken)
package com.adobe.serialization.json {
public class JSONToken {
private var _value:Object;
private var _type:int;
public function JSONToken(_arg1:int=-1, _arg2:Object=null){
_type = _arg1;
_value = _arg2;
}
public function get value():Object{
return (_value);
}
public function get type():int{
return (_type);
}
public function set type(_arg1:int):void{
_type = _arg1;
}
public function set value(_arg1:Object):void{
_value = _arg1;
}
}
}//package com.adobe.serialization.json
Section 8
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer)
package com.adobe.serialization.json {
public class JSONTokenizer {
private var loc:int;
private var ch:String;
private var obj:Object;
private var jsonString:String;
public function JSONTokenizer(_arg1:String){
jsonString = _arg1;
loc = 0;
nextChar();
}
private function skipComments():void{
if (ch == "/"){
nextChar();
switch (ch){
case "/":
do {
nextChar();
} while (((!((ch == "\n"))) && (!((ch == "")))));
nextChar();
break;
case "*":
nextChar();
while (true) {
if (ch == "*"){
nextChar();
if (ch == "/"){
nextChar();
break;
};
} else {
nextChar();
};
if (ch == ""){
parseError("Multi-line comment not closed");
};
};
break;
default:
parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )"));
};
};
}
private function isDigit(_arg1:String):Boolean{
return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
}
private function readString():JSONToken{
var _local3:String;
var _local4:int;
var _local1:JSONToken = new JSONToken();
_local1.type = JSONTokenType.STRING;
var _local2 = "";
nextChar();
while (((!((ch == "\""))) && (!((ch == ""))))) {
if (ch == "\\"){
nextChar();
switch (ch){
case "\"":
_local2 = (_local2 + "\"");
break;
case "/":
_local2 = (_local2 + "/");
break;
case "\\":
_local2 = (_local2 + "\\");
break;
case "b":
_local2 = (_local2 + "\b");
break;
case "f":
_local2 = (_local2 + "\f");
break;
case "n":
_local2 = (_local2 + "\n");
break;
case "r":
_local2 = (_local2 + "\r");
break;
case "t":
_local2 = (_local2 + "\t");
break;
case "u":
_local3 = "";
_local4 = 0;
while (_local4 < 4) {
if (!isHexDigit(nextChar())){
parseError((" Excepted a hex digit, but found: " + ch));
};
_local3 = (_local3 + ch);
_local4++;
};
_local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16)));
break;
default:
_local2 = (_local2 + ("\\" + ch));
};
} else {
_local2 = (_local2 + ch);
};
nextChar();
};
if (ch == ""){
parseError("Unterminated string literal");
};
nextChar();
_local1.value = _local2;
return (_local1);
}
private function nextChar():String{
return ((ch = jsonString.charAt(loc++)));
}
public function getNextToken():JSONToken{
var _local2:String;
var _local3:String;
var _local4:String;
var _local1:JSONToken = new JSONToken();
skipIgnored();
switch (ch){
case "{":
_local1.type = JSONTokenType.LEFT_BRACE;
_local1.value = "{";
nextChar();
break;
case "}":
_local1.type = JSONTokenType.RIGHT_BRACE;
_local1.value = "}";
nextChar();
break;
case "[":
_local1.type = JSONTokenType.LEFT_BRACKET;
_local1.value = "[";
nextChar();
break;
case "]":
_local1.type = JSONTokenType.RIGHT_BRACKET;
_local1.value = "]";
nextChar();
break;
case ",":
_local1.type = JSONTokenType.COMMA;
_local1.value = ",";
nextChar();
break;
case ":":
_local1.type = JSONTokenType.COLON;
_local1.value = ":";
nextChar();
break;
case "t":
_local2 = ((("t" + nextChar()) + nextChar()) + nextChar());
if (_local2 == "true"){
_local1.type = JSONTokenType.TRUE;
_local1.value = true;
nextChar();
} else {
parseError(("Expecting 'true' but found " + _local2));
};
break;
case "f":
_local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar());
if (_local3 == "false"){
_local1.type = JSONTokenType.FALSE;
_local1.value = false;
nextChar();
} else {
parseError(("Expecting 'false' but found " + _local3));
};
break;
case "n":
_local4 = ((("n" + nextChar()) + nextChar()) + nextChar());
if (_local4 == "null"){
_local1.type = JSONTokenType.NULL;
_local1.value = null;
nextChar();
} else {
parseError(("Expecting 'null' but found " + _local4));
};
break;
case "\"":
_local1 = readString();
break;
default:
if (((isDigit(ch)) || ((ch == "-")))){
_local1 = readNumber();
} else {
if (ch == ""){
return (null);
};
parseError((("Unexpected " + ch) + " encountered"));
};
};
return (_local1);
}
private function skipWhite():void{
while (isWhiteSpace(ch)) {
nextChar();
};
}
public function parseError(_arg1:String):void{
throw (new JSONParseError(_arg1, loc, jsonString));
}
private function isWhiteSpace(_arg1:String):Boolean{
return ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r"))));
}
private function skipIgnored():void{
var _local1:int;
do {
_local1 = loc;
skipWhite();
skipComments();
} while (_local1 != loc);
}
private function isHexDigit(_arg1:String):Boolean{
var _local2:String = _arg1.toUpperCase();
return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
}
private function readNumber():JSONToken{
var _local1:JSONToken = new JSONToken();
_local1.type = JSONTokenType.NUMBER;
var _local2 = "";
if (ch == "-"){
_local2 = (_local2 + "-");
nextChar();
};
if (!isDigit(ch)){
parseError("Expecting a digit");
};
if (ch == "0"){
_local2 = (_local2 + ch);
nextChar();
if (isDigit(ch)){
parseError("A digit cannot immediately follow 0");
};
} else {
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
if (ch == "."){
_local2 = (_local2 + ".");
nextChar();
if (!isDigit(ch)){
parseError("Expecting a digit");
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
if ((((ch == "e")) || ((ch == "E")))){
_local2 = (_local2 + "e");
nextChar();
if ((((ch == "+")) || ((ch == "-")))){
_local2 = (_local2 + ch);
nextChar();
};
if (!isDigit(ch)){
parseError("Scientific notation number needs exponent value");
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
var _local3:Number = Number(_local2);
if (((isFinite(_local3)) && (!(isNaN(_local3))))){
_local1.value = _local3;
return (_local1);
};
parseError((("Number " + _local3) + " is not valid!"));
return (null);
}
}
}//package com.adobe.serialization.json
Section 9
//JSONTokenType (com.adobe.serialization.json.JSONTokenType)
package com.adobe.serialization.json {
public class JSONTokenType {
public static const NUMBER:int = 11;
public static const FALSE:int = 8;
public static const RIGHT_BRACKET:int = 4;
public static const NULL:int = 9;
public static const TRUE:int = 7;
public static const RIGHT_BRACE:int = 2;
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACKET:int = 3;
public static const STRING:int = 10;
public static const LEFT_BRACE:int = 1;
public static const COLON:int = 6;
}
}//package com.adobe.serialization.json
Section 10
//IntUtil (com.adobe.utils.IntUtil)
package com.adobe.utils {
public class IntUtil {
private static var hexChars:String = "0123456789abcdef";
public static function toHex(_arg1:int, _arg2:Boolean=false):String{
var _local4:int;
var _local5:int;
var _local3 = "";
if (_arg2){
_local4 = 0;
while (_local4 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15))));
_local4++;
};
} else {
_local5 = 0;
while (_local5 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15))));
_local5++;
};
};
return (_local3);
}
public static function ror(_arg1:int, _arg2:int):uint{
var _local3:int = (32 - _arg2);
return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3))));
}
public static function rol(_arg1:int, _arg2:int):int{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
}
}//package com.adobe.utils
Section 11
//FPS (com.lifeztream.debug.FPS)
package com.lifeztream.debug {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
import flash.geom.*;
import flash.system.*;
public class FPS extends Sprite {
private const BORDER:uint = 2;
private const INTERVALTIMES:uint = 4;
private const MAX_MEMORIES:uint = 800;
public var currentFPS:Number;
public var currentMemory:Number;
public var align:String;// = "left"
private var WIDTH:uint;// = 100
private var HEIGHT:uint;// = 60
private var _isExpand:Boolean;// = false
private var log:Array;
private var intervalID:uint;
private var IMAGE:Sprite;
private var TEXTFIELD:TextField;
private var count:uint;
private var median:uint;
private var timeElapsed:uint;
private var cTime:uint;
private var BITMAP:BitmapData;
private var bmptoadd:Bitmap;
private var rollOverText:Sprite;
public static const AUTHOR:String = "(c) 2006-2008 Copyright by Wissarut Pimanmassuriya | area80.net | lifeztream.com | wissarut@area80.net";
public static const VERSION:String = "1.3";
public static const ALIGN_LEFT:String = "left";
public static const ALIGN_RIGHT:String = "right";
public function FPS(_arg1:String="left"):void{
addEventListener(Event.ADDED_TO_STAGE, added);
addEventListener(Event.REMOVED_FROM_STAGE, kill);
align = _arg1;
reset();
}
private function added(_arg1:Event):void{
var _local2:TextFormat;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
median = stage.frameRate;
if (!IMAGE){
IMAGE = new Sprite();
addChildAt(IMAGE, 0);
};
initMouseEvents();
if (!TEXTFIELD){
TEXTFIELD = new TextField();
TEXTFIELD.autoSize = TextFieldAutoSize.LEFT;
_local2 = new TextFormat("Georgia", 10, 0x9E9E9E);
TEXTFIELD.x = BORDER;
TEXTFIELD.y = BORDER;
TEXTFIELD.defaultTextFormat = _local2;
TEXTFIELD.selectable = false;
addChildAt(TEXTFIELD, 1);
};
intervalID = setInterval(update, (1000 / INTERVALTIMES));
}
private function kill(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
BITMAP.dispose();
clearInterval(intervalID);
}
private function createRollOverText():void{
rollOverText = new Sprite();
var _local1:TextFormat = new TextFormat("Georgia", 11, 0x2E2E2E);
var _local2:TextField = new TextField();
_local2.autoSize = TextFieldAutoSize.LEFT;
_local2.defaultTextFormat = _local1;
_local2.background = true;
_local2.backgroundColor = 0x9E9E9E;
_local2.border = true;
_local2.borderColor = 0;
_local2.selectable = false;
_local2.text = "FPS Monitor by Lifeztream.com";
rollOverText.addChild(_local2);
}
private function initMouseEvents():void{
var mcEnterFrame:*;
createRollOverText();
mcEnterFrame = function (_arg1:Event){
if (align == FPS.ALIGN_LEFT){
_arg1.target.x = (_arg1.target.x + ((mouseX - _arg1.target.x) * 0.2));
} else {
if (align == FPS.ALIGN_RIGHT){
_arg1.target.x = (_arg1.target.x + (((mouseX - _arg1.target.x) - 160) * 0.2));
};
};
_arg1.target.y = (_arg1.target.y + (((mouseY - 20) - _arg1.target.y) * 0.2));
};
var bOver:* = function (_arg1:MouseEvent){
if (align == "left"){
rollOverText.x = mouseX;
} else {
if (align == "right"){
rollOverText.x = (mouseX - 160);
};
};
rollOverText.y = (IMAGE.mouseY - 20);
addChild(rollOverText);
rollOverText.addEventListener(Event.ENTER_FRAME, mcEnterFrame);
};
var bOut:* = function (_arg1:Event){
removeChild(rollOverText);
rollOverText.removeEventListener(Event.ENTER_FRAME, mcEnterFrame);
};
var bClick:* = function (_arg1:Event){
isExpand = !(isExpand);
};
addEventListener(MouseEvent.MOUSE_OVER, bOver);
addEventListener(MouseEvent.MOUSE_OUT, bOut);
addEventListener(MouseEvent.CLICK, bClick);
}
private function update():void{
currentFPS = (count * INTERVALTIMES);
currentMemory = System.totalMemory;
count = 0;
createLog();
drawData();
}
private function get isExpand():Boolean{
return (_isExpand);
}
private function set isExpand(_arg1:Boolean){
_isExpand = _arg1;
if (_arg1){
WIDTH = 200;
HEIGHT = 120;
} else {
WIDTH = 100;
HEIGHT = 60;
};
}
private function reset():void{
count = 0;
currentFPS = 0;
currentMemory = System.totalMemory;
log = new Array();
timeElapsed = 0;
cTime = 0;
}
private function onEnterFrame(_arg1:Event):void{
timeElapsed = (getTimer() - cTime);
cTime = getTimer();
count++;
}
private function drawData():void{
var _local6:int;
var _local7:Array;
if (BITMAP){
BITMAP.dispose();
};
var _local1:Matrix = new Matrix();
_local1.translate(BORDER, 20);
BITMAP = null;
BITMAP = new BitmapData(WIDTH, HEIGHT, false, 0x3E3E3E);
var _local2:BitmapData = new BitmapData((WIDTH - (BORDER * 2)), ((HEIGHT - BORDER) - 20), false, 0x121212);
var _local3:Bitmap = new Bitmap(_local2);
BITMAP.draw(_local3, _local1);
_local2.dispose();
BITMAP.setPixel((BORDER - 1), ((HEIGHT - BORDER) - getPointerHeight(stage.frameRate)), 0xFFFF);
var _local4:int;
var _local5:int;
if (log.length > ((WIDTH - (BORDER * 2)) / 2)){
_local5 = (log.length - ((WIDTH - (BORDER * 2)) / 2));
};
while (_local5 < log.length) {
_local7 = (log[_local5] as Array);
if (Number(_local7[0]) > (stage.frameRate * 0.7)){
_local6 = 0x7E00;
} else {
if (Number(_local7[0]) > (stage.frameRate * 0.5)){
_local6 = 16777088;
} else {
_local6 = 0xFF0000;
};
};
BITMAP.setPixel((BORDER + (_local4 * 2)), ((HEIGHT - BORDER) - getPointerHeight(Number(_local7[0]))), _local6);
BITMAP.setPixel(((BORDER + (_local4 * 2)) + 1), ((HEIGHT - BORDER) - getPointerMemoryHeight(Number(_local7[1]))), 0x4E4E4E);
_local5++;
_local4++;
};
bmptoadd = new Bitmap(BITMAP);
if (IMAGE.numChildren > 0){
IMAGE.removeChildAt(0);
};
IMAGE.addChildAt(bmptoadd, 0);
if (isExpand){
TEXTFIELD.text = (((((("FPS : " + currentFPS) + "/ TE : ") + timeElapsed) + " ms./ MemUse : ") + Math.round((currentMemory * 1E-5))) + " mb.");
} else {
TEXTFIELD.text = ((((("F.T.M " + currentFPS) + "/ ") + timeElapsed) + "/ ") + Math.round((currentMemory * 1E-5)));
};
if (parent == root){
if (align == FPS.ALIGN_LEFT){
if (stage.align.indexOf("L") != -1){
x = 0;
} else {
if (stage.align.indexOf("R") != -1){
x = (loaderInfo.width - stage.stageWidth);
} else {
x = ((loaderInfo.width - stage.stageWidth) * 0.5);
};
};
} else {
if (align == FPS.ALIGN_RIGHT){
if (stage.align.indexOf("L") != -1){
x = (stage.stageWidth - WIDTH);
} else {
if (stage.align.indexOf("R") != -1){
x = (loaderInfo.width - WIDTH);
} else {
x = ((loaderInfo.width - WIDTH) + ((stage.stageWidth - loaderInfo.width) * 0.5));
};
};
};
};
if (stage.align.indexOf("T") != -1){
y = 0;
} else {
if (stage.align.indexOf("B") != -1){
y = (loaderInfo.height - stage.stageHeight);
} else {
y = ((loaderInfo.height - stage.stageHeight) * 0.5);
};
};
};
}
private function getPointerHeight(_arg1:Number):uint{
return (Math.round((((HEIGHT - BORDER) - 20) * (_arg1 / (stage.frameRate + 10)))));
}
private function getPointerMemoryHeight(_arg1:Number):uint{
return (Math.round((((HEIGHT - BORDER) - 20) * (Math.round((_arg1 * 1E-5)) / MAX_MEMORIES))));
}
private function createLog():void{
if (log.length >= Math.floor(((WIDTH - (BORDER * 2)) * 0.5))){
log.shift();
};
log.push([currentFPS, currentMemory]);
}
public static function tostring():String{
return (("com.lifeztream.debug.FPS, version:" + VERSION));
}
}
}//package com.lifeztream.debug
Section 12
//APIConnector (com.newgrounds.components.APIConnector)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class APIConnector extends MovieClip {
private var _popDelay:Timer;
private var _initialized:Boolean;
private var _medalPopup:MedalPopup;
private var _movieId:String;
public var background:MovieClip;
public var closeButton:SimpleButton;
private var _showConnectingPopup:Boolean;// = true
public var viewLatestButton:SimpleButton;
private var _encryptionKey:String;
private var _useErrorPopup:Boolean;// = true
private var _movieVersion:String;
public var errorDialog:MovieClip;
public var viewAuthorizedButton:SimpleButton;
public function APIConnector(){
_popDelay = new Timer(3000, 1);
super();
addFrameScript(0, frame1, 6, frame7, 7, frame8);
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
useErrorPopup = true;
useMedalPopup = true;
_popDelay.addEventListener(TimerEvent.TIMER, errorTimerHandler);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
if (stage){
addEventListener(Event.RENDER, renderHandler);
stage.invalidate();
} else {
clear();
};
}
private function newVersionAvailableHandler(_arg1:APIEvent):void{
gotoAndStop("new_version");
visible = true;
centerOnStage();
}
private function hostBlockedHandler(_arg1:APIEvent):void{
gotoAndStop("bad_host");
visible = true;
centerOnStage();
}
public function get movieVersion():String{
return (_movieVersion);
}
private function closeButtonClickHandler(_arg1:Event):void{
clear();
}
public function set movieVersion(_arg1:String):void{
_movieVersion = _arg1;
}
public function get debugMode():Boolean{
return (API.debugMode);
}
public function get showConnectingPopup():Boolean{
return (_showConnectingPopup);
}
private function enterFrameHandler(_arg1:Event):void{
forceAlwaysOnTop();
}
private function officialVersionClickHandler(_arg1:Event):void{
API.loadOfficialVersion();
}
public function set showConnectingPopup(_arg1:Boolean):void{
_showConnectingPopup = _arg1;
if (((!(_arg1)) && ((((currentLabel == "connecting")) || ((currentLabel == "connected")))))){
clear();
};
}
public function set encryptionKey(_arg1:String):void{
_encryptionKey = _arg1;
}
public function set debugMode(_arg1:Boolean):void{
API.debugMode = true;
}
public function set useMedalPopup(_arg1:Boolean):void{
if (((_arg1) && (!(_medalPopup)))){
_medalPopup = new MedalPopup();
addChild(_medalPopup);
} else {
if (((!(_arg1)) && (_medalPopup))){
removeChild(_medalPopup);
_medalPopup = null;
};
};
}
private function forceAlwaysOnTop():void{
var myIndex:uint;
var topIndex:uint;
if (((parent) && (visible))){
try {
myIndex = parent.getChildIndex(this);
topIndex = (parent.numChildren - 1);
if (myIndex != topIndex){
parent.setChildIndex(this, topIndex);
};
} catch(e:Error) {
};
};
}
public function clear():void{
gotoAndStop("idle");
}
private function movieConnectedHandler(_arg1:APIEvent):void{
if (_arg1.success){
if (((((((API.isPublishedHost()) && (API.IsCompatible()))) && (!(API.hasUserSession())))) && (!(API.debugMode)))){
gotoAndStop("no_login");
_popDelay.start();
visible = true;
} else {
if (showConnectingPopup){
gotoAndStop("connected");
};
};
} else {
gotoAndStop("no_connect");
_popDelay.start();
visible = true;
};
}
private function renderHandler(_arg1:Event):void{
removeEventListener(Event.RENDER, renderHandler);
clear();
connect();
}
public function set useErrorPopup(_arg1:Boolean):void{
_useErrorPopup = _arg1;
API.addEventListener(APIEvent.API_CONNECTED, movieConnectedHandler);
if (_useErrorPopup){
API.addEventListener(APIEvent.NEW_VERSION_AVAILABLE, newVersionAvailableHandler);
API.addEventListener(APIEvent.HOST_BLOCKED, hostBlockedHandler);
} else {
API.removeEventListener(APIEvent.NEW_VERSION_AVAILABLE, newVersionAvailableHandler);
API.removeEventListener(APIEvent.HOST_BLOCKED, hostBlockedHandler);
};
}
private function centerOnStage():void{
if (stage){
x = (stage.stageWidth / 2);
y = (stage.stageHeight / 2);
};
}
public function set movieId(_arg1:String):void{
_movieId = _arg1;
}
public function get encryptionKey():String{
return (_encryptionKey);
}
private function initButtons():void{
if (viewLatestButton){
viewLatestButton.addEventListener(MouseEvent.CLICK, officialVersionClickHandler);
};
if (viewAuthorizedButton){
viewAuthorizedButton.addEventListener(MouseEvent.CLICK, officialVersionClickHandler);
};
if (closeButton){
closeButton.addEventListener(MouseEvent.CLICK, closeButtonClickHandler);
};
}
public function connect():void{
API.setVersion(_movieVersion);
API.connect(root.loaderInfo, _movieId, _encryptionKey);
visible = true;
if (showConnectingPopup){
gotoAndStop("connecting");
};
}
public function get useErrorPopup():Boolean{
return (_useErrorPopup);
}
private function errorTimerHandler(_arg1:TimerEvent):void{
if (errorDialog){
errorDialog.gotoAndPlay("closeme");
} else {
clear();
};
}
function frame7(){
initButtons();
}
public function get movieId():String{
return (_movieId);
}
public function get useMedalPopup():Boolean{
return (!((_medalPopup == null)));
}
function frame8(){
initButtons();
}
function frame1(){
stop();
}
}
}//package com.newgrounds.components
Section 13
//FlashAd (com.newgrounds.components.FlashAd)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class FlashAd extends Sprite {
private var _adURLLoader:URLLoader;
private var _ad:Loader;
private var _adRect:Sprite;
private var _mask:Shape;
private var _showBackground:Boolean;
public var background:MovieClip;
private static const REMOVED_FROM_STAGE:String = "removedFromStage";
private static const DEBUG_AD_URL:String = "http://www.ngads.com/adtest.php";
private static var _adResetTime:uint = 0;
private static var _adURL:URLRequest;
public function FlashAd(_arg1:Boolean=true){
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
_adRect = new Sprite();
_adRect.graphics.beginFill(0);
_adRect.graphics.moveTo(0, 0);
_adRect.graphics.lineTo(300, 0);
_adRect.graphics.lineTo(300, 250);
_adRect.graphics.lineTo(0, 250);
_adRect.graphics.lineTo(0, 0);
_adRect.graphics.endFill();
_mask = new Shape();
_mask.graphics.beginFill(0);
_mask.graphics.moveTo(0, 0);
_mask.graphics.lineTo(300, 0);
_mask.graphics.lineTo(300, 250);
_mask.graphics.lineTo(0, 250);
_mask.graphics.lineTo(0, 0);
_mask.graphics.endFill();
addChild(_adRect);
_adRect.addChild(_mask);
_adRect.visible = false;
x = Math.round(x);
y = Math.round(y);
scaleX = 1;
scaleY = 1;
if (background){
if (background.ngLinkButton){
background.ngLinkButton.addEventListener(MouseEvent.CLICK, linkClickHandler);
};
if (background.loadingClip){
background.loadingClip.visible = false;
};
};
if (API.isFlashVersion(9, 0, 28)){
addEventListener(REMOVED_FROM_STAGE, onRemovedFromStage);
};
if (API.adsApproved){
loadAdFeed(API.adFeedURL);
} else {
API.addEventListener(APIEvent.ADS_APPROVED, onAdsApproved, false, 0, true);
};
this.showBackground = _arg1;
}
private function onAdFeedLoaded(_arg1:Event):void{
var _local2:URLLoader = URLLoader(_arg1.target);
if (((_local2.data) && (!((_local2.data == ""))))){
loadAd((_local2.data as String));
} else {
dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad")));
if (((background) && (background.loadingClip))){
background.loadingClip.visible = false;
};
};
}
private function onAdFeedError(_arg1:Event):void{
trace("[NewgroundsAPI] :: Unable to load ad feed!");
if (((background) && (background.loadingClip))){
background.loadingClip.visible = false;
};
}
private function onAdError(_arg1:Event):void{
dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad")));
removeAd();
}
private function onAdLoaded(_arg1:Event):void{
_adRect.addChild(_ad);
_ad.mask = _mask;
_adRect.visible = true;
if (background){
if (_showBackground){
_adRect.mask = background.adMask;
};
if (background.loadingClip){
background.loadingClip.visible = false;
};
};
trace("[NewgroundsAPI] :: Ad loaded!");
dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, true));
}
public function get showBackground():Boolean{
return (_showBackground);
}
public function set showBackground(_arg1:Boolean):void{
_showBackground = _arg1;
if (background){
background.visible = _arg1;
_adRect.mask = (_arg1) ? background.adMask : null;
};
}
private function get hasAdElapsed():Boolean{
if (getTimer() >= _adResetTime){
_adResetTime = (getTimer() + ((1000 * 60) * 5));
return (true);
};
return (false);
}
private function loadAdFeed(_arg1:String):void{
var adFeedURL = _arg1;
_adURLLoader = new URLLoader();
_adURLLoader.addEventListener(Event.COMPLETE, onAdFeedLoaded);
_adURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onAdError);
_adURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onAdError);
if (!adFeedURL){
trace("[Newgrounds API] :: Invalid feed URL!");
return;
};
if (hasAdElapsed){
if (adFeedURL.indexOf("?") > -1){
_adURL = new URLRequest(((adFeedURL + "&random=") + Math.random()));
} else {
_adURL = new URLRequest(((adFeedURL + "?random=") + Math.random()));
};
};
try {
_adURLLoader.load(_adURL);
} catch(e:Error) {
onAdError(null);
};
if (((background) && (background.loadingClip))){
background.loadingClip.visible = true;
};
}
private function onAdsApproved(_arg1:APIEvent):void{
API.removeEventListener(APIEvent.ADS_APPROVED, onAdsApproved, false);
if (_arg1.success){
loadAdFeed(API.adFeedURL);
} else {
trace("[NewgroundsAPI] :: No ad feed URL supplied to Newgrounds API ad!");
};
}
private function loadAd(_arg1:String):void{
if (_ad){
removeAd();
};
_ad = new Loader();
_ad.contentLoaderInfo.addEventListener(Event.COMPLETE, onAdLoaded);
_ad.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onAdError);
_ad.load(new URLRequest(_arg1), new LoaderContext(false, new ApplicationDomain(null)));
if (((background) && (background.loadingClip))){
background.loadingClip.visible = true;
};
}
public function removeAd():void{
removeEventListener(REMOVED_FROM_STAGE, onRemovedFromStage);
if (((background) && (background.loadingClip))){
background.loadingClip.visible = false;
};
if (_adURLLoader){
try {
_adURLLoader.close();
} catch(e:Error) {
};
};
if (_adRect){
_adRect.visible = false;
};
if (_ad){
trace("[NewgroundsAPI] :: Ad removed");
try {
_ad.close();
} catch(e:Error) {
};
try {
Object(_ad).unloadAndStop(true);
} catch(e:Error) {
_ad.unload();
};
if (_ad.parent){
_ad.parent.removeChild(_ad);
};
};
_ad = null;
}
private function onRemovedFromStage(_arg1:Event):void{
removeAd();
}
private function linkClickHandler(_arg1:MouseEvent):void{
API.loadNewgrounds();
}
}
}//package com.newgrounds.components
Section 14
//MedalPopup (com.newgrounds.components.MedalPopup)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class MedalPopup extends MovieClip {
public var medalValueText:TextField;
public var medalContainer:Sprite;
private var _popDelay:Timer;
private var _initialized:Boolean;
private var _medalIcon:Bitmap;
public var medalNameText:TextField;
private var _medal:Medal;
private var _medalQueue:Array;
public function MedalPopup(){
_medalQueue = [];
_popDelay = new Timer(3000, 1);
super();
addFrameScript(0, frame1, 9, frame10, 18, frame19);
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
visible = false;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stop();
API.addEventListener(APIEvent.MEDAL_UNLOCKED, onMedalUnlocked, false, 0, true);
_popDelay.addEventListener(TimerEvent.TIMER, timerHandler);
}
private function timerHandler(_arg1:TimerEvent):void{
if (((_medalIcon) && (_medalIcon.parent))){
_medalIcon.parent.removeChild(_medalIcon);
_medalIcon = null;
};
gotoAndPlay("medal_hide");
_popDelay.stop();
}
private function showMedalInfo():void{
if (!_medal){
return;
};
if (medalContainer){
_medalIcon = _medal.createIconBitmap();
medalContainer.addChild(_medalIcon);
};
if (medalNameText){
medalNameText.text = _medal.name;
};
if (medalValueText){
medalValueText.text = (_medal.value.toString() + "pts");
};
_popDelay.start();
stop();
}
function frame10(){
showMedalInfo();
stop();
}
public function get popupTime():Number{
return ((_popDelay.delay / 1000));
}
private function onMedalUnlocked(_arg1:APIEvent):void{
if (((((_arg1.success) && (_arg1.data))) && ((_arg1.data is Medal)))){
_medalQueue.push(Medal(_arg1.data));
};
}
private function enterFrameHandler(_arg1:Event):void{
var myIndex:uint;
var topIndex:uint;
var event = _arg1;
if (((_medalQueue.length) && (!(visible)))){
_medal = _medalQueue.pop();
_popDelay.start();
gotoAndPlay("medal_show");
visible = true;
};
if (((visible) && (parent))){
try {
myIndex = parent.getChildIndex(this);
topIndex = (parent.numChildren - 1);
if (myIndex != topIndex){
parent.setChildIndex(this, topIndex);
};
} catch(error:Error) {
};
};
}
function frame1(){
stop();
}
function frame19(){
stop();
visible = false;
}
public function set popupTime(_arg1:Number):void{
if (isNaN(_arg1)){
_arg1 = 3;
};
_popDelay.delay = (_arg1 * 1000);
}
}
}//package com.newgrounds.components
Section 15
//PreloaderBar (com.newgrounds.components.PreloaderBar)
package com.newgrounds.components {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class PreloaderBar extends MovieClip {
private var _autoPlay:Boolean;// = false
public var playButton:DisplayObject;
public var bar:DisplayObject;
public function PreloaderBar(){
addFrameScript(51, frame52);
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
gotoAndStop("LOAD");
if (bar){
bar.scaleX = 0;
};
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function playButtonClicked(_arg1:MouseEvent):void{
startMovie();
}
public function get autoPlay():Boolean{
return (_autoPlay);
}
public function set autoPlay(_arg1:Boolean):void{
_autoPlay = _arg1;
}
public function onPlayButtonClicked(_arg1:MouseEvent):void{
startMovie();
}
function frame52(){
stop();
if (this.playButton){
this.playButton.addEventListener(MouseEvent.CLICK, onPlayButtonClicked);
} else {
startMovie();
};
}
private function startMovie():void{
if (((root) && ((root is MovieClip)))){
MovieClip(root).play();
};
dispatchEvent(new Event(Event.COMPLETE));
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:Number;
if (((root) && (root.loaderInfo))){
if ((root is MovieClip)){
MovieClip(root).stop();
};
_local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
if (bar){
bar.scaleX = _local2;
};
if (_local2 == 1){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
if (autoPlay){
startMovie();
} else {
gotoAndPlay("COMPLETE_STOP");
};
};
};
}
private function playButtonReady():void{
stop();
if (playButton){
playButton.addEventListener(MouseEvent.CLICK, playButtonClicked);
} else {
startMovie();
};
}
}
}//package com.newgrounds.components
Section 16
//API (com.newgrounds.API)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import com.newgrounds.components.*;
import com.adobe.serialization.json.*;
import flash.net.*;
import com.adobe.crypto.*;
import com.adobe.images.*;
import flash.system.*;
public class API {
private static const COMMANDS_WIKI_URL:String = "http://www.newgrounds.com/wiki/flashapi/commands/";
private static const AD_TERMS_URL:String = "http://www.newgrounds.com/wiki/flashads/terms/";
private static const GATEWAY_URL:String = "http://www.ngads.com/gateway_v2.php";
public static const VERSION:String = "2.3";
private static var connected:Boolean;
private static var user_id:uint;
private static var _preloadComplete:Boolean = false;
private static var user_email:String;
private static var _movieId:String;
private static var _saveFileId:uint;
private static var _isMetadataLoaded:Boolean = false;
private static var publisher_id:uint;
private static var _imageFilePath:String;
private static var _saveFilePath:String;
private static var ad_url:String;
private static var _debug:Boolean = true;
private static var _saveGroups:Array = [];
private static var do_echo:Boolean = false;
private static var session_id:String;
public static var errors:Dictionary = APIError.init_codes();
private static var timeoutTimer:Timer = new Timer(8000, 1);
private static var _medals:Array;
private static var user_name:String;
private static var period_aliases:Object = {t:{name:"Today", alias:"TODAY"}, p:{name:"Yesterday", alias:"YESTERDAY"}, w:{name:"This Week", alias:"THIS_WEEK"}, m:{name:"This Month", alias:"THIS_MONTH"}, y:{name:"This Year", alias:"THIS_YEAR"}, a:{name:"All-Time", alias:"ALL_TIME"}};
private static var _host:String;
private static var _connected:Boolean = false;
private static var _userpageFormat:String;
private static var _scoreboards:Array = new Array();
private static var _eventDispatcher:EventDispatcher = new EventDispatcher();
private static var compressor:BaseN = new BaseN(compression_radix);
private static var score_page_counts:Object = new Object();
private static var _adsApproved:Boolean = false;
private static var version:String;
public static var periods:Object = getPeriodAliases();
private static var _encryptionKey:String;
private static var root:DisplayObject;
private static var compression_radix:String = "/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X";
private static var _preloadAssets:Array = [];
private static var sharedObjects:Dictionary = new Dictionary();
private static var _trackerId:uint;
private static var _saveFile:SaveFile;
private static var userpage_format:String;
private static var _saveGroupId:uint;
public static function loadUserPage(_arg1:uint=0, _arg2:String=null):Boolean{
var _local3:String;
if ((((_arg1 == 0)) && ((_arg2 == null)))){
if (hasUserSession()){
_arg1 = user_id;
_arg2 = user_name;
} else {
return (false);
};
};
if (publisher_id == 1){
_local3 = (("http://" + _arg2.toLowerCase()) + ".newgrounds.com");
navigateToURL(new URLRequest(_local3), "_blank");
return (true);
};
if (userpage_format){
_local3 = userpage_format;
_local3 = _local3.split(":user_id:").join(_arg1.toString());
_local3 = _local3.split(":user_name:").join(escape(_arg2));
navigateToURL(new URLRequest(_local3), "_blank");
return (true);
};
return (false);
}
public static function getPeriodAlias(_arg1:String):String{
var _local2:String;
for (_local2 in period_aliases) {
if (_local2 == _arg1){
return (period_aliases[_local2].alias);
};
};
return (null);
}
private static function onCommandError(_arg1:Event):void{
var _local2:SmartURLLoader = SmartURLLoader(_arg1.target);
var _local3:uint;
while (_local3 < _preloadAssets.length) {
if (_preloadAssets[_local3] == _local2){
_preloadAssets.splice(_local3, 1);
break;
};
_local3++;
};
}
private static function sendWarning(_arg1:String, _arg2:String=null):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n[NewgroundsAPI WARNING] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(("[NewgroundsAPI WARNING] :: " + _arg1));
}
public static function unlockMedal(_arg1:String):void{
var _local3:Object;
var _local4:Object;
if (((!(_arg1)) || ((_arg1 == "")))){
sendError({command_id:getCommandID("unlockMedal")}, new APIError("MISSING_PARAM", "missing required medal name"));
return;
};
var _local2:Medal = getMedalByName(_arg1);
if (!_local2){
sendMessage(("No medal with name: " + _arg1));
return;
};
if (((hasUserSession()) || (debugMode))){
sendMessage((("Attempting to unlock '" + _local2.name) + "'"));
if (_local2.unlocked){
sendWarning((("Medal '" + _local2.name) + "' is already unlocked!"));
return;
};
_local3 = new Object();
_local3.medal_id = _local2.id;
sendSecureCommand("unlockMedal", _local3);
} else {
sendMessage(("Locally unlocking " + _local2.name));
if (_local2.unlocked){
sendWarning((("Medal '" + _local2.name) + "' is already unlocked!"));
return;
};
_local2.unlocked = true;
_local4 = loadLocal("medals_unlocked");
if (!_local4){
_local4 = new Object();
};
_local4[_local2.id.toString()] = true;
saveLocal("medals_unlocked", _local4);
callListener(APIEvent.MEDAL_UNLOCKED, true, _local2);
};
}
public static function setVersion(_arg1:String):void{
if (((_arg1) && (!((_arg1 == ""))))){
version = _arg1;
};
}
public static function isFlashVersion(_arg1:uint, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0):Boolean{
var _local6:Array = Capabilities.version.split(" ")[1].split(",");
var _local7:Array = arguments;
var _local8:uint;
while (_local8 < _local7.length) {
_local6[_local8] = uint(_local6[_local8]);
_local8++;
};
_local8 = 0;
while (_local8 < _local7.length) {
if (_local6[_local8] > _local7[_local8]){
return (true);
};
if (_local6[_local8] < _local7[_local8]){
return (false);
};
_local8++;
};
return (true);
}
public static function getUserID():uint{
return (user_id);
}
private static function getHost():String{
return (_host);
}
public static function hasUserEmail():Boolean{
return (((!((user_email == null))) && (!((user_email == "")))));
}
private static function uncompressHex(_arg1:String):String{
var _local4:uint;
var _local6:String;
var _local7:uint;
var _local8:String;
var _local2:uint = uint(_arg1.charAt(0));
var _local3 = "";
var _local5:uint = 1;
while (_local5 < _arg1.length) {
_local6 = _arg1.substr(_local5, 4);
_local7 = uint(compressor.decode(_local6));
_local8 = _local7.toString(16);
if ((_local5 + 4) < _arg1.length){
_local4 = 6;
} else {
_local4 = _local2;
};
while (_local8.length < _local4) {
_local8 = ("0" + _local8);
};
_local3 = (_local3 + _local8);
_local5 = (_local5 + 4);
};
return (_local3);
}
public static function getMedalByName(_arg1:String):Medal{
var _local2:Medal;
for each (_local2 in _medals) {
if (_local2.name == _arg1){
return (_local2);
};
};
return (null);
}
private static function callListener(_arg1:String, _arg2:Boolean=true, _arg3=undefined):void{
dispatchEvent(new APIEvent(_arg1, _arg2, _arg3));
}
public static function loadLocal(_arg1:String):Object{
var sharedObj:SharedObject;
var save_id = _arg1;
try {
if (!sharedObjects[save_id]){
sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id));
};
sharedObj = sharedObjects[save_id];
if (((((sharedObj) && (sharedObj.data))) && (sharedObj.data[save_id]))){
return (decodeData(sharedObj.data[save_id]));
} else {
return (null);
};
} catch(e:Error) {
sendWarning(("loadLocal ERROR: " + e));
};
return (null);
}
private static function populateScoreBoards(_arg1:Array):void{
_scoreboards = [];
var _local2:uint;
while (_local2 < _arg1.length) {
_scoreboards.push(new ScoreBoard(_arg1[_local2].id, _arg1[_local2].name, ""));
_local2++;
};
}
public static function set debugMode(_arg1:Boolean):void{
_debug = _arg1;
}
public static function createAd():FlashAd{
sendMessage("You may see a security sandbox violation. This is normal!");
return (new FlashAd());
}
private static function populateSaveGroups(_arg1:Array):void{
var _local3:SaveGroup;
_saveGroups = [];
var _local2:uint;
while (_local2 < _arg1.length) {
_local3 = SaveGroup.createFromObject(_arg1[_local2]);
_saveGroups.push(_local3);
_local2++;
};
}
public static function getSaveGroupById(_arg1:uint):SaveGroup{
if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){
sendWarning("No save groups found");
return (null);
};
var _local2:uint;
while (_local2 < _saveGroups.length) {
if (_saveGroups[_local2].id == _arg1){
return (_saveGroups[_local2]);
};
_local2++;
};
return (null);
}
private static function dispatchEvent(_arg1:Event):void{
_eventDispatcher.dispatchEvent(_arg1);
echo(("Fired Event: " + _arg1.type));
}
public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:uint=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public static function get adFeedURL():String{
return (ad_url);
}
public static function setUserEmail(_arg1:String):void{
user_email = _arg1;
}
public static function hasUserSession():Boolean{
return (((((!((session_id == null))) && (!((session_id == ""))))) && (!((publisher_id == 0)))));
}
private static function echo(_arg1:String):void{
if (do_echo){
trace(_arg1);
};
}
public static function getOfficialURL():String{
var _local1:String = ((((((GATEWAY_URL + "?tracker_id=") + _movieId) + "&command_id=") + getCommandID("loadOfficalVersion")) + "&seed=") + Math.random());
if (debugMode){
_local1 = (_local1 + "&debug=1");
};
return (_local1);
}
public static function executeSaveQuery(_arg1:SaveGroupQuery):void{
sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.groupId, query:JSON.encode(_arg1.toObject())}, false, null, _arg1);
trace(JSON.encode(_arg1.toObject()));
}
public static function getScoreBoardById(_arg1:uint):ScoreBoard{
var _local2:ScoreBoard;
for each (_local2 in _scoreboards) {
if (_local2.id == _arg1){
return (_local2);
};
};
return (null);
}
private static function getPeriodAliases():Object{
var _local2:String;
var _local1:Object = new Object();
for (_local2 in period_aliases) {
_local1[period_aliases[_local2].alias] = _local2;
};
return (_local1);
}
private static function compressHex(_arg1:String):String{
var _local2:uint = (_arg1.length % 6);
var _local3 = "";
var _local4:uint;
while (_local4 < _arg1.length) {
_local3 = (_local3 + compressor.encode(uint(("0x" + _arg1.substr(_local4, 6))), 4));
_local4 = (_local4 + 6);
};
return ((_local2.toString() + _local3));
}
public static function get preloadComplete():Boolean{
return (_preloadComplete);
}
private static function assertConnected():Boolean{
if (!_connected){
return (false);
};
return (true);
}
public static function sendSecureCommand(_arg1:String, _arg2:Object, _arg3:Object=null, _arg4:Object=null, _arg5=null):void{
if (((((!(debugMode)) && (!(hasUserSession())))) && (!(hasUserEmail())))){
sendError({command_id:getCommandID(_arg1)}, new APIError("IDENTIFICATION_REQUIRED", (("You must be logged in or provide an e-mail address ( using NewgroundsAPI.setUserEmail(\"name@domain.com\"); ) to use " + _arg1) + "().")));
return;
};
if (!_arg1){
fatalError("Missing command", "sendSecureCommand");
};
if (!_arg2){
fatalError("Missing secure_params", "sendSecureCommand");
};
if (!_arg3){
_arg3 = new Object();
};
var _local6 = "";
var _local7:uint;
while (_local7 < 16) {
_local6 = (_local6 + compression_radix.charAt(Math.floor((Math.random() * compression_radix.length))));
_local7++;
};
if (((debugMode) && (!(session_id)))){
_arg2.session_id = "";
} else {
_arg2.session_id = session_id;
};
_arg2.as_version = 3;
_arg2.user_email = user_email;
_arg2.publisher_id = publisher_id;
_arg2.seed = _local6;
_arg2.command_id = getCommandID(_arg1);
var _local8:String = MD5.hash(_local6);
var _local9:String = RC4.encrypt(JSON.encode(_arg2), _encryptionKey);
var _local10:String = (_local8 + _local9);
_arg3.secure = compressHex(_local10);
sendCommand("securePacket", _arg3, false, _arg4, _arg5);
}
private static function sendError(_arg1:Object, _arg2:APIError):void{
trace(((((("[NewgroundsAPI ERROR] :: " + getCommandName(_arg1.command_id)) + "() - ") + _arg2.name) + ":\n\t\t\t\t") + _arg2.message));
}
public static function getUserName():String{
return (user_name);
}
private static function getCommandName(_arg1:String):String{
return (_arg1);
}
public static function sendMessage(_arg1:String, _arg2:Boolean=false):void{
var _local3:String = ("[NewgroundsAPI] :: " + _arg1);
trace(_local3);
}
public static function newSaveFile(_arg1:String):SaveFile{
var _local2:SaveGroup = getSaveGroupByName(_arg1);
if (_local2){
return (new SaveFile(_local2));
};
sendError({command_id:"newSaveFile"}, new APIError("INVALID_SAVE_GROUP", (("'" + _local2) + "' is not a valid save group.")));
return (null);
}
public static function get medals():Array{
return ((_medals) ? _medals.concat() : []);
}
public static function connectionTimeOut(_arg1:Event=null):void{
dispatchEvent(new APIEvent(APIEvent.API_CONNECTED, false, new APIError("CONNECTION_FAILED", "Connection to NewgroundsAPI gateway timed out.")));
}
private static function fatalError(_arg1:String, _arg2:String):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n\tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
throw (new Error(("***ERROR*** class=API\n\n" + _arg1)));
}
public static function getScoreBoardByName(_arg1:String):ScoreBoard{
var _local2:ScoreBoard;
for each (_local2 in _scoreboards) {
if (_local2.name == _arg1){
return (_local2);
};
};
return (null);
}
private static function sendNotice(_arg1:String, _arg2:String=null):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n[NewgroundsAPI NOTICE] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(("[NewgroundsAPI NOTICE] :: " + _arg1));
}
public static function get debugMode():Boolean{
return (_debug);
}
public static function loadCustomLink(_arg1:String):void{
sendCommand("loadCustomLink", {host:getHost(), link:_arg1}, true);
}
public static function loadMySite():void{
sendCommand("loadMySite", {host:getHost()}, true);
}
public static function getTrackerID():uint{
return (_trackerId);
}
public static function get adsApproved():Boolean{
return (_adsApproved);
}
private static function sendCommand(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Object=null, _arg5=null):void{
var _local7:String;
var _local8:String;
var _local9:String;
if (((!(connected)) && (!((_arg1 == "connectMovie"))))){
_local7 = (("NewgroundsAPI." + _arg1) + "() - NewgroundsAPI.connectMovie() must be called before this command can be called\n");
fatalError(_local7, "connectMovie");
};
var _local6:SmartURLLoader = new SmartURLLoader();
_local6.addVariable("command_id", getCommandID(_arg1));
_local6.addVariable("tracker_id", _movieId);
if (debugMode){
_local6.addVariable("debug", 1);
};
if (_arg2){
for (_local8 in _arg2) {
_local6.addVariable(_local8, _arg2[_local8]);
};
};
if (_arg4){
for (_local9 in _arg4) {
_local6.addFile(_local9, _arg4[_local9], _local9);
};
};
if (_arg3){
_local6.method = URLRequestMethod.GET;
} else {
_local6.method = URLRequestMethod.POST;
};
_local6.preventCache = true;
if (_arg3){
_local6.openBrowser = true;
_local6.method = URLRequestMethod.GET;
} else {
_local6.addEventListener(Event.COMPLETE, onCommandComplete);
_local6.addEventListener(IOErrorEvent.IO_ERROR, onCommandError);
_local6.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onCommandError);
_local6.method = URLRequestMethod.POST;
};
_local6.owner = _arg5;
_local6.load(GATEWAY_URL);
}
public static function checkFilePrivledges(_arg1:SaveFile):void{
sendCommand("checkFilePrivs", {group:_arg1.groupId, filename:_arg1.name, user_id:(user_id) ? user_id : 0, publisher_id:publisher_id});
}
public static function isPublishedHost():Boolean{
return (((!((getHost() == "localhost"))) && ((getHost().indexOf("file://") == -1))));
}
public static function loadOfficialVersion():void{
navigateToURL(new URLRequest(getOfficialURL()));
}
public static function createSaveQuery(_arg1:String):SaveGroupQuery{
var _local2:SaveGroup = getSaveGroupByName(_arg1);
if (_local2){
return (_local2.createQuery());
};
return (null);
}
public static function saveFile(_arg1:SaveFile, _arg2:Boolean=false):void{
var _local3:Object = _arg1.toObject();
_local3.user_name = user_name;
_local3.overwrite = (_arg2) ? 1 : 0;
var _local4:ByteArray = new ByteArray();
if ((_arg1.contents is ByteArray)){
_local4.writeByte(0);
_local4.writeBytes(_arg1.contents);
} else {
_local4.writeByte(1);
_local4.writeObject(_arg1.contents);
};
_local4.compress();
var _local5:Object = new Object();
_local5.file = _local4;
if (_arg1.thumbnail){
_local5.thumbnail = PNGEncoder.encode(_arg1.thumbnail);
};
sendSecureCommand("saveFile", _local3, null, _local5, _arg1);
}
public static function getMedalById(_arg1:uint):Medal{
var _local2:Medal;
for each (_local2 in _medals) {
if (_local2.id == _arg1){
return (_local2);
};
};
return (null);
}
public static function loadSaveFile(_arg1:Number, _arg2:Boolean=true){
var _local3:Object = {publisher_id:publisher_id, save_id:_arg1, get_contents:_arg2};
sendCommand("loadSaveFile", _local3);
}
public static function loadNewgrounds():void{
sendCommand("loadNewgrounds", {host:getHost()}, true);
}
public static function rateSaveFile(_arg1:SaveFile, _arg2:SaveRating, _arg3:Number):void{
sendSecureCommand("rateSaveFile", {group:_arg1.groupId, save_id:_arg1.id, rating_id:_arg2.id, vote:_arg3, user_id:user_id}, null, null, _arg1);
}
public static function IsCompatible():Boolean{
return (!((publisher_id == 0)));
}
public static function loadScores(_arg1:ScoreBoard, _arg2:String=null):void{
var _local3 = "loadScores";
if (!_arg1.id){
sendError({command_id:getCommandID(_local3)}, new APIError("MISSING_PARAM", "missing required ScoreBoard instance"));
return;
};
if (!hasUserSession()){
callListener(APIEvent.SCORES_LOADED, false, new APIError("SITE_ID_REQUIRED", (("Host '" + getHost()) + "' does not have high scores enabled")));
return;
};
var _local4:Object = {};
_local4.publisher_id = publisher_id;
_local4.period = _arg1.period;
_local4.board = _arg1.id;
_local4.num_results = _arg1.num_results;
_local4.page = _arg1.page;
if (((!(_arg2)) || ((_arg2 == "")))){
_local4.tag = _arg1.tag;
} else {
_local4.tag = _arg2;
};
sendCommand(_local3, _local4);
}
public static function logCustomEvent(_arg1:String):void{
sendCommand("logCustomEvent", {host:getHost(), event:_arg1});
}
public static function decodeData(_arg1:String){
return (JSON.decode(RC4.decrypt(uncompressHex(_arg1), _encryptionKey)));
}
public static function postScore(_arg1:String, _arg2:uint, _arg3:String=""):void{
if (((!(_arg1)) || ((_arg1 == "")))){
sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)"));
return;
};
if (_arg3 == null){
_arg3 = "";
};
sendSecureCommand("postScore", {user_name:user_name, board:_arg1, value:_arg2, publisher_id:publisher_id, tag:_arg3});
}
private static function onCommandComplete(_arg1:Event):void{
var _local4:Object;
var _local5:APIError;
var _local2:SmartURLLoader = SmartURLLoader(_arg1.target);
echo((("INPUT: \n" + _local2.response) + "\n"));
var _local3:uint;
while (_local3 < _preloadAssets.length) {
if (_preloadAssets[_local3] == _local2){
_preloadAssets.splice(_local3, 1);
break;
};
_local3++;
};
if (_local2.response){
_local4 = JSON.decode(_local2.response);
} else {
_local4 = {success:false};
};
if (!_local4.success){
trace(("Error: " + _local4));
_local5 = new APIError(_local4.error_code, _local4.error_msg);
sendError(_local4, _local5);
} else {
_local4.owner = _local2.owner;
doEvent(_local4);
};
}
public static function encodeData(_arg1:Object):String{
return (compressHex(RC4.encrypt(JSON.encode(_arg1), _encryptionKey)));
}
private static function populateMedals(_arg1:Array):void{
var _local2:uint;
var _local3:Object;
if (_medals === null){
_medals = new Array();
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
_medals.push(Medal.createFromObject(_local3));
_local2++;
};
};
trace("[NewgroundsAPI] :: Medals loaded!");
}
private static function doEvent(_arg1:Object):void{
var _local2:String;
var _local3:Object;
var _local4:String;
var _local5:Boolean;
var _local6:ScoreBoard;
var _local7:SaveFile;
var _local8:Array;
var _local9:*;
var _local10:String;
var _local11:Medal;
var _local12:SaveGroup;
var _local13:uint;
var _local14:Object;
var _local15:uint;
switch (getCommandName(_arg1.command_id)){
case "connectMovie":
timeoutTimer.stop();
sendMessage("You have successfully connected to the Newgrounds API Gateway");
sendMessage((("Movie identified as \"" + _arg1.movie_name) + "\""));
callListener(APIEvent.API_CONNECTED, _arg1.success, {title:_arg1.movie_name});
_local5 = false;
if (_arg1.ad_status === -1){
_local2 = "This movie was not approved to run Flash Ads.";
sendWarning(_local2);
sendWarning((("visit " + AD_TERMS_URL) + " to view our approval guidelines"));
if (!_arg1.ad_url){
callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2));
} else {
_local5 = true;
};
} else {
if (_arg1.ad_status === 0){
_local2 = "Flash Ads are currently awaiting approval.";
sendNotice(_local2);
if (!_arg1.ad_url){
callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2));
} else {
_local5 = true;
};
};
};
if (_arg1.ad_url){
ad_url = unescape(_arg1.ad_url);
if (!_local5){
sendMessage("This movie has been approved to run Flash Ads!");
};
_adsApproved = true;
callListener(APIEvent.ADS_APPROVED, true);
};
if (_arg1.deny_host){
_local2 = (getHost() + " does not have permission to run this movie!");
sendWarning(_local2);
sendWarning(("\tUpdate your API configuration to unblock " + getHost()));
callListener(APIEvent.HOST_BLOCKED, true, {real_url:unescape(_arg1.movie_url), url:getOfficialURL()});
};
if (_arg1.movie_version){
sendWarning("According to your API Configuration, this version is out of date.");
if (version){
sendWarning(("\tThe this movie is version " + version));
};
sendWarning(("\tThe most current version is " + _arg1.movie_version));
callListener(APIEvent.NEW_VERSION_AVAILABLE, true, {version:_arg1.movie_version, real_url:unescape(_arg1.movie_url), url:getOfficialURL()});
};
if (_arg1.request_portal_url){
sendCommand("setPortalID", {portal_url:_host});
};
sendCommand("preloadSettings", {publisher_id:publisher_id, user_id:user_id});
break;
case "preloadSettings":
if (_arg1.medals){
populateMedals(_arg1.medals);
if (((!(hasUserSession())) && (!(debugMode)))){
echo("Checking for SharedObject Medals...");
_local9 = loadLocal("medals_unlocked");
if (_local9){
for (_local10 in _local9) {
if (_local9[_local10]){
_local11 = getMedalById(uint(_local10));
echo(("Now unlocking " + _local11.name));
_local11.unlocked = true;
};
};
};
};
};
if (_arg1.save_groups){
populateSaveGroups(_arg1.save_groups);
};
if (_arg1.save_file_path){
_saveFilePath = (_arg1.save_file_path + "/");
};
if (_arg1.image_file_path){
_imageFilePath = (_arg1.image_file_path + "/");
};
if (_arg1.score_boards){
populateScoreBoards(_arg1.score_boards);
};
trace("[NewgroundsAPI] :: Metadata loaded!");
callListener(APIEvent.METADATA_LOADED);
if (((_saveFileId) && (_saveGroupId))){
_local12 = getSaveGroupById(_saveGroupId);
if (_local12){
callListener(APIEvent.FILE_REQUESTED, true, {save_id:_saveFileId, group:_local12});
};
};
_preloadComplete = true;
break;
case "logCustomEvent":
if (_arg1.success){
sendMessage((("Event '" + _arg1.event) + "' was logged."));
};
callListener(APIEvent.EVENT_LOGGED, _arg1.success, {event:_arg1.event});
break;
case "postScore":
if (_arg1.success){
_local4 = "User";
if (user_email){
_local4 = user_email;
} else {
if (user_name){
_local4 = user_name;
};
};
_local6 = getScoreBoardById(_arg1.board);
if (_local6){
sendMessage((((((_local4 + " posted ") + _arg1.value) + " to '") + _local6.name) + "'"));
};
_local3 = {score:_arg1.score, value:_arg1.value, username:_local4};
};
callListener(APIEvent.SCORE_POSTED, _arg1.success, _local3);
break;
case "loadScores":
_local3 = new Object();
_local6 = getScoreBoardById(_arg1.board);
if (_local6){
_local6.setScores(_arg1.scores, _arg1.period, _arg1.page, _arg1.num_results);
};
callListener(APIEvent.SCORES_LOADED, _arg1.success, _local6);
break;
case "unlockMedal":
if (_medals){
_local11 = getMedalByName(_arg1.medal_name);
if (_local11.unlocked){
return;
};
_local11.unlocked = true;
callListener(APIEvent.MEDAL_UNLOCKED, _arg1.success, _local11);
};
break;
case "getMedals":
populateMedals(_arg1.medals);
callListener(APIEvent.MEDALS_LOADED, _arg1.success, _local3);
break;
case "loadSaveFile":
_local12 = getSaveGroupById(_arg1.group_id);
_local7 = new SaveFile(_local12);
_local7.id = _arg1.file.save_id;
_local7.name = _arg1.file.filename;
_local7.fileUrl = (_saveFilePath + _arg1.file.file);
_local7.thumbnailUrl = (_imageFilePath + _arg1.file.thumb);
_local7.authorName = _arg1.file.user_name;
_local7.authorId = _arg1.file.user_id;
_local7.description = _arg1.file.description;
if (((_arg1.file.keys) && (_arg1.file.keys.length))){
_local13 = 0;
while (_local13 < _arg1.file.keys.length) {
_local7.setKey(_arg1.file.keys[_local13].id, _arg1.file.keys[_local13].value);
_local13++;
};
};
if (((_arg1.file.ratings) && (_arg1.file.ratings.length))){
_local13 = 0;
while (_local13 < _arg1.file.ratings.length) {
_local7.setRating(_arg1.file.ratings[_local13].id, _arg1.file.ratings[_local13].votes, _arg1.file.ratings[_local13].score);
_local13++;
};
};
if (_arg1.get_contents){
_local7.loadContents();
};
callListener(APIEvent.FILE_INITIALIZED, _arg1.success, _local7);
break;
case "lookupSaveFiles":
_local8 = [];
_local13 = 0;
while (_local13 < _arg1.files.length) {
_local14 = _arg1.files[_local13];
_local7 = new SaveFile(getSaveGroupById(_arg1.group_id));
_local7.name = _local14.filename;
_local7.id = _local14.save_id;
_local7.description = _local14.description;
_local7.thumbnailUrl = (_imageFilePath + _local14.thumb);
_local7.fileUrl = (_saveFilePath + _local14.file);
_local7.authorName = _local14.user_name;
_local7.authorId = _local14.user_id;
if (((_local14.keys) && (_local14.keys.length))){
_local15 = 0;
while (_local15 < _local14.keys.length) {
_local7.setKey(_local14.keys[_local15].id, _local14.keys[_local15].value);
_local15++;
};
};
if (((_local14.ratings) && (_local14.ratings.length))){
_local15 = 0;
while (_local15 < _local14.ratings.length) {
_local7.setRating(_local14.ratings[_local15].id, _local14.ratings[_local15].votes, _local14.ratings[_local15].score);
_local15++;
};
};
_local8.push(_local7);
_local13++;
};
_arg1.owner.dispatchEvent(new APIEvent(APIEvent.QUERY_COMPLETE, _arg1.success, _local8));
break;
case "rateSaveFile":
_local7 = _arg1.owner;
if (_arg1.success){
_local7.setRating(_arg1.rating_id, _arg1.votes, _arg1.score);
};
_local7.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, _arg1));
break;
case "saveFile":
_local3 = {save_id:_arg1.save_id, filename:_arg1.filename, file_url:_arg1.file_url, thumbnail:_arg1.thumbnail, icon:_arg1.icon};
_arg1.owner.dispatchEvent(new APIEvent(APIEvent.FILE_SAVED, _arg1.success, _local3));
break;
case "checkFilePrivs":
_local3 = {filename:_arg1.filename, folder:_arg1.folder, can_read:_arg1.can_read, can_write:_arg1.can_write};
callListener(APIEvent.FILE_PRIVS_LOADED, _arg1.success, _local3);
break;
};
}
public static function loadMedals():void{
if (_medals){
dispatchEvent(new APIEvent(APIEvent.MEDALS_LOADED, true, medals));
return;
};
var _local1:Object = new Object();
if (hasUserSession()){
_local1.publisher_id = publisher_id;
_local1.user_id = user_id;
};
sendCommand("getMedals", _local1);
}
public static function connect(_arg1:LoaderInfo, _arg2:String, _arg3:String=null):void{
var loaderInfo = _arg1;
var m_id = _arg2;
var encrypt_key = _arg3;
if (!loaderInfo){
fatalError("Null loaderInfo paremeter passed in to connectMovie!", "");
return;
};
try {
if (loaderInfo.loader){
loaderInfo = loaderInfo.loader.loaderInfo;
};
} catch(error:Error) {
};
_host = loaderInfo.url;
if ((((_host.indexOf("http://") > -1)) || ((_host.indexOf("https://") > -1)))){
_host = _host.split("/")[2].toLowerCase();
} else {
_host = "localhost";
};
var flashVars:Object = loaderInfo.parameters;
if (isPublishedHost()){
debugMode = false;
};
if (((!(debugMode)) && (flashVars))){
if (flashVars.NewgroundsAPI_UserName){
user_name = flashVars.NewgroundsAPI_UserName;
};
if (flashVars.NewgroundsAPI_UserID){
user_id = flashVars.NewgroundsAPI_UserID;
};
if (flashVars.NewgroundsAPI_PublisherID){
publisher_id = flashVars.NewgroundsAPI_PublisherID;
} else {
publisher_id = 1;
};
if (flashVars.NewgroundsAPI_UserpageFormat){
_userpageFormat = flashVars.NewgroundsAPI_UserpageFormat;
};
if (flashVars.NewgroundsAPI_SessionID){
session_id = flashVars.NewgroundsAPI_SessionID;
};
if (flashVars.NewgroundsAPI_SaveGroupID){
_saveGroupId = flashVars.NewgroundsAPI_SaveGroupID;
};
if (flashVars.NewgroundsAPI_SaveFileID){
_saveFileId = flashVars.NewgroundsAPI_SaveFileID;
};
} else {
publisher_id = 1;
session_id = "D3bu64p1U53R";
user_id = 10;
user_name = "API-Debugger";
};
if (connected){
return;
};
timeoutTimer.start();
if (!m_id){
fatalError("NewgroundsAPI.connectMovie() - missing required movieId parameter", "connectMovie");
};
_movieId = String(m_id);
_trackerId = uint(_movieId.substring(0, _movieId.indexOf(":")));
_encryptionKey = encrypt_key;
connected = true;
sendCommand("connectMovie", {host:getHost(), movie_version:version});
}
public static function saveLocal(_arg1:String, _arg2:Object, _arg3:uint=0):void{
var sharedObj:SharedObject;
var save_id = _arg1;
var save_data = _arg2;
var size_allocation = _arg3;
try {
if (!sharedObjects[save_id]){
sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id));
};
sharedObj = sharedObjects[save_id];
sharedObj.data[save_id] = encodeData(save_data);
sharedObj.flush();
} catch(e:Error) {
sendWarning(("saveLocal ERROR: " + e));
};
}
public static function getPeriodName(_arg1:String):String{
var _local2:String;
for (_local2 in period_aliases) {
if (_local2 == _arg1){
return (period_aliases[_local2].name);
};
};
return (null);
}
public static function getSaveGroupByName(_arg1:String):SaveGroup{
if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){
sendWarning("No save groups found");
return (null);
};
var _local2:uint;
while (_local2 < _saveGroups.length) {
if (_saveGroups[_local2].name == _arg1){
return (_saveGroups[_local2]);
};
_local2++;
};
return (null);
}
private static function getCommandID(_arg1:String):String{
return (_arg1);
}
public static function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public static function isNewgrounds():Boolean{
return ((((publisher_id == 1)) || ((getHost().toLowerCase().indexOf("ungrounded.net") > -1))));
}
public static function isConnected():Boolean{
return (_connected);
}
}
}//package com.newgrounds
Section 17
//APIError (com.newgrounds.APIError)
package com.newgrounds {
import flash.utils.*;
public class APIError {
public var alias:String;
public var message:String;
public var name:String;
public var code:Number;// = 0
private static const always_caps:Array = new Array("API", "URL", "ID");
public static const error_names:Object = init_names();
public static const aliases:Array = new Array("UNKNOWN_ERROR", "INVALID_API_ID", "MISSING_PARAM", "INVALID_STAT_ID", "INVALID_COMMAND_ID", "FLASH_ADS_NOT_APPROVED", "PERMISSION_DENIED", "IDENTIFICATION_REQUIRED", "INVALID_EMAIL_ADDRESS", "BANNED_USER", "SESSION_EXPIRED", "INVALID_SCORE", "INVALID_MEDAL", "INVALID_FOLDER", "FILE_NOT_FOUND", "SITE_ID_REQUIRED", "UPLOAD_IN_PROGRESS", "USER_CANCELLED", "CONFIRM_REQUEST", "CONNECTION_FAILED");
public static const error_codes:Object = init_codes();
public function APIError(_arg1, _arg2:String){
if ((_arg1 is String)){
_arg1 = error_codes[_arg1];
} else {
if (!(_arg1 is uint)){
_arg1 = 0;
};
};
code = _arg1;
message = _arg2;
name = error_names[_arg1];
alias = aliases[_arg1];
}
public function isError():Boolean{
return (true);
}
private static function init_names():Array{
var _local3:Array;
var _local4:uint;
var _local5:String;
var _local1:Array = new Array();
var _local2:uint;
while (_local2 < aliases.length) {
_local3 = aliases[_local2].toLowerCase().split("_");
_local4 = 0;
while (_local4 < _local3.length) {
_local3[_local4] = (_local3[_local4].substr(0, 1).toUpperCase() + _local3[_local4].substr(1, _local3[_local4].length));
for each (_local5 in always_caps) {
if (_local3[_local4].toUpperCase() == _local5){
_local3[_local4] = _local3[_local4].toUpperCase();
};
};
_local4++;
};
_local1[_local2] = _local3.join(" ");
_local2++;
};
return (_local1);
}
public static function init_codes():Dictionary{
var _local1:Dictionary = new Dictionary();
var _local2:uint;
while (_local2 < aliases.length) {
_local1[aliases[_local2]] = _local2;
_local2++;
};
return (_local1);
}
}
}//package com.newgrounds
Section 18
//APIEvent (com.newgrounds.APIEvent)
package com.newgrounds {
import flash.events.*;
public class APIEvent extends Event {
private var _error:APIError;
private var _success:Boolean;
private var _target;
private var _data;
public static const AD_ATTACHED:String = "adAttached";
public static const FILE_PRIVS_LOADED:String = "filePrivsLoaded";
public static const ADS_APPROVED:String = "adsApproved";
public static const MEDAL_UNLOCKED:String = "medalUnlocked";
public static const MEDALS_LOADED:String = "medalsLoaded";
public static const FILE_REQUESTED:String = "fileRequested";
public static const METADATA_LOADED:String = "metadataLoaded";
public static const NEW_VERSION_AVAILABLE:String = "newVersionAvailable";
public static const API_CONNECTED:String = "movieConnected";
public static const EVENT_LOGGED:String = "eventLogged";
public static const FILE_SAVED:String = "fileSaved";
public static const SCORE_POSTED:String = "scorePosted";
public static const VOTE_COMPLETE:String = "voteComplete";
public static const FILE_LOADED:String = "fileLoaded";
public static const QUERY_COMPLETE:String = "queryComplete";
public static const SCORES_LOADED:String = "scoresLoaded";
public static const HOST_BLOCKED:String = "hostBlocked";
public static const FILE_INITIALIZED:String = "fileInitialized";
public function APIEvent(_arg1:String, _arg2:Boolean=true, _arg3=undefined){
super(_arg1);
_data = _arg3;
_success = _arg2;
}
public function get success():Boolean{
return (_success);
}
public function get data(){
return (_data);
}
}
}//package com.newgrounds
Section 19
//BaseN (com.newgrounds.BaseN)
package com.newgrounds {
import flash.utils.*;
public class BaseN {
private var _hashVal:Dictionary;
private var _hashIndex:String;
private var _base:Number;
public function BaseN(_arg1:String=null){
if (_arg1){
_hashIndex = _arg1;
} else {
_hashIndex = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/";
};
_base = _hashIndex.length;
_hashVal = new Dictionary();
var _local2:uint;
while (_local2 < _base) {
_hashVal[_hashIndex.charAt(_local2)] = _local2;
_local2++;
};
}
public function encode(_arg1:Number, _arg2:uint=1):String{
var _local3:String = _arg1.toString();
var _local4 = "";
if (_local3.charAt(0) == "-"){
_local4 = "-";
_local3 = _local3.substring(1);
};
var _local5:Array = _local3.split(".", 2);
_local4 = (_local4 + baseNEncoder(_local5[0], _arg2));
if (_local5.length > 1){
_local4 = (_local4 + ("." + baseNEncoder(_local5[1])));
};
return (_local4);
}
private function baseNDecoder(_arg1:String):uint{
var _local2:uint;
var _local3:uint;
while (_local3 < _arg1.length) {
_local2 = (_local2 * _base);
_local2 = (_local2 + _hashVal[_arg1.charAt(_local3)]);
_local3++;
};
return (_local2);
}
public function decode(_arg1:String):Number{
var _local2 = "";
if (_arg1.charAt(0) == "-"){
_local2 = "-";
_arg1 = _arg1.substring(1);
};
var _local3:Array = _arg1.split(".", 2);
_local2 = (_local2 + baseNDecoder(_local3[0]));
if (_local3.length > 1){
_local2 = (_local2 + ".");
_local2 = (_local2 + baseNDecoder(_local3[1]));
};
return (Number(_local2));
}
private function baseNEncoder(_arg1:uint, _arg2:uint=1):String{
var _local3 = "";
var _local4:uint = _arg1;
while (_local4 != 0) {
_local3 = (_hashIndex.charAt((_local4 % _base)) + _local3);
_local4 = (_local4 / _base);
};
if (_arg2){
while (_local3.length < _arg2) {
_local3 = (_hashIndex.charAt(0) + _local3);
};
};
return (_local3);
}
}
}//package com.newgrounds
Section 20
//Medal (com.newgrounds.Medal)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class Medal {
private var _unlocked:Boolean;// = false
private var _iconLoader:Loader;
private var _difficultyId:uint;
private var _icon:BitmapData;
private var _value:uint;
private var _iconUrl:URLRequest;
private var _name:String;
private var _id:uint;
private static const DIFFICULT_NAMES:Array = [null, "Easy", "Moderate", "Challenging", "Difficult", "Brutal"];
private static const DEFAULT_ICON:BitmapData = new BitmapData(50, 50, false, 0);
public function Medal(_arg1:uint, _arg2:String, _arg3:uint, _arg4:uint, _arg5:Boolean, _arg6:String){
var id = _arg1;
var name = _arg2;
var value = _arg3;
var difficulty = _arg4;
var unlocked = _arg5;
var iconUrl = _arg6;
_icon = DEFAULT_ICON;
super();
_id = id;
_name = name;
_value = value;
_difficultyId = difficulty;
_unlocked = unlocked;
if (iconUrl){
_iconUrl = new URLRequest(iconUrl);
_iconLoader = new Loader();
_iconLoader.contentLoaderInfo.addEventListener(Event.INIT, onIconLoaderInit);
_iconLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIconLoaderError);
_iconLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onIconLoaderError);
_iconLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onIconLoaderComplete);
try {
_iconLoader.load(_iconUrl, new LoaderContext(true));
} catch(e:Error) {
onIconLoaderError(null);
};
};
}
public function get icon():BitmapData{
return (_icon);
}
public function set unlocked(_arg1:Boolean):void{
_unlocked = _arg1;
}
public function get bytesLoaded():uint{
return ((_iconLoader) ? _iconLoader.contentLoaderInfo.bytesLoaded : 0);
}
public function get name():String{
return (_name);
}
private function onIconLoaderComplete(_arg1:Event):void{
var _local2:Bitmap = (_iconLoader.content as Bitmap);
_icon = _local2.bitmapData;
_iconLoader.unload();
_iconLoader = null;
}
public function get bytesTotal():uint{
return ((_iconLoader) ? _iconLoader.contentLoaderInfo.bytesTotal : 0);
}
public function get id():uint{
return (_id);
}
public function unlock():void{
if (!_unlocked){
API.unlockMedal(_name);
};
}
private function onIconLoaderError(_arg1:IOErrorEvent):void{
trace((((("[NewgroundsAPI WARNING] :: Failed to load medal icon for " + name) + " (") + _iconUrl.url.split("/").pop()) + ")"));
_iconLoader.unload();
_iconLoader = null;
}
private function onIconLoaderInit(_arg1:Event):void{
}
public function get unlocked():Boolean{
return (_unlocked);
}
public function createIconBitmap():Bitmap{
return (new Bitmap(icon));
}
public function toString():String{
return (_name);
}
public function get value():uint{
return (_value);
}
public function get difficultyId():uint{
return (_difficultyId);
}
public function get difficulty():String{
return (DIFFICULT_NAMES[_difficultyId]);
}
public static function createFromObject(_arg1:Object):Medal{
return (new Medal(_arg1.medal_id, _arg1.medal_name, _arg1.medal_value, _arg1.medal_difficulty, _arg1.medal_unlocked, _arg1.medal_icon));
}
}
}//package com.newgrounds
Section 21
//RC4 (com.newgrounds.RC4)
package com.newgrounds {
public class RC4 {
private static var mykey:Array = new Array(0xFF);
private static var sbox:Array = new Array(0xFF);
private static function charsToHex(_arg1:Array):String{
var _local2:String = new String("");
var _local3:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
var _local4:uint;
while (_local4 < _arg1.length) {
_local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)]));
_local4++;
};
return (_local2);
}
public static function encrypt(_arg1:String, _arg2:String):String{
var _local3:Array = strToChars(_arg1);
var _local4:Array = strToChars(_arg2);
var _local5:Array = calculate(_local3, _local4);
return (charsToHex(_local5));
}
private static function hexToChars(_arg1:String):Array{
var _local2:Array = new Array();
var _local3:uint = ((_arg1.substr(0, 2))=="0x") ? 2 : 0;
while (_local3 < _arg1.length) {
_local2.push(parseInt(_arg1.substr(_local3, 2), 16));
_local3 = (_local3 + 2);
};
return (_local2);
}
public static function encryptbin(_arg1:String, _arg2:String):Array{
var _local3:Array = strToChars(_arg1);
var _local4:Array = strToChars(_arg2);
var _local5:Array = calculate(_local3, _local4);
return (_local5);
}
public static function decrypt(_arg1:String, _arg2:String):String{
var _local3:Array = hexToChars(_arg1);
var _local4:Array = strToChars(_arg2);
var _local5:Array = calculate(_local3, _local4);
return (charsToStr(_local5));
}
private static function strToChars(_arg1:String):Array{
var _local2:Array = new Array();
var _local3:uint;
while (_local3 < _arg1.length) {
_local2.push(_arg1.charCodeAt(_local3));
_local3++;
};
return (_local2);
}
private static function calculate(_arg1:Array, _arg2:Array):Array{
var _local6:uint;
var _local7:uint;
var _local8:uint;
var _local10:uint;
initialize(_arg2);
var _local3:uint;
var _local4:uint;
var _local5:Array = new Array();
var _local9:uint;
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 initialize(_arg1:Array):void{
var _local3:uint;
var _local2:uint;
var _local4:uint = _arg1.length;
var _local5:uint;
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 charsToStr(_arg1:Array):String{
var _local2:String = new String("");
var _local3:uint;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(_arg1[_local3]));
_local3++;
};
return (_local2);
}
}
}//package com.newgrounds
Section 22
//SaveFile (com.newgrounds.SaveFile)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class SaveFile extends EventDispatcher {
private var _group:SaveGroup;
private var _status:uint;
private var _fileUrl:String;
private var _ratings:Dictionary;
private var _id:uint;
private var _thumbnailUrl:String;
private var _description:String;
private var _keys:Dictionary;
private var _authorName:String;
private var _filename:String;
private var _thumbnail:BitmapData;
private var _authorId:uint;
private var _contents;
public function SaveFile(_arg1:SaveGroup){
_keys = new Dictionary();
_ratings = new Dictionary();
_group = _arg1;
_description = "";
}
public function get authorId():uint{
return (_authorId);
}
public function get name():String{
return (_filename);
}
public function set authorId(_arg1:uint):void{
_authorId = _arg1;
}
override public function toString():String{
var _local2:Object;
var _local3:Object;
var _local1 = (((((("Save File " + _filename) + " ID: ") + _id) + "\n ") + _description) + "\n");
for each (_local2 in _keys) {
_local1 = (_local1 + ((((" " + _group.getKeyById(_local2.id).name) + ": ") + _local2.val) + "\n"));
};
for each (_local3 in _ratings) {
_local1 = (_local1 + ((((((" " + _group.getRatingById(_local3.id).name) + "\n Score: ") + _local3.score) + " Votes: ") + _local3.votes) + "\n"));
};
return (_local1);
}
public function getRating(_arg1):Object{
var _local2:SaveRating;
if ((_arg1 is String)){
_local2 = _group.getRatingByName(_arg1);
} else {
_local2 = _group.getRatingById(_arg1);
};
if (_local2){
return (_ratings[_local2]);
};
return (null);
}
public function set name(_arg1:String):void{
_filename = _arg1;
}
public function get contents(){
return (_contents);
}
public function get id():uint{
return (_id);
}
public function setKey(_arg1, _arg2):void{
var _local3:SaveKey;
if ((_arg1 is String)){
_local3 = _group.getKeyByName(_arg1);
} else {
_local3 = _group.getKeyById(_arg1);
};
if (_local3){
_keys[_local3] = {id:_local3.id, val:_arg2};
};
}
public function setRating(_arg1, _arg2:Number, _arg3:Number):void{
var _local4:SaveRating;
if ((_arg1 is String)){
_local4 = _group.getRatingByName(_arg1);
} else {
_local4 = _group.getRatingById(_arg1);
};
if (_local4){
_ratings[_local4] = {id:_local4.id, name:_local4.name, votes:_arg2, score:_arg3};
};
}
public function loadContents():void{
var _local1:SmartURLLoader;
if (_fileUrl){
_local1 = new SmartURLLoader();
_local1.responseFormat = URLLoaderDataFormat.BINARY;
_local1.addEventListener(Event.COMPLETE, onContentsLoaded);
_local1.load(_fileUrl);
};
}
public function toObject():Object{
var _local2:Object;
var _local1:Object = {group:groupId, filename:name, description:description, shared:true};
_local1.keys = [];
for each (_local2 in _keys) {
_local1.keys.push({id:_local2.id, value:_local2.val});
};
return (_local1);
}
public function getKey(_arg1){
var _local2:SaveKey;
if ((_arg1 is String)){
_local2 = _group.getKeyByName(_arg1);
} else {
_local2 = _group.getKeyById(_arg1);
};
if (_local2){
return (_keys[_local2]);
};
return (null);
}
public function set fileUrl(_arg1:String):void{
_fileUrl = _arg1;
}
public function get groupName():String{
return (_group.name);
}
public function set contents(_arg1):void{
_contents = _arg1;
}
public function get authorName():String{
return (_authorName);
}
public function set id(_arg1:uint):void{
_id = _arg1;
}
public function loadAuthorPage(){
API.loadUserPage(_authorId, _authorName);
}
public function sendRating(_arg1:String, _arg2:Number):void{
var _local3:SaveRating = _group.getRatingByName(_arg1);
if (!_local3){
trace((("[NewgroundsAPISaveFile] " + _arg1) + " is not a recognized save file"));
return;
};
if ((((_arg2 < _local3.minValue)) || ((_arg2 > _local3.maxValue)))){
trace(((("[NewgroundsAPISaveFile] Vote must be between " + _local3.minValue) + " and ") + _local3.maxValue));
return;
};
_local3.voted = true;
API.rateSaveFile(this, _local3, _arg2);
}
public function set thumbnailUrl(_arg1:String):void{
_thumbnailUrl = _arg1;
}
public function set thumbnail(_arg1:BitmapData):void{
if (_thumbnail){
_thumbnail.dispose();
};
_thumbnail = _arg1.clone();
}
public function get groupType():uint{
return (_group.type);
}
public function get fileUrl():String{
return (_fileUrl);
}
public function get thumbnailUrl():String{
return (_thumbnailUrl);
}
public function get shared():Boolean{
return (true);
}
public function set authorName(_arg1:String):void{
_authorName = _arg1;
}
public function get thumbnail():BitmapData{
return (_thumbnail);
}
public function set description(_arg1:String):void{
_description = _arg1;
}
public function get groupId():uint{
return (_group.id);
}
public function get description():String{
return (_description);
}
public function save():void{
API.saveFile(this);
}
private function onContentsLoaded(_arg1:Event):void{
var _local2:ByteArray = _arg1.target.response;
_local2.uncompress();
var _local3:uint = _local2.readUnsignedByte();
if (_local3 == 0){
_contents = new ByteArray();
_contents.writeBytes(_local2, 1);
} else {
_contents = _local2.readObject();
};
dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, true, contents));
}
}
}//package com.newgrounds
Section 23
//SaveGroup (com.newgrounds.SaveGroup)
package com.newgrounds {
public class SaveGroup {
private var _id:uint;
private var _keys:Array;
private var _type:uint;
private var _name:String;
private var _ratings:Array;
private var _files:Array;
public static const TYPE_SYSTEM:uint = 0;
public static const TYPE_PRIVATE:uint = 1;
public static const TYPE_MODERATED:uint = 3;
public static const TYPE_PUBLIC:uint = 2;
public function SaveGroup(_arg1:uint, _arg2:String, _arg3:uint){
_name = _arg2;
_id = _arg1;
_type = _arg3;
_ratings = [];
_keys = [];
_files = [];
}
public function toString():String{
return ((((((("SaveGroup { name: " + _name) + ", id: ") + _id) + ", keys: ") + _keys) + "}"));
}
public function getRatingById(_arg1:uint):SaveRating{
var _local2:uint;
while (_local2 < _ratings.length) {
if (_ratings[_local2].id == _arg1){
return (_ratings[_local2]);
};
_local2++;
};
return (null);
}
public function getKeyByName(_arg1:String):SaveKey{
var _local2:uint;
while (_local2 < _keys.length) {
if (_keys[_local2].name == _arg1){
return (_keys[_local2]);
};
_local2++;
};
return (null);
}
public function get name():String{
return (_name);
}
public function getKeyById(_arg1:uint):SaveKey{
var _local2:uint;
while (_local2 < _keys.length) {
if (_keys[_local2].id == _arg1){
return (_keys[_local2]);
};
_local2++;
};
return (null);
}
public function addRating(_arg1:SaveRating):void{
_ratings.push(_arg1);
}
public function get id():uint{
return (_id);
}
public function createQuery():SaveGroupQuery{
return (new SaveGroupQuery(this));
}
public function get keys():Array{
return (_keys.concat());
}
public function getRatingByName(_arg1:String):SaveRating{
var _local2:uint;
while (_local2 < _ratings.length) {
if (_ratings[_local2].name == _arg1){
return (_ratings[_local2]);
};
_local2++;
};
return (null);
}
public function get ratings():Array{
return (_ratings.concat());
}
public function get type():uint{
return (_type);
}
public function addKey(_arg1:SaveKey):void{
_keys.push(_arg1);
}
public static function createFromObject(_arg1:Object):SaveGroup{
var _local4:Object;
var _local5:Object;
var _local2:SaveGroup = new SaveGroup(_arg1.group_id, _arg1.group_name, _arg1.group_type);
var _local3:uint;
while (_local3 < _arg1.keys.length) {
_local4 = _arg1.keys[_local3];
_local2.addKey(new SaveKey(_local4.id, _local4.name, _local4.type));
_local3++;
};
_local3 = 0;
while (_local3 < _arg1.ratings.length) {
_local5 = _arg1.ratings[_local3];
_local2.addRating(new SaveRating(_local5.id, _local5.name, _local5.float, _local5.min, _local5.max));
_local3++;
};
return (_local2);
}
}
}//package com.newgrounds
Section 24
//SaveGroupQuery (com.newgrounds.SaveGroupQuery)
package com.newgrounds {
import flash.events.*;
public class SaveGroupQuery extends EventDispatcher {
private var _group:SaveGroup;
private var _fileConditions:Array;
private var _ratingConditions:Array;
private var _resultsPerPage:uint;
private var _sortConditions:Array;
private var _lookupRatings:Array;
private var _randomizeResults:Boolean;
private var _lookupKeys:Array;
private var _page:uint;
private var _groupBy:Array;
private var _keyConditions:Array;
public static const UPDATED_ON:uint = 5;
public static const TABLE_RATINGS:uint = 3;
public static const TABLE_FILES:uint = 1;
public static const TOTAL_VOTES:String = "votes";
public static const AUTHOR_ID:uint = 1;
public static const FILE_STATUS:uint = 7;
public static const TABLE_KEYS:uint = 2;
public static const FILE_NAME:uint = 3;
public static const SCORE:String = "score";
public static const TOTAL_VIEWS:uint = 6;
public static const CREATED_ON:uint = 4;
public static const FILE_ID:uint = 0;
public static const AUTHOR_NAME:uint = 2;
public function SaveGroupQuery(_arg1:SaveGroup){
_group = _arg1;
reset();
}
public function addKeyCondition(_arg1:String, _arg2:String, _arg3):void{
var _local4:SaveKey = _group.getKeyByName(_arg1);
if (!_local4){
return;
};
if (!checkValue(_arg3, _local4.type)){
return;
};
_keyConditions.push({key_id:_local4.id, operator:_arg2, value:_arg3});
}
public function sortOn(_arg1:uint, _arg2:Boolean=false):void{
addSortCondition(TABLE_FILES, _arg1, _arg2);
}
public function set isRandomized(_arg1:Boolean):void{
_randomizeResults = _arg1;
}
public function get isRandomized():Boolean{
return (_randomizeResults);
}
public function groupByRating(_arg1:String):void{
var _local2:SaveRating = _group.getRatingByName(_arg1);
if (!_local2){
return;
};
_groupBy.push({table:TABLE_RATINGS, field:_local2.id});
}
public function execute():void{
API.executeSaveQuery(this);
}
public function get page():uint{
return (_page);
}
public function groupByKey(_arg1:String):void{
var _local2:SaveKey = _group.getKeyByName(_arg1);
if (!_local2){
return;
};
_groupBy.push({table:TABLE_KEYS, field:_local2.id});
}
public function sortOnKey(_arg1:String, _arg2:Boolean=false):void{
addSortCondition(TABLE_KEYS, _group.getKeyByName(_arg1).id, _arg2);
}
public function toObject():Object{
var _local1:Object = {page:_page, num_results:_resultsPerPage};
if (isRandomized){
_local1.randomize = 1;
};
if (((_fileConditions) && ((_fileConditions.length > 0)))){
_local1.file_conditions = _fileConditions;
};
if (((_keyConditions) && ((_keyConditions.length > 0)))){
_local1.key_conditions = _keyConditions;
};
if (((_ratingConditions) && ((_ratingConditions.length > 0)))){
_local1.rating_conditions = _ratingConditions;
};
if (((_sortConditions) && ((_sortConditions.length > 0)))){
_local1.sort_conditions = _sortConditions;
};
if (((_lookupKeys) && ((_lookupKeys.length > 0)))){
_local1.lookup_keys = _lookupKeys;
};
if (((_lookupRatings) && ((_lookupRatings.length > 0)))){
_local1.lookup_ratings = _lookupRatings;
};
if (((_groupBy) && ((_groupBy.length > 0)))){
_local1.group_by = _groupBy;
};
return (_local1);
}
public function reset():void{
_fileConditions = [];
_keyConditions = [];
_ratingConditions = [];
_sortConditions = [];
_groupBy = [];
_lookupKeys = [];
_lookupRatings = [];
_randomizeResults = false;
_resultsPerPage = 20;
_page = 1;
}
public function includeKey(_arg1:String):void{
var _local2:SaveKey = _group.getKeyByName(_arg1);
if (_local2){
_lookupKeys.push(_local2.id);
};
}
private function checkValue(_arg1, _arg2:uint):Boolean{
return (true);
}
public function set page(_arg1:uint):void{
_page = _arg1;
}
public function addRatingCondition(_arg1:String, _arg2:String, _arg3, _arg4:String="score"):void{
var _local5:SaveRating = _group.getRatingByName(_arg1);
if (!_local5){
return;
};
_ratingConditions.push({rating_id:_local5.id, operator:_arg2, value:_arg3, column:_arg4});
}
public function includeRating(_arg1:String):void{
var _local2:SaveRating = _group.getRatingByName(_arg1);
if (_local2){
_lookupRatings.push(_local2.id);
};
}
public function sortOnRating(_arg1:String, _arg2:Boolean=false, _arg3:String="score"):void{
addSortCondition(TABLE_RATINGS, _group.getRatingByName(_arg1).id, _arg2, _arg3);
}
public function set resultsPerPage(_arg1:uint):void{
_resultsPerPage = _arg1;
}
public function excludeRating(_arg1:String):void{
var _local2:SaveRating = _group.getRatingByName(_arg1);
var _local3:uint;
while (_local3 < _lookupRatings.length) {
if (_lookupRatings[_local3] == _local2.id){
_lookupRatings.splice(_local3, 1);
return;
};
_local3++;
};
}
public function addFileCondition(_arg1:uint, _arg2:String, _arg3):void{
_fileConditions.push({field:_arg1, operator:_arg2, value:_arg3});
}
public function excludeKey(_arg1:String):void{
var _local2:SaveKey = _group.getKeyByName(_arg1);
var _local3:uint;
while (_local3 < _lookupKeys.length) {
if (_lookupKeys[_local3] == _local2.id){
_lookupKeys.splice(_local3, 1);
return;
};
_local3++;
};
}
public function get resultsPerPage():uint{
return (_resultsPerPage);
}
public function get groupId():uint{
return (_group.id);
}
override public function toString():String{
return ("");
}
private function addSortCondition(_arg1:uint, _arg2:uint, _arg3:Boolean=false, _arg4=null):void{
var _local5:Object = {table:_arg1, field:_arg2, desc:_arg3};
if (_arg4){
_local5.extra = _arg4;
};
_sortConditions.push(_local5);
}
public function groupBy(_arg1:uint):void{
_groupBy.push({table:TABLE_FILES, field:_arg1});
}
public function get group():SaveGroup{
return (_group);
}
}
}//package com.newgrounds
Section 25
//SaveKey (com.newgrounds.SaveKey)
package com.newgrounds {
public class SaveKey {
private var _id:uint;
private var _type:uint;
private var _name:String;
public static const TYPE_BOOLEAN:uint = 4;
public static const TYPE_STRING:uint = 3;
public static const TYPE_FLOAT:uint = 1;
public static const TYPE_INTEGER:uint = 2;
public function SaveKey(_arg1:uint, _arg2:String, _arg3:uint){
_id = _arg1;
_name = _arg2;
_type = _arg3;
}
public function isValueValid(_arg1):Boolean{
if (_type == TYPE_INTEGER){
return ((((_arg1 is int)) || ((_arg1 is uint))));
};
if (_type == TYPE_FLOAT){
return ((((((_arg1 is int)) || ((_arg1 is uint)))) || ((_arg1 is Number))));
};
if (_type == TYPE_STRING){
return ((_arg1 is String));
};
if (_type == TYPE_BOOLEAN){
return ((((((((_arg1 is Boolean)) || ((_arg1 === 0)))) || ((_arg1 === 1)))) || ((_arg1 == ""))));
};
return (false);
}
public function get name():String{
return (_name);
}
public function get type():uint{
return (_type);
}
public function get id():uint{
return (_id);
}
public function toString():String{
return (_name);
}
}
}//package com.newgrounds
Section 26
//SaveRating (com.newgrounds.SaveRating)
package com.newgrounds {
public class SaveRating {
private var _voted:Boolean;
private var _name:String;
private var _maxValue:Number;
private var _isFloat:Boolean;
private var _id:uint;
private var _minValue:Number;
public function SaveRating(_arg1:uint, _arg2:String, _arg3:Boolean, _arg4:Number=-INF, _arg5:Number=INF){
_id = _arg1;
_name = _arg2;
_isFloat = _arg3;
_minValue = _arg4;
_maxValue = _arg5;
}
public function get voted():Boolean{
return (_voted);
}
public function set voted(_arg1:Boolean):void{
_voted = _arg1;
}
public function toString():String{
return (_name);
}
public function get maxValue():Number{
return (_maxValue);
}
public function get name():String{
return (_name);
}
public function get isFloat():Boolean{
return (_isFloat);
}
public function get id():uint{
return (_id);
}
public function get minValue():Number{
return (_minValue);
}
}
}//package com.newgrounds
Section 27
//Score (com.newgrounds.Score)
package com.newgrounds {
public class Score {
private var _board:ScoreBoard;
private var _position:uint;
private var _numeric_value:uint;
private var _value:String;
private var _username:String;
private var _tag:String;
public function Score(_arg1:ScoreBoard, _arg2:Number, _arg3:String, _arg4:String, _arg5:uint, _arg6:String){
_board = _arg1;
_position = _arg2;
_username = _arg3;
_value = _arg4;
_numeric_value = _arg5;
_tag = _arg6;
}
public function get tag():String{
return (_tag);
}
public function get board():ScoreBoard{
return (_board);
}
public function get position():uint{
return (_position);
}
public function get value():String{
return (_value);
}
public function get username():String{
return (_username);
}
public function get numeric_value():uint{
return (_numeric_value);
}
}
}//package com.newgrounds
Section 28
//ScoreBoard (com.newgrounds.ScoreBoard)
package com.newgrounds {
import flash.events.*;
public class ScoreBoard extends EventDispatcher {
private var _scores:Array;
private var _tag:String;
private var _period:String;// = "Today"
private var _name:String;
private var _page:uint;// = 1
private var _id:uint;
private var _num_results:uint;// = 10
public function ScoreBoard(_arg1:uint, _arg2:String, _arg3:String){
_name = _arg2;
_id = _arg1;
_scores = [];
_tag = _arg3;
}
public function get period():String{
return (_period);
}
public function get name():String{
return (_name);
}
public function postScore(_arg1:uint):void{
API.postScore(_name, _arg1);
}
public function get page():uint{
return (_page);
}
public function get tag():String{
return (_tag);
}
public function exists():Boolean{
return ((_id > 0));
}
public function get scores():Array{
return (_scores);
}
public function get id():Number{
return (_id);
}
public function loadScores(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{
_period = _arg1;
if (((!(_period)) || ((_period == "")))){
_period = ScoreBoardPeriod.TODAY;
};
_page = _arg2;
_num_results = _arg3;
API.loadScores(this);
}
function setScores(_arg1:Array, _arg2:String, _arg3:Number, _arg4:Number):void{
var _local6:uint;
_period = _arg2;
_page = _arg3;
_num_results = _arg4;
_scores = [];
var _local5:uint;
while (_local5 < _arg1.length) {
_local6 = (((_num_results * (_page - 1)) + 1) + _local5);
_scores.push(new Score(this, _local6, _arg1[_local5].username, _arg1[_local5].value, _arg1[_local5].numeric_value, _arg1[_local5].tag));
_local5++;
};
}
public function get num_results():uint{
return (_num_results);
}
}
}//package com.newgrounds
Section 29
//ScoreBoardPeriod (com.newgrounds.ScoreBoardPeriod)
package com.newgrounds {
public class ScoreBoardPeriod {
public static const MONTH:String = "This Month";
public static const TODAY:String = "Today";
public static const WEEK:String = "This Week";
public static const ALL_TIME:String = "All-Time";
public static const YEAR:String = "This Year";
}
}//package com.newgrounds
Section 30
//SmartURLLoader (com.newgrounds.SmartURLLoader)
package com.newgrounds {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.errors.*;
public class SmartURLLoader extends EventDispatcher {
private var _urlRequest:URLRequest;
private var _method:String;// = "GET"
private var _files:Dictionary;
private var _hasVariables:Boolean;
private var _dataFormat:String;// = "text"
private var _urlLoader:URLLoader;
private var _preventCache:Boolean;// = false
private var _variables:Dictionary;
public var owner;
private var _openBrowser:Boolean;// = false
private static const CRLF:String = "
";
private static var _loaders:Dictionary = new Dictionary();
public function SmartURLLoader(){
_urlRequest = new URLRequest();
_variables = new Dictionary();
}
public function get response(){
return (_urlLoader.data);
}
public function set method(_arg1:String):void{
if (((hasFiles) && ((_arg1 == URLRequestMethod.GET)))){
throw (new IllegalOperationError("GET cannot be used to upload files."));
};
_method = _arg1;
}
private function onIOError(_arg1:IOErrorEvent):void{
dispatchEvent(_arg1);
dispose();
}
public function addVariable(_arg1:String, _arg2=""):void{
_variables[_arg1] = _arg2;
if (_arg2){
_hasVariables = true;
};
}
private function onSecurityError(_arg1:SecurityErrorEvent):void{
dispatchEvent(_arg1);
dispose();
}
public function get preventCache():Boolean{
return (_preventCache);
}
public function addFile(_arg1:String, _arg2:ByteArray, _arg3:String, _arg4:String="application/octect-stream"):void{
method = URLRequestMethod.POST;
if (!_files){
_files = new Dictionary();
};
_files[_arg1] = new File(_arg1, _arg2, _arg3, _arg4);
}
public function get openBrowser():Boolean{
return (_openBrowser);
}
public function set preventCache(_arg1:Boolean):void{
_preventCache = _arg1;
}
public function get responseFormat():String{
return (_dataFormat);
}
private function onComplete(_arg1:Event):void{
dispatchEvent(_arg1);
dispose();
}
public function dispose():void{
_files = null;
_variables = null;
if (_urlLoader){
_urlLoader.removeEventListener(Event.COMPLETE, onComplete);
_urlLoader.removeEventListener(ProgressEvent.PROGRESS, onProgress);
_urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
_urlLoader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
_urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
_urlLoader = null;
};
_urlRequest = null;
_loaders[this] = null;
}
public function get method():String{
return (_method);
}
public function close():void{
try {
_urlLoader.close();
} catch(e:Error) {
};
}
private function buildMultipartData(_arg1:String):ByteArray{
var _local3:String;
var _local4:File;
var _local2:ByteArray = new ByteArray();
_local2.endian = Endian.BIG_ENDIAN;
_arg1 = ("--" + _arg1);
for (_local3 in _variables) {
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + _local3) + "\"") + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeUTFBytes((_variables[_local3] + CRLF));
};
if (hasFiles){
for each (_local4 in _files) {
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Filename\"" + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeUTFBytes((_local4.fileName + CRLF));
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(((((("Content-Disposition: form-data; name=\"" + _local4.dataField) + "\"; filename=\"") + _local4.fileName) + "\"") + CRLF));
_local2.writeUTFBytes((("Content-Type: " + _local4.contentType) + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeBytes(_local4.data);
_local2.writeUTFBytes(CRLF);
};
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Upload\"" + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeUTFBytes(("Submit Query" + CRLF));
};
_local2.writeUTFBytes((_arg1 + "--"));
_local2.position = 0;
trace(_local2.readUTFBytes(_local2.length));
_local2.position = 0;
return (_local2);
}
public function clearVariables():void{
_variables = new Dictionary();
}
private function onProgress(_arg1:ProgressEvent):void{
dispatchEvent(_arg1);
}
public function load(_arg1:String):void{
var urlVariables:URLVariables;
var key:String;
var boundary:String;
var i:uint;
var event:SecurityErrorEvent;
var url = _arg1;
_urlRequest.url = url;
if (_preventCache){
url = (url + ("?seed=" + Math.random()));
if (_hasVariables){
url = (url + "&");
};
};
_urlRequest.method = _method;
if ((((_urlRequest.method == URLRequestMethod.GET)) || (!(hasFiles)))){
_urlRequest.contentType = "application/x-www-form-urlencoded";
if (_hasVariables){
urlVariables = new URLVariables();
for (key in _variables) {
urlVariables[key] = _variables[key];
};
_urlRequest.data = urlVariables;
};
} else {
boundary = "";
i = 0;
while (i < 32) {
boundary = (boundary + String.fromCharCode(uint((97 + (Math.random() * 25)))));
i = (i + 1);
};
_urlRequest.contentType = (("multipart/form-data; boundary=\"" + boundary) + "\"");
_urlRequest.data = buildMultipartData(boundary);
};
if (openBrowser){
navigateToURL(_urlRequest, "_blank");
} else {
_urlLoader = new URLLoader();
_urlLoader.dataFormat = _dataFormat;
_urlLoader.addEventListener(Event.COMPLETE, onComplete);
_urlLoader.addEventListener(ProgressEvent.PROGRESS, onProgress);
_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
_urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
_loaders[_urlLoader] = this;
try {
_urlLoader.load(_urlRequest);
} catch(error:Error) {
event = new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR, false, false, error.message);
onSecurityError(event);
};
};
}
public function set responseFormat(_arg1:String):void{
_dataFormat = _arg1;
}
public function clearFiles():void{
_files = null;
}
private function onHTTPStatus(_arg1:HTTPStatusEvent):void{
dispatchEvent(_arg1);
}
public function set openBrowser(_arg1:Boolean):void{
_openBrowser = _arg1;
}
public function get hasFiles():Boolean{
return (Boolean(_files));
}
}
}//package com.newgrounds
import flash.utils.*;
class File {
private var dataField:String;
private var contentType:String;
private var fileName:String;
private var data:ByteArray;
private function File(_arg1:String, _arg2:ByteArray, _arg3:String="Filedata", _arg4:String="application/octet-stream"){
this.fileName = _arg1;
this.data = _arg2;
this.dataField = _arg3;
this.contentType = _arg4;
}
}
Section 31
//alillmintro_201 (k_fla.alillmintro_201)
package k_fla {
import flash.display.*;
public dynamic class alillmintro_201 extends MovieClip {
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public function alillmintro_201(){
addFrameScript(9, frame10);
}
function frame10(){
group5.gotoAndPlay("go");
group4.gotoAndPlay("go");
group3.gotoAndPlay("go");
}
}
}//package k_fla
Section 32
//annoncement_166 (k_fla.annoncement_166)
package k_fla {
import flash.display.*;
public dynamic class annoncement_166 extends MovieClip {
public function annoncement_166(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 33
//audiobtn_119 (k_fla.audiobtn_119)
package k_fla {
import flash.display.*;
public dynamic class audiobtn_119 extends MovieClip {
public function audiobtn_119(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 34
//button_credit_155 (k_fla.button_credit_155)
package k_fla {
import flash.display.*;
public dynamic class button_credit_155 extends MovieClip {
public var button:SimpleButton;
public function button_credit_155(){
addFrameScript(0, frame1, 19, frame20, 24, frame25);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame25(){
gotoAndStop(1);
}
}
}//package k_fla
Section 35
//button_moreGames_70 (k_fla.button_moreGames_70)
package k_fla {
import flash.display.*;
public dynamic class button_moreGames_70 extends MovieClip {
public var button:SimpleButton;
public function button_moreGames_70(){
addFrameScript(0, frame1, 19, frame20, 24, frame25);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame25(){
gotoAndStop(1);
}
}
}//package k_fla
Section 36
//button_play_159 (k_fla.button_play_159)
package k_fla {
import flash.display.*;
public dynamic class button_play_159 extends MovieClip {
public var button:SimpleButton;
public function button_play_159(){
addFrameScript(0, frame1, 19, frame20, 24, frame25);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame25(){
gotoAndStop(1);
}
}
}//package k_fla
Section 37
//button_submit_64 (k_fla.button_submit_64)
package k_fla {
import flash.display.*;
public dynamic class button_submit_64 extends MovieClip {
public var button:SimpleButton;
public function button_submit_64(){
addFrameScript(0, frame1, 19, frame20, 24, frame25);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame25(){
gotoAndStop(1);
}
}
}//package k_fla
Section 38
//button_tutorial_157 (k_fla.button_tutorial_157)
package k_fla {
import flash.display.*;
public dynamic class button_tutorial_157 extends MovieClip {
public var button:SimpleButton;
public function button_tutorial_157(){
addFrameScript(0, frame1, 19, frame20, 24, frame25);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame25(){
gotoAndStop(1);
}
}
}//package k_fla
Section 39
//button_viewScores_153 (k_fla.button_viewScores_153)
package k_fla {
import flash.display.*;
public dynamic class button_viewScores_153 extends MovieClip {
public var button:SimpleButton;
public function button_viewScores_153(){
addFrameScript(0, frame1, 19, frame20, 24, frame25);
}
function frame1(){
stop();
}
function frame20(){
stop();
}
function frame25(){
gotoAndStop(1);
}
}
}//package k_fla
Section 40
//chameleon_anims_129 (k_fla.chameleon_anims_129)
package k_fla {
import flash.display.*;
public dynamic class chameleon_anims_129 extends MovieClip {
public function chameleon_anims_129(){
addFrameScript(14, frame15, 31, frame32, 50, frame51);
}
function frame15(){
gotoAndPlay("breathe");
}
function frame32(){
gotoAndPlay("move");
}
function frame51(){
gotoAndPlay("breathe");
}
}
}//package k_fla
Section 41
//chameleon_gear_141 (k_fla.chameleon_gear_141)
package k_fla {
import flash.display.*;
public dynamic class chameleon_gear_141 extends MovieClip {
public function chameleon_gear_141(){
addFrameScript(14, frame15, 31, frame32, 46, frame47, 65, frame66);
}
function frame15(){
gotoAndPlay("breathe");
}
function frame32(){
gotoAndPlay("move");
}
function frame47(){
gotoAndPlay("breathe");
}
function frame66(){
gotoAndPlay("kiteLoop");
}
}
}//package k_fla
Section 42
//fruitsstopped_53 (k_fla.fruitsstopped_53)
package k_fla {
import flash.display.*;
public dynamic class fruitsstopped_53 extends MovieClip {
public function fruitsstopped_53(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 43
//fruitwin_93 (k_fla.fruitwin_93)
package k_fla {
import flash.display.*;
public dynamic class fruitwin_93 extends MovieClip {
public function fruitwin_93(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 44
//Kmilion_anim_127 (k_fla.Kmilion_anim_127)
package k_fla {
import flash.display.*;
public dynamic class Kmilion_anim_127 extends MovieClip {
public var gear:MovieClip;
public var kmilion:MovieClip;
public var chamshadow:MovieClip;
public function Kmilion_anim_127(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 45
//leafGroup3_194 (k_fla.leafGroup3_194)
package k_fla {
import flash.display.*;
public dynamic class leafGroup3_194 extends MovieClip {
public function leafGroup3_194(){
addFrameScript(0, frame1, 9, frame10);
}
function frame1(){
stop();
}
function frame10(){
stop();
}
}
}//package k_fla
Section 46
//leafGroup3ALT_59 (k_fla.leafGroup3ALT_59)
package k_fla {
import flash.display.*;
public dynamic class leafGroup3ALT_59 extends MovieClip {
public function leafGroup3ALT_59(){
addFrameScript(0, frame1, 9, frame10);
}
function frame1(){
stop();
}
function frame10(){
stop();
}
}
}//package k_fla
Section 47
//leafGroup4_195 (k_fla.leafGroup4_195)
package k_fla {
import flash.display.*;
public dynamic class leafGroup4_195 extends MovieClip {
public function leafGroup4_195(){
addFrameScript(0, frame1, 14, frame15);
}
function frame1(){
stop();
}
function frame15(){
stop();
}
}
}//package k_fla
Section 48
//leafGroup4ALT_60 (k_fla.leafGroup4ALT_60)
package k_fla {
import flash.display.*;
public dynamic class leafGroup4ALT_60 extends MovieClip {
public function leafGroup4ALT_60(){
addFrameScript(0, frame1, 14, frame15);
}
function frame1(){
stop();
}
function frame15(){
stop();
}
}
}//package k_fla
Section 49
//leafGroup5_196 (k_fla.leafGroup5_196)
package k_fla {
import flash.display.*;
public dynamic class leafGroup5_196 extends MovieClip {
public function leafGroup5_196(){
addFrameScript(0, frame1, 14, frame15);
}
function frame1(){
stop();
}
function frame15(){
stop();
}
}
}//package k_fla
Section 50
//leafGroup5ALT_61 (k_fla.leafGroup5ALT_61)
package k_fla {
import flash.display.*;
public dynamic class leafGroup5ALT_61 extends MovieClip {
public function leafGroup5ALT_61(){
addFrameScript(0, frame1, 14, frame15);
}
function frame1(){
stop();
}
function frame15(){
stop();
}
}
}//package k_fla
Section 51
//lobtn_121 (k_fla.lobtn_121)
package k_fla {
import flash.display.*;
public dynamic class lobtn_121 extends MovieClip {
public function lobtn_121(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 52
//luxintro_202 (k_fla.luxintro_202)
package k_fla {
import flash.display.*;
public dynamic class luxintro_202 extends MovieClip {
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public function luxintro_202(){
addFrameScript(9, frame10);
}
function frame10(){
group5.gotoAndPlay("go");
group4.gotoAndPlay("go");
group3.gotoAndPlay("go");
}
}
}//package k_fla
Section 53
//MainTimeline (k_fla.MainTimeline)
package k_fla {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import com.newgrounds.components.*;
import flash.net.*;
import mochi.as3.*;
import flash.media.*;
import com.lifeztream.debug.*;
import flash.text.*;
import flash.geom.*;
import flash.system.*;
import flash.errors.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.ui.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var __id1_:APIConnector;
public var chameleon:MovieClip;
public var skipbtn:MovieClip;
public var __setPropDict:Dictionary;
public var url1:String;
public var urlStart1:Number;
public var urlEnd1:Number;
public var domain1:String;
public var lastDot1:Number;
public var domEnd1:Number;
public var timer5:int;
public var timer4:int;
public var timer7:int;
public var timer8:int;
public var stageW:int;
public var stageH:int;
public var frame:String;
public var menroll:menuroll;
public var menselection:menuselection;
public var shootgun:gunshot;
public var coincollect:collectcoin;
public var slotslose:loseslots;
public var soundgameover:gameoversound;
public var stopslot:slotstop;
public var winslots:slotswin;
public var kaching:spendcoins;
public var exp1:explodesound1;
public var exp2:explodesound2;
public var music:musicloop;
public var menuloop:titlesounds;
public var bombboom;
public var bubblessound:bubbles;
public var hitcombo:special1;
public var hitgem:special2;
public var ouch:hitsquirrel;
public var warning:warningfull;
public var loseall:losegems;
public var stunTime:int;
public var stageRect:Rectangle;
public var bgFade:ColorTransform;
public var bgBmp:BitmapData;
public var bgBit:Bitmap;
public var epBmp:BitmapData;
public var epBit:Bitmap;
public var cexplode:crossexplode;
public var gexplode:gemsexplode;
public var lexplode:lineexplode;
public var sexplode:smallexplode;
public var lstrike:lightningstrike;
public var downKeys:Object;
public var titTimer:int;
public var screenState:String;
public var gameState:String;
public var menuSelect:int;
public var transTo:String;
public var soundOn:Boolean;
public var speedinc:Boolean;
public var rocksDestroyed:int;
public var powersUsed:int;
public var invaders:Array;
public var bullets:Array;
public var squirrelBullets:Array;
public var slots:Array;
public var coins:Array;
public var explosions:Array;
public var trails:Array;
public var combos:Array;
public var deads:Array;
public var coinhits:Array;
public var tripples:Array;
public var beams:Array;
public var lightnings:Array;
public var wipers:Array;
public var upwipers:Array;
public var titleEnemies:Array;
public var crossExplodes:Array;
public var gemExplodes:Array;
public var smallExplodes:Array;
public var lineExplodes:Array;
public var lightningStrikes:Array;
public var coinQueue:Array;
public var bulges:Array;
public var squirrelShoots:Array;
public var webs:Array;
public var rumble:int;
public var colours:int;
public var moves:int;
public var maxMoves:int;
public var moving:Boolean;
public var moveTimer:Number;
public var stopTimer:int;
public var outcome:int;
public var spinning:Boolean;
public var spinTimer:int;
public var playerMoving:int;
public var playerSpeed:int;
public var enemySpeed:int;
public var colourList:Array;
public var cols:Array;
public var score:int;
public var combo:int;
public var credits:int;
public var playerDead:int;
public var game:Sprite;
public var bulletHolder:Sprite;
public var ship:player;
public var GUI:gui;
public var gaugeTimer:int;
public var bgTimer:int;
public var messScrolling;
public var bgSprite:Sprite;
public var TITLE:title;
public var GAMEOVER:gameover;
public var TRANS:trans;
public var CREDITS:creds;
public var TUTORIAL:tutorial;
public var GRG:getreadygo;
public var INSTRUCTIONS:instructions;
public var MESS:messagebox;
public var PAUSE:pausedmenu;
public var bgart:backgroundart;
public var water:waterAnim;
public var stunAnim:stunned;
public var scoreCounts:Object;
public var squirrelClick;
public var qual:int;
public var audio:int;
public var lastScore:int;
public var fps:FPS;
public function MainTimeline(){
__setPropDict = new Dictionary(true);
super();
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8);
}
public function clickskip(_arg1:MouseEvent):void{
gotoAndStop(7);
}
public function updatelogo5(_arg1:Event):void{
timer5++;
if (timer5 >= 90){
this.removeEventListener(Event.ENTER_FRAME, updatelogo5);
stage.removeEventListener(MouseEvent.MOUSE_UP, getLink5);
nextFrame();
};
}
public function getLink5(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.newgrounds.com");
navigateToURL(_local2, "_blank");
}
public function updatelogo4(_arg1:Event):void{
timer4++;
if (timer4 >= 90){
this.removeEventListener(Event.ENTER_FRAME, updatelogo4);
stage.removeEventListener(MouseEvent.MOUSE_UP, getLink4);
nextFrame();
};
}
public function getLink4(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.alillm.com");
navigateToURL(_local2, "_blank");
}
public function updatelogo7(_arg1:Event):void{
timer7++;
if (timer7 >= 90){
this.removeEventListener(Event.ENTER_FRAME, updatelogo7);
stage.removeEventListener(MouseEvent.MOUSE_UP, getLink7);
nextFrame();
};
}
public function getLink7(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.luxgames.net/blog/");
navigateToURL(_local2, "_blank");
}
public function updatelogo8(_arg1:Event):void{
timer8++;
if (timer8 >= 42){
this.removeEventListener(Event.ENTER_FRAME, updatelogo8);
nextFrame();
};
}
public function init():void{
score = 0;
TITLE = new title();
TITLE.playbtn.addEventListener(MouseEvent.ROLL_OVER, rollover);
TITLE.playbtn.addEventListener(MouseEvent.ROLL_OUT, rollout);
TITLE.playbtn.addEventListener(MouseEvent.CLICK, clickplay);
TITLE.creditsbtn.addEventListener(MouseEvent.ROLL_OVER, rollover);
TITLE.creditsbtn.addEventListener(MouseEvent.ROLL_OUT, rollout);
TITLE.creditsbtn.addEventListener(MouseEvent.CLICK, clickcredits);
TITLE.tutorialbtn.addEventListener(MouseEvent.ROLL_OVER, rollover);
TITLE.tutorialbtn.addEventListener(MouseEvent.ROLL_OUT, rollout);
TITLE.tutorialbtn.addEventListener(MouseEvent.CLICK, clicktutorial);
TITLE.morebtn.addEventListener(MouseEvent.ROLL_OVER, rollover);
TITLE.morebtn.addEventListener(MouseEvent.ROLL_OUT, rollout);
TITLE.morebtn.addEventListener(MouseEvent.CLICK, clickmore);
TITLE.viewbtn.addEventListener(MouseEvent.ROLL_OVER, rollover);
TITLE.viewbtn.addEventListener(MouseEvent.ROLL_OUT, rollout);
TITLE.viewbtn.addEventListener(MouseEvent.CLICK, clickview);
TITLE.qualitytoggle.addEventListener(MouseEvent.CLICK, togglequality);
TITLE.audiotoggle.addEventListener(MouseEvent.CLICK, toggleaudio);
TITLE.qualitytoggle.addEventListener(MouseEvent.ROLL_OVER, rollover2);
TITLE.qualitytoggle.addEventListener(MouseEvent.ROLL_OUT, rollout2);
TITLE.audiotoggle.addEventListener(MouseEvent.ROLL_OVER, rollover2);
TITLE.audiotoggle.addEventListener(MouseEvent.ROLL_OUT, rollout2);
addChild(TITLE);
GAMEOVER = new gameover();
GAMEOVER.x = -900;
GAMEOVER.submit.addEventListener(MouseEvent.ROLL_OVER, rollover);
GAMEOVER.submit.addEventListener(MouseEvent.ROLL_OUT, rollout);
GAMEOVER.submit.addEventListener(MouseEvent.CLICK, clicksubmit);
GAMEOVER.back.addEventListener(MouseEvent.CLICK, clickback);
GAMEOVER.more.addEventListener(MouseEvent.ROLL_OVER, rollover);
GAMEOVER.more.addEventListener(MouseEvent.ROLL_OUT, rollout);
GAMEOVER.more.addEventListener(MouseEvent.CLICK, clickmore);
MESS = new messagebox();
MESS.y = (stageH / 2);
MESS.x = -300;
addChild(MESS);
CREDITS = new creds();
CREDITS.x = -900;
CREDITS.back.addEventListener(MouseEvent.CLICK, clickback);
TUTORIAL = new tutorial();
TUTORIAL.x = -900;
TUTORIAL.back.addEventListener(MouseEvent.CLICK, clickback);
TUTORIAL.squirrel.addEventListener(MouseEvent.CLICK, clickSqu);
GUI = new gui();
addChild(GUI);
GUI.qualitytoggle.addEventListener(MouseEvent.CLICK, togglequality);
GUI.audiotoggle.addEventListener(MouseEvent.CLICK, toggleaudio);
GUI.audiotoggle.addEventListener(MouseEvent.ROLL_OVER, rollover2);
GUI.audiotoggle.addEventListener(MouseEvent.ROLL_OUT, rollout2);
GUI.qualitytoggle.mouseChildren = false;
GUI.audiotoggle.mouseChildren = false;
TITLE.qualitytoggle.mouseChildren = false;
TITLE.audiotoggle.mouseChildren = false;
GUI.x = -900;
GUI.machine.score.n1.stop();
GUI.machine.score.n2.stop();
GUI.machine.score.n3.stop();
GUI.machine.score.n4.stop();
GUI.machine.score.n5.stop();
GUI.machine.score.n6.stop();
PAUSE = new pausedmenu();
addChild(PAUSE);
PAUSE.y = (stageH / 2);
PAUSE.x = -800;
TRANS = new trans();
addChild(TRANS);
}
public function startGame():void{
var _local2:int;
rocksDestroyed = 0;
powersUsed = 0;
SoundMixer.stopAll();
stage.focus = stage;
music.play(0, 9999);
if (qual == 1){
stage.quality = StageQuality.LOW;
};
stunTime = 0;
score = 0;
colours = 3;
maxMoves = 2;
moving = false;
stopTimer = 100;
var _local1:int;
while (_local1 < 14) {
slots[_local1] = new Array();
_local2 = 0;
while (_local2 < 14) {
slots[_local1][_local2] = 0;
_local2++;
};
_local1++;
};
gameState = "start";
addChild(bgSprite);
game = new Sprite();
addChild(game);
bulletHolder = new Sprite();
game.addChild(bgart);
game.addChild(bulletHolder);
addChild(epBit);
addChild(bgBit);
ship = new player();
game.addChild(ship);
addChild(stunAnim);
stunAnim.x = -800;
stunAnim.y = 410;
ship.x = ((stageW / 2) + 30);
ship.y = (stageH - 20);
ship.chameleon.kmilion.gotoAndPlay("breathe");
ship.chameleon.gear.gotoAndPlay("breathe");
ship.chameleon.gear.alpha = 0;
game.addChild(water);
water.x = 0;
water.y = (stageH + 150);
trace("4");
removeChild(GUI);
addChild(GUI);
trace("5");
GUI.x = 605;
GUI.machine.fruit.row1.gotoAndPlay((int((Math.random() * 10)) + 1));
GUI.machine.fruit.row2.gotoAndPlay((int((Math.random() * 10)) + 1));
GUI.machine.fruit.row3.gotoAndPlay((int((Math.random() * 10)) + 1));
trace("6");
GUI.machine.pink.gotoAndStop(1);
GUI.machine.score.n1.gotoAndStop(1);
GUI.machine.score.n2.gotoAndStop(1);
GUI.machine.score.n3.gotoAndStop(1);
GUI.machine.score.n4.gotoAndStop(1);
GUI.machine.score.n5.gotoAndStop(1);
GUI.machine.score.n6.gotoAndStop(1);
trace("7");
invaders = new Array();
moves = 41;
moving = true;
GRG = new getreadygo();
trace("8");
addChild(GRG);
GRG.x = 130;
GRG.y = 200;
score = 0;
credits = 0;
GUI.creds.text = "0";
GUI.squirrels.x = (ship.x - 605);
GUI.pipe.scaleX = (((GUI.squirrels.x - 78) * -1) / 150);
newEnemy();
removeChild(PAUSE);
addChild(PAUSE);
removeChild(TRANS);
addChild(TRANS);
}
public function rollover(_arg1:MouseEvent):void{
menroll.play();
_arg1.target.gotoAndPlay("over");
}
public function rollout(_arg1:MouseEvent):void{
_arg1.target.gotoAndPlay("out");
}
public function rollover2(_arg1:MouseEvent):void{
_arg1.target.gotoAndStop(2);
}
public function rollout2(_arg1:MouseEvent):void{
_arg1.target.gotoAndStop(1);
}
public function clickSqu(_arg1:MouseEvent):void{
if (squirrelClick == false){
squirrelClick = true;
API.unlockMedal("Squirrel Toucher");
};
}
public function clickplay(_arg1:MouseEvent):void{
removeChild(TRANS);
addChild(TRANS);
menselection.play();
transTo = "game";
screenState = "trans";
TRANS.play();
}
public function clickcredits(_arg1:MouseEvent):void{
removeChild(TRANS);
addChild(TRANS);
menselection.play();
transTo = "credits";
screenState = "trans";
TRANS.play();
}
public function clicktutorial(_arg1:MouseEvent):void{
removeChild(TRANS);
addChild(TRANS);
menselection.play();
transTo = "tutorial";
TRANS.play();
screenState = "trans";
}
public function clickmore(_arg1:MouseEvent):void{
menselection.play();
var _local2:* = new URLRequest("http://www.newgrounds.com");
navigateToURL(_local2, "_blank");
}
public function clicksubmit(_arg1:MouseEvent):void{
menselection.play();
transTo = "submitscore";
TRANS.play();
screenState = "trans";
}
public function clickview(_arg1:MouseEvent):void{
menselection.play();
transTo = "showscore";
TRANS.play();
screenState = "trans";
}
public function clickback(_arg1:MouseEvent):void{
menselection.play();
transTo = "title";
TRANS.play();
screenState = "trans";
}
public function togglequality(_arg1:MouseEvent):void{
if (qual == 1){
qual = 0;
_arg1.target.mc.gotoAndStop(2);
if ((((gameState == "start")) || ((gameState == "playing")))){
stage.quality = StageQuality.BEST;
};
} else {
qual = 1;
_arg1.target.mc.gotoAndStop(1);
if ((((gameState == "start")) || ((gameState == "playing")))){
stage.quality = StageQuality.LOW;
};
};
}
public function toggleaudio(_arg1:MouseEvent):void{
if (audio == 1){
SoundMixer.soundTransform = new SoundTransform(0, 0);
audio = 0;
_arg1.target.mc.gotoAndStop(2);
} else {
SoundMixer.soundTransform = new SoundTransform(1, 0);
audio = 1;
_arg1.target.mc.gotoAndStop(1);
};
}
public function endGame():void{
SoundMixer.stopAll();
menuloop.play(0, 9999);
speedinc = false;
removeChild(stunAnim);
colours = 3;
moves = 4;
maxMoves = 2;
moving = false;
moveTimer = 2;
stopTimer = 100;
outcome = 0;
spinning = false;
spinTimer = 0;
playerMoving = 0;
playerSpeed = 10;
enemySpeed = 28;
combo = 0;
credits = 0;
playerDead = 0;
gaugeTimer = 0;
bgTimer = 0;
messScrolling = false;
removeChild(bgSprite);
removeChild(game);
removeChild(bgBit);
GUI.x = -800;
invaders = new Array();
bullets = new Array();
slots = new Array();
coins = new Array();
explosions = new Array();
trails = new Array();
combos = new Array();
deads = new Array();
coinhits = new Array();
tripples = new Array();
beams = new Array();
lightnings = new Array();
wipers = new Array();
upwipers = new Array();
squirrelBullets = new Array();
crossExplodes = new Array();
gemExplodes = new Array();
lineExplodes = new Array();
lightningStrikes = new Array();
coinQueue = new Array();
bulges = new Array();
squirrelShoots = new Array();
webs = new Array();
game.removeChild(ship);
}
public function thumbover(_arg1:MouseEvent):void{
_arg1.target.gotoAndStop(2);
}
public function thumbout(_arg1:MouseEvent):void{
_arg1.target.gotoAndStop(1);
}
public function stopScores():void{
var _local1 = 1;
while (_local1 <= 6) {
var _local2 = scoreCounts;
var _local3 = ("n" + _local1);
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
if (scoreCounts[("n" + _local1)] <= 0){
scoreCounts[("n" + _local1)] = 0;
GUI.machine.score[("n" + _local1)].stop();
};
_local1++;
};
if (gaugeTimer > 0){
gaugeTimer--;
};
}
public function updateScore():void{
var _local4:int;
var _local5:*;
var _local1:String = String(score);
var _local2:int = _local1.length;
var _local3:int = (6 - _local2);
while (_local3 < 6) {
_local4 = Number(_local1.charAt((_local3 - (6 - _local2))));
_local5 = ((((_local4 * 6) + 1) - GUI.machine.score[("n" + (_local3 + 1))].currentFrame) + 1);
if (_local5 < 0){
_local5 = (_local5 + 60);
};
if (_local5 >= 0){
scoreCounts[("n" + (_local3 + 1))] = _local5;
GUI.machine.score[("n" + (_local3 + 1))].play();
};
_local3++;
};
}
public function newTripple(_arg1:int):void{
var _local2:tripple = new tripple();
_local2.x = (stageW / 2);
_local2.y = (stageH / 2);
_local2.alpha = 0.7;
_local2.timer = 0;
tripples.push(_local2);
_local2.mc.mc.gotoAndStop(_arg1);
game.addChild(_local2);
}
public function updateTripples():void{
var _local2:tripple;
var _local1:int;
while (_local1 < tripples.length) {
_local2 = tripples[_local1];
_local2.timer++;
if (_local2.timer >= 24){
game.removeChild(_local2);
tripples.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newBeam():void{
var _local2:int;
var _local5:int;
var _local1:Boolean;
var _local3:int;
while (_local1 != true) {
_local3++;
if (_local3 > 40){
return;
};
_local2 = int((Math.random() * 12));
_local5 = 0;
while (_local5 < slots[_local2].length) {
if (slots[_local2][_local5] != 0){
newLineExplode(40, ((_local2 * 56) + 30));
_local1 = true;
break;
};
_local5++;
};
};
var _local4:int;
while (_local4 < slots[_local2].length) {
if (slots[_local2][_local4] != 0){
if (slots[_local2][_local4].currentFrame != 10){
slots[_local2][_local4].dead = true;
};
};
_local4++;
};
}
public function updateBeams():void{
var _local2:*;
var _local1:int;
while (_local1 < beams.length) {
_local2 = beams[_local1];
if ((((_local2.scaleY < 1)) && ((_local2.timer == 30)))){
_local2.scaleY = (_local2.scaleY + 0.2);
} else {
_local2.timer--;
if (_local2.timer <= 0){
_local2.scaleY = (_local2.scaleY - 0.2);
if (_local2.scaleY <= 0){
game.removeChild(_local2);
beams.splice(_local1, 1);
_local1--;
};
};
};
_local1++;
};
}
public function newLightnings():void{
var _local3:int;
var _local1:int = int((Math.random() * 5));
var _local2:int = (int((Math.random() * 5)) + 5);
newLightningStrike(((_local1 * 56) + 30), 10);
newLightningStrike(((_local2 * 56) + 30), 10);
_local3 = 0;
while (_local3 < 14) {
if (slots[_local3][_local1] != 0){
if (slots[_local3][_local1].currentFrame != 10){
slots[_local3][_local1].dead = true;
};
};
if (slots[_local3][_local2] != 0){
if (slots[_local3][_local2].currentFrame != 10){
slots[_local3][_local2].dead = true;
};
};
_local3++;
};
}
public function updateLightnings():void{
var _local2:Object;
var _local3:int;
var _local4:int;
var _local1:int;
while (_local1 < lightnings.length) {
_local2 = lightnings[_local1];
_local2.timer--;
if (_local2.timer <= 0){
lightnings.splice(_local1, 1);
_local1--;
} else {
_local2.spr.graphics.clear();
_local2.spr.graphics.moveTo(_local2.x, 0);
_local2.spr.graphics.lineStyle(4, 0xFFFFFF, 1);
_local3 = 0;
_local4 = 0;
while (_local4 < 28) {
_local3 = (_local3 + 20);
_local2.spr.graphics.lineTo(((_local2.x + (Math.random() * 10)) - (Math.random() * 10)), _local3);
_local4++;
};
bgBmp.draw(_local2.spr);
};
_local1++;
};
}
public function newBooms():void{
var _local2:int;
var _local3:Boolean;
var _local4:int;
var _local5:int;
var _local1:int;
while (_local1 < 4) {
if ((_local1 + 2) > invaders.length){
return;
};
_local2 = 0;
_local3 = false;
_local4 = 0;
_local5 = 0;
while (!(_local3)) {
_local2++;
if (_local2 > 30){
break;
};
_local4 = (Math.random() * 14);
_local5 = (Math.random() * 14);
if (slots[_local5][_local4] != 0){
if (slots[_local5][_local4].currentFrame != 10){
killEnemies(slots[_local5][_local4]);
};
_local3 = true;
};
};
newExplosion2(((_local4 * 40) + 20), ((_local5 * 40) + 20));
_local1++;
};
}
public function newWiper():void{
var _local1:int = (Math.random() * colours);
var _local2:Object = new Object();
_local2.col = _local1;
_local2.x = 0;
_local2.spr = new Sprite();
wipers.push(_local2);
}
public function updateWipers():void{
var _local2:Object;
var _local3:int;
var _local4:int;
var _local1:int;
while (_local1 < wipers.length) {
_local2 = wipers[_local1];
_local2.x = (_local2.x + 10);
if (_local2.x > (stageW - 10)){
wipers.splice(_local1, 1);
_local1--;
} else {
_local2.spr.graphics.clear();
_local2.spr.graphics.beginFill(cols[_local2.col]);
_local2.spr.graphics.drawRect(_local2.x, 0, 10, stageH);
_local2.spr.graphics.endFill();
bgBmp.draw(_local2.spr);
_local3 = Math.floor((_local2.x / 56));
_local4 = 0;
while (_local4 < 14) {
if (_local3 > 0){
if (slots[_local4][(_local3 - 1)] != 0){
if (slots[_local4][(_local3 - 1)].currentFrame == (_local2.col + 1)){
slots[_local4][(_local3 - 1)].dead = true;
};
};
};
if (slots[_local4][_local3] != 0){
if (slots[_local4][_local3].currentFrame == (_local2.col + 1)){
slots[_local4][_local3].dead = true;
};
};
_local4++;
};
};
_local1++;
};
}
public function newUpWiper():void{
var _local1:Object = new Object();
_local1.y = stageH;
_local1.timer = 50;
water.gotoAndPlay(2);
bubblessound.play();
_local1.spr = new Sprite();
upwipers.push(_local1);
}
public function updateUpWipers():void{
var _local2:Object;
var _local3:int;
var _local4:int;
var _local1:int;
while (_local1 < upwipers.length) {
_local2 = upwipers[_local1];
if (_local2.y < (stageW / 2)){
_local2.timer--;
} else {
_local2.y = (_local2.y - 6);
};
if (_local2.timer <= 0){
upwipers.splice(_local1, 1);
_local1--;
} else {
_local3 = Math.floor((_local2.y / 56));
_local4 = 0;
while (_local4 < 14) {
if (_local3 < 10){
if (slots[(_local3 + 1)][_local4] != 0){
if (slots[(_local3 + 1)][_local4].currentFrame != 10){
slots[(_local3 + 1)][_local4].dead = true;
};
};
};
if (slots[_local3][_local4] != 0){
if (slots[_local1][_local4].currentFrame != 10){
slots[_local3][_local4].dead = true;
};
};
_local4++;
};
};
_local1++;
};
}
public function updateSquirrelShoots():void{
var _local2:squirrelbullet;
var _local3:Number;
var _local1:int;
while (_local1 < squirrelShoots.length) {
if ((squirrelShoots[_local1].timer % 4) == 0){
if (squirrelShoots[_local1].timer < 20){
squirrelShoots[_local1].ang = (squirrelShoots[_local1].ang + 18);
} else {
squirrelShoots[_local1].ang = (squirrelShoots[_local1].ang - 36);
};
_local2 = new squirrelbullet();
_local2.x = (squirrelShoots[_local1].x - (squirrelShoots[_local1].scaleX * 20));
_local2.y = (squirrelShoots[_local1].y - 40);
_local3 = ((((squirrelShoots[_local1].scaleX + 1) * 90) + (squirrelShoots[_local1].ang * squirrelShoots[_local1].scaleX)) * (Math.PI / 180));
_local2.xv = (Math.cos(_local3) * 30);
_local2.yv = (Math.sin(_local3) * 30);
_local2.rotation = (_local3 * (180 / Math.PI));
_local2.x = (_local2.x + _local2.xv);
_local2.y = (_local2.y + _local2.yv);
game.addChild(_local2);
squirrelBullets.push(_local2);
};
squirrelShoots[_local1].timer++;
if (squirrelShoots[_local1].timer == 31){
squirrelShoots[_local1].timer = 0;
squirrelShoots[_local1].ang = 0;
squirrelShoots[_local1].checkme = true;
};
if ((((squirrelShoots[_local1].mc.currentFrame == 30)) && ((squirrelShoots[_local1].checkme == true)))){
game.removeChild(squirrelShoots[_local1]);
squirrelShoots.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newSpreadShot():void{
var _local1:squirrelshoot = new squirrelshoot();
game.addChild(_local1);
_local1.x = 75;
_local1.timer = 0;
_local1.ang = 0;
_local1.checkme = false;
_local1.scaleX = -1;
_local1.y = stageH;
squirrelShoots.push(_local1);
var _local2:squirrelshoot = new squirrelshoot();
game.addChild(_local2);
_local2.x = (stageW - 20);
_local2.timer = 0;
_local2.checkme = false;
_local2.ang = 0;
_local2.y = stageH;
squirrelShoots.push(_local2);
}
public function newWeb(_arg1:int, _arg2:int):void{
var _local3:spiderweb = new spiderweb();
_local3.x = _arg1;
_local3.y = _arg2;
game.addChild(_local3);
webs.push(_local3);
}
public function updateWebs():void{
var _local2:spiderweb;
var _local1:int;
while (_local1 < webs.length) {
_local2 = webs[_local1];
_local2.y = (_local2.y + 7);
if (_local2.y > (stageH - 15)){
game.removeChild(_local2);
webs.splice(_local1, 1);
_local1--;
} else {
if ((((((_local2.y > (stageH - 50))) && ((_local2.x > (ship.x - 30))))) && ((_local2.x < (ship.x + 30))))){
ship.chameleon.kmilion.gotoAndPlay("breathe");
ship.chameleon.gear.gotoAndPlay("breathe");
frame = "breathe";
stunTime = 60;
stunAnim.x = ship.x;
game.removeChild(_local2);
webs.splice(_local1, 1);
_local1--;
};
};
_local1++;
};
}
public function updateEnemies():void{
var _local2:enemy;
var _local3:int;
var _local1:int = (invaders.length - 1);
while (_local1 >= 0) {
_local2 = invaders[_local1];
if (_local2.changeto != 0){
_local2.rev = _local2.changeto;
_local2.changeto = 0;
};
if (_local2.currentFrame == 9){
if (_local2.mc.currentFrame == 19){
_local2.dead = true;
};
} else {
if (_local2.currentFrame == 5){
_local3 = (Math.random() * 160);
if (_local3 == 0){
newWeb(_local2.x, _local2.y);
};
};
};
if (_local2.dir == 1){
if (_local2.rev == 1){
_local2.y = (_local2.y + (enemySpeed + _local2.extra));
} else {
_local2.y = (_local2.y - 14);
};
} else {
if (_local2.dir == 2){
if (_local2.rev == 1){
_local2.x = (_local2.x + (enemySpeed + _local2.extra));
} else {
_local2.x = (_local2.x - 14);
};
} else {
if (_local2.dir == 3){
if (_local2.rev == 1){
_local2.x = (_local2.x - (enemySpeed + _local2.extra));
} else {
_local2.x = (_local2.x + 14);
};
};
};
};
_local2.extra2 = _local2.extra;
_local2.extra = 0;
_local1--;
};
}
public function checkDead():void{
var _local2:enemy;
var _local1:int;
while (_local1 < invaders.length) {
_local2 = invaders[_local1];
if ((((((_local2.y >= (stageH - 30))) && ((Math.abs((ship.x - _local2.x)) <= 35)))) && ((gameState == "playing")))){
soundgameover.play();
playerDead = 30;
newDeathAnim(ship.x, ship.y);
ship.y = (stageH + 50);
gameState = "dead";
};
if (_local2.dead == true){
if (_local2 != invaders[(invaders.length - 1)]){
if (_local2.currentFrame != 9){
combo++;
if (_local2.currentFrame == 6){
newCrossExplode(_local2.x, _local2.y);
explodeBomb(_local2);
bombboom.play();
} else {
if (_local2.currentFrame == 8){
newGemBoom(_local2.x, _local2.y);
newGemExplode(_local2.x, _local2.y);
hitgem.play();
} else {
if (_local2.currentFrame == 9){
rocksDestroyed++;
if (rocksDestroyed == 20){
API.unlockMedal("Rock Solid");
};
} else {
newSmallExplode(_local2.x, _local2.y);
};
};
};
};
score = (score + (11 * (combo * 2)));
if (score > 999999){
score = 999999;
};
updateScore();
game.removeChild(_local2);
invaders.splice(_local1, 1);
_local1--;
} else {
_local2.dead = false;
};
};
_local1++;
};
combo = 0;
if (score > ((maxMoves * maxMoves) * 100)){
maxMoves++;
if ((maxMoves % 2) == 0){
if (enemySpeed < 30){
enemySpeed++;
};
};
if (maxMoves == 10){
colours++;
messScrolling = true;
MESS.gotoAndStop(2);
} else {
if (maxMoves == 16){
colours++;
messScrolling = true;
MESS.gotoAndStop(2);
};
};
};
}
public function newEnemy(_arg1:int=0):void{
var _local7:int;
var _local8:int;
var _local9:int;
var _local2:enemy = new enemy();
_local2.x = 50;
_local2.y = -10;
if (_arg1 < 0){
_local2.y = (_local2.y - _arg1);
};
_local2.dir = 1;
_local2.downTime = (56 + _arg1);
_local2.dead = false;
_local2.rev = 1;
_local2.health = 1;
_local2.extra = 0;
_local2.extra2 = 0;
_local2.changeto = 0;
var _local3:int = (30 - maxMoves);
if (_local3 < 16){
_local3 = 16;
};
var _local4 = 50;
var _local5 = 1;
var _local6 = 1;
if (maxMoves > 8){
_local5 = (Math.random() * _local3);
};
if (maxMoves > 12){
};
if (_local5 == 0){
_local2.gotoAndStop(9);
_local2.health = 3;
} else {
if (_local6 == 0){
_local2.gotoAndStop(10);
} else {
_local7 = (Math.random() * 20);
if (_local7 == 0){
_local8 = 3;
_local9 = (Math.random() * _local8);
_local2.gotoAndStop((6 + _local9));
} else {
_local2.gotoAndStop((int((Math.random() * colours)) + 1));
};
};
};
invaders.push(_local2);
game.addChild(_local2);
}
public function checkConnection(_arg1:int, _arg2:int, _arg3:int, _arg4:int=1):Boolean{
var _local9:int;
var _local5:Boolean;
var _local6:int;
var _local7:int = Math.floor(((_arg1 - 50) / 56));
var _local8:int = Math.floor(((_arg2 - 46) / 56));
if (_arg4 == 1){
if (_arg3 == (invaders.length - 1)){
return (true);
};
} else {
if (_arg3 == 0){
return (true);
};
};
if ((((_local7 > 0)) && ((_local7 < 8)))){
_local6 = (_local6 + Math.abs((invaders[_arg3].x - invaders[(_arg3 + _arg4)].x)));
if (Math.abs((invaders[_arg3].y - invaders[(_arg3 + _arg4)].y)) >= 56){
_local6 = (_local6 + 200);
} else {
_local6 = (_local6 + Math.abs((invaders[_arg3].y - invaders[(_arg3 + _arg4)].y)));
};
} else {
_local6 = (_local6 + Math.abs((invaders[_arg3].x - invaders[(_arg3 + _arg4)].x)));
_local6 = (_local6 + Math.abs((invaders[_arg3].y - invaders[(_arg3 + _arg4)].y)));
};
if (_local6 > 56){
_local5 = false;
} else {
if ((((((_arg4 == 1)) && ((_local6 < 56)))) && ((invaders[_arg3].rev == -1)))){
_local9 = _arg3;
while (_local9 >= 0) {
invaders[_local9].extra = (56 - _local6);
if (checkConnection(invaders[_local9].x, invaders[_local9].y, _local9, -1) == false){
break;
};
_local9--;
};
};
};
return (_local5);
}
public function changeDirs():void{
var _local5:int;
var _local6:enemy;
var _local7:int;
var _local8:int;
var _local1:int;
while (_local1 < 14) {
slots[_local1] = new Array();
_local5 = 0;
while (_local5 < 14) {
slots[_local1][_local5] = 0;
_local5++;
};
_local1++;
};
var _local2 = 1;
var _local3:Boolean;
var _local4:int = (invaders.length - 1);
while (_local4 >= 0) {
_local6 = invaders[_local4];
_local7 = Math.floor(((_local6.x - 50) / 56));
_local8 = Math.floor(((_local6.y - 46) / 56));
if (_local8 >= 0){
slots[_local8][_local7] = _local6;
};
if (_local3 == false){
if (checkConnection(_local6.x, _local6.y, _local4) == false){
_local3 = true;
};
};
if (_local3 == true){
_local6.changeto = -1;
} else {
_local6.changeto = 1;
};
if (_local6.dir == 1){
if (_local6.rev == 1){
_local6.downTime = (_local6.downTime - (enemySpeed + _local6.extra2));
if (_local6.downTime <= 0){
_local6.y = (_local6.y + _local6.downTime);
if (_local6 == invaders[(invaders.length - 1)]){
_local2 = _local6.downTime;
};
if (_local6.x < (stageW / 2)){
_local6.dir = 2;
_local6.x = (_local6.x - _local6.downTime);
} else {
_local6.dir = 3;
_local6.x = (_local6.x + _local6.downTime);
};
};
} else {
_local6.downTime = (_local6.downTime + 14);
if (_local6.downTime >= 56){
_local6.y = (_local6.y - (56 - _local6.downTime));
if (_local6.x < (stageW / 2)){
_local6.dir = 3;
_local6.x = (_local6.x - (56 - _local6.downTime));
} else {
_local6.dir = 2;
_local6.x = (_local6.x + (56 - _local6.downTime));
};
};
};
} else {
if ((((((_local6.dir == 2)) && ((_local6.rev == 1)))) || ((((_local6.dir == 3)) && ((_local6.rev == -1)))))){
if (_local6.x >= (stageW - 40)){
_local6.dir = 1;
if (_local6.rev == 1){
_local6.downTime = (56 - (_local6.x - (stageW - 40)));
} else {
_local6.downTime = (_local6.x - (stageW - 40));
};
_local6.y = (_local6.y + ((_local6.x - (stageW - 40)) * _local6.rev));
_local6.x = (stageW - 40);
};
} else {
if ((((((_local6.dir == 3)) && ((_local6.rev == 1)))) || ((((_local6.dir == 2)) && ((_local6.rev == -1)))))){
if (_local6.x <= 50){
_local6.dir = 1;
if (_local6.rev == 1){
_local6.downTime = (56 - (50 - _local6.x));
} else {
_local6.downTime = (50 - _local6.x);
};
_local6.y = (_local6.y + ((50 - _local6.x) * _local6.rev));
_local6.x = 50;
};
};
};
};
_local6.extra2 = 0;
_local4--;
};
if (_local2 <= 0){
newEnemy(_local2);
};
}
public function newCombo(_arg1:int, _arg2:int, _arg3:int):void{
var _local4:combotext = new combotext();
_local4.x = _arg1;
_local4.y = _arg2;
_local4.maxx = _arg3;
if (_local4.maxx > 10){
_local4.maxx = 10;
};
_local4.timer = (40 / _local4.maxx);
_local4.txt.text = ("x" + String(_arg3));
combos.push(_local4);
game.addChild(_local4);
}
public function updateCombos():void{
var _local2:combotext;
var _local1:int;
while (_local1 < combos.length) {
_local2 = combos[_local1];
_local2.timer--;
if (_local2.timer <= 0){
_local2.scaleX = (_local2.scaleX + 0.2);
_local2.scaleY = (_local2.scaleY + 0.2);
if (_local2.scaleX > _local2.maxx){
game.removeChild(_local2);
combos.splice(_local1, 1);
_local1--;
};
};
_local1++;
};
}
public function newDead(_arg1:int, _arg2:int, _arg3:int):void{
var _local4:enemy = new enemy();
_local4.gotoAndStop(_arg3);
_local4.x = _arg1;
_local4.y = _arg2;
var _local5:Number = (((Math.random() * 180) + 180) * (Math.PI / 180));
_local4.xv = (Math.cos(_local5) * 10);
_local4.yv = (Math.sin(_local5) * 10);
deads.push(_local4);
game.addChild(_local4);
}
public function updateDeads():void{
var _local2:enemy;
var _local1:int;
while (_local1 < deads.length) {
_local2 = deads[_local1];
_local2.x = (_local2.x + _local2.xv);
_local2.y = (_local2.y + _local2.yv);
_local2.scaleX = (_local2.scaleX * 1.1);
_local2.scaleY = (_local2.scaleY * 1.1);
_local2.rotation = (_local2.rotation + (_local2.xv / 20));
if (_local2.scaleX > 3){
_local2.alpha = (_local2.alpha - 0.04);
if (_local2.alpha <= 0){
game.removeChild(_local2);
deads.splice(_local1, 1);
_local1--;
};
};
_local1++;
};
}
public function newDeathAnim(_arg1:int, _arg2:int):void{
var _local3:deathanim = new deathanim();
_local3.x = (_arg1 - 60);
_local3.y = (_arg2 - 60);
_local3.timer = 30;
game.addChild(_local3);
explosions.push(_local3);
}
public function newExplosion(_arg1:int, _arg2:int):void{
var _local3:explode = new explode();
_local3.x = _arg1;
_local3.y = _arg2;
_local3.scaleX = 0.8;
_local3.scaleY = 0.8;
_local3.rotation = (Math.random() * 360);
_local3.timer = 15;
game.addChild(_local3);
explosions.push(_local3);
}
public function newExplosion2(_arg1:int, _arg2:int):void{
var _local3:explode2 = new explode2();
_local3.x = _arg1;
_local3.y = _arg2;
_local3.rotation = (Math.random() * 360);
_local3.timer = 13;
game.addChild(_local3);
explosions.push(_local3);
}
public function updateExplosions():void{
var _local2:*;
var _local1:int;
while (_local1 < explosions.length) {
_local2 = explosions[_local1];
_local2.timer--;
if (_local2.timer <= 0){
game.removeChild(_local2);
explosions.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newCoin(_arg1:int, _arg2:int, _arg3:int=1):void{
var _local5:coin;
var _local6:Number;
var _local4:int;
while (_local4 < _arg3) {
_local5 = new coin();
_local5.x = _arg1;
_local5.y = _arg2;
_local6 = ((Math.random() * 360) * (Math.PI / 180));
_local5.yv = (Math.sin(_local6) * 3);
_local5.xv = (Math.cos(_local6) * 3);
_local5.collected = false;
_local5.timer = 60;
coins.push(_local5);
game.addChild(_local5);
_local4++;
};
}
public function updateCoinQueue():void{
var _local1:int;
while (_local1 < coinQueue.length) {
var _local2 = coinQueue;
var _local3 = _local1;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
if (coinQueue[_local1] <= 0){
credits++;
coincollect.play();
if (credits == 15){
GUI.machine.body.gotoAndPlay(2);
GUI.machine.greenlight.gotoAndPlay(2);
} else {
if (credits == 75){
GUI.machine.greenlight.gotoAndStop(1);
warning.play();
} else {
if (credits == 85){
loseall.play();
credits = 0;
gaugeTimer = 85;
GUI.machine.pink.gotoAndPlay(86);
GUI.machine.body.gotoAndStop(1);
GUI.machine.greenlight.gotoAndStop(1);
};
};
};
coinQueue.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function updateCoins():void{
var _local2:coin;
var _local3:int;
var _local4:int;
var _local5:bulge;
updateCoinQueue();
var _local1:int;
while (_local1 < coins.length) {
_local2 = coins[_local1];
_local3 = (ship.x - _local2.x);
_local4 = (ship.y - _local2.y);
if ((((((_local3 * _local3) + (_local4 * _local4)) < 1000)) && (!((_local2.collected == true))))){
coinQueue.push(28);
_local2.collected = true;
};
if ((((_local2.y > stageH)) && ((_local2.collected == true)))){
_local5 = new bulge();
bulges.push(_local5);
GUI.pipe.addChild(_local5);
game.removeChild(_local2);
coins.splice(_local1, 1);
_local1--;
} else {
_local2.y = (_local2.y + _local2.yv);
_local2.x = (_local2.x + _local2.xv);
if (_local2.yv < 8){
_local2.yv = (_local2.yv + 0.2);
};
if (_local2.xv > 0){
_local2.xv = (_local2.xv * 0.8);
if (Math.abs(_local2.xv) < 0.2){
_local2.xv = 0;
};
};
if (_local2.x < 40){
_local2.x = 40;
} else {
if (_local2.x > (stageW - 30)){
_local2.x = (stageW - 30);
};
};
if ((((_local2.y > (stageH - 10))) && (!((_local2.collected == true))))){
_local2.y = (stageH - 10);
_local2.xv = 0;
_local2.timer--;
if (_local2.timer < 0){
newCoinHit(_local2.x, _local2.y);
game.removeChild(_local2);
coins.splice(_local1, 1);
_local1--;
};
};
};
_local1++;
};
}
public function updateBulges():void{
var _local1:int;
while (_local1 < bulges.length) {
if (bulges[_local1].currentFrame >= 24){
GUI.pipe.removeChild(bulges[_local1]);
bulges.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newCoinHit(_arg1:int, _arg2:int):void{
var _local3:coinhit = new coinhit();
_local3.x = _arg1;
_local3.y = _arg2;
_local3.timer = 13;
game.addChild(_local3);
coinhits.push(_local3);
}
public function updateCoinHits():void{
var _local2:coinhit;
var _local1:int;
while (_local1 < coinhits.length) {
_local2 = coinhits[_local1];
_local2.timer--;
if (_local2.timer <= 0){
game.removeChild(_local2);
coinhits.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newTrail(_arg1:int, _arg2:int, _arg3:int=0):void{
var _local4:trail = new trail();
game.addChild(_local4);
_local4.x = _arg1;
_local4.y = _arg2;
_local4.rotation = _arg3;
trails.push(_local4);
}
public function updateTrails():void{
var _local2:trail;
var _local1:int;
while (_local1 < trails.length) {
_local2 = trails[_local1];
_local2.scaleX = (_local2.scaleX - 0.05);
_local2.alpha = (_local2.alpha - 0.05);
if ((((_local2.alpha <= 0)) || ((_local2.scaleX <= 0)))){
game.removeChild(_local2);
trails.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function fire():void{
var _local1:bullet;
if (bullets.length < 1){
shootgun.play();
_local1 = new bullet();
bulletHolder.addChild(_local1);
_local1.x = ((ship.x + 4) - ((ship.chameleon.kmilion.scaleX + 1) * 4));
_local1.y = (ship.y - 20);
_local1.xv = 0;
_local1.yv = -30;
bullets.push(_local1);
};
}
public function updateSquirrelBullets():void{
var _local2:*;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local1:int;
while (_local1 < squirrelBullets.length) {
_local2 = squirrelBullets[_local1];
_local2.y = (_local2.y + _local2.yv);
_local2.x = (_local2.x + _local2.xv);
if ((((((_local2.y < -10)) || ((_local2.x < -10)))) || ((_local2.x > (stageW + 10))))){
game.removeChild(_local2);
squirrelBullets.splice(_local1, 1);
_local1--;
} else {
_local3 = 0;
while (_local3 < invaders.length) {
_local4 = Math.abs((invaders[_local3].x - _local2.x));
_local5 = Math.abs((invaders[_local3].y - _local2.y));
if (invaders[_local3].y > 0){
if ((((((_local4 < 24)) && ((_local5 < 28)))) && ((invaders[_local3].health > 0)))){
_local6 = ((Math.random() * 2) + 1);
this[("exp" + _local6)].play();
if (invaders[_local3].currentFrame <= 5){
killEnemies(invaders[_local3]);
} else {
if (invaders[_local3].currentFrame == 6){
invaders[_local3].dead = true;
} else {
if (invaders[_local3].currentFrame == 7){
invaders[_local3].dead = true;
score = (score + 500);
} else {
if (invaders[_local3].currentFrame == 8){
invaders[_local3].dead = true;
} else {
if (invaders[_local3].currentFrame == 9){
invaders[_local3].health--;
if (invaders[_local3].health <= 0){
invaders[_local3].mc.gotoAndPlay(11);
} else {
invaders[_local3].mc.gotoAndPlay(2);
};
};
};
};
};
};
game.removeChild(_local2);
squirrelBullets.splice(_local1, 1);
_local1--;
break;
};
};
_local3++;
};
};
_local1++;
};
}
public function updateBullets():void{
var _local2:bullet;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local1:int;
while (_local1 < bullets.length) {
_local2 = bullets[_local1];
_local2.y = (_local2.y + _local2.yv);
_local2.x = (_local2.x + _local2.xv);
if (_local2.y < -10){
bulletHolder.removeChild(_local2);
bullets.splice(_local1, 1);
_local1--;
} else {
_local3 = 0;
while (_local3 < invaders.length) {
_local4 = Math.abs((invaders[_local3].x - _local2.x));
_local5 = Math.abs((invaders[_local3].y - _local2.y));
if (invaders[_local3].y > 0){
if ((((((((_local4 < 24)) && ((_local5 < 28)))) && ((invaders[_local3].health > 0)))) && ((_local2.yv < 0)))){
_local6 = ((Math.random() * 2) + 1);
this[("exp" + _local6)].play();
if (invaders[_local3].currentFrame <= 5){
killEnemies(invaders[_local3]);
} else {
if (invaders[_local3].currentFrame == 6){
invaders[_local3].dead = true;
} else {
if (invaders[_local3].currentFrame == 7){
invaders[_local3].dead = true;
score = (score + 200);
} else {
if (invaders[_local3].currentFrame == 8){
invaders[_local3].dead = true;
} else {
if (invaders[_local3].currentFrame == 9){
invaders[_local3].health--;
if (invaders[_local3].health <= 0){
invaders[_local3].mc.gotoAndPlay(11);
} else {
invaders[_local3].mc.gotoAndPlay(2);
};
} else {
if (invaders[_local3].currentFrame == 10){
killEnemies(invaders[_local3]);
ship.chameleon.kmilion.gotoAndPlay("breathe");
ship.chameleon.gear.gotoAndPlay("breathe");
frame = "breathe";
ouch.play();
stunTime = 60;
stunAnim.x = ship.x;
};
};
};
};
};
};
bulletHolder.removeChild(_local2);
bullets.splice(_local1, 1);
_local1--;
break;
};
};
_local3++;
};
};
_local1++;
};
}
public function newGemExplode(_arg1:int, _arg2:int):void{
var _local4:coin;
var _local5:Number;
var _local3:int;
while (_local3 < 5) {
_local4 = new coin();
_local4.x = _arg1;
_local4.y = _arg2;
_local5 = ((Math.random() * 360) * (Math.PI / 180));
_local4.yv = (Math.sin(_local5) * 4);
_local4.xv = (Math.cos(_local5) * 4);
_local4.timer = 40;
coins.push(_local4);
game.addChild(_local4);
_local3++;
};
}
public function newCrossExplode(_arg1:int, _arg2:int):void{
var _local3:Object = {x:_arg1, y:_arg2, f:0};
crossExplodes.push(_local3);
}
public function updateCrossExplodes():void{
var _local2:Object;
var _local3:Rectangle;
var _local4:Point;
var _local1:int;
while (_local1 < crossExplodes.length) {
_local2 = crossExplodes[_local1];
_local3 = new Rectangle(((_local2.f - (int((_local2.f / 4)) * 4)) * 0x0100), (int((_local2.f / 4)) * 0x0100), 0x0100, 0x0100);
_local4 = new Point((_local2.x - 128), (_local2.y - 128));
epBmp.copyPixels(cexplode, _local3, _local4, null, null, true);
_local2.f++;
if (_local2.f > 28){
crossExplodes.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newGemBoom(_arg1:int, _arg2:int):void{
var _local3:Object = {x:_arg1, y:_arg2, f:0};
gemExplodes.push(_local3);
}
public function updateGemExplodes():void{
var _local2:Object;
var _local3:Rectangle;
var _local4:Point;
var _local1:int;
while (_local1 < gemExplodes.length) {
_local2 = gemExplodes[_local1];
_local3 = new Rectangle(((_local2.f - (int((_local2.f / 4)) * 4)) * 64), (int((_local2.f / 4)) * 64), 64, 64);
_local4 = new Point((_local2.x - 32), (_local2.y - 32));
epBmp.copyPixels(gexplode, _local3, _local4, null, null, true);
_local2.f++;
if (_local2.f > 24){
gemExplodes.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newLineExplode(_arg1:int, _arg2:int):void{
var _local3:Object = {x:_arg1, y:_arg2, f:0};
lineExplodes.push(_local3);
}
public function updateLineExplodes():void{
var _local2:Object;
var _local3:Rectangle;
var _local4:Point;
var _local1:int;
while (_local1 < lineExplodes.length) {
_local2 = lineExplodes[_local1];
_local3 = new Rectangle(0, (_local2.f * 40), 0x0200, 40);
_local4 = new Point(_local2.x, _local2.y);
epBmp.copyPixels(lexplode, _local3, _local4, null, null, true);
_local2.f++;
if (_local2.f > 21){
lineExplodes.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newSmallExplode(_arg1:int, _arg2:int):void{
var _local3:Object = {x:_arg1, y:_arg2, f:0};
smallExplodes.push(_local3);
}
public function updateSmallExplodes():void{
var _local2:Object;
var _local3:Rectangle;
var _local4:Point;
var _local1:int;
while (_local1 < smallExplodes.length) {
_local2 = smallExplodes[_local1];
_local3 = new Rectangle(((_local2.f - (int((_local2.f / 4)) * 4)) * 128), (int((_local2.f / 4)) * 128), 128, 128);
_local4 = new Point((_local2.x - 64), (_local2.y - 64));
epBmp.copyPixels(sexplode, _local3, _local4, null, null, true);
_local2.f++;
if (_local2.f > 25){
smallExplodes.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function newLightningStrike(_arg1:int, _arg2:int):void{
var _local3:Object = {x:_arg1, y:_arg2, f:0};
lightningStrikes.push(_local3);
}
public function updateLightningStrikes():void{
var _local2:Object;
var _local3:Rectangle;
var _local4:Point;
var _local1:int;
while (_local1 < lightningStrikes.length) {
_local2 = lightningStrikes[_local1];
_local3 = new Rectangle((_local2.f * 40), 0, 40, 0x0200);
_local4 = new Point(_local2.x, _local2.y);
epBmp.copyPixels(lstrike, _local3, _local4, null, null, true);
_local2.f++;
if (_local2.f > 31){
lightningStrikes.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function explodeBomb(_arg1:enemy):void{
var _local9:int;
var _local2:int = Math.floor(((_arg1.x - 50) / 56));
var _local3:int = Math.floor(((_arg1.y - 10) / 56));
var _local4:* = (_local2 - 2);
var _local5:* = (_local3 - 2);
var _local6:* = (_local2 + 2);
var _local7:* = (_local3 + 2);
if (_local4 < 0){
_local4 = 0;
};
if (_local5 < 0){
_local5 = 0;
};
if (_local6 > 9){
_local6 = 9;
};
if (_local7 > 9){
_local7 = 9;
};
var _local8:int = _local5;
while (_local8 <= _local7) {
if (_local8 == _local3){
_local9 = _local4;
while (_local9 <= _local6) {
if (slots[_local8][_local9] != 0){
if (slots[_local8][_local9].currentFrame != 10){
slots[_local8][_local9].dead = true;
};
};
_local9++;
};
} else {
if (slots[_local8][_local2] != 0){
if (slots[_local8][_local2].currentFrame != 10){
slots[_local8][_local2].dead = true;
};
};
};
_local8++;
};
}
public function killEnemies(_arg1:enemy):void{
var _local10:int;
var _local2:* = _arg1.currentFrame;
var _local3:int = Math.floor(((_arg1.x - 50) / 56));
var _local4:int = Math.floor(((_arg1.y - 10) / 56));
var _local5:Array = new Array();
var _local6:Array = new Array();
_local5.push(_arg1);
var _local7:Object = new Object();
_local7[((("enemy_" + _local4) + "_") + _local3)] = true;
while (_local5.length > 0) {
_local3 = Math.floor(((_local5[0].x - 50) / 56));
_local4 = Math.floor(((_local5[0].y - 10) / 56));
if ((((((((_local3 >= 0)) && ((_local3 <= 13)))) && ((_local4 >= 0)))) && ((_local4 <= 13)))){
if (_local3 >= 1){
if (slots[_local4][(_local3 - 1)] != 0){
if ((((slots[_local4][(_local3 - 1)].currentFrame == _local2)) || ((slots[_local4][(_local3 - 1)].currentFrame == 7)))){
if (_local7[((("enemy_" + _local4) + "_") + (_local3 - 1))] != true){
_local5.push(slots[_local4][(_local3 - 1)]);
_local7[((("enemy_" + _local4) + "_") + (_local3 - 1))] = true;
};
};
};
};
if (_local3 <= 12){
if (slots[_local4][(_local3 + 1)] != 0){
if ((((slots[_local4][(_local3 + 1)].currentFrame == _local2)) || ((slots[_local4][(_local3 + 1)].currentFrame == 7)))){
if (_local7[((("enemy_" + _local4) + "_") + (_local3 + 1))] != true){
_local5.push(slots[_local4][(_local3 + 1)]);
_local7[((("enemy_" + _local4) + "_") + (_local3 + 1))] = true;
};
};
};
};
if (_local4 <= 12){
if (slots[(_local4 + 1)][_local3] != 0){
if ((((slots[(_local4 + 1)][_local3].currentFrame == _local2)) || ((slots[(_local4 + 1)][_local3].currentFrame == 7)))){
if (_local7[((("enemy_" + (_local4 + 1)) + "_") + _local3)] != true){
_local5.push(slots[(_local4 + 1)][_local3]);
_local7[((("enemy_" + (_local4 + 1)) + "_") + _local3)] = true;
};
};
};
};
if (_local4 >= 1){
if (slots[(_local4 - 1)][_local3] != 0){
if ((((slots[(_local4 - 1)][_local3].currentFrame == _local2)) || ((slots[(_local4 - 1)][_local3].currentFrame == 7)))){
if (_local7[((("enemy_" + (_local4 - 1)) + "_") + _local3)] != true){
_local5.push(slots[(_local4 - 1)][_local3]);
_local7[((("enemy_" + (_local4 - 1)) + "_") + _local3)] = true;
};
};
};
};
_local6.push(_local5[0]);
};
_local5.splice(0, 1);
};
var _local8:int = _local6.length;
var _local9:int;
while (_local9 < _local6.length) {
if (_local6[_local9] != 0){
if (_local6[_local9].currentFrame == 7){
_local8 = (_local8 * 3);
hitcombo.play();
};
_local6[_local9].dead = true;
};
_local9++;
};
if (_local8 > 1){
newCombo(_arg1.x, _arg1.y, _local8);
_local10 = 0;
if ((_local8 % 2) == 0){
_local10 = (_local8 / 2);
} else {
_local10 = ((_local8 - 1) / 2);
};
newCoin(_arg1.x, _arg1.y, _local10);
};
}
public function spinFruits():void{
var _local1:int = int((Math.random() * 12));
if (_local1 <= 5){
_local1 = 0;
} else {
powersUsed++;
if (powersUsed == 10){
API.unlockMedal("Power Hungry");
};
if (powersUsed == 20){
API.unlockMedal("Attention Seeker");
};
};
outcome = _local1;
spinTimer = 90;
spinning = true;
}
public function updateFruits():void{
spinTimer--;
if (spinTimer == 80){
stopslot.play();
GUI.machine.fruit.row1.x = (GUI.machine.fruit.row1.x + 500);
if (outcome == 0){
GUI.machine.fruit.win1.gotoAndStop((int((Math.random() * 6)) + 2));
} else {
GUI.machine.fruit.win1.gotoAndStop((outcome - 4));
};
} else {
if (spinTimer == 60){
stopslot.play();
GUI.machine.fruit.row2.x = (GUI.machine.fruit.row2.x + 500);
if (outcome == 0){
GUI.machine.fruit.win2.gotoAndStop((int((Math.random() * 6)) + 2));
} else {
GUI.machine.fruit.win2.gotoAndStop((outcome - 4));
};
} else {
if (spinTimer == 40){
stopslot.play();
GUI.machine.fruit.row3.x = (GUI.machine.fruit.row3.x + 500);
if (outcome == 0){
GUI.machine.fruit.win3.gotoAndStop((int((Math.random() * 6)) + 2));
while (GUI.machine.fruit.win3.currentFrame == GUI.machine.fruit.win2.currentFrame) {
GUI.machine.fruit.win3.gotoAndStop((int((Math.random() * 6)) + 2));
};
newTripple(1);
slotslose.play();
} else {
GUI.machine.fruit.win3.gotoAndStop((outcome - 4));
if ((outcome - 4) == 2){
newBeam();
} else {
if ((outcome - 4) == 3){
newSpreadShot();
} else {
if ((outcome - 4) == 4){
newUpWiper();
} else {
if ((outcome - 4) == 5){
newWiper();
} else {
if ((outcome - 4) == 6){
newLightnings();
} else {
newBooms();
};
};
};
};
};
winslots.play();
newTripple((outcome - 4));
rumble = 20;
};
} else {
if (spinTimer == 0){
GUI.machine.fruit.win1.gotoAndStop(1);
GUI.machine.fruit.win2.gotoAndStop(1);
GUI.machine.fruit.win3.gotoAndStop(1);
GUI.machine.fruit.row1.gotoAndPlay(int(((Math.random() * 10) + 1)));
GUI.machine.fruit.row2.gotoAndPlay(int(((Math.random() * 10) + 1)));
GUI.machine.fruit.row3.gotoAndPlay(int(((Math.random() * 10) + 1)));
GUI.machine.fruit.row1.x = (GUI.machine.fruit.row1.x - 500);
GUI.machine.fruit.row2.x = (GUI.machine.fruit.row2.x - 500);
GUI.machine.fruit.row3.x = (GUI.machine.fruit.row3.x - 500);
spinning = false;
};
};
};
};
}
public function updateGameover():void{
}
public function updateTrans():void{
if (TRANS.currentFrame == 16){
if (transTo == "game"){
cleanUpTitle();
TITLE.x = -900;
removeChild(TITLE);
if (qual == 0){
GUI.qualitytoggle.mc.gotoAndStop(2);
} else {
GUI.qualitytoggle.mc.gotoAndStop(1);
};
if (audio == 0){
GUI.audiotoggle.mc.gotoAndStop(2);
} else {
GUI.audiotoggle.mc.gotoAndStop(1);
};
screenState = "game";
startGame();
} else {
if (transTo == "credits"){
CREDITS.x = 0;
addChild(CREDITS);
removeChild(TRANS);
addChild(TRANS);
TITLE.x = -900;
removeChild(TITLE);
screenState = "credits";
} else {
if (transTo == "tutorial"){
TITLE.x = -900;
removeChild(TITLE);
TUTORIAL.x = 0;
addChild(TUTORIAL);
removeChild(TRANS);
addChild(TRANS);
screenState = "tutorial";
} else {
if (transTo == "gameover"){
stage.quality = StageQuality.BEST;
GAMEOVER.x = 400;
GAMEOVER.y = 310;
GAMEOVER.gotoAndPlay(1);
addChild(GAMEOVER);
removeChild(TRANS);
addChild(TRANS);
GAMEOVER.scoretxt.text = String(score);
screenState = "gameover";
endGame();
} else {
if (transTo == "title"){
GAMEOVER.x = -900;
if (gameState == "gameover"){
removeChild(GAMEOVER);
};
CREDITS.x = -900;
if (gameState == "credits"){
removeChild(CREDITS);
};
TUTORIAL.x = -900;
if (gameState == "tutorial"){
removeChild(TUTORIAL);
};
screenState = "title";
TITLE.x = 0;
addChild(TITLE);
removeChild(TRANS);
addChild(TRANS);
if (qual == 0){
TITLE.qualitytoggle.mc.gotoAndStop(2);
} else {
TITLE.qualitytoggle.mc.gotoAndStop(1);
};
if (audio == 0){
TITLE.audiotoggle.mc.gotoAndStop(2);
} else {
TITLE.audiotoggle.mc.gotoAndStop(1);
};
} else {
if (transTo == "showscore"){
cleanUpTitle();
TITLE.x = -900;
removeChild(TITLE);
screenState = "scores";
showScores();
} else {
if (transTo == "submitscore"){
GAMEOVER.x = -900;
removeChild(GAMEOVER);
screenState = "scores";
submitScore();
};
};
};
};
};
};
};
};
}
public function updateGame():void{
if (lastScore > score){
lastScore = 0;
};
if ((((score >= 10000)) && ((lastScore < 10000)))){
API.unlockMedal("Child's Play");
};
if ((((score >= 40000)) && ((lastScore < 40000)))){
API.unlockMedal("Getting Warm");
};
if ((((score >= 60000)) && ((lastScore < 60000)))){
API.unlockMedal("Bug Buster");
};
if ((((score >= 80000)) && ((lastScore < 80000)))){
API.unlockMedal("Super Lizzard");
};
if ((((gameState == "start")) || ((gameState == "playing")))){
if (moving == true){
updateEnemies();
changeDirs();
if (gameState == "start"){
if (invaders.length >= 30){
GRG.play();
gameState = "playing";
enemySpeed = 3;
};
};
};
if (spinning == true){
updateFruits();
};
bgBmp.colorTransform(stageRect, bgFade);
epBmp.fillRect(stageRect, 0);
if (rumble > 0){
game.x = ((Math.random() * (3 + rumble)) - (Math.random() * (3 + rumble)));
game.y = ((Math.random() * (3 + rumble)) - (Math.random() * (3 + rumble)));
bgBit.x = ((Math.random() * (3 + rumble)) - (Math.random() * (3 + rumble)));
bgBit.y = ((Math.random() * (3 + rumble)) - (Math.random() * (3 + rumble)));
rumble--;
if (rumble <= 0){
game.x = 0;
game.y = 0;
bgBit.x = 0;
bgBit.y = 0;
};
};
};
if (gameState == "playing"){
if (messScrolling == true){
MESS.x = (MESS.x + 8);
if (MESS.x > (stageW + 300)){
MESS.x = -300;
messScrolling = false;
};
};
checkDead();
stopScores();
updateBullets();
updateSquirrelBullets();
updateCoins();
updateExplosions();
updateTrails();
updateCombos();
if (gaugeTimer == 0){
GUI.machine.pink.gotoAndStop(credits);
};
updateDeads();
updateCoinHits();
updateTripples();
updateSmallExplodes();
updateBeams();
updateLightnings();
updateCrossExplodes();
updateGemExplodes();
updateLineExplodes();
updateLightningStrikes();
updateSquirrelShoots();
updateWebs();
updateBulges();
updateWipers();
updateUpWipers();
if ((((water.currentFrame <= 15)) || ((water.currentFrame > 132)))){
ship.chameleon.gear.alpha = 0;
} else {
ship.chameleon.gear.alpha = 1;
};
if (stunTime == 0){
if (downKeys.key37 == true){
ship.chameleon.kmilion.scaleX = -1;
ship.chameleon.gear.scaleX = -1;
ship.x = (ship.x - 10);
if (frame != "move"){
ship.chameleon.kmilion.gotoAndPlay("move");
ship.chameleon.gear.gotoAndPlay("move");
frame = "move";
};
GUI.squirrels.s1.play();
GUI.squirrels.s2.play();
if (ship.x < 30){
ship.x = 30;
};
} else {
if (downKeys.key39 == true){
ship.chameleon.kmilion.scaleX = 1;
ship.chameleon.gear.scaleX = 1;
ship.x = (ship.x + 10);
if (frame != "move"){
ship.chameleon.kmilion.gotoAndPlay("move");
ship.chameleon.gear.gotoAndPlay("move");
frame = "move";
};
GUI.squirrels.s1.play();
GUI.squirrels.s2.play();
if (ship.x > stageW){
ship.x = stageW;
};
} else {
if ((((ship.chameleon.kmilion.currentFrame < 36)) && ((ship.chameleon.kmilion.currentFrame >= 15)))){
ship.chameleon.kmilion.gotoAndPlay("breathe");
ship.chameleon.gear.gotoAndPlay("breathe");
};
frame = "breathe";
GUI.squirrels.s1.stop();
GUI.squirrels.s2.stop();
};
};
} else {
stunTime--;
if (stunTime == 0){
stunAnim.x = -800;
};
};
GUI.squirrels.x = (ship.x - 605);
GUI.pipe.scaleX = (((GUI.squirrels.x - 78) * -1) / 150);
} else {
if (gameState == "dead"){
playerDead--;
if (playerDead <= 0){
transTo = "gameover";
TRANS.play();
screenState = "trans";
};
};
};
}
public function keydown(_arg1:KeyboardEvent):void{
downKeys[("key" + _arg1.keyCode)] = true;
if ((((gameState == "instruct")) && ((((_arg1.keyCode == 65)) || ((_arg1.keyCode == 88)))))){
menselection.play();
gameState = "start";
removeChild(INSTRUCTIONS);
} else {
if (gameState == "paused"){
gameState = "playing";
PAUSE.x = -800;
} else {
if (gameState == "playing"){
if (_arg1.keyCode == 80){
gameState = "paused";
PAUSE.x = (stageW / 2);
};
};
};
};
}
public function keyup(_arg1:KeyboardEvent):void{
downKeys[("key" + _arg1.keyCode)] = false;
if (screenState != "scores"){
if (_arg1.keyCode == 77){
if (!soundOn){
SoundMixer.soundTransform = new SoundTransform(1, 0);
soundOn = true;
} else {
SoundMixer.soundTransform = new SoundTransform(0, 0);
soundOn = false;
};
};
};
if (gameState == "playing"){
if ((((_arg1.keyCode == 65)) || ((_arg1.keyCode == 88)))){
if (stunTime == 0){
fire();
ship.chameleon.kmilion.gotoAndPlay("fire");
ship.chameleon.gear.gotoAndPlay("fire");
frame = "fire";
};
} else {
if (_arg1.keyCode == 83){
if ((((credits >= 15)) && ((spinning == false)))){
kaching.play();
credits = (credits - 15);
gaugeTimer = 15;
GUI.machine.pink.gotoAndPlay((170 - GUI.machine.pink.currentFrame));
if (credits < 15){
GUI.machine.body.gotoAndStop(1);
GUI.machine.greenlight.gotoAndStop(1);
};
spinFruits();
};
};
};
};
}
public function mousedown(_arg1:MouseEvent):void{
}
public function update(_arg1:Event):void{
if (screenState == "gameover"){
updateGameover();
} else {
if (screenState == "game"){
updateGame();
} else {
if (screenState == "trans"){
updateTrans();
};
};
};
}
public function showScores():void{
var o:Object = {n:[13, 15, 15, 5, 2, 14, 0, 12, 10, 1, 7, 5, 13, 2, 9, 6], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
var boardID:String = o.f(0, "dff52e0ca175d296");
MochiScores.showLeaderboard({onClose:function (){
closeBoard();
}, boardID:boardID});
}
public function submitScore():void{
var o:Object = {n:[13, 15, 15, 5, 2, 14, 0, 12, 10, 1, 7, 5, 13, 2, 9, 6], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
var boardID:String = o.f(0, "dff52e0ca175d296");
MochiScores.showLeaderboard({onClose:function (){
closeBoard();
}, boardID:boardID, score:score});
}
public function closeBoard():void{
transTo = "title";
screenState = "trans";
TRANS.play();
}
public function cleanUpTitle():void{
var _local1:int;
while (_local1 < titleEnemies.length) {
removeChild(titleEnemies[_local1]);
_local1++;
};
titleEnemies = new Array();
}
function __setProp___id1__Scene1_Layer1_0(){
if ((((__setPropDict[__id1_] == undefined)) || (!((int(__setPropDict[__id1_]) == 1))))){
__setPropDict[__id1_] = 1;
try {
__id1_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id1_.debugMode = true;
__id1_.encryptionKey = "v0YtQJu2Ah05era1TSOXFOoskqfpZDCh";
__id1_.movieId = "12479:bOL2KOgE";
__id1_.movieVersion = "";
__id1_.showConnectingPopup = true;
__id1_.useErrorPopup = true;
__id1_.useMedalPopup = true;
try {
__id1_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
};
}
function frame1(){
__setProp___id1__Scene1_Layer1_0();
stage.showDefaultContextMenu = false;
MochiServices.connect("fac9bccb2c88d93e", root);
url1 = stage.loaderInfo.url;
urlStart1 = (url1.indexOf("://") + 3);
urlEnd1 = url1.indexOf("/", urlStart1);
domain1 = url1.substring(urlStart1, urlEnd1);
lastDot1 = (domain1.lastIndexOf(".") - 1);
domEnd1 = (domain1.lastIndexOf(".", lastDot1) + 1);
domain1 = domain1.substring(domEnd1, domain1.length);
stop();
}
function frame2(){
SoundMixer.soundTransform = new SoundTransform(0, 0);
play();
}
function frame3(){
SoundMixer.stopAll();
}
function frame4(){
skipbtn.addEventListener(MouseEvent.CLICK, clickskip);
SoundMixer.soundTransform = new SoundTransform(1, 0);
stop();
timer5 = 0;
this.addEventListener(Event.ENTER_FRAME, updatelogo5);
stage.addEventListener(MouseEvent.MOUSE_UP, getLink5);
}
function frame5(){
SoundMixer.soundTransform = new SoundTransform(1, 0);
stop();
timer4 = 0;
this.addEventListener(Event.ENTER_FRAME, updatelogo4);
stage.addEventListener(MouseEvent.MOUSE_UP, getLink4);
}
function frame6(){
SoundMixer.soundTransform = new SoundTransform(1, 0);
stop();
timer7 = 0;
this.addEventListener(Event.ENTER_FRAME, updatelogo7);
stage.addEventListener(MouseEvent.MOUSE_UP, getLink7);
}
function frame7(){
SoundMixer.soundTransform = new SoundTransform(1, 0);
stop();
timer8 = 0;
this.addEventListener(Event.ENTER_FRAME, updatelogo8);
}
function frame8(){
SoundMixer.soundTransform = new SoundTransform(1, 0);
stageW = 560;
stageH = 520;
frame = "breathe";
menroll = new menuroll();
menselection = new menuselection();
shootgun = new gunshot();
coincollect = new collectcoin();
slotslose = new loseslots();
soundgameover = new gameoversound();
stopslot = new slotstop();
winslots = new slotswin();
kaching = new spendcoins();
exp1 = new explodesound1();
exp2 = new explodesound2();
music = new musicloop();
menuloop = new titlesounds();
bombboom = new bombexplode();
bubblessound = new bubbles();
hitcombo = new special1();
hitgem = new special2();
ouch = new hitsquirrel();
warning = new warningfull();
loseall = new losegems();
stunTime = 0;
menuloop.play(0, 9999);
stageRect = new Rectangle(0, 0, (stageW + 60), stageH);
bgFade = new ColorTransform(1, 1, 1, 0.7, 0, 0, 0, 0);
bgBmp = new BitmapData(stageW, stageH, true, 0);
bgBit = new Bitmap(bgBmp);
epBmp = new BitmapData((stageW + 60), stageH, true, 0);
epBit = new Bitmap(epBmp);
cexplode = new crossexplode(0, 0);
gexplode = new gemsexplode(0, 0);
lexplode = new lineexplode(0, 0);
sexplode = new smallexplode(0, 0);
lstrike = new lightningstrike(0, 0);
downKeys = new Object();
titTimer = 0;
screenState = "title";
gameState = "start";
menuSelect = 0;
transTo = "game";
soundOn = true;
speedinc = false;
rocksDestroyed = 0;
powersUsed = 0;
invaders = new Array();
bullets = new Array();
squirrelBullets = new Array();
slots = new Array();
coins = new Array();
explosions = new Array();
trails = new Array();
combos = new Array();
deads = new Array();
coinhits = new Array();
tripples = new Array();
beams = new Array();
lightnings = new Array();
wipers = new Array();
upwipers = new Array();
titleEnemies = new Array();
crossExplodes = new Array();
gemExplodes = new Array();
smallExplodes = new Array();
lineExplodes = new Array();
lightningStrikes = new Array();
coinQueue = new Array();
bulges = new Array();
squirrelShoots = new Array();
webs = new Array();
rumble = 0;
colours = 3;
moves = 4;
maxMoves = 4;
moving = false;
moveTimer = 2;
stopTimer = 100;
outcome = 0;
spinning = false;
spinTimer = 0;
playerMoving = 0;
playerSpeed = 10;
enemySpeed = 28;
colourList = [0xCC00, 0xFF0000, 0xFFFF00, 52479, 0xFF0099, 0xCC00FF, 0xFF9900];
cols = [0xFFCC00, 3368703, 0xFF0000, 0x33CC00, 13382604];
score = 0;
combo = 0;
credits = 0;
playerDead = 0;
gaugeTimer = 0;
bgTimer = 0;
messScrolling = false;
bgSprite = new Sprite();
MESS = new messagebox();
PAUSE = new pausedmenu();
bgart = new backgroundart();
water = new waterAnim();
stunAnim = new stunned();
scoreCounts = {n1:0, n2:0, n3:0, n4:0, n5:0, n6:0};
squirrelClick = false;
qual = 1;
audio = 1;
lastScore = 0;
addEventListener(Event.ENTER_FRAME, update);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
init();
stop();
fps = new FPS("left");
}
}
}//package k_fla
Section 54
//MC_gauge_103 (k_fla.MC_gauge_103)
package k_fla {
import flash.display.*;
public dynamic class MC_gauge_103 extends MovieClip {
public function MC_gauge_103(){
addFrameScript(0, frame1, 84, frame85);
}
function frame1(){
stop();
}
function frame85(){
stop();
}
}
}//package k_fla
Section 55
//MC_machineBody_86 (k_fla.MC_machineBody_86)
package k_fla {
import flash.display.*;
public dynamic class MC_machineBody_86 extends MovieClip {
public function MC_machineBody_86(){
addFrameScript(0, frame1, 29, frame30);
}
function frame1(){
stop();
}
function frame30(){
gotoAndPlay(2);
}
}
}//package k_fla
Section 56
//MC_quality_120 (k_fla.MC_quality_120)
package k_fla {
import flash.display.*;
public dynamic class MC_quality_120 extends MovieClip {
public var mc:MovieClip;
public function MC_quality_120(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 57
//MC_rock_27 (k_fla.MC_rock_27)
package k_fla {
import flash.display.*;
public dynamic class MC_rock_27 extends MovieClip {
public function MC_rock_27(){
addFrameScript(0, frame1, 7, frame8, 18, frame19);
}
function frame1(){
stop();
}
function frame8(){
gotoAndStop(1);
}
function frame19(){
stop();
}
}
}//package k_fla
Section 58
//MC_sound_118 (k_fla.MC_sound_118)
package k_fla {
import flash.display.*;
public dynamic class MC_sound_118 extends MovieClip {
public var mc:MovieClip;
public function MC_sound_118(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 59
//MC_squirrel_77 (k_fla.MC_squirrel_77)
package k_fla {
import flash.display.*;
public dynamic class MC_squirrel_77 extends MovieClip {
public function MC_squirrel_77(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package k_fla
Section 60
//menuintro_203 (k_fla.menuintro_203)
package k_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.geom.*;
import flash.system.*;
import flash.errors.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.ui.*;
import flash.xml.*;
public dynamic class menuintro_203 extends MovieClip {
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public var chameleon:MovieClip;
public function menuintro_203(){
addFrameScript(9, frame10, 20, frame21);
}
function frame10(){
group5.gotoAndPlay("go");
group4.gotoAndPlay("go");
group3.gotoAndPlay("go");
}
function frame21(){
chameleon.gear.alpha = 0;
chameleon.gear._visible = false;
}
}
}//package k_fla
Section 61
//page_credits_185 (k_fla.page_credits_185)
package k_fla {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public dynamic class page_credits_185 extends MovieClip {
public var akelixe:SimpleButton;
public var alillm:SimpleButton;
public var lux:SimpleButton;
public function page_credits_185(){
addFrameScript(0, frame1);
}
public function clickalillm(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.alillm.com");
navigateToURL(_local2, "_blank");
}
public function clicklux(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.luxgames.net/blog/");
navigateToURL(_local2, "_blank");
}
public function clickakelixe(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://lambdarecords.net/artists/akelixe/");
navigateToURL(_local2, "_blank");
}
function frame1(){
alillm.addEventListener(MouseEvent.CLICK, clickalillm);
lux.addEventListener(MouseEvent.CLICK, clicklux);
akelixe.addEventListener(MouseEvent.CLICK, clickakelixe);
}
}
}//package k_fla
Section 62
//page_home_204 (k_fla.page_home_204)
package k_fla {
import flash.display.*;
public dynamic class page_home_204 extends MovieClip {
public function page_home_204(){
addFrameScript(30, frame31);
}
function frame31(){
stop();
}
}
}//package k_fla
Section 63
//pressspace_84 (k_fla.pressspace_84)
package k_fla {
import flash.display.*;
public dynamic class pressspace_84 extends MovieClip {
public function pressspace_84(){
addFrameScript(0, frame1, 20, frame21);
}
function frame1(){
stop();
}
function frame21(){
gotoAndPlay(3);
}
}
}//package k_fla
Section 64
//sponsorintro_192 (k_fla.sponsorintro_192)
package k_fla {
import flash.display.*;
public dynamic class sponsorintro_192 extends MovieClip {
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public function sponsorintro_192(){
addFrameScript(9, frame10);
}
function frame10(){
group5.gotoAndPlay("go");
group4.gotoAndPlay("go");
group3.gotoAndPlay("go");
}
}
}//package k_fla
Section 65
//UI_greenLight_106 (k_fla.UI_greenLight_106)
package k_fla {
import flash.display.*;
public dynamic class UI_greenLight_106 extends MovieClip {
public function UI_greenLight_106(){
addFrameScript(0, frame1, 15, frame16);
}
function frame1(){
stop();
}
function frame16(){
gotoAndPlay(2);
}
}
}//package k_fla
Section 66
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const LOGGED_IN:String = "LoggedIn";
public static const LOGGED_OUT:String = "LoggedOut";
public static const LOGIN_SHOW:String = "LoginShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const STORE_SHOW:String = "StoreShow";
public static const STORE_HIDE:String = "StoreHide";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ITEM_OWNED:String = "ItemOwned";
public static const ITEM_NEW:String = "ItemNew";
public static const STORE_ITEMS:String = "StoreItems";
public static const USER_INFO:String = "UserInfo";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IOError";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
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 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 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);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:_arg1});
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("coins_saveUserProperties", _arg1);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
}
}//package mochi.as3
Section 67
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Fragment:Number;
private var Sibling:MochiDigits;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function get value():Number{
return (Number(this.toString()));
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _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 reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
}
}//package mochi.as3
Section 68
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_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 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);
};
}
}
}//package mochi.as3
Section 69
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_CENTER:String = "ALIGN_C";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const FORMAT_SHORT:String = "ShortForm";
public static const FORMAT_LONG:String = "LongForm";
private static var gameStart:Number;
private static var levelStart:Number;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
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 setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local4:Object;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startGame():void{
gameStart = new Date().time;
trigger("start_game");
}
public static function endGame():void{
var _local1:Number = (new Date().time - gameStart);
trigger("end_game", {time:_local1});
}
public static function startLevel():void{
levelStart = new Date().time;
trigger("start_level");
}
public static function endLevel():void{
var _local1:Number = (new Date().time - levelStart);
trigger("end_level", {time:_local1});
}
}
}//package mochi.as3
Section 70
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
public static var onCloseHandler:Object;
public static var onErrorHandler:Object;
private static var boardID:String;
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});
}
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 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 requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
var _local2:Object = {};
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);
}
}
}//package mochi.as3
Section 71
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.geom.*;
import flash.system.*;
public class MochiServices {
private static var _id:String;
private static var _container:Object;
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _timer:Timer;
private static var _preserved:Object;
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
private static var _services:String = "services.swf";
private static var _mochiLC:String = "MochiLC.swf";
private static var _swfVersion:String;
private static var _listenChannelName:String = "__ms_";
private static var _sendChannel:LocalConnection;
private static var _sendChannelName:String;
private static var _connecting:Boolean = false;
private static var _connected:Boolean = false;
public static var netup:Boolean = true;
public static var netupAttempted:Boolean = false;
public static var onError:Object;
public static var widget:Boolean = false;
public static var servicesSync:MochiSync = new MochiSync();
private static var _mochiLocalConnection:MovieClip;
public static function get id():String{
return (_id);
}
public static function get clip():Object{
return (_container);
}
public static function get childClip():Object{
return (_clip);
}
public static function getVersion():String{
return ("3.3 as3");
}
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 isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
public static function get connected():Boolean{
return (_connected);
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
_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;
};
};
};
var _local3:Number = 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 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 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 createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
var mc:MovieClip = 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 stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
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);
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
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 loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var _local3:String = ("_mochiservices_com_" + _arg1);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
var _local4:String = (_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);
var _local5:URLRequest = new URLRequest(_local4);
var _local6:URLVariables = 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);
}
private static function loadLCBridge(_arg1:Object):void{
var loader:Loader;
var clip = _arg1;
loader = new Loader();
var mochiLCURL:String = (_servURL + _mochiLC);
var req:URLRequest = new URLRequest(mochiLCURL);
var complete:Function = 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 loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
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");
};
}
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...");
}
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 onReceive(_arg1:Object):void{
var methodName:String;
var pkg = _arg1;
var cb:String = pkg.callbackID;
var cblst:Object = _clip._callbacks[cb];
if (!cblst){
return;
};
var method:* = cblst.callbackMethod;
methodName = "";
var obj:Object = 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];
}
private static function onEvent(_arg1:Object):void{
var _local2:String = _arg1.target;
var _local3:String = _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 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);
};
};
};
};
}
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) {
};
};
};
};
}
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 urlOptions(_arg1:Object):Object{
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local2:Object = {};
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 addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var avm1Click:DisplayObject;
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;
var vars:Object = 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);
var s = "?";
var i:Number = 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{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
var _local2:Rectangle = 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);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local4:int;
var _local14:Loader;
var _local3:Array = [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];
var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var _local6:Array = [0, 64, 0, 0, 0];
var _local7:MovieClip = new MovieClip();
var _local8:LocalConnection = new LocalConnection();
var _local9:String = ((("_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);
var _local10:ByteArray = new ByteArray();
var _local11:ByteArray = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
var _local12:uint = ((_local3.length + _local11.length) + 4);
var _local13:uint = (_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);
}
}
}//package mochi.as3
Section 72
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_REQUEST:String = "SyncRequest";
public static var SYNC_PROPERTY:String = "UpdateProperty";
public function MochiSync():void{
_syncContainer = {};
}
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{
if (_syncContainer[_arg1] == _arg2){
return;
};
var _local3:String = _arg1.toString();
_syncContainer[_local3] = _arg2;
MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
}
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;
};
}
}
}//package mochi.as3
Section 73
//NewgroundsAPIAsset_API_Conencted_11 (PreloaderBar_fla.NewgroundsAPIAsset_API_Conencted_11)
package PreloaderBar_fla {
import flash.display.*;
import com.newgrounds.components.*;
public dynamic class NewgroundsAPIAsset_API_Conencted_11 extends MovieClip {
public function NewgroundsAPIAsset_API_Conencted_11(){
addFrameScript(36, frame37);
}
function frame37(){
APIConnector(parent).clear();
}
}
}//package PreloaderBar_fla
Section 74
//NewgroundsAPIAsset_ConnectingAPI_9 (PreloaderBar_fla.NewgroundsAPIAsset_ConnectingAPI_9)
package PreloaderBar_fla {
import flash.display.*;
public dynamic class NewgroundsAPIAsset_ConnectingAPI_9 extends MovieClip {
public function NewgroundsAPIAsset_ConnectingAPI_9(){
addFrameScript(9, frame10);
}
function frame10(){
stop();
}
}
}//package PreloaderBar_fla
Section 75
//NewgroundsAPIAsset_Connection_Error_14 (PreloaderBar_fla.NewgroundsAPIAsset_Connection_Error_14)
package PreloaderBar_fla {
import flash.display.*;
import com.newgrounds.components.*;
public dynamic class NewgroundsAPIAsset_Connection_Error_14 extends MovieClip {
public function NewgroundsAPIAsset_Connection_Error_14(){
addFrameScript(9, frame10, 20, frame21);
}
function frame21(){
APIConnector(parent).clear();
}
function frame10(){
stop();
}
}
}//package PreloaderBar_fla
Section 76
//NewgroundsAPIAsset_FlashAd_Container_41 (PreloaderBar_fla.NewgroundsAPIAsset_FlashAd_Container_41)
package PreloaderBar_fla {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
public dynamic class NewgroundsAPIAsset_FlashAd_Container_41 extends MovieClip {
public var ngLinkButton:SimpleButton;
public var adMask:MovieClip;
public function NewgroundsAPIAsset_FlashAd_Container_41(){
addFrameScript(0, frame1, 10, frame11);
}
function frame1(){
ngLinkButton.addEventListener(MouseEvent.CLICK, onNGLinkClicked);
}
public function onNGLinkClicked(_arg1:MouseEvent):void{
API.loadNewgrounds();
}
function frame11(){
gotoAndPlay(1);
}
}
}//package PreloaderBar_fla
Section 77
//NewgroundsAPIAsset_Load_Indicator_10 (PreloaderBar_fla.NewgroundsAPIAsset_Load_Indicator_10)
package PreloaderBar_fla {
import flash.display.*;
import flash.events.*;
public dynamic class NewgroundsAPIAsset_Load_Indicator_10 extends MovieClip {
public function NewgroundsAPIAsset_Load_Indicator_10(){
addFrameScript(0, frame1);
}
function frame1(){
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(_arg1:Event):void{
if (((visible) && (stage))){
rotation = (rotation + 30);
} else {
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
};
}
}
}//package PreloaderBar_fla
Section 78
//NewgroundsAPIAsset_Login_Warning_12 (PreloaderBar_fla.NewgroundsAPIAsset_Login_Warning_12)
package PreloaderBar_fla {
import flash.display.*;
import com.newgrounds.components.*;
public dynamic class NewgroundsAPIAsset_Login_Warning_12 extends MovieClip {
public function NewgroundsAPIAsset_Login_Warning_12(){
addFrameScript(9, frame10, 20, frame21);
}
function frame21(){
APIConnector(parent).clear();
}
function frame10(){
stop();
}
}
}//package PreloaderBar_fla
Section 79
//Timeline_5 (PreloaderBar_fla.Timeline_5)
package PreloaderBar_fla {
import flash.display.*;
public dynamic class Timeline_5 extends MovieClip {
public function Timeline_5(){
addFrameScript(39, frame40);
}
function frame40(){
stop();
}
}
}//package PreloaderBar_fla
Section 80
//backgroundart (backgroundart)
package {
import flash.display.*;
public dynamic class backgroundart extends MovieClip {
}
}//package
Section 81
//boardlogo (boardlogo)
package {
import flash.display.*;
public dynamic class boardlogo extends MovieClip {
public function boardlogo(){
addFrameScript(98, frame99);
}
function frame99(){
stop();
}
}
}//package
Section 82
//bombexplode (bombexplode)
package {
import flash.media.*;
public dynamic class bombexplode extends Sound {
}
}//package
Section 83
//bubbles (bubbles)
package {
import flash.media.*;
public dynamic class bubbles extends Sound {
}
}//package
Section 84
//bulge (bulge)
package {
import flash.display.*;
public dynamic class bulge extends MovieClip {
public var mc:MovieClip;
}
}//package
Section 85
//bullet (bullet)
package {
import flash.display.*;
public dynamic class bullet extends MovieClip {
}
}//package
Section 86
//coin (coin)
package {
import flash.display.*;
public dynamic class coin extends MovieClip {
}
}//package
Section 87
//coinhit (coinhit)
package {
import flash.display.*;
public dynamic class coinhit extends MovieClip {
}
}//package
Section 88
//collectcoin (collectcoin)
package {
import flash.media.*;
public dynamic class collectcoin extends Sound {
}
}//package
Section 89
//combotext (combotext)
package {
import flash.display.*;
import flash.text.*;
public dynamic class combotext extends MovieClip {
public var txt:TextField;
}
}//package
Section 90
//creds (creds)
package {
import flash.display.*;
public dynamic class creds extends MovieClip {
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public var back:SimpleButton;
public function creds(){
addFrameScript(0, frame1);
}
function frame1(){
group5.gotoAndStop(15);
group4.gotoAndStop(15);
group3.gotoAndStop(15);
}
}
}//package
Section 91
//crossexplode (crossexplode)
package {
import flash.display.*;
public dynamic class crossexplode extends BitmapData {
public function crossexplode(_arg1:int=0x0400, _arg2:int=0x0800){
super(_arg1, _arg2);
}
}
}//package
Section 92
//deathanim (deathanim)
package {
import flash.display.*;
public dynamic class deathanim extends MovieClip {
}
}//package
Section 93
//enemy (enemy)
package {
import flash.display.*;
public dynamic class enemy extends MovieClip {
public var mc:MovieClip;
public function enemy(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 94
//explode (explode)
package {
import flash.display.*;
public dynamic class explode extends MovieClip {
public function explode(){
addFrameScript(14, frame15);
}
function frame15(){
stop();
}
}
}//package
Section 95
//explode2 (explode2)
package {
import flash.display.*;
public dynamic class explode2 extends MovieClip {
public function explode2(){
addFrameScript(12, frame13);
}
function frame13(){
stop();
}
}
}//package
Section 96
//explodesound1 (explodesound1)
package {
import flash.media.*;
public dynamic class explodesound1 extends Sound {
}
}//package
Section 97
//explodesound2 (explodesound2)
package {
import flash.media.*;
public dynamic class explodesound2 extends Sound {
}
}//package
Section 98
//gameover (gameover)
package {
import flash.display.*;
import flash.text.*;
public dynamic class gameover extends MovieClip {
public var scoretxt:TextField;
public var submit:MovieClip;
public var more:MovieClip;
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public var back:SimpleButton;
public function gameover(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
group3.gotoAndStop(15);
group4.gotoAndStop(15);
group5.gotoAndStop(15);
}
}
}//package
Section 99
//gameoversound (gameoversound)
package {
import flash.media.*;
public dynamic class gameoversound extends Sound {
}
}//package
Section 100
//gemsexplode (gemsexplode)
package {
import flash.display.*;
public dynamic class gemsexplode extends BitmapData {
public function gemsexplode(_arg1:int=0x0100, _arg2:int=384){
super(_arg1, _arg2);
}
}
}//package
Section 101
//getreadygo (getreadygo)
package {
import flash.display.*;
public dynamic class getreadygo extends MovieClip {
public function getreadygo(){
addFrameScript(0, frame1, 30, frame31);
}
function frame1(){
stop();
}
function frame31(){
stop();
}
}
}//package
Section 102
//gui (gui)
package {
import flash.display.*;
import flash.text.*;
public dynamic class gui extends MovieClip {
public var machine:MovieClip;
public var pressspace:MovieClip;
public var qualitytoggle:MovieClip;
public var pipe:MovieClip;
public var creds:TextField;
public var audiotoggle:MovieClip;
public var squirrels:MovieClip;
}
}//package
Section 103
//gunshot (gunshot)
package {
import flash.media.*;
public dynamic class gunshot extends Sound {
}
}//package
Section 104
//hitsquirrel (hitsquirrel)
package {
import flash.media.*;
public dynamic class hitsquirrel extends Sound {
}
}//package
Section 105
//instructions (instructions)
package {
import flash.display.*;
public dynamic class instructions extends MovieClip {
}
}//package
Section 106
//invader (invader)
package {
import flash.display.*;
public dynamic class invader extends MovieClip {
public function invader(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 107
//invader2 (invader2)
package {
import flash.display.*;
public dynamic class invader2 extends MovieClip {
}
}//package
Section 108
//ktongue (ktongue)
package {
import flash.display.*;
public dynamic class ktongue extends MovieClip {
}
}//package
Section 109
//lightningstrike (lightningstrike)
package {
import flash.display.*;
public dynamic class lightningstrike extends BitmapData {
public function lightningstrike(_arg1:int=1240, _arg2:int=0x0200){
super(_arg1, _arg2);
}
}
}//package
Section 110
//lineexplode (lineexplode)
package {
import flash.display.*;
public dynamic class lineexplode extends BitmapData {
public function lineexplode(_arg1:int=0x0200, _arg2:int=840){
super(_arg1, _arg2);
}
}
}//package
Section 111
//losegems (losegems)
package {
import flash.media.*;
public dynamic class losegems extends Sound {
}
}//package
Section 112
//loseslots (loseslots)
package {
import flash.media.*;
public dynamic class loseslots extends Sound {
}
}//package
Section 113
//menuroll (menuroll)
package {
import flash.media.*;
public dynamic class menuroll extends Sound {
}
}//package
Section 114
//menuselection (menuselection)
package {
import flash.media.*;
public dynamic class menuselection extends Sound {
}
}//package
Section 115
//messagebox (messagebox)
package {
import flash.display.*;
public dynamic class messagebox extends MovieClip {
public function messagebox(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 116
//musicloop (musicloop)
package {
import flash.media.*;
public dynamic class musicloop extends Sound {
}
}//package
Section 117
//NewgroundsAPIAsset_big_popup_background (NewgroundsAPIAsset_big_popup_background)
package {
import flash.display.*;
public dynamic class NewgroundsAPIAsset_big_popup_background extends MovieClip {
public var shadow:MovieClip;
public var b:MovieClip;
public var c:MovieClip;
public var bl:MovieClip;
public var l:MovieClip;
public var br:MovieClip;
public var r:MovieClip;
public var tl:MovieClip;
public var t:MovieClip;
public var tr:MovieClip;
}
}//package
Section 118
//pausedmenu (pausedmenu)
package {
import flash.display.*;
public dynamic class pausedmenu extends MovieClip {
}
}//package
Section 119
//player (player)
package {
import flash.display.*;
public dynamic class player extends MovieClip {
public var chameleon:MovieClip;
}
}//package
Section 120
//slotstop (slotstop)
package {
import flash.media.*;
public dynamic class slotstop extends Sound {
}
}//package
Section 121
//slotswin (slotswin)
package {
import flash.media.*;
public dynamic class slotswin extends Sound {
}
}//package
Section 122
//smallexplode (smallexplode)
package {
import flash.display.*;
public dynamic class smallexplode extends BitmapData {
public function smallexplode(_arg1:int=0x0200, _arg2:int=796){
super(_arg1, _arg2);
}
}
}//package
Section 123
//special1 (special1)
package {
import flash.media.*;
public dynamic class special1 extends Sound {
}
}//package
Section 124
//special2 (special2)
package {
import flash.media.*;
public dynamic class special2 extends Sound {
}
}//package
Section 125
//spendcoins (spendcoins)
package {
import flash.media.*;
public dynamic class spendcoins extends Sound {
}
}//package
Section 126
//spiderweb (spiderweb)
package {
import flash.display.*;
public dynamic class spiderweb extends MovieClip {
}
}//package
Section 127
//squirrelbullet (squirrelbullet)
package {
import flash.display.*;
public dynamic class squirrelbullet extends MovieClip {
}
}//package
Section 128
//squirrelshoot (squirrelshoot)
package {
import flash.display.*;
public dynamic class squirrelshoot extends MovieClip {
public var mc:MovieClip;
}
}//package
Section 129
//stunned (stunned)
package {
import flash.display.*;
public dynamic class stunned extends MovieClip {
}
}//package
Section 130
//title (title)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.geom.*;
import flash.system.*;
import flash.errors.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.ui.*;
import flash.xml.*;
public dynamic class title extends MovieClip {
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public var creditsbtn:MovieClip;
public var chameleon:MovieClip;
public var tutorialbtn:MovieClip;
public var qualitytoggle:MovieClip;
public var viewbtn:MovieClip;
public var playbtn:MovieClip;
public var audiotoggle:MovieClip;
public var morebtn:MovieClip;
public function title(){
addFrameScript(0, frame1);
}
function frame1(){
group5.gotoAndStop(15);
group4.gotoAndStop(15);
group3.gotoAndStop(15);
chameleon.gear.alpha = 0;
}
}
}//package
Section 131
//titlesounds (titlesounds)
package {
import flash.media.*;
public dynamic class titlesounds extends Sound {
}
}//package
Section 132
//trail (trail)
package {
import flash.display.*;
public dynamic class trail extends MovieClip {
}
}//package
Section 133
//trans (trans)
package {
import flash.display.*;
public dynamic class trans extends MovieClip {
public function trans(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 134
//tripple (tripple)
package {
import flash.display.*;
public dynamic class tripple extends MovieClip {
public var mc:MovieClip;
}
}//package
Section 135
//tutorial (tutorial)
package {
import flash.display.*;
public dynamic class tutorial extends MovieClip {
public var squirrel:MovieClip;
public var group3:MovieClip;
public var group4:MovieClip;
public var group5:MovieClip;
public var back:SimpleButton;
public var mc:MovieClip;
public function tutorial(){
addFrameScript(0, frame1);
}
function frame1(){
group5.gotoAndStop(15);
group4.gotoAndStop(15);
group3.gotoAndStop(15);
}
}
}//package
Section 136
//warningfull (warningfull)
package {
import flash.media.*;
public dynamic class warningfull extends Sound {
}
}//package
Section 137
//waterAnim (waterAnim)
package {
import flash.display.*;
public dynamic class waterAnim extends MovieClip {
public function waterAnim(){
addFrameScript(0, frame1, 148, frame149);
}
function frame1(){
stop();
}
function frame149(){
gotoAndStop(1);
}
}
}//package