This commit is contained in:
Christoph Oelckers 2015-04-04 10:32:23 +02:00
commit 5f2f11a43b
190 changed files with 4172 additions and 3634 deletions

View file

@ -871,6 +871,7 @@ add_executable( zdoom WIN32 MACOSX_BUNDLE
f_wipe.cpp
farchive.cpp
files.cpp
g_doomedmap.cpp
g_game.cpp
g_hub.cpp
g_level.cpp

View file

@ -253,7 +253,7 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize)
//==========================================================================
//
// Lool for IWAD definition lump
// Look for IWAD definition lump
//
//==========================================================================
@ -302,11 +302,11 @@ int FIWadManager::ScanIWAD (const char *iwad)
FResourceLump *lump = iwadfile->GetLump(ii);
CheckLumpName(lump->Name);
if (lump->FullName != NULL)
if (lump->FullName.IsNotEmpty())
{
if (strnicmp(lump->FullName, "maps/", 5) == 0)
{
FString mapname(lump->FullName+5, strcspn(lump->FullName+5, "."));
FString mapname(&lump->FullName[5], strcspn(&lump->FullName[5], "."));
CheckLumpName(mapname);
}
}

View file

@ -1992,6 +1992,9 @@ static void D_DoomInit()
static void AddAutoloadFiles(const char *group, const char *autoname)
{
LumpFilterGroup = group;
LumpFilterIWAD = autoname;
if (!(gameinfo.flags & GI_SHAREWARE) && !Args->CheckParm("-noautoload"))
{
FString file;
@ -2440,6 +2443,8 @@ void D_DoomMain (void)
// Create replacements for dehacked pickups
FinishDehPatch();
InitActorNumsFromMapinfo();
InitSpawnablesFromMapinfo();
FActorInfo::StaticSetActorNums ();
//Added by MC:

View file

@ -429,10 +429,10 @@ struct FPlayerStart
short angle, type;
FPlayerStart() { }
FPlayerStart(const FMapThing *mthing)
FPlayerStart(const FMapThing *mthing, int pnum)
: x(mthing->x), y(mthing->y), z(mthing->z),
angle(mthing->angle),
type(mthing->type)
type(pnum)
{ }
};
// Player spawn spots for deathmatch.

View file

@ -69,3 +69,4 @@ int SinglePlayerClass[MAXPLAYERS];
bool ToggleFullscreen;
int BorderTopRefresh;
FString LumpFilterGroup, LumpFilterIWAD;

View file

@ -250,4 +250,7 @@ EXTERN_CVAR (Int, compatflags);
EXTERN_CVAR (Int, compatflags2);
extern int i_compatflags, i_compatflags2, ii_compatflags, ii_compatflags2, ib_compatflags;
// Filters from AddAutoloadFiles(). Used to filter files from archives.
extern FString LumpFilterGroup, LumpFilterIWAD;
#endif

264
src/g_doomedmap.cpp Normal file
View file

@ -0,0 +1,264 @@
/*
** g_doomedmap.cpp
**
**---------------------------------------------------------------------------
** Copyright 1998-2015 Randy Heit
** Copyright 2015 Christoph Oelckers
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
**
*/
#include "info.h"
#include "p_lnspec.h"
#include "m_fixed.h"
#include "c_dispatch.h"
#include "templates.h"
#include "cmdlib.h"
#include "g_level.h"
#include "v_text.h"
#include "i_system.h"
const char *SpecialMapthingNames[] = {
"$PLAYER1START",
"$PLAYER2START",
"$PLAYER3START",
"$PLAYER4START",
"$PLAYER5START",
"$PLAYER6START",
"$PLAYER7START",
"$PLAYER8START",
"$DEATHMATCHSTART",
"$SSEQOVERRIDE",
"$POLYANCHOR",
"$POLYSPAWN",
"$POLYSPAWNCRUSH",
"$POLYSPAWNHURT"
};
//==========================================================================
//
// Stuff that's only valid during definition time
//
//==========================================================================
struct MapinfoEdMapItem
{
FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet.
int special;
int args[5];
// These are for error reporting. We must store the file information because it's no longer available when these items get resolved.
FString filename;
int linenum;
};
typedef TMap<int, MapinfoEdMapItem> IdMap;
static IdMap DoomEdFromMapinfo;
//==========================================================================
//
//
//==========================================================================
FDoomEdMap DoomEdMap;
static int STACK_ARGS sortnums (const void *a, const void *b)
{
return (*(const FDoomEdMap::Pair**)a)->Key - (*(const FDoomEdMap::Pair**)b)->Key;
}
CCMD (dumpmapthings)
{
TArray<FDoomEdMap::Pair*> infos(DoomEdMap.CountUsed());
FDoomEdMap::Iterator it(DoomEdMap);
FDoomEdMap::Pair *pair;
while (it.NextPair(pair))
{
infos.Push(pair);
}
if (infos.Size () == 0)
{
Printf ("No map things registered\n");
}
else
{
qsort (&infos[0], infos.Size (), sizeof(FDoomEdMap::Pair*), sortnums);
for (unsigned i = 0; i < infos.Size (); ++i)
{
if (infos[i]->Value.Type != NULL)
{
Printf("%6d %s\n", infos[i]->Key, infos[i]->Value.Type->TypeName.GetChars());
}
else if (infos[i]->Value.Special > 0)
{
Printf("%6d %s\n", infos[i]->Key, SpecialMapthingNames[infos[i]->Value.Special - 1]);
}
else
{
Printf("%6d none", infos[i]->Key);
}
}
}
}
void FMapInfoParser::ParseDoomEdNums()
{
TMap<int, bool> defined;
int error = 0;
MapinfoEdMapItem editem;
editem.filename = sc.ScriptName;
ParseOpenBrace();
while (true)
{
if (sc.CheckString("}")) return;
else if (sc.CheckNumber())
{
int ednum = sc.Number;
sc.MustGetStringName("=");
sc.MustGetString();
bool *def = defined.CheckKey(ednum);
if (def != NULL)
{
sc.ScriptMessage("Editor Number %d defined more than once", ednum);
error++;
}
defined[ednum] = true;
if (sc.String[0] == '$')
{
// todo: add special stuff like playerstarts and sound sequence overrides here, too.
editem.classname = NAME_None;
editem.special = sc.MustMatchString(SpecialMapthingNames) + 1; // todo: assign proper constants
}
else
{
editem.classname = sc.String;
editem.special = -1;
}
memset(editem.args, 0, sizeof(editem.args));
int minargs = 0;
int maxargs = 5;
FString specialname;
if (sc.CheckString(","))
{
// todo: parse a special or args
if (editem.special < 0) editem.special = 0; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing.
if (!sc.CheckNumber())
{
sc.MustGetString();
specialname = sc.String; // save for later error reporting.
editem.special = P_FindLineSpecial(sc.String, &minargs, &maxargs);
if (editem.special == 0 || minargs == -1)
{
sc.ScriptMessage("Invalid special %s for Editor Number %d", sc.String, ednum);
error++;
minargs = 0;
maxargs = 5;
}
if (!sc.CheckString(","))
{
// special case: Special without arguments
if (minargs != 0)
{
sc.ScriptMessage("Incorrect number of args for special %s, min = %d, max = %d, found = 0", specialname.GetChars(), minargs, maxargs);
error++;
}
DoomEdFromMapinfo.Insert(ednum, editem);
continue;
}
sc.MustGetStringName(",");
sc.MustGetNumber();
}
int i = 0;
while (i < 5)
{
editem.args[i++] = sc.Number;
i++;
if (!sc.CheckString(",")) break;
sc.MustGetNumber();
}
if (specialname.IsNotEmpty() && (i < minargs || i > maxargs))
{
sc.ScriptMessage("Incorrect number of args for special %s, min = %d, max = %d, found = %d", specialname.GetChars(), minargs, maxargs, i);
error++;
}
}
DoomEdFromMapinfo.Insert(ednum, editem);
}
else
{
sc.ScriptError("Number expected");
}
}
if (error > 0)
{
sc.ScriptError("%d errors encountered in DoomEdNum definition");
}
}
void InitActorNumsFromMapinfo()
{
DoomEdMap.Clear();
IdMap::Iterator it(DoomEdFromMapinfo);
IdMap::Pair *pair;
int error = 0;
while (it.NextPair(pair))
{
const PClass *cls = NULL;
if (pair->Value.classname != NAME_None)
{
cls = PClass::FindClass(pair->Value.classname);
if (cls == NULL)
{
Printf(TEXTCOLOR_RED "Script error, \"%s\" line %d:\nUnknown actor class %s\n",
pair->Value.filename.GetChars(), pair->Value.linenum, pair->Value.classname.GetChars());
error++;
}
}
FDoomEdEntry ent;
ent.Type = cls;
ent.Special = pair->Value.special;
memcpy(ent.Args, pair->Value.args, sizeof(ent.Args));
DoomEdMap.Insert(pair->Key, ent);
}
if (error > 0)
{
I_Error("%d unknown actor classes found", error);
}
DoomEdFromMapinfo.Clear(); // we do not need this any longer
}

View file

@ -104,6 +104,8 @@ struct FMapInfoParser
void ParseIntermissionAction(FIntermissionDescriptor *Desc);
void ParseIntermission();
void ParseDoomEdNums();
void ParseSpawnNums();
void ParseAMColors(bool);
FName CheckEndSequence();
FName ParseEndGame();

View file

@ -1876,6 +1876,30 @@ void FMapInfoParser::ParseMapInfo (int lump, level_info_t &gamedefaults, level_i
sc.ScriptError("intermission definitions not supported with old MAPINFO syntax");
}
}
else if (sc.Compare("doomednums"))
{
if (format_type != FMT_Old)
{
format_type = FMT_New;
ParseDoomEdNums();
}
else
{
sc.ScriptError("doomednums definitions not supported with old MAPINFO syntax");
}
}
else if (sc.Compare("spawnnums"))
{
if (format_type != FMT_Old)
{
format_type = FMT_New;
ParseSpawnNums();
}
else
{
sc.ScriptError("spawnnums definitions not supported with old MAPINFO syntax");
}
}
else if (sc.Compare("automap") || sc.Compare("automap_overlay"))
{
if (format_type != FMT_Old)

View file

@ -335,7 +335,6 @@ void FMapInfoParser::ParseGameInfo()
GAMEINFOKEY_INT(defaultrespawntime, "defaultrespawntime")
GAMEINFOKEY_INT(defaultdropstyle, "defaultdropstyle")
GAMEINFOKEY_STRING(Endoom, "endoom")
GAMEINFOKEY_INT(player5start, "player5start")
GAMEINFOKEY_STRINGARRAY(quitmessages, "addquitmessages", 0, false)
GAMEINFOKEY_STRINGARRAY(quitmessages, "quitmessages", 0, true)
GAMEINFOKEY_STRING(mTitleColor, "menufontcolor_title")

View file

@ -153,7 +153,6 @@ struct gameinfo_t
int definventorymaxamount;
int defaultrespawntime;
int defaultdropstyle;
int player5start;
DWORD pickupcolor;
TArray<FString> quitmessages;
FName mTitleColor;

View file

@ -141,9 +141,6 @@ void FActorInfo::StaticInit ()
void FActorInfo::StaticSetActorNums ()
{
SpawnableThings.Clear();
DoomEdMap.Empty ();
for (unsigned int i = 0; i < PClass::m_RuntimeActors.Size(); ++i)
{
PClass::m_RuntimeActors[i]->ActorInfo->RegisterIDs ();
@ -171,7 +168,16 @@ void FActorInfo::RegisterIDs ()
}
if (DoomEdNum != -1)
{
DoomEdMap.AddType (DoomEdNum, cls);
FDoomEdEntry *oldent = DoomEdMap.CheckKey(DoomEdNum);
if (oldent != NULL && oldent->Special == -2)
{
Printf(TEXTCOLOR_RED"Editor number %d defined twice for classes '%s' and '%s'\n", DoomEdNum, cls->TypeName.GetChars(), oldent->Type->TypeName.GetChars());
}
FDoomEdEntry ent;
memset(&ent, 0, sizeof(ent));
ent.Type = cls;
ent.Special = -2; // use -2 instead of -1 so that we can recognize DECORATE defined entries and print a warning message if duplicates occur.
DoomEdMap.Insert(DoomEdNum, ent);
if (cls != Class)
{
Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars());
@ -179,15 +185,6 @@ void FActorInfo::RegisterIDs ()
}
}
// Fill out the list for Chex Quest with Doom's actors
if (gameinfo.gametype == GAME_Chex && DoomEdMap.FindType(DoomEdNum) == NULL &&
(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());
}
}
}
//==========================================================================
@ -389,139 +386,6 @@ fixed_t *DmgFactors::CheckFactor(FName type)
return pdf;
}
//==========================================================================
//
//
//==========================================================================
FDoomEdMap DoomEdMap;
FDoomEdMap::FDoomEdEntry *FDoomEdMap::DoomEdHash[DOOMED_HASHSIZE];
FDoomEdMap::~FDoomEdMap()
{
Empty();
}
void FDoomEdMap::AddType (int doomednum, const PClass *type, bool temporary)
{
unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE;
FDoomEdEntry *entry = DoomEdHash[hash];
while (entry && entry->DoomEdNum != doomednum)
{
entry = entry->HashNext;
}
if (entry == NULL)
{
entry = new FDoomEdEntry;
entry->HashNext = DoomEdHash[hash];
entry->DoomEdNum = doomednum;
DoomEdHash[hash] = entry;
}
else if (!entry->temp)
{
Printf (PRINT_BOLD, "Warning: %s and %s both have doomednum %d.\n",
type->TypeName.GetChars(), entry->Type->TypeName.GetChars(), doomednum);
}
entry->temp = temporary;
entry->Type = type;
}
void FDoomEdMap::DelType (int doomednum)
{
unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE;
FDoomEdEntry **prev = &DoomEdHash[hash];
FDoomEdEntry *entry = *prev;
while (entry && entry->DoomEdNum != doomednum)
{
prev = &entry->HashNext;
entry = entry->HashNext;
}
if (entry != NULL)
{
*prev = entry->HashNext;
delete entry;
}
}
void FDoomEdMap::Empty ()
{
int bucket;
for (bucket = 0; bucket < DOOMED_HASHSIZE; ++bucket)
{
FDoomEdEntry *probe = DoomEdHash[bucket];
while (probe != NULL)
{
FDoomEdEntry *next = probe->HashNext;
delete probe;
probe = next;
}
DoomEdHash[bucket] = NULL;
}
}
const PClass *FDoomEdMap::FindType (int doomednum) const
{
unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE;
FDoomEdEntry *entry = DoomEdHash[hash];
while (entry && entry->DoomEdNum != doomednum)
entry = entry->HashNext;
return entry ? entry->Type : NULL;
}
struct EdSorting
{
const PClass *Type;
int DoomEdNum;
};
static int STACK_ARGS sortnums (const void *a, const void *b)
{
return ((const EdSorting *)a)->DoomEdNum -
((const EdSorting *)b)->DoomEdNum;
}
void FDoomEdMap::DumpMapThings ()
{
TArray<EdSorting> infos (PClass::m_Types.Size());
int i;
for (i = 0; i < DOOMED_HASHSIZE; ++i)
{
FDoomEdEntry *probe = DoomEdHash[i];
while (probe != NULL)
{
EdSorting sorting = { probe->Type, probe->DoomEdNum };
infos.Push (sorting);
probe = probe->HashNext;
}
}
if (infos.Size () == 0)
{
Printf ("No map things registered\n");
}
else
{
qsort (&infos[0], infos.Size (), sizeof(EdSorting), sortnums);
for (i = 0; i < (int)infos.Size (); ++i)
{
Printf ("%6d %s\n",
infos[i].DoomEdNum, infos[i].Type->TypeName.GetChars());
}
}
}
CCMD (dumpmapthings)
{
FDoomEdMap::DumpMapThings ();
}
static void SummonActor (int command, int command2, FCommandLine argv)
{
if (CheckCheatmode ())

View file

@ -278,34 +278,39 @@ struct FActorInfo
TArray<const PClass *> ForbiddenToPlayerClass;
};
class FDoomEdMap
struct FDoomEdEntry
{
public:
~FDoomEdMap();
const PClass *FindType (int doomednum) const;
void AddType (int doomednum, const PClass *type, bool temporary = false);
void DelType (int doomednum);
void Empty ();
static void DumpMapThings ();
private:
enum { DOOMED_HASHSIZE = 256 };
struct FDoomEdEntry
{
FDoomEdEntry *HashNext;
const PClass *Type;
int DoomEdNum;
bool temp;
};
static FDoomEdEntry *DoomEdHash[DOOMED_HASHSIZE];
int Special;
int Args[5];
};
enum ESpecialMapthings
{
SMT_PLAYER1START = 1,
SMT_PLAYER2START,
SMT_PLAYER3START,
SMT_PLAYER4START,
SMT_PLAYER5START,
SMT_PLAYER6START,
SMT_PLAYER7START,
SMT_PLAYER8START,
SMT_DEATHMATCHSTART,
SMT_SSEQOVERRIDE,
SMT_POLYANCHOR,
SMT_POLYSPAWN,
SMT_POLYSPAWNCRUSH,
SMT_POLYSPAWNHURT,
};
typedef TMap<int, FDoomEdEntry> FDoomEdMap;
extern FDoomEdMap DoomEdMap;
void InitActorNumsFromMapinfo();
int GetSpriteIndex(const char * spritename, bool add = true);
TArray<FName> &MakeStateNameList(const char * fname);
void AddStateLight(FState *state, const char *lname);

View file

@ -723,7 +723,7 @@ static int LoadSprites (spritetype *sprites, Xsprite *xsprites, int numsprites,
if (xsprites[i].Data1 < 4)
mapthings[count].type = 1 + xsprites[i].Data1;
else
mapthings[count].type = gameinfo.player5start + xsprites[i].Data1 - 4;
mapthings[count].type = 4001 + xsprites[i].Data1 - 4;
}
else if (xsprites != NULL && sprites[i].lotag == 2)
{ // Bloodbath start

View file

@ -174,6 +174,7 @@ void P_RemoveThing(AActor * actor);
bool P_Thing_Raise(AActor *thing, AActor *raiser);
bool P_Thing_CanRaise(AActor *thing);
const PClass *P_GetSpawnableType(int spawnnum);
void InitSpawnablesFromMapinfo();
//
// P_MAPUTL
@ -591,19 +592,6 @@ struct polyspawns_t
short type;
};
enum
{
PO_HEX_ANCHOR_TYPE = 3000,
PO_HEX_SPAWN_TYPE,
PO_HEX_SPAWNCRUSH_TYPE,
// [RH] Thing numbers that don't conflict with Doom things
PO_ANCHOR_TYPE = 9300,
PO_SPAWN_TYPE,
PO_SPAWNCRUSH_TYPE,
PO_SPAWNHURT_TYPE
};
extern int po_NumPolyobjs;
extern polyspawns_t *polyspawns; // [RH] list of polyobject things to spawn

View file

@ -4600,67 +4600,80 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
if (mthing->type == 0 || mthing->type == -1)
return NULL;
// count deathmatch start positions
if (mthing->type == 11)
// find which type to spawn
FDoomEdEntry *mentry = DoomEdMap.CheckKey(mthing->type);
if (mentry == NULL)
{
FPlayerStart start(mthing);
// [RH] Don't die if the map tries to spawn an unknown thing
Printf ("Unknown type %i at (%i, %i)\n",
mthing->type,
mthing->x>>FRACBITS, mthing->y>>FRACBITS);
mentry = DoomEdMap.CheckKey(0);
if (mentry == NULL) // we need a valid entry for the rest of this function so if we can't find a default, let's exit right away.
{
return NULL;
}
}
if (mentry->Type == NULL && mentry->Special <= 0)
{
// has been explicitly set to not spawning anything.
return NULL;
}
// copy args to mapthing so that we have them in one place for the rest of this function
if (mentry->Special >= 0)
{
mthing->special = mentry->Special;
memcpy(mthing->args, mentry->Args, sizeof(mthing->args));
}
int pnum = -1;
if (mentry->Type == NULL)
{
switch (mentry->Special)
{
case SMT_DEATHMATCHSTART:
{
// count deathmatch start positions
FPlayerStart start(mthing, 0);
deathmatchstarts.Push(start);
return NULL;
}
// Convert Strife starts to Hexen-style starts
if (gameinfo.gametype == GAME_Strife && mthing->type >= 118 && mthing->type <= 127)
{
mthing->args[0] = mthing->type - 117;
mthing->type = 1;
}
// [RH] Record polyobject-related things
if (gameinfo.gametype == GAME_Hexen)
{
switch (mthing->type)
{
case PO_HEX_ANCHOR_TYPE:
mthing->type = PO_ANCHOR_TYPE;
break;
case PO_HEX_SPAWN_TYPE:
mthing->type = PO_SPAWN_TYPE;
break;
case PO_HEX_SPAWNCRUSH_TYPE:
mthing->type = PO_SPAWNCRUSH_TYPE;
break;
}
}
if (mthing->type == PO_ANCHOR_TYPE ||
mthing->type == PO_SPAWN_TYPE ||
mthing->type == PO_SPAWNCRUSH_TYPE ||
mthing->type == PO_SPAWNHURT_TYPE)
case SMT_POLYANCHOR:
case SMT_POLYSPAWN:
case SMT_POLYSPAWNCRUSH:
case SMT_POLYSPAWNHURT:
{
polyspawns_t *polyspawn = new polyspawns_t;
polyspawn->next = polyspawns;
polyspawn->x = mthing->x;
polyspawn->y = mthing->y;
polyspawn->angle = mthing->angle;
polyspawn->type = mthing->type;
polyspawn->type = mentry->Special;
polyspawns = polyspawn;
if (mthing->type != PO_ANCHOR_TYPE)
if (mentry->Special != SMT_POLYANCHOR)
po_NumPolyobjs++;
return NULL;
}
// check for players specially
int pnum = -1;
case SMT_PLAYER1START:
case SMT_PLAYER2START:
case SMT_PLAYER3START:
case SMT_PLAYER4START:
case SMT_PLAYER5START:
case SMT_PLAYER6START:
case SMT_PLAYER7START:
case SMT_PLAYER8START:
pnum = mentry->Special - SMT_PLAYER1START;
break;
// Sound sequence override will be handled later
default:
break;
if (mthing->type <= 4 && mthing->type > 0)
{
pnum = mthing->type - 1;
}
else
{
if (mthing->type >= gameinfo.player5start && mthing->type < gameinfo.player5start + MAXPLAYERS - 4)
{
pnum = mthing->type - gameinfo.player5start + 4;
}
}
@ -4728,7 +4741,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
return NULL;
// save spots for respawning in network games
FPlayerStart start(mthing);
FPlayerStart start(mthing, pnum+1);
playerstarts[pnum] = start;
AllPlayerStarts.Push(start);
if (!deathmatch && !(level.flags2 & LEVEL2_RANDOMPLAYERSTARTS))
@ -4739,20 +4752,10 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
}
// [RH] sound sequence overriders
if (mthing->type >= 1400 && mthing->type < 1410)
if (mentry->Type == NULL && mentry->Special == SMT_SSEQOVERRIDE)
{
P_PointInSector (mthing->x, mthing->y)->seqType = mthing->type - 1400;
return NULL;
}
else if (mthing->type == 1411)
{
int type;
if (mthing->args[0] == 255)
type = -1;
else
type = mthing->args[0];
int type = mentry->Args[0];
if (type == 255) type = -1;
if (type > 63)
{
Printf ("Sound sequence %d out of range\n", type);
@ -4764,36 +4767,11 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
return NULL;
}
// [RH] Determine if it is an old ambient thing, and if so,
// map it to MT_AMBIENT with the proper parameter.
if (mthing->type >= 14001 && mthing->type <= 14064)
{
mthing->args[0] = mthing->type - 14000;
mthing->type = 14065;
}
else if (mthing->type >= 14101 && mthing->type <= 14164)
{
mthing->args[0] = mthing->type - 14100;
mthing->type = 14165;
}
// find which type to spawn
i = DoomEdMap.FindType (mthing->type);
if (i == NULL)
{
// [RH] Don't die if the map tries to spawn an unknown thing
Printf ("Unknown type %i at (%i, %i)\n",
mthing->type,
mthing->x>>FRACBITS, mthing->y>>FRACBITS);
i = PClass::FindClass("Unknown");
}
// [RH] If the thing's corresponding sprite has no frames, also map
// it to the unknown thing.
else
{
// Handle decorate replacements explicitly here
// to check for missing frames in the replacement object.
i = i->GetReplacement();
i = mentry->Type->GetReplacement();
const AActor *defaults = GetDefaultByType (i);
if (defaults->SpawnState == NULL ||
@ -4809,7 +4787,6 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
i->TypeName.GetChars(), mthing->x>>FRACBITS, mthing->y>>FRACBITS);
i = PClass::FindClass("Unknown");
}
}
const AActor *info = GetDefaultByType (i);
@ -4898,6 +4875,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
P_FindFloorCeiling(mobj, FFCF_SAMESECTOR | FFCF_ONLY3DFLOORS | FFCF_3DRESTRICT);
}
// if the actor got args defined either in DECORATE or MAPINFO we must ignore the map's properties.
if (!(mobj->flags2 & MF2_ARGSDEFINED))
{
// [RH] Set the thing's special

View file

@ -3334,32 +3334,16 @@ void P_GetPolySpots (MapData * map, TArray<FNodeBuilder::FPolyStart> &spots, TAr
{
if (map->HasBehavior)
{
int spot1, spot2, spot3, anchor;
if (gameinfo.gametype == GAME_Hexen)
{
spot1 = PO_HEX_SPAWN_TYPE;
spot2 = PO_HEX_SPAWNCRUSH_TYPE;
anchor = PO_HEX_ANCHOR_TYPE;
}
else
{
spot1 = PO_SPAWN_TYPE;
spot2 = PO_SPAWNCRUSH_TYPE;
anchor = PO_ANCHOR_TYPE;
}
spot3 = PO_SPAWNHURT_TYPE;
for (unsigned int i = 0; i < MapThingsConverted.Size(); ++i)
{
if (MapThingsConverted[i].type == spot1 || MapThingsConverted[i].type == spot2 ||
MapThingsConverted[i].type == spot3 || MapThingsConverted[i].type == anchor)
FDoomEdEntry *mentry = DoomEdMap.CheckKey(MapThingsConverted[i].type);
if (mentry != NULL && mentry->Type == NULL && mentry->Special >= SMT_POLYANCHOR && mentry->Special <= SMT_POLYSPAWNHURT)
{
FNodeBuilder::FPolyStart newvert;
newvert.x = MapThingsConverted[i].x;
newvert.y = MapThingsConverted[i].y;
newvert.polynum = MapThingsConverted[i].angle;
if (MapThingsConverted[i].type == anchor)
if (mentry->Special == SMT_POLYANCHOR)
{
anchors.Push (newvert);
}

View file

@ -45,10 +45,23 @@
#include "gi.h"
#include "templates.h"
#include "g_level.h"
#include "v_text.h"
#include "i_system.h"
// Set of spawnable things for the Thing_Spawn and Thing_Projectile specials.
TMap<int, const PClass *> SpawnableThings;
struct MapinfoSpawnItem
{
FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet.
// These are for error reporting. We must store the file information because it's no longer available when these items get resolved.
FString filename;
int linenum;
};
typedef TMap<int, MapinfoSpawnItem> SpawnMap;
static SpawnMap SpawnablesFromMapinfo;
static FRandom pr_leadtarget ("LeadTarget");
bool P_Thing_Spawn (int tid, AActor *source, int type, angle_t angle, bool fog, int newtid)
@ -559,3 +572,77 @@ CCMD (dumpspawnables)
delete[] allpairs;
}
void FMapInfoParser::ParseSpawnNums()
{
TMap<int, bool> defined;
int error = 0;
MapinfoSpawnItem editem;
editem.filename = sc.ScriptName;
ParseOpenBrace();
while (true)
{
if (sc.CheckString("}")) return;
else if (sc.CheckNumber())
{
int ednum = sc.Number;
sc.MustGetStringName("=");
sc.MustGetString();
bool *def = defined.CheckKey(ednum);
if (def != NULL)
{
sc.ScriptMessage("Spawn Number %d defined more than once", ednum);
error++;
}
else if (ednum < 0)
{
sc.ScriptMessage("Spawn Number must be positive, got %d", ednum);
error++;
}
defined[ednum] = true;
editem.classname = sc.String;
SpawnablesFromMapinfo.Insert(ednum, editem);
}
else
{
sc.ScriptError("Number expected");
}
}
if (error > 0)
{
sc.ScriptError("%d errors encountered in SpawnNum definition");
}
}
void InitSpawnablesFromMapinfo()
{
SpawnableThings.Clear();
SpawnMap::Iterator it(SpawnablesFromMapinfo);
SpawnMap::Pair *pair;
int error = 0;
while (it.NextPair(pair))
{
const PClass *cls = NULL;
if (pair->Value.classname != NAME_None)
{
cls = PClass::FindClass(pair->Value.classname);
if (cls == NULL)
{
Printf(TEXTCOLOR_RED "Script error, \"%s\" line %d:\nUnknown actor class %s\n",
pair->Value.filename.GetChars(), pair->Value.linenum, pair->Value.classname.GetChars());
error++;
}
}
SpawnableThings.Insert(pair->Key, cls);
}
if (error > 0)
{
I_Error("%d unknown actor classes found", error);
}
SpawnablesFromMapinfo.Clear(); // we do not need this any longer
}

View file

@ -1561,8 +1561,8 @@ static void SpawnPolyobj (int index, int tag, int type)
sd->linedef->args[0] = 0;
IterFindPolySides(&polyobjs[index], sd);
po->MirrorNum = sd->linedef->args[1];
po->crush = (type != PO_SPAWN_TYPE) ? 3 : 0;
po->bHurtOnTouch = (type == PO_SPAWNHURT_TYPE);
po->crush = (type != SMT_POLYSPAWN) ? 3 : 0;
po->bHurtOnTouch = (type == SMT_POLYSPAWNHURT);
po->tag = tag;
po->seqType = sd->linedef->args[2];
if (po->seqType < 0 || po->seqType > 63)
@ -1632,8 +1632,8 @@ static void SpawnPolyobj (int index, int tag, int type)
}
if (po->Sidedefs.Size() > 0)
{
po->crush = (type != PO_SPAWN_TYPE) ? 3 : 0;
po->bHurtOnTouch = (type == PO_SPAWNHURT_TYPE);
po->crush = (type != SMT_POLYSPAWN) ? 3 : 0;
po->bHurtOnTouch = (type == SMT_POLYSPAWNHURT);
po->tag = tag;
po->seqType = po->Sidedefs[0]->linedef->args[3];
po->MirrorNum = po->Sidedefs[0]->linedef->args[2];
@ -1756,9 +1756,7 @@ void PO_Init (void)
for (polyspawn = polyspawns, prev = &polyspawns; polyspawn;)
{
// 9301 (3001) = no crush, 9302 (3002) = crushing, 9303 = hurting touch
if (polyspawn->type == PO_SPAWN_TYPE ||
polyspawn->type == PO_SPAWNCRUSH_TYPE ||
polyspawn->type == PO_SPAWNHURT_TYPE)
if (polyspawn->type >= SMT_POLYSPAWN && polyspawn->type <= SMT_POLYSPAWNHURT)
{
// Polyobj StartSpot Pt.
polyobjs[polyIndex].StartSpot.x = polyspawn->x;
@ -1778,7 +1776,7 @@ void PO_Init (void)
for (polyspawn = polyspawns; polyspawn;)
{
polyspawns_t *next = polyspawn->next;
if (polyspawn->type == PO_ANCHOR_TYPE)
if (polyspawn->type == SMT_POLYANCHOR)
{
// Polyobj Anchor Pt.
TranslateToStartSpot (polyspawn->angle, polyspawn->x, polyspawn->y);

View file

@ -179,7 +179,7 @@ struct F7ZLump : public FResourceLump
//==========================================================================
//
// Zip file
// 7-zip file
//
//==========================================================================
@ -190,8 +190,6 @@ class F7ZFile : public FResourceFile
F7ZLump *Lumps;
C7zArchive *Archive;
static int STACK_ARGS lumpcmp(const void * a, const void * b);
public:
F7ZFile(const char * filename, FileReader *filer);
bool Open(bool quiet);
@ -201,15 +199,6 @@ public:
int STACK_ARGS F7ZFile::lumpcmp(const void * a, const void * b)
{
F7ZLump * rec1 = (F7ZLump *)a;
F7ZLump * rec2 = (F7ZLump *)b;
return stricmp(rec1->FullName, rec2->FullName);
}
//==========================================================================
//
// 7Z file
@ -328,8 +317,7 @@ bool F7ZFile::Open(bool quiet)
if (!quiet) Printf(", %d lumps\n", NumLumps);
// Entries in archives are sorted alphabetically
qsort(&Lumps[0], NumLumps, sizeof(F7ZLump), lumpcmp);
PostProcessArchive(&Lumps[0], sizeof(F7ZLump));
return true;
}

View file

@ -86,8 +86,6 @@ class FDirectory : public FResourceFile
{
TArray<FDirectoryLump> Lumps;
static int STACK_ARGS lumpcmp(const void * a, const void * b);
int AddDirectory(const char *dirpath);
void AddEntry(const char *fullpath, int size);
@ -113,29 +111,18 @@ FDirectory::FDirectory(const char * directory)
#ifdef _WIN32
directory = _fullpath(NULL, directory, _MAX_PATH);
#else
// Todo for Linux: Resolve the path befire using it
// Todo for Linux: Resolve the path before using it
#endif
dirname = directory;
#ifdef _WIN32
free((void *)directory);
#endif
dirname.ReplaceChars('\\', '/');
if (dirname[dirname.Len()-1] != '/') dirname += '/';
Filename = copystring(dirname);
}
//==========================================================================
//
//
//
//==========================================================================
int STACK_ARGS FDirectory::lumpcmp(const void * a, const void * b)
{
FDirectoryLump * rec1 = (FDirectoryLump *)a;
FDirectoryLump * rec2 = (FDirectoryLump *)b;
return stricmp(rec1->FullName, rec2->FullName);
}
#ifdef _WIN32
//==========================================================================
//
@ -299,8 +286,7 @@ bool FDirectory::Open(bool quiet)
{
NumLumps = AddDirectory(Filename);
if (!quiet) Printf(", %d lumps\n", NumLumps);
// Entries in Zips are sorted alphabetically.
qsort(&Lumps[0], NumLumps, sizeof(FDirectoryLump), lumpcmp);
PostProcessArchive(&Lumps[0], sizeof(FDirectoryLump));
return true;
}

View file

@ -138,8 +138,6 @@ class FZipFile : public FResourceFile
{
FZipLump *Lumps;
static int STACK_ARGS lumpcmp(const void * a, const void * b);
public:
FZipFile(const char * filename, FileReader *file);
virtual ~FZipFile();
@ -148,16 +146,6 @@ public:
};
int STACK_ARGS FZipFile::lumpcmp(const void * a, const void * b)
{
FZipLump * rec1 = (FZipLump *)a;
FZipLump * rec2 = (FZipLump *)b;
return stricmp(rec1->FullName, rec2->FullName);
}
//==========================================================================
//
// Zip file
@ -274,8 +262,7 @@ bool FZipFile::Open(bool quiet)
if (!quiet) Printf(", %d lumps\n", NumLumps);
// Entries in Zips are sorted alphabetically.
qsort(Lumps, NumLumps, sizeof(FZipLump), lumpcmp);
PostProcessArchive(&Lumps[0], sizeof(FZipLump));
return true;
}

View file

@ -38,7 +38,8 @@
#include "cmdlib.h"
#include "w_wad.h"
#include "doomerrors.h"
#include "gi.h"
#include "doomstat.h"
//==========================================================================
@ -74,11 +75,6 @@ public:
FResourceLump::~FResourceLump()
{
if (FullName != NULL)
{
delete [] FullName;
FullName = NULL;
}
if (Cache != NULL && RefCount >= 0)
{
delete [] Cache;
@ -102,7 +98,7 @@ void FResourceLump::LumpNameSetup(const char *iname)
base = base.Left(base.LastIndexOf('.'));
uppercopy(Name, base);
Name[8] = 0;
FullName = copystring(iname);
FullName = iname;
// Map some directories to WAD namespaces.
// Note that some of these namespaces don't exist in WADS.
@ -321,6 +317,194 @@ FResourceFile::~FResourceFile()
delete Reader;
}
int STACK_ARGS lumpcmp(const void * a, const void * b)
{
FResourceLump * rec1 = (FResourceLump *)a;
FResourceLump * rec2 = (FResourceLump *)b;
return rec1->FullName.CompareNoCase(rec2->FullName);
}
//==========================================================================
//
// FResourceFile :: PostProcessArchive
//
// Sorts files by name.
// For files named "filter/<game>/*": Using the same filter rules as config
// autoloading, move them to the end and rename them without the "filter/"
// prefix. Filtered files that don't match are deleted.
//
//==========================================================================
void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize)
{
// Entries in archives are sorted alphabetically
qsort(lumps, NumLumps, lumpsize, lumpcmp);
// Filter out lumps using the same names as the Autoload.* sections
// in the ini file use. We reduce the maximum lump concidered after
// each one so that we don't risk refiltering already filtered lumps.
DWORD max = NumLumps;
max -= FilterLumps(gameinfo.ConfigName, lumps, lumpsize, max);
max -= FilterLumps(LumpFilterGroup, lumps, lumpsize, max);
max -= FilterLumps(LumpFilterIWAD, lumps, lumpsize, max);
JunkLeftoverFilters(lumps, lumpsize, max);
}
//==========================================================================
//
// FResourceFile :: FilterLumps
//
// Finds any lumps between [0,<max>) that match the pattern
// "filter/<filtername>/*" and moves them to the end of the lump list.
// Returns the number of lumps moved.
//
//==========================================================================
int FResourceFile::FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max)
{
FString filter;
DWORD start, end;
if (filtername.IsEmpty())
{
return 0;
}
filter << "filter/" << filtername << '/';
if (FindPrefixRange(filter, lumps, lumpsize, max, start, end))
{
void *from = (BYTE *)lumps + start * lumpsize;
// Remove filter prefix from every name
void *lump_p = from;
for (DWORD i = start; i < end; ++i, lump_p = (BYTE *)lump_p + lumpsize)
{
FResourceLump *lump = (FResourceLump *)lump_p;
assert(lump->FullName.CompareNoCase(filter, (int)filter.Len()) == 0);
lump->LumpNameSetup(&lump->FullName[filter.Len()]);
}
// Move filtered lumps to the end of the lump list.
size_t count = (end - start) * lumpsize;
void *to = (BYTE *)lumps + NumLumps * lumpsize - count;
assert (to >= from);
if (from != to)
{
// Copy filtered lumps to a temporary buffer.
BYTE *filteredlumps = new BYTE[count];
memcpy(filteredlumps, from, count);
// Shift lumps left to make room for the filtered ones at the end.
memmove(from, (BYTE *)from + count, (NumLumps - end) * lumpsize);
// Copy temporary buffer to newly freed space.
memcpy(to, filteredlumps, count);
delete[] filteredlumps;
}
}
return end - start;
}
//==========================================================================
//
// FResourceFile :: JunkLeftoverFilters
//
// Deletes any lumps beginning with "filter/" that were not matched.
//
//==========================================================================
void FResourceFile::JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max)
{
DWORD start, end;
if (FindPrefixRange("filter/", lumps, lumpsize, max, start, end))
{
// Since the resource lumps may contain non-POD data besides the
// full name, we "delete" them by erasing their names so they
// can't be found.
void *stop = (BYTE *)lumps + end * lumpsize;
for (void *p = (BYTE *)lumps + start * lumpsize; p < stop; p = (BYTE *)p + lumpsize)
{
FResourceLump *lump = (FResourceLump *)p;
lump->FullName = 0;
lump->Name[0] = '\0';
lump->Namespace = ns_invalid;
}
}
}
//==========================================================================
//
// FResourceFile :: FindPrefixRange
//
// Finds a range of lumps that start with the prefix string. <start> is left
// indicating the first matching one. <end> is left at one plus the last
// matching one.
//
//==========================================================================
bool FResourceFile::FindPrefixRange(FString filter, void *lumps, size_t lumpsize, DWORD maxlump, DWORD &start, DWORD &end)
{
DWORD min, max, mid, inside;
FResourceLump *lump;
int cmp;
// Pretend that our range starts at 1 instead of 0 so that we can avoid
// unsigned overflow if the range starts at the first lump.
lumps = (BYTE *)lumps - lumpsize;
// Binary search to find any match at all.
min = 1, max = maxlump;
while (min <= max)
{
mid = min + (max - min) / 2;
lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize);
cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len());
if (cmp == 0)
break;
else if (cmp < 0)
min = mid + 1;
else
max = mid - 1;
}
if (max < min)
{ // matched nothing
return false;
}
// Binary search to find first match.
inside = mid;
min = 1, max = mid;
while (min <= max)
{
mid = min + (max - min) / 2;
lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize);
cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len());
// Go left on matches and right on misses.
if (cmp == 0)
max = mid - 1;
else
min = mid + 1;
}
start = mid + (cmp != 0) - 1;
// Binary search to find last match.
min = inside, max = maxlump;
while (min <= max)
{
mid = min + (max - min) / 2;
lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize);
cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len());
// Go right on matches and left on misses.
if (cmp == 0)
min = mid + 1;
else
max = mid - 1;
}
end = mid - (cmp != 0);
return true;
}
//==========================================================================
//

View file

@ -13,7 +13,7 @@ struct FResourceLump
friend class FResourceFile;
int LumpSize;
char * FullName; // only valid for files loaded from a .zip file
FString FullName; // only valid for files loaded from a non-wad archive
union
{
char Name[9];
@ -30,7 +30,6 @@ struct FResourceLump
FResourceLump()
{
FullName = NULL;
Cache = NULL;
Owner = NULL;
Flags = 0;
@ -66,9 +65,16 @@ protected:
FResourceFile(const char *filename, FileReader *r);
// for archives that can contain directories
void PostProcessArchive(void *lumps, size_t lumpsize);
private:
DWORD FirstLump;
int FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max);
bool FindPrefixRange(FString filter, void *lumps, size_t lumpsize, DWORD max, DWORD &start, DWORD &end);
void JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max);
public:
static FResourceFile *OpenResourceFile(const char *filename, FileReader *file, bool quiet = false);
static FResourceFile *OpenDirectory(const char *filename, bool quiet = false);

View file

@ -976,7 +976,7 @@ DEFINE_PROPERTY(translation, L, Actor)
if (type == 0)
{
PROP_INT_PARM(trans, 1);
int max = (gameinfo.gametype==GAME_Strife || (info->GameFilter&GAME_Strife)) ? 6:2;
int max = 6;// (gameinfo.gametype == GAME_Strife || (info->GameFilter&GAME_Strife)) ? 6 : 2;
if (trans < 0 || trans > max)
{
I_Error ("Translation must be in the range [0,%d]", max);

View file

@ -290,14 +290,9 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
FResourceLump *lump = resfile->GetLump(i);
if (lump->Flags & LUMPF_EMBEDDED)
{
char path[256];
mysnprintf(path, countof(path), "%s:", filename);
char *wadstr = path + strlen(path);
FString path;
path.Format("%s:%s", filename, lump->FullName.GetChars());
FileReader *embedded = lump->NewReader();
strcpy(wadstr, lump->FullName);
AddFile(path, embedded);
}
}
@ -345,7 +340,9 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
sprintf(cksumout + (j * 2), "%02X", cksum[j]);
}
fprintf(hashfile, "file: %s, lump: %s, hash: %s, size: %d\n", filename, lump->FullName ? lump->FullName : lump->Name, cksumout, lump->LumpSize);
fprintf(hashfile, "file: %s, lump: %s, hash: %s, size: %d\n", filename,
lump->FullName.IsNotEmpty() ? lump->FullName.GetChars() : lump->Name,
cksumout, lump->LumpSize);
delete reader;
}
@ -737,7 +734,7 @@ void FWadCollection::InitHashChains (void)
FirstLumpIndex[j] = i;
// Do the same for the full paths
if (LumpInfo[i].lump->FullName!=NULL)
if (LumpInfo[i].lump->FullName.IsNotEmpty())
{
j = MakeKey(LumpInfo[i].lump->FullName) % NumLumps;
NextLumpIndex_FullName[i] = FirstLumpIndex_FullName[j];
@ -1088,7 +1085,7 @@ const char *FWadCollection::GetLumpFullName (int lump) const
{
if ((size_t)lump >= NumLumps)
return NULL;
else if (LumpInfo[lump].lump->FullName != NULL)
else if (LumpInfo[lump].lump->FullName.IsNotEmpty())
return LumpInfo[lump].lump->FullName;
else
return LumpInfo[lump].lump->Name;
@ -1574,3 +1571,33 @@ static void PrintLastError ()
Printf (TEXTCOLOR_RED " %s\n", strerror(errno));
}
#endif
#ifdef _DEBUG
//==========================================================================
//
// CCMD LumpNum
//
//==========================================================================
CCMD(lumpnum)
{
for (int i = 1; i < argv.argc(); ++i)
{
Printf("%s: %d\n", argv[i], Wads.CheckNumForName(argv[i]));
}
}
//==========================================================================
//
// CCMD LumpNumFull
//
//==========================================================================
CCMD(lumpnumfull)
{
for (int i = 1; i < argv.argc(); ++i)
{
Printf("%s: %d\n", argv[i], Wads.CheckNumForFullName(argv[i]));
}
}
#endif

View file

@ -52,6 +52,8 @@ struct wadlump_t
// [RH] Namespaces from BOOM.
typedef enum {
ns_invalid = -1,
ns_global = 0,
ns_sprites,
ns_flats,

View file

@ -2,15 +2,13 @@
// Mini Zorch -----------------------------------------------------------------
actor MiniZorchRecharge : Clip 2007
actor MiniZorchRecharge : Clip
{
Game Chex
inventory.pickupmessage "$GOTZORCHRECHARGE"
}
actor MiniZorchPack : Clip 2048
actor MiniZorchPack : Clip
{
Game Chex
Inventory.PickupMessage "$GOTMINIZORCHPACK"
Inventory.Amount 50
States
@ -23,15 +21,13 @@ actor MiniZorchPack : Clip 2048
// Large Zorch ----------------------------------------------------------------
actor LargeZorchRecharge : Shell 2008
actor LargeZorchRecharge : Shell
{
Game Chex
inventory.pickupmessage "$GOTLARGEZORCHERRECHARGE"
}
actor LargeZorchPack : Shell 2049
actor LargeZorchPack : Shell
{
Game Chex
Inventory.PickupMessage "$GOTLARGEZORCHERPACK"
Inventory.Amount 20
States
@ -44,15 +40,13 @@ actor LargeZorchPack : Shell 2049
// Zorch Propulsor ------------------------------------------------------------
actor PropulsorZorch : RocketAmmo 2010
actor PropulsorZorch : RocketAmmo
{
Game Chex
inventory.pickupmessage "$GOTPROPULSORRECHARGE"
}
actor PropulsorZorchPack : RocketAmmo 2046
actor PropulsorZorchPack : RocketAmmo
{
Game Chex
Inventory.PickupMessage "$GOTPROPULSORPACK"
Inventory.Amount 5
States
@ -65,16 +59,13 @@ actor PropulsorZorchPack : RocketAmmo 2046
// Phasing Zorch --------------------------------------------------------------
actor PhasingZorch : Cell 2047
actor PhasingZorch : Cell
{
Game Chex
inventory.pickupmessage "$GOTPHASINGZORCHERRECHARGE"
}
actor PhasingZorchPack : Cell 17
actor PhasingZorchPack : Cell
{
Game Chex
SpawnID 142
Inventory.PickupMessage "$GOTPHASINGZORCHERPACK"
Inventory.Amount 100
States

View file

@ -2,81 +2,69 @@
// Civilians ------------------------------------------------------------------
actor ChexCivilian1 : GreenTorch 45
actor ChexCivilian1 : GreenTorch
{
game Chex
height 54
}
actor ChexCivilian2 : ShortGreenTorch 56
actor ChexCivilian2 : ShortGreenTorch
{
game Chex
height 54
}
actor ChexCivilian3 : ShortRedTorch 57
actor ChexCivilian3 : ShortRedTorch
{
game Chex
height 48
}
// Landing Zone ---------------------------------------------------------------
actor ChexLandingLight : Column 2028
actor ChexLandingLight : Column
{
game Chex
height 35
}
actor ChexSpaceship : TechPillar 48
actor ChexSpaceship : TechPillar
{
game Chex
height 52
}
// Trees and Plants -----------------------------------------------------------
actor ChexAppleTree : Stalagtite 47
actor ChexAppleTree : Stalagtite
{
game Chex
height 92
}
actor ChexBananaTree : BigTree 54
actor ChexBananaTree : BigTree
{
game Chex
height 108
}
actor ChexOrangeTree : TorchTree 43
actor ChexOrangeTree : TorchTree
{
game Chex
height 92
}
actor ChexSubmergedPlant : ShortGreenColumn 31
actor ChexSubmergedPlant : ShortGreenColumn
{
game Chex
height 42
}
actor ChexTallFlower : HeadsOnAStick 28
actor ChexTallFlower : HeadsOnAStick
{
game Chex
height 25
}
actor ChexTallFlower2 : DeadStick 25
actor ChexTallFlower2 : DeadStick
{
game Chex
height 25
}
// Slime Fountain -------------------------------------------------------------
actor ChexSlimeFountain : BlueTorch 44
actor ChexSlimeFountain : BlueTorch
{
game Chex
height 48
States
{
@ -88,53 +76,45 @@ actor ChexSlimeFountain : BlueTorch 44
// Cavern Decorations ---------------------------------------------------------
actor ChexCavernColumn : TallRedColumn 32
actor ChexCavernColumn : TallRedColumn
{
game Chex
height 128
}
actor ChexCavernStalagmite : TallGreenColumn 30
actor ChexCavernStalagmite : TallGreenColumn
{
game Chex
height 60
}
// Misc. Props ----------------------------------------------------------------
actor ChexChemicalBurner : EvilEye 41
actor ChexChemicalBurner : EvilEye
{
game Chex
height 25
}
actor ChexChemicalFlask : Candlestick 34
actor ChexChemicalFlask : Candlestick
{
game Chex
renderstyle translucent
alpha 0.75
}
actor ChexFlagOnPole : SkullColumn 37
actor ChexFlagOnPole : SkullColumn
{
game Chex
height 128
}
actor ChexGasTank : Candelabra 35
actor ChexGasTank : Candelabra
{
game Chex
height 36
}
actor ChexLightColumn : ShortBlueTorch 55
actor ChexLightColumn : ShortBlueTorch
{
game Chex
height 86
}
actor ChexMineCart : ShortRedColumn 33
actor ChexMineCart : ShortRedColumn
{
game Chex
height 30
}

View file

@ -3,67 +3,57 @@
// Health ---------------------------------------------------------------------
actor GlassOfWater : HealthBonus 2014
actor GlassOfWater : HealthBonus
{
game Chex
inventory.pickupmessage "$GOTWATER"
}
actor BowlOfFruit : Stimpack 2011
actor BowlOfFruit : Stimpack
{
game Chex
inventory.pickupmessage "$GOTFRUIT"
}
actor BowlOfVegetables : Medikit 2012
actor BowlOfVegetables : Medikit
{
game Chex
inventory.pickupmessage "$GOTVEGETABLES"
health.lowmessage 25, "$GOTVEGETABLESNEED"
}
actor SuperchargeBreakfast : Soulsphere 2013
actor SuperchargeBreakfast : Soulsphere
{
game Chex
inventory.pickupmessage "$GOTBREAKFAST"
}
// Armor ----------------------------------------------------------------------
actor SlimeRepellent : ArmorBonus 2015
actor SlimeRepellent : ArmorBonus
{
game Chex
inventory.pickupmessage "$GOTREPELLENT"
}
actor ChexArmor : GreenArmor 2018
actor ChexArmor : GreenArmor
{
game Chex
inventory.pickupmessage "$GOTCHEXARMOR"
}
actor SuperChexArmor : BlueArmor 2019
actor SuperChexArmor : BlueArmor
{
game Chex
inventory.pickupmessage "$GOTSUPERCHEXARMOR"
}
// Powerups ===================================================================
actor ComputerAreaMap : Allmap 2026
actor ComputerAreaMap : Allmap
{
game Chex
inventory.pickupmessage "$GOTCHEXMAP"
}
actor SlimeProofSuit : RadSuit 2025
actor SlimeProofSuit : RadSuit
{
game Chex
inventory.pickupmessage "$GOTSLIMESUIT"
}
actor Zorchpack : Backpack 8
actor Zorchpack : Backpack
{
game Chex
inventory.pickupmessage "$GOTZORCHPACK"
}

View file

@ -1,19 +1,16 @@
// These are merely renames of the Doom cards
actor ChexBlueCard : BlueCard 5
actor ChexBlueCard : BlueCard
{
Game Chex
inventory.pickupmessage "$GOTCBLUEKEY"
}
actor ChexYellowCard : YellowCard 6
actor ChexYellowCard : YellowCard
{
Game Chex
inventory.pickupmessage "$GOTCYELLOWKEY"
}
actor ChexRedCard : RedCard 13
actor ChexRedCard : RedCard
{
Game Chex
inventory.pickupmessage "$GOTCREDKEY"
}

View file

@ -5,9 +5,8 @@
//
//===========================================================================
actor FlemoidusCommonus : ZombieMan 3004
actor FlemoidusCommonus : ZombieMan
{
Game Chex
DropItem ""
Obituary "$OB_COMMONUS"
States
@ -25,9 +24,8 @@ actor FlemoidusCommonus : ZombieMan 3004
//
//===========================================================================
actor FlemoidusBipedicus : ShotgunGuy 9
actor FlemoidusBipedicus : ShotgunGuy
{
Game Chex
DropItem ""
Obituary "$OB_BIPEDICUS"
States
@ -45,9 +43,8 @@ actor FlemoidusBipedicus : ShotgunGuy 9
//
//===========================================================================
actor ArmoredFlemoidusBipedicus : DoomImp 3001
actor ArmoredFlemoidusBipedicus : DoomImp
{
Game Chex
Obituary "$OB_BIPEDICUS2"
HitObituary "$OB_BIPEDICUS2"
}
@ -58,9 +55,8 @@ actor ArmoredFlemoidusBipedicus : DoomImp 3001
//
//===========================================================================
actor FlemoidusCycloptisCommonus : Demon 3002
actor FlemoidusCycloptisCommonus : Demon
{
Game Chex
Obituary "$OB_CYCLOPTIS"
}
@ -70,9 +66,8 @@ actor FlemoidusCycloptisCommonus : Demon 3002
//
//===========================================================================
actor Flembrane : BaronOfHell 3003
actor Flembrane : BaronOfHell
{
Game Chex
radius 44
height 100
speed 0
@ -88,8 +83,7 @@ actor Flembrane : BaronOfHell 3003
//===========================================================================
actor ChexSoul : LostSoul 3006
actor ChexSoul : LostSoul
{
Game Chex
height 0
}

View file

@ -2,14 +2,12 @@
actor Bootspoon : Fist
{
game Chex
obituary "$OB_MPSPOON"
Tag "$TAG_SPOON"
}
actor SuperBootspork : Chainsaw 2005
actor SuperBootspork : Chainsaw
{
game Chex
obituary "$OB_MPBOOTSPORK"
Inventory.PickupMessage "$GOTSUPERBOOTSPORK"
Tag "$TAG_SPORK"
@ -17,7 +15,6 @@ actor SuperBootspork : Chainsaw 2005
actor MiniZorcher : Pistol
{
game Chex
obituary "$OB_MPZORCH"
inventory.pickupmessage "$GOTMINIZORCHER"
Tag "$TAG_MINIZORCHER"
@ -28,33 +25,29 @@ actor MiniZorcher : Pistol
}
}
actor LargeZorcher : Shotgun 2001
actor LargeZorcher : Shotgun
{
game Chex
obituary "$OB_MPZORCH"
inventory.pickupmessage "$GOTLARGEZORCHER"
Tag "$TAG_LARGEZORCHER"
}
actor SuperLargeZorcher : SuperShotgun 82
actor SuperLargeZorcher : SuperShotgun
{
game Chex
obituary "$OB_MPMEGAZORCH"
inventory.pickupmessage "$GOTSUPERLARGEZORCHER"
Tag "$TAG_SUPERLARGEZORCHER"
}
actor RapidZorcher : Chaingun 2002
actor RapidZorcher : Chaingun
{
game Chex
obituary "$OB_MPRAPIDZORCH"
inventory.pickupmessage "$GOTRAPIDZORCHER"
Tag "$TAG_RAPIDZORCHER"
}
actor ZorchPropulsor : RocketLauncher 2003
actor ZorchPropulsor : RocketLauncher
{
game Chex
obituary ""
inventory.pickupmessage "$GOTZORCHPROPULSOR"
Tag "$TAG_ZORCHPROPULSOR"
@ -77,9 +70,8 @@ actor PropulsorMissile : Rocket
Alpha 0.75
}
actor PhasingZorcher : PlasmaRifle 2004
actor PhasingZorcher : PlasmaRifle
{
game Chex
obituary ""
inventory.pickupmessage "$GOTPHASINGZORCHER"
Tag "$TAG_PHASINGZORCHER"
@ -107,9 +99,8 @@ actor PhaseZorchMissile : PlasmaBall
Alpha 0.75
}
actor LAZDevice : BFG9000 2006
actor LAZDevice : BFG9000
{
game Chex
obituary ""
inventory.pickupmessage "$GOTLAZDEVICE"
Tag "$TAG_LAZDEVICE"

View file

@ -3,10 +3,8 @@
// Arachnotron
//
//===========================================================================
ACTOR Arachnotron 68
ACTOR Arachnotron
{
Game Doom
SpawnID 6
Health 500
Radius 64
Height 64
@ -63,8 +61,6 @@ ACTOR Arachnotron 68
//===========================================================================
ACTOR ArachnotronPlasma
{
Game Doom
SpawnID 129
Radius 13
Height 8
Speed 25

View file

@ -4,10 +4,8 @@
//
//===========================================================================
ACTOR Archvile 64
ACTOR Archvile
{
Game Doom
SpawnID 111
Health 700
Radius 20
Height 56
@ -67,8 +65,6 @@ ACTOR Archvile 64
ACTOR ArchvileFire
{
Game Doom
SpawnID 98
+NOBLOCKMAP +NOGRAVITY
RenderStyle Add
Alpha 1

View file

@ -5,9 +5,8 @@
//
//===========================================================================
ACTOR BossBrain 88
ACTOR BossBrain
{
Game Doom
Health 250
Mass 10000000
PainChance 255
@ -43,9 +42,8 @@ ACTOR BossBrain 88
//
//===========================================================================
ACTOR BossEye 89
ACTOR BossEye
{
Game Doom
Height 32
+NOBLOCKMAP
+NOSECTOR
@ -67,9 +65,8 @@ ACTOR BossEye 89
//
//===========================================================================
ACTOR BossTarget : SpecialSpot 87
ACTOR BossTarget : SpecialSpot
{
Game Doom
Height 32
+NOBLOCKMAP
+NOSECTOR

View file

@ -3,10 +3,8 @@
// Baron of Hell
//
//===========================================================================
ACTOR BaronOfHell 3003
ACTOR BaronOfHell
{
Game Doom
SpawnID 3
Health 1000
Radius 24
Height 64
@ -59,10 +57,8 @@ ACTOR BaronOfHell 3003
// Hell Knight
//
//===========================================================================
ACTOR HellKnight : BaronOfHell 69
ACTOR HellKnight : BaronOfHell
{
Game Doom
SpawnID 113
Health 500
-BOSSDEATH
SeeSound "knight/sight"
@ -110,8 +106,6 @@ ACTOR HellKnight : BaronOfHell 69
//===========================================================================
ACTOR BaronBall
{
Game Doom
SpawnID 154
Radius 6
Height 16
Speed 15

View file

@ -3,10 +3,8 @@
// Cacodemon
//
//===========================================================================
ACTOR Cacodemon 3005
ACTOR Cacodemon
{
Game Doom
SpawnID 19
Health 400
Radius 31
Height 56
@ -61,8 +59,6 @@ ACTOR Cacodemon 3005
//===========================================================================
ACTOR CacodemonBall
{
Game Doom
SpawnID 126
Radius 6
Height 8
Speed 10

View file

@ -4,10 +4,8 @@
// Cyberdemon
//
//===========================================================================
ACTOR Cyberdemon 16
ACTOR Cyberdemon
{
Game Doom
SpawnID 114
Health 4000
Radius 40
Height 110

View file

@ -1,9 +1,7 @@
// Gibbed marine -----------------------------------------------------------
actor GibbedMarine 10
actor GibbedMarine
{
Game Doom
SpawnID 145
States
{
Spawn:
@ -14,16 +12,14 @@ actor GibbedMarine 10
// Gibbed marine (extra copy) ----------------------------------------------
actor GibbedMarineExtra : GibbedMarine 12
actor GibbedMarineExtra : GibbedMarine
{
Game Doom
}
// Dead marine -------------------------------------------------------------
actor DeadMarine 15
actor DeadMarine
{
Game Doom
States
{
Spawn:
@ -39,10 +35,9 @@ actor DeadMarine 15
// Dead zombie man ---------------------------------------------------------
actor DeadZombieMan : ZombieMan 18
actor DeadZombieMan : ZombieMan
{
Skip_Super
Game Doom
DropItem None
States
{
@ -53,10 +48,9 @@ actor DeadZombieMan : ZombieMan 18
// Dead shotgun guy --------------------------------------------------------
actor DeadShotgunGuy : ShotgunGuy 19
actor DeadShotgunGuy : ShotgunGuy
{
Skip_Super
Game Doom
DropItem None
States
{
@ -67,10 +61,9 @@ actor DeadShotgunGuy : ShotgunGuy 19
// Dead imp ----------------------------------------------------------------
actor DeadDoomImp : DoomImp 20
actor DeadDoomImp : DoomImp
{
Skip_Super
Game Doom
States
{
Spawn:
@ -80,10 +73,9 @@ actor DeadDoomImp : DoomImp 20
// Dead demon --------------------------------------------------------------
actor DeadDemon : Demon 21
actor DeadDemon : Demon
{
Skip_Super
Game Doom
States
{
Spawn:
@ -93,10 +85,9 @@ actor DeadDemon : Demon 21
// Dead cacodemon ----------------------------------------------------------
actor DeadCacodemon : Cacodemon 22
actor DeadCacodemon : Cacodemon
{
Skip_Super
Game Doom
States
{
Spawn:
@ -112,10 +103,9 @@ actor DeadCacodemon : Cacodemon 22
* a holdover from that.)
*/
actor DeadLostSoul : LostSoul 23
actor DeadLostSoul : LostSoul
{
Skip_Super
Game Doom
States
{
Spawn:

View file

@ -3,10 +3,8 @@
// Pink Demon
//
//===========================================================================
ACTOR Demon 3002
ACTOR Demon
{
Game Doom
SpawnID 8
Health 150
PainChance 180
Speed 10
@ -57,10 +55,8 @@ ACTOR Demon 3002
// Spectre
//
//===========================================================================
ACTOR Spectre : Demon 58
ACTOR Spectre : Demon
{
Game Doom
SpawnID 9
+SHADOW
RenderStyle OptFuzzy
Alpha 0.5

View file

@ -1,9 +1,7 @@
// Clip --------------------------------------------------------------------
ACTOR Clip : Ammo 2007
ACTOR Clip : Ammo
{
Game Doom
SpawnID 11
Inventory.PickupMessage "$GOTCLIP"
Inventory.Amount 10
Inventory.MaxAmount 200
@ -20,10 +18,8 @@ ACTOR Clip : Ammo 2007
// Clip box ----------------------------------------------------------------
ACTOR ClipBox : Clip 2048
ACTOR ClipBox : Clip
{
Game Doom
SpawnID 139
Inventory.PickupMessage "$GOTCLIPBOX"
Inventory.Amount 50
States
@ -36,10 +32,8 @@ ACTOR ClipBox : Clip 2048
// Rocket ------------------------------------------------------------------
ACTOR RocketAmmo : Ammo 2010
ACTOR RocketAmmo : Ammo
{
Game Doom
SpawnID 140
Inventory.PickupMessage "$GOTROCKET"
Inventory.Amount 1
Inventory.MaxAmount 50
@ -56,10 +50,8 @@ ACTOR RocketAmmo : Ammo 2010
// Rocket box --------------------------------------------------------------
ACTOR RocketBox : RocketAmmo 2046
ACTOR RocketBox : RocketAmmo
{
Game Doom
SpawnID 141
Inventory.PickupMessage "$GOTROCKBOX"
Inventory.Amount 5
States
@ -72,10 +64,8 @@ ACTOR RocketBox : RocketAmmo 2046
// Cell --------------------------------------------------------------------
ACTOR Cell : Ammo 2047
ACTOR Cell : Ammo
{
Game Doom
SpawnID 75
Inventory.PickupMessage "$GOTCELL"
Inventory.Amount 20
Inventory.MaxAmount 300
@ -92,10 +82,8 @@ ACTOR Cell : Ammo 2047
// Cell pack ---------------------------------------------------------------
ACTOR CellPack : Cell 17
ACTOR CellPack : Cell
{
Game Doom
SpawnID 142
Inventory.PickupMessage "$GOTCELLBOX"
Inventory.Amount 100
States
@ -108,10 +96,8 @@ ACTOR CellPack : Cell 17
// Shells ------------------------------------------------------------------
ACTOR Shell : Ammo 2008
ACTOR Shell : Ammo
{
Game Doom
SpawnID 12
Inventory.PickupMessage "$GOTSHELLS"
Inventory.Amount 4
Inventory.MaxAmount 50
@ -128,10 +114,8 @@ ACTOR Shell : Ammo 2008
// Shell box ---------------------------------------------------------------
ACTOR ShellBox : Shell 2049
ACTOR ShellBox : Shell
{
Game Doom
SpawnID 143
Inventory.PickupMessage "$GOTSHELLBOX"
Inventory.Amount 20
States
@ -144,10 +128,8 @@ ACTOR ShellBox : Shell 2049
// Backpack ---------------------------------------------------------------
ACTOR Backpack : BackpackItem 8
ACTOR Backpack : BackpackItem
{
Game Doom
SpawnID 144
Height 26
Inventory.PickupMessage "$GOTBACKPACK"
States

View file

@ -1,10 +1,8 @@
// Armor bonus --------------------------------------------------------------
Actor ArmorBonus : BasicArmorBonus 2015
Actor ArmorBonus : BasicArmorBonus
{
Game Doom
SpawnID 22
Radius 20
Height 16
Inventory.Pickupmessage "$GOTARMBONUS"
@ -24,10 +22,8 @@ Actor ArmorBonus : BasicArmorBonus 2015
// Green armor --------------------------------------------------------------
Actor GreenArmor : BasicArmorPickup 2018
Actor GreenArmor : BasicArmorPickup
{
Game Doom
SpawnID 68
Radius 20
Height 16
Inventory.Pickupmessage "$GOTARMOR"
@ -45,10 +41,8 @@ Actor GreenArmor : BasicArmorPickup 2018
// Blue armor ---------------------------------------------------------------
Actor BlueArmor : BasicArmorPickup 2019
Actor BlueArmor : BasicArmorPickup
{
Game Doom
SpawnID 69
Radius 20
Height 16
Inventory.Pickupmessage "$GOTMEGA"

View file

@ -1,9 +1,7 @@
// Invulnerability Sphere ---------------------------------------------------
ACTOR InvulnerabilitySphere : PowerupGiver 2022
ACTOR InvulnerabilitySphere : PowerupGiver
{
Game Doom
SpawnID 133
+COUNTITEM
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
@ -22,10 +20,8 @@ ACTOR InvulnerabilitySphere : PowerupGiver 2022
// Soulsphere --------------------------------------------------------------
ACTOR Soulsphere : Health 2013
ACTOR Soulsphere : Health
{
Game Doom
SpawnID 25
+COUNTITEM
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
@ -58,10 +54,8 @@ actor BlueArmorForMegasphere : BlueArmor
Armor.SaveAmount 200
}
ACTOR Megasphere : CustomInventory 83
ACTOR Megasphere : CustomInventory
{
Game Doom
SpawnID 132
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
Inventory.PickupMessage "$GOTMSPHERE"
@ -80,10 +74,8 @@ ACTOR Megasphere : CustomInventory 83
// Invisibility -------------------------------------------------------------
ACTOR BlurSphere : PowerupGiver 2024
ACTOR BlurSphere : PowerupGiver
{
Game Doom
SpawnID 135
+COUNTITEM
+VISIBILITYPULSE
+INVENTORY.AUTOACTIVATE
@ -103,10 +95,8 @@ ACTOR BlurSphere : PowerupGiver 2024
// Radiation suit (aka iron feet) -------------------------------------------
ACTOR RadSuit : PowerupGiver 2025
ACTOR RadSuit : PowerupGiver
{
Game Doom
SpawnID 136
Height 46
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
@ -123,10 +113,8 @@ ACTOR RadSuit : PowerupGiver 2025
// infrared -----------------------------------------------------------------
ACTOR Infrared : PowerupGiver 2045
ACTOR Infrared : PowerupGiver
{
Game Doom
SpawnID 138
+COUNTITEM
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
@ -144,10 +132,8 @@ ACTOR Infrared : PowerupGiver 2045
// Allmap -------------------------------------------------------------------
ACTOR Allmap : MapRevealer 2026
ACTOR Allmap : MapRevealer
{
Game Doom
SpawnID 137
+COUNTITEM
+INVENTORY.FANCYPICKUPSOUND
+INVENTORY.ALWAYSPICKUP
@ -164,10 +150,8 @@ ACTOR Allmap : MapRevealer 2026
// Berserk ------------------------------------------------------------------
ACTOR Berserk : CustomInventory 2023
ACTOR Berserk : CustomInventory
{
Game Doom
SpawnID 134
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
Inventory.PickupMessage "$GOTBERSERK"

View file

@ -1,9 +1,8 @@
// Tech lamp ---------------------------------------------------------------
ACTOR TechLamp 85
ACTOR TechLamp
{
Game Doom
Radius 16
Height 80
ProjectilePassHeight -16
@ -18,9 +17,8 @@ ACTOR TechLamp 85
// Tech lamp 2 -------------------------------------------------------------
ACTOR TechLamp2 86
ACTOR TechLamp2
{
Game Doom
Radius 16
Height 60
ProjectilePassHeight -16
@ -35,9 +33,8 @@ ACTOR TechLamp2 86
// Column ------------------------------------------------------------------
ACTOR Column 2028
ACTOR Column
{
Game Doom
Radius 16
Height 48
ProjectilePassHeight -16
@ -52,9 +49,8 @@ ACTOR Column 2028
// Tall green column -------------------------------------------------------
ACTOR TallGreenColumn 30
ACTOR TallGreenColumn
{
Game Doom
Radius 16
Height 52
ProjectilePassHeight -16
@ -69,9 +65,8 @@ ACTOR TallGreenColumn 30
// Short green column ------------------------------------------------------
ACTOR ShortGreenColumn 31
ACTOR ShortGreenColumn
{
Game Doom
Radius 16
Height 40
ProjectilePassHeight -16
@ -86,9 +81,8 @@ ACTOR ShortGreenColumn 31
// Tall red column ---------------------------------------------------------
ACTOR TallRedColumn 32
ACTOR TallRedColumn
{
Game Doom
Radius 16
Height 52
ProjectilePassHeight -16
@ -103,9 +97,8 @@ ACTOR TallRedColumn 32
// Short red column --------------------------------------------------------
ACTOR ShortRedColumn 33
ACTOR ShortRedColumn
{
Game Doom
Radius 16
Height 40
ProjectilePassHeight -16
@ -120,9 +113,8 @@ ACTOR ShortRedColumn 33
// Skull column ------------------------------------------------------------
ACTOR SkullColumn 37
ACTOR SkullColumn
{
Game Doom
Radius 16
Height 40
ProjectilePassHeight -16
@ -137,9 +129,8 @@ ACTOR SkullColumn 37
// Heart column ------------------------------------------------------------
ACTOR HeartColumn 36
ACTOR HeartColumn
{
Game Doom
Radius 16
Height 40
ProjectilePassHeight -16
@ -154,9 +145,8 @@ ACTOR HeartColumn 36
// Evil eye ----------------------------------------------------------------
ACTOR EvilEye 41
ACTOR EvilEye
{
Game Doom
Radius 16
Height 54
ProjectilePassHeight -16
@ -171,9 +161,8 @@ ACTOR EvilEye 41
// Floating skull ----------------------------------------------------------
ACTOR FloatingSkull 42
ACTOR FloatingSkull
{
Game Doom
Radius 16
Height 26
ProjectilePassHeight -16
@ -188,9 +177,8 @@ ACTOR FloatingSkull 42
// Torch tree --------------------------------------------------------------
ACTOR TorchTree 43
ACTOR TorchTree
{
Game Doom
Radius 16
Height 56
ProjectilePassHeight -16
@ -205,9 +193,8 @@ ACTOR TorchTree 43
// Blue torch --------------------------------------------------------------
ACTOR BlueTorch 44
ACTOR BlueTorch
{
Game Doom
Radius 16
Height 68
ProjectilePassHeight -16
@ -222,9 +209,8 @@ ACTOR BlueTorch 44
// Green torch -------------------------------------------------------------
ACTOR GreenTorch 45
ACTOR GreenTorch
{
Game Doom
Radius 16
Height 68
ProjectilePassHeight -16
@ -239,9 +225,8 @@ ACTOR GreenTorch 45
// Red torch ---------------------------------------------------------------
ACTOR RedTorch 46
ACTOR RedTorch
{
Game Doom
Radius 16
Height 68
ProjectilePassHeight -16
@ -256,9 +241,8 @@ ACTOR RedTorch 46
// Short blue torch --------------------------------------------------------
ACTOR ShortBlueTorch 55
ACTOR ShortBlueTorch
{
Game Doom
Radius 16
Height 37
ProjectilePassHeight -16
@ -273,9 +257,8 @@ ACTOR ShortBlueTorch 55
// Short green torch -------------------------------------------------------
ACTOR ShortGreenTorch 56
ACTOR ShortGreenTorch
{
Game Doom
Radius 16
Height 37
ProjectilePassHeight -16
@ -290,9 +273,8 @@ ACTOR ShortGreenTorch 56
// Short red torch ---------------------------------------------------------
ACTOR ShortRedTorch 57
ACTOR ShortRedTorch
{
Game Doom
Radius 16
Height 37
ProjectilePassHeight -16
@ -307,9 +289,8 @@ ACTOR ShortRedTorch 57
// Stalagtite --------------------------------------------------------------
ACTOR Stalagtite 47
ACTOR Stalagtite
{
Game Doom
Radius 16
Height 40
ProjectilePassHeight -16
@ -324,9 +305,8 @@ ACTOR Stalagtite 47
// Tech pillar -------------------------------------------------------------
ACTOR TechPillar 48
ACTOR TechPillar
{
Game Doom
Radius 16
Height 128
ProjectilePassHeight -16
@ -341,9 +321,8 @@ ACTOR TechPillar 48
// Candle stick ------------------------------------------------------------
ACTOR Candlestick 34
ACTOR Candlestick
{
Game Doom
Radius 20
Height 14
ProjectilePassHeight -16
@ -357,9 +336,8 @@ ACTOR Candlestick 34
// Candelabra --------------------------------------------------------------
ACTOR Candelabra 35
ACTOR Candelabra
{
Game Doom
Radius 16
Height 60
ProjectilePassHeight -16
@ -374,9 +352,8 @@ ACTOR Candelabra 35
// Bloody twitch -----------------------------------------------------------
ACTOR BloodyTwitch 49
ACTOR BloodyTwitch
{
Game Doom
Radius 16
Height 68
+SOLID
@ -395,9 +372,8 @@ ACTOR BloodyTwitch 49
// Meat 2 ------------------------------------------------------------------
ACTOR Meat2 50
ACTOR Meat2
{
Game Doom
Radius 16
Height 84
+SOLID
@ -413,9 +389,8 @@ ACTOR Meat2 50
// Meat 3 ------------------------------------------------------------------
ACTOR Meat3 51
ACTOR Meat3
{
Game Doom
Radius 16
Height 84
+SOLID
@ -431,9 +406,8 @@ ACTOR Meat3 51
// Meat 4 ------------------------------------------------------------------
ACTOR Meat4 52
ACTOR Meat4
{
Game Doom
Radius 16
Height 68
+SOLID
@ -449,9 +423,8 @@ ACTOR Meat4 52
// Meat 5 ------------------------------------------------------------------
ACTOR Meat5 53
ACTOR Meat5
{
Game Doom
Radius 16
Height 52
+SOLID
@ -467,48 +440,42 @@ ACTOR Meat5 53
// Nonsolid meat -----------------------------------------------------------
ACTOR NonsolidMeat2 : Meat2 59
ACTOR NonsolidMeat2 : Meat2
{
Game Doom
-SOLID
Radius 20
}
ACTOR NonsolidMeat3 : Meat3 61
ACTOR NonsolidMeat3 : Meat3
{
Game Doom
-SOLID
Radius 20
}
ACTOR NonsolidMeat4 : Meat4 60
ACTOR NonsolidMeat4 : Meat4
{
Game Doom
-SOLID
Radius 20
}
ACTOR NonsolidMeat5 : Meat5 62
ACTOR NonsolidMeat5 : Meat5
{
Game Doom
-SOLID
Radius 20
}
// Nonsolid bloody twitch --------------------------------------------------
ACTOR NonsolidTwitch : BloodyTwitch 63
ACTOR NonsolidTwitch : BloodyTwitch
{
Game Doom
-SOLID
Radius 20
}
// Head on a stick ---------------------------------------------------------
ACTOR HeadOnAStick 27
ACTOR HeadOnAStick
{
Game Doom
Radius 16
Height 56
ProjectilePassHeight -16
@ -523,9 +490,8 @@ ACTOR HeadOnAStick 27
// Heads (plural!) on a stick ----------------------------------------------
ACTOR HeadsOnAStick 28
ACTOR HeadsOnAStick
{
Game Doom
Radius 16
Height 64
ProjectilePassHeight -16
@ -540,9 +506,8 @@ ACTOR HeadsOnAStick 28
// Head candles ------------------------------------------------------------
ACTOR HeadCandles 29
ACTOR HeadCandles
{
Game Doom
Radius 16
Height 42
ProjectilePassHeight -16
@ -557,9 +522,8 @@ ACTOR HeadCandles 29
// Dead on a stick ---------------------------------------------------------
ACTOR DeadStick 25
ACTOR DeadStick
{
Game Doom
Radius 16
Height 64
ProjectilePassHeight -16
@ -574,9 +538,8 @@ ACTOR DeadStick 25
// Still alive on a stick --------------------------------------------------
ACTOR LiveStick 26
ACTOR LiveStick
{
Game Doom
Radius 16
Height 64
ProjectilePassHeight -16
@ -592,9 +555,8 @@ ACTOR LiveStick 26
// Big tree ----------------------------------------------------------------
ACTOR BigTree 54
ACTOR BigTree
{
Game Doom
Radius 32
Height 108
ProjectilePassHeight -16
@ -609,10 +571,8 @@ ACTOR BigTree 54
// Burning barrel ----------------------------------------------------------
ACTOR BurningBarrel 70
ACTOR BurningBarrel
{
Game Doom
SpawnID 149
Radius 16
Height 32
ProjectilePassHeight -16
@ -627,9 +587,8 @@ ACTOR BurningBarrel 70
// Hanging with no guts ----------------------------------------------------
ACTOR HangNoGuts 73
ACTOR HangNoGuts
{
Game Doom
Radius 16
Height 88
+SOLID
@ -645,9 +604,8 @@ ACTOR HangNoGuts 73
// Hanging from bottom with no brain ---------------------------------------
ACTOR HangBNoBrain 74
ACTOR HangBNoBrain
{
Game Doom
Radius 16
Height 88
+SOLID
@ -663,9 +621,8 @@ ACTOR HangBNoBrain 74
// Hanging from top, looking down ------------------------------------------
ACTOR HangTLookingDown 75
ACTOR HangTLookingDown
{
Game Doom
Radius 16
Height 64
+SOLID
@ -681,9 +638,8 @@ ACTOR HangTLookingDown 75
// Hanging from top, looking up --------------------------------------------
ACTOR HangTLookingUp 77
ACTOR HangTLookingUp
{
Game Doom
Radius 16
Height 64
+SOLID
@ -699,9 +655,8 @@ ACTOR HangTLookingUp 77
// Hanging from top, skully ------------------------------------------------
ACTOR HangTSkull 76
ACTOR HangTSkull
{
Game Doom
Radius 16
Height 64
+SOLID
@ -717,9 +672,8 @@ ACTOR HangTSkull 76
// Hanging from top without a brain ----------------------------------------
ACTOR HangTNoBrain 78
ACTOR HangTNoBrain
{
Game Doom
Radius 16
Height 64
+SOLID
@ -735,10 +689,8 @@ ACTOR HangTNoBrain 78
// Colon gibs --------------------------------------------------------------
ACTOR ColonGibs 79
ACTOR ColonGibs
{
Game Doom
SpawnID 147
Radius 20
Height 4
+NOBLOCKMAP
@ -753,10 +705,8 @@ ACTOR ColonGibs 79
// Small pool o' blood -----------------------------------------------------
ACTOR SmallBloodPool 80
ACTOR SmallBloodPool
{
Game Doom
SpawnID 148
Radius 20
Height 1
+NOBLOCKMAP
@ -771,10 +721,8 @@ ACTOR SmallBloodPool 80
// brain stem lying on the ground ------------------------------------------
ACTOR BrainStem 81
ACTOR BrainStem
{
Game Doom
SpawnID 150
Radius 20
Height 4
+NOBLOCKMAP
@ -790,9 +738,8 @@ ACTOR BrainStem 81
// Grey stalagmite (unused Doom sprite, definition taken from Skulltag -----
ACTOR Stalagmite 5050
ACTOR Stalagmite
{
Game Doom
Radius 16
Height 48
+SOLID

View file

@ -1,9 +1,7 @@
// Health bonus -------------------------------------------------------------
ACTOR HealthBonus : Health 2014
ACTOR HealthBonus : Health
{
Game Doom
SpawnID 152
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
Inventory.Amount 1
@ -19,10 +17,8 @@ ACTOR HealthBonus : Health 2014
// Stimpack -----------------------------------------------------------------
ACTOR Stimpack : Health 2011
ACTOR Stimpack : Health
{
Game Doom
SpawnID 23
Inventory.Amount 10
Inventory.PickupMessage "$GOTSTIM"
States
@ -35,10 +31,8 @@ ACTOR Stimpack : Health 2011
// Medikit -----------------------------------------------------------------
ACTOR Medikit : Health 2012
ACTOR Medikit : Health
{
Game Doom
SpawnID 24
Inventory.Amount 25
Inventory.PickupMessage "$GOTMEDIKIT"
Health.LowMessage 25, "$GOTMEDINEED"

View file

@ -3,10 +3,8 @@
// Imp
//
//===========================================================================
ACTOR DoomImp 3001
ACTOR DoomImp
{
Game Doom
SpawnID 5
Health 60
Radius 20
Height 56
@ -66,8 +64,6 @@ ACTOR DoomImp 3001
//===========================================================================
ACTOR DoomImpBall
{
Game Doom
SpawnID 10
Radius 6
Height 8
Speed 10

View file

@ -8,10 +8,8 @@ Actor DoomKey : Key
// Blue key card ------------------------------------------------------------
Actor BlueCard : DoomKey 5
Actor BlueCard : DoomKey
{
Game Doom
SpawnID 85
Inventory.Pickupmessage "$GOTBLUECARD"
Inventory.Icon "STKEYS0"
States
@ -25,10 +23,8 @@ Actor BlueCard : DoomKey 5
// Yellow key card ----------------------------------------------------------
Actor YellowCard : DoomKey 6
Actor YellowCard : DoomKey
{
Game Doom
SpawnID 87
Inventory.Pickupmessage "$GOTYELWCARD"
Inventory.Icon "STKEYS1"
States
@ -42,10 +38,8 @@ Actor YellowCard : DoomKey 6
// Red key card -------------------------------------------------------------
Actor RedCard : DoomKey 13
Actor RedCard : DoomKey
{
Game Doom
SpawnID 86
Inventory.Pickupmessage "$GOTREDCARD"
Inventory.Icon "STKEYS2"
States
@ -59,10 +53,8 @@ Actor RedCard : DoomKey 13
// Blue skull key -----------------------------------------------------------
Actor BlueSkull : DoomKey 40
Actor BlueSkull : DoomKey
{
Game Doom
SpawnID 90
Inventory.Pickupmessage "$GOTBLUESKUL"
Inventory.Icon "STKEYS3"
States
@ -76,10 +68,8 @@ Actor BlueSkull : DoomKey 40
// Yellow skull key ---------------------------------------------------------
Actor YellowSkull : DoomKey 39
Actor YellowSkull : DoomKey
{
Game Doom
SpawnID 88
Inventory.Pickupmessage "$GOTYELWSKUL"
Inventory.Icon "STKEYS4"
States
@ -93,10 +83,8 @@ Actor YellowSkull : DoomKey 39
// Red skull key ------------------------------------------------------------
Actor RedSkull : DoomKey 38
Actor RedSkull : DoomKey
{
Game Doom
SpawnID 89
Inventory.Pickupmessage "$GOTREDSKUL"
Inventory.Icon "STKEYS5"
States

View file

@ -1,9 +1,7 @@
// The barrel of green goop ------------------------------------------------
ACTOR ExplosiveBarrel 2035
ACTOR ExplosiveBarrel
{
Game Doom
SpawnID 125
Health 20
Radius 10
Height 42
@ -37,8 +35,6 @@ ACTOR ExplosiveBarrel 2035
ACTOR BulletPuff
{
Game Doom
SpawnID 131
+NOBLOCKMAP
+NOGRAVITY
+ALLOWPARTICLES
@ -85,9 +81,8 @@ ACTOR DoomUnusedStates
// MBF Beta emulation items
Actor EvilSceptre : ScoreItem 2016
Actor EvilSceptre : ScoreItem
{
Game Doom
Inventory.PickupMessage "$BETA_BONUS3"
States
{
@ -97,9 +92,8 @@ Actor EvilSceptre : ScoreItem 2016
}
}
Actor UnholyBible : ScoreItem 2017
Actor UnholyBible : ScoreItem
{
Game Doom
Inventory.PickupMessage "$BETA_BONUS4"
States
{

View file

@ -17,7 +17,6 @@ ACTOR DoomWeapon : Weapon
ACTOR Fist : Weapon
{
Game Doom
Weapon.SelectionOrder 3700
Weapon.Kickback 100
Obituary "$OB_MPFIST"
@ -52,9 +51,8 @@ ACTOR Fist : Weapon
//
// --------------------------------------------------------------------------
ACTOR Pistol : DoomWeapon 5010
ACTOR Pistol : DoomWeapon
{
Game Doom
Weapon.SelectionOrder 1900
Weapon.AmmoUse 1
Weapon.AmmoGive 20
@ -97,10 +95,8 @@ ACTOR Pistol : DoomWeapon 5010
//
// --------------------------------------------------------------------------
ACTOR Chainsaw : Weapon 2005
ACTOR Chainsaw : Weapon
{
Game Doom
SpawnID 32
Weapon.Kickback 0
Weapon.SelectionOrder 2200
Weapon.UpSound "weapons/sawup"
@ -137,10 +133,8 @@ ACTOR Chainsaw : Weapon 2005
//
// --------------------------------------------------------------------------
ACTOR Shotgun : DoomWeapon 2001
ACTOR Shotgun : DoomWeapon
{
Game Doom
SpawnID 27
Weapon.SelectionOrder 1300
Weapon.AmmoUse 1
Weapon.AmmoGive 8
@ -184,10 +178,8 @@ ACTOR Shotgun : DoomWeapon 2001
//
// --------------------------------------------------------------------------
ACTOR SuperShotgun : DoomWeapon 82
ACTOR SuperShotgun : DoomWeapon
{
Game Doom
SpawnID 33
Weapon.SelectionOrder 400
Weapon.AmmoUse 2
Weapon.AmmoGive 8
@ -238,10 +230,8 @@ ACTOR SuperShotgun : DoomWeapon 82
//
// --------------------------------------------------------------------------
ACTOR Chaingun : DoomWeapon 2002
ACTOR Chaingun : DoomWeapon
{
Game Doom
SpawnID 28
Weapon.SelectionOrder 700
Weapon.AmmoUse 1
Weapon.AmmoGive 20
@ -281,10 +271,8 @@ ACTOR Chaingun : DoomWeapon 2002
//
// --------------------------------------------------------------------------
ACTOR RocketLauncher : DoomWeapon 2003
ACTOR RocketLauncher : DoomWeapon
{
Game Doom
SpawnID 29
Weapon.SelectionOrder 2500
Weapon.AmmoUse 1
Weapon.AmmoGive 2
@ -321,8 +309,6 @@ ACTOR RocketLauncher : DoomWeapon 2003
ACTOR Rocket
{
Game Doom
SpawnID 127
Radius 11
Height 8
Speed 20
@ -355,8 +341,6 @@ ACTOR Rocket
ACTOR Grenade
{
Game Doom
SpawnID 216
Radius 8
Height 8
Speed 25
@ -404,10 +388,8 @@ ACTOR Grenade
//
// --------------------------------------------------------------------------
ACTOR PlasmaRifle : DoomWeapon 2004
ACTOR PlasmaRifle : DoomWeapon
{
Game Doom
SpawnID 30
Weapon.SelectionOrder 100
Weapon.AmmoUse 1
Weapon.AmmoGive 40
@ -442,8 +424,6 @@ ACTOR PlasmaRifle : DoomWeapon 2004
ACTOR PlasmaBall
{
Game Doom
SpawnID 51
Radius 13
Height 8
Speed 25
@ -508,11 +488,9 @@ ACTOR PlasmaBall2 : PlasmaBall1
//
// --------------------------------------------------------------------------
ACTOR BFG9000 : DoomWeapon 2006
ACTOR BFG9000 : DoomWeapon
{
Game Doom
Height 20
SpawnID 31
Weapon.SelectionOrder 2800
Weapon.AmmoUse 40
Weapon.AmmoGive 40
@ -556,8 +534,6 @@ ACTOR BFG9000 : DoomWeapon 2006
ACTOR BFGBall
{
Game Doom
SpawnID 128
Radius 13
Height 8
Speed 25

View file

@ -3,10 +3,8 @@
// Mancubus
//
//===========================================================================
ACTOR Fatso 67
ACTOR Fatso
{
Game Doom
SpawnID 112
Health 600
Radius 48
Height 64
@ -65,8 +63,6 @@ ACTOR Fatso 67
//===========================================================================
ACTOR FatShot
{
Game Doom
SpawnID 153
Radius 6
Height 8
Speed 20

View file

@ -3,9 +3,8 @@
// Commander Keen
//
//===========================================================================
ACTOR CommanderKeen 72
ACTOR CommanderKeen
{
Game Doom
Health 100
Radius 16
Height 72

View file

@ -3,10 +3,8 @@
// Lost Soul
//
//===========================================================================
ACTOR LostSoul 3006
ACTOR LostSoul
{
Game Doom
SpawnID 110
Health 100
Radius 16
Height 56
@ -50,7 +48,7 @@ ACTOR LostSoul 3006
}
}
Actor BetaSkull : LostSoul 9037
Actor BetaSkull : LostSoul
{
States
{

View file

@ -3,10 +3,8 @@
// Pain Elemental
//
//===========================================================================
ACTOR PainElemental 71
ACTOR PainElemental
{
Game Doom
SpawnID 115
Health 400
Radius 31
Height 56

View file

@ -4,10 +4,8 @@
// Zombie man
//
//===========================================================================
ACTOR ZombieMan 3004
ACTOR ZombieMan
{
Game Doom
SpawnID 4
Health 20
Radius 20
Height 56
@ -65,10 +63,8 @@ ACTOR ZombieMan 3004
// Sergeant / Shotgun guy
//
//===========================================================================
ACTOR ShotgunGuy 9
ACTOR ShotgunGuy
{
Game Doom
SpawnID 1
Health 30
Radius 20
Height 56
@ -127,10 +123,8 @@ ACTOR ShotgunGuy 9
// Chaingunner
//
//===========================================================================
ACTOR ChaingunGuy 65
ACTOR ChaingunGuy
{
Game Doom
SpawnID 2
Health 70
Radius 20
Height 56
@ -189,10 +183,8 @@ ACTOR ChaingunGuy 65
// SS Nazi
//
//===========================================================================
ACTOR WolfensteinSS 84
ACTOR WolfensteinSS
{
Game Doom
SpawnID 116
Health 50
Radius 20
Height 56

View file

@ -3,10 +3,8 @@
// Revenant
//
//===========================================================================
ACTOR Revenant 66
ACTOR Revenant
{
Game Doom
SpawnID 20
Health 300
Radius 20
Height 56
@ -70,8 +68,6 @@ ACTOR Revenant 66
//===========================================================================
ACTOR RevenantTracer
{
Game Doom
SpawnID 53
Radius 11
Height 8
Speed 10

View file

@ -1,10 +1,8 @@
// Scriptable marine -------------------------------------------------------
ACTOR ScriptedMarine 9100 native
ACTOR ScriptedMarine native
{
Game Doom
SpawnID 151
Health 100
Radius 16
Height 56
@ -172,9 +170,8 @@ ACTOR ScriptedMarine 9100 native
//---------------------------------------------------------------------------
ACTOR MarineFist : ScriptedMarine 9101
ACTOR MarineFist : ScriptedMarine
{
Game Doom
States
{
Melee:
@ -187,9 +184,8 @@ ACTOR MarineFist : ScriptedMarine 9101
//---------------------------------------------------------------------------
ACTOR MarineBerserk : MarineFist 9102
ACTOR MarineBerserk : MarineFist
{
Game Doom
States
{
Melee:
@ -200,9 +196,8 @@ ACTOR MarineBerserk : MarineFist 9102
}
//---------------------------------------------------------------------------
ACTOR MarineChainsaw : ScriptedMarine 9103
ACTOR MarineChainsaw : ScriptedMarine
{
Game Doom
States
{
Melee:
@ -216,9 +211,8 @@ ACTOR MarineChainsaw : ScriptedMarine 9103
//---------------------------------------------------------------------------
ACTOR MarinePistol : ScriptedMarine 9104
ACTOR MarinePistol : ScriptedMarine
{
Game Doom
States
{
Missile:
@ -229,9 +223,8 @@ ACTOR MarinePistol : ScriptedMarine 9104
//---------------------------------------------------------------------------
ACTOR MarineShotgun : ScriptedMarine 9105
ACTOR MarineShotgun : ScriptedMarine
{
Game Doom
States
{
Missile:
@ -244,9 +237,8 @@ ACTOR MarineShotgun : ScriptedMarine 9105
//---------------------------------------------------------------------------
ACTOR MarineSSG : ScriptedMarine 9106
ACTOR MarineSSG : ScriptedMarine
{
Game Doom
States
{
Missile:
@ -256,9 +248,8 @@ ACTOR MarineSSG : ScriptedMarine 9106
//---------------------------------------------------------------------------
ACTOR MarineChaingun : ScriptedMarine 9107
ACTOR MarineChaingun : ScriptedMarine
{
Game Doom
States
{
Missile:
@ -269,9 +260,8 @@ ACTOR MarineChaingun : ScriptedMarine 9107
//---------------------------------------------------------------------------
ACTOR MarineRocket : MarineFist 9108
ACTOR MarineRocket : MarineFist
{
Game Doom
States
{
Missile:
@ -282,9 +272,8 @@ ACTOR MarineRocket : MarineFist 9108
//---------------------------------------------------------------------------
ACTOR MarinePlasma : ScriptedMarine 9109
ACTOR MarinePlasma : ScriptedMarine
{
Game Doom
States
{
Missile:
@ -295,9 +284,8 @@ ACTOR MarinePlasma : ScriptedMarine 9109
//---------------------------------------------------------------------------
ACTOR MarineRailgun : ScriptedMarine 9110
ACTOR MarineRailgun : ScriptedMarine
{
Game Doom
States
{
Missile:
@ -308,9 +296,8 @@ ACTOR MarineRailgun : ScriptedMarine 9110
//---------------------------------------------------------------------------
ACTOR MarineBFG : ScriptedMarine 9111
ACTOR MarineBFG : ScriptedMarine
{
Game Doom
States
{
Missile:

View file

@ -3,10 +3,8 @@
// Spider boss
//
//===========================================================================
ACTOR SpiderMastermind 7
ACTOR SpiderMastermind
{
Game Doom
SpawnID 7
Health 3000
Radius 100
Height 100

View file

@ -1,28 +1,22 @@
ACTOR StealthArachnotron : Arachnotron 9050
ACTOR StealthArachnotron : Arachnotron
{
Game Doom
SpawnID 117
+STEALTH
RenderStyle Translucent
Alpha 0
Obituary "$OB_STEALTHBABY"
}
ACTOR StealthArchvile : Archvile 9051
ACTOR StealthArchvile : Archvile
{
Game Doom
SpawnID 118
+STEALTH
RenderStyle Translucent
Alpha 0
Obituary "$OB_STEALTHVILE"
}
ACTOR StealthBaron : BaronOfHell 9052
ACTOR StealthBaron : BaronOfHell
{
Game Doom
SpawnID 100
+STEALTH
RenderStyle Translucent
Alpha 0
@ -30,10 +24,8 @@ ACTOR StealthBaron : BaronOfHell 9052
HitObituary "$OB_STEALTHBARON"
}
ACTOR StealthCacodemon : Cacodemon 9053
ACTOR StealthCacodemon : Cacodemon
{
Game Doom
SpawnID 119
+STEALTH
RenderStyle Translucent
Alpha 0
@ -41,20 +33,16 @@ ACTOR StealthCacodemon : Cacodemon 9053
HitObituary "$OB_STEALTHCACO"
}
ACTOR StealthChaingunGuy : ChaingunGuy 9054
ACTOR StealthChaingunGuy : ChaingunGuy
{
Game Doom
SpawnID 120
+STEALTH
RenderStyle Translucent
Alpha 0
Obituary "$OB_STEALTHCHAINGUY"
}
ACTOR StealthDemon : Demon 9055
ACTOR StealthDemon : Demon
{
Game Doom
SpawnID 121
+STEALTH
RenderStyle Translucent
Alpha 0
@ -62,10 +50,8 @@ ACTOR StealthDemon : Demon 9055
HitObituary "$OB_STEALTHDEMON"
}
ACTOR StealthHellKnight : HellKnight 9056
ACTOR StealthHellKnight : HellKnight
{
Game Doom
SpawnID 101
+STEALTH
RenderStyle Translucent
Alpha 0
@ -73,10 +59,8 @@ ACTOR StealthHellKnight : HellKnight 9056
HitObituary "$OB_STEALTHKNIGHT"
}
ACTOR StealthDoomImp : DoomImp 9057
ACTOR StealthDoomImp : DoomImp
{
Game Doom
SpawnID 122
+STEALTH
RenderStyle Translucent
Alpha 0
@ -84,20 +68,16 @@ ACTOR StealthDoomImp : DoomImp 9057
HitObituary "$OB_STEALTHIMP"
}
ACTOR StealthFatso : Fatso 9058
ACTOR StealthFatso : Fatso
{
Game Doom
SpawnID 123
+STEALTH
RenderStyle Translucent
Alpha 0
Obituary "$OB_STEALTHFATSO"
}
ACTOR StealthRevenant : Revenant 9059
ACTOR StealthRevenant : Revenant
{
Game Doom
SpawnID 124
+STEALTH
RenderStyle Translucent
Alpha 0
@ -105,20 +85,16 @@ ACTOR StealthRevenant : Revenant 9059
HitObituary "$OB_STEALTHUNDEAD"
}
ACTOR StealthShotgunGuy : ShotgunGuy 9060
ACTOR StealthShotgunGuy : ShotgunGuy
{
Game Doom
SpawnID 103
+STEALTH
RenderStyle Translucent
Alpha 0
Obituary "$OB_STEALTHSHOTGUNGUY"
}
ACTOR StealthZombieMan : ZombieMan 9061
ACTOR StealthZombieMan : ZombieMan
{
Game Doom
SpawnID 102
+STEALTH
RenderStyle Translucent
Alpha 0

View file

@ -1,10 +1,8 @@
// Beast --------------------------------------------------------------------
ACTOR Beast 70
ACTOR Beast
{
Game Heretic
SpawnID 3
Health 220
Radius 32
Height 74
@ -61,8 +59,6 @@ ACTOR Beast 70
ACTOR BeastBall
{
Game Heretic
SpawnID 120
Radius 9
Height 8
Speed 12

View file

@ -113,8 +113,6 @@ ACTOR ChickenPlayer : PlayerPawn native
ACTOR Chicken : MorphedMonster
{
Game Heretic
SpawnID 122
Health 10
Radius 9
Height 22
@ -164,8 +162,6 @@ ACTOR Chicken : MorphedMonster
ACTOR Feather
{
Game Heretic
SpawnID 121
Radius 2
Height 4
+MISSILE +DROPOFF

View file

@ -1,8 +1,6 @@
ACTOR Clink 90
ACTOR Clink
{
Game Heretic
SpawnID 1
Health 150
Radius 20
Height 64

View file

@ -1,19 +1,15 @@
// Boss spot ----------------------------------------------------------------
ACTOR BossSpot : SpecialSpot 56
ACTOR BossSpot : SpecialSpot
{
Game Heretic
SpawnID 141
+INVISIBLE
}
// Sorcerer (D'Sparil on his serpent) ---------------------------------------
ACTOR Sorcerer1 7
ACTOR Sorcerer1
{
Game Heretic
SpawnID 142
Health 2000
Radius 28
Height 100
@ -84,8 +80,6 @@ ACTOR Sorcerer1 7
ACTOR SorcererFX1
{
Game Heretic
SpawnID 144
Radius 10
Height 10
Speed 20
@ -112,8 +106,6 @@ ACTOR SorcererFX1
ACTOR Sorcerer2
{
Game Heretic
SpawnID 143
Health 3500
Radius 16
Height 70
@ -192,8 +184,6 @@ ACTOR Sorcerer2
ACTOR Sorcerer2FX1
{
Game Heretic
SpawnID 145
Radius 10
Height 6
Speed 20
@ -241,8 +231,6 @@ ACTOR Sorcerer2FXSpark
ACTOR Sorcerer2FX2
{
Game Heretic
SpawnID 146
Radius 10
Height 6
Speed 6

View file

@ -1,10 +1,8 @@
// Wimpy ammo ---------------------------------------------------------------
ACTOR GoldWandAmmo : Ammo 10
ACTOR GoldWandAmmo : Ammo
{
Game Heretic
SpawnID 11
Inventory.PickupMessage "$TXT_AMMOGOLDWAND1"
Inventory.Amount 10
Inventory.MaxAmount 100
@ -21,10 +19,8 @@ ACTOR GoldWandAmmo : Ammo 10
// Hefty ammo ---------------------------------------------------------------
ACTOR GoldWandHefty : GoldWandAmmo 12
ACTOR GoldWandHefty : GoldWandAmmo
{
Game Heretic
SpawnID 12
Inventory.PickupMessage "$TXT_AMMOGOLDWAND2"
Inventory.Amount 50
States
@ -36,10 +32,8 @@ ACTOR GoldWandHefty : GoldWandAmmo 12
}
// Wimpy ammo ---------------------------------------------------------------
ACTOR CrossbowAmmo : Ammo 18
ACTOR CrossbowAmmo : Ammo
{
Game Heretic
SpawnID 33
Inventory.PickupMessage "$TXT_AMMOCROSSBOW1"
Inventory.Amount 5
Inventory.MaxAmount 50
@ -56,10 +50,8 @@ ACTOR CrossbowAmmo : Ammo 18
// Hefty ammo ---------------------------------------------------------------
ACTOR CrossbowHefty : CrossbowAmmo 19
ACTOR CrossbowHefty : CrossbowAmmo
{
Game Heretic
SpawnID 34
Inventory.PickupMessage "$TXT_AMMOCROSSBOW2"
Inventory.Amount 20
States
@ -71,10 +63,8 @@ ACTOR CrossbowHefty : CrossbowAmmo 19
}
// Wimpy ammo ---------------------------------------------------------------
ACTOR MaceAmmo : Ammo 13
ACTOR MaceAmmo : Ammo
{
Game Heretic
SpawnID 35
Inventory.PickupMessage "$TXT_AMMOMACE1"
Inventory.Amount 20
Inventory.MaxAmount 150
@ -91,10 +81,8 @@ ACTOR MaceAmmo : Ammo 13
// Hefty ammo ---------------------------------------------------------------
ACTOR MaceHefty : MaceAmmo 16
ACTOR MaceHefty : MaceAmmo
{
Game Heretic
SpawnID 36
Inventory.PickupMessage "$TXT_AMMOMACE2"
Inventory.Amount 100
States
@ -107,10 +95,8 @@ ACTOR MaceHefty : MaceAmmo 16
// Wimpy ammo ---------------------------------------------------------------
ACTOR BlasterAmmo : Ammo 54
ACTOR BlasterAmmo : Ammo
{
Game Heretic
SpawnID 37
Inventory.PickupMessage "$TXT_AMMOBLASTER1"
Inventory.Amount 10
Inventory.MaxAmount 200
@ -127,10 +113,8 @@ ACTOR BlasterAmmo : Ammo 54
// Hefty ammo ---------------------------------------------------------------
ACTOR BlasterHefty : BlasterAmmo 55
ACTOR BlasterHefty : BlasterAmmo
{
Game Heretic
SpawnID 38
Inventory.PickupMessage "$TXT_AMMOBLASTER2"
Inventory.Amount 25
States
@ -143,10 +127,8 @@ ACTOR BlasterHefty : BlasterAmmo 55
// Wimpy ammo ---------------------------------------------------------------
ACTOR SkullRodAmmo : Ammo 20
ACTOR SkullRodAmmo : Ammo
{
Game Heretic
SpawnID 158
Inventory.PickupMessage "$TXT_AMMOSKULLROD1"
Inventory.Amount 20
Inventory.MaxAmount 200
@ -163,10 +145,8 @@ ACTOR SkullRodAmmo : Ammo 20
// Hefty ammo ---------------------------------------------------------------
ACTOR SkullRodHefty : SkullRodAmmo 21
ACTOR SkullRodHefty : SkullRodAmmo
{
Game Heretic
SpawnID 159
Inventory.PickupMessage "$TXT_AMMOSKULLROD2"
Inventory.Amount 100
States
@ -179,10 +159,8 @@ ACTOR SkullRodHefty : SkullRodAmmo 21
// Wimpy ammo ---------------------------------------------------------------
ACTOR PhoenixRodAmmo : Ammo 22
ACTOR PhoenixRodAmmo : Ammo
{
Game Heretic
SpawnID 161
Inventory.PickupMessage "$TXT_AMMOPHOENIXROD1"
Inventory.Amount 1
Inventory.MaxAmount 20
@ -198,10 +176,8 @@ ACTOR PhoenixRodAmmo : Ammo 22
}
// Hefty ammo ---------------------------------------------------------------
ACTOR PhoenixRodHefty : PhoenixRodAmmo 23
ACTOR PhoenixRodHefty : PhoenixRodAmmo
{
Game Heretic
SpawnID 162
Inventory.PickupMessage "$TXT_AMMOPHOENIXROD2"
Inventory.Amount 10
States
@ -214,10 +190,8 @@ ACTOR PhoenixRodHefty : PhoenixRodAmmo 23
// --- Bag of holding -------------------------------------------------------
ACTOR BagOfHolding : BackpackItem 8
ACTOR BagOfHolding : BackpackItem
{
Game Heretic
SpawnID 136
Inventory.PickupMessage "$TXT_ITEMBAGOFHOLDING"
+COUNTITEM
+FLOATBOB

View file

@ -1,10 +1,8 @@
// Silver Shield (Shield1) --------------------------------------------------
Actor SilverShield : BasicArmorPickup 85
Actor SilverShield : BasicArmorPickup
{
Game Heretic
SpawnID 68
+FLOATBOB
Inventory.Pickupmessage "$TXT_ITEMSHIELD1"
Inventory.Icon "SHLDA0"
@ -20,10 +18,8 @@ Actor SilverShield : BasicArmorPickup 85
// Enchanted shield (Shield2) -----------------------------------------------
Actor EnchantedShield : BasicArmorPickup 31
Actor EnchantedShield : BasicArmorPickup
{
Game Heretic
SpawnID 69
+FLOATBOB
Inventory.Pickupmessage "$TXT_ITEMSHIELD2"
Inventory.Icon "SHD2A0"

View file

@ -1,9 +1,7 @@
// Super map ----------------------------------------------------------------
ACTOR SuperMap : MapRevealer 35
ACTOR SuperMap : MapRevealer
{
Game Heretic
SpawnID 137
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
+FLOATBOB
@ -20,10 +18,8 @@ ACTOR SuperMap : MapRevealer 35
// Invisibility -------------------------------------------------------------
ACTOR ArtiInvisibility : PowerupGiver 75
ACTOR ArtiInvisibility : PowerupGiver
{
Game Heretic
SpawnID 135
+COUNTITEM
+FLOATBOB
+INVENTORY.PICKUPFLASH
@ -45,10 +41,8 @@ ACTOR ArtiInvisibility : PowerupGiver 75
// Tome of power ------------------------------------------------------------
ACTOR ArtiTomeOfPower : PowerupGiver 86 native
ACTOR ArtiTomeOfPower : PowerupGiver native
{
Game Heretic
SpawnID 134
+COUNTITEM
+FLOATBOB
+INVENTORY.PICKUPFLASH
@ -88,10 +82,8 @@ ACTOR ActivatedTimeBomb
}
ACTOR ArtiTimeBomb : Inventory 34 native
ACTOR ArtiTimeBomb : Inventory native
{
Game Heretic
SpawnID 72
+COUNTITEM
+FLOATBOB
+INVENTORY.PICKUPFLASH

View file

@ -1,6 +1,5 @@
ACTOR SkullHang70 17
ACTOR SkullHang70
{
Game Heretic
Radius 20
Height 70
+SPAWNCEILING
@ -13,9 +12,8 @@ ACTOR SkullHang70 17
}
}
ACTOR SkullHang60 24
ACTOR SkullHang60
{
Game Heretic
Radius 20
Height 60
+SPAWNCEILING
@ -28,9 +26,8 @@ ACTOR SkullHang60 24
}
}
ACTOR SkullHang45 25
ACTOR SkullHang45
{
Game Heretic
Radius 20
Height 45
+SPAWNCEILING
@ -43,9 +40,8 @@ ACTOR SkullHang45 25
}
}
ACTOR SkullHang35 26
ACTOR SkullHang35
{
Game Heretic
Radius 20
Height 35
+SPAWNCEILING
@ -58,9 +54,8 @@ ACTOR SkullHang35 26
}
}
ACTOR Chandelier 28
ACTOR Chandelier
{
Game Heretic
Radius 20
Height 60
+SPAWNCEILING
@ -73,9 +68,8 @@ ACTOR Chandelier 28
}
}
ACTOR SerpentTorch 27
ACTOR SerpentTorch
{
Game Heretic
Radius 12
Height 54
+SOLID
@ -87,9 +81,8 @@ ACTOR SerpentTorch 27
}
}
ACTOR SmallPillar 29
ACTOR SmallPillar
{
Game Heretic
Radius 16
Height 34
+SOLID
@ -101,9 +94,8 @@ ACTOR SmallPillar 29
}
}
ACTOR StalagmiteSmall 37
ACTOR StalagmiteSmall
{
Game Heretic
Radius 8
Height 32
+SOLID
@ -115,9 +107,8 @@ ACTOR StalagmiteSmall 37
}
}
ACTOR StalagmiteLarge 38
ACTOR StalagmiteLarge
{
Game Heretic
Radius 12
Height 64
+SOLID
@ -129,9 +120,8 @@ ACTOR StalagmiteLarge 38
}
}
ACTOR StalactiteSmall 39
ACTOR StalactiteSmall
{
Game Heretic
Radius 8
Height 36
+SOLID
@ -145,9 +135,8 @@ ACTOR StalactiteSmall 39
}
}
ACTOR StalactiteLarge 40
ACTOR StalactiteLarge
{
Game Heretic
Radius 12
Height 68
+SOLID
@ -161,9 +150,8 @@ ACTOR StalactiteLarge 40
}
}
ACTOR FireBrazier 76
ACTOR FireBrazier
{
Game Heretic
Radius 16
Height 44
+SOLID
@ -175,9 +163,8 @@ ACTOR FireBrazier 76
}
}
ACTOR Barrel 44
ACTOR Barrel
{
Game Heretic
Radius 12
Height 32
+SOLID
@ -189,9 +176,8 @@ ACTOR Barrel 44
}
}
ACTOR BrownPillar 47
ACTOR BrownPillar
{
Game Heretic
Radius 14
Height 128
+SOLID
@ -203,9 +189,8 @@ ACTOR BrownPillar 47
}
}
ACTOR Moss1 48
ACTOR Moss1
{
Game Heretic
Radius 20
Height 23
+SPAWNCEILING
@ -218,9 +203,8 @@ ACTOR Moss1 48
}
}
ACTOR Moss2 49
ACTOR Moss2
{
Game Heretic
Radius 20
Height 27
+SPAWNCEILING
@ -233,9 +217,8 @@ ACTOR Moss2 49
}
}
ACTOR WallTorch 50
ACTOR WallTorch
{
Game Heretic
Radius 6
Height 16
+NOGRAVITY
@ -248,9 +231,8 @@ ACTOR WallTorch 50
}
}
ACTOR HangingCorpse 51
ACTOR HangingCorpse
{
Game Heretic
Radius 8
Height 104
+SOLID

View file

@ -1,10 +1,8 @@
// Heretic imp (as opposed to the Doom variety) -----------------------------
ACTOR HereticImp 66
ACTOR HereticImp
{
Game Heretic
SpawnID 5
Health 40
Radius 16
Height 36
@ -78,10 +76,8 @@ ACTOR HereticImp 66
// Heretic imp leader -------------------------------------------------------
ACTOR HereticImpLeader : HereticImp 5
ACTOR HereticImpLeader : HereticImp
{
Game Heretic
SpawnID 7
Species "HereticImpLeader"
Health 80
-MISSILEMORE
@ -135,8 +131,6 @@ ACTOR HereticImpChunk2
ACTOR HereticImpBall
{
Game Heretic
SpawnID 10
Radius 8
Height 8
Speed 10

View file

@ -8,10 +8,8 @@ ACTOR HereticKey : Key
// Green key ------------------------------------------------------------
ACTOR KeyGreen : HereticKey 73
ACTOR KeyGreen : HereticKey
{
Game Heretic
SpawnID 86
Inventory.PickupMessage "$TXT_GOTGREENKEY"
Inventory.Icon "GKEYICON"
States
@ -24,10 +22,8 @@ ACTOR KeyGreen : HereticKey 73
// Blue key -----------------------------------------------------------------
ACTOR KeyBlue : HereticKey 79
ACTOR KeyBlue : HereticKey
{
Game Heretic
SpawnID 85
Inventory.PickupMessage "$TXT_GOTBLUEKEY"
Inventory.Icon "BKEYICON"
States
@ -40,10 +36,8 @@ ACTOR KeyBlue : HereticKey 79
// Yellow key ---------------------------------------------------------------
ACTOR KeyYellow : HereticKey 80
ACTOR KeyYellow : HereticKey
{
Game Heretic
SpawnID 87
Inventory.PickupMessage "$TXT_GOTYELLOWKEY"
Inventory.Icon "YKEYICON"
States
@ -57,9 +51,8 @@ ACTOR KeyYellow : HereticKey 80
// --- Blue Key gizmo -----------------------------------------------------------
ACTOR KeyGizmoBlue 94
ACTOR KeyGizmoBlue
{
Game Heretic
Radius 16
Height 50
+SOLID
@ -89,9 +82,8 @@ ACTOR KeyGizmoFloatBlue
// --- Green Key gizmo -----------------------------------------------------------
ACTOR KeyGizmoGreen 95
ACTOR KeyGizmoGreen
{
Game Heretic
Radius 16
Height 50
+SOLID
@ -121,9 +113,8 @@ ACTOR KeyGizmoFloatGreen
// --- Yellow Key gizmo -----------------------------------------------------------
ACTOR KeyGizmoYellow 96
ACTOR KeyGizmoYellow
{
Game Heretic
Radius 16
Height 50
+SOLID

View file

@ -1,10 +1,8 @@
// Pod ----------------------------------------------------------------------
ACTOR Pod 2035
ACTOR Pod
{
Game Heretic
SpawnID 125
Health 45
Radius 16
Height 54
@ -62,10 +60,8 @@ ACTOR PodGoo
// Pod generator ------------------------------------------------------------
ACTOR PodGenerator 43
ACTOR PodGenerator
{
Game Heretic
SpawnID 126
+NOBLOCKMAP
+NOSECTOR
+DONTSPLASH
@ -84,10 +80,8 @@ ACTOR PodGenerator 43
// Teleglitter generator 1 --------------------------------------------------
ACTOR TeleGlitterGenerator1 74
ACTOR TeleGlitterGenerator1
{
Game Heretic
SpawnID 166
+NOBLOCKMAP
+NOGRAVITY
+DONTSPLASH
@ -102,10 +96,8 @@ ACTOR TeleGlitterGenerator1 74
// Teleglitter generator 2 --------------------------------------------------
ACTOR TeleGlitterGenerator2 52
ACTOR TeleGlitterGenerator2
{
Game Heretic
SpawnID 167
+NOBLOCKMAP
+NOGRAVITY
+DONTSPLASH
@ -160,10 +152,8 @@ ACTOR TeleGlitter2 : TeleGlitter1
// --- Volcano --------------------------------------------------------------
ACTOR Volcano 87
ACTOR Volcano
{
Game Heretic
SpawnID 150
Radius 12
Height 20
+SOLID
@ -187,8 +177,6 @@ ACTOR Volcano 87
ACTOR VolcanoBlast
{
Game Heretic
SpawnID 123
Radius 8
Height 8
Speed 2
@ -219,8 +207,6 @@ ACTOR VolcanoBlast
ACTOR VolcanoTBlast
{
Game Heretic
SpawnID 124
Radius 8
Height 6
Speed 2

View file

@ -9,7 +9,6 @@ ACTOR HereticWeapon : Weapon
ACTOR Staff : HereticWeapon
{
Game Heretic
Weapon.SelectionOrder 3800
+THRUGHOST
+WIMPY_WEAPON
@ -41,7 +40,6 @@ ACTOR Staff : HereticWeapon
ACTOR StaffPowered : Staff
{
Game Heretic
Weapon.sisterweapon "Staff"
Weapon.ReadySound "weapons/staffcrackle"
+WEAPON.POWERED_UP
@ -110,9 +108,8 @@ ACTOR StaffPuff2
// Gold wand ----------------------------------------------------------------
ACTOR GoldWand : HereticWeapon 9042
ACTOR GoldWand : HereticWeapon
{
Game Heretic
+BLOODSPLATTER
Weapon.SelectionOrder 2000
Weapon.AmmoGive 25
@ -151,7 +148,6 @@ ACTOR GoldWand : HereticWeapon 9042
ACTOR GoldWandPowered : GoldWand
{
Game Heretic
+WEAPON.POWERED_UP
Weapon.AmmoGive 0
Weapon.SisterWeapon "GoldWand"
@ -176,8 +172,6 @@ ACTOR GoldWandPowered : GoldWand
ACTOR GoldWandFX1
{
Game Heretic
SpawnID 151
Radius 10
Height 6
Speed 22
@ -201,8 +195,6 @@ ACTOR GoldWandFX1
ACTOR GoldWandFX2 : GoldWandFX1
{
Game Heretic
SpawnID 152
Speed 18
Damage 1
DeathSound ""
@ -248,10 +240,8 @@ ACTOR GoldWandPuff2 : GoldWandFX1
// Crossbow -----------------------------------------------------------------
ACTOR Crossbow : HereticWeapon 2001
ACTOR Crossbow : HereticWeapon
{
Game Heretic
SpawnID 27
Weapon.SelectionOrder 800
Weapon.AmmoUse 1
Weapon.AmmoGive 10
@ -289,7 +279,6 @@ ACTOR Crossbow : HereticWeapon 2001
ACTOR CrossbowPowered : Crossbow
{
Game Heretic
+WEAPON.POWERED_UP
Weapon.AmmoGive 0
Weapon.SisterWeapon "Crossbow"
@ -317,8 +306,6 @@ ACTOR CrossbowPowered : Crossbow
ACTOR CrossbowFX1
{
Game Heretic
SpawnID 147
Radius 11
Height 8
Speed 30
@ -344,8 +331,6 @@ ACTOR CrossbowFX1
ACTOR CrossbowFX2 : CrossbowFX1
{
Game Heretic
SpawnID 148
Speed 32
Damage 6
Obituary "$OB_MPPCROSSBOW"
@ -361,8 +346,6 @@ ACTOR CrossbowFX2 : CrossbowFX1
ACTOR CrossbowFX3 : CrossbowFX1
{
Game Heretic
SpawnID 149
Speed 20
Damage 2
SeeSound ""
@ -400,10 +383,8 @@ ACTOR CrossbowFX4
// Gauntlets ----------------------------------------------------------------
ACTOR Gauntlets : Weapon 2005
ACTOR Gauntlets : Weapon
{
Game Heretic
SpawnID 32
+BLOODSPLATTER
Weapon.SelectionOrder 2300
+WEAPON.WIMPY_WEAPON
@ -446,7 +427,6 @@ ACTOR Gauntlets : Weapon 2005
ACTOR GauntletsPowered : Gauntlets
{
Game Heretic
+POWERED_UP
Tag "$TAG_GAUNTLETSP"
Obituary "$OB_MPPGAUNTLETS"
@ -509,8 +489,6 @@ ACTOR GauntletPuff2 : GauntletPuff1
ACTOR Mace : HereticWeapon
{
Game Heretic
SpawnID 31
Weapon.SelectionOrder 1400
Weapon.AmmoUse 1
Weapon.AmmoGive1 50
@ -548,7 +526,6 @@ ACTOR Mace : HereticWeapon
ACTOR MacePowered : Mace
{
Game Heretic
+WEAPON.POWERED_UP
Weapon.AmmoUse 5
Weapon.AmmoGive 0
@ -573,8 +550,6 @@ ACTOR MacePowered : Mace
ACTOR MaceFX1
{
Game Heretic
SpawnID 154
Radius 8
Height 6
Speed 20
@ -604,8 +579,6 @@ ACTOR MaceFX1
ACTOR MaceFX2 : MaceFX1
{
Game Heretic
SpawnID 156
Speed 10
Damage 6
Gravity 0.125
@ -629,8 +602,6 @@ ACTOR MaceFX2 : MaceFX1
ACTOR MaceFX3 : MaceFX1
{
Game Heretic
SpawnID 155
Speed 7
Damage 4
-NOGRAVITY
@ -648,8 +619,6 @@ ACTOR MaceFX3 : MaceFX1
ACTOR MaceFX4 native
{
Game Heretic
SpawnID 153
Radius 8
Height 6
Speed 7
@ -681,9 +650,8 @@ ACTOR MaceFX4 native
// Mace spawn spot ----------------------------------------------------------
ACTOR MaceSpawner : SpecialSpot 2002
ACTOR MaceSpawner : SpecialSpot
{
Game Heretic
+NOSECTOR
+NOBLOCKMAP
States
@ -698,10 +666,8 @@ ACTOR MaceSpawner : SpecialSpot 2002
// Blaster ------------------------------------------------------------------
ACTOR Blaster : HereticWeapon 53
ACTOR Blaster : HereticWeapon
{
Game Heretic
SpawnID 28
+BLOODSPLATTER
Weapon.SelectionOrder 500
Weapon.AmmoUse 1
@ -741,7 +707,6 @@ ACTOR Blaster : HereticWeapon 53
ACTOR BlasterPowered : Blaster
{
Game Heretic
+WEAPON.POWERED_UP
Weapon.AmmoUse 5
Weapon.AmmoGive 0
@ -809,8 +774,6 @@ ACTOR BlasterSmoke
ACTOR Ripper native
{
Game Heretic
SpawnID 157
Radius 8
Height 6
Speed 14
@ -854,10 +817,8 @@ ACTOR BlasterPuff
// Skull (Horn) Rod ---------------------------------------------------------
ACTOR SkullRod : HereticWeapon 2004
ACTOR SkullRod : HereticWeapon
{
Game Heretic
SpawnID 30
Weapon.SelectionOrder 200
Weapon.AmmoUse1 1
Weapon.AmmoGive1 50
@ -892,7 +853,6 @@ ACTOR SkullRod : HereticWeapon 2004
ACTOR SkullRodPowered : SkullRod
{
Game Heretic
+WEAPON.POWERED_UP
Weapon.AmmoUse1 5
Weapon.AmmoGive1 0
@ -921,8 +881,6 @@ ACTOR SkullRodPowered : SkullRod
ACTOR HornRodFX1
{
Game Heretic
SpawnID 160
Radius 12
Height 8
Speed 22
@ -1028,10 +986,8 @@ ACTOR RainTracker : Inventory native
// Phoenix Rod --------------------------------------------------------------
ACTOR PhoenixRod : Weapon 2003 native
ACTOR PhoenixRod : Weapon native
{
Game Heretic
SpawnID 29
+WEAPON.NOAUTOFIRE
Weapon.SelectionOrder 2600
Weapon.Kickback 150
@ -1070,7 +1026,6 @@ ACTOR PhoenixRod : Weapon 2003 native
ACTOR PhoenixRodPowered : PhoenixRod native
{
Game Heretic
+WEAPON.POWERED_UP
+WEAPON.MELEEWEAPON
Weapon.SisterWeapon "PhoenixRod"
@ -1098,8 +1053,6 @@ ACTOR PhoenixRodPowered : PhoenixRod native
ACTOR PhoenixFX1 native
{
Game Heretic
SpawnID 163
Radius 11
Height 8
Speed 20

View file

@ -1,10 +1,8 @@
// Ironlich -----------------------------------------------------------------
ACTOR Ironlich 6
ACTOR Ironlich
{
Game Heretic
SpawnID 20
Health 700
Radius 40
Height 72
@ -59,8 +57,6 @@ ACTOR Ironlich 6
ACTOR HeadFX1
{
Game Heretic
SpawnID 164
Radius 12
Height 6
Speed 13
@ -147,8 +143,6 @@ ACTOR HeadFX3
ACTOR Whirlwind native
{
Game Heretic
SpawnID 165
Radius 16
Height 74
Speed 10

View file

@ -1,10 +1,8 @@
// Knight -------------------------------------------------------------------
ACTOR Knight 64
ACTOR Knight
{
Game Heretic
SpawnID 6
Health 200
Radius 24
Height 78
@ -60,10 +58,8 @@ ACTOR Knight 64
// Knight ghost -------------------------------------------------------------
ACTOR KnightGhost : Knight 65
ACTOR KnightGhost : Knight
{
Game Heretic
SpawnID 129
+SHADOW
+GHOST
RenderStyle Translucent
@ -74,8 +70,6 @@ ACTOR KnightGhost : Knight 65
ACTOR KnightAxe
{
Game Heretic
SpawnID 127
Radius 10
Height 8
Speed 9
@ -105,8 +99,6 @@ ACTOR KnightAxe
ACTOR RedAxe : KnightAxe
{
Game Heretic
SpawnID 128
+NOBLOCKMAP
-WINDTHRUST
Damage 7

View file

@ -1,10 +1,8 @@
// Mummy --------------------------------------------------------------------
ACTOR Mummy 68
ACTOR Mummy
{
Game Heretic
SpawnID 4
Health 80
Radius 22
Height 62
@ -51,10 +49,8 @@ ACTOR Mummy 68
// Mummy leader -------------------------------------------------------------
ACTOR MummyLeader : Mummy 45
ACTOR MummyLeader : Mummy
{
Game Heretic
SpawnID 2
Species "MummyLeader"
Health 100
Painchance 64
@ -74,10 +70,8 @@ ACTOR MummyLeader : Mummy 45
// Mummy ghost --------------------------------------------------------------
ACTOR MummyGhost : Mummy 69
ACTOR MummyGhost : Mummy
{
Game Heretic
SpawnID 8
+SHADOW
+GHOST
RenderStyle Translucent
@ -86,10 +80,8 @@ ACTOR MummyGhost : Mummy 69
// Mummy leader ghost -------------------------------------------------------
ACTOR MummyLeaderGhost : MummyLeader 46
ACTOR MummyLeaderGhost : MummyLeader
{
Game Heretic
SpawnID 9
Species "MummyLeaderGhost"
+SHADOW
+GHOST
@ -116,8 +108,6 @@ ACTOR MummySoul
ACTOR MummyFX1
{
Game Heretic
SpawnID 131
Radius 8
Height 14
Speed 9

View file

@ -1,8 +1,6 @@
ACTOR Snake 92
ACTOR Snake
{
Game Heretic
SpawnID 132
Health 280
Radius 22
Height 70
@ -50,8 +48,6 @@ ACTOR Snake 92
ACTOR SnakeProjA
{
Game Heretic
SpawnID 138
Radius 12
Height 8
Speed 14
@ -82,8 +78,6 @@ ACTOR SnakeProjA
ACTOR SnakeProjB : SnakeProjA
{
Game Heretic
SpawnID 139
Damage 3
+NOBLOCKMAP
-WINDTHRUST

View file

@ -1,10 +1,8 @@
// Wizard --------------------------------------------------------
ACTOR Wizard 15
ACTOR Wizard
{
Game Heretic
SpawnID 19
Health 180
Radius 16
Height 68
@ -75,8 +73,6 @@ ACTOR Wizard 15
ACTOR WizardFX1
{
Game Heretic
SpawnID 140
Radius 10
Height 6
Speed 18

View file

@ -1,9 +1,8 @@
// Bat Spawner --------------------------------------------------------------
ACTOR BatSpawner : SwitchableDecoration 10225
ACTOR BatSpawner : SwitchableDecoration
{
Game Hexen
+NOBLOCKMAP +NOSECTOR +NOGRAVITY
RenderStyle None

View file

@ -1,10 +1,8 @@
// Bishop -------------------------------------------------------------------
ACTOR Bishop 114
ACTOR Bishop
{
Game Hexen
SpawnID 19
Health 130
Radius 22
Height 65
@ -81,7 +79,6 @@ ACTOR Bishop 114
ACTOR BishopPuff
{
Game Hexen
+NOBLOCKMAP +NOGRAVITY
RenderStyle Translucent
Alpha 0.6
@ -99,7 +96,6 @@ ACTOR BishopPuff
ACTOR BishopPainBlur
{
Game Hexen
+NOBLOCKMAP +NOGRAVITY
RenderStyle Translucent
Alpha 0.6
@ -115,7 +111,6 @@ ACTOR BishopPainBlur
ACTOR BishopFX
{
Game Hexen
Radius 10
Height 6
Speed 10

View file

@ -1,8 +1,6 @@
ACTOR ArtiBlastRadius : CustomInventory 10110
ACTOR ArtiBlastRadius : CustomInventory
{
Game Hexen
SpawnID 74
+FLOATBOB
Inventory.DefMaxAmount
Inventory.PickupFlash "PickupFlash"

View file

@ -1,10 +1,8 @@
// Boost Armor Artifact (Dragonskin Bracers) --------------------------------
ACTOR ArtiBoostArmor : Inventory 8041 native
ACTOR ArtiBoostArmor : Inventory native
{
Game Hexen
SpawnID 22
+COUNTITEM
+FLOATBOB
Inventory.DefMaxAmount

View file

@ -1,9 +1,7 @@
// Centaur ------------------------------------------------------------------
ACTOR Centaur 107
ACTOR Centaur
{
Game Hexen
SpawnID 1
Health 200
Painchance 135
Speed 13
@ -78,10 +76,8 @@ ACTOR Centaur 107
// Centaur Leader -----------------------------------------------------------
ACTOR CentaurLeader : Centaur 115
ACTOR CentaurLeader : Centaur
{
Game Hexen
SpawnID 2
Health 250
PainChance 96
Speed 10
@ -105,8 +101,6 @@ ACTOR CentaurLeader : Centaur 115
ACTOR CentaurMash : Centaur
{
Game Hexen
SpawnID 103
+NOBLOOD
+BLASTED
-TELESTOMP

View file

@ -1,9 +1,8 @@
// Cleric Boss (Traductus) --------------------------------------------------
ACTOR ClericBoss 10101
ACTOR ClericBoss
{
Game Hexen
Health 800
PainChance 50
Speed 25

View file

@ -1,9 +1,8 @@
// The Cleric's Flame Strike ------------------------------------------------
ACTOR CWeapFlame : ClericWeapon 8009
ACTOR CWeapFlame : ClericWeapon
{
Game Hexen
+NOGRAVITY
Weapon.SelectionOrder 1000
Weapon.AmmoUse 4

View file

@ -12,10 +12,8 @@ ACTOR ClericWeaponPiece : WeaponPiece
// Cleric Weapon Piece 1 ----------------------------------------------------
ACTOR CWeaponPiece1 : ClericWeaponPiece 18
ACTOR CWeaponPiece1 : ClericWeaponPiece
{
Game Hexen
SpawnID 33
WeaponPiece.Number 1
States
{
@ -27,10 +25,8 @@ ACTOR CWeaponPiece1 : ClericWeaponPiece 18
// Cleric Weapon Piece 2 ----------------------------------------------------
ACTOR CWeaponPiece2 : ClericWeaponPiece 19
ACTOR CWeaponPiece2 : ClericWeaponPiece
{
Game Hexen
SpawnID 34
WeaponPiece.Number 2
States
{
@ -42,10 +38,8 @@ ACTOR CWeaponPiece2 : ClericWeaponPiece 19
// Cleric Weapon Piece 3 ----------------------------------------------------
ACTOR CWeaponPiece3 : ClericWeaponPiece 20
ACTOR CWeaponPiece3 : ClericWeaponPiece
{
Game Hexen
SpawnID 35
WeaponPiece.Number 3
States
{
@ -72,7 +66,6 @@ ACTOR WraithvergeDrop
ACTOR CWeapWraithverge : ClericWeapon native
{
Game Hexen
Health 3
Weapon.SelectionOrder 3000
+WEAPON.PRIMARY_USES_BOTH

View file

@ -3,7 +3,6 @@
ACTOR CWeapMace : ClericWeapon
{
Game Hexen
Weapon.SelectionOrder 3500
Weapon.KickBack 150
Weapon.YAdjust -8

View file

@ -1,10 +1,8 @@
// The Cleric's Serpent Staff -----------------------------------------------
ACTOR CWeapStaff : ClericWeapon 10
ACTOR CWeapStaff : ClericWeapon
{
Game Hexen
SpawnID 32
Weapon.SelectionOrder 1600
Weapon.AmmoUse1 1
Weapon.AmmoGive1 25

View file

@ -1,10 +1,8 @@
// Demon, type 1 (green, like D'Sparil's) -----------------------------------
ACTOR Demon1 31
ACTOR Demon1
{
Game Hexen
SpawnID 3
Health 250
Painchance 50
Speed 13
@ -70,8 +68,6 @@ ACTOR Demon1 31
ACTOR Demon1Mash : Demon1
{
Game Hexen
SpawnID 100
+NOBLOOD
+BLASTED
-TELESTOMP
@ -212,9 +208,8 @@ ACTOR Demon1FX1
// Demon, type 2 (brown) ----------------------------------------------------
ACTOR Demon2 : Demon1 8080
ACTOR Demon2 : Demon1
{
Game Hexen
Obituary "$OB_DEMON2"
Species "Demon2"
States
@ -262,8 +257,6 @@ ACTOR Demon2 : Demon1 8080
ACTOR Demon2Mash : Demon2
{
Game Hexen
SpawnID 101
+NOBLOOD
+BLASTED
-TELESTOMP

View file

@ -1,9 +1,8 @@
// Dragon -------------------------------------------------------------------
ACTOR Dragon 254
ACTOR Dragon
{
Game Hexen
Health 640
PainChance 128
Speed 10

View file

@ -1,10 +1,8 @@
// Ettin --------------------------------------------------------------------
ACTOR Ettin 10030
ACTOR Ettin
{
Game Hexen
SpawnID 4
Health 175
Radius 25
Height 68
@ -91,8 +89,6 @@ ACTOR EttinMace
ACTOR EttinMash : Ettin
{
Game Hexen
SpawnID 102
+NOBLOOD
+NOICEDEATH
RenderStyle Translucent

View file

@ -1,10 +1,8 @@
// The Fighter's Axe --------------------------------------------------------
ACTOR FWeapAxe : FighterWeapon 8010 native
ACTOR FWeapAxe : FighterWeapon native
{
Game Hexen
SpawnID 27
Weapon.SelectionOrder 1500
+WEAPON.AXEBLOOD +WEAPON.AMMO_OPTIONAL +WEAPON.MELEEWEAPON
Weapon.AmmoUse1 2

View file

@ -1,9 +1,8 @@
// Fighter Boss (Zedek) -----------------------------------------------------
ACTOR FighterBoss 10100
ACTOR FighterBoss
{
Game Hexen
health 800
PainChance 50
Speed 25

View file

@ -3,7 +3,6 @@
ACTOR FWeapFist : FighterWeapon
{
Game Hexen
+BLOODSPLATTER
Weapon.SelectionOrder 3400
+WEAPON.MELEEWEAPON

View file

@ -1,10 +1,8 @@
// The Fighter's Hammer -----------------------------------------------------
ACTOR FWeapHammer : FighterWeapon 123
ACTOR FWeapHammer : FighterWeapon
{
Game Hexen
SpawnID 28
+BLOODSPLATTER
Weapon.SelectionOrder 900
+WEAPON.AMMO_OPTIONAL +WEAPON.MELEEWEAPON

View file

@ -104,7 +104,6 @@ ACTOR FighterPlayer : PlayerPawn
Actor BloodyFighterSkull : PlayerChunk
{
Game Hexen
Radius 4
Height 4
+NOBLOCKMAP

View file

@ -12,10 +12,8 @@ ACTOR FighterWeaponPiece : WeaponPiece
// Fighter Weapon Piece 1 ---------------------------------------------------
ACTOR FWeaponPiece1 : FighterWeaponPiece 12
ACTOR FWeaponPiece1 : FighterWeaponPiece
{
Game Hexen
SpawnID 29
WeaponPiece.Number 1
States
{
@ -27,10 +25,8 @@ ACTOR FWeaponPiece1 : FighterWeaponPiece 12
// Fighter Weapon Piece 2 ---------------------------------------------------
ACTOR FWeaponPiece2 : FighterWeaponPiece 13
ACTOR FWeaponPiece2 : FighterWeaponPiece
{
Game Hexen
SpawnID 30
WeaponPiece.Number 2
States
{
@ -42,10 +38,8 @@ ACTOR FWeaponPiece2 : FighterWeaponPiece 13
// Fighter Weapon Piece 3 ---------------------------------------------------
ACTOR FWeaponPiece3 : FighterWeaponPiece 16
ACTOR FWeaponPiece3 : FighterWeaponPiece
{
Game Hexen
SpawnID 31
WeaponPiece.Number 3
States
{
@ -72,7 +66,6 @@ ACTOR QuietusDrop
ACTOR FWeapQuietus : FighterWeapon
{
Game Hexen
Health 3
Weapon.SelectionOrder 2900
+WEAPON.PRIMARY_USES_BOTH

View file

@ -1,10 +1,8 @@
// FireDemon ----------------------------------------------------------------
ACTOR FireDemon 10060
ACTOR FireDemon
{
Game Hexen
SpawnID 5
Health 80
ReactionTime 8
PainChance 1
@ -76,7 +74,6 @@ ACTOR FireDemon 10060
ACTOR FireDemonSplotch1
{
Game Hexen
Health 1000
ReactionTime 8
Radius 3
@ -112,7 +109,6 @@ ACTOR FireDemonSplotch2 : FireDemonSplotch1
ACTOR FireDemonRock1
{
Game Hexen
Health 1000
ReactionTime 8
Radius 3
@ -140,7 +136,6 @@ ACTOR FireDemonRock1
ACTOR FireDemonRock2 : FireDemonRock1
{
Game Hexen
States
{
Spawn:
@ -158,7 +153,6 @@ ACTOR FireDemonRock2 : FireDemonRock1
ACTOR FireDemonRock3 : FireDemonRock1
{
Game Hexen
States
{
Spawn:
@ -176,7 +170,6 @@ ACTOR FireDemonRock3 : FireDemonRock1
ACTOR FireDemonRock4 : FireDemonRock1
{
Game Hexen
States
{
Spawn:
@ -194,7 +187,6 @@ ACTOR FireDemonRock4 : FireDemonRock1
ACTOR FireDemonRock5 : FireDemonRock1
{
Game Hexen
States
{
Spawn:

View file

@ -1,9 +1,7 @@
// Temp Small Flame --------------------------------------------------------
ACTOR FlameSmallTemp 10500
ACTOR FlameSmallTemp
{
Game Hexen
SpawnID 96
+NOTELEPORT
RenderStyle Add
States
@ -21,10 +19,8 @@ ACTOR FlameSmallTemp 10500
// Temp Large Flame ---------------------------------------------------------
ACTOR FlameLargeTemp 10502
ACTOR FlameLargeTemp
{
Game Hexen
SpawnID 98
+NOTELEPORT
RenderStyle Add
States
@ -52,10 +48,8 @@ ACTOR FlameLargeTemp 10502
// Small Flame --------------------------------------------------------------
ACTOR FlameSmall : SwitchableDecoration 10501
ACTOR FlameSmall : SwitchableDecoration
{
Game Hexen
SpawnID 97
+NOTELEPORT
+INVISIBLE
Radius 15
@ -79,16 +73,12 @@ ACTOR FlameSmall : SwitchableDecoration 10501
ACTOR FlameSmall2 : FlameSmall
{
Game Hexen
SpawnID 66
}
// Large Flame --------------------------------------------------------------
ACTOR FlameLarge : SwitchableDecoration 10503
ACTOR FlameLarge : SwitchableDecoration
{
Game Hexen
SpawnID 99
+NOTELEPORT
+INVISIBLE
Radius 15
@ -112,7 +102,5 @@ ACTOR FlameLarge : SwitchableDecoration 10503
ACTOR FlameLarge2 : FlameLarge
{
Game Hexen
SpawnID 67
}

View file

@ -3,7 +3,6 @@
ACTOR PoisonBag
{
Game Hexen
Radius 5
Height 5
+NOBLOCKMAP +NOGRAVITY
@ -51,7 +50,6 @@ ACTOR FireBomb
ACTOR ThrowingBomb
{
Game Hexen
Health 48
Speed 12
Radius 8
@ -94,10 +92,8 @@ ACTOR ThrowingBomb
// Poison Bag Artifact (Flechette) ------------------------------------------
ACTOR ArtiPoisonBag : Inventory 8000 native
ACTOR ArtiPoisonBag : Inventory native
{
Game Hexen
SpawnID 72
+FLOATBOB
Inventory.DefMaxAmount
Inventory.PickupFlash "PickupFlash"
@ -189,9 +185,8 @@ ACTOR PoisonCloud native
// Poison Shroom ------------------------------------------------------------
ACTOR ZPoisonShroom : PoisonBag 8104
ACTOR ZPoisonShroom : PoisonBag
{
Game Hexen
Radius 6
Height 20
PainChance 255

View file

@ -1,9 +1,8 @@
// Buzzy fly ----------------------------------------------------------------
ACTOR LittleFly 112
ACTOR LittleFly
{
Game Hexen
+NOBLOCKMAP +NOGRAVITY
+CANPASS

View file

@ -1,9 +1,8 @@
// Fog Spawner --------------------------------------------------------------
ACTOR FogSpawner 10000
ACTOR FogSpawner
{
Game Hexen
+NOSECTOR +NOBLOCKMAP
+FLOATBOB
+NOGRAVITY
@ -21,9 +20,8 @@ ACTOR FogSpawner 10000
// Small Fog Patch ----------------------------------------------------------
ACTOR FogPatchSmall 10001
ACTOR FogPatchSmall
{
Game Hexen
Speed 1
+NOBLOCKMAP +NOGRAVITY +NOCLIP +FLOAT
+NOTELEPORT
@ -45,9 +43,8 @@ ACTOR FogPatchSmall 10001
// Medium Fog Patch ---------------------------------------------------------
ACTOR FogPatchMedium : FogPatchSmall 10002
ACTOR FogPatchMedium : FogPatchSmall
{
Game Hexen
States
{
Spawn:
@ -61,9 +58,8 @@ ACTOR FogPatchMedium : FogPatchSmall 10002
// Large Fog Patch ----------------------------------------------------------
ACTOR FogPatchLarge : FogPatchMedium 10003
ACTOR FogPatchLarge : FogPatchMedium
{
Game Hexen
States
{
Spawn:

Some files were not shown because too many files have changed in this diff Show more