- fixed: In Heretic corpses do not get crunched to gibs, they just get their size reduced to 0. Handled by a new gameinfo flag. This also gets set for Chex quest which has the gib sprite replaced by something different. Using a Crush state will override this global flag.

This commit is contained in:
Christoph Oelckers 2014-05-14 12:54:03 +02:00
parent 47a9dab56d
commit 388f09f786
5 changed files with 14 additions and 0 deletions

View File

@ -323,6 +323,7 @@ void FMapInfoParser::ParseGameInfo()
GAMEINFOKEY_BOOL(noloopfinalemusic, "noloopfinalemusic")
GAMEINFOKEY_BOOL(drawreadthis, "drawreadthis")
GAMEINFOKEY_BOOL(swapmenu, "swapmenu")
GAMEINFOKEY_BOOL(dontcrunchcorpses, "dontcrunchcorpses")
GAMEINFOKEY_BOOL(intermissioncounter, "intermissioncounter")
GAMEINFOKEY_BOOL(nightmarefast, "nightmarefast")
GAMEINFOKEY_COLOR(dimcolor, "dimcolor")

View File

@ -113,6 +113,7 @@ struct gameinfo_t
bool intermissioncounter;
bool nightmarefast;
bool swapmenu;
bool dontcrunchcorpses;
TArray<FName> creditPages;
TArray<FName> finalePages;
TArray<FName> infoPages;

View File

@ -1010,6 +1010,16 @@ bool AActor::Grind(bool items)
if ((flags & MF_CORPSE) && !(flags3 & MF3_DONTGIB) && (health <= 0))
{
FState * state = FindState(NAME_Crush);
// In Heretic and Chex Quest we don't change the actor's sprite, just its size.
if (state == NULL && gameinfo.dontcrunchcorpses)
{
flags &= ~MF_SOLID;
flags3 |= MF3_DONTGIB;
height = radius = 0;
return false;
}
bool isgeneric = false;
// ZDoom behavior differs from standard as crushed corpses cannot be raised.
// The reason for the change was originally because of a problem with players,

View File

@ -40,6 +40,7 @@ gameinfo
definventorymaxamount = 25
defaultrespawntime = 12
defaultdropstyle = 1
dontcrunchcorpses = 1
endoom = "ENDOOM"
player5start = 4001
drawreadthis = true

View File

@ -56,6 +56,7 @@ gameinfo
nightmarefast = true
pausesign = "PAUSED"
gibfactor = 0.5
dontcrunchcorpses = true
cursorpic = "herecurs"
textscreenx = 20
textscreeny = 5