mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-24 18:21:34 +00:00
Merge branch 'next' into 2214
This commit is contained in:
commit
7dadac6cbc
7 changed files with 42 additions and 71 deletions
|
@ -2624,6 +2624,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
||||||
boolean spectator;
|
boolean spectator;
|
||||||
boolean outofcoop;
|
boolean outofcoop;
|
||||||
boolean removing;
|
boolean removing;
|
||||||
|
boolean muted;
|
||||||
INT16 bot;
|
INT16 bot;
|
||||||
SINT8 pity;
|
SINT8 pity;
|
||||||
INT16 rings;
|
INT16 rings;
|
||||||
|
@ -2641,6 +2642,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
||||||
spectator = players[player].spectator;
|
spectator = players[player].spectator;
|
||||||
outofcoop = players[player].outofcoop;
|
outofcoop = players[player].outofcoop;
|
||||||
removing = players[player].removing;
|
removing = players[player].removing;
|
||||||
|
muted = players[player].muted;
|
||||||
pflags = (players[player].pflags & (PF_FLIPCAM|PF_ANALOGMODE|PF_DIRECTIONCHAR|PF_AUTOBRAKE|PF_TAGIT|PF_GAMETYPEOVER));
|
pflags = (players[player].pflags & (PF_FLIPCAM|PF_ANALOGMODE|PF_DIRECTIONCHAR|PF_AUTOBRAKE|PF_TAGIT|PF_GAMETYPEOVER));
|
||||||
playerangleturn = players[player].angleturn;
|
playerangleturn = players[player].angleturn;
|
||||||
oldrelangleturn = players[player].oldrelangleturn;
|
oldrelangleturn = players[player].oldrelangleturn;
|
||||||
|
@ -2718,6 +2720,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
||||||
p->spectator = spectator;
|
p->spectator = spectator;
|
||||||
p->outofcoop = outofcoop;
|
p->outofcoop = outofcoop;
|
||||||
p->removing = removing;
|
p->removing = removing;
|
||||||
|
p->muted = muted;
|
||||||
p->angleturn = playerangleturn;
|
p->angleturn = playerangleturn;
|
||||||
p->oldrelangleturn = oldrelangleturn;
|
p->oldrelangleturn = oldrelangleturn;
|
||||||
|
|
||||||
|
|
|
@ -62,9 +62,6 @@ static doomdata_t reboundstore[MAXREBOUND];
|
||||||
static INT16 reboundsize[MAXREBOUND];
|
static INT16 reboundsize[MAXREBOUND];
|
||||||
static INT32 rebound_head, rebound_tail;
|
static INT32 rebound_head, rebound_tail;
|
||||||
|
|
||||||
/// \brief bandwith of netgame
|
|
||||||
INT32 net_bandwidth;
|
|
||||||
|
|
||||||
/// \brief max length per packet
|
/// \brief max length per packet
|
||||||
INT16 hardware_MAXPACKETLENGTH;
|
INT16 hardware_MAXPACKETLENGTH;
|
||||||
|
|
||||||
|
@ -1189,10 +1186,7 @@ void D_SetDoomcom(void)
|
||||||
{
|
{
|
||||||
if (doomcom) return;
|
if (doomcom) return;
|
||||||
doomcom = Z_Calloc(sizeof (doomcom_t), PU_STATIC, NULL);
|
doomcom = Z_Calloc(sizeof (doomcom_t), PU_STATIC, NULL);
|
||||||
doomcom->id = DOOMCOM_ID;
|
|
||||||
doomcom->numslots = doomcom->numnodes = 1;
|
doomcom->numslots = doomcom->numnodes = 1;
|
||||||
doomcom->gametype = 0;
|
|
||||||
doomcom->consoleplayer = 0;
|
|
||||||
doomcom->extratics = 0;
|
doomcom->extratics = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1217,7 +1211,6 @@ boolean D_CheckNetGame(void)
|
||||||
I_NetMakeNodewPort = NULL;
|
I_NetMakeNodewPort = NULL;
|
||||||
|
|
||||||
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
|
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
|
||||||
net_bandwidth = 30000;
|
|
||||||
// I_InitNetwork sets doomcom and netgame
|
// I_InitNetwork sets doomcom and netgame
|
||||||
// check and initialize the network driver
|
// check and initialize the network driver
|
||||||
multiplayer = false;
|
multiplayer = false;
|
||||||
|
@ -1237,7 +1230,6 @@ boolean D_CheckNetGame(void)
|
||||||
server = true; // WTF? server always true???
|
server = true; // WTF? server always true???
|
||||||
// no! The deault mode is server. Client is set elsewhere
|
// no! The deault mode is server. Client is set elsewhere
|
||||||
// when the client executes connect command.
|
// when the client executes connect command.
|
||||||
doomcom->ticdup = 1;
|
|
||||||
|
|
||||||
if (M_CheckParm("-extratic"))
|
if (M_CheckParm("-extratic"))
|
||||||
{
|
{
|
||||||
|
@ -1248,21 +1240,6 @@ boolean D_CheckNetGame(void)
|
||||||
CONS_Printf(M_GetText("Set extratics to %d\n"), doomcom->extratics);
|
CONS_Printf(M_GetText("Set extratics to %d\n"), doomcom->extratics);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (M_CheckParm("-bandwidth"))
|
|
||||||
{
|
|
||||||
if (M_IsNextParm())
|
|
||||||
{
|
|
||||||
net_bandwidth = atoi(M_GetNextParm());
|
|
||||||
if (net_bandwidth < 1000)
|
|
||||||
net_bandwidth = 1000;
|
|
||||||
if (net_bandwidth > 100000)
|
|
||||||
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
|
|
||||||
CONS_Printf(M_GetText("Network bandwidth set to %d\n"), net_bandwidth);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
I_Error("usage: -bandwidth <byte_per_sec>");
|
|
||||||
}
|
|
||||||
|
|
||||||
software_MAXPACKETLENGTH = hardware_MAXPACKETLENGTH;
|
software_MAXPACKETLENGTH = hardware_MAXPACKETLENGTH;
|
||||||
if (M_CheckParm("-packetsize"))
|
if (M_CheckParm("-packetsize"))
|
||||||
{
|
{
|
||||||
|
@ -1282,8 +1259,6 @@ boolean D_CheckNetGame(void)
|
||||||
if (netgame)
|
if (netgame)
|
||||||
multiplayer = true;
|
multiplayer = true;
|
||||||
|
|
||||||
if (doomcom->id != DOOMCOM_ID)
|
|
||||||
I_Error("Doomcom buffer invalid!");
|
|
||||||
if (doomcom->numnodes > MAXNETNODES)
|
if (doomcom->numnodes > MAXNETNODES)
|
||||||
I_Error("Too many nodes (%d), max:%d", doomcom->numnodes, MAXNETNODES);
|
I_Error("Too many nodes (%d), max:%d", doomcom->numnodes, MAXNETNODES);
|
||||||
|
|
||||||
|
@ -1293,7 +1268,7 @@ boolean D_CheckNetGame(void)
|
||||||
if (M_CheckParm("-debugfile"))
|
if (M_CheckParm("-debugfile"))
|
||||||
{
|
{
|
||||||
char filename[21];
|
char filename[21];
|
||||||
INT32 k = doomcom->consoleplayer - 1;
|
INT32 k = consoleplayer - 1;
|
||||||
if (M_IsNextParm())
|
if (M_IsNextParm())
|
||||||
k = atoi(M_GetNextParm()) - 1;
|
k = atoi(M_GetNextParm()) - 1;
|
||||||
while (!debugfile && k < MAXPLAYERS)
|
while (!debugfile && k < MAXPLAYERS)
|
||||||
|
|
|
@ -1033,7 +1033,6 @@ void FileSendTicker(void)
|
||||||
|
|
||||||
netbuffer->packettype = PT_FILEFRAGMENT;
|
netbuffer->packettype = PT_FILEFRAGMENT;
|
||||||
|
|
||||||
// (((sendbytes-nowsentbyte)*TICRATE)/(I_GetTime()-starttime)<(UINT32)net_bandwidth)
|
|
||||||
while (packetsent-- && filestosend != 0)
|
while (packetsent-- && filestosend != 0)
|
||||||
{
|
{
|
||||||
for (i = currentnode, j = 0; j < MAXNETNODES;
|
for (i = currentnode, j = 0; j < MAXNETNODES;
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
#define INETPACKETLENGTH 1024
|
#define INETPACKETLENGTH 1024
|
||||||
|
|
||||||
extern INT16 hardware_MAXPACKETLENGTH;
|
extern INT16 hardware_MAXPACKETLENGTH;
|
||||||
extern INT32 net_bandwidth; // in byte/s
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
@ -40,36 +39,17 @@ extern INT32 net_bandwidth; // in byte/s
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
/// Supposed to be DOOMCOM_ID
|
|
||||||
INT32 id;
|
|
||||||
|
|
||||||
/// SRB2 executes an INT32 to execute commands.
|
|
||||||
INT16 intnum;
|
|
||||||
/// Communication between SRB2 and the driver.
|
|
||||||
/// Is CMD_SEND or CMD_GET.
|
|
||||||
INT16 command;
|
|
||||||
/// Is dest for send, set by get (-1 = no packet).
|
/// Is dest for send, set by get (-1 = no packet).
|
||||||
INT16 remotenode;
|
INT16 remotenode;
|
||||||
|
|
||||||
/// Number of bytes in doomdata to be sent
|
/// Number of bytes in doomdata to be sent
|
||||||
INT16 datalength;
|
INT16 datalength;
|
||||||
|
|
||||||
/// Info common to all nodes.
|
/// Info common to all nodes.
|
||||||
/// Console is always node 0.
|
/// Console is always node 0.
|
||||||
INT16 numnodes;
|
INT16 numnodes;
|
||||||
/// Flag: 1 = no duplication, 2-5 = dup for slow nets.
|
|
||||||
INT16 ticdup;
|
|
||||||
/// Flag: 1 = send a backup tic in every packet.
|
/// Flag: 1 = send a backup tic in every packet.
|
||||||
INT16 extratics;
|
INT16 extratics;
|
||||||
/// kind of game
|
|
||||||
INT16 gametype;
|
|
||||||
/// Flag: -1 = new game, 0-5 = load savegame
|
|
||||||
INT16 savegame;
|
|
||||||
/// currect map
|
|
||||||
INT16 map;
|
|
||||||
|
|
||||||
/// Info specific to this node.
|
|
||||||
INT16 consoleplayer;
|
|
||||||
/// Number of "slots": the highest player number in use plus one.
|
/// Number of "slots": the highest player number in use plus one.
|
||||||
INT16 numslots;
|
INT16 numslots;
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../doomdef.h"
|
#include "../doomdef.h"
|
||||||
|
#include "../z_zone.h"
|
||||||
|
|
||||||
#ifdef USE_WINSOCK1
|
#ifdef USE_WINSOCK1
|
||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
|
@ -87,6 +88,10 @@
|
||||||
#undef EHOSTUNREACH
|
#undef EHOSTUNREACH
|
||||||
#endif
|
#endif
|
||||||
#define EHOSTUNREACH WSAEHOSTUNREACH
|
#define EHOSTUNREACH WSAEHOSTUNREACH
|
||||||
|
#ifdef ENETUNREACH
|
||||||
|
#undef ENETUNREACH
|
||||||
|
#endif
|
||||||
|
#define ENETUNREACH WSAENETUNREACH
|
||||||
#ifndef IOC_VENDOR
|
#ifndef IOC_VENDOR
|
||||||
#define IOC_VENDOR 0x18000000
|
#define IOC_VENDOR 0x18000000
|
||||||
#endif
|
#endif
|
||||||
|
@ -120,8 +125,6 @@ typedef union
|
||||||
static boolean UPNP_support = true;
|
static boolean UPNP_support = true;
|
||||||
#endif // HAVE_MINIUPNC
|
#endif // HAVE_MINIUPNC
|
||||||
|
|
||||||
#define MAXBANS 100
|
|
||||||
|
|
||||||
#include "../i_system.h"
|
#include "../i_system.h"
|
||||||
#include "i_net.h"
|
#include "i_net.h"
|
||||||
#include "d_net.h"
|
#include "d_net.h"
|
||||||
|
@ -169,8 +172,8 @@ static mysockaddr_t clientaddress[MAXNETNODES+1];
|
||||||
static mysockaddr_t broadcastaddress[MAXNETNODES+1];
|
static mysockaddr_t broadcastaddress[MAXNETNODES+1];
|
||||||
static size_t broadcastaddresses = 0;
|
static size_t broadcastaddresses = 0;
|
||||||
static boolean nodeconnected[MAXNETNODES+1];
|
static boolean nodeconnected[MAXNETNODES+1];
|
||||||
static mysockaddr_t banned[MAXBANS];
|
static mysockaddr_t *banned;
|
||||||
static UINT8 bannedmask[MAXBANS];
|
static UINT8 *bannedmask;
|
||||||
|
|
||||||
static size_t numbans = 0;
|
static size_t numbans = 0;
|
||||||
static boolean SOCK_bannednode[MAXNETNODES+1]; /// \note do we really need the +1?
|
static boolean SOCK_bannednode[MAXNETNODES+1]; /// \note do we really need the +1?
|
||||||
|
@ -685,7 +688,6 @@ static inline ssize_t SOCK_SendToAddr(SOCKET_TYPE socket, mysockaddr_t *sockaddr
|
||||||
socklen_t d6 = (socklen_t)sizeof(struct sockaddr_in6);
|
socklen_t d6 = (socklen_t)sizeof(struct sockaddr_in6);
|
||||||
#endif
|
#endif
|
||||||
socklen_t d, da = (socklen_t)sizeof(mysockaddr_t);
|
socklen_t d, da = (socklen_t)sizeof(mysockaddr_t);
|
||||||
ssize_t status;
|
|
||||||
|
|
||||||
switch (sockaddr->any.sa_family)
|
switch (sockaddr->any.sa_family)
|
||||||
{
|
{
|
||||||
|
@ -696,14 +698,11 @@ static inline ssize_t SOCK_SendToAddr(SOCKET_TYPE socket, mysockaddr_t *sockaddr
|
||||||
default: d = da; break;
|
default: d = da; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = sendto(socket, (char *)&doomcom->data, doomcom->datalength, 0, &sockaddr->any, d);
|
return sendto(socket, (char *)&doomcom->data, doomcom->datalength, 0, &sockaddr->any, d);
|
||||||
if (status == -1)
|
|
||||||
{
|
|
||||||
CONS_Alert(CONS_WARNING, "Unable to send packet to %s: %s\n", SOCK_AddrToStr(sockaddr), strerror(errno));
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define ALLOWEDERROR(x) ((x) == ECONNREFUSED || (x) == EWOULDBLOCK || (x) == EHOSTUNREACH || (x) == ENETUNREACH)
|
||||||
|
|
||||||
static void SOCK_Send(void)
|
static void SOCK_Send(void)
|
||||||
{
|
{
|
||||||
ssize_t c = ERRSOCKET;
|
ssize_t c = ERRSOCKET;
|
||||||
|
@ -718,19 +717,25 @@ static void SOCK_Send(void)
|
||||||
for (size_t j = 0; j < broadcastaddresses; j++)
|
for (size_t j = 0; j < broadcastaddresses; j++)
|
||||||
{
|
{
|
||||||
if (myfamily[i] == broadcastaddress[j].any.sa_family)
|
if (myfamily[i] == broadcastaddress[j].any.sa_family)
|
||||||
SOCK_SendToAddr(mysockets[i], &broadcastaddress[j]);
|
{
|
||||||
|
c = SOCK_SendToAddr(mysockets[i], &broadcastaddress[j]);
|
||||||
|
if (c == ERRSOCKET && !ALLOWEDERROR(errno))
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (nodesocket[doomcom->remotenode] == (SOCKET_TYPE)ERRSOCKET)
|
else if (nodesocket[doomcom->remotenode] == (SOCKET_TYPE)ERRSOCKET)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < mysocketses; i++)
|
for (size_t i = 0; i < mysocketses; i++)
|
||||||
{
|
{
|
||||||
if (myfamily[i] == clientaddress[doomcom->remotenode].any.sa_family)
|
if (myfamily[i] == clientaddress[doomcom->remotenode].any.sa_family)
|
||||||
SOCK_SendToAddr(mysockets[i], &clientaddress[doomcom->remotenode]);
|
{
|
||||||
|
c = SOCK_SendToAddr(mysockets[i], &clientaddress[doomcom->remotenode]);
|
||||||
|
if (c == ERRSOCKET && !ALLOWEDERROR(errno))
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -740,12 +745,14 @@ static void SOCK_Send(void)
|
||||||
if (c == ERRSOCKET)
|
if (c == ERRSOCKET)
|
||||||
{
|
{
|
||||||
int e = errno; // save error code so it can't be modified later
|
int e = errno; // save error code so it can't be modified later
|
||||||
if (e != ECONNREFUSED && e != EWOULDBLOCK && e != EHOSTUNREACH)
|
if (!ALLOWEDERROR(e))
|
||||||
I_Error("SOCK_Send, error sending to node %d (%s) #%u: %s", doomcom->remotenode,
|
I_Error("SOCK_Send, error sending to node %d (%s) #%u: %s", doomcom->remotenode,
|
||||||
SOCK_GetNodeAddress(doomcom->remotenode), e, strerror(e));
|
SOCK_GetNodeAddress(doomcom->remotenode), e, strerror(e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef ALLOWEDERROR
|
||||||
|
|
||||||
static void SOCK_FreeNodenum(INT32 numnode)
|
static void SOCK_FreeNodenum(INT32 numnode)
|
||||||
{
|
{
|
||||||
// can't disconnect from self :)
|
// can't disconnect from self :)
|
||||||
|
@ -1253,9 +1260,9 @@ static boolean SOCK_Ban(INT32 node)
|
||||||
{
|
{
|
||||||
if (node > MAXNETNODES)
|
if (node > MAXNETNODES)
|
||||||
return false;
|
return false;
|
||||||
if (numbans == MAXBANS)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
|
banned = Z_Realloc(banned, sizeof(*banned) * (numbans+1), PU_STATIC, NULL);
|
||||||
|
bannedmask = Z_Realloc(bannedmask, sizeof(*bannedmask) * (numbans+1), PU_STATIC, NULL);
|
||||||
M_Memcpy(&banned[numbans], &clientaddress[node], sizeof (mysockaddr_t));
|
M_Memcpy(&banned[numbans], &clientaddress[node], sizeof (mysockaddr_t));
|
||||||
if (banned[numbans].any.sa_family == AF_INET)
|
if (banned[numbans].any.sa_family == AF_INET)
|
||||||
{
|
{
|
||||||
|
@ -1278,7 +1285,7 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask)
|
||||||
struct my_addrinfo *ai, *runp, hints;
|
struct my_addrinfo *ai, *runp, hints;
|
||||||
int gaie;
|
int gaie;
|
||||||
|
|
||||||
if (numbans == MAXBANS || !address)
|
if (!address)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
memset(&hints, 0x00, sizeof(hints));
|
memset(&hints, 0x00, sizeof(hints));
|
||||||
|
@ -1293,8 +1300,10 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask)
|
||||||
|
|
||||||
runp = ai;
|
runp = ai;
|
||||||
|
|
||||||
while(runp != NULL && numbans != MAXBANS)
|
while(runp != NULL)
|
||||||
{
|
{
|
||||||
|
banned = Z_Realloc(banned, sizeof(*banned) * (numbans+1), PU_STATIC, NULL);
|
||||||
|
bannedmask = Z_Realloc(bannedmask, sizeof(*bannedmask) * (numbans+1), PU_STATIC, NULL);
|
||||||
memcpy(&banned[numbans], runp->ai_addr, runp->ai_addrlen);
|
memcpy(&banned[numbans], runp->ai_addr, runp->ai_addrlen);
|
||||||
|
|
||||||
if (mask)
|
if (mask)
|
||||||
|
@ -1324,6 +1333,10 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask)
|
||||||
static void SOCK_ClearBans(void)
|
static void SOCK_ClearBans(void)
|
||||||
{
|
{
|
||||||
numbans = 0;
|
numbans = 0;
|
||||||
|
Z_Free(banned);
|
||||||
|
banned = NULL;
|
||||||
|
Z_Free(bannedmask);
|
||||||
|
bannedmask = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean I_InitTcpNetwork(void)
|
boolean I_InitTcpNetwork(void)
|
||||||
|
@ -1378,7 +1391,6 @@ boolean I_InitTcpNetwork(void)
|
||||||
// FIXME:
|
// FIXME:
|
||||||
// ??? and now ?
|
// ??? and now ?
|
||||||
// server on a big modem ??? 4*isdn
|
// server on a big modem ??? 4*isdn
|
||||||
net_bandwidth = 16000;
|
|
||||||
hardware_MAXPACKETLENGTH = INETPACKETLENGTH;
|
hardware_MAXPACKETLENGTH = INETPACKETLENGTH;
|
||||||
|
|
||||||
ret = true;
|
ret = true;
|
||||||
|
@ -1407,7 +1419,6 @@ boolean I_InitTcpNetwork(void)
|
||||||
// so we're on a LAN
|
// so we're on a LAN
|
||||||
COM_BufAddText("connect any\n");
|
COM_BufAddText("connect any\n");
|
||||||
|
|
||||||
net_bandwidth = 800000;
|
|
||||||
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
|
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1465,13 +1465,13 @@ static unsigned PIT_DoCheckThing(mobj_t *thing)
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for special pickup
|
// check for special pickup
|
||||||
if (thing->flags & MF_SPECIAL)
|
if (thing->flags & MF_SPECIAL && (tmthing->player || (tmthing->flags & MF_PUSHABLE))) // MF_PUSHABLE added for steam jets
|
||||||
{
|
{
|
||||||
P_TouchSpecialThing(thing, tmthing, true); // can remove thing
|
P_TouchSpecialThing(thing, tmthing, true); // can remove thing
|
||||||
return CHECKTHING_COLLIDE;
|
return CHECKTHING_COLLIDE;
|
||||||
}
|
}
|
||||||
// check again for special pickup
|
// check again for special pickup
|
||||||
if (tmthing->flags & MF_SPECIAL)
|
if (tmthing->flags & MF_SPECIAL && (thing->player || (thing->flags & MF_PUSHABLE))) // MF_PUSHABLE added for steam jets
|
||||||
{
|
{
|
||||||
P_TouchSpecialThing(tmthing, thing, true); // can remove thing
|
P_TouchSpecialThing(tmthing, thing, true); // can remove thing
|
||||||
return CHECKTHING_COLLIDE;
|
return CHECKTHING_COLLIDE;
|
||||||
|
|
|
@ -1042,6 +1042,9 @@ static void ST_drawInput(void)
|
||||||
|
|
||||||
INT32 x = hudinfo[HUD_INPUT].x, y = hudinfo[HUD_INPUT].y;
|
INT32 x = hudinfo[HUD_INPUT].x, y = hudinfo[HUD_INPUT].y;
|
||||||
|
|
||||||
|
if (hu_showscores)
|
||||||
|
return;
|
||||||
|
|
||||||
if (stplyr->powers[pw_carry] == CR_NIGHTSMODE)
|
if (stplyr->powers[pw_carry] == CR_NIGHTSMODE)
|
||||||
y += 8;
|
y += 8;
|
||||||
else if (modeattacking || !LUA_HudEnabled(hud_lives))
|
else if (modeattacking || !LUA_HudEnabled(hud_lives))
|
||||||
|
|
Loading…
Reference in a new issue