srctools.const
This module contains various constants and enums that are useful for multiple modules.
- srctools.const.add_unknown(
- ns: MutableMapping[str, Any],
- long: int | bool = False,
Adds dummy members for
enum.Flagto allow all bits to be set.It should be called at the end of the class body, like so:
class SomeFlags(Flag): A = 1 B = 2 C = 16 add_unknown(locals()) SomeFlags(255) # == SomeFlags.A|B|C|2|3|5|6|7: 255>
This is useful to allow for some compatibility with unhandled games, ensuring extra bits are preserved when resaving. Each member will be named with the position of its bit.
- class srctools.const.GameID
Bases:
EnumSteam appIDs for Source Engine games.
- BASE_SOURCE_ENGINE_2 = '212'
- SOURCE_BASE_2007 = '216'
Alias:
SRC_2007
- ORANGE_BOX_MULTIPLAYER = '217'
Alias:
OBOX_MP
- HALF_LIFE_2 = '220'
Alias:
HL2
- COUNTER_STRIKE_SOURCE = '240'
Alias:
CS
- HALF_LIFE_SOURCE = '280'
Alias:
HL1
- DAY_OF_DEFEAT_SOURCE = '300'
Alias:
DOD
- ALL_SOURCE_ENGINE_PATHS_HL2 = '312'
- HALF_LIFE_2_DEATHMATCH = '320'
Alias:
HL2_DM
- HALF_LIFE_2_LOST_COAST = '340'
Alias:
HL2_LC
- HALF_LIFE_DEATHMATCH_SOURCE = '360'
Alias:
HL_DM
- HALF_LIFE_2_EPISODE_1 = '380'
Alias:
HL2_EP1
- PORTAL = '400'
Alias:
P1
- HALF_LIFE_2_EPISODE_TWO = '420'
Alias:
HL2_EP2
- TEAM_FORTRESS_2 = '440'
Alias:
TF2
- LEFT_4_DEAD = '500'
Alias:
L4D
- DOTA_2 = '570'
Alias:
DOTA2
- PORTAL_2 = '620'
Alias:
P2
- APERTURE_TAG = '280740'
Alias:
TAG
- THINKING_WITH_TIME_MACHINE = '286080'
Alias:
TWTM
- PORTAL_STORIES_MEL = '317400'
Alias:
MEL
- REXAURA = '317790'
- ALIEN_SWARM = '630'
Alias:
ASW
- COUNTER_STRIKE_GLOBAL_OFFENSIVE = '730'
Alias:
CSGO
- SIN_EPISODES_EMERGENCE = '1300'
- SIN_EPISODES_ARENA = '1308'
- SIN_EPISODES_UNABRIDGED = '1316'
- DARK_MESSIAH_OF_MIGHT_AND_MAGIC = '2100'
Alias:
DM_MAM
- DARK_MESSIAH_MIGHT_AND_MAGIC_MULTIPLAYER = '2130'
Alias:
DM_MAM_MP
- THE_SHIP = '2400'
Alias:
SHIP
- BLOODY_GOOD_TIME = '2450'
Alias:
BGT
- VAMPIRE_THE_MASQUERADE_BLOODLINES = '2600'
Alias:
VTMB
- GARRYS_MOD = '4000'
Alias:
GARRY
- ZOMBIE_PANIC_SOURCE = '17500'
Alias:
ZP
- AGE_OF_CHIVALRY = '17510'
Alias:
AOC
- SYNERGY = '17520'
- DIPRIP = '17530'
- ETERNAL_SILENCE = '17550'
- PIRATES_VIKINGS_KNIGHTS_II = '17570'
Alias:
PVKII
- DYSTOPIA = '17580'
- INSURGENCY = '17700'
- NUCLEAR_DAWN = '17710'
- SMASHBALL = '17730'
- INSURGENCY_2 = '222880'
- CONTAGION = '238430'
- class srctools.const.FileType
Bases:
EnumDifferent kinds of files for Source, mainly to indicate resources to pack.
If this represents a specific file type, the value is the extension. Otherwise, it’s an arbitrary integer. That occurs for things like soundscript entries which are arbitary names.
- GENERIC = 0
Arbitrary file type.
- SOUNDSCRIPT = 1
Script file containing soundscripts.
- GAME_SOUND = 2
world.blahsound - lookup the soundscript, and raw files.
- RAW_SOUND = 'wav'
A WAV/MP3/OGG sound file.
- PARTICLE = 3
Alias:
PARTICLE_SYSTEMThe name of a particle system.
- PARTICLE_FILE = 'pcf'
A particle collection file.
- SOUNDSCAPE_NAME = 8
The name of a soundscape.
- SOUNDSCAPE_FILE = 9
Script file containing soundscapes.
- VSCRIPT_SQUIRREL = 'nut'
Squirrel VScript file.
- ENTITY = 4
Classname of another entity that this entity includes. This is only permitted in the FGD file.
- ENTCLASS_FUNC = 5
Name of a function to call defined inside the packlist module. This is used to mark entities which require special handling.
- BREAKABLE_CHUNK = 6
Randomised generic chunk gibs. This corresponds to
g_PropDataSystem.GetRandomChunkModel().
- WEAPON_SCRIPT = 7
A script file loaded for weapons, referencing models and sounds.
- MATERIAL = 'vmt'
Material file.
- TEXTURE = 'vtf'
VTF texture, implicitly looks for
.hdr.vtftoo.
- CHOREO = 'vcd'
Choreographed scenes.
- MODEL = 'mdl'
Source model, implies the
vtx,vvd,phyfiles too.
- class srctools.const.BSPContents
Bases:
FlagThe various CONTENTS_* flags, indicating different collision types.
This is normally for brushes, but is also used on other things like models.
The
CURRENT_*flags are not functional, and their bits were reused in later games.- EMPTY = 0x0
- SOLID = 0x1
Regular solid brush. Player camera is not valid inside here.
- WINDOW = 0x2
Translucent glass.
- AUX = 0x4
- GRATE = 0x8
Grating, bullets/LOS pass, objects do not.
- SLIME = 0x10
Slime-style liquid, opaque.
- WATER = 0x20
Is a water brush
- MIST = 0x40
- OPAQUE = 0x80
Blocks LOS
- TEST_FOG_VOLUME = 0x100
May be non-solid, but cannot be seen through.
- TEAM1 = 0x800
Special team-only clips.
- TEAM2 = 0x1000
Special team-only clips.
- IGNORE_NODRAW_OPAQUE = 0x2000
“Ignore
CONTENTS_OPAQUEon surfaces that haveSURF_NODRAW.
- MOVABLE = 0x4000
- AREAPORTAL = 0x8000
Is an areaportal brush.
- PLAYER_CLIP = 0x10000
Functions like
tools/toolsplayerclip.
- NPC_CLIP = 0x20000
Functions like
tools/toolsclip.
- GRENADE_CLIP = 0x80000
Alias:
CURRENT_90Functions like
tools/toolsgrenadeclipfrom CS:GO.
- DRONE_CLIP = 0x100000
Alias:
CURRENT_180Functions like
tools/toolsdroneclipfrom CS:GO.
- CURRENT_0 = 0x40000
- CURRENT_270 = 0x200000
- CURRENT_UP = 0x400000
- CURRENT_DOWN = 0x800000
- ORIGIN = 0x1000000
Behaves like a
tools/toolsoriginbrush, used to set origin. This is Goldsource era and is very deprecated.
- NPC = 0x2000000
This shouldn’t be on brushes, it’s used for NPCs.
- DEBRIS = 0x4000000
- DETAIL = 0x8000000
The brush is marked as
func_detail.
- TRANSLUCENT = 0x10000000
A face uses
$translucent,$alphatest,$alpha, etc.
- LADDER = 0x20000000
- HITBOX = 0x40000000
- class srctools.const.SurfFlags
Bases:
FlagThe various SURF_* flags, indicating different attributes for faces.
- NONE = 0x0
- LIGHT = 0x1
The face has lighting info.
- SKYBOX_2D = 0x2
Nodraw, but when visible 2D skybox should be rendered.
- SKYBOX_3D = 0x4
Nodraw, but when visible 2D and 3D skybox should be rendered.
- WATER_WARP = 0x8
According to the header, “turbulent water warp”.
- TRANSLUCENT = 0x10
Translucent material.
- NOPORTAL = 0x20
Portalgun blocking material.
- TRIGGER = 0x40
XBox only - is a trigger surface.
- NODRAW = 0x80
Texture isn’t used, it’s invisible.
- HINT = 0x100
A hint brush.
- SKIP = 0x200
Skip brush, removed from map.
- NOLIGHT = 0x400
No light needs to be calculated for the surface.
- BUMPLIGHT = 0x800
Needs three lightmaps for bumpmapping.
- NO_SHADOWS = 0x1000
Doesn’t receive shadows.
- NO_DECALS = 0x2000
Rejects decals.
- NO_SUBDIVIDE = 0x4000
Not allowed to split up the brush face.
- HITBOX = 0x8000
According to the header, “Part of a hitbox”.