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.
2112 lines
110 KiB
2112 lines
110 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;
|
|
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
|
|
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)
|
|
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.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)
|
|
if (room == sentRoom && (!sax))
|
|
{
|
|
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
|
|
}
|
|
}
|
|
|