From 32f08de1658f2625d72b143a157220eaddd8a408 Mon Sep 17 00:00:00 2001 From: milesthenerd Date: Tue, 2 Feb 2021 23:24:46 -0600 Subject: [PATCH] Oh boy, there's a ton of changes --- AM2R.project.gmx | 23 +- datafiles/mod settings.ini | 16 +- objects/oClient.object.gmx | 847 ++++++++++++++++++++++---- objects/oControl.object.gmx | 6 +- objects/oCreditsText.object.gmx | 2 +- objects/oHatchling.object.gmx | 139 +++-- objects/oItemBall.object.gmx | 25 + objects/oMAlpha.object.gmx | 28 + objects/oMBTrail.object.gmx | 6 +- objects/oMGamma.object.gmx | 29 + objects/oMOmega.object.gmx | 16 + objects/oMZeta.object.gmx | 18 + objects/oNametag.object.gmx | 125 ++++ scripts/characterStepEvent.gml | 6 + scripts/draw_character_ext.gml | 5 +- scripts/draw_gui.gml | 2 +- scripts/sv6_get_events.gml | 17 +- scripts/sv6_get_inventory.gml | 52 +- scripts/sv6_get_items.gml | 17 +- scripts/sv6_get_main.gml | 42 +- scripts/sv6_get_map.gml | 24 +- scripts/sv6_get_monsters.gml | 17 +- scripts/sv6_load.gml | 17 +- scripts/update_variables.gml | 62 +- sprites/sMultitroidMapIcon.sprite.gmx | 32 + sprites/sPalMultitroidBaby.sprite.gmx | 25 + 26 files changed, 1355 insertions(+), 243 deletions(-) create mode 100644 objects/oNametag.object.gmx create mode 100644 sprites/sMultitroidMapIcon.sprite.gmx create mode 100644 sprites/sPalMultitroidBaby.sprite.gmx diff --git a/AM2R.project.gmx b/AM2R.project.gmx index ab1a63d8..041cc8de 100644 --- a/AM2R.project.gmx +++ b/AM2R.project.gmx @@ -4128,6 +4128,8 @@ sprites\sDarkMultitroidPlayer sprites\sPalMultitroidFusion sprites\sPalSpiderball + sprites\sPalMultitroidBaby + sprites\sMultitroidMapIcon @@ -5063,25 +5065,27 @@ - + + + + + + + + - - - - + + - - - - + @@ -6133,6 +6137,7 @@ objects\oA3_Missiles_Glow objects\oClient + objects\oNametag timelines\timelineCrystal diff --git a/datafiles/mod settings.ini b/datafiles/mod settings.ini index 90f85227..f416c630 100644 --- a/datafiles/mod settings.ini +++ b/datafiles/mod settings.ini @@ -1,3 +1,15 @@ [ModSettings] -ipaddress = 206.123.128.236 -displayname = milesthenerd +ipaddress = 127.0.0.1 +displayname = name +port = 64198 + +Ex = "reactorsequence refers to the escape from the reactor explosion in A4" +Ex = "The 'synced' option will teleport any players within the reactor escape to the entrance when another player reaches it" +Ex = "The 'disabled' option will completely disable the reactor escape altogether, and it will already be destroyed upon entering" +Ex = "Players must ensure this option is set to the same for all" +reactorsequence = synced + +Ex = "preferredcolor will set your shadow color to what you specify if it is available" +Ex = "If your specified color is already taken, you will be assigned a random one" +Ex = "The options are: green, red, blue, yellow, orange, purple, pink, white, and random" +preferredcolor = random \ No newline at end of file diff --git a/objects/oClient.object.gmx b/objects/oClient.object.gmx index 20d15a59..4765f0e5 100644 --- a/objects/oClient.object.gmx +++ b/objects/oClient.object.gmx @@ -27,6 +27,7 @@ 1 network_set_config(network_config_connect_timeout, 5000); strict_init("dictionary.json"); +queenHealthResetQueued = false; canSend = false; showName = true; metroidCountChanged = false; @@ -34,11 +35,28 @@ 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; connected = false; queenHealthWait = false; queenDead = false; sameRoom = false; +queenHealth = 600; phase = 0; +maxpbombsTimer = 10; +maxhealthTimer = 10; +etanksTimer = 10; +mtanksTimer = 10; +stanksTimer = 10; +ptanksTimer = 10; +teleport = false; state = undefined; seed = undefined; var type; @@ -46,11 +64,43 @@ type = network_socket_tcp; ini_open(working_directory + "\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")); ini_close(); -port = 64198; 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 "random": + preferredcolor = 9; + break; +} + var size, type, alignment; size = 1024; type = buffer_grow; @@ -84,6 +134,7 @@ roomList = ds_list_create(); roomListData = ds_list_create(); global.idList = ds_list_create(); posData = ds_list_create(); +global.hatchlingList = ds_list_create(); ds_grid_clear(global.onlineSend, -1); ds_grid_clear(global.onlineItem, -1); ds_grid_clear(global.onlineMetdead, -1); @@ -107,6 +158,8 @@ posX = 3; posY = 3; time = 60; + +trail = 0; @@ -158,6 +211,7 @@ ds_list_destroy(roomList); ds_list_destroy(roomListData); ds_list_destroy(global.idList); ds_list_destroy(posData); +ds_list_destroy(global.hatchlingList); global.canConnect = false; oControl.alarm[10] = 90; @@ -233,9 +287,6 @@ alarm[11] = 20; if(global.prevY != oCharacter.y){ global.prevY = oCharacter.y; } - if(global.roomPrev != room){ - global.roomPrev = room; - } if(global.prevSprite != oCharacter.sprite_index){ global.prevSprite = oCharacter.sprite_index; } @@ -268,11 +319,150 @@ alarm[11] = 20; 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); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + if(global.roomPrev != room){ + global.roomPrev = room; + } } } } alarm[10] = 3; + + + + + + + + 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 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 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 result = network_send_packet(socket, buffer, buffer_tell(buffer)); + itemstakenChanged = true; +} + +if(!itemstakenChanged){ + alarm[7] = 10; +} + +if(itemstakenChanged){ + itemstakenChanged = false; + alarm[7] = 75; +} @@ -329,12 +519,12 @@ if(mapChanged){ } if(!mapChanged){ - alarm[6] = 30; + alarm[6] = 10; } if(mapChanged){ mapChanged = false; - alarm[6]= 75; + alarm[6] = 75; } @@ -387,7 +577,7 @@ if(eventChanged){ } if(!eventChanged){ - alarm[5] = 30; + alarm[5] = 10; } if(eventChanged){ @@ -442,7 +632,7 @@ if(metdeadChanged){ } if(!metdeadChanged){ - alarm[4] = 30; + alarm[4] = 10; } if(metdeadChanged){ @@ -497,7 +687,7 @@ if(itemChanged){ } if(!itemChanged){ - alarm[3] = 30; + alarm[3] = 10; } if(itemChanged){ @@ -557,7 +747,7 @@ if(global.monstersareaPrev != global.monstersarea){ } if(!metroidCountChanged){ - alarm[2] = 30; + alarm[2] = 10; } if(metroidCountChanged){ @@ -588,13 +778,77 @@ if(metroidCountChanged){ 1 if(queenHealthResetQueued){ if(!is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ + if(global.queenhealthPrev != queenHealth){ + if(queenHealth == 999999){ + queenHealth = 0; + oQueenHead.myhealth = queenHealth; + 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; + } + } + } + } + } oQueenHead.myhealth = queenHealth; oQueen.phase = phase; - if(state == 100){ - oQueen.state = state; + 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; + } } - queenHealthResetQueued = false; } alarm[1] = 5; } @@ -715,7 +969,7 @@ if(canSend){ } if(!canSend){ - alarm[0] = 30; + alarm[0] = 10; } if(canSend){ @@ -729,6 +983,8 @@ if(instance_exists(oCharacter)){ if(oCharacter.state != oCharacter.DEFEATED){ oCharacter.alarm[0] = 6; oCharacter.state = oCharacter.DEFEATED; + mus_current_fadeout(); + sfx_stop_all(); } } } @@ -743,7 +999,7 @@ if(instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) &am buffer = buffer_create(size, type, alignment); buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 2); - buffer_write(buffer, buffer_s16, oQueenHead.myhealth); + 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); @@ -751,6 +1007,7 @@ if(instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) &am } } +/* if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ if(oQueen.phase < phase){ oQueen.phase = phase; @@ -758,6 +1015,7 @@ if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ phase = oQueen.phase; } } +*/ @@ -793,89 +1051,57 @@ if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ buffer_seek(buffer, buffer_seek_start, 0); buffer_write(buffer, buffer_u8, 1); var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + instance_create(x, y, oNametag); } else { instance_destroy(); popup_text("Failed to connect"); } } + if(instance_exists(oCharacter)){ - if(global.event[303] > 0){ - phase = 0; - } - - if(global.event[203] < 9){ + if(global.event[203] < 9 && string_lower(reactorsequence) == "disabled"){ global.event[203] = 9; } } -if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ - 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 + 30; - 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 + 30; - 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 + 30; - head_target_y = y + neck_y; - } +if(global.event[303] > 0){ + phase = 0; +} + +if(room == rm_death){ + phase = 0; + queenHealth = 600; +} + +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(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 + 30; - head_target_y = y + neck_y; - } +} + +if(is_undefined(oQueenHead.myhealth) && is_undefined(oQueen.phase)){ + if(!queenHealthResetQueued){ + queenHealthResetQueued = true; + alarm[1] = 5; } +} + +if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ if(global.event[303] > 0 && !queenDead){ - oQueen.state = 100; - oQueen.statetime = 0; - /* with(oQueen){ - height_target_front = 10; - height_target_back = 10; - head_obj.push = 0; - head_obj.canhit = 0; - head_obj.state = 100; - head_obj.statetime = 0; - leg1f_obj.canhit = 0; - leg1b_obj.canhit = 0; - head_target_x = x + neck_x + 40; - head_target_y = y + neck_y + 5; - alarm[9] = 1; - alarm[10] = 300; - head_obj.alarm[9] = 1; - head_obj.alarm[10] = 280; - canhit = 0; + state = 100; + statetime = 0; mus_fadeout(musQueen); + mus_fadeout(musQueen2); mus_fadeout(musQueen3); - oMusicV2.bossbgm = sndJump; - sfx_play(sndQueenDeath); + mus_fadeout(musQueenBreak); + mus_fadeout(musQueenIntro); } - */ queenDead = true; } } @@ -888,7 +1114,6 @@ if(keyboard_check_pressed(vk_f3)){ popup_text_ext(string(oControl.seed), 300); } - if(keyboard_check_pressed(vk_f4)){ showName = -showName; if(showName){ @@ -898,7 +1123,6 @@ if(keyboard_check_pressed(vk_f4)){ } } - if(instance_exists(oCharacter)){ posX = global.mapposx; posY = global.mapposy; @@ -907,7 +1131,7 @@ if(instance_exists(oCharacter)){ posY = posY; } -if(time == 0){ +if(time == 0 && connected){ if(ds_list_size(global.idList) > 0){ checkListID = ds_list_create(); for(var i=0; i<ds_list_size(global.idList); i++){ @@ -940,7 +1164,201 @@ if(time == 0){ 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 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 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 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 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 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 result = network_send_packet(socket, buffer, buffer_tell(buffer)); + ptanksChanged = true; + } + + if(!ptanksChanged){ + ptanksTimer = 10; + } + + if(ptanksChanged){ + ptanksChanged = false; + ptanksTimer = 75; + } +} + time--; +maxpbombsTimer--; +maxhealthTimer--; +etanksTimer--; +mtanksTimer--; +stanksTimer--; +ptanksTimer--; + +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 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; + } + } + } else { + if(findHatchlingID >= 0){ + ds_list_delete(global.hatchlingList, findHatchlingID); + } + } + } + } else { + if(ds_list_size(global.hatchlingList) > 0){ + ds_list_clear(global.hatchlingList); + } + } +} + @@ -999,6 +1417,16 @@ switch(type_event){ ds_list_delete(posData, v); } } + if(instance_exists(oHatchling)){ + with(oHatchling){ + if(myid != 0){ + instance_destroy(); + } + } + } + break; + case 200: + global.clientID = preferredcolor; break; case 100: var clientID = buffer_read(_buffer, buffer_u8); @@ -1019,10 +1447,11 @@ switch(type_event){ 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 findsocket = ds_list_find_index(roomList, clientID); if(global.clientID != clientID){ if(findsocket < 0){ - if(clientRoom == room){ + 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; @@ -1043,6 +1472,7 @@ switch(type_event){ arr[15] = clientName; arr[16] = clientBlend; arr[17] = clientFXTimer; + arr[18] = clientRoomPrev; ds_list_add(roomListData, arr); } } else { @@ -1065,6 +1495,7 @@ switch(type_event){ arr[15] = clientName; arr[16] = clientBlend; arr[17] = clientFXTimer; + arr[18] = clientRoomPrev; var indexValue = ds_list_find_value(roomList, findsocket); for(var i=0; i<ds_list_size(roomListData); i++){ var arrList = roomListData[| i]; @@ -1072,7 +1503,7 @@ switch(type_event){ roomListData[| i] = arr; } } - if(clientRoom != room){ + 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); @@ -1094,20 +1525,32 @@ switch(type_event){ var findsocket = ds_list_find_index(roomList, clientID); if(clientRoom == room && global.clientID != clientID){ sameRoom = true; - } else if(clientRoom != room && global.clientID != clientID){ + } 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] == indexValue){ + 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){ @@ -1146,6 +1589,16 @@ switch(type_event){ } } ds_list_destroy(checkList); + + if(clientRoom == rm_a4b01 && room != rm_a4b01 && global.event[203] > 0 && global.event[203] < 9 && !teleport && string_lower(reactorsequence) == "synced"){ + 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))); @@ -1158,8 +1611,22 @@ switch(type_event){ alarm[4] = 5; alarm[5] = 5; alarm[6] = 5; + alarm[7] = 5; + alarm[8] = 5; + alarm[9] = 5; alarm[10] = 3; alarm[11] = 20; + 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); + 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))); @@ -1172,7 +1639,7 @@ switch(type_event){ update_variables("disablesame"); update_variables("replaceglobalvars"); update_variables("updateprev"); - alarm[0] = 30; + alarm[0] = 10; ds_grid_clear(global.onlineReceived, -1); } break; @@ -1184,11 +1651,11 @@ switch(type_event){ //global.itemChanges = 0; //global.metdeadChanges = 0; //global.eventChanges = 0; - alarm[0] = 30; + alarm[0] = 10; ds_grid_clear(global.onlineReceived, -1); break; case 3: - queenHealth = buffer_read(_buffer, buffer_s16); + 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); @@ -1196,6 +1663,32 @@ switch(type_event){ if(!is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ if(oQueen.phase == phase){ if(global.queenhealthPrev != queenHealth){ + if(queenHealth == 999999){ + queenHealth = 0; + oQueenHead.myhealth = queenHealth; + 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; + } + } + } + } global.queenhealthPrev = queenHealth; oQueenHead.myhealth = queenHealth; } @@ -1204,12 +1697,10 @@ switch(type_event){ if(global.queenphasePrev != phase){ global.queenphasePrev = phase; } - } else if(is_undefined(oQueenHead.myhealth) && is_undefined(oQueen.phase)){ - queenHealthResetQueued = true; - alarm[1] = 5; - } + } } else { if(!is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ + /* if(oQueen.phase == phase){ if(global.queenhealthPrev != queenHealth){ global.queenhealthPrev = queenHealth; @@ -1220,7 +1711,9 @@ switch(type_event){ if(global.queenphasePrev != phase){ global.queenphasePrev = phase; } - + */ + global.queenhealthPrev = oQueenHead.myhealth; + global.queenphasePrev = oQueen.phase; } } break; @@ -1244,7 +1737,7 @@ switch(type_event){ } else if(global.clientID == clientID){ global.monstersleftPrev = global.monstersleft; } - alarm[2] = 30; + alarm[2] = 10; break; case 6: var monstersArea = buffer_read(_buffer, buffer_s8); @@ -1255,7 +1748,7 @@ switch(type_event){ } else if(global.clientID == clientID){ global.monstersareaPrev = global.monstersarea; } - alarm[2] = 30; + alarm[2] = 10; break; case 7: var item = ds_grid_create(1, 1); @@ -1274,7 +1767,7 @@ switch(type_event){ } } } - alarm[3] = 30; + alarm[3] = 10; if(global.clientID == clientID){ ds_grid_clear(global.onlineItem, -1); global.itemChanges = 0; @@ -1298,7 +1791,7 @@ switch(type_event){ } } } - alarm[4] = 30; + alarm[4] = 10; if(global.clientID == clientID){ ds_grid_clear(global.onlineMetdead, -1); global.metdeadChanges = 0; @@ -1318,11 +1811,47 @@ switch(type_event){ if(global.event[i] != eventArr[f, 0]){ global.event[i] = eventArr[f, 0]; } + 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); + global.enablecontrol = 0; + } + } + popup_text_ext("Ship reached", 120); + } + if(eventArr[f, 0] == 2 && clientID != global.clientID){ + oControl.displaygui = 0; + } + if(eventArr[f, 0] == 3 && clientID != global.clientID){ + instance_create(0, 0, oFinalFadeout); + mus_fadeout(musHatchling); + } + if(eventArr[f, 0] == 4 && clientID != global.clientID){ + 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] = 30; + alarm[5] = 10; if(global.clientID == clientID){ ds_grid_clear(global.onlineEvent, -1); global.eventChanges = 0; @@ -1351,13 +1880,112 @@ switch(type_event){ } } } - alarm[6] = 30; + alarm[6] = 10; if(global.clientID == clientID){ ds_grid_clear(global.onlineMap, -1); global.dmapChanges = 0; } ds_grid_destroy(dmap); 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; + } + 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; + } + 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; + } + 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; + } + 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; } } @@ -1410,6 +2038,7 @@ ds_list_destroy(roomList); ds_list_destroy(roomListData); ds_list_destroy(global.idList); ds_list_destroy(posData); +ds_list_destroy(global.hatchlingList); @@ -1453,7 +2082,8 @@ ds_list_destroy(posData); var arrName = arrDraw[15]; var arrBlend = arrDraw[16]; var arrFXTimer = arrDraw[17]; - if(arrRoom == room && instance_exists(oCharacter) && room != rm_transition){ + var arrRoomPrev = arrDraw[18]; + if((arrRoom == room || arrRoom == rm_options || arrRoom == itemroom || arrRoom == subscreenroom || arrRoom == maproom || arrRoom == rm_subscreen) && instance_exists(oCharacter) && room != rm_transition){ 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); @@ -1464,11 +2094,12 @@ ds_list_destroy(posData); draw_set_alpha(1); draw_set_blend_mode(bm_normal); } - draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID); - if(showName){ - draw_set_font(font_displayname); - draw_set_halign(fa_center); - draw_cool_text(arrX, arrY - 52, arrName, c_black, c_white, c_white, 1); + 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); + } + } else { + draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID); } } } @@ -1481,7 +2112,7 @@ if(instance_exists(oMapCursor)){ var arrID = arrMapIcon[0]; var arrX = arrMapIcon[1]; var arrY = arrMapIcon[2]; - draw_sprite(sDarkMultitroidPlayer, (arrID - 1), (arrX * 8), ((arrY * 8) + 32)); + draw_sprite_ext(sMultitroidMapIcon, (arrID - 1), (arrX * 8), ((arrY * 8) + 32), 1, 1, direction, c_white, oMapCursor.image_alpha); } } } diff --git a/objects/oControl.object.gmx b/objects/oControl.object.gmx index bf527bb8..cf1f839d 100644 --- a/objects/oControl.object.gmx +++ b/objects/oControl.object.gmx @@ -36,6 +36,7 @@ targetx = 48; targety = 432; targetroom = rm_a5h01; screen_surface = -1; +global.lastroom = room; global.targetroom = initroom; black = 0; global.classicmode = 0; @@ -321,7 +322,7 @@ ini_close(); // NOT Dymanic Version Number global.fontVersion = font_add_sprite_ext(sVersionFont, "V.0123456789", true, 1); -global.am2r_version = "V1.5.2 Co-op"; // no longer dynamic, not worth the effort to maintain - mostly because of Android oddities. +global.am2r_version = "V1.5.2"; // no longer dynamic, not worth the effort to maintain - mostly because of Android oddities. // Android global.gamestarted = 0; @@ -841,7 +842,7 @@ ini_close(); // NOT Dymanic Version Number global.fontVersion = font_add_sprite_ext(sVersionFont, "V.0123456789", true, 1); -global.am2r_version = "V1.5.2 Co-op"; // no longer dynamic, not worth the effort to maintain - mostly because of Android oddities. +global.am2r_version = "V1.5.2"; // no longer dynamic, not worth the effort to maintain - mostly because of Android oddities. // Android global.gamestarted = 0; @@ -1616,6 +1617,7 @@ room_goto(rm_death); writelog("UnLoading Room " + string(room)); global.roomtime = 0; fadedone = 0; +global.lastroom = room; diff --git a/objects/oCreditsText.object.gmx b/objects/oCreditsText.object.gmx index 1860bf12..f84082bd 100644 --- a/objects/oCreditsText.object.gmx +++ b/objects/oCreditsText.object.gmx @@ -25,7 +25,7 @@ 1 - text = "Another " + global.monsterStr + " 2 Remake# # # # # # # # # # # #Producer#Milton 'DoctorM64' Guasti# #Graphic Design#Ramiro Negri#Steve 'Sabre230' Rothlisberger#Jack Witty#Kirill '1Eni1' Fevralev#Jasper#MichaelGabrielR# #Promo Art#Azima 'Zim' Khan# #Writing#James 'Ridley' Hobbs#Paulo 'Latinlingo' Villalobos# #Platform Engine Code#Martin Piecyk# #Music Composition#Milton 'DoctorM64' Guasti#Darren Kerwin#Torbjørn 'Falcool' Brandrud# #Debug#Hemse#Dragondarch#Esteban 'DruidVorse' Criado#Verneri 'Naatiska' Viljanen# #Playtest#Jennifer Potter#Mario Crestanello#Live4Truths#Torbjørn 'Falcool' Brandrud#Lise Trehjørningen#Nommiin#Gabriel Kaplan#Nicolas 'Skol' Del Negro#Darren Kerwin#Robert Sephazon# #Community Management#Dragonheart91#Ammypendent#Karrde# #Special Thanks#Nommiin#Nathan 'wickedclown' Hess#Tyler Rogers#Kousoru#Infinity's End#CapCom#Isabelle Amponin#The " + global.monsterStr + " Community# # # # # #Source Code Reconstruction#YellowAfterlife# # #Continued Revisions# #Lead - Former#Gatordile#Alex 'Wanderer' Mack# #Lead#Lojemiru# #Development#Craig Kostelecky#" + global.monsterStr + "3D# #Art Lead#Dannon 'Shmegleskimo' Yates# #Art#ShirtyScarab#Cooper Garvin#Chris 'Messianic' Oliveira#ChloePlz# #Special Thanks#Banjo, Grom PE,#King Bore, Jean-Samuel Pelletier,#Reaku The Crate, Scooterboot, #Sylandro, TheKhaosDemon, #Unknown, Iwantdevil, #PixHammer, CaptGlitch,#Nokbient, EODTex,#Electrix, gponys,#Japanese Community# # # # # #Original " + global.monsterStr + " II Staff# #Producer#Gunpei Yokoi# #Director#Hiroji Kiyotake, Hiroyuki Kimura# #Main Programmer#Takahiro Harada# #Programmer#Masaru Yamanaka, Masao Yamamoto,#Isao Hirano# #Graphic Designer#Hiroji Kiyotake, Hiroyuki Kimura# #Program Assistant#Yuzuru Ogawa, Nobuhiro Ozaki# #Sound Programmer#Ryohji Yoshitomi# #Designer#Makoto Kanoh, Masafumi Sakashita,#Tomoyoshi Yamane, Takehiko Hosokawa,#Yasuo Inoue# #Debug#Masaru Okadaga, Kenji Nishizawa,#Hirofumi Matsuoka, Tohru Ohsawa,#Kohta Fukui, Keisuke Terasaki,#Kenichi Sugino, Hitoshi Yamagami,#Katsuya Yamaoe, Yuji Hori# # # # # # # # # #In Memory of Satoru Iwata"; + text = "Another " + global.monsterStr + " 2 Remake# # # # # # # # # # # #Producer#Milton 'DoctorM64' Guasti# #Graphic Design#Ramiro Negri#Steve 'Sabre230' Rothlisberger#Jack Witty#Kirill '1Eni1' Fevralev#Jasper#MichaelGabrielR# #Promo Art#Azima 'Zim' Khan# #Writing#James 'Ridley' Hobbs#Paulo 'Latinlingo' Villalobos# #Platform Engine Code#Martin Piecyk# #Music Composition#Milton 'DoctorM64' Guasti#Darren Kerwin#Torbjørn 'Falcool' Brandrud# #Debug#Hemse#Dragondarch#Esteban 'DruidVorse' Criado#Verneri 'Naatiska' Viljanen# #Playtest#Jennifer Potter#Mario Crestanello#Live4Truths#Torbjørn 'Falcool' Brandrud#Lise Trehjørningen#Nommiin#Gabriel Kaplan#Nicolas 'Skol' Del Negro#Darren Kerwin#Robert Sephazon# #Community Management#Dragonheart91#Ammypendent#Karrde# #Special Thanks#Nommiin#Nathan 'wickedclown' Hess#Tyler Rogers#Kousoru#Infinity's End#CapCom#Isabelle Amponin#The " + global.monsterStr + " Community# # # # # #Source Code Reconstruction#YellowAfterlife# # #Continued Revisions# #Lead - Former#Gatordile#Alex 'Wanderer' Mack# #Lead#Lojemiru# #Development#Craig Kostelecky#" + global.monsterStr + "3D# #Art Lead#Dannon 'Shmegleskimo' Yates# #Art#ShirtyScarab#Cooper Garvin#Chris 'Messianic' Oliveira#ChloePlz# #Special Thanks#Banjo, Grom PE,#King Bore, Jean-Samuel Pelletier,#Reaku The Crate, Scooterboot, #Sylandro, TheKhaosDemon, #Unknown, Iwantdevil, #PixHammer, CaptGlitch,#Nokbient, EODTex,#Electrix, gponys,#Japanese Community# # # # # #Original " + global.monsterStr + " II Staff# #Producer#Gunpei Yokoi# #Director#Hiroji Kiyotake, Hiroyuki Kimura# #Main Programmer#Takahiro Harada# #Programmer#Masaru Yamanaka, Masao Yamamoto,#Isao Hirano# #Graphic Designer#Hiroji Kiyotake, Hiroyuki Kimura# #Program Assistant#Yuzuru Ogawa, Nobuhiro Ozaki# #Sound Programmer#Ryohji Yoshitomi# #Designer#Makoto Kanoh, Masafumi Sakashita,#Tomoyoshi Yamane, Takehiko Hosokawa,#Yasuo Inoue# #Debug#Masaru Okadaga, Kenji Nishizawa,#Hirofumi Matsuoka, Tohru Ohsawa,#Kohta Fukui, Keisuke Terasaki,#Kenichi Sugino, Hitoshi Yamagami,#Katsuya Yamaoe, Yuji Hori# #Co-op Mod#milesthenerd#xzackly7# # # # # # # # #In Memory of Satoru Iwata"; yoffset = 0; fadeout = 0; diff --git a/objects/oHatchling.object.gmx b/objects/oHatchling.object.gmx index 15fd30a7..064514e2 100644 --- a/objects/oHatchling.object.gmx +++ b/objects/oHatchling.object.gmx @@ -37,6 +37,7 @@ mealtimer = 0; flash = 0; chaseX = 0; alarm1set = 0; +myid = 0; @@ -84,10 +85,11 @@ followplayer = 0; 1 - sfx_play(choose(sndHatchling,sndHatchling2,sndHatchling3,sndHatchling4)); -alarm[0] = 300 + irandom(320); -roaring = 60; - + if(myid == 0){ + sfx_play(choose(sndHatchling,sndHatchling2,sndHatchling3,sndHatchling4)); + alarm[0] = 300 + irandom(320); + roaring = 60; +} /*sfx_play(sndHatchling); @@ -112,37 +114,58 @@ roaring = 60; 1 - if (global.event[304] == 1 && distance_to_object(oA7Crystal1) < 120) { - tgtobj = instance_nearest(x, y, oA7Crystal1); - if (tgtobj != -4) { - targetx = tgtobj.x + 8; - targety = tgtobj.y + 8; - accel = 0.4; - maxspeed = 3.2; - if (mealtimer > 600) accel *= 2; - } - followplayer = 0; -} -else if (distance_to_object(oXPickup) < 150 ) { - if (chaseX == 1) - { - tgtobj = instance_nearest(x, y, oXPickup); + if(myid == 0){ + if (global.event[304] == 1 && distance_to_object(oA7Crystal1) < 120) { + tgtobj = instance_nearest(x, y, oA7Crystal1); if (tgtobj != -4) { - targetx = tgtobj.x; - targety = tgtobj.y - 11; + targetx = tgtobj.x + 8; + targety = tgtobj.y + 8; accel = 0.4; maxspeed = 3.2; if (mealtimer > 600) accel *= 2; } followplayer = 0; + } + else if (distance_to_object(oXPickup) < 150 ) { + if (chaseX == 1) + { + tgtobj = instance_nearest(x, y, oXPickup); + if (tgtobj != -4) { + targetx = tgtobj.x; + targety = tgtobj.y - 11; + accel = 0.4; + maxspeed = 3.2; + if (mealtimer > 600) accel *= 2; + } + followplayer = 0; + } + else if (alarm1set == 0) + { + alarm1set = 1; + alarm[1] = 45; + } + + } - else if (alarm1set == 0) - { - alarm1set = 1; - alarm[1] = 45; +else +{ + followplayer = 1; + chaseX = 0; + alarm1set = 0; +} +} else { + if(instance_exists(oClient)){ + if(ds_list_size(global.hatchlingList) > 0){ + var findHatchlingID = ds_list_find_index(global.hatchlingList, myid); + if(findHatchlingID == -1){ + instance_destroy(); + } + } else { + instance_destroy(); + } + } else { + instance_destroy(); } - - } /* else if (distance_to_object(oEnemy) < 120 ) { @@ -168,14 +191,7 @@ else if (distance_to_object(oEnemy) < 120 ) { } */ -else -{ - followplayer = 1; - chaseX = 0; - alarm1set = 0; -} - -if (followplayer) { +if (followplayer && myid == 0) { targetx = oCharacter.x; targety = oCharacter.y - 30; if (distance_to_point(oCharacter.x, oCharacter.y - 16) > 128) { @@ -192,6 +208,42 @@ if (followplayer) { accel = 0.3; maxspeed = 2.5; } +} else if(followplayer && myid != 0){ + if(instance_exists(oClient)){ + if(ds_list_size(global.hatchlingList) > 0){ + var findHatchlingID = ds_list_find_index(global.hatchlingList, myid); + if(findHatchlingID >= 0){ + if(ds_list_size(oClient.roomListData) > 0){ + for(var h=0; h<ds_list_size(oClient.roomListData); h++){ + var arrList = oClient.roomListData[| h]; + var arrID = arrList[0]; + var arrX = arrList[1]; + var arrY = arrList[2]; + if(arrID == myid){ + targetx = arrX; + targety = arrY - 30; + if (distance_to_point(arrX, arrY - 16) > 128) { + accel = 0.8; + maxspeed = 8; + } + if (distance_to_point(arrX, arrY - 16) > 64) { + accel = 0.6; + maxspeed = 6; + } else if (distance_to_point(arrX, arrY - 16) > 32) { + accel = 0.4; + maxspeed = 4; + } else { + accel = 0.3; + maxspeed = 2.5; + } + } + } + } else { + instance_destroy(); + } + } + } + } } if (roaring > 0) { roaring -= 1; @@ -224,10 +276,19 @@ mealtimer += 1; 1 - draw_self(); -draw_set_blend_mode(bm_add); -draw_sprite_ext(sprite_index, -1, x, y, 1, 1, 0, -1, flash); -draw_set_blend_mode(bm_normal); + if(myid == 0){ + draw_self(); + draw_set_blend_mode(bm_add); + draw_sprite_ext(sprite_index, -1, x, y, 1, 1, 0, -1, flash); + draw_set_blend_mode(bm_normal); +} else { + pal_swap_set(sPalMultitroidBaby, myid, false); + draw_self(); + draw_sprite_ext(sprite_index, -1, x, y, 1, 1, 0, -1, flash); + pal_swap_reset(); + shader_reset(); +} + diff --git a/objects/oItemBall.object.gmx b/objects/oItemBall.object.gmx index f1596d0e..45a9cb04 100644 --- a/objects/oItemBall.object.gmx +++ b/objects/oItemBall.object.gmx @@ -55,6 +55,31 @@ myblock = instance_create(x, y - 16, oSolidItem); //if (item == 8) { + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + if(global.item[item] == 1){ + instance_destroy(); +} diff --git a/objects/oMAlpha.object.gmx b/objects/oMAlpha.object.gmx index 62fb3766..b2b914f9 100644 --- a/objects/oMAlpha.object.gmx +++ b/objects/oMAlpha.object.gmx @@ -54,6 +54,7 @@ deathsound = sndMAlphaDeath; active = 1; target = 0; state = 3; + alarm[1] = 120; alarm[3] = 1; image_speed = 0.2; @@ -494,6 +495,32 @@ if (dodging) dodgetime += 1; if (fxtimer < 5) { fxtimer += 1; } else fxtimer = 0; + +if(global.metdead[myid] == 1 && !dead){ + myhealth = 0; + state = 100; + statetime = 0; + alarm[10] = 1; + alarm[11] = 160; + flashtime = 180; + turndelay = 180; + PlaySoundMono(deathsound); + check_areaclear(); + global.monstersalive -= 1; + if(global.monstersalive < 0){ + global.monstersalive = 0; + } + if (global.monstersalive == 0) { + mus_fadeout(musAlphaFight); + oMusicV2.bossbgm = sndJump; + } + with (oMAlpha) event_user(2); + global.dmap[mapposx, mapposy] = 11; + with (oControl) event_user(2); + dead = true; + xVel = 0; + yVel = 0; +} @@ -931,6 +958,7 @@ if (myhealth <= 0) { with (oMAlpha) event_user(2); global.dmap[mapposx, mapposy] = 11; with (oControl) event_user(2); + dead = true; } flashing = 1; canbehit = 0; diff --git a/objects/oMBTrail.object.gmx b/objects/oMBTrail.object.gmx index fb8c8bf9..6aad23ef 100644 --- a/objects/oMBTrail.object.gmx +++ b/objects/oMBTrail.object.gmx @@ -78,7 +78,7 @@ repeat (10) { sy[0] = y; x = oCharacter.x; y = oCharacter.y; - + switch (oControl.mod_fusion) { case 1: { ///make_color_rgb(red, green, blue); @@ -99,7 +99,7 @@ repeat (10) { { if (global.currentsuit == 1) image_blend = make_color_rgb(oControl.Trail_V_R_F, oControl.Trail_V_G_F, oControl.Trail_V_B_F); } - + if (oControl.msr_fusionsuit == 1) { if (global.currentsuit == 2) image_blend = make_color_rgb(oControl.Trail_G_R_F_SR, oControl.Trail_G_G_F_SR, oControl.Trail_G_B_F_SR); @@ -149,6 +149,8 @@ repeat (10) { draw_set_blend_mode(bm_normal); i += 1; } + + diff --git a/objects/oMGamma.object.gmx b/objects/oMGamma.object.gmx index 48e6788f..9ff5d58d 100644 --- a/objects/oMGamma.object.gmx +++ b/objects/oMGamma.object.gmx @@ -713,6 +713,34 @@ if (instance_exists(grabber)) { grabber.y = y + legba1y + legba2y; if (state != 5) with (grabber) instance_destroy(); } + +if(global.metdead[myid] == 1 && !dead){ + myhealth = 0; + state = 100; + statetime = 0; + alarm[10] = 1; + alarm[11] = 160; + flashtime = 180; + turndelay = 180; + PlaySoundMono(deathsound); + check_areaclear(); + global.monstersalive -= 1; + if(global.monstersalive < 0){ + global.monstersalive = 0; + } + if (global.monstersalive == 0) { + mus_fadeout(musGammaFight); + oMusicV2.bossbgm = sndJump; + } + if (instance_exists(grabber)) with (grabber) instance_destroy(); + if (instance_exists(arms)) with (arms) instance_destroy(); + if (instance_exists(shell)) with (shell) instance_destroy(); + global.dmap[mapposx, mapposy] = 11; + with (oControl) event_user(2); + dead = true; + xVel = 0; + yVel = 0; +} @@ -1124,6 +1152,7 @@ if (myhealth <= 0) { if (instance_exists(arms)) with (arms) instance_destroy(); global.dmap[mapposx, mapposy] = 11; with (oControl) event_user(2); + dead = true; } flashing = 1; canbehit = 0; diff --git a/objects/oMOmega.object.gmx b/objects/oMOmega.object.gmx index be418698..b87a2b32 100644 --- a/objects/oMOmega.object.gmx +++ b/objects/oMOmega.object.gmx @@ -1490,6 +1490,21 @@ if (eyes_close == 0) { } else if (eyes_frame < 4) eyes_frame += 1; if (target_mode == 1 && distance_to_point(targetx, targety) < 32) target_mode = 0; moveTo(xVel, yVel); + +if(global.metdead[myid] == 1 && !dead){ + myhealth = 0; + state = 100; + statetime = 0; + alarm[10] = 1; + alarm[11] = 160; + event_user(2); + mus_fadeout(musOmegaFight); + oMusicV2.bossbgm = sndJump; + check_areaclear(); + global.dmap[mapposx, mapposy] = 11; + with (oControl) event_user(2); + dead = true; +} @@ -1704,6 +1719,7 @@ if (myhealth <= 0) { check_areaclear(); global.dmap[mapposx, mapposy] = 11; with (oControl) event_user(2); + dead = true; } if (myhealth > 0) { if (dmg < 100) { // missile diff --git a/objects/oMZeta.object.gmx b/objects/oMZeta.object.gmx index 90215f5b..8e10010a 100644 --- a/objects/oMZeta.object.gmx +++ b/objects/oMZeta.object.gmx @@ -1364,6 +1364,23 @@ if (fxtimer < 5) { if (noswipe > 0) noswipe -= 1; if (roaring > 0) roaring -= 1; moveTo(xVel, yVel); + +if(global.metdead[myid] == 1 && !dead){ + myhealth = 0; + state = 100; + statetime = 0; + alarm[10] = 1; + alarm[11] = 160; + with (body_obj) instance_destroy(); + with (head_obj) instance_destroy(); + with (mask_obj) instance_destroy(); + mus_fadeout(musZetaFight); + oMusicV2.bossbgm = sndJump; + check_areaclear(); + global.dmap[mapposx, mapposy] = 11; + with (oControl) event_user(2); + dead = true; +} @@ -1551,6 +1568,7 @@ if (myhealth <= 0) { check_areaclear(); global.dmap[mapposx, mapposy] = 11; with (oControl) event_user(2); + dead = true; } if (myhealth > 0) { PlaySoundMono(sndMZetaHit); diff --git a/objects/oNametag.object.gmx b/objects/oNametag.object.gmx new file mode 100644 index 00000000..63c874ee --- /dev/null +++ b/objects/oNametag.object.gmx @@ -0,0 +1,125 @@ + + + <undefined> + 0 + -1 + -1000 + -1 + <undefined> + <undefined> + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + if(!instance_exists(oClient)){ + instance_destroy(); +} + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + if(!instance_exists(oClient)){ + instance_destroy(); +} else { + if(ds_list_size(oClient.roomListData) > 0){ + for(var i=0; i<ds_list_size(oClient.roomListData); i++){ + var arrDraw = oClient.roomListData[| i]; + 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]; + if((arrRoom == room || arrRoom == rm_options || arrRoom == itemroom || arrRoom == subscreenroom || arrRoom == maproom || arrRoom == rm_subscreen) && instance_exists(oCharacter) && room != rm_transition){ + if(oClient.showName){ + var text; + if(arrRoom == room){ + text = arrName; + } else { + if(arrRoom == itemroom){ + text = arrName + ": collecting item" + } else { + text = arrName + ": paused"; + } + } + if(arrRoom != room){ + if(arrRoomPrev == room){ + draw_set_font(font_displayname); + draw_set_halign(fa_center); + draw_cool_text(arrX, arrY - 52, text, c_black, c_white, c_white, 1); + } + } else { + draw_set_font(font_displayname); + draw_set_halign(fa_center); + draw_cool_text(arrX, arrY - 52, text, c_black, c_white, c_white, 1); + } + } + } + } + } +} + + + + + + + + 0 + 0 + 0 + 0.5 + 0.100000001490116 + 0 + 0.100000001490116 + 0.100000001490116 + 0.200000002980232 + -1 + 0 + + diff --git a/scripts/characterStepEvent.gml b/scripts/characterStepEvent.gml index 430dbdb1..dd89bf08 100644 --- a/scripts/characterStepEvent.gml +++ b/scripts/characterStepEvent.gml @@ -892,7 +892,11 @@ if (state == SAVINGSHIP) { statetime = 0; } } else { + if (statetime == 5){ + global.event[308] = 1; + } if (statetime == 120) { + global.event[308] = 2; with (oSaveShip) instance_destroy(); with (oHatchling) instance_destroy(); instance_create(3296, 1088, oShipOutro); @@ -903,10 +907,12 @@ if (state == SAVINGSHIP) { global.enablecontrol = 0; } if (statetime == 420) { + global.event[308] = 3; instance_create(0, 0, oFinalFadeout); mus_fadeout(musHatchling); } if (statetime == 760) { + global.event[308] = 4; remove_persistent_objects(); sfx_stop_all(); global.vibL = 0; diff --git a/scripts/draw_character_ext.gml b/scripts/draw_character_ext.gml index c92f56c1..0fc2a902 100644 --- a/scripts/draw_character_ext.gml +++ b/scripts/draw_character_ext.gml @@ -28,9 +28,8 @@ if(oControl.mod_fusion){ draw_sprite_ext(argument0, argument14, argument1, argument2, argument10, 1, 0, argument11, argument12); draw_sprite_ext(argument3, argument14, argument1 + argument4, argument2 + argument5, argument10, 1, 0, argument11, argument12); +shader_reset(); +pal_swap_reset(); if (argument13 == 1) { draw_sprite_ext(argument6, argument14, argument1 + argument7, argument2 + argument8, argument10, 1, argument9, argument11, argument12); } - -shader_reset(); -pal_swap_reset(); diff --git a/scripts/draw_gui.gml b/scripts/draw_gui.gml index 494dfb6b..066c5e1c 100644 --- a/scripts/draw_gui.gml +++ b/scripts/draw_gui.gml @@ -295,7 +295,7 @@ if (global.ophudshowmap){ var xDiff = oClient.posX - arrData[1]; var yDiff = oClient.posY - arrData[2]; if(abs(xDiff) <= 2 && abs(yDiff) <= 1){ - draw_sprite(sDarkMultitroidPlayer, (arrData[0] - 1), (((276 + widescreen_space) + 16) - (xDiff * 8)), ((0 + 12) - (yDiff * 8))); + draw_sprite_ext(sMultitroidMapIcon, (arrData[0] - 1), (((276 + widescreen_space) + 16) - (xDiff * 8)), ((0 + 12) - (yDiff * 8)), 1, 1, direction, c_white, oControl.malpha); } } } diff --git a/scripts/sv6_get_events.gml b/scripts/sv6_get_events.gml index 250e7722..1ba6d141 100644 --- a/scripts/sv6_get_events.gml +++ b/scripts/sv6_get_events.gml @@ -3,8 +3,19 @@ list = ds_list_create(); ds_list_read(list, base64_decode(file_text_read_string(argument0))); i = 0; j = 0; -repeat (350) { - global.event[j] = readline(); - j += 1; + +if(!instance_exists(oClient)){ + repeat (350) { + global.event[j] = readline(); + j += 1; + } +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ + repeat (350) { + global.event[j] = readline(); + j += 1; + } } + ds_list_clear(list); diff --git a/scripts/sv6_get_inventory.gml b/scripts/sv6_get_inventory.gml index aad989a4..c3c380c2 100644 --- a/scripts/sv6_get_inventory.gml +++ b/scripts/sv6_get_inventory.gml @@ -2,19 +2,41 @@ list = ds_list_create(); ds_list_read(list, base64_decode(file_text_read_string(argument0))); i = 0; -global.currentsuit = readline(); -global.cbeam = readline(); -global.ibeam = readline(); -global.wbeam = readline(); -global.pbeam = readline(); -global.sbeam = readline(); -global.morphball = readline(); -global.jumpball = readline(); -global.powergrip = readline(); -global.spacejump = readline(); -global.screwattack = readline(); -global.hijump = readline(); -global.spiderball = readline(); -global.speedbooster = readline(); -global.bomb = readline(); + +if(!instance_exists(oClient)){ + global.currentsuit = readline(); + global.cbeam = readline(); + global.ibeam = readline(); + global.wbeam = readline(); + global.pbeam = readline(); + global.sbeam = readline(); + global.morphball = readline(); + global.jumpball = readline(); + global.powergrip = readline(); + global.spacejump = readline(); + global.screwattack = readline(); + global.hijump = readline(); + global.spiderball = readline(); + global.speedbooster = readline(); + global.bomb = readline(); +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ + global.currentsuit = readline(); + global.cbeam = readline(); + global.ibeam = readline(); + global.wbeam = readline(); + global.pbeam = readline(); + global.sbeam = readline(); + global.morphball = readline(); + global.jumpball = readline(); + global.powergrip = readline(); + global.spacejump = readline(); + global.screwattack = readline(); + global.hijump = readline(); + global.spiderball = readline(); + global.speedbooster = readline(); + global.bomb = readline(); +} + ds_list_clear(list); diff --git a/scripts/sv6_get_items.gml b/scripts/sv6_get_items.gml index 35829071..dc8c0355 100644 --- a/scripts/sv6_get_items.gml +++ b/scripts/sv6_get_items.gml @@ -3,8 +3,19 @@ list = ds_list_create(); ds_list_read(list, base64_decode(file_text_read_string(argument0))); i = 0; j = 0; -repeat (350) { - global.item[j] = readline(); - j += 1; + +if(!instance_exists(oClient)){ + repeat (350) { + global.item[j] = readline(); + j += 1; + } +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ + repeat (350) { + global.item[j] = readline(); + j += 1; + } } + ds_list_clear(list); diff --git a/scripts/sv6_get_main.gml b/scripts/sv6_get_main.gml index 532de311..41f96817 100644 --- a/scripts/sv6_get_main.gml +++ b/scripts/sv6_get_main.gml @@ -4,16 +4,34 @@ ds_list_read(list, base64_decode(file_text_read_string(argument0))); i = 0; global.save_room = readline(); global.difficulty = readline(); -global.gametime = readline(); -global.itemstaken = readline(); -global.etanks = readline(); -global.mtanks = readline(); -global.stanks = readline(); -global.ptanks = readline(); -global.monstersleft = readline(); -global.monstersarea = readline(); -global.lavastate = readline(); -global.mapmarker = readline(); -global.mapmarkerx = readline(); -global.mapmarkery = readline(); +if(!instance_exists(oClient)){ + global.gametime = readline(); + global.itemstaken = readline(); + global.etanks = readline(); + global.mtanks = readline(); + global.stanks = readline(); + global.ptanks = readline(); + global.monstersleft = readline(); + global.monstersarea = readline(); + global.lavastate = readline(); + global.mapmarker = readline(); + global.mapmarkerx = readline(); + global.mapmarkery = readline(); +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ + global.gametime = readline(); + global.itemstaken = readline(); + global.etanks = readline(); + global.mtanks = readline(); + global.stanks = readline(); + global.ptanks = readline(); + global.monstersleft = readline(); + global.monstersarea = readline(); + global.lavastate = readline(); + global.mapmarker = readline(); + global.mapmarkerx = readline(); + global.mapmarkery = readline(); +} + ds_list_clear(list); diff --git a/scripts/sv6_get_map.gml b/scripts/sv6_get_map.gml index b272044d..880a81b4 100644 --- a/scripts/sv6_get_map.gml +++ b/scripts/sv6_get_map.gml @@ -3,13 +3,27 @@ list = ds_list_create(); ds_list_read(list, base64_decode(file_text_read_string(argument0))); i = 0; k = 0; -repeat (80) { - j = 0; + +if(!instance_exists(oClient)){ + repeat (80) { + j = 0; + repeat (80) { + global.dmap[k, j] = readline(); + j += 1; + } + k += 1; + } +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ repeat (80) { - global.dmap[k, j] = readline(); - j += 1; + j = 0; + repeat (80) { + global.dmap[k, j] = readline(); + j += 1; + } + k += 1; } - k += 1; } ds_list_clear(list); diff --git a/scripts/sv6_get_monsters.gml b/scripts/sv6_get_monsters.gml index d75746f0..fef16954 100644 --- a/scripts/sv6_get_monsters.gml +++ b/scripts/sv6_get_monsters.gml @@ -3,8 +3,19 @@ list = ds_list_create(); ds_list_read(list, base64_decode(file_text_read_string(argument0))); i = 0; j = 0; -repeat (100) { - global.metdead[j] = readline(); - j += 1; + +if(!instance_exists(oClient)){ + repeat (100) { + global.metdead[j] = readline(); + j += 1; + } +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ + repeat (100) { + global.metdead[j] = readline(); + j += 1; + } } + ds_list_clear(list); diff --git a/scripts/sv6_load.gml b/scripts/sv6_load.gml index 05ca697b..23626530 100644 --- a/scripts/sv6_load.gml +++ b/scripts/sv6_load.gml @@ -3,9 +3,19 @@ scr_default_global_items(); var header; -load_character_vars(); -reset_map(); -init_map(); + +if(!instance_exists(oClient)){ + load_character_vars(); + reset_map(); + init_map(); +} else if(instance_exists(oClient) && global.lastroom == gameoverroom){ + //don't reset values +} else if(instance_exists(oClient) && global.lastroom != gameoverroom){ + load_character_vars(); + reset_map(); + init_map(); +} + filename = argument0; if (os_is_native) { file_copy(filename, filename + "d"); @@ -70,5 +80,4 @@ if (header != "[AM2R SaveData V7.0]") { room_change(global.start_room, 1); - } // if (header != "[AM2R SaveData V7.0]") else diff --git a/scripts/update_variables.gml b/scripts/update_variables.gml index 481ef3d6..e506eafa 100644 --- a/scripts/update_variables.gml +++ b/scripts/update_variables.gml @@ -57,7 +57,7 @@ switch(argument0){ } else if(global.onlineReceived[# 2, i] == 25 && global.receivedClientID == global.clientID){ global.smissilesPrev = global.smissiles; } - + /* if(global.onlineReceived[# 2, i] == 2 && global.receivedClientID != global.clientID){ global.itemstaken = global.onlineReceived[# 1, i]; if(global.itemstakenPrev != global.itemstaken){ @@ -102,7 +102,7 @@ switch(argument0){ } else if(global.onlineReceived[# 2, i] == 8 && global.receivedClientID == global.clientID){ global.maxhealthPrev = global.maxhealth; } - + */ if(global.onlineReceived[# 2, i] == 9 && global.receivedClientID != global.clientID){ global.playerhealth = global.onlineReceived[# 1, i]; if(global.playerhealthPrev != global.playerhealth){ @@ -316,7 +316,7 @@ switch(argument0){ } else if(global.onlineReceived[# 2, i] == 26 && global.receivedClientID == global.clientID){ global.pbombsPrev = global.pbombs; } - + /* if(global.onlineReceived[# 2, i] == 27 && global.receivedClientID != global.clientID){ global.etanks = global.onlineReceived[# 1, i]; if(global.etanksPrev != global.etanks){ @@ -352,7 +352,7 @@ switch(argument0){ } else if(global.onlineReceived[# 2, i] == 30 && global.receivedClientID == global.clientID){ global.ptanksPrev = global.ptanks; } - + */ if(global.onlineReceived[# 2, i] == 31 && global.receivedClientID != global.clientID){ global.currentsuit = global.onlineReceived[# 1, i]; if(global.currentsuitPrev != global.currentsuit){ @@ -376,20 +376,20 @@ switch(argument0){ //ds_grid_set(global.onlineList, 1, 0, global.item); //ds_grid_set(global.onlineList, 0, 1, global.metdeadPrev); //ds_grid_set(global.onlineList, 1, 1, global.metdead); - ds_grid_set(global.onlineList, 0, 2, global.itemstakenPrev); - ds_grid_set(global.onlineList, 1, 2, global.itemstaken); + //ds_grid_set(global.onlineList, 0, 2, global.itemstakenPrev); + //ds_grid_set(global.onlineList, 1, 2, global.itemstaken); //ds_grid_set(global.onlineList, 0, 3, global.eventPrev); //ds_grid_set(global.onlineList, 1, 3, global.event); //ds_grid_set(global.onlineList, 0, 4, global.monstersleftPrev); //ds_grid_set(global.onlineList, 1, 4, global.monstersleft); - ds_grid_set(global.onlineList, 0, 5, global.maxmissilesPrev); - ds_grid_set(global.onlineList, 1, 5, global.maxmissiles); - ds_grid_set(global.onlineList, 0, 6, global.maxsmissilesPrev); - ds_grid_set(global.onlineList, 1, 6, global.maxsmissiles); - ds_grid_set(global.onlineList, 0, 7, global.maxpbombsPrev); - ds_grid_set(global.onlineList, 1, 7, global.maxpbombs); - ds_grid_set(global.onlineList, 0, 8, global.maxhealthPrev); - ds_grid_set(global.onlineList, 1, 8, global.maxhealth); + //ds_grid_set(global.onlineList, 0, 5, global.maxmissilesPrev); + //ds_grid_set(global.onlineList, 1, 5, global.maxmissiles); + //ds_grid_set(global.onlineList, 0, 6, global.maxsmissilesPrev); + //ds_grid_set(global.onlineList, 1, 6, global.maxsmissiles); + //ds_grid_set(global.onlineList, 0, 7, global.maxpbombsPrev); + //ds_grid_set(global.onlineList, 1, 7, global.maxpbombs); + //ds_grid_set(global.onlineList, 0, 8, global.maxhealthPrev); + //ds_grid_set(global.onlineList, 1, 8, global.maxhealth); ds_grid_set(global.onlineList, 0, 9, global.playerhealthPrev); ds_grid_set(global.onlineList, 1, 9, global.playerhealth); ds_grid_set(global.onlineList, 0, 10, global.morphballPrev); @@ -426,14 +426,14 @@ switch(argument0){ ds_grid_set(global.onlineList, 1, 25, global.smissiles); ds_grid_set(global.onlineList, 0, 26, global.pbombsPrev); ds_grid_set(global.onlineList, 1, 26, global.pbombs); - ds_grid_set(global.onlineList, 0, 27, global.etanksPrev); - ds_grid_set(global.onlineList, 1, 27, global.etanks); - ds_grid_set(global.onlineList, 0, 28, global.mtanksPrev); - ds_grid_set(global.onlineList, 1, 28, global.mtanks); - ds_grid_set(global.onlineList, 0, 29, global.stanksPrev); - ds_grid_set(global.onlineList, 1, 29, global.stanks); - ds_grid_set(global.onlineList, 0, 30, global.ptanksPrev); - ds_grid_set(global.onlineList, 1, 30, global.ptanks); + //ds_grid_set(global.onlineList, 0, 27, global.etanksPrev); + //ds_grid_set(global.onlineList, 1, 27, global.etanks); + //ds_grid_set(global.onlineList, 0, 28, global.mtanksPrev); + //ds_grid_set(global.onlineList, 1, 28, global.mtanks); + //ds_grid_set(global.onlineList, 0, 29, global.stanksPrev); + //ds_grid_set(global.onlineList, 1, 29, global.stanks); + //ds_grid_set(global.onlineList, 0, 30, global.ptanksPrev); + //ds_grid_set(global.onlineList, 1, 30, global.ptanks); ds_grid_set(global.onlineList, 0, 31, global.currentsuitPrev); ds_grid_set(global.onlineList, 1, 31, global.currentsuit); //ds_grid_set(global.onlineList, 0, 32, global.monstersareaPrev); @@ -444,13 +444,13 @@ switch(argument0){ case "replaceglobalvars": //global.item = ds_grid_get(global.onlineList, 1, 0); //global.metdead = ds_grid_get(global.onlineList, 1, 1); - global.itemstaken = ds_grid_get(global.onlineList, 1, 2); + //global.itemstaken = ds_grid_get(global.onlineList, 1, 2); //global.event = ds_grid_get(global.onlineList, 1, 3); //global.monstersleft = ds_grid_get(global.onlineList, 1, 4); - global.maxmissiles = ds_grid_get(global.onlineList, 1, 5); - global.maxsmissiles = ds_grid_get(global.onlineList, 1, 6); - global.maxpbombs = ds_grid_get(global.onlineList, 1, 7); - global.maxhealth = ds_grid_get(global.onlineList, 1, 8); + //global.maxmissiles = ds_grid_get(global.onlineList, 1, 5); + //global.maxsmissiles = ds_grid_get(global.onlineList, 1, 6); + //global.maxpbombs = ds_grid_get(global.onlineList, 1, 7); + //global.maxhealth = ds_grid_get(global.onlineList, 1, 8); global.playerhealth = ds_grid_get(global.onlineList, 1, 9); global.morphball = ds_grid_get(global.onlineList, 1, 10); global.jumpball = ds_grid_get(global.onlineList, 1, 11); @@ -469,10 +469,10 @@ switch(argument0){ global.missiles = ds_grid_get(global.onlineList, 1, 24); global.smissiles = ds_grid_get(global.onlineList, 1, 25); global.pbombs = ds_grid_get(global.onlineList, 1, 26); - global.etanks = ds_grid_get(global.onlineList, 1, 27); - global.mtanks = ds_grid_get(global.onlineList, 1, 28); - global.stanks = ds_grid_get(global.onlineList, 1, 29); - global.ptanks = ds_grid_get(global.onlineList, 1, 30); + //global.etanks = ds_grid_get(global.onlineList, 1, 27); + //global.mtanks = ds_grid_get(global.onlineList, 1, 28); + //global.stanks = ds_grid_get(global.onlineList, 1, 29); + //global.ptanks = ds_grid_get(global.onlineList, 1, 30); global.currentsuit = ds_grid_get(global.onlineList, 1, 31); //global.monstersarea = ds_grid_get(global.onlineList, 1, 32); global.lavastate = ds_grid_get(global.onlineList, 1, 33); diff --git a/sprites/sMultitroidMapIcon.sprite.gmx b/sprites/sMultitroidMapIcon.sprite.gmx new file mode 100644 index 00000000..8922d9bf --- /dev/null +++ b/sprites/sMultitroidMapIcon.sprite.gmx @@ -0,0 +1,32 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 7 + 0 + 7 + 0 + 0 + + 0 + + 0 + 8 + 8 + + images\sMultitroidMapIcon_0.png + images\sMultitroidMapIcon_1.png + images\sMultitroidMapIcon_2.png + images\sMultitroidMapIcon_3.png + images\sMultitroidMapIcon_4.png + images\sMultitroidMapIcon_5.png + images\sMultitroidMapIcon_6.png + images\sMultitroidMapIcon_7.png + + diff --git a/sprites/sPalMultitroidBaby.sprite.gmx b/sprites/sPalMultitroidBaby.sprite.gmx new file mode 100644 index 00000000..dd8f8f6f --- /dev/null +++ b/sprites/sPalMultitroidBaby.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 9 + 0 + 0 + + 0 + + 0 + 9 + 10 + + images\sPalMultitroidBaby_0.png + +