Flags/Enums
Flags/Enums to use with functions.
Note
Some of these enums will be hardcoded onto AngelScript in the future
GetCurLoadType
shared enum MapLoadType_t
{
MapLoad_NewGame = 0,
MapLoad_LoadGame,
MapLoad_Transition,
MapLoad_Background
}
Wait
shared enum WaitHandle_t
{
WH_NOTHING = 0, // Nothing, context executes like normal (AngelScript defaults to this)
WH_ABORT_MAPNAME = 1, // Context will abort if map name doesn't match before execution
WH_ABORT_LEVELCHANGE = 2, // Context will immediately abort if a level change was detected
WH_ABORT_SAVEGAME = 4, // Context will immediately abort if game was loaded via a save file
WH_ABORT_INVALIDOWNER = 8, // Context will abort if Owner is invalid/garbage before execution
WH_FREEZE_MAPNAME = 16 // Context will be forever frozen until Player reenters the same level
}
Relationship
shared enum Disposition_t
{
D_ER, // Undefined - error
D_HT, // Hate
D_FR, // Fear
D_LI, // Like
D_NU // Neutral
}
Weapon ID
shared enum WeaponID_t
{
P3_WEAPON_WRONG = -1,
P3_WEAPON_DISABLED = 0,
P3_WEAPON_EMPTYHANDS = 1,
P3_WEAPON_WOLVERINE = 2,
P3_WEAPON_NAILBAT = 3,
P3_WEAPON_GRENADE = 4,
P3_WEAPON_DESERT_EAGLE = 5,
P3_WEAPON_TASER = 6,
P3_WEAPON_SHOTGUN = 7, // auto shotgun
P3_WEAPON_M60 = 8,
P3_WEAPON_M16 = 9,
P3_WEAPON_CAT = 10,
P3_WEAPON_MACHETE = 11,
P3_WEAPON_SHOVEL = 12,
P3_WEAPON_MOLOTOV = 13,
P3_WEAPON_GASOLINE = 14,
P3_WEAPON_CATNIP = 15,
P3_WEAPON_BANNER = 16,
P3_WEAPON_BEENEST = 17,
P3_WEAPON_COP_BATON = 18,
P3_WEAPON_KROTCHY_GRENADE = 19,
P3_WEAPON_HAMMER = 20,
P3_WEAPON_LASERPEN = 21,
P3_WEAPON_MATCH = 22,
P3_WEAPON_MAXEL_SNIPER = 23, // doesn't exist
P3_WEAPON_METABULKY = 24, // unused
P3_WEAPON_METAONEHANDLED = 25,
P3_WEAPON_METATWOHANDLED = 26, // unused
P3_WEAPON_MONKEY = 27,
P3_WEAPON_PHOTOCAM = 28,
P3_WEAPON_SEED = 29, // unused
P3_WEAPON_SHOPVAC = 30,
P3_WEAPON_SPRAY = 31,
P3_WEAPON_TVCAM = 32,
P3_WEAPON_WEEMOTE = 33,
P3_WEAPON_M136 = 34,
P3_WEAPON_FIREAXE = 35,
P3_WEAPON_GAMAMET = 36,
P3_WEAPON_COUNT
};
Weapon Type
shared enum WeaponType_t
{
WPN_TYPE_FLESH = -1,
WPN_TYPE_NONE = 0,
WPN_TYPE_ANIMAL,
WPN_TYPE_GADGET,
WPN_TYPE_NONLETHAL_MELEE,
WPN_TYPE_NONLETHAL_RANGED,
WPN_TYPE_MELEE,
WPN_TYPE_RANGED,
WPN_TYPE_BIGGUN,
WPN_TYPE_SIZE
};
Say
shared enum SentencePriority_t
{
SENTENCE_PRIORITY_INVALID = -1,
SENTENCE_PRIORITY_NORMAL = 0,
SENTENCE_PRIORITY_MEDIUM = 1,
SENTENCE_PRIORITY_HIGH = 2
};
Sequence
shared enum Sequence_t
{
SEQUENCE_NONE = 0,
SEQUENCE_AIM = 1,
SEQUENCE_NO_ACTION_CHECK = 2
};
Inventory
shared enum Inventory_t
{
INV_SELECT = 0,
INV_EQUIP = 1,
INV_ADD = 2,
INV_REMOVE = 3
};
Movement Type
shared enum P3AI_MovementType_t
{
AIMT_CURRENT,
AIMT_WALK,
AIMT_RUN,
AIMT_MIX,
AIMT_FLY,
AIMT_RANDOM,
AIMT_OFF,
AIMT_TELEPORT
};
Face Type
shared enum P3AI_FaceType_t
{
AIFT_FACE_NONE,
AIFT_FACE_TO_TARGET,
AIFT_FACE_FROM_TARGET,
AIFT_FACE_AS_TARGET
};
Move To Target
shared enum P3AI_MoveToTarget_Flags
{
AIMTF_NONE = 0x0000,
AIMTF_ACCURATE_POSITIONING = 0x0001
};
Local Time
shared enum LocalTime_t
{
LT_YEAR = 0, // Local year
LT_MONTH, // Local month
LT_DAY, // Local day
LT_HOURS, // Local hours
LT_MINUTES, // Local minutes
LT_SECONDS, // Local seconds
LT_DAYS_JANUARY, // Days since January (0,365)
LT_DAYS,SUNDAY, // Days since Sunday (0,6)
LT_FLAG // daylight savings time flag
};
Fade Flags
shared enum FadeFlags_t
{
FFADE_IN = 0x0001,
FFADE_OUT = 0x0002,
FFADE_MODULATE = 0x0004,
FFADE_STAYOUT = 0x0008,
FFADE_PURGE = 0x0010
};
Sub Flags
shared enum SubFlags_t
{
SUB_Remove = 0,
SUB_DoNothing,
SUB_StartFadeOut,
SUB_FadeOut,
SUB_Vanish,
SUB_CallUseToggle,
SUB_PerformFadeOut
};
Collision Groups
shared enum Collision_Group_t
{
COLLISION_GROUP_NONE = 0,
COLLISION_GROUP_DEBRIS, // Collides with nothing but world and static stuff
COLLISION_GROUP_DEBRIS_TRIGGER, // Same as debris, but hits triggers
COLLISION_GROUP_INTERACTIVE_DEBRIS, // Collides with everything except other interactive debris or debris
COLLISION_GROUP_INTERACTIVE, // Collides with everything except interactive debris or debris
COLLISION_GROUP_PLAYER,
COLLISION_GROUP_BREAKABLE_GLASS,
COLLISION_GROUP_VEHICLE,
COLLISION_GROUP_PLAYER_MOVEMENT, // For HL2, same as Collision_Group_Player, for
// TF2, this filters out other players and CBaseObjects
COLLISION_GROUP_NPC, // Generic NPC group
COLLISION_GROUP_IN_VEHICLE, // for any entity inside a vehicle
COLLISION_GROUP_WEAPON, // for any weapons that need collision detection
COLLISION_GROUP_VEHICLE_CLIP, // vehicle clip brush to restrict vehicle movement
COLLISION_GROUP_PROJECTILE, // Projectiles!
COLLISION_GROUP_DOOR_BLOCKER, // Blocks entities not permitted to get near moving doors
COLLISION_GROUP_PASSABLE_DOOR, // Doors that the player shouldn't collide with
COLLISION_GROUP_DISSOLVING, // Things that are dissolving are in this group
COLLISION_GROUP_PUSHAWAY, // Nonsolid on client and server, pushaway in player code
COLLISION_GROUP_NPC_ACTOR, // Used so NPCs in scripts ignore the player.
COLLISION_GROUP_NPC_SCRIPTED, // USed for NPCs in scripts that should not collide with each other
COLLISION_GROUP_AREAGROUP_VOLUME,
COLLISION_GROUP_RAGDOLL, // Collides with everything except NPC, player and vehicle
COLLISION_GROUP_BREAKABLE_BY_VEHICLE,
COLLISION_GROUP_NOTHING,
LAST_SHARED_COLLISION_GROUP
};
Solid Flags
shared enum SolidFlags_t
{
FSOLID_CUSTOMRAYTEST = 0x0001, // Ignore solid type + always call into the entity for ray tests
FSOLID_CUSTOMBOXTEST = 0x0002, // Ignore solid type + always call into the entity for swept box tests
FSOLID_NOT_SOLID = 0x0004, // Are we currently not solid?
FSOLID_TRIGGER = 0x0008, // This is something may be collideable but fires touch functions
// even when it's not collideable (when the FSOLID_NOT_SOLID flag is set)
FSOLID_NOT_STANDABLE = 0x0010, // You can't stand on this
FSOLID_VOLUME_CONTENTS = 0x0020, // Contains volumetric contents (like water)
FSOLID_FORCE_WORLD_ALIGNED = 0x0040, // Forces the collision rep to be world-aligned even if it's SOLID_BSP or SOLID_VPHYSICS
FSOLID_USE_TRIGGER_BOUNDS = 0x0080, // Uses a special trigger bounds separate from the normal OBB
FSOLID_ROOT_PARENT_ALIGNED = 0x0100, // Collisions are defined in root parent's local coordinate space
FSOLID_TRIGGER_TOUCH_DEBRIS = 0x0200, // This trigger will touch debris objects
FSOLID_PROHIBITED_AREA = 0x0400, // Prohibited areas
FSOLID_MAX_BITS = 11
};
Solid types
shared enum SolidType_t
{
SOLID_NONE = 0, // no solid model
SOLID_BSP = 1, // a BSP tree
SOLID_BBOX = 2, // an AABB
SOLID_OBB = 3, // an OBB (not implemented yet)
SOLID_OBB_YAW = 4, // an OBB, constrained so that it can only yaw
SOLID_CUSTOM = 5, // Always call into the entity for tests
SOLID_VPHYSICS = 6, // solid vphysics object, get vcollide from the model and collide with that
SOLID_SPHERE = 7, // an sphere
SOLID_LAST,
};
Entity Effects
shared enum EntityEffect_t
{
EF_BONEMERGE = 0x001, // Performs bone merge on client side
EF_BRIGHTLIGHT = 0x002, // DLIGHT centered at entity origin
EF_DIMLIGHT = 0x004, // player flashlight
EF_NOINTERP = 0x008, // don't interpolate the next frame
EF_NOSHADOW = 0x010, // Don't cast no shadow
EF_NODRAW = 0x020, // don't draw entity
EF_NORECEIVESHADOW = 0x040, // Don't receive no shadow
EF_BONEMERGE_FASTCULL = 0x080, // For use with EF_BONEMERGE. If this is set, then it places this ent's origin at its
// parent and uses the parent's bbox + the max extents of the aiment.
// Otherwise, it sets up the parent's bones every frame to figure out where to place
// the aiment, which is inefficient because it'll setup the parent's bones even if
// the parent is not in the PVS.
EF_ITEM_BLINK = 0x100, // blink an item so that the user notices it.
EF_PARENT_ANIMATES = 0x200, // always assume that the parent entity is animating
EF_MIRROR_WEAPON = 0x400,
EF_MAX_BITS = 11
};
Cvar flags
shared enum FCVAR_t
{
FCVAR_NONE = 0,
FCVAR_UNREGISTERED = (1<<0),
FCVAR_DEVELOPMENTONLY = (1<<1),
FCVAR_GAMEDLL = (1<<2),
FCVAR_CLIENTDLL = (1<<3),
FCVAR_HIDDEN = (1<<4),
FCVAR_PROTECTED = (1<<5),
FCVAR_SPONLY = (1<<6),
FCVAR_ARCHIVE = (1<<7),
FCVAR_NOTIFY = (1<<8),
FCVAR_USERINFO = (1<<9),
FCVAR_CHEAT = (1<<14),
FCVAR_PRINTABLEONLY = (1<<10),
FCVAR_UNLOGGED = (1<<11),
FCVAR_NEVER_AS_STRING = (1<<12),
FCVAR_REPLICATED = (1<<13),
FCVAR_DEMO = (1<<16),
FCVAR_DONTRECORD = (1<<17),
FCVAR_RELOAD_MATERIALS = (1<<20),
FCVAR_RELOAD_TEXTURES = (1<<21),
FCVAR_NOT_CONNECTED = (1<<22),
FCVAR_MATERIAL_SYSTEM_THREAD = (1<<23),
FCVAR_ARCHIVE_XBOX = (1<<24),
FCVAR_ACCESSIBLE_FROM_THREADS = (1<<25),
FCVAR_SERVER_CAN_EXECUTE = (1<<28),
FCVAR_SERVER_CANNOT_QUERY = (1<<29),
FCVAR_CLIENTCMD_CAN_EXECUTE = (1<<30),
FCVAR_MATERIAL_THREAD_MASK = ( FCVAR_RELOAD_MATERIALS | FCVAR_RELOAD_TEXTURES | FCVAR_MATERIAL_SYSTEM_THREAD )
};
Take damage flags
shared enum Damage_t
{
DMG_GENERIC = 0, // generic damage -- do not use if you want players to flinch and bleed!
DMG_CRUSH = (1 << 0), // crushed by falling or moving object.
// NOTE: It's assumed crush damage is occurring as a result of physics collision, so no extra physics force is generated by crush damage.
// DON'T use DMG_CRUSH when damaging entities unless it's the result of a physics collision. You probably want DMG_CLUB instead.
DMG_BULLET = (1 << 1), // shot
DMG_SLASH = (1 << 2), // cut, clawed, stabbed
DMG_BURN = (1 << 3), // heat burned
DMG_VEHICLE = (1 << 4), // hit by a vehicle
DMG_FALL = (1 << 5), // fell too far
DMG_BLAST = (1 << 6), // explosive blast damage
DMG_CLUB = (1 << 7), // crowbar, punch, headbutt
DMG_SHOCK = (1 << 8), // electric shock
DMG_SONIC = (1 << 9), // sound pulse shockwave
DMG_ENERGYBEAM = (1 << 10), // laser or other high energy beam
DMG_PREVENT_PHYSICS_FORCE = (1 << 11), // Prevent a physics force
DMG_NEVERGIB = (1 << 12), // with this bit OR'd in, no damage type will be able to gib victims upon death
DMG_ALWAYSGIB = (1 << 13), // with this bit OR'd in, any damage type can be made to gib victims upon death.
DMG_DROWN = (1 << 14), // Drowning
DMG_PARALYZE = (1 << 15), // slows affected creature down
DMG_NERVEGAS = (1 << 16), // nerve toxins, very bad
DMG_POISON = (1 << 17), // blood poisoning - heals over time like drowning damage
DMG_RADIATION = (1 << 18), // radiation exposure
DMG_DROWNRECOVER = (1 << 19), // drowning recovery
DMG_ACID = (1 << 20), // toxic chemicals or acid burns
DMG_SLOWBURN = (1 << 21), // in an oven
DMG_REMOVENORAGDOLL = (1<<22), // with this bit OR'd in, no ragdoll will be created, and the target will be quietly removed.
// use this to kill an entity that you've already got a server-side ragdoll for
DMG_PHYSGUN = (1<<23), // Hit by manipulator. Usually doesn't do any damage.
DMG_PLASMA = (1<<24), // Shot by Cremator
DMG_AIRBOAT = (1<<25), // Hit by the airboat's gun
DMG_DISSOLVE = (1<<26), // Dissolving!
DMG_BLAST_SURFACE = (1<<27), // A blast on the surface of water that cannot harm things underwater
DMG_DIRECT = (1<<28),
DMG_BUCKSHOT = (1<<29), // not quite a bullet. Little, rounder, different.
DMG_KNUCKLE = (DMG_DIRECT | DMG_CLUB | DMG_NEVERGIB),
DMG_KICK = (DMG_KNUCKLE | DMG_REMOVENORAGDOLL),
DMG_BATON = (DMG_DIRECT | DMG_FALL | DMG_CLUB),
DMG_SHOVEL = (DMG_DIRECT | DMG_SLASH),
DMG_SHOVEL2 = (DMG_DIRECT | DMG_SLASH | DMG_CLUB),
DMG_HAMMER = (DMG_DIRECT | DMG_VEHICLE | DMG_CLUB),
DMG_NAILBAT = (DMG_DIRECT | DMG_VEHICLE | DMG_CLUB | DMG_BULLET)
}
Entity Flags
shared enum EntFlags_t
{
FL_ONGROUND = (1<<0), // At rest / on the ground
FL_DUCKING = (1<<1), // Player flag -- Player is fully crouched
FL_WATERJUMP = (1<<2), // player jumping out of water
FL_ONTRAIN = (1<<3), // Player is _controlling_ a train, so movement commands should be ignored on client during prediction.
FL_INRAIN = (1<<4), // Indicates the entity is standing in rain
FL_FROZEN = (1<<5), // Player is frozen for 3rd person camera
FL_ATCONTROLS = (1<<6), // Player can't move, but keeps key inputs for controlling another entity
FL_CLIENT = (1<<7), // Is a player
FL_FAKECLIENT = (1<<8), // Fake client, simulated server side; don't send network messages to them
// NON-PLAYER SPECIFIC = (i.e., not used by GameMovement or the client .dll ), -- Can still be applied to players, though
FL_INWATER = (1<<9), // In water
FL_FLY = (1<<10), // Changes the SV_Movestep= (), behavior to not need to be on ground
FL_SWIM = (1<<11), // Changes the SV_Movestep= (), behavior to not need to be on ground = (but stay in water),
FL_CONVEYOR = (1<<12),
FL_NPC = (1<<13),
FL_GODMODE = (1<<14),
FL_NOTARGET = (1<<15),
FL_AIMTARGET = (1<<16), // set if the crosshair needs to aim onto the entity
FL_PARTIALGROUND = (1<<17), // not all corners are valid
FL_STATICPROP = (1<<18), // Eetsa static prop!
FL_GRAPHED = (1<<19), // worldgraph has this ent listed as something that blocks a connection
FL_GRENADE = (1<<20),
FL_STEPMOVEMENT = (1<<21), // Changes the SV_Movestep= (), behavior to not do any processing
FL_DONTTOUCH = (1<<22), // Doesn't generate touch functions, generates Untouch= (), for anything it was touching when this flag was set
FL_BASEVELOCITY = (1<<23), // Base velocity has been applied this frame = (used to convert base velocity into momentum),
FL_WORLDBRUSH = (1<<24), // Not moveable/removeable brush entity = (really part of the world, but represented as an entity for transparency or something),
FL_OBJECT = (1<<25), // Terrible name. This is an object that NPCs should see. Missiles, for example.
FL_KILLME = (1<<26), // This entity is marked for death -- will be freed by game DLL
FL_ONFIRE = (1<<27), // You know...
FL_DISSOLVING = (1<<28), // We're dissolving!
FL_TRANSRAGDOLL = (1<<29), // In the process of turning into a client side ragdoll.
FL_UNBLOCKABLE_BY_PLAYER = (1<<30), // pusher that can't be blocked by the player
FL_JUMPING = (1<<31) // player jumping
}
BSP Flags
shared enum BSPFlags_t
{
// lower bits are stronger, and will eat weaker brushes completely
CONTENTS_EMPTY = 0, // No contents
CONTENTS_SOLID = 0x1, // an eye is never valid in a solid
CONTENTS_WINDOW = 0x2, // translucent, but not watery (glass)
CONTENTS_AUX = 0x4,
CONTENTS_GRATE = 0x8, // alpha-tested "grate" textures. Bullets/sight pass through, but solids don't
CONTENTS_SLIME = 0x10,
CONTENTS_WATER = 0x20,
CONTENTS_BLOCKLOS = 0x40, // block AI line of sight
CONTENTS_OPAQUE = 0x80, // things that cannot be seen through (may be non-solid though)
LAST_VISIBLE_CONTENTS = 0x80,
ALL_VISIBLE_CONTENTS = (LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1)),
CONTENTS_TESTFOGVOLUME = 0x100,
CONTENTS_UNUSED = 0x200,
// unused
// NOTE: If it's visible, grab from the top + update LAST_VISIBLE_CONTENTS
// if not visible, then grab from the bottom.
CONTENTS_UNUSED6 = 0x400,
CONTENTS_TEAM1 = 0x800, // per team contents used to differentiate collisions
CONTENTS_TEAM2 = 0x1000, // between players and objects on different teams
CONTENTS_IGNORE_NODRAW_OPAQUE = 0x2000, // ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW
CONTENTS_MOVEABLE = 0x4000, // hits entities which are MOVETYPE_PUSH (doors, plats, etc.)
CONTENTS_AREAPORTAL = 0x8000,
CONTENTS_PLAYERCLIP = 0x10000,
CONTENTS_MONSTERCLIP = 0x20000,
CONTENTS_CURRENT_0 = 0x40000,
CONTENTS_CURRENT_90 = 0x80000,
CONTENTS_CURRENT_180 = 0x100000,
CONTENTS_CURRENT_270 = 0x200000,
CONTENTS_CURRENT_UP = 0x400000,
CONTENTS_CURRENT_DOWN = 0x800000,
CONTENTS_ORIGIN = 0x1000000,
CONTENTS_MONSTER = 0x2000000,
CONTENTS_DEBRIS = 0x4000000,
CONTENTS_DETAIL = 0x8000000,
CONTENTS_TRANSLUCENT = 0x10000000,
CONTENTS_LADDER = 0x20000000,
CONTENTS_HITBOX = 0x40000000,
SURF_LIGHT = 0x0001,
SURF_SKY2D = 0x0002,
SURF_SKY = 0x0004,
SURF_WARP = 0x0008,
SURF_TRANS = 0x0010,
SURF_NOPORTAL = 0x0020,
SURF_TRIGGER = 0x0040,
SURF_NODRAW = 0x0080,
SURF_HINT = 0x0100,
SURF_SKIP = 0x0200,
SURF_NOLIGHT = 0x0400,
SURF_BUMPLIGHT = 0x0800,
SURF_NOSHADOWS = 0x1000,
SURF_NODECALS = 0x2000,
SURF_NOCHOP = 0x4000,
SURF_HITBOX = 0x8000,
// -----------------------------------------------------
// spatial content masks - used for spatial queries (traceline,etc.)
// -----------------------------------------------------
MASK_ALL = (0xFFFFFFFF),
MASK_SOLID = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE),
// everything that blocks player movement
MASK_PLAYERSOLID = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE),
// blocks npc movement
MASK_NPCSOLID = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE),
// water physics in these contents
MASK_WATER = (CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME),
// everything that blocks lighting
MASK_OPAQUE = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE),
// everything that blocks lighting, but with monsters added.
MASK_OPAQUE_AND_NPCS = (MASK_OPAQUE|CONTENTS_MONSTER),
// everything that blocks line of sight for AI
MASK_BLOCKLOS = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_BLOCKLOS),
// everything that blocks line of sight for AI plus NPCs
MASK_BLOCKLOS_AND_NPCS = (MASK_BLOCKLOS|CONTENTS_MONSTER),
// everything that blocks line of sight for players
MASK_VISIBLE = (MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE),
// everything that blocks line of sight for players, but with monsters added.
MASK_VISIBLE_AND_NPCS = (MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE),
// bullets see these as solid
MASK_SHOT = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX),
// non-raycasted weapons see this as solid = (includes grates),
MASK_SHOT_HULL = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE),
// hits solids = (not grates), and passes through everything else
MASK_SHOT_PORTAL = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER),
// everything normally solid, except monsters = (world+brush only),
MASK_SOLID_BRUSHONLY = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE),
// everything normally solid for player movement, except monsters = (world+brush only),
MASK_PLAYERSOLID_BRUSHONLY = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE),
// everything normally solid for npc movement, except monsters = (world+brush only),
MASK_NPCSOLID_BRUSHONLY = (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE),
// just the world, used for route rebuilding
MASK_NPCWORLDSTATIC = (CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE),
// These are things that can split areaportals
MASK_SPLITAREAPORTAL = (CONTENTS_WATER|CONTENTS_SLIME),
// UNDONE: This is untested, any moving water
MASK_CURRENT = (CONTENTS_CURRENT_0|CONTENTS_CURRENT_90|CONTENTS_CURRENT_180|CONTENTS_CURRENT_270|CONTENTS_CURRENT_UP|CONTENTS_CURRENT_DOWN),
// everything that blocks corpse movement
// UNDONE: Not used yet / may be deleted
MASK_DEADSOLID = (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_GRATE),
}
Spawn flags
shared enum SpawnFlags_t
{
SF_NPC_WAIT_TILL_SEEN = ( 1 << 0 ), // spawnflag that makes npcs wait until player can see them before attacking.
SF_NPC_GAG = ( 1 << 1 ), // no idle noises from this npc
SF_NPC_FALL_TO_GROUND = ( 1 << 2 ), // used my NPC_Maker
SF_NPC_DROP_HEALTHKIT = ( 1 << 3 ), // Drop a healthkit upon death
SF_NPC_START_EFFICIENT = ( 1 << 4 ), // Set into efficiency mode from spawn
// = ( 1 << 5 ),
// = ( 1 << 6 ),
SF_NPC_WAIT_FOR_SCRIPT = ( 1 << 7 ), // spawnflag that makes npcs wait to check for attacking until the script is done or they've been attacked
SF_NPC_LONG_RANGE = ( 1 << 8 ), // makes npcs look far and relaxes weapon range limit
SF_NPC_FADE_CORPSE = ( 1 << 9 ), // Fade out corpse after death
SF_NPC_ALWAYSTHINK = ( 1 << 10 ), // Simulate even when player isn't in PVS.
SF_NPC_TEMPLATE = ( 1 << 11 ), // This NPC will be used as a template by an npc_maker -- do not spawn.
SF_NPC_ALTCOLLISION = ( 1 << 12 ),
SF_NPC_NO_WEAPON_DROP = ( 1 << 13 ), // This NPC will not actually drop a weapon that can be picked up
SF_NPC_NO_PLAYER_PUSHAWAY = ( 1 << 14 ),
// = ( 1 << 15 ),
// !! Flags above = ( 1 << 15 ), are reserved for NPC sub-classes
SF_NPC_INTERACTABLE = (1<<30),
}