diff --git a/.gitignore b/.gitignore index 2355942a..17a88d5e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,11 +9,12 @@ scripts/pal_swap_* *.shader \#backups exports -datafiles help.rtf datafiles/lang/* datafiles/mods/* datafiles/modifiers.ini +datafiles/readme.txt +datafiles/explanations.txt exports extensions AM2R.exe diff --git a/AM2R.project.gmx b/AM2R.project.gmx index 25f9d9aa..041cc8de 100644 --- a/AM2R.project.gmx +++ b/AM2R.project.gmx @@ -3,8 +3,8 @@ Configs\Default - - + + czech.ini -1 @@ -158,7 +158,706 @@ languages.txt - + + + castellano_a1_f24_b0_c3_d19_e21.png + -1 + 1668 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a1_f24_b0_c3_d19_e21.png + + + castellano_a2_f31_b0_c3_d26_e28.png + -1 + 2607 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a2_f31_b0_c3_d26_e28.png + + + castellano_a3_f30_b0_c3_d25_e27.png + -1 + 2266 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a3_f30_b0_c3_d25_e27.png + + + castellano_a4_f19_b0_c3_d14_e16.png + -1 + 1080 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a4_f19_b0_c3_d14_e16.png + + + castellano_a5_f32_b0_c3_d27_e29.png + -1 + 2767 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a5_f32_b0_c3_d27_e29.png + + + castellano_a7_f19_b0_c7_d9_e17.png + -1 + 1129 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a7_f19_b0_c7_d9_e17.png + + + castellano_a8_f20_b0_c7_d15_e17.png + -1 + 811 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + castellano_a8_f20_b0_c7_d15_e17.png + + + deutsch_a1_f26_b0_c3_d21_e23.png + -1 + 1838 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + deutsch_a1_f26_b0_c3_d21_e23.png + + + deutsch_a2_f22_b0_c3_d17_e19.png + -1 + 1337 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + deutsch_a2_f22_b0_c3_d17_e19.png + + + deutsch_a3_f28_b0_c3_d23_e25.png + -1 + 2056 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + deutsch_a3_f28_b0_c3_d23_e25.png + + + deutsch_a4_f19_b0_c3_d14_e16.png + -1 + 1075 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + deutsch_a4_f19_b0_c3_d14_e16.png + + + deutsch_a5_f28_b0_c3_d23_e25.png + -1 + 1990 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + deutsch_a5_f28_b0_c3_d23_e25.png + + + deutsch_a7_f19_b0_c7_d9_e17.png + -1 + 1445 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + deutsch_a7_f19_b0_c7_d9_e17.png + + + francais_a1_f22_b0_c3_d17_e19.png + -1 + 1519 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a1_f22_b0_c3_d17_e19.png + + + francais_a2_f25_b0_c3_d20_e22.png + -1 + 1705 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a2_f25_b0_c3_d20_e22.png + + + francais_a3_f30_b0_c3_d25_e27.png + -1 + 2311 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a3_f30_b0_c3_d25_e27.png + + + francais_a4_f18_b0_c3_d13_e15.png + -1 + 986 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a4_f18_b0_c3_d13_e15.png + + + francais_a5_f32_b0_c3_d27_e29.png + -1 + 2461 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a5_f32_b0_c3_d27_e29.png + + + francais_a7_f19_b0_c7_d9_e17.png + -1 + 1160 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a7_f19_b0_c7_d9_e17.png + + + francais_a8_f20_b0_c7_d15_e17.png + -1 + 907 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + francais_a8_f20_b0_c7_d15_e17.png + + + italiano_a1_f26_b0_c3_d21_e23.png + -1 + 1950 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a1_f26_b0_c3_d21_e23.png + + + italiano_a2_f26_b0_c3_d21_e23.png + -1 + 1817 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a2_f26_b0_c3_d21_e23.png + + + italiano_a3_f32_b0_c3_d27_e29.png + -1 + 2458 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a3_f32_b0_c3_d27_e29.png + + + italiano_a4_f19_b0_c3_d14_e16.png + -1 + 1080 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a4_f19_b0_c3_d14_e16.png + + + italiano_a5_f33_b0_c3_d28_e30.png + -1 + 2736 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a5_f33_b0_c3_d28_e30.png + + + italiano_a7_f19_b0_c7_d9_e17.png + -1 + 1167 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a7_f19_b0_c7_d9_e17.png + + + italiano_a8_f20_b0_c7_d15_e17.png + -1 + 858 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + italiano_a8_f20_b0_c7_d15_e17.png + + + japanese_a1_f16_b0_c3_d11_e13.png + -1 + 2444 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a1_f16_b0_c3_d11_e13.png + + + japanese_a2_f16_b0_c3_d11_e13.png + -1 + 2673 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a2_f16_b0_c3_d11_e13.png + + + japanese_a3_f16_b0_c3_d11_e13.png + -1 + 2722 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a3_f16_b0_c3_d11_e13.png + + + japanese_a4_f15_b0_c3_d10_e12.png + -1 + 1822 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a4_f15_b0_c3_d10_e12.png + + + japanese_a5_f18_b0_c3_d13_e15.png + -1 + 4153 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a5_f18_b0_c3_d13_e15.png + + + japanese_a7_f19_b0_c7_d9_e17.png + -1 + 2232 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a7_f19_b0_c7_d9_e17.png + + + japanese_a8_f20_b0_c3_d15_e17.png + -1 + 4048 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + japanese_a8_f20_b0_c3_d15_e17.png + + + russian_a1_f23_b0_c3_d18_e20.png + -1 + 1730 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a1_f23_b0_c3_d18_e20.png + + + russian_a2_f24_b0_c3_d19_e21.png + -1 + 1585 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a2_f24_b0_c3_d19_e21.png + + + russian_a3_f22_b0_c3_d17_e19.png + -1 + 1440 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a3_f22_b0_c3_d17_e19.png + + + russian_a4_f17_b0_c3_d12_e14.png + -1 + 882 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a4_f17_b0_c3_d12_e14.png + + + russian_a5_f30_b0_c3_d25_e27.png + -1 + 2524 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a5_f30_b0_c3_d25_e27.png + + + russian_a7_f19_b0_c7_d9_e17.png + -1 + 1401 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a7_f19_b0_c7_d9_e17.png + + + russian_a8_f19_b0_c3_d14_e16.png + -1 + 873 + 2 + + 0 + -1 + 0 + 0 + + + 9223372036854775807 + + + russian_a8_f19_b0_c3_d14_e16.png + + + 04b09.ttf -1 @@ -315,9 +1014,9 @@ modifiers.ini - ipaddress.txt + readme.txt -1 - 0 + 2802 2 0 @@ -329,12 +1028,12 @@ 9223372036854775807 - ipaddress.txt + readme.txt - readme.txt + mod settings.ini -1 - 2802 + 67 2 0 @@ -346,7 +1045,7 @@ 9223372036854775807 - readme.txt + mod settings.ini dictionary.json @@ -365,8 +1064,8 @@ dictionary.json - - + + config.ini -1 @@ -402,8 +1101,8 @@ titlebackground.png - - + + alpha.png -1 @@ -424,7 +1123,7 @@ config.ini -1 - 138 + 135 2 0 @@ -575,7 +1274,7 @@ zeta_blur.png - + fusion_gravity.png -1 @@ -678,7 +1377,7 @@ varia.png - + fusion_gravity.png -1 @@ -782,7 +1481,7 @@ varia.png - + fusion_gravity.png -1 @@ -886,7 +1585,7 @@ varia.png - + fusion_gravity.png -1 @@ -3423,6 +4122,15 @@ sprites\sShipGlow + + sprites\sMultitroidIcon + sprites\sPalMultitroidNew + sprites\sDarkMultitroidPlayer + sprites\sPalMultitroidFusion + sprites\sPalSpiderball + sprites\sPalMultitroidBaby + sprites\sMultitroidMapIcon + background\bgScreenGuide @@ -4357,29 +5065,37 @@ - + + + + + + + + - - - - + + - - - + shaders\shGameBoy.shader - shaders\shPaletteSwap.shader + shaders\shd_grayscale.shader + shaders\shd_pal_swapper.shader + shaders\shd_pal_swapper_html_sprite.shader + shaders\shd_pal_swapper_html_surface.shader + shaders\shd_sepia.shader + shaders\shd_thermal.shader fonts\font0 @@ -4390,6 +5106,7 @@ fonts\fontMenuTinyDefault fonts\fontMenuSmall2Default fonts\fontSubScrDefault + fonts\font_displayname @@ -5420,6 +6137,7 @@ objects\oA3_Missiles_Glow objects\oClient + objects\oNametag timelines\timelineCrystal diff --git a/Configs/Default.config.gmx b/Configs/Default.config.gmx index 3ed63480..c5b7bbda 100644 --- a/Configs/Default.config.gmx +++ b/Configs/Default.config.gmx @@ -615,7 +615,7 @@ Configs\Default\windows\Runner_finish.bmp Configs\Default\windows\Runner_header.bmp 0 - 1 + 11 #000000 Configs\Default\windows\splash.png 0 diff --git a/README.md b/README.md index 1ff59dde..eafc7ce7 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,26 @@ # AM2R-Community-Updates ## Co-op Changes -The source code here has the same requirements as the original repo in order for it to work. Only the code and my changes have been included. Also, the string compression scripts are by Homunculus: https://marketplace.yoyogames.com/assets/4560/strict +String compression scripts are by Homunculus: https://marketplace.yoyogames.com/assets/4560/strict -Currently syncs all items, metroids, events, and power-ups. +m5x7 font by Daniel Linssen: https://managore.itch.io/m5x7 -Currently, pressing F1 will make an attempt to connect to the server. F2 will disconnect from the server. F3 will show the current random seed. +Special thanks to Lojical/Lojemiru and ShirtyScarab for help with programming and art. -Put the ip of the server you want to connect to into the ipaddress.txt. The server operates on port 64198 and cannot be changed at the moment. +The source code here has the same requirements as the original repo in order for it to work. Only the code and my changes have been included. -The server can be found here: https://github.com/lassiterm/AM2R-Server +Currently syncs all health, items, metroids, events, and power-ups. The Queen fight is synced, the reactor explosion sequence is synced, the transition to the credits at the end is synced, and death is synced. (There may be more things synced that I've forgotten about.) + +If players die, progress will be kept for a better user experience. + +Currently, pressing F1 will make an attempt to connect to the server. F2 will disconnect from the server. F3 will show the current random seed. F4 will toggle nametags. +Put the ip and port of the server you want to connect to into the mod settings.ini. + +The server can be found here: https://github.com/lassiterm/AM2R-Server ## To-do List - - Save syncing - - Message that tells you what power-up has been obtained - - More definitive player data tracking by the server - kinda done but not quite - - Other things I haven't thought of yet, so if you have any ideas or suggestions, let me know in the AM2R Discord Server + - I've covered most of what I wanted to add, but if you have any suggestions, feel free to @milesthenerd in the AM2R Discord Server. ## What is this? The source code for the AM2R Community Updates 1.5.x branch, free of copyrighted assets and trademarks. diff --git a/datafiles/ipaddress.txt b/datafiles/ipaddress.txt deleted file mode 100644 index e56ea71e..00000000 --- a/datafiles/ipaddress.txt +++ /dev/null @@ -1 +0,0 @@ -127.0.0.1 \ No newline at end of file diff --git a/datafiles/mod settings.ini b/datafiles/mod settings.ini new file mode 100644 index 00000000..f416c630 --- /dev/null +++ b/datafiles/mod settings.ini @@ -0,0 +1,15 @@ +[ModSettings] +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/fonts/font_displayname.font.gmx b/fonts/font_displayname.font.gmx new file mode 100644 index 00000000..06f82553 --- /dev/null +++ b/fonts/font_displayname.font.gmx @@ -0,0 +1,118 @@ + + + m5x7 + 12 + -1 + 0 + 0 + 1 + 3 + 0 + + + 0 + + + 32,127 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font_displayname.png + diff --git a/objects/oA2SmallTurbine.object.gmx b/objects/oA2SmallTurbine.object.gmx index cde55d5c..a632933a 100644 --- a/objects/oA2SmallTurbine.object.gmx +++ b/objects/oA2SmallTurbine.object.gmx @@ -112,7 +112,8 @@ alarm[0] = 5 + random(3); 1 - if (stun > 0) stun -= 1; + if (global.event[101] >= eventno) instance_destroy(); +if (stun > 0) stun -= 1; if (flashing > 0) flashing -= 1; if (fxtimer < 5) { fxtimer += 1; diff --git a/objects/oA4RocksCollision.object.gmx b/objects/oA4RocksCollision.object.gmx index c6db317b..666c26ed 100644 --- a/objects/oA4RocksCollision.object.gmx +++ b/objects/oA4RocksCollision.object.gmx @@ -34,6 +34,34 @@ mysolid.image_xscale = 2; mysolid.image_yscale = 4; } + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + if(global.event[206] == 1){ + with (oA4Rock) event_user(0); + with (oA4RockTop) event_user(0); + with (mysolid) instance_destroy(); + instance_destroy(); +} diff --git a/objects/oClient.object.gmx b/objects/oClient.object.gmx index ef5c1b67..4765f0e5 100644 --- a/objects/oClient.object.gmx +++ b/objects/oClient.object.gmx @@ -2,7 +2,7 @@ <undefined> 0 - 0 + -1 0 -1 <undefined> @@ -27,20 +27,80 @@ 1 network_set_config(network_config_connect_timeout, 5000); strict_init("dictionary.json"); +queenHealthResetQueued = false; canSend = false; +showName = true; +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; 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; type = network_socket_tcp; -var file = file_text_open_read(working_directory + "\ipaddress.txt"); -ipaddress = file_text_read_string(file); -file_text_close(file); -port = 64198; +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(); 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; @@ -50,15 +110,35 @@ buffer = buffer_create(size, type, alignment); global.queenhealthPrev = 600; global.queenphasePrev = 0; +if(instance_exists(oCharacter)){ + global.prevX = oCharacter.x; + global.prevY = oCharacter.y; + global.prevSprite = oCharacter.sprite_index; + global.prevIndex = oCharacter.image_index; +} +global.roomPrev = room; + global.clientID = 0; global.packetID = 0; global.receivedPacketID = 0; global.onlineList = ds_grid_create(3, 35); global.onlineSend = ds_grid_create(3, 35); +global.onlineItem = ds_grid_create(1, 1); +global.onlineMetdead = ds_grid_create(1, 1); +global.onlineEvent = ds_grid_create(1, 1); +global.onlineMap = ds_grid_create(1, 1); global.onlineReceived = ds_grid_create(3, 35); -global.storedBuffers = ds_grid_create(2, 1); +//global.storedBuffers = ds_grid_create(2, 1); global.receivedPacketIDs = ds_list_create(); +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); +ds_grid_clear(global.onlineEvent, -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); @@ -67,6 +147,19 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){ update_variables("initprev"); update_variables("onlinevars"); + +if(shader_is_compiled(shd_pal_swapper)){ + alpha = 1 +} else { + alpha = 0.5 +} + +posX = 3; +posY = 3; + +time = 60; + +trail = 0; @@ -89,22 +182,45 @@ update_variables("onlinevars"); 1 - network_destroy(socket); + if(connected){ + popup_text("Disconnected"); + 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); + var result = network_send_packet(socket, buffer, buffer_tell(buffer)); +} + +network_destroy(socket); buffer_delete(buffer); ds_grid_destroy(global.onlineList); ds_grid_destroy(global.onlineSend); ds_grid_destroy(global.onlineReceived); -ds_grid_destroy(global.storedBuffers); +//ds_grid_destroy(global.storedBuffers); +ds_grid_destroy(global.onlineItem); +ds_grid_destroy(global.onlineMetdead); +ds_grid_destroy(global.onlineEvent); +ds_grid_destroy(global.onlineMap); ds_list_destroy(global.receivedPacketIDs); -if(connected){ - popup_text("Disconnected"); -} +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; - + 1 603 @@ -121,24 +237,31 @@ if(connected){ 1 - if(queenHealthResetQueued){ - if(!is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ - oQueenHead.myhealth = queenHealth; - oQueen.phase = phase; - if(state == 100){ - oQueen.state = state; - oQueen.statetime = 0; - } - queenHealthResetQueued = false; - } - alarm[1] = 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, 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); +var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + +if(ds_list_size(posData)){ + } + +alarm[11] = 20; - + 1 603 @@ -155,78 +278,79 @@ if(connected){ 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 != 1 && i != 3){ - global.onlineSend[# 0, i] = global.onlineList[# 0, i]; - global.onlineSend[# 1, i] = global.onlineList[# 1, i]; - global.onlineSend[# 2, i] = global.onlineList[# 2, i]; - show_debug_message(string(global.onlineSend[# 0, i]) + " " + string(global.onlineSend[# 1, i]) + " " + string(global.onlineSend[# 2, i])); - canSend = true; - alarm[0] = 600; - } - - if(i == 0){ - var v = 0; - var itemPrev = global.onlineList[# 0, 0]; - var item = global.onlineList[# 1, 0]; - for(var f=0; f<array_length_1d(item); f++){ - if(itemPrev[f] != item[f]){ - global.itemChanges[v, 0] = global.item[f]; - global.itemChanges[v, 1] = f; - global.onlineSend[# 1, 0] = global.itemChanges; - global.onlineSend[# 2, 0] = global.onlineList[# 2, 0]; - show_debug_message(string(global.itemPrev[f]) + " " + string(global.item[f])); - show_debug_message("item changed"); - canSend = true; - v++; - + 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){ + if(global.prevX != oCharacter.x){ + global.prevX = oCharacter.x; } - } - } - - if(i == 1){ - var v = 0; - var metdeadPrev = global.onlineList[# 0, 1]; - var metdead = global.onlineList[# 1, 1]; - for(var f=0; f<array_length_1d(metdead); f++){ - if(metdeadPrev[f] != metdead[f]){ - global.metdeadChanges[v, 0] = global.metdead[f]; - global.metdeadChanges[v, 1] = f; - global.onlineSend[# 1, 1] = global.metdeadChanges; - global.onlineSend[# 2, 1] = global.onlineList[# 2, 1]; - show_debug_message(string(global.metdeadPrev[f]) + " " + string(global.metdead[f])); - show_debug_message("metdead changed"); - canSend = true; - v++; - + if(global.prevY != oCharacter.y){ + global.prevY = oCharacter.y; } - } - } - - if(i == 3){ - var v = 0; - var eventPrev = global.onlineList[# 0, 3]; - var event = global.onlineList[# 1, 3]; - for(var f=0; f<array_length_1d(eventPrev) - 1; f++){ - if(eventPrev[f] != event[f]){ - global.eventChanges[v, 0] = global.event[f]; - global.eventChanges[v, 1] = f; - global.onlineSend[# 1, 3] = global.eventChanges; - global.onlineSend[# 2, 3] = global.onlineList[# 2, 3]; - show_debug_message(string(global.eventPrev[f]) + " " + string(global.event[f])); - show_debug_message("event changed"); - canSend = true; - v++; - + if(global.prevSprite != oCharacter.sprite_index){ + global.prevSprite = oCharacter.sprite_index; + } + if(global.prevIndex != oCharacter.image_index){ + global.prevIndex = oCharacter.image_index; + } + 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); + var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + if(global.roomPrev != room){ + global.roomPrev = room; } } } } - -if(canSend){ +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; @@ -234,60 +358,72 @@ if(canSend){ 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, 12); + buffer_write(buffer, buffer_u8, global.maxsmissiles); buffer_write(buffer, buffer_u8, global.clientID); - buffer_write(buffer, buffer_u32, global.packetID); - global.storedBuffers[# 0, global.packetID] = global.onlineSend; - global.storedBuffers[# 1, global.packetID] = global.clientID; var result = network_send_packet(socket, buffer, buffer_tell(buffer)); - show_debug_message("packetID = " + string(global.packetID)); - global.packetID++; - ds_grid_resize(global.storedBuffers, 2, global.packetID + 1); - ds_grid_clear(global.onlineSend, -1); + maxsmissilesChanged = true; } -if(!canSend){ - alarm[0] = 30; +if(!maxsmissilesChanged){ + alarm[9] = 10; } -if(canSend){ - canSend = false; - alarm[0] = 75; +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; } -check_areaclear(); - -if(global.playerhealth <= 0){ - if(oCharacter.state != oCharacter.DEFEATED){ - oCharacter.alarm[0] = 6; - oCharacter.state = oCharacter.DEFEATED; - } +if(!maxmissilesChanged){ + alarm[8] = 10; } -if(!is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ - if(global.queenhealthPrev != oQueenHead.myhealth){ - 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_s16, 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)); - } +if(maxmissilesChanged){ + maxmissilesChanged = false; + alarm[8]= 75; } - + 1 603 @@ -304,78 +440,35 @@ if(!is_undefined(oQueenHead.myhealth) && !is_undefined(oQueen.phase)){ 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); - var result = network_send_packet(socket, buffer, buffer_tell(buffer)); - alarm[0] = 5; - } else { - instance_destroy(); - popup_text("Failed to connect"); - } -} - -if(!is_undefined(oQueen.phase)){ - if(oQueen.phase >= 1 && instance_exists(inst_146524)){ - event_perform_object(oQueenFireball, ev_other, ev_user1); - } - if(oQueen.phase >= 2 && instance_exists(inst_146525) && instance_exists(inst_146520)){ - event_perform_object(oQueenFireball, ev_other, ev_user2); - } - if(oQueen.phase >= 3 && instance_exists(inst_146526) && instance_exists(inst_146514)){ - event_perform_object(oQueenFireball, ev_other, ev_user3); - } - if((oQueen.phase >= 4 || oQueen.phase == 5) && instance_exists(inst_146527)){ - event_perform_object(oQueenFireball, ev_other, ev_user4); - } - if(global.event[303] > 0 && !queenDead){ - 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; - mus_fadeout(musQueen); - mus_fadeout(musQueen3); - oMusicV2.bossbgm = sndJump; - sfx_play(sndQueenDeath); - } - queenDead = true; - } + 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(keyboard_check_pressed(vk_f2)){ - instance_destroy(); +if(!itemstakenChanged){ + alarm[7] = 10; } -if(keyboard_check_pressed(vk_f3)){ - popup_text_ext(string(oControl.seed), 300); +if(itemstakenChanged){ + itemstakenChanged = false; + alarm[7] = 75; } - + 1 603 @@ -392,47 +485,1177 @@ if(keyboard_check_pressed(vk_f3)){ 1 - -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"); - show_debug_message(buffer_get_size(_buffer)); - buffer_seek(_buffer, buffer_seek_start, 0); - msgid = buffer_read(_buffer, buffer_u8); - switch(msgid){ - case 0: - global.clientID = buffer_read(_buffer, buffer_u8); - break; - case 1: - ds_grid_read(global.onlineReceived, strict_decompress(buffer_read(_buffer, buffer_string))); - global.receivedClientID = buffer_read(_buffer, buffer_u8); - if(global.receivedClientID == global.clientID){ - global.receivedPacketIDs[| global.receivedPacketID] = buffer_read(_buffer, buffer_u32); + 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]){ + global.dmapChanges[v, 0] = global.dmap[i, f]; + global.dmapChanges[v, 1] = i; + global.dmapChanges[v, 2] = f; + global.onlineMap[# 0, 0] = global.dmapChanges; + mapChanged = true; + if(v == 30){ + break; } - global.receivedPacketID++; - if(global.receivedClientID != global.clientID){ - update_variables("disablesame"); - update_variables("replaceglobalvars"); - update_variables("updateprev"); - alarm[0] = 30; - ds_grid_clear(global.onlineReceived, -1); - } + v++; + } + } + } +} + +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); + buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineMap))); + 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(global.eventPrev[f] != global.event[f]){ + global.eventChanges[v, 0] = global.event[f]; + global.eventChanges[v, 1] = f; + global.onlineEvent[# 0, 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_grid_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, 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_grid_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, 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_grid_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 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 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(!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; + 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 != 1 && i != 3){ + global.onlineSend[# 0, i] = global.onlineList[# 0, i]; + global.onlineSend[# 1, i] = global.onlineList[# 1, i]; + global.onlineSend[# 2, i] = global.onlineList[# 2, i]; + canSend = true; + alarm[0] = 600; + } + + /* + if(i == 0){ + var v = 0; + var itemPrev = global.onlineList[# 0, 0]; + var item = global.onlineList[# 1, 0]; + for(var f=0; f<array_length_1d(item); f++){ + if(itemPrev[f] != item[f]){ + global.itemChanges[v, 0] = global.item[f]; + global.itemChanges[v, 1] = f; + global.onlineSend[# 1, 0] = global.itemChanges; + global.onlineSend[# 2, 0] = global.onlineList[# 2, 0]; + show_debug_message(string(global.itemPrev[f]) + " " + string(global.item[f])); + show_debug_message("item changed"); + canSend = true; + v++; + + } + } + } + + if(i == 1){ + var v = 0; + var metdeadPrev = global.onlineList[# 0, 1]; + var metdead = global.onlineList[# 1, 1]; + for(var f=0; f<array_length_1d(metdead); f++){ + if(metdeadPrev[f] != metdead[f]){ + global.metdeadChanges[v, 0] = global.metdead[f]; + global.metdeadChanges[v, 1] = f; + global.onlineSend[# 1, 1] = global.metdeadChanges; + global.onlineSend[# 2, 1] = global.onlineList[# 2, 1]; + show_debug_message(string(global.metdeadPrev[f]) + " " + string(global.metdead[f])); + show_debug_message("metdead changed"); + canSend = true; + v++; + + } + } + } + + if(i == 3){ + var v = 0; + var eventPrev = global.onlineList[# 0, 3]; + var event = global.onlineList[# 1, 3]; + for(var f=0; f<array_length_1d(eventPrev) - 1; f++){ + if(eventPrev[f] != event[f]){ + global.eventChanges[v, 0] = global.event[f]; + global.eventChanges[v, 1] = f; + global.onlineSend[# 1, 3] = global.eventChanges; + global.onlineSend[# 2, 3] = global.onlineList[# 2, 3]; + show_debug_message(string(global.eventPrev[f]) + " " + string(global.event[f])); + show_debug_message("event changed"); + canSend = true; + v++; + + } + } + } + */ + +} + +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); + //global.storedBuffers[# 0, global.packetID] = global.onlineSend; + //global.storedBuffers[# 1, global.packetID] = global.clientID; + var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + show_debug_message("packetID = " + string(global.packetID)); + global.packetID++; + //ds_grid_resize(global.storedBuffers, 2, global.packetID + 1); + 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.alarm[0] = 6; + oCharacter.state = oCharacter.DEFEATED; + mus_current_fadeout(); + sfx_stop_all(); + } + } +} + +if(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 result = network_send_packet(socket, buffer, buffer_tell(buffer)); + } +} + +/* +if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ + if(oQueen.phase < phase){ + oQueen.phase = phase; + } else if(oQueen.phase > phase && global.event[303] == 0){ + phase = oQueen.phase; + } +} +*/ + + + + + + + + 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); + 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[203] < 9 && string_lower(reactorsequence) == "disabled"){ + global.event[203] = 9; + } +} + +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(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){ + with(oQueen){ + state = 100; + statetime = 0; + mus_fadeout(musQueen); + mus_fadeout(musQueen2); + mus_fadeout(musQueen3); + mus_fadeout(musQueenBreak); + mus_fadeout(musQueenIntro); + } + queenDead = true; + } +} + +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)){ + showName = -showName; + if(showName){ + popup_text("Nametags enabled"); + } else { + popup_text("Nametags disabled"); + } +} + +if(instance_exists(oCharacter)){ + posX = global.mapposx; + posY = global.mapposy; +} else { + posX = posX; + posY = posY; +} + +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++){ + 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); + } + } + 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 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); + } + } +} + + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + +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"); + buffer_seek(_buffer, buffer_seek_start, 0); + show_debug_message(string(buffer_get_size(_buffer))); + 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 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 findsocket = ds_list_find_index(roomList, clientID); + 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; + 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; + 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 findsocket = ds_list_find_index(roomList, clientID); + 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; + 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; + if(instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map)){ + surface_free(oSS_Control.s_map); + } + } + } + + 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; + 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 && 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))); + break; + case 0: + global.clientID = buffer_read(_buffer, buffer_u8); + 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; + 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))); + global.receivedClientID = buffer_read(_buffer, buffer_u8); + if(global.receivedClientID == global.clientID){ + global.receivedPacketIDs[| global.receivedPacketID] = buffer_read(_buffer, buffer_u32); + } + 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] = 30; + //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_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); @@ -440,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; } @@ -448,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; @@ -464,7 +1711,9 @@ switch(type_event){ if(global.queenphasePrev != phase){ global.queenphasePrev = phase; } - + */ + global.queenhealthPrev = oQueenHead.myhealth; + global.queenphasePrev = oQueen.phase; } } break; @@ -479,10 +1728,266 @@ switch(type_event){ } } 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_grid_create(1, 1); + ds_grid_read(item, strict_decompress(buffer_read(_buffer, buffer_string))); + var clientID = buffer_read(_buffer, buffer_u8); + var itemArr = item[# 0, 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]; + } + } + } + } + } + alarm[3] = 10; + if(global.clientID == clientID){ + ds_grid_clear(global.onlineItem, -1); + global.itemChanges = 0; + } + ds_grid_destroy(item); + break; + case 8: + var metdead = ds_grid_create(1, 1); + ds_grid_read(metdead, strict_decompress(buffer_read(_buffer, buffer_string))); + var clientID = buffer_read(_buffer, buffer_u8); + var metdeadArr = metdead[# 0, 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]; + } + } + } + } + } + alarm[4] = 10; + if(global.clientID == clientID){ + ds_grid_clear(global.onlineMetdead, -1); + global.metdeadChanges = 0; + } + ds_grid_destroy(metdead); + break; + case 9: + var event = ds_grid_create(1, 1); + ds_grid_read(event, strict_decompress(buffer_read(_buffer, buffer_string))); + var clientID = buffer_read(_buffer, buffer_u8); + var eventArr = event[# 0, 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]){ + global.eventPrev[i] = eventArr[f, 0]; + 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] = 10; + if(global.clientID == clientID){ + ds_grid_clear(global.onlineEvent, -1); + global.eventChanges = 0; + } + ds_grid_destroy(event); + break; + case 10: + var dmap = ds_grid_create(1, 1); + ds_grid_read(dmap, strict_decompress(buffer_read(_buffer, buffer_string))); + var clientID = buffer_read(_buffer, buffer_u8); + var dmapArr = dmap[# 0, 0]; + if(is_array(dmapArr)){ + for(var i=0; i<array_height_2d(global.dmap); i++){ + for(var f=0; f<array_length_2d(global.dmap, i); f++){ + for(var v=0; v<array_height_2d(dmapArr); v++){ + if(i == dmapArr[v, 1] && f == dmapArr[v, 2]){ + global.dmapPrev[i, f] = dmapArr[v, 0]; + if(global.dmap[i, f] != dmapArr[v, 0]){ + global.dmap[i, f] = dmapArr[v, 0]; + if(global.ingame){ + with (oControl) event_user(2); + } + } + } + } + } + } + } + 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; } } - - @@ -505,13 +2010,113 @@ switch(type_event){ 1 - network_destroy(socket); + 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); + var result = network_send_packet(socket, buffer, buffer_tell(buffer)); +} + +network_destroy(socket); buffer_delete(buffer); ds_grid_destroy(global.onlineList); ds_grid_destroy(global.onlineSend); ds_grid_destroy(global.onlineReceived); -ds_grid_destroy(global.storedBuffers); +//ds_grid_destroy(global.storedBuffers); +ds_grid_destroy(global.onlineItem); +ds_grid_destroy(global.onlineMetdead); +ds_grid_destroy(global.onlineEvent); +ds_grid_destroy(global.onlineMap); ds_list_destroy(global.receivedPacketIDs); +ds_list_destroy(roomList); +ds_list_destroy(roomListData); +ds_list_destroy(global.idList); +ds_list_destroy(posData); +ds_list_destroy(global.hatchlingList); + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + if(ds_list_size(roomListData) > 0){ + for(var i=0; i<ds_list_size(roomListData); i++){ + var arrDraw = 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(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); + pal_swap_set(sPalSpiderball, arrID, false); + draw_sprite_ext(sSpiderballFX, -1, arrX, arrY, 1, 1, 0, -1, 0.2 + arrFXTimer * 0.1); + 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); + } + } else { + draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID); + } + } + } +} + +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]; + 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 7c7eeb0f..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; @@ -365,7 +366,7 @@ seed = 0; mod_IGT = 0; // Really? -pal_swap_init_system(shPaletteSwap); +pal_swap_init_system(shd_pal_swapper); // 1.5.1 // This does nothing now, I just didn't want to change all instances of this back to 0. @@ -393,6 +394,9 @@ yShake = 0; room_width_map = ds_map_create(); ds_map_read(room_width_map, "9201000075010000000000000000000000907040000000000000000000007440000000000000000000E06840000000000000000000007440000000000000000000607340000000000000000000008440000000000000000000C05840000000000000000000009440000000000000000000B07740000000000000000000008440000000000000000000C06F40000000000000000000007440000000000000000000407440000000000000000000009940000000000000000000A06640000000000000000000007440000000000000000000004D40000000000000000000009940000000000000000000805640000000000000000000008440000000000000000000806140000000000000000000008E40000000000000000000003640000000000000000000009940000000000000000000804440000000000000000000008440000000000000000000507740000000000000000000008440000000000000000000206F40000000000000000000007440000000000000000000A07440000000000000000000007440000000000000000000005F40000000000000000000008440000000000000000000707040000000000000000000008440000000000000000000006840000000000000000000007440000000000000000000807340000000000000000000009940000000000000000000606140000000000000000000009440000000000000000000405140000000000000000000008E40000000000000000000406640000000000000000000008440000000000000000000A06740000000000000000000008440000000000000000000004C40000000000000000000007440000000000000000000805740000000000000000000007440000000000000000000806040000000000000000000009440000000000000000000003740000000000000000000007440000000000000000000907140000000000000000000008440000000000000000000E06940000000000000000000007440000000000000000000607240000000000000000000009940000000000000000000C05940000000000000000000007440000000000000000000B07640000000000000000000007440000000000000000000C06E40000000000000000000008E40000000000000000000407540000000000000000000007440000000000000000000606040000000000000000000007440000000000000000000107840000000000000000000007440000000000000000000405040000000000000000000007440000000000000000000406740000000000000000000008440000000000000000000804540000000000000000000007440000000000000000000507640000000000000000000007440000000000000000000206E4000000000000000000080A140000000000000000000A07540000000000000000000009440000000000000000000005E40000000000000000000007440000000000000000000707140000000000000000000008440000000000000000000006940000000000000000000007440000000000000000000807240000000000000000000008440000000000000000000804640000000000000000000008440000000000000000000507540000000000000000000008440000000000000000000206D40000000000000000000007440000000000000000000A07640000000000000000000008440000000000000000000005D40000000000000000000009440000000000000000000707240000000000000000000007440000000000000000000006A40000000000000000000007440000000000000000000807140000000000000000000007440000000000000000000606340000000000000000000008440000000000000000000405340000000000000000000009440000000000000000000406440000000000000000000008440000000000000000000907240000000000000000000007440000000000000000000E06A40000000000000000000007440000000000000000000607140000000000000000000008440000000000000000000C05A40000000000000000000008440000000000000000000B07540000000000000000000007440000000000000000000C06D40000000000000000000008E40000000000000000000407640000000000000000000008440000000000000000000A06440000000000000000000007440000000000000000000004F40000000000000000000007440000000000000000000805440000000000000000000009440000000000000000000806340000000000000000000008440000000000000000000007840000000000000000000008440000000000000000000606240000000000000000000009440000000000000000000405240000000000000000000008440000000000000000000406540000000000000000000007440000000000000000000804740000000000000000000008440000000000000000000507440000000000000000000008440000000000000000000206C40000000000000000000007440000000000000000000A07740000000000000000000007440000000000000000000005C40000000000000000000009440000000000000000000707340000000000000000000007440000000000000000000006B40000000000000000000008440000000000000000000807040000000000000000000007440000000000000000000A06540000000000000000000007440000000000000000000004E4000000000000000000000844000000000000000000080554000000000000000000000744000000000000000000080624000000000000000000000844000000000000000000000354000000000000000000080B140000000000000000000907340000000000000000000009440000000000000000000E06B40000000000000000000007440000000000000000000607040000000000000000000007440000000000000000000C05B40000000000000000000007440000000000000000000B07440000000000000000000009440000000000000000000C06C4000000000000000000000744000000000000000000040774000000000000000000000A440000000000000000000A06340000000000000000000008E40000000000000000000004840000000000000000000009440000000000000000000805340000000000000000000007440000000000000000000207840000000000000000000008E40000000000000000000806440000000000000000000008E40000000000000000000907540000000000000000000007440000000000000000000E06D40000000000000000000008E40000000000000000000607640000000000000000000007440000000000000000000C05D40000000000000000000007440000000000000000000B07240000000000000000000007440000000000000000000C06A40000000000000000000008E40000000000000000000407140000000000000000000008440000000000000000000606440000000000000000000007440000000000000000000405440000000000000000000008440000000000000000000406340000000000000000000009940000000000000000000804140000000000000000000009440000000000000000000507240000000000000000000007440000000000000000000206A40000000000000000000008440000000000000000000A07140000000000000000000007440000000000000000000005A40000000000000000000008E40000000000000000000707540000000000000000000007440000000000000000000006D40000000000000000000008440000000000000000000807640000000000000000000008E40000000000000000000907440000000000000000000007440000000000000000000E06C40000000000000000000008E40000000000000000000607740000000000000000000007440000000000000000000C05C40000000000000000000008440000000000000000000B07340000000000000000000008440000000000000000000C06B40000000000000000000009440000000000000000000407040000000000000000000008440000000000000000000A06240000000000000000000009440000000000000000000004940000000000000000000007440000000000000000000805240000000000000000000007440000000000000000000806540000000000000000000007440000000000000000000804040000000000000000000009440000000000000000000507340000000000000000000008440000000000000000000206B40000000000000000000007440000000000000000000A07040000000000000000000008440000000000000000000005B40000000000000000000008440000000000000000000707440000000000000000000007440000000000000000000006C40000000000000000000008E40000000000000000000807740000000000000000000007440000000000000000000606540000000000000000000008E40000000000000000000405540000000000000000000007440000000000000000000406240000000000000000000007440000000000000000000606640000000000000000000009440000000000000000000405640000000000000000000007440000000000000000000406140000000000000000000007440000000000000000000804340000000000000000000008440000000000000000000507040000000000000000000008440000000000000000000206840000000000000000000008E40000000000000000000A07340000000000000000000008E4000000000000000000000584000000000000000000000744000000000000000000070774000000000000000000040BF40000000000000000000006F40000000000000000000007440000000000000000000807440000000000000000000007440000000000000000000A06140000000000000000000007440000000000000000000004A40000000000000000000007440000000000000000000805140000000000000000000007440000000000000000000806640000000000000000000008440000000000000000000907740000000000000000000008440000000000000000000E06F40000000000000000000008440000000000000000000607440000000000000000000007440000000000000000000C05F40000000000000000000007440000000000000000000B07040000000000000000000008440000000000000000000C06840000000000000000000008E40000000000000000000407340000000000000000000009940000000000000000000804240000000000000000000008440000000000000000000507140000000000000000000007440000000000000000000206940000000000000000000008440000000000000000000A07240000000000000000000008E40000000000000000000005940000000000000000000007440000000000000000000707640000000000000000000007440000000000000000000006E40000000000000000000008440000000000000000000807540000000000000000000009940000000000000000000606740000000000000000000007440000000000000000000405740000000000000000000008E40000000000000000000406040000000000000000000008440000000000000000000307840000000000000000000008E40000000000000000000907640000000000000000000007440000000000000000000E06E40000000000000000000008440000000000000000000607540000000000000000000009E40000000000000000000C05E40000000000000000000009940000000000000000000B07140000000000000000000008E40000000000000000000C06940000000000000000000007440000000000000000000407240000000000000000000009940000000000000000000A06040000000000000000000007440000000000000000000004B40000000000000000000009E40000000000000000000805040000000000000000000007440000000000000000000806740000000000000000000009940000000000000000000206540000000000000000000009440000000000000000000804E40000000000000000000008440000000000000000000005540000000000000000000008440000000000000000000006240000000000000000000007440000000000000000000107340000000000000000000009440000000000000000000606B40000000000000000000008440000000000000000000E07040000000000000000000009940000000000000000000405B40000000000000000000007440000000000000000000307440000000000000000000008440000000000000000000406C40000000000000000000008440000000000000000000C07740000000000000000000007440000000000000000000E06240000000000000000000007440000000000000000000C05240000000000000000000008E40000000000000000000C06540000000000000000000007440000000000000000000004740000000000000000000007440000000000000000000D07440000000000000000000009440000000000000000000A06C40000000000000000000007440000000000000000000207740000000000000000000007440000000000000000000805C40000000000000000000009940000000000000000000F07340000000000000000000009440000000000000000000806B40000000000000000000008E40000000000000000000007040000000000000000000007440000000000000000000003C40000000000000000000008E40000000000000000000107240000000000000000000009440000000000000000000606A40000000000000000000007440000000000000000000E07140000000000000000000007440000000000000000000405A40000000000000000000007440000000000000000000307540000000000000000000007440000000000000000000406D40000000000000000000008E40000000000000000000C07640000000000000000000009940000000000000000000206440000000000000000000007440000000000000000000804F40000000000000000000007440000000000000000000005440000000000000000000009440000000000000000000006340000000000000000000008440000000000000000000807840000000000000000000009440000000000000000000004640000000000000000000007440000000000000000000D07540000000000000000000007440000000000000000000A06D40000000000000000000007440000000000000000000207640000000000000000000007440000000000000000000805D40000000000000000000008E40000000000000000000F07240000000000000000000007440000000000000000000806A40000000000000000000008E40000000000000000000007140000000000000000000009440000000000000000000003D40000000000000000000007440000000000000000000E06340000000000000000000008E40000000000000000000C05340000000000000000000009940000000000000000000607840000000000000000000007440000000000000000000C06440000000000000000000009440000000000000000000E06040000000000000000000007440000000000000000000907840000000000000000000007440000000000000000000C05040000000000000000000008440000000000000000000C06740000000000000000000008E40000000000000000000004540000000000000000000008440000000000000000000D07640000000000000000000008440000000000000000000A06E40000000000000000000008E40000000000000000000207540000000000000000000009E40000000000000000000805E4000000000000000000080A640000000000000000000F07140000000000000000000007440000000000000000000806940000000000000000000007440000000000000000000007240000000000000000000009940000000000000000000003E40000000000000000000008E40000000000000000000206740000000000000000000008440000000000000000000804C40000000000000000000007440000000000000000000005740000000000000000000008E40000000000000000000006040000000000000000000008440000000000000000000707840000000000000000000007440000000000000000000107140000000000000000000007440000000000000000000606940000000000000000000007440000000000000000000E07240000000000000000000008440000000000000000000405940000000000000000000007440000000000000000000307640000000000000000000008440000000000000000000406E40000000000000000000009940000000000000000000C07540000000000000000000009440000000000000000000004440000000000000000000008440000000000000000000D07740000000000000000000008440000000000000000000A06F40000000000000000000009940000000000000000000207440000000000000000000007440000000000000000000805F40000000000000000000008440000000000000000000F07040000000000000000000008440000000000000000000806840000000000000000000008440000000000000000000007340000000000000000000007440000000000000000000003F40000000000000000000008440000000000000000000E06140000000000000000000008E40000000000000000000C05140000000000000000000008E40000000000000000000C06640000000000000000000008E40000000000000000000107040000000000000000000008E40000000000000000000606840000000000000000000009440000000000000000000E07340000000000000000000008440000000000000000000405840000000000000000000008E40000000000000000000307740000000000000000000009440000000000000000000406F40000000000000000000009440000000000000000000C0744000000000000000000000844000000000000000000020664000000000000000000080A140000000000000000000804D4000000000000000000000A940000000000000000000005640000000000000000000007440000000000000000000006140000000000000000000007440000000000000000000107640000000000000000000007440000000000000000000606E40000000000000000000009440000000000000000000E07540000000000000000000009940000000000000000000405E40000000000000000000009440000000000000000000307140000000000000000000008440000000000000000000406940000000000000000000007440000000000000000000C07240000000000000000000008440000000000000000000206040000000000000000000008440000000000000000000804B40000000000000000000007440000000000000000000507840000000000000000000007440000000000000000000005040000000000000000000007440000000000000000000006740000000000000000000008E40000000000000000000004240000000000000000000008440000000000000000000D07140000000000000000000007440000000000000000000A06940000000000000000000008440000000000000000000207240000000000000000000009440000000000000000000805940000000000000000000007440000000000000000000F07640000000000000000000009440000000000000000000806E40000000000000000000009440000000000000000000007540000000000000000000008440000000000000000000003940000000000000000000007440000000000000000000E06740000000000000000000008440000000000000000000C05740000000000000000000008440000000000000000000C06040000000000000000000007440000000000000000000206140000000000000000000009440000000000000000000804A40000000000000000000008440000000000000000000005140000000000000000000007440000000000000000000006640000000000000000000007440000000000000000000107740000000000000000000008E40000000000000000000606F40000000000000000000007440000000000000000000E07440000000000000000000008440000000000000000000405F40000000000000000000008440000000000000000000307040000000000000000000009940000000000000000000406840000000000000000000008440000000000000000000C07340000000000000000000008440000000000000000000E06640000000000000000000008440000000000000000000C05640000000000000000000007440000000000000000000C06140000000000000000000009440000000000000000000004340000000000000000000007440000000000000000000D07040000000000000000000007440000000000000000000A06840000000000000000000008E40000000000000000000207340000000000000000000009440000000000000000000805840000000000000000000007440000000000000000000F07740000000000000000000008440000000000000000000806F40000000000000000000008E40000000000000000000007440000000000000000000007440000000000000000000003840000000000000000000008E40000000000000000000004040000000000000000000009940000000000000000000D07340000000000000000000008440000000000000000000A06B40000000000000000000007440000000000000000000207040000000000000000000007440000000000000000000805B40000000000000000000007440000000000000000000F07440000000000000000000009940000000000000000000806C4000000000000000000000744000000000000000000000774000000000000000000080A640000000000000000000003B40000000000000000000007440000000000000000000E06540000000000000000000008E40000000000000000000C05540000000000000000000009940000000000000000000C06240000000000000000000008E40000000000000000000107440000000000000000000007440000000000000000000606C40000000000000000000007440000000000000000000E07740000000000000000000007440000000000000000000405C40000000000000000000008440000000000000000000307340000000000000000000007440000000000000000000406B40000000000000000000007440000000000000000000C07040000000000000000000007440000000000000000000206240000000000000000000007440000000000000000000804940000000000000000000007440000000000000000000005240000000000000000000008E40000000000000000000006540000000000000000000007440000000000000000000E06440000000000000000000007440000000000000000000C0544000000000000000000000AE40000000000000000000C06340000000000000000000007440000000000000000000407840000000000000000000008440000000000000000000004140000000000000000000007440000000000000000000D07240000000000000000000007440000000000000000000A06A40000000000000000000008E40000000000000000000207140000000000000000000007440000000000000000000805A40000000000000000000008E40000000000000000000F07540000000000000000000007440000000000000000000806D40000000000000000000008E40000000000000000000007640000000000000000000007440000000000000000000003A40000000000000000000008E40000000000000000000206340000000000000000000007440000000000000000000804840000000000000000000008440000000000000000000005340000000000000000000009440000000000000000000006440000000000000000000008440000000000000000000107540000000000000000000008440000000000000000000606D40000000000000000000008E40000000000000000000E07640000000000000000000007440000000000000000000405D40000000000000000000009E40000000000000000000307240000000000000000000007440000000000000000000406A40000000000000000000008440000000000000000000C07140000000000000000000007440"); +global.canConnect = true; + +load_character_vars(); @@ -435,6 +439,29 @@ else { } alarm[11] = 1; + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + global.canConnect = true; @@ -859,7 +886,7 @@ seed = 0; mod_IGT = 0; // Really? -pal_swap_init_system(shPaletteSwap); +pal_swap_init_system(shd_pal_swapper); // 1.5.1 // This does nothing now, I just didn't want to change all instances of this back to 0. @@ -1590,6 +1617,7 @@ room_goto(rm_death); writelog("UnLoading Room " + string(room)); global.roomtime = 0; fadedone = 0; +global.lastroom = room; @@ -1735,7 +1763,7 @@ if (!file_exists("save1") && !file_exists("save2") && !file_exis global.shaders_compiled = false; if (shaders_are_supported()) { - if (shader_is_compiled(shGameBoy) && shader_is_compiled(shPaletteSwap)) { + if (shader_is_compiled(shGameBoy) && shader_is_compiled(shd_pal_swapper)) { global.shaders_compiled = true; } } @@ -2066,7 +2094,7 @@ screen_save(sname + ".png"); 1 - if(!instance_exists(oClient)){ + if(!instance_exists(oClient) && global.canConnect){ instance_create(0, 0, oClient); } 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/oDoor.object.gmx b/objects/oDoor.object.gmx index 3a210b54..5ae3d72c 100644 --- a/objects/oDoor.object.gmx +++ b/objects/oDoor.object.gmx @@ -254,6 +254,15 @@ if(room == rm_a7b08A){ } } } + +if(event > -1){ + if(global.event[event] > 0){ + if(lock == 1 || lock == 2 || lock == 3){ + lock = 0; + open = 1; + } + } +} 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 8fb201c8..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; @@ -71,7 +72,7 @@ mapposy = myposy + global.mapoffsety; if (room != rm_a0h14) global.dmap[mapposx, mapposy] = 10; else global.dmap[43, 24] = 10; with (oControl) event_user(2); - +dead = false; @@ -271,10 +272,7 @@ if (state == 5 || dodging) alarm[2] = 3; 1 - if(global.metdead[myid] == 1){ - instance_destroy(); -} -if (active == 1) { + if (active == 1) { if (state == 1) { xVel = 0; yVel = 0; @@ -497,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; +} @@ -934,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 dfc842be..9ff5d58d 100644 --- a/objects/oMGamma.object.gmx +++ b/objects/oMGamma.object.gmx @@ -90,6 +90,7 @@ inwater = 0; speedmulti = 1; targetx = x; targety = y; +dead = false; @@ -331,10 +332,7 @@ if (state == 5 || dodging) alarm[2] = 3; 1 - if(global.metdead[myid] == 1){ - instance_destroy(); -} -if (active == 1) { + if (active == 1) { if (state == 1) { xVel = 0; yVel = 0; @@ -715,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; +} @@ -1126,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 15edcb80..b87a2b32 100644 --- a/objects/oMOmega.object.gmx +++ b/objects/oMOmega.object.gmx @@ -140,6 +140,7 @@ alarm[9] = 1; dmg = 0; flashtime = 0; laststate = 0; +dead = false; @@ -379,10 +380,7 @@ if (instance_exists(grab_obj)) { 1 - if(global.metdead[myid] == 1){ - instance_destroy(); -} -var slash_dist, msl, tl; + var slash_dist, msl, tl; slash_dist = 130; // Target set if (target_mode == 0) { @@ -1492,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; +} @@ -1706,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 0fcaa67a..8e10010a 100644 --- a/objects/oMZeta.object.gmx +++ b/objects/oMZeta.object.gmx @@ -116,6 +116,7 @@ targety = 0; alarm[3] = 1; alarm[9] = 1; scan_log(14, get_text("ScanEvents", "ScanBioform"), 180, 0); +dead = false; @@ -412,10 +413,7 @@ if (instance_exists(mask_obj)) { 1 - if(global.metdead[myid] == 1){ - instance_destroy(); -} -var msl, fr_speed; + var msl, fr_speed; if (target_mode == 0) { targetx = oCharacter.x; targety = oCharacter.y; @@ -1366,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; +} @@ -1553,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/oMonster.object.gmx b/objects/oMonster.object.gmx index 1992057a..a22b48af 100644 --- a/objects/oMonster.object.gmx +++ b/objects/oMonster.object.gmx @@ -72,6 +72,8 @@ spark3 = -4; //1.4.4? Movement fixes outside = 0; + +dead = false; @@ -223,9 +225,54 @@ if (instance_exists(spark3)) { 1 - if(global.metdead[myid] == 1){ - instance_destroy(); + if(global.metdead[myid] == 1 && !dead){ + dead = true; + hp = 0; + var pickup; + + if (hp <= 0) { + repeat (10) { + expl = instance_create(x - 16 + random(32), y - 16 + random(32), oFXAnimSpark); + expl.image_speed = 0.5 + random(0.5); + expl.additive = 0; + expl.sprite_index = sExpl1; + expl.direction = random(360); + expl.speed = 2 + random(1); + } + repeat (20) deb = instance_create(x, y - 8, oIceShard); + make_explosion4(x, y); + instance_create(x, y, oScreenFlash); + sfx_play(sndMissileExpl); + PlaySoundMono(sndIceShatter); + sfx_play(sndMonsterDeath); + if (global.monstersarea < 1) global.monstersarea = 1; + if (global.monstersleft < 1) global.monstersleft = 1; + pickup = choose(0, 1); + if (pickup == 0) { + if (global.missiles < global.maxmissiles && global.maxmissiles > 0) { + repeat (3) instance_create(x + random_range(-15, 15), y + random_range(-15, 15), oMPickup); + } else pickup = 1; + } + if (pickup == 1) { + if (global.smissiles < global.maxsmissiles && global.maxsmissiles > 0) instance_create(x, y, oSMPickup); + } + if (global.playerhealth < global.maxhealth && (oControl.mod_insanitymode == 0 || (global.difficulty < 2 && oControl.mod_insanitymode == 1))) { + repeat (3) instance_create(x + random_range(-15, 15), y + random_range(-15, 15), oHPickupBig); + } + + //if (room == rm_a7b08A && global.metdead[52] > 0 && global.metdead[53] > 0 && global.metdead[54] > 0 && global.metdead[55] > 0 && global.metdead[56] > 0 && global.metdead[57] > 0 && global.metdead[58] > 0 && global.metdead[74] > 0) + + if (room == rm_a7b08A && instance_number(oMonster) == 1) //oMonster must == 1 here, since oMonster is checking for oMonsters!!! + { + if (global.monstersleft != 1) { global.monstersleft = 1; } + if (global.monstersarea != 1) { global.monstersarea = 1; } + instance_create(0,0,oBigQuakeQueen); + } + + instance_destroy(); + } } + var tgty; if (state == 0) { scale = 0.5; 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/rooms/rm_a1a03.room.gmx b/rooms/rm_a1a03.room.gmx index 3e6eaf04..1b025b25 100644 --- a/rooms/rm_a1a03.room.gmx +++ b/rooms/rm_a1a03.room.gmx @@ -65,7 +65,7 @@ mus_change(musArea1A); - + diff --git a/rooms/rm_death.room.gmx b/rooms/rm_death.room.gmx index 44046620..5f3c65eb 100644 --- a/rooms/rm_death.room.gmx +++ b/rooms/rm_death.room.gmx @@ -14,7 +14,11 @@ view_enabled = true; view_visible[0] = true; } -Mute_Loops(); +Mute_Loops(); + +if(instance_exists(oClient)){ + oClient.phase = 0; +} 0 -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 new file mode 100644 index 00000000..0fc2a902 --- /dev/null +++ b/scripts/draw_character_ext.gml @@ -0,0 +1,35 @@ +/// draw_character_ext(sprite, x, y, sprite2, s2ox, s2oy, sprite3, s3ox, s3oy, s3angle, facing, color, alpha, s3show, arrID) +var ID = argument15; +if ((oControl.mod_fusion) && (!oControl.msr_fusionsuit)) { // Fusion suit + if (global.currentsuit == 0) { // Power + pal_swap_set(sPalFusion0, 1, false); + } else if (global.currentsuit == 1) { // Varia + pal_swap_set(sPalFusion1, 1, false); + } else if (global.currentsuit == 2) { // Gravity + pal_swap_set(sPalFusion2, 1, false); + } +} else { // Custom color swaps + if (global.currentsuit == 0) { // Power + pal_swap_set(oControl.PowerPalette, 1, false); + } else if (global.currentsuit == 1) { // Varia + pal_swap_set(oControl.VariaPalette, 1, false); + } else if (global.currentsuit == 2) { // Gravity + pal_swap_set(oControl.GravityPalette, 1, false); + } +} + + +if(oControl.mod_fusion){ + pal_swap_set(sPalMultitroidFusion, ID, false); +} else { + pal_swap_set(sPalMultitroidNew, ID, false); +} + + +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); +} diff --git a/scripts/draw_gui.gml b/scripts/draw_gui.gml index 95115b2d..066c5e1c 100644 --- a/scripts/draw_gui.gml +++ b/scripts/draw_gui.gml @@ -249,6 +249,25 @@ draw_sprite(sGUIPBomb, 1, xoff + 1, 4); } else draw_sprite(sGUIPBomb, 0, xoff + 1, 4); } } + +if(instance_exists(oClient)){ + if(oClient.connected){ + if(ds_list_size(global.idList) > 1){ + for(var f=0; f + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 8 + 0 + 0 + + 0 + + 0 + 9 + 9 + + images\sDarkMultitroidPlayer_0.png + images\sDarkMultitroidPlayer_1.png + images\sDarkMultitroidPlayer_2.png + images\sDarkMultitroidPlayer_3.png + images\sDarkMultitroidPlayer_4.png + images\sDarkMultitroidPlayer_5.png + images\sDarkMultitroidPlayer_6.png + images\sDarkMultitroidPlayer_7.png + + diff --git a/sprites/sMultitroidIcon.sprite.gmx b/sprites/sMultitroidIcon.sprite.gmx new file mode 100644 index 00000000..c2f4e3d2 --- /dev/null +++ b/sprites/sMultitroidIcon.sprite.gmx @@ -0,0 +1,32 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 8 + 0 + 0 + + 0 + + 0 + 9 + 9 + + images\sMultitroidIcon_0.png + images\sMultitroidIcon_1.png + images\sMultitroidIcon_2.png + images\sMultitroidIcon_3.png + images\sMultitroidIcon_4.png + images\sMultitroidIcon_5.png + images\sMultitroidIcon_6.png + images\sMultitroidIcon_7.png + + 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 + + diff --git a/sprites/sPalMultitroidFusion.sprite.gmx b/sprites/sPalMultitroidFusion.sprite.gmx new file mode 100644 index 00000000..cd20f5bf --- /dev/null +++ b/sprites/sPalMultitroidFusion.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 80 + 0 + 0 + + 0 + + 0 + 9 + 81 + + images\sPalMultitroidFusion_0.png + + diff --git a/sprites/sPalMultitroidNew.sprite.gmx b/sprites/sPalMultitroidNew.sprite.gmx new file mode 100644 index 00000000..b72e88db --- /dev/null +++ b/sprites/sPalMultitroidNew.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 86 + 0 + 0 + + 0 + + 0 + 9 + 87 + + images\sPalMultitroidNew_0.png + + diff --git a/sprites/sPalSpiderball.sprite.gmx b/sprites/sPalSpiderball.sprite.gmx new file mode 100644 index 00000000..d44aceff --- /dev/null +++ b/sprites/sPalSpiderball.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 68 + 0 + 0 + + 0 + + 0 + 9 + 69 + + images\sPalSpiderball_0.png + +