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 @@
+
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 @@
-
+
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 @@
+
+
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
+
+