<undefined> 0 -1 -11 -1 <undefined> <undefined> 1 603 7 0 0 -1 2 self 0 0 1 network_set_config(network_config_connect_timeout, 5000); strict_init(working_directory + "\multitroid\dictionary.json"); queenHealthResetQueued = false; canSend = false; metroidCountChanged = false; itemChanged = false; metdeadChanged = false; eventChanged = false; mapChanged = false; itemstakenChanged = false; maxmissilesChanged = false; maxsmissilesChanged = false; maxpbombsChanged = false; maxhealthChanged = false; etanksChanged = false; mtanksChanged = false; stanksChanged = false; ptanksChanged = false; healthChanged = false; missilesChanged = false; smissilesChanged = false; pbombsChanged = false; connected = false; queenHealthWait = false; queenDead = false; sameRoom = false; queenHealth = global.mod_queenHstart + (global.mtanks * 10); phase = 0; maxpbombsTimer = 10; maxhealthTimer = 10; etanksTimer = 10; mtanksTimer = 10; stanksTimer = 10; ptanksTimer = 10; healthTimer = 10; missilesTimer = 10; smissilesTimer = 10; pbombsTimer = 10; teleportTimer = 180; disconnectTimer = 900; pingTimer = 90; currentItemsTimer = 120; resetTimer = -1; teleport = false; noName = false; syncedDifficulty = 1; elm = 0; state = undefined; seed = undefined; var type; type = network_socket_tcp; syncedDifficulty = global.difficulty; elm = oControl.mod_monstersextremecheck; ini_open(working_directory + "\multitroid\mod_settings.ini"); ipaddress = ini_read_string("ModSettings", "ipaddress", "127.0.0.1"); name = ini_read_string("ModSettings", "displayname", "name"); port = ini_read_real("ModSettings", "port", 64198); reactorsequence = string_lower(ini_read_string("ModSettings", "reactorsequence", "synced")); preferredcolor = string_lower(ini_read_string("ModSettings", "preferredcolor", "random")); showName = string_lower(ini_read_string("ModSettings", "showname", "enabled")); ini_close(); var nameLength = string_length(name); if(nameLength > 15){ name = string_copy(name, 1, 15); ini_open(working_directory + "\multitroid\mod_settings.ini"); ini_write_string("ModSettings", "displayname", name); ini_close(); } if(string_length(name) == 0){ noName = true; popup_text_ext("Set a name before connecting", 180); instance_destroy(); } socket = network_create_socket(type); isConnected = network_connect(socket, ipaddress, port); switch(preferredcolor){ case "green": preferredcolor = 1; break; case "red": preferredcolor = 2; break; case "blue": preferredcolor = 3; break; case "yellow": preferredcolor = 4; break; case "orange": preferredcolor = 5; break; case "purple": preferredcolor = 6; break; case "pink": preferredcolor = 7; break; case "white": preferredcolor = 8; break; case "canary": preferredcolor = 9; break; case "red orange": preferredcolor = 10; break; case "sky blue": preferredcolor = 11; break; case "gold": preferredcolor = 12; break; case "porsche": preferredcolor = 13; break; case "light purple": preferredcolor = 14; break; case "hot pink": preferredcolor = 15; break; case "retro green": preferredcolor = 16; break; case "random": preferredcolor = 17; break; } /* switch(showName){ case "disabled": showName = false; break; case "enabled": showName = true; break; } */ var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); global.queenhealthPrev = global.mod_queenHstart + (global.mtanks * 10);; global.queenphasePrev = 0; global.prevX = 0; global.prevY = 0; global.prevSprite = 0; global.prevIndex = 0; global.prevInvincible = 0; global.roomPrev = room; global.ping = 0; global.clientID = 0; global.packetID = 0; global.receivedPacketID = 0; global.onlineList = ds_grid_create(3, 20); global.onlineSend = ds_grid_create(3, 20); global.onlineItem = ds_list_create(); global.onlineMetdead = ds_list_create(); global.onlineEvent = ds_list_create(); global.onlineReceived = ds_grid_create(3, 20); roomList = ds_list_create(); roomListData = ds_list_create(); global.idList = ds_list_create(); posData = ds_list_create(); global.hatchlingList = ds_list_create(); global.speedList = ds_list_create(); global.screwList = ds_list_create(); global.hitboxList = ds_list_create(); global.otherPlayerItems = ds_list_create(); ds_grid_clear(global.onlineSend, -1); ds_grid_clear(global.onlineReceived, -1); for(var i=0; i<ds_grid_height(global.onlineList); i++){ ds_grid_set(global.onlineList, 2, i, i); } update_variables("initprev"); update_variables("onlinevars"); if(os_type != os_android){ alpha = 1; } else { alpha = 0.8; } posX = 3; posY = 3; time = 60; trail = 0; //global.icemissiles = 1; kicked = false; banned = false; SJSTART = 29; SUPERJUMP = 30; SJEND = 31; HURT = 32; sizeX = 1; sizeY = 1; global.receiving = false; beginReceiveTimer = 300; 1 603 7 0 0 -1 2 self 0 0 1 if(connected){ if(disconnectTimer > 0){ popup_text("Disconnected"); } else { popup_text("Lost connection to server"); } buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 254); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, global.sax); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 254); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, global.sax); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(!noName){ network_destroy(socket); buffer_delete(buffer); ds_grid_destroy(global.onlineList); ds_grid_destroy(global.onlineSend); ds_grid_destroy(global.onlineReceived); ds_list_destroy(global.onlineItem); ds_list_destroy(global.onlineMetdead); ds_list_destroy(global.onlineEvent); ds_list_destroy(roomList); ds_list_destroy(roomListData); ds_list_destroy(global.idList); ds_list_destroy(posData); ds_list_destroy(global.hatchlingList); ds_list_destroy(global.speedList); ds_list_destroy(global.screwList); ds_list_destroy(global.hitboxList); ds_list_destroy(global.otherPlayerItems); } global.canConnect = false; oControl.alarm[10] = 90; if(banned) popup_text("Banned from server"); if(kicked) popup_text("Kicked from server"); if(global.sax && global.saxmode){ global.sax = 0; load_character_vars(); } global.spectator = false; global.spectatorIndex = -1; global.saxmode = 0; global.sax = 0; global.moderator = false; 1 603 7 0 0 -1 2 self 0 0 1 buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 101); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_s16, room); buffer_write(buffer, buffer_s16, posX); buffer_write(buffer, buffer_s16, posY); buffer_write(buffer, buffer_u8, global.sax); buffer_write(buffer, buffer_u8, global.spectator); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 101); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_s16, room); buffer_write(buffer, buffer_s16, posX); buffer_write(buffer, buffer_s16, posY); buffer_write(buffer, buffer_u8, global.sax); buffer_write(buffer, buffer_u8, global.spectator); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); alarm[11] = 20; 1 603 7 0 0 -1 2 self 0 0 1 var mosaicEffect = false; if(sameRoom){ if(instance_exists(oCharacter)){ if(oCharacter.x != global.prevX || oCharacter.y != global.prevY || global.roomPrev != room || global.prevSprite != oCharacter.sprite_index || global.prevIndex != oCharacter.image_index || global.prevInvincible != oCharacter.invincible || global.mosaic){ if(global.prevX != oCharacter.x){ global.prevX = oCharacter.x; } if(global.prevY != oCharacter.y){ global.prevY = oCharacter.y; } if(global.prevSprite != oCharacter.sprite_index){ global.prevSprite = oCharacter.sprite_index; } if(global.prevIndex != oCharacter.image_index){ global.prevIndex = oCharacter.image_index; } if(global.prevInvincible != oCharacter.invincible){ global.prevInvincible = oCharacter.invincible; } if(global.mosaic || global.reform){ mosaicEffect = true; } else mosaicEffect = false; buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 100); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_s16, oCharacter.x); buffer_write(buffer, buffer_s16, oCharacter.y); buffer_write(buffer, buffer_s16, oCharacter.sprite_index); buffer_write(buffer, buffer_s16, oCharacter.image_index); buffer_write(buffer, buffer_s16, oCharacter.aspr1); buffer_write(buffer, buffer_s16, oCharacter.asprx); buffer_write(buffer, buffer_s16, oCharacter.aspry); buffer_write(buffer, buffer_s16, oCharacter.aspr2); buffer_write(buffer, buffer_s16, oCharacter.aspr2x); buffer_write(buffer, buffer_s16, oCharacter.aspr2y); buffer_write(buffer, buffer_s16, oCharacter.aspr2a); buffer_write(buffer, buffer_s16, oCharacter.mirror); buffer_write(buffer, buffer_s16, oCharacter.armmsl); buffer_write(buffer, buffer_s16, room); buffer_write(buffer, buffer_string, name); buffer_write(buffer, buffer_s16, oCharacter.image_blend); buffer_write(buffer, buffer_s8, oCharacter.fxtimer); buffer_write(buffer, buffer_s16, global.roomPrev); buffer_write(buffer, buffer_s8, oCharacter.state); buffer_write(buffer, buffer_s8, global.sax); buffer_write(buffer, buffer_s8, oCharacter.speedboost); buffer_write(buffer, buffer_s8, oCharacter.sjball); buffer_write(buffer, buffer_s8, oCharacter.sjdir); buffer_write(buffer, buffer_u8, oCharacter.charge); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_u8, global.spectator); buffer_write(buffer, buffer_u8, oCharacter.invincible); buffer_write(buffer, buffer_u8, global.mosaic); buffer_write(buffer, buffer_u8, global.reform); buffer_write(buffer, buffer_u8, oCharacter.visible); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 100); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_s16, oCharacter.x); buffer_write(buffer, buffer_s16, oCharacter.y); buffer_write(buffer, buffer_s16, oCharacter.sprite_index); buffer_write(buffer, buffer_s16, oCharacter.image_index); buffer_write(buffer, buffer_s16, oCharacter.aspr1); buffer_write(buffer, buffer_s16, oCharacter.asprx); buffer_write(buffer, buffer_s16, oCharacter.aspry); buffer_write(buffer, buffer_s16, oCharacter.aspr2); buffer_write(buffer, buffer_s16, oCharacter.aspr2x); buffer_write(buffer, buffer_s16, oCharacter.aspr2y); buffer_write(buffer, buffer_s16, oCharacter.aspr2a); buffer_write(buffer, buffer_s16, oCharacter.mirror); buffer_write(buffer, buffer_s16, oCharacter.armmsl); buffer_write(buffer, buffer_s16, room); buffer_write(buffer, buffer_string, name); buffer_write(buffer, buffer_s16, oCharacter.image_blend); buffer_write(buffer, buffer_s8, oCharacter.fxtimer); buffer_write(buffer, buffer_s16, global.roomPrev); buffer_write(buffer, buffer_s8, oCharacter.state); buffer_write(buffer, buffer_s8, global.sax); buffer_write(buffer, buffer_s8, oCharacter.speedboost); buffer_write(buffer, buffer_s8, oCharacter.sjball); buffer_write(buffer, buffer_s8, oCharacter.sjdir); buffer_write(buffer, buffer_u8, oCharacter.charge); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_u8, global.spectator); buffer_write(buffer, buffer_u8, oCharacter.invincible); buffer_write(buffer, buffer_u8, global.mosaic); buffer_write(buffer, buffer_u8, global.reform); buffer_write(buffer, buffer_u8, oCharacter.visible); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); if(global.roomPrev != room){ global.roomPrev = room; } } } } if(mosaicEffect){ alarm[10] = 1; } else alarm[10] = 2; 1 603 7 0 0 -1 2 self 0 0 1 if(global.maxsmissilesPrev != global.maxsmissiles){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 12); buffer_write(buffer, buffer_u8, global.maxsmissiles); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 12); buffer_write(buffer, buffer_u8, global.maxsmissiles); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); maxsmissilesChanged = true; } if(!maxsmissilesChanged){ alarm[9] = 10; } if(maxsmissilesChanged){ maxsmissilesChanged = false; alarm[9]= 75; } 1 603 7 0 0 -1 2 self 0 0 1 if(global.maxmissilesPrev != global.maxmissiles){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 11); buffer_write(buffer, buffer_u16, global.maxmissiles); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 11); buffer_write(buffer, buffer_u16, global.maxmissiles); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); maxmissilesChanged = true; } if(!maxmissilesChanged){ alarm[8] = 10; } if(maxmissilesChanged){ maxmissilesChanged = false; alarm[8]= 75; } 1 603 7 0 0 -1 2 self 0 0 1 if(global.itemstakenPrev != global.itemstaken){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 10); buffer_write(buffer, buffer_u8, global.itemstaken); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 10); buffer_write(buffer, buffer_u8, global.itemstaken); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); itemstakenChanged = true; } if(!itemstakenChanged){ alarm[7] = 10; } if(itemstakenChanged){ itemstakenChanged = false; alarm[7] = 75; } 1 603 7 0 0 -1 2 self 0 0 1 var v = 0; if(global.ingame){ for(var i=0; i<array_height_2d(global.dmap); i++){ for(var f=0; f<array_length_2d(global.dmap, i); f++){ if(global.dmapPrev[i, f] != global.dmap[i, f]){ mapChanged = true; break; } } } } if(mapChanged){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 9); var tileCount = 0; for(var i=0; i<array_height_2d(global.dmap); i++){ for(var f=0; f<array_length_2d(global.dmap, i); f++){ if(global.dmapPrev[i, f] != global.dmap[i, f]){ buffer_write(buffer, buffer_u8, i); buffer_write(buffer, buffer_u8, f); buffer_write(buffer, buffer_u8, global.dmap[i, f]); tileCount++; } } } buffer_write(buffer, buffer_u16, tileCount); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 9); buffer_write(buffer, buffer_u16, tileCount); for(var i=0; i<array_height_2d(global.dmap); i++){ for(var f=0; f<array_length_2d(global.dmap, i); f++){ if(global.dmapPrev[i, f] != global.dmap[i, f]){ buffer_write(buffer, buffer_u8, i); buffer_write(buffer, buffer_u8, f); buffer_write(buffer, buffer_u8, global.dmap[i, f]); } } } buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(!mapChanged){ alarm[6] = 10; } if(mapChanged){ mapChanged = false; alarm[6] = 75; } 1 603 7 0 0 -1 2 self 0 0 1 var v = 0; for(var f=0; f<array_length_1d(global.event); f++){ if(f > 350){ break; } if(f == 102){ global.eventPrev[f] = global.event[f]; } if(global.eventPrev[f] != global.event[f]){ global.eventChanges[v, 0] = global.event[f]; global.eventChanges[v, 1] = f; global.onlineEvent[| 0] = global.eventChanges; eventChanged = true; v++; } } if(eventChanged){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 8); buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineEvent))); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 8); buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineEvent))); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(!eventChanged){ alarm[5] = 10; } if(eventChanged){ eventChanged = false; alarm[5] = 75; } 1 603 7 0 0 -1 2 self 0 0 1 var v = 0; for(var f=0; f<array_length_1d(global.metdead); f++){ if(global.metdeadPrev[f] != global.metdead[f]){ global.metdeadChanges[v, 0] = global.metdead[f]; global.metdeadChanges[v, 1] = f; global.onlineMetdead[| 0] = global.metdeadChanges; metdeadChanged = true; v++; } } if(metdeadChanged){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 7); buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineMetdead))); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 7); buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineMetdead))); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(!metdeadChanged){ alarm[4] = 10; } if(metdeadChanged){ metdeadChanged = false; alarm[4] = 75; } 1 603 7 0 0 -1 2 self 0 0 1 var v = 0; for(var f=0; f<array_length_1d(global.item); f++){ if(global.itemPrev[f] != global.item[f]){ global.itemChanges[v, 0] = global.item[f]; global.itemChanges[v, 1] = f; global.onlineItem[| 0] = global.itemChanges; itemChanged = true; v++; } } if(itemChanged){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 6); buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineItem))); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 6); buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineItem))); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(!itemChanged){ alarm[3] = 10; } if(itemChanged){ itemChanged = false; alarm[3] = 75; } 1 603 7 0 0 -1 2 self 0 0 1 if(global.monstersleftPrev != global.monstersleft){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 4); buffer_write(buffer, buffer_s8, global.monstersleft); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 4); buffer_write(buffer, buffer_s8, global.monstersleft); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); metroidCountChanged = true; } if(global.monstersareaPrev != global.monstersarea){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 5); buffer_write(buffer, buffer_s8, global.monstersarea); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 5); buffer_write(buffer, buffer_s8, global.monstersarea); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); metroidCountChanged = true; } if(!metroidCountChanged){ alarm[2] = 10; } if(metroidCountChanged){ metroidCountChanged = false; alarm[2] = 75; } 1 603 7 0 0 -1 2 self 0 0 1 if(queenHealthResetQueued){ if(instance_exists(oQueen) && instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ if(global.queenhealthPrev != queenHealth){ if(queenHealth == 999999){ queenHealth = 0; oQueenHead.myhealth = queenHealth; if(queenHealth <= 0){ with(oQueenHead){ if (myhealth <= 0 && state != 100 && state != 50) { if (oQueen.phase < 3) head_damage = 1; if (oQueen.phase == 3) head_damage = 2; if (oQueen.phase < 5) { state = 50; statetime = 0; myhealth = 999999; with (oQueen) { state = 6; statetime = 0; } } if (oQueen.phase == 5) { with (oQueen) { state = 100; statetime = 0; } state = 100; } } } queenHealth = 999999; } } } oQueenHead.myhealth = queenHealth; oQueen.phase = phase; queenHealthResetQueued = false; if(phase >= 1 && instance_exists(inst_146524)){ event_perform_object(oQueenFireball, ev_other, ev_user1); oQueen.state = 7; oQueen.statetime = 0; with(oQueen){ head_target_snap = 1; head_target_x = x + neck_x + 10; head_target_y = y + neck_y; } } if(phase >= 2 && instance_exists(inst_146525) && instance_exists(inst_146520)){ event_perform_object(oQueenFireball, ev_other, ev_user2); oQueen.state = 7; oQueen.statetime = 0; with(oQueen){ head_target_snap = 1; head_target_x = x + neck_x + 10; head_target_y = y + neck_y; } } if(phase >= 3 && instance_exists(inst_146526) && instance_exists(inst_146514)){ event_perform_object(oQueenFireball, ev_other, ev_user3); oQueen.state = 7; oQueen.statetime = 0; with(oQueen){ head_target_snap = 1; head_target_x = x + neck_x + 10; head_target_y = y + neck_y; } } if(phase >= 4 && instance_exists(inst_146527)){ event_perform_object(oQueenFireball, ev_other, ev_user4); oQueen.state = 7; oQueen.statetime = 0; with(oQueen){ head_target_snap = 1; head_target_x = x + neck_x + 10; head_target_y = y + neck_y; } } } alarm[1] = 5; } 1 603 7 0 0 -1 2 self 0 0 1 update_variables("onlinevars"); for(var i=0; i<ds_grid_height(global.onlineList); i++){ if(global.onlineList[# 0, i] != global.onlineList[# 1, i] && (i != 0 || i != 15 || i != 16 || i != 17)){ global.onlineSend[# 0, i] = global.onlineList[# 0, i]; global.onlineSend[# 1, i] = global.onlineList[# 1, i]; global.onlineSend[# 2, i] = global.onlineList[# 2, i]; //Update prev to current update_variables("disablesame"); update_variables("replaceglobalvars"); update_variables("updateprev"); //show_debug_message(string(global.onlineList[# 0, i]) + " " + string(global.onlineList[# 1, i]) + " " + string(global.onlineList[# 2, i])); canSend = true; alarm[0] = 600; } } if(canSend){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 0); buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineSend))); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u32, global.packetID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 0); buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineSend))); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u32, global.packetID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); show_debug_message("packetID = " + string(global.packetID)); global.packetID++; ds_grid_clear(global.onlineSend, -1); } if(!canSend){ alarm[0] = 10; } if(canSend){ canSend = false; alarm[0] = 75; } if(instance_exists(oCharacter)){ check_areaclear(); if(global.playerhealth <= 0){ if(oCharacter.state != oCharacter.DEFEATED && oCharacter.canbehit){ oCharacter.alarm[0] = 6; oCharacter.state = oCharacter.DEFEATED; mus_current_fadeout(); sfx_stop_all(); } } } if(instance_exists(oQueen) && instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ if(global.queenhealthPrev != oQueenHead.myhealth || oQueen.phase != phase){ show_debug_message("queen health sent " + string(oQueenHead.myhealth)); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 2); buffer_write(buffer, buffer_s32, oQueenHead.myhealth); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_s8, oQueen.phase); buffer_write(buffer, buffer_s8, oQueen.state); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 2); buffer_write(buffer, buffer_s32, oQueenHead.myhealth); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_s8, oQueen.phase); buffer_write(buffer, buffer_s8, oQueen.state); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } } var itemCount = 0; for(var h=0; h<array_length_1d(global.item); h++){ var val = global.item[h]; if(val == 1 && h != 1){ itemCount++; } } if(itemCount != global.itemstaken){ global.itemstaken = itemCount; } 1 603 7 0 0 -1 2 self 0 0 1 if(!connected){ if(isConnected >= 0){ connected = true; popup_text("Connected"); buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 1); buffer_write(buffer, buffer_string, name + "," + global.multitroid_version); buffer_write(buffer, buffer_u8, global.sax); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 1); buffer_write(buffer, buffer_string, name + "," + global.multitroid_version); buffer_write(buffer, buffer_u8, global.sax); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); instance_create(x, y, oNametag); } else { instance_destroy(); popup_text("Failed to connect"); } } //Ensure Arachnus event syncs properly if(global.event[103] > 0){ global.event[103] = floor(global.event[103]); } //Reset Queen phase when dead if(global.event[303] > 0){ phase = 0; } //Changes drill event to already be done if(global.event[172] != 3){ global.event[172] = 3; } //Fix lavastate in NG+ and RG+ if(global.gamemode > 1 || global.saxmode){ if(global.gamemode == 1) global.gamemode = 2; if(global.lavastate < 7) global.lavastate = 7; } if(room == rm_death){ phase = 0; queenHealth = global.mod_queenHstart + (global.mtanks * 10);; } if((room == rm_a4b02 || room == rm_a4b03 || room == rm_a4b04 || room == rm_a4b05 || room == rm_a4b06 || room == rm_a4b07 || room == rm_a4b08 || room == rm_a4b09 || room == rm_a4b10 || room == rm_a4b11 || room == rm_a4b12 || room == rm_a4b13 || room == rm_a4b14 || room == rm_a4b15 || room == rm_a4b16 || room == rm_a4b17 || room == rm_a4b18 || room == rm_a4b19) && global.event[203] > 0 && global.event[203] < 9 && !instance_exists(oA4EscapeControl)){ instance_create(x, y, oA4EscapeControl); } if(room == rm_a4b01 && global.event[203] == 9 && instance_exists(oA4EscapeControl)){ with(oA4EscapeControl){ event_user(0); } } if(global.event[203] == 9 && sfx_isplaying(sndA4AlarmLoop)){ sfx_stop(sndA4AlarmLoop); } if(!instance_exists(oQueen) && global.event[303] == 0){ if(!queenHealthResetQueued){ queenHealthResetQueued = true; alarm[1] = 5; } } if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ if(global.event[303] > 0 && !queenDead){ with(oQueen){ state = 100; statetime = 0; mus_fadeout(musQueen); mus_fadeout(musQueen2); mus_fadeout(musQueen3); mus_fadeout(musQueenBreak); mus_fadeout(musQueenIntro); } queenDead = true; } if(instance_exists(oQueenHead)){ with(oQueenHead){ if(oQueen.phase > 3 && instance_exists(inst_146527)){ oQueen.phase = 3; if(head_damage == 2){ head_damage = 1; } } } } } if(keyboard_check_pressed(vk_f2)){ instance_destroy(); } if(keyboard_check_pressed(vk_f3)){ popup_text_ext(string(oControl.seed), 300); } if(keyboard_check_pressed(vk_f4)){ if(oControl.showname == "disabled"){ oControl.showname = "enabled"; } if(oControl.showname == "enabled"){ oControl.showname = "disabled"; } } if(instance_exists(oCharacter)){ posX = global.mapposx; posY = global.mapposy; } else { posX = posX; posY = posY; } if((room == rm_a4b02 || room == rm_a4b03 || room == rm_a4b04 || room == rm_a4b05 || room == rm_a4b06 || room == rm_a4b07 || room == rm_a4b08 || room == rm_a4b09 || room == rm_a4b10 || room == rm_a4b11 || room == rm_a4b12 || room == rm_a4b13 || room == rm_a4b14 || room == rm_a4b15 || room == rm_a4b16 || room == rm_a4b17 || room == rm_a4b18 || room == rm_a4b19) && global.event[203] == 9 && !teleport){ teleport = true; global.targetx = 624; global.targety = 144; room_change(rm_a4b01, 1); } if(instance_exists(oCharacter) && (oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP)){ refill_heath_ammo(); } //Ensure that reloading a save doesn't disable Extreme Lab Metroids if(oControl.mod_monstersextremecheck == 1 && oControl.mod_monstersextreme == 0 && global.event[302] > 0){ oControl.mod_monstersextreme = 1; } else if(oControl.mod_monstersextremecheck == 0 && oControl.mod_monstersextreme == 1){ oControl.mod_monstersextreme = 0; } //Sends event 309 to make sure all players can fight guardian if(global.log[21] > 0 && global.event[309] == 0){ global.event[309] = 1; } if(global.event[309] == 1 && global.log[21] < 1){ global.log[21] = 1; } //End of guardian event check if(time == 0 && connected && instance_exists(self)){ //why do i need an instance_exists(self) here to not crash??? if(ds_list_size(global.idList) > 0){ checkListID = ds_list_create(); for(var i=0; i<ds_list_size(global.idList); i++){ var arr = global.idList[| i]; ds_list_add(checkListID, arr[0, 0]); } for(var i=0; i<ds_list_size(roomList); i++){ var ID = roomList[| i]; var findID = ds_list_find_index(checkListID, ID); if(findID < 0){ ds_list_delete(roomList, i); } } for(var i=0; i<ds_list_size(roomListData); i++){ var arr = roomListData[| i]; var findID = ds_list_find_index(checkListID, arr[0]); if(findID < 0){ ds_list_delete(roomListData, i); } } for(var i=0; i<ds_list_size(posData); i++){ var arr = posData[| i]; var findID = ds_list_find_index(checkListID, arr[0]); if(findID < 0){ ds_list_delete(posData, i); } } for(var i=0; i<ds_list_size(global.otherPlayerItems); i++){ var arr = global.otherPlayerItems[| i]; var findID = ds_list_find_index(checkListID, arr[0]); if(findID < 0){ ds_list_delete(global.otherPlayerItems, i); } } ds_list_destroy(checkListID); } time = 60; } if(maxpbombsTimer == 0 && connected){ if(global.maxpbombsPrev != global.maxpbombs){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 13); buffer_write(buffer, buffer_u8, global.maxpbombs); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 13); buffer_write(buffer, buffer_u8, global.maxpbombs); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); maxpbombsChanged = true; } if(!maxpbombsChanged){ maxpbombsTimer = 10; } if(maxpbombsChanged){ maxpbombsChanged = false; maxpbombsTimer = 75; } } if(maxhealthTimer == 0 && connected){ if(global.maxhealthPrev != global.maxhealth){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 14); buffer_write(buffer, buffer_u16, global.maxhealth); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 14); buffer_write(buffer, buffer_u16, global.maxhealth); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); maxhealthChanged = true; } if(!maxhealthChanged){ maxhealthTimer = 10; } if(maxhealthChanged){ maxhealthChanged = false; maxhealthTimer = 75; } } if(etanksTimer == 0 && connected){ if(global.etanksPrev != global.etanks){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 15); buffer_write(buffer, buffer_u8, global.etanks); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 15); buffer_write(buffer, buffer_u8, global.etanks); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); etanksChanged = true; } if(!etanksChanged){ etanksTimer = 10; } if(etanksChanged){ etanksChanged = false; etanksTimer = 75; } } if(mtanksTimer == 0 && connected){ if(global.mtanksPrev != global.mtanks){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 16); buffer_write(buffer, buffer_u8, global.mtanks); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 16); buffer_write(buffer, buffer_u8, global.mtanks); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); mtanksChanged = true; } if(!mtanksChanged){ mtanksTimer = 10; } if(mtanksChanged){ mtanksChanged = false; mtanksTimer = 75; } } if(stanksTimer == 0 && connected){ if(global.stanksPrev != global.stanks){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 17); buffer_write(buffer, buffer_u8, global.stanks); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 17); buffer_write(buffer, buffer_u8, global.stanks); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); stanksChanged = true; } if(!stanksChanged){ stanksTimer = 10; } if(stanksChanged){ stanksChanged = false; stanksTimer = 75; } } if(ptanksTimer == 0 && connected){ if(global.ptanksPrev != global.ptanks){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 18); buffer_write(buffer, buffer_u8, global.ptanks); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 18); buffer_write(buffer, buffer_u8, global.ptanks); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); ptanksChanged = true; } if(!ptanksChanged){ ptanksTimer = 10; } if(ptanksChanged){ ptanksChanged = false; ptanksTimer = 75; } } if(healthTimer == 0 && connected){ if(global.playerhealthPrev != global.playerhealth){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 25); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 25); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); healthTimer = true; } if(!healthChanged){ healthTimer = 10; } if(healthChanged){ healthChanged = false; healthTimer = 75; } } if(missilesTimer == 0 && connected){ if(global.missilesPrev != global.missiles){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 26); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 26); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); missilesTimer = true; } if(!missilesChanged){ missilesTimer = 10; } if(missilesChanged){ missilesChanged = false; missilesTimer = 75; } } if(smissilesTimer == 0 && connected){ if(global.smissilesPrev != global.smissiles){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 27); buffer_write(buffer, buffer_s16, global.smissiles); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 27); buffer_write(buffer, buffer_s16, global.smissiles); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); smissilesTimer = true; } if(!smissilesChanged){ smissilesTimer = 10; } if(smissilesChanged){ smissilesChanged = false; smissilesTimer = 75; } } if(pbombsTimer == 0 && connected){ if(global.pbombsPrev != global.pbombs){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 28); buffer_write(buffer, buffer_s16, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 28); buffer_write(buffer, buffer_s16, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); pbombsTimer = true; } if(!pbombsChanged){ pbombsTimer = 10; } if(pbombsChanged){ pbombsChanged = false; pbombsTimer = 75; } } if(teleport){ teleportTimer--; if(teleportTimer <= 0){ teleport = false; teleportTimer = 60; } } if(disconnectTimer <= 0){ instance_destroy(); } if(pingTimer <= 0){ pingTimer = 5; buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 103); buffer_write(buffer, buffer_u32, current_time); buffer_write(buffer, buffer_u16, global.ping); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 103); buffer_write(buffer, buffer_u32, current_time); buffer_write(buffer, buffer_u16, global.ping); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(resetTimer == 0){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 20); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 20); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(currentItemsTimer == 0 && connected){ currentItemsTimer = 120; buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 104); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, global.spacejump); buffer_write(buffer, buffer_u8, global.screwattack); buffer_write(buffer, buffer_u8, global.spiderball); buffer_write(buffer, buffer_u8, global.speedbooster); buffer_write(buffer, buffer_u8, global.bomb); buffer_write(buffer, buffer_u8, global.ibeam); buffer_write(buffer, buffer_u8, global.wbeam); buffer_write(buffer, buffer_u8, global.pbeam); buffer_write(buffer, buffer_u8, global.sbeam); buffer_write(buffer, buffer_u8, global.cbeam); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 104); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, global.spacejump); buffer_write(buffer, buffer_u8, global.screwattack); buffer_write(buffer, buffer_u8, global.spiderball); buffer_write(buffer, buffer_u8, global.speedbooster); buffer_write(buffer, buffer_u8, global.bomb); buffer_write(buffer, buffer_u8, global.ibeam); buffer_write(buffer, buffer_u8, global.wbeam); buffer_write(buffer, buffer_u8, global.pbeam); buffer_write(buffer, buffer_u8, global.sbeam); buffer_write(buffer, buffer_u8, global.cbeam); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(beginReceiveTimer == 0 && connected){ alarm[0] = 5; alarm[2] = 5; alarm[3] = 5; alarm[4] = 5; alarm[5] = 5; alarm[6] = 5; alarm[7] = 5; alarm[8] = 5; alarm[9] = 5; alarm[10] = 3; alarm[11] = 20; } time--; maxpbombsTimer--; maxhealthTimer--; etanksTimer--; mtanksTimer--; stanksTimer--; ptanksTimer--; healthTimer--; missilesTimer--; smissilesTimer--; pbombsTimer--; disconnectTimer--; pingTimer--; currentItemsTimer--; if(global.receiving) beginReceiveTimer--; if(resetTimer > -1){ resetTimer--; } if(beginReceiveTimer < -1) beginReceiveTimer = -1; if(instance_exists(self)){ if(ds_list_size(roomListData) > 0){ for(var h=0; h<ds_list_size(roomListData); h++){ var arrList = roomListData[| h]; var arrID = arrList[0]; var arrX = arrList[1]; var arrY = arrList[2]; var arrName = arrList[15]; var findHatchlingID = ds_list_find_index(global.hatchlingList, arrID); if(instance_exists(oHatchling)){ if(findHatchlingID == -1){ ds_list_add(global.hatchlingList, arrID); var hatchling = instance_create(arrX, arrY, oHatchling); with(hatchling){ targetx = arrX; targety = arrY; myid = arrID; name = arrName; } } } else { if(findHatchlingID >= 0){ ds_list_delete(global.hatchlingList, findHatchlingID); } } } } else { if(ds_list_size(global.hatchlingList) > 0){ ds_list_clear(global.hatchlingList); } } } switch(syncedDifficulty){ case 0: //Easy if(global.saxmode && !global.sax){ if(global.difficulty != syncedDifficulty) global.difficulty = syncedDifficulty; if(oControl.mod_fusion != 1) oControl.mod_fusion = 1; if(oControl.mod_diffmult != 1) oControl.mod_diffmult = 1; } else { if(global.difficulty != syncedDifficulty) global.difficulty = syncedDifficulty; if(oControl.mod_fusion != 0) oControl.mod_fusion = 0; if(oControl.mod_diffmult != 1) oControl.mod_diffmult = 1; } break; case 1: //Normal if(global.saxmode && !global.sax){ if(global.difficulty != syncedDifficulty) global.difficulty = syncedDifficulty; if(oControl.mod_fusion != 1) oControl.mod_fusion = 1; if(oControl.mod_diffmult != 1) oControl.mod_diffmult = 1; } else { if(global.difficulty != syncedDifficulty) global.difficulty = syncedDifficulty; if(oControl.mod_fusion != 0) oControl.mod_fusion = 0; if(oControl.mod_diffmult != 1) oControl.mod_diffmult = 1; } break; case 2: //Hard if(global.saxmode && !global.sax){ if(global.difficulty != syncedDifficulty) global.difficulty = syncedDifficulty; if(oControl.mod_fusion != 1) oControl.mod_fusion = 1; if(oControl.mod_diffmult != 2) oControl.mod_diffmult = 2; } else { if(global.difficulty != syncedDifficulty) global.difficulty = syncedDifficulty; if(oControl.mod_fusion != 0) oControl.mod_fusion = 0; if(oControl.mod_diffmult != 2) oControl.mod_diffmult = 2; } break; case 3: //Fusion if(global.saxmode && !global.sax){ if(global.difficulty != 2) global.difficulty = 2; if(oControl.mod_fusion != 1) oControl.mod_fusion = 1; if(oControl.mod_diffmult != 4) oControl.mod_diffmult = 4; } else if(global.saxmode && global.sax){ if(global.difficulty != 2) global.difficulty = 2; if(oControl.mod_fusion != 0) oControl.mod_fusion = 0; if(oControl.mod_diffmult != 4) oControl.mod_diffmult = 4; } else { if(global.difficulty != 2) global.difficulty = 2; if(oControl.mod_fusion != 1) oControl.mod_fusion = 1; if(oControl.mod_diffmult != 4) oControl.mod_diffmult = 4; } break; } if(oControl.mod_monstersextremecheck != elm) oControl.mod_monstersextremecheck = elm; if((!global.ingame || !global.opshowhud) && global.saxmode){ var lowestPosX = 1000; var lowestPosY = 1000; var enemyCount = 0; for(var i=0; i<ds_list_size(oClient.posData); i++){ var arrData = oClient.posData[| i]; var ID = arrData[0]; var xDiff = oClient.posX - arrData[1]; var yDiff = oClient.posY - arrData[2]; var sax = arrData[3]; var spectator = arrData[5]; if((abs(xDiff) < lowestPosX || abs(yDiff) < lowestPosY) && sax != global.sax && ID != global.clientID){ if(spectator){ if(sax){ lowestPosX = abs(xDiff); lowestPosY = abs(yDiff); } } else { lowestPosX = abs(xDiff); lowestPosY = abs(yDiff); } } if(sax != global.sax) enemyCount++; } if(ds_list_size(oClient.posData) == 0 || enemyCount == 0){ global.scannerSprite = sScannerRange4; global.enemyNearby = false; global.inMusSAXRange = false; } if(enemyCount > 0){ if((abs(lowestPosX) > 5 || abs(lowestPosY) > 5)){ global.inMusSAXRange = false; } if((abs(lowestPosX) <= 5 && abs(lowestPosY) <= 5)){ global.inMusSAXRange = true; } if((abs(lowestPosX) > 4 || abs(lowestPosY) > 4)){ global.enemyNearby = false; global.scannerSprite = sScannerRange4; } if((abs(lowestPosX) <= 4 && abs(lowestPosY) <= 4)){ global.enemyNearby = false; global.scannerSpeedMax = 5; global.scannerSprite = sScannerRange3; } if((abs(lowestPosX) <= 3 && abs(lowestPosY) <= 3)){ global.enemyNearby = true; } if((abs(lowestPosX) <= 2 && abs(lowestPosY) <= 2)){ global.enemyNearby = true; global.scannerSpeedMax = 4; global.scannerSprite = sScannerRange2; } if((abs(lowestPosX) <= 1 && abs(lowestPosY) <= 1)){ global.enemyNearby = true; global.scannerSpeedMax = 3; global.scannerSprite = sScannerRange1; } if((abs(lowestPosX) == 0 && abs(lowestPosY) == 0)){ global.enemyNearby = true; global.scannerSpeedMax = 2; global.scannerSprite = sScannerRange1; } } } if(connected && room == rm_a1h01 && global.event[51] == 0 && global.log[21] > 0 && global.sax && global.saxmode){ var playerInBossRoom = false; if(ds_list_size(oClient.posData) > 0){ for(var i=0; i<ds_list_size(oClient.posData); i++){ var arrMapIcon = oClient.posData[| i]; var sax = arrMapIcon[3]; var playerRoom = arrMapIcon[4]; if(sax != global.sax && playerRoom == rm_a1h01){ playerInBossRoom = true; } } } if(playerInBossRoom){ global.targetx = 1200; global.targety = 160; room_change(rm_a0h08, 1); } } 1 603 7 0 0 -1 2 self 0 0 1 disconnectTimer = 900; if(!global.acceptPacket) exit; var type_event = ds_map_find_value(async_load, "type"); switch(type_event){ case network_type_data: var _buffer = ds_map_find_value(async_load, "buffer"); var bufferSize = buffer_get_size(_buffer); buffer_seek(_buffer, buffer_seek_start, 0); var bufferSizePacket = buffer_read(_buffer, buffer_s32); //show_debug_message(string(bufferSize) + " " + string(bufferSizePacket)); if(!is_real(bufferSizePacket)) exit; if(bufferSizePacket + 4 != bufferSize) exit; //show_debug_message("done"); msgid = buffer_read(_buffer, buffer_u8); switch(msgid){ case 254: var clientID = buffer_read(_buffer, buffer_u8); if(ds_list_size(roomList) > 0){ var findsocket = ds_list_find_index(roomList, clientID); if(findsocket >= 0){ ds_list_delete(roomList, findsocket); } } for(var i=0; i<ds_list_size(roomListData); i++){ var arrList = roomListData[| i]; if(arrList[0] == clientID){ ds_list_delete(roomListData, i); } } for(var f=0; f<ds_list_size(global.idList); f++){ var arrList = global.idList[| f]; if(clientID == arrList[0, 0]){ ds_list_delete(global.idList, f); } } for(var v=0; v<ds_list_size(posData); v++){ var arrList = posData[| v]; if(clientID == arrList[0]){ ds_list_delete(posData, v); } } if(instance_exists(oHatchling)){ with(oHatchling){ if(myid != 0){ instance_destroy(); } } } break; case 250: var ban = buffer_read(_buffer, buffer_u8); if(ban){ banned = true; } else { kicked = true; } instance_destroy(); break; case 200: global.clientID = preferredcolor; break; case 100: var clientID = buffer_read(_buffer, buffer_u8); var clientX = buffer_read(_buffer, buffer_s16); var clientY = buffer_read(_buffer, buffer_s16); var clientSprite = buffer_read(_buffer, buffer_s16); var clientImage = buffer_read(_buffer, buffer_s16); var clientA1 = buffer_read(_buffer, buffer_s16); var clientA1X = buffer_read(_buffer, buffer_s16); var clientA1Y = buffer_read(_buffer, buffer_s16); var clientA2 = buffer_read(_buffer, buffer_s16); var clientA2X = buffer_read(_buffer, buffer_s16); var clientA2Y = buffer_read(_buffer, buffer_s16); var clientA2A = buffer_read(_buffer, buffer_s16); var clientMirror = buffer_read(_buffer, buffer_s16); var clientArmmsl = buffer_read(_buffer, buffer_s16); var clientRoom = buffer_read(_buffer, buffer_s16); var clientName = buffer_read(_buffer, buffer_string); var clientBlend = buffer_read(_buffer, buffer_s16); var clientFXTimer = buffer_read(_buffer, buffer_s8); var clientRoomPrev = buffer_read(_buffer, buffer_s16); var clientState = buffer_read(_buffer, buffer_u8); var clientSAX = buffer_read(_buffer, buffer_u8); var clientSpeedboost = buffer_read(_buffer, buffer_u8); var clientSJBall = buffer_read(_buffer, buffer_u8); var clientSJDir = buffer_read(_buffer, buffer_u8); var clientSpeedCharge = buffer_read(_buffer, buffer_u8); var clientPlayerHealth = buffer_read(_buffer, buffer_s16); var findsocket = ds_list_find_index(roomList, clientID); var clientSpectator = buffer_read(_buffer, buffer_u8); var clientInvincible = buffer_read(_buffer, buffer_u8); var clientMosaic = buffer_read(_buffer, buffer_u8); var clientReform = buffer_read(_buffer, buffer_u8); var clientVisible = buffer_read(_buffer, buffer_u8); if(global.clientID != clientID){ if(findsocket < 0){ if(clientRoom == room || clientRoom == rm_options || clientRoom == itemroom || clientRoom == subscreenroom || clientRoom == maproom || clientRoom == rm_subscreen){ ds_list_add(roomList, clientID); var arr; arr[0] = clientID; arr[1] = clientX; arr[2] = clientY; arr[3] = clientSprite; arr[4] = clientImage; arr[5] = clientA1; arr[6] = clientA1X; arr[7] = clientA1Y; arr[8] = clientA2; arr[9] = clientA2X; arr[10] = clientA2Y; arr[11] = clientA2A; arr[12] = clientMirror; arr[13] = clientArmmsl; arr[14] = clientRoom; arr[15] = clientName; arr[16] = clientBlend; arr[17] = clientFXTimer; arr[18] = clientRoomPrev; arr[19] = clientState; arr[20] = clientSAX; arr[21] = clientSpeedboost; arr[22] = clientSJBall; arr[23] = clientSJDir; arr[24] = clientSpeedCharge; arr[25] = clientPlayerHealth; arr[26] = clientSpectator; arr[27] = clientInvincible; arr[28] = clientMosaic; arr[29] = clientReform; arr[30] = clientVisible; ds_list_add(roomListData, arr); } } else { var arr; arr[0] = clientID; arr[1] = clientX; arr[2] = clientY; arr[3] = clientSprite; arr[4] = clientImage; arr[5] = clientA1; arr[6] = clientA1X; arr[7] = clientA1Y; arr[8] = clientA2; arr[9] = clientA2X; arr[10] = clientA2Y; arr[11] = clientA2A; arr[12] = clientMirror; arr[13] = clientArmmsl; arr[14] = clientRoom; arr[15] = clientName; arr[16] = clientBlend; arr[17] = clientFXTimer; arr[18] = clientRoomPrev; arr[19] = clientState; arr[20] = clientSAX; arr[21] = clientSpeedboost; arr[22] = clientSJBall; arr[23] = clientSJDir; arr[24] = clientSpeedCharge; arr[25] = clientPlayerHealth; arr[26] = clientSpectator; arr[27] = clientInvincible; arr[28] = clientMosaic; arr[29] = clientReform; arr[30] = clientVisible; var indexValue = ds_list_find_value(roomList, findsocket); for(var i=0; i<ds_list_size(roomListData); i++){ var arrList = roomListData[| i]; if(arrList[0] == indexValue){ roomListData[| i] = arr; } } if(clientRoom != room && (clientRoom != rm_options && clientRoom != itemroom && clientRoom != subscreenroom && clientRoom != maproom && clientRoom != rm_subscreen)){ sameRoom = false; var indexValue = ds_list_find_value(roomList, findsocket); ds_list_delete(roomList, findsocket); for(var i=0; i<ds_list_size(roomListData); i++){ var arrList = roomListData[| i]; if(arrList[0] == indexValue){ ds_list_delete(roomListData, i); } } } } } break; case 101: var clientID = buffer_read(_buffer, buffer_u8); var clientRoom = buffer_read(_buffer, buffer_s16); var clientMapX = buffer_read(_buffer, buffer_s16); var clientMapY = buffer_read(_buffer, buffer_s16); var sax = buffer_read(_buffer, buffer_u8); var spectator = buffer_read(_buffer, buffer_u8); var findsocket = ds_list_find_index(roomList, clientID); /* if(instance_exists(oCharacter)){ if(clientRoom == rm_death){ if(oCharacter.state != oCharacter.DEFEATED){ oCharacter.alarm[0] = 6; oCharacter.state = oCharacter.DEFEATED; mus_current_fadeout(); sfx_stop_all(); } } } */ if(clientRoom == room && global.clientID != clientID){ sameRoom = true; } else if(clientRoom != room && global.clientID != clientID && (clientRoom != rm_options && clientRoom != itemroom && clientRoom != subscreenroom && clientRoom != maproom && clientRoom != rm_subscreen)){ if(ds_list_size(roomList) > 0 && findsocket >= 0){ sameRoom = false; var indexValue = ds_list_find_value(roomList, findsocket); ds_list_delete(roomList, findsocket); for(var i=0; i<ds_list_size(roomListData); i++){ var arrList = roomListData[| i]; if(arrList[0] == clientID){ ds_list_delete(roomListData, i); } } } } var findsocket = ds_list_find_index(roomList, clientID); if(ds_list_size(roomList) > 0 && findsocket >= 0){ for(var i=0; i<ds_list_size(roomListData); i++){ var arrList = roomListData[| i]; if(arrList[0] == clientID){ arrList[14] = clientRoom; roomListData[| i] = arrList; } } } checkList = ds_list_create(); if(ds_list_size(global.idList) > 0){ for(var f=0; f<ds_list_size(global.idList); f++){ if(ds_list_size(posData) > 0 && clientID != global.clientID){ var arrPosData; arrPosData[0] = clientID; arrPosData[1] = clientMapX; arrPosData[2] = clientMapY; arrPosData[3] = sax; arrPosData[4] = clientRoom; arrPosData[5] = spectator; for(var v=0; v<ds_list_size(posData); v++){ var arr = posData[| v]; ds_list_add(checkList, arr[0]); if(arr[0] == clientID){ posData[| v] = arrPosData; } } var find = ds_list_find_index(checkList, clientID); if(find < 0){ ds_list_add(posData, arrPosData); } } else if(ds_list_size(posData) == 0 && clientID != global.clientID){ var arrPosData; arrPosData[0] = clientID; arrPosData[1] = clientMapX; arrPosData[2] = clientMapY; arrPosData[3] = sax; arrPosData[4] = clientRoom; arrPosData[5] = spectator; ds_list_add(posData, arrPosData); if(instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map)){ surface_free(oSS_Control.s_map); } } } } ds_list_destroy(checkList); if(clientRoom == rm_a4b01 && room != rm_a4b01 && global.event[203] > 0 && global.event[203] < 9 && !teleport){ if(room == rm_a4b02 || room == rm_a4b03 || room == rm_a4b04 || room == rm_a4b05 || room == rm_a4b06 || room == rm_a4b07 || room == rm_a4b08 || room == rm_a4b09 || room == rm_a4b10 || room == rm_a4b11 || room == rm_a4b12 || room == rm_a4b13 || room == rm_a4b14 || room == rm_a4b15 || room == rm_a4b16 || room == rm_a4b17 || room == rm_a4b18 || room == rm_a4b19){ teleport = true; global.targetx = 624; global.targety = 144; room_change(rm_a4b01, 1); } } break; case 102: ds_list_read(global.idList, strict_decompress(buffer_read(_buffer, buffer_string))); break; case 104: var playerHealth = buffer_read(_buffer, buffer_s16); var missiles = buffer_read(_buffer, buffer_s16); var smissiles = buffer_read(_buffer, buffer_u8); var pbombs = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); global.playerhealth = playerHealth; global.missiles = missiles; global.smissiles = smissiles; global.pbombs = pbombs; break; case 105: var ping = buffer_read(_buffer, buffer_u32); global.ping = current_time - ping; break; case 106: load_character_vars(); reset_dmap(); global.itemPrev = array_clone(global.item); global.metdeadPrev = array_clone(global.metdead); global.eventPrev = array_clone(global.event); global.dmapPrev = array_clone(global.dmap); popup_text("Stats reset"); break; case 107: disconnectTimer = -10; break; case 108: var clientID = buffer_read(_buffer, buffer_u8); var team = buffer_read(_buffer, buffer_u8); var spacejump = buffer_read(_buffer, buffer_u8); var screwattack = buffer_read(_buffer, buffer_u8); var spiderball = buffer_read(_buffer, buffer_u8); var speedbooster = buffer_read(_buffer, buffer_u8); var bomb = buffer_read(_buffer, buffer_u8); var ibeam = buffer_read(_buffer, buffer_u8); var wbeam = buffer_read(_buffer, buffer_u8); var pbeam = buffer_read(_buffer, buffer_u8); var sbeam = buffer_read(_buffer, buffer_u8); var cbeam = buffer_read(_buffer, buffer_u8); var otherItemArr; otherItemArr[0] = clientID; otherItemArr[1] = team; otherItemArr[2] = spacejump; otherItemArr[3] = screwattack; otherItemArr[4] = spiderball; otherItemArr[5] = speedbooster; otherItemArr[6] = bomb; otherItemArr[7] = ibeam; otherItemArr[8] = wbeam; otherItemArr[9] = pbeam; otherItemArr[10] = sbeam; otherItemArr[11] = cbeam; if(ds_list_size(global.otherPlayerItems) == 0){ ds_list_add(global.otherPlayerItems, otherItemArr); } else { var IDCheck = 0; for(var i=0; i<ds_list_size(global.otherPlayerItems); i++){ var tempArr = global.otherPlayerItems[| i]; var ID = tempArr[0]; if(ID == clientID){ IDCheck = 1; global.otherPlayerItems[| i] = otherItemArr; } } if(!IDCheck){ ds_list_add(global.otherPlayerItems, otherItemArr); } } break; case 109: global.showHealthIndicatorsTimer = 15 * 60; break; case 110: var checkBeam = buffer_read(_buffer, buffer_u8); var checkMissile = buffer_read(_buffer, buffer_u8); var checkDamage = buffer_read(_buffer, buffer_u8); var checkFreeze = buffer_read(_buffer, buffer_u8); if(checkMissile && global.playerFreeze > 151) break; if(instance_exists(oCharacter) && oCharacter.invincible == 0){ with(oCharacter){ damageDir = -1; knockbackY = -3; global.multiDamageCollision = true; if(checkBeam){ otherOBJ = oBeam; global.ignoreKnockback = true; } if(checkMissile) otherOBJ = oMissile; if(checkMissile && global.playerFreeze > 0 && global.playerFreeze <= 151 && !global.frozenNormally) global.playerFreeze = 1; if(global.frozenNormally) show_debug_message("normal freeze"); if(checkFreeze && global.playerFreeze == 0 && !global.frozenNormally){ if(checkBeam && !(global.currentsuit == 2 && global.item[5] == 1) && global.playerFreeze == 0 && invincible == 0 && canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR){ global.playerFreeze = 156; damageDir = 0; knockbackY = 0; global.frozenByRollback = true; with(oControl){ kLeft = 0; kRight = 0; kUp = 0; kDown = 0; } } if(checkMissile && (checkDamage == 10 || checkDamage == 20) && !(global.currentsuit == 2 && global.item[5] == 1) && global.playerFreeze == 0 && invincible == 0 && canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR){ global.playerFreeze = 156; damageDir = 0; knockbackY = 0; global.frozenByRollback = true; with(oControl){ kLeft = 0; kRight = 0; kUp = 0; kDown = 0; } } } if(checkDamage == 100) checkDamage = 50; //if(global.item[5] && checkBeam && checkFreeze && global.currentsuit == 2) checkDamage = checkDamage * 8; if(!canbehit || state == IDLE || state == SAVING && state == SAVINGFX || state == SAVINGSHIPFX || state == SAVINGSHIP || state == ELEVATOR || state == GFELEVATOR) checkDamage = 0; if(!global.frozenNormally && canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR) damage_player(checkDamage, 5 * damageDir, knockbackY, 0, 0); } } break; case 111: var newTeam = buffer_read(_buffer, buffer_u8); if(newTeam == 1) global.sax = 0; if(newTeam == 2) global.sax = 1; break; case 112: var saxmode = buffer_read(_buffer, buffer_u8); var newTeam = buffer_read(_buffer, buffer_u8); global.saxmode = saxmode; if(newTeam == 1) global.sax = 0; if(newTeam == 2) global.sax = 1; break; case 113: var saxmode = buffer_read(_buffer, buffer_u8); var lobbyLocked = buffer_read(_buffer, buffer_u8); var samCount = buffer_read(_buffer, buffer_u8); var damageMultStr = buffer_read(_buffer, buffer_string); var damageMult = real(damageMultStr); var experimental = buffer_read(_buffer, buffer_u8); global.damageMult = damageMult; global.saxmode = saxmode; global.experimental = experimental; if(!lobbyLocked){ if(global.spectator){ global.spectator = false; global.spectatorIndex = -1; } } global.lobbyLocked = lobbyLocked; global.samCount = samCount; break; case 114: var lobbyLocked = buffer_read(_buffer, buffer_u8); if(lobbyLocked){ global.spectator = true; global.spectatorIndex = -1; global.mosaic = false; } global.lobbyLocked = lobbyLocked; break; case 115: var getGravity = buffer_read(_buffer, buffer_u8); if(getGravity && global.saxmode && global.sax && !global.item[9] && instance_number(oCoreXGravity) == 0 && string_count("rm_a", room_get_name(room))){ instance_create(irandom_range(0, room_width), -100, oCoreXGravity); } break; case 116: var receivedPasswordHash = buffer_read(_buffer, buffer_string); if(sha1_string_unicode(oControl.password) == receivedPasswordHash){ global.moderator = true; } else global.moderator = false; break; case 0: global.clientID = buffer_read(_buffer, buffer_u8); show_debug_message(string(msgid) + " " + string(global.clientID)); global.receiving = true; buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 200); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, preferredcolor); buffer_write(buffer, buffer_u8, global.sax); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 200); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, preferredcolor); buffer_write(buffer, buffer_u8, global.sax); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); break; case 1: ds_grid_read(global.onlineReceived, strict_decompress(buffer_read(_buffer, buffer_string))); global.receivedClientID = buffer_read(_buffer, buffer_u8); global.receivedPacketID++; if(global.receivedClientID != global.clientID){ update_variables("disablesame"); update_variables("replaceglobalvars"); update_variables("updateprev"); alarm[0] = 10; ds_grid_clear(global.onlineReceived, -1); } break; case 2: ds_grid_read(global.onlineReceived, strict_decompress(buffer_read(_buffer, buffer_string))); global.receivedClientID = buffer_read(_buffer, buffer_u8); update_variables("disablesame"); update_variables("updateprev"); //global.itemChanges = 0; //global.metdeadChanges = 0; //global.eventChanges = 0; alarm[0] = 10; ds_grid_clear(global.onlineReceived, -1); break; case 3: queenHealth = buffer_read(_buffer, buffer_s32); var clientID = buffer_read(_buffer, buffer_u8); phase = buffer_read(_buffer, buffer_s8); state = buffer_read(_buffer, buffer_s8); if(clientID != global.clientID){ if(instance_exists(oQueen) && instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ if(oQueen.phase == phase){ if(global.queenhealthPrev != queenHealth){ if(queenHealth == 999999){ queenHealth = 0; oQueenHead.myhealth = queenHealth; if(queenHealth <= 0){ with(oQueenHead){ if (myhealth <= 0 && state != 100 && state != 50) { if (oQueen.phase < 3) head_damage = 1; if (oQueen.phase == 3) head_damage = 2; if (oQueen.phase < 5) { state = 50; statetime = 0; myhealth = 999999; with (oQueen) { state = 6; statetime = 0; } } if (oQueen.phase == 5) { with (oQueen) { state = 100; statetime = 0; } state = 100; } } } queenHealth = 999999; } } global.queenhealthPrev = queenHealth; oQueenHead.myhealth = queenHealth; } } if(global.queenphasePrev != phase){ global.queenphasePrev = phase; } } } else { if(instance_exists(oQueen) && instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ /* if(oQueen.phase == phase){ if(global.queenhealthPrev != queenHealth){ global.queenhealthPrev = queenHealth; oQueenHead.myhealth = queenHealth; } } if(global.queenphasePrev != phase){ global.queenphasePrev = phase; } */ global.queenhealthPrev = oQueenHead.myhealth; global.queenphasePrev = oQueen.phase; } } break; case 4: var _seed = buffer_read(_buffer, buffer_f64); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID){ if(seed != _seed){ seed = _seed; show_debug_message("seed received"); popup_seed("Seed received"); } } //Power-ups oControl.mod_bombs = buffer_read(_buffer, buffer_s16); oControl.mod_spider = buffer_read(_buffer, buffer_s16); oControl.mod_jumpball = buffer_read(_buffer, buffer_s16); oControl.mod_hijump = buffer_read(_buffer, buffer_s16); oControl.mod_varia = buffer_read(_buffer, buffer_s16); oControl.mod_spacejump = buffer_read(_buffer, buffer_s16); oControl.mod_speedbooster = buffer_read(_buffer, buffer_s16); oControl.mod_screwattack = buffer_read(_buffer, buffer_s16); oControl.mod_gravity = buffer_read(_buffer, buffer_s16); oControl.mod_charge = buffer_read(_buffer, buffer_s16); oControl.mod_ice = buffer_read(_buffer, buffer_s16); oControl.mod_wave = buffer_read(_buffer, buffer_s16); oControl.mod_spazer = buffer_read(_buffer, buffer_s16); oControl.mod_plasma = buffer_read(_buffer, buffer_s16); //Missiles oControl.mod_52 = buffer_read(_buffer, buffer_s16); oControl.mod_53 = buffer_read(_buffer, buffer_s16); oControl.mod_54 = buffer_read(_buffer, buffer_s16); oControl.mod_55 = buffer_read(_buffer, buffer_s16); oControl.mod_56 = buffer_read(_buffer, buffer_s16); oControl.mod_57 = buffer_read(_buffer, buffer_s16); oControl.mod_60 = buffer_read(_buffer, buffer_s16); oControl.mod_100 = buffer_read(_buffer, buffer_s16); oControl.mod_101 = buffer_read(_buffer, buffer_s16); oControl.mod_102 = buffer_read(_buffer, buffer_s16); oControl.mod_104 = buffer_read(_buffer, buffer_s16); oControl.mod_105 = buffer_read(_buffer, buffer_s16); oControl.mod_106 = buffer_read(_buffer, buffer_s16); oControl.mod_107 = buffer_read(_buffer, buffer_s16); oControl.mod_109 = buffer_read(_buffer, buffer_s16); oControl.mod_111 = buffer_read(_buffer, buffer_s16); oControl.mod_150 = buffer_read(_buffer, buffer_s16); oControl.mod_151 = buffer_read(_buffer, buffer_s16); oControl.mod_152 = buffer_read(_buffer, buffer_s16); oControl.mod_153 = buffer_read(_buffer, buffer_s16); oControl.mod_154 = buffer_read(_buffer, buffer_s16); oControl.mod_155 = buffer_read(_buffer, buffer_s16); oControl.mod_156 = buffer_read(_buffer, buffer_s16); oControl.mod_159 = buffer_read(_buffer, buffer_s16); oControl.mod_161 = buffer_read(_buffer, buffer_s16); oControl.mod_163 = buffer_read(_buffer, buffer_s16); oControl.mod_202 = buffer_read(_buffer, buffer_s16); oControl.mod_203 = buffer_read(_buffer, buffer_s16); oControl.mod_204 = buffer_read(_buffer, buffer_s16); oControl.mod_205 = buffer_read(_buffer, buffer_s16); oControl.mod_208 = buffer_read(_buffer, buffer_s16); oControl.mod_210 = buffer_read(_buffer, buffer_s16); oControl.mod_211 = buffer_read(_buffer, buffer_s16); oControl.mod_214 = buffer_read(_buffer, buffer_s16); oControl.mod_250 = buffer_read(_buffer, buffer_s16); oControl.mod_252 = buffer_read(_buffer, buffer_s16); oControl.mod_255 = buffer_read(_buffer, buffer_s16); oControl.mod_257 = buffer_read(_buffer, buffer_s16); oControl.mod_259 = buffer_read(_buffer, buffer_s16); oControl.mod_303 = buffer_read(_buffer, buffer_s16); oControl.mod_304 = buffer_read(_buffer, buffer_s16); oControl.mod_307 = buffer_read(_buffer, buffer_s16); oControl.mod_308 = buffer_read(_buffer, buffer_s16); oControl.mod_309 = buffer_read(_buffer, buffer_s16); //Super Missiles oControl.mod_51 = buffer_read(_buffer, buffer_s16); oControl.mod_110 = buffer_read(_buffer, buffer_s16);; oControl.mod_162 = buffer_read(_buffer, buffer_s16); oControl.mod_206 = buffer_read(_buffer, buffer_s16); //SPECIAL oControl.mod_207 = buffer_read(_buffer, buffer_s16); oControl.mod_209 = buffer_read(_buffer, buffer_s16); oControl.mod_215 = buffer_read(_buffer, buffer_s16); oControl.mod_256 = buffer_read(_buffer, buffer_s16); oControl.mod_300 = buffer_read(_buffer, buffer_s16); oControl.mod_305 = buffer_read(_buffer, buffer_s16); //Energy Tanks oControl.mod_50 = buffer_read(_buffer, buffer_s16); oControl.mod_103 = buffer_read(_buffer, buffer_s16); oControl.mod_108 = buffer_read(_buffer, buffer_s16); oControl.mod_157 = buffer_read(_buffer, buffer_s16); oControl.mod_158 = buffer_read(_buffer, buffer_s16); oControl.mod_200 = buffer_read(_buffer, buffer_s16); oControl.mod_201 = buffer_read(_buffer, buffer_s16); oControl.mod_251 = buffer_read(_buffer, buffer_s16); oControl.mod_254 = buffer_read(_buffer, buffer_s16); oControl.mod_306 = buffer_read(_buffer, buffer_s16); //Power Bombs oControl.mod_58 = buffer_read(_buffer, buffer_s16); oControl.mod_59 = buffer_read(_buffer, buffer_s16); oControl.mod_112 = buffer_read(_buffer, buffer_s16); oControl.mod_160 = buffer_read(_buffer, buffer_s16); oControl.mod_212 = buffer_read(_buffer, buffer_s16); oControl.mod_213 = buffer_read(_buffer, buffer_s16); oControl.mod_253 = buffer_read(_buffer, buffer_s16); //SPECIAL oControl.mod_258 = buffer_read(_buffer, buffer_s16); oControl.mod_301 = buffer_read(_buffer, buffer_s16); oControl.mod_302 = buffer_read(_buffer, buffer_s16); break; case 5: var monstersLeft = buffer_read(_buffer, buffer_s8); var clientID = buffer_read(_buffer, buffer_u8); if(global.clientID != clientID && global.monstersleft != monstersLeft){ global.monstersleft = monstersLeft; global.monstersleftPrev = global.monstersleft; } else if(global.clientID == clientID){ global.monstersleftPrev = global.monstersleft; } alarm[2] = 10; break; case 6: var monstersArea = buffer_read(_buffer, buffer_s8); var clientID = buffer_read(_buffer, buffer_u8); if(global.clientID != clientID && global.monstersarea != monstersArea){ global.monstersarea = monstersArea; global.monstersareaPrev = global.monstersarea; } else if(global.clientID == clientID){ global.monstersareaPrev = global.monstersarea; } alarm[2] = 10; break; case 7: var item = ds_list_create(); ds_list_read(item, strict_decompress(buffer_read(_buffer, buffer_string))); var clientID = buffer_read(_buffer, buffer_u8); var itemArr = item[| 0]; if(is_array(itemArr)){ for(var i=0; i<array_length_1d(global.item); i++){ for(var f=0; f<array_height_2d(itemArr); f++){ if(i == itemArr[f, 1]){ global.itemPrev[i] = itemArr[f, 0]; if(global.item[i] != itemArr[f, 0]){ global.item[i] = itemArr[f, 0]; if(i == 0){ global.bomb = 1; global.bombPrev = global.bomb; popup_text(get_text("Items", "Bombs") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 1){ global.powergrip = 1; global.powergripPrev = global.powergrip; popup_text(get_text("Items", "PowerGrip") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 2){ global.spiderball = 1; global.spiderballPrev = global.spiderball; popup_text(get_text("Items", "SpiderBall") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 3){ global.jumpball = 1; global.jumpballPrev = global.jumpball; popup_text(get_text("Items", "JumpBall") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 4){ global.hijump = 1; global.hijumpPrev = global.hijump; popup_text(get_text("Items", "HiJump") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 5){ if(global.currentsuit != 2){ global.currentsuit = 1; global.currentsuitPrev = global.currentsuit; } popup_text(get_text("Items", "VariaSuit") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 6){ global.spacejump = 1; global.spacejumpPrev = global.spacejump; popup_text(get_text("Items", "SpaceJump") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 7){ global.speedbooster = 1; global.speedboosterPrev = global.speedbooster; popup_text(get_text("Items", "SpeedBooster") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 8){ global.screwattack = 1; global.screwattackPrev = global.screwattack; popup_text(get_text("Items", "ScrewAttack") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 9){ global.currentsuit = 2; global.currentsuitPrev = global.currentsuit; popup_text(get_text("Items", "GravitySuit") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 10){ global.cbeam = 1; global.cbeamPrev = global.cbeam; popup_text(get_text("Items", "ChargeBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 11){ global.ibeam = 1; global.ibeamPrev = global.ibeam; popup_text(get_text("Items", "IceBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 12){ global.wbeam = 1; global.wbeamPrev = global.wbeam; popup_text(get_text("Items", "WaveBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 13){ global.sbeam = 1; global.sbeamPrev = global.sbeam; popup_text(get_text("Items", "SpazerBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 14){ global.pbeam = 1; global.pbeamPrev = global.pbeam; popup_text(get_text("Items", "PlasmaBeam") + " " + get_text("GlobalOptions", "Enabled")); } } } } } } alarm[3] = 10; if(global.clientID == clientID){ ds_list_clear(global.onlineItem); global.itemChanges = 0; } ds_list_destroy(item); break; case 8: var metdead = ds_list_create(); ds_list_read(metdead, strict_decompress(buffer_read(_buffer, buffer_string))); var clientID = buffer_read(_buffer, buffer_u8); var metdeadArr = metdead[| 0]; if(is_array(metdeadArr)){ for(var i=0; i<array_length_1d(global.metdead); i++){ for(var f=0; f<array_height_2d(metdeadArr); f++){ if(i == metdeadArr[f, 1]){ global.metdeadPrev[i] = metdeadArr[f, 0]; if(global.metdead[i] != metdeadArr[f, 0]){ global.metdead[i] = metdeadArr[f, 0]; if(metdeadArr[f, 0] == 1 && global.clientID != clientID){ popup_text("Metroid killed"); } } } } } } alarm[4] = 10; if(global.clientID == clientID){ ds_list_clear(global.onlineMetdead); global.metdeadChanges = 0; } ds_list_destroy(metdead); break; case 9: var event = ds_list_create(); ds_list_read(event, strict_decompress(buffer_read(_buffer, buffer_string))); var clientID = buffer_read(_buffer, buffer_u8); var eventArr = event[| 0]; if(is_array(eventArr)){ for(var i=0; i<array_length_1d(global.event); i++){ for(var f=0; f<array_height_2d(eventArr); f++){ if(i == eventArr[f, 1] && eventArr[f, 1] != 102){ global.eventPrev[i] = eventArr[f, 0]; if(global.event[i] != eventArr[f, 0]){ global.event[i] = eventArr[f, 0]; } if(eventArr[f, 1] == 250) popup_text("EMP Activated"); if(eventArr[f, 1] == 308){ if(eventArr[f, 0] == 1 && clientID != global.clientID){ if(instance_exists(oCharacter)){ with(oCharacter){ facing = 0; if (global.currentsuit == 0) sprite_index = scr_suit_sprites(sFront,sFront_fusion); if (global.currentsuit == 1) sprite_index = scr_suit_sprites(sVFront,sFront_fusion); if (global.currentsuit == 2) sprite_index = scr_suit_sprites(sGFront,sFront_fusion); canbehit = 0; xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; } } global.enablecontrol = 0; oControl.displaygui = 0; popup_text_ext("Ship reached", 120); } if(eventArr[f, 0] == 2 && clientID != global.clientID){ oControl.displaygui = 0; global.enablecontrol = 0; if(instance_exists(oCharacter)){ with(oCharacter){ xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; } } } if(eventArr[f, 0] == 3 && clientID != global.clientID){ instance_create(0, 0, oFinalFadeout); mus_fadeout(musHatchling); global.enablecontrol = 0; if(instance_exists(oCharacter)){ with(oCharacter){ xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; } } } if(eventArr[f, 0] == 4 && clientID != global.clientID){ if(instance_exists(oCharacter)){ with(oCharacter){ xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; canbehit = 1; } } remove_persistent_objects(); sfx_stop_all(); global.vibL = 0; global.vibR = 0; global.ingame = 0; global.darkness = 0; global.gotolog = -1; global.enablecontrol = 1; global.transitiontype = 0; oControl.displaygui = 1; room_goto(rm_credits); mus_stop_all(); mus_play_once(musCredits); } } } } } } alarm[5] = 10; if(global.clientID == clientID){ ds_list_clear(global.onlineEvent); global.eventChanges = 0; } ds_list_destroy(event); break; case 10: var tileCount = buffer_read(_buffer, buffer_u16); if(tileCount > 0){ for(var i=0; i<tileCount; i++){ var tileX = buffer_read(_buffer, buffer_u8); var tileY = buffer_read(_buffer, buffer_u8); var tileData = buffer_read(_buffer, buffer_u8); global.dmapPrev[tileX, tileY] = tileData; if(global.dmap[tileX, tileY] != tileData){ global.dmap[tileX, tileY] = tileData; if(global.ingame){ with (oControl) event_user(2); } if(instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map)){ surface_free(oSS_Control.s_map); } } } var clientID = buffer_read(_buffer, buffer_u8); } alarm[6] = 10; break; case 11: var itemstaken = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && itemstaken != global.itemstaken){ global.itemstakenPrev = itemstaken; global.itemstaken = itemstaken; } else if(clientID == global.clientID){ global.itemstakenPrev = global.itemstaken; } alarm[7] = 1; break; case 12: var maxmissiles = buffer_read(_buffer, buffer_u16); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && maxmissiles != global.maxmissiles){ global.maxmissilesPrev = maxmissiles; global.maxmissiles = maxmissiles; } else if(clientID == global.clientID){ global.maxmissilesPrev = global.maxmissiles; } global.missilesPrev = maxmissiles; global.missiles = maxmissiles; alarm[8] = 1; break; case 13: var maxsmissiles = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && maxsmissiles != global.maxsmissiles){ global.maxsmissilesPrev = maxsmissiles; global.maxsmissiles = maxsmissiles; } else if(clientID == global.clientID){ global.maxsmissilesPrev = global.maxsmissiles; } global.smissilesPrev = maxsmissiles; global.smissiles = maxsmissiles; alarm[9] = 1; break; case 14: var maxpbombs = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && maxpbombs != global.maxpbombs){ global.maxpbombsPrev = maxpbombs; global.maxpbombs = maxpbombs; } else if(clientID == global.clientID){ global.maxpbombsPrev = global.maxpbombs; } global.pbombsPrev = maxpbombs; global.pbombs = maxpbombs; maxpbombsTimer = 1; break; case 15: var maxhealth = buffer_read(_buffer, buffer_u16); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && maxhealth != global.maxhealth){ global.maxhealthPrev = maxhealth; global.maxhealth = maxhealth; } else if(clientID == global.clientID){ global.maxhealthPrev = global.maxhealth; } global.playerhealthPrev = maxhealth; global.playerhealth = maxhealth; maxhealthTimer = 1; break; case 16: var etanks = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && etanks != global.etanks){ global.etanksPrev = etanks; global.etanks = etanks; } else if(clientID == global.clientID){ global.etanksPrev = global.etanks; } etanksTimer = 1; break; case 17: var mtanks = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && mtanks != global.mtanks){ global.mtanksPrev = mtanks; global.mtanks = mtanks; } else if(clientID == global.clientID){ global.mtanksPrev = global.mtanks; } mtanksTimer = 1; break; case 18: var stanks = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && stanks != global.stanks){ global.stanksPrev = stanks; global.stanks = stanks; } else if(clientID == global.clientID){ global.stanksPrev = global.stanks; } stanksTimer = 1; break; case 19: var ptanks = buffer_read(_buffer, buffer_u8); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && ptanks != global.ptanks){ global.ptanksPrev = ptanks; global.ptanks = ptanks; } else if(clientID == global.clientID){ global.ptanksPrev = global.ptanks; } ptanksTimer = 1; break; case 20: var time = buffer_read(_buffer, buffer_s32); global.gametime = time; break; case 21: var clientID = buffer_read(_buffer, buffer_u8); var dir = buffer_read(_buffer, buffer_s16); var sprX = buffer_read(_buffer, buffer_s16); var sprY = buffer_read(_buffer, buffer_s16); var charge = buffer_read(_buffer, buffer_u8); var sax = buffer_read(_buffer, buffer_u8); if(ds_list_size(roomListData) > 0 && clientID != global.clientID){ for(var i=0; i<ds_list_size(roomListData); i++){ var arrDraw = roomListData[| i]; var arrID = arrDraw[0]; if(clientID == arrID){ if(instance_exists(oCharacter)){ with(oCharacter){ shoot_beam_receive(sprX, sprY, dir, charge, sax, clientID); } } } } } break; case 22: var clientID = buffer_read(_buffer, buffer_u8); var bombX = buffer_read(_buffer, buffer_s16); var bombY = buffer_read(_buffer, buffer_s16); var sax = buffer_read(_buffer, buffer_u8); if(ds_list_size(roomListData) > 0 && clientID != global.clientID){ for(var i=0; i<ds_list_size(roomListData); i++){ var arrDraw = roomListData[| i]; var arrID = arrDraw[0]; if(clientID == arrID){ if(instance_exists(oCharacter)){ bomb = instance_create(bombX, bombY, oBombMulti); bomb.sax = sax; bomb.myid = clientID; sfx_play(sndBombSet); } } } } break; case 23: var clientID = buffer_read(_buffer, buffer_u8); var currentWeapon = buffer_read(_buffer, buffer_u8); var dir = buffer_read(_buffer, buffer_s16); var missileX = buffer_read(_buffer, buffer_s16); var missileY = buffer_read(_buffer, buffer_s16); var sax = buffer_read(_buffer, buffer_u8); var velX = buffer_read(_buffer, buffer_s8); var velY = buffer_read(_buffer, buffer_s8); var icemissiles = buffer_read(_buffer, buffer_u8); if(ds_list_size(roomListData) > 0 && clientID != global.clientID){ for(var i=0; i<ds_list_size(roomListData); i++){ var arrDraw = roomListData[| i]; var arrID = arrDraw[0]; if(clientID == arrID){ if(instance_exists(oCharacter)){ with(oCharacter){ shoot_missile_receive(dir, currentWeapon, missileX, missileY, sax, clientID, velX, velY, icemissiles); } } } } } break; case 24: var clientID = buffer_read(_buffer, buffer_u8); var pbombX = buffer_read(_buffer, buffer_s16); var pbombY = buffer_read(_buffer, buffer_s16); var sax = buffer_read(_buffer, buffer_u8); if(ds_list_size(roomListData) > 0 && clientID != global.clientID){ for(var i=0; i<ds_list_size(roomListData); i++){ var arrDraw = roomListData[| i]; var arrID = arrDraw[0]; if(clientID == arrID){ if(instance_exists(oCharacter)){ pbomb = instance_create(pbombX, pbombY, oPBombMulti); pbomb.sax = sax; pbomb.myid = clientID; sfx_play(sndPBombSet); } } } } break; case 25: var playerhealth = buffer_read(_buffer, buffer_s16); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && playerhealth != global.playerhealth){ if(instance_exists(oCharacter)){ if(oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING){ global.playerhealthPrev = playerhealth; global.playerhealth = playerhealth; } else if(oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0)){ if(global.playerhealth != global.maxhealth){ refill_heath_ammo(); } if(global.missiles != global.maxmissiles){ refill_heath_ammo(); } if(global.smissiles != global.maxsmissiles){ refill_heath_ammo(); } if(global.pbombs != global.maxpbombs){ refill_heath_ammo(); } buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } } else { global.playerhealthPrev = playerhealth; global.playerhealth = playerhealth; } } else if(clientID == global.clientID){ global.playerhealthPrev = global.playerhealth; } healthTimer = 1; break; case 26: var missiles = buffer_read(_buffer, buffer_s16); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && missiles != global.missiles){ if(instance_exists(oCharacter)){ if(oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING){ global.missilesPrev = missiles; global.missiles = missiles; } else if(oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0)){ if(global.playerhealth != global.maxhealth){ refill_heath_ammo(); } if(global.missiles != global.maxmissiles){ refill_heath_ammo(); } if(global.smissiles != global.maxsmissiles){ refill_heath_ammo(); } if(global.pbombs != global.maxpbombs){ refill_heath_ammo(); } buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } } else { global.missilesPrev = missiles; global.missiles = missiles; } } else if(clientID == global.clientID){ global.missilesPrev = global.missiles; } missilesTimer = 1; break; case 27: var smissiles = buffer_read(_buffer, buffer_s16); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && smissiles != global.smissiles){ if(instance_exists(oCharacter)){ if(oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING){ global.smissilesPrev = smissiles; global.smissiles = smissiles; } else if(oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0)){ if(global.playerhealth != global.maxhealth){ refill_heath_ammo(); } if(global.missiles != global.maxmissiles){ refill_heath_ammo(); } if(global.smissiles != global.maxsmissiles){ refill_heath_ammo(); } if(global.pbombs != global.maxpbombs){ refill_heath_ammo(); } buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } } else { global.smissilesPrev = smissiles; global.smissiles = smissiles; } } else if(clientID == global.clientID){ global.smissilesPrev = global.smissiles; } smissilesTimer = 1; break; case 28: var pbombs = buffer_read(_buffer, buffer_s16); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID && pbombs != global.pbombs){ if(instance_exists(oCharacter)){ if(oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING){ global.pbombsPrev = pbombs; global.pbombs = pbombs; } else if(oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0)){ if(global.playerhealth != global.maxhealth){ refill_heath_ammo(); } if(global.missiles != global.maxmissiles){ refill_heath_ammo(); } if(global.smissiles != global.maxsmissiles){ refill_heath_ammo(); } if(global.pbombs != global.maxpbombs){ refill_heath_ammo(); } buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 102); buffer_write(buffer, buffer_s16, global.playerhealth); buffer_write(buffer, buffer_s16, global.missiles); buffer_write(buffer, buffer_u8, global.smissiles); buffer_write(buffer, buffer_u8, global.pbombs); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } } else { global.pbombsPrev = pbombs; global.pbombs = pbombs; } } else if(clientID == global.clientID){ global.pbombsPrev = global.pbombs; } pbombsTimer = 1; break; case 29: var syncDiff = buffer_read(_buffer, buffer_u8); if(syncDiff != syncedDifficulty){ syncedDifficulty = syncDiff; var str; switch(syncedDifficulty){ case 0: str = "Easy"; break; case 1: str = "Normal"; break; case 2: str = "Hard"; break; case 3: str = "Fusion"; break; } popup_text(str); } if(instance_exists(oOptionsMod) && oOptionsMod.menuDifficulty != syncedDifficulty) oOptionsMod.menuDifficulty = syncedDifficulty; break; case 30: var syncELM = buffer_read(_buffer, buffer_u8); if(syncELM != elm){ elm = syncELM; var str; switch(elm){ case 0: str = "ELM Disabled"; break; case 1: str = "ELM Enabled"; break; } popup_text(str); } if(instance_exists(oOptionsMod) && oOptionsMod.elm != elm) oOptionsMod.elm = elm; break; case 31: var otherAbsorbRelativeX = buffer_read(_buffer, buffer_s16); var otherAbsorbRelativeY = buffer_read(_buffer, buffer_s16); var otherAbsorbSpriteHeight = buffer_read(_buffer, buffer_u8); global.absorbRelativeX = otherAbsorbRelativeX; global.absorbRelativeY = otherAbsorbRelativeY; global.absorbSpriteHeight = otherAbsorbSpriteHeight; global.beingAbsorbed = true; break; case 32: var mapposx = buffer_read(_buffer, buffer_s16); var mapposy = buffer_read(_buffer, buffer_s16); global.mapmarker = 1; global.mapmarkerx = mapposx; global.mapmarkery = mapposy; global.playerMapPosTimer = 600; break; case 33: var mirror = buffer_read(_buffer, buffer_s8); var sentRoom = buffer_read(_buffer, buffer_s16); var playerX = buffer_read(_buffer, buffer_s16); var playerY = buffer_read(_buffer, buffer_s16); var sax = buffer_read(_buffer, buffer_s8); if(room == sentRoom && !sax){ seq = instance_create(playerX, playerY, oDeathSequenceMulti); seq.facing = mirror; } break; case 50: var resend = false; for(var i=0; i<array_length_1d(global.item); i++){ var receivedItem = buffer_read(_buffer, buffer_u8); if(receivedItem == 1 && global.item[i] == 0){ global.item[i] = receivedItem; global.itemPrev[i] = global.item[i]; if(i == 0){ global.bomb = 1; global.bombPrev = global.bomb; popup_text(get_text("Items", "Bombs") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 1){ global.powergrip = 1; global.powergripPrev = global.powergrip; popup_text(get_text("Items", "PowerGrip") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 2){ global.spiderball = 1; global.spiderballPrev = global.spiderball; popup_text(get_text("Items", "SpiderBall") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 3){ global.jumpball = 1; global.jumpballPrev = global.jumpball; popup_text(get_text("Items", "JumpBall") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 4){ global.hijump = 1; global.hijumpPrev = global.hijump; popup_text(get_text("Items", "HiJump") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 5){ global.currentsuit = 1; global.currentsuitPrev = global.currentsuit; popup_text(get_text("Items", "VariaSuit") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 6){ global.spacejump = 1; global.spacejumpPrev = global.spacejump; popup_text(get_text("Items", "SpaceJump") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 7){ global.speedbooster = 1; global.speedboosterPrev = global.speedbooster; popup_text(get_text("Items", "SpeedBooster") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 8){ global.screwattack = 1; global.screwattackPrev = global.screwattack; popup_text(get_text("Items", "ScrewAttack") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 9){ global.currentsuit = 2; global.currentsuitPrev = global.currentsuit; popup_text(get_text("Items", "GravitySuit") + " " + get_text("GlobalOptions", "Enabled")); if(sfx_isplaying(sndSpinJump)){ sfx_stop(sndSpinJump); } if(sfx_isplaying(sndSpaceJump)){ sfx_stop(sndSpaceJump); } if(sfx_isplaying(sndScrewAttack)){ sfx_stop(sndScrewAttack); } if(sfx_isplaying(sndSpaceScrewAttack)){ sfx_stop(sndSpaceScrewAttack); } } if(i == 10){ global.cbeam = 1; global.cbeamPrev = global.cbeam; popup_text(get_text("Items", "ChargeBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 11){ global.ibeam = 1; global.ibeamPrev = global.ibeam; popup_text(get_text("Items", "IceBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 12){ global.wbeam = 1; global.wbeamPrev = global.wbeam; popup_text(get_text("Items", "WaveBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 13){ global.sbeam = 1; global.sbeamPrev = global.sbeam; popup_text(get_text("Items", "SpazerBeam") + " " + get_text("GlobalOptions", "Enabled")); } if(i == 14){ global.pbeam = 1; global.pbeamPrev = global.pbeam; popup_text(get_text("Items", "PlasmaBeam") + " " + get_text("GlobalOptions", "Enabled")); } } else if(receivedItem == 0 && global.item[i] == 1){ resend = true; } } var etankCount = 0; for(var i=0; i<array_length_1d(global.item); i++){ if(i == 50 || i == 103 || i == 108 || i == 157 || i == 158 || i == 200 || i == 201 || i == 251 || i == 254 || i == 306){ if(global.item[i] == 1){ etankCount++; } } } if(etankCount != global.etanks){ global.etanks = etankCount; global.maxhealth = ((99 + (100 * global.etanks)) * oControl.mod_etankhealthmult); global.playerhealth = global.maxhealth; } var stankCount = 0; for(var i=0; i<array_length_1d(global.item); i++){ if(i == 51 || i == 110 || i == 162 || i == 206 || i == 207 || i == 209 || i == 215 || i == 256 || i == 300 || i == 305){ if(global.item[i] == 1){ stankCount++; } } } if(stankCount != global.stanks){ global.stanks = stankCount; if (global.difficulty < 2) global.maxsmissiles = 2 * global.stanks; if (global.difficulty == 2) global.maxsmissiles = 1 * global.stanks; global.smissiles = global.maxsmissiles; } var ptankCount = 0; for(var i=0; i<array_length_1d(global.item); i++){ if(i == 58 || i == 59 || i == 112 || i == 160 || i == 212 || i == 213 || i == 253 || i == 258 || i == 301 || i == 302){ if(global.item[i] == 1){ ptankCount++; } } } if(ptankCount != global.ptanks){ global.ptanks = ptankCount; if (global.difficulty < 2) global.maxpbombs = 2 * global.ptanks; if (global.difficulty == 2) global.maxpbombs = 1 * global.ptanks; global.pbombs = global.maxpbombs; } var mtankCount = 0; for(var i=0; i<array_length_1d(global.item); i++){ if(i == 52 || i == 53 || i == 54 || i == 55 || i == 56 || i == 57 || i == 60 || i == 100 || i == 101 || i == 102 || i == 104 || i == 105 || i == 106 || i == 107 || i == 109 || i == 111 || i == 150 || i == 151 || i == 152 || i == 153 || i == 154 || i == 155 || i == 156 || i == 159 || i == 161 || i == 163 || i == 202 || i == 203 || i == 204 || i == 205 || i == 208 || i == 210 || i == 211 || i == 214 || i == 250 || i == 252 || i == 255 || i == 257 || i == 259 || i == 303 || i == 304 || i == 307 || i == 308 || i == 309){ if(global.item[i] == 1){ mtankCount++; } } } if(mtankCount != global.mtanks){ global.mtanks = mtankCount; if (global.difficulty < 2) global.maxmissiles = oControl.mod_Mstartingcount + (5 * global.mtanks); if (global.difficulty == 2) global.maxmissiles = oControl.mod_Mstartingcount + (2 * global.mtanks); global.missiles = global.maxmissiles; } if(resend){ var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; itemBuffer = buffer_create(size, type, alignment); buffer_seek(itemBuffer, buffer_seek_start, 0); buffer_write(itemBuffer, buffer_u8, 50); for(var i=0; i<array_length_1d(global.item); i++){ buffer_write(itemBuffer, buffer_u8, global.item[i]); } var bufferSize = buffer_tell(itemBuffer); buffer_seek(itemBuffer, buffer_seek_start, 0); buffer_write(itemBuffer, buffer_s32, bufferSize); buffer_write(itemBuffer, buffer_u8, 50); for(var i=0; i<array_length_1d(global.item); i++){ buffer_write(itemBuffer, buffer_u8, global.item[i]); } network_send_packet(socket, itemBuffer, buffer_tell(itemBuffer)); buffer_delete(itemBuffer); } break; case 51: var resend = false; for(var i=0; i<array_length_1d(global.event); i++){ if(i < 350){ var receivedEvent = buffer_read(_buffer, buffer_u8); if(floor(receivedEvent) > floor(global.event[i]) && i != 102){ global.event[i] = receivedEvent; global.eventPrev[i] = global.event[i]; if(i == 308){ if(receivedEvent == 1){ if(instance_exists(oCharacter)){ with(oCharacter){ facing = 0; if (global.currentsuit == 0) sprite_index = scr_suit_sprites(sFront,sFront_fusion); if (global.currentsuit == 1) sprite_index = scr_suit_sprites(sVFront,sFront_fusion); if (global.currentsuit == 2) sprite_index = scr_suit_sprites(sGFront,sFront_fusion); global.enablecontrol = 0; canbehit = 0; oControl.displaygui = 0; xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; } } popup_text_ext("Ship reached", 120); } if(receivedEvent == 2){ oControl.displaygui = 0; global.enablecontrol = 0; if(instance_exists(oCharacter)){ with(oCharacter){ xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; } } } if(receivedEvent == 3){ instance_create(0, 0, oFinalFadeout); mus_fadeout(musHatchling); global.enablecontrol = 0; if(instance_exists(oCharacter)){ with(oCharacter){ xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; } } } if(receivedEvent == 4){ if(instance_exists(oCharacter)){ with(oCharacter){ xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; canbehit = 1; } } remove_persistent_objects(); sfx_stop_all(); global.vibL = 0; global.vibR = 0; global.ingame = 0; global.darkness = 0; global.gotolog = -1; global.enablecontrol = 1; global.transitiontype = 0; oControl.displaygui = 1; room_goto(rm_credits); mus_stop_all(); mus_play_once(musCredits); } } } else if(floor(receivedEvent) < floor(global.event[i]) && i != 102){ resend = true; } } } if(resend){ var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; eventBuffer = buffer_create(size, type, alignment); buffer_seek(eventBuffer, buffer_seek_start, 0); buffer_write(eventBuffer, buffer_u8, 51); for(var i=0; i<array_length_1d(global.event); i++){ buffer_write(eventBuffer, buffer_u8, global.event[i]); } var bufferSize = buffer_tell(eventBuffer); buffer_seek(eventBuffer, buffer_seek_start, 0); buffer_write(eventBuffer, buffer_s32, bufferSize); buffer_write(eventBuffer, buffer_u8, 51); for(var i=0; i<array_length_1d(global.event); i++){ buffer_write(eventBuffer, buffer_u8, global.event[i]); } network_send_packet(socket, eventBuffer, buffer_tell(eventBuffer)); buffer_delete(eventBuffer); } break; case 52: var resend = false; for(var i=0; i<array_length_1d(global.metdead); i++){ var receivedMetdead = buffer_read(_buffer, buffer_u8); if(receivedMetdead == 1 && global.metdead[i] == 0){ global.metdead[i] = receivedMetdead; global.metdeadPrev[i] = global.metdead[i]; } else if(receivedMetdead == 0 && global.metdead[i] == 1){ resend = true; } } if(global.gamemode == 1){ var countArea = 0; var countLeft = 0; for(var i=0; i<array_length_1d(global.metdead); i++){ if(i <= 45){ if(global.metdead[i] == 0){ countLeft++; } if(global.lavastate >= 0 && global.metdead[i] == 0 && i == 0){ countArea++; } if(global.lavastate >= 1 && global.metdead[i] == 0 && (i == 1 || i == 2 || i == 3 || i == 4)){ countArea++; } if(global.lavastate >= 2 && global.metdead[i] == 0 && (i == 5 || i == 6 || i == 7 || i == 8 || i == 9 || i == 10 || i == 11 || i == 12)){ countArea++; } if(global.lavastate >= 3 && global.metdead[i] == 0 && (i == 13 || i == 14 || i == 15 || i == 16 || i == 17 || i == 18 || i == 19 || i == 20 || i == 21 || i == 22)){ countArea++; } if(global.lavastate >= 4 && global.metdead[i] == 0 && (i == 23 || i == 24)){ countArea++; } if(global.lavastate >= 5 && global.metdead[i] == 0 && (i == 25 || i == 26)){ countArea++; } if(global.lavastate >= 6 && global.metdead[i] == 0 && (i == 27 || i == 28 || i == 29 || i == 30 || i == 31 || i == 32)){ countArea++; } if(global.lavastate >= 7 && global.metdead[i] == 0 && (i == 33 || i == 34 || i == 35 || i == 36 || i == 37 || i == 38 || i == 39 || i == 40)){ countArea++; } if(global.lavastate >= 8 && global.metdead[i] == 0 && i == 41){ countArea++; } if(global.lavastate >= 9 && global.metdead[i] == 0 && i == 42){ countArea++; } if(global.lavastate >= 10 && global.metdead[i] == 0 && (i == 43 || i == 44 || i == 45)){ countArea++; } } } if(global.lavastate < 11){ if(global.event[303] == 0){ countLeft++; } if(global.monstersleft != countLeft){ global.monstersleft = countLeft; } if(global.monstersarea != countArea){ global.monstersarea = countArea; } } } else if(global.gamemode > 1){ var countArea = 0; var countLeft = 0; for(var i=0; i<array_length_1d(global.metdead); i++){ if(i <= 45){ if(global.metdead[i] == 0){ countLeft++; } if(global.metdead[i] == 0 && i != 11 && i != 23 && i != 24 && i != 41 && i != 42 && i != 43 && i != 44 && i != 45){ countArea++; } if(global.metdead[i] == 0 && global.event[109] == 1 && i == 11){ countArea++; } if(global.metdead[i] == 0 && global.event[171] == 1 && (i == 23 || i == 24)){ countArea++; } if(global.lavastate >= 8 && global.metdead[i] == 0 && i == 41){ countArea++; } if(global.lavastate >= 9 && global.metdead[i] == 0 && i == 42){ countArea++; } if(global.lavastate >= 10 && global.metdead[i] == 0 && (i == 43 || i == 44 || i == 45)){ countArea++; } } } if(global.lavastate < 11){ if(global.event[303] == 0){ countLeft++; } if(global.monstersleft != countLeft){ global.monstersleft = countLeft; } if(global.monstersarea != countArea){ global.monstersarea = countArea; } } } if(resend){ var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; metdeadBuffer = buffer_create(size, type, alignment); buffer_seek(metdeadBuffer, buffer_seek_start, 0); buffer_write(metdeadBuffer, buffer_u8, 52); for(var i=0; i<array_length_1d(global.metdead); i++){ buffer_write(metdeadBuffer, buffer_u8, global.metdead[i]); } var bufferSize = buffer_tell(metdeadBuffer); buffer_seek(metdeadBuffer, buffer_seek_start, 0); buffer_write(metdeadBuffer, buffer_s32, bufferSize); buffer_write(metdeadBuffer, buffer_u8, 52); for(var i=0; i<array_length_1d(global.metdead); i++){ buffer_write(metdeadBuffer, buffer_u8, global.metdead[i]); } network_send_packet(socket, metdeadBuffer, buffer_tell(metdeadBuffer)); buffer_delete(metdeadBuffer); } break; case 53: var part = buffer_read(_buffer, buffer_u8); var resend = false; for(var i=0; i<array_height_2d(global.dmap); i++){ for(var j=0; j<array_length_2d(global.dmap, i); j++){ if((part == 1 && i < 20) || (part == 2 && i >= 20 && i < 40) || (part == 3 && i >= 40 && i < 60) || (part == 4 && i >= 60 && i < 80)){ var receiveddmap = buffer_read(_buffer, buffer_u8); if(receiveddmap > global.dmap[i, j]){ global.dmap[i, j] = receiveddmap; global.dmapPrev[i, j] = global.dmap[i, j]; } else if(receiveddmap < global.dmap[i, j]){ resend = true; } } } } if(resend){ var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; dmapBuffer = buffer_create(size, type, alignment); buffer_seek(dmapBuffer, buffer_seek_start, 0); buffer_write(dmapBuffer, buffer_u8, 53); for(var i=0; i<array_height_2d(global.dmap); i++){ for(var j=0; j<array_length_2d(global.dmap, i); j++){ buffer_write(dmapBuffer, buffer_u8, global.dmap[i, j]); } } var bufferSize = buffer_tell(dmapBuffer); buffer_seek(dmapBuffer, buffer_seek_start, 0); buffer_write(dmapBuffer, buffer_s32, bufferSize); buffer_write(dmapBuffer, buffer_u8, 53); for(var i=0; i<array_height_2d(global.dmap); i++){ for(var j=0; j<array_length_2d(global.dmap, i); j++){ buffer_write(dmapBuffer, buffer_u8, global.dmap[i, j]); } } network_send_packet(socket, dmapBuffer, buffer_tell(dmapBuffer)); buffer_delete(dmapBuffer); } if(global.ingame){ with (oControl) event_user(2); } if(instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map)){ surface_free(oSS_Control.s_map); } break; } } 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer11 = buffer_create(size, type, alignment); buffer_seek(buffer11, buffer_seek_start, 0); buffer_write(buffer11, buffer_u8, 36); buffer_write(buffer11, buffer_s8, oCharacter.mirror); buffer_write(buffer11, buffer_s16, room); buffer_write(buffer11, buffer_s16, global.currX); buffer_write(buffer11, buffer_s16, global.currY); buffer_write(buffer11, buffer_s8, global.sax); var bufferSize = buffer_tell(buffer11); buffer_seek(buffer11, buffer_seek_start, 0); buffer_write(buffer11, buffer_s32, bufferSize); buffer_write(buffer11, buffer_u8, 36); buffer_write(buffer11, buffer_s8, oCharacter.mirror); buffer_write(buffer11, buffer_s16, room); buffer_write(buffer11, buffer_s16, global.currX); buffer_write(buffer11, buffer_s16, global.currY); buffer_write(buffer11, buffer_s8, global.sax); var result = network_send_packet(socket, buffer11, buffer_tell(buffer11)); buffer_delete(buffer11); 1 603 7 0 0 -1 2 self 0 0 1 if(!global.saxmode || global.spectator) exit; var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer10 = buffer_create(size, type, alignment); buffer_seek(buffer10, buffer_seek_start, 0); buffer_write(buffer10, buffer_u8, 35); buffer_write(buffer10, buffer_s16, global.mapposx); buffer_write(buffer10, buffer_s16, global.mapposy); var bufferSize = buffer_tell(buffer10); buffer_seek(buffer10, buffer_seek_start, 0); buffer_write(buffer10, buffer_s32, bufferSize); buffer_write(buffer10, buffer_u8, 35); buffer_write(buffer10, buffer_s16, global.mapposx); buffer_write(buffer10, buffer_s16, global.mapposy); var result = network_send_packet(socket, buffer10, buffer_tell(buffer10)); buffer_delete(buffer10); 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer9 = buffer_create(size, type, alignment); buffer_seek(buffer9, buffer_seek_start, 0); buffer_write(buffer9, buffer_u8, 34); buffer_write(buffer9, buffer_u8, global.saxmode); var bufferSize = buffer_tell(buffer9); buffer_seek(buffer9, buffer_seek_start, 0); buffer_write(buffer9, buffer_s32, bufferSize); buffer_write(buffer9, buffer_u8, 34); buffer_write(buffer9, buffer_u8, global.saxmode); var result = network_send_packet(socket, buffer9, buffer_tell(buffer9)); buffer_delete(buffer9); 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer8 = buffer_create(size, type, alignment); buffer_seek(buffer8, buffer_seek_start, 0); buffer_write(buffer8, buffer_u8, 33); buffer_write(buffer8, buffer_u8, global.lobbyLocked); var bufferSize = buffer_tell(buffer8); buffer_seek(buffer8, buffer_seek_start, 0); buffer_write(buffer8, buffer_s32, bufferSize); buffer_write(buffer8, buffer_u8, 33); buffer_write(buffer8, buffer_u8, global.lobbyLocked); var result = network_send_packet(socket, buffer8, buffer_tell(buffer8)); buffer_delete(buffer8); 1 603 7 0 0 -1 2 self 0 0 1 //Reset server packet var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer7 = buffer_create(size, type, alignment); buffer_seek(buffer7, buffer_seek_start, 0); buffer_write(buffer7, buffer_u8, 32); var bufferSize = buffer_tell(buffer7); buffer_seek(buffer7, buffer_seek_start, 0); buffer_write(buffer7, buffer_s32, bufferSize); buffer_write(buffer7, buffer_u8, 32); var result = network_send_packet(socket, buffer7, buffer_tell(buffer7)); buffer_delete(buffer7); 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer6 = buffer_create(size, type, alignment); buffer_seek(buffer6, buffer_seek_start, 0); buffer_write(buffer6, buffer_u8, 31); buffer_write(buffer6, buffer_u8, global.otherAbsorbID); buffer_write(buffer6, buffer_s16, global.otherAbsorbRelativeX); buffer_write(buffer6, buffer_s16, global.otherAbsorbRelativeY); buffer_write(buffer6, buffer_u8, global.otherAbsorbSpriteHeight); var bufferSize = buffer_tell(buffer6); buffer_seek(buffer6, buffer_seek_start, 0); buffer_write(buffer6, buffer_s32, bufferSize); buffer_write(buffer6, buffer_u8, 31); buffer_write(buffer6, buffer_u8, global.otherAbsorbID); buffer_write(buffer6, buffer_s16, global.otherAbsorbRelativeX); buffer_write(buffer6, buffer_s16, global.otherAbsorbRelativeY); buffer_write(buffer6, buffer_u8, global.otherAbsorbSpriteHeight); var result = network_send_packet(socket, buffer6, buffer_tell(buffer6)); buffer_delete(buffer6); 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer5 = buffer_create(size, type, alignment); buffer_seek(buffer5, buffer_seek_start, 0); buffer_write(buffer5, buffer_u8, 106); buffer_write(buffer5, buffer_u8, global.checkID); buffer_write(buffer5, buffer_s16, global.checkX); buffer_write(buffer5, buffer_s16, global.checkY); buffer_write(buffer5, buffer_u8, global.checkBeam); buffer_write(buffer5, buffer_u8, global.checkMissile); buffer_write(buffer5, buffer_u8, global.checkDamage); buffer_write(buffer5, buffer_u8, global.checkFreeze); var bufferSize = buffer_tell(buffer5); buffer_seek(buffer5, buffer_seek_start, 0); buffer_write(buffer5, buffer_s32, bufferSize); buffer_write(buffer5, buffer_u8, 106); buffer_write(buffer5, buffer_u8, global.checkID); buffer_write(buffer5, buffer_s16, global.checkX); buffer_write(buffer5, buffer_s16, global.checkY); buffer_write(buffer5, buffer_u8, global.checkBeam); buffer_write(buffer5, buffer_u8, global.checkMissile); buffer_write(buffer5, buffer_u8, global.checkDamage); buffer_write(buffer5, buffer_u8, global.checkFreeze); var result = network_send_packet(socket, buffer5, buffer_tell(buffer5)); buffer_delete(buffer5); 1 603 7 0 0 -1 2 self 0 0 1 if(global.spectator) exit; var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer4 = buffer_create(size, type, alignment); buffer_seek(buffer4, buffer_seek_start, 0); buffer_write(buffer4, buffer_u8, 105); buffer_write(buffer4, buffer_u8, global.otherID); var bufferSize = buffer_tell(buffer4); buffer_seek(buffer4, buffer_seek_start, 0); buffer_write(buffer4, buffer_s32, bufferSize); buffer_write(buffer4, buffer_u8, 105); buffer_write(buffer4, buffer_u8, global.otherID); var result = network_send_packet(socket, buffer4, buffer_tell(buffer4)); buffer_delete(buffer4); 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer3 = buffer_create(size, type, alignment); buffer_seek(buffer3, buffer_seek_start, 0); buffer_write(buffer3, buffer_u8, 30); buffer_write(buffer3, buffer_u8, elm); var bufferSize = buffer_tell(buffer3); buffer_seek(buffer3, buffer_seek_start, 0); buffer_write(buffer3, buffer_s32, bufferSize); buffer_write(buffer3, buffer_u8, 30); buffer_write(buffer3, buffer_u8, elm); var result = network_send_packet(socket, buffer3, buffer_tell(buffer3)); buffer_delete(buffer3); 1 603 7 0 0 -1 2 self 0 0 1 var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer2 = buffer_create(size, type, alignment); buffer_seek(buffer2, buffer_seek_start, 0); buffer_write(buffer2, buffer_u8, 29); buffer_write(buffer2, buffer_u8, syncedDifficulty); var bufferSize = buffer_tell(buffer2); buffer_seek(buffer2, buffer_seek_start, 0); buffer_write(buffer2, buffer_s32, bufferSize); buffer_write(buffer2, buffer_u8, 29); buffer_write(buffer2, buffer_u8, syncedDifficulty); var result = network_send_packet(socket, buffer2, buffer_tell(buffer2)); buffer_delete(buffer2); 1 603 7 0 0 -1 2 self 0 0 1 if(room == rm_credits){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 19); buffer_write(buffer, buffer_s32, global.gametime); buffer_write(buffer, buffer_u8, global.clientID); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 19); buffer_write(buffer, buffer_s32, global.gametime); buffer_write(buffer, buffer_u8, global.clientID); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(room == rm_score){ resetTimer = 5; } 1 603 7 0 0 -1 2 self 0 0 1 if(connected){ buffer_delete(buffer); var size, type, alignment; size = 1024; type = buffer_grow; alignment = 1; buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 254); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, global.sax); var bufferSize = buffer_tell(buffer); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_s32, bufferSize); buffer_write(buffer, buffer_u8, 254); buffer_write(buffer, buffer_u8, global.clientID); buffer_write(buffer, buffer_u8, global.sax); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); } if(!noName){ network_destroy(socket); buffer_delete(buffer); ds_grid_destroy(global.onlineList); ds_grid_destroy(global.onlineSend); ds_grid_destroy(global.onlineReceived); ds_list_destroy(global.onlineItem); ds_list_destroy(global.onlineMetdead); ds_list_destroy(global.onlineEvent); ds_list_destroy(roomList); ds_list_destroy(roomListData); ds_list_destroy(global.idList); ds_list_destroy(posData); ds_list_destroy(global.hatchlingList); ds_list_destroy(global.speedList); ds_list_destroy(global.screwList); ds_list_destroy(global.hitboxList); ds_list_destroy(global.otherPlayerItems); } 1 603 7 0 0 -1 2 self 0 0 1 if(ds_list_size(roomListData) > 0){ for(var b=0; b<ds_list_size(roomListData); b++){ var arrDraw = roomListData[| b]; var arrID = arrDraw[0]; var arrX = arrDraw[1]; var arrY = arrDraw[2]; var arrSprite = arrDraw[3]; var arrImage = arrDraw[4]; var arrA1 = arrDraw[5]; var arrA1X = arrDraw[6]; var arrA1Y = arrDraw[7]; var arrA2 = arrDraw[8]; var arrA2X = arrDraw[9]; var arrA2Y = arrDraw[10]; var arrA2A = arrDraw[11]; var arrMirror = arrDraw[12]; var arrArmmsl = arrDraw[13]; var arrRoom = arrDraw[14]; var arrName = arrDraw[15]; var arrBlend = arrDraw[16]; var arrFXTimer = arrDraw[17]; var arrRoomPrev = arrDraw[18]; var arrState = arrDraw[19]; var arrSAX = arrDraw[20]; var arrSpeedboost = arrDraw[21]; var arrSJBall = arrDraw[22]; var arrSJDir = arrDraw[23]; var arrSpeedCharge = arrDraw[24]; var arrSpectator = arrDraw[26]; var arrInvincible = arrDraw[27]; var arrMosaic = arrDraw[28]; var arrReform = arrDraw[29]; var arrVisible = arrDraw[30]; /* 2 = spacejump; 3 = screwattack; 4 = spiderball; 5 = speedbooster; */ var spacejump = global.spacejump; var screwattack = global.screwattack; var spiderball = global.spiderball; var speedbooster = global.speedbooster; global.otherSAX = arrSAX; global.otherMosaic = arrMosaic; global.otherReform = arrReform; for(var i=0; i<ds_list_size(global.otherPlayerItems); i++){ var tempArr = global.otherPlayerItems[| i]; var ID = tempArr[0]; if(ID == arrID){ spacejump = tempArr[2]; screwattack = tempArr[3]; spiderball = tempArr[4]; speedbooster = tempArr[5]; } } var canDraw = true; if(!arrVisible && !arrSAX){ canDraw = false; } if((arrRoom == room || arrRoom == rm_options || arrRoom == itemroom || arrRoom == subscreenroom || arrRoom == maproom || arrRoom == rm_subscreen) && instance_exists(oCharacter) && room != rm_transition && canDraw){ if(arrSprite == sSpiderMorphBall || arrSprite == sGSpiderMorphBall || arrSprite == sVSpiderMorphBall || arrSprite == sSpiderMorphBall_fusion || arrSprite == sSpiderMorphBall_fusion_gravity || arrSprite == sSpiderMorphBall_fusion_varia){ draw_set_blend_mode(bm_add); draw_set_alpha(arrFXTimer * 0.1); if(global.shaders_compiled && os_type != os_android){ pal_swap_set(oControl.SpiderballPalette, arrID, false); draw_sprite_ext(sSpiderballFX, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); } else if(global.shaders_compiled && os_type == os_android){ switch(arrSprite){ case sSpiderMorphBall: draw_sprite_ext(sSpiderballFX, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; case sVSpiderMorphBall: draw_sprite_ext(sSpiderballFXVaria, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; case sGSpiderMorphBall: draw_sprite_ext(sSpiderballFXGravity, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; case sSpiderMorphBall_fusion: draw_sprite_ext(sSpiderballFX_fusion, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; case sSpiderballFXVaria_fusion: draw_sprite_ext(sSpiderballFXVaria_fusion, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; case sSpiderballFXGravity_fusion: draw_sprite_ext(sSpiderballFXGravity_fusion, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; case sSpiderMorphBall_fusion_omega: draw_sprite_ext(sSpiderballFX_fusion, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); break; } } if(global.shaders_compiled){ pal_swap_reset(); shader_reset(); } draw_set_alpha(1); draw_set_blend_mode(bm_normal); } if(arrRoom != room){ if(arrRoomPrev == room){ draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID); if(arrSpeedboost == 1 || arrSpeedCharge > 0 || arrState == SJSTART || arrState == SUPERJUMP || arrState == SJEND){ if (arrFXTimer == 0 || arrFXTimer == 1) { draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, 1.1 + arrFXTimer * 0.2, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } if (arrFXTimer == 2 || arrFXTimer == 3) { draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_yellow, alpha, arrArmmsl, arrImage, arrID); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_white, alpha, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } if (arrFXTimer == 4 || arrFXTimer == 5) { draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_red, alpha, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } } if(arrInvincible > 0){ draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_blue, arrFXTimer * 0.2, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_white, 0.8 - arrFXTimer * 0.2, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } var sprHeight = sprite_get_height(sIdleRight); if(arrSprite != sTurn && arrSprite != sVTurn && arrSprite != sGTurn && arrSprite != sTurn_fusion && arrSprite != sTurn_fusion_varia && arrSprite != sTurn_fusion_gravity) sprHeight = sprite_get_height(arrSprite); if(string_count("AimUp", sprite_get_name(arrSprite)) > 0) sprHeight = sprite_get_height(sIdleRight); if(string_lower(arrName) == "meep" && string_count("Crouch", sprite_get_name(arrSprite))) sprHeight += 10; if(string_lower(arrName) == "omegadruid" && string_count("JumpLeft", sprite_get_name(arrSprite)) == 0 && string_count("JumpRight", sprite_get_name(arrSprite)) == 0 && string_count("Ball", sprite_get_name(arrSprite)) == 0 && string_count("Walljump", sprite_get_name(arrSprite)) == 0 && string_count("Spacejump", sprite_get_name(arrSprite)) == 0) draw_sprite_ext(sMOmega_Head_Roar, 2, arrX, arrY - sprHeight, 0.5 * arrMirror, 0.5, direction, c_white, 1); if(string_lower(arrName) == "meep" && string_count("JumpLeft", sprite_get_name(arrSprite)) == 0 && string_count("JumpRight", sprite_get_name(arrSprite)) == 0 && string_count("Ball", sprite_get_name(arrSprite)) == 0 && string_count("Walljump", sprite_get_name(arrSprite)) == 0 && string_count("Spacejump", sprite_get_name(arrSprite)) == 0) draw_sprite_ext(sMiepee, 2, arrX, arrY - sprHeight, 1 * arrMirror, 1, direction, c_white, 1); } } else { draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID); if(arrSpeedboost == 1 || arrSpeedCharge > 0 || arrState == SJSTART || arrState == SUPERJUMP || arrState == SJEND){ if (arrFXTimer == 0 || arrFXTimer == 1) { draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, 1.1 + arrFXTimer * 0.2, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } if (arrFXTimer == 2 || arrFXTimer == 3) { draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_yellow, alpha, arrArmmsl, arrImage, arrID); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_white, alpha, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } if (arrFXTimer == 4 || arrFXTimer == 5) { draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_red, alpha, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } } if(arrInvincible > 0){ draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_blue, arrFXTimer * 0.2, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_add); draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, c_white, 0.8 - arrFXTimer * 0.2, arrArmmsl, arrImage, arrID); draw_set_blend_mode(bm_normal); } var sprHeight = sprite_get_height(sIdleRight); if(arrSprite != sTurn && arrSprite != sVTurn && arrSprite != sGTurn && arrSprite != sTurn_fusion && arrSprite != sTurn_fusion_varia && arrSprite != sTurn_fusion_gravity) sprHeight = sprite_get_height(arrSprite); if(string_count("AimUp", sprite_get_name(arrSprite)) > 0) sprHeight = sprite_get_height(sIdleRight); if(string_lower(arrName) == "meep" && string_count("Crouch", sprite_get_name(arrSprite))) sprHeight += 10; if(string_lower(arrName) == "omegadruid" && string_count("JumpLeft", sprite_get_name(arrSprite)) == 0 && string_count("JumpRight", sprite_get_name(arrSprite)) == 0 && string_count("Ball", sprite_get_name(arrSprite)) == 0 && string_count("Walljump", sprite_get_name(arrSprite)) == 0 && string_count("Spacejump", sprite_get_name(arrSprite)) == 0) draw_sprite_ext(sMOmega_Head_Roar, 2, arrX, arrY - sprHeight, 0.5 * arrMirror, 0.5, direction, c_white, 1); if(string_lower(arrName) == "meep" && string_count("JumpLeft", sprite_get_name(arrSprite)) == 0 && string_count("JumpRight", sprite_get_name(arrSprite)) == 0 && string_count("Ball", sprite_get_name(arrSprite)) == 0 && string_count("Walljump", sprite_get_name(arrSprite)) == 0 && string_count("Spacejump", sprite_get_name(arrSprite)) == 0) draw_sprite_ext(sMiepee, 2, arrX, arrY - sprHeight, 1 * arrMirror, 1, direction, c_white, 1); } } if(arrRoom == room && room != rm_transition){ if((string_count("SJump", sprite_get_name(arrSprite)) > 0 || arrSpeedboost > 0 || arrSJBall > 0) && arrState != HURT){ var findID = ds_list_find_index(global.speedList, arrID); if(findID < 0){ ds_list_add(global.speedList, arrID); speedbooster = instance_create(x, y, oSpeedBoost); speedbooster.myid = arrID; speedbooster.sax = arrSAX; speedbooster.mirror = arrMirror; speedbooster.sjball = arrSJBall; } } else { var findID = ds_list_find_index(global.speedList, arrID); if(findID >= 0){ ds_list_delete(global.speedList, findID); } } } else { var findID = ds_list_find_index(global.speedList, arrID); if(findID >= 0){ ds_list_delete(global.speedList, findID); } } if(arrRoom == room && room != rm_transition){ if((string_count("JumpLeft", sprite_get_name(arrSprite)) > 0 || string_count("JumpRight", sprite_get_name(arrSprite)) > 0 || string_count("Spacejump", sprite_get_name(arrSprite)) > 0) && screwattack){ var findID = ds_list_find_index(global.screwList, arrID); if(findID < 0){ ds_list_add(global.screwList, arrID); screwattack = instance_create(x, y, oScrewAttack); screwattack.myid = arrID; screwattack.sax = arrSAX; screwattack.mirror = arrMirror; } } else { var findID = ds_list_find_index(global.screwList, arrID); if(findID >= 0){ ds_list_delete(global.screwList, findID); } } } else { var findID = ds_list_find_index(global.screwList, arrID); if(findID >= 0){ ds_list_delete(global.screwList, findID); } } if(arrRoom == room && room != rm_transition){ var findID = ds_list_find_index(global.hitboxList, arrID); if(findID < 0){ ds_list_add(global.hitboxList, arrID); hitbox = instance_create(x, y, oMultiHitbox); hitbox.myid = arrID; hitbox.sax = arrSAX; } } else { var findID = ds_list_find_index(global.hitboxList, arrID); if(findID >= 0){ ds_list_delete(global.hitboxList, findID); } } } } else { if(ds_list_size(global.speedList) > 0) ds_list_clear(global.speedList); if(ds_list_size(global.screwList) > 0) ds_list_clear(global.screwList); if(ds_list_size(global.hitboxList) > 0) ds_list_clear(global.hitboxList); } if(instance_exists(oMapCursor)){ if(ds_list_size(posData) > 0){ for(var i=0; i<ds_list_size(posData); i++){ var arrMapIcon = posData[| i]; var arrID = arrMapIcon[0]; var arrX = arrMapIcon[1]; var arrY = arrMapIcon[2]; var sax = arrMapIcon[3]; var spectator = arrMapIcon[5]; if(global.spectator){ if(!sax){ if(spectator){ if(arrX != 3 && arrY != 3) draw_sprite_ext(sSpectatorIcon, 0, (arrX * 8), ((arrY * 8) + 32), 1, 1, direction, c_white, oMapCursor.image_alpha); } else { if(arrX != 3 && arrY != 3) draw_sprite_ext(sFusionIcon, 0, (arrX * 8), ((arrY * 8) + 32), 1, 1, direction, c_white, oMapCursor.image_alpha); } } else { if(arrX != 3 && arrY != 3) draw_sprite_ext(sMultitroidMapIconMiepee, 0, (arrX * 8), ((arrY * 8) + 32), 1, 1, direction, c_white, oMapCursor.image_alpha); } } else { if(arrX != 3 && arrY != 3 && sax == global.sax && !spectator){ draw_sprite_ext(oControl.MultitroidMapIcon, (arrID - 1), (arrX * 8), ((arrY * 8) + 32), 1, 1, direction, c_white, oMapCursor.image_alpha); } } } } var rectoffset; rectoffset = 0; if(instance_exists(oMapScrBG2)) rectoffset = oMapScrBG2.rectoffset; draw_sprite_ext(sMultitroidMapPlayerCountBox, 1, view_xview[0] - oControl.widescreen_space/2, (view_yview[0] + 44) - rectoffset, 1, 1, direction, c_white, 1); if(ds_list_size(global.idList) > 1){ for(var f=0; f<ds_list_size(global.idList); f++){ var arrList = global.idList[| f]; var ID = arrList[0, 0]; var _x = 10 * floor(f / 2), var _y = 10 * (f % 2); if(ID == global.clientID){ draw_sprite_ext(oControl.MultitroidIcon, (ID - 1), ((view_xview[0] - oControl.widescreen_space/2) + 2 + _x), (view_yview[0] + 44) + 13 + _y, 1, 1, direction, c_white, 1); } else { draw_sprite_ext(oControl.MultitroidIconDark, (ID - 1), ((view_xview[0] - oControl.widescreen_space/2) + 2 + _x), (view_yview[0] + 44) + 13 + _y, 1, 1, direction, c_white, 1); } } } else if(ds_list_size(global.idList) == 1 || ds_list_size(global.idList) == 0){ draw_sprite_ext(oControl.MultitroidIcon, clamp(global.clientID - 1, 0, 16), ((view_xview[0] - oControl.widescreen_space/2) + 2), (view_yview[0] + 44) + 13, 1, 1, direction, c_white, 1); } } 0 0 0 0.5 0.100000001490116 0 0.100000001490116 0.100000001490116 0.200000002980232 -1 0