Skip to content

Instantly share code, notes, and snippets.

@bonniss
Forked from hschmitt/gist:3530953
Created January 22, 2022 14:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bonniss/bf9d54eb06c21bf1456300f28011f400 to your computer and use it in GitHub Desktop.
Save bonniss/bf9d54eb06c21bf1456300f28011f400 to your computer and use it in GitHub Desktop.
DragonBot Js
if ("undefined" == typeof ZotataPlayUserID) var ZotataPlayUserID = "";
if ("undefined" == typeof ZotataPlayAuthKey) var ZotataPlayAuthKey = "";
if ("undefined" == typeof debug) var debug = -1 != location.hostname.indexOf("t.dragonbound.net");
var VERSION = 101,
SERVER_ADDRESS = -1 != location.hostname.indexOf("t.dragonbound.net") ? "http://t.dragonbound.net:9000" : "http://game.dragonbound.net:80",
LOCATION_TYPE_UNKNOWN = "unknown",
LOCATION_TYPE_CHANNEL = "channel",
LOCATION_TYPE_ROOM = "room",
ROOM_STATUS_WAITING = "W",
ROOM_STATUS_FULL = "F",
ROOM_STATUS_PLAYING = "P",
GUI_LOCATION_CHANNEL = 1,
GUI_LOCATION_ROOM = 2,
GUI_LOCATION_GAME = 3,
GUI_LOCATION_SHOP = 4,
ITEM_NONE = -1,
ITEM_DUAL = 0,
ITEM_TELEPORT = 1,
ITEM_CLASS = ["itemDual", "itemTeleport"],
ITEM_SIZE = [2, 2],
CHAT_TYPE_NORMAL = 0,
CHAT_TYPE_DEAD = 2,
CHAT_TYPE_GOLD = 3,
CHAT_TYPE_GM = 5,
CHAT_TYPE_SYSTEM = 6,
CHAT_TYPE_GM_BUGLE = 9,
MOBILE_ARMOR = 0,
MOBILE_ICE = 1,
MOBILE_ADUKA = 2,
MOBILE_LIGHTNING = 3,
MOBILE_BIGFOOT = 4,
MOBILE_JD = 5,
NUMBER_OF_MOBILES = 6,
EXPLODE_ARMOR1 = 0,
EXPLODE_ARMOR2 = 1,
EXPLODE_ARMORSS = 2,
EXPLODE_ICE1 = 3,
EXPLODE_ICE2 = 4,
EXPLODE_ICESS = 5,
EXPLODE_ADUKA1_THOR = 6,
EXPLODE_TELEPORT = 7,
EXPLODE_LIGHTINING12_JD1 = 8,
EXPLODE_LIGHTNINGSS = 9,
EXPLODE_BIGFOOT1SS = 10,
EXPLODE_BIGFOOT2 = 11,
EXPLODE_JD2 = 12,
EXPLODE_JDSS = 13,
BULLET_ARMOR1 = 0,
BULLET_ARMOR2 = 1,
BULLET_ARMORSS = 2,
BULLET_ARMOESS2 = 3,
BULLET_ICE1 = 4,
BULLET_ICE2 = 5,
BULLET_ICESS = 6,
BULLET_ADUKA1_THOR = 7,
BULLET_ADUKA2 = 8,
BULLET_ADUKASS = 9,
BULLET_TELEPORT = 10,
BULLET_LIGHTNING12 = 11,
BULLET_LIGHTNINGSS = 12,
BULLET_BIGFOOT1 = 13,
BULLET_BIGFOOT2 = 14,
BULLET_BIGFOOTSS = 15,
BULLET_JD1 = 16,
BULLET_JD2 = 17,
BULLET_JDSS = 18,
MOBILE = [],
EXPLODE = [],
BULLET = [],
AVATAR_TYPE_HEAD = "h",
AVATAR_TYPE_BODY = "b",
AVATAR_TYPE_EYES = "g",
AVATAR_TYPE_FLAG = "f",
AVATAR_NAKED_HEAD_MALE = 1,
AVATAR_NAKED_BODY_MALE = 2,
AVATAR_NAKED_HEAD_FEMALE = 3,
AVATAR_NAKED_BODY_FEMALE = 4,
AVATAR_INDEX_N = 0,
AVATAR_INDEX_TYPE = 1,
AVATAR_INDEX_GENDER = 2,
AVATAR_INDEX_NAME = 3,
AVATAR_INDEX_DESC = 4,
AVATAR_INDEX_SHOP = 5,
AVATAR_INDEX_GOLD_WEEK = 6,
AVATAR_INDEX_GOLD_MONTH = 7,
AVATAR_INDEX_GOLD_PERM = 8,
AVATAR_INDEX_CASH_WEEK = 9,
AVATAR_INDEX_CASH_MONTH = 10,
AVATAR_INDEX_CASH_PERM = 11,
AVATAR_INDEX_STAT_POP = 12,
AVATAR_INDEX_STAT_TIME = 13,
AVATAR_INDEX_STAT_ATK = 14,
AVATAR_INDEX_STAT_DEF = 15,
AVATAR_INDEX_STAT_LIFE = 16,
AVATAR_INDEX_STAT_ITEM = 17,
AVATAR_INDEX_STAT_DIG = 18,
AVATAR_INDEX_STAT_SHLD = 19,
AVATAR_INDEX_GRAPHICS = 20,
GAME_MODE_NORMAL = 0,
GAME_MODE_BOSS = 1,
MOBILE_GRAPHICS = [];
MOBILE_GRAPHICS[MOBILE_ARMOR] = {
w: 36,
h: 39,
center_x: 18,
center_y: 37,
player_x: 17,
player_y: -28,
frames: 18
};
MOBILE_GRAPHICS[MOBILE_ICE] = {
w: 55,
h: 58,
center_x: 27,
center_y: 55,
player_x: -5,
player_y: -40,
frames: 19
};
MOBILE_GRAPHICS[MOBILE_ADUKA] = {
w: 67,
h: 65,
center_x: 33,
center_y: 60,
player_x: -20,
player_y: -27,
frames: 20
};
MOBILE_GRAPHICS[MOBILE_LIGHTNING] = {
w: 42,
h: 58,
center_x: 21,
center_y: 57,
player_x: 10,
player_y: -34,
frames: 20
};
MOBILE_GRAPHICS[MOBILE_BIGFOOT] = {
w: 50,
h: 61,
center_x: 25,
center_y: 55,
player_x: -2,
player_y: -34,
frames: 40
};
MOBILE_GRAPHICS[MOBILE_JD] = {
w: 36,
h: 58,
center_x: 18,
center_y: 57,
player_x: 11,
player_y: -34,
frames: 20
};
var GENDER_MALE = "m",
GENDER_FEMALE = "f",
MS_IN_1_HOUR = 36E5,
MS_IN_1_DAY = 24 * MS_IN_1_HOUR,
g_myPlayerInfo, g_channel_skip_rooms = 0,
g_roomsList, g_game = void 0,
g_gui_location = GUI_LOCATION_CHANNEL,
g_room_players, g_graphics_high = !0,
g_items = [ITEM_DUAL, ITEM_NONE, ITEM_DUAL, ITEM_NONE, ITEM_TELEPORT, ITEM_NONE],
g_auto_ready_timer, g_ranking_offset = 1,
g_is_ranking_loading = !1,
g_is_show_ranking = !1,
g_shop_player, g_channel_player, g_current_buy_avatar_index, g_current_shop_type, g_current_shop_page, g_bot_select_for_slot, g_is_game_background = 0 != getCookie("background"),
g_is_game_slice = 0 != getCookie("slice"),
g_is_ranking_loaded = !1;
function InitGlobals() {
MOBILE[MOBILE_ARMOR] = {
explodes: [EXPLODE_ARMOR1, EXPLODE_ARMOR2, EXPLODE_ARMORSS],
bullets: [0, 1, 2, 3]
};
MOBILE[MOBILE_ICE] = {
explodes: [EXPLODE_ICE1, EXPLODE_ICE2, EXPLODE_ICESS],
bullets: [4, 5, 6]
};
MOBILE[MOBILE_ADUKA] = {
explodes: [EXPLODE_ADUKA1_THOR],
bullets: [7, 8, 9]
};
MOBILE[MOBILE_LIGHTNING] = {
explodes: [EXPLODE_LIGHTINING12_JD1, EXPLODE_LIGHTNINGSS],
bullets: [11, 12, 13]
};
MOBILE[MOBILE_BIGFOOT] = {
explodes: [EXPLODE_BIGFOOT1SS, EXPLODE_BIGFOOT2],
bullets: [14, 15, 16]
};
MOBILE[MOBILE_JD] = {
explodes: [EXPLODE_LIGHTINING12_JD1, EXPLODE_JD2, EXPLODE_JDSS],
bullets: [17, 18, 19]
};
EXPLODE[EXPLODE_ARMOR1] = {
file: "armor1.png",
sound: AUDIO_ARMOR_BLAST,
graphics: [
[31, 29, 17, 9],
[68, 78, 37, 34],
[98, 111, 52, 54],
[111, 124, 57, 64],
[128, 125, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64]
]
};
EXPLODE[EXPLODE_ARMOR2] = {
file: "armor2.png",
sound: AUDIO_ARMOR_BLAST,
graphics: [
[20, 20, 10, 10],
[46, 52, 23, 26],
[66, 74, 33, 37],
[74, 84, 34, 42],
[89, 90, 43, 45],
[90, 95, 43, 49],
[93, 98, 45, 51],
[99, 103, 48, 52],
[101, 106, 50, 53],
[103, 109, 51, 54],
[105, 112, 52, 56],
[107, 114, 53, 57],
[110, 117, 54, 58],
[113, 119, 56, 58],
[113, 121, 56, 59],
[115, 122, 57, 59],
[117, 124, 58, 59],
[117, 124, 58, 59],
[117, 115, 58, 59],
[106, 100, 47, 46]
]
};
EXPLODE[EXPLODE_ARMORSS] = {
file: "armorSS.png",
sound: AUDIO_ARMOR_BLAST,
graphics: [
[128, 124, 64, 60],
[128, 128, 64, 64],
[128, 126, 64, 62],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 128, 64, 64],
[128, 91, 64, 27]
]
};
EXPLODE[EXPLODE_ICE1] = {
file: "ice1.png",
sound: AUDIO_ICE_BLAST,
graphics: [
[31, 35, 15, 22],
[53, 51, 25, 30],
[81, 77, 39, 41],
[99, 108, 47, 52],
[103, 110, 49, 53],
[104, 97, 49, 49],
[94, 93, 48, 48],
[103, 109, 51, 51],
[111, 107, 57, 50],
[103, 106, 53, 51],
[101, 107, 52, 53],
[93, 104, 44, 56],
[101, 108, 48, 58],
[110, 100, 52, 60],
[122, 107, 58, 62],
[121, 110, 57, 61]
]
};
EXPLODE[EXPLODE_ICE2] = {
file: "ice2.png",
sound: AUDIO_ICE_BLAST2,
graphics: [
[25, 28, 14, 16],
[48, 53, 26, 28],
[73, 78, 39, 38],
[96, 103, 50, 47],
[106, 106, 55, 48],
[116, 107, 58, 49],
[116, 111, 58, 53],
[116, 116, 58, 58],
[116, 116, 58, 58],
[113, 116, 58, 58],
[81, 80, 38, 53],
[78, 82, 32, 44],
[66, 70, 31, 33],
[61, 67, 31, 33],
[54, 58, 31, 35],
[53, 61, 30, 37],
[55, 53, 32, 30],
[49, 49, 26, 26],
[49, 49, 26, 26],
[49, 49, 26, 26],
[49, 49, 26, 26],
[48, 47, 25, 23],
[48, 44, 24, 18],
[51, 46, 26, 17],
[54, 47, 29, 16],
[57, 46, 32, 14]
]
};
EXPLODE[EXPLODE_ICESS] = {
file: "iceSS.png",
sound: AUDIO_ICE_BLAST2,
graphics: [
[80, 80, 35, 40],
[222, 222, 101, 111],
[223, 223, 101, 112],
[247, 247, 119, 119],
[247, 251, 119, 123],
[247, 248, 119, 120],
[247, 249, 119, 121],
[223, 223, 102, 115],
[224, 224, 103, 115],
[223, 222, 102, 115],
[221, 222, 101, 115],
[223, 222, 102, 115],
[222, 222, 102, 115],
[222, 222, 102, 115],
[222, 221, 102, 115],
[222, 221, 102, 115],
[222, 221, 102, 115],
[221, 222, 102, 116],
[221, 221, 102, 115],
[222, 220, 103, 115],
[222, 220, 103, 115],
[222, 219, 104, 115],
[222, 217, 105, 114],
[203, 175, 104, 88],
[206, 175, 106, 88],
[216, 180, 111, 86],
[224, 183, 115, 82],
[236, 184, 120, 70],
[244, 181, 123, 53],
[246, 157, 123, 29]
]
};
EXPLODE[EXPLODE_ADUKA1_THOR] = {
file: "aduka1-thor.png",
sound: AUDIO_ARMOR_BLAST,
graphics: [
[18, 18, 9, 9],
[60, 60, 30, 30],
[48, 47, 24, 23],
[63, 67, 31, 31],
[78, 80, 38, 39],
[93, 96, 46, 47],
[104, 96, 52, 47],
[114, 96, 57, 47],
[124, 96, 62, 47],
[128, 96, 61, 47],
[128, 92, 57, 48],
[76, 84, 34, 40],
[79, 76, 35, 40],
[82, 78, 37, 44],
[81, 79, 36, 45],
[76, 79, 38, 46]
]
};
EXPLODE[EXPLODE_TELEPORT] = {
file: "teleport.png",
sound: AUDIO_LIGHTNING_BLAST,
graphics: [
[43, 44, 22, 20],
[100, 101, 51, 49],
[113, 112, 57, 56],
[103, 102, 52, 49],
[114, 116, 57, 55],
[123, 126, 61, 62],
[126, 128, 62, 64],
[125, 128, 64, 64],
[125, 128, 64, 64],
[122, 128, 64, 64],
[126, 128, 64, 64],
[123, 126, 59, 62],
[119, 123, 59, 64],
[123, 121, 62, 61],
[121, 126, 61, 64],
[118, 128, 58, 64],
[121, 120, 59, 64],
[123, 121, 61, 64],
[122, 120, 62, 62]
]
};
EXPLODE[EXPLODE_LIGHTINING12_JD1] = {
file: "lightning12-jd1.png",
sound: AUDIO_LIGHTNING_BLAST,
graphics: [
[27, 17, 13, 8],
[55, 56, 29, 30],
[92, 92, 51, 49],
[114, 108, 59, 54],
[125, 122, 62, 61],
[119, 121, 57, 64],
[116, 113, 58, 59],
[102, 108, 51, 56],
[94, 92, 48, 44],
[65, 66, 32, 33],
[50, 51, 25, 25],
[74, 74, 37, 37],
[94, 94, 47, 47],
[112, 112, 56, 56]
]
};
EXPLODE[EXPLODE_LIGHTNINGSS] = {
file: "lightningSS.png",
sound: AUDIO_LIGHTNING_BLAST,
graphics: [
[21, 23, 12, 14],
[52, 49, 29, 26],
[38, 46, 22, 27],
[69, 78, 41, 40],
[142, 130, 77, 66],
[213, 216, 105, 106],
[250, 240, 126, 124],
[253, 246, 128, 124],
[256, 252, 128, 124],
[256, 240, 128, 124],
[256, 240, 128, 124],
[256, 240, 128, 124],
[256, 241, 128, 124],
[253, 241, 128, 123],
[240, 241, 115, 124],
[242, 243, 114, 124],
[252, 252, 128, 124],
[237, 237, 114, 122],
[234, 234, 113, 120]
]
};
EXPLODE[EXPLODE_BIGFOOT1SS] = {
file: "bigfoot1SS.png",
sound: AUDIO_BIGFOOT_BLAST1,
graphics: [
[56, 52, 28, 30],
[79, 72, 38, 41],
[92, 83, 41, 44],
[99, 101, 46, 51],
[101, 107, 48, 51],
[109, 102, 56, 51],
[109, 106, 57, 50],
[109, 101, 57, 50],
[108, 100, 57, 50],
[105, 100, 57, 50],
[102, 97, 57, 49],
[98, 97, 56, 49],
[92, 85, 53, 49],
[84, 80, 49, 45],
[81, 80, 47, 45],
[83, 79, 47, 43],
[79, 80, 44, 44],
[81, 80, 45, 44],
[80, 72, 45, 39]
]
};
EXPLODE[EXPLODE_BIGFOOT2] = {
file: "bigfoot2.png",
sound: AUDIO_BIGFOOT_BLAST2,
graphics: [
[26, 24, 14, 11],
[37, 34, 17, 15],
[43, 40, 23, 20],
[46, 47, 24, 23],
[47, 48, 24, 24],
[52, 48, 26, 25],
[51, 48, 25, 25],
[51, 47, 25, 25],
[50, 46, 24, 24],
[49, 46, 23, 24],
[48, 46, 22, 24],
[46, 44, 20, 23],
[42, 40, 19, 19],
[39, 38, 17, 19],
[38, 37, 17, 19],
[38, 37, 17, 19],
[37, 37, 17, 19],
[38, 37, 18, 19],
[37, 34, 17, 18]
]
};
EXPLODE[EXPLODE_JD2] = {
file: "jd2.png",
sound: AUDIO_JD_BLAST2,
graphics: [
[120, 102, 64, 64],
[121, 124, 60, 64],
[121, 128, 61, 64],
[124, 128, 64, 64],
[128, 126, 64, 64],
[117, 119, 59, 60],
[115, 113, 57, 55],
[120, 112, 61, 54],
[120, 110, 61, 53],
[118, 110, 60, 54],
[114, 114, 58, 54],
[109, 110, 55, 52],
[103, 107, 52, 53],
[97, 99, 49, 49],
[92, 88, 49, 44],
[79, 77, 41, 39],
[66, 63, 35, 32],
[36, 35, 18, 18],
[8, 8, 4, 4],
[67, 67, 34, 44]
]
};
EXPLODE[EXPLODE_JDSS] = {
file: "jdSS.png",
sound: AUDIO_JD_BLAST1,
graphics: [
[185, 182, 97, 98],
[233, 232, 119, 123],
[244, 237, 125, 124],
[244, 238, 125, 124],
[253, 241, 128, 124],
[256, 240, 128, 124],
[256, 241, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[254, 243, 128, 124],
[254, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 243, 128, 124],
[256, 242, 128, 124],
[256, 243, 128, 124],
[256, 245, 128, 124],
[256, 247, 128, 124],
[256, 248, 128, 124],
[256, 242, 128, 124],
[256, 242, 128, 124],
[250, 239, 126, 124]
]
};
BULLET[BULLET_ARMOR1] = {
sound: AUDIO_ARMOR_FIRE
};
BULLET[BULLET_ARMOR2] = {
sound: AUDIO_ARMOR_FIRE2
};
BULLET[BULLET_ARMORSS] = {
sound: AUDIO_ARMOR_FIRE2
};
BULLET[BULLET_ARMOESS2] = {
sound: AUDIO_ARMOR_FIRE2
};
BULLET[BULLET_ICE1] = {
file: "ice1.png",
sound: AUDIO_ICE_FIRE,
graphics: [
[24, 14, 6, 7],
[24, 16, 6, 8],
[24, 16, 6, 8],
[24, 14, 6, 7],
[24, 14, 6, 6],
[24, 15, 6, 7],
[24, 15, 6, 7],
[24, 15, 6, 7],
[24, 13, 6, 6],
[24, 14, 6, 6],
[24, 15, 6, 7],
[24, 15, 6, 7],
[24, 16, 6, 7],
[24, 15, 6, 7],
[24, 14, 6, 7],
[24, 14, 6, 7],
[24, 15, 6, 7],
[24, 15, 6, 7],
[24, 14, 6, 7],
[24, 14, 6, 7]
]
};
BULLET[BULLET_ICE2] = {
file: "ice2.png",
sound: AUDIO_ICE_FIRE,
graphics: [
[24, 24, 13, 10],
[24, 22, 13, 9],
[24, 19, 13, 8],
[24, 20, 13, 8],
[24, 22, 13, 9],
[24, 24, 13, 10],
[23, 24, 13, 10],
[22, 24, 12, 10],
[22, 24, 12, 10],
[23, 24, 13, 10],
[23, 24, 13, 10],
[24, 24, 13, 10]
]
};
BULLET[BULLET_ICESS] = {
file: "iceSS.png",
sound: AUDIO_ICE_FIRE,
graphics: [
[33, 29, 22, 14],
[33, 28, 22, 14],
[33, 25, 23, 13],
[31, 19, 22, 10],
[28, 16, 20, 8],
[28, 21, 19, 10],
[30, 26, 19, 12],
[32, 29, 20, 14],
[33, 29, 21, 14],
[33, 26, 21, 12],
[32, 23, 21, 11],
[30, 17, 20, 8],
[28, 18, 19, 9],
[28, 23, 19, 11],
[31, 27, 21, 13]
]
};
BULLET[BULLET_ADUKA1_THOR] = {
file: "aduka1-thor.png",
sound: AUDIO_ADUKA_FIRE,
graphics: [
[24, 24, 13, 12],
[30, 27, 15, 14],
[34, 31, 16, 19],
[36, 31, 17, 18],
[32, 30, 16, 19],
[34, 31, 16, 19],
[35, 30, 15, 15],
[33, 30, 15, 14],
[35, 30, 15, 12],
[32, 32, 13, 13]
]
};
BULLET[BULLET_ADUKA2] = {
file: "aduka2.png",
sound: AUDIO_ADUKA_FIRE2,
graphics: [
[33, 26, 16, 15],
[33, 24, 16, 13],
[34, 25, 17, 14],
[34, 26, 17, 15],
[33, 25, 16, 14],
[33, 24, 16, 13],
[33, 26, 16, 15],
[34, 27, 17, 16]
]
};
BULLET[BULLET_ADUKASS] = {
file: "adukaSS.png",
sound: AUDIO_ADUKA_FIRE2,
graphics: [
[44, 34, 25, 32],
[43, 31, 24, 30],
[44, 32, 25, 31],
[45, 34, 26, 33],
[44, 33, 25, 32],
[43, 32, 24, 30],
[44, 34, 25, 32],
[44, 37, 25, 35]
]
};
BULLET[BULLET_TELEPORT] = {
file: "teleport.png",
sound: AUDIO_ARMOR_FIRE,
graphics: [
[31, 24, 18, 12],
[34, 22, 21, 12],
[34, 22, 21, 12],
[35, 24, 22, 13],
[38, 24, 25, 13],
[37, 23, 24, 12],
[38, 23, 25, 12],
[34, 24, 21, 13],
[38, 24, 25, 12],
[33, 26, 20, 13],
[36, 25, 23, 13],
[31, 24, 18, 12]
]
};
BULLET[BULLET_LIGHTNING12] = {
file: "lightning12.png",
sound: AUDIO_LIGHTNING_FIRE,
graphics: [
[35, 32, 15, 15],
[33, 31, 16, 15],
[36, 39, 16, 19],
[39, 42, 19, 21],
[37, 39, 18, 18],
[37, 36, 18, 17],
[34, 33, 14, 15],
[27, 27, 12, 12],
[38, 44, 17, 19],
[32, 32, 14, 13]
]
};
BULLET[BULLET_LIGHTNINGSS] = {
file: "lightningSS.png",
sound: AUDIO_LIGHTNING_FIRE,
graphics: [
[55, 36, 42, 17],
[58, 36, 44, 17],
[58, 37, 44, 18],
[59, 37, 44, 18],
[60, 37, 44, 18],
[60, 37, 44, 18],
[58, 37, 42, 18],
[59, 37, 44, 18],
[58, 37, 44, 18],
[57, 36, 44, 17],
[57, 36, 44, 17],
[57, 37, 44, 17]
]
};
BULLET[BULLET_BIGFOOT1] = {
file: "bigfoot1.png",
sound: AUDIO_BIGFOOT_FIRE1,
graphics: [
[18, 12, 9, 6],
[18, 12, 9, 6],
[18, 12, 9, 6],
[18, 12, 9, 6],
[18, 12, 9, 6]
]
};
BULLET[BULLET_BIGFOOT2] = {
file: "bigfoot2.png",
sound: AUDIO_BIGFOOT_FIRE2,
graphics: [
[12, 10, 6, 5],
[12, 9, 6, 4],
[12, 9, 6, 4],
[12, 9, 6, 4],
[12, 10, 6, 5],
[12, 10, 6, 5],
[12, 9, 6, 4],
[12, 10, 6, 5],
[12, 10, 6, 5],
[12, 10, 6, 5]
]
};
BULLET[BULLET_BIGFOOTSS] = {
file: "bigfootSS.png",
sound: AUDIO_BIGFOOT_FIRE1,
graphics: [
[20, 14, 15, 7],
[20, 14, 15, 7],
[20, 14, 15, 7],
[20, 14, 15, 7],
[20, 14, 15, 7]
]
};
BULLET[BULLET_JD1] = {
file: "jd1.png",
sound: AUDIO_JD_FIRE,
graphics: [
[20, 20, 10, 10],
[20, 20, 10, 10],
[20, 20, 10, 10],
[20, 20, 10, 10],
[20, 20, 10, 10],
[20, 20, 10, 10],
[20, 20, 10, 10],
[20, 20, 10, 10]
]
};
BULLET[BULLET_JD2] = {
file: "jd2.png",
sound: AUDIO_JD_FIRE,
graphics: [
[29, 30, 15, 15],
[31, 31, 16, 15],
[29, 30, 15, 15],
[29, 31, 15, 16],
[30, 31, 15, 16],
[29, 31, 14, 14],
[30, 31, 15, 15],
[30, 31, 16, 14]
]
};
BULLET[BULLET_JDSS] = {
file: "jdSS.png",
sound: AUDIO_JD_FIRE,
graphics: [
[34, 35, 17, 18],
[36, 35, 18, 17],
[34, 36, 18, 18],
[35, 37, 18, 19],
[36, 35, 18, 18],
[35, 37, 17, 17],
[35, 37, 18, 18],
[35, 36, 19, 16]
]
}
}
var COMPUTER_PLAYER = [{
rank: 0,
name: "Clown Stripe",
gp: 2,
atk: 5,
def: 0,
life: 10,
dig: 0
}, {
rank: 1,
name: "Haris Pilton",
gp: 3,
atk: 7,
def: 4,
life: 15,
dig: 0
}, {
rank: 3,
name: "Harly Potler",
gp: 4,
atk: 10,
def: 8,
life: 20,
dig: 5
}, {
rank: 5,
name: "Angie Jelly",
gp: 5,
atk: 12,
def: 12,
life: 25,
dig: 9
}, {
rank: 7,
name: "Floyd Pinkus",
gp: 6,
atk: 17,
def: 18,
life: 30,
dig: 14
}, {
rank: 9,
name: "Yuffie Kisaragi",
gp: 7,
atk: 25,
def: 24,
life: 35,
dig: 18
}, {
rank: 13,
name: "Bill Board",
gp: 8,
atk: 33,
def: 32,
life: 40,
dig: 22
}, {
rank: 15,
name: "Gilly Gamesh",
gp: 10,
atk: 40,
def: 40,
life: 45,
dig: 25
}, {
rank: 17,
name: "Lance Alot",
gp: 12,
atk: 50,
def: "??",
life: 50,
dig: 10
}, {
rank: 18,
name: "Voldy Moore",
gp: 14,
atk: 50,
def: 50,
life: "??",
dig: 20
}, {
rank: 19,
name: "Jack the Ripper",
gp: 16,
atk: 50,
def: 50,
life: 50,
dig: "??"
}, {
rank: 20,
name: "Seffy Roth",
gp: 20,
atk: "??",
def: 50,
life: 50,
dig: 30
}];
$(document).ajaxSend(function (a, b, c) {
function d(a) {
var b = null;
if (document.cookie && "" != document.cookie) for (var c = document.cookie.split(";"), d = 0; d < c.length; d++) {
var e = jQuery.trim(c[d]);
if (e.substring(0, a.length + 1) == a + "=") {
b = decodeURIComponent(e.substring(a.length + 1));
break
}
}
return b
}
if (a = !/^(GET|HEAD|OPTIONS|TRACE)$/.test(c.type)) var c = c.url,
a = "//" + document.location.host,
e = document.location.protocol + a,
a = c == e || c.slice(0, e.length + 1) == e + "/" || c == a || c.slice(0, a.length + 1) == a + "/" || !/^(\/\/|http:|https:).*/.test(c);
a && b.setRequestHeader("X-CSRFToken", d("csrftoken"))
});
function preloadImages(a) {
$(a).each(function () {
(new Image).src = this
})
}
var g_draggable_z_index = 1001;
$.prototype.draggable2 = function () {
var a = this,
b = !1,
c = !1,
d, e, f, h;
a.css("z-index", g_draggable_z_index += 1);
this.mousedown(function (c) {
b = !0;
d = c.pageX;
e = c.pageY;
c = a.offset();
f = c.left;
h = c.top;
a.css("z-index", g_draggable_z_index += 1)
});
$(document).mousemove(function (g) {
if (b && !c && (5 < Math.abs(g.pageX - d) || 5 < Math.abs(g.pageY - e))) c = !0;
c && a.css({
left: (f + (g.pageX - d)) / g_aspect_ratio - g_no_aspect_left + "px",
top: (h + (g.pageY - e)) / g_aspect_ratio - g_no_aspect_top + "px"
})
});
$(document).mouseup(function () {
c = b = !1
});
return this
};
$(document).ready(function () {
InitGlobals();
$(document).bind("contextmenu", function () {
return !1
});
$(document).bind("dragstart", function (a) {
return !(a.srcElement && "img" == a.srcElement.localName)
});
var a = navigator.userAgent;
a.match(/(iPhone|iPod|blackberry|android|htc|lg|midp|mmp|mobile|nokia|opera mini|palm|pocket|psp|sgh|smartphone|symbian|treo mini|Playstation Portable|SonyEricsson|Samsung|MobileExplorer|PalmSource|Benq|Windows Phone|Windows Mobile|IEMobile|Windows CE|Nintendo Wii)/i) && (g_graphics_high = !1, window.scrollTo(0, 1));
a.match(/(Windows|MacOS|Mac OS|UNIX|Linux)/i) ? g_is_show_ranking = !0 : $("#touch_ui").show();
$("#buttonRanking").html(g_is_show_ranking ? "Ranking >>" : "<< Ranking");
a.match(/(Chrome|Safari)/i) && $("#game_back,#game_front").css({
position: "fixed",
overflow: "hidden"
});
AudioInit();
ChannelGUI();
RankingGUI();
RoomGUI();
GameGUI();
ShopGUI();
$("#dialogCreateRoom").draggable2();
$(".AlertBox").draggable2();
$("#shop_buy_dialog").draggable2();
$("#playerInfoDialog").draggable2();
$("#playerInfoDialog").draggable2();
$("#OptionsDialog").draggable2();
$("body").bind("keyup", function (a) {
a.which == 13 && (g_myPlayerInfo.location_type == LOCATION_TYPE_CHANNEL ? $("#dialogCreateRoom").is(":visible") ? CreateRoomDialogPressedOK() : $("#channelInput").focus() : g_game ? $("#gameInput").focus() : $("#roomInput").focus())
});
document.onhelp = function () {
return false
};
window.onhelp = function () {
return false
};
$("#container, .NoSelect").bind("selectstart", function (a) {
a.stopPropagation();
return false
});
$(".CanSelect").bind("selectstart", function (a) {
a.stopPropagation();
return true
});
setTimeout(ButtonGlow, 700);
g_is_game_background && $("#map_bg").show();
ResizeInit();
"" != ZotataPlayUserID && NetworkStuff()
});
function UpdateSliceDragGUI() {
g_is_game_slice ? $("#slice_drag_button").removeClass("drag") : $("#slice_drag_button").addClass("drag")
}
function ButtonGlow() {
var a = $("#buttonQuickJoin");
a.hasClass("buttonGlow") ? a.removeClass("buttonGlow") : a.addClass("buttonGlow");
setTimeout(ButtonGlow, 700)
}
$(window).load(function () {
top.location != self.location ? top.location.replace("http://dragonbound.net") : preloadImages("/static/images/room_bg.png /static/images/room_stuff.png /static/images/maps/metamine.png /static/images/maps/miramo.png /static/images/game_stuff.png /static/images/turn_timer.png /static/images/shots.png /static/images/scores_stuff.png /static/images/explodes/aduka1-thor.png /static/images/explodes/teleport.png /static/images/bullets/teleport.png".split(" "))
});
function ExplodeDialog(a) {
if (g_graphics_high) {
var b = $("#" + a + " .AlertBox");
0 < b.length ? (b.effect("explode"), $("#" + a).fadeOut()) : $("#" + a).effect("explode")
} else $("#" + a).hide()
}
function FadeInDialog(a) {
g_graphics_high ? ($("#" + a + " .AlertBox").fadeIn(), $("#" + a).fadeIn()) : $("#" + a).show()
}
function ToggleOptionsDialog() {
$("#OptionsDialog").is(":visible") ? ExplodeDialog("OptionsDialog") : (PrepareOptionsDialog(), FadeInDialog("OptionsDialog"))
}
var ROOM_NAMES = ["Hello World", "The Love Room", "DragonBound", "Welcome", "Let's Rock!"];
function ChannelGUI() {
$("#channel").tinyscrollbar({
size: 101
});
$("#playersList").tinyscrollbar({
size: 207
});
$("#friendsList").tinyscrollbar({
size: 208
});
$("#buttonCreateRoom").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT);
6 > g_myPlayerInfo.unlock ? CreateRoomChangeMode(GAME_MODE_BOSS) : CreateRoomChangeMode(GAME_MODE_NORMAL);
$("#createRoomTitle").val(ROOM_NAMES[random(0, ROOM_NAMES.length - 1)]);
FadeInDialog("dialogCreateRoom");
$("#createRoomTitle").focus()
});
$("#buttonOptions").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ToggleOptionsDialog()
});
$("#buttonRoomsListDown").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_channel_skip_rooms < g_roomsList.length - 6 && (g_channel_skip_rooms += 6);
ChannelRoomsUpdate(g_roomsList)
});
$("#buttonRoomsListUp").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
0 < g_channel_skip_rooms && (g_channel_skip_rooms -= 6);
ChannelRoomsUpdate(g_roomsList)
});
$(".room").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $(this).children(".roomNumber").html();
$(this).children(".roomLock").hasClass("roomLocked") ? ($("#join_room_input").val(a), FadeInDialog("dialog_join_room_div"), $("#join_password_input").val("").focus()) : SendRoomJoin(a)
});
$("#buttonMyInfo").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
FadeInDialog("dialog_change_name_div")
});
$("#buttonShop").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SwitchToShopScreen()
});
$("#buttonQuickJoin").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendQuickJoin()
});
$("#dialog_change_name_cancel").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ExplodeDialog("dialog_change_name_div")
});
$("#dialog_change_name_ok").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendChangeName($("#display_name").val(), $("#can_show_photo").is(":checked"));
ExplodeDialog("dialog_change_name_div")
});
$("#dialog_join_room_cancel").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ExplodeDialog("dialog_join_room_div")
});
$("#dialog_join_room_ok").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendRoomJoin($("#join_room_input").val(), $("#join_password_input").val());
ExplodeDialog("dialog_join_room_div")
});
$("#channelInput").bind("keyup", function (a) {
13 == a.which && "" != this.value && (a = this.value, this.value = "", ZotataPlayChat(a))
});
$("#buttonRanking").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_is_show_ranking = !g_is_show_ranking;
Resize();
$("#buttonRanking").html(g_is_show_ranking ? "Ranking >>" : "<< Ranking")
});
$("#event_button").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendEvent(0)
});
$("#facebook_post").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
Facebook_PostToFeed()
});
$("#buttonAllBuddyList").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#buttonAllBuddyList");
a.hasClass("BuddyList") ? (a.removeClass("BuddyList"), $("#friendsList").hide()) : (a.addClass("BuddyList"), $("#friendsList").show().tinyscrollbar_update("top"))
});
CreateRoomDialogGUI();
OptionsDialogGUI()
}
function PrepareOptionsDialog() {
g_game ? ($("#OptionsLeave").show(), $("#OptionsOK").css("left", "175px"), $("#OptionsDialog").css({
left: 2,
top: 267
})) : g_game || ($("#OptionsLeave").hide(), $("#OptionsOK").css("left", "106px"), $("#OptionsDialog").css({
left: 241,
top: 221
}));
g_audio_is_music_on ? $("#OptionsMusic").removeClass("CheckboxOff").addClass("CheckboxOn") : $("#OptionsMusic").removeClass("CheckboxOn").addClass("CheckboxOff");
g_audio_is_effects_on ? $("#OptionsEffects").removeClass("CheckboxOff").addClass("CheckboxOn") : $("#OptionsEffects").removeClass("CheckboxOn").addClass("CheckboxOff");
g_graphics_high ? ($("#OptionsGraphicsHigh").removeClass("RadioOff").addClass("RadioOn"), $("#OptionsGraphicsLow").removeClass("RadioOn").addClass("RadioOff")) : ($("#OptionsGraphicsHigh").removeClass("RadioOn").addClass("RadioOff"), $("#OptionsGraphicsLow").removeClass("RadioOff").addClass("RadioOn"));
g_is_game_background ? ($("#OptionsBackgroundOn").removeClass("RadioOff").addClass("RadioOn"), $("#OptionsBackgroundOff").removeClass("RadioOn").addClass("RadioOff")) : ($("#OptionsBackgroundOn").removeClass("RadioOn").addClass("RadioOff"), $("#OptionsBackgroundOff").removeClass("RadioOff").addClass("RadioOn"));
g_is_game_slice ? ($("#OptionsShootingModeSlice").removeClass("RadioOff").addClass("RadioOn"), $("#OptionsShootingModeDrag").removeClass("RadioOn").addClass("RadioOff")) : ($("#OptionsShootingModeSlice").removeClass("RadioOn").addClass("RadioOff"), $("#OptionsShootingModeDrag").removeClass("RadioOff").addClass("RadioOn"))
}
function OptionsDialogGUI() {
$("#OptionsOK").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ExplodeDialog("OptionsDialog")
});
$("#OptionsMusic").click(function () {
$("#OptionsMusic").hasClass("CheckboxOn") ? (AudioTurnMusicOff(), setCookie("music", 0)) : (AudioTurnMusicOn(), setCookie("music", 1));
AudioPlay(AUDIO_BUTTON_SELECT2);
PrepareOptionsDialog()
});
$("#OptionsEffects").click(function () {
$("#OptionsEffects").hasClass("CheckboxOn") ? (AudioTurnEffectsOff(), setCookie("effects", 0)) : (AudioTurnEffectsOn(), setCookie("effects", 1));
AudioPlay(AUDIO_BUTTON_SELECT2);
PrepareOptionsDialog()
});
$("#OptionsGraphicsHigh").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_graphics_high = !0;
PrepareOptionsDialog()
});
$("#OptionsGraphicsLow").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_graphics_high = !1;
PrepareOptionsDialog()
});
$("#OptionsBackgroundOn").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_is_game_background = !0;
PrepareOptionsDialog();
$("#map_bg").show();
setCookie("background", 1)
});
$("#OptionsBackgroundOff").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_is_game_background = !1;
PrepareOptionsDialog();
$("#map_bg").hide();
setCookie("background", 0)
});
$("#OptionsShootingModeSlice").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_is_game_slice = !0;
PrepareOptionsDialog();
UpdateSliceDragGUI();
setCookie("slice", 1)
});
$("#OptionsShootingModeDrag").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_is_game_slice = !1;
PrepareOptionsDialog();
UpdateSliceDragGUI();
setCookie("slice", 0)
});
$("#OptionsLeave").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ExplodeDialog("OptionsDialog");
SendRoomLeave()
});
$("#OptionsDialog").bind("touchstart click touchend", function (a) {
a.stopPropagation();
return !1
})
}
function CreateRoomDialogPressedOK() {
var a, b = "",
c, d;
a = $("#createRoomTitle").val();
$("#CreateRoomPrivateCheckbox").hasClass("checkboxOn") && (b = $("#createRoomPasswordInput").val());
c = $("#CreateRoomPlayers");
c = c.hasClass("players1v1") ? 2 : c.hasClass("players2v2") ? 4 : c.hasClass("players3v3") ? 6 : c.hasClass("players1vB") ? 1 : c.hasClass("players2vB") ? 2 : c.hasClass("players3vB") ? 3 : c.hasClass("players4vB") ? 4 : 8;
d = $("#CreateRoomMode").hasClass("gameModeNormal") ? GAME_MODE_NORMAL : GAME_MODE_BOSS;
SendRoomCreate(a, b, c, d)
}
function CreateRoomDialogGUI() {
$("#dialogCreateRoomButtonCancel").click(function () {
g_graphics_high ? $("#dialogCreateRoom").effect("explode") : $("#dialogCreateRoom").hide();
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#dialogCreateRoomButtonOK").click(function () {
CreateRoomDialogPressedOK();
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#CreateRoomPrivateCheckbox").click(function () {
var a = $("#CreateRoomPrivateCheckbox");
a.hasClass("checkboxOff") ? (a.removeClass("checkboxOff").addClass("checkboxOn"), $("#CreateRoomPassword").show(), $("#createRoomPasswordInput").focus()) : (a.removeClass("checkboxOn").addClass("checkboxOff"), $("#CreateRoomPassword").hide());
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#CreateRoomNumPlayersPrev").click(function () {
var a = $("#CreateRoomPlayers"),
b;
b = $("#CreateRoomMode").hasClass("gameModeNormal") ? a.hasClass("players1v1") ? "players4v4" : a.hasClass("players2v2") ? "players1v1" : a.hasClass("players3v3") ? "players2v2" : "players3v3" : a.hasClass("players1vB") ? "players4vB" : a.hasClass("players2vB") ? "players1vB" : a.hasClass("players3vB") ? "players2vB" : "players3vB";
a.removeClass().addClass(b);
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#CreateRoomNumPlayersNext").click(function () {
var a = $("#CreateRoomPlayers"),
b;
b = $("#CreateRoomMode").hasClass("gameModeNormal") ? a.hasClass("players1v1") ? "players2v2" : a.hasClass("players2v2") ? "players3v3" : a.hasClass("players3v3") ? "players4v4" : "players1v1" : a.hasClass("players1vB") ? "players2vB" : a.hasClass("players2vB") ? "players3vB" : a.hasClass("players3vB") ? "players4vB" : "players1vB";
a.removeClass().addClass(b);
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#CreateRoomModePrev, #CreateRoomModeNext").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
$("#CreateRoomMode").hasClass("gameModeNormal") ? CreateRoomChangeMode(GAME_MODE_BOSS) : CreateRoomChangeMode(GAME_MODE_NORMAL)
})
}
function CreateRoomChangeMode(a) {
var b = $("#CreateRoomMode"),
c = $("#CreateRoomPlayers"),
d;
a == GAME_MODE_BOSS ? (a = "gameModeBoss", d = c.hasClass("players1v1") ? "players1vB" : c.hasClass("players2v2") ? "players2vB" : c.hasClass("players3v3") ? "players3vB" : "players4vB") : (a = "gameModeNormal", d = c.hasClass("players1vB") ? "players1v1" : c.hasClass("players2vB") ? "players2v2" : c.hasClass("players3vB") ? "players3v3" : "players4v4");
b.removeClass().addClass(a);
c.removeClass().addClass(d);
$("#CreateRoomModeIcon").removeClass().addClass("iconMode" + a.slice(8));
"gameModeNormal" == a && 1 > g_myPlayerInfo.unlock ? ($("#dialogCreateLocked").show(), $("#dialogCreateMessage").html("This mode is locked until you win at BOSS mode as room master."), $("#dialogCreateRoomButtonOK").hide()) : ($("#dialogCreateLocked").hide(), $("#dialogCreateMessage").html(""), $("#dialogCreateRoomButtonOK").show())
}
function ShopGUI() {
$("#shop_my_items_container").tinyscrollbar({
size: 237
});
$("#buttonShopExit").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopClose()
});
$("#shop_item0").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(0)
});
$("#shop_item1").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(1)
});
$("#shop_item2").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(2)
});
$("#shop_item3").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(3)
});
$("#shop_item4").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(4)
});
$("#shop_item5").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(5)
});
$("#shop_item6").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(6)
});
$("#shop_item7").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(7)
});
$("#shop_item8").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSelectItem(8)
});
$("#buttonShopTry").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopTry()
});
$("#buttonShopBuy").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopBuy()
});
$("#buy_cancel_btn").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopBuyCloseDialog()
});
$("#buy_period_next_btn").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPeriod((ShopGetPeriod() + 1) % 3)
});
$("#buy_period_prev_btn").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPeriod((ShopGetPeriod() + 2) % 3)
});
$("#buy_gold_btn").click(function () {
$(this).hasClass("active") && (AudioPlay(AUDIO_BUTTON_SELECT2), ShopDoPurchase(!1))
});
$("#buy_cash_btn").click(function () {
$(this).hasClass("active") && (AudioPlay(AUDIO_BUTTON_SELECT2), ShopDoPurchase(!0))
});
$("#buttonShopHead").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPage(AVATAR_TYPE_HEAD, 0)
});
$("#buttonShopBody").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPage(AVATAR_TYPE_BODY, 0)
});
$("#buttonShopEyes").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPage(AVATAR_TYPE_EYES, 0)
});
$("#buttonShopFlag").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPage(AVATAR_TYPE_FLAG, 0)
});
$("#buttonShopNext").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPage(g_current_shop_type, g_current_shop_page + 1)
});
$("#buttonShopPrev").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ShopSetPage(g_current_shop_type, g_current_shop_page - 1)
})
}
function GameGUI() {
$("#gameChat").tinyscrollbar({
size: 99
});
$("#btnShot1").click(function () {
SelectShotType(0);
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#btnShot2").click(function () {
SelectShotType(1);
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#btnShotSS").click(function () {
SelectShotType(2);
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#btnPass").click(function () {
g_game && g_game.PassTurnClicked();
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#btnEsc").click(function () {
ToggleOptionsDialog();
AudioPlay(AUDIO_BUTTON_SELECT2)
});
$("#gameItemSlot0").click(function () {
g_game && g_game.UseItem(0)
});
$("#gameItemSlot1").click(function () {
g_game && g_game.UseItem(1)
});
$("#gameItemSlot2").click(function () {
g_game && g_game.UseItem(2)
});
$("#gameItemSlot3").click(function () {
g_game && g_game.UseItem(3)
});
$("#gameItemSlot4").click(function () {
g_game && g_game.UseItem(4)
});
$("#gameItemSlot5").click(function () {
g_game && g_game.UseItem(5)
});
$("#slice_drag_button").click(function () {
g_is_game_slice = !g_is_game_slice;
UpdateSliceDragGUI()
});
UpdateSliceDragGUI();
$("#gameInput").bind("keyup", function (a) {
if (13 == a.which) {
if ("" != this.value) {
var c = this.value;
this.value = "";
ZotataPlayChat(c)
}
$("#gameInput").blur();
a.stopPropagation()
}
});
var a;
$("#powerMarkArea").bind("mousedown", function (b) {
a = !0;
b = b.offsetX;
$("#powerMark").css("left", b + 1)
}).bind("mouseup", function () {
a = !1
}).bind("mousemove", function (b) {
a && 3 != b.eventPhase && (b = b.offsetX, 0 > b ? b = 0 : 400 < b && (b = 400), $("#powerMark").css("left", b + 1))
})
}
function SelectShotType(a) {
2 == a && !$("#btnShotSS").is(":visible") && (a = 0);
switch (a) {
case 0:
$("#btnShot2, #btnShotSS").removeClass("Pressed");
$("#btnShot1").addClass("Pressed");
break;
case 1:
$("#btnShot1, #btnShotSS").removeClass("Pressed");
$("#btnShot2").addClass("Pressed");
break;
case 2:
$("#btnShot1, #btnShot2").removeClass("Pressed"), $("#btnShotSS").addClass("Pressed")
}
g_game && g_game.ChangedShot(a)
}
function GetSelectedShotType() {
var a = 0;
$("#btnShot2").hasClass("Pressed") ? a = 1 : $("#btnShotSS").hasClass("Pressed") && (a = 2);
return a
}
function SetReplyTo(a) {
var b = g_myPlayerInfo.location_type == LOCATION_TYPE_CHANNEL ? "#channelInput" : g_game ? "#gameInput" : "#roomInput",
c = $(b).val();
$(b).focus();
$(b).val("@" + a + ": " + c)
}
function AddToChatInput(a) {
if ("" != a) {
var b = g_myPlayerInfo.location_type == LOCATION_TYPE_CHANNEL ? "#channelInput" : g_game ? "#gameInput" : "#roomInput",
c = $(b).val();
$(b).focus();
$(b).val(c + a)
}
}
function ChatReceived(a, b, c) {
var d = "",
e = "",
f = "",
h = "",
g = "";
void 0 == g_myPlayerInfo || void 0 == g_myPlayerInfo.location_type || g_myPlayerInfo.location_type == LOCATION_TYPE_CHANNEL ? (e = "#channelTextHtml", d = "#channel") : g_game ? (e = "#gameChatHtml", d = "#gameChat", f = ".GamePlayerBalloon", h = ".GamePlayerBalloonTip", g = ".PlayerName") : (e = "#roomChatHtml", d = "#roomChat", f = ".roomPlayerBalloon", h = ".roomPlayerBalloonTip", g = ".roomPlayerName");
d && ($(e).append('<div class="zotata-chat-line zotata-chat-type' + c + '" >' + (0 != c ? '<div class="zotata-chat-icon zotata-chat-icon' + c + '"></div> ' : " ") + ("" != a ? a + "] " : "") + b + "</div>"), $(d).tinyscrollbar_update("bottom"));
"" != f && "" != a && $(g).each(function () {
if ($(this).text() == a) {
var c = $(this).parents().children(f),
d = $(this).parents().children(h);
d.stop(true, true).fadeOut("slow");
c.stop(true, true).hide("slow").promise().done(function () {
c.html(b).show("slow").animate({
opacity: 0.9
}, 5E3).fadeOut(2E3);
d.fadeIn("slow").animate({
opacity: 0.9
}, 5E3).fadeOut(2E3)
})
}
})
}
function ChannelChatClear() {
$("#channelTextHtml").html("");
$("#channel").tinyscrollbar_update("bottom")
}
var PLAYER_INDEX_USER_ID = 0,
PLAYER_INDEX_GAME_ID = 1,
PLAYER_INDEX_RANK = 2,
PLAYER_INDEX_TEAM = 3,
PLAYER_INDEX_IS_MASTER = 4,
PLAYER_INDEX_IS_READY = 5,
PLAYER_INDEX_GENDER = 6,
PLAYER_INDEX_MOBILE = 7,
PLAYER_INDEX_AVATARS = 8,
PLAYER_INDEX_IS_BOT = 9;
function ChannelUpdatePlayersList(a) {
for (var b = "", c = 0; c < a.length; c++) b += '<div class="playerListItem" id="player_user_id_' + a[c][PLAYER_INDEX_USER_ID] + '" user_id=' + a[c][PLAYER_INDEX_USER_ID] + '><div class="playerListRank rank rank' + a[c][PLAYER_INDEX_RANK] + '"></div><div class="playerListName blackShadow">' + a[c][PLAYER_INDEX_GAME_ID] + "</div></div>";
$("#channelPlayersListHtml").html(b);
$("#playersList").tinyscrollbar_update("top")
}
function ChannelPlayerJoined(a, b, c) {
ChannelPlayerLeft(a);
$("#channelPlayersListHtml").append('<div class="playerListItem" id="player_user_id_' + a + '" user_id=' + a + '><div class="playerListRank rank rank' + c + '"></div><div class="playerListName blackShadow">' + b + "</div></div>");
$("#playersList").tinyscrollbar_update("relative")
}
function ChannelPlayerLeft(a) {
$("#player_user_id_" + a).remove();
$("#playersList").tinyscrollbar_update("relative")
}
var FRIEND_INDEX_ID = 0,
FRIEND_INDEX_NAME = 1,
FRIEND_INDEX_GENDER = 2,
FRIEND_INDEX_RANK = 3,
FRIEND_INDEX_GP = 4,
FRIEND_INDEX_IMAGE = 5,
FRIEND_INDEX_SERVER = 6,
FRIEND_INDEX_ROOM = 7;
function UpdateFriendsList(a) {
for (var b = "", c = 0; c < a.length; c++) {
var d = a[c],
e = d[FRIEND_INDEX_IMAGE],
e = "" == e ? d[FRIEND_INDEX_GENDER] == GENDER_FEMALE ? "/static/images/fb_girl.gif" : "/static/images/fb_boy.gif" : "http://graph.facebook.com/" + e + "/picture?type=large",
f = "Offline";
0 != d[FRIEND_INDEX_SERVER] && (f = 0 == d[FRIEND_INDEX_ROOM] ? "In Channel" : "In Room: " + d[FRIEND_INDEX_ROOM]);
b += '<div id="friend_' + d[FRIEND_INDEX_ID] + '" friend="' + d[FRIEND_INDEX_ID] + '" class="friendListItem' + (1 == c % 2 ? " odd" : "") + '"> <div class="friendListPhoto"><img class="friendListPhotoImg" src="' + e + '"></div> <div class="friendListRank rank rank' + d[FRIEND_INDEX_RANK] + '"></div> <div class="friendListName blackShadow">' + d[FRIEND_INDEX_NAME] + '</div> <div class="friendListGP blackShadow">GP ' + d[FRIEND_INDEX_GP] + '</div> <div class="friendListLocation blackShadow">' + f + "</div> </div>"
}
$("#friendsListHtml").html(b);
$(".friendListItem").bind("click", function () {
$(".friendListItem").removeClass("selected");
$(this).addClass("selected");
ChatDialogCreate($(this).attr("friend"), $(this).children(".friendListName").html())
});
$("#friendsList").tinyscrollbar_update("top");
UpdateFriendsInRooms()
}
function UpdateFriendsInRooms() {
var a = [];
$(".friendListLocation").each(function () {
var b = $(this).html(); - 1 != b.indexOf("In Room: ") && (b = Number(b.substr(9)), a.push(b))
});
$("#roomsList > .room").each(function () {
var b = $(this),
c = Number(b.children(".roomNumber").html());
0 < c && (-1 != a.indexOf(c) ? b.children(".roomBuddy").show() : b.children(".roomBuddy").hide())
})
}
function FriendUpdate(a) {
var b = "Offline";
0 != a[3] && (b = 0 == a[4] ? "In Channel" : "In Room: " + a[4]);
var c = $("#friend_" + a[0]);
c.children(".friendListRank").removeClass().addClass("friendListRank rank rank" + a[1]);
c.children(".friendListGP").html("GP " + a[2]);
c.children(".friendListLocation").html(b);
UpdateFriendsInRooms()
}
function ChatDialogCreate(a, b) {
if (0 == $("#chat_" + a).length) {
$("#chat_divs").append('<div class="ChatDialog" id="chat_' + a + '" friend=' + a + '><div class="chatDialogName blackShadow">' + b + '</div><div class="chatDialogDelete opacity_button"></div><div class="chatDialogClose opacity_button"></div><input type="text" class="chatDialogInput" value="" maxlength="150"><div class="chatDialogText"><div class="scrollbar"><div class="track"><div class="thumb"><div class="end"></div></div></div></div><div class="viewport"><div class="CanSelect overview chatDialogTextHtml"></div></div></div></div>');
var c = $("#chat_" + a);
c.draggable2();
c.bind("mousedown", function (a) {
a.stopPropagation()
});
c.children(".chatDialogText").tinyscrollbar({
size: 183
});
c.children(".chatDialogInput").bind("keyup", function (a) {
13 == a.which && (a.stopPropagation(), a = $(this).val(), "" != a && (SendPrivateChat($(this).parent().attr("friend"), a), $(this).val("")))
});
c.children(".chatDialogClose").click(function (a) {
$(this).parent().remove();
a.stopPropagation()
});
c.children(".chatDialogDelete").click(function (a) {
a.stopPropagation();
var b = $(this).parent().attr("friend");
OpenDialog("Delete Friend?", "Are you sure to delete this friend?", DIALOG_BUTTONS_OK_CANCEL, function (a) {
a && SendDeleteFriend(b)
})
})
}
}
function FriendPrivateChat(a, b, c) {
var d = $("#chat_" + a);
0 == d.length && (ChatDialogCreate(a, b), d = $("#chat_" + a));
d.find(".chatDialogTextHtml").append("[" + b + "] " + c + "<br>");
d.children(".chatDialogText").tinyscrollbar_update("bottom")
}
function pad(a, b) {
for (var c = "" + a; c.length < b;) c = "0" + c;
return c
}
function ChannelPlayerInfoUpdate() {
$("#myName").html(g_myPlayerInfo.game_id);
$("#myRank").removeClass().addClass("rank rank" + g_myPlayerInfo.rank);
$("#myGP").html(Commatize(g_myPlayerInfo.gp));
$("#myCash").html(Commatize(g_myPlayerInfo.cash));
$("#myGold").html(Commatize(g_myPlayerInfo.gold));
var a = g_myPlayerInfo.fb,
a = "" == a ? g_myPlayerInfo.gender == GENDER_FEMALE ? "/static/images/fb_girl.gif" : "/static/images/fb_boy.gif" : "http://graph.facebook.com/" + a + "/picture?type=large";
$("#myPhotoImage").attr("src", a);
g_channel_player ? (g_channel_player.change(g_myPlayerInfo.head, AVATAR_TYPE_HEAD), g_channel_player.change(g_myPlayerInfo.body, AVATAR_TYPE_BODY), g_channel_player.change(g_myPlayerInfo.eyes, AVATAR_TYPE_EYES), g_channel_player.change(g_myPlayerInfo.flag, AVATAR_TYPE_FLAG)) : g_channel_player = new CPlayerGraphic("#channel_player", - 1, g_myPlayerInfo.head, g_myPlayerInfo.body, g_myPlayerInfo.eyes, g_myPlayerInfo.flag, !1);
0 < g_myPlayerInfo.event1 ? $("#event_button").html("Free Cash Event<br><br>" + pad(Math.floor(g_myPlayerInfo.event1 / 60), 2) + ":" + pad(g_myPlayerInfo.event1 % 60, 2)) : $("#event_button").html('Free Cash Event<span style="font-size:8px;"><br><br>+?? Cash<br>+?? Gold</span>');
0 < g_myPlayerInfo.event2 ? $("#facebook_post").html("Post to Facebook<br><br>" + pad(Math.floor(g_myPlayerInfo.event2 / 60), 2) + ":" + pad(g_myPlayerInfo.event2 % 60, 2)) : $("#facebook_post").html('Post to Facebook<span style="font-size:7px;"><br><br>+1000 Cash<br>+5000 Gold</span>')
}
function ChannelRoomsUpdate(a) {
6 <= g_channel_skip_rooms && a.length <= g_channel_skip_rooms && (g_channel_skip_rooms -= 6);
$("#roomsList > .room").each(function (b) {
var c = $(this),
d = a[b + g_channel_skip_rooms];
if (d) {
var b = d[0],
e = d[1],
f = d[2],
h = d[3],
g = d[4],
j = d[5],
i = d[6],
d = d[7];
c.children(".roomNumber").html(b);
ChannelRoomChangeDetails(c, e, f, h, g, j, i, d);
c.show()
} else c.hide()
});
g_roomsList = a;
UpdateFriendsInRooms()
}
function ChannelRoomUpdate(a) {
var b = a[0],
c = a[1],
d = a[2],
e = a[3],
f = a[4],
h = a[5],
g = a[6],
j = a[7];
$("#roomsList > .room").each(function () {
var a = $(this);
a.children(".roomNumber").html() == b && ChannelRoomChangeDetails(a, c, d, e, f, h, g, j)
})
}
function ChannelRoomChangeDetails(a, b, c, d, e, f, h, g) {
a.children(".roomTitle").html(b);
a.children(".numPlayers").html(c);
a.children(".maxPlayers").html(d);
b = "";
e == ROOM_STATUS_WAITING ? b = "status-waiting" : e == ROOM_STATUS_FULL ? b = "status-full" : e == ROOM_STATUS_PLAYING && (b = "status-playing");
a.children(".status").removeClass().addClass("status " + b);
e = "";
f == GAME_MODE_NORMAL ? e = "iconModeNormal" : f == GAME_MODE_BOSS && (e = "iconModeBoss");
a.children(".gameMode").removeClass().addClass("gameMode " + e);
h ? a.children(".roomLock").addClass("roomLocked") : a.children(".roomLock").removeClass("roomLocked");
a.children(".roomMap").removeClass().addClass("roomMap roomMap" + g)
}
function GuiCloseChannelScreen() {
$("#dialogCreateRoom").fadeOut(g_graphics_high ? "slow" : 0);
$("#OptionsDialog").hide();
$("#channelScreen").fadeOut(g_graphics_high ? "slow" : 0, function () {
g_channel_player && (g_channel_player.remove(), g_channel_player = void 0)
});
$("#buttonAllBuddyList").removeClass("BuddyList")
}
function GuiCloseRoomScreen() {
$("#roomScreen").fadeOut(g_graphics_high ? "slow" : 0, function () {
$("#roomButtonReady").hide();
$("#roomButtonStart").hide();
$("#roomChatHtml").html("");
$("#roomChat .scrollbar").hide();
$(".roomPlayerBalloon").hide();
$(".roomPlayerBalloonTip").hide();
$("#playerInfoDialog").hide();
$("#friendsListExtra").hide();
$("#dialog_room_options").hide();
RoomRemoveAnimations()
});
$("#room_item_buddy_tab").removeClass("buddy")
}
function GuiCloseGameScreen() {
$("#OptionsDialog").hide();
$("#gameScreen").fadeOut(g_graphics_high ? "slow" : 0, function () {
g_game && (g_game.Destructor(), g_game = void 0)
})
}
function GuiCloseShopScreen() {
$("#shopScreen").fadeOut(g_graphics_high ? "slow" : 0, function () {
g_shop_player.remove();
g_shop_player = void 0
})
}
function GuiCloseCurrentScreen() {
g_gui_location == GUI_LOCATION_CHANNEL ? GuiCloseChannelScreen() : g_gui_location == GUI_LOCATION_ROOM ? GuiCloseRoomScreen() : g_gui_location == GUI_LOCATION_GAME ? GuiCloseGameScreen() : g_gui_location == GUI_LOCATION_SHOP && GuiCloseShopScreen();
$("#friendsList").hide()
}
function SwitchToChannelScreen() {
g_gui_location != GUI_LOCATION_CHANNEL && $("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
GuiCloseCurrentScreen();
$("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
g_gui_location = GUI_LOCATION_CHANNEL;
$("#channelInput").val("");
$("#channelScreen").fadeIn(g_graphics_high ? 400 : 0);
$("#channel").tinyscrollbar_update("bottom");
ChannelPlayerInfoUpdate();
AudioPlayInLoop(AUDIO_MUSIC_CHANNEL, !0);
$("#playersList").tinyscrollbar_update("top")
})
})
}
function SwitchToRoomScreen() {
g_gui_location != GUI_LOCATION_ROOM && $("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
GuiCloseCurrentScreen();
$("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
g_gui_location = GUI_LOCATION_ROOM;
$("#roomInput").val("");
$("#room_timer").hide();
$("#select_bot_div").hide();
g_room_players && RoomUpdatePlayers(g_room_players);
AutoReadyStartTimer();
$("#roomsList > .room").each(function () {
$(this).hide()
});
$("#playerInfoDialog").hide();
$("#roomScreen").fadeIn(g_graphics_high ? 400 : 0);
AudioPlayInLoop(AUDIO_MUSIC_ROOM, !0)
})
})
}
function SwitchToGameScreen() {
g_gui_location != GUI_LOCATION_GAME && $("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
GuiCloseCurrentScreen();
$("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
g_gui_location = GUI_LOCATION_GAME;
$("#gameScreen").fadeIn(g_graphics_high ? 400 : 0);
AudioPlayInLoop(AUDIO_MUSIC_STAGE1, !0)
})
})
}
function SwitchToShopScreen() {
g_gui_location != GUI_LOCATION_SHOP && $("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
GuiCloseCurrentScreen();
g_gui_location = GUI_LOCATION_SHOP;
$("#channelScreen, #roomScreen, #gameScreen, #shopScreen").promise().done(function () {
$("#shopScreen").fadeIn(g_graphics_high ? 400 : 0);
ShopSetPage(AVATAR_TYPE_HEAD, 0);
ShopSetMyItems();
g_shop_player || (g_shop_player = new CPlayerGraphic("#shop_player", - 1, g_myPlayerInfo.head, g_myPlayerInfo.body, g_myPlayerInfo.eyes, g_myPlayerInfo.flag, !0));
ShopUpdateMyStats()
})
})
}
function Commatize(a) {
return a.toString().replace(/(\d)(?=(\d{3})+$)/g, "$1,")
}
function ShopSetMyItems() {
SendGetMyAvatars()
}
function ShopSetMyItems2(a) {
var b = "",
c = "pop time atk def life item dig shld".split(" "),
d = [AVATAR_INDEX_STAT_POP, AVATAR_INDEX_STAT_TIME, AVATAR_INDEX_STAT_ATK, AVATAR_INDEX_STAT_DEF, AVATAR_INDEX_STAT_LIFE, AVATAR_INDEX_STAT_ITEM, AVATAR_INDEX_STAT_DIG, AVATAR_INDEX_STAT_SHLD];
ShopWearEquippedItems();
for (var e = 0; e < a.length; e++) {
var f = a[e],
h = f[0],
g = f[1],
j = f[2],
i = f[3],
k = AVATARS[g];
if (void 0 == k) deubg && console.log("*** ERROR: Unknown avatar:", f);
else {
var f = k[AVATAR_INDEX_TYPE],
l = k[AVATAR_INDEX_GENDER],
m = k[AVATAR_INDEX_NAME],
n = void 0;
if (i) if (i = new Date(i) - new Date, i >= MS_IN_1_DAY) n = Math.floor(i / MS_IN_1_DAY) + 1 + " Days";
else if (0 < i) n = Math.floor(i / MS_IN_1_HOUR) + 1 + " Hours";
else continue;
b += '<div id="shop_my_item' + e + '" class="shop_my_item" onmousedown="ShopSelectMyItem(' + e + ')" avatar_id="' + h + '" avatar_number="' + g + '" avatar_type="' + f + '"><div class="shop_my_item_icon shop_item_icon_' + f + l + '"></div><div class="shop_my_item_name">' + m + (n ? " (" + n + ")" : "") + '</div><div class="shop_my_item_equip' + (j ? " equipped" : "") + ' "></div>';
for (i = h = 0; i < c.length; i++) f = d[i], l = c[i], k[f] && (b += '<div class="shop_my_item_stat shop_my_item_stat' + h + '"> <div class="stat_icon stat_icon_' + (0 < k[f] ? l : l + "-") + '"></div> <div class="stat_digit1 stat_font stat_font' + Math.floor(Math.abs(k[f] / 10)) + '"></div> <div class="stat_digit2 stat_font stat_font' + Math.abs(k[f] % 10) + '"></div> </div>', h++);
b += "</div>";
j && g_shop_player.change(g)
}
}
$("#shop_my_items").html(b);
$("#shop_my_items_container").tinyscrollbar_update();
a = a.length.toString().split("");
for (b = 0; 4 > b; b++) $("#shop_my_items_number .digit" + b).removeClass().addClass("digit" + b + (b < a.length ? " stat_font stat_font" + a[b] : ""));
ShopUpdateMyStats()
}
function ShopSetMyGoldCash(a, b) {
$("#shop_my_cash").html(Commatize(b) + " Cash");
$("#shop_my_gold").html(Commatize(a) + " Gold")
}
function ShopSelectMyItem(a) {
if ($("#shop_my_item" + a).hasClass("selected")) {
$("#shop_my_item" + a).attr("avatar_id");
$("#shop_my_item" + a).attr("avatar_number");
var b = $("#shop_my_item" + a).attr("avatar_type");
$("#shop_my_item" + a + " .shop_my_item_equip").hasClass("equipped") ? $("#shop_my_item" + a + " .shop_my_item_equip").removeClass("equipped") : ($(".shop_my_item_equip.equipped").each(function () {
$(this).parent().attr("avatar_type") == b && $(this).removeClass("equipped")
}), $("#shop_my_item" + a + " .shop_my_item_equip").addClass("equipped"));
ShopWearEquippedItems()
} else $(".shop_my_item").removeClass("selected"), $(".shop_my_item .shop_my_item_name").removeClass("blackShadow"), $("#shop_my_item" + a).addClass("selected"), $("#shop_my_item" + a + " .shop_my_item_name").addClass("blackShadow")
}
function ShopSetPage(a, b) {
var c = [],
d;
for (d = 0; d < AVATARS.length; d++) AVATARS[d] && (AVATARS[d][AVATAR_INDEX_SHOP] && AVATARS[d][AVATAR_INDEX_TYPE] == a && (AVATARS[d][AVATAR_INDEX_GENDER] == g_myPlayerInfo.gender || a == AVATAR_TYPE_FLAG)) && c.push(d);
d = Math.floor((c.length + 9 - 1) / 9);
0 == d ? b = 0 : (0 > b && (b += d), b %= d);
c = c.slice(9 * b, 9 * (b + 1));
g_current_shop_type = a;
g_current_shop_page = b;
var e = "pop time atk def life item dig shld".split(" "),
f = [AVATAR_INDEX_STAT_POP, AVATAR_INDEX_STAT_TIME, AVATAR_INDEX_STAT_ATK, AVATAR_INDEX_STAT_DEF, AVATAR_INDEX_STAT_LIFE, AVATAR_INDEX_STAT_ITEM, AVATAR_INDEX_STAT_DIG, AVATAR_INDEX_STAT_SHLD];
for (d = 0; d < c.length; d++) {
var h = c[d],
g = AVATARS[h],
j = g[AVATAR_INDEX_TYPE],
i = g[AVATAR_INDEX_GENDER],
k = "/static/images/avatars/large/s" + i + j + (g[AVATAR_INDEX_N] + 1E5).toString().substring(1) + ".png";
$("#shop_item" + d + " .shop_item_icon").removeClass().addClass("shop_item_icon shop_item_icon_" + j + i);
$("#shop_item" + d + " .shop_item_name").html(g[AVATAR_INDEX_NAME]);
$("#shop_item" + d + " .shop_item_image img").attr("src", k);
j = g[AVATAR_INDEX_GOLD_WEEK] ? g[AVATAR_INDEX_GOLD_WEEK] : g[AVATAR_INDEX_GOLD_MONTH] ? g[AVATAR_INDEX_GOLD_MONTH] : g[AVATAR_INDEX_GOLD_PERM] ? g[AVATAR_INDEX_GOLD_PERM] : 0;
i = g[AVATAR_INDEX_CASH_WEEK] ? g[AVATAR_INDEX_CASH_WEEK] : g[AVATAR_INDEX_CASH_MONTH] ? g[AVATAR_INDEX_CASH_MONTH] : g[AVATAR_INDEX_CASH_PERM] ? g[AVATAR_INDEX_CASH_PERM] : 0;
$("#shop_item" + d + " .shop_item_cash").html(i ? Commatize(i) + " Cash" : "Gold Only");
$("#shop_item" + d + " .shop_item_gold").html(j ? Commatize(j) + " Gold" : "Cash Only");
$("#shop_item" + d).show();
$("#shop_item" + d).attr("avatar_index", h);
for (j = h = 0; j < e.length; j++) i = f[j], k = e[j], g[i] && ($("#shop_item" + d + " .shop_item_stat" + h + " .stat_icon").removeClass().addClass("stat_icon stat_icon_" + (0 < g[i] ? k : k + "-")).show(), $("#shop_item" + d + " .shop_item_stat" + h + " .stat_digit1").removeClass().addClass("stat_digit1 stat_font stat_font" + Math.floor(Math.abs(g[i] / 10))).show(), $("#shop_item" + d + " .shop_item_stat" + h + " .stat_digit2").removeClass().addClass("stat_digit2 stat_font stat_font" + Math.abs(g[i] % 10)).show(), h++);
for (; 8 > h; h++) $("#shop_item" + d + " .shop_item_stat" + h + " .stat_icon").hide(), $("#shop_item" + d + " .shop_item_stat" + h + " .stat_digit1").hide(), $("#shop_item" + d + " .shop_item_stat" + h + " .stat_digit2").hide()
}
for (; 9 > d; d++) $("#shop_item" + d).hide();
c = ShopGetSelected();
$("#shop_item" + c).removeClass("selected")
}
function ShopWearEquippedItems() {
var a = !0,
b = !0;
$(".shop_my_item_equip.equipped").parent().each(function () {
g_shop_player.change($(this).attr("avatar_number"));
$(this).attr("avatar_type") == AVATAR_TYPE_HEAD ? a = !1 : $(this).attr("avatar_type") == AVATAR_TYPE_BODY && (b = !1)
});
a && g_shop_player.change(g_myPlayerInfo.gender == GENDER_MALE ? AVATAR_NAKED_HEAD_MALE : AVATAR_NAKED_HEAD_FEMALE);
b && g_shop_player.change(g_myPlayerInfo.gender == GENDER_MALE ? AVATAR_NAKED_BODY_MALE : AVATAR_NAKED_BODY_FEMALE);
ShopUpdateMyStats()
}
function ShopSelectItem(a) {
var b = ShopGetSelected();
b == a ? ($("#shop_item" + b).removeClass("selected"), ShopWearEquippedItems()) : ($("#shop_item" + b).removeClass("selected"), $("#shop_item" + a).addClass("selected"), ShopTry())
}
function ShopGetSelected() {
for (var a = 0; 9 > a; a++) if ($("#shop_item" + a).hasClass("selected")) return a
}
function ShopTry() {
var a = ShopGetSelected();
void 0 != a && (a = $("#shop_item" + a).attr("avatar_index"), g_shop_player.change(a), ShopUpdateMyStats())
}
function ShopBuy() {
var a = ShopGetSelected();
if (void 0 != a) {
var a = $("#shop_item" + a).attr("avatar_index"),
b = AVATARS[a],
c = b[AVATAR_INDEX_TYPE],
d = b[AVATAR_INDEX_GENDER],
e = b[AVATAR_INDEX_NAME],
f = "/static/images/avatars/large/s" + d + c + (b[AVATAR_INDEX_N] + 1E5).toString().substring(1) + ".png";
$("#shop_buy_dialog .shop_item_icon").removeClass().addClass("shop_item_icon shop_item_icon_" + c + d);
$("#shop_buy_dialog .shop_item_name").html(e);
$("#shop_buy_dialog .shop_item_image img").attr("src", f);
$("#buy_cash_week").html(0 < b[AVATAR_INDEX_CASH_WEEK] ? Commatize(b[AVATAR_INDEX_CASH_WEEK]) : "Can't buy");
$("#buy_cash_month").html(0 < b[AVATAR_INDEX_CASH_MONTH] ? Commatize(b[AVATAR_INDEX_CASH_MONTH]) : "Can't buy");
$("#buy_cash_perm").html(0 < b[AVATAR_INDEX_CASH_PERM] ? Commatize(b[AVATAR_INDEX_CASH_PERM]) : "Can't buy");
$("#buy_gold_week").html(0 < b[AVATAR_INDEX_GOLD_WEEK] ? Commatize(b[AVATAR_INDEX_GOLD_WEEK]) : "Can't buy");
$("#buy_gold_month").html(0 < b[AVATAR_INDEX_GOLD_MONTH] ? Commatize(b[AVATAR_INDEX_GOLD_MONTH]) : "Can't buy");
$("#buy_gold_perm").html(0 < b[AVATAR_INDEX_GOLD_PERM] ? Commatize(b[AVATAR_INDEX_GOLD_PERM]) : "Can't buy");
g_current_buy_avatar_index = a;
ShopSetPeriod(0);
g_graphics_high ? $("#shop_buy_dialog").fadeIn() : $("#shop_buy_dialog").show()
}
}
function ShopBuyCloseDialog() {
g_graphics_high ? $("#shop_buy_dialog").effect("explode") : $("#shop_buy_dialog").hide()
}
var BUY_PERIOD = ["1 Week", "1 Month", "Limitless"],
PERIOD_WEEK = 0,
PERIOD_MONTH = 1,
PERIOD_PERM = 2;
function ShopGetPeriod() {
var a = BUY_PERIOD.indexOf($("#buy_period").html()); - 1 == a && ShopSetPeriod(0);
return a
}
function ShopSetPeriod(a) {
$("#buy_period").html(BUY_PERIOD[a]);
var b = AVATARS[g_current_buy_avatar_index];
a == PERIOD_WEEK ? (0 < b[AVATAR_INDEX_CASH_WEEK] ? $("#buy_cash_btn").addClass("active") : $("#buy_cash_btn").removeClass("active"), 0 < b[AVATAR_INDEX_GOLD_WEEK] ? $("#buy_gold_btn").addClass("active") : $("#buy_gold_btn").removeClass("active")) : a == PERIOD_MONTH ? (0 < b[AVATAR_INDEX_CASH_MONTH] ? $("#buy_cash_btn").addClass("active") : $("#buy_cash_btn").removeClass("active"), 0 < b[AVATAR_INDEX_GOLD_MONTH] ? $("#buy_gold_btn").addClass("active") : $("#buy_gold_btn").removeClass("active")) : a == PERIOD_PERM && (0 < b[AVATAR_INDEX_CASH_PERM] ? $("#buy_cash_btn").addClass("active") : $("#buy_cash_btn").removeClass("active"), 0 < b[AVATAR_INDEX_GOLD_PERM] ? $("#buy_gold_btn").addClass("active") : $("#buy_gold_btn").removeClass("active"))
}
function ShopDoPurchase(a) {
var b = AVATARS[g_current_buy_avatar_index],
c, d = ShopGetPeriod();
d == PERIOD_WEEK ? c = a ? b[AVATAR_INDEX_CASH_WEEK] : b[AVATAR_INDEX_GOLD_WEEK] : d == PERIOD_MONTH ? c = a ? b[AVATAR_INDEX_CASH_MONTH] : b[AVATAR_INDEX_GOLD_MONTH] : d == PERIOD_PERM && (c = a ? b[AVATAR_INDEX_CASH_PERM] : b[AVATAR_INDEX_GOLD_PERM]);
OpenDialog("Are you sure?", 'Are you sure you want to purchase <span class="AlertBold">' + b[AVATAR_INDEX_NAME] + '</span> for <span class="AlertBold">' + $("#buy_period").html() + '</span> time at <span class="AlertBold">' + Commatize(c) + " " + (a ? "Cash" : "Gold") + "</span> ?", 2, function (b) {
b && SendPurchase(g_current_buy_avatar_index, a, d, c)
})
}
function ShopUpdateMyStats() {
for (var a = "pop shld item def life atk dig time".split(" "), b = [AVATAR_INDEX_STAT_POP, AVATAR_INDEX_STAT_SHLD, AVATAR_INDEX_STAT_ITEM, AVATAR_INDEX_STAT_DEF, AVATAR_INDEX_STAT_LIFE, AVATAR_INDEX_STAT_ATK, AVATAR_INDEX_STAT_DIG, AVATAR_INDEX_STAT_TIME], c = g_shop_player.GetAvatars(), d = 0; d < a.length; d++) {
for (var e = 0, f = 0; f < c.length; f++) {
var h = AVATARS[c[f]];
void 0 != h && (h = h[b[d]], void 0 != h && (e += h))
}
50 < e && (e = 50);
f = a[d];
$("#shop_my_stats .shop_item_stat" + d + " .stat_icon").removeClass().addClass("stat_icon stat_icon_" + (0 <= e ? f : f + "-")).show();
$("#shop_my_stats .shop_item_stat" + d + " .stat_digit1").removeClass().addClass("stat_digit1 stat_font stat_font" + Math.floor(Math.abs(e / 10))).show();
$("#shop_my_stats .shop_item_stat" + d + " .stat_digit2").removeClass().addClass("stat_digit2 stat_font stat_font" + Math.abs(e % 10)).show()
}
}
function ShopClose() {
var a = [];
$(".shop_my_item_equip.equipped").parent().each(function () {
a.push(Number($(this).attr("avatar_id")))
});
SendEquip(a);
SwitchToChannelScreen()
}
var DIALOG_BUTTONS_NONE = 0,
DIALOG_BUTTONS_OK = 1,
DIALOG_BUTTONS_OK_CANCEL = 2,
g_dialog_graphic;
function OpenDialog(a, b, c, d, e) {
CloseDialog();
$("#myDialog .AlertBoxTitle").html(a);
$("#myDialog .AlertBoxContent").html(b.replace(/\n/g, "<br>"));
c == DIALOG_BUTTONS_NONE || void 0 == c ? ($("#myDialog .AlertBoxOK").hide(), $("#myDialog .AlertBoxCancel").hide()) : c == DIALOG_BUTTONS_OK ? ($("#myDialog .AlertBoxCancel").hide(), $("#myDialog .AlertBoxOK").show().unbind("click").bind("click", function () {
CloseDialog();
d && d(!0)
})) : c == DIALOG_BUTTONS_OK_CANCEL && ($("#myDialog .AlertBoxOK").show().unbind("click").bind("click", function () {
CloseDialog();
d && d(!0)
}), $("#myDialog .AlertBoxCancel").show().unbind("click").bind("click", function () {
CloseDialog();
d && d(!1)
}));
e && (g_dialog_graphic && g_dialog_graphic.remove(), g_dialog_graphic = new CPlayerGraphic("#dialog_graphic", - 1, e[0], e[1], e[2], e[3], !1));
g_graphics_high ? ($(".DialogLayer .AlertBox").fadeIn(), $(".DialogLayer").fadeIn()) : ($(".DialogLayer .AlertBox").show(), $(".DialogLayer").show());
$(".DialogLayer").css("z-index", g_draggable_z_index += 1)
}
function CloseDialog() {
g_graphics_high && $(".DialogLayer").is(":visible") ? ($(".DialogLayer .AlertBox").effect("explode"), $(".DialogLayer").fadeOut()) : ($(".DialogLayer .AlertBox").hide(), $(".DialogLayer").hide());
g_dialog_graphic && g_dialog_graphic.remove()
}
function ShowDisconnectedDialog() {
$("#dialog_change_name_div").fadeOut();
OpenDialog("Disconnected", 'Trying to reconnect to server...<br><br><br>If it takes too long:<br>&nbsp;&nbsp;Refresh (F5) [or F12 on IE9]<br>&nbsp;&nbsp;Change to <a href="https://www.google.com/chrome/">Chrome</a> / <a href="http://www.mozilla.org/en-US/firefox/new/">Firefox</a><br>&nbsp;&nbsp;Or check our <a href="http://www.facebook.com/pages/DragonBound-Community/266025740173562">Community</a>', 0)
}
function Facebook_PostToFeed() {
FB.ui({
method: "feed",
link: "http://DragonBound.net",
picture: "http://DragonBound.net//static/images/icon2_180x180.png",
name: "DragonBound - The new generation of HTML5 online multi-player games in your browser!",
caption: "DragonBound.net",
description: "Play with or against your friends from your browser anywhere for free. Shop for avatars to make you stronger. Unlock hidden characters, game modes, and challenges. Meet new friends. Single player option too."
}, function (a) {
SendEvent(1, a.post_id)
})
};
var PLAYER_LOOK_LEFT = 0,
PLAYER_LOOK_RIGHT = 1,
DIV_TO_CREATE_GAME_OBJECTS = "#game_objects",
WALK_WALL_LIMIT = 10,
TURN_TIME = 20,
KEY = {
Backspace: 8,
Tab: 9,
Enter: 13,
Esc: 27,
Space: 32,
Left: 37,
Up: 38,
Right: 39,
Down: 40,
F1: 112,
F2: 113,
F3: 114,
F4: 115,
F5: 116,
F6: 117,
F7: 118,
F8: 119,
F9: 120,
F10: 121
};
function ZotataPhysics2(a, b, c, d, e, f) {
this.x0 = a;
this.y0 = b;
this.v = new Vector(c, d);
this.ax = e;
this.ay = f
}
ZotataPhysics2.prototype.GetPosAtTime = function (a) {
a /= 1E3;
return {
x: this.x0 + this.v.x * a + this.ax * a * a / 2,
y: this.y0 + this.v.y * a + this.ay * a * a / 2
}
};
ZotataPhysics2.prototype.GetAngleAtTime = function (a) {
var b = this.GetPosAtTime(a - 10),
a = this.GetPosAtTime(a + 10);
return RadToAngle(Math.atan2(a.y - b.y, a.x - b.x))
};
var g_last_shot_sound_time;
function CShot(a, b, c, d) {
if (!(this instanceof arguments.callee)) throw Error("Constructor called as a function");
this.shot = b;
this.unique_id = a;
this.div_id = "#Shot" + a;
this.div_id2 = "#ShotB" + a;
this.pic_div_id = this.div_id + " " + this.div_id2;
this.start_time = get_time();
this.zp = new ZotataPhysics2(b.start.x, b.start.y, b.start.ang, b.start.power, b.start.ax, b.start.ay);
this.callback_finish = d;
this.created_div = !1;
this.is_camera_focus = c;
this.thor = b.thor;
b.ss && $("#ss_shot_background").fadeIn();
this.shot.start.t || this.CreateDiv();
var e = this;
this.interval = setInterval(function () {
e.update()
}, 30)
}
CShot.prototype.CreateDiv = function () {
if (this.thor) {
var a = 3E3;
this.shot.hole && (a = Math.round(Dist2Points(this.shot.start.x, this.shot.start.y, this.shot.hole.x, this.shot.hole.y)));
g_game.ThorShoot(this.shot.start.x, this.shot.start.y, this.shot.start.ang, a);
this.Remove();
this.callback_finish(this.unique_id)
} else {
(a = BULLET[this.shot.img]) && a.file ? ($(DIV_TO_CREATE_GAME_OBJECTS).append('<div class="Shot" id="' + this.div_id.slice(1) + '"><div id="' + this.div_id2.slice(1) + '"></div></div>'), this.anim_obj = new CAnimatedObject2("bullets/" + a.file, a.graphics, 0, 0, this.div_id2, 1, 20, !1, LOOP_NORMAL, 0, 19, !0)) : $(DIV_TO_CREATE_GAME_OBJECTS).append('<div class="Shot" id="' + this.div_id.slice(1) + '"><div class="shot_img shot_img_' + this.shot.img + '" id="' + this.div_id2.slice(1) + '"></div></div>');
this.created_div = !0;
var b = get_time();
if ((void 0 == g_last_shot_sound_time || b >= g_last_shot_sound_time + 20) && a) g_last_shot_sound_time = b, this.shot.is_lightning || AudioPlay(a.sound)
}
};
CShot.prototype.update = function () {
var a = get_time() - this.start_time;
if (void 0 != this.shot.start.t) if (a >= this.shot.start.t) a -= this.shot.start.t, this.created_div || this.CreateDiv();
else return;
if (!this.thor) if (a >= this.shot.time) this.Remove(), this.callback_finish(this.unique_id);
else {
var b = this.zp.GetPosAtTime(a),
c = this.zp.GetAngleAtTime(a);
$(this.div_id).css({
left: b.x,
top: b.y
});
$(this.pic_div_id).css({
rotate: +c + "deg"
});
this.shot.change && a >= this.shot.change.at && $(this.pic_div_id).removeClass().addClass("shot_img shot_img_" + this.shot.change.img);
this.is_camera_focus && (500 < a && !g_game.isInMapDraggin) && g_game.camera.FocusAt(b.x, b.y, !0, !0)
}
};
CShot.prototype.Remove = function () {
this.interval = clearInterval(this.interval);
$(this.div_id).remove();
this.anim_obj && this.anim_obj.remove();
this.shot.ss && setTimeout(function () {
$("#ss_shot_background").fadeOut()
}, 1E3)
};
function CDamageEffect(a, b, c, d, e) {
if (!(this instanceof arguments.callee)) throw Error("Constructor called as a function");
var f = "#DamageEffect_" + d + "_" + e,
h = $(f);
0 < h.length && (c += Number(h.attr("damage")), a = Number(h.attr("x")), b = Number(h.attr("y")), $(f).remove());
for (var h = String(c), g = '<div class="DamageEffect" damage=' + c + " x=" + a + " y=" + b + ' id="' + f.slice(1) + '" style="left: ' + a + "px; top: " + b + 'px;">', j = 0; j < h.length; j++) {
var i = h.charCodeAt(j);
45 == i && (g += '<div class="DamageDigit DamageDigit-" style="left:' + 14 * j + 'px;"></div>');
48 <= i && 57 >= i && (g += '<div class="DamageDigit DamageDigit' + (i - 48) + '" style="left:' + 14 * j + 'px;"></div>')
}
$(DIV_TO_CREATE_GAME_OBJECTS).append(g + "</div>");
setTimeout(function () {
$(f).animate({
top: "-=30"
})
}, 10);
setTimeout(function () {
$(f).fadeOut(3E3, function () {
$(f).remove()
})
}, 2E3)
}
function ZotataGB(a, b) {
if (!(this instanceof arguments.callee)) throw Error("[ZotataGB] Constructor called as a function");
if (!a) throw Error("[ZotataGB] missing my_username");
debug && console.log("[ZotataGB] game init - you are playing as", a);
this.my_user_id = a;
this.my_player_index = this.my_player_number = -1;
this.queue = [];
this.is_queue_executing = !1;
this.players = [];
this.shots = [];
this.camera = new CCamera(b.map);
this.isInMapDraggin = !1;
this.turn = -1;
this.after_shot_chat = [];
this.after_shot_gold = void 0;
this.steps = this.no_ss_turns = 0;
$(DIV_TO_CREATE_GAME_OBJECTS).children().remove();
this.UnselectAllItems();
this.UpdateGuiGold(0);
$("#last_power_mark").css("left", 240);
$("#game_over").hide();
$("#game_replay").hide();
this.SetBinds();
$(".Player .GamePlayerBalloon").hide();
$(".Player .GamePlayerBalloonTip").hide();
$(".Player .Turn").hide();
$("#powerBar").css("width", 1);
$("#walkBar").css("width", 400);
$("#LastAngleDigit-").hide();
$("#LastAngleDigit1").removeClass().addClass("LastAngleDigit LastAngleDigit0");
$("#LastAngleDigit2").removeClass().addClass("LastAngleDigit LastAngleDigit0");
SelectShotType(0);
$("#btnShotSS").fadeIn();
$("#gameInput").val("");
$("#gameChatHtml").html("");
$("#gameChat .scrollbar").hide();
$("#thor").css({
left: 680,
top: 0
});
$("#thor_rotate").children().not("#thor_laser").remove();
this.thor_obj = new CAnimatedObject("thor", "thor.png", 0, 0, 159, 99, 97, 58, "#thor_rotate", 1, 20, 50, !1, g_graphics_high ? 1 : 3);
this.UpdateWeather(b.w);
this.UpdateWind(b.d);
this.UpdateThor(b.thor);
this.next_turn = b.turn;
this.camera.FocusAt(200, - 200, !0);
$("#loading_map").show();
var c = this;
this.ground = new CGround(b.map, function () {
$("#loading_map").hide();
c.CreatePlayers(b.players);
c.UpdateTurnList();
c.StartNextTurn();
c.QueueUnblock()
})
}
ZotataGB.prototype.UIShootStart = function () {
if (this.turn == this.my_player_number && !this.intervalDoSpace) {
this.UIWalkLeftEnd();
this.UIWalkRightEnd();
$("#powerBar").css("width", 0);
var a = this,
b = get_time();
this.intervalDoSpace = setInterval(function () {
var c = (get_time() - b) / 10;
$("#powerBar").css("width", c);
400 <= c && a.Shoot(400)
}, 10)
}
};
ZotataGB.prototype.UIShootEnd = function () {
this.intervalDoSpace && this.Shoot(Number($("#powerBar").css("width").slice(0, - 2)))
};
ZotataGB.prototype.UIWalkLeftStart = function () {
if (this.turn == this.my_player_number) {
if (!this.intervalDoLeft) {
var a = this,
b = get_time(),
c = 0;
this.intervalDoLeft = setInterval(function () {
var d = Math.floor((get_time() - b) / 20),
e = d - c;
200 < a.steps + e && (e = 200 - a.steps);
if (200 == a.steps) a.players[a.my_player_index].Look(PLAYER_LOOK_LEFT);
else {
for (var f = 0; f < e && !1 != a.players[a.my_player_index].Walk(PLAYER_LOOK_LEFT); f++);
e = f
}
a.steps += e;
c = d;
$("#walkBar").css("width", 400 - 2 * a.steps)
}, 20)
}
} else this.players[this.my_player_index].Look(PLAYER_LOOK_LEFT)
};
ZotataGB.prototype.UIWalkLeftEnd = function () {
this.intervalDoLeft = clearInterval(this.intervalDoLeft)
};
ZotataGB.prototype.UIWalkRightStart = function () {
if (this.turn == this.my_player_number) {
if (!this.intervalDoRight) {
var a = this,
b = get_time(),
c = 0;
this.intervalDoRight = setInterval(function () {
var d = Math.floor((get_time() - b) / 20),
e = d - c;
200 < a.steps + e && (e = 200 - a.steps);
if (200 == a.steps) a.players[a.my_player_index].Look(PLAYER_LOOK_RIGHT);
else {
for (var f = 0; f < e && !1 != a.players[a.my_player_index].Walk(PLAYER_LOOK_RIGHT); f++);
e = f
}
a.steps += e;
c = d;
$("#walkBar").css("width", 400 - 2 * a.steps)
}, 20)
}
} else this.players[this.my_player_index].Look(PLAYER_LOOK_RIGHT)
};
ZotataGB.prototype.UIWalkRightEnd = function () {
this.intervalDoRight = clearInterval(this.intervalDoRight)
};
ZotataGB.prototype.UIAngleUpStart = function () {
if (!this.intervalDoUp && !this.intervalDoDown) {
var a = this,
b = get_time(),
c = this.players[this.my_player_index].ang;
this.intervalDoUp = setInterval(function () {
var d = c + Math.floor((get_time() - b) / 50) * (90 < a.players[a.my_player_index].minang ? -1 : 1);
a.players[a.my_player_index].ChangeAngleTo(d)
}, 50)
}
};
ZotataGB.prototype.UIAngleUpEnd = function () {
this.intervalDoUp = clearInterval(this.intervalDoUp)
};
ZotataGB.prototype.UIAngleDownStart = function () {
if (!this.intervalDoDown && !this.intervalDoUp) {
var a = this,
b = get_time(),
c = this.players[this.my_player_index].ang;
this.intervalDoDown = setInterval(function () {
var d = c - Math.floor((get_time() - b) / 50) * (90 < a.players[a.my_player_index].minang ? -1 : 1);
a.players[a.my_player_index].ChangeAngleTo(d)
}, 50)
}
};
ZotataGB.prototype.UIAngleDownEnd = function () {
this.intervalDoDown = clearInterval(this.intervalDoDown)
};
ZotataGB.prototype.UINextShot = function () {
SelectShotType((GetSelectedShotType() + 1) % 3)
};
ZotataGB.prototype.ChangedShot = function (a) {
this.players[this.my_player_index].ChangedShot(a)
};
ZotataGB.prototype.UIDragStart = function (a) {
this.drag_start_x = a
};
ZotataGB.prototype.UIDragMove = function (a) {
a = (a - this.drag_start_x) / 1.5;
1 > a && (a = 1);
400 < a && (a = 400);
$("#powerBar").css("width", a);
400 <= a && this.UIDragEnd()
};
ZotataGB.prototype.UIDragEnd = function () {
this.Shoot(Number($("#powerBar").css("width").slice(0, - 2)))
};
ZotataGB.prototype.UseItem = function (a) {
var b = $("#gameItemSlot" + a);
b.hasClass("item") ? b.hasClass("Pressed") ? b.removeClass("Pressed") : ($(".item").removeClass("Pressed"), b.addClass("Pressed"), this.turn == this.my_player_number && this.UsePressedItem(a)) : 0 < a && (a--, $("#gameItemSlot" + a).hasClass("big") && this.UseItem(a))
};
ZotataGB.prototype.UsePressedItem = function (a) {
for (a = void 0 != a ? a : 0; 6 > a; a++) if ($("#gameItemSlot" + a).hasClass("Pressed")) {
this.players[this.my_player_index].UseItem(a);
break
}
};
ZotataGB.prototype.UnselectAllItems = function () {
for (var a = 0; 6 > a; a++) $("#gameItemSlot" + a).removeClass("Pressed")
};
ZotataGB.prototype.SetBinds = function () {
function a(a) {
a = a || window.event;
a.preventDefault && a.preventDefault();
a.stopPropagation && a.stopPropagation();
a.cancelBubble = !0;
return a.returnValue = !1
}
var b = this;
$("#btnShoot").bind("mousedown touchstart", function () {
b.UIShootStart()
});
$("#btnShoot").bind("mouseup touchend", function () {
b.UIShootEnd()
});
$("#btnLeft").bind("mousedown touchstart", function () {
b.UIWalkLeftStart()
});
$("#btnLeft").bind("mouseup touchend", function () {
b.UIWalkLeftEnd()
});
$("#btnRight").bind("mousedown touchstart", function () {
b.UIWalkRightStart()
});
$("#btnRight").bind("mouseup touchend", function () {
b.UIWalkRightEnd()
});
$("#btnUp").bind("mousedown touchstart", function () {
b.UIAngleUpStart()
});
$("#btnUp").bind("mouseup touchend", function () {
b.UIAngleUpEnd()
});
$("#btnDown").bind("mousedown touchstart", function () {
b.UIAngleDownStart()
});
$("#btnDown").bind("mouseup touchend", function () {
b.UIAngleDownEnd()
});
$(document).bind("keydown", function (a) {
$("#touch_ui").is(":visible") && $("#touch_ui").fadeOut("slow");
switch (a.which) {
case KEY.Left:
$("#gameInput").is(":focus") || (b.UIWalkLeftStart(), a.preventDefault());
break;
case KEY.Right:
$("#gameInput").is(":focus") || (b.UIWalkRightStart(), a.preventDefault());
break;
case KEY.Up:
b.UIAngleUpStart();
a.preventDefault();
break;
case KEY.Down:
b.UIAngleDownStart();
a.preventDefault();
break;
case KEY.Space:
!$("#gameInput").is(":focus") && (!$(".chatDialogInput").is(":focus") && g_is_game_slice) && (b.UIShootStart(), a.preventDefault());
break;
case KEY.F8:
b.PassTurnClicked();
a.preventDefault();
break;
case KEY.Tab:
b.UINextShot();
a.preventDefault();
break;
case KEY.F1:
b.UseItem(0);
a.preventDefault();
break;
case KEY.F2:
b.UseItem(1);
a.preventDefault();
break;
case KEY.F3:
b.UseItem(2);
a.preventDefault();
break;
case KEY.F4:
b.UseItem(3);
a.preventDefault();
break;
case KEY.F5:
b.UseItem(4);
a.preventDefault();
break;
case KEY.F6:
b.UseItem(5);
a.preventDefault();
break;
case KEY.Backspace:
$(document.activeElement).is("input") || a.preventDefault();
break;
case KEY.Esc:
ToggleOptionsDialog();
a.preventDefault();
break;
case KEY.F10:
$("#friendsList").is(":visible") ? $("#friendsList").hide() : $("#friendsList").show().tinyscrollbar_update("top"), a.preventDefault()
}
});
$(document).bind("keyup", function (a) {
switch (a.which) {
case KEY.Left:
b.UIWalkLeftEnd();
a.preventDefault();
break;
case KEY.Right:
b.UIWalkRightEnd();
a.preventDefault();
break;
case KEY.Up:
b.UIAngleUpEnd();
a.preventDefault();
break;
case KEY.Down:
b.UIAngleDownEnd();
a.preventDefault();
break;
case KEY.Space:
b.UIShootEnd();
a.preventDefault();
break;
case KEY.F1:
a.preventDefault();
break;
case KEY.F2:
a.preventDefault();
break;
case KEY.F3:
a.preventDefault();
break;
case KEY.F4:
a.preventDefault();
break;
case KEY.F5:
a.preventDefault();
break;
case KEY.F6:
a.preventDefault()
}
});
$("#gameui").bind("mousedown", function (a) {
a.stopPropagation();
return !1
});
$(document).bind("mousedown", function (a) {
if (2 == a.button) b.lastDragX = a.pageX, b.lastDragY = a.pageY, b.isInMapDraggin = !0, $("#container").addClass("HandCursor");
else if (0 == a.button && (b.score_screen_timeout && (b.score_screen_timeout = clearTimeout(b.score_screen_timeout), SwitchToRoomScreen()), !g_is_game_slice && b.turn == b.my_player_number)) b.isInDrag = !0, b.UIDragStart(a.pageX)
});
$(document).bind("mouseup", function (a) {
2 == a.button ? (b.isInMapDraggin = !1, $("#container").removeClass("HandCursor")) : 0 == a.button && b.isInDrag && (b.isInDrag = !1, b.UIDragMove(a.pageX), b.UIDragEnd())
});
$(document).bind("mousemove", function (a) {
b.isInDrag && b.UIDragMove(a.pageX);
b.isInMapDraggin && (b.camera.MoveBy(b.lastDragX - a.pageX, b.lastDragY - a.pageY, !1), b.lastDragX = a.pageX, b.lastDragY = a.pageY)
});
var c = document.getElementById("touch_ui");
c.ontouchstart = a;
c.ontouchmove = a;
c.ontouchend = a;
c.ontouchcancel = a;
$(document).bind("touchstart", function (a) {
$("#touch_ui").show();
if (b.score_screen_timeout) b.score_screen_timeout = clearTimeout(b.score_screen_timeout), SwitchToRoomScreen();
else if (!b.intervalDoSpace && !b.intervalDoLeft && !b.intervalDoRight && !b.intervalDoUp && !b.intervalDoDown) {
if (a.originalEvent.touches && a.originalEvent.touches.length) a = a.originalEvent.touches[0];
else if (a.originalEvent.changedTouches && a.originalEvent.changedTouches.length) a = a.originalEvent.changedTouches[0];
else return;
b.lastDragX = a.pageX;
b.lastDragY = a.pageY;
b.isInMapDraggin = !0;
a.preventDefault()
}
});
$(document).bind("touchend", function () {
b.isInMapDraggin = !1
});
$(document).bind("touchmove", function (a) {
a.preventDefault();
if (b.intervalDoSpace || b.intervalDoLeft || b.intervalDoRight || b.intervalDoUp || b.intervalDoDown) b.isInMapDraggin = !1;
else {
if (a.originalEvent.touches && a.originalEvent.touches.length) a = a.originalEvent.touches[0];
else if (a.originalEvent.changedTouches && a.originalEvent.changedTouches.length) a = a.originalEvent.changedTouches[0];
else return;
b.isInMapDraggin && (b.camera.MoveBy(b.lastDragX - a.pageX, b.lastDragY - a.pageY, !1), b.lastDragX = a.pageX, b.lastDragY = a.pageY)
}
})
};
ZotataGB.prototype.Destructor = function () {
$(document).unbind("keydown");
$(document).unbind("keyup");
$(document).unbind("mousedown");
$(document).unbind("mouseup");
$(document).unbind("mousemove");
$(document).unbind("touchstart");
$(document).unbind("touchend");
$(document).unbind("touchmove");
$("#btnShoot").unbind("mousedown touchstart");
$("#btnShoot").unbind("mouseup touchend");
$("#btnLeft").unbind("mousedown touchstart");
$("#btnLeft").unbind("mouseup touchend");
$("#btnRight").unbind("mousedown touchstart");
$("#btnRight").unbind("mouseup touchend");
$("#btnUp").unbind("mousedown touchstart");
$("#btnUp").unbind("mouseup touchend");
$("#btnDown").unbind("mousedown touchstart");
$("#btnDown").unbind("mouseup touchend");
this.turnTimeout = clearTimeout(this.turnTimeout);
var a;
for (a = 0; a < this.shots.length; a++) this.shots[a].shot.Remove();
this.shots = [];
this.EndTurn();
this.score_screen_timeout = clearTimeout(this.score_screen_timeout);
for (a = 0; a < this.players.length; a++) this.players[a].Remove();
$(".Player").hide();
$("#powerBar").css("width", 0);
$("#turn_timer").hide();
$("#game_over").hide();
$(DIV_TO_CREATE_GAME_OBJECTS).children().remove()
};
ZotataGB.prototype.CreatePlayers = function (a) {
for (var b = 0; b < a.length; b++) {
var c = !1;
a[b].user_id == this.my_user_id && (this.my_player_number = a[b].n, this.my_player_index = b, c = !0);
this.players.push(new CPlayer(a[b], c, this.ground))
}
if (-1 == this.my_player_index) throw Error("[ZotataGB.CreatePlayers] I don't know who am I playing");
};
ZotataGB.prototype.UpdatePlayers = function (a) {
for (var b = 0; b < a.length; b++) {
var c = a[b],
d = c[1],
e = c[2],
f = c[3],
h = c[4],
g = c[5],
j = 1 == c[6],
c = this.GetPlayerByPlayerNumber(c[0]);
c.MoveTo(d, e, f);
c.ChangeDelay(h, g);
c.ChangeAliveTo(j)
}
};
ZotataGB.prototype.UpdateTurnList = function () {
for (var a = [], b = this.players[this.my_player_index].delay, c = this.players[this.my_player_index].delay_before, d = 0; d < this.players.length; d++) {
var e = this.players[d];
e.is_alive && a.push({
rank: e.rank,
name: e.name,
user_id: e.user_id,
team: e.team,
delay: e.delay,
lastturn: e.lastturn
})
}
a.sort(function (a, b) {
return a.delay == b.delay ? a.lastturn - b.lastturn : a.delay - b.delay
});
for (d = 0; d < a.length; d++) e = a[d].delay - b, e = 0 < e ? "+" + e : e, $("#turn_line" + d + " .turn_line_name").html(a[d].name), $("#turn_line" + d + " .turn_line_rank").removeClass().addClass("turn_line_rank rank rank" + a[d].rank), "A" == a[d].team ? ($("#turn_line" + d + " .turn_line_number").removeClass("turn_line_number_b").addClass("turn_line_number_a turn_line_number" + d), $("#turn_line" + d + " .turn_line_name").removeClass("turn_line_name_b").addClass("turn_line_name_a turn_line_number" + d)) : ($("#turn_line" + d + " .turn_line_number").removeClass("turn_line_number_a").addClass("turn_line_number_b turn_line_number" + d), $("#turn_line" + d + " .turn_line_name").removeClass("turn_line_name_a").addClass("turn_line_name_b turn_line_number" + d)), a[d].user_id == this.my_user_id ? ($("#turn_line" + d).addClass("turn_line_me"), e = b - c) : $("#turn_line" + d).removeClass("turn_line_me"), $("#turn_line" + d + " .turn_line_delay").html(e), $("#turn_line" + d).show();
for (; 8 > d; d++) $("#turn_line" + d).hide()
};
ZotataGB.prototype.UpdatePlayer = function (a) {
var b = a[0];
if (b != this.my_player_number) {
var c = a[1],
d = a[2],
a = a[3];
this.GetPlayerByPlayerNumber(b).MoveTo(c, d, a)
}
};
ZotataGB.prototype.CreateShot = function (a, b) {
var c = this,
d = function (b) {
var d;
for (d = 0; d < c.shots.length; d++) if (c.shots[d].id == b) {
c.shots.splice(d, 1);
break
}
if (a.hole) {
0 < a.hole.rx && 0 < a.hole.ry && c.ground.ExplodeAt(a.hole.x, a.hole.y, a.hole.rx, a.hole.ry);
a.is_lightning && c.CreateLightning(a.hole.x, a.hole.y, a.start.ang);
CreateExplode(a.exp, a.hole.x, a.hole.y);
if (a.damages) for (d = 0; d < a.damages.length; d++) b = c.GetPlayerByPlayerNumber(a.damages[d].n), a.damages[d].hp && b.ChangeHPShield(a.damages[d].hp, a.damages[d].shield), void 0 != a.damages[d].movex && b.MoveTo(a.damages[d].movex, void 0 != a.damages[d].movey ? a.damages[d].movey : b.y, void 0, !1);
for (d = 0; d < c.players.length; d++) c.players[d].Fall()
}
if (a.tele) for (d = 0; d < a.tele.length; d += 5) {
var b = a.tele[d + 1],
e = a.tele[d + 2],
j = a.tele[d + 3],
i = a.tele[d + 4],
k = c.GetPlayerByPlayerNumber(a.tele[d]);
k && (k.MoveTo(b, e, void 0, !0), k.MoveTo(j, i, void 0, !1), CreateExplode(a.exp, b, e))
}
0 == c.shots.length && ((c.ReceivedChatArray(c.after_shot_chat), c.after_shot_gold && (AudioPlay(AUDIO_GOLD), c.UpdateGuiGold(c.after_shot_gold)), c.UpdateThor(c.after_shot_thor), c.UpdateWeather(c.after_shot_weather), c.UpdateWind(c.next_wind), 2 < c.queue.length) ? (c.StartNextTurn(), c.QueueUnblock()) : setTimeout(function () {
c.StartNextTurn();
c.QueueUnblock()
}, 1E3))
}, e = random(0, 999999);
2 < this.queue.length ? d(e) : this.shots.push({
id: e,
shot: new CShot(e, a, b, d)
})
};
ZotataGB.prototype.ReceivedChatArray = function (a) {
if (a) for (var b = 0; b < a.length; b++) ChatReceived("", a[b][0], a[b][1])
};
ZotataGB.prototype.QueueAddCommand = function (a, b) {
this.queue.push({
opcode: a,
params: b
});
this.QueueExecuteNext()
};
ZotataGB.prototype.QueueUnblock = function () {
this.is_queue_executing = !0;
this.QueueExecuteNext()
};
ZotataGB.prototype.QueueExecuteNext = function () {
for (; this.is_queue_executing && 0 < this.queue.length;) {
var a = this.queue.shift();
switch (a.opcode) {
case "play":
this.UpdatePlayers(a.params.p);
this.UpdateTurnList();
this.turn_number = a.params.t;
this.after_shot_chat = a.params.chat;
this.after_shot_gold = a.params.n == this.my_player_number ? a.params.gold : void 0;
this.EndTurn();
this.after_shot_thor = a.params.thor;
this.after_shot_weather = a.params.w;
this.next_turn = a.params.turn;
this.next_wind = a.params.d;
if (a.params.shots && 0 < a.params.shots.length) {
for (var b = 0; b < a.params.shots.length; b++) this.CreateShot(a.params.shots[b], 0 == b), a.params.shots[b].ss && a.params.n == this.my_player_number && (this.no_ss_turns = 4, $("#btnShotSS").fadeOut(), 2 == GetSelectedShotType() && SelectShotType(0));
this.is_queue_executing = !1;
return
}
this.ReceivedChatArray(a.params.chat);
this.UpdateThor(this.after_shot_thor);
this.UpdateWeather(this.after_shot_weather);
this.UpdateWind(this.next_wind);
this.StartNextTurn();
break;
case "update":
this.UpdatePlayer(a.params);
break;
case "game-over":
this.ReceivedChatArray(a.params.chat);
this.GameOver(a.params);
break;
case "dead":
(a = this.GetPlayerByPlayerNumber(a.params)) && a.ChangeAliveTo(!1)
}
}
};
ZotataGB.prototype.EndTurn = function () {
var a = this.GetPlayerByPlayerNumber(this.turn);
a && a.ChangeMyTurn(!1);
this.turn = -1;
this.intervalDoLeft = clearInterval(this.intervalDoLeft);
this.intervalDoRight = clearInterval(this.intervalDoRight);
this.intervalDoSpace = clearInterval(this.intervalDoSpace);
this.turnTimeout = clearTimeout(this.turnTimeout);
this.isInDrag = !1;
$("#turn_timer").hide()
};
ZotataGB.prototype.PassTurn = function () {
this.EndTurn();
var a = Math.floor((get_time() - this.start_turn_time) / 1E3);
a > TURN_TIME && (a = TURN_TIME);
this.players[this.my_player_index].PassTurn(a)
};
ZotataGB.prototype.Shoot = function (a) {
this.EndTurn();
var b = Math.floor((get_time() - this.start_turn_time) / 1E3);
b > TURN_TIME && (b = TURN_TIME);
this.players[this.my_player_index].Shoot(a, b, GetSelectedShotType());
$("#last_power_mark").animate({
left: 240 + a
})
};
ZotataGB.prototype.PassTurnClicked = function () {
this.turn == this.my_player_number && this.PassTurn()
};
ZotataGB.prototype.StartNextTurn = function () {
this.StartNextTurn2()
};
ZotataGB.prototype.StartNextTurn2 = function () {
this.turn = this.next_turn;
if (-1 != this.turn) {
var a = this.GetPlayerByPlayerNumber(this.turn);
if (a) if (a.ChangeMyTurn(!0), 2 < this.queue.length ? $("#game_replay").show() : $("#game_replay").hide(), 0 == this.no_ss_turns && $("#btnShotSS").fadeIn(), this.camera.FocusAt(a.x, a.y, !0), this.start_turn_time = get_time(), this.turn == this.my_player_number) {
0 < this.no_ss_turns && this.no_ss_turns--;
this.steps = 0;
$("#walkBar").css("width", 400);
this.UsePressedItem();
$("#turn_timer").stop(!0, !0).hide().css("background-position", "0 -1900px").show("slow");
var b = this,
c = function () {
AudioPlay(AUDIO_TURN_TICK);
if (b.turn == b.my_player_number) {
var d = TURN_TIME - Math.floor((get_time() - b.start_turn_time) / 1E3);
0 < d ? (g_graphics_high ? $("#turn_timer").animate({
backgroundPositionY: "-" + (d - 1) + "00px"
}, 200, "linear") : $("#turn_timer").css({
backgroundPositionY: "-" + (d - 1) + "00px"
}), 0 == b.queue.length && a.SendPosUpdate(), b.turnTimeout = setTimeout(function () {
c()
}, 1E3)) : b.PassTurn()
}
};
this.turnTimeout = setTimeout(c, 1E3);
AudioPlay(AUDIO_MY_TURN)
} else $("#turn_timer").hide();
else debug && console.log("[ZotataGB.StartNextTurn2] ERROR: turn of unknown player number", this.turn)
}
};
ZotataGB.prototype.GetPlayerByPlayerNumber = function (a) {
if (-1 != a) for (var b = 0; b < this.players.length; b++) if (this.players[b].player_number_in_game == a) return this.players[b]
};
ZotataGB.prototype.GameOver = function (a) {
$("#scores_lose_a").hide();
$("#scores_lose_b").hide();
"B" != a.won && $("#scores_lose_b").show();
"A" != a.won && $("#scores_lose_a").show();
$(".score").hide();
for (var b = 0; b < a.scores.length; b++) {
var c = a.scores[b],
d = c[0],
e = c[1],
f = c[2],
h = c[3],
g = c[4],
c = c[5];
$("#score" + d + " .score_name").html(f);
$("#score" + d + " .score_rank").removeClass().addClass("score_rank rank rank" + h);
$("#score" + d + " .score_gp").html(g + " GP");
$("#score" + d + " .score_gold").html(c + " GOLD");
e == this.my_user_id ? $("#score" + d + " .score_me").show() : $("#score" + d + " .score_me").hide();
$("#score" + d).show()
}
LoadRanking(5);
var j = this;
$(".Player").promise().done(function () {
$("#game_over").delay(1500).fadeIn(1500);
j.score_screen_timeout = setTimeout(function () {
SwitchToRoomScreen()
}, 1E4)
})
};
ZotataGB.prototype.ChangePlayersInRoom = function (a) {
var b, c;
for (b = 0; b < this.players.length; b++) this.players[b].mark = !1;
for (c = 0; c < a.length; c++) for (b = 0; b < this.players.length; b++) a[c][PLAYER_INDEX_USER_ID] == this.players[b].user_id && (this.players[b].mark = !0);
for (b = 0; b < this.players.length; b++) this.players[b].mark || this.players[b].ChangeAliveTo(!1)
};
ZotataGB.prototype.UpdateGuiGold = function (a) {
for (var b = a.toString().split("").reverse(), a = 0; a < b.length && 5 > a; a++) "-" == b[a] ? $("#UIGoldDigit" + a).animate({
backgroundPositionY: "-154px"
}, 1E3) : $("#UIGoldDigit" + a).animate({
backgroundPositionY: -14 - 14 * Number(b[a]) + "px"
}, 1E3);
for (; 5 > a; a++) $("#UIGoldDigit" + a).animate({
backgroundPositionY: "0"
}, 1E3)
};
var THOR_LEVEL = [0, 300, 900, 1800, 3200, 6E3];
ZotataGB.prototype.UpdateThor = function (a) {
if (a) {
for (var b = a[0], c = a[1], d = a[2], a = a[3], e = 0; e + 1 < THOR_LEVEL.length && a >= THOR_LEVEL[e + 1];) e++;
e++;
$("#thor").stop(!0, !0).animate({
left: b,
top: c
}, 2E3);
$("#thor_rotate").stop(!0, !0).animate({
rotate: "-" + d + "deg"
}, 1E3);
$("#thor_lvl").html("Lv." + e);
$("#thor_damage").html(a);
$("#thor_laser").fadeOut()
}
};
ZotataGB.prototype.ThorShoot = function (a, b, c, d) {
$("#thor").stop(!0, !0).css({
left: a,
top: b
});
$("#thor_rotate").stop(!0, !0).css({
rotate: "-" + c + "deg"
});
$("#thor_laser").stop(!0, !0).css({
width: d
}).show().fadeOut()
};
ZotataGB.prototype.UpdateWeather = function (a) {
$("#weatherSlot0").removeClass().addClass("weather-" + a[0]);
$("#weatherSlot1").removeClass().addClass("weather-" + a[1]);
$("#weatherSlot2").removeClass().addClass("weather-" + a[2]);
$("#weatherSlot3").removeClass().addClass("weather-" + a[3]);
$("#weatherSlot4").removeClass().addClass("weather-" + a[4])
};
ZotataGB.prototype.CreateLightning = function (a, b, c) {
var d = "#lightning" + random(0, 999999),
e = random(0, 3);
$(DIV_TO_CREATE_GAME_OBJECTS).append('<div id="' + d.slice(1) + '" style="position:absolute; left:' + a + "px; top:" + b + 'px;"><div class="lightning lightning' + e + '"></div></div>');
$(d).css({
rotate: 270 - c + "deg"
});
console.log("lightning created", d);
setTimeout(function () {
console.log("lightning removed", d, $(d));
$(d).remove()
}, 100)
};
ZotataGB.prototype.UpdateWind = function (a) {
var b = a[1],
a = a[0],
c;
c = 10 > a ? "#ffffff" : 20 > a ? "#ffff00" : "#ff0000";
10 > a && (a = "0" + a);
$("#wind_number").html(a).css("color", c);
0 == a ? $("#wind_angle").hide() : $("#wind_angle").show().css("rotate", - b + "deg")
};
var AUDIO_ARMOR_MOVE = 0,
AUDIO_ARMOR_BLAST = 1,
AUDIO_ARMOR_FIRE = 2,
AUDIO_ICE_MOVE = 3,
AUDIO_MOVE_ARMOR = 4,
AUDIO_ICE_SHOOT = 5,
AUDIO_ARMOR_FIRE2 = 6,
AUDIO_ICE_BLAST = 7,
AUDIO_ICE_FIRE = 8,
AUDIO_ICE_BLAST2 = 9,
AUDIO_ADUKA_FIRE = 10,
AUDIO_ADUKA_FIRE2 = 11,
AUDIO_BUTTON_SELECT = 12,
AUDIO_MUSIC_CHANNEL = 13,
AUDIO_MUSIC_ROOM = 14,
AUDIO_MUSIC_STAGE1 = 15,
AUDIO_MY_TURN = 16,
AUDIO_TURN_TICK = 17,
AUDIO_BUTTON_SELECT2 = 18,
AUDIO_GOLD = 19,
AUDIO_BIGFOOT_FIRE1 = 20,
AUDIO_BIGFOOT_FIRE2 = 21,
AUDIO_BIGFOOT_BLAST1 = 22,
AUDIO_BIGFOOT_BLAST2 = 23,
AUDIO_LIGHTNING_FIRE = 24,
AUDIO_LIGHTNING_BLAST = 25,
AUDIO_JD_FIRE = 26,
AUDIO_JD_BLAST1 = 27,
AUDIO_JD_BLAST2 = 28,
g_sound_files = "1move 11blast 11fire 11move 1move 12blast 12fire 111blast 111fire 112blast 161fire 162fire bpush1 channel ready stage1 turn turnwa bselect1 gold 51fire 52fire 51blast 52blast 82fire 82blast 91fire 91blast 92blast".split(" "),
g_music_numbers = [AUDIO_MUSIC_CHANNEL, AUDIO_MUSIC_ROOM, AUDIO_MUSIC_STAGE1],
g_audio_is_music_on = 0 != getCookie("music"),
g_audio_is_effects_on = 0 != getCookie("effects"),
g_audio_last_music_wanted_to_play;
function AudioInit() {
navigator.userAgent.match(/(iPhone|iPod|iPad)/i) && (g_audio_is_music_on = !1);
soundManager.setup({
url: "/static/js/",
flashVersion: 9,
debugMode: !1,
onready: function () {
for (var a = 0; a < g_sound_files.length; a++) {
var b = -1 == g_music_numbers.indexOf(a) && g_audio_is_effects_on;
soundManager.createSound({
id: g_sound_files[a],
autoLoad: b,
url: "/static/sounds/" + g_sound_files[a] + ".mp3"
})
}
AudioPlayInLoop(AUDIO_MUSIC_CHANNEL)
}
})
}
function AudioPlayInLoop(a, b) {
if (-1 == g_music_numbers.indexOf(a)) {
if (!g_audio_is_effects_on) return
} else if (g_audio_last_music_wanted_to_play = a, !g_audio_is_music_on) return;
var c = g_sound_files[a];
void 0 != c && (c = soundManager.getSoundById(c), void 0 != c && (b && AudioStopAll(), c.play({
onfinish: function () {
AudioPlayInLoop(a)
}
})))
}
function AudioPlay(a, b) {
if (-1 == g_music_numbers.indexOf(a)) {
if (!g_audio_is_effects_on) return
} else if (g_audio_last_music_wanted_to_play = a, !g_audio_is_music_on) return;
var c = g_sound_files[a];
void 0 != c && (void 0 != b ? soundManager.play(c, {
loops: b
}) : soundManager.play(c))
}
function AudioStopAll() {
soundManager.stopAll()
}
function AudioTurnMusicOff() {
for (var a = 0; a < g_music_numbers.length; a++) soundManager.getSoundById(g_sound_files[g_music_numbers[a]]).pause();
g_audio_is_music_on = !1
}
function AudioTurnMusicOn() {
g_audio_is_music_on = !0;
for (var a = !1, b = 0; b < g_music_numbers.length; b++) {
var c = soundManager.getSoundById(g_sound_files[g_music_numbers[b]]);
0 != c.paused && (c.resume(), a = !0)
}
a || AudioPlayInLoop(g_audio_last_music_wanted_to_play)
}
function AudioTurnEffectsOff() {
g_audio_is_effects_on = !1
}
function AudioTurnEffectsOn() {
g_audio_is_effects_on = !0
};
function random(a, b) {
return Math.floor(Math.random() * (b - a + 1) + a)
}
function get_time() {
return Date.now()
}
function RadToAngle(a) {
return 180 * a / Math.PI
}
function AngleToRad(a) {
return a * Math.PI / 180
}
function Vector(a, b) {
this.ang = a;
this.size = b;
this.x = Math.cos(AngleToRad(a)) * b;
this.y = -Math.sin(AngleToRad(a)) * b
}
function Dist2Points(a, b, c, d) {
return Math.sqrt((c - a) * (c - a) + (d - b) * (d - b))
}
function setCookie(a, b) {
var c = new Date;
c.setTime(c.getTime() + 31536E6);
document.cookie = a + "=" + b + ";expires=" + c.toUTCString()
}
function getCookie(a) {
return (a = document.cookie.match("(^|;) ?" + a + "=([^;]*)(;|$)")) ? a[2] : null
}
"function" != typeof Array.prototype.remove && (Array.prototype.remove = function (a) {
a = this.indexOf(a); - 1 != a && this.splice(a, 1)
});
var ANIMATIONS_FPS = 10;
function CPlayerGraphic(a, b, c, d, e, f, h) {
if (void 0 == h) throw Error("CPlayerGraphic: is_flip is undefined");
this.div = a;
this.flip = h;
this.change_mobile(b);
void 0 != f && this.change(f);
void 0 != c && this.change(c);
void 0 != d && this.change(d);
void 0 != e && this.change(e);
g_graphics_high && this.animate_start()
}
CPlayerGraphic.prototype.animate_start = function () {
this.frame_time = 1E3 / ANIMATIONS_FPS;
this.start_time = get_time();
var a = this;
this.interval = setInterval(function () {
var b = Math.floor((get_time() - a.start_time) / a.frame_time);
a.flag && a.flag.set_frame(b);
a.head && a.head.set_frame(b);
a.body && a.body.set_frame(b);
a.eyes && a.eyes.set_frame(b, a.head.is_special)
}, this.frame_time)
};
CPlayerGraphic.prototype.animate_stop = function () {
this.interval && (this.interval = clearInterval(this.interval))
};
CPlayerGraphic.prototype.remove = function () {
this.animate_stop();
this.flag && this.flag.remove();
this.body && this.body.remove();
this.head && this.head.remove();
this.eyes && this.eyes.remove();
this.mobile && this.mobile.remove()
};
CPlayerGraphic.prototype.change = function (a, b, c) {
if (void 0 == a) void 0 == b ? deubg && console.log(" *** ERROR: [CPlayerGraphic.change] undefined avatar ", a, d) : b == AVATAR_TYPE_FLAG && this.flag ? this.flag.remove() : b == AVATAR_TYPE_BODY && this.body ? this.body.remove() : b == AVATAR_TYPE_EYES && this.eyes ? this.eyes.remove() : b == AVATAR_TYPE_HEAD && this.head && this.head.remove();
else {
var d = AVATARS[a];
if (void 0 == d) debug && console.log(" *** ERROR: [CPlayerGraphic.change] unknown avatar ", a, d);
else if (b = "avatars/" + d[AVATAR_INDEX_GENDER] + d[AVATAR_INDEX_TYPE] + (d[AVATAR_INDEX_N] + 1E5).toString().substring(1) + ".png", d[AVATAR_INDEX_TYPE] == AVATAR_TYPE_FLAG) {
if (this.flag_n != a || c) this.flag && this.flag.remove(), this.flag = new CAnimatedObject2(b, d[AVATAR_INDEX_GRAPHICS], this.flip ? -this.avatar_x : this.avatar_x, this.avatar_y, this.div, 1, 10, this.flip, LOOP_NORMAL_AND_REVERSE, 0, 1), this.flag_n = a
} else if (d[AVATAR_INDEX_TYPE] == AVATAR_TYPE_HEAD) {
if (this.head_n != a || c) this.head && this.head.remove(), this.head = new CAnimatedObject2(b, d[AVATAR_INDEX_GRAPHICS], this.flip ? -this.avatar_x : this.avatar_x, this.avatar_y, this.div, 1, 10, this.flip, LOOP_AVATAR, 21, 2), this.head_n = a, this.body && this.change(this.body_n, AVATAR_TYPE_BODY, !0)
} else if (d[AVATAR_INDEX_TYPE] == AVATAR_TYPE_BODY) {
if (this.body_n != a || c) this.body && this.body.remove(), this.body = new CAnimatedObject2(b, d[AVATAR_INDEX_GRAPHICS], this.flip ? -this.avatar_x : this.avatar_x, this.avatar_y, this.div, 1, 10, this.flip, LOOP_NORMAL_AND_REVERSE, 0, 3), this.body_n = a
} else if (d[AVATAR_INDEX_TYPE] == AVATAR_TYPE_EYES && (this.eyes_n != a || c)) {
this.eyes && this.eyes.remove();
var c = d[AVATAR_INDEX_GRAPHICS].length,
e = LOOP_NORMAL_AND_REVERSE;
22 == c ? e = LOOP_AVATAR : 44 == c && (e = LOOP_AVATAR_NO_REVERSE);
this.eyes = new CAnimatedObject2(b, d[AVATAR_INDEX_GRAPHICS], this.flip ? -this.avatar_x : this.avatar_x, this.avatar_y, this.div, 1, 10, this.flip, e, 0, 4);
this.eyes_n = a
}
}
};
CPlayerGraphic.prototype.GetAvatars = function () {
return [this.head_n, this.body_n, this.eyes_n, this.flag_n]
};
CPlayerGraphic.prototype.change_mobile = function (a) {
var b = MOBILE_GRAPHICS[a];
this.avatar_x = b ? b.player_x : 0;
this.avatar_y = b ? b.player_y : 0;
var c = this.flip ? -this.avatar_x : this.avatar_x,
d = this.avatar_y;
this.head && this.head.change_pos(c, d);
this.body && this.body.change_pos(c, d);
this.eyes && this.eyes.change_pos(c, d);
this.flag && this.flag.change_pos(c, d);
this.mobile && this.mobile.remove();
b && (this.mobile = new CAnimatedObject("mobile" + a, "mobile-" + a + ".png", 0, 0, b.w, b.h, b.center_x, b.center_y, this.div, 1, b.frames, 50, this.flip, g_graphics_high ? 1 : 3))
};
function CAnimatedObject(a, b, c, d, e, f, h, g, j, i, k, l, m, n, o, p) {
this.frames = k;
this.start_frame = void 0 == o ? 0 : o;
this.end_frame = p;
this.frame_time = l;
this.loop_type = n;
this.css_prefix = a;
this.div_id = "#AniObject" + random(0, 999999);
this.start_time = get_time();
this.is_flip = m;
c = Math.round(c);
d = Math.round(d);
$(j).append('<div class="AniObject ' + a + "-" + this.start_frame + (this.is_flip ? " FlipH" : "") + '" id="' + this.div_id.slice(1) + '" style="position: absolute; left:' + c + "px; top:" + d + "px; width: " + e + "px; height: " + f + "px; margin-left: " + -h + "px; margin-top: " + -g + "px; opacity: " + i + "; background-image: url(/static/images/" + b + '); background-repeat: no-repeat;background-color: transparent; zoom:1;"></div>');
if (3 != this.loop_type) {
var q = this;
this.interval = setInterval(function () {
q.update()
}, l)
}
}
CAnimatedObject.prototype.update = function () {
var a = Math.floor((get_time() - this.start_time) / this.frame_time);
if (0 == this.loop_type) {
if (a >= this.frames) {
this.remove();
return
}
} else if (1 == this.loop_type) a %= this.frames;
else if (2 == this.loop_type) {
var b = this.end_frame - this.start_frame + 1,
a = a % (2 * b - 2);
a >= b && (a = 2 * b - 2 - a);
a += this.start_frame
}(b = $(this.div_id)) ? b.removeClass().addClass("AniObject " + this.css_prefix + "-" + a + (this.is_flip ? " FlipH" : "")) : this.remove()
};
CAnimatedObject.prototype.remove = function () {
this.interval = clearInterval(this.interval);
$(this.div_id).remove()
};
var GRAPHICS_INDEX_WIDTH = 0,
GRAPHICS_INDEX_HEIGHT = 1,
GRAPHICS_INDEX_CENTER_X = 2,
GRAPHICS_INDEX_CENTER_Y = 3,
LOOP_ONCE = 0,
LOOP_NORMAL = 1,
LOOP_NORMAL_AND_REVERSE = 2,
LOOP_SINGLE_FRAME = 3,
LOOP_AVATAR = 4,
LOOP_AVATAR_NO_REVERSE = 5,
RANDOM_FACE_TURN_CHANCE = 6;
function CAnimatedObject2(a, b, c, d, e, f, h, g, j, i, k, l) {
this.graphics = b;
this.frames = b.length;
this.start_frame = void 0 == i ? 0 : i;
this.loop_type = j;
this.is_flip = g;
this.frame_time = 1E3 / h;
this.is_special = !1;
this.div_id = "#AniObject" + random(0, 999999);
this.start_time = get_time();
c = Math.round(c);
d = Math.round(d);
h = 0;
this.frames_x = [];
for (g = 0; g < b.length; g++) this.frames_x.push(h), h += b[g][GRAPHICS_INDEX_WIDTH] + 1;
h = b[i][GRAPHICS_INDEX_WIDTH];
g = b[i][GRAPHICS_INDEX_HEIGHT];
j = b[i][GRAPHICS_INDEX_CENTER_X];
b = b[i][GRAPHICS_INDEX_CENTER_Y];
i = this.frames_x[i];
j = this.is_flip ? j - h : -j;
$("<div/>", {
id: this.div_id.slice(1),
"class": "AniObject" + (this.is_flip ? " FlipH" : ""),
style: "position: absolute; left:" + c + "px; top:" + d + "px; width: " + h + "px; height: " + g + "px; margin-left: " + j + "px; margin-top: " + -b + "px; opacity: " + f + "; background-image: url(/static/images/" + a + "); background-repeat: no-repeat;background-color: transparent; zoom:1; background-position: -" + i + "px 0; z-index:" + k + ";"
}).appendTo(e);
if (l && this.loop_type != LOOP_SINGLE_FRAME) {
var m = this;
this.interval = setInterval(function () {
var a = Math.floor((get_time() - m.start_time) / m.frame_time);
m.set_frame(a)
}, m.frame_time)
}
}
CAnimatedObject2.prototype.set_frame = function (a, b) {
var c = $(this.div_id);
if (c) {
var d;
if (this.loop_type == LOOP_ONCE) {
if (a >= this.frames) {
this.remove();
return
}
} else if (this.loop_type == LOOP_NORMAL) a %= this.frames;
else if (this.loop_type == LOOP_NORMAL_AND_REVERSE) d = 2 * this.frames - 2, a %= d, a >= this.frames && (a = d - a);
else if (this.loop_type == LOOP_AVATAR) {
if (void 0 == b) {
d = Math.floor(a / (this.frames - 2));
if (void 0 == this.turn_cycle || d > this.turn_cycle) this.turn_cycle = random(d, d + RANDOM_FACE_TURN_CHANCE);
this.is_special = d == this.turn_cycle
} else this.is_special = b;
var e = this.frames / 2;
d = 2 * e - 2;
this.is_special ? (a %= d, a >= e && (a = d - a)) : (a %= d, a >= e && (a = d - a), a += e)
} else if (this.loop_type == LOOP_AVATAR_NO_REVERSE) {
if (void 0 == b) {
d = Math.floor(a / (this.frames - 2));
if (void 0 == this.turn_cycle || d > this.turn_cycle) this.turn_cycle = random(d, d + RANDOM_FACE_TURN_CHANCE);
this.is_special = d == this.turn_cycle
} else this.is_special = b;
e = this.frames / 2;
a = this.is_special ? a % e : a % e + e
}
d = this.graphics[a][GRAPHICS_INDEX_WIDTH];
e = this.graphics[a][GRAPHICS_INDEX_CENTER_X];
c.css({
"background-position": -this.frames_x[a] + "px 0",
width: d,
height: this.graphics[a][GRAPHICS_INDEX_HEIGHT],
"margin-left": this.is_flip ? e - d : -e,
"margin-top": -this.graphics[a][GRAPHICS_INDEX_CENTER_Y]
})
} else console.log("*** ERROR: CAnimatedObject2 not found")
};
CAnimatedObject2.prototype.remove = function () {
this.interval && (this.interval = clearInterval(this.interval));
$(this.div_id).remove()
};
CAnimatedObject2.prototype.change_pos = function (a, b) {
$(this.div_id).css({
left: a,
top: b
})
};
function CreateExplode(a, b, c) {
if (a = EXPLODE[a]) new CAnimatedObject2("explodes/" + a.file, a.graphics, b, c, "#game_objects", 0.75, 20, !1, LOOP_ONCE, 0, 20, !0), AudioPlay(a.sound)
};
var socket;
function ZotataPlaySendLogin(a, b) {
debug && console.log("Send: login", a);
socket.emit("login", VERSION, a, b)
}
function ZotataPlayChat(a) {
debug && console.log("Send: chat:", a);
socket.emit("chat", a)
}
function SendRoomCreate(a, b, c, d) {
debug && console.log("Send: room-create:", a, b, c, d);
socket.emit("room-create", a, b, c, d)
}
function SendRoomJoin(a, b) {
debug && console.log("Send: room-join:", a, b);
socket.emit("room-join", a, b)
}
function SendRoomLeave() {
debug && console.log("Send: channel-join");
socket.emit("channel-join")
}
function SendRoomChangeReady(a) {
debug && console.log("Send: room-change-ready", a);
socket.emit("room-change-ready", a)
}
function SendRoomChangeTeam(a) {
debug && console.log("Send: room-change-team", a);
socket.emit("room-change-team", a)
}
function SendRoomGameStart() {
debug && console.log("Send: game-start");
socket.emit("game-start")
}
function SendPlayerShoot(a, b, c, d, e, f, h, g) {
debug && console.log("Send: game-shoot");
socket.emit("game-shoot", a, b, c, d, e, f, h, g)
}
function SendPlayerPassTurn(a, b, c, d, e, f) {
debug && console.log("Send: game-pass-turn");
socket.emit("game-pass-turn", a, b, c, d, e, f)
}
function SendPlayerMove(a, b, c, d, e) {
debug && console.log("Send: game-move");
socket.emit("game-move", a, b, c, d, e)
}
function SendChangeName(a, b) {
debug && console.log("SendChangeName", a, b);
$.post("/change_name", {
name: a,
can_show_photo: b
}, function (a) {
debug && console.log("SendChangeName Returned:", a);
"Updated" == a ? (OpenDialog("Updated", "Your player info updated :)", 1), debug && console.log("Send: refresh"), socket.emit("refresh")) : "Illegal Length" == a ? OpenDialog("Illegal Length", "Name length must be 2-25 letters.", 1) : "Illegal Char" == a ? OpenDialog("Illegal Char", "Name contains a character that is not allowed.<p>Allowed chars: a-z A-Z 0-9 -+$^*().,~!@#&=", 1) : "Exists" == a ? OpenDialog("Exists", "This GameID already exists.", 1) : "Too Few Letters" == a ? OpenDialog("Too Few Letters", "Name must contain at least 2 english letters a-z/A-Z.", 1) : "Filtered" == a ? OpenDialog("Not Allowed", "Name must not contain a word that is not allowed, please select a different one.", 1) : "Nothing Changed" == a && OpenDialog("Nothing Changed", "Nothing to do, same info.", 1)
})
}
function SendSelectedItemsForThisGame(a) {
debug && console.log("Send: game-items");
socket.emit("game-items", a)
}
function SendPlayerUseItem(a) {
debug && console.log("Send: game-use-item", a);
socket.emit("game-use-item", a)
}
function SendRoomChangeMobile(a) {
debug && console.log("Send: mobile", a);
socket.emit("mobile", a)
}
function SendGetMyAvatars() {
debug && console.log("Send: get-my-avatars");
socket.emit("get-my-avatars")
}
function SendEquip(a) {
debug && console.log("Send: equip", a);
socket.emit("equip", a)
}
function SendPurchase(a, b, c, d) {
debug && console.log("Send: buy", a, b, c, d);
socket.emit("buy", a, b, c, d)
}
function SendQuickJoin() {
debug && console.log("Send: quick-join");
socket.emit("quick-join")
}
function SendRoomChangeTitle(a) {
debug && console.log("Send: room-title", a);
socket.emit("room-title", a)
}
function SendSelectBot(a, b) {
debug && console.log("Send: select-bot", a, b);
socket.emit("select-bot", a, b)
}
function SendEvent(a, b) {
debug && console.log("Send: event", a, b);
socket.emit("event", a, b)
}
function SendGetPlayerInfo(a) {
debug && console.log("Send: getinfo", a);
socket.emit("getinfo", a)
}
function SendAddFriendRequest(a) {
debug && console.log("Send: addfriend", a);
socket.emit("addfriend", a)
}
function SendFriendApproved(a, b) {
debug && console.log("Send: friend-approved", b);
socket.emit("friend-approved", a, b)
}
function SendPrivateChat(a, b) {
debug && console.log("Send: pchat", a, b);
socket.emit("pchat", a, b)
}
function SendDeleteFriend(a) {
debug && console.log("Send: friend-delete", a);
socket.emit("friend-delete", a)
}
function SendRoomOptions(a, b, c, d, e) {
debug && console.log("Send: room-options", a, b, c, d, e);
socket.emit("room-options", a, b, c, d, e)
}
function NetworkStuff() {
socket = io.connect(SERVER_ADDRESS);
socket.on("connecting", function (a) {
console.log("connecting", a)
});
socket.on("connect_failed", function () {
console.log("connect_failed")
});
socket.on("error", function () {
console.log("error")
});
socket.on("reconnect_failed", function () {
console.log("reconnect_failed")
});
socket.on("reconnect", function (a, b) {
console.log("reconnect", a, b)
});
socket.on("reconnecting", function (a, b) {
console.log("reconnecting", a, b)
});
socket.on("close", function () {
console.log("close")
});
socket.on("hi", function (a) {
console.log("hi", a);
a != VERSION ? OpenDialog("Update Available", "Please refresh - <font color=\"#FF9933\">Press F5</font>\nto load the latest game client.\n\nIf it doesn't help try Shift+F5 or clear your browser's cache.") : (ZotataPlaySendLogin(ZotataPlayUserID, ZotataPlayAuthKey), CloseDialog())
});
socket.on("disconnect", function () {
console.log("disconnect");
ShowDisconnectedDialog()
});
socket.on("chat", function (a) {
debug && console.log("Receive: chat:", a);
ChatReceived(a.sender, a.text, a.type)
});
socket.on("my-player-info", function (a) {
debug && console.log("Receive: my-player-info", a);
var b = g_myPlayerInfo;
g_myPlayerInfo = a;
a.location_type == LOCATION_TYPE_CHANNEL ? g_gui_location != GUI_LOCATION_SHOP && (b && b.location_type != LOCATION_TYPE_CHANNEL && SwitchToChannelScreen(), ChannelPlayerInfoUpdate(), ShopSetMyGoldCash(g_myPlayerInfo.gold, g_myPlayerInfo.cash)) : a.location_type == LOCATION_TYPE_ROOM && (!b || b && b.location_type != LOCATION_TYPE_ROOM) && SwitchToRoomScreen()
});
socket.on("p", function (a, b) {
debug && console.log("Receive: p", a, b);
void 0 != g_myPlayerInfo && (g_myPlayerInfo.location_type == LOCATION_TYPE_CHANNEL ? ChannelUpdatePlayersList(a) : g_myPlayerInfo.location_type == LOCATION_TYPE_ROOM && (g_room_players = a, RoomUpdatePlayers(a), RoomUpdateWorthGP(b), g_game && g_game.ChangePlayersInRoom(a)))
});
socket.on("j", function (a) {
debug && console.log("Receive: j", a);
ChannelPlayerJoined(a[0], a[1], a[2])
});
socket.on("l", function (a) {
debug && console.log("Receive: l", a);
ChannelPlayerLeft(a)
});
socket.on("room-state", function (a) {
debug && console.log("Receive: room-state:", a);
if (a.chat && g_myPlayerInfo.location_type == LOCATION_TYPE_CHANNEL) {
ChannelChatClear();
for (var b = 0; b < a.chat.length; b++) ChatReceived(a.chat[b].sender, a.chat[b].text, a.chat[b].type);
ChatReceived("", 'Welcome to DragonBound 2.8! - <a href="http://www.facebook.com/pages/DragonBound-Community/266025740173562" target="_blank">DragonBound Community</a>', CHAT_TYPE_GM_BUGLE);
ChatReceived("", "Updates: 19/8 - Wind+AvatarsOff | 14/8 - New Avatars | 8/8 - New Mobiles", CHAT_TYPE_GM_BUGLE)
}
a.room && RoomUpdate(a.room)
});
socket.on("c", function (a) {
debug && console.log("Receive: c", a);
ChannelRoomsUpdate(a)
});
socket.on("r", function (a) {
debug && console.log("Receive: r", a);
ChannelRoomUpdate(a)
});
socket.on("game-start", function (a) {
debug && console.log("Receive: game-start", a);
g_game && (g_game.Destructor(), g_game = void 0);
SwitchToGameScreen();
g_game = new ZotataGB(g_myPlayerInfo.username, a);
SendSelectedItemsForThisGame(g_items)
});
socket.on("play", function (a) {
debug && console.log("Receive: play", a);
g_game ? g_game.QueueAddCommand("play", a) : window.location.reload()
});
socket.on("update", function (a) {
debug && console.log("Receive: update", a);
g_game ? g_game.QueueAddCommand("update", a) : window.location.reload()
});
socket.on("dead", function (a) {
debug && console.log("Receive: dead", a);
g_game ? g_game.QueueAddCommand("dead", a) : window.location.reload()
});
socket.on("game-over", function (a) {
debug && console.log("Receive: game-over", a);
g_game ? g_game.QueueAddCommand("game-over", a) : window.location.reload()
});
socket.on("items", function (a) {
debug && console.log("Receive: items", a);
void 0 == a || void 0 == a.length || (GameSetItems(a[0]), a[1] != ITEM_NONE && ($("#btnShotSS").fadeOut(), 2 == GetSelectedShotType() && SelectShotType(1)))
});
socket.on("master-timer", function (a) {
debug && console.log("Receive: master-timer", a);
MasterTimer(a)
});
socket.on("my-avatars", function (a) {
debug && console.log("Receive: my-avatars", a);
ShopSetMyItems2(a[0]);
ShopSetMyGoldCash(a[1], a[2])
});
socket.on("alert", function (a, b, c, d) {
debug && console.log("Receive: alert", a, b, c, d);
void 0 == c ? 0 == b.indexOf("You purchased") ? OpenDialog(a, b, DIALOG_BUTTONS_OK, function () {
ShopBuyCloseDialog()
}) : OpenDialog(a, b, DIALOG_BUTTONS_OK) : 3 == c && OpenDialog(a, b, DIALOG_BUTTONS_OK, void 0, d)
});
socket.on("friends", function (a) {
debug && console.log("Receive: friends", a);
UpdateFriendsList(a)
});
socket.on("info", function (a) {
debug && console.log("Receive: info", a);
InfoDialogReceiveInfo(a)
});
socket.on("friendreq", function (a) {
debug && console.log("Receive: friendreq", a);
OpenDialog("Friend Request", a[1] + ":\n\nCan you be my friend?", DIALOG_BUTTONS_OK_CANCEL, function (b) {
b && SendFriendApproved(a[0], a[3])
}, a[2])
});
socket.on("f", function (a) {
debug && console.log("Receive: f", a);
FriendUpdate(a)
});
socket.on("pchat", function (a, b, c) {
debug && console.log("Receive: pchat", a, b, c);
FriendPrivateChat(a, b, c)
});
socket.on("logout", function () {
debug && console.log("Receive: logout");
top.location = "/logout"
});
socket.on("inactive", function () {
debug && console.log("Receive: inactive");
OpenDialog("Hi", "Are you still here?", DIALOG_BUTTONS_OK, function () {
ZotataPlayChat("")
}, [35, 52])
})
};
var MAP_RANDOM = -1,
MAP_MIRAMO = 0,
MAP_NIRVANA = 1,
MAP_METRO = 2,
MAP_SEA = 3,
MAP_ADIUM = 4,
MAP_DRAGON = 5,
MAP_COZY = 6,
MAP_DUMMY = 7,
MAP_STAR = 8,
MAP_METAMINE = 9,
MAP_CAVE = 10,
MAP_SECRET = 11,
LAST_SELECTABLE_MAP = MAP_METAMINE,
MAPS = [{
name: "Miramo Town",
filename: "miramo",
color: "#634a4a",
w: 1766,
h: 456,
ground_size: 1800,
bg_size: 1300,
offset_x: 17,
offset_y: 1344
}, {
name: "Nirvana",
filename: "nirvana",
color: "#5a1400",
w: 1600,
h: 310,
ground_size: 1600,
bg_size: 1200,
offset_x: 0,
offset_y: 1067
}, {
name: "Metropolis",
filename: "metro",
color: "#634a4a",
w: 1800,
h: 715,
ground_size: 1800,
bg_size: 1300,
offset_x: 0,
offset_y: 1085
}, {
name: "Sea Of Hero",
filename: "sea",
color: "#84b6ce",
w: 1600,
h: 629,
ground_size: 1600,
bg_size: 1200,
offset_x: 0,
offset_y: 688
}, {
name: "Adium Root",
filename: "adium",
color: "#84b6ce",
w: 1800,
h: 372,
ground_size: 1800,
bg_size: 1300,
offset_x: 0,
offset_y: 788
}, {
name: "Dragon",
filename: "dragon",
color: "#94424a",
w: 2E3,
h: 461,
ground_size: 2E3,
bg_size: 1300,
offset_x: 0,
offset_y: 1539
}, {
name: "Cozy Tower",
filename: "cozy",
color: "#8c5a31",
w: 1649,
h: 396,
ground_size: 1800,
bg_size: 1300,
offset_x: 80,
offset_y: 1384
}, {
name: "Dummy Slope",
filename: "dummy",
color: "#de7329",
w: 1429,
h: 391,
ground_size: 1600,
bg_size: 1200,
offset_x: 76,
offset_y: 1037
}, {
name: "Star Dust",
filename: "star",
color: "#39314a",
w: 1345,
h: 425,
ground_size: 1800,
bg_size: 1300,
offset_x: 231,
offset_y: 922
}, {
name: "Meta Mine",
filename: "metamine",
color: "#ac5008",
w: 1409,
h: 760,
ground_size: 1800,
bg_size: 1300,
offset_x: 196,
offset_y: 1020
}, {
name: "Cave",
filename: "cave",
color: "#634a4a",
w: 1545,
h: 697,
ground_size: 1800,
bg_size: 1300,
offset_x: 133,
offset_y: 1103
}, {
name: "Secret",
filename: "secret",
color: "#634a4a",
w: 1800,
h: 886,
ground_size: 1800,
bg_size: 1300,
offset_x: 0,
offset_y: 914
}];
function GetMapName(a) {
return a == MAP_RANDOM ? "Random" : MAPS[a].name
}
function CGround(a, b) {
var c = MAPS[a];
this.canvas = document.getElementById("ground_canvas");
this.imageData = void 0;
this.h = this.w = 0;
this.LoadFromFile("/static/images/maps/" + c.filename + ".png", b);
$("#map_bg").css({
width: c.bg_size,
height: c.bg_size,
background: MAPS[a].color + " url(/static/images/maps/" + c.filename + "_bg.jpg)"
});
$("#gameScreen").css("background-color", c.color)
}
CGround.prototype.LoadFromFile = function (a, b) {
var c = this,
d = new Image;
d.onload = function () {
c.w = c.canvas.width = d.width;
c.h = c.canvas.height = d.height;
$("#ground_canvas").css({
width: c.w,
height: c.h
});
var a = c.canvas.getContext("2d");
a.drawImage(d, 0, 0);
c.imageData = a.getImageData(0, 0, c.canvas.width, c.canvas.height);
b && b()
};
d.src = a
};
CGround.prototype.IsPixel = function (a, b) {
return 0 > a || a >= this.w || 0 > b || b >= this.h ? !1 : 0 < this.imageData.data[4 * (b * this.w + a) + 3]
};
CGround.prototype.GetPosForWalking = function (a, b, c) {
var d = c == PLAYER_LOOK_LEFT ? a - 1 : a + 1;
if (0 > d || d >= this.w) return {
x: a,
y: b,
stuck: !0
};
if (this.IsPixel(d, b)) {
for (c = b; c > b - WALK_WALL_LIMIT; c--) if (!this.IsPixel(d, c)) return {
x: d,
y: c
};
return {
x: a,
y: b,
stuck: !0
}
}
for (c = b + 1; c < this.h; c++) if (this.IsPixel(d, c)) return {
x: d,
y: c - 1
};
return {
x: d,
y: this.h + 100,
fall_and_die: !0
}
};
CGround.prototype.GetUnder = function (a, b, c) {
if (void 0 == this.imageData) throw Error("GetUnder - imageData = undefined");
for (c = c ? b + c : this.h; b < c; b++) if (this.IsPixel(a, b)) return b - 1
};
CGround.prototype.GetAngle = function (a, b) {
if (this.IsPixel(a, b)) return debug && console.log("[CGround.GetAngle] IN-GROUND"), 0;
var c = this.GetUnder(a, b, 10);
if (void 0 == c) return debug && console.log("[CGround.GetAngle] FALLING"), 0;
if (c != b) return debug && console.log("[CGround.GetAngle] FLYING"), 0;
for (var d = c, e = 1, f = c, h = 1, g = 1; 9 >= g; g++) if (c = this.GetUnder(a - g, b - 10, 20), void 0 != c && (d += c, e++), c = this.GetUnder(a + g, b - 10, 20), void 0 != c) f += c, h++;
return Math.round(RadToAngle(Math.atan2((0 < h ? f / h : b) - (0 < e ? d / e : b), 19)))
};
CGround.prototype.ExplodeAt = function (a, b, c, d) {
var a = Math.round(a),
b = Math.round(b),
e, f, h = this.w,
g = c * c,
j = d * d;
for (e = b - d - 10; e < b + d + 10; e++) for (f = a - c - 10; f < a + c + 10; f++) {
var i = f - a,
k = e - b,
i = i * i / g + k * k / j,
k = 4 * (e * h + f);
1 > i ? this.imageData.data[k + 3] = 0 : 1.2 > i && (this.imageData.data[k] /= 2, this.imageData.data[k + 1] /= 2, this.imageData.data[k + 2] /= 2)
}
this.canvas.getContext("2d").putImageData(this.imageData, 0, 0)
};
function CCamera(a) {
a = MAPS[a];
this.min_x = -a.offset_x + 400;
this.max_x = a.ground_size - 400;
this.min_y = -a.offset_y + 300;
this.max_y = a.ground_size - a.offset_y - 300 + 84;
this.bg_aspect_ratio_x = (a.bg_size - 800) / (a.ground_size - 600);
this.bg_aspect_ratio_y = (a.bg_size - 600 + 84) / (a.ground_size - 600 + 84);
this.bg_offset_x = a.offset_x;
this.bg_offset_y = a.offset_y;
this.FocusAt(0, 0, !1)
}
CCamera.prototype.FocusAt = function (a, b, c, d) {
var e;
c && (e = Math.sqrt((this.x - a) * (this.x - a) + (this.y - b) - (this.y - b)), 30 > e && (c = !1));
a < this.min_x ? a = this.min_x : a > this.max_x && (a = this.max_x);
b < this.min_y ? b = this.min_y : b > this.max_y && (b = this.max_y);
this.x = a;
this.y = b;
if (d) {
var f = this;
$("#camera").promise().done(function () {
f.Set(a, b, c, e)
})
} else this.Set(a, b, c, e)
};
CCamera.prototype.MoveBy = function (a, b, c) {
this.FocusAt(this.x + a, this.y + b, c)
};
CCamera.prototype.Set = function (a, b, c, d) {
var a = -(a - 400),
b = -(b - 300),
e = (a - this.bg_offset_x) * this.bg_aspect_ratio_x,
f = (b - this.bg_offset_y) * this.bg_aspect_ratio_y;
c ? ($("#camera").stop(!0).animate({
left: a,
top: b
}, d), $("#map_bg").stop(!0).animate({
left: e,
top: f
}, d)) : ($("#camera").stop(!0).css({
left: a,
top: b
}), $("#map_bg").stop(!0).css({
left: e,
top: f
}))
};
function CPlayer(a, b, c) {
if (void 0 == a || void 0 == a.name || void 0 == a.n) throw Error("CPlayer - bad arguments", a);
this.player = a;
this.x = a.x;
this.y = a.y;
this.body = void 0;
this.look = a.look;
this.ang = a.ang;
this.minang = a.minang;
this.maxang = a.maxang;
this.team = a.team;
this.hp = this.maxhp = a.hp;
this.shield = this.maxshield = a.shield;
this.rank = a.rank;
this.mobile = a.mobile;
this.guild = a.guild;
this.delay = this.delay_before = a.delay ? a.delay : 0;
this.lastturn = a.lastturn;
this.gender = a.gender;
this.mobile = a.mobile;
this.aim = [new Vector(a.aim[0], a.aim[1]), new Vector(a.aim[2], a.aim[3]), new Vector(a.aim[4], a.aim[5])];
this.is_me = b;
this.user_id = a.user_id;
this.name = a.name;
this.player_number_in_game = a.n;
this.div_id = "#Player" + this.player_number_in_game;
this.is_alive = !0;
this.last_sent_look = this.last_sent_y = this.last_sent_x = void 0;
this.ground = c;
debug && console.log("[CPlayer] Create Player:", this.name, a);
this.Init()
}
CPlayer.prototype.Shoot = function (a, b, c) {
SendPlayerShoot(this.x, this.y, this.body, this.look, this.ang, a, b, c);
a = (this.look == PLAYER_LOOK_LEFT ? 180 - this.ang : this.ang) - this.body;
90 < a && (a = 180 - a);
0 > a ? ($("#LastAngleDigit-").show(), a *= -1) : $("#LastAngleDigit-").hide();
$("#LastAngleDigit1").removeClass().addClass("LastAngleDigit LastAngleDigit" + Math.floor(a / 10));
$("#LastAngleDigit2").removeClass().addClass("LastAngleDigit LastAngleDigit" + a % 10)
};
CPlayer.prototype.PassTurn = function (a) {
SendPlayerPassTurn(this.x, this.y, this.body, this.look, this.ang, a)
};
CPlayer.prototype.SendPosUpdate = function () {
if (this.x != this.last_sent_x || this.y != this.last_sent_y || this.look != this.last_sent_look) SendPlayerMove(this.x, this.y, this.body, this.look, this.ang), this.last_sent_x = this.x, this.last_sent_y = this.y, this.last_sent_look = this.look
};
CPlayer.prototype.UseItem = function (a) {
SendPlayerUseItem(a)
};
CPlayer.prototype.UpdateHpShieldGraphic = function () {
var a = this.maxhp + this.maxshield,
b = 76 * this.hp / a,
a = 76 * this.shield / a;
$(this.div_id + " .PlayerHPBox .PlayerHP").css({
backgroundColor: "#63b64a",
width: b
});
$(this.div_id + " .PlayerHPBox .PlayerShield").css({
width: a,
left: b
})
};
CPlayer.prototype.Init = function () {
var a = $(this.div_id),
b = $(this.div_id + " .PlayerMobile");
a.show().css("opacity", "1.0");
a.css({
left: this.x,
top: this.y
});
$(this.div_id + " .PlayerName").html(this.name).removeClass("ColorTeamA").removeClass("ColorTeamB").addClass("ColorTeam" + ("A" == this.team ? "A" : "B"));
$(this.div_id + " .PlayerRank").removeClass().addClass("PlayerRank rank rank" + this.rank);
this.UpdateHpShieldGraphic();
this.is_me ? $(this.div_id + " .PlayerAimCircle").show() : $(this.div_id + " .PlayerAimCircle").hide();
$(this.div_id + " .PlayerMobile").removeClass().addClass("PlayerMobile mobile" + this.mobile);
"f" == this.gender && $(this.div_id + " .PlayerMobile").addClass("female");
this.ani_image = new CPlayerGraphic(this.div_id + " .PlayerMobile", this.mobile, this.player.avatars[0], this.player.avatars[1], this.player.avatars[2], this.player.avatars[3], !1);
this.ChangedShot(GetSelectedShotType());
$(this.div_id + " .PlayerAimLimitMin").css("rotate", 180 + this.minang + "deg");
$(this.div_id + " .PlayerAimLimitMax").css("rotate", 180 + this.maxang + "deg");
this.Fall();
b.css({
scaleX: 1,
scaleY: 1
});
this.ChangeAngleTo(this.ang, !0);
if (MOBILE[this.mobile]) {
b = [];
for (a = 0; a < MOBILE[this.mobile].explodes.length; a++) {
var c = EXPLODE[MOBILE[this.mobile].explodes[a]];
c && c.file && b.push("/static/images/explodes/" + c.file)
}
for (a = 0; a < MOBILE[this.mobile].bullets.length; a++)(c = BULLET[MOBILE[this.mobile].bullets[a]]) && c.file && b.push("/static/images/bullets/" + c.file);
preloadImages(b)
}
};
CPlayer.prototype.Remove = function () {
this.ani_image.remove()
};
CPlayer.prototype.Walk = function (a) {
this.Look(a);
var b = this.body,
a = this.ground.GetPosForWalking(this.x, this.y, a);
if (a.fall_and_die) this.x = a.x, this.y = a.y, b = 0, $(this.div_id).css({
left: a.x
}).animate({
top: a.y
}, 2E3), debug && console.log("Player fall and died"), this.SendPosUpdate(), g_game.PassTurn();
else {
if (a.stuck) return !1;
this.x = a.x;
this.y = a.y;
$(this.div_id).css({
left: a.x,
top: a.y
});
b = this.ground.GetAngle(a.x, a.y)
}
a = $(this.div_id + " .PlayerMobile");
this.body != b && (this.body = b, this.UpdateGuiAngle(), 0 == a.queue("fx") ? a.css({
rotate: this.body + "deg",
scaleX: this.look == PLAYER_LOOK_LEFT ? 1 : -1
}) : a.css({
rotate: this.body + "deg"
}));
return !0
};
CPlayer.prototype.Look = function (a) {
this.look != a && (a == PLAYER_LOOK_LEFT ? this.look = PLAYER_LOOK_LEFT : a == PLAYER_LOOK_RIGHT && (this.look = PLAYER_LOOK_RIGHT), a = $(this.div_id + " .PlayerMobile"), a.stop(), a.animate({
scaleX: this.look == PLAYER_LOOK_LEFT ? 1 : -1
}, 300), this.UpdateGuiAngle())
};
CPlayer.prototype.ChangeAngleTo = function (a, b) {
a > this.maxang && (a = this.maxang);
a < this.minang && (a = this.minang);
if (this.ang != a || b) this.ang = a, $(this.div_id + " .PlayerAngleMarker").css("rotate", 180 + this.ang + "deg"), this.UpdateGuiAngle()
};
CPlayer.prototype.UpdateGuiAngle = function () {
if (this.is_me) {
var a = (this.look == PLAYER_LOOK_LEFT ? 180 - this.ang : this.ang) - this.body;
90 < a && (a = 180 - a);
$("#UIAngleDigit1").removeClass();
0 > a && ($("#UIAngleDigit1").addClass("AngleDigit-"), a *= -1);
$("#UIAngleDigit2").removeClass().addClass("AngleDigit" + Math.floor(a / 10));
$("#UIAngleDigit3").removeClass().addClass("AngleDigit" + a % 10)
}
};
CPlayer.prototype.Fall = function () {
if (this.is_alive) {
var a = this.ground.GetUnder(this.x, this.y);
if (void 0 == a) {
debug && console.log("Player fall and die");
this.y = 2E3;
var b = this;
$(this.div_id).animate({
top: this.y
}, 4E3, "linear", function () {
$(b).hide()
});
this.is_alive = !1
} else if (a != this.y && (this.y = a, $(this.div_id).animate({
top: this.y
}, 500)), a = this.ground.GetAngle(this.x, this.y), a != this.body) this.body = a, $(this.div_id + " .PlayerMobile").css("rotate", this.body + "deg"), this.UpdateGuiAngle()
}
};
CPlayer.prototype.MoveTo = function (a, b, c, d) {
if (this.is_alive) if (void 0 != c && this.look != c && (this.look = c, $(this.div_id + " .PlayerMobile").css("scaleX", c == PLAYER_LOOK_LEFT ? 1 : -1)), this.x = a, this.y = b, d) $(this.div_id).stop(!0).css({
left: a,
top: b
}), this.Fall();
else {
var e = this;
$(this.div_id).stop(!0).animate({
left: a,
top: b
}, 1E3, function () {
e.Fall()
})
}
};
CPlayer.prototype.ChangeHPShield = function (a, b) {
void 0 == b && (b = 0);
var c = this.hp - a + (this.shield - b);
this.hp = a;
this.shield = b;
var d = this.maxhp + this.maxshield,
e = 76 * this.hp / d;
0 < this.maxshield && (d = 76 * this.shield / d, $(this.div_id + " .PlayerHPBox .PlayerShield").css({
width: d
}));
if (0 < c) {
new CDamageEffect(this.x - 30, this.y - 30, - c, this.player_number_in_game, g_game.turn_number);
0 > this.hp && (this.is_alive = !1, debug && console.log("player " + this.name + " died by damage"));
var c = this.hp / this.maxhp,
f = this;
$(this.div_id + " .PlayerHPBox .PlayerHP").css({
backgroundColor: 0.3 >= c ? "#c61000" : "#63b64a"
}).animate({
width: e
}, g_graphics_high ? 400 : 0, function () {
f.is_alive || $(f.div_id).animate({
opacity: 0
}, 1500, function () {
$(f.div_id).hide()
})
})
} else new CDamageEffect(this.x - 30, this.y - 60, - c, this.player_number_in_game, g_game.turn_number)
};
CPlayer.prototype.ChangeAliveTo = function (a) {
if (!0 == this.is_alive && !1 == a) {
debug && console.log("[CPlayer.ChangeAliveTo] player", this.name, "died");
this.is_alive = !1;
var b = $(this.div_id);
b.animate({
opacity: 0
}, 1500, "linear", function () {
b.hide()
})
}
};
CPlayer.prototype.ChangeMyTurn = function (a) {
if (a) {
var b = $("#Player" + this.player_number_in_game + " .Turn");
g_graphics_high ? b.css({
bottom: 100,
"background-position-y": -159,
height: 29
}).slideDown("slow") : b.css({
bottom: 100,
"background-position-y": -159,
height: 29
}).show();
var c;
(c = function () {
b.animate({
"background-position-y": -159
}, 0).animate({
bottom: 70
}, 1E3).animate({
"background-position-y": -189
}, 0).animate({
bottom: 100
}, 1E3, c)
})()
} else g_graphics_high ? $(".Turn").stop(!0).css("height", 29).slideUp("slow").hide() : $(".Turn").stop(!0).css("height", 29).hide()
};
CPlayer.prototype.ChangeDelay = function (a, b) {
a != this.delay && (this.delay_before = this.delay, this.delay = a);
this.lastturn = b
};
CPlayer.prototype.ChangedShot = function (a) {
a = this.aim[a];
$(this.div_id + " .PlayerAimCircle").css({
left: -a.x,
top: a.y
})
};
CPlayer.prototype.TeleportTo = function (a, b) {
this.MoveTo(a, b)
};
function RoomGUI() {
$("#roomChat").tinyscrollbar({
size: 58
});
$("#roomButtonBack").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendRoomLeave()
});
$("#roomButtonReady").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
CheckBrowserAbilities(!0) && (AutoReadyStop(), SendRoomChangeReady(!g_myPlayerInfo.is_ready))
});
$("#roomButtonStart").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
CheckBrowserAbilities(!0) && SendRoomGameStart()
});
$("#roomButtonChangeTeam").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendRoomChangeTeam("A" == g_myPlayerInfo.team ? "B" : "A")
});
$("#roomButtonMobile").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendRoomChangeMobile((g_myPlayerInfo.mobile + 1) % NUMBER_OF_MOBILES)
});
$(".playerInRoom").click(function () {
AddToChatInput($(this).children(".roomPlayerName").html())
});
$("#itemDual").click(function () {
RoomSelectItem(ITEM_DUAL)
});
$("#itemTeleport").click(function () {
RoomSelectItem(ITEM_TELEPORT)
});
$("#itemSlot0").click(function () {
RoomRemoveItemFromSlot(0)
});
$("#itemSlot1").click(function () {
RoomRemoveItemFromSlot(1)
});
$("#itemSlot2").click(function () {
RoomRemoveItemFromSlot(2)
});
$("#itemSlot3").click(function () {
RoomRemoveItemFromSlot(3)
});
$("#itemSlot4").click(function () {
RoomRemoveItemFromSlot(4)
});
$("#itemSlot5").click(function () {
RoomRemoveItemFromSlot(5)
});
$("#roomInput").bind("keyup", function (a) {
13 == a.which && "" != this.value && (a = this.value, this.value = "", ZotataPlayChat(a))
});
$("#room_change_title_button").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_myPlayerInfo.is_master ? (FadeInDialog("dialog_change_title_div"), $("#room_change_title_input").focus()) : OpenDialog("Not Room Master", "Sorry, only the room master can change the room title.", 1)
});
$("#room_options_button").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_myPlayerInfo.is_master ? (FixRoomOptionsDialog(), FadeInDialog("dialog_room_options")) : OpenDialog("Not Room Master", "Sorry, only the room master can change the room options.", 1)
});
$("#dialog_change_title_cancel").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
ExplodeDialog("dialog_change_title_div")
});
$("#dialog_change_title_ok").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendRoomChangeTitle($("#room_change_title_input").val());
ExplodeDialog("dialog_change_title_div")
});
$(".roomBotSelect").click(function (a) {
a.stopPropagation();
$("#select_bot_div").is(":visible") ? $("#select_bot_div").slideUp(g_graphics_high ? "slow" : 0) : (AudioPlay(AUDIO_BUTTON_SELECT2), a = Number($(this).parent().attr("id")[12]), OpenBotSelectDialog(a))
});
$(".roomBotRemove").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
a.stopPropagation();
a = Number($(this).parent().attr("id")[12]);
SendSelectBot(a, - 1)
});
$(".add_bot_button").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
a.stopPropagation();
a = Number($(this).attr("id")[12]);
OpenBotSelectDialog(a)
});
$("body").click(function () {
$("#select_bot_div").is(":visible") && $("#select_bot_div").slideUp(g_graphics_high ? "slow" : 0)
});
$(".roomPlayerInfo").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
InfoDialogOpenFor($(this).attr("user_id"));
a.stopPropagation()
});
$("#infoClose").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
ExplodeDialog("playerInfoDialog");
a.stopPropagation()
});
$("#infoAddBuddy").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
SendAddFriendRequest($(this).attr("user_id"));
a.stopPropagation()
});
$("#infoChat").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
ChatDialogCreate($(this).attr("user_id"), $("#infoName").html());
a.stopPropagation()
});
$("#room_item_buddy_tab").click(function (a) {
AudioPlay(AUDIO_BUTTON_SELECT2);
a.stopPropagation();
a = $("#room_item_buddy_tab");
a.hasClass("buddy") ? (a.removeClass("buddy"), $("#friendsList").hide(), $("#friendsListExtra").hide()) : (a.addClass("buddy"), $("#friendsList").show().tinyscrollbar_update("top"), $("#friendsListExtra").show())
});
RoomOptionsDialogGUI()
}
function RoomOptionsPressedOK() {
var a, b;
a = $("#RoomOptionsPlayers");
a = a.hasClass("players1v1") ? 2 : a.hasClass("players2v2") ? 4 : a.hasClass("players3v3") ? 6 : a.hasClass("players1vB") ? 1 : a.hasClass("players2vB") ? 2 : a.hasClass("players3vB") ? 3 : a.hasClass("players4vB") ? 4 : 8;
b = $("#RoomOptionsMode").hasClass("gameModeNormal") ? GAME_MODE_NORMAL : GAME_MODE_BOSS;
var c = Number($("#RoomOptionsMapImage").attr("class").substring(8)),
d = "ON" == $("#RoomOptionsAvatars").html() ? 1 : 0,
e = Number($("#RoomOptionsWind").html());
SendRoomOptions(a, b, c, d, e)
}
function FixRoomOptionsDialog() {
if ($("#RoomOptionsMode").hasClass("gameModeBoss")) {
$("#RoomOptionsAvatarsPrev").hide();
$("#RoomOptionsAvatarsNext").hide();
$("#RoomOptionsAvatars").html("ON").css("color", "#00ff00");
$("#RoomOptionsAvatarsGP").html("");
$("#RoomOptionsMapPrev").hide();
$("#RoomOptionsMapNext").hide();
var a = MAP_RANDOM;
$("#RoomOptionsMapImage").removeClass().addClass("room_map" + a);
$("#RoomOptionsMapName").html(GetMapName(a))
} else $("#RoomOptionsAvatarsPrev").show(), $("#RoomOptionsAvatarsNext").show(), $("#RoomOptionsMapPrev").show(), $("#RoomOptionsMapNext").show()
}
function RoomOptionsDialogGUI() {
$("#RoomOptionsCancel").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
g_graphics_high ? $("#dialog_room_options").effect("explode") : $("#dialog_room_options").hide()
});
$("#RoomOptionsOK").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
RoomOptionsPressedOK();
g_graphics_high ? $("#dialog_room_options").effect("explode") : $("#dialog_room_options").hide()
});
$("#RoomOptionsNumPlayersPrev").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsPlayers"),
b;
b = $("#RoomOptionsMode").hasClass("gameModeNormal") ? a.hasClass("players1v1") ? "players4v4" : a.hasClass("players2v2") ? "players1v1" : a.hasClass("players3v3") ? "players2v2" : "players3v3" : a.hasClass("players1vB") ? "players4vB" : a.hasClass("players2vB") ? "players1vB" : a.hasClass("players3vB") ? "players2vB" : "players3vB";
a.removeClass().addClass(b)
});
$("#RoomOptionsNumPlayersNext").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsPlayers"),
b;
b = $("#RoomOptionsMode").hasClass("gameModeNormal") ? a.hasClass("players1v1") ? "players2v2" : a.hasClass("players2v2") ? "players3v3" : a.hasClass("players3v3") ? "players4v4" : "players1v1" : a.hasClass("players1vB") ? "players2vB" : a.hasClass("players2vB") ? "players3vB" : a.hasClass("players3vB") ? "players4vB" : "players1vB";
a.removeClass().addClass(b)
});
$("#RoomOptionsModePrev, #RoomOptionsModeNext").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsMode"),
b, c = $("#RoomOptionsPlayers"),
d;
a.hasClass("gameModeNormal") ? (b = "gameModeBoss", d = c.hasClass("players1v1") ? "players1vB" : c.hasClass("players2v2") ? "players2vB" : c.hasClass("players3v3") ? "players3vB" : "players4vB") : (b = "gameModeNormal", d = c.hasClass("players1vB") ? "players1v1" : c.hasClass("players2vB") ? "players2v2" : c.hasClass("players3vB") ? "players3v3" : "players4v4", "ON" == $("#RoomOptionsAvatars").html() && $("#RoomOptionsAvatarsGP").html("+10% GP"));
a.removeClass().addClass(b);
c.removeClass().addClass(d);
$("#RoomOptionsModeIcon").removeClass().addClass("iconMode" + b.slice(8));
FixRoomOptionsDialog()
});
$("#RoomOptionsMapPrev").click(function () {
if (!$("#RoomOptionsMode").hasClass("gameModeBoss")) {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsMapImage"),
b = Number(a.attr("class").substring(8)) - 1;
b < MAP_RANDOM && (b = LAST_SELECTABLE_MAP);
a.removeClass().addClass("room_map" + b);
$("#RoomOptionsMapName").html(GetMapName(b))
}
});
$("#RoomOptionsMapNext").click(function () {
if (!$("#RoomOptionsMode").hasClass("gameModeBoss")) {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsMapImage"),
b = Number(a.attr("class").substring(8)) + 1;
b > LAST_SELECTABLE_MAP && (b = MAP_RANDOM);
a.removeClass().addClass("room_map" + b);
$("#RoomOptionsMapName").html(GetMapName(b))
}
});
$("#RoomOptionsAvatarsPrev, #RoomOptionsAvatarsNext").click(function () {
if (!$("#RoomOptionsMode").hasClass("gameModeBoss")) {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsAvatars");
"OFF" == a.html() ? (a.html("ON").css("color", "#00ff00"), $("#RoomOptionsAvatarsGP").html("+10% GP")) : (a.html("OFF").css("color", "#ff0000"), $("#RoomOptionsAvatarsGP").html(""))
}
});
$("#RoomOptionsWindNext").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsWind"),
b = Number(a.html()),
c;
0 == b ? (b = 12, c = 5) : 12 == b ? (b = 26, c = 10) : 26 == b ? (b = 50, c = 15) : c = b = 0;
a.html(b).css("color", 0 == b ? "#ff0000" : "#00ff00");
$("#RoomOptionsWindGP").html(0 == c ? "" : "+" + c + "% GP")
});
$("#RoomOptionsWindPrev").click(function () {
AudioPlay(AUDIO_BUTTON_SELECT2);
var a = $("#RoomOptionsWind"),
b = Number(a.html()),
c;
0 == b ? (b = 50, c = 15) : 50 == b ? (b = 26, c = 10) : 26 == b ? (b = 12, c = 5) : c = b = 0;
a.html(b).css("color", 0 == b ? "#ff0000" : "#00ff00");
$("#RoomOptionsWindGP").html(0 == c ? "" : "+" + c + "% GP")
})
}
function InfoDialogOpenFor(a) {
$("#infoAddBuddy").attr("user_id", a);
$("#infoChat").attr("user_id", a);
$("#infoName").html("");
$("#infoRanking").html("");
$("#infoGP").html("");
$("#infoDamage").html("");
$("#infoWinRate").html("");
$("#infoGender").html("");
$("#infoImage").attr("src", "");
$("#infoRank").removeClass().addClass("rank rank25");
$("#infoLoading").show();
FadeInDialog("playerInfoDialog");
SendGetPlayerInfo(a)
}
var INFO_INDEX_USER_ID = 0,
INFO_INDEX_GAME_ID = 1,
INFO_INDEX_RANKING = 2,
INFO_INDEX_RANK = 3,
INFO_INDEX_GP = 4,
INFO_INDEX_GENDER = 5,
INFO_INDEX_FACEBOOK_ID = 6,
INFO_INDEX_DAMAGE = 7,
INFO_INDEX_WINRATE = 8;
function InfoDialogReceiveInfo(a) {
var b = a[INFO_INDEX_GENDER];
$("#infoLoading").hide();
$("#infoName").html(a[INFO_INDEX_GAME_ID]);
$("#infoRanking").html(a[INFO_INDEX_RANKING]);
$("#infoGP").html(a[INFO_INDEX_GP]);
$("#infoDamage").html(a[INFO_INDEX_DAMAGE]);
$("#infoWinRate").html(a[INFO_INDEX_WINRATE]);
$("#infoGender").html(b == GENDER_MALE ? "Male" : "Female");
$("#infoRank").removeClass().addClass("rank rank" + a[INFO_INDEX_RANK]);
a = a[INFO_INDEX_FACEBOOK_ID];
a = "" == a ? b == GENDER_FEMALE ? "/static/images/fb_girl.gif" : "/static/images/fb_boy.gif" : "http://graph.facebook.com/" + a + "/picture?type=large";
$("#infoImage").attr("src", a)
}
function OpenBotSelectDialog(a) {
var b = g_myPlayerInfo.unlock;
g_bot_select_for_slot = a;
for (var c = $("#select_bot_div"), d = "", e, f, h, g, j, i, k, l = 0; l < COMPUTER_PLAYER.length; l++) k = COMPUTER_PLAYER[l], l <= b ? (e = k.rank, f = k.name, h = k.gp, g = k.atk, j = k.def, i = k.life, k = k.dig) : (e = 25, f = "???", h = k.gp, g = j = i = k = "??"), d += '<div class="bs_line" id=' + l + '> <div class="bs_rank rank rank' + e + '"></div> <div class="bs_name">' + f + '</div> <div class="bs_gp">GP:' + h + "</div>", d += '<div class="bs_atk_icon stat_icon stat_icon_atk"></div> <div class="bs_atk">' + g + '</div><div class="bs_def_icon stat_icon stat_icon_def"></div> <div class="bs_def">' + j + '</div><div class="bs_life_icon stat_icon stat_icon_life"></div><div class="bs_life">' + i + '</div><div class="bs_dig_icon stat_icon stat_icon_dig"></div> <div class="bs_dig">' + k + "</div></div>";
c.html(d);
$(".bs_line").click(function () {
var b = $(this).attr("id");
SendSelectBot(a, b);
$("#select_bot_div").slideUp(g_graphics_high ? "slow" : 0);
AudioPlay(AUDIO_BUTTON_SELECT2)
});
c.slideDown(g_graphics_high ? "slow" : 0)
}
function AutoReadyStartTimer() {
CheckBrowserAbilities(!1) && (AutoReadyStop(), g_auto_ready_timer = setTimeout(function () {
!$("#roomButtonStart").is(":visible") && (!1 == g_myPlayerInfo.is_ready && !g_game) && SendRoomChangeReady(!0)
}, 5E3))
}
function AutoReadyStop() {
g_auto_ready_timer = clearTimeout(g_auto_ready_timer)
}
var g_room_timer_interval;
function MasterTimerTick() {
var a = Number($("#room_timer_text").html());
0 == a ? g_room_timer_interval = clearInterval(g_room_timer_interval) : $("#room_timer_text").html(a - 1)
}
function MasterTimer(a) {
0 == a ? ($("#room_timer").fadeOut("slow"), $("#room_timer_text").html("0")) : ($("#room_timer_text").html(a), $("#room_timer").fadeIn("slow"), g_room_timer_interval = setInterval("MasterTimerTick()", 1E3))
}
function RoomUpdate(a) {
$("#roomNumber").html(a.number);
$("#room_change_title_input").val(a.title);
var b = a.title;
a.pass && (b += " (" + a.pass + ")");
$("#roomTitle").html(b);
b = a.mode == GAME_MODE_NORMAL ? "gameModeNormal" : "gameModeBoss";
$("#room_game_mode").removeClass().addClass(b);
$("#RoomOptionsMode").removeClass().addClass(b);
var c;
a.mode == GAME_MODE_NORMAL ? (2 == a.max_players ? c = "players1v1" : 4 == a.max_players ? c = "players2v2" : 6 == a.max_players ? c = "players3v3" : 8 == a.max_players && (c = "players4v4"), $("#roomButtonChangeTeam").show()) : (1 == a.max_players ? c = "players1vB" : 2 == a.max_players ? c = "players2vB" : 3 == a.max_players ? c = "players3vB" : 4 == a.max_players && (c = "players4vB"), $("#roomButtonChangeTeam").hide());
$("#room_players").removeClass().addClass(c);
$("#RoomOptionsPlayers").removeClass().addClass(c);
$("#room_map").removeClass().addClass("room_map" + a.map);
$("#RoomOptionsMapImage").removeClass().addClass("room_map" + a.map);
$("#RoomOptionsMapName").html(GetMapName(a.map));
$("#room_avatars").css("color", a.ava ? "#00ff00" : "#ff0000").html(a.ava ? "ON" : "OFF");
$("#RoomOptionsAvatars").css("color", a.ava ? "#00ff00" : "#ff0000").html(a.ava ? "ON" : "OFF");
$("#RoomOptionsAvatarsGP").html(a.mode != GAME_MODE_BOSS && a.ava ? "+10% GP" : "");
$("#room_wind").css("color", 0 == a.wind ? "#ff0000" : "#00ff00").html(a.wind);
$("#RoomOptionsWind").css("color", 0 == a.wind ? "#ff0000" : "#00ff00").html(a.wind);
c = 12 == a.wind ? 5 : 26 == a.wind ? 10 : 50 == a.wind ? 15 : 0;
$("#RoomOptionsWindGP").html(c ? "+" + c + "% GP" : "");
$("#gp_rate").html(0 < a.rate ? "+" + a.rate + "%" : "")
}
var SIDE_A = 0,
SIDE_B = 1,
g_room_slot = [
[],
[]
],
g_room_slot_graphic = [
[],
[]
];
function RoomRemoveAnimations() {
for (var a = SIDE_A; a <= SIDE_B; a++) for (var b = 0; 3 >= b; b++) g_room_slot_graphic[a][b] && g_room_slot_graphic[a][b].remove();
g_room_slot_graphic = [
[],
[]
]
}
function RoomUpdateWorthGP(a) {
a && ($("#gp_team_a").html("<u>Team A</u><br>" + a[0] + " GP<br>" + a[2] + "G"), $("#gp_team_b").html("<u>Team B</u><br>" + a[1] + " GP<br>" + a[3] + "G"))
}
function RoomUpdatePlayers(a) {
var b = 0,
c = 0,
d, e, f = 0;
g_room_slot = [
[],
[]
];
for (var h = 0; h < a.length; h++) g = a[h], "A" == g[PLAYER_INDEX_TEAM] ? (e = b, b++, d = SIDE_A) : (e = c, c++, d = SIDE_B), g_room_slot[d][e] = g;
for (d = SIDE_A; d <= SIDE_B; d++) for (e = 0; 3 >= e; e++) if (a = "#playerInRoom" + e + (d == SIDE_A ? "a" : "b"), b = $(a), void 0 == g_room_slot[d][e]) b.hide();
else {
var g = g_room_slot[d][e],
c = g_room_slot_graphic[d][e];
b.children(".roomPlayerRank").removeClass().addClass("roomPlayerRank rank rank" + g[PLAYER_INDEX_RANK]);
b.children(".roomPlayerName").html(g[PLAYER_INDEX_GAME_ID]);
void 0 == c ? g_room_slot_graphic[d][e] = new CPlayerGraphic(a + " .roomPlayerMobile", g[PLAYER_INDEX_MOBILE], g[PLAYER_INDEX_AVATARS][0], g[PLAYER_INDEX_AVATARS][1], g[PLAYER_INDEX_AVATARS][2], g[PLAYER_INDEX_AVATARS][3], "A" == g[PLAYER_INDEX_TEAM]) : (c.change_mobile(g[PLAYER_INDEX_MOBILE]), c.change(g[PLAYER_INDEX_AVATARS][0], AVATAR_TYPE_HEAD), c.change(g[PLAYER_INDEX_AVATARS][1], AVATAR_TYPE_BODY), c.change(g[PLAYER_INDEX_AVATARS][2], AVATAR_TYPE_EYES), c.change(g[PLAYER_INDEX_AVATARS][3], AVATAR_TYPE_FLAG));
g[PLAYER_INDEX_GAME_ID] == g_myPlayerInfo.game_id ? (b.children(".roomPlayerMyself").show(), g_myPlayerInfo.is_ready = g[PLAYER_INDEX_IS_READY], g_myPlayerInfo.team = g[PLAYER_INDEX_TEAM], g_myPlayerInfo.mobile = g[PLAYER_INDEX_MOBILE], g_myPlayerInfo.is_master = g[PLAYER_INDEX_IS_MASTER], g[PLAYER_INDEX_IS_MASTER] ? ($("#roomButtonReady").hide(), $("#roomButtonStart").show()) : ($("#roomButtonStart").hide(), $("#roomButtonReady").show()), $("#mobile_info").removeClass().addClass("mobile_info" + g_myPlayerInfo.mobile)) : b.children(".roomPlayerMyself").hide();
g[PLAYER_INDEX_IS_MASTER] ? (b.children(".roomPlayerNotReady").hide(), b.children(".roomPlayerReady").hide(), b.children(".roomPlayerMaster").show()) : (b.children(".roomPlayerMaster").hide(), g[PLAYER_INDEX_IS_READY] ? (b.children(".roomPlayerNotReady").hide(), b.children(".roomPlayerReady").show()) : (b.children(".roomPlayerNotReady").show(), b.children(".roomPlayerReady").hide()));
g[PLAYER_INDEX_IS_BOT] ? (g_myPlayerInfo.is_master && b.children(".roomBotSelect").show(), b.children(".roomPlayerInfo").hide(), d == SIDE_B && f++) : (b.children(".roomBotSelect").hide(), b.children(".roomPlayerInfo").attr("user_id", g[PLAYER_INDEX_USER_ID]).show());
b.show()
}
$("#room_game_mode").hasClass("gameModeNormal") || !g_myPlayerInfo.is_master ? ($(".roomBotSelect").hide(), $(".roomBotRemove").hide(), $(".add_bot_button").hide()) : ($(".add_bot_button").hide(), 0 < g_myPlayerInfo.unlock && $("#add_bot_slot" + f).show(), 2 <= f ? ($(".roomBotRemove").show(), $(".roomBotSelect").hide()) : ($(".roomBotRemove").hide(), $(".roomBotSelect").show()))
}
function CheckBrowserAbilities(a) {
return void 0 == document.getElementById("ground_canvas").getContext ? (a && OpenDialog("Old Browser", 'Your browser is too old.<br>It does not have required features to run the game.<br><br>Please change to <a href="https://www.google.com/chrome/">Chrome</a> or <a href="http://www.mozilla.org/en-US/firefox/new/">Firefox</a> or update to <a href="http://windows.microsoft.com/en-US/internet-explorer/downloads/ie">Internet Explorer 9</a>', 1), !1) : !0
}
function RoomSelectItem(a) {
var b = ITEM_SIZE[a],
c;
for (c = 0; c <= 6 - b && !(g_items[c] == ITEM_NONE && (1 == b || g_items[c + 1] == ITEM_NONE)); c++) g_items[c] != ITEM_NONE && 1 < ITEM_SIZE[g_items[c]] && c++;
c <= 6 - b && (g_items[c] = a, $("#itemSlot" + c).addClass(ITEM_CLASS[a]))
}
function RoomRemoveItemFromSlot(a) {
g_items[a] != ITEM_NONE && (g_items[a] = ITEM_NONE, $("#itemSlot" + a).removeClass())
}
function GameSetItems(a) {
for (var b = 0; b < a.length; b++) {
var c = $("#gameItemSlot" + b);
c.removeClass();
a[b] != ITEM_NONE && (c.addClass("item").addClass(ITEM_CLASS[a[b]]), 2 == ITEM_SIZE[a[b]] && c.addClass("big"))
}
};
function RankingGUI() {
$("#ranking_btn_type1").click(function () {
LoadRanking(1)
});
$("#ranking_btn_type2").click(function () {
LoadRanking(2)
});
$("#ranking_btn_type3").click(function () {
LoadRanking(3)
});
$("#ranking_btn_type4").click(function () {
LoadRanking(4)
});
$("#ranking_btn_ranks").click(function () {
LoadRanks()
});
$("#ranking_btn_guilds").click(function () {
LoadGuilds()
});
$("#ranking_btn_howto").click(function () {
HowToPlay()
})
}
function LoadRanks() {
$.get("/ranks", {}, function (a) {
a = JSON.parse(a);
if (4 != a.length) console.error("bad ranks data", a);
else {
var b = a[1].split(","),
c = a[2].split(","),
d = a[3].split(","),
e = b.length;
24 < e && (e = 24);
for (var a = '<br><div style="text-align: center; font-weight: bold;">Last Update:</div><div style="text-align: center;">' + a[0] + '</div><br><table width=100%><tr style="font-weight: bold;"><td><strong>Rank</strong></td><td style="text-align: center;"><b>GP</b></td><td style="text-align: center;"><b>Rule</b><td style="text-align: center;"><b># Players</b></td></tr>\n', f = e - 1; 0 <= f; f--) {
var h = "-";
f == e - 1 ? h = "Top 1" : f == e - 2 ? h = "Next 4" : f == e - 3 ? h = "Next 16" : f <= e - 4 && 0 <= f - 12 ? h = d[f - 12] + "%" : -1 == f - 12 && (h = "100%");
a += '<tr><td><div class="rank rank' + f + '"></div></td><td style="text-align: center;">' + b[f] + '</td><td style="text-align: center;">' + h + '</td><td style="text-align: center;">' + c[f] + "</td></tr>\n"
}
$("#ranking_data").html(a + '</table><br><div style="width:200px">- % applied to all players with at least 6900 GP (except the first 21 players).<br><br>- Ranking is updated every hour at about XX:10.<br><br>- Refresh (F5) to see your new rank in game.</div>')
}
})
}
function LoadGuilds() {
$("#ranking_data").html("Soon...")
}
function HowToPlay() {
$.get("/how_to_play", {}, function (a) {
$("#ranking_data").html(a)
})
}
function LoadRanking(a) {
g_is_ranking_loading || (3 == a ? g_ranking_offset -= 30 : 4 == a && (g_ranking_offset += 30), g_is_ranking_loading = !0, $.get("/ranking", {
type: a,
offset: g_ranking_offset
}, function (a) {
g_is_ranking_loading = !1;
g_is_ranking_loaded = !0;
var a = JSON.parse(a),
c = a.length;
if (3 < c) {
for (var d = a[0], e = a[1], f = a[2], h = a[3], g = "<table>", j = 0, i = 4; i < c; i += 5) {
var k = a[i],
l = a[i + 1],
m = a[i + 2],
n = a[i + 3],
o = a[i + 4],
g = g + "<tr";
j == f && (g += ' class="ranking_me"');
g += "><td>" + l + '</td><td><div class="rank rank' + m + '"></div></td><td><div class="ranking_name" user_id="' + k + '">' + n + "</div></td><td>" + o + "</td></tr>";
j += 1
}
g += "</table>";
$("#ranking_title2").html(d + " Players");
$(".ranking_btn").removeClass("selected");
$("#ranking_btn_type" + e).addClass("selected");
g_ranking_offset = h;
$("#ranking_data").html(g)
}
}))
}
var RANKING_SIZE = 232,
g_previous_w, g_previous_h, g_previous_orientation, g_aspect_ratio = 1,
g_no_aspect_left = 0,
g_no_aspect_top = 0;
function Resize() {
var a = window.innerWidth,
b = window.innerHeight;
if (!(a == g_previous_w && b == g_previous_h)) {
var c = g_is_show_ranking && a > RANKING_SIZE,
d, e, f;
a / 800 < b / 600 ? (d = a / 800, e = 0, f = Math.floor((b - 600 * d) / 2)) : (d = b / 600, e = Math.floor((a - 800 * d) / 2), f = 0);
c && e < RANKING_SIZE && (a -= RANKING_SIZE, a / 800 < b / 600 ? (d = a / 800, e = RANKING_SIZE, f = Math.floor((b - 600 * d) / 2)) : (d = b / 600, e = Math.floor((a + RANKING_SIZE - 800 * d) / 2), e < RANKING_SIZE && (e = RANKING_SIZE), f = 0));
$("#container").css({
scaleX: d,
scaleY: d,
left: e,
top: f
});
g_aspect_ratio = d;
g_no_aspect_left = e;
g_no_aspect_top = f;
c ? ($("#ranking_panel").show("slow"), g_is_ranking_loaded || LoadRanking(1)) : $("#ranking_panel").hide("slow")
}
}
function ResizeInit() {
window.addEventListener("resize", Resize, !1);
Resize()
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment