- Added Boom's stairbuilding fix when one step couldn't be built due to an active thinker in the sector.

This is compatibility optioned with COMPAT_STAIRINDEX. Also added a compatibility setting for 
  Eternal Doom MAP25 which relies on Doom's original broken behavior.
- added a few sanity checks for duplicate actor names in DECORATE. ZDoom will now print more warnings
  and all crash cases should be properly handled but since this is still an error this will not work
  properly in all circumstances. For example, if you have a duplicate name all classes that inherit
  from the original definition will not survive a savegame if they reference a state belonging to that
  class at the point of saving.
- Print 'tried to register class more than once' in red to highlight it.
- fixed: actors may not replace themselves.

SVN r2158 (trunk)
This commit is contained in:
Christoph Oelckers 2010-02-13 08:56:08 +00:00
commit 6ec30761c6
6 changed files with 40 additions and 5 deletions

View file

@ -39,6 +39,7 @@
#include "m_fixed.h"
#include "c_dispatch.h"
#include "d_net.h"
#include "v_text.h"
#include "gi.h"
@ -142,15 +143,26 @@ void FActorInfo::StaticSetActorNums ()
void FActorInfo::RegisterIDs ()
{
const PClass *cls = PClass::FindClass(Class->TypeName);
bool set = false;
if (GameFilter == GAME_Any || (GameFilter & gameinfo.gametype))
{
if (SpawnID != 0)
{
SpawnableThings[SpawnID] = Class;
SpawnableThings[SpawnID] = cls;
if (cls != Class)
{
Printf(TEXTCOLOR_RED"Spawn ID %d refers to hidden class type '%s'\n", SpawnID, cls->TypeName.GetChars());
}
}
if (DoomEdNum != -1)
{
DoomEdMap.AddType (DoomEdNum, Class);
DoomEdMap.AddType (DoomEdNum, cls);
if (cls != Class)
{
Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars());
}
}
}
// Fill out the list for Chex Quest with Doom's actors
@ -158,6 +170,10 @@ void FActorInfo::RegisterIDs ()
(GameFilter & GAME_Doom))
{
DoomEdMap.AddType (DoomEdNum, Class, true);
if (cls != Class)
{
Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars());
}
}
}