CANRAISE state definition

CANRAISE state for allowing a monster to be resurrected without an
infinite frame
This commit is contained in:
Edward Richardson 2014-04-12 22:02:19 +12:00
parent ca93e04de3
commit 4270838613
3 changed files with 13 additions and 2 deletions

View file

@ -76,6 +76,7 @@ struct FState
BYTE SameFrame:1; // Ignore Frame (except when spawning actor) BYTE SameFrame:1; // Ignore Frame (except when spawning actor)
BYTE Fast:1; BYTE Fast:1;
BYTE NoDelay:1; // Spawn states executes its action normally BYTE NoDelay:1; // Spawn states executes its action normally
BYTE CanRaise:1; // Allows a monster to be resurrected without waiting for an infinate frame
int ParameterIndex; int ParameterIndex;
inline int GetFrame() const inline int GetFrame() const
@ -114,6 +115,10 @@ struct FState
{ {
return NoDelay; return NoDelay;
} }
inline bool GetCanRaise() const
{
return CanRaise;
}
inline void SetFrame(BYTE frame) inline void SetFrame(BYTE frame)
{ {
Frame = frame - 'A'; Frame = frame - 'A';

View file

@ -2527,8 +2527,9 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
if (!(corpsehit->flags & MF_CORPSE) ) if (!(corpsehit->flags & MF_CORPSE) )
continue; // not a monster continue; // not a monster
if (corpsehit->tics != -1) if (corpsehit->tics != -1 && // not lying still yet
continue; // not lying still yet !corpsehit->state->GetCanRaise()) // or not ready to be raised yet
continue;
raisestate = corpsehit->FindState(NAME_Raise); raisestate = corpsehit->FindState(NAME_Raise);
if (raisestate == NULL) if (raisestate == NULL)

View file

@ -313,6 +313,11 @@ do_stop:
sc.MustGetStringName(")"); sc.MustGetStringName(")");
continue; continue;
} }
if (sc.Compare("CANRAISE"))
{
state.CanRaise = true;
continue;
}
// Make the action name lowercase // Make the action name lowercase
strlwr (sc.String); strlwr (sc.String);