This commit is contained in:
Christoph Oelckers 2016-01-28 09:20:55 +01:00
commit 1a4b3bbe11
6 changed files with 29 additions and 3 deletions

View file

@ -2668,6 +2668,11 @@ void Net_DoCommand (int type, BYTE **stream, int player)
players[player].camera = players[player].mo; players[player].camera = players[player].mo;
break; break;
case DEM_FINISHGAME:
// Simulate an end-of-game action
G_ChangeLevel(NULL, 0, 0);
break;
default: default:
I_Error ("Unknown net command: %d", type); I_Error ("Unknown net command: %d", type);
break; break;

View file

@ -165,6 +165,7 @@ enum EDemoCommand
DEM_REVERTCAMERA, // 66 DEM_REVERTCAMERA, // 66
DEM_SETSLOTPNUM, // 67 Byte: player number, the rest is the same as DEM_SETSLOT DEM_SETSLOTPNUM, // 67 Byte: player number, the rest is the same as DEM_SETSLOT
DEM_REMOVE, // 68 DEM_REMOVE, // 68
DEM_FINISHGAME, // 69
}; };
// The following are implemented by cht_DoCheat in m_cheat.cpp // The following are implemented by cht_DoCheat in m_cheat.cpp

View file

@ -138,6 +138,17 @@ void AFastProjectile::Tick ()
} }
} }
} }
if ((flags7 & MF7_HANDLENODELAY) && !(flags2 & MF2_DORMANT))
{
flags7 &= ~MF7_HANDLENODELAY;
if (state->GetNoDelay())
{
// For immediately spawned objects with the NoDelay flag set for their
// Spawn state, explicitly call the current state's function.
if (state->CallAction(this, this) && (ObjectFlags & OF_EuthanizeMe))
return; // freed itself
}
}
// Advance the state // Advance the state
if (tics != -1) if (tics != -1)
{ {

View file

@ -945,6 +945,14 @@ public:
{ {
return mMaxValid >= 0; return mMaxValid >= 0;
} }
void Ticker()
{
if (Selectable() && mSelection > mMaxValid)
{
mSelection = mMaxValid;
}
}
}; };

View file

@ -46,6 +46,7 @@
#include "c_console.h" #include "c_console.h"
#include "d_gui.h" #include "d_gui.h"
#include "d_dehacked.h" #include "d_dehacked.h"
#include "d_net.h"
#include "g_game.h" #include "g_game.h"
#include "m_png.h" #include "m_png.h"
#include "m_misc.h" #include "m_misc.h"
@ -604,7 +605,7 @@ CCMD(printstats)
CCMD(finishgame) CCMD(finishgame)
{ {
// This CCMD simulates an end-of-game action and exists to end mods that never exit their last level. // This CCMD simulates an end-of-game action and exists to end mods that never exit their last level.
G_ChangeLevel(NULL, 0, 0); Net_WriteByte(DEM_FINISHGAME);
} }
ADD_STAT(statistics) ADD_STAT(statistics)

View file

@ -61,7 +61,7 @@ const char *GetVersionString();
// Protocol version used in demos. // Protocol version used in demos.
// Bump it if you change existing DEM_ commands or add new ones. // Bump it if you change existing DEM_ commands or add new ones.
// Otherwise, it should be safe to leave it alone. // Otherwise, it should be safe to leave it alone.
#define DEMOGAMEVERSION 0x21C #define DEMOGAMEVERSION 0x21D
// Minimum demo version we can play. // Minimum demo version we can play.
// Bump it whenever you change or remove existing DEM_ commands. // Bump it whenever you change or remove existing DEM_ commands.