You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AM2R-Multitroid-Fair-Team-PVP/Export_Code/gml_Object_oClient_Other_68...

2125 lines
111 KiB

var type_event, _buffer, bufferSize, bufferSizePacket, clientID, findsocket, i, arrList, f, v, ban, clientX, clientY, clientSprite, clientImage, clientA1, clientA1X, clientA1Y, clientA2, clientA2X, clientA2Y, clientA2A, clientMirror, clientArmmsl, clientRoom, clientName, clientBlend, clientFXTimer, clientRoomPrev, clientState, clientSAX, clientSpeedboost, clientSJBall, clientSJDir, clientSpeedCharge, clientPlayerHealth, clientSpectator, clientInvincible, clientMosaic, clientReform, clientVisible, arr, indexValue, clientMapX, clientMapY, sax, spectator, arrPosData, find, event, playerHealth, missiles, smissiles, pbombs, playerhealth, ping, item, metdead, team, spacejump, screwattack, spiderball, speedbooster, bomb, ibeam, wbeam, pbeam, sbeam, cbeam, otherItemArr, IDCheck, tempArr, ID, checkBeam, checkMissile, checkDamage, checkFreeze, newTeam, saxmode, lobbyLocked, samCount, getGravity, receivedPasswordHash, size, type, alignment, result, _seed, monstersLeft, monstersArea, itemArr, metdeadArr, eventArr, tileCount, tileX, tileY, tileData, itemstaken, maxmissiles, maxsmissiles, maxpbombs, maxhealth, etanks, mtanks, stanks, ptanks, time, dir, sprX, sprY, charge, arrDraw, arrID, bombX, bombY, currentWeapon, missileX, missileY, velX, velY, icemissiles, pbombX, pbombY, syncDiff, str, syncELM, otherAbsorbRelativeX, otherAbsorbRelativeY, otherAbsorbSpriteHeight, mapposx, mapposy, mirror, sentRoom, playerX, playerY, resend, receivedItem, etankCount, stankCount, ptankCount, mtankCount, receivedEvent, receivedMetdead, countArea, countLeft, part, j, receiveddmap, damageMultStr, damageMult, experimental, playerState, combatState, freezeOff, checkDir, clientSBall, canFreeze, cantFreeze, checkID, attackID, killedBy, deadPlayer, deadName, killerName;
disconnectTimer = 900
if (!global.acceptPacket)
exit
type_event = ds_map_find_value(async_load, "type")
switch type_event
{
case 3:
_buffer = ds_map_find_value(async_load, "buffer")
bufferSize = buffer_get_size(_buffer)
buffer_seek(_buffer, buffer_seek_start, 0)
bufferSizePacket = buffer_read(_buffer, buffer_s32)
if (!is_real(bufferSizePacket))
exit
if ((bufferSizePacket + 4) != bufferSize)
exit
msgid = buffer_read(_buffer, buffer_u8)
switch msgid
{
case 254:
clientID = buffer_read(_buffer, buffer_u8)
if (ds_list_size(roomList) > 0)
{
findsocket = ds_list_find_index(roomList, clientID)
if (findsocket >= 0)
ds_list_delete(roomList, findsocket)
}
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrList = ds_list_find_value(roomListData, i)
if (arrList[0] == clientID)
ds_list_delete(roomListData, i)
}
for (f = 0; f < ds_list_size(global.idList); f++)
{
arrList = ds_list_find_value(global.idList, f)
if (clientID == arrList[0, 0])
ds_list_delete(global.idList, f)
}
for (v = 0; v < ds_list_size(posData); v++)
{
arrList = ds_list_find_value(posData, v)
if (clientID == arrList[0])
ds_list_delete(posData, v)
}
if instance_exists(oHatchling)
{
with (oHatchling)
{
if (myid != 0)
instance_destroy()
}
}
break
case 250:
ban = buffer_read(_buffer, buffer_u8)
if ban
banned = 1
else
kicked = 1
instance_destroy()
break
case 200:
global.clientID = preferredcolor
break
case 100:
clientID = buffer_read(_buffer, buffer_u8)
clientX = buffer_read(_buffer, buffer_s16)
clientY = buffer_read(_buffer, buffer_s16)
clientSprite = buffer_read(_buffer, buffer_s16)
clientImage = buffer_read(_buffer, buffer_s16)
clientA1 = buffer_read(_buffer, buffer_s16)
clientA1X = buffer_read(_buffer, buffer_s16)
clientA1Y = buffer_read(_buffer, buffer_s16)
clientA2 = buffer_read(_buffer, buffer_s16)
clientA2X = buffer_read(_buffer, buffer_s16)
clientA2Y = buffer_read(_buffer, buffer_s16)
clientA2A = buffer_read(_buffer, buffer_s16)
clientMirror = buffer_read(_buffer, buffer_s16)
clientArmmsl = buffer_read(_buffer, buffer_s16)
clientRoom = buffer_read(_buffer, buffer_s16)
clientName = buffer_read(_buffer, buffer_string)
clientBlend = buffer_read(_buffer, buffer_s16)
clientFXTimer = buffer_read(_buffer, buffer_s8)
clientRoomPrev = buffer_read(_buffer, buffer_s16)
clientState = buffer_read(_buffer, buffer_u8)
clientSAX = buffer_read(_buffer, buffer_u8)
clientSpeedboost = buffer_read(_buffer, buffer_u8)
clientSJBall = buffer_read(_buffer, buffer_u8)
clientSJDir = buffer_read(_buffer, buffer_u8)
clientSpeedCharge = buffer_read(_buffer, buffer_u8)
clientPlayerHealth = buffer_read(_buffer, buffer_s16)
findsocket = ds_list_find_index(roomList, clientID)
clientSpectator = buffer_read(_buffer, buffer_u8)
clientInvincible = buffer_read(_buffer, buffer_u8)
clientMosaic = buffer_read(_buffer, buffer_u8)
clientReform = buffer_read(_buffer, buffer_u8)
clientVisible = buffer_read(_buffer, buffer_u8)
clientSBall = buffer_read(_buffer, buffer_u8)
if (global.clientID != clientID)
{
if (findsocket < 0)
{
if (clientRoom == room || clientRoom == 6 || clientRoom == 10 || clientRoom == 9 || clientRoom == 11 || clientRoom == 16)
{
ds_list_add(roomList, clientID)
arr[0] = clientID
arr[1] = clientX
arr[2] = clientY
arr[3] = clientSprite
arr[4] = clientImage
arr[5] = clientA1
arr[6] = clientA1X
arr[7] = clientA1Y
arr[8] = clientA2
arr[9] = clientA2X
arr[10] = clientA2Y
arr[11] = clientA2A
arr[12] = clientMirror
arr[13] = clientArmmsl
arr[14] = clientRoom
arr[15] = clientName
arr[16] = clientBlend
arr[17] = clientFXTimer
arr[18] = clientRoomPrev
arr[19] = clientState
arr[20] = clientSAX
arr[21] = clientSpeedboost
arr[22] = clientSJBall
arr[23] = clientSJDir
arr[24] = clientSpeedCharge
arr[25] = clientPlayerHealth
arr[26] = clientSpectator
arr[27] = clientInvincible
arr[28] = clientMosaic
arr[29] = clientReform
arr[30] = clientVisible
arr[31] = clientSBall
ds_list_add(roomListData, arr)
}
}
else
{
arr[0] = clientID
arr[1] = clientX
arr[2] = clientY
arr[3] = clientSprite
arr[4] = clientImage
arr[5] = clientA1
arr[6] = clientA1X
arr[7] = clientA1Y
arr[8] = clientA2
arr[9] = clientA2X
arr[10] = clientA2Y
arr[11] = clientA2A
arr[12] = clientMirror
arr[13] = clientArmmsl
arr[14] = clientRoom
arr[15] = clientName
arr[16] = clientBlend
arr[17] = clientFXTimer
arr[18] = clientRoomPrev
arr[19] = clientState
arr[20] = clientSAX
arr[21] = clientSpeedboost
arr[22] = clientSJBall
arr[23] = clientSJDir
arr[24] = clientSpeedCharge
arr[25] = clientPlayerHealth
arr[26] = clientSpectator
arr[27] = clientInvincible
arr[28] = clientMosaic
arr[29] = clientReform
arr[30] = clientVisible
arr[31] = clientSBall
indexValue = ds_list_find_value(roomList, findsocket)
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrList = ds_list_find_value(roomListData, i)
if (arrList[0] == indexValue)
ds_list_set(roomListData, i, arr)
}
if (clientRoom != room && clientRoom != 6 && clientRoom != 10 && clientRoom != 9 && clientRoom != 11 && clientRoom != 16)
{
sameRoom = 0
indexValue = ds_list_find_value(roomList, findsocket)
ds_list_delete(roomList, findsocket)
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrList = ds_list_find_value(roomListData, i)
if (arrList[0] == indexValue)
ds_list_delete(roomListData, i)
}
}
}
}
break
case 101:
clientID = buffer_read(_buffer, buffer_u8)
clientRoom = buffer_read(_buffer, buffer_s16)
clientMapX = buffer_read(_buffer, buffer_s16)
clientMapY = buffer_read(_buffer, buffer_s16)
sax = buffer_read(_buffer, buffer_u8)
spectator = buffer_read(_buffer, buffer_u8)
playerState = buffer_read(_buffer, buffer_u8)
combatState = buffer_read(_buffer, buffer_bool)
findsocket = ds_list_find_index(roomList, clientID)
if (clientRoom == room && global.clientID != clientID)
sameRoom = 1
else if (clientRoom != room && global.clientID != clientID && clientRoom != 6 && clientRoom != 10 && clientRoom != 9 && clientRoom != 11 && clientRoom != 16)
{
if (ds_list_size(roomList) > 0 && findsocket >= 0)
{
sameRoom = 0
indexValue = ds_list_find_value(roomList, findsocket)
ds_list_delete(roomList, findsocket)
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrList = ds_list_find_value(roomListData, i)
if (arrList[0] == clientID)
ds_list_delete(roomListData, i)
}
}
}
findsocket = ds_list_find_index(roomList, clientID)
if (ds_list_size(roomList) > 0 && findsocket >= 0)
{
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrList = ds_list_find_value(roomListData, i)
if (arrList[0] == clientID)
{
arrList[14] = clientRoom
ds_list_set(roomListData, i, arrList)
}
}
}
checkList = ds_list_create()
if (ds_list_size(global.idList) > 0)
{
for (f = 0; f < ds_list_size(global.idList); f++)
{
if (ds_list_size(posData) > 0 && clientID != global.clientID)
{
arrPosData[0] = clientID
arrPosData[1] = clientMapX
arrPosData[2] = clientMapY
arrPosData[3] = sax
arrPosData[4] = clientRoom
arrPosData[5] = spectator
arrPosData[6] = playerState
arrPosData[7] = combatState
for (v = 0; v < ds_list_size(posData); v++)
{
arr = ds_list_find_value(posData, v)
ds_list_add(checkList, arr[0])
if (arr[0] == clientID)
ds_list_set(posData, v, arrPosData)
}
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)
{
arrPosData[0] = clientID
arrPosData[1] = clientMapX
arrPosData[2] = clientMapY
arrPosData[3] = sax
arrPosData[4] = clientRoom
arrPosData[5] = spectator
arrPosData[6] = playerState
arrPosData[7] = combatState
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 == 216 && room != rm_a4b01 && global.event[203] > 0 && global.event[203] < 9 && (!teleport))
{
if (room == rm_a4b02 || room == rm_a4b03 || room == rm_a4b04 || room == rm_a4b05 || room == rm_a4b06 || room == rm_a4b07 || room == rm_a4b08 || room == rm_a4b09 || room == rm_a4b10 || room == rm_a4b11 || room == rm_a4b12 || room == rm_a4b13 || room == rm_a4b14 || room == rm_a4b15 || room == rm_a4b16 || room == rm_a4b17 || room == rm_a4b18 || room == rm_a4b19)
{
teleport = 1
global.targetx = 624
global.targety = 144
room_change(216, 1)
}
}
break
case 102:
ds_list_read(global.idList, strict_decompress(buffer_read(_buffer, buffer_string)))
break
case 104:
playerHealth = buffer_read(_buffer, buffer_s16)
missiles = buffer_read(_buffer, buffer_s16)
smissiles = buffer_read(_buffer, buffer_u8)
pbombs = buffer_read(_buffer, buffer_u8)
clientID = buffer_read(_buffer, buffer_u8)
global.playerhealth = playerHealth
global.missiles = missiles
global.smissiles = smissiles
global.pbombs = pbombs
break
case 105:
ping = buffer_read(_buffer, buffer_u32)
global.ping = (current_time - ping)
break
case 106:
load_character_vars()
if (!global.saxmode)
reset_dmap()
global.itemPrev = array_clone(global.item)
global.metdeadPrev = array_clone(global.metdead)
global.eventPrev = array_clone(global.event)
global.dmapPrev = array_clone(global.dmap)
popup_text("Stats reset")
break
case 107:
disconnectTimer = -10
break
case 108:
clientID = buffer_read(_buffer, buffer_u8)
team = buffer_read(_buffer, buffer_u8)
spacejump = buffer_read(_buffer, buffer_u8)
screwattack = buffer_read(_buffer, buffer_u8)
spiderball = buffer_read(_buffer, buffer_u8)
speedbooster = buffer_read(_buffer, buffer_u8)
bomb = buffer_read(_buffer, buffer_u8)
ibeam = buffer_read(_buffer, buffer_u8)
wbeam = buffer_read(_buffer, buffer_u8)
pbeam = buffer_read(_buffer, buffer_u8)
sbeam = buffer_read(_buffer, buffer_u8)
cbeam = buffer_read(_buffer, buffer_u8)
otherItemArr[0] = clientID
otherItemArr[1] = team
otherItemArr[2] = spacejump
otherItemArr[3] = screwattack
otherItemArr[4] = spiderball
otherItemArr[5] = speedbooster
otherItemArr[6] = bomb
otherItemArr[7] = ibeam
otherItemArr[8] = wbeam
otherItemArr[9] = pbeam
otherItemArr[10] = sbeam
otherItemArr[11] = cbeam
if (ds_list_size(global.otherPlayerItems) == 0)
ds_list_add(global.otherPlayerItems, otherItemArr)
else
{
IDCheck = 0
for (i = 0; i < ds_list_size(global.otherPlayerItems); i++)
{
tempArr = ds_list_find_value(global.otherPlayerItems, i)
ID = tempArr[0]
if (ID == clientID)
{
IDCheck = 1
ds_list_set(global.otherPlayerItems, i, otherItemArr)
}
}
if (!IDCheck)
ds_list_add(global.otherPlayerItems, otherItemArr)
}
break
case 109:
global.showHealthIndicatorsTimer = 900
break
case 110:
global.showHealthIndicatorsTimer = 900
attackID = buffer_read(_buffer, buffer_u8)
checkBeam = buffer_read(_buffer, buffer_u8)
checkMissile = buffer_read(_buffer, buffer_u8)
checkDamage = buffer_read(_buffer, buffer_u8)
checkFreeze = buffer_read(_buffer, buffer_u8)
checkDir = buffer_read(_buffer, buffer_u8)
global.killedBy = attackID
if (checkMissile && global.playerFreeze > 151)
break
else
{
if (instance_exists(oCharacter) && oCharacter.invincible == 0)
{
with (oCharacter)
{
damageDir = -1
knockbackY = -3
if (checkDir > 90 && checkDir < 270)
damageDir = 1
global.multiDamageCollision = 1
if checkBeam
{
otherOBJ = 439
global.ignoreKnockback = 1
}
if checkMissile
otherOBJ = 440
if (checkMissile && checkDamage == 100)
global.hitBySuper = 1
if (checkMissile && global.playerFreeze > 0 && global.playerFreeze <= 151 && (!global.frozenNormally))
{
if ((!checkFreeze) || checkDamage == 100)
global.playerFreeze = 1
}
if global.frozenNormally
show_debug_message("normal freeze")
cantFreeze = ((global.currentsuit == 2 && global.item[5] == 1) || global.currentsuit == 1)
if (checkFreeze && global.playerFreeze == 0 && (!global.frozenNormally))
{
if (checkBeam && (!cantFreeze) && global.playerFreeze == 0 && invincible == 0 && canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR)
{
global.playerFreeze = 120
damageDir = 0
knockbackY = 0
global.frozenByRollback = 1
with (oControl)
{
kLeft = 0
kRight = 0
kUp = 0
kDown = 0
}
}
if (checkMissile && (checkDamage == 10 || checkDamage == 20) && (!cantFreeze) && global.playerFreeze == 0 && invincible == 0 && canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR)
{
global.playerFreeze = 120
damageDir = 0
knockbackY = 0
global.frozenByRollback = 1
with (oControl)
{
kLeft = 0
kRight = 0
kUp = 0
kDown = 0
}
}
}
if (checkDamage == 100)
checkDamage = 50
if checkMissile
{
if (global.playerFreeze > 0)
checkDamage *= 0.8
}
if ((!canbehit) || state == IDLE || (state == SAVING && state == SAVINGFX) || state == SAVINGSHIPFX || state == SAVINGSHIP || state == ELEVATOR || state == GFELEVATOR)
checkDamage = 0
if ((!global.frozenNormally) && canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR)
damage_player(checkDamage, (5 * damageDir), knockbackY, 0, 0)
}
}
break
}
case 111:
newTeam = buffer_read(_buffer, buffer_u8)
if (newTeam == 1)
global.sax = 0
if (newTeam == 2)
global.sax = 1
break
case 112:
saxmode = buffer_read(_buffer, buffer_u8)
newTeam = buffer_read(_buffer, buffer_u8)
global.saxmode = saxmode
if (newTeam == 1)
global.sax = 0
if (newTeam == 2)
global.sax = 1
break
case 113:
time = buffer_read(_buffer, buffer_s32)
saxmode = buffer_read(_buffer, buffer_u8)
lobbyLocked = buffer_read(_buffer, buffer_u8)
samCount = buffer_read(_buffer, buffer_u8)
damageMultStr = buffer_read(_buffer, buffer_string)
damageMult = real(damageMultStr)
experimental = buffer_read(_buffer, buffer_u8)
global.MetCount = buffer_read(_buffer, buffer_u8)
global.freeForAll = buffer_read(_buffer, buffer_u8)
global.killMessages = buffer_read(_buffer, buffer_u8)
global.damageMult = damageMult
global.saxmode = saxmode
global.experimental = experimental
if global.saxmode
global.gametime = time
if (!lobbyLocked)
{
if global.spectator
{
global.spectator = 0
global.spectatorIndex = -1
}
}
global.lobbyLocked = lobbyLocked
global.samCount = samCount
break
case 114:
lobbyLocked = buffer_read(_buffer, buffer_u8)
if lobbyLocked
{
global.spectator = 1
global.spectatorIndex = -1
global.mosaic = 0
}
global.lobbyLocked = lobbyLocked
break
case 115:
getGravity = buffer_read(_buffer, buffer_u8)
freezeOff = buffer_read(_buffer, buffer_u8)
if (getGravity && global.saxmode && global.sax && (!global.item[9]) && instance_number(oCoreXGravity) == 0 && string_count("rm_a", room_get_name(room)))
instance_create(irandom_range(0, room_width), -100, oCoreXGravity)
global.freezeDisabled = freezeOff
break
case 116:
receivedPasswordHash = buffer_read(_buffer, buffer_string)
if (sha1_string_unicode(oControl.password) == receivedPasswordHash)
global.moderator = 1
else
global.moderator = 0
break
case 0:
global.clientID = buffer_read(_buffer, buffer_u8)
show_debug_message(((string(msgid) + " ") + string(global.clientID)))
global.receiving = 1
buffer_delete(buffer)
size = 1024
type = buffer_grow
alignment = 1
buffer = buffer_create(size, type, alignment)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_u8, 200)
buffer_write(buffer, buffer_u8, global.clientID)
buffer_write(buffer, buffer_u8, preferredcolor)
buffer_write(buffer, buffer_u8, global.sax)
bufferSize = buffer_tell(buffer)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_s32, bufferSize)
buffer_write(buffer, buffer_u8, 200)
buffer_write(buffer, buffer_u8, global.clientID)
buffer_write(buffer, buffer_u8, preferredcolor)
buffer_write(buffer, buffer_u8, global.sax)
result = network_send_packet(socket, buffer, buffer_tell(buffer))
break
case 1:
ds_grid_read(global.onlineReceived, strict_decompress(buffer_read(_buffer, buffer_string)))
global.receivedClientID = buffer_read(_buffer, buffer_u8)
global.receivedPacketID++
if (global.receivedClientID != global.clientID)
{
update_variables("disablesame")
update_variables("replaceglobalvars")
update_variables("updateprev")
alarm[0] = 10
ds_grid_clear(global.onlineReceived, -1)
}
break
case 2:
ds_grid_read(global.onlineReceived, strict_decompress(buffer_read(_buffer, buffer_string)))
global.receivedClientID = buffer_read(_buffer, buffer_u8)
update_variables("disablesame")
update_variables("updateprev")
alarm[0] = 10
ds_grid_clear(global.onlineReceived, -1)
break
case 3:
queenHealth = buffer_read(_buffer, buffer_s32)
clientID = buffer_read(_buffer, buffer_u8)
phase = buffer_read(_buffer, buffer_s8)
state = buffer_read(_buffer, buffer_s8)
if (clientID != global.clientID)
{
if (instance_exists(oQueen) && instance_exists(oQueenHead) && (!is_undefined(oQueenHead.myhealth)) && (!is_undefined(oQueen.phase)))
{
if (oQueen.phase == phase)
{
if (global.queenhealthPrev != queenHealth)
{
if (queenHealth == 999999)
{
queenHealth = 0
oQueenHead.myhealth = queenHealth
if (queenHealth <= 0)
{
with (oQueenHead)
{
if (myhealth <= 0 && state != 100 && state != 50)
{
if (oQueen.phase < 3)
head_damage = 1
if (oQueen.phase == 3)
head_damage = 2
if (oQueen.phase < 5)
{
state = 50
statetime = 0
myhealth = 999999
with (oQueen)
{
state = 6
statetime = 0
}
}
if (oQueen.phase == 5)
{
with (oQueen)
{
state = 100
statetime = 0
}
state = 100
}
}
}
queenHealth = 999999
}
}
global.queenhealthPrev = queenHealth
oQueenHead.myhealth = queenHealth
}
}
if (global.queenphasePrev != phase)
global.queenphasePrev = phase
}
}
else if (instance_exists(oQueen) && instance_exists(oQueenHead) && (!is_undefined(oQueenHead.myhealth)) && (!is_undefined(oQueen.phase)))
{
global.queenhealthPrev = oQueenHead.myhealth
global.queenphasePrev = oQueen.phase
}
break
case 4:
_seed = buffer_read(_buffer, buffer_f64)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID)
{
if (seed != _seed)
{
seed = _seed
show_debug_message("seed received")
popup_seed("Seed received")
}
}
oControl.mod_bombs = buffer_read(_buffer, buffer_s16)
oControl.mod_spider = buffer_read(_buffer, buffer_s16)
oControl.mod_jumpball = buffer_read(_buffer, buffer_s16)
oControl.mod_hijump = buffer_read(_buffer, buffer_s16)
oControl.mod_varia = buffer_read(_buffer, buffer_s16)
oControl.mod_spacejump = buffer_read(_buffer, buffer_s16)
oControl.mod_speedbooster = buffer_read(_buffer, buffer_s16)
oControl.mod_screwattack = buffer_read(_buffer, buffer_s16)
oControl.mod_gravity = buffer_read(_buffer, buffer_s16)
oControl.mod_charge = buffer_read(_buffer, buffer_s16)
oControl.mod_ice = buffer_read(_buffer, buffer_s16)
oControl.mod_wave = buffer_read(_buffer, buffer_s16)
oControl.mod_spazer = buffer_read(_buffer, buffer_s16)
oControl.mod_plasma = buffer_read(_buffer, buffer_s16)
oControl.mod_52 = buffer_read(_buffer, buffer_s16)
oControl.mod_53 = buffer_read(_buffer, buffer_s16)
oControl.mod_54 = buffer_read(_buffer, buffer_s16)
oControl.mod_55 = buffer_read(_buffer, buffer_s16)
oControl.mod_56 = buffer_read(_buffer, buffer_s16)
oControl.mod_57 = buffer_read(_buffer, buffer_s16)
oControl.mod_60 = buffer_read(_buffer, buffer_s16)
oControl.mod_100 = buffer_read(_buffer, buffer_s16)
oControl.mod_101 = buffer_read(_buffer, buffer_s16)
oControl.mod_102 = buffer_read(_buffer, buffer_s16)
oControl.mod_104 = buffer_read(_buffer, buffer_s16)
oControl.mod_105 = buffer_read(_buffer, buffer_s16)
oControl.mod_106 = buffer_read(_buffer, buffer_s16)
oControl.mod_107 = buffer_read(_buffer, buffer_s16)
oControl.mod_109 = buffer_read(_buffer, buffer_s16)
oControl.mod_111 = buffer_read(_buffer, buffer_s16)
oControl.mod_150 = buffer_read(_buffer, buffer_s16)
oControl.mod_151 = buffer_read(_buffer, buffer_s16)
oControl.mod_152 = buffer_read(_buffer, buffer_s16)
oControl.mod_153 = buffer_read(_buffer, buffer_s16)
oControl.mod_154 = buffer_read(_buffer, buffer_s16)
oControl.mod_155 = buffer_read(_buffer, buffer_s16)
oControl.mod_156 = buffer_read(_buffer, buffer_s16)
oControl.mod_159 = buffer_read(_buffer, buffer_s16)
oControl.mod_161 = buffer_read(_buffer, buffer_s16)
oControl.mod_163 = buffer_read(_buffer, buffer_s16)
oControl.mod_202 = buffer_read(_buffer, buffer_s16)
oControl.mod_203 = buffer_read(_buffer, buffer_s16)
oControl.mod_204 = buffer_read(_buffer, buffer_s16)
oControl.mod_205 = buffer_read(_buffer, buffer_s16)
oControl.mod_208 = buffer_read(_buffer, buffer_s16)
oControl.mod_210 = buffer_read(_buffer, buffer_s16)
oControl.mod_211 = buffer_read(_buffer, buffer_s16)
oControl.mod_214 = buffer_read(_buffer, buffer_s16)
oControl.mod_250 = buffer_read(_buffer, buffer_s16)
oControl.mod_252 = buffer_read(_buffer, buffer_s16)
oControl.mod_255 = buffer_read(_buffer, buffer_s16)
oControl.mod_257 = buffer_read(_buffer, buffer_s16)
oControl.mod_259 = buffer_read(_buffer, buffer_s16)
oControl.mod_303 = buffer_read(_buffer, buffer_s16)
oControl.mod_304 = buffer_read(_buffer, buffer_s16)
oControl.mod_307 = buffer_read(_buffer, buffer_s16)
oControl.mod_308 = buffer_read(_buffer, buffer_s16)
oControl.mod_309 = buffer_read(_buffer, buffer_s16)
oControl.mod_51 = buffer_read(_buffer, buffer_s16)
oControl.mod_110 = buffer_read(_buffer, buffer_s16)
oControl.mod_162 = buffer_read(_buffer, buffer_s16)
oControl.mod_206 = buffer_read(_buffer, buffer_s16)
oControl.mod_207 = buffer_read(_buffer, buffer_s16)
oControl.mod_209 = buffer_read(_buffer, buffer_s16)
oControl.mod_215 = buffer_read(_buffer, buffer_s16)
oControl.mod_256 = buffer_read(_buffer, buffer_s16)
oControl.mod_300 = buffer_read(_buffer, buffer_s16)
oControl.mod_305 = buffer_read(_buffer, buffer_s16)
oControl.mod_50 = buffer_read(_buffer, buffer_s16)
oControl.mod_103 = buffer_read(_buffer, buffer_s16)
oControl.mod_108 = buffer_read(_buffer, buffer_s16)
oControl.mod_157 = buffer_read(_buffer, buffer_s16)
oControl.mod_158 = buffer_read(_buffer, buffer_s16)
oControl.mod_200 = buffer_read(_buffer, buffer_s16)
oControl.mod_201 = buffer_read(_buffer, buffer_s16)
oControl.mod_251 = buffer_read(_buffer, buffer_s16)
oControl.mod_254 = buffer_read(_buffer, buffer_s16)
oControl.mod_306 = buffer_read(_buffer, buffer_s16)
oControl.mod_58 = buffer_read(_buffer, buffer_s16)
oControl.mod_59 = buffer_read(_buffer, buffer_s16)
oControl.mod_112 = buffer_read(_buffer, buffer_s16)
oControl.mod_160 = buffer_read(_buffer, buffer_s16)
oControl.mod_212 = buffer_read(_buffer, buffer_s16)
oControl.mod_213 = buffer_read(_buffer, buffer_s16)
oControl.mod_253 = buffer_read(_buffer, buffer_s16)
oControl.mod_258 = buffer_read(_buffer, buffer_s16)
oControl.mod_301 = buffer_read(_buffer, buffer_s16)
oControl.mod_302 = buffer_read(_buffer, buffer_s16)
break
case 5:
monstersLeft = buffer_read(_buffer, buffer_s8)
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:
monstersArea = buffer_read(_buffer, buffer_s8)
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:
item = ds_list_create()
ds_list_read(item, strict_decompress(buffer_read(_buffer, buffer_string)))
clientID = buffer_read(_buffer, buffer_u8)
itemArr = ds_list_find_value(item, 0)
if is_array(itemArr)
{
for (i = 0; i < array_length_1d(global.item); i++)
{
for (f = 0; f < array_height_2d(itemArr); f++)
{
if (i == itemArr[f, 1])
{
global.itemPrev[i] = itemArr[f, 0]
if (global.item[i] != itemArr[f, 0])
{
global.item[i] = itemArr[f, 0]
if (i == 0)
{
global.bomb = 1
global.bombPrev = global.bomb
popup_text(((get_text("Items", "Bombs") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 1)
{
global.powergrip = 1
global.powergripPrev = global.powergrip
popup_text(((get_text("Items", "PowerGrip") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 2)
{
global.spiderball = 1
global.spiderballPrev = global.spiderball
popup_text(((get_text("Items", "SpiderBall") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 3)
{
global.jumpball = 1
global.jumpballPrev = global.jumpball
popup_text(((get_text("Items", "JumpBall") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 4)
{
global.hijump = 1
global.hijumpPrev = global.hijump
popup_text(((get_text("Items", "HiJump") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 5)
{
if (global.currentsuit != 2)
{
global.currentsuit = 1
global.currentsuitPrev = global.currentsuit
}
popup_text(((get_text("Items", "VariaSuit") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 6)
{
global.spacejump = 1
global.spacejumpPrev = global.spacejump
popup_text(((get_text("Items", "SpaceJump") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 7)
{
global.speedbooster = 1
global.speedboosterPrev = global.speedbooster
popup_text(((get_text("Items", "SpeedBooster") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 8)
{
global.screwattack = 1
global.screwattackPrev = global.screwattack
popup_text(((get_text("Items", "ScrewAttack") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 9)
{
global.currentsuit = 2
global.currentsuitPrev = global.currentsuit
popup_text(((get_text("Items", "GravitySuit") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 10)
{
global.cbeam = 1
global.cbeamPrev = global.cbeam
popup_text(((get_text("Items", "ChargeBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 11)
{
global.ibeam = 1
global.ibeamPrev = global.ibeam
popup_text(((get_text("Items", "IceBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 12)
{
global.wbeam = 1
global.wbeamPrev = global.wbeam
popup_text(((get_text("Items", "WaveBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 13)
{
global.sbeam = 1
global.sbeamPrev = global.sbeam
popup_text(((get_text("Items", "SpazerBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 14)
{
global.pbeam = 1
global.pbeamPrev = global.pbeam
popup_text(((get_text("Items", "PlasmaBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
}
}
}
}
}
alarm[3] = 10
if (global.clientID == clientID)
{
ds_list_clear(global.onlineItem)
global.itemChanges = 0
}
ds_list_destroy(item)
break
case 8:
metdead = ds_list_create()
ds_list_read(metdead, strict_decompress(buffer_read(_buffer, buffer_string)))
clientID = buffer_read(_buffer, buffer_u8)
metdeadArr = ds_list_find_value(metdead, 0)
if is_array(metdeadArr)
{
for (i = 0; i < array_length_1d(global.metdead); i++)
{
for (f = 0; f < array_height_2d(metdeadArr); f++)
{
if (i == metdeadArr[f, 1])
{
global.metdeadPrev[i] = metdeadArr[f, 0]
if (global.metdead[i] != metdeadArr[f, 0])
{
global.metdead[i] = metdeadArr[f, 0]
if (metdeadArr[f, 0] == 1 && global.clientID != clientID)
popup_text("Metroid killed")
}
}
}
}
}
alarm[4] = 10
if (global.clientID == clientID)
{
ds_list_clear(global.onlineMetdead)
global.metdeadChanges = 0
}
ds_list_destroy(metdead)
break
case 9:
event = ds_list_create()
ds_list_read(event, strict_decompress(buffer_read(_buffer, buffer_string)))
clientID = buffer_read(_buffer, buffer_u8)
eventArr = ds_list_find_value(event, 0)
if is_array(eventArr)
{
for (i = 0; i < array_length_1d(global.event); i++)
{
for (f = 0; f < array_height_2d(eventArr); f++)
{
if (i == eventArr[f, 1] && eventArr[f, 1] != 102)
{
global.eventPrev[i] = eventArr[f, 0]
if (global.event[i] != eventArr[f, 0])
global.event[i] = eventArr[f, 0]
if (eventArr[f, 1] == 250)
popup_text("EMP Activated")
if (eventArr[f, 1] == 308)
{
if (eventArr[f, 0] == 1 && clientID != global.clientID)
{
if instance_exists(oCharacter)
{
with (oCharacter)
{
facing = 0
if (global.currentsuit == 0)
sprite_index = scr_suit_sprites(822, sFront_fusion)
if (global.currentsuit == 1)
sprite_index = scr_suit_sprites(1029, sFront_fusion)
if (global.currentsuit == 2)
sprite_index = scr_suit_sprites(848, sFront_fusion)
canbehit = 0
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
}
}
global.enablecontrol = 0
oControl.displaygui = 0
popup_text_ext("Ship reached", 120)
}
if (eventArr[f, 0] == 2 && clientID != global.clientID)
{
oControl.displaygui = 0
global.enablecontrol = 0
if instance_exists(oCharacter)
{
with (oCharacter)
{
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
}
}
}
if (eventArr[f, 0] == 3 && clientID != global.clientID)
{
instance_create(0, 0, oFinalFadeout)
mus_fadeout(musHatchling)
global.enablecontrol = 0
if instance_exists(oCharacter)
{
with (oCharacter)
{
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
}
}
}
if (eventArr[f, 0] == 4 && clientID != global.clientID)
{
if instance_exists(oCharacter)
{
with (oCharacter)
{
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
canbehit = 1
}
}
remove_persistent_objects()
sfx_stop_all()
global.vibL = 0
global.vibR = 0
global.ingame = 0
global.darkness = 0
global.gotolog = -1
global.enablecontrol = 1
global.transitiontype = 0
oControl.displaygui = 1
room_goto(rm_credits)
mus_stop_all()
mus_play_once(musCredits)
}
}
}
}
}
}
alarm[5] = 10
if (global.clientID == clientID)
{
ds_list_clear(global.onlineEvent)
global.eventChanges = 0
}
ds_list_destroy(event)
break
case 10:
tileCount = buffer_read(_buffer, buffer_u16)
if (tileCount > 0)
{
for (i = 0; i < tileCount; i++)
{
tileX = buffer_read(_buffer, buffer_u8)
tileY = buffer_read(_buffer, buffer_u8)
tileData = buffer_read(_buffer, buffer_u8)
global.dmapPrev[tileX, tileY] = tileData
if (global.dmap[tileX, tileY] != tileData)
{
global.dmap[tileX, tileY] = tileData
if global.ingame
{
with (oControl)
event_user(2)
}
if (instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map))
surface_free(oSS_Control.s_map)
}
}
clientID = buffer_read(_buffer, buffer_u8)
}
alarm[6] = 10
break
case 11:
itemstaken = buffer_read(_buffer, buffer_u8)
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:
maxmissiles = buffer_read(_buffer, buffer_u16)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && maxmissiles != global.maxmissiles)
{
global.maxmissilesPrev = maxmissiles
global.maxmissiles = maxmissiles
}
else if (clientID == global.clientID)
global.maxmissilesPrev = global.maxmissiles
global.missilesPrev = maxmissiles
global.missiles = maxmissiles
alarm[8] = 1
break
case 13:
maxsmissiles = buffer_read(_buffer, buffer_u8)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && maxsmissiles != global.maxsmissiles)
{
global.maxsmissilesPrev = maxsmissiles
global.maxsmissiles = maxsmissiles
}
else if (clientID == global.clientID)
global.maxsmissilesPrev = global.maxsmissiles
global.smissilesPrev = maxsmissiles
global.smissiles = maxsmissiles
alarm[9] = 1
break
case 14:
maxpbombs = buffer_read(_buffer, buffer_u8)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && maxpbombs != global.maxpbombs)
{
global.maxpbombsPrev = maxpbombs
global.maxpbombs = maxpbombs
}
else if (clientID == global.clientID)
global.maxpbombsPrev = global.maxpbombs
global.pbombsPrev = maxpbombs
global.pbombs = maxpbombs
maxpbombsTimer = 1
break
case 15:
maxhealth = buffer_read(_buffer, buffer_u16)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && maxhealth != global.maxhealth)
{
global.maxhealthPrev = maxhealth
global.maxhealth = maxhealth
}
else if (clientID == global.clientID)
global.maxhealthPrev = global.maxhealth
global.playerhealthPrev = maxhealth
global.playerhealth = maxhealth
maxhealthTimer = 1
break
case 16:
etanks = buffer_read(_buffer, buffer_u8)
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:
mtanks = buffer_read(_buffer, buffer_u8)
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:
stanks = buffer_read(_buffer, buffer_u8)
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:
ptanks = buffer_read(_buffer, buffer_u8)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && ptanks != global.ptanks)
{
global.ptanksPrev = ptanks
global.ptanks = ptanks
}
else if (clientID == global.clientID)
global.ptanksPrev = global.ptanks
ptanksTimer = 1
break
case 20:
time = buffer_read(_buffer, buffer_s32)
global.gametime = time
break
case 21:
clientID = buffer_read(_buffer, buffer_u8)
dir = buffer_read(_buffer, buffer_s16)
sprX = buffer_read(_buffer, buffer_s16)
sprY = buffer_read(_buffer, buffer_s16)
charge = buffer_read(_buffer, buffer_u8)
sax = buffer_read(_buffer, buffer_u8)
if (ds_list_size(roomListData) > 0 && clientID != global.clientID)
{
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrDraw = ds_list_find_value(roomListData, i)
arrID = arrDraw[0]
if (clientID == arrID)
{
if instance_exists(oCharacter)
{
with (oCharacter)
shoot_beam_receive(sprX, sprY, dir, charge, sax, clientID)
}
}
}
}
break
case 22:
clientID = buffer_read(_buffer, buffer_u8)
bombX = buffer_read(_buffer, buffer_s16)
bombY = buffer_read(_buffer, buffer_s16)
sax = buffer_read(_buffer, buffer_u8)
if (ds_list_size(roomListData) > 0 && clientID != global.clientID)
{
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrDraw = ds_list_find_value(roomListData, i)
arrID = arrDraw[0]
if (clientID == arrID)
{
if instance_exists(oCharacter)
{
bomb = instance_create(bombX, bombY, oBombMulti)
bomb.sax = sax
bomb.myid = clientID
sfx_play(sndBombSet)
}
}
}
}
break
case 23:
clientID = buffer_read(_buffer, buffer_u8)
currentWeapon = buffer_read(_buffer, buffer_u8)
dir = buffer_read(_buffer, buffer_s16)
missileX = buffer_read(_buffer, buffer_s16)
missileY = buffer_read(_buffer, buffer_s16)
sax = buffer_read(_buffer, buffer_u8)
velX = buffer_read(_buffer, buffer_s8)
velY = buffer_read(_buffer, buffer_s8)
icemissiles = buffer_read(_buffer, buffer_u8)
if (ds_list_size(roomListData) > 0 && clientID != global.clientID)
{
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrDraw = ds_list_find_value(roomListData, i)
arrID = arrDraw[0]
if (clientID == arrID)
{
if instance_exists(oCharacter)
{
with (oCharacter)
shoot_missile_receive(dir, currentWeapon, missileX, missileY, sax, clientID, velX, velY, icemissiles)
}
}
}
}
break
case 24:
clientID = buffer_read(_buffer, buffer_u8)
pbombX = buffer_read(_buffer, buffer_s16)
pbombY = buffer_read(_buffer, buffer_s16)
sax = buffer_read(_buffer, buffer_u8)
if (ds_list_size(roomListData) > 0 && clientID != global.clientID)
{
for (i = 0; i < ds_list_size(roomListData); i++)
{
arrDraw = ds_list_find_value(roomListData, i)
arrID = arrDraw[0]
if (clientID == arrID)
{
if instance_exists(oCharacter)
{
pbomb = instance_create(pbombX, pbombY, oPBombMulti)
pbomb.sax = sax
pbomb.myid = clientID
sfx_play(sndPBombSet)
}
}
}
}
break
case 25:
playerhealth = buffer_read(_buffer, buffer_s16)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && playerhealth != global.playerhealth)
{
if instance_exists(oCharacter)
{
if (oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING)
{
global.playerhealthPrev = playerhealth
global.playerhealth = playerhealth
}
else if (oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0))
{
if (global.playerhealth != global.maxhealth)
refill_heath_ammo()
if (global.missiles != global.maxmissiles)
refill_heath_ammo()
if (global.smissiles != global.maxsmissiles)
refill_heath_ammo()
if (global.pbombs != global.maxpbombs)
refill_heath_ammo()
buffer_delete(buffer)
size = 1024
type = buffer_grow
alignment = 1
buffer = buffer_create(size, type, alignment)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
bufferSize = buffer_tell(buffer)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_s32, bufferSize)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
result = network_send_packet(socket, buffer, buffer_tell(buffer))
}
}
else
{
global.playerhealthPrev = playerhealth
global.playerhealth = playerhealth
}
}
else if (clientID == global.clientID)
global.playerhealthPrev = global.playerhealth
healthTimer = 1
break
case 26:
missiles = buffer_read(_buffer, buffer_s16)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && missiles != global.missiles)
{
if instance_exists(oCharacter)
{
if (oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING)
{
global.missilesPrev = missiles
global.missiles = missiles
}
else if (oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0))
{
if (global.playerhealth != global.maxhealth)
refill_heath_ammo()
if (global.missiles != global.maxmissiles)
refill_heath_ammo()
if (global.smissiles != global.maxsmissiles)
refill_heath_ammo()
if (global.pbombs != global.maxpbombs)
refill_heath_ammo()
buffer_delete(buffer)
size = 1024
type = buffer_grow
alignment = 1
buffer = buffer_create(size, type, alignment)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
bufferSize = buffer_tell(buffer)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_s32, bufferSize)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
result = network_send_packet(socket, buffer, buffer_tell(buffer))
}
}
else
{
global.missilesPrev = missiles
global.missiles = missiles
}
}
else if (clientID == global.clientID)
global.missilesPrev = global.missiles
missilesTimer = 1
break
case 27:
smissiles = buffer_read(_buffer, buffer_s16)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && smissiles != global.smissiles)
{
if instance_exists(oCharacter)
{
if (oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING)
{
global.smissilesPrev = smissiles
global.smissiles = smissiles
}
else if (oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0))
{
if (global.playerhealth != global.maxhealth)
refill_heath_ammo()
if (global.missiles != global.maxmissiles)
refill_heath_ammo()
if (global.smissiles != global.maxsmissiles)
refill_heath_ammo()
if (global.pbombs != global.maxpbombs)
refill_heath_ammo()
buffer_delete(buffer)
size = 1024
type = buffer_grow
alignment = 1
buffer = buffer_create(size, type, alignment)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
bufferSize = buffer_tell(buffer)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_s32, bufferSize)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
result = network_send_packet(socket, buffer, buffer_tell(buffer))
}
}
else
{
global.smissilesPrev = smissiles
global.smissiles = smissiles
}
}
else if (clientID == global.clientID)
global.smissilesPrev = global.smissiles
smissilesTimer = 1
break
case 28:
pbombs = buffer_read(_buffer, buffer_s16)
clientID = buffer_read(_buffer, buffer_u8)
if (clientID != global.clientID && pbombs != global.pbombs)
{
if instance_exists(oCharacter)
{
if (oCharacter.state != oCharacter.SAVINGFX && oCharacter.state != oCharacter.SAVINGSHIPFX && oCharacter.state != oCharacter.SAVINGSHIP && oCharacter.state != oCharacter.SAVING)
{
global.pbombsPrev = pbombs
global.pbombs = pbombs
}
else if (oCharacter.state == oCharacter.SAVINGFX || oCharacter.state == oCharacter.SAVINGSHIPFX || oCharacter.state == oCharacter.SAVINGSHIP || oCharacter.state == oCharacter.SAVING || (oCharacter.state == oCharacter.IDLE && oCharacter.juststarted > 0))
{
if (global.playerhealth != global.maxhealth)
refill_heath_ammo()
if (global.missiles != global.maxmissiles)
refill_heath_ammo()
if (global.smissiles != global.maxsmissiles)
refill_heath_ammo()
if (global.pbombs != global.maxpbombs)
refill_heath_ammo()
buffer_delete(buffer)
size = 1024
type = buffer_grow
alignment = 1
buffer = buffer_create(size, type, alignment)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
bufferSize = buffer_tell(buffer)
buffer_seek(buffer, buffer_seek_start, 0)
buffer_write(buffer, buffer_s32, bufferSize)
buffer_write(buffer, buffer_u8, 102)
buffer_write(buffer, buffer_s16, global.playerhealth)
buffer_write(buffer, buffer_s16, global.missiles)
buffer_write(buffer, buffer_u8, global.smissiles)
buffer_write(buffer, buffer_u8, global.pbombs)
buffer_write(buffer, buffer_u8, global.clientID)
result = network_send_packet(socket, buffer, buffer_tell(buffer))
}
}
else
{
global.pbombsPrev = pbombs
global.pbombs = pbombs
}
}
else if (clientID == global.clientID)
global.pbombsPrev = global.pbombs
pbombsTimer = 1
break
case 29:
syncDiff = buffer_read(_buffer, buffer_u8)
if (syncDiff != syncedDifficulty)
{
syncedDifficulty = syncDiff
switch syncedDifficulty
{
case 0:
str = "Easy"
break
case 1:
str = "Normal"
break
case 2:
str = "Hard"
break
case 3:
str = "Fusion"
break
}
popup_text(str)
}
if (instance_exists(oOptionsMod) && oOptionsMod.menuDifficulty != syncedDifficulty)
oOptionsMod.menuDifficulty = syncedDifficulty
break
case 30:
syncELM = buffer_read(_buffer, buffer_u8)
if (syncELM != elm)
{
elm = syncELM
switch elm
{
case 0:
str = "ELM Disabled"
break
case 1:
str = "ELM Enabled"
break
}
popup_text(str)
}
if (instance_exists(oOptionsMod) && oOptionsMod.elm != elm)
oOptionsMod.elm = elm
break
case 31:
otherAbsorbRelativeX = buffer_read(_buffer, buffer_s16)
otherAbsorbRelativeY = buffer_read(_buffer, buffer_s16)
otherAbsorbSpriteHeight = buffer_read(_buffer, buffer_u8)
global.absorbRelativeX = otherAbsorbRelativeX
global.absorbRelativeY = otherAbsorbRelativeY
global.absorbSpriteHeight = otherAbsorbSpriteHeight
global.beingAbsorbed = 1
break
case 32:
mapposx = buffer_read(_buffer, buffer_s16)
mapposy = buffer_read(_buffer, buffer_s16)
global.mapmarker = 1
global.mapmarkerx = mapposx
global.mapmarkery = mapposy
global.playerMapPosTimer = 600
break
case 33:
mirror = buffer_read(_buffer, buffer_s8)
sentRoom = buffer_read(_buffer, buffer_s16)
playerX = buffer_read(_buffer, buffer_s16)
playerY = buffer_read(_buffer, buffer_s16)
sax = buffer_read(_buffer, buffer_s8)
killedBy = buffer_read(_buffer, buffer_u8)
deadName = buffer_read(_buffer, buffer_string)
killerName = buffer_read(_buffer, buffer_string)
if global.killMessages
{
if (killedBy != 0)
popup_text(((killerName + " killed ") + deadName))
else
popup_text((deadName + " died"))
}
if (room == sentRoom)
{
seq = instance_create(playerX, playerY, oDeathSequenceMulti)
seq.facing = mirror
}
break
case 50:
resend = 0
for (i = 0; i < array_length_1d(global.item); i++)
{
receivedItem = buffer_read(_buffer, buffer_u8)
if (receivedItem == 1 && global.item[i] == 0)
{
global.item[i] = receivedItem
global.itemPrev[i] = global.item[i]
if (i == 0)
{
global.bomb = 1
global.bombPrev = global.bomb
popup_text(((get_text("Items", "Bombs") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 1)
{
global.powergrip = 1
global.powergripPrev = global.powergrip
popup_text(((get_text("Items", "PowerGrip") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 2)
{
global.spiderball = 1
global.spiderballPrev = global.spiderball
popup_text(((get_text("Items", "SpiderBall") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 3)
{
global.jumpball = 1
global.jumpballPrev = global.jumpball
popup_text(((get_text("Items", "JumpBall") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 4)
{
global.hijump = 1
global.hijumpPrev = global.hijump
popup_text(((get_text("Items", "HiJump") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 5)
{
global.currentsuit = 1
global.currentsuitPrev = global.currentsuit
popup_text(((get_text("Items", "VariaSuit") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 6)
{
global.spacejump = 1
global.spacejumpPrev = global.spacejump
popup_text(((get_text("Items", "SpaceJump") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 7)
{
global.speedbooster = 1
global.speedboosterPrev = global.speedbooster
popup_text(((get_text("Items", "SpeedBooster") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 8)
{
global.screwattack = 1
global.screwattackPrev = global.screwattack
popup_text(((get_text("Items", "ScrewAttack") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 9)
{
global.currentsuit = 2
global.currentsuitPrev = global.currentsuit
popup_text(((get_text("Items", "GravitySuit") + " ") + get_text("GlobalOptions", "Enabled")))
if sfx_isplaying(sndSpinJump)
sfx_stop(sndSpinJump)
if sfx_isplaying(sndSpaceJump)
sfx_stop(sndSpaceJump)
if sfx_isplaying(sndScrewAttack)
sfx_stop(sndScrewAttack)
if sfx_isplaying(sndSpaceScrewAttack)
sfx_stop(sndSpaceScrewAttack)
}
if (i == 10)
{
global.cbeam = 1
global.cbeamPrev = global.cbeam
popup_text(((get_text("Items", "ChargeBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 11)
{
global.ibeam = 1
global.ibeamPrev = global.ibeam
popup_text(((get_text("Items", "IceBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 12)
{
global.wbeam = 1
global.wbeamPrev = global.wbeam
popup_text(((get_text("Items", "WaveBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 13)
{
global.sbeam = 1
global.sbeamPrev = global.sbeam
popup_text(((get_text("Items", "SpazerBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
if (i == 14)
{
global.pbeam = 1
global.pbeamPrev = global.pbeam
popup_text(((get_text("Items", "PlasmaBeam") + " ") + get_text("GlobalOptions", "Enabled")))
}
}
else if (receivedItem == 0 && global.item[i] == 1)
resend = 1
}
etankCount = 0
for (i = 0; i < array_length_1d(global.item); i++)
{
if (i == 50 || i == 103 || i == 108 || i == 157 || i == 158 || i == 200 || i == 201 || i == 251 || i == 254 || i == 306)
{
if (global.item[i] == 1)
etankCount++
}
}
if (etankCount != global.etanks)
{
global.etanks = etankCount
global.maxhealth = ((99 + (100 * global.etanks)) * oControl.mod_etankhealthmult)
global.playerhealth = global.maxhealth
}
stankCount = 0
for (i = 0; i < array_length_1d(global.item); i++)
{
if (i == 51 || i == 110 || i == 162 || i == 206 || i == 207 || i == 209 || i == 215 || i == 256 || i == 300 || i == 305)
{
if (global.item[i] == 1)
stankCount++
}
}
if (stankCount != global.stanks)
{
global.stanks = stankCount
if (global.difficulty < 2)
global.maxsmissiles = (2 * global.stanks)
if (global.difficulty == 2)
global.maxsmissiles = (1 * global.stanks)
global.smissiles = global.maxsmissiles
}
ptankCount = 0
for (i = 0; i < array_length_1d(global.item); i++)
{
if (i == 58 || i == 59 || i == 112 || i == 160 || i == 212 || i == 213 || i == 253 || i == 258 || i == 301 || i == 302)
{
if (global.item[i] == 1)
ptankCount++
}
}
if (ptankCount != global.ptanks)
{
global.ptanks = ptankCount
if (global.difficulty < 2)
global.maxpbombs = (2 * global.ptanks)
if (global.difficulty == 2)
global.maxpbombs = (1 * global.ptanks)
global.pbombs = global.maxpbombs
}
mtankCount = 0
for (i = 0; i < array_length_1d(global.item); i++)
{
if (i == 52 || i == 53 || i == 54 || i == 55 || i == 56 || i == 57 || i == 60 || i == 100 || i == 101 || i == 102 || i == 104 || i == 105 || i == 106 || i == 107 || i == 109 || i == 111 || i == 150 || i == 151 || i == 152 || i == 153 || i == 154 || i == 155 || i == 156 || i == 159 || i == 161 || i == 163 || i == 202 || i == 203 || i == 204 || i == 205 || i == 208 || i == 210 || i == 211 || i == 214 || i == 250 || i == 252 || i == 255 || i == 257 || i == 259 || i == 303 || i == 304 || i == 307 || i == 308 || i == 309)
{
if (global.item[i] == 1)
mtankCount++
}
}
if (mtankCount != global.mtanks)
{
global.mtanks = mtankCount
if (global.difficulty < 2)
global.maxmissiles = (oControl.mod_Mstartingcount + (5 * global.mtanks))
if (global.difficulty == 2)
global.maxmissiles = (oControl.mod_Mstartingcount + (2 * global.mtanks))
global.missiles = global.maxmissiles
}
if resend
{
size = 1024
type = buffer_grow
alignment = 1
itemBuffer = buffer_create(size, type, alignment)
buffer_seek(itemBuffer, buffer_seek_start, 0)
buffer_write(itemBuffer, buffer_u8, 50)
for (i = 0; i < array_length_1d(global.item); i++)
buffer_write(itemBuffer, buffer_u8, global.item[i])
bufferSize = buffer_tell(itemBuffer)
buffer_seek(itemBuffer, buffer_seek_start, 0)
buffer_write(itemBuffer, buffer_s32, bufferSize)
buffer_write(itemBuffer, buffer_u8, 50)
for (i = 0; i < array_length_1d(global.item); i++)
buffer_write(itemBuffer, buffer_u8, global.item[i])
network_send_packet(socket, itemBuffer, buffer_tell(itemBuffer))
buffer_delete(itemBuffer)
}
break
case 51:
resend = 0
for (i = 0; i < array_length_1d(global.event); i++)
{
if (i < 350)
{
receivedEvent = buffer_read(_buffer, buffer_u8)
if (floor(receivedEvent) > floor(global.event[i]) && i != 102)
{
global.event[i] = receivedEvent
global.eventPrev[i] = global.event[i]
if (i == 308)
{
if (receivedEvent == 1)
{
if instance_exists(oCharacter)
{
with (oCharacter)
{
facing = 0
if (global.currentsuit == 0)
sprite_index = scr_suit_sprites(822, sFront_fusion)
if (global.currentsuit == 1)
sprite_index = scr_suit_sprites(1029, sFront_fusion)
if (global.currentsuit == 2)
sprite_index = scr_suit_sprites(848, sFront_fusion)
global.enablecontrol = 0
canbehit = 0
oControl.displaygui = 0
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
}
}
popup_text_ext("Ship reached", 120)
}
if (receivedEvent == 2)
{
oControl.displaygui = 0
global.enablecontrol = 0
if instance_exists(oCharacter)
{
with (oCharacter)
{
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
}
}
}
if (receivedEvent == 3)
{
instance_create(0, 0, oFinalFadeout)
mus_fadeout(musHatchling)
global.enablecontrol = 0
if instance_exists(oCharacter)
{
with (oCharacter)
{
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
}
}
}
if (receivedEvent == 4)
{
if instance_exists(oCharacter)
{
with (oCharacter)
{
xVel = 0
yVel = 0
xAcc = 0
yAcc = 0
canbehit = 1
}
}
remove_persistent_objects()
sfx_stop_all()
global.vibL = 0
global.vibR = 0
global.ingame = 0
global.darkness = 0
global.gotolog = -1
global.enablecontrol = 1
global.transitiontype = 0
oControl.displaygui = 1
room_goto(rm_credits)
mus_stop_all()
mus_play_once(musCredits)
}
}
}
else if (floor(receivedEvent) < floor(global.event[i]) && i != 102)
resend = 1
}
}
if resend
{
size = 1024
type = buffer_grow
alignment = 1
eventBuffer = buffer_create(size, type, alignment)
buffer_seek(eventBuffer, buffer_seek_start, 0)
buffer_write(eventBuffer, buffer_u8, 51)
for (i = 0; i < array_length_1d(global.event); i++)
buffer_write(eventBuffer, buffer_u8, global.event[i])
bufferSize = buffer_tell(eventBuffer)
buffer_seek(eventBuffer, buffer_seek_start, 0)
buffer_write(eventBuffer, buffer_s32, bufferSize)
buffer_write(eventBuffer, buffer_u8, 51)
for (i = 0; i < array_length_1d(global.event); i++)
buffer_write(eventBuffer, buffer_u8, global.event[i])
network_send_packet(socket, eventBuffer, buffer_tell(eventBuffer))
buffer_delete(eventBuffer)
}
break
case 52:
resend = 0
for (i = 0; i < array_length_1d(global.metdead); i++)
{
receivedMetdead = buffer_read(_buffer, buffer_u8)
if (receivedMetdead == 1 && global.metdead[i] == 0)
{
global.metdead[i] = receivedMetdead
global.metdeadPrev[i] = global.metdead[i]
}
else if (receivedMetdead == 0 && global.metdead[i] == 1)
resend = 1
}
if (global.gamemode == 1)
{
countArea = 0
countLeft = 0
for (i = 0; i < array_length_1d(global.metdead); i++)
{
if (i <= 45)
{
if (global.metdead[i] == 0)
countLeft++
if (global.lavastate >= 0 && global.metdead[i] == 0 && i == 0)
countArea++
if (global.lavastate >= 1 && global.metdead[i] == 0 && (i == 1 || i == 2 || i == 3 || i == 4))
countArea++
if (global.lavastate >= 2 && global.metdead[i] == 0 && (i == 5 || i == 6 || i == 7 || i == 8 || i == 9 || i == 10 || i == 11 || i == 12))
countArea++
if (global.lavastate >= 3 && global.metdead[i] == 0 && (i == 13 || i == 14 || i == 15 || i == 16 || i == 17 || i == 18 || i == 19 || i == 20 || i == 21 || i == 22))
countArea++
if (global.lavastate >= 4 && global.metdead[i] == 0 && (i == 23 || i == 24))
countArea++
if (global.lavastate >= 5 && global.metdead[i] == 0 && (i == 25 || i == 26))
countArea++
if (global.lavastate >= 6 && global.metdead[i] == 0 && (i == 27 || i == 28 || i == 29 || i == 30 || i == 31 || i == 32))
countArea++
if (global.lavastate >= 7 && global.metdead[i] == 0 && (i == 33 || i == 34 || i == 35 || i == 36 || i == 37 || i == 38 || i == 39 || i == 40))
countArea++
if (global.lavastate >= 8 && global.metdead[i] == 0 && i == 41)
countArea++
if (global.lavastate >= 9 && global.metdead[i] == 0 && i == 42)
countArea++
if (global.lavastate >= 10 && global.metdead[i] == 0 && (i == 43 || i == 44 || i == 45))
countArea++
}
}
if (global.lavastate < 11)
{
if (global.event[303] == 0)
countLeft++
if (global.monstersleft != countLeft)
global.monstersleft = countLeft
if (global.monstersarea != countArea)
global.monstersarea = countArea
}
}
else if (global.gamemode > 1)
{
countArea = 0
countLeft = 0
for (i = 0; i < array_length_1d(global.metdead); i++)
{
if (i <= 45)
{
if (global.metdead[i] == 0)
countLeft++
if (global.metdead[i] == 0 && i != 11 && i != 23 && i != 24 && i != 41 && i != 42 && i != 43 && i != 44 && i != 45)
countArea++
if (global.metdead[i] == 0 && global.event[109] == 1 && i == 11)
countArea++
if (global.metdead[i] == 0 && global.event[171] == 1 && (i == 23 || i == 24))
countArea++
if (global.lavastate >= 8 && global.metdead[i] == 0 && i == 41)
countArea++
if (global.lavastate >= 9 && global.metdead[i] == 0 && i == 42)
countArea++
if (global.lavastate >= 10 && global.metdead[i] == 0 && (i == 43 || i == 44 || i == 45))
countArea++
}
}
if (global.lavastate < 11)
{
if (global.event[303] == 0)
countLeft++
if (global.monstersleft != countLeft)
global.monstersleft = countLeft
if (global.monstersarea != countArea)
global.monstersarea = countArea
}
}
if resend
{
size = 1024
type = buffer_grow
alignment = 1
metdeadBuffer = buffer_create(size, type, alignment)
buffer_seek(metdeadBuffer, buffer_seek_start, 0)
buffer_write(metdeadBuffer, buffer_u8, 52)
for (i = 0; i < array_length_1d(global.metdead); i++)
buffer_write(metdeadBuffer, buffer_u8, global.metdead[i])
bufferSize = buffer_tell(metdeadBuffer)
buffer_seek(metdeadBuffer, buffer_seek_start, 0)
buffer_write(metdeadBuffer, buffer_s32, bufferSize)
buffer_write(metdeadBuffer, buffer_u8, 52)
for (i = 0; i < array_length_1d(global.metdead); i++)
buffer_write(metdeadBuffer, buffer_u8, global.metdead[i])
network_send_packet(socket, metdeadBuffer, buffer_tell(metdeadBuffer))
buffer_delete(metdeadBuffer)
}
break
case 53:
part = buffer_read(_buffer, buffer_u8)
resend = 0
for (i = 0; i < array_height_2d(global.dmap); i++)
{
for (j = 0; j < array_length_2d(global.dmap, i); j++)
{
if ((part == 1 && i < 20) || (part == 2 && i >= 20 && i < 40) || (part == 3 && i >= 40 && i < 60) || (part == 4 && i >= 60 && i < 80))
{
receiveddmap = buffer_read(_buffer, buffer_u8)
if (receiveddmap > global.dmap[i, j])
{
global.dmap[i, j] = receiveddmap
global.dmapPrev[i, j] = global.dmap[i, j]
}
else if (receiveddmap < global.dmap[i, j])
resend = 1
}
}
}
if resend
{
size = 1024
type = buffer_grow
alignment = 1
dmapBuffer = buffer_create(size, type, alignment)
buffer_seek(dmapBuffer, buffer_seek_start, 0)
buffer_write(dmapBuffer, buffer_u8, 53)
for (i = 0; i < array_height_2d(global.dmap); i++)
{
for (j = 0; j < array_length_2d(global.dmap, i); j++)
buffer_write(dmapBuffer, buffer_u8, global.dmap[i, j])
}
bufferSize = buffer_tell(dmapBuffer)
buffer_seek(dmapBuffer, buffer_seek_start, 0)
buffer_write(dmapBuffer, buffer_s32, bufferSize)
buffer_write(dmapBuffer, buffer_u8, 53)
for (i = 0; i < array_height_2d(global.dmap); i++)
{
for (j = 0; j < array_length_2d(global.dmap, i); j++)
buffer_write(dmapBuffer, buffer_u8, global.dmap[i, j])
}
network_send_packet(socket, dmapBuffer, buffer_tell(dmapBuffer))
buffer_delete(dmapBuffer)
}
if global.ingame
{
with (oControl)
event_user(2)
}
if (instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map))
surface_free(oSS_Control.s_map)
break
}
}