diff --git a/AM2R.project.gmx b/AM2R.project.gmx index b815ce46..b6bdacaa 100644 --- a/AM2R.project.gmx +++ b/AM2R.project.gmx @@ -4122,6 +4122,12 @@ sprites\sShipGlow + + sprites\sMultitroidIcon + sprites\sPalMultitroidNew + sprites\sDarkMultitroidPlayer + sprites\sPalMultitroidFusion + background\bgScreenGuide @@ -5074,6 +5080,7 @@ + @@ -5094,6 +5101,7 @@ fonts\fontMenuTinyDefault fonts\fontMenuSmall2Default fonts\fontSubScrDefault + fonts\font_displayname diff --git a/README.md b/README.md index 2558dc04..b90ac390 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ The adjusted patcher for the AM2R mod can be found here: https://github.com/lass ## 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 diff --git a/datafiles/mod settings.ini b/datafiles/mod settings.ini index 5535c07a..90f85227 100644 --- a/datafiles/mod settings.ini +++ b/datafiles/mod settings.ini @@ -1,3 +1,3 @@ [ModSettings] -ipaddress = 10.220.1.3 +ipaddress = 206.123.128.236 displayname = milesthenerd 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 451b7438..7648f33d 100644 --- a/objects/oClient.object.gmx +++ b/objects/oClient.object.gmx @@ -2,7 +2,7 @@ <undefined> 0 - 0 + -1 0 -1 <undefined> @@ -32,10 +32,11 @@ metroidCountChanged = false; itemChanged = false; metdeadChanged = false; eventChanged = false; +mapChanged = false; connected = false; queenHealthWait = false; queenDead = false; -drawUpdate = false; +sameRoom = false; phase = 0; seed = undefined; var type; @@ -73,11 +74,14 @@ global.onlineSend = ds_grid_create(3, 35); global.onlineItem = ds_grid_create(1, 1); global.onlineMetdead = ds_grid_create(1, 1); global.onlineEvent = ds_grid_create(1, 1); +global.onlineMap = ds_grid_create(1, 1); global.onlineReceived = ds_grid_create(3, 35); //global.storedBuffers = ds_grid_create(2, 1); global.receivedPacketIDs = ds_list_create(); roomList = ds_list_create(); roomListData = ds_list_create(); +global.idList = ds_list_create(); +posData = ds_list_create(); ds_grid_clear(global.onlineSend, -1); ds_grid_clear(global.onlineItem, -1); ds_grid_clear(global.onlineMetdead, -1); @@ -90,6 +94,15 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){ update_variables("initprev"); update_variables("onlinevars"); + +if(shader_is_compiled(shd_pal_swapper)){ + alpha = 1 +} else { + alpha = 0.5 +} + +posX = 3; +posY = 3; @@ -112,7 +125,21 @@ update_variables("onlinevars"); 1 - network_destroy(socket); + if(connected){ + popup_text("Disconnected"); + buffer_delete(buffer); + var size, type, alignment; + size = 1024; + type = buffer_grow; + alignment = 1; + buffer = buffer_create(size, type, alignment); + buffer_seek(buffer, buffer_seek_start, 0); + buffer_write(buffer, buffer_u8, 254); + buffer_write(buffer, buffer_u8, global.clientID); + var result = network_send_packet(socket, buffer, buffer_tell(buffer)); +} + +network_destroy(socket); buffer_delete(buffer); ds_grid_destroy(global.onlineList); ds_grid_destroy(global.onlineSend); @@ -121,11 +148,182 @@ ds_grid_destroy(global.onlineReceived); 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); -if(connected){ - popup_text("Disconnected"); +ds_list_destroy(global.idList); +ds_list_destroy(posData); + +global.canConnect = false; +oControl.alarm[10] = 90; + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + buffer_delete(buffer); +var size, type, alignment; +size = 1024; +type = buffer_grow; +alignment = 1; +buffer = buffer_create(size, type, alignment); +buffer_seek(buffer, buffer_seek_start, 0); +buffer_write(buffer, buffer_u8, 101); +buffer_write(buffer, buffer_u8, global.clientID); +buffer_write(buffer, buffer_s16, room); +buffer_write(buffer, buffer_s16, posX); +buffer_write(buffer, buffer_s16, posY); +var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + +alarm[11] = 20; + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + 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(global.prevY != oCharacter.y){ + global.prevY = oCharacter.y; + } + if(global.roomPrev != room){ + global.roomPrev = room; + } + if(global.prevSprite != oCharacter.sprite_index){ + global.prevSprite = oCharacter.sprite_index; + } + 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); + var result = network_send_packet(socket, buffer, buffer_tell(buffer)); + } + } +} +alarm[10] = 3; + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + var v = 0; +for(var i=0; i<array_height_2d(global.dmap); i++){ + for(var f=0; f<array_length_2d(global.dmap, i); f++){ + if(global.dmapPrev[i, f] != global.dmap[i, f]){ + 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; + } + 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] = 30; +} + +if(mapChanged){ + mapChanged = false; + alarm[6]= 75; } @@ -151,12 +349,13 @@ if(connected){ 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; - show_debug_message(string(global.eventPrev[f]) + " " + string(global.event[f])); - show_debug_message("event changed"); eventChanged = true; v++; } @@ -212,8 +411,6 @@ for(var f=0; f<array_length_1d(global.metdead); f++){ global.metdeadChanges[v, 0] = global.metdead[f]; global.metdeadChanges[v, 1] = f; global.onlineMetdead[# 0, 0] = global.metdeadChanges; - show_debug_message(string(global.metdeadPrev[f]) + " " + string(global.metdead[f])); - show_debug_message("metdead changed"); metdeadChanged = true; v++; } @@ -269,8 +466,6 @@ for(var f=0; f<array_length_1d(global.item); f++){ global.itemChanges[v, 0] = global.item[f]; global.itemChanges[v, 1] = f; global.onlineItem[# 0, 0] = global.itemChanges; - show_debug_message(string(global.itemPrev[f]) + " " + string(global.item[f])); - show_debug_message("item changed"); itemChanged = true; v++; } @@ -422,7 +617,6 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){ 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; } @@ -584,6 +778,9 @@ if(instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) &am alarm[3] = 5; alarm[4] = 5; alarm[5] = 5; + alarm[6] = 5; + alarm[10] = 3; + alarm[11] = 20; } else { instance_destroy(); popup_text("Failed to connect"); @@ -602,6 +799,10 @@ if(global.event[303] > 0){ phase = 0; } +if(global.event[203] < 9){ + global.event[203] = 9; +} + if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ if(phase >= 1 && instance_exists(inst_146524)){ event_perform_object(oQueenFireball, ev_other, ev_user1); @@ -641,43 +842,6 @@ if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){ } } -if(connected){ - 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(global.prevY != oCharacter.y){ - global.prevY = oCharacter.y; - } - if(global.roomPrev != room){ - global.roomPrev = room; - } - if(global.prevSprite != oCharacter.sprite_index){ - global.prevSprite = oCharacter.sprite_index; - } - 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, room); - var result = network_send_packet(socket, buffer, buffer_tell(buffer)); - } - } -} - if(keyboard_check_pressed(vk_f2)){ instance_destroy(); } @@ -685,6 +849,14 @@ if(keyboard_check_pressed(vk_f2)){ if(keyboard_check_pressed(vk_f3)){ popup_text_ext(string(oControl.seed), 300); } + +if(instance_exists(oCharacter)){ + posX = global.mapposx; + posY = global.mapposy; +} else { + posX = posX; + posY = posY; +} @@ -713,17 +885,55 @@ 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); + 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); + } + } + 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 findsocket = ds_list_find_index(roomList, clientID); if(global.clientID != clientID){ if(findsocket < 0){ @@ -735,11 +945,48 @@ switch(type_event){ arr[2] = clientY; arr[3] = clientSprite; arr[4] = clientImage; - arr[5] = clientRoom; + 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; 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; + 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){ + 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++){ @@ -751,7 +998,70 @@ switch(type_event){ } } } - drawUpdate = true; + 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){ + if(ds_list_size(roomList) > 0 && findsocket >= 0){ + sameRoom = false; + var indexValue = ds_list_find_value(roomList, findsocket); + ds_list_delete(roomList, findsocket); + for(var i=0; i<ds_list_size(roomListData); i++){ + var arrList = roomListData[| i]; + if(arrList[0] == indexValue){ + ds_list_delete(roomListData, i); + } + } + } + } + + 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); + 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); @@ -833,7 +1143,6 @@ switch(type_event){ case 5: var monstersLeft = buffer_read(_buffer, buffer_s8); var clientID = buffer_read(_buffer, buffer_u8); - show_debug_message("metroidsleft received " + string(monstersLeft)); if(global.clientID != clientID && global.monstersleft != monstersLeft){ global.monstersleft = monstersLeft; global.monstersleftPrev = global.monstersleft; @@ -845,7 +1154,6 @@ switch(type_event){ case 6: var monstersArea = buffer_read(_buffer, buffer_s8); var clientID = buffer_read(_buffer, buffer_u8); - show_debug_message("metroidsarea received " + string(monstersArea)); if(global.clientID != clientID && global.monstersarea != monstersArea){ global.monstersarea = monstersArea; global.monstersareaPrev = global.monstersarea; @@ -859,16 +1167,13 @@ switch(type_event){ ds_grid_read(item, strict_decompress(buffer_read(_buffer, buffer_string))); var clientID = buffer_read(_buffer, buffer_u8); var itemArr = item[# 0, 0]; - show_debug_message(itemArr); 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]; - show_debug_message("item prev index " + string(i) + " changed"); if(global.item[i] != itemArr[f, 0]){ global.item[i] = itemArr[f, 0]; - show_debug_message("item current index " + string(i) + " changed"); } } } @@ -886,16 +1191,13 @@ switch(type_event){ ds_grid_read(metdead, strict_decompress(buffer_read(_buffer, buffer_string))); var clientID = buffer_read(_buffer, buffer_u8); var metdeadArr = metdead[# 0, 0]; - show_debug_message(metdeadArr); 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]; - show_debug_message("metdead prev index " + string(i) + " changed"); if(global.metdead[i] != metdeadArr[f, 0]){ global.metdead[i] = metdeadArr[f, 0]; - show_debug_message("metdead current index " + string(i) + " changed"); } } } @@ -913,16 +1215,13 @@ switch(type_event){ ds_grid_read(event, strict_decompress(buffer_read(_buffer, buffer_string))); var clientID = buffer_read(_buffer, buffer_u8); var eventArr = event[# 0, 0]; - show_debug_message(eventArr); 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]; - show_debug_message("event prev index " + string(i) + " changed"); if(global.event[i] != eventArr[f, 0]){ global.event[i] = eventArr[f, 0]; - show_debug_message("event current index " + string(i) + " changed"); } } } @@ -935,6 +1234,35 @@ switch(type_event){ } 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] = 30; + if(global.clientID == clientID){ + ds_grid_clear(global.onlineMap, -1); + global.dmapChanges = 0; + } + ds_grid_destroy(dmap); + break; } } @@ -959,7 +1287,20 @@ 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); @@ -968,9 +1309,12 @@ ds_grid_destroy(global.onlineReceived); 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); @@ -993,19 +1337,48 @@ ds_list_destroy(roomListData); 1 - if(ds_list_size(roomListData) > 0){ + 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 arrRoom = arrDraw[5]; + 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]; if(arrRoom == room && instance_exists(oCharacter)){ - draw_sprite_ext(arrSprite, arrImage, arrX, arrY, 1, 1, direction, c_black, image_alpha); + draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID); + draw_set_font(font_displayname); + draw_set_halign(fa_center); + draw_cool_text(arrX, arrY - 52, arrName, c_black, c_white, c_white, 1); } + } } + +if(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(sDarkMultitroidPlayer, (arrID - 1), (arrX * 8), ((arrY * 8) + 32)); + } + } +} + diff --git a/objects/oControl.object.gmx b/objects/oControl.object.gmx index 74814a14..2e61899b 100644 --- a/objects/oControl.object.gmx +++ b/objects/oControl.object.gmx @@ -393,6 +393,7 @@ yShake = 0; room_width_map = ds_map_create(); ds_map_read(room_width_map, "9201000075010000000000000000000000907040000000000000000000007440000000000000000000E06840000000000000000000007440000000000000000000607340000000000000000000008440000000000000000000C05840000000000000000000009440000000000000000000B07740000000000000000000008440000000000000000000C06F40000000000000000000007440000000000000000000407440000000000000000000009940000000000000000000A06640000000000000000000007440000000000000000000004D40000000000000000000009940000000000000000000805640000000000000000000008440000000000000000000806140000000000000000000008E40000000000000000000003640000000000000000000009940000000000000000000804440000000000000000000008440000000000000000000507740000000000000000000008440000000000000000000206F40000000000000000000007440000000000000000000A07440000000000000000000007440000000000000000000005F40000000000000000000008440000000000000000000707040000000000000000000008440000000000000000000006840000000000000000000007440000000000000000000807340000000000000000000009940000000000000000000606140000000000000000000009440000000000000000000405140000000000000000000008E40000000000000000000406640000000000000000000008440000000000000000000A06740000000000000000000008440000000000000000000004C40000000000000000000007440000000000000000000805740000000000000000000007440000000000000000000806040000000000000000000009440000000000000000000003740000000000000000000007440000000000000000000907140000000000000000000008440000000000000000000E06940000000000000000000007440000000000000000000607240000000000000000000009940000000000000000000C05940000000000000000000007440000000000000000000B07640000000000000000000007440000000000000000000C06E40000000000000000000008E40000000000000000000407540000000000000000000007440000000000000000000606040000000000000000000007440000000000000000000107840000000000000000000007440000000000000000000405040000000000000000000007440000000000000000000406740000000000000000000008440000000000000000000804540000000000000000000007440000000000000000000507640000000000000000000007440000000000000000000206E4000000000000000000080A140000000000000000000A07540000000000000000000009440000000000000000000005E40000000000000000000007440000000000000000000707140000000000000000000008440000000000000000000006940000000000000000000007440000000000000000000807240000000000000000000008440000000000000000000804640000000000000000000008440000000000000000000507540000000000000000000008440000000000000000000206D40000000000000000000007440000000000000000000A07640000000000000000000008440000000000000000000005D40000000000000000000009440000000000000000000707240000000000000000000007440000000000000000000006A40000000000000000000007440000000000000000000807140000000000000000000007440000000000000000000606340000000000000000000008440000000000000000000405340000000000000000000009440000000000000000000406440000000000000000000008440000000000000000000907240000000000000000000007440000000000000000000E06A40000000000000000000007440000000000000000000607140000000000000000000008440000000000000000000C05A40000000000000000000008440000000000000000000B07540000000000000000000007440000000000000000000C06D40000000000000000000008E40000000000000000000407640000000000000000000008440000000000000000000A06440000000000000000000007440000000000000000000004F40000000000000000000007440000000000000000000805440000000000000000000009440000000000000000000806340000000000000000000008440000000000000000000007840000000000000000000008440000000000000000000606240000000000000000000009440000000000000000000405240000000000000000000008440000000000000000000406540000000000000000000007440000000000000000000804740000000000000000000008440000000000000000000507440000000000000000000008440000000000000000000206C40000000000000000000007440000000000000000000A07740000000000000000000007440000000000000000000005C40000000000000000000009440000000000000000000707340000000000000000000007440000000000000000000006B40000000000000000000008440000000000000000000807040000000000000000000007440000000000000000000A06540000000000000000000007440000000000000000000004E4000000000000000000000844000000000000000000080554000000000000000000000744000000000000000000080624000000000000000000000844000000000000000000000354000000000000000000080B140000000000000000000907340000000000000000000009440000000000000000000E06B40000000000000000000007440000000000000000000607040000000000000000000007440000000000000000000C05B40000000000000000000007440000000000000000000B07440000000000000000000009440000000000000000000C06C4000000000000000000000744000000000000000000040774000000000000000000000A440000000000000000000A06340000000000000000000008E40000000000000000000004840000000000000000000009440000000000000000000805340000000000000000000007440000000000000000000207840000000000000000000008E40000000000000000000806440000000000000000000008E40000000000000000000907540000000000000000000007440000000000000000000E06D40000000000000000000008E40000000000000000000607640000000000000000000007440000000000000000000C05D40000000000000000000007440000000000000000000B07240000000000000000000007440000000000000000000C06A40000000000000000000008E40000000000000000000407140000000000000000000008440000000000000000000606440000000000000000000007440000000000000000000405440000000000000000000008440000000000000000000406340000000000000000000009940000000000000000000804140000000000000000000009440000000000000000000507240000000000000000000007440000000000000000000206A40000000000000000000008440000000000000000000A07140000000000000000000007440000000000000000000005A40000000000000000000008E40000000000000000000707540000000000000000000007440000000000000000000006D40000000000000000000008440000000000000000000807640000000000000000000008E40000000000000000000907440000000000000000000007440000000000000000000E06C40000000000000000000008E40000000000000000000607740000000000000000000007440000000000000000000C05C40000000000000000000008440000000000000000000B07340000000000000000000008440000000000000000000C06B40000000000000000000009440000000000000000000407040000000000000000000008440000000000000000000A06240000000000000000000009440000000000000000000004940000000000000000000007440000000000000000000805240000000000000000000007440000000000000000000806540000000000000000000007440000000000000000000804040000000000000000000009440000000000000000000507340000000000000000000008440000000000000000000206B40000000000000000000007440000000000000000000A07040000000000000000000008440000000000000000000005B40000000000000000000008440000000000000000000707440000000000000000000007440000000000000000000006C40000000000000000000008E40000000000000000000807740000000000000000000007440000000000000000000606540000000000000000000008E40000000000000000000405540000000000000000000007440000000000000000000406240000000000000000000007440000000000000000000606640000000000000000000009440000000000000000000405640000000000000000000007440000000000000000000406140000000000000000000007440000000000000000000804340000000000000000000008440000000000000000000507040000000000000000000008440000000000000000000206840000000000000000000008E40000000000000000000A07340000000000000000000008E4000000000000000000000584000000000000000000000744000000000000000000070774000000000000000000040BF40000000000000000000006F40000000000000000000007440000000000000000000807440000000000000000000007440000000000000000000A06140000000000000000000007440000000000000000000004A40000000000000000000007440000000000000000000805140000000000000000000007440000000000000000000806640000000000000000000008440000000000000000000907740000000000000000000008440000000000000000000E06F40000000000000000000008440000000000000000000607440000000000000000000007440000000000000000000C05F40000000000000000000007440000000000000000000B07040000000000000000000008440000000000000000000C06840000000000000000000008E40000000000000000000407340000000000000000000009940000000000000000000804240000000000000000000008440000000000000000000507140000000000000000000007440000000000000000000206940000000000000000000008440000000000000000000A07240000000000000000000008E40000000000000000000005940000000000000000000007440000000000000000000707640000000000000000000007440000000000000000000006E40000000000000000000008440000000000000000000807540000000000000000000009940000000000000000000606740000000000000000000007440000000000000000000405740000000000000000000008E40000000000000000000406040000000000000000000008440000000000000000000307840000000000000000000008E40000000000000000000907640000000000000000000007440000000000000000000E06E40000000000000000000008440000000000000000000607540000000000000000000009E40000000000000000000C05E40000000000000000000009940000000000000000000B07140000000000000000000008E40000000000000000000C06940000000000000000000007440000000000000000000407240000000000000000000009940000000000000000000A06040000000000000000000007440000000000000000000004B40000000000000000000009E40000000000000000000805040000000000000000000007440000000000000000000806740000000000000000000009940000000000000000000206540000000000000000000009440000000000000000000804E40000000000000000000008440000000000000000000005540000000000000000000008440000000000000000000006240000000000000000000007440000000000000000000107340000000000000000000009440000000000000000000606B40000000000000000000008440000000000000000000E07040000000000000000000009940000000000000000000405B40000000000000000000007440000000000000000000307440000000000000000000008440000000000000000000406C40000000000000000000008440000000000000000000C07740000000000000000000007440000000000000000000E06240000000000000000000007440000000000000000000C05240000000000000000000008E40000000000000000000C06540000000000000000000007440000000000000000000004740000000000000000000007440000000000000000000D07440000000000000000000009440000000000000000000A06C40000000000000000000007440000000000000000000207740000000000000000000007440000000000000000000805C40000000000000000000009940000000000000000000F07340000000000000000000009440000000000000000000806B40000000000000000000008E40000000000000000000007040000000000000000000007440000000000000000000003C40000000000000000000008E40000000000000000000107240000000000000000000009440000000000000000000606A40000000000000000000007440000000000000000000E07140000000000000000000007440000000000000000000405A40000000000000000000007440000000000000000000307540000000000000000000007440000000000000000000406D40000000000000000000008E40000000000000000000C07640000000000000000000009940000000000000000000206440000000000000000000007440000000000000000000804F40000000000000000000007440000000000000000000005440000000000000000000009440000000000000000000006340000000000000000000008440000000000000000000807840000000000000000000009440000000000000000000004640000000000000000000007440000000000000000000D07540000000000000000000007440000000000000000000A06D40000000000000000000007440000000000000000000207640000000000000000000007440000000000000000000805D40000000000000000000008E40000000000000000000F07240000000000000000000007440000000000000000000806A40000000000000000000008E40000000000000000000007140000000000000000000009440000000000000000000003D40000000000000000000007440000000000000000000E06340000000000000000000008E40000000000000000000C05340000000000000000000009940000000000000000000607840000000000000000000007440000000000000000000C06440000000000000000000009440000000000000000000E06040000000000000000000007440000000000000000000907840000000000000000000007440000000000000000000C05040000000000000000000008440000000000000000000C06740000000000000000000008E40000000000000000000004540000000000000000000008440000000000000000000D07640000000000000000000008440000000000000000000A06E40000000000000000000008E40000000000000000000207540000000000000000000009E40000000000000000000805E4000000000000000000080A640000000000000000000F07140000000000000000000007440000000000000000000806940000000000000000000007440000000000000000000007240000000000000000000009940000000000000000000003E40000000000000000000008E40000000000000000000206740000000000000000000008440000000000000000000804C40000000000000000000007440000000000000000000005740000000000000000000008E40000000000000000000006040000000000000000000008440000000000000000000707840000000000000000000007440000000000000000000107140000000000000000000007440000000000000000000606940000000000000000000007440000000000000000000E07240000000000000000000008440000000000000000000405940000000000000000000007440000000000000000000307640000000000000000000008440000000000000000000406E40000000000000000000009940000000000000000000C07540000000000000000000009440000000000000000000004440000000000000000000008440000000000000000000D07740000000000000000000008440000000000000000000A06F40000000000000000000009940000000000000000000207440000000000000000000007440000000000000000000805F40000000000000000000008440000000000000000000F07040000000000000000000008440000000000000000000806840000000000000000000008440000000000000000000007340000000000000000000007440000000000000000000003F40000000000000000000008440000000000000000000E06140000000000000000000008E40000000000000000000C05140000000000000000000008E40000000000000000000C06640000000000000000000008E40000000000000000000107040000000000000000000008E40000000000000000000606840000000000000000000009440000000000000000000E07340000000000000000000008440000000000000000000405840000000000000000000008E40000000000000000000307740000000000000000000009440000000000000000000406F40000000000000000000009440000000000000000000C0744000000000000000000000844000000000000000000020664000000000000000000080A140000000000000000000804D4000000000000000000000A940000000000000000000005640000000000000000000007440000000000000000000006140000000000000000000007440000000000000000000107640000000000000000000007440000000000000000000606E40000000000000000000009440000000000000000000E07540000000000000000000009940000000000000000000405E40000000000000000000009440000000000000000000307140000000000000000000008440000000000000000000406940000000000000000000007440000000000000000000C07240000000000000000000008440000000000000000000206040000000000000000000008440000000000000000000804B40000000000000000000007440000000000000000000507840000000000000000000007440000000000000000000005040000000000000000000007440000000000000000000006740000000000000000000008E40000000000000000000004240000000000000000000008440000000000000000000D07140000000000000000000007440000000000000000000A06940000000000000000000008440000000000000000000207240000000000000000000009440000000000000000000805940000000000000000000007440000000000000000000F07640000000000000000000009440000000000000000000806E40000000000000000000009440000000000000000000007540000000000000000000008440000000000000000000003940000000000000000000007440000000000000000000E06740000000000000000000008440000000000000000000C05740000000000000000000008440000000000000000000C06040000000000000000000007440000000000000000000206140000000000000000000009440000000000000000000804A40000000000000000000008440000000000000000000005140000000000000000000007440000000000000000000006640000000000000000000007440000000000000000000107740000000000000000000008E40000000000000000000606F40000000000000000000007440000000000000000000E07440000000000000000000008440000000000000000000405F40000000000000000000008440000000000000000000307040000000000000000000009940000000000000000000406840000000000000000000008440000000000000000000C07340000000000000000000008440000000000000000000E06640000000000000000000008440000000000000000000C05640000000000000000000007440000000000000000000C06140000000000000000000009440000000000000000000004340000000000000000000007440000000000000000000D07040000000000000000000007440000000000000000000A06840000000000000000000008E40000000000000000000207340000000000000000000009440000000000000000000805840000000000000000000007440000000000000000000F07740000000000000000000008440000000000000000000806F40000000000000000000008E40000000000000000000007440000000000000000000007440000000000000000000003840000000000000000000008E40000000000000000000004040000000000000000000009940000000000000000000D07340000000000000000000008440000000000000000000A06B40000000000000000000007440000000000000000000207040000000000000000000007440000000000000000000805B40000000000000000000007440000000000000000000F07440000000000000000000009940000000000000000000806C4000000000000000000000744000000000000000000000774000000000000000000080A640000000000000000000003B40000000000000000000007440000000000000000000E06540000000000000000000008E40000000000000000000C05540000000000000000000009940000000000000000000C06240000000000000000000008E40000000000000000000107440000000000000000000007440000000000000000000606C40000000000000000000007440000000000000000000E07740000000000000000000007440000000000000000000405C40000000000000000000008440000000000000000000307340000000000000000000007440000000000000000000406B40000000000000000000007440000000000000000000C07040000000000000000000007440000000000000000000206240000000000000000000007440000000000000000000804940000000000000000000007440000000000000000000005240000000000000000000008E40000000000000000000006540000000000000000000007440000000000000000000E06440000000000000000000007440000000000000000000C0544000000000000000000000AE40000000000000000000C06340000000000000000000007440000000000000000000407840000000000000000000008440000000000000000000004140000000000000000000007440000000000000000000D07240000000000000000000007440000000000000000000A06A40000000000000000000008E40000000000000000000207140000000000000000000007440000000000000000000805A40000000000000000000008E40000000000000000000F07540000000000000000000007440000000000000000000806D40000000000000000000008E40000000000000000000007640000000000000000000007440000000000000000000003A40000000000000000000008E40000000000000000000206340000000000000000000007440000000000000000000804840000000000000000000008440000000000000000000005340000000000000000000009440000000000000000000006440000000000000000000008440000000000000000000107540000000000000000000008440000000000000000000606D40000000000000000000008E40000000000000000000E07640000000000000000000007440000000000000000000405D40000000000000000000009E40000000000000000000307240000000000000000000007440000000000000000000406A40000000000000000000008440000000000000000000C07140000000000000000000007440"); +global.canConnect = true; @@ -435,6 +436,29 @@ else { } alarm[11] = 1; + + + + + + + + 1 + 603 + 7 + 0 + 0 + -1 + 2 + + + self + 0 + 0 + + + 1 + global.canConnect = true; @@ -2066,7 +2090,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/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/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/scripts/draw_character_ext.gml b/scripts/draw_character_ext.gml new file mode 100644 index 00000000..c92f56c1 --- /dev/null +++ b/scripts/draw_character_ext.gml @@ -0,0 +1,36 @@ +/// 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); +if (argument13 == 1) { + draw_sprite_ext(argument6, argument14, argument1 + argument7, argument2 + argument8, argument10, 1, argument9, argument11, argument12); +} + +shader_reset(); +pal_swap_reset(); diff --git a/scripts/draw_gui.gml b/scripts/draw_gui.gml index 95115b2d..494dfb6b 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/sPalMultitroidFusion.sprite.gmx b/sprites/sPalMultitroidFusion.sprite.gmx new file mode 100644 index 00000000..4d0f3982 --- /dev/null +++ b/sprites/sPalMultitroidFusion.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 8 + 0 + 78 + 0 + 0 + + 0 + + 0 + 9 + 79 + + 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 + +