diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index 57e51369af7a7d2f7f701b6a3e3bd79b8a39fcc3..17942e24e65b63be12b38c02f369ee7a0d9f0e6d 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
begin
if Pl.FSpectator then
begin
- if (gGameSettings.MaxLives = 0) or (gLMSRespawn = LMS_RESPAWN_WARMUP) then
+ if (gGameSettings.MaxLives = 0) or (gLMSRespawn > LMS_RESPAWN_NONE) then
Pl.Respawn(False)
else
MH_SEND_GameEvent(NET_EV_LMS_NOSPAWN, Pl.UID);
if IsKeyPressed(KEY_UP) then kByte := kByte or NET_KEY_UP;
if IsKeyPressed(KEY_DOWN) then kByte := kByte or NET_KEY_DOWN;
if IsKeyPressed(KEY_JUMP) then kByte := kByte or NET_KEY_JUMP;
- if JustTeleported then kByte := kByte or NET_KEY_FORCEDIR;
end;
+ if JustTeleported then kByte := kByte or NET_KEY_FORCEDIR;
+
NetOut.Write(kByte);
if Direction = TDirection.D_LEFT then NetOut.Write(Byte(0)) else NetOut.Write(Byte(1));
NetOut.Write(GameX);
ReleaseKeys;
- if (kByte = NET_KEY_CHAT) then
+ if LongBool(kByte and NET_KEY_CHAT) then
PressKey(KEY_CHAT, 10000)
else
begin
if LongBool(kByte and NET_KEY_JUMP) then PressKey(KEY_JUMP, 10000);
end;
- if ((Pl <> gPlayer1) and (Pl <> gPlayer2)) or LongBool(kByte and NET_KEY_FORCEDIR) then
+ JustTeleported := LongBool(kByte and NET_KEY_FORCEDIR);
+
+ if ((Pl <> gPlayer1) and (Pl <> gPlayer2)) or JustTeleported then
SetDirection(TDirection(Dir));
GameVelX := M.ReadLongInt();
FSpectator := M.ReadByte() <> 0;
if FSpectator then
begin
- if PID = NetPlrUID1 then
+ if UID = NetPlrUID1 then
begin
gSpectLatchPID1 := UID;
gPlayer1 := nil;
end;
- if PID = NetPlrUID2 then
+ if UID = NetPlrUID2 then
begin
gSpectLatchPID2 := UID;
gPlayer2 := nil;