- 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(noloopfinalemusic, "noloopfinalemusic")
GAMEINFOKEY_BOOL(drawreadthis, "drawreadthis") GAMEINFOKEY_BOOL(drawreadthis, "drawreadthis")
GAMEINFOKEY_BOOL(swapmenu, "swapmenu") GAMEINFOKEY_BOOL(swapmenu, "swapmenu")
GAMEINFOKEY_BOOL(dontcrunchcorpses, "dontcrunchcorpses")
GAMEINFOKEY_BOOL(intermissioncounter, "intermissioncounter") GAMEINFOKEY_BOOL(intermissioncounter, "intermissioncounter")
GAMEINFOKEY_BOOL(nightmarefast, "nightmarefast") GAMEINFOKEY_BOOL(nightmarefast, "nightmarefast")
GAMEINFOKEY_COLOR(dimcolor, "dimcolor") GAMEINFOKEY_COLOR(dimcolor, "dimcolor")

View file

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

View file

@ -1010,6 +1010,16 @@ bool AActor::Grind(bool items)
if ((flags & MF_CORPSE) && !(flags3 & MF3_DONTGIB) && (health <= 0)) if ((flags & MF_CORPSE) && !(flags3 & MF3_DONTGIB) && (health <= 0))
{ {
FState * state = FindState(NAME_Crush); 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; bool isgeneric = false;
// ZDoom behavior differs from standard as crushed corpses cannot be raised. // ZDoom behavior differs from standard as crushed corpses cannot be raised.
// The reason for the change was originally because of a problem with players, // The reason for the change was originally because of a problem with players,

View file

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

View file

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