#define TEXTURE_MIDDLE 1\r
#define TEXTURE_BOTTOM 2\r
\r
+// same information as combinable bit flags\r
+#define TEXFLAG_TOP 1\r
+#define TEXFLAG_MIDDLE 2\r
+#define TEXFLAG_BOTTOM 4\r
+#define TEXFLAG_ADDOFFSET 8\r
+\r
#define GAME_SINGLE_PLAYER 0\r
#define GAME_NET_COOPERATIVE 1\r
#define GAME_NET_DEATHMATCH 2\r
#define BLOCK_CREATURES 1\r
#define BLOCK_EVERYTHING 2\r
#define BLOCK_RAILING 3\r
+#define BLOCK_PLAYERS 4\r
\r
#define SCROLL 0\r
#define CARRY 1\r
#define PROP_INSTANTWEAPONSWITCH 2\r
#define PROP_FLY 3\r
#define PROP_TOTALLYFROZEN 4\r
+#define PROP_BUDDHA 16\r
\r
// The following properties correspond to powers given by certain items\r
#define PROP_INVULNERABILITY 5\r
#define PROP_FLIGHT 12\r
#define PROP_SPEED 15\r
\r
+// Player input -------------------------------------------------------------\r
+\r
+// These are the original inputs sent by the player.\r
+#define INPUT_OLDBUTTONS 0\r
+#define INPUT_BUTTONS 1\r
+#define INPUT_PITCH 2\r
+#define INPUT_YAW 3\r
+#define INPUT_ROLL 4\r
+#define INPUT_FORWARDMOVE 5\r
+#define INPUT_SIDEMOVE 6\r
+#define INPUT_UPMOVE 7\r
+\r
+// These are the inputs, as modified by P_PlayerThink().\r
+// Most of the time, these will match the original inputs, but\r
+// they can be different if a player is frozen or using a\r
+// chainsaw.\r
+#define MODINPUT_OLDBUTTONS 8\r
+#define MODINPUT_BUTTONS 9\r
+#define MODINPUT_PITCH 10\r
+#define MODINPUT_YAW 11\r
+#define MODINPUT_ROLL 12\r
+#define MODINPUT_FORWARDMOVE 13\r
+#define MODINPUT_SIDEMOVE 14\r
+#define MODINPUT_UPMOVE 15\r
+\r
+// Player buttons -----------------------------------------------------------\r
+\r
+#define BT_ATTACK 1\r
+#define BT_USE 2\r
+#define BT_JUMP 4\r
+#define BT_CROUCH 8\r
+#define BT_TURN180 16\r
+#define BT_ALTATTACK 32\r
+#define BT_RELOAD 64\r
+#define BT_ZOOM 128\r
+\r
+#define BT_SPEED 256\r
+#define BT_STRAFE 512\r
+\r
+#define BT_MOVERIGHT 1024\r
+#define BT_MOVELEFT 2048\r
+#define BT_BACK 4096\r
+#define BT_FORWARD 8192\r
+#define BT_RIGHT 16384\r
+#define BT_LEFT 32768\r
+#define BT_LOOKUP 65536\r
+#define BT_LOOKDOWN 131072\r
+#define BT_MOVEUP 262144\r
+#define BT_MOVEDOWN 524288\r
+#define BT_SHOWSCORES 1048576\r
+\r
+// Do whatever you want with these.\r
+#define BT_USER1 2097152\r
+#define BT_USER2 4194304\r
+#define BT_USER3 8388608\r
+#define BT_USER4 16777216\r
+\r
// Text colors --------------------------------------------------------------\r
\r
#define CR_UNTRANSLATED -1\r
#define CR_PURPLE 19\r
#define CR_DARKGRAY 20\r
#define CR_DARKGREY 20\r
+#define CR_CYAN 21\r
\r
// HUD message types --------------------------------------------------------\r
\r
\r
// OR this with one of the above to log the hudmessage to the console.\r
// i.e. instead of HUDMSG_PLAIN, you can use HUDMSG_PLAIN | HUDMSG_LOG\r
-#define HUDMSG_LOG 0x80000000\r
+#define HUDMSG_LOG 0x80000000\r
\r
// OR this with one of the above if the color you passed is a string\r
// instead of one of the CR_ constants.\r
-#define HUDMSG_COLORSTRING 0x40000000\r
+#define HUDMSG_COLORSTRING 0x40000000\r
+\r
+// OR this with one of the above to use additive blending when drawing the\r
+// HUD message.\r
+#define HUDMSG_ADDBLEND 0x20000000\r
+\r
+// OR this with one of the above to use the extra alpha parameter\r
+#define HUDMSG_ALPHA 0x10000000\r
+\r
+// Or this with one of the above to not wrap lines\r
+#define HUDMSG_NOWRAP 0x08000000\r
+\r
+// HUD message layers; these are not flags\r
+#define HUDMSG_LAYER_OVERHUD 0x00000000\r
+#define HUDMSG_LAYER_UNDERHUD 0x00001000\r
+#define HUDMSG_LAYER_OVERMAP 0x00002000\r
+\r
+// HUD message visibility flags\r
+#define HUDMSG_NOTWITH3DVIEW 0x00010000\r
+#define HUDMSG_NOTWITHFULLMAP 0x00020000\r
+#define HUDMSG_NOTWITHOVERLAYMAP 0x00040000\r
+\r
\r
// "Scripted" Marine weapon types -------------------------------------------\r
\r
// Actor properties you can get/set -----------------------------------------\r
\r
#define APROP_Health 0\r
-#define APROP_Speed 1\r
+#define APROP_Speed 1\r
#define APROP_Damage 2\r
-#define APROP_Alpha 3\r
+#define APROP_Alpha 3\r
#define APROP_RenderStyle 4\r
-#define APROP_Ambush 10\r
-#define APROP_Invulnerable 11\r
-#define APROP_JumpZ 12\r
-#define APROP_ChaseGoal 13\r
-#define APROP_Frightened 14\r
#define APROP_SeeSound 5 // Sounds can only be set, not gotten\r
#define APROP_AttackSound 6\r
#define APROP_PainSound 7\r
#define APROP_DeathSound 8\r
#define APROP_ActiveSound 9\r
+#define APROP_Ambush 10\r
+#define APROP_Invulnerable 11\r
+#define APROP_JumpZ 12\r
+#define APROP_ChaseGoal 13\r
+#define APROP_Frightened 14\r
+#define APROP_Gravity 15\r
+#define APROP_Friendly 16\r
+#define APROP_SpawnHealth 17\r
+#define APROP_Dropped 18\r
+#define APROP_Notarget 19\r
+#define APROP_Species 20\r
+#define APROP_Nametag 21\r
+#define APROP_Score 22\r
+#define APROP_Notrigger 23\r
+#define APROP_DamageFactor 24\r
+#define APROP_MasterTID 25\r
+#define APROP_TargetTID 26\r
+#define APROP_TracerTID 27\r
+#define APROP_Waterlevel 28\r
+#define APROP_ScaleX 29\r
+#define APROP_ScaleY 30\r
+#define APROP_Dormant 31\r
+#define APROP_Mass 32\r
+#define APROP_Accuracy 33\r
+#define APROP_Stamina 34\r
+#define APROP_Height 35\r
+#define APROP_Radius 36\r
+#define APROP_Reactiontime 37\r
+#define APROP_MeleeRange 38\r
\r
// Render Styles ------------------------------------------------------------\r
\r
-#define STYLE_None 0 // Do not draw\r
+#define STYLE_None 0 // Do not draw\r
#define STYLE_Normal 1 // Normal; just copy the image to the screen\r
-#define STYLE_Fuzzy 2 // Draw silhouette using "fuzz" effect\r
+#define STYLE_Fuzzy 2 // Draw silhouette using "fuzz" effect\r
#define STYLE_SoulTrans 3 // Draw translucent with amount in r_transsouls\r
#define STYLE_OptFuzzy 4 // Draw as fuzzy or translucent, based on user preference\r
+#define STYLE_Stencil 5 // Draw as solid color\r
#define STYLE_Translucent 64 // Draw translucent\r
-#define STYLE_Add 65 // Draw additive\r
+#define STYLE_Add 65 // Draw additive\r
+#define STYLE_Shaded 66 // \r
+#define STYLE_TranslucentStencil 67\r
\r
// Properties you can use with GetLevelInfo() -------------------------------\r
\r
#define LEVELINFO_KILLED_MONSTERS 8\r
#define LEVELINFO_SUCK_TIME 9\r
\r
+// Properties you can use with GetPlayerInfo() ------------------------------\r
+\r
+#define PLAYERINFO_TEAM 0\r
+#define PLAYERINFO_AIMDIST 1\r
+#define PLAYERINFO_COLOR 2\r
+#define PLAYERINFO_GENDER 3\r
+#define PLAYERINFO_NEVERSWITCH 4\r
+#define PLAYERINFO_MOVEBOB 5\r
+#define PLAYERINFO_STILLBOB 6\r
+#define PLAYERINFO_PLAYERCLASS 7\r
+#define PLAYERINFO_FOV 8\r
+#define PLAYERINFO_DESIREDFOV 9\r
+\r
+\r
// Flags for ReplaceTextures ------------------------------------------------\r
\r
#define NOT_BOTTOM 1\r
#define DAMAGE_IN_AIR 4\r
#define DAMAGE_SUBCLASSES_PROTECT 8\r
\r
+// Flags for MorphActor -----------------------------------------------------\r
+\r
+#define MRF_OLDEFFECTS 0x00000000\r
+#define MRF_ADDSTAMINA 0x00000001\r
+#define MRF_FULLHEALTH 0x00000002\r
+#define MRF_UNDOBYTOMEOFPOWER 0x00000004\r
+#define MRF_UNDOBYCHAOSDEVICE 0x00000008\r
+#define MRF_FAILNOTELEFRAG 0x00000010\r
+#define MRF_FAILNOLAUGH 0x00000020\r
+#define MRF_WHENINVULNERABLE 0x00000040\r
+#define MRF_LOSEACTUALWEAPON 0x00000080\r
+#define MRF_NEWTIDBEHAVIOUR 0x00000100\r
+#define MRF_UNDOBYDEATH 0x00000200\r
+#define MRF_UNDOBYDEATHFORCED 0x00000400\r
+#define MRF_UNDOBYDEATHSAVES 0x00000800\r
+\r
// Shared spawnable things from Hexen. You can spawn these in the other -----\r
// games if you provide sprites for them, otherwise they'll be invisible. ---\r
\r
#define T_WIZARD 19\r
#define T_IRONLICH 20\r
#define T_ITEMHEALTHPOTION 23\r
-#define T_ITEMHEALTHFLASH 24\r
+#define T_ITEMHEALTHFLASH 24 // incorrect name but keep it for compatibility\r
+#define T_ITEMHEALTHFLASK 24\r
#define T_ITEMHEALTHFULL 25\r
#define T_CROSSBOW 27\r
#define T_BLASTER 28\r
#define T_SNAKEPROJECTILEBIG 139\r
#define T_WIZARDSHOT 140\r
\r
-// All D'Sparil teleport destinations must be spawned before D'Sparil alone.\r
-// D'Sparil can be spawned alone manually, and he is also spawned automatically\r
-// when he "dies" on his serpent.\r
#define T_DSPARILTELEPORTDEST 141\r
#define T_DSPARILONSERPENT 142\r
#define T_DSPARILALONE 143\r
#define T_REDTELEGLITTER 166\r
#define T_BLUETELEGLITTER 167\r
\r
+// Hexen Spawnable things (used for thingcount() and thing spawners) ------\r
+\r
+#define T_CENTAUR 1\r
+#define T_CENTAURLEADER 2\r
+#define T_DEMON1 3\r
+#define T_ETTIN 4\r
+#define T_FIREGARGOYLE 5\r
+#define T_WATERLURKER 6\r
+#define T_WATERLURKERLEADER 7\r
+#define T_WRAITH 8\r
+#define T_WRAITHBURIED 9\r
+#define T_FIREBALL1 10\r
+#define T_MANA1 11\r
+#define T_MANA2 12\r
+#define T_ITEMBOOTS 13\r
+#define T_ITEMPORK 14\r
+#define T_ITEMSUMMON 16\r
+#define T_ITEMTPORTOTHER 17\r
+#define T_BISHOP 19\r
+#define T_ICEGOLEM 20\r
+#define T_DRAGONSKINBRACERS 22\r
+#define T_ITEMBOOSTMANA 26\r
+#define T_FIGHTERAXE 27\r
+#define T_FIGHTERHAMMER 28\r
+#define T_FIGHTERSWORD1 29\r
+#define T_FIGHTERSWORD2 30\r
+#define T_FIGHTERSWORD3 31\r
+#define T_CLERICSTAFF 32\r
+#define T_CLERICHOLY1 33\r
+#define T_CLERICHOLY2 34\r
+#define T_CLERICHOLY3 35\r
+#define T_MAGESHARDS 36\r
+#define T_MAGESTAFF1 37\r
+#define T_MAGESTAFF2 38\r
+#define T_MAGESTAFF3 39\r
+#define T_ARROW 50\r
+#define T_DART 51\r
+#define T_POISONDART 52\r
+#define T_RIPPERBALL 53\r
+#define T_BLADE 64\r
+#define T_ICESHARD 65\r
+#define T_FLAME_SMALL 66\r
+#define T_FLAME_LARGE 67\r
+#define T_MESHARMOR 68\r
+#define T_FALCONSHIELD 69\r
+#define T_PLATINUMHELM 70\r
+#define T_AMULETOFWARDING 71\r
+#define T_ITEMFLECHETTE 72\r
+#define T_ITEMREPULSION 74\r
+#define T_MANA3 75\r
+#define T_PUZZSKULL 76\r
+#define T_PUZZGEMBIG 77\r
+#define T_PUZZGEMRED 78\r
+#define T_PUZZGEMGREEN1 79\r
+#define T_PUZZGEMGREEN2 80\r
+#define T_PUZZGEMBLUE1 81\r
+#define T_PUZZGEMBLUE2 82\r
+#define T_PUZZBOOK1 83\r
+#define T_PUZZBOOK2 84\r
+#define T_METALKEY 85\r
+#define T_SMALLMETALKEY 86\r
+#define T_AXEKEY 87\r
+#define T_FIREKEY 88\r
+#define T_EMERALDKEY 89\r
+#define T_MACEKEY 90\r
+#define T_SILVERKEY 91\r
+#define T_RUSTYKEY 92\r
+#define T_HORNKEY 93\r
+#define T_SERPENTKEY 94\r
+#define T_WATERDRIP 95\r
+#define T_TEMPSMALLFLAME 96\r
+#define T_PERMSMALLFLAME 97\r
+#define T_PERMLARGEFLAME 99\r
+#define T_DEMON_MASH 100\r
+#define T_DEMON2_MASH 101\r
+#define T_ETTIN_MASH 102\r
+#define T_CENTAUR_MASH 103\r
+#define T_THRUSTSPIKEUP 104\r
+#define T_THRUSTSPIKEDOWN 105\r
+#define T_FLESH_DRIP1 106\r
+#define T_FLESH_DRIP2 107\r
+#define T_SPARK_DRIP 108\r
+\r
+\r
+// Flags returned by ClassifyActor\r
+\r
+#define ACTOR_NONE 0\r
+#define ACTOR_WORLD 1\r
+#define ACTOR_PLAYER 2\r
+#define ACTOR_BOT 4\r
+#define ACTOR_VOODOODOLL 8\r
+#define ACTOR_MONSTER 16\r
+#define ACTOR_ALIVE 32\r
+#define ACTOR_DEAD 64\r
+#define ACTOR_MISSILE 128\r
+#define ACTOR_GENERIC 256\r
+\r
+\r
+// Physical volumes for SoundSequenceOnSector\r
+\r
+#define SECSEQ_FLOOR 1\r
+#define SECSEQ_CEILING 2\r
+#define SECSEQ_FULLHEIGHT 3\r
+#define SECSEQ_INTERIOR 4\r
+\r
+// Channels for PlaySound and StopSound\r
+\r
+#define CHAN_AUTO 0\r
+#define CHAN_WEAPON 1\r
+#define CHAN_VOICE 2\r
+#define CHAN_ITEM 3\r
+#define CHAN_BODY 4\r
+\r
+// Modifier flags for PlaySound\r
+\r
+#define CHAN_LISTENERZ 8\r
+#define CHAN_MAYBE_LOCAL 16\r
+#define CHAN_UI 32\r
+#define CHAN_NOPAUSE 64\r
+\r
+// Standard attenuation values for PlaySound\r
+\r
+#define ATTN_NONE 0 // full volume the entire level\r
+#define ATTN_NORM 1.0\r
+#define ATTN_IDLE 1.001\r
+#define ATTN_STATIC 3.0 // dimish very rapidly with distance\r
+\r
+// Identifiers for PlayActorSound\r
+\r
+#define SOUND_See 0\r
+#define SOUND_Attack 1\r
+#define SOUND_Pain 2\r
+#define SOUND_Death 3\r
+#define SOUND_Active 4\r
+#define SOUND_Use 5\r
+#define SOUND_Bounce 6\r
+#define SOUND_WallBounce 7\r
+#define SOUND_CrushPain 8\r
+#define SOUND_Howl 9\r
+\r
+// Flags for SpawnDecal\r
+\r
+#define SDF_ABSANGLE 1\r
+#define SDF_PERMANENT 2\r
+\r
+// Actor pointer selectors\r
+\r
+#DEFINE AAPTR_DEFAULT 0\r
+#DEFINE AAPTR_NULL 0x1\r
+#DEFINE AAPTR_TARGET 0x2\r
+#DEFINE AAPTR_MASTER 0x4\r
+#DEFINE AAPTR_TRACER 0x8\r
+\r
+#DEFINE AAPTR_PLAYER_GETTARGET 0x10\r
+#DEFINE AAPTR_PLAYER_GETCONVERSATION 0x20\r
+\r
+#DEFINE AAPTR_PLAYER1 0x40\r
+#DEFINE AAPTR_PLAYER2 0x80\r
+#DEFINE AAPTR_PLAYER3 0x100\r
+#DEFINE AAPTR_PLAYER4 0x200\r
+#DEFINE AAPTR_PLAYER5 0x400\r
+#DEFINE AAPTR_PLAYER6 0x800\r
+#DEFINE AAPTR_PLAYER7 0x1000\r
+#DEFINE AAPTR_PLAYER8 0x2000\r
+\r
+#DEFINE AAPTR_FRIENDPLAYER 0x4000\r
+\r
+// Actor pointer operation flags\r
+\r
+#DEFINE PTROP_UNSAFETARGET 1\r
+#DEFINE PTROP_UNSAFEMASTER 2\r
+#DEFINE PTROP_NOSAFEGUARDS PTROP_UNSAFETARGET |PTROP_UNSAFEMASTER \r
+\r
+// ==========================================================================\r
+// Skulltag Definitions\r
+// ==========================================================================\r
+\r
+// Skulltag Teams -----------------------------------------------------------\r
+#define TEAM_BLUE 0\r
+#define TEAM_RED 1\r
+#define NO_TEAM 2\r
+\r
+// Team properties ----------------------------------------------------------\r
+#define TPROP_Name 0\r
+#define TPROP_Score 1\r
+#define TPROP_IsValid 2\r
+#define TPROP_NumPlayers 3\r
+#define TPROP_NumLivePlayers 4\r
+#define TPROP_TextColor 5\r
+#define TPROP_PlayerStartNum 6\r
+#define TPROP_Spread 7\r
+#define TPROP_Carrier 8\r
+#define TPROP_Assister 9\r
+#define TPROP_FragCount 10\r
+#define TPROP_DeathCount 11\r
+#define TPROP_WinCount 12\r
+#define TPROP_PointCount 13\r
+#define TPROP_ReturnTics 14\r
+#define TPROP_TeamItem 15\r
+#define TPROP_WinnerTheme 16\r
+#define TPROP_LoserTheme 17\r
+\r
+// Skulltag Invasion --------------------------------------------------------\r
+#define IS_WAITINGFORPLAYERS 0\r
+#define IS_FIRSTCOUNTDOWN 1\r
+#define IS_INPROGRESS 2\r
+#define IS_BOSSFIGHT 3\r
+#define IS_WAVECOMPLETE 4\r
+#define IS_COUNTDOWN 5\r
+\r
+\r
+#define T_GRENADE 216\r
+#define T_BFG10KSHOT 217\r
+#define T_DARKIMPFIREBALL 218\r
+#define T_CACOLANTERNSHOT 219\r
+#define T_ABADDONSHOT 221\r
+\r
+// Skulltag Monsters --------------------------------------------------------\r
+#define T_DARKIMP 155\r
+#define T_BLOODDEMON 156\r
+#define T_SSGGUY 157\r
+#define T_HECTEBUS 158\r
+#define T_CACOLANTERN 159\r
+#define T_BELPHEGOR 215\r
+#define T_ABADDON 220\r
+\r
+// Skulltag Weapons ---------------------------------------------------------\r
+#define T_PISTOL 162\r
+#define T_GRENADELAUNCHER 163\r
+#define T_RAILGUN 164\r
+#define T_BFG10000 165\r
+#define T_MINIGUN 214\r
+\r
+// Skulltag Armor/Health Items ----------------------------------------------\r
+#define T_MAXHEALTHBONUS 166\r
+#define T_MAXARMORBONUS 167\r
+#define T_REDARMOR 168\r
+\r
+// Skulltag Powerups --------------------------------------------------------\r
+#define T_TURBOSPHERE 169\r
+#define T_ANTIGRAVBELT 170\r
+#define T_TIMEFREEZER 171\r
+#define T_INFRAGOGGLES 172\r
+#define T_INFRATRACKER 173\r
+#define T_TRANSLUCENCY 174\r
+#define T_DOOMSPHERE 175\r
+#define T_RANDOMPOWERUP 176\r
+\r
+// Skulltag Flags -----------------------------------------------------------\r
+#define T_BLUEFLAG 177\r
+#define T_REDFLAG 178\r
+#define T_WHITEFLAG 179\r
+\r
+// Skulltag Runes -----------------------------------------------------------\r
+#define T_STRENGTH 180\r
+#define T_RAGE 181\r
+#define T_DRAIN 182\r
+#define T_SPREAD 183\r
+#define T_RESISTANCE 184\r
+#define T_REGENERATION 185\r
+#define T_PROSPERITY 186\r
+#define T_REFLECTION 187\r
+#define T_HIGHJUMP 188\r
+#define T_HASTE 189\r
+\r
+\r
// Events when you have input grabbed\r
\r
#define EV_KeyDown 1 // data1: unshifted ASCII, data2: shifted ASCII\r
#define CHANGELEVEL_NOMONSTERS 4\r
#define CHANGELEVEL_CHANGESKILL 8\r
#define CHANGELEVEL_NOINTERMISSION 16\r
+#define CHANGELEVEL_RESETHEALTH 32\r
+#define CHANGELEVEL_PRERAISEWEAPON 64\r
+\r
+#define NO_CHANGE 32767.0\r
+\r
+#define SECF_SILENT 1\r
+#define SECF_NOFALLINGDAMAGE 2\r
+#define SECF_FLOORDROP 4\r
+#define SECF_NORESPAWN 8\r
+\r
+#define BLOCKF_CREATURES 1\r
+#define BLOCKF_MONSTERS 2\r
+#define BLOCKF_PLAYERS 4\r
+#define BLOCKF_FLOATERS 8\r
+#define BLOCKF_PROJECTILES 16\r
+#define BLOCKF_EVERYTHING 32\r
+#define BLOCKF_RAILING 64\r
+#define BLOCKF_USE 128\r
+#define BLOCKF_SIGHT 256\r
+\r
+#define FOGP_DENSITY 0\r
+#define FOGP_OUTSIDEDENSITY 1\r
+#define FOGP_SKYFOG 2\r
+\r
+#define PRINTNAME_LEVELNAME -1\r
+#define PRINTNAME_LEVEL -2\r
+#define PRINTNAME_SKILL -3\r
+\r
+#define CSF_NOFAKEFLOORS 1\r
+#define CSF_NOBLOCKALL 2\r