2016-10-25 08:15:24 +00:00
// for flag changer functions.
2016-10-25 09:38:02 +00:00
const FLAG_NO_CHANGE = -1;
2016-11-22 22:42:32 +00:00
const MAXPLAYERS = 8;
2016-10-25 08:15:24 +00:00
2016-11-14 16:50:09 +00:00
enum EStateUseFlags
{
SUF_ACTOR = 1,
SUF_OVERLAY = 2,
SUF_WEAPON = 4,
SUF_ITEM = 8,
};
2014-10-02 22:00:17 +00:00
// Flags for A_PainAttack
2016-10-07 16:09:28 +00:00
enum EPainAttackFlags
{
PAF_NOSKULLATTACK = 1,
PAF_AIMFACING = 2,
PAF_NOTARGET = 4,
};
2014-10-02 22:00:17 +00:00
// Flags for A_VileAttack
2016-10-07 16:09:28 +00:00
enum EVileAttackFlags
{
VAF_DMGTYPEAPPLYTODIRECT = 1,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Saw
2016-10-07 16:09:28 +00:00
enum ESawFlags
{
SF_NORANDOM = 1,
SF_RANDOMLIGHTMISS = 2,
SF_RANDOMLIGHTHIT = 4,
SF_RANDOMLIGHTBOTH = 6,
SF_NOUSEAMMOMISS = 8,
SF_NOUSEAMMO = 16,
SF_NOPULLIN = 32,
SF_NOTURN = 64,
SF_STEALARMOR = 128,
2020-09-27 17:24:59 +00:00
SF_NORANDOMPUFFZ = 256,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
2016-06-11 01:22:48 +00:00
// Flags for A_BFGSpray
2016-10-07 16:09:28 +00:00
enum EBFGSprayFlags
{
BFGF_HURTSOURCE = 1,
BFGF_MISSILEORIGIN = 2,
};
2016-06-11 01:22:48 +00:00
2016-12-24 13:46:34 +00:00
// Flags for A_SpawnProjectile
2016-10-07 16:09:28 +00:00
enum ECustomMissileFlags
{
CMF_AIMOFFSET = 1,
CMF_AIMDIRECTION = 2,
CMF_TRACKOWNER = 4,
CMF_CHECKTARGETDEAD = 8,
CMF_ABSOLUTEPITCH = 16,
CMF_OFFSETPITCH = 32,
CMF_SAVEPITCH = 64,
CMF_ABSOLUTEANGLE = 128,
2016-12-24 13:46:34 +00:00
CMF_BADPITCH = 256, // for compatibility handling only - avoid!
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_CustomBulletAttack
2016-10-07 16:09:28 +00:00
enum ECustomBulletAttackFlags
{
CBAF_AIMFACING = 1,
CBAF_NORANDOM = 2,
CBAF_EXPLICITANGLE = 4,
CBAF_NOPITCH = 8,
CBAF_NORANDOMPUFFZ = 16,
CBAF_PUFFTARGET = 32,
CBAF_PUFFMASTER = 64,
CBAF_PUFFTRACER = 128,
};
2014-10-02 22:00:17 +00:00
// Flags for A_GunFlash
2016-10-07 16:09:28 +00:00
enum EGunFlashFlags
{
GFF_NOEXTCHANGE = 1,
};
2014-10-02 22:00:17 +00:00
// Flags for A_FireBullets
2016-10-07 16:09:28 +00:00
enum EFireBulletsFlags
{
FBF_USEAMMO = 1,
FBF_NORANDOM = 2,
FBF_EXPLICITANGLE = 4,
FBF_NOPITCH = 8,
FBF_NOFLASH = 16,
FBF_NORANDOMPUFFZ = 32,
2016-10-09 13:47:31 +00:00
FBF_PUFFTARGET = 64,
FBF_PUFFMASTER = 128,
FBF_PUFFTRACER = 256,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_SpawnItemEx
2016-10-07 16:09:28 +00:00
enum ESpawnItemFlags
{
SXF_TRANSFERTRANSLATION = 1 << 0,
SXF_ABSOLUTEPOSITION = 1 << 1,
SXF_ABSOLUTEANGLE = 1 << 2,
SXF_ABSOLUTEMOMENTUM = 1 << 3, //Since "momentum" is declared to be deprecated in the expressions, for compatibility
SXF_ABSOLUTEVELOCITY = 1 << 3, //purposes, this was made. It does the same thing though. Do not change the value.
SXF_SETMASTER = 1 << 4,
SXF_NOCHECKPOSITION = 1 << 5,
SXF_TELEFRAG = 1 << 6,
SXF_CLIENTSIDE = 1 << 7, // only used by Skulltag
SXF_TRANSFERAMBUSHFLAG = 1 << 8,
SXF_TRANSFERPITCH = 1 << 9,
SXF_TRANSFERPOINTERS = 1 << 10,
SXF_USEBLOODCOLOR = 1 << 11,
SXF_CLEARCALLERTID = 1 << 12,
SXF_MULTIPLYSPEED = 1 << 13,
SXF_TRANSFERSCALE = 1 << 14,
SXF_TRANSFERSPECIAL = 1 << 15,
SXF_CLEARCALLERSPECIAL = 1 << 16,
SXF_TRANSFERSTENCILCOL = 1 << 17,
SXF_TRANSFERALPHA = 1 << 18,
SXF_TRANSFERRENDERSTYLE = 1 << 19,
SXF_SETTARGET = 1 << 20,
SXF_SETTRACER = 1 << 21,
SXF_NOPOINTERS = 1 << 22,
SXF_ORIGINATOR = 1 << 23,
SXF_TRANSFERSPRITEFRAME = 1 << 24,
SXF_TRANSFERROLL = 1 << 25,
SXF_ISTARGET = 1 << 26,
SXF_ISMASTER = 1 << 27,
SXF_ISTRACER = 1 << 28,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Chase
2016-10-07 16:09:28 +00:00
enum EChaseFlags
2016-01-08 01:20:02 +00:00
{
CHF_FASTCHASE = 1,
CHF_NOPLAYACTIVE = 2,
CHF_NIGHTMAREFAST = 4,
CHF_RESURRECT = 8,
CHF_DONTMOVE = 16,
CHF_NORANDOMTURN = 32,
2016-01-27 15:35:19 +00:00
CHF_NODIRECTIONTURN = 64,
2016-01-08 01:20:02 +00:00
CHF_NOPOSTATTACKTURN = 128,
CHF_STOPIFBLOCKED = 256,
2022-03-23 18:56:27 +00:00
CHF_DONTIDLE = 512,
2016-01-08 01:20:02 +00:00
2016-01-27 15:39:46 +00:00
CHF_DONTTURN = CHF_NORANDOMTURN | CHF_NOPOSTATTACKTURN | CHF_STOPIFBLOCKED
2016-01-08 01:20:02 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_LookEx
2016-10-07 16:09:28 +00:00
enum ELookFlags
{
LOF_NOSIGHTCHECK = 1,
LOF_NOSOUNDCHECK = 2,
LOF_DONTCHASEGOAL = 4,
LOF_NOSEESOUND = 8,
LOF_FULLVOLSEESOUND = 16,
LOF_NOJUMP = 32,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Respawn
2016-10-07 16:09:28 +00:00
enum ERespawnFlags
{
RSF_FOG = 1,
RSF_KEEPTARGET = 2,
RSF_TELEFRAG = 4,
};
2014-10-02 22:00:17 +00:00
// Flags for A_JumpIfTargetInLOS and A_JumpIfInTargetLOS
2016-10-07 16:09:28 +00:00
enum EJumpFlags
2014-10-02 22:00:17 +00:00
{
JLOSF_PROJECTILE = 1,
JLOSF_NOSIGHT = 1 << 1,
JLOSF_CLOSENOFOV = 1 << 2,
JLOSF_CLOSENOSIGHT = 1 << 3,
JLOSF_CLOSENOJUMP = 1 << 4,
JLOSF_DEADNOJUMP = 1 << 5,
JLOSF_CHECKMASTER = 1 << 6,
JLOSF_TARGETLOS = 1 << 7,
JLOSF_FLIPFOV = 1 << 8,
JLOSF_ALLYNOJUMP = 1 << 9,
JLOSF_COMBATANTONLY = 1 << 10,
JLOSF_NOAUTOAIM = 1 << 11,
JLOSF_CHECKTRACER = 1 << 12,
};
// Flags for A_ChangeVelocity
2016-10-07 16:09:28 +00:00
enum EChangeVelocityFlags
{
CVF_RELATIVE = 1,
CVF_REPLACE = 2,
};
2014-10-02 22:00:17 +00:00
// Flags for A_WeaponReady
2016-10-07 16:09:28 +00:00
enum EWeaponReadyFlags
{
WRF_NOBOB = 1,
WRF_NOSWITCH = 2,
WRF_NOPRIMARY = 4,
WRF_NOSECONDARY = 8,
WRF_NOFIRE = WRF_NOPRIMARY | WRF_NOSECONDARY,
WRF_ALLOWRELOAD = 16,
WRF_ALLOWZOOM = 32,
WRF_DISABLESWITCH = 64,
WRF_ALLOWUSER1 = 128,
WRF_ALLOWUSER2 = 256,
WRF_ALLOWUSER3 = 512,
WRF_ALLOWUSER4 = 1024,
};
2014-10-02 22:00:17 +00:00
2016-07-29 23:48:54 +00:00
// Flags for A_SelectWeapon
2016-10-07 16:09:28 +00:00
enum ESelectWeaponFlags
{
SWF_SELECTPRIORITY = 1,
};
2016-07-29 23:48:54 +00:00
2014-10-02 22:00:17 +00:00
// Morph constants
2016-10-07 16:09:28 +00:00
enum EMorphFlags
{
2017-02-26 20:10:53 +00:00
MRF_OLDEFFECTS = 0x00000000,
MRF_ADDSTAMINA = 0x00000001,
MRF_FULLHEALTH = 0x00000002,
MRF_UNDOBYTOMEOFPOWER = 0x00000004,
MRF_UNDOBYCHAOSDEVICE = 0x00000008,
MRF_FAILNOTELEFRAG = 0x00000010,
MRF_FAILNOLAUGH = 0x00000020,
MRF_WHENINVULNERABLE = 0x00000040,
MRF_LOSEACTUALWEAPON = 0x00000080,
MRF_NEWTIDBEHAVIOUR = 0x00000100,
MRF_UNDOBYDEATH = 0x00000200,
MRF_UNDOBYDEATHFORCED = 0x00000400,
MRF_UNDOBYDEATHSAVES = 0x00000800,
MRF_UNDOBYTIMEOUT = 0x00001000,
MRF_UNDOALWAYS = 0x00002000,
MRF_TRANSFERTRANSLATION = 0x00004000,
2017-02-26 20:38:08 +00:00
MRF_STANDARDUNDOING = MRF_UNDOBYTOMEOFPOWER | MRF_UNDOBYCHAOSDEVICE | MRF_UNDOBYTIMEOUT,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_RailAttack and A_CustomRailgun
2016-10-07 16:09:28 +00:00
enum ERailFlags
{
RGF_SILENT = 1,
RGF_NOPIERCING = 2,
RGF_EXPLICITANGLE = 4,
RGF_FULLBRIGHT = 8,
RGF_CENTERZ = 16,
RGF_NORANDOMPUFFZ = 32,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Mushroom
2016-10-07 16:09:28 +00:00
enum EMushroomFlags
{
MSF_Standard = 0,
MSF_Classic = 1,
MSF_DontHurt = 2,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Explode
2016-10-07 16:09:28 +00:00
enum EExplodeFlags
{
XF_HURTSOURCE = 1,
XF_NOTMISSILE = 4,
2016-10-30 17:41:39 +00:00
XF_EXPLICITDAMAGETYPE = 8,
XF_NOSPLASH = 16,
2019-03-24 08:38:26 +00:00
XF_THRUSTZ = 32,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_RadiusThrust
2016-10-07 16:09:28 +00:00
enum ERadiusThrustFlags
{
RTF_AFFECTSOURCE = 1,
RTF_NOIMPACTDAMAGE = 2,
RTF_NOTMISSILE = 4,
RTF_THRUSTZ = 16,
};
2014-10-02 22:00:17 +00:00
2016-06-14 00:38:00 +00:00
// Flags for A_RadiusDamageSelf
2016-10-07 16:09:28 +00:00
enum ERadiusDamageSelfFlags
{
RDSF_BFGDAMAGE = 1,
};
2016-06-14 00:38:00 +00:00
2014-10-02 22:00:17 +00:00
// Flags for A_Blast
2016-10-07 16:09:28 +00:00
enum EBlastFlags
{
BF_USEAMMO = 1,
BF_DONTWARN = 2,
BF_AFFECTBOSSES = 4,
BF_NOIMPACTDAMAGE = 8,
2021-07-21 12:44:07 +00:00
BF_ONLYVISIBLETHINGS = 16,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_SeekerMissile
2016-10-07 16:09:28 +00:00
enum ESeekerMissileFlags
{
SMF_LOOK = 1,
SMF_PRECISE = 2,
SMF_CURSPEED = 4,
};
2014-10-02 22:00:17 +00:00
// Flags for A_CustomPunch
2016-10-07 16:09:28 +00:00
enum ECustomPunchFlags
{
CPF_USEAMMO = 1,
CPF_DAGGER = 2,
CPF_PULLIN = 4,
CPF_NORANDOMPUFFZ = 8,
CPF_NOTURN = 16,
CPF_STEALARMOR = 32,
};
2014-10-02 22:00:17 +00:00
2016-10-09 13:47:31 +00:00
enum EFireCustomMissileFlags
2016-10-07 16:09:28 +00:00
{
FPF_AIMATANGLE = 1,
FPF_TRANSFERTRANSLATION = 2,
FPF_NOAUTOAIM = 4,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Teleport
2016-10-07 16:09:28 +00:00
enum ETeleportFlags
2014-12-19 18:37:02 +00:00
{
TF_TELEFRAG = 0x00000001, // Allow telefrag in order to teleport.
TF_RANDOMDECIDE = 0x00000002, // Randomly fail based on health. (A_Srcr2Decide)
TF_FORCED = 0x00000004, // Forget what's in the way. TF_Telefrag takes precedence though.
TF_KEEPVELOCITY = 0x00000008, // Preserve velocity.
TF_KEEPANGLE = 0x00000010, // Keep angle.
TF_USESPOTZ = 0x00000020, // Set the z to the spot's z, instead of the floor.
TF_NOSRCFOG = 0x00000040, // Don't leave any fog behind when teleporting.
TF_NODESTFOG = 0x00000080, // Don't spawn any fog at the arrival position.
TF_USEACTORFOG = 0x00000100, // Use the actor's TeleFogSourceType and TeleFogDestType fogs.
TF_NOJUMP = 0x00000200, // Don't jump after teleporting.
2015-05-01 13:32:07 +00:00
TF_OVERRIDE = 0x00000400, // Ignore NOTELEPORT.
2015-12-17 16:34:38 +00:00
TF_SENSITIVEZ = 0x00000800, // Fail if the actor wouldn't fit in the position (for Z).
2014-12-19 18:37:02 +00:00
TF_KEEPORIENTATION = TF_KEEPVELOCITY|TF_KEEPANGLE,
TF_NOFOG = TF_NOSRCFOG|TF_NODESTFOG,
};
2014-10-02 22:00:17 +00:00
// Flags for A_WolfAttack
2016-10-07 16:09:28 +00:00
enum EWolfAttackFlags
{
WAF_NORANDOM = 1,
WAF_USEPUFF = 2
};
2014-10-02 22:00:17 +00:00
// Flags for A_RadiusGive
2016-10-07 16:09:28 +00:00
enum ERadiusGiveFlags
2014-10-02 22:00:17 +00:00
{
RGF_GIVESELF = 1,
2014-10-29 19:01:31 +00:00
RGF_PLAYERS = 1 << 1,
RGF_MONSTERS = 1 << 2,
RGF_OBJECTS = 1 << 3,
RGF_VOODOO = 1 << 4,
RGF_CORPSES = 1 << 5,
RGF_NOTARGET = 1 << 6,
RGF_NOTRACER = 1 << 7,
RGF_NOMASTER = 1 << 8,
RGF_CUBE = 1 << 9,
RGF_NOSIGHT = 1 << 10,
RGF_MISSILES = 1 << 11,
- Significant A_RadiusGive update.
- Added filter and species parameter.
- Added new flags: RGF_INCLUSIVE, RGF_ITEMS, RGF_KILLED, RGF_EXFILTER, RGF_EXSPECIES, and RGF_EITHER.
- RGF_ITEMS: Items can receive inventory.
- RGF_KILLED: Actors who are truly dead might not be corpses, and vice versa.
- RGF_EXFILTER: Blacklists the specified actor filter. All but the filtered actor can receive the item.
- RGF_EXSPECIES: Blacklists the specified species. All but the filtered species can receive the item.
- RGF_EITHER: The actor can receive the item if it satisfies either the filter or the species. Only useful when both are used.
- RGF_INCLUSIVE: An actor marked as more than one pointer to the calling actor can ignore the exclusion pointers, but only if at least one is missing. I.e. an actor who is a target and tracer of the calling actor can still receive the item, if the calling actor doesn't pass RGF_NOTARGET and NOTRACER at the same time. RGF_INCLUSIVE only works with the pointer filtering flags. By default, if not specified, the actor will not be loopholed the item if they are under any one of the three filters.
- Fixed discrepancies and dependencies upon several flags and actor conditions which caused the function to fail.
2015-07-22 21:46:14 +00:00
RGF_INCLUSIVE = 1 << 12,
RGF_ITEMS = 1 << 13,
RGF_KILLED = 1 << 14,
RGF_EXFILTER = 1 << 15,
RGF_EXSPECIES = 1 << 16,
RGF_EITHER = 1 << 17,
2014-10-02 22:00:17 +00:00
};
A_ChangeModeldef
-Added A_ChangeModelDef
A_ChangeModel(modeldef, modelpath, model, modelindex, skinpath, skin, skinid, flags)
This can change the modeldef, model and skins of an actor.
Currently, modelindex and skinindex accept indices from 0-15.
An actor MUST have a modeldef in order to use this function, either defined from modeldef, or given one through the modeldef parameter. You can pass "" to use the same modeldef. Likewise, passing "" for model or skin will just revert to the default model.
Available flags:
CMDL_WEAPONTOPLAYER - If used on a weapon, this instead change's the model on the player instead.
One issue I am aware of right now is that clearing a model by "" sort of works but is buggy. For now you can just manually set the model back using the names explicitly. However, I am stumped and I think getting more eyes on it would help.
2022-06-28 03:23:28 +00:00
// Change model flags
enum ChangeModelFlags
{
2022-07-01 18:49:13 +00:00
CMDL_WEAPONTOPLAYER = 1,
CMDL_HIDEMODEL = 1 << 1,
2022-07-05 20:29:47 +00:00
CMDL_USESURFACESKIN = 1 << 2,
A_ChangeModeldef
-Added A_ChangeModelDef
A_ChangeModel(modeldef, modelpath, model, modelindex, skinpath, skin, skinid, flags)
This can change the modeldef, model and skins of an actor.
Currently, modelindex and skinindex accept indices from 0-15.
An actor MUST have a modeldef in order to use this function, either defined from modeldef, or given one through the modeldef parameter. You can pass "" to use the same modeldef. Likewise, passing "" for model or skin will just revert to the default model.
Available flags:
CMDL_WEAPONTOPLAYER - If used on a weapon, this instead change's the model on the player instead.
One issue I am aware of right now is that clearing a model by "" sort of works but is buggy. For now you can just manually set the model back using the names explicitly. However, I am stumped and I think getting more eyes on it would help.
2022-06-28 03:23:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Activation flags
2016-10-07 16:09:28 +00:00
enum EActivationFlags
2014-10-02 22:00:17 +00:00
{
THINGSPEC_Default = 0,
THINGSPEC_ThingActs = 1,
THINGSPEC_ThingTargets = 2,
THINGSPEC_TriggerTargets = 4,
THINGSPEC_MonsterTrigger = 8,
THINGSPEC_MissileTrigger = 16,
THINGSPEC_ClearSpecial = 32,
THINGSPEC_NoDeathSpecial = 64,
THINGSPEC_TriggerActs = 128,
2016-12-01 22:44:23 +00:00
THINGSPEC_Activate = 1<<8, // The thing is activated when triggered
THINGSPEC_Deactivate = 1<<9, // The thing is deactivated when triggered
THINGSPEC_Switch = 1<<10, // The thing is alternatively activated and deactivated when triggered
2016-10-07 16:09:28 +00:00
// Shorter aliases for same
AF_Default = 0,
AF_ThingActs = 1,
AF_ThingTargets = 2,
AF_TriggerTargets = 4,
AF_MonsterTrigger = 8,
AF_MissileTrigger = 16,
AF_ClearSpecial = 32,
AF_NoDeathSpecial = 64,
AF_TriggerActs = 128,
2016-12-01 22:44:23 +00:00
AF_Activate = 1<<8, // The thing is activated when triggered
AF_Deactivate = 1<<9, // The thing is deactivated when triggered
AF_Switch = 1<<10, // The thing is alternatively activated and deactivated when triggered
2016-10-07 16:09:28 +00:00
2014-10-02 22:00:17 +00:00
};
2021-12-05 19:51:47 +00:00
// [MC] Flags for SetViewPos.
enum EViewPosFlags
{
VPSF_ABSOLUTEOFFSET = 1 << 1, // Don't include angles.
VPSF_ABSOLUTEPOS = 1 << 2, // Use absolute position.
};
2014-10-02 22:00:17 +00:00
// Flags for A_TakeInventory and A_TakeFromTarget
2016-10-07 16:09:28 +00:00
enum ETakeFlags
{
TIF_NOTAKEINFINITE = 1
};
2018-11-26 16:15:40 +00:00
// For SetPlayerProperty action special
2016-10-07 16:09:28 +00:00
enum EPlayerProperties
{
PROP_FROZEN = 0,
PROP_NOTARGET = 1,
PROP_INSTANTWEAPONSWITCH = 2,
PROP_FLY = 3,
PROP_TOTALLYFROZEN = 4,
PROP_INVULNERABILITY = 5, // (Deprecated)
PROP_STRENGTH = 6, // (Deprecated)
PROP_INVISIBILITY = 7, // (Deprecated)
PROP_RADIATIONSUIT = 8, // (Deprecated)
PROP_ALLMAP = 9, // (Deprecated)
PROP_INFRARED = 10, // (Deprecated)
PROP_WEAPONLEVEL2 = 11, // (Deprecated)
PROP_FLIGHT = 12, // (Deprecated)
PROP_SPEED = 15, // (Deprecated)
PROP_BUDDHA = 16,
2023-01-04 23:10:15 +00:00
PROP_BUDDHA2 = 17,
PROP_FRIGHTENING = 18,
PROP_NOCLIP = 19,
PROP_NOCLIP2 = 20,
PROP_GODMODE = 21,
PROP_GODMODE2 = 22,
2016-10-07 16:09:28 +00:00
}
2014-10-02 22:00:17 +00:00
// Line_SetBlocking
2016-10-07 16:09:28 +00:00
enum EBlockFlags
{
BLOCKF_CREATURES = 1,
BLOCKF_MONSTERS = 2,
BLOCKF_PLAYERS = 4,
BLOCKF_FLOATERS = 8,
BLOCKF_PROJECTILES = 16,
BLOCKF_EVERYTHING = 32,
BLOCKF_RAILING = 64,
BLOCKF_USE = 128,
2022-04-28 23:14:55 +00:00
BLOCKF_SIGHT = 256,
BLOCKF_HITSCAN = 512,
BLOCKF_SOUND = 1024,
2022-09-24 22:25:18 +00:00
BLOCKF_LANDMONSTERS = 2048,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// Pointer constants, bitfield-enabled
2016-10-07 16:09:28 +00:00
enum EPointerFlags
{
AAPTR_DEFAULT = 0,
AAPTR_NULL = 0x1,
AAPTR_TARGET = 0x2,
AAPTR_MASTER = 0x4,
AAPTR_TRACER = 0x8,
AAPTR_PLAYER_GETTARGET = 0x10,
AAPTR_PLAYER_GETCONVERSATION = 0x20,
AAPTR_PLAYER1 = 0x40,
AAPTR_PLAYER2 = 0x80,
AAPTR_PLAYER3 = 0x100,
AAPTR_PLAYER4 = 0x200,
AAPTR_PLAYER5 = 0x400,
AAPTR_PLAYER6 = 0x800,
AAPTR_PLAYER7 = 0x1000,
AAPTR_PLAYER8 = 0x2000,
AAPTR_FRIENDPLAYER = 0x4000,
AAPTR_LINETARGET = 0x8000,
};
2014-10-02 22:00:17 +00:00
// Pointer operation flags
2016-10-07 16:09:28 +00:00
enum EPointerOperations
{
PTROP_UNSAFETARGET = 1,
PTROP_UNSAFEMASTER = 2,
PTROP_NOSAFEGUARDS = PTROP_UNSAFETARGET|PTROP_UNSAFEMASTER,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Warp
2016-10-07 16:09:28 +00:00
enum EWarpFlags
{
WARPF_ABSOLUTEOFFSET = 0x1,
WARPF_ABSOLUTEANGLE = 0x2,
WARPF_USECALLERANGLE = 0x4,
WARPF_NOCHECKPOSITION = 0x8,
WARPF_INTERPOLATE = 0x10,
WARPF_WARPINTERPOLATION = 0x20,
WARPF_COPYINTERPOLATION = 0x40,
WARPF_STOP = 0x80,
WARPF_TOFLOOR = 0x100,
WARPF_TESTONLY = 0x200,
WAPRF_ABSOLUTEPOSITION = 0x400,
WARPF_ABSOLUTEPOSITION = 0x400,
WARPF_BOB = 0x800,
WARPF_MOVEPTR = 0x1000,
WARPF_USETID = 0x2000,
WARPF_COPYVELOCITY = 0x4000,
WARPF_COPYPITCH = 0x8000,
};
2014-10-02 22:00:17 +00:00
2018-01-02 11:04:28 +00:00
// Flags for Actor.CheckMove()
enum ECheckMoveFlags
{
PCM_DROPOFF = 1,
PCM_NOACTORS = 1 << 1,
PCM_NOLINES = 1 << 2,
};
2015-01-05 09:51:32 +00:00
// flags for A_SetPitch/SetAngle/SetRoll
2016-10-07 16:09:28 +00:00
enum EAngleFlags
{
SPF_FORCECLAMP = 1,
SPF_INTERPOLATE = 2,
2022-12-02 11:24:21 +00:00
SPF_SCALEDNOLERP = 4,
2016-10-07 16:09:28 +00:00
};
2014-10-02 22:00:17 +00:00
// flags for A_CheckLOF
2016-10-07 16:09:28 +00:00
enum ELOFFlags
2014-10-02 22:00:17 +00:00
{
CLOFF_NOAIM_VERT = 0x1,
CLOFF_NOAIM_HORZ = 0x2,
CLOFF_JUMPENEMY = 0x4,
CLOFF_JUMPFRIEND = 0x8,
CLOFF_JUMPOBJECT = 0x10,
CLOFF_JUMPNONHOSTILE = 0x20,
CLOFF_SKIPENEMY = 0x40,
CLOFF_SKIPFRIEND = 0x80,
CLOFF_SKIPOBJECT = 0x100,
CLOFF_SKIPNONHOSTILE = 0x200,
CLOFF_MUSTBESHOOTABLE = 0x400,
CLOFF_SKIPTARGET = 0x800,
CLOFF_ALLOWNULL = 0x1000,
CLOFF_CHECKPARTIAL = 0x2000,
CLOFF_MUSTBEGHOST = 0x4000,
CLOFF_IGNOREGHOST = 0x8000,
CLOFF_MUSTBESOLID = 0x10000,
CLOFF_BEYONDTARGET = 0x20000,
CLOFF_FROMBASE = 0x40000,
CLOFF_MUL_HEIGHT = 0x80000,
CLOFF_MUL_WIDTH = 0x100000,
CLOFF_JUMP_ON_MISS = 0x200000,
CLOFF_AIM_VERT_NOOFFSET = 0x400000,
2014-12-15 20:50:35 +00:00
CLOFF_SETTARGET = 0x800000,
CLOFF_SETMASTER = 0x1000000,
CLOFF_SETTRACER = 0x2000000,
2014-10-02 22:00:17 +00:00
CLOFF_SKIPOBSTACLES = CLOFF_SKIPENEMY|CLOFF_SKIPFRIEND|CLOFF_SKIPOBJECT|CLOFF_SKIPNONHOSTILE,
CLOFF_NOAIM = CLOFF_NOAIM_VERT|CLOFF_NOAIM_HORZ
};
// Flags for A_Kill (Master/Target/Tracer/Children/Siblings) series
2016-10-07 16:09:28 +00:00
enum EKillFlags
2014-12-21 16:38:51 +00:00
{
KILS_FOILINVUL = 0x00000001,
KILS_KILLMISSILES = 0x00000002,
KILS_NOMONSTERS = 0x00000004,
KILS_FOILBUDDHA = 0x00000008,
KILS_EXFILTER = 0x00000010,
KILS_EXSPECIES = 0x00000020,
KILS_EITHER = 0x00000040,
};
2014-10-02 22:00:17 +00:00
// Flags for A_Damage (Master/Target/Tracer/Children/Siblings/Self) series
2016-10-07 16:09:28 +00:00
enum EDamageFlags
2014-12-21 16:38:51 +00:00
{
DMSS_FOILINVUL = 0x00000001,
DMSS_AFFECTARMOR = 0x00000002,
DMSS_KILL = 0x00000004,
DMSS_NOFACTOR = 0x00000008,
DMSS_FOILBUDDHA = 0x00000010,
DMSS_NOPROTECT = 0x00000020,
DMSS_EXFILTER = 0x00000040,
DMSS_EXSPECIES = 0x00000080,
DMSS_EITHER = 0x00000100,
2016-07-19 01:59:07 +00:00
DMSS_INFLICTORDMGTYPE = 0x00000200,
2014-12-21 16:38:51 +00:00
};
2014-10-02 22:00:17 +00:00
// Flags for A_AlertMonsters
2016-10-07 16:09:28 +00:00
enum EAlertFlags
{
AMF_TARGETEMITTER = 1,
AMF_TARGETNONPLAYER = 2,
AMF_EMITFROMTARGET = 4,
}
2014-10-02 22:00:17 +00:00
// Flags for A_Remove*
2016-10-07 16:09:28 +00:00
enum ERemoveFlags
2014-10-02 22:00:17 +00:00
{
2014-12-21 16:38:51 +00:00
RMVF_MISSILES = 0x00000001,
RMVF_NOMONSTERS = 0x00000002,
RMVF_MISC = 0x00000004,
RMVF_EVERYTHING = 0x00000008,
RMVF_EXFILTER = 0x00000010,
RMVF_EXSPECIES = 0x00000020,
RMVF_EITHER = 0x00000040,
2014-10-02 22:00:17 +00:00
};
2014-11-25 19:24:35 +00:00
// Flags for A_Fade*
2016-10-07 16:09:28 +00:00
enum EFadeFlags
2014-11-25 19:24:35 +00:00
{
FTF_REMOVE = 1 << 0,
FTF_CLAMP = 1 << 1,
};
2015-01-30 22:48:24 +00:00
// Flags for A_Face*
2016-10-07 16:09:28 +00:00
enum EFaceFlags
2015-01-30 22:48:24 +00:00
{
FAF_BOTTOM = 1,
FAF_MIDDLE = 2,
FAF_TOP = 4,
FAF_NODISTFACTOR = 8,
};
2015-02-14 21:58:39 +00:00
// Flags for A_QuakeEx
2016-10-07 16:09:28 +00:00
enum EQuakeFlags
2015-02-14 21:58:39 +00:00
{
2015-02-20 03:42:32 +00:00
QF_RELATIVE = 1,
QF_SCALEDOWN = 1 << 1,
QF_SCALEUP = 1 << 2,
2015-02-20 16:46:37 +00:00
QF_MAX = 1 << 3,
2015-02-20 17:06:41 +00:00
QF_FULLINTENSITY = 1 << 4,
Added QF_SINE
- Squashed commit of the following:
commit bc45fe3263d34ef5f746f524687999c19bf7b779
Author: Randy Heit <rheit@users.noreply.github.com>
Date: Sun Mar 1 18:51:05 2015 -0600
wave scale -> wave speed
commit ff96388b128c724c1198757bfa52f1935a263356
Author: Randy Heit <rheit@users.noreply.github.com>
Date: Sun Mar 1 18:45:32 2015 -0600
More sine quake fixes
commit 2a89749a6fe6d271b9fbdc218779f680afcf4cb6
Merge: 719dfbe 5456074
Author: MajorCooke <paul.growney22@gmail.com>
Date: Sat Feb 28 20:37:22 2015 -0600
Added QF_WAVE to A_QuakeEx.
- Changes the random quakes into a sine wave (see Shadow Warrior/Rise of the Triad reboots, Hard Reset, etc.)
- Added 3 properties to control waves per second along each individual axis. Only works with QF_WAVE.
- Intensity X/Y/Z property becomes the amplitude of the wave.
- Stacks with regular quakes, allowing shaking along the camera which must be called using A_QuakeEx WITHOUT the flag, or the other quaking functions.
- Uses the youngest quake's time for positioning.
commit 54560741581e8d15cc7060e8e068cf85e9a4b432
Author: MajorCooke <paul.growney22@gmail.com>
Date: Sat Feb 28 20:21:19 2015 -0600
Recommitted recommended changes by Randi, with some modifications. Now, we should be finished!
commit 6f4473013411686d88fc185bdc1cc58b1035b0f1
Author: MajorCooke <paul.growney22@gmail.com>
Date: Sat Feb 28 12:52:57 2015 -0600
Finish this revert.
commit 467e53f9400f588a2ada9b32e7634cb1f4ad5066
Author: MajorCooke <paul.growney22@gmail.com>
Date: Sat Feb 28 12:46:02 2015 -0600
Reverted back to what was working.
commit da9de56a67efda08036e481fd5fccd5392ce6810
Author: MajorCooke <paul.growney22@gmail.com>
Date: Thu Feb 26 18:53:20 2015 -0600
Forgot this bit, for testing.
commit c5093d9bb97caf8478cefc32abc56a036feeea58
Author: MajorCooke <paul.growney22@gmail.com>
Date: Thu Feb 26 18:52:46 2015 -0600
Some more progress, but...
- This did not solve anything. In fact, it did the opposite -- completely broke wave quakes. Now they only happen whenever a random quake is in progress.
- Left in the commented code on purpose so Randi can test it.
commit 7e526405d2127cbb279f66008c8f8e55a5d497f3
Author: MajorCooke <paul.growney22@gmail.com>
Date: Wed Feb 25 17:50:42 2015 -0600
- Use newest waveform timer, not oldest.
commit 1356443609dbc6c7f46e081d0846816dc0836124
Author: MajorCooke <paul.growney22@gmail.com>
Date: Wed Feb 25 17:32:09 2015 -0600
- Got regular quakes to multiply onto sine quakes, but the vice versa needs fixing too.
commit d95796c94c70cd0229d4a6d30f69e3a7568b9588
Author: MajorCooke <paul.growney22@gmail.com>
Date: Wed Feb 25 16:46:21 2015 -0600
- Last hurdle. Now just need to figure out how to properly scale up and down.
commit 4bc3458e689155ce72c09776604d9eb4fa73d8be
Author: MajorCooke <paul.growney22@gmail.com>
Date: Tue Feb 24 23:18:03 2015 -0600
- Fixed the quakes being unstackable.
commit b51012d6d4ea065bf7f6fc9c1a0472966491f7af
Author: MajorCooke <paul.growney22@gmail.com>
Date: Mon Feb 23 23:48:34 2015 -0600
QF_WAVE renamed from SINE.
- Lots of ground covered, but still more to go.
- Still need to figure out how to make the camera properly shudder.
commit 427e4893193470bbf45415ffec70a0b69b8cccfd
Author: MajorCooke <paul.growney22@gmail.com>
Date: Sun Feb 22 16:52:30 2015 -0600
- Begin the groundworks for QF_SINE.
- Need to figure out how to rework and manipulate the sine wave to move faster, and to allow going below 0 without breaking it too much.
2015-03-02 00:53:34 +00:00
QF_WAVE = 1 << 5,
2022-05-08 05:03:05 +00:00
QF_3D = 1 << 6,
2022-09-25 03:41:23 +00:00
QF_GROUNDONLY = 1 << 7,
2022-09-25 06:19:42 +00:00
QF_AFFECTACTORS = 1 << 8,
QF_SHAKEONLY = 1 << 9,
2015-02-14 21:58:39 +00:00
};
2014-10-02 22:00:17 +00:00
2015-11-28 16:53:34 +00:00
// A_CheckProximity flags
2016-10-07 16:09:28 +00:00
enum EProximityFlags
2015-11-28 16:53:34 +00:00
{
CPXF_ANCESTOR = 1,
CPXF_LESSOREQUAL = 1 << 1,
CPXF_NOZ = 1 << 2,
CPXF_COUNTDEAD = 1 << 3,
CPXF_DEADONLY = 1 << 4,
CPXF_EXACT = 1 << 5,
2016-01-07 23:09:02 +00:00
CPXF_SETTARGET = 1 << 6,
CPXF_SETMASTER = 1 << 7,
CPXF_SETTRACER = 1 << 8,
CPXF_FARTHEST = 1 << 9,
CPXF_CLOSEST = 1 << 10,
CPXF_SETONPTR = 1 << 11,
2016-01-26 16:00:20 +00:00
CPXF_CHECKSIGHT = 1 << 12,
2015-11-28 16:53:34 +00:00
};
2015-10-04 21:00:40 +00:00
// Flags for A_CheckBlock
// These flags only affect the calling actor('s pointer), not the ones being searched.
2016-10-07 16:09:28 +00:00
enum ECheckBlockFlags
2015-10-04 21:00:40 +00:00
{
CBF_NOLINES = 1 << 0, //Don't check actors.
CBF_SETTARGET = 1 << 1, //Sets the caller/pointer's target to the actor blocking it. Actors only.
CBF_SETMASTER = 1 << 2, //^ but with master.
CBF_SETTRACER = 1 << 3, //^ but with tracer.
CBF_SETONPTR = 1 << 4, //Sets the pointer change on the actor doing the checking instead of self.
2016-01-31 15:45:41 +00:00
CBF_DROPOFF = 1 << 5, //Check for dropoffs.
2016-03-03 02:35:54 +00:00
CBF_NOACTORS = 1 << 6, //Don't check actors.
2016-03-10 18:54:23 +00:00
CBF_ABSOLUTEPOS = 1 << 7, //Absolute position for offsets.
CBF_ABSOLUTEANGLE = 1 << 8, //Absolute angle for offsets.
2015-10-04 21:00:40 +00:00
};
2016-10-07 16:09:28 +00:00
enum EParticleFlags
2016-01-21 22:36:58 +00:00
{
2022-11-02 18:08:15 +00:00
SPF_FULLBRIGHT = 1,
SPF_RELPOS = 1 << 1,
SPF_RELVEL = 1 << 2,
SPF_RELACCEL = 1 << 3,
SPF_RELANG = 1 << 4,
SPF_NOTIMEFREEZE = 1 << 5,
SPF_ROLL = 1 << 6,
SPF_REPLACE = 1 << 7,
SPF_NO_XY_BILLBOARD = 1 << 8,
2016-01-21 22:36:58 +00:00
SPF_RELATIVE = SPF_RELPOS|SPF_RELVEL|SPF_RELACCEL|SPF_RELANG
};
2016-01-27 16:12:13 +00:00
//Flags for A_FaceMovementDirection
2016-10-07 16:09:28 +00:00
enum EMovementFlags
2016-01-27 16:12:13 +00:00
{
FMDF_NOPITCH = 1 << 0,
FMDF_INTERPOLATE = 1 << 1,
FMDF_NOANGLE = 1 << 2,
2015-11-25 07:44:19 +00:00
};
2016-05-05 23:33:36 +00:00
// Flags for GetZAt
2016-10-07 16:09:28 +00:00
enum EZFlags
2016-05-05 23:33:36 +00:00
{
2016-05-12 18:23:10 +00:00
GZF_ABSOLUTEPOS = 1, // Use the absolute position instead of an offsetted one.
GZF_ABSOLUTEANG = 1 << 1, // Don't add the actor's angle to the parameter.
GZF_CEILING = 1 << 2, // Check the ceiling instead of the floor.
GZF_3DRESTRICT = 1 << 3, // Ignore midtextures and 3D floors above the pointer's z.
GZF_NOPORTALS = 1 << 4, // Don't pass through any portals.
GZF_NO3DFLOOR = 1 << 5, // Pass all 3D floors.
2016-05-05 23:33:36 +00:00
};
2016-05-17 20:44:03 +00:00
// Flags for A_WeaponOffset
2016-10-07 16:09:28 +00:00
enum EWeaponOffsetFlags
2016-05-17 20:44:03 +00:00
{
WOF_KEEPX = 1,
WOF_KEEPY = 1 << 1,
WOF_ADD = 1 << 2,
2016-12-08 16:51:13 +00:00
WOF_INTERPOLATE = 1 << 3,
2020-09-30 20:38:58 +00:00
WOF_RELATIVE = 1 << 4,
2020-09-30 21:28:43 +00:00
WOF_ZEROY = 1 << 5,
2016-05-26 19:51:52 +00:00
};
// Flags for psprite layers
2016-10-07 16:09:28 +00:00
enum EPSpriteFlags
2016-05-26 19:51:52 +00:00
{
Added A_OverlayPivotAlign and A_OverlayVertexOffset.
A_OverlayPivotAlign(int layer, int halign, int valign)
- Aligns the pivot point origin to a corner of the PSprite before applying offsets.
- - halign: Horizontal. Applicable constants are PSPA_<LEFT/CENTER/RIGHT>.
- - valign: Vertical. Applicable constants are PSPA_<TOP/CENTER/BOTTOM>.
- - Default is top left.
A_OverlayVertexOffset(int layer, int index, double x, double y, int flags)
- Allows offsetting the corners of the psprite, granting modders the ability to skew weapon sprites as they see fit.
- - index: The index of the vertice. Valid ranges are between [0,3].
- - x/y: Offsets of vertices.
- - flags: Takes WOF_ flags.
Other changes:
- Removed pivot point interpolation since it's pointless.
- Removed PSPF_PIVOTSCREEN due to complications with it having relativity. This will be revisited either later or in another submission.
- Added ResetPSprite() to be called with BringUpWeapon(), A_Lower(), and morph weapon raising to reset all the new properties to 0.
Nearly ready now. Just some final testing needed.
2020-10-02 18:53:11 +00:00
PSPF_ADDWEAPON = 1 << 0,
PSPF_ADDBOB = 1 << 1,
PSPF_POWDOUBLE = 1 << 2,
PSPF_CVARFAST = 1 << 3,
PSPF_ALPHA = 1 << 4,
PSPF_RENDERSTYLE = 1 << 5,
PSPF_FLIP = 1 << 6,
PSPF_FORCEALPHA = 1 << 7,
PSPF_FORCESTYLE = 1 << 8,
PSPF_MIRROR = 1 << 9,
PSPF_PLAYERTRANSLATED = 1 << 10,
PSPF_PIVOTPERCENT = 1 << 11,
2020-10-03 21:16:56 +00:00
PSPF_INTERPOLATE = 1 << 12,
Added A_OverlayPivotAlign and A_OverlayVertexOffset.
A_OverlayPivotAlign(int layer, int halign, int valign)
- Aligns the pivot point origin to a corner of the PSprite before applying offsets.
- - halign: Horizontal. Applicable constants are PSPA_<LEFT/CENTER/RIGHT>.
- - valign: Vertical. Applicable constants are PSPA_<TOP/CENTER/BOTTOM>.
- - Default is top left.
A_OverlayVertexOffset(int layer, int index, double x, double y, int flags)
- Allows offsetting the corners of the psprite, granting modders the ability to skew weapon sprites as they see fit.
- - index: The index of the vertice. Valid ranges are between [0,3].
- - x/y: Offsets of vertices.
- - flags: Takes WOF_ flags.
Other changes:
- Removed pivot point interpolation since it's pointless.
- Removed PSPF_PIVOTSCREEN due to complications with it having relativity. This will be revisited either later or in another submission.
- Added ResetPSprite() to be called with BringUpWeapon(), A_Lower(), and morph weapon raising to reset all the new properties to 0.
Nearly ready now. Just some final testing needed.
2020-10-02 18:53:11 +00:00
};
// Alignment constants for A_OverlayPivotAlign
enum EPSpriteAlign
{
PSPA_TOP = 0,
PSPA_CENTER,
PSPA_BOTTOM,
PSPA_LEFT = PSPA_TOP,
PSPA_RIGHT = 2
2016-05-26 19:51:52 +00:00
};
2016-05-27 16:08:56 +00:00
// Default psprite layers
2016-10-07 16:09:28 +00:00
enum EPSPLayers
2016-05-27 16:08:56 +00:00
{
2016-11-19 12:56:29 +00:00
PSP_STRIFEHANDS = -1,
2016-05-27 16:08:56 +00:00
PSP_WEAPON = 1,
PSP_FLASH = 1000,
2021-02-19 07:14:07 +00:00
PSP_TARGETCENTER = int.max - 2,
PSP_TARGETLEFT,
PSP_TARGETRIGHT
2016-05-27 16:08:56 +00:00
};
2016-06-20 13:49:57 +00:00
2016-10-07 16:09:28 +00:00
enum EInputFlags
2016-06-20 13:49:57 +00:00
{
// These are the original inputs sent by the player.
INPUT_OLDBUTTONS,
INPUT_BUTTONS,
INPUT_PITCH,
INPUT_YAW,
INPUT_ROLL,
INPUT_FORWARDMOVE,
INPUT_SIDEMOVE,
INPUT_UPMOVE,
// These are the inputs, as modified by P_PlayerThink().
// Most of the time, these will match the original inputs, but
// they can be different if a player is frozen or using a
// chainsaw.
MODINPUT_OLDBUTTONS,
MODINPUT_BUTTONS,
MODINPUT_PITCH,
MODINPUT_YAW,
MODINPUT_ROLL,
MODINPUT_FORWARDMOVE,
MODINPUT_SIDEMOVE,
MODINPUT_UPMOVE
};
2016-10-07 16:09:28 +00:00
enum EButtons
2016-06-20 13:49:57 +00:00
{
BT_ATTACK = 1<<0, // Press "Fire".
BT_USE = 1<<1, // Use button, to open doors, activate switches.
BT_JUMP = 1<<2,
BT_CROUCH = 1<<3,
BT_TURN180 = 1<<4,
BT_ALTATTACK = 1<<5, // Press your other "Fire".
BT_RELOAD = 1<<6, // [XA] Reload key. Causes state jump in A_WeaponReady.
BT_ZOOM = 1<<7, // [XA] Zoom key. Ditto.
// The rest are all ignored by the play simulation and are for scripts.
BT_SPEED = 1<<8,
BT_STRAFE = 1<<9,
BT_MOVERIGHT = 1<<10,
BT_MOVELEFT = 1<<11,
BT_BACK = 1<<12,
BT_FORWARD = 1<<13,
BT_RIGHT = 1<<14,
BT_LEFT = 1<<15,
BT_LOOKUP = 1<<16,
BT_LOOKDOWN = 1<<17,
BT_MOVEUP = 1<<18,
BT_MOVEDOWN = 1<<19,
BT_SHOWSCORES = 1<<20,
BT_USER1 = 1<<21,
BT_USER2 = 1<<22,
BT_USER3 = 1<<23,
BT_USER4 = 1<<24,
2020-09-26 20:26:26 +00:00
BT_RUN = 1<<25,
2016-06-20 13:49:57 +00:00
};
2016-10-07 16:09:28 +00:00
2016-06-24 18:19:49 +00:00
// Flags for GetAngle
2016-10-07 16:09:28 +00:00
enum EGetAngleFlags
2016-06-24 18:19:49 +00:00
{
GAF_RELATIVE = 1,
GAF_SWITCH = 1 << 1,
2016-07-24 16:40:05 +00:00
};
//Flags for A_CopySpriteFrame
2016-10-07 16:09:28 +00:00
enum ECopySpriteFrameFlags
2016-07-24 16:40:05 +00:00
{
CPSF_NOSPRITE = 1,
CPSF_NOFRAME = 1 << 1,
2016-09-18 20:07:08 +00:00
};
//Flags for A_SetMaskRotation
2016-10-07 16:09:28 +00:00
enum EMaskRotationFlags
2016-09-18 20:07:08 +00:00
{
VRF_NOANGLESTART = 1,
VRF_NOANGLEEND = 1 << 1,
VRF_NOPITCHSTART = 1 << 2,
VRF_NOPITCHEND = 1 << 3,
VRF_NOANGLE = VRF_NOANGLESTART|VRF_NOANGLEEND,
VRF_NOPITCH = VRF_NOPITCHSTART|VRF_NOPITCHEND,
2016-10-01 22:43:05 +00:00
};
2016-10-11 11:11:40 +00:00
// Type definition for the implicit 'callingstate' parameter that gets passed to action functions.
enum EStateType
{
STATE_Actor,
STATE_Psprite,
STATE_StateChain,
}
struct FStateParamInfo
{
state mCallingState;
2016-11-19 00:23:56 +00:00
/*EStateType*/int mStateType;
2016-10-11 11:11:40 +00:00
int mPSPIndex;
}
2016-10-25 08:15:24 +00:00
2016-10-26 09:30:30 +00:00
// returned by AimLineAttack.
struct FTranslatedLineTarget
{
Actor linetarget;
double angleFromSource;
2016-12-06 10:04:54 +00:00
double attackAngleFromSource;
2016-10-26 09:30:30 +00:00
bool unlinked; // found by a trace that went through an unlinked portal.
2016-11-20 11:27:26 +00:00
native void TraceBleed(int damage, Actor missile);
2016-10-26 09:30:30 +00:00
}
enum EAimFlags
{
ALF_FORCENOSMART = 1,
ALF_CHECK3D = 2,
ALF_CHECKNONSHOOTABLE = 4,
ALF_CHECKCONVERSATION = 8,
ALF_NOFRIENDS = 16,
ALF_PORTALRESTRICT = 32, // only work through portals with a global offset (to be used for stuff that cannot remember the calculated FTranslatedLineTarget info)
2018-11-25 07:16:18 +00:00
ALF_NOWEAPONCHECK = 64, // ignore NOAUTOAIM flag on a player's weapon.
2016-10-26 09:30:30 +00:00
}
2016-10-25 08:15:24 +00:00
2016-10-26 09:30:30 +00:00
enum ELineAttackFlags
{
2017-11-03 18:57:44 +00:00
LAF_ISMELEEATTACK = 1,
LAF_NORANDOMPUFFZ = 1 << 1,
LAF_NOIMPACTDECAL = 1 << 2,
LAF_NOINTERACT = 1 << 3,
LAF_TARGETISSOURCE = 1 << 4,
LAF_OVERRIDEZ = 1 << 5,
LAF_ABSOFFSET = 1 << 6,
LAF_ABSPOSITION = 1 << 7,
2016-10-26 09:30:30 +00:00
}
2018-01-18 23:29:49 +00:00
enum ELineTraceFlags
{
TRF_ABSPOSITION = 1,
TRF_ABSOFFSET = 2,
TRF_THRUSPECIES = 4,
TRF_THRUACTORS = 8,
TRF_THRUBLOCK = 16,
TRF_THRUHITSCAN = 32,
TRF_NOSKY = 64,
TRF_ALLACTORS = 128,
2018-06-05 14:54:57 +00:00
TRF_SOLIDACTORS = 256,
TRF_BLOCKUSE = 512,
TRF_BLOCKSELF = 1024,
2018-01-18 23:29:49 +00:00
}
2016-12-10 15:35:48 +00:00
const DEFMELEERANGE = 64;
2016-10-26 09:30:30 +00:00
const SAWRANGE = (64.+(1./65536.)); // use meleerange + 1 so the puff doesn't skip the flash (i.e. plays all states)
const MISSILERANGE = (32*64);
const PLAYERMISSILERANGE = 8192; // [RH] New MISSILERANGE for players
enum ESightFlags
{
SF_IGNOREVISIBILITY=1,
SF_SEEPASTSHOOTABLELINES=2,
SF_SEEPASTBLOCKEVERYTHING=4,
SF_IGNOREWATERBOUNDARY=8
}
2016-10-27 15:47:46 +00:00
enum EDmgFlags
{
DMG_NO_ARMOR = 1,
DMG_INFLICTOR_IS_PUFF = 2,
DMG_THRUSTLESS = 4,
DMG_FORCED = 8,
DMG_NO_FACTOR = 16,
DMG_PLAYERATTACK = 32,
DMG_FOILINVUL = 64,
DMG_FOILBUDDHA = 128,
DMG_NO_PROTECT = 256,
DMG_USEANGLE = 512,
2017-11-07 16:50:21 +00:00
DMG_NO_PAIN = 1024,
2018-09-13 14:42:34 +00:00
DMG_EXPLOSION = 2048,
2018-11-10 15:00:49 +00:00
DMG_NO_ENHANCE = 4096,
2016-10-27 15:47:46 +00:00
}
2016-10-30 13:00:11 +00:00
enum EReplace
{
NO_REPLACE = 0,
ALLOW_REPLACE = 1
}
2016-11-11 22:32:13 +00:00
// This translucency value produces the closest match to Heretic's TINTTAB.
// ~40% of the value of the overlaid image shows through.
const HR_SHADOW = (0x6800 / 65536.);
// Hexen's TINTTAB is the same as Heretic's, just reversed.
const HX_SHADOW = (0x9800 / 65536.);
const HX_ALTSHADOW = (0x6800 / 65536.);
2016-11-16 00:36:21 +00:00
enum EMapThingFlags
{
MTF_AMBUSH = 0x0008, // Thing is deaf
MTF_DORMANT = 0x0010, // Thing is dormant (use Thing_Activate)
MTF_SINGLE = 0x0100, // Thing appears in single-player games
MTF_COOPERATIVE = 0x0200, // Thing appears in cooperative games
MTF_DEATHMATCH = 0x0400, // Thing appears in deathmatch games
MTF_SHADOW = 0x0800,
MTF_ALTSHADOW = 0x1000,
MTF_FRIENDLY = 0x2000,
MTF_STANDSTILL = 0x4000,
MTF_STRIFESOMETHING = 0x8000,
MTF_SECRET = 0x080000, // Secret pickup
MTF_NOINFIGHTING = 0x100000,
2020-04-25 02:16:06 +00:00
MTF_NOCOUNT = 0x200000, // Removes COUNTKILL/COUNTITEM
2016-11-16 00:36:21 +00:00
};
2016-11-18 21:12:53 +00:00
enum ESkillProperty
{
SKILLP_FastMonsters,
SKILLP_Respawn,
SKILLP_RespawnLimit,
SKILLP_DisableCheats,
SKILLP_AutoUseHealth,
SKILLP_SpawnFilter,
SKILLP_EasyBossBrain,
SKILLP_ACSReturn,
SKILLP_NoPain,
SKILLP_EasyKey,
SKILLP_SlowMonsters,
SKILLP_Infight,
2017-12-28 05:53:30 +00:00
SKILLP_PlayerRespawn,
2020-11-04 06:29:40 +00:00
SKILLP_SpawnMulti,
2021-01-12 22:37:45 +00:00
SKILLP_InstantReaction,
2016-11-18 21:12:53 +00:00
};
enum EFSkillProperty // floating point properties
{
SKILLP_AmmoFactor,
SKILLP_DropAmmoFactor,
SKILLP_ArmorFactor,
SKILLP_HealthFactor,
SKILLP_DamageFactor,
SKILLP_Aggressiveness,
SKILLP_MonsterHealth,
SKILLP_FriendlyHealth,
2018-11-25 00:12:45 +00:00
SKILLP_KickbackFactor,
2016-11-18 21:12:53 +00:00
};
2016-11-22 11:21:55 +00:00
enum EWeaponPos
{
WEAPONBOTTOM = 128,
WEAPONTOP = 32
2016-11-25 15:05:03 +00:00
}
enum ETranslationTable
{
TRANSLATION_Invalid,
TRANSLATION_Players,
TRANSLATION_PlayersExtra,
TRANSLATION_Standard,
TRANSLATION_LevelScripted,
TRANSLATION_Decals,
TRANSLATION_PlayerCorpses,
TRANSLATION_Decorate,
TRANSLATION_Blood,
TRANSLATION_RainPillar,
TRANSLATION_Custom,
};
enum EFindFloorCeiling
{
FFCF_ONLYSPAWNPOS = 1,
FFCF_SAMESECTOR = 2,
FFCF_ONLY3DFLOORS = 4, // includes 3D midtexes
FFCF_3DRESTRICT = 8, // ignore 3D midtexes and floors whose floorz are above thing's z
FFCF_NOPORTALS = 16, // ignore portals (considers them impassable.)
FFCF_NOFLOOR = 32,
FFCF_NOCEILING = 64,
FFCF_RESTRICTEDPORTAL = 128, // current values in the iterator's return are through a restricted portal type (i.e. some features are blocked.)
FFCF_NODROPOFF = 256, // Caller does not need a dropoff (saves some time when checking portals)
};
2016-11-25 18:52:35 +00:00
2017-02-26 16:50:48 +00:00
enum ERaise
{
RF_TRANSFERFRIENDLINESS = 1,
RF_NOCHECKPOSITION = 2
}
2017-03-02 12:14:16 +00:00
enum eFogParm
{
FOGP_DENSITY = 0,
FOGP_OUTSIDEDENSITY = 1,
FOGP_SKYFOG = 2,
}
2016-11-25 18:52:35 +00:00
enum ETeleport
{
TELF_DESTFOG = 1,
TELF_SOURCEFOG = 2,
TELF_KEEPORIENTATION = 4,
TELF_KEEPVELOCITY = 8,
TELF_KEEPHEIGHT = 16,
TELF_ROTATEBOOM = 32,
TELF_ROTATEBOOMINVERSE = 64,
};
2016-11-26 00:14:47 +00:00
enum EGameType
{
GAME_Any = 0,
GAME_Doom = 1,
GAME_Heretic = 2,
GAME_Hexen = 4,
GAME_Strife = 8,
GAME_Chex = 16, //Chex is basically Doom, but we need to have a different set of actors.
GAME_Raven = GAME_Heretic|GAME_Hexen,
GAME_DoomChex = GAME_Doom|GAME_Chex,
GAME_DoomStrifeChex = GAME_Doom|GAME_Strife|GAME_Chex
}
2016-11-26 12:18:48 +00:00
enum PaletteFlashFlags
{
PF_HEXENWEAPONS = 1,
PF_POISON = 2,
PF_ICE = 4,
PF_HAZARD = 8,
};
2016-11-29 11:17:05 +00:00
enum EGameAction
{
ga_nothing,
ga_loadlevel,
ga_newgame,
ga_newgame2,
ga_recordgame,
ga_loadgame,
ga_loadgamehidecon,
ga_loadgameplaydemo,
ga_autoloadgame,
ga_savegame,
ga_autosave,
ga_playdemo,
ga_completed,
ga_slideshow,
ga_worlddone,
ga_screenshot,
ga_togglemap,
ga_fullconsole,
};
2016-11-29 12:28:43 +00:00
enum EPuffFlags
{
PF_HITTHING = 1,
PF_MELEERANGE = 2,
PF_TEMPORARY = 4,
PF_HITTHINGBLEED = 8,
2018-11-02 05:14:02 +00:00
PF_NORANDOMZ = 16,
PF_HITSKY = 32
2016-11-29 12:28:43 +00:00
};
2016-12-30 23:20:02 +00:00
enum EPlayerCheats
{
CF_NOCLIP = 1 << 0, // No clipping, walk through barriers.
CF_GODMODE = 1 << 1, // No damage, no health loss.
CF_NOVELOCITY = 1 << 2, // Not really a cheat, just a debug aid.
CF_NOTARGET = 1 << 3, // [RH] Monsters don't target
CF_FLY = 1 << 4, // [RH] Flying player
CF_CHASECAM = 1 << 5, // [RH] Put camera behind player
CF_FROZEN = 1 << 6, // [RH] Don't let the player move
CF_REVERTPLEASE = 1 << 7, // [RH] Stick camera in player's head if (s)he moves
CF_STEPLEFT = 1 << 9, // [RH] Play left footstep sound next time
CF_FRIGHTENING = 1 << 10, // [RH] Scare monsters away
CF_INSTANTWEAPSWITCH= 1 << 11, // [RH] Switch weapons instantly
CF_TOTALLYFROZEN = 1 << 12, // [RH] All players can do is press +use
CF_PREDICTING = 1 << 13, // [RH] Player movement is being predicted
CF_INTERPVIEW = 1 << 14, // [RH] view was changed outside of input, so interpolate one frame
2022-12-02 11:24:21 +00:00
CF_INTERPVIEWANGLES = 1 << 15, // [MR] flag for interpolating view angles without interpolating the entire frame
CF_SCALEDNOLERP = 1 << 15, // [MR] flag for applying angles changes in the ticrate without interpolating the frame
2022-12-18 06:04:25 +00:00
CF_NOFOVINTERP = 1 << 16, // [B] Disable FOV interpolation when instantly zooming
2017-02-26 15:23:22 +00:00
2016-12-30 23:20:02 +00:00
CF_EXTREMELYDEAD = 1 << 22, // [RH] Reliably let the status bar know about extreme deaths.
2017-02-26 15:23:22 +00:00
2016-12-30 23:20:02 +00:00
CF_BUDDHA2 = 1 << 24, // [MC] Absolute buddha. No voodoo can kill it either.
CF_GODMODE2 = 1 << 25, // [MC] Absolute godmode. No voodoo can kill it either.
CF_BUDDHA = 1 << 27, // [SP] Buddha mode - take damage, but don't die
CF_NOCLIP2 = 1 << 30, // [RH] More Quake-like noclip
2017-02-26 15:23:22 +00:00
// These flags no longer exist, but keep the names for some stray mod that might have used them.
CF_DRAIN = 0,
CF_HIGHJUMP = 0,
CF_REFLECTION = 0,
CF_PROSPERITY = 0,
CF_DOUBLEFIRINGSPEED= 0,
CF_INFINITEAMMO = 0,
2016-12-30 23:20:02 +00:00
};
2017-01-14 01:05:52 +00:00
2017-04-13 00:42:31 +00:00
enum EWeaponState
{
WF_WEAPONREADY = 1 << 0, // [RH] Weapon is in the ready state and can fire its primary attack
WF_WEAPONBOBBING = 1 << 1, // [HW] Bob weapon while the player is moving
WF_WEAPONREADYALT = 1 << 2, // Weapon can fire its secondary attack
WF_WEAPONSWITCHOK = 1 << 3, // It is okay to switch away from this weapon
WF_DISABLESWITCH = 1 << 4, // Disable weapon switching completely
WF_WEAPONRELOADOK = 1 << 5, // [XA] Okay to reload this weapon.
WF_WEAPONZOOMOK = 1 << 6, // [XA] Okay to use weapon zoom function.
WF_REFIRESWITCHOK = 1 << 7, // Mirror WF_WEAPONSWITCHOK for A_ReFire
WF_USER1OK = 1 << 8, // [MC] Allow pushing of custom state buttons 1-4
WF_USER2OK = 1 << 9,
WF_USER3OK = 1 << 10,
WF_USER4OK = 1 << 11,
2017-07-28 18:00:28 +00:00
};
// these flags are for filtering actor visibility based on certain conditions of the renderer's feature support.
// currently, no renderer supports every single one of these features.
enum ActorRenderFeatureFlag
{
RFF_FLATSPRITES = 1<<0, // flat sprites
RFF_MODELS = 1<<1, // 3d models
RFF_SLOPE3DFLOORS = 1<<2, // sloped 3d floor support
RFF_TILTPITCH = 1<<3, // full free-look
RFF_ROLLSPRITES = 1<<4, // roll sprites
RFF_UNCLIPPEDTEX = 1<<5, // midtex and sprite can render "into" flats and walls
2017-07-29 15:03:40 +00:00
RFF_MATSHADER = 1<<6, // material shaders
2017-07-28 18:00:28 +00:00
RFF_POSTSHADER = 1<<7, // post-process shaders (renderbuffers)
RFF_BRIGHTMAP = 1<<8, // brightmaps
RFF_COLORMAP = 1<<9, // custom colormaps (incl. ability to fullbright certain ranges, ala Strife)
RFF_POLYGONAL = 1<<10, // uses polygons instead of wallscans/visplanes (i.e. softpoly and hardware opengl)
RFF_TRUECOLOR = 1<<11, // renderer is currently truecolor
2017-07-29 13:15:53 +00:00
RFF_VOXELS = 1<<12, // renderer is capable of voxels
2017-07-28 18:00:28 +00:00
};
2018-04-07 14:58:30 +00:00
// Special activation types
enum SPAC
{
SPAC_Cross = 1<<0, // when player crosses line
SPAC_Use = 1<<1, // when player uses line
SPAC_MCross = 1<<2, // when monster crosses line
SPAC_Impact = 1<<3, // when projectile hits line
SPAC_Push = 1<<4, // when player pushes line
SPAC_PCross = 1<<5, // when projectile crosses line
SPAC_UseThrough = 1<<6, // when player uses line (doesn't block)
// SPAC_PTOUCH is mapped to SPAC_PCross|SPAC_Impact
SPAC_AnyCross = 1<<7, // when anything without the MF2_TELEPORT flag crosses the line
SPAC_MUse = 1<<8, // monsters can use
SPAC_MPush = 1<<9, // monsters can push
SPAC_UseBack = 1<<10, // Can be used from the backside
2020-09-18 23:52:03 +00:00
SPAC_Damage = 1<<11, // [ZZ] when linedef receives damage
SPAC_Death = 1<<12, // [ZZ] when linedef receives damage and has 0 health
2018-04-07 14:58:30 +00:00
SPAC_PlayerActivate = (SPAC_Cross|SPAC_Use|SPAC_Impact|SPAC_Push|SPAC_AnyCross|SPAC_UseThrough|SPAC_UseBack),
};
2018-11-24 18:29:52 +00:00
enum RadiusDamageFlags
{
RADF_HURTSOURCE = 1,
RADF_NOIMPACTDAMAGE = 2,
RADF_SOURCEISSPOT = 4,
RADF_NODAMAGE = 8,
RADF_THRUSTZ = 16,
RADF_OLDRADIUSDAMAGE = 32
};
2018-11-24 19:32:12 +00:00
enum IntermissionSequenceType
{
FSTATE_EndingGame = 0,
FSTATE_ChangingLevel = 1,
FSTATE_InLevel = 2
};
2018-11-24 23:23:03 +00:00
enum Bobbing
{
Bob_Normal,
Bob_Inverse,
Bob_Alpha,
Bob_InverseAlpha,
Bob_Smooth,
Bob_InverseSmooth
};
2018-12-02 15:26:02 +00:00
enum EFinishLevelType
{
FINISH_SameHub,
FINISH_NextHub,
FINISH_NoHub
};
enum EChangeLevelFlags
{
CHANGELEVEL_KEEPFACING = 1,
CHANGELEVEL_RESETINVENTORY = 2,
CHANGELEVEL_NOMONSTERS = 4,
CHANGELEVEL_CHANGESKILL = 8,
CHANGELEVEL_NOINTERMISSION = 16,
CHANGELEVEL_RESETHEALTH = 32,
CHANGELEVEL_PRERAISEWEAPON = 64,
};
2021-04-21 12:38:19 +00:00
enum ELevelFlags
{
LEVEL_NOINTERMISSION = 0x00000001,
LEVEL_NOINVENTORYBAR = 0x00000002, // This effects Doom only, since it's the only one without a standard inventory bar.
LEVEL_DOUBLESKY = 0x00000004,
LEVEL_HASFADETABLE = 0x00000008, // Level uses Hexen's fadetable mapinfo to get fog
LEVEL_MAP07SPECIAL = 0x00000010,
LEVEL_BRUISERSPECIAL = 0x00000020,
LEVEL_CYBORGSPECIAL = 0x00000040,
LEVEL_SPIDERSPECIAL = 0x00000080,
LEVEL_SPECLOWERFLOOR = 0x00000100,
LEVEL_SPECOPENDOOR = 0x00000200,
LEVEL_SPECLOWERFLOORTOHIGHEST=0x00000300,
LEVEL_SPECACTIONSMASK = 0x00000300,
LEVEL_MONSTERSTELEFRAG = 0x00000400,
LEVEL_ACTOWNSPECIAL = 0x00000800,
LEVEL_SNDSEQTOTALCTRL = 0x00001000,
LEVEL_FORCETILEDSKY = 0x00002000,
LEVEL_CROUCH_NO = 0x00004000,
LEVEL_JUMP_NO = 0x00008000,
LEVEL_FREELOOK_NO = 0x00010000,
LEVEL_FREELOOK_YES = 0x00020000,
// The absence of both of the following bits means that this level does not
// use falling damage (though damage can be forced with dmflags,.
LEVEL_FALLDMG_ZD = 0x00040000, // Level uses ZDoom's falling damage
LEVEL_FALLDMG_HX = 0x00080000, // Level uses Hexen's falling damage
LEVEL_HEADSPECIAL = 0x00100000, // Heretic episode 1/4
LEVEL_MINOTAURSPECIAL = 0x00200000, // Heretic episode 2/5
LEVEL_SORCERER2SPECIAL = 0x00400000, // Heretic episode 3
LEVEL_SPECKILLMONSTERS = 0x00800000,
LEVEL_STARTLIGHTNING = 0x01000000, // Automatically start lightning
LEVEL_FILTERSTARTS = 0x02000000, // Apply mapthing filtering to player starts
LEVEL_LOOKUPLEVELNAME = 0x04000000, // Level name is the name of a language string
LEVEL_USEPLAYERSTARTZ = 0x08000000, // Use the Z position of player starts
LEVEL_SWAPSKIES = 0x10000000, // Used by lightning
LEVEL_NOALLIES = 0x20000000, // i.e. Inside Strife's front base
LEVEL_CHANGEMAPCHEAT = 0x40000000, // Don't display cluster messages
LEVEL_VISITED = 0x80000000, // Used for intermission map
// The flags uint64_t is now split into 2 DWORDs
LEVEL2_RANDOMPLAYERSTARTS = 0x00000001, // Select single player starts randomnly (no voodoo dolls)
LEVEL2_ALLMAP = 0x00000002, // The player picked up a map on this level
LEVEL2_LAXMONSTERACTIVATION = 0x00000004, // Monsters can open doors depending on the door speed
LEVEL2_LAXACTIVATIONMAPINFO = 0x00000008, // LEVEL_LAXMONSTERACTIVATION is not a default.
LEVEL2_MISSILESACTIVATEIMPACT=0x00000010, // Missiles are the activators of SPAC_IMPACT events, not their shooters
LEVEL2_NEEDCLUSTERTEXT = 0x00000020, // A map with this flag needs to retain its cluster intermission texts when being redefined in UMAPINFO
LEVEL2_KEEPFULLINVENTORY = 0x00000040, // doesn't reduce the amount of inventory items to 1
LEVEL2_PRERAISEWEAPON = 0x00000080, // players should spawn with their weapons fully raised (but not when respawning it multiplayer)
LEVEL2_MONSTERFALLINGDAMAGE = 0x00000100,
LEVEL2_CLIPMIDTEX = 0x00000200,
LEVEL2_WRAPMIDTEX = 0x00000400,
LEVEL2_CHECKSWITCHRANGE = 0x00000800,
LEVEL2_PAUSE_MUSIC_IN_MENUS = 0x00001000,
LEVEL2_TOTALINFIGHTING = 0x00002000,
LEVEL2_NOINFIGHTING = 0x00004000,
LEVEL2_NOMONSTERS = 0x00008000,
LEVEL2_INFINITE_FLIGHT = 0x00010000,
LEVEL2_ALLOWRESPAWN = 0x00020000,
LEVEL2_FORCETEAMPLAYON = 0x00040000,
LEVEL2_FORCETEAMPLAYOFF = 0x00080000,
LEVEL2_CONV_SINGLE_UNFREEZE = 0x00100000,
LEVEL2_NOCLUSTERTEXT = 0x00200000, // ignore intermission texts fro clusters. This gets set when UMAPINFO is used to redefine its properties.
LEVEL2_DUMMYSWITCHES = 0x00400000,
LEVEL2_HEXENHACK = 0x00800000, // Level was defined in a Hexen style MAPINFO
LEVEL2_SMOOTHLIGHTING = 0x01000000, // Level uses the smooth lighting feature.
LEVEL2_POLYGRIND = 0x02000000, // Polyobjects grind corpses to gibs.
LEVEL2_RESETINVENTORY = 0x04000000, // Resets player inventory when starting this level (unless in a hub)
LEVEL2_RESETHEALTH = 0x08000000, // Resets player health when starting this level (unless in a hub)
LEVEL2_NOSTATISTICS = 0x10000000, // This level should not have statistics collected
LEVEL2_ENDGAME = 0x20000000, // This is an epilogue level that cannot be quit.
LEVEL2_NOAUTOSAVEHINT = 0x40000000, // tell the game that an autosave for this level does not need to be kept
LEVEL2_FORGETSTATE = 0x80000000, // forget this map's state in a hub
// More flags!
LEVEL3_FORCEFAKECONTRAST = 0x00000001, // forces fake contrast even with fog enabled
LEVEL3_REMOVEITEMS = 0x00000002, // kills all INVBAR items on map change.
LEVEL3_ATTENUATE = 0x00000004, // attenuate lights?
LEVEL3_NOLIGHTFADE = 0x00000008, // no light fading to black.
LEVEL3_NOCOLOREDSPRITELIGHTING = 0x00000010, // draw sprites only with color-less light
LEVEL3_EXITNORMALUSED = 0x00000020,
LEVEL3_EXITSECRETUSED = 0x00000040,
LEVEL3_FORCEWORLDPANNING = 0x00000080, // Forces the world panning flag for all textures, even those without it explicitly set.
LEVEL3_HIDEAUTHORNAME = 0x00000100,
LEVEL3_PROPERMONSTERFALLINGDAMAGE = 0x00000200, // Properly apply falling damage to the monsters
LEVEL3_SKYBOXAO = 0x00000400, // Apply SSAO to sector skies
2021-09-21 18:31:10 +00:00
LEVEL3_E1M8SPECIAL = 0x00000800,
LEVEL3_E2M8SPECIAL = 0x00001000,
LEVEL3_E3M8SPECIAL = 0x00002000,
LEVEL3_E4M8SPECIAL = 0x00004000,
LEVEL3_E4M6SPECIAL = 0x00008000,
LEVEL3_NOSHADOWMAP = 0x00010000, // disables shadowmaps for a given level.
LEVEL3_AVOIDMELEE = 0x00020000, // global flag needed for proper MBF support.
LEVEL3_NOJUMPDOWN = 0x00040000, // only for MBF21. Inverse of MBF's dog_jumping flag.
LEVEL3_LIGHTCREATED = 0x00080000, // a light had been created in the last frame
2021-04-21 12:38:19 +00:00
};
2019-02-09 08:17:57 +00:00
// [RH] Compatibility flags.
enum ECompatFlags
{
COMPATF_SHORTTEX = 1 << 0, // Use Doom's shortest texture around behavior?
COMPATF_STAIRINDEX = 1 << 1, // Don't fix loop index for stair building?
COMPATF_LIMITPAIN = 1 << 2, // Pain elemental is limited to 20 lost souls?
COMPATF_SILENTPICKUP = 1 << 3, // Pickups are only heard locally?
COMPATF_NO_PASSMOBJ = 1 << 4, // Pretend every actor is infinitely tall?
COMPATF_MAGICSILENCE = 1 << 5, // Limit actors to one sound at a time?
COMPATF_WALLRUN = 1 << 6, // Enable buggier wall clipping so players can wallrun?
COMPATF_NOTOSSDROPS = 1 << 7, // Spawn dropped items directly on the floor?
COMPATF_USEBLOCKING = 1 << 8, // Any special line can block a use line
COMPATF_NODOORLIGHT = 1 << 9, // Don't do the BOOM local door light effect
COMPATF_RAVENSCROLL = 1 << 10, // Raven's scrollers use their original carrying speed
COMPATF_SOUNDTARGET = 1 << 11, // Use sector based sound target code.
COMPATF_DEHHEALTH = 1 << 12, // Limit deh.MaxHealth to the health bonus (as in Doom2.exe)
COMPATF_TRACE = 1 << 13, // Trace ignores lines with the same sector on both sides
COMPATF_DROPOFF = 1 << 14, // Monsters cannot move when hanging over a dropoff
COMPATF_BOOMSCROLL = 1 << 15, // Scrolling sectors are additive like in Boom
COMPATF_INVISIBILITY = 1 << 16, // Monsters can see semi-invisible players
COMPATF_SILENT_INSTANT_FLOORS = 1<<17, // Instantly moving floors are not silent
COMPATF_SECTORSOUNDS = 1 << 18, // Sector sounds use original method for sound origin.
COMPATF_MISSILECLIP = 1 << 19, // Use original Doom heights for clipping against projectiles
COMPATF_CROSSDROPOFF = 1 << 20, // monsters can't be pushed over dropoffs
COMPATF_ANYBOSSDEATH = 1 << 21, // [GZ] Any monster which calls BOSSDEATH counts for level specials
COMPATF_MINOTAUR = 1 << 22, // Minotaur's floor flame is exploded immediately when feet are clipped
COMPATF_MUSHROOM = 1 << 23, // Force original velocity calculations for A_Mushroom in Dehacked mods.
COMPATF_MBFMONSTERMOVE = 1 << 24, // Monsters are affected by friction and pushers/pullers.
2022-04-28 22:28:34 +00:00
COMPATF_CORPSEGIBS = 1 << 25, // only needed for some hypothetical mod checking this flag.
COMPATF_VILEGHOSTS = 1 << 25, // Crushed monsters are resurrected as ghosts.
2019-02-09 08:17:57 +00:00
COMPATF_NOBLOCKFRIENDS = 1 << 26, // Friendly monsters aren't blocked by monster-blocking lines.
COMPATF_SPRITESORT = 1 << 27, // Invert sprite sorting order for sprites of equal distance
COMPATF_HITSCAN = 1 << 28, // Hitscans use original blockmap anf hit check code.
COMPATF_LIGHT = 1 << 29, // Find neighboring light level like Doom
COMPATF_POLYOBJ = 1 << 30, // Draw polyobjects the old fashioned way
COMPATF_MASKEDMIDTEX = 1 << 31, // Ignore compositing when drawing masked midtextures
COMPATF2_BADANGLES = 1 << 0, // It is impossible to face directly NSEW.
COMPATF2_FLOORMOVE = 1 << 1, // Use the same floor motion behavior as Doom.
COMPATF2_SOUNDCUTOFF = 1 << 2, // Cut off sounds when an actor vanishes instead of making it owner-less
COMPATF2_POINTONLINE = 1 << 3, // Use original but buggy P_PointOnLineSide() and P_PointOnDivlineSideCompat()
COMPATF2_MULTIEXIT = 1 << 4, // Level exit can be triggered multiple times (required by Daedalus's travel tubes, thanks to a faulty script)
COMPATF2_TELEPORT = 1 << 5, // Don't let indirect teleports trigger sector actions
COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial()
2019-02-11 14:26:11 +00:00
COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior
2019-03-24 08:38:26 +00:00
COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust
2019-03-25 23:38:54 +00:00
COMPATF2_EXPLODE2 = 1 << 9, // Use original explosion code throughout.
COMPATF2_RAILING = 1 << 10, // Bugged Strife railings.
2023-05-13 23:30:42 +00:00
COMPATF2_VOODOO_ZOMBIES = 1 << 15, // allow playerinfo, playerpawn, and voodoo health to all be different, and allow monster targetting of 'dead' players that have positive health
2019-02-09 08:17:57 +00:00
};
2021-02-13 20:34:19 +00:00
const M_E = 2.7182818284590452354; // e
const M_LOG2E = 1.4426950408889634074; // log_2 e
const M_LOG10E = 0.43429448190325182765; // log_10 e
const M_LN2 = 0.69314718055994530942; // log_e 2
const M_LN10 = 2.30258509299404568402; // log_e 10
const M_PI = 3.14159265358979323846; // pi
const M_PI_2 = 1.57079632679489661923; // pi/2
const M_PI_4 = 0.78539816339744830962; // pi/4
const M_1_PI = 0.31830988618379067154; // 1/pi
const M_2_PI = 0.63661977236758134308; // 2/pi
const M_2_SQRTPI = 1.12837916709551257390; // 2/sqrt(pi)
const M_SQRT2 = 1.41421356237309504880; // sqrt(2)
const M_SQRT1_2 = 0.70710678118654752440; // 1/sqrt(2)