This commit is contained in:
Christoph Oelckers 2013-09-18 09:40:48 +02:00
commit 8ef130c376
5 changed files with 21 additions and 15 deletions

View file

@ -334,11 +334,12 @@ enum
MF6_NOTONAUTOMAP = 0x40000000, // will not be shown on automap with the 'scanner' powerup. MF6_NOTONAUTOMAP = 0x40000000, // will not be shown on automap with the 'scanner' powerup.
MF6_RELATIVETOFLOOR = 0x80000000, // [RC] Make flying actors be affected by lifts. MF6_RELATIVETOFLOOR = 0x80000000, // [RC] Make flying actors be affected by lifts.
// --- mobj.flags6 --- // --- mobj.flags7 ---
MF7_NEVERTARGET = 0x00000001, // can not be targetted at all, even if monster friendliness is considered. MF7_NEVERTARGET = 0x00000001, // can not be targetted at all, even if monster friendliness is considered.
MF7_NOTELESTOMP = 0x00000002, // cannot telefrag under any circumstances (even when set by MAPINFO) MF7_NOTELESTOMP = 0x00000002, // cannot telefrag under any circumstances (even when set by MAPINFO)
MF7_ALWAYSTELEFRAG = 0x00000004, // will unconditionally be telefragged when in the way. Overrides all other settings. MF7_ALWAYSTELEFRAG = 0x00000004, // will unconditionally be telefragged when in the way. Overrides all other settings.
MF7_HANDLENODELAY = 0x00000008, // respect NoDelay state flag
// --- mobj.renderflags --- // --- mobj.renderflags ---

View file

@ -457,7 +457,7 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
node->PostBeginPlay(); node->PostBeginPlay();
} }
else if (dest != NULL) else if (dest != NULL)
{ // Move thinker from this list to the destination list {
I_Error("There is a thinker in the fresh list that has already ticked.\n"); I_Error("There is a thinker in the fresh list that has already ticked.\n");
} }

View file

@ -15,7 +15,7 @@
#if defined(_WIN32) #if defined(_WIN32)
#include "version.h" // for GAMENAME #include "version.h" // for GAMENAME
typedef HRESULT (*GKFP)(REFKNOWNFOLDERID, DWORD, HANDLE, PWSTR *); typedef HRESULT (WINAPI *GKFP)(REFKNOWNFOLDERID, DWORD, HANDLE, PWSTR *);
//=========================================================================== //===========================================================================
// //

View file

@ -3525,7 +3525,10 @@ void AActor::Tick ()
Destroy(); Destroy();
return; return;
} }
if (ObjectFlags & OF_JustSpawned && state->GetNoDelay()) if ((flags7 & MF7_HANDLENODELAY) && !(flags2 & MF2_DORMANT))
{
flags7 &= ~MF7_HANDLENODELAY;
if (state->GetNoDelay())
{ {
// For immediately spawned objects with the NoDelay flag set for their // For immediately spawned objects with the NoDelay flag set for their
// Spawn state, explicitly set the current state so that it calls its // Spawn state, explicitly set the current state so that it calls its
@ -3535,11 +3538,12 @@ void AActor::Tick ()
return; // freed itself return; // freed itself
// If the initial state had a duration of 0 tics, let the next state run // If the initial state had a duration of 0 tics, let the next state run
// normally. Otherwise, increment tics by 1 so that we don't double up ticks. // normally. Otherwise, increment tics by 1 so that we don't double up ticks.
if (starttics > 0 && tics >= 0) else if (starttics > 0 && tics >= 0)
{ {
tics++; tics++;
} }
} }
}
// cycle through states, calling action functions at transitions // cycle through states, calling action functions at transitions
if (tics != -1) if (tics != -1)
{ {
@ -4024,6 +4028,7 @@ void AActor::PostBeginPlay ()
Renderer->StateChanged(this); Renderer->StateChanged(this);
} }
PrevAngle = angle; PrevAngle = angle;
flags7 |= MF7_HANDLENODELAY;
} }
void AActor::MarkPrecacheSounds() const void AActor::MarkPrecacheSounds() const