Merge commit '4f7ec3ad891d556c0d3f680e209a120ed38e9cdb' into scripting

Conflicts:
	src/d_main.cpp
	src/info.cpp
	src/info.h
	src/p_acs.cpp
	src/p_interaction.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_properties.cpp

(scripting branch update part 5)
This commit is contained in:
Christoph Oelckers 2015-04-28 12:48:33 +02:00
commit 065c0a79cd
192 changed files with 2496 additions and 1235 deletions

View file

@ -748,6 +748,7 @@ set( NOT_COMPILED_SOURCE_FILES
g_hexen/a_fighterquietus.cpp
g_hexen/a_firedemon.cpp
g_hexen/a_flechette.cpp
g_hexen/a_flies.cpp
g_hexen/a_fog.cpp
g_hexen/a_healingradius.cpp
g_hexen/a_heresiarch.cpp
@ -843,6 +844,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

@ -1005,7 +1005,7 @@ public:
virtual bool UpdateWaterLevel (fixed_t oldz, bool splash=true);
bool isFast();
bool isSlow();
void SetIdle();
void SetIdle(bool nofunction=false);
void ClearCounters();
FState *GetRaiseState();
void Revive();

View file

@ -639,6 +639,23 @@ CCMD (error_fatal)
}
}
//==========================================================================
//
// CCMD crashout
//
// Debugging routine for testing the crash logger.
// Useless in a win32 debug build, because that doesn't enable the crash logger.
//
//==========================================================================
#if !defined(_WIN32) || !defined(_DEBUG)
CCMD (crashout)
{
*(volatile int *)0 = 0;
}
#endif
CCMD (dir)
{
FString dir, path;

View file

@ -957,7 +957,7 @@ void ScanDirectory(TArray<FFileList> &list, const char *dirpath)
}
}
#elif defined(__sun) || defined(linux)
#elif defined(__sun) || defined(__linux__)
//==========================================================================
//

View file

@ -47,6 +47,7 @@
#include "v_video.h"
#include "gameconfigfile.h"
#include "resourcefiles/resourcefile.h"
#include "version.h"
CVAR (Bool, queryiwad, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);
@ -504,19 +505,19 @@ int FIWadManager::IdentifyVersion (TArray<FString> &wadfiles, const char *iwad,
if (numwads == 0)
{
I_FatalError ("Cannot find a game IWAD (doom.wad, doom2.wad, heretic.wad, etc.).\n"
"Did you install ZDoom properly? You can do either of the following:\n"
"Did you install " GAMENAME " properly? You can do either of the following:\n"
"\n"
#if defined(_WIN32)
"1. Place one or more of these wads in the same directory as ZDoom.\n"
"2. Edit your zdoom-username.ini and add the directories of your iwads\n"
"1. Place one or more of these wads in the same directory as " GAMENAME ".\n"
"2. Edit your " GAMENAMELOWERCASE "-username.ini and add the directories of your iwads\n"
"to the list beneath [IWADSearch.Directories]");
#elif defined(__APPLE__)
"1. Place one or more of these wads in ~/Library/Application Support/zdoom/\n"
"2. Edit your ~/Library/Preferences/zdoom.ini and add the directories\n"
"1. Place one or more of these wads in ~/Library/Application Support/" GAMENAMELOWERCASE "/\n"
"2. Edit your ~/Library/Preferences/" GAMENAMELOWERCASE ".ini and add the directories\n"
"of your iwads to the list beneath [IWADSearch.Directories]");
#else
"1. Place one or more of these wads in ~/.config/zdoom/.\n"
"2. Edit your ~/.config/zdoom/zdoom.ini and add the directories of your\n"
"1. Place one or more of these wads in ~/.config/" GAMENAMELOWERCASE "/.\n"
"2. Edit your ~/.config/" GAMENAMELOWERCASE "/" GAMENAMELOWERCASE ".ini and add the directories of your\n"
"iwads to the list beneath [IWADSearch.Directories]");
#endif
}

View file

@ -2441,8 +2441,8 @@ void D_DoomMain (void)
// Create replacements for dehacked pickups
FinishDehPatch();
InitActorNumsFromMapinfo();
PClassActor::StaticSetActorNums ();
//Added by MC:
bglobal.getspawned.Clear();
argcount = Args->CheckParmList("-bots", &args);

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

@ -1420,7 +1420,7 @@ void FParser::SF_PointToDist(void)
double y = floatvalue(t_argv[3]) - floatvalue(t_argv[1]);
t_return.type = svt_fixed;
t_return.value.f = FLOAT2FIXED(sqrt(x*x+y*y)*65536.f);
t_return.value.f = FLOAT2FIXED(sqrt(x*x+y*y));
}
}

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))
{
PClassActor *cls = NULL;
if (pair->Value.classname != NAME_None)
{
cls = PClass::FindActor(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
}

112
src/g_hexen/a_flies.cpp Normal file
View file

@ -0,0 +1,112 @@
static FRandom pr_fly("GetOffMeFly");
//===========================================================================
//
// FindCorpse
//
// Finds a corpse to buzz around. We can't use a blockmap check because
// corpses generally aren't linked into the blockmap.
//
//===========================================================================
static AActor *FindCorpse(AActor *fly, sector_t *sec, int recurselimit)
{
AActor *fallback = NULL;
sec->validcount = validcount;
// Search the current sector
for (AActor *check = sec->thinglist; check != NULL; check = check->snext)
{
if (check == fly)
continue;
if (!(check->flags & MF_CORPSE))
continue;
if (!P_CheckSight(fly, check))
continue;
fallback = check;
if (pr_fly(2)) // 50% chance to try to pick a different corpse
continue;
return check;
}
if (--recurselimit <= 0 || (fallback != NULL && pr_fly(2)))
{
return fallback;
}
// Try neighboring sectors
for (int i = 0; i < sec->linecount; ++i)
{
line_t *line = sec->lines[i];
sector_t *sec2 = (line->frontsector == sec) ? line->backsector : line->frontsector;
if (sec2 != NULL && sec2->validcount != validcount)
{
AActor *neighbor = FindCorpse(fly, sec2, recurselimit);
if (neighbor != NULL)
{
return neighbor;
}
}
}
return fallback;
}
DEFINE_ACTION_FUNCTION(AActor, A_FlySearch)
{
// The version from the retail beta is not so great for general use:
// 1. Pick one of the first fifty thinkers at random.
// 2. Starting from that thinker, find one that is an actor, not itself,
// and within sight. Give up after 100 sequential thinkers.
// It's effectively useless if there are more than 150 thinkers on a map.
//
// So search the sectors instead. We can't potentially find something all
// the way on the other side of the map and we can't find invisible corpses,
// but at least we aren't crippled on maps with lots of stuff going on.
PARAM_ACTION_PROLOGUE;
validcount++;
AActor *other = FindCorpse(self, self->Sector, 5);
if (other != NULL)
{
self->target = other;
self->SetState(self->FindState("Buzz"));
}
return 0;
}
DEFINE_ACTION_FUNCTION(AActor, A_FlyBuzz)
{
PARAM_ACTION_PROLOGUE;
AActor *targ = self->target;
if (targ == NULL || !(targ->flags & MF_CORPSE) || pr_fly() < 5)
{
self->SetIdle();
return 0;
}
angle_t ang = R_PointToAngle2(self->x, self->y, targ->x, targ->y);
self->angle = ang;
self->args[0]++;
ang >>= ANGLETOFINESHIFT;
if (!P_TryMove(self, self->x + 6 * finecosine[ang], self->y + 6 * finesine[ang], true))
{
self->SetIdle(true);
return 0;
}
if (self->args[0] & 2)
{
self->velx += (pr_fly() - 128) << BOBTOFINESHIFT;
self->vely += (pr_fly() - 128) << BOBTOFINESHIFT;
}
int zrand = pr_fly();
if (targ->z + 5*FRACUNIT < self->z && zrand > 150)
{
zrand = -zrand;
}
self->velz = zrand << BOBTOFINESHIFT;
if (pr_fly() < 40)
{
S_Sound(self, CHAN_VOICE, self->ActiveSound, 0.5f, ATTN_STATIC);
}
return 0;
}

View file

@ -38,6 +38,7 @@
#include "a_fighterquietus.cpp"
#include "a_firedemon.cpp"
#include "a_flechette.cpp"
#include "a_flies.cpp"
#include "a_fog.cpp"
#include "a_healingradius.cpp"
#include "a_heresiarch.cpp"

View file

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

View file

@ -1876,6 +1876,18 @@ 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("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

@ -169,7 +169,6 @@ void PClassActor::StaticInit()
void PClassActor::StaticSetActorNums()
{
SpawnableThings.Clear();
DoomEdMap.Empty();
for (unsigned int i = 0; i < PClassActor::AllActorClasses.Size(); ++i)
{
@ -369,22 +368,22 @@ void PClassActor::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 != this)
{
Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars());
}
}
}
// Fill out the list for Chex Quest with Doom's actors
if (gameinfo.gametype == GAME_Chex && DoomEdMap.FindType(DoomEdNum) == NULL && (GameFilter & GAME_Doom))
{
DoomEdMap.AddType(DoomEdNum, this, true);
if (cls != this)
{
Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars());
}
}
}
//==========================================================================
@ -535,139 +534,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, PClassActor *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;
}
}
PClassActor *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
{
PClassActor *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 (PClassActor::AllActorClasses.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

@ -275,34 +275,39 @@ inline PClassActor *PClass::FindActor(FName name)
return dyn_cast<PClassActor>(FindClass(name));
}
class FDoomEdMap
struct FDoomEdEntry
{
public:
~FDoomEdMap();
PClassActor *FindType (int doomednum) const;
void AddType (int doomednum, PClassActor *type, bool temporary = false);
void DelType (int doomednum);
void Empty ();
static void DumpMapThings ();
private:
enum { DOOMED_HASHSIZE = 256 };
struct FDoomEdEntry
{
FDoomEdEntry *HashNext;
PClassActor *Type;
int DoomEdNum;
bool temp;
};
static FDoomEdEntry *DoomEdHash[DOOMED_HASHSIZE];
PClassActor *Type;
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

@ -204,7 +204,7 @@ FString M_GetConfigPath(bool for_reading)
{
path += "/" GAME_DIR;
CreatePath(path);
path += "/zdoom.ini";
path += "/" GAMENAMELOWERCASE ".ini";
}
else
{ // construct "$PROGDIR/zdoom-$USER.ini"
@ -224,11 +224,11 @@ FString M_GetConfigPath(bool for_reading)
*probe = '_';
++probe;
}
path << "zdoom-" << uname << ".ini";
path << GAMENAMELOWERCASE "-" << uname << ".ini";
}
else
{ // Couldn't get user name, so just use zdoom.ini
path += "zdoom.ini";
path += GAMENAMELOWERCASE ".ini";
}
}
@ -239,7 +239,7 @@ FString M_GetConfigPath(bool for_reading)
if (!FileExists(path))
{
path = progdir;
path << "zdoom.ini";
path << GAMENAMELOWERCASE ".ini";
}
}
@ -411,11 +411,11 @@ FString M_GetConfigPath(bool for_reading)
noErr == FSRefMakePath(&folder, (UInt8*)cpath, PATH_MAX))
{
FString path;
path << cpath << "/zdoom.ini";
path << cpath << "/" GAMENAMELOWERCASE ".ini";
return path;
}
// Ungh.
return "zdoom.ini";
return GAMENAMELOWERCASE ".ini";
}
//===========================================================================
@ -497,12 +497,12 @@ FString GetUserFile (const char *file)
// This can be removed after a release or two
// Transfer the old zdoom directory to the new location
bool moved = false;
FString oldpath = NicePath("~/.zdoom/");
FString oldpath = NicePath("~/." GAMENAMELOWERCASE "/");
if (stat (oldpath, &extrainfo) != -1)
{
if (rename(oldpath, path) == -1)
{
I_Error ("Failed to move old zdoom directory (%s) to new location (%s).",
I_Error ("Failed to move old " GAMENAMELOWERCASE " directory (%s) to new location (%s).",
oldpath.GetChars(), path.GetChars());
}
else
@ -598,7 +598,7 @@ FString M_GetCajunPath(const char *botfilename)
FString M_GetConfigPath(bool for_reading)
{
return GetUserFile("zdoom.ini");
return GetUserFile(GAMENAMELOWERCASE ".ini");
}
//===========================================================================

View file

@ -4759,25 +4759,19 @@ static void SetActorRoll(AActor *activator, int tid, int angle, bool interpolate
}
}
static void SetActorTeleFog(AActor *activator, int tid, FName telefogsrc, FName telefogdest)
static void SetActorTeleFog(AActor *activator, int tid, FString telefogsrc, FString telefogdest)
{
//Simply put, if it doesn't exist, it won't change. One can use "" in this scenario.
PClassActor *check;
// Set the actor's telefog to the specified actor. Handle "" as "don't
// change" since "None" should work just fine for disabling the fog (given
// that it will resolve to NAME_None which is not a valid actor name).
if (tid == 0)
{
if (activator != NULL)
{
check = PClass::FindActor(telefogsrc);
if (check == NULL || !stricmp(telefogsrc, "none") || !stricmp(telefogsrc, "null"))
activator->TeleFogSourceType = NULL;
else
activator->TeleFogSourceType = check;
check = PClass::FindActor(telefogdest);
if (check == NULL || !stricmp(telefogdest, "none") || !stricmp(telefogdest, "null"))
activator->TeleFogDestType = NULL;
else
activator->TeleFogDestType = check;
if (telefogsrc.IsNotEmpty())
activator->TeleFogSourceType = PClass::FindActor(telefogsrc);
if (telefogdest.IsNotEmpty())
activator->TeleFogDestType = PClass::FindActor(telefogdest);
}
}
else
@ -4785,19 +4779,14 @@ static void SetActorTeleFog(AActor *activator, int tid, FName telefogsrc, FName
FActorIterator iterator(tid);
AActor *actor;
PClassActor * src = telefogsrc.IsNotEmpty() ? PClass::FindActor(telefogsrc) : NULL;
PClassActor * dest = telefogdest.IsNotEmpty() ? PClass::FindActor(telefogdest) : NULL;
while ((actor = iterator.Next()))
{
check = PClass::FindActor(telefogsrc);
if (check == NULL || !stricmp(telefogsrc, "none") || !stricmp(telefogsrc, "null"))
actor->TeleFogSourceType = NULL;
else
actor->TeleFogSourceType = check;
check = PClass::FindActor(telefogdest);
if (check == NULL || !stricmp(telefogdest, "none") || !stricmp(telefogdest, "null"))
actor->TeleFogDestType = NULL;
else
actor->TeleFogDestType = check;
if (telefogsrc.IsNotEmpty())
actor->TeleFogSourceType = src;
if (telefogdest.IsNotEmpty())
actor->TeleFogDestType = dest;
}
}
}

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

@ -945,6 +945,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
int fakeDamage = 0;
int holdDamage = 0;
if (damage < 0) damage = 0;
if (target == NULL || !((target->flags & MF_SHOOTABLE) || (target->flags6 & MF6_VULNERABLE)))
{ // Shouldn't happen
return -1;
@ -1026,6 +1028,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
{
target->velx = target->vely = target->velz = 0;
}
player = target->player;
if (!(flags & DMG_FORCED)) // DMG_FORCED skips all special damage checks, TELEFRAG_DAMAGE may not be reduced at all
{
if (target->flags2 & MF2_DORMANT)
@ -1033,9 +1037,9 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
// Invulnerable, and won't wake up
return -1;
}
if (damage < TELEFRAG_DAMAGE) // TELEFRAG_DAMAGE may not be reduced at all or it may not guarantee its effect.
{
player = target->player;
if (player && damage > 1)
{
// Take half damage in trainer mode
@ -1111,6 +1115,10 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
return -1;
}
}
}
if (target->flags5 & MF5_NODAMAGE)
{
damage = 0;
}
}
if (damage < 0)
@ -1319,7 +1327,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
// but telefragging should still do enough damage to kill the player)
// Ignore players that are already dead.
// [MC]Buddha2 absorbs telefrag damage, and anything else thrown their way.
if (((player->cheats & CF_BUDDHA2) || (((player->cheats & CF_BUDDHA) || (player->mo->flags7 & MF7_BUDDHA)) && (damage < TELEFRAG_DAMAGE))) && (player->playerstate != PST_DEAD))
if (!(flags & DMG_FORCED) && (((player->cheats & CF_BUDDHA2) || (((player->cheats & CF_BUDDHA) || (player->mo->flags7 & MF7_BUDDHA)) && (damage < TELEFRAG_DAMAGE))) && (player->playerstate != PST_DEAD)))
{
// If this is a voodoo doll we need to handle the real player as well.
player->mo->health = target->health = player->health = 1;
@ -1384,7 +1392,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
if (target->health <= 0)
{
//[MC]Buddha flag for monsters.
if ((target->flags7 & MF7_BUDDHA) && (damage < TELEFRAG_DAMAGE) && ((inflictor == NULL || !(inflictor->flags7 & MF7_FOILBUDDHA)) && !(flags & DMG_FOILBUDDHA)))
if (!(flags & DMG_FORCED) && ((target->flags7 & MF7_BUDDHA) && (damage < TELEFRAG_DAMAGE) && ((inflictor == NULL || !(inflictor->flags7 & MF7_FOILBUDDHA)) && !(flags & DMG_FOILBUDDHA))))
{ //FOILBUDDHA or Telefrag damage must kill it.
target->health = 1;
}

View file

@ -595,19 +595,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

@ -1034,7 +1034,7 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm)
// Both things overlap in x or y direction
bool unblocking = false;
if (tm.FromPMove)
if (tm.FromPMove || tm.thing->player != NULL)
{
// Both actors already overlap. To prevent them from remaining stuck allow the move if it
// takes them further apart or the move does not change the position (when called from P_ChangeSector.)
@ -4793,7 +4793,7 @@ void P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bo
points *= thing->GetClass()->RDFactor / (float)FRACUNIT;
// points and bombdamage should be the same sign
if (((bombspot->flags7 & MF7_CAUSEPAIN) || (points * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY))
if (((points * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY))
{ // OK to damage; target is in direct path
double velz;
double thrust;

View file

@ -4708,69 +4708,82 @@ 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);
deathmatchstarts.Push(start);
// [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;
}
// Convert Strife starts to Hexen-style starts
if (gameinfo.gametype == GAME_Strife && mthing->type >= 118 && mthing->type <= 127)
// copy args to mapthing so that we have them in one place for the rest of this function
if (mentry->Special >= 0)
{
mthing->args[0] = mthing->type - 117;
mthing->type = 1;
mthing->special = mentry->Special;
memcpy(mthing->args, mentry->Args, sizeof(mthing->args));
}
// [RH] Record polyobject-related things
if (gameinfo.gametype == GAME_Hexen)
int pnum = -1;
if (mentry->Type == NULL)
{
switch (mthing->type)
switch (mentry->Special)
{
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;
case SMT_DEATHMATCHSTART:
{
// count deathmatch start positions
FPlayerStart start(mthing, 0);
deathmatchstarts.Push(start);
return NULL;
}
}
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;
}
}
if (pnum == -1 || (level.flags & LEVEL_FILTERSTARTS))
{
@ -4836,7 +4849,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))
@ -4847,20 +4860,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);
@ -4872,37 +4875,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::FindActor("Unknown");
assert(i->IsKindOf(RUNTIME_CLASS(PClassActor)));
}
// [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 ||
@ -4919,7 +4896,6 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
i = PClass::FindActor("Unknown");
assert(i->IsKindOf(RUNTIME_CLASS(PClassActor)));
}
}
const AActor *info = GetDefaultByType (i);
@ -5008,6 +4984,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
@ -6271,11 +6248,6 @@ int AActor::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FN
{
FState *death;
if (flags5 & MF5_NODAMAGE)
{
return 0;
}
// If the actor does not have a corresponding death state, then it does not take damage.
// Note that DeathState matches every kind of damagetype, so an actor has that, it can
// be hurt with any type of damage. Exception: Massacre damage always succeeds, because
@ -6348,11 +6320,11 @@ void AActor::Crash()
}
}
void AActor::SetIdle()
void AActor::SetIdle(bool nofunction)
{
FState *idle = FindState (NAME_Idle);
if (idle == NULL) idle = SpawnState;
SetState(idle);
SetState(idle, nofunction);
}
int AActor::SpawnHealth() const

View file

@ -3331,32 +3331,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

@ -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

@ -37,7 +37,7 @@ static struct {
pid_t pid;
int has_siginfo;
siginfo_t siginfo;
char buf[1024];
char buf[4096];
} crash_info;

View file

@ -240,7 +240,7 @@ int main (int argc, char **argv)
#if !defined (__APPLE__)
{
int s[4] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS };
cc_install_handlers(argc, argv, 4, s, "zdoom-crash.log", DoomSpecificInfo);
cc_install_handlers(argc, argv, 4, s, GAMENAMELOWERCASE "-crash.log", DoomSpecificInfo);
}
#endif // !__APPLE__

View file

@ -84,7 +84,7 @@ void FSoftwareRenderer::PrecacheTexture(FTexture *tex, int cache)
{
if (tex != NULL)
{
if (cache & 1)
if (cache & FTextureManager::HIT_Columnmode)
{
const FTexture::Span *spanp;
tex->GetColumn(0, &spanp);

View file

@ -1246,7 +1246,7 @@ void FTextureManager::PrecacheLevel (void)
for (unsigned i = 0; i < level.info->PrecacheTextures.Size(); i++)
{
hitlist[level.info->PrecacheTextures[i].GetIndex()] |= 1;
hitlist[level.info->PrecacheTextures[i].GetIndex()] |= FTextureManager::HIT_Wall;
}
for (int i = cnt - 1; i >= 0; i--)

View file

@ -365,6 +365,16 @@ public:
TEXMAN_DontCreate = 32
};
enum
{
HIT_Wall = 1,
HIT_Flat = 2,
HIT_Sky = 4,
HIT_Sprite = 8,
HIT_Columnmode = HIT_Wall|HIT_Sky|HIT_Sprite
};
FTextureID CheckForTexture (const char *name, int usetype, BITFIELD flags=TEXMAN_TryAny);
FTextureID GetTexture (const char *name, int usetype, BITFIELD flags=0);
int ListTextures (const char *name, TArray<FTextureID> &list);

View file

@ -928,7 +928,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Explode)
PARAM_INT_OPT (fulldmgdistance) { fulldmgdistance = 0; }
PARAM_INT_OPT (nails) { nails = 0; }
PARAM_INT_OPT (naildamage) { naildamage = 10; }
PARAM_CLASS_OPT (pufftype, AActor) { pufftype = PClass::FindActor("BulletPuff"); }
PARAM_CLASS_OPT (pufftype, AActor) { pufftype = PClass::FindActor(NAME_BulletPuff); }
if (damage < 0) // get parameters from metadata
{
@ -4904,7 +4904,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack)
PARAM_INT_OPT (pointblank) { pointblank = 2; }
PARAM_INT_OPT (longrange) { longrange = 4; }
PARAM_FIXED_OPT (runspeed) { runspeed = 160*FRACUNIT; }
PARAM_CLASS_OPT (pufftype, AActor) { pufftype = PClass::FindActor("BulletPuff"); }
PARAM_CLASS_OPT (pufftype, AActor) { pufftype = PClass::FindActor(NAME_BulletPuff); }
if (!self->target)
return 0;
@ -6074,39 +6074,17 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Remove)
// A_SetTeleFog
//
// Sets the teleport fog(s) for the calling actor.
// Takes a name of the classes for te source and destination.
// Can set both at the same time. Use "" to retain the previous fog without
// changing it.
// Takes a name of the classes for the source and destination.
//===========================================================================
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTeleFog)
{
PARAM_ACTION_PROLOGUE;
PARAM_NAME(oldpos);
PARAM_NAME(newpos);
PClassActor *check = PClass::FindActor(oldpos);
if (check == NULL || !stricmp(oldpos, "none") || !stricmp(oldpos, "null"))
self->TeleFogSourceType = NULL;
else if (!stricmp(oldpos, ""))
{ //Don't change it if it's just ""
}
else
{
self->TeleFogSourceType = check;
}
check = PClass::FindActor(newpos);
if (check == NULL || !stricmp(newpos, "none") || !stricmp(newpos, "null"))
self->TeleFogDestType = NULL;
else if (!stricmp(newpos, ""))
{ //Don't change it if it's just ""
}
else
{
self->TeleFogDestType = check;
}
PARAM_CLASS(oldpos, AActor);
PARAM_CLASS(newpos, AActor);
self->TeleFogSourceType = oldpos;
self->TeleFogDestType = newpos;
return 0;
}

View file

@ -1459,14 +1459,8 @@ DEFINE_PROPERTY(stamina, I, Actor)
DEFINE_PROPERTY(telefogsourcetype, S, Actor)
{
PROP_STRING_PARM(str, 0);
if (!stricmp(str, "") || (!stricmp(str, "none")) || (!stricmp(str, "null")) || *str == 0)
{
defaults->TeleFogSourceType = NULL;
}
else
{
defaults->TeleFogSourceType = FindClassTentative(str, PClass::FindClass("TeleportFog"));
}
if (!stricmp(str, "") || !stricmp(str, "none")) defaults->TeleFogSourceType = NULL;
else defaults->TeleFogSourceType = FindClassTentative(str, RUNTIME_CLASS(AActor));
}
//==========================================================================
@ -1475,14 +1469,8 @@ DEFINE_PROPERTY(telefogsourcetype, S, Actor)
DEFINE_PROPERTY(telefogdesttype, S, Actor)
{
PROP_STRING_PARM(str, 0);
if (!stricmp(str, "") || (!stricmp(str, "none")) || (!stricmp(str, "null")) || *str == 0)
{
defaults->TeleFogDestType = NULL;
}
else
{
defaults->TeleFogDestType = FindClassTentative(str, PClass::FindClass("TeleportFog"));
}
if (!stricmp(str, "") || !stricmp(str, "none")) defaults->TeleFogDestType = NULL;
else defaults->TeleFogDestType = FindClassTentative(str, RUNTIME_CLASS(AActor));
}
//==========================================================================

View file

@ -1245,7 +1245,7 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist)
FTextureID pic = frame->Texture[k];
if (pic.isValid())
{
hitlist[pic.GetIndex()] = 1;
hitlist[pic.GetIndex()] = FTextureManager::HIT_Sprite;
}
}
}
@ -1257,14 +1257,14 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist)
for (i = numsectors - 1; i >= 0; i--)
{
hitlist[sectors[i].GetTexture(sector_t::floor).GetIndex()] =
hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= 2;
hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= FTextureManager::HIT_Flat;
}
for (i = numsides - 1; i >= 0; i--)
{
hitlist[sides[i].GetTexture(side_t::top).GetIndex()] =
hitlist[sides[i].GetTexture(side_t::mid).GetIndex()] =
hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= 1;
hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= FTextureManager::HIT_Wall;
}
// Sky texture is always present.
@ -1276,11 +1276,11 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist)
if (sky1texture.isValid())
{
hitlist[sky1texture.GetIndex()] |= 1;
hitlist[sky1texture.GetIndex()] |= FTextureManager::HIT_Sky;
}
if (sky2texture.isValid())
{
hitlist[sky2texture.GetIndex()] |= 1;
hitlist[sky2texture.GetIndex()] |= FTextureManager::HIT_Sky;
}
}

View file

@ -88,13 +88,14 @@ const char *GetVersionString();
// More stuff that needs to be different for derivatives.
#define GAMENAME "ZDoom"
#define GAMENAMELOWERCASE "zdoom"
#define FORUM_URL "http://forum.zdoom.org"
#define BUGS_FORUM_URL "http://forum.zdoom.org/index.php?c=3"
#if defined(__APPLE__) || defined(_WIN32)
#define GAME_DIR GAMENAME
#else
#define GAME_DIR ".config/zdoom"
#define GAME_DIR ".config/" GAMENAMELOWERCASE
#endif

View file

@ -1288,20 +1288,3 @@ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE nothing, LPSTR cmdline, int n
MainThread = INVALID_HANDLE_VALUE;
return 0;
}
//==========================================================================
//
// CCMD crashout
//
// Debugging routine for testing the crash logger.
// Useless in a debug build, because that doesn't enable the crash logger.
//
//==========================================================================
#ifndef _DEBUG
#include "c_dispatch.h"
CCMD (crashout)
{
*(int *)0 = 0;
}
#endif

View file

@ -293,7 +293,7 @@ ACTOR Actor native //: Thinker
action native A_GiveToSiblings(class<Inventory> itemtype, int amount = 0);
action native A_TakeFromChildren(class<Inventory> itemtype, int amount = 0);
action native A_TakeFromSiblings(class<Inventory> itemtype, int amount = 0);
action native A_SetTeleFog(name oldpos, name newpos);
action native A_SetTeleFog(class<Actor> oldpos, class<Actor> newpos);
action native A_SwapTeleFog();
action native A_SetFloatBobPhase(int bob);
action native A_SetHealth(int health, int ptr = AAPTR_DEFAULT);

View file

@ -2,13 +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"
@ -23,13 +23,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"
@ -44,13 +44,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"
@ -65,13 +65,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

View file

@ -2,19 +2,19 @@
// 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
@ -22,13 +22,13 @@ actor ChexCivilian3 : ShortRedTorch 57
// Landing Zone ---------------------------------------------------------------
actor ChexLandingLight : Column 2028
actor ChexLandingLight : Column
{
game Chex
height 35
}
actor ChexSpaceship : TechPillar 48
actor ChexSpaceship : TechPillar
{
game Chex
height 52
@ -36,37 +36,37 @@ actor ChexSpaceship : TechPillar 48
// 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
@ -74,7 +74,7 @@ actor ChexTallFlower2 : DeadStick 25
// Slime Fountain -------------------------------------------------------------
actor ChexSlimeFountain : BlueTorch 44
actor ChexSlimeFountain : BlueTorch
{
game Chex
height 48
@ -88,13 +88,13 @@ 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
@ -102,38 +102,38 @@ actor ChexCavernStalagmite : TallGreenColumn 30
// 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,26 +3,26 @@
// 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"
@ -30,19 +30,19 @@ actor SuperchargeBreakfast : Soulsphere 2013
// 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"
@ -50,19 +50,19 @@ actor SuperChexArmor : BlueArmor 2019
// 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,18 +1,18 @@
// 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,7 +5,7 @@
//
//===========================================================================
actor FlemoidusCommonus : ZombieMan 3004
actor FlemoidusCommonus : ZombieMan
{
Game Chex
DropItem ""
@ -25,7 +25,7 @@ actor FlemoidusCommonus : ZombieMan 3004
//
//===========================================================================
actor FlemoidusBipedicus : ShotgunGuy 9
actor FlemoidusBipedicus : ShotgunGuy
{
Game Chex
DropItem ""
@ -45,7 +45,7 @@ actor FlemoidusBipedicus : ShotgunGuy 9
//
//===========================================================================
actor ArmoredFlemoidusBipedicus : DoomImp 3001
actor ArmoredFlemoidusBipedicus : DoomImp
{
Game Chex
Obituary "$OB_BIPEDICUS2"
@ -58,7 +58,7 @@ actor ArmoredFlemoidusBipedicus : DoomImp 3001
//
//===========================================================================
actor FlemoidusCycloptisCommonus : Demon 3002
actor FlemoidusCycloptisCommonus : Demon
{
Game Chex
Obituary "$OB_CYCLOPTIS"
@ -70,7 +70,7 @@ actor FlemoidusCycloptisCommonus : Demon 3002
//
//===========================================================================
actor Flembrane : BaronOfHell 3003
actor Flembrane : BaronOfHell
{
Game Chex
radius 44
@ -88,7 +88,7 @@ actor Flembrane : BaronOfHell 3003
//===========================================================================
actor ChexSoul : LostSoul 3006
actor ChexSoul : LostSoul
{
Game Chex
height 0

View file

@ -7,7 +7,7 @@ actor Bootspoon : Fist
Tag "$TAG_SPOON"
}
actor SuperBootspork : Chainsaw 2005
actor SuperBootspork : Chainsaw
{
game Chex
obituary "$OB_MPBOOTSPORK"
@ -28,7 +28,7 @@ actor MiniZorcher : Pistol
}
}
actor LargeZorcher : Shotgun 2001
actor LargeZorcher : Shotgun
{
game Chex
obituary "$OB_MPZORCH"
@ -36,7 +36,7 @@ actor LargeZorcher : Shotgun 2001
Tag "$TAG_LARGEZORCHER"
}
actor SuperLargeZorcher : SuperShotgun 82
actor SuperLargeZorcher : SuperShotgun
{
game Chex
obituary "$OB_MPMEGAZORCH"
@ -44,7 +44,7 @@ actor SuperLargeZorcher : SuperShotgun 82
Tag "$TAG_SUPERLARGEZORCHER"
}
actor RapidZorcher : Chaingun 2002
actor RapidZorcher : Chaingun
{
game Chex
obituary "$OB_MPRAPIDZORCH"
@ -52,7 +52,7 @@ actor RapidZorcher : Chaingun 2002
Tag "$TAG_RAPIDZORCHER"
}
actor ZorchPropulsor : RocketLauncher 2003
actor ZorchPropulsor : RocketLauncher
{
game Chex
obituary ""
@ -77,7 +77,7 @@ actor PropulsorMissile : Rocket
Alpha 0.75
}
actor PhasingZorcher : PlasmaRifle 2004
actor PhasingZorcher : PlasmaRifle
{
game Chex
obituary ""
@ -107,7 +107,7 @@ actor PhaseZorchMissile : PlasmaBall
Alpha 0.75
}
actor LAZDevice : BFG9000 2006
actor LAZDevice : BFG9000
{
game Chex
obituary ""

View file

@ -3,7 +3,7 @@
// Arachnotron
//
//===========================================================================
ACTOR Arachnotron 68
ACTOR Arachnotron
{
Game Doom
SpawnID 6

View file

@ -4,7 +4,7 @@
//
//===========================================================================
ACTOR Archvile 64
ACTOR Archvile
{
Game Doom
SpawnID 111

View file

@ -5,7 +5,7 @@
//
//===========================================================================
ACTOR BossBrain 88
ACTOR BossBrain
{
Game Doom
Health 250
@ -43,7 +43,7 @@ ACTOR BossBrain 88
//
//===========================================================================
ACTOR BossEye 89
ACTOR BossEye
{
Game Doom
Height 32
@ -67,7 +67,7 @@ ACTOR BossEye 89
//
//===========================================================================
ACTOR BossTarget : SpecialSpot 87
ACTOR BossTarget : SpecialSpot
{
Game Doom
Height 32

View file

@ -3,7 +3,7 @@
// Baron of Hell
//
//===========================================================================
ACTOR BaronOfHell 3003
ACTOR BaronOfHell
{
Game Doom
SpawnID 3
@ -59,7 +59,7 @@ ACTOR BaronOfHell 3003
// Hell Knight
//
//===========================================================================
ACTOR HellKnight : BaronOfHell 69
ACTOR HellKnight : BaronOfHell
{
Game Doom
SpawnID 113

View file

@ -3,7 +3,7 @@
// Cacodemon
//
//===========================================================================
ACTOR Cacodemon 3005
ACTOR Cacodemon
{
Game Doom
SpawnID 19

View file

@ -4,7 +4,7 @@
// Cyberdemon
//
//===========================================================================
ACTOR Cyberdemon 16
ACTOR Cyberdemon
{
Game Doom
SpawnID 114

View file

@ -1,6 +1,6 @@
// Gibbed marine -----------------------------------------------------------
actor GibbedMarine 10
actor GibbedMarine
{
Game Doom
SpawnID 145
@ -14,14 +14,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
@ -39,7 +39,7 @@ actor DeadMarine 15
// Dead zombie man ---------------------------------------------------------
actor DeadZombieMan : ZombieMan 18
actor DeadZombieMan : ZombieMan
{
Skip_Super
Game Doom
@ -53,7 +53,7 @@ actor DeadZombieMan : ZombieMan 18
// Dead shotgun guy --------------------------------------------------------
actor DeadShotgunGuy : ShotgunGuy 19
actor DeadShotgunGuy : ShotgunGuy
{
Skip_Super
Game Doom
@ -67,7 +67,7 @@ actor DeadShotgunGuy : ShotgunGuy 19
// Dead imp ----------------------------------------------------------------
actor DeadDoomImp : DoomImp 20
actor DeadDoomImp : DoomImp
{
Skip_Super
Game Doom
@ -80,7 +80,7 @@ actor DeadDoomImp : DoomImp 20
// Dead demon --------------------------------------------------------------
actor DeadDemon : Demon 21
actor DeadDemon : Demon
{
Skip_Super
Game Doom
@ -93,7 +93,7 @@ actor DeadDemon : Demon 21
// Dead cacodemon ----------------------------------------------------------
actor DeadCacodemon : Cacodemon 22
actor DeadCacodemon : Cacodemon
{
Skip_Super
Game Doom
@ -112,7 +112,7 @@ actor DeadCacodemon : Cacodemon 22
* a holdover from that.)
*/
actor DeadLostSoul : LostSoul 23
actor DeadLostSoul : LostSoul
{
Skip_Super
Game Doom

View file

@ -3,7 +3,7 @@
// Pink Demon
//
//===========================================================================
ACTOR Demon 3002
ACTOR Demon
{
Game Doom
SpawnID 8
@ -57,7 +57,7 @@ ACTOR Demon 3002
// Spectre
//
//===========================================================================
ACTOR Spectre : Demon 58
ACTOR Spectre : Demon
{
Game Doom
SpawnID 9

View file

@ -1,6 +1,6 @@
// Clip --------------------------------------------------------------------
ACTOR Clip : Ammo 2007
ACTOR Clip : Ammo
{
Game Doom
SpawnID 11
@ -20,7 +20,7 @@ ACTOR Clip : Ammo 2007
// Clip box ----------------------------------------------------------------
ACTOR ClipBox : Clip 2048
ACTOR ClipBox : Clip
{
Game Doom
SpawnID 139
@ -36,7 +36,7 @@ ACTOR ClipBox : Clip 2048
// Rocket ------------------------------------------------------------------
ACTOR RocketAmmo : Ammo 2010
ACTOR RocketAmmo : Ammo
{
Game Doom
SpawnID 140
@ -56,7 +56,7 @@ ACTOR RocketAmmo : Ammo 2010
// Rocket box --------------------------------------------------------------
ACTOR RocketBox : RocketAmmo 2046
ACTOR RocketBox : RocketAmmo
{
Game Doom
SpawnID 141
@ -72,7 +72,7 @@ ACTOR RocketBox : RocketAmmo 2046
// Cell --------------------------------------------------------------------
ACTOR Cell : Ammo 2047
ACTOR Cell : Ammo
{
Game Doom
SpawnID 75
@ -92,7 +92,7 @@ ACTOR Cell : Ammo 2047
// Cell pack ---------------------------------------------------------------
ACTOR CellPack : Cell 17
ACTOR CellPack : Cell
{
Game Doom
SpawnID 142
@ -108,7 +108,7 @@ ACTOR CellPack : Cell 17
// Shells ------------------------------------------------------------------
ACTOR Shell : Ammo 2008
ACTOR Shell : Ammo
{
Game Doom
SpawnID 12
@ -128,7 +128,7 @@ ACTOR Shell : Ammo 2008
// Shell box ---------------------------------------------------------------
ACTOR ShellBox : Shell 2049
ACTOR ShellBox : Shell
{
Game Doom
SpawnID 143
@ -144,7 +144,7 @@ ACTOR ShellBox : Shell 2049
// Backpack ---------------------------------------------------------------
ACTOR Backpack : BackpackItem 8
ACTOR Backpack : BackpackItem
{
Game Doom
SpawnID 144

View file

@ -1,7 +1,7 @@
// Armor bonus --------------------------------------------------------------
Actor ArmorBonus : BasicArmorBonus 2015
Actor ArmorBonus : BasicArmorBonus
{
Game Doom
SpawnID 22
@ -24,7 +24,7 @@ Actor ArmorBonus : BasicArmorBonus 2015
// Green armor --------------------------------------------------------------
Actor GreenArmor : BasicArmorPickup 2018
Actor GreenArmor : BasicArmorPickup
{
Game Doom
SpawnID 68
@ -45,7 +45,7 @@ Actor GreenArmor : BasicArmorPickup 2018
// Blue armor ---------------------------------------------------------------
Actor BlueArmor : BasicArmorPickup 2019
Actor BlueArmor : BasicArmorPickup
{
Game Doom
SpawnID 69

View file

@ -1,6 +1,6 @@
// Invulnerability Sphere ---------------------------------------------------
ACTOR InvulnerabilitySphere : PowerupGiver 2022
ACTOR InvulnerabilitySphere : PowerupGiver
{
Game Doom
SpawnID 133
@ -22,7 +22,7 @@ ACTOR InvulnerabilitySphere : PowerupGiver 2022
// Soulsphere --------------------------------------------------------------
ACTOR Soulsphere : Health 2013
ACTOR Soulsphere : Health
{
Game Doom
SpawnID 25
@ -58,7 +58,7 @@ actor BlueArmorForMegasphere : BlueArmor
Armor.SaveAmount 200
}
ACTOR Megasphere : CustomInventory 83
ACTOR Megasphere : CustomInventory
{
Game Doom
SpawnID 132
@ -80,7 +80,7 @@ ACTOR Megasphere : CustomInventory 83
// Invisibility -------------------------------------------------------------
ACTOR BlurSphere : PowerupGiver 2024
ACTOR BlurSphere : PowerupGiver
{
Game Doom
SpawnID 135
@ -103,7 +103,7 @@ ACTOR BlurSphere : PowerupGiver 2024
// Radiation suit (aka iron feet) -------------------------------------------
ACTOR RadSuit : PowerupGiver 2025
ACTOR RadSuit : PowerupGiver
{
Game Doom
SpawnID 136
@ -123,7 +123,7 @@ ACTOR RadSuit : PowerupGiver 2025
// infrared -----------------------------------------------------------------
ACTOR Infrared : PowerupGiver 2045
ACTOR Infrared : PowerupGiver
{
Game Doom
SpawnID 138
@ -144,7 +144,7 @@ ACTOR Infrared : PowerupGiver 2045
// Allmap -------------------------------------------------------------------
ACTOR Allmap : MapRevealer 2026
ACTOR Allmap : MapRevealer
{
Game Doom
SpawnID 137
@ -164,7 +164,7 @@ ACTOR Allmap : MapRevealer 2026
// Berserk ------------------------------------------------------------------
ACTOR Berserk : CustomInventory 2023
ACTOR Berserk : CustomInventory
{
Game Doom
SpawnID 134

View file

@ -1,7 +1,7 @@
// Tech lamp ---------------------------------------------------------------
ACTOR TechLamp 85
ACTOR TechLamp
{
Game Doom
Radius 16
@ -18,7 +18,7 @@ ACTOR TechLamp 85
// Tech lamp 2 -------------------------------------------------------------
ACTOR TechLamp2 86
ACTOR TechLamp2
{
Game Doom
Radius 16
@ -35,7 +35,7 @@ ACTOR TechLamp2 86
// Column ------------------------------------------------------------------
ACTOR Column 2028
ACTOR Column
{
Game Doom
Radius 16
@ -52,7 +52,7 @@ ACTOR Column 2028
// Tall green column -------------------------------------------------------
ACTOR TallGreenColumn 30
ACTOR TallGreenColumn
{
Game Doom
Radius 16
@ -69,7 +69,7 @@ ACTOR TallGreenColumn 30
// Short green column ------------------------------------------------------
ACTOR ShortGreenColumn 31
ACTOR ShortGreenColumn
{
Game Doom
Radius 16
@ -86,7 +86,7 @@ ACTOR ShortGreenColumn 31
// Tall red column ---------------------------------------------------------
ACTOR TallRedColumn 32
ACTOR TallRedColumn
{
Game Doom
Radius 16
@ -103,7 +103,7 @@ ACTOR TallRedColumn 32
// Short red column --------------------------------------------------------
ACTOR ShortRedColumn 33
ACTOR ShortRedColumn
{
Game Doom
Radius 16
@ -120,7 +120,7 @@ ACTOR ShortRedColumn 33
// Skull column ------------------------------------------------------------
ACTOR SkullColumn 37
ACTOR SkullColumn
{
Game Doom
Radius 16
@ -137,7 +137,7 @@ ACTOR SkullColumn 37
// Heart column ------------------------------------------------------------
ACTOR HeartColumn 36
ACTOR HeartColumn
{
Game Doom
Radius 16
@ -154,7 +154,7 @@ ACTOR HeartColumn 36
// Evil eye ----------------------------------------------------------------
ACTOR EvilEye 41
ACTOR EvilEye
{
Game Doom
Radius 16
@ -171,7 +171,7 @@ ACTOR EvilEye 41
// Floating skull ----------------------------------------------------------
ACTOR FloatingSkull 42
ACTOR FloatingSkull
{
Game Doom
Radius 16
@ -188,7 +188,7 @@ ACTOR FloatingSkull 42
// Torch tree --------------------------------------------------------------
ACTOR TorchTree 43
ACTOR TorchTree
{
Game Doom
Radius 16
@ -205,7 +205,7 @@ ACTOR TorchTree 43
// Blue torch --------------------------------------------------------------
ACTOR BlueTorch 44
ACTOR BlueTorch
{
Game Doom
Radius 16
@ -222,7 +222,7 @@ ACTOR BlueTorch 44
// Green torch -------------------------------------------------------------
ACTOR GreenTorch 45
ACTOR GreenTorch
{
Game Doom
Radius 16
@ -239,7 +239,7 @@ ACTOR GreenTorch 45
// Red torch ---------------------------------------------------------------
ACTOR RedTorch 46
ACTOR RedTorch
{
Game Doom
Radius 16
@ -256,7 +256,7 @@ ACTOR RedTorch 46
// Short blue torch --------------------------------------------------------
ACTOR ShortBlueTorch 55
ACTOR ShortBlueTorch
{
Game Doom
Radius 16
@ -273,7 +273,7 @@ ACTOR ShortBlueTorch 55
// Short green torch -------------------------------------------------------
ACTOR ShortGreenTorch 56
ACTOR ShortGreenTorch
{
Game Doom
Radius 16
@ -290,7 +290,7 @@ ACTOR ShortGreenTorch 56
// Short red torch ---------------------------------------------------------
ACTOR ShortRedTorch 57
ACTOR ShortRedTorch
{
Game Doom
Radius 16
@ -307,7 +307,7 @@ ACTOR ShortRedTorch 57
// Stalagtite --------------------------------------------------------------
ACTOR Stalagtite 47
ACTOR Stalagtite
{
Game Doom
Radius 16
@ -324,7 +324,7 @@ ACTOR Stalagtite 47
// Tech pillar -------------------------------------------------------------
ACTOR TechPillar 48
ACTOR TechPillar
{
Game Doom
Radius 16
@ -341,7 +341,7 @@ ACTOR TechPillar 48
// Candle stick ------------------------------------------------------------
ACTOR Candlestick 34
ACTOR Candlestick
{
Game Doom
Radius 20
@ -357,7 +357,7 @@ ACTOR Candlestick 34
// Candelabra --------------------------------------------------------------
ACTOR Candelabra 35
ACTOR Candelabra
{
Game Doom
Radius 16
@ -374,7 +374,7 @@ ACTOR Candelabra 35
// Bloody twitch -----------------------------------------------------------
ACTOR BloodyTwitch 49
ACTOR BloodyTwitch
{
Game Doom
Radius 16
@ -395,7 +395,7 @@ ACTOR BloodyTwitch 49
// Meat 2 ------------------------------------------------------------------
ACTOR Meat2 50
ACTOR Meat2
{
Game Doom
Radius 16
@ -413,7 +413,7 @@ ACTOR Meat2 50
// Meat 3 ------------------------------------------------------------------
ACTOR Meat3 51
ACTOR Meat3
{
Game Doom
Radius 16
@ -431,7 +431,7 @@ ACTOR Meat3 51
// Meat 4 ------------------------------------------------------------------
ACTOR Meat4 52
ACTOR Meat4
{
Game Doom
Radius 16
@ -449,7 +449,7 @@ ACTOR Meat4 52
// Meat 5 ------------------------------------------------------------------
ACTOR Meat5 53
ACTOR Meat5
{
Game Doom
Radius 16
@ -467,28 +467,28 @@ 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
@ -497,7 +497,7 @@ ACTOR NonsolidMeat5 : Meat5 62
// Nonsolid bloody twitch --------------------------------------------------
ACTOR NonsolidTwitch : BloodyTwitch 63
ACTOR NonsolidTwitch : BloodyTwitch
{
Game Doom
-SOLID
@ -506,7 +506,7 @@ ACTOR NonsolidTwitch : BloodyTwitch 63
// Head on a stick ---------------------------------------------------------
ACTOR HeadOnAStick 27
ACTOR HeadOnAStick
{
Game Doom
Radius 16
@ -523,7 +523,7 @@ ACTOR HeadOnAStick 27
// Heads (plural!) on a stick ----------------------------------------------
ACTOR HeadsOnAStick 28
ACTOR HeadsOnAStick
{
Game Doom
Radius 16
@ -540,7 +540,7 @@ ACTOR HeadsOnAStick 28
// Head candles ------------------------------------------------------------
ACTOR HeadCandles 29
ACTOR HeadCandles
{
Game Doom
Radius 16
@ -557,7 +557,7 @@ ACTOR HeadCandles 29
// Dead on a stick ---------------------------------------------------------
ACTOR DeadStick 25
ACTOR DeadStick
{
Game Doom
Radius 16
@ -574,7 +574,7 @@ ACTOR DeadStick 25
// Still alive on a stick --------------------------------------------------
ACTOR LiveStick 26
ACTOR LiveStick
{
Game Doom
Radius 16
@ -592,7 +592,7 @@ ACTOR LiveStick 26
// Big tree ----------------------------------------------------------------
ACTOR BigTree 54
ACTOR BigTree
{
Game Doom
Radius 32
@ -609,7 +609,7 @@ ACTOR BigTree 54
// Burning barrel ----------------------------------------------------------
ACTOR BurningBarrel 70
ACTOR BurningBarrel
{
Game Doom
SpawnID 149
@ -627,7 +627,7 @@ ACTOR BurningBarrel 70
// Hanging with no guts ----------------------------------------------------
ACTOR HangNoGuts 73
ACTOR HangNoGuts
{
Game Doom
Radius 16
@ -645,7 +645,7 @@ ACTOR HangNoGuts 73
// Hanging from bottom with no brain ---------------------------------------
ACTOR HangBNoBrain 74
ACTOR HangBNoBrain
{
Game Doom
Radius 16
@ -663,7 +663,7 @@ ACTOR HangBNoBrain 74
// Hanging from top, looking down ------------------------------------------
ACTOR HangTLookingDown 75
ACTOR HangTLookingDown
{
Game Doom
Radius 16
@ -681,7 +681,7 @@ ACTOR HangTLookingDown 75
// Hanging from top, looking up --------------------------------------------
ACTOR HangTLookingUp 77
ACTOR HangTLookingUp
{
Game Doom
Radius 16
@ -699,7 +699,7 @@ ACTOR HangTLookingUp 77
// Hanging from top, skully ------------------------------------------------
ACTOR HangTSkull 76
ACTOR HangTSkull
{
Game Doom
Radius 16
@ -717,7 +717,7 @@ ACTOR HangTSkull 76
// Hanging from top without a brain ----------------------------------------
ACTOR HangTNoBrain 78
ACTOR HangTNoBrain
{
Game Doom
Radius 16
@ -735,7 +735,7 @@ ACTOR HangTNoBrain 78
// Colon gibs --------------------------------------------------------------
ACTOR ColonGibs 79
ACTOR ColonGibs
{
Game Doom
SpawnID 147
@ -753,7 +753,7 @@ ACTOR ColonGibs 79
// Small pool o' blood -----------------------------------------------------
ACTOR SmallBloodPool 80
ACTOR SmallBloodPool
{
Game Doom
SpawnID 148
@ -771,7 +771,7 @@ ACTOR SmallBloodPool 80
// brain stem lying on the ground ------------------------------------------
ACTOR BrainStem 81
ACTOR BrainStem
{
Game Doom
SpawnID 150
@ -790,7 +790,7 @@ ACTOR BrainStem 81
// Grey stalagmite (unused Doom sprite, definition taken from Skulltag -----
ACTOR Stalagmite 5050
ACTOR Stalagmite
{
Game Doom
Radius 16

View file

@ -1,6 +1,6 @@
// Health bonus -------------------------------------------------------------
ACTOR HealthBonus : Health 2014
ACTOR HealthBonus : Health
{
Game Doom
SpawnID 152
@ -19,7 +19,7 @@ ACTOR HealthBonus : Health 2014
// Stimpack -----------------------------------------------------------------
ACTOR Stimpack : Health 2011
ACTOR Stimpack : Health
{
Game Doom
SpawnID 23
@ -35,7 +35,7 @@ ACTOR Stimpack : Health 2011
// Medikit -----------------------------------------------------------------
ACTOR Medikit : Health 2012
ACTOR Medikit : Health
{
Game Doom
SpawnID 24

View file

@ -3,7 +3,7 @@
// Imp
//
//===========================================================================
ACTOR DoomImp 3001
ACTOR DoomImp
{
Game Doom
SpawnID 5

View file

@ -8,7 +8,7 @@ Actor DoomKey : Key
// Blue key card ------------------------------------------------------------
Actor BlueCard : DoomKey 5
Actor BlueCard : DoomKey
{
Game Doom
SpawnID 85
@ -25,7 +25,7 @@ Actor BlueCard : DoomKey 5
// Yellow key card ----------------------------------------------------------
Actor YellowCard : DoomKey 6
Actor YellowCard : DoomKey
{
Game Doom
SpawnID 87
@ -42,7 +42,7 @@ Actor YellowCard : DoomKey 6
// Red key card -------------------------------------------------------------
Actor RedCard : DoomKey 13
Actor RedCard : DoomKey
{
Game Doom
SpawnID 86
@ -59,7 +59,7 @@ Actor RedCard : DoomKey 13
// Blue skull key -----------------------------------------------------------
Actor BlueSkull : DoomKey 40
Actor BlueSkull : DoomKey
{
Game Doom
SpawnID 90
@ -76,7 +76,7 @@ Actor BlueSkull : DoomKey 40
// Yellow skull key ---------------------------------------------------------
Actor YellowSkull : DoomKey 39
Actor YellowSkull : DoomKey
{
Game Doom
SpawnID 88
@ -93,7 +93,7 @@ Actor YellowSkull : DoomKey 39
// Red skull key ------------------------------------------------------------
Actor RedSkull : DoomKey 38
Actor RedSkull : DoomKey
{
Game Doom
SpawnID 89

View file

@ -1,6 +1,6 @@
// The barrel of green goop ------------------------------------------------
ACTOR ExplosiveBarrel 2035
ACTOR ExplosiveBarrel
{
Game Doom
SpawnID 125
@ -85,7 +85,7 @@ ACTOR DoomUnusedStates
// MBF Beta emulation items
Actor EvilSceptre : ScoreItem 2016
Actor EvilSceptre : ScoreItem
{
Game Doom
Inventory.PickupMessage "$BETA_BONUS3"
@ -97,7 +97,7 @@ Actor EvilSceptre : ScoreItem 2016
}
}
Actor UnholyBible : ScoreItem 2017
Actor UnholyBible : ScoreItem
{
Game Doom
Inventory.PickupMessage "$BETA_BONUS4"

View file

@ -52,7 +52,7 @@ ACTOR Fist : Weapon
//
// --------------------------------------------------------------------------
ACTOR Pistol : DoomWeapon 5010
ACTOR Pistol : DoomWeapon
{
Game Doom
Weapon.SelectionOrder 1900
@ -97,7 +97,7 @@ ACTOR Pistol : DoomWeapon 5010
//
// --------------------------------------------------------------------------
ACTOR Chainsaw : Weapon 2005
ACTOR Chainsaw : Weapon
{
Game Doom
SpawnID 32
@ -137,7 +137,7 @@ ACTOR Chainsaw : Weapon 2005
//
// --------------------------------------------------------------------------
ACTOR Shotgun : DoomWeapon 2001
ACTOR Shotgun : DoomWeapon
{
Game Doom
SpawnID 27
@ -184,7 +184,7 @@ ACTOR Shotgun : DoomWeapon 2001
//
// --------------------------------------------------------------------------
ACTOR SuperShotgun : DoomWeapon 82
ACTOR SuperShotgun : DoomWeapon
{
Game Doom
SpawnID 33
@ -238,7 +238,7 @@ ACTOR SuperShotgun : DoomWeapon 82
//
// --------------------------------------------------------------------------
ACTOR Chaingun : DoomWeapon 2002
ACTOR Chaingun : DoomWeapon
{
Game Doom
SpawnID 28
@ -281,7 +281,7 @@ ACTOR Chaingun : DoomWeapon 2002
//
// --------------------------------------------------------------------------
ACTOR RocketLauncher : DoomWeapon 2003
ACTOR RocketLauncher : DoomWeapon
{
Game Doom
SpawnID 29
@ -404,7 +404,7 @@ ACTOR Grenade
//
// --------------------------------------------------------------------------
ACTOR PlasmaRifle : DoomWeapon 2004
ACTOR PlasmaRifle : DoomWeapon
{
Game Doom
SpawnID 30
@ -508,7 +508,7 @@ ACTOR PlasmaBall2 : PlasmaBall1
//
// --------------------------------------------------------------------------
ACTOR BFG9000 : DoomWeapon 2006
ACTOR BFG9000 : DoomWeapon
{
Game Doom
Height 20

View file

@ -3,7 +3,7 @@
// Mancubus
//
//===========================================================================
ACTOR Fatso 67
ACTOR Fatso
{
Game Doom
SpawnID 112

View file

@ -3,7 +3,7 @@
// Commander Keen
//
//===========================================================================
ACTOR CommanderKeen 72
ACTOR CommanderKeen
{
Game Doom
Health 100

View file

@ -3,7 +3,7 @@
// Lost Soul
//
//===========================================================================
ACTOR LostSoul 3006
ACTOR LostSoul
{
Game Doom
SpawnID 110
@ -50,7 +50,7 @@ ACTOR LostSoul 3006
}
}
Actor BetaSkull : LostSoul 9037
Actor BetaSkull : LostSoul
{
States
{

View file

@ -3,7 +3,7 @@
// Pain Elemental
//
//===========================================================================
ACTOR PainElemental 71
ACTOR PainElemental
{
Game Doom
SpawnID 115

View file

@ -4,7 +4,7 @@
// Zombie man
//
//===========================================================================
ACTOR ZombieMan 3004
ACTOR ZombieMan
{
Game Doom
SpawnID 4
@ -65,7 +65,7 @@ ACTOR ZombieMan 3004
// Sergeant / Shotgun guy
//
//===========================================================================
ACTOR ShotgunGuy 9
ACTOR ShotgunGuy
{
Game Doom
SpawnID 1
@ -127,7 +127,7 @@ ACTOR ShotgunGuy 9
// Chaingunner
//
//===========================================================================
ACTOR ChaingunGuy 65
ACTOR ChaingunGuy
{
Game Doom
SpawnID 2
@ -189,7 +189,7 @@ ACTOR ChaingunGuy 65
// SS Nazi
//
//===========================================================================
ACTOR WolfensteinSS 84
ACTOR WolfensteinSS
{
Game Doom
SpawnID 116

View file

@ -3,7 +3,7 @@
// Revenant
//
//===========================================================================
ACTOR Revenant 66
ACTOR Revenant
{
Game Doom
SpawnID 20

View file

@ -1,7 +1,7 @@
// Scriptable marine -------------------------------------------------------
ACTOR ScriptedMarine 9100 native
ACTOR ScriptedMarine native
{
Game Doom
SpawnID 151
@ -172,7 +172,7 @@ ACTOR ScriptedMarine 9100 native
//---------------------------------------------------------------------------
ACTOR MarineFist : ScriptedMarine 9101
ACTOR MarineFist : ScriptedMarine
{
Game Doom
States
@ -187,7 +187,7 @@ ACTOR MarineFist : ScriptedMarine 9101
//---------------------------------------------------------------------------
ACTOR MarineBerserk : MarineFist 9102
ACTOR MarineBerserk : MarineFist
{
Game Doom
States
@ -200,7 +200,7 @@ ACTOR MarineBerserk : MarineFist 9102
}
//---------------------------------------------------------------------------
ACTOR MarineChainsaw : ScriptedMarine 9103
ACTOR MarineChainsaw : ScriptedMarine
{
Game Doom
States
@ -216,7 +216,7 @@ ACTOR MarineChainsaw : ScriptedMarine 9103
//---------------------------------------------------------------------------
ACTOR MarinePistol : ScriptedMarine 9104
ACTOR MarinePistol : ScriptedMarine
{
Game Doom
States
@ -229,7 +229,7 @@ ACTOR MarinePistol : ScriptedMarine 9104
//---------------------------------------------------------------------------
ACTOR MarineShotgun : ScriptedMarine 9105
ACTOR MarineShotgun : ScriptedMarine
{
Game Doom
States
@ -244,7 +244,7 @@ ACTOR MarineShotgun : ScriptedMarine 9105
//---------------------------------------------------------------------------
ACTOR MarineSSG : ScriptedMarine 9106
ACTOR MarineSSG : ScriptedMarine
{
Game Doom
States
@ -256,7 +256,7 @@ ACTOR MarineSSG : ScriptedMarine 9106
//---------------------------------------------------------------------------
ACTOR MarineChaingun : ScriptedMarine 9107
ACTOR MarineChaingun : ScriptedMarine
{
Game Doom
States
@ -269,7 +269,7 @@ ACTOR MarineChaingun : ScriptedMarine 9107
//---------------------------------------------------------------------------
ACTOR MarineRocket : MarineFist 9108
ACTOR MarineRocket : MarineFist
{
Game Doom
States
@ -282,7 +282,7 @@ ACTOR MarineRocket : MarineFist 9108
//---------------------------------------------------------------------------
ACTOR MarinePlasma : ScriptedMarine 9109
ACTOR MarinePlasma : ScriptedMarine
{
Game Doom
States
@ -295,7 +295,7 @@ ACTOR MarinePlasma : ScriptedMarine 9109
//---------------------------------------------------------------------------
ACTOR MarineRailgun : ScriptedMarine 9110
ACTOR MarineRailgun : ScriptedMarine
{
Game Doom
States
@ -308,7 +308,7 @@ ACTOR MarineRailgun : ScriptedMarine 9110
//---------------------------------------------------------------------------
ACTOR MarineBFG : ScriptedMarine 9111
ACTOR MarineBFG : ScriptedMarine
{
Game Doom
States

View file

@ -3,7 +3,7 @@
// Spider boss
//
//===========================================================================
ACTOR SpiderMastermind 7
ACTOR SpiderMastermind
{
Game Doom
SpawnID 7

View file

@ -1,5 +1,5 @@
ACTOR StealthArachnotron : Arachnotron 9050
ACTOR StealthArachnotron : Arachnotron
{
Game Doom
SpawnID 117
@ -9,7 +9,7 @@ ACTOR StealthArachnotron : Arachnotron 9050
Obituary "$OB_STEALTHBABY"
}
ACTOR StealthArchvile : Archvile 9051
ACTOR StealthArchvile : Archvile
{
Game Doom
SpawnID 118
@ -19,7 +19,7 @@ ACTOR StealthArchvile : Archvile 9051
Obituary "$OB_STEALTHVILE"
}
ACTOR StealthBaron : BaronOfHell 9052
ACTOR StealthBaron : BaronOfHell
{
Game Doom
SpawnID 100
@ -30,7 +30,7 @@ ACTOR StealthBaron : BaronOfHell 9052
HitObituary "$OB_STEALTHBARON"
}
ACTOR StealthCacodemon : Cacodemon 9053
ACTOR StealthCacodemon : Cacodemon
{
Game Doom
SpawnID 119
@ -41,7 +41,7 @@ ACTOR StealthCacodemon : Cacodemon 9053
HitObituary "$OB_STEALTHCACO"
}
ACTOR StealthChaingunGuy : ChaingunGuy 9054
ACTOR StealthChaingunGuy : ChaingunGuy
{
Game Doom
SpawnID 120
@ -51,7 +51,7 @@ ACTOR StealthChaingunGuy : ChaingunGuy 9054
Obituary "$OB_STEALTHCHAINGUY"
}
ACTOR StealthDemon : Demon 9055
ACTOR StealthDemon : Demon
{
Game Doom
SpawnID 121
@ -62,7 +62,7 @@ ACTOR StealthDemon : Demon 9055
HitObituary "$OB_STEALTHDEMON"
}
ACTOR StealthHellKnight : HellKnight 9056
ACTOR StealthHellKnight : HellKnight
{
Game Doom
SpawnID 101
@ -73,7 +73,7 @@ ACTOR StealthHellKnight : HellKnight 9056
HitObituary "$OB_STEALTHKNIGHT"
}
ACTOR StealthDoomImp : DoomImp 9057
ACTOR StealthDoomImp : DoomImp
{
Game Doom
SpawnID 122
@ -84,7 +84,7 @@ ACTOR StealthDoomImp : DoomImp 9057
HitObituary "$OB_STEALTHIMP"
}
ACTOR StealthFatso : Fatso 9058
ACTOR StealthFatso : Fatso
{
Game Doom
SpawnID 123
@ -94,7 +94,7 @@ ACTOR StealthFatso : Fatso 9058
Obituary "$OB_STEALTHFATSO"
}
ACTOR StealthRevenant : Revenant 9059
ACTOR StealthRevenant : Revenant
{
Game Doom
SpawnID 124
@ -105,7 +105,7 @@ ACTOR StealthRevenant : Revenant 9059
HitObituary "$OB_STEALTHUNDEAD"
}
ACTOR StealthShotgunGuy : ShotgunGuy 9060
ACTOR StealthShotgunGuy : ShotgunGuy
{
Game Doom
SpawnID 103
@ -115,7 +115,7 @@ ACTOR StealthShotgunGuy : ShotgunGuy 9060
Obituary "$OB_STEALTHSHOTGUNGUY"
}
ACTOR StealthZombieMan : ZombieMan 9061
ACTOR StealthZombieMan : ZombieMan
{
Game Doom
SpawnID 102

View file

@ -1,7 +1,7 @@
// Beast --------------------------------------------------------------------
ACTOR Beast 70
ACTOR Beast
{
Game Heretic
SpawnID 3

View file

@ -1,5 +1,5 @@
ACTOR Clink 90
ACTOR Clink
{
Game Heretic
SpawnID 1

View file

@ -1,7 +1,7 @@
// Boss spot ----------------------------------------------------------------
ACTOR BossSpot : SpecialSpot 56
ACTOR BossSpot : SpecialSpot
{
Game Heretic
SpawnID 141
@ -10,7 +10,7 @@ ACTOR BossSpot : SpecialSpot 56
// Sorcerer (D'Sparil on his serpent) ---------------------------------------
ACTOR Sorcerer1 7
ACTOR Sorcerer1
{
Game Heretic
SpawnID 142

View file

@ -1,7 +1,7 @@
// Wimpy ammo ---------------------------------------------------------------
ACTOR GoldWandAmmo : Ammo 10
ACTOR GoldWandAmmo : Ammo
{
Game Heretic
SpawnID 11
@ -21,7 +21,7 @@ ACTOR GoldWandAmmo : Ammo 10
// Hefty ammo ---------------------------------------------------------------
ACTOR GoldWandHefty : GoldWandAmmo 12
ACTOR GoldWandHefty : GoldWandAmmo
{
Game Heretic
SpawnID 12
@ -36,7 +36,7 @@ ACTOR GoldWandHefty : GoldWandAmmo 12
}
// Wimpy ammo ---------------------------------------------------------------
ACTOR CrossbowAmmo : Ammo 18
ACTOR CrossbowAmmo : Ammo
{
Game Heretic
SpawnID 33
@ -56,7 +56,7 @@ ACTOR CrossbowAmmo : Ammo 18
// Hefty ammo ---------------------------------------------------------------
ACTOR CrossbowHefty : CrossbowAmmo 19
ACTOR CrossbowHefty : CrossbowAmmo
{
Game Heretic
SpawnID 34
@ -71,7 +71,7 @@ ACTOR CrossbowHefty : CrossbowAmmo 19
}
// Wimpy ammo ---------------------------------------------------------------
ACTOR MaceAmmo : Ammo 13
ACTOR MaceAmmo : Ammo
{
Game Heretic
SpawnID 35
@ -91,7 +91,7 @@ ACTOR MaceAmmo : Ammo 13
// Hefty ammo ---------------------------------------------------------------
ACTOR MaceHefty : MaceAmmo 16
ACTOR MaceHefty : MaceAmmo
{
Game Heretic
SpawnID 36
@ -107,7 +107,7 @@ ACTOR MaceHefty : MaceAmmo 16
// Wimpy ammo ---------------------------------------------------------------
ACTOR BlasterAmmo : Ammo 54
ACTOR BlasterAmmo : Ammo
{
Game Heretic
SpawnID 37
@ -127,7 +127,7 @@ ACTOR BlasterAmmo : Ammo 54
// Hefty ammo ---------------------------------------------------------------
ACTOR BlasterHefty : BlasterAmmo 55
ACTOR BlasterHefty : BlasterAmmo
{
Game Heretic
SpawnID 38
@ -143,7 +143,7 @@ ACTOR BlasterHefty : BlasterAmmo 55
// Wimpy ammo ---------------------------------------------------------------
ACTOR SkullRodAmmo : Ammo 20
ACTOR SkullRodAmmo : Ammo
{
Game Heretic
SpawnID 158
@ -163,7 +163,7 @@ ACTOR SkullRodAmmo : Ammo 20
// Hefty ammo ---------------------------------------------------------------
ACTOR SkullRodHefty : SkullRodAmmo 21
ACTOR SkullRodHefty : SkullRodAmmo
{
Game Heretic
SpawnID 159
@ -179,7 +179,7 @@ ACTOR SkullRodHefty : SkullRodAmmo 21
// Wimpy ammo ---------------------------------------------------------------
ACTOR PhoenixRodAmmo : Ammo 22
ACTOR PhoenixRodAmmo : Ammo
{
Game Heretic
SpawnID 161
@ -198,7 +198,7 @@ ACTOR PhoenixRodAmmo : Ammo 22
}
// Hefty ammo ---------------------------------------------------------------
ACTOR PhoenixRodHefty : PhoenixRodAmmo 23
ACTOR PhoenixRodHefty : PhoenixRodAmmo
{
Game Heretic
SpawnID 162
@ -214,7 +214,7 @@ ACTOR PhoenixRodHefty : PhoenixRodAmmo 23
// --- Bag of holding -------------------------------------------------------
ACTOR BagOfHolding : BackpackItem 8
ACTOR BagOfHolding : BackpackItem
{
Game Heretic
SpawnID 136

View file

@ -1,7 +1,7 @@
// Silver Shield (Shield1) --------------------------------------------------
Actor SilverShield : BasicArmorPickup 85
Actor SilverShield : BasicArmorPickup
{
Game Heretic
SpawnID 68
@ -20,7 +20,7 @@ Actor SilverShield : BasicArmorPickup 85
// Enchanted shield (Shield2) -----------------------------------------------
Actor EnchantedShield : BasicArmorPickup 31
Actor EnchantedShield : BasicArmorPickup
{
Game Heretic
SpawnID 69

View file

@ -1,6 +1,6 @@
// Super map ----------------------------------------------------------------
ACTOR SuperMap : MapRevealer 35
ACTOR SuperMap : MapRevealer
{
Game Heretic
SpawnID 137
@ -20,7 +20,7 @@ ACTOR SuperMap : MapRevealer 35
// Invisibility -------------------------------------------------------------
ACTOR ArtiInvisibility : PowerupGiver 75
ACTOR ArtiInvisibility : PowerupGiver
{
Game Heretic
SpawnID 135
@ -45,7 +45,7 @@ ACTOR ArtiInvisibility : PowerupGiver 75
// Tome of power ------------------------------------------------------------
ACTOR ArtiTomeOfPower : PowerupGiver 86 native
ACTOR ArtiTomeOfPower : PowerupGiver native
{
Game Heretic
SpawnID 134
@ -88,7 +88,7 @@ ACTOR ActivatedTimeBomb
}
ACTOR ArtiTimeBomb : Inventory 34 native
ACTOR ArtiTimeBomb : Inventory native
{
Game Heretic
SpawnID 72

View file

@ -1,4 +1,4 @@
ACTOR SkullHang70 17
ACTOR SkullHang70
{
Game Heretic
Radius 20
@ -13,7 +13,7 @@ ACTOR SkullHang70 17
}
}
ACTOR SkullHang60 24
ACTOR SkullHang60
{
Game Heretic
Radius 20
@ -28,7 +28,7 @@ ACTOR SkullHang60 24
}
}
ACTOR SkullHang45 25
ACTOR SkullHang45
{
Game Heretic
Radius 20
@ -43,7 +43,7 @@ ACTOR SkullHang45 25
}
}
ACTOR SkullHang35 26
ACTOR SkullHang35
{
Game Heretic
Radius 20
@ -58,7 +58,7 @@ ACTOR SkullHang35 26
}
}
ACTOR Chandelier 28
ACTOR Chandelier
{
Game Heretic
Radius 20
@ -73,7 +73,7 @@ ACTOR Chandelier 28
}
}
ACTOR SerpentTorch 27
ACTOR SerpentTorch
{
Game Heretic
Radius 12
@ -87,7 +87,7 @@ ACTOR SerpentTorch 27
}
}
ACTOR SmallPillar 29
ACTOR SmallPillar
{
Game Heretic
Radius 16
@ -101,7 +101,7 @@ ACTOR SmallPillar 29
}
}
ACTOR StalagmiteSmall 37
ACTOR StalagmiteSmall
{
Game Heretic
Radius 8
@ -115,7 +115,7 @@ ACTOR StalagmiteSmall 37
}
}
ACTOR StalagmiteLarge 38
ACTOR StalagmiteLarge
{
Game Heretic
Radius 12
@ -129,7 +129,7 @@ ACTOR StalagmiteLarge 38
}
}
ACTOR StalactiteSmall 39
ACTOR StalactiteSmall
{
Game Heretic
Radius 8
@ -145,7 +145,7 @@ ACTOR StalactiteSmall 39
}
}
ACTOR StalactiteLarge 40
ACTOR StalactiteLarge
{
Game Heretic
Radius 12
@ -161,7 +161,7 @@ ACTOR StalactiteLarge 40
}
}
ACTOR FireBrazier 76
ACTOR FireBrazier
{
Game Heretic
Radius 16
@ -175,7 +175,7 @@ ACTOR FireBrazier 76
}
}
ACTOR Barrel 44
ACTOR Barrel
{
Game Heretic
Radius 12
@ -189,7 +189,7 @@ ACTOR Barrel 44
}
}
ACTOR BrownPillar 47
ACTOR BrownPillar
{
Game Heretic
Radius 14
@ -203,7 +203,7 @@ ACTOR BrownPillar 47
}
}
ACTOR Moss1 48
ACTOR Moss1
{
Game Heretic
Radius 20
@ -218,7 +218,7 @@ ACTOR Moss1 48
}
}
ACTOR Moss2 49
ACTOR Moss2
{
Game Heretic
Radius 20
@ -233,7 +233,7 @@ ACTOR Moss2 49
}
}
ACTOR WallTorch 50
ACTOR WallTorch
{
Game Heretic
Radius 6
@ -248,7 +248,7 @@ ACTOR WallTorch 50
}
}
ACTOR HangingCorpse 51
ACTOR HangingCorpse
{
Game Heretic
Radius 8

View file

@ -1,7 +1,7 @@
// Heretic imp (as opposed to the Doom variety) -----------------------------
ACTOR HereticImp 66
ACTOR HereticImp
{
Game Heretic
SpawnID 5
@ -78,7 +78,7 @@ ACTOR HereticImp 66
// Heretic imp leader -------------------------------------------------------
ACTOR HereticImpLeader : HereticImp 5
ACTOR HereticImpLeader : HereticImp
{
Game Heretic
SpawnID 7

View file

@ -8,7 +8,7 @@ ACTOR HereticKey : Key
// Green key ------------------------------------------------------------
ACTOR KeyGreen : HereticKey 73
ACTOR KeyGreen : HereticKey
{
Game Heretic
SpawnID 86
@ -24,7 +24,7 @@ ACTOR KeyGreen : HereticKey 73
// Blue key -----------------------------------------------------------------
ACTOR KeyBlue : HereticKey 79
ACTOR KeyBlue : HereticKey
{
Game Heretic
SpawnID 85
@ -40,7 +40,7 @@ ACTOR KeyBlue : HereticKey 79
// Yellow key ---------------------------------------------------------------
ACTOR KeyYellow : HereticKey 80
ACTOR KeyYellow : HereticKey
{
Game Heretic
SpawnID 87
@ -57,7 +57,7 @@ ACTOR KeyYellow : HereticKey 80
// --- Blue Key gizmo -----------------------------------------------------------
ACTOR KeyGizmoBlue 94
ACTOR KeyGizmoBlue
{
Game Heretic
Radius 16
@ -89,7 +89,7 @@ ACTOR KeyGizmoFloatBlue
// --- Green Key gizmo -----------------------------------------------------------
ACTOR KeyGizmoGreen 95
ACTOR KeyGizmoGreen
{
Game Heretic
Radius 16
@ -121,7 +121,7 @@ ACTOR KeyGizmoFloatGreen
// --- Yellow Key gizmo -----------------------------------------------------------
ACTOR KeyGizmoYellow 96
ACTOR KeyGizmoYellow
{
Game Heretic
Radius 16

View file

@ -1,7 +1,7 @@
// Pod ----------------------------------------------------------------------
ACTOR Pod 2035
ACTOR Pod
{
Game Heretic
SpawnID 125
@ -62,7 +62,7 @@ ACTOR PodGoo
// Pod generator ------------------------------------------------------------
ACTOR PodGenerator 43
ACTOR PodGenerator
{
Game Heretic
SpawnID 126
@ -84,7 +84,7 @@ ACTOR PodGenerator 43
// Teleglitter generator 1 --------------------------------------------------
ACTOR TeleGlitterGenerator1 74
ACTOR TeleGlitterGenerator1
{
Game Heretic
SpawnID 166
@ -102,7 +102,7 @@ ACTOR TeleGlitterGenerator1 74
// Teleglitter generator 2 --------------------------------------------------
ACTOR TeleGlitterGenerator2 52
ACTOR TeleGlitterGenerator2
{
Game Heretic
SpawnID 167
@ -160,7 +160,7 @@ ACTOR TeleGlitter2 : TeleGlitter1
// --- Volcano --------------------------------------------------------------
ACTOR Volcano 87
ACTOR Volcano
{
Game Heretic
SpawnID 150

View file

@ -110,7 +110,7 @@ ACTOR StaffPuff2
// Gold wand ----------------------------------------------------------------
ACTOR GoldWand : HereticWeapon 9042
ACTOR GoldWand : HereticWeapon
{
Game Heretic
+BLOODSPLATTER
@ -248,7 +248,7 @@ ACTOR GoldWandPuff2 : GoldWandFX1
// Crossbow -----------------------------------------------------------------
ACTOR Crossbow : HereticWeapon 2001
ACTOR Crossbow : HereticWeapon
{
Game Heretic
SpawnID 27
@ -400,7 +400,7 @@ ACTOR CrossbowFX4
// Gauntlets ----------------------------------------------------------------
ACTOR Gauntlets : Weapon 2005
ACTOR Gauntlets : Weapon
{
Game Heretic
SpawnID 32
@ -681,7 +681,7 @@ ACTOR MaceFX4 native
// Mace spawn spot ----------------------------------------------------------
ACTOR MaceSpawner : SpecialSpot 2002
ACTOR MaceSpawner : SpecialSpot
{
Game Heretic
+NOSECTOR
@ -698,7 +698,7 @@ ACTOR MaceSpawner : SpecialSpot 2002
// Blaster ------------------------------------------------------------------
ACTOR Blaster : HereticWeapon 53
ACTOR Blaster : HereticWeapon
{
Game Heretic
SpawnID 28
@ -854,7 +854,7 @@ ACTOR BlasterPuff
// Skull (Horn) Rod ---------------------------------------------------------
ACTOR SkullRod : HereticWeapon 2004
ACTOR SkullRod : HereticWeapon
{
Game Heretic
SpawnID 30
@ -1028,7 +1028,7 @@ ACTOR RainTracker : Inventory native
// Phoenix Rod --------------------------------------------------------------
ACTOR PhoenixRod : Weapon 2003 native
ACTOR PhoenixRod : Weapon native
{
Game Heretic
SpawnID 29

View file

@ -1,7 +1,7 @@
// Ironlich -----------------------------------------------------------------
ACTOR Ironlich 6
ACTOR Ironlich
{
Game Heretic
SpawnID 20

View file

@ -1,7 +1,7 @@
// Knight -------------------------------------------------------------------
ACTOR Knight 64
ACTOR Knight
{
Game Heretic
SpawnID 6
@ -60,7 +60,7 @@ ACTOR Knight 64
// Knight ghost -------------------------------------------------------------
ACTOR KnightGhost : Knight 65
ACTOR KnightGhost : Knight
{
Game Heretic
SpawnID 129

View file

@ -1,7 +1,7 @@
// Mummy --------------------------------------------------------------------
ACTOR Mummy 68
ACTOR Mummy
{
Game Heretic
SpawnID 4
@ -51,7 +51,7 @@ ACTOR Mummy 68
// Mummy leader -------------------------------------------------------------
ACTOR MummyLeader : Mummy 45
ACTOR MummyLeader : Mummy
{
Game Heretic
SpawnID 2
@ -74,7 +74,7 @@ ACTOR MummyLeader : Mummy 45
// Mummy ghost --------------------------------------------------------------
ACTOR MummyGhost : Mummy 69
ACTOR MummyGhost : Mummy
{
Game Heretic
SpawnID 8
@ -86,7 +86,7 @@ ACTOR MummyGhost : Mummy 69
// Mummy leader ghost -------------------------------------------------------
ACTOR MummyLeaderGhost : MummyLeader 46
ACTOR MummyLeaderGhost : MummyLeader
{
Game Heretic
SpawnID 9

View file

@ -1,5 +1,5 @@
ACTOR Snake 92
ACTOR Snake
{
Game Heretic
SpawnID 132

View file

@ -1,7 +1,7 @@
// Wizard --------------------------------------------------------
ACTOR Wizard 15
ACTOR Wizard
{
Game Heretic
SpawnID 19

View file

@ -1,7 +1,7 @@
// Bat Spawner --------------------------------------------------------------
ACTOR BatSpawner : SwitchableDecoration 10225
ACTOR BatSpawner : SwitchableDecoration
{
Game Hexen
+NOBLOCKMAP +NOSECTOR +NOGRAVITY

View file

@ -1,7 +1,7 @@
// Bishop -------------------------------------------------------------------
ACTOR Bishop 114
ACTOR Bishop
{
Game Hexen
SpawnID 19

View file

@ -1,5 +1,5 @@
ACTOR ArtiBlastRadius : CustomInventory 10110
ACTOR ArtiBlastRadius : CustomInventory
{
Game Hexen
SpawnID 74

View file

@ -1,7 +1,7 @@
// Boost Armor Artifact (Dragonskin Bracers) --------------------------------
ACTOR ArtiBoostArmor : Inventory 8041 native
ACTOR ArtiBoostArmor : Inventory native
{
Game Hexen
SpawnID 22

View file

@ -1,6 +1,6 @@
// Centaur ------------------------------------------------------------------
ACTOR Centaur 107
ACTOR Centaur
{
Game Hexen
SpawnID 1
@ -78,7 +78,7 @@ ACTOR Centaur 107
// Centaur Leader -----------------------------------------------------------
ACTOR CentaurLeader : Centaur 115
ACTOR CentaurLeader : Centaur
{
Game Hexen
SpawnID 2

View file

@ -1,7 +1,7 @@
// Cleric Boss (Traductus) --------------------------------------------------
ACTOR ClericBoss 10101
ACTOR ClericBoss
{
Game Hexen
Health 800

View file

@ -1,7 +1,7 @@
// The Cleric's Flame Strike ------------------------------------------------
ACTOR CWeapFlame : ClericWeapon 8009
ACTOR CWeapFlame : ClericWeapon
{
Game Hexen
+NOGRAVITY

View file

@ -12,7 +12,7 @@ ACTOR ClericWeaponPiece : WeaponPiece
// Cleric Weapon Piece 1 ----------------------------------------------------
ACTOR CWeaponPiece1 : ClericWeaponPiece 18
ACTOR CWeaponPiece1 : ClericWeaponPiece
{
Game Hexen
SpawnID 33
@ -27,7 +27,7 @@ ACTOR CWeaponPiece1 : ClericWeaponPiece 18
// Cleric Weapon Piece 2 ----------------------------------------------------
ACTOR CWeaponPiece2 : ClericWeaponPiece 19
ACTOR CWeaponPiece2 : ClericWeaponPiece
{
Game Hexen
SpawnID 34
@ -42,7 +42,7 @@ ACTOR CWeaponPiece2 : ClericWeaponPiece 19
// Cleric Weapon Piece 3 ----------------------------------------------------
ACTOR CWeaponPiece3 : ClericWeaponPiece 20
ACTOR CWeaponPiece3 : ClericWeaponPiece
{
Game Hexen
SpawnID 35

View file

@ -1,7 +1,7 @@
// The Cleric's Serpent Staff -----------------------------------------------
ACTOR CWeapStaff : ClericWeapon 10
ACTOR CWeapStaff : ClericWeapon
{
Game Hexen
SpawnID 32

View file

@ -1,7 +1,7 @@
// Demon, type 1 (green, like D'Sparil's) -----------------------------------
ACTOR Demon1 31
ACTOR Demon1
{
Game Hexen
SpawnID 3
@ -212,7 +212,7 @@ ACTOR Demon1FX1
// Demon, type 2 (brown) ----------------------------------------------------
ACTOR Demon2 : Demon1 8080
ACTOR Demon2 : Demon1
{
Game Hexen
Obituary "$OB_DEMON2"

View file

@ -1,7 +1,7 @@
// Dragon -------------------------------------------------------------------
ACTOR Dragon 254
ACTOR Dragon
{
Game Hexen
Health 640

View file

@ -1,7 +1,7 @@
// Ettin --------------------------------------------------------------------
ACTOR Ettin 10030
ACTOR Ettin
{
Game Hexen
SpawnID 4

View file

@ -1,7 +1,7 @@
// The Fighter's Axe --------------------------------------------------------
ACTOR FWeapAxe : FighterWeapon 8010 native
ACTOR FWeapAxe : FighterWeapon native
{
Game Hexen
SpawnID 27

View file

@ -1,7 +1,7 @@
// Fighter Boss (Zedek) -----------------------------------------------------
ACTOR FighterBoss 10100
ACTOR FighterBoss
{
Game Hexen
health 800

View file

@ -1,7 +1,7 @@
// The Fighter's Hammer -----------------------------------------------------
ACTOR FWeapHammer : FighterWeapon 123
ACTOR FWeapHammer : FighterWeapon
{
Game Hexen
SpawnID 28

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